@n-dx/web 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +96 -0
- package/README.md +5 -0
- package/build.js +243 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.js +50 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/landing/index.html +325 -0
- package/dist/landing/landing.d.ts +38 -0
- package/dist/landing/landing.js +299 -0
- package/dist/landing/landing.js.map +1 -0
- package/dist/public.d.ts +55 -0
- package/dist/public.js +51 -0
- package/dist/public.js.map +1 -0
- package/dist/schema/features.d.ts +28 -0
- package/dist/schema/features.js +9 -0
- package/dist/schema/features.js.map +1 -0
- package/dist/schema/v1.d.ts +317 -0
- package/dist/schema/v1.js +3 -0
- package/dist/schema/v1.js.map +1 -0
- package/dist/server/aggregation-cache.d.ts +105 -0
- package/dist/server/aggregation-cache.js +163 -0
- package/dist/server/aggregation-cache.js.map +1 -0
- package/dist/server/concurrent-execution-metrics.d.ts +103 -0
- package/dist/server/concurrent-execution-metrics.js +253 -0
- package/dist/server/concurrent-execution-metrics.js.map +1 -0
- package/dist/server/domain-gateway.d.ts +18 -0
- package/dist/server/domain-gateway.js +19 -0
- package/dist/server/domain-gateway.js.map +1 -0
- package/dist/server/incremental-task-usage.d.ts +92 -0
- package/dist/server/incremental-task-usage.js +251 -0
- package/dist/server/incremental-task-usage.js.map +1 -0
- package/dist/server/index.d.ts +39 -0
- package/dist/server/index.js +36 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/port.d.ts +96 -0
- package/dist/server/port.js +134 -0
- package/dist/server/port.js.map +1 -0
- package/dist/server/pr-markdown-refresh-diagnostics.d.ts +59 -0
- package/dist/server/pr-markdown-refresh-diagnostics.js +429 -0
- package/dist/server/pr-markdown-refresh-diagnostics.js.map +1 -0
- package/dist/server/prd-io.d.ts +40 -0
- package/dist/server/prd-io.js +66 -0
- package/dist/server/prd-io.js.map +1 -0
- package/dist/server/process-memory-tracker.d.ts +79 -0
- package/dist/server/process-memory-tracker.js +194 -0
- package/dist/server/process-memory-tracker.js.map +1 -0
- package/dist/server/register-scheduler.d.ts +53 -0
- package/dist/server/register-scheduler.js +36 -0
- package/dist/server/register-scheduler.js.map +1 -0
- package/dist/server/rex-gateway.d.ts +39 -0
- package/dist/server/rex-gateway.js +47 -0
- package/dist/server/rex-gateway.js.map +1 -0
- package/dist/server/routes-adaptive.d.ts +21 -0
- package/dist/server/routes-adaptive.js +659 -0
- package/dist/server/routes-adaptive.js.map +1 -0
- package/dist/server/routes-config.d.ts +47 -0
- package/dist/server/routes-config.js +222 -0
- package/dist/server/routes-config.js.map +1 -0
- package/dist/server/routes-data.d.ts +14 -0
- package/dist/server/routes-data.js +129 -0
- package/dist/server/routes-data.js.map +1 -0
- package/dist/server/routes-features.d.ts +14 -0
- package/dist/server/routes-features.js +245 -0
- package/dist/server/routes-features.js.map +1 -0
- package/dist/server/routes-hench.d.ts +116 -0
- package/dist/server/routes-hench.js +2016 -0
- package/dist/server/routes-hench.js.map +1 -0
- package/dist/server/routes-integrations.d.ts +23 -0
- package/dist/server/routes-integrations.js +277 -0
- package/dist/server/routes-integrations.js.map +1 -0
- package/dist/server/routes-mcp.d.ts +31 -0
- package/dist/server/routes-mcp.js +175 -0
- package/dist/server/routes-mcp.js.map +1 -0
- package/dist/server/routes-notion.d.ts +23 -0
- package/dist/server/routes-notion.js +723 -0
- package/dist/server/routes-notion.js.map +1 -0
- package/dist/server/routes-project.d.ts +47 -0
- package/dist/server/routes-project.js +128 -0
- package/dist/server/routes-project.js.map +1 -0
- package/dist/server/routes-rex/analysis.d.ts +11 -0
- package/dist/server/routes-rex/analysis.js +583 -0
- package/dist/server/routes-rex/analysis.js.map +1 -0
- package/dist/server/routes-rex/execution.d.ts +37 -0
- package/dist/server/routes-rex/execution.js +355 -0
- package/dist/server/routes-rex/execution.js.map +1 -0
- package/dist/server/routes-rex/health.d.ts +8 -0
- package/dist/server/routes-rex/health.js +136 -0
- package/dist/server/routes-rex/health.js.map +1 -0
- package/dist/server/routes-rex/index.d.ts +35 -0
- package/dist/server/routes-rex/index.js +72 -0
- package/dist/server/routes-rex/index.js.map +1 -0
- package/dist/server/routes-rex/items.d.ts +8 -0
- package/dist/server/routes-rex/items.js +359 -0
- package/dist/server/routes-rex/items.js.map +1 -0
- package/dist/server/routes-rex/prune.d.ts +11 -0
- package/dist/server/routes-rex/prune.js +379 -0
- package/dist/server/routes-rex/prune.js.map +1 -0
- package/dist/server/routes-rex/reads.d.ts +9 -0
- package/dist/server/routes-rex/reads.js +119 -0
- package/dist/server/routes-rex/reads.js.map +1 -0
- package/dist/server/routes-rex/requirements.d.ts +10 -0
- package/dist/server/routes-rex/requirements.js +408 -0
- package/dist/server/routes-rex/requirements.js.map +1 -0
- package/dist/server/routes-rex/shared.d.ts +37 -0
- package/dist/server/routes-rex/shared.js +73 -0
- package/dist/server/routes-rex/shared.js.map +1 -0
- package/dist/server/routes-search.d.ts +26 -0
- package/dist/server/routes-search.js +82 -0
- package/dist/server/routes-search.js.map +1 -0
- package/dist/server/routes-sourcevision.d.ts +18 -0
- package/dist/server/routes-sourcevision.js +444 -0
- package/dist/server/routes-sourcevision.js.map +1 -0
- package/dist/server/routes-static.d.ts +20 -0
- package/dist/server/routes-static.js +168 -0
- package/dist/server/routes-static.js.map +1 -0
- package/dist/server/routes-status.d.ts +58 -0
- package/dist/server/routes-status.js +191 -0
- package/dist/server/routes-status.js.map +1 -0
- package/dist/server/routes-token-usage.d.ts +63 -0
- package/dist/server/routes-token-usage.js +720 -0
- package/dist/server/routes-token-usage.js.map +1 -0
- package/dist/server/routes-validation.d.ts +10 -0
- package/dist/server/routes-validation.js +365 -0
- package/dist/server/routes-validation.js.map +1 -0
- package/dist/server/routes-workflow.d.ts +15 -0
- package/dist/server/routes-workflow.js +498 -0
- package/dist/server/routes-workflow.js.map +1 -0
- package/dist/server/search-index.d.ts +111 -0
- package/dist/server/search-index.js +348 -0
- package/dist/server/search-index.js.map +1 -0
- package/dist/server/shared-types.d.ts +65 -0
- package/dist/server/shared-types.js +31 -0
- package/dist/server/shared-types.js.map +1 -0
- package/dist/server/start.d.ts +68 -0
- package/dist/server/start.js +568 -0
- package/dist/server/start.js.map +1 -0
- package/dist/server/task-usage.d.ts +17 -0
- package/dist/server/task-usage.js +20 -0
- package/dist/server/task-usage.js.map +1 -0
- package/dist/server/types.d.ts +27 -0
- package/dist/server/types.js +26 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/usage-cleanup-scheduler.d.ts +107 -0
- package/dist/server/usage-cleanup-scheduler.js +232 -0
- package/dist/server/usage-cleanup-scheduler.js.map +1 -0
- package/dist/server/websocket.d.ts +131 -0
- package/dist/server/websocket.js +512 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/shared/data-files.d.ts +17 -0
- package/dist/shared/data-files.js +18 -0
- package/dist/shared/data-files.js.map +1 -0
- package/dist/shared/index.d.ts +9 -0
- package/dist/shared/index.js +9 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/view-id.d.ts +8 -0
- package/dist/shared/view-id.js +9 -0
- package/dist/shared/view-id.js.map +1 -0
- package/dist/viewer/Hench-F.png +0 -0
- package/dist/viewer/Rex-F.png +0 -0
- package/dist/viewer/SourceVision-F.png +0 -0
- package/dist/viewer/SourceVision.png +0 -0
- package/dist/viewer/api.d.ts +19 -0
- package/dist/viewer/api.js +17 -0
- package/dist/viewer/api.js.map +1 -0
- package/dist/viewer/bootstrap.d.ts +13 -0
- package/dist/viewer/bootstrap.js +40 -0
- package/dist/viewer/bootstrap.js.map +1 -0
- package/dist/viewer/components/active-tasks-panel.d.ts +36 -0
- package/dist/viewer/components/active-tasks-panel.js +183 -0
- package/dist/viewer/components/active-tasks-panel.js.map +1 -0
- package/dist/viewer/components/breadcrumb.d.ts +21 -0
- package/dist/viewer/components/breadcrumb.js +117 -0
- package/dist/viewer/components/breadcrumb.js.map +1 -0
- package/dist/viewer/components/concurrency-panel.d.ts +18 -0
- package/dist/viewer/components/concurrency-panel.js +175 -0
- package/dist/viewer/components/concurrency-panel.js.map +1 -0
- package/dist/viewer/components/config-footer.d.ts +11 -0
- package/dist/viewer/components/config-footer.js +132 -0
- package/dist/viewer/components/config-footer.js.map +1 -0
- package/dist/viewer/components/constants.d.ts +10 -0
- package/dist/viewer/components/constants.js +11 -0
- package/dist/viewer/components/constants.js.map +1 -0
- package/dist/viewer/components/copy-link-button.d.ts +30 -0
- package/dist/viewer/components/copy-link-button.js +74 -0
- package/dist/viewer/components/copy-link-button.js.map +1 -0
- package/dist/viewer/components/crash-recovery-banner.d.ts +28 -0
- package/dist/viewer/components/crash-recovery-banner.js +47 -0
- package/dist/viewer/components/crash-recovery-banner.js.map +1 -0
- package/dist/viewer/components/data-display/collapsible-section.d.ts +14 -0
- package/dist/viewer/components/data-display/collapsible-section.js +66 -0
- package/dist/viewer/components/data-display/collapsible-section.js.map +1 -0
- package/dist/viewer/components/data-display/findings-list.d.ts +13 -0
- package/dist/viewer/components/data-display/findings-list.js +136 -0
- package/dist/viewer/components/data-display/findings-list.js.map +1 -0
- package/dist/viewer/components/data-display/health-gauge.d.ts +37 -0
- package/dist/viewer/components/data-display/health-gauge.js +62 -0
- package/dist/viewer/components/data-display/health-gauge.js.map +1 -0
- package/dist/viewer/components/data-display/mini-charts.d.ts +36 -0
- package/dist/viewer/components/data-display/mini-charts.js +124 -0
- package/dist/viewer/components/data-display/mini-charts.js.map +1 -0
- package/dist/viewer/components/data-display/tree-view.d.ts +18 -0
- package/dist/viewer/components/data-display/tree-view.js +107 -0
- package/dist/viewer/components/data-display/tree-view.js.map +1 -0
- package/dist/viewer/components/data-display/zone-map.d.ts +28 -0
- package/dist/viewer/components/data-display/zone-map.js +197 -0
- package/dist/viewer/components/data-display/zone-map.js.map +1 -0
- package/dist/viewer/components/degradation-banner.d.ts +28 -0
- package/dist/viewer/components/degradation-banner.js +47 -0
- package/dist/viewer/components/degradation-banner.js.map +1 -0
- package/dist/viewer/components/detail-panel.d.ts +12 -0
- package/dist/viewer/components/detail-panel.js +166 -0
- package/dist/viewer/components/detail-panel.js.map +1 -0
- package/dist/viewer/components/elapsed-time.d.ts +38 -0
- package/dist/viewer/components/elapsed-time.js +35 -0
- package/dist/viewer/components/elapsed-time.js.map +1 -0
- package/dist/viewer/components/faq.d.ts +12 -0
- package/dist/viewer/components/faq.js +237 -0
- package/dist/viewer/components/faq.js.map +1 -0
- package/dist/viewer/components/favicon.d.ts +30 -0
- package/dist/viewer/components/favicon.js +90 -0
- package/dist/viewer/components/favicon.js.map +1 -0
- package/dist/viewer/components/guide.d.ts +5 -0
- package/dist/viewer/components/guide.js +116 -0
- package/dist/viewer/components/guide.js.map +1 -0
- package/dist/viewer/components/index.d.ts +37 -0
- package/dist/viewer/components/index.js +46 -0
- package/dist/viewer/components/index.js.map +1 -0
- package/dist/viewer/components/logos.d.ts +42 -0
- package/dist/viewer/components/logos.js +46 -0
- package/dist/viewer/components/logos.js.map +1 -0
- package/dist/viewer/components/memory-panel.d.ts +19 -0
- package/dist/viewer/components/memory-panel.js +181 -0
- package/dist/viewer/components/memory-panel.js.map +1 -0
- package/dist/viewer/components/memory-warning.d.ts +23 -0
- package/dist/viewer/components/memory-warning.js +42 -0
- package/dist/viewer/components/memory-warning.js.map +1 -0
- package/dist/viewer/components/notion-schema-wizard.d.ts +16 -0
- package/dist/viewer/components/notion-schema-wizard.js +263 -0
- package/dist/viewer/components/notion-schema-wizard.js.map +1 -0
- package/dist/viewer/components/polling-suspension-indicator.d.ts +24 -0
- package/dist/viewer/components/polling-suspension-indicator.js +31 -0
- package/dist/viewer/components/polling-suspension-indicator.js.map +1 -0
- package/dist/viewer/components/prd-tree/add-item-form.d.ts +31 -0
- package/dist/viewer/components/prd-tree/add-item-form.js +231 -0
- package/dist/viewer/components/prd-tree/add-item-form.js.map +1 -0
- package/dist/viewer/components/prd-tree/analyze-panel.d.ts +13 -0
- package/dist/viewer/components/prd-tree/analyze-panel.js +245 -0
- package/dist/viewer/components/prd-tree/analyze-panel.js.map +1 -0
- package/dist/viewer/components/prd-tree/batch-import-panel.d.ts +34 -0
- package/dist/viewer/components/prd-tree/batch-import-panel.js +415 -0
- package/dist/viewer/components/prd-tree/batch-import-panel.js.map +1 -0
- package/dist/viewer/components/prd-tree/bulk-actions.d.ts +19 -0
- package/dist/viewer/components/prd-tree/bulk-actions.js +90 -0
- package/dist/viewer/components/prd-tree/bulk-actions.js.map +1 -0
- package/dist/viewer/components/prd-tree/compute.d.ts +32 -0
- package/dist/viewer/components/prd-tree/compute.js +129 -0
- package/dist/viewer/components/prd-tree/compute.js.map +1 -0
- package/dist/viewer/components/prd-tree/delete-confirmation.d.ts +23 -0
- package/dist/viewer/components/prd-tree/delete-confirmation.js +83 -0
- package/dist/viewer/components/prd-tree/delete-confirmation.js.map +1 -0
- package/dist/viewer/components/prd-tree/execution-panel.d.ts +14 -0
- package/dist/viewer/components/prd-tree/execution-panel.js +291 -0
- package/dist/viewer/components/prd-tree/execution-panel.js.map +1 -0
- package/dist/viewer/components/prd-tree/facet-filter.d.ts +40 -0
- package/dist/viewer/components/prd-tree/facet-filter.js +188 -0
- package/dist/viewer/components/prd-tree/facet-filter.js.map +1 -0
- package/dist/viewer/components/prd-tree/index.d.ts +24 -0
- package/dist/viewer/components/prd-tree/index.js +16 -0
- package/dist/viewer/components/prd-tree/index.js.map +1 -0
- package/dist/viewer/components/prd-tree/inline-add-form.d.ts +32 -0
- package/dist/viewer/components/prd-tree/inline-add-form.js +175 -0
- package/dist/viewer/components/prd-tree/inline-add-form.js.map +1 -0
- package/dist/viewer/components/prd-tree/inline-status-picker.d.ts +31 -0
- package/dist/viewer/components/prd-tree/inline-status-picker.js +110 -0
- package/dist/viewer/components/prd-tree/inline-status-picker.js.map +1 -0
- package/dist/viewer/components/prd-tree/lazy-children.d.ts +40 -0
- package/dist/viewer/components/prd-tree/lazy-children.js +73 -0
- package/dist/viewer/components/prd-tree/lazy-children.js.map +1 -0
- package/dist/viewer/components/prd-tree/levels.d.ts +31 -0
- package/dist/viewer/components/prd-tree/levels.js +72 -0
- package/dist/viewer/components/prd-tree/levels.js.map +1 -0
- package/dist/viewer/components/prd-tree/listener-lifecycle.d.ts +105 -0
- package/dist/viewer/components/prd-tree/listener-lifecycle.js +173 -0
- package/dist/viewer/components/prd-tree/listener-lifecycle.js.map +1 -0
- package/dist/viewer/components/prd-tree/merge-preview.d.ts +25 -0
- package/dist/viewer/components/prd-tree/merge-preview.js +181 -0
- package/dist/viewer/components/prd-tree/merge-preview.js.map +1 -0
- package/dist/viewer/components/prd-tree/prd-tree.d.ts +91 -0
- package/dist/viewer/components/prd-tree/prd-tree.js +565 -0
- package/dist/viewer/components/prd-tree/prd-tree.js.map +1 -0
- package/dist/viewer/components/prd-tree/proposal-editor.d.ts +44 -0
- package/dist/viewer/components/prd-tree/proposal-editor.js +438 -0
- package/dist/viewer/components/prd-tree/proposal-editor.js.map +1 -0
- package/dist/viewer/components/prd-tree/prune-confirmation.d.ts +25 -0
- package/dist/viewer/components/prd-tree/prune-confirmation.js +336 -0
- package/dist/viewer/components/prd-tree/prune-confirmation.js.map +1 -0
- package/dist/viewer/components/prd-tree/prune-diff-tree.d.ts +39 -0
- package/dist/viewer/components/prd-tree/prune-diff-tree.js +319 -0
- package/dist/viewer/components/prd-tree/prune-diff-tree.js.map +1 -0
- package/dist/viewer/components/prd-tree/reorganize-panel.d.ts +16 -0
- package/dist/viewer/components/prd-tree/reorganize-panel.js +213 -0
- package/dist/viewer/components/prd-tree/reorganize-panel.js.map +1 -0
- package/dist/viewer/components/prd-tree/smart-add-input.d.ts +19 -0
- package/dist/viewer/components/prd-tree/smart-add-input.js +383 -0
- package/dist/viewer/components/prd-tree/smart-add-input.js.map +1 -0
- package/dist/viewer/components/prd-tree/status-filter.d.ts +40 -0
- package/dist/viewer/components/prd-tree/status-filter.js +131 -0
- package/dist/viewer/components/prd-tree/status-filter.js.map +1 -0
- package/dist/viewer/components/prd-tree/task-detail.d.ts +41 -0
- package/dist/viewer/components/prd-tree/task-detail.js +1205 -0
- package/dist/viewer/components/prd-tree/task-detail.js.map +1 -0
- package/dist/viewer/components/prd-tree/task-utilization.d.ts +7 -0
- package/dist/viewer/components/prd-tree/task-utilization.js +25 -0
- package/dist/viewer/components/prd-tree/task-utilization.js.map +1 -0
- package/dist/viewer/components/prd-tree/tree-differ.d.ts +59 -0
- package/dist/viewer/components/prd-tree/tree-differ.js +200 -0
- package/dist/viewer/components/prd-tree/tree-differ.js.map +1 -0
- package/dist/viewer/components/prd-tree/tree-event-delegate.d.ts +70 -0
- package/dist/viewer/components/prd-tree/tree-event-delegate.js +176 -0
- package/dist/viewer/components/prd-tree/tree-event-delegate.js.map +1 -0
- package/dist/viewer/components/prd-tree/tree-search.d.ts +65 -0
- package/dist/viewer/components/prd-tree/tree-search.js +178 -0
- package/dist/viewer/components/prd-tree/tree-search.js.map +1 -0
- package/dist/viewer/components/prd-tree/tree-utils.d.ts +38 -0
- package/dist/viewer/components/prd-tree/tree-utils.js +107 -0
- package/dist/viewer/components/prd-tree/tree-utils.js.map +1 -0
- package/dist/viewer/components/prd-tree/types.d.ts +93 -0
- package/dist/viewer/components/prd-tree/types.js +16 -0
- package/dist/viewer/components/prd-tree/types.js.map +1 -0
- package/dist/viewer/components/prd-tree/virtual-scroll.d.ts +119 -0
- package/dist/viewer/components/prd-tree/virtual-scroll.js +169 -0
- package/dist/viewer/components/prd-tree/virtual-scroll.js.map +1 -0
- package/dist/viewer/components/progressive-loader.d.ts +114 -0
- package/dist/viewer/components/progressive-loader.js +225 -0
- package/dist/viewer/components/progressive-loader.js.map +1 -0
- package/dist/viewer/components/refresh-queue-status.d.ts +20 -0
- package/dist/viewer/components/refresh-queue-status.js +65 -0
- package/dist/viewer/components/refresh-queue-status.js.map +1 -0
- package/dist/viewer/components/rex-task-link.d.ts +50 -0
- package/dist/viewer/components/rex-task-link.js +218 -0
- package/dist/viewer/components/rex-task-link.js.map +1 -0
- package/dist/viewer/components/search-filter.d.ts +20 -0
- package/dist/viewer/components/search-filter.js +28 -0
- package/dist/viewer/components/search-filter.js.map +1 -0
- package/dist/viewer/components/search-overlay.d.ts +31 -0
- package/dist/viewer/components/search-overlay.js +472 -0
- package/dist/viewer/components/search-overlay.js.map +1 -0
- package/dist/viewer/components/sidebar.d.ts +18 -0
- package/dist/viewer/components/sidebar.js +357 -0
- package/dist/viewer/components/sidebar.js.map +1 -0
- package/dist/viewer/components/status-indicators.d.ts +63 -0
- package/dist/viewer/components/status-indicators.js +136 -0
- package/dist/viewer/components/status-indicators.js.map +1 -0
- package/dist/viewer/components/theme-toggle.d.ts +8 -0
- package/dist/viewer/components/theme-toggle.js +28 -0
- package/dist/viewer/components/theme-toggle.js.map +1 -0
- package/dist/viewer/components/throttle-controls.d.ts +18 -0
- package/dist/viewer/components/throttle-controls.js +304 -0
- package/dist/viewer/components/throttle-controls.js.map +1 -0
- package/dist/viewer/components/ws-health-panel.d.ts +18 -0
- package/dist/viewer/components/ws-health-panel.js +250 -0
- package/dist/viewer/components/ws-health-panel.js.map +1 -0
- package/dist/viewer/components/zone-slideout.d.ts +17 -0
- package/dist/viewer/components/zone-slideout.js +162 -0
- package/dist/viewer/components/zone-slideout.js.map +1 -0
- package/dist/viewer/crash/crash-detector.d.ts +69 -0
- package/dist/viewer/crash/crash-detector.js +239 -0
- package/dist/viewer/crash/crash-detector.js.map +1 -0
- package/dist/viewer/crash/index.d.ts +7 -0
- package/dist/viewer/crash/index.js +8 -0
- package/dist/viewer/crash/index.js.map +1 -0
- package/dist/viewer/deployed-mode.d.ts +37 -0
- package/dist/viewer/deployed-mode.js +94 -0
- package/dist/viewer/deployed-mode.js.map +1 -0
- package/dist/viewer/external.d.ts +17 -0
- package/dist/viewer/external.js +17 -0
- package/dist/viewer/external.js.map +1 -0
- package/dist/viewer/graph/index.d.ts +9 -0
- package/dist/viewer/graph/index.js +12 -0
- package/dist/viewer/graph/index.js.map +1 -0
- package/dist/viewer/graph/physics.d.ts +96 -0
- package/dist/viewer/graph/physics.js +366 -0
- package/dist/viewer/graph/physics.js.map +1 -0
- package/dist/viewer/graph/renderer.d.ts +184 -0
- package/dist/viewer/graph/renderer.js +1438 -0
- package/dist/viewer/graph/renderer.js.map +1 -0
- package/dist/viewer/hooks/index.d.ts +27 -0
- package/dist/viewer/hooks/index.js +28 -0
- package/dist/viewer/hooks/index.js.map +1 -0
- package/dist/viewer/hooks/use-app-data.d.ts +31 -0
- package/dist/viewer/hooks/use-app-data.js +152 -0
- package/dist/viewer/hooks/use-app-data.js.map +1 -0
- package/dist/viewer/hooks/use-crash-recovery.d.ts +50 -0
- package/dist/viewer/hooks/use-crash-recovery.js +76 -0
- package/dist/viewer/hooks/use-crash-recovery.js.map +1 -0
- package/dist/viewer/hooks/use-delete-actions.d.ts +48 -0
- package/dist/viewer/hooks/use-delete-actions.js +103 -0
- package/dist/viewer/hooks/use-delete-actions.js.map +1 -0
- package/dist/viewer/hooks/use-dom-performance-monitor.d.ts +68 -0
- package/dist/viewer/hooks/use-dom-performance-monitor.js +71 -0
- package/dist/viewer/hooks/use-dom-performance-monitor.js.map +1 -0
- package/dist/viewer/hooks/use-facet-state.d.ts +32 -0
- package/dist/viewer/hooks/use-facet-state.js +119 -0
- package/dist/viewer/hooks/use-facet-state.js.map +1 -0
- package/dist/viewer/hooks/use-feature-toggle.d.ts +18 -0
- package/dist/viewer/hooks/use-feature-toggle.js +57 -0
- package/dist/viewer/hooks/use-feature-toggle.js.map +1 -0
- package/dist/viewer/hooks/use-file-edges.d.ts +23 -0
- package/dist/viewer/hooks/use-file-edges.js +221 -0
- package/dist/viewer/hooks/use-file-edges.js.map +1 -0
- package/dist/viewer/hooks/use-graceful-degradation.d.ts +30 -0
- package/dist/viewer/hooks/use-graceful-degradation.js +45 -0
- package/dist/viewer/hooks/use-graceful-degradation.js.map +1 -0
- package/dist/viewer/hooks/use-item-selection.d.ts +49 -0
- package/dist/viewer/hooks/use-item-selection.js +117 -0
- package/dist/viewer/hooks/use-item-selection.js.map +1 -0
- package/dist/viewer/hooks/use-memory-monitor.d.ts +39 -0
- package/dist/viewer/hooks/use-memory-monitor.js +73 -0
- package/dist/viewer/hooks/use-memory-monitor.js.map +1 -0
- package/dist/viewer/hooks/use-pan-zoom.d.ts +33 -0
- package/dist/viewer/hooks/use-pan-zoom.js +110 -0
- package/dist/viewer/hooks/use-pan-zoom.js.map +1 -0
- package/dist/viewer/hooks/use-persistent-filter.d.ts +24 -0
- package/dist/viewer/hooks/use-persistent-filter.js +37 -0
- package/dist/viewer/hooks/use-persistent-filter.js.map +1 -0
- package/dist/viewer/hooks/use-polling-suspension.d.ts +32 -0
- package/dist/viewer/hooks/use-polling-suspension.js +41 -0
- package/dist/viewer/hooks/use-polling-suspension.js.map +1 -0
- package/dist/viewer/hooks/use-polling.d.ts +39 -0
- package/dist/viewer/hooks/use-polling.js +55 -0
- package/dist/viewer/hooks/use-polling.js.map +1 -0
- package/dist/viewer/hooks/use-prd-actions.d.ts +126 -0
- package/dist/viewer/hooks/use-prd-actions.js +250 -0
- package/dist/viewer/hooks/use-prd-actions.js.map +1 -0
- package/dist/viewer/hooks/use-prd-data.d.ts +45 -0
- package/dist/viewer/hooks/use-prd-data.js +159 -0
- package/dist/viewer/hooks/use-prd-data.js.map +1 -0
- package/dist/viewer/hooks/use-prd-deep-link.d.ts +45 -0
- package/dist/viewer/hooks/use-prd-deep-link.js +60 -0
- package/dist/viewer/hooks/use-prd-deep-link.js.map +1 -0
- package/dist/viewer/hooks/use-prd-websocket.d.ts +47 -0
- package/dist/viewer/hooks/use-prd-websocket.js +139 -0
- package/dist/viewer/hooks/use-prd-websocket.js.map +1 -0
- package/dist/viewer/hooks/use-project-metadata.d.ts +25 -0
- package/dist/viewer/hooks/use-project-metadata.js +55 -0
- package/dist/viewer/hooks/use-project-metadata.js.map +1 -0
- package/dist/viewer/hooks/use-project-status.d.ts +60 -0
- package/dist/viewer/hooks/use-project-status.js +133 -0
- package/dist/viewer/hooks/use-project-status.js.map +1 -0
- package/dist/viewer/hooks/use-refresh-throttle.d.ts +45 -0
- package/dist/viewer/hooks/use-refresh-throttle.js +52 -0
- package/dist/viewer/hooks/use-refresh-throttle.js.map +1 -0
- package/dist/viewer/hooks/use-route-state.d.ts +18 -0
- package/dist/viewer/hooks/use-route-state.js +115 -0
- package/dist/viewer/hooks/use-route-state.js.map +1 -0
- package/dist/viewer/hooks/use-subzone-edges.d.ts +21 -0
- package/dist/viewer/hooks/use-subzone-edges.js +147 -0
- package/dist/viewer/hooks/use-subzone-edges.js.map +1 -0
- package/dist/viewer/hooks/use-tab-visibility.d.ts +31 -0
- package/dist/viewer/hooks/use-tab-visibility.js +43 -0
- package/dist/viewer/hooks/use-tab-visibility.js.map +1 -0
- package/dist/viewer/hooks/use-tick.d.ts +43 -0
- package/dist/viewer/hooks/use-tick.js +76 -0
- package/dist/viewer/hooks/use-tick.js.map +1 -0
- package/dist/viewer/hooks/use-toast.d.ts +24 -0
- package/dist/viewer/hooks/use-toast.js +26 -0
- package/dist/viewer/hooks/use-toast.js.map +1 -0
- package/dist/viewer/hooks/use-zone-drag.d.ts +30 -0
- package/dist/viewer/hooks/use-zone-drag.js +60 -0
- package/dist/viewer/hooks/use-zone-drag.js.map +1 -0
- package/dist/viewer/index.html +36 -0
- package/dist/viewer/loader.d.ts +33 -0
- package/dist/viewer/loader.js +195 -0
- package/dist/viewer/loader.js.map +1 -0
- package/dist/viewer/main.d.ts +1 -0
- package/dist/viewer/main.js +121 -0
- package/dist/viewer/main.js.map +1 -0
- package/dist/viewer/messaging/call-rate-limiter.d.ts +50 -0
- package/dist/viewer/messaging/call-rate-limiter.js +103 -0
- package/dist/viewer/messaging/call-rate-limiter.js.map +1 -0
- package/dist/viewer/messaging/fetch-pipeline.d.ts +58 -0
- package/dist/viewer/messaging/fetch-pipeline.js +58 -0
- package/dist/viewer/messaging/fetch-pipeline.js.map +1 -0
- package/dist/viewer/messaging/index.d.ts +43 -0
- package/dist/viewer/messaging/index.js +46 -0
- package/dist/viewer/messaging/index.js.map +1 -0
- package/dist/viewer/messaging/message-coalescer.d.ts +96 -0
- package/dist/viewer/messaging/message-coalescer.js +121 -0
- package/dist/viewer/messaging/message-coalescer.js.map +1 -0
- package/dist/viewer/messaging/message-throttle.d.ts +95 -0
- package/dist/viewer/messaging/message-throttle.js +147 -0
- package/dist/viewer/messaging/message-throttle.js.map +1 -0
- package/dist/viewer/messaging/request-dedup.d.ts +43 -0
- package/dist/viewer/messaging/request-dedup.js +55 -0
- package/dist/viewer/messaging/request-dedup.js.map +1 -0
- package/dist/viewer/messaging/ws-pipeline.d.ts +85 -0
- package/dist/viewer/messaging/ws-pipeline.js +68 -0
- package/dist/viewer/messaging/ws-pipeline.js.map +1 -0
- package/dist/viewer/n-dx.png +0 -0
- package/dist/viewer/performance/dom-performance-monitor.d.ts +157 -0
- package/dist/viewer/performance/dom-performance-monitor.js +341 -0
- package/dist/viewer/performance/dom-performance-monitor.js.map +1 -0
- package/dist/viewer/performance/dom-update-gate.d.ts +122 -0
- package/dist/viewer/performance/dom-update-gate.js +229 -0
- package/dist/viewer/performance/dom-update-gate.js.map +1 -0
- package/dist/viewer/performance/graceful-degradation.d.ts +73 -0
- package/dist/viewer/performance/graceful-degradation.js +152 -0
- package/dist/viewer/performance/graceful-degradation.js.map +1 -0
- package/dist/viewer/performance/index.d.ts +14 -0
- package/dist/viewer/performance/index.js +20 -0
- package/dist/viewer/performance/index.js.map +1 -0
- package/dist/viewer/performance/memory-monitor.d.ts +78 -0
- package/dist/viewer/performance/memory-monitor.js +218 -0
- package/dist/viewer/performance/memory-monitor.js.map +1 -0
- package/dist/viewer/performance/refresh-throttle.d.ts +90 -0
- package/dist/viewer/performance/refresh-throttle.js +266 -0
- package/dist/viewer/performance/refresh-throttle.js.map +1 -0
- package/dist/viewer/performance/response-buffer-gate.d.ts +108 -0
- package/dist/viewer/performance/response-buffer-gate.js +170 -0
- package/dist/viewer/performance/response-buffer-gate.js.map +1 -0
- package/dist/viewer/performance/update-batcher.d.ts +79 -0
- package/dist/viewer/performance/update-batcher.js +119 -0
- package/dist/viewer/performance/update-batcher.js.map +1 -0
- package/dist/viewer/polling/batched-tick-dispatcher.d.ts +83 -0
- package/dist/viewer/polling/batched-tick-dispatcher.js +183 -0
- package/dist/viewer/polling/batched-tick-dispatcher.js.map +1 -0
- package/dist/viewer/polling/index.d.ts +13 -0
- package/dist/viewer/polling/index.js +16 -0
- package/dist/viewer/polling/index.js.map +1 -0
- package/dist/viewer/polling/polling-manager.d.ts +82 -0
- package/dist/viewer/polling/polling-manager.js +254 -0
- package/dist/viewer/polling/polling-manager.js.map +1 -0
- package/dist/viewer/polling/polling-restart.d.ts +45 -0
- package/dist/viewer/polling/polling-restart.js +98 -0
- package/dist/viewer/polling/polling-restart.js.map +1 -0
- package/dist/viewer/polling/polling-state.d.ts +182 -0
- package/dist/viewer/polling/polling-state.js +306 -0
- package/dist/viewer/polling/polling-state.js.map +1 -0
- package/dist/viewer/polling/tab-visibility.d.ts +112 -0
- package/dist/viewer/polling/tab-visibility.js +276 -0
- package/dist/viewer/polling/tab-visibility.js.map +1 -0
- package/dist/viewer/polling/tick-timer.d.ts +70 -0
- package/dist/viewer/polling/tick-timer.js +168 -0
- package/dist/viewer/polling/tick-timer.js.map +1 -0
- package/dist/viewer/polling/tick-visibility-gate.d.ts +92 -0
- package/dist/viewer/polling/tick-visibility-gate.js +146 -0
- package/dist/viewer/polling/tick-visibility-gate.js.map +1 -0
- package/dist/viewer/route-state.d.ts +8 -0
- package/dist/viewer/route-state.js +77 -0
- package/dist/viewer/route-state.js.map +1 -0
- package/dist/viewer/schema-compat.d.ts +17 -0
- package/dist/viewer/schema-compat.js +49 -0
- package/dist/viewer/schema-compat.js.map +1 -0
- package/dist/viewer/types.d.ts +66 -0
- package/dist/viewer/types.js +2 -0
- package/dist/viewer/types.js.map +1 -0
- package/dist/viewer/usage/constants.d.ts +14 -0
- package/dist/viewer/usage/constants.js +14 -0
- package/dist/viewer/usage/constants.js.map +1 -0
- package/dist/viewer/usage/index.d.ts +7 -0
- package/dist/viewer/usage/index.js +8 -0
- package/dist/viewer/usage/index.js.map +1 -0
- package/dist/viewer/utils.d.ts +25 -0
- package/dist/viewer/utils.js +48 -0
- package/dist/viewer/utils.js.map +1 -0
- package/dist/viewer/validate.d.ts +23 -0
- package/dist/viewer/validate.js +275 -0
- package/dist/viewer/validate.js.map +1 -0
- package/dist/viewer/views/analysis.d.ts +10 -0
- package/dist/viewer/views/analysis.js +109 -0
- package/dist/viewer/views/analysis.js.map +1 -0
- package/dist/viewer/views/architecture.d.ts +10 -0
- package/dist/viewer/views/architecture.js +44 -0
- package/dist/viewer/views/architecture.js.map +1 -0
- package/dist/viewer/views/domain-hench.d.ts +13 -0
- package/dist/viewer/views/domain-hench.js +14 -0
- package/dist/viewer/views/domain-hench.js.map +1 -0
- package/dist/viewer/views/domain-rex.d.ts +17 -0
- package/dist/viewer/views/domain-rex.js +18 -0
- package/dist/viewer/views/domain-rex.js.map +1 -0
- package/dist/viewer/views/domain-settings.d.ts +12 -0
- package/dist/viewer/views/domain-settings.js +13 -0
- package/dist/viewer/views/domain-settings.js.map +1 -0
- package/dist/viewer/views/domain-sourcevision.d.ts +20 -0
- package/dist/viewer/views/domain-sourcevision.js +21 -0
- package/dist/viewer/views/domain-sourcevision.js.map +1 -0
- package/dist/viewer/views/enrichment-thresholds.d.ts +11 -0
- package/dist/viewer/views/enrichment-thresholds.js +12 -0
- package/dist/viewer/views/enrichment-thresholds.js.map +1 -0
- package/dist/viewer/views/feature-toggles.d.ts +13 -0
- package/dist/viewer/views/feature-toggles.js +185 -0
- package/dist/viewer/views/feature-toggles.js.map +1 -0
- package/dist/viewer/views/files.d.ts +13 -0
- package/dist/viewer/views/files.js +174 -0
- package/dist/viewer/views/files.js.map +1 -0
- package/dist/viewer/views/graph.d.ts +12 -0
- package/dist/viewer/views/graph.js +316 -0
- package/dist/viewer/views/graph.js.map +1 -0
- package/dist/viewer/views/hench-config.d.ts +39 -0
- package/dist/viewer/views/hench-config.js +473 -0
- package/dist/viewer/views/hench-config.js.map +1 -0
- package/dist/viewer/views/hench-runs.d.ts +19 -0
- package/dist/viewer/views/hench-runs.js +460 -0
- package/dist/viewer/views/hench-runs.js.map +1 -0
- package/dist/viewer/views/hench-templates.d.ts +17 -0
- package/dist/viewer/views/hench-templates.js +262 -0
- package/dist/viewer/views/hench-templates.js.map +1 -0
- package/dist/viewer/views/integration-config.d.ts +73 -0
- package/dist/viewer/views/integration-config.js +524 -0
- package/dist/viewer/views/integration-config.js.map +1 -0
- package/dist/viewer/views/notion-config.d.ts +16 -0
- package/dist/viewer/views/notion-config.js +357 -0
- package/dist/viewer/views/notion-config.js.map +1 -0
- package/dist/viewer/views/overview.d.ts +10 -0
- package/dist/viewer/views/overview.js +187 -0
- package/dist/viewer/views/overview.js.map +1 -0
- package/dist/viewer/views/pr-markdown.d.ts +3 -0
- package/dist/viewer/views/pr-markdown.js +350 -0
- package/dist/viewer/views/pr-markdown.js.map +1 -0
- package/dist/viewer/views/prd.d.ts +34 -0
- package/dist/viewer/views/prd.js +257 -0
- package/dist/viewer/views/prd.js.map +1 -0
- package/dist/viewer/views/problems.d.ts +8 -0
- package/dist/viewer/views/problems.js +50 -0
- package/dist/viewer/views/problems.js.map +1 -0
- package/dist/viewer/views/rex-dashboard.d.ts +14 -0
- package/dist/viewer/views/rex-dashboard.js +334 -0
- package/dist/viewer/views/rex-dashboard.js.map +1 -0
- package/dist/viewer/views/routes.d.ts +8 -0
- package/dist/viewer/views/routes.js +216 -0
- package/dist/viewer/views/routes.js.map +1 -0
- package/dist/viewer/views/sourcevision-tabs.d.ts +18 -0
- package/dist/viewer/views/sourcevision-tabs.js +14 -0
- package/dist/viewer/views/sourcevision-tabs.js.map +1 -0
- package/dist/viewer/views/suggestions.d.ts +8 -0
- package/dist/viewer/views/suggestions.js +36 -0
- package/dist/viewer/views/suggestions.js.map +1 -0
- package/dist/viewer/views/task-audit.d.ts +18 -0
- package/dist/viewer/views/task-audit.js +413 -0
- package/dist/viewer/views/task-audit.js.map +1 -0
- package/dist/viewer/views/token-usage.d.ts +10 -0
- package/dist/viewer/views/token-usage.js +410 -0
- package/dist/viewer/views/token-usage.js.map +1 -0
- package/dist/viewer/views/validation.d.ts +11 -0
- package/dist/viewer/views/validation.js +475 -0
- package/dist/viewer/views/validation.js.map +1 -0
- package/dist/viewer/views/view-registry.d.ts +27 -0
- package/dist/viewer/views/view-registry.js +70 -0
- package/dist/viewer/views/view-registry.js.map +1 -0
- package/dist/viewer/views/workflow-optimization.d.ts +12 -0
- package/dist/viewer/views/workflow-optimization.js +311 -0
- package/dist/viewer/views/workflow-optimization.js.map +1 -0
- package/dist/viewer/views/zone-types.d.ts +69 -0
- package/dist/viewer/views/zone-types.js +5 -0
- package/dist/viewer/views/zone-types.js.map +1 -0
- package/dist/viewer/views/zones.d.ts +50 -0
- package/dist/viewer/views/zones.js +1438 -0
- package/dist/viewer/views/zones.js.map +1 -0
- package/dist/viewer/visualization/colors.d.ts +16 -0
- package/dist/viewer/visualization/colors.js +31 -0
- package/dist/viewer/visualization/colors.js.map +1 -0
- package/dist/viewer/visualization/flow.d.ts +54 -0
- package/dist/viewer/visualization/flow.js +123 -0
- package/dist/viewer/visualization/flow.js.map +1 -0
- package/dist/viewer/visualization/index.d.ts +34 -0
- package/dist/viewer/visualization/index.js +40 -0
- package/dist/viewer/visualization/index.js.map +1 -0
- package/dist/viewer/visualization/metrics.d.ts +8 -0
- package/dist/viewer/visualization/metrics.js +16 -0
- package/dist/viewer/visualization/metrics.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/** Sourcevision Schema v1 — all types for the .sourcevision/ output format */
|
|
2
|
+
export declare const SCHEMA_VERSION = "1.0.0";
|
|
3
|
+
export type ModuleStatus = "pending" | "running" | "complete" | "error";
|
|
4
|
+
export interface ModuleInfo {
|
|
5
|
+
status: ModuleStatus;
|
|
6
|
+
startedAt?: string;
|
|
7
|
+
completedAt?: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
/** Number of chunks processed (for large codebases) */
|
|
10
|
+
chunks?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface Manifest {
|
|
13
|
+
schemaVersion: string;
|
|
14
|
+
toolVersion: string;
|
|
15
|
+
analyzedAt: string;
|
|
16
|
+
gitSha?: string;
|
|
17
|
+
gitBranch?: string;
|
|
18
|
+
targetPath: string;
|
|
19
|
+
modules: Record<string, ModuleInfo>;
|
|
20
|
+
/** Aggregate token usage from the most recent analyze run. */
|
|
21
|
+
tokenUsage?: AnalyzeTokenUsage;
|
|
22
|
+
/** Whether per-zone output files were emitted to zones/ directory. */
|
|
23
|
+
zoneOutputs?: boolean;
|
|
24
|
+
/** Incorporated sub-analyses (nested .sourcevision/ directories). */
|
|
25
|
+
children?: SubAnalysisRef[];
|
|
26
|
+
}
|
|
27
|
+
/** Reference to an incorporated sub-analysis. */
|
|
28
|
+
export interface SubAnalysisRef {
|
|
29
|
+
/** Unique identifier for this sub-analysis (derived from directory path). */
|
|
30
|
+
id: string;
|
|
31
|
+
/** Path prefix for all files in this sub-analysis (relative to root). */
|
|
32
|
+
prefix: string;
|
|
33
|
+
/** Path to the sub-analysis manifest.json (relative to root). */
|
|
34
|
+
manifestPath: string;
|
|
35
|
+
}
|
|
36
|
+
/** Per-zone summary metadata written to zones/{id}/summary.json */
|
|
37
|
+
export interface ZoneSummary {
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
description: string;
|
|
41
|
+
files: string[];
|
|
42
|
+
entryPoints: string[];
|
|
43
|
+
cohesion: number;
|
|
44
|
+
coupling: number;
|
|
45
|
+
fileCount: number;
|
|
46
|
+
lineCount: number;
|
|
47
|
+
}
|
|
48
|
+
export type FileRole = "source" | "test" | "config" | "docs" | "generated" | "asset" | "build" | "other";
|
|
49
|
+
export interface FileEntry {
|
|
50
|
+
path: string;
|
|
51
|
+
size: number;
|
|
52
|
+
language: string;
|
|
53
|
+
lineCount: number;
|
|
54
|
+
hash: string;
|
|
55
|
+
role: FileRole;
|
|
56
|
+
/** Free-form semantic label: "authentication", "routing", etc. */
|
|
57
|
+
category: string;
|
|
58
|
+
/** File mtime in epoch ms — used for incremental analysis caching */
|
|
59
|
+
lastModified?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface InventorySummary {
|
|
62
|
+
totalFiles: number;
|
|
63
|
+
totalLines: number;
|
|
64
|
+
byLanguage: Record<string, number>;
|
|
65
|
+
byRole: Partial<Record<FileRole, number>>;
|
|
66
|
+
byCategory: Record<string, number>;
|
|
67
|
+
}
|
|
68
|
+
export interface Inventory {
|
|
69
|
+
files: FileEntry[];
|
|
70
|
+
summary: InventorySummary;
|
|
71
|
+
}
|
|
72
|
+
export type ImportType = "static" | "dynamic" | "require" | "reexport" | "type";
|
|
73
|
+
export interface ImportEdge {
|
|
74
|
+
from: string;
|
|
75
|
+
to: string;
|
|
76
|
+
type: ImportType;
|
|
77
|
+
symbols: string[];
|
|
78
|
+
}
|
|
79
|
+
export interface ExternalImport {
|
|
80
|
+
package: string;
|
|
81
|
+
importedBy: string[];
|
|
82
|
+
symbols: string[];
|
|
83
|
+
}
|
|
84
|
+
export interface CircularDependency {
|
|
85
|
+
cycle: string[];
|
|
86
|
+
}
|
|
87
|
+
export interface ImportsSummary {
|
|
88
|
+
totalEdges: number;
|
|
89
|
+
totalExternal: number;
|
|
90
|
+
circularCount: number;
|
|
91
|
+
circulars: CircularDependency[];
|
|
92
|
+
mostImported: Array<{
|
|
93
|
+
path: string;
|
|
94
|
+
count: number;
|
|
95
|
+
}>;
|
|
96
|
+
avgImportsPerFile: number;
|
|
97
|
+
}
|
|
98
|
+
export interface Imports {
|
|
99
|
+
edges: ImportEdge[];
|
|
100
|
+
external: ExternalImport[];
|
|
101
|
+
summary: ImportsSummary;
|
|
102
|
+
}
|
|
103
|
+
export type FindingType = "observation" | "pattern" | "relationship" | "anti-pattern" | "suggestion" | "move-file";
|
|
104
|
+
export interface Finding {
|
|
105
|
+
type: FindingType;
|
|
106
|
+
/** Which pass produced this finding */
|
|
107
|
+
pass: number;
|
|
108
|
+
/** "global" or a zone ID */
|
|
109
|
+
scope: string;
|
|
110
|
+
text: string;
|
|
111
|
+
severity?: "info" | "warning" | "critical";
|
|
112
|
+
/** Related zone IDs or file paths */
|
|
113
|
+
related?: string[];
|
|
114
|
+
}
|
|
115
|
+
export interface Zone {
|
|
116
|
+
id: string;
|
|
117
|
+
name: string;
|
|
118
|
+
description: string;
|
|
119
|
+
files: string[];
|
|
120
|
+
entryPoints: string[];
|
|
121
|
+
/** 0–1 score: how tightly related the files within this zone are */
|
|
122
|
+
cohesion: number;
|
|
123
|
+
/** 0–1 score: how much this zone depends on other zones */
|
|
124
|
+
coupling: number;
|
|
125
|
+
/** Actionable insights about this zone (structural + AI-generated) */
|
|
126
|
+
insights?: string[];
|
|
127
|
+
/** Hash of this zone's file list for incremental enrichment */
|
|
128
|
+
structureHash?: string;
|
|
129
|
+
/** Token usage from per-zone enrichment */
|
|
130
|
+
tokenUsage?: ZoneTokenUsage;
|
|
131
|
+
/** ID of the sub-analysis this zone came from (if promoted from a child). */
|
|
132
|
+
childId?: string;
|
|
133
|
+
/** Nesting depth: 0 = root analysis, 1+ = from sub-analysis. */
|
|
134
|
+
depth?: number;
|
|
135
|
+
/** Sub-zones from recursive subdivision of large zones. */
|
|
136
|
+
subZones?: Zone[];
|
|
137
|
+
/** Cross-zone import edges within this zone's sub-zones. */
|
|
138
|
+
subCrossings?: ZoneCrossing[];
|
|
139
|
+
}
|
|
140
|
+
/** Token usage tracked per zone during per-zone enrichment */
|
|
141
|
+
export interface ZoneTokenUsage {
|
|
142
|
+
calls: number;
|
|
143
|
+
input: number;
|
|
144
|
+
output: number;
|
|
145
|
+
}
|
|
146
|
+
export interface ZoneCrossing {
|
|
147
|
+
from: string;
|
|
148
|
+
to: string;
|
|
149
|
+
/** Zone ID of the source file */
|
|
150
|
+
fromZone: string;
|
|
151
|
+
/** Zone ID of the target file */
|
|
152
|
+
toZone: string;
|
|
153
|
+
}
|
|
154
|
+
export interface Zones {
|
|
155
|
+
zones: Zone[];
|
|
156
|
+
crossings: ZoneCrossing[];
|
|
157
|
+
unzoned: string[];
|
|
158
|
+
/** Cross-zone architectural insights (structural + AI-generated) */
|
|
159
|
+
insights?: string[];
|
|
160
|
+
/** Structured findings from analysis passes */
|
|
161
|
+
findings?: Finding[];
|
|
162
|
+
/** Number of AI enrichment passes completed */
|
|
163
|
+
enrichmentPass?: number;
|
|
164
|
+
/** Number of meta-evaluation passes completed (pass 5+) */
|
|
165
|
+
metaEvaluationCount?: number;
|
|
166
|
+
/** Hash of structural zone groupings for change detection */
|
|
167
|
+
structureHash?: string;
|
|
168
|
+
/** Per-zone content hashes for detecting code changes within stable zones */
|
|
169
|
+
zoneContentHashes?: Record<string, string>;
|
|
170
|
+
/** Records the last pass reset: { from: previousPass, to: currentPass } */
|
|
171
|
+
lastReset?: {
|
|
172
|
+
from: number;
|
|
173
|
+
to: number;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/** Token usage from a single Claude API call. */
|
|
177
|
+
export interface TokenUsage {
|
|
178
|
+
input: number;
|
|
179
|
+
output: number;
|
|
180
|
+
cacheCreationInput?: number;
|
|
181
|
+
cacheReadInput?: number;
|
|
182
|
+
}
|
|
183
|
+
/** Aggregated token usage across one or more LLM calls. */
|
|
184
|
+
export interface AnalyzeTokenUsage {
|
|
185
|
+
/** Number of LLM calls made. */
|
|
186
|
+
calls: number;
|
|
187
|
+
/** Total input tokens across all calls. */
|
|
188
|
+
inputTokens: number;
|
|
189
|
+
/** Total output tokens across all calls. */
|
|
190
|
+
outputTokens: number;
|
|
191
|
+
/** LLM vendor used for this run ("claude" | "codex" | "unknown"). */
|
|
192
|
+
vendor?: string;
|
|
193
|
+
/** Resolved model used for this run (including fallback defaults). */
|
|
194
|
+
model?: string;
|
|
195
|
+
/** Total cache creation input tokens (if any). */
|
|
196
|
+
cacheCreationInputTokens?: number;
|
|
197
|
+
/** Total cache read input tokens (if any). */
|
|
198
|
+
cacheReadInputTokens?: number;
|
|
199
|
+
}
|
|
200
|
+
export type ComponentKind = "function" | "arrow" | "class" | "forwardRef";
|
|
201
|
+
export interface ComponentDefinition {
|
|
202
|
+
file: string;
|
|
203
|
+
name: string;
|
|
204
|
+
kind: ComponentKind;
|
|
205
|
+
line: number;
|
|
206
|
+
isDefaultExport: boolean;
|
|
207
|
+
conventionExports: string[];
|
|
208
|
+
}
|
|
209
|
+
export interface ComponentUsageEdge {
|
|
210
|
+
from: string;
|
|
211
|
+
to: string;
|
|
212
|
+
componentName: string;
|
|
213
|
+
usageCount: number;
|
|
214
|
+
}
|
|
215
|
+
export type RouteExportKind = "loader" | "action" | "default" | "meta" | "links" | "headers" | "ErrorBoundary" | "shouldRevalidate" | "handle" | "HydrateFallback";
|
|
216
|
+
export interface RouteModule {
|
|
217
|
+
file: string;
|
|
218
|
+
routePattern: string | null;
|
|
219
|
+
exports: RouteExportKind[];
|
|
220
|
+
parentLayout: string | null;
|
|
221
|
+
isLayout: boolean;
|
|
222
|
+
isIndex: boolean;
|
|
223
|
+
}
|
|
224
|
+
export interface RouteTreeNode {
|
|
225
|
+
file: string;
|
|
226
|
+
routePattern: string;
|
|
227
|
+
children: RouteTreeNode[];
|
|
228
|
+
}
|
|
229
|
+
export interface ComponentsSummary {
|
|
230
|
+
totalComponents: number;
|
|
231
|
+
totalRouteModules: number;
|
|
232
|
+
totalUsageEdges: number;
|
|
233
|
+
routeConventions: Partial<Record<RouteExportKind, number>>;
|
|
234
|
+
mostUsedComponents: Array<{
|
|
235
|
+
name: string;
|
|
236
|
+
file: string;
|
|
237
|
+
usageCount: number;
|
|
238
|
+
}>;
|
|
239
|
+
layoutDepth: number;
|
|
240
|
+
}
|
|
241
|
+
export interface Components {
|
|
242
|
+
components: ComponentDefinition[];
|
|
243
|
+
usageEdges: ComponentUsageEdge[];
|
|
244
|
+
routeModules: RouteModule[];
|
|
245
|
+
routeTree: RouteTreeNode[];
|
|
246
|
+
summary: ComponentsSummary;
|
|
247
|
+
}
|
|
248
|
+
export type CallType = "direct" | "method" | "property-chain" | "computed";
|
|
249
|
+
/** A function or method definition that can be a caller or callee. */
|
|
250
|
+
export interface FunctionNode {
|
|
251
|
+
/** File path (relative to project root) */
|
|
252
|
+
file: string;
|
|
253
|
+
/** Function or method name */
|
|
254
|
+
name: string;
|
|
255
|
+
/** Line number of the definition */
|
|
256
|
+
line: number;
|
|
257
|
+
/** Column number of the definition */
|
|
258
|
+
column: number;
|
|
259
|
+
/** Fully qualified name including class/object context */
|
|
260
|
+
qualifiedName: string;
|
|
261
|
+
/** Whether this function is exported from its module */
|
|
262
|
+
isExported: boolean;
|
|
263
|
+
}
|
|
264
|
+
/** A call edge from one function to another. */
|
|
265
|
+
export interface CallEdge {
|
|
266
|
+
/** File containing the caller */
|
|
267
|
+
callerFile: string;
|
|
268
|
+
/** Qualified name of the calling function */
|
|
269
|
+
caller: string;
|
|
270
|
+
/** File containing the callee (null if external/unresolved) */
|
|
271
|
+
calleeFile: string | null;
|
|
272
|
+
/** Qualified name of the called function */
|
|
273
|
+
callee: string;
|
|
274
|
+
/** How the call was made */
|
|
275
|
+
type: CallType;
|
|
276
|
+
/** Line number of the call site */
|
|
277
|
+
line: number;
|
|
278
|
+
/** Column number of the call site */
|
|
279
|
+
column: number;
|
|
280
|
+
}
|
|
281
|
+
export interface CallGraphSummary {
|
|
282
|
+
totalFunctions: number;
|
|
283
|
+
totalCalls: number;
|
|
284
|
+
filesWithCalls: number;
|
|
285
|
+
mostCalled: Array<{
|
|
286
|
+
qualifiedName: string;
|
|
287
|
+
file: string;
|
|
288
|
+
callerCount: number;
|
|
289
|
+
}>;
|
|
290
|
+
mostCalling: Array<{
|
|
291
|
+
qualifiedName: string;
|
|
292
|
+
file: string;
|
|
293
|
+
calleeCount: number;
|
|
294
|
+
}>;
|
|
295
|
+
cycleCount: number;
|
|
296
|
+
}
|
|
297
|
+
export interface CallGraph {
|
|
298
|
+
functions: FunctionNode[];
|
|
299
|
+
edges: CallEdge[];
|
|
300
|
+
summary: CallGraphSummary;
|
|
301
|
+
}
|
|
302
|
+
export interface NextStep {
|
|
303
|
+
priority: "high" | "medium" | "low";
|
|
304
|
+
title: string;
|
|
305
|
+
description: string;
|
|
306
|
+
category: "refactor" | "fix" | "extract" | "test" | "docs";
|
|
307
|
+
relatedFindings: number[];
|
|
308
|
+
scope: string;
|
|
309
|
+
}
|
|
310
|
+
export interface SourcevisionOutput {
|
|
311
|
+
manifest: Manifest;
|
|
312
|
+
inventory: Inventory;
|
|
313
|
+
imports: Imports;
|
|
314
|
+
zones: Zones;
|
|
315
|
+
components?: Components;
|
|
316
|
+
callGraph?: CallGraph;
|
|
317
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v1.js","sourceRoot":"","sources":["../../src/schema/v1.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aggregation result cache with filesystem-based invalidation.
|
|
3
|
+
*
|
|
4
|
+
* Caches computed aggregation results (summary, events, by-command, etc.)
|
|
5
|
+
* and automatically invalidates when the underlying data sources change.
|
|
6
|
+
*
|
|
7
|
+
* ## Change Detection
|
|
8
|
+
*
|
|
9
|
+
* Three data sources feed the token usage aggregation:
|
|
10
|
+
* - Hench run files (`.hench/runs/*.json`) — tracked via directory mtime + file count
|
|
11
|
+
* - Rex execution log (`.rex/execution-log.jsonl`) — tracked via mtime + size
|
|
12
|
+
* - Sourcevision manifest (`.sourcevision/manifest.json`) — tracked via mtime + size
|
|
13
|
+
*
|
|
14
|
+
* On each cache access, the current filesystem state is compared against the
|
|
15
|
+
* last-known fingerprint. If any source has changed, all cached results are
|
|
16
|
+
* invalidated and the fingerprint is updated.
|
|
17
|
+
*
|
|
18
|
+
* ## Memory Bounding
|
|
19
|
+
*
|
|
20
|
+
* Cache entries are bounded by a configurable `maxEntries` limit. When full,
|
|
21
|
+
* the oldest entry (by insertion order) is evicted. This prevents unbounded
|
|
22
|
+
* growth from diverse query parameter combinations.
|
|
23
|
+
*
|
|
24
|
+
* @module web/server/aggregation-cache
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Filesystem metadata snapshot for the three token usage data sources.
|
|
28
|
+
* Used to detect when source data has changed and cached results need
|
|
29
|
+
* to be invalidated.
|
|
30
|
+
*/
|
|
31
|
+
export interface SourceFingerprint {
|
|
32
|
+
/** Hench runs directory modification time (changes on add/delete). */
|
|
33
|
+
henchDirMtimeMs: number;
|
|
34
|
+
/** Number of JSON files in the hench runs directory. */
|
|
35
|
+
henchFileCount: number;
|
|
36
|
+
/** Rex execution log modification time. */
|
|
37
|
+
rexLogMtimeMs: number;
|
|
38
|
+
/** Rex execution log size in bytes. */
|
|
39
|
+
rexLogSize: number;
|
|
40
|
+
/** Sourcevision manifest modification time. */
|
|
41
|
+
svManifestMtimeMs: number;
|
|
42
|
+
/** Sourcevision manifest size in bytes. */
|
|
43
|
+
svManifestSize: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Take a fingerprint of the current filesystem state of all aggregation
|
|
47
|
+
* data sources. Missing files/directories produce zero values rather than
|
|
48
|
+
* errors — this allows the cache to work even when some sources haven't
|
|
49
|
+
* been initialized yet.
|
|
50
|
+
*/
|
|
51
|
+
export declare function takeFingerprint(projectDir: string, rexDir: string): Promise<SourceFingerprint>;
|
|
52
|
+
/** Compare two fingerprints for equality. */
|
|
53
|
+
export declare function fingerprintsMatch(a: SourceFingerprint, b: SourceFingerprint): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Caches aggregation results with automatic filesystem-based invalidation.
|
|
56
|
+
*
|
|
57
|
+
* Usage:
|
|
58
|
+
* ```ts
|
|
59
|
+
* const cache = new AggregationResultCache(projectDir, rexDir);
|
|
60
|
+
*
|
|
61
|
+
* const events = await cache.getOrCompute(
|
|
62
|
+
* "events:::",
|
|
63
|
+
* () => collectAllEvents(ctx),
|
|
64
|
+
* );
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* Cache keys should encode all parameters that affect the result
|
|
68
|
+
* (e.g. `"summary:2026-01-01:2026-02-01"` for a date-scoped summary).
|
|
69
|
+
*/
|
|
70
|
+
export declare class AggregationResultCache {
|
|
71
|
+
private readonly projectDir;
|
|
72
|
+
private readonly rexDir;
|
|
73
|
+
private readonly maxEntries;
|
|
74
|
+
/** Last-known filesystem fingerprint. */
|
|
75
|
+
private fingerprint;
|
|
76
|
+
/** Cached results keyed by scope string. */
|
|
77
|
+
private entries;
|
|
78
|
+
constructor(projectDir: string, rexDir: string, options?: {
|
|
79
|
+
maxEntries?: number;
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Get a cached result or compute and cache it.
|
|
83
|
+
*
|
|
84
|
+
* Before returning a cached value, checks whether any source data has
|
|
85
|
+
* changed since the last fingerprint. If so, all entries are invalidated
|
|
86
|
+
* and the value is recomputed.
|
|
87
|
+
*
|
|
88
|
+
* @param key - Cache key encoding the query scope (e.g. `"summary:since:until"`)
|
|
89
|
+
* @param compute - Synchronous function that produces the result
|
|
90
|
+
*/
|
|
91
|
+
getOrCompute<T>(key: string, compute: () => T): Promise<T>;
|
|
92
|
+
/** Number of cached entries (for monitoring/testing). */
|
|
93
|
+
get size(): number;
|
|
94
|
+
/** Current fingerprint (for testing/debugging). */
|
|
95
|
+
get currentFingerprint(): SourceFingerprint | null;
|
|
96
|
+
/** Force invalidation of all cached results and fingerprint. */
|
|
97
|
+
invalidate(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Check source freshness. If stale or uninitialized, clear all entries
|
|
100
|
+
* and update the fingerprint.
|
|
101
|
+
*/
|
|
102
|
+
private ensureFresh;
|
|
103
|
+
/** Store a value, evicting the oldest entry if at capacity. */
|
|
104
|
+
private put;
|
|
105
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aggregation result cache with filesystem-based invalidation.
|
|
3
|
+
*
|
|
4
|
+
* Caches computed aggregation results (summary, events, by-command, etc.)
|
|
5
|
+
* and automatically invalidates when the underlying data sources change.
|
|
6
|
+
*
|
|
7
|
+
* ## Change Detection
|
|
8
|
+
*
|
|
9
|
+
* Three data sources feed the token usage aggregation:
|
|
10
|
+
* - Hench run files (`.hench/runs/*.json`) — tracked via directory mtime + file count
|
|
11
|
+
* - Rex execution log (`.rex/execution-log.jsonl`) — tracked via mtime + size
|
|
12
|
+
* - Sourcevision manifest (`.sourcevision/manifest.json`) — tracked via mtime + size
|
|
13
|
+
*
|
|
14
|
+
* On each cache access, the current filesystem state is compared against the
|
|
15
|
+
* last-known fingerprint. If any source has changed, all cached results are
|
|
16
|
+
* invalidated and the fingerprint is updated.
|
|
17
|
+
*
|
|
18
|
+
* ## Memory Bounding
|
|
19
|
+
*
|
|
20
|
+
* Cache entries are bounded by a configurable `maxEntries` limit. When full,
|
|
21
|
+
* the oldest entry (by insertion order) is evicted. This prevents unbounded
|
|
22
|
+
* growth from diverse query parameter combinations.
|
|
23
|
+
*
|
|
24
|
+
* @module web/server/aggregation-cache
|
|
25
|
+
*/
|
|
26
|
+
import { join } from "node:path";
|
|
27
|
+
import { stat, readdir } from "node:fs/promises";
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Fingerprinting
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* Take a fingerprint of the current filesystem state of all aggregation
|
|
33
|
+
* data sources. Missing files/directories produce zero values rather than
|
|
34
|
+
* errors — this allows the cache to work even when some sources haven't
|
|
35
|
+
* been initialized yet.
|
|
36
|
+
*/
|
|
37
|
+
export async function takeFingerprint(projectDir, rexDir) {
|
|
38
|
+
const henchRunsDir = join(projectDir, ".hench", "runs");
|
|
39
|
+
const rexLogPath = join(rexDir, "execution-log.jsonl");
|
|
40
|
+
const svManifestPath = join(projectDir, ".sourcevision", "manifest.json");
|
|
41
|
+
// Run all stat operations in parallel for performance
|
|
42
|
+
const [henchDirResult, henchFilesResult, rexLogResult, svManifestResult] = await Promise.all([
|
|
43
|
+
stat(henchRunsDir).catch(() => null),
|
|
44
|
+
readdir(henchRunsDir)
|
|
45
|
+
.then((files) => files.filter((f) => f.endsWith(".json") && !f.startsWith(".")))
|
|
46
|
+
.catch(() => []),
|
|
47
|
+
stat(rexLogPath).catch(() => null),
|
|
48
|
+
stat(svManifestPath).catch(() => null),
|
|
49
|
+
]);
|
|
50
|
+
return {
|
|
51
|
+
henchDirMtimeMs: henchDirResult?.mtimeMs ?? 0,
|
|
52
|
+
henchFileCount: henchFilesResult.length,
|
|
53
|
+
rexLogMtimeMs: rexLogResult?.mtimeMs ?? 0,
|
|
54
|
+
rexLogSize: rexLogResult?.size ?? 0,
|
|
55
|
+
svManifestMtimeMs: svManifestResult?.mtimeMs ?? 0,
|
|
56
|
+
svManifestSize: svManifestResult?.size ?? 0,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Compare two fingerprints for equality. */
|
|
60
|
+
export function fingerprintsMatch(a, b) {
|
|
61
|
+
return (a.henchDirMtimeMs === b.henchDirMtimeMs &&
|
|
62
|
+
a.henchFileCount === b.henchFileCount &&
|
|
63
|
+
a.rexLogMtimeMs === b.rexLogMtimeMs &&
|
|
64
|
+
a.rexLogSize === b.rexLogSize &&
|
|
65
|
+
a.svManifestMtimeMs === b.svManifestMtimeMs &&
|
|
66
|
+
a.svManifestSize === b.svManifestSize);
|
|
67
|
+
}
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// AggregationResultCache
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
/**
|
|
72
|
+
* Caches aggregation results with automatic filesystem-based invalidation.
|
|
73
|
+
*
|
|
74
|
+
* Usage:
|
|
75
|
+
* ```ts
|
|
76
|
+
* const cache = new AggregationResultCache(projectDir, rexDir);
|
|
77
|
+
*
|
|
78
|
+
* const events = await cache.getOrCompute(
|
|
79
|
+
* "events:::",
|
|
80
|
+
* () => collectAllEvents(ctx),
|
|
81
|
+
* );
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* Cache keys should encode all parameters that affect the result
|
|
85
|
+
* (e.g. `"summary:2026-01-01:2026-02-01"` for a date-scoped summary).
|
|
86
|
+
*/
|
|
87
|
+
export class AggregationResultCache {
|
|
88
|
+
projectDir;
|
|
89
|
+
rexDir;
|
|
90
|
+
maxEntries;
|
|
91
|
+
/** Last-known filesystem fingerprint. */
|
|
92
|
+
fingerprint = null;
|
|
93
|
+
/** Cached results keyed by scope string. */
|
|
94
|
+
entries = new Map();
|
|
95
|
+
constructor(projectDir, rexDir, options) {
|
|
96
|
+
this.projectDir = projectDir;
|
|
97
|
+
this.rexDir = rexDir;
|
|
98
|
+
this.maxEntries = options?.maxEntries ?? 64;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get a cached result or compute and cache it.
|
|
102
|
+
*
|
|
103
|
+
* Before returning a cached value, checks whether any source data has
|
|
104
|
+
* changed since the last fingerprint. If so, all entries are invalidated
|
|
105
|
+
* and the value is recomputed.
|
|
106
|
+
*
|
|
107
|
+
* @param key - Cache key encoding the query scope (e.g. `"summary:since:until"`)
|
|
108
|
+
* @param compute - Synchronous function that produces the result
|
|
109
|
+
*/
|
|
110
|
+
async getOrCompute(key, compute) {
|
|
111
|
+
await this.ensureFresh();
|
|
112
|
+
if (this.entries.has(key)) {
|
|
113
|
+
return this.entries.get(key);
|
|
114
|
+
}
|
|
115
|
+
const result = compute();
|
|
116
|
+
this.put(key, result);
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
/** Number of cached entries (for monitoring/testing). */
|
|
120
|
+
get size() {
|
|
121
|
+
return this.entries.size;
|
|
122
|
+
}
|
|
123
|
+
/** Current fingerprint (for testing/debugging). */
|
|
124
|
+
get currentFingerprint() {
|
|
125
|
+
return this.fingerprint;
|
|
126
|
+
}
|
|
127
|
+
/** Force invalidation of all cached results and fingerprint. */
|
|
128
|
+
invalidate() {
|
|
129
|
+
this.fingerprint = null;
|
|
130
|
+
this.entries.clear();
|
|
131
|
+
}
|
|
132
|
+
// ---- Internal -------------------------------------------------------------
|
|
133
|
+
/**
|
|
134
|
+
* Check source freshness. If stale or uninitialized, clear all entries
|
|
135
|
+
* and update the fingerprint.
|
|
136
|
+
*/
|
|
137
|
+
async ensureFresh() {
|
|
138
|
+
const current = await takeFingerprint(this.projectDir, this.rexDir);
|
|
139
|
+
if (this.fingerprint && fingerprintsMatch(this.fingerprint, current)) {
|
|
140
|
+
return; // Sources unchanged — cache is still valid
|
|
141
|
+
}
|
|
142
|
+
// Sources changed (or first access) — invalidate everything
|
|
143
|
+
this.entries.clear();
|
|
144
|
+
this.fingerprint = current;
|
|
145
|
+
}
|
|
146
|
+
/** Store a value, evicting the oldest entry if at capacity. */
|
|
147
|
+
put(key, value) {
|
|
148
|
+
// If key already exists, just update it (no eviction needed)
|
|
149
|
+
if (this.entries.has(key)) {
|
|
150
|
+
this.entries.set(key, value);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Evict oldest entries until under capacity
|
|
154
|
+
while (this.entries.size >= this.maxEntries) {
|
|
155
|
+
const oldest = this.entries.keys().next().value;
|
|
156
|
+
if (oldest === undefined)
|
|
157
|
+
break;
|
|
158
|
+
this.entries.delete(oldest);
|
|
159
|
+
}
|
|
160
|
+
this.entries.set(key, value);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=aggregation-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregation-cache.js","sourceRoot":"","sources":["../../src/server/aggregation-cache.ts"],"names":[],"mappings":"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"}
|