{"reviewRunId":"51c17aba-9971-4ea8-9761-afb651f9b8a4","artifactId":"36e26608-1a9d-44f0-b02d-02f4dbaf1a25","artifactType":"treesitter","storageKey":"tree-sitter-artifact/v1","metadata":{"artifact":{"files":[{"path":"apps/web/components/dashboard/billing-view.tsx","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"react","symbols":["React"]},{"line":2,"source":"@firmcode/shared","symbols":["WorkspaceBillingResponse"]},{"line":3,"source":"../../lib/dashboard-route-readiness","symbols":["isAllowedExternalDashboardUrl"]},{"line":4,"source":"../../lib/view-state","symbols":["ViewState"]}],"symbols":[{"kind":"function","name":"BillingView","range":{"endLine":77,"startLine":11},"changed":true,"byteRange":{"endByte":3112,"startByte":354}},{"kind":"function","name":"BillingMetric","range":{"endLine":86,"startLine":79},"changed":false,"byteRange":{"endByte":3438,"startByte":3114}},{"kind":"function","name":"formatNullableMetric","range":{"endLine":90,"startLine":88},"changed":false,"byteRange":{"endByte":3630,"startByte":3440}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/components/dashboard/billing-view.tsx","hunkNewEnd":6,"hunkNewStart":1,"enclosingSymbol":null},{"path":"apps/web/components/dashboard/billing-view.tsx","hunkNewEnd":26,"hunkNewStart":15,"enclosingSymbol":"BillingView"},{"path":"apps/web/components/dashboard/billing-view.tsx","hunkNewEnd":73,"hunkNewStart":45,"enclosingSymbol":"BillingView"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/components/dashboard/dashboard-shell.tsx","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"react","symbols":["React"]},{"line":2,"source":"../../lib/dashboard-navigation","symbols":["DASHBOARD_NAV_ITEMS","DashboardActiveItem"]}],"symbols":[{"kind":"function","name":"DashboardShell","range":{"endLine":126,"startLine":9},"changed":true,"byteRange":{"endByte":5785,"startByte":230}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/components/dashboard/dashboard-shell.tsx","hunkNewEnd":11,"hunkNewStart":1,"enclosingSymbol":"DashboardShell"},{"path":"apps/web/components/dashboard/dashboard-shell.tsx","hunkNewEnd":53,"hunkNewStart":46,"enclosingSymbol":"DashboardShell"},{"path":"apps/web/components/dashboard/dashboard-shell.tsx","hunkNewEnd":71,"hunkNewStart":65,"enclosingSymbol":"DashboardShell"},{"path":"apps/web/components/dashboard/dashboard-shell.tsx","hunkNewEnd":93,"hunkNewStart":86,"enclosingSymbol":"DashboardShell"},{"path":"apps/web/components/dashboard/dashboard-shell.tsx","hunkNewEnd":113,"hunkNewStart":107,"enclosingSymbol":"DashboardShell"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/components/dashboard/github-installations-view.tsx","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"react","symbols":["React"]},{"line":2,"source":"@firmcode/shared","symbols":["canManageRepositoryConfiguration","canRetryReviewRuns","RepositoryListItem","WorkspaceSettingsInstallation"]},{"line":8,"source":"../../config/github-app-installation","symbols":["GitHubAppInstallConfig"]},{"line":9,"source":"../../lib/dashboard-data","symbols":["GitHubInstallationsState","GitHubSyncDashboardData"]},{"line":10,"source":"../../lib/dashboard-route-readiness","symbols":["isAllowedExternalDashboardUrl"]},{"line":11,"source":"./format","symbols":["formatDateTime","shortSha"]},{"line":12,"source":"./github-sync-controls","symbols":["GitHubInstallationSyncButton","GitHubRepositorySyncButton"]},{"line":13,"source":"./repository-automation-toggle","symbols":["RepositoryAutomationToggle"]},{"line":14,"source":"./retry-review-run-button","symbols":["RetryReviewRunButton"]},{"line":15,"source":"./status-badge","symbols":["BooleanBadge","StatusBadge"]}],"symbols":[{"kind":"function","name":"GitHubInstallationsView","range":{"endLine":64,"startLine":22},"changed":true,"byteRange":{"endByte":2929,"startByte":936}},{"kind":"function","name":"ProviderTabs","range":{"endLine":86,"startLine":66},"changed":false,"byteRange":{"endByte":3657,"startByte":2931}},{"kind":"function","name":"InstallLoadingState","range":{"endLine":99,"startLine":88},"changed":false,"byteRange":{"endByte":4131,"startByte":3659}},{"kind":"function","name":"SignedOutState","range":{"endLine":121,"startLine":101},"changed":true,"byteRange":{"endByte":5019,"startByte":4133}},{"kind":"function","name":"InstallErrorState","range":{"endLine":133,"startLine":123},"changed":false,"byteRange":{"endByte":5527,"startByte":5021}},{"kind":"function","name":"InstallContent","range":{"endLine":195,"startLine":135},"changed":false,"byteRange":{"endByte":8172,"startByte":5529}},{"kind":"function","name":"GitHubOAuthCard","range":{"endLine":230,"startLine":197},"changed":false,"byteRange":{"endByte":9551,"startByte":8174}},{"kind":"function","name":"GitHubAppCard","range":{"endLine":275,"startLine":232},"changed":false,"byteRange":{"endByte":11263,"startByte":9553}},{"kind":"function","name":"InstallAction","range":{"endLine":349,"startLine":277},"changed":true,"byteRange":{"endByte":13068,"startByte":11265}},{"kind":"function","name":"RepositoryAutomationRow","range":{"endLine":439,"startLine":351},"changed":true,"byteRange":{"endByte":16765,"startByte":13070}},{"kind":"function","name":"InstallationCard","range":{"endLine":459,"startLine":441},"changed":false,"byteRange":{"endByte":17829,"startByte":16767}},{"kind":"function","name":"InstallConfigPanel","range":{"endLine":502,"startLine":461},"changed":false,"byteRange":{"endByte":19792,"startByte":17831}},{"kind":"function","name":"ConnectionPill","range":{"endLine":514,"startLine":504},"changed":false,"byteRange":{"endByte":20141,"startByte":19794}},{"kind":"function","name":"canSyncGitHub","range":{"endLine":518,"startLine":516},"changed":false,"byteRange":{"endByte":20346,"startByte":20143}},{"kind":"function","name":"syncDisabledReason","range":{"endLine":526,"startLine":520},"changed":false,"byteRange":{"endByte":20652,"startByte":20348}},{"kind":"function","name":"installationSyncDisabledReason","range":{"endLine":542,"startLine":528},"changed":false,"byteRange":{"endByte":21111,"startByte":20654}},{"kind":"function","name":"rowSyncDisabledReason","range":{"endLine":558,"startLine":544},"changed":false,"byteRange":{"endByte":21497,"startByte":21113}},{"kind":"function","name":"repositoryReadiness","range":{"endLine":574,"startLine":560},"changed":false,"byteRange":{"endByte":21813,"startByte":21499}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/components/dashboard/github-installations-view.tsx","hunkNewEnd":13,"hunkNewStart":7,"enclosingSymbol":null},{"path":"apps/web/components/dashboard/github-installations-view.tsx","hunkNewEnd":48,"hunkNewStart":37,"enclosingSymbol":"GitHubInstallationsView"},{"path":"apps/web/components/dashboard/github-installations-view.tsx","hunkNewEnd":117,"hunkNewStart":106,"enclosingSymbol":"SignedOutState"},{"path":"apps/web/components/dashboard/github-installations-view.tsx","hunkNewEnd":350,"hunkNewStart":285,"enclosingSymbol":"InstallAction"},{"path":"apps/web/components/dashboard/github-installations-view.tsx","hunkNewEnd":389,"hunkNewStart":383,"enclosingSymbol":"RepositoryAutomationRow"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/components/dashboard/repositories-view.tsx","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"react","symbols":["React"]},{"line":2,"source":"@firmcode/shared","symbols":["canManageRepositoryConfiguration","RepositoryListResponse"]},{"line":3,"source":"../../lib/view-state","symbols":["ViewState"]},{"line":4,"source":"../../lib/dashboard-data","symbols":["GitHubRepositoryControlsState"]},{"line":5,"source":"./github-sync-controls","symbols":["GitHubInstallationSyncButton","GitHubRepositorySyncButton"]},{"line":6,"source":"./repository-automation-toggle","symbols":["RepositoryAutomationToggle"]},{"line":7,"source":"./status-badge","symbols":["BooleanBadge","StatusBadge"]},{"line":8,"source":"./format","symbols":["formatDateTime","shortSha"]}],"symbols":[{"kind":"function","name":"RepositoriesView","range":{"endLine":40,"startLine":15},"changed":false,"byteRange":{"endByte":1984,"startByte":686}},{"kind":"function","name":"RepositoryFilters","range":{"endLine":76,"startLine":42},"changed":false,"byteRange":{"endByte":3451,"startByte":1986}},{"kind":"function","name":"RepositoryLoadingState","range":{"endLine":89,"startLine":78},"changed":false,"byteRange":{"endByte":3860,"startByte":3453}},{"kind":"function","name":"RepositoryErrorState","range":{"endLine":98,"startLine":91},"changed":false,"byteRange":{"endByte":4199,"startByte":3862}},{"kind":"function","name":"RepositoryEmptyState","range":{"endLine":109,"startLine":100},"changed":false,"byteRange":{"endByte":4604,"startByte":4201}},{"kind":"function","name":"RepositoryTable","range":{"endLine":199,"startLine":111},"changed":false,"byteRange":{"endByte":9140,"startByte":4606}},{"kind":"function","name":"GitHubConnectionAction","range":{"endLine":247,"startLine":212},"changed":true,"byteRange":{"endByte":10397,"startByte":9413}},{"kind":"function","name":"toRepositoryControls","range":{"endLine":278,"startLine":249},"changed":false,"byteRange":{"endByte":11908,"startByte":10399}},{"kind":"function","name":"headerSyncDisabledReason","range":{"endLine":294,"startLine":280},"changed":false,"byteRange":{"endByte":12373,"startByte":11910}},{"kind":"function","name":"rowDisabledReason","range":{"endLine":310,"startLine":296},"changed":false,"byteRange":{"endByte":12743,"startByte":12375}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/components/dashboard/repositories-view.tsx","hunkNewEnd":246,"hunkNewStart":235,"enclosingSymbol":"GitHubConnectionAction"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/components/dashboard/settings-view.tsx","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"react","symbols":["React"]},{"line":2,"source":"@firmcode/shared","symbols":["canManageSensitiveWorkspaceSettings","DashboardWorkspaceRole","WorkspaceSettingsResponse"]},{"line":7,"source":"../../lib/dashboard-route-readiness","symbols":["isAllowedExternalDashboardUrl","isExternalDashboardUrl","isImplementedDashboardRoute","DashboardExternalProvider"]},{"line":13,"source":"../../lib/view-state","symbols":["ViewState"]},{"line":14,"source":"./format","symbols":["formatDateTime"]}],"symbols":[{"kind":"function","name":"SettingsView","range":{"endLine":49,"startLine":32},"changed":false,"byteRange":{"endByte":1874,"startByte":945}},{"kind":"function","name":"parseSettingsTab","range":{"endLine":54,"startLine":51},"changed":false,"byteRange":{"endByte":2132,"startByte":1883}},{"kind":"function","name":"SettingsTabs","range":{"endLine":79,"startLine":56},"changed":false,"byteRange":{"endByte":2923,"startByte":2134}},{"kind":"function","name":"SettingsLoadingState","range":{"endLine":93,"startLine":81},"changed":false,"byteRange":{"endByte":3398,"startByte":2925}},{"kind":"function","name":"SettingsErrorState","range":{"endLine":102,"startLine":95},"changed":false,"byteRange":{"endByte":3731,"startByte":3400}},{"kind":"function","name":"SettingsContent","range":{"endLine":138,"startLine":104},"changed":false,"byteRange":{"endByte":4990,"startByte":3733}},{"kind":"function","name":"RoleNotice","range":{"endLine":160,"startLine":140},"changed":false,"byteRange":{"endByte":5899,"startByte":4992}},{"kind":"function","name":"EmptyInstallNotice","range":{"endLine":171,"startLine":162},"changed":false,"byteRange":{"endByte":6347,"startByte":5901}},{"kind":"function","name":"GeneralPanel","range":{"endLine":187,"startLine":173},"changed":true,"byteRange":{"endByte":7213,"startByte":6349}},{"kind":"function","name":"GitHubAppPanel","range":{"endLine":241,"startLine":189},"changed":true,"byteRange":{"endByte":9765,"startByte":7215}},{"kind":"function","name":"MembersPanel","range":{"endLine":268,"startLine":243},"changed":true,"byteRange":{"endByte":10940,"startByte":9767}},{"kind":"function","name":"ApiKeysPanel","range":{"endLine":290,"startLine":270},"changed":true,"byteRange":{"endByte":11861,"startByte":10942}},{"kind":"function","name":"DataRetentionPanel","range":{"endLine":331,"startLine":292},"changed":false,"byteRange":{"endByte":13918,"startByte":11863}},{"kind":"function","name":"NotificationsPanel","range":{"endLine":345,"startLine":333},"changed":false,"byteRange":{"endByte":14678,"startByte":13920}},{"kind":"function","name":"TogglePlaceholder","range":{"endLine":359,"startLine":347},"changed":true,"byteRange":{"endByte":15144,"startByte":14680}},{"kind":"function","name":"RouteReadyAction","range":{"endLine":412,"startLine":361},"changed":true,"byteRange":{"endByte":16501,"startByte":15146}},{"kind":"function","name":"SettingsPanel","range":{"endLine":424,"startLine":414},"changed":false,"byteRange":{"endByte":16965,"startByte":16503}},{"kind":"function","name":"MetadataCard","range":{"endLine":433,"startLine":426},"changed":false,"byteRange":{"endByte":17377,"startByte":16967}},{"kind":"function","name":"formatRole","range":{"endLine":437,"startLine":435},"changed":false,"byteRange":{"endByte":17495,"startByte":17379}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/components/dashboard/settings-view.tsx","hunkNewEnd":15,"hunkNewStart":4,"enclosingSymbol":null},{"path":"apps/web/components/dashboard/settings-view.tsx","hunkNewEnd":186,"hunkNewStart":179,"enclosingSymbol":"GeneralPanel"},{"path":"apps/web/components/dashboard/settings-view.tsx","hunkNewEnd":213,"hunkNewStart":196,"enclosingSymbol":"GitHubAppPanel"},{"path":"apps/web/components/dashboard/settings-view.tsx","hunkNewEnd":264,"hunkNewStart":247,"enclosingSymbol":"MembersPanel"},{"path":"apps/web/components/dashboard/settings-view.tsx","hunkNewEnd":287,"hunkNewStart":277,"enclosingSymbol":"ApiKeysPanel"},{"path":"apps/web/components/dashboard/settings-view.tsx","hunkNewEnd":416,"hunkNewStart":348,"enclosingSymbol":"SettingsPanel"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/lib/dashboard-action-manifest.ts","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"./dashboard-navigation","symbols":["DASHBOARD_NAV_ITEMS"]},{"line":2,"source":"./dashboard-route-readiness","symbols":["DashboardExternalProvider"]}],"symbols":[],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/lib/dashboard-action-manifest.ts","hunkNewEnd":114,"hunkNewStart":1,"enclosingSymbol":null}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/lib/dashboard-navigation.ts","errors":[],"parser":"tree-sitter-typescript","imports":[],"symbols":[],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/lib/dashboard-navigation.ts","hunkNewEnd":32,"hunkNewStart":1,"enclosingSymbol":null}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/lib/dashboard-route-readiness.ts","errors":[],"parser":"tree-sitter-typescript","imports":[],"symbols":[{"kind":"function","name":"isExternalDashboardUrl","range":{"endLine":53,"startLine":51},"changed":true,"byteRange":{"endByte":2342,"startByte":2216}},{"kind":"function","name":"isImplementedDashboardRoute","range":{"endLine":59,"startLine":55},"changed":true,"byteRange":{"endByte":2541,"startByte":2351}},{"kind":"function","name":"classifyDashboardDestination","range":{"endLine":77,"startLine":61},"changed":true,"byteRange":{"endByte":2949,"startByte":2550}},{"kind":"function","name":"isAllowedExternalDashboardUrl","range":{"endLine":91,"startLine":79},"changed":true,"byteRange":{"endByte":3392,"startByte":2958}},{"kind":"function","name":"normalizeInternalPathname","range":{"endLine":98,"startLine":93},"changed":true,"byteRange":{"endByte":3627,"startByte":3394}},{"kind":"function","name":"routePatternToRegExp","range":{"endLine":111,"startLine":100},"changed":true,"byteRange":{"endByte":3959,"startByte":3629}},{"kind":"function","name":"escapeRegExp","range":{"endLine":115,"startLine":113},"changed":true,"byteRange":{"endByte":4064,"startByte":3961}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/lib/dashboard-route-readiness.ts","hunkNewEnd":115,"hunkNewStart":1,"enclosingSymbol":"escapeRegExp"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0},{"path":"apps/web/tests/dashboard-route-readiness.spec.tsx","errors":[],"parser":"tree-sitter-typescript","imports":[{"line":1,"source":"react","symbols":["React"]},{"line":2,"source":"node:fs","symbols":["readdirSync"]},{"line":3,"source":"node:path","symbols":["relative","join"]},{"line":4,"source":"node:url","symbols":["fileURLToPath"]},{"line":5,"source":"react-dom/server","symbols":["renderToString"]},{"line":6,"source":"@firmcode/shared","symbols":["OverviewSupplementData","RepositoryListResponse","ReviewRunListItem","WorkspaceBillingResponse","WorkspaceSettingsResponse"]},{"line":13,"source":"../components/dashboard/billing-view","symbols":["BillingView"]},{"line":14,"source":"../components/dashboard/dashboard-shell","symbols":["DashboardShell"]},{"line":15,"source":"../components/dashboard/github-installations-view","symbols":["GitHubInstallationsView"]},{"line":16,"source":"../components/dashboard/overview-view","symbols":["OverviewView"]},{"line":17,"source":"../components/dashboard/repositories-view","symbols":["RepositoriesView"]},{"line":18,"source":"../components/dashboard/settings-view","symbols":["SettingsView"]},{"line":19,"source":"../lib/dashboard-action-manifest","symbols":["DASHBOARD_ROUTE_ACTIONS"]},{"line":20,"source":"../lib/overview-data","symbols":["buildOverviewDashboardData"]},{"line":21,"source":"../lib/dashboard-route-readiness","symbols":["DASHBOARD_IMPLEMENTED_ROUTE_PATTERNS","classifyDashboardDestination","isAllowedExternalDashboardUrl","isImplementedDashboardRoute"]}],"symbols":[{"kind":"function","name":"extractAnchors","range":{"endLine":174,"startLine":169},"changed":true,"byteRange":{"endByte":7938,"startByte":7713}},{"kind":"function","name":"extractFormActions","range":{"endLine":178,"startLine":176},"changed":true,"byteRange":{"endByte":8109,"startByte":7940}},{"kind":"function","name":"decodeHtmlAttribute","range":{"endLine":182,"startLine":180},"changed":true,"byteRange":{"endByte":8207,"startByte":8111}},{"kind":"function","name":"discoverNextRoutes","range":{"endLine":209,"startLine":184},"changed":true,"byteRange":{"endByte":8883,"startByte":8209}},{"kind":"function","name":"walk","range":{"endLine":208,"startLine":192},"changed":true,"byteRange":{"endByte":8881,"startByte":8395}},{"kind":"function","name":"syncData","range":{"endLine":410,"startLine":404},"changed":true,"byteRange":{"endByte":13908,"startByte":13683}}],"hasError":false,"language":"typescript","hunkScopes":[{"path":"apps/web/tests/dashboard-route-readiness.spec.tsx","hunkNewEnd":410,"hunkNewStart":1,"enclosingSymbol":"syncData"}],"parseStatus":"parsed","errorNodeCount":0,"missingNodeCount":0}],"reviewRunId":"51c17aba-9971-4ea8-9761-afb651f9b8a4","parserVersion":"0.25.2","schemaVersion":"tree-sitter-artifact/v1"}},"rawAccessAllowed":true,"createdAt":"2026-05-25T02:01:19.068Z"}