@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,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tick visibility gate — pauses elapsed time timer updates during tab inactivity.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the Page Visibility API (via tab-visibility) to the tick timer's
|
|
5
|
+
* suspend/resume lifecycle. When the browser tab is backgrounded, the tick
|
|
6
|
+
* timer's shared setInterval is cleared to conserve CPU and battery. When the
|
|
7
|
+
* tab returns to the foreground, the timer is resumed with an immediate
|
|
8
|
+
* catch-up tick so elapsed time displays jump to the correct current value.
|
|
9
|
+
*
|
|
10
|
+
* Pipeline position:
|
|
11
|
+
*
|
|
12
|
+
* tab-visibility → **tick-visibility-gate** → tick-timer → batched-tick-dispatcher → useTick → render
|
|
13
|
+
*
|
|
14
|
+
* When visible: tick timer runs normally (1s interval)
|
|
15
|
+
* When hidden: tick timer is suspended (no interval, no ticks, zero CPU)
|
|
16
|
+
* On resume: immediate catch-up tick → restart interval
|
|
17
|
+
*
|
|
18
|
+
* Lifecycle:
|
|
19
|
+
*
|
|
20
|
+
* Tab goes hidden:
|
|
21
|
+
* 1. Immediately suspend the tick timer (clearInterval).
|
|
22
|
+
* 2. No ticks fire while the tab is hidden — zero overhead.
|
|
23
|
+
*
|
|
24
|
+
* Tab becomes visible (after resume debounce):
|
|
25
|
+
* 1. Resume the tick timer — fires an immediate tick for catch-up,
|
|
26
|
+
* then restarts the 1-second interval.
|
|
27
|
+
* 2. The immediate tick causes all elapsed time displays to recompute
|
|
28
|
+
* from their absolute startedAt timestamps, jumping to the correct
|
|
29
|
+
* current value without waiting up to 1 second.
|
|
30
|
+
*
|
|
31
|
+
* The resume is debounced (100ms default) to prevent thrashing during rapid
|
|
32
|
+
* tab switching (e.g. quick alt-tab sequences). Suspension is always immediate
|
|
33
|
+
* to stop unnecessary work as fast as possible.
|
|
34
|
+
*
|
|
35
|
+
* This module complements the polling-manager (which manages its own set of
|
|
36
|
+
* registered pollers) and the DOM update gate (which gates state updates).
|
|
37
|
+
* Together they form a complete tab-inactivity optimization pipeline.
|
|
38
|
+
*
|
|
39
|
+
* Designed as a standalone module with zero framework dependencies.
|
|
40
|
+
*/
|
|
41
|
+
/** Configuration for the tick visibility gate. */
|
|
42
|
+
export interface TickVisibilityGateConfig {
|
|
43
|
+
/**
|
|
44
|
+
* Debounce delay in milliseconds before resuming the tick timer after
|
|
45
|
+
* the tab becomes visible. Prevents thrashing on rapid tab switches.
|
|
46
|
+
* Default: 100ms (matches polling-manager and DOM update gate debounce).
|
|
47
|
+
*/
|
|
48
|
+
resumeDebounceMs?: number | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Called when the tick timer is suspended (tab went hidden).
|
|
51
|
+
* Optional — useful for monitoring and debugging.
|
|
52
|
+
*/
|
|
53
|
+
onSuspend?: (() => void) | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Called when the tick timer is resumed (tab became visible, after debounce).
|
|
56
|
+
* Optional — useful for monitoring and debugging.
|
|
57
|
+
*/
|
|
58
|
+
onResume?: (() => void) | undefined;
|
|
59
|
+
}
|
|
60
|
+
/** Read-only snapshot of the gate's current state. */
|
|
61
|
+
export interface TickVisibilityGateSnapshot {
|
|
62
|
+
/** Whether the tick timer is currently running (gate is open). */
|
|
63
|
+
readonly isRunning: boolean;
|
|
64
|
+
/** Number of times the timer has been suspended. */
|
|
65
|
+
readonly suspensionCount: number;
|
|
66
|
+
/** Number of times the timer has been resumed (after debounce). */
|
|
67
|
+
readonly resumeCount: number;
|
|
68
|
+
/** Whether the gate has been disposed. */
|
|
69
|
+
readonly disposed: boolean;
|
|
70
|
+
}
|
|
71
|
+
/** A tick visibility gate instance. */
|
|
72
|
+
export interface TickVisibilityGate {
|
|
73
|
+
/** Whether the tick timer is currently running. */
|
|
74
|
+
isRunning(): boolean;
|
|
75
|
+
/** Get a snapshot of the gate's current state. */
|
|
76
|
+
getSnapshot(): TickVisibilityGateSnapshot;
|
|
77
|
+
/** Dispose: unsubscribe from visibility events, clear debounce timer. */
|
|
78
|
+
dispose(): void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a new tick visibility gate.
|
|
82
|
+
*
|
|
83
|
+
* Usage:
|
|
84
|
+
* ```ts
|
|
85
|
+
* // During app initialization (after startTabVisibilityMonitor):
|
|
86
|
+
* const gate = createTickVisibilityGate();
|
|
87
|
+
*
|
|
88
|
+
* // On app shutdown:
|
|
89
|
+
* gate.dispose();
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function createTickVisibilityGate(config?: TickVisibilityGateConfig): TickVisibilityGate;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tick visibility gate — pauses elapsed time timer updates during tab inactivity.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the Page Visibility API (via tab-visibility) to the tick timer's
|
|
5
|
+
* suspend/resume lifecycle. When the browser tab is backgrounded, the tick
|
|
6
|
+
* timer's shared setInterval is cleared to conserve CPU and battery. When the
|
|
7
|
+
* tab returns to the foreground, the timer is resumed with an immediate
|
|
8
|
+
* catch-up tick so elapsed time displays jump to the correct current value.
|
|
9
|
+
*
|
|
10
|
+
* Pipeline position:
|
|
11
|
+
*
|
|
12
|
+
* tab-visibility → **tick-visibility-gate** → tick-timer → batched-tick-dispatcher → useTick → render
|
|
13
|
+
*
|
|
14
|
+
* When visible: tick timer runs normally (1s interval)
|
|
15
|
+
* When hidden: tick timer is suspended (no interval, no ticks, zero CPU)
|
|
16
|
+
* On resume: immediate catch-up tick → restart interval
|
|
17
|
+
*
|
|
18
|
+
* Lifecycle:
|
|
19
|
+
*
|
|
20
|
+
* Tab goes hidden:
|
|
21
|
+
* 1. Immediately suspend the tick timer (clearInterval).
|
|
22
|
+
* 2. No ticks fire while the tab is hidden — zero overhead.
|
|
23
|
+
*
|
|
24
|
+
* Tab becomes visible (after resume debounce):
|
|
25
|
+
* 1. Resume the tick timer — fires an immediate tick for catch-up,
|
|
26
|
+
* then restarts the 1-second interval.
|
|
27
|
+
* 2. The immediate tick causes all elapsed time displays to recompute
|
|
28
|
+
* from their absolute startedAt timestamps, jumping to the correct
|
|
29
|
+
* current value without waiting up to 1 second.
|
|
30
|
+
*
|
|
31
|
+
* The resume is debounced (100ms default) to prevent thrashing during rapid
|
|
32
|
+
* tab switching (e.g. quick alt-tab sequences). Suspension is always immediate
|
|
33
|
+
* to stop unnecessary work as fast as possible.
|
|
34
|
+
*
|
|
35
|
+
* This module complements the polling-manager (which manages its own set of
|
|
36
|
+
* registered pollers) and the DOM update gate (which gates state updates).
|
|
37
|
+
* Together they form a complete tab-inactivity optimization pipeline.
|
|
38
|
+
*
|
|
39
|
+
* Designed as a standalone module with zero framework dependencies.
|
|
40
|
+
*/
|
|
41
|
+
import { onVisibilityChange, isTabVisible, } from "./tab-visibility.js";
|
|
42
|
+
import { suspendTickTimer, resumeTickTimer } from "./tick-timer.js";
|
|
43
|
+
// ─── Constants ───────────────────────────────────────────────────────────────
|
|
44
|
+
const DEFAULT_RESUME_DEBOUNCE_MS = 100;
|
|
45
|
+
// ─── Factory ─────────────────────────────────────────────────────────────────
|
|
46
|
+
/**
|
|
47
|
+
* Create a new tick visibility gate.
|
|
48
|
+
*
|
|
49
|
+
* Usage:
|
|
50
|
+
* ```ts
|
|
51
|
+
* // During app initialization (after startTabVisibilityMonitor):
|
|
52
|
+
* const gate = createTickVisibilityGate();
|
|
53
|
+
*
|
|
54
|
+
* // On app shutdown:
|
|
55
|
+
* gate.dispose();
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function createTickVisibilityGate(config = {}) {
|
|
59
|
+
const resumeDebounceMs = config.resumeDebounceMs ?? DEFAULT_RESUME_DEBOUNCE_MS;
|
|
60
|
+
const onSuspend = config.onSuspend;
|
|
61
|
+
const onResume = config.onResume;
|
|
62
|
+
let running = true;
|
|
63
|
+
let suspensionCount = 0;
|
|
64
|
+
let resumeCount = 0;
|
|
65
|
+
let resumeTimer = null;
|
|
66
|
+
let disposed = false;
|
|
67
|
+
// ─── Internal helpers ─────────────────────────────────────────────
|
|
68
|
+
function clearResumeTimer() {
|
|
69
|
+
if (resumeTimer !== null) {
|
|
70
|
+
clearTimeout(resumeTimer);
|
|
71
|
+
resumeTimer = null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function suspend() {
|
|
75
|
+
if (!running)
|
|
76
|
+
return;
|
|
77
|
+
running = false;
|
|
78
|
+
suspensionCount++;
|
|
79
|
+
suspendTickTimer();
|
|
80
|
+
if (onSuspend) {
|
|
81
|
+
try {
|
|
82
|
+
onSuspend();
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Swallow errors from the suspend callback.
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function resume() {
|
|
90
|
+
if (running)
|
|
91
|
+
return;
|
|
92
|
+
running = true;
|
|
93
|
+
resumeCount++;
|
|
94
|
+
resumeTickTimer();
|
|
95
|
+
if (onResume) {
|
|
96
|
+
try {
|
|
97
|
+
onResume();
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Swallow errors from the resume callback.
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function handleVisibilityChange(snapshot) {
|
|
105
|
+
if (disposed)
|
|
106
|
+
return;
|
|
107
|
+
if (snapshot.isVisible) {
|
|
108
|
+
// Tab became visible — resume with debounce to prevent thrash.
|
|
109
|
+
clearResumeTimer();
|
|
110
|
+
resumeTimer = setTimeout(() => {
|
|
111
|
+
resumeTimer = null;
|
|
112
|
+
resume();
|
|
113
|
+
}, resumeDebounceMs);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Tab became hidden — suspend immediately.
|
|
117
|
+
clearResumeTimer();
|
|
118
|
+
suspend();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Subscribe to tab visibility changes.
|
|
122
|
+
const unsubVisibility = onVisibilityChange(handleVisibilityChange);
|
|
123
|
+
// If the tab is currently hidden, suspend immediately.
|
|
124
|
+
if (!isTabVisible()) {
|
|
125
|
+
suspend();
|
|
126
|
+
}
|
|
127
|
+
// ─── Public methods ─────────────────────────────────────────────────
|
|
128
|
+
function isRunning() {
|
|
129
|
+
return running;
|
|
130
|
+
}
|
|
131
|
+
function getSnapshot() {
|
|
132
|
+
return {
|
|
133
|
+
isRunning: running,
|
|
134
|
+
suspensionCount,
|
|
135
|
+
resumeCount,
|
|
136
|
+
disposed,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function dispose() {
|
|
140
|
+
disposed = true;
|
|
141
|
+
clearResumeTimer();
|
|
142
|
+
unsubVisibility();
|
|
143
|
+
}
|
|
144
|
+
return { isRunning, getSnapshot, dispose };
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=tick-visibility-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tick-visibility-gate.js","sourceRoot":"","sources":["../../../src/viewer/polling/tick-visibility-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EACL,kBAAkB,EAClB,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAkDpE,gFAAgF;AAEhF,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAmC,EAAE;IAErC,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAyC,IAAI,CAAC;IAC7D,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,qEAAqE;IAErE,SAAS,gBAAgB;QACvB,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,SAAS,OAAO;QACd,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,OAAO,GAAG,KAAK,CAAC;QAChB,eAAe,EAAE,CAAC;QAElB,gBAAgB,EAAE,CAAC;QAEnB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,SAAS,EAAE,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,MAAM;QACb,IAAI,OAAO;YAAE,OAAO;QAEpB,OAAO,GAAG,IAAI,CAAC;QACf,WAAW,EAAE,CAAC;QAEd,eAAe,EAAE,CAAC;QAElB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,sBAAsB,CAAC,QAA+B;QAC7D,IAAI,QAAQ;YAAE,OAAO;QAErB,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,+DAA+D;YAC/D,gBAAgB,EAAE,CAAC;YACnB,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,EAAE,CAAC;YACX,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,gBAAgB,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,eAAe,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;IAEnE,uDAAuD;IACvD,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uEAAuE;IAEvE,SAAS,SAAS;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,WAAW;QAClB,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,eAAe;YACf,WAAW;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,SAAS,OAAO;QACd,QAAQ,GAAG,IAAI,CAAC;QAChB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ViewId } from "./types.js";
|
|
2
|
+
export interface ParsedRoute {
|
|
3
|
+
view: ViewId;
|
|
4
|
+
subId: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function parsePathnameRoute(pathname: string, validViews: Set<ViewId>): ParsedRoute | null;
|
|
7
|
+
export declare function parseLegacyHashRoute(hash: string, validViews: Set<ViewId>): ParsedRoute | null;
|
|
8
|
+
export declare function resolveLocationRoute(pathname: string, hash: string, validViews: Set<ViewId>): ParsedRoute | null;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const DEEP_LINK_VIEWS = new Set(["prd", "hench-runs"]);
|
|
2
|
+
function resolveLegacyViewAlias(base, sub) {
|
|
3
|
+
const normalizedBase = base.trim().toLowerCase();
|
|
4
|
+
const normalizedSub = (sub ?? "").trim().toLowerCase();
|
|
5
|
+
if ((normalizedBase === "rex-dashboard" || normalizedBase === "rex")
|
|
6
|
+
&& (normalizedSub === "token-usage" || normalizedSub === "token_usage" || normalizedSub === "llm-utilization")) {
|
|
7
|
+
return "token-usage";
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
function normalizeHashRoute(hash) {
|
|
12
|
+
const raw = hash.startsWith("#") ? hash.slice(1) : hash;
|
|
13
|
+
let decoded = raw.trim();
|
|
14
|
+
try {
|
|
15
|
+
decoded = decodeURIComponent(decoded);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Keep raw hash text when decoding fails.
|
|
19
|
+
}
|
|
20
|
+
decoded = decoded.replace(/^\/+/, "");
|
|
21
|
+
if (decoded.startsWith("sourcevision/"))
|
|
22
|
+
decoded = decoded.slice("sourcevision/".length);
|
|
23
|
+
if (decoded.startsWith("sourcevision:"))
|
|
24
|
+
decoded = decoded.slice("sourcevision:".length);
|
|
25
|
+
const queryIdx = decoded.search(/[?&]/);
|
|
26
|
+
if (queryIdx >= 0)
|
|
27
|
+
decoded = decoded.slice(0, queryIdx);
|
|
28
|
+
return decoded.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
29
|
+
}
|
|
30
|
+
function normalizeHashView(base) {
|
|
31
|
+
const normalized = base.trim().toLowerCase();
|
|
32
|
+
if (normalized === "prmarkdown" || normalized === "pr_markdown")
|
|
33
|
+
return "pr-markdown";
|
|
34
|
+
return normalized;
|
|
35
|
+
}
|
|
36
|
+
export function parsePathnameRoute(pathname, validViews) {
|
|
37
|
+
const raw = pathname.slice(1).replace(/^\/+/, "").replace(/\/+$/, "");
|
|
38
|
+
if (!raw)
|
|
39
|
+
return null;
|
|
40
|
+
const slashIdx = raw.indexOf("/");
|
|
41
|
+
const base = slashIdx > 0 ? raw.slice(0, slashIdx) : raw;
|
|
42
|
+
const sub = slashIdx > 0 ? raw.slice(slashIdx + 1) : "";
|
|
43
|
+
const legacyAlias = resolveLegacyViewAlias(base, sub || null);
|
|
44
|
+
if (legacyAlias && validViews.has(legacyAlias))
|
|
45
|
+
return { view: legacyAlias, subId: null };
|
|
46
|
+
if (validViews.has(raw))
|
|
47
|
+
return { view: raw, subId: null };
|
|
48
|
+
if (slashIdx > 0) {
|
|
49
|
+
const view = base;
|
|
50
|
+
if (validViews.has(view) && sub && DEEP_LINK_VIEWS.has(view))
|
|
51
|
+
return { view, subId: sub };
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
export function parseLegacyHashRoute(hash, validViews) {
|
|
56
|
+
if (!hash)
|
|
57
|
+
return null;
|
|
58
|
+
const normalized = normalizeHashRoute(hash);
|
|
59
|
+
if (!normalized)
|
|
60
|
+
return null;
|
|
61
|
+
const slashIdx = normalized.indexOf("/");
|
|
62
|
+
const base = slashIdx > 0 ? normalized.slice(0, slashIdx) : normalized;
|
|
63
|
+
const sub = slashIdx > 0 ? normalized.slice(slashIdx + 1) : "";
|
|
64
|
+
const legacyAlias = resolveLegacyViewAlias(base, sub || null);
|
|
65
|
+
if (legacyAlias && validViews.has(legacyAlias))
|
|
66
|
+
return { view: legacyAlias, subId: null };
|
|
67
|
+
const normalizedBase = normalizeHashView(base);
|
|
68
|
+
const normalizedPath = sub ? `/${normalizedBase}/${sub}` : `/${normalizedBase}`;
|
|
69
|
+
const parsed = parsePathnameRoute(normalizedPath, validViews);
|
|
70
|
+
if (!parsed)
|
|
71
|
+
return null;
|
|
72
|
+
return parsed;
|
|
73
|
+
}
|
|
74
|
+
export function resolveLocationRoute(pathname, hash, validViews) {
|
|
75
|
+
return parseLegacyHashRoute(hash, validViews) ?? parsePathnameRoute(pathname, validViews);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=route-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-state.js","sourceRoot":"","sources":["../../src/viewer/route-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema version migrations.
|
|
3
|
+
* Ensures older output formats can be rendered by newer viewers.
|
|
4
|
+
*/
|
|
5
|
+
import type { LoadedData } from "./types.js";
|
|
6
|
+
type ModuleKey = keyof LoadedData;
|
|
7
|
+
/**
|
|
8
|
+
* Apply any needed migrations to bring data up to the current schema version.
|
|
9
|
+
* Returns the migrated data (or the original if no migrations needed).
|
|
10
|
+
*/
|
|
11
|
+
export declare function migrateData(module: string, data: unknown): unknown;
|
|
12
|
+
/**
|
|
13
|
+
* Register a migration for a module.
|
|
14
|
+
* Used for future schema updates.
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerMigration(module: ModuleKey, from: string, to: string, migrate: (data: unknown) => unknown): void;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema version migrations.
|
|
3
|
+
* Ensures older output formats can be rendered by newer viewers.
|
|
4
|
+
*/
|
|
5
|
+
/** Current schema version. Inlined to avoid runtime import from schema/. */
|
|
6
|
+
const SCHEMA_VERSION = "1.0.0";
|
|
7
|
+
const migrations = {
|
|
8
|
+
manifest: [],
|
|
9
|
+
inventory: [],
|
|
10
|
+
imports: [],
|
|
11
|
+
zones: [],
|
|
12
|
+
components: [],
|
|
13
|
+
callGraph: [],
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Apply any needed migrations to bring data up to the current schema version.
|
|
17
|
+
* Returns the migrated data (or the original if no migrations needed).
|
|
18
|
+
*/
|
|
19
|
+
export function migrateData(module, data) {
|
|
20
|
+
if (!data || typeof data !== "object")
|
|
21
|
+
return data;
|
|
22
|
+
const record = data;
|
|
23
|
+
const dataVersion = module === "manifest"
|
|
24
|
+
? record.schemaVersion
|
|
25
|
+
: undefined;
|
|
26
|
+
// If version matches current, no migration needed
|
|
27
|
+
if (dataVersion === SCHEMA_VERSION)
|
|
28
|
+
return data;
|
|
29
|
+
const moduleMigrations = migrations[module];
|
|
30
|
+
if (!moduleMigrations?.length)
|
|
31
|
+
return data;
|
|
32
|
+
let current = data;
|
|
33
|
+
let currentVersion = dataVersion || "0.0.0";
|
|
34
|
+
for (const migration of moduleMigrations) {
|
|
35
|
+
if (currentVersion === migration.from) {
|
|
36
|
+
current = migration.migrate(current);
|
|
37
|
+
currentVersion = migration.to;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return current;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Register a migration for a module.
|
|
44
|
+
* Used for future schema updates.
|
|
45
|
+
*/
|
|
46
|
+
export function registerMigration(module, from, to, migrate) {
|
|
47
|
+
migrations[module].push({ from, to, migrate });
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=schema-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-compat.js","sourceRoot":"","sources":["../../src/viewer/schema-compat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4EAA4E;AAC5E,MAAM,cAAc,GAAG,OAAO,CAAC;AAW/B,MAAM,UAAU,GAAmC;IACjD,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;IACT,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,IAAa;IACvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,MAAM,GAAG,IAAwC,CAAC;IACxD,MAAM,WAAW,GACf,MAAM,KAAK,UAAU;QACnB,CAAC,CAAE,MAAM,CAAC,aAAoC;QAC9C,CAAC,CAAC,SAAS,CAAC;IAEhB,kDAAkD;IAClD,IAAI,WAAW,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAmB,CAAC,CAAC;IACzD,IAAI,CAAC,gBAAgB,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,IAAI,cAAc,GAAG,WAAW,IAAI,OAAO,CAAC;IAE5C,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,IAAI,cAAc,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,IAAY,EACZ,EAAU,EACV,OAAmC;IAEnC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Manifest, Inventory, Imports, Zones, Components, CallGraph, ViewId } from "./external.js";
|
|
2
|
+
export type { ViewId };
|
|
3
|
+
export interface LoadedData {
|
|
4
|
+
manifest: Manifest | null;
|
|
5
|
+
inventory: Inventory | null;
|
|
6
|
+
imports: Imports | null;
|
|
7
|
+
zones: Zones | null;
|
|
8
|
+
components: Components | null;
|
|
9
|
+
callGraph: CallGraph | null;
|
|
10
|
+
}
|
|
11
|
+
export type NavigateTo = (view: ViewId, opts?: {
|
|
12
|
+
file?: string;
|
|
13
|
+
zone?: string;
|
|
14
|
+
runId?: string;
|
|
15
|
+
taskId?: string;
|
|
16
|
+
}) => void;
|
|
17
|
+
export interface FileDetail {
|
|
18
|
+
type: "file";
|
|
19
|
+
title: string;
|
|
20
|
+
path: string;
|
|
21
|
+
language?: string;
|
|
22
|
+
size?: string;
|
|
23
|
+
lines?: number;
|
|
24
|
+
role?: string;
|
|
25
|
+
category?: string;
|
|
26
|
+
hash?: string;
|
|
27
|
+
zone?: string;
|
|
28
|
+
incomingImports?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ZoneDetail {
|
|
31
|
+
type: "zone";
|
|
32
|
+
title: string;
|
|
33
|
+
id: string;
|
|
34
|
+
zoneId?: string;
|
|
35
|
+
description: string;
|
|
36
|
+
files: number;
|
|
37
|
+
entryPoints: string[];
|
|
38
|
+
cohesion: string;
|
|
39
|
+
coupling: string;
|
|
40
|
+
}
|
|
41
|
+
export interface GenericDetail {
|
|
42
|
+
type: "generic";
|
|
43
|
+
title: string;
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
export interface PRDDetail {
|
|
47
|
+
type: "prd";
|
|
48
|
+
title: string;
|
|
49
|
+
id: string;
|
|
50
|
+
level: string;
|
|
51
|
+
status: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
acceptanceCriteria?: string[];
|
|
54
|
+
priority?: string;
|
|
55
|
+
tags?: string[];
|
|
56
|
+
blockedBy?: string[];
|
|
57
|
+
startedAt?: string;
|
|
58
|
+
completedAt?: string;
|
|
59
|
+
children?: Array<{
|
|
60
|
+
id: string;
|
|
61
|
+
title: string;
|
|
62
|
+
status: string;
|
|
63
|
+
level: string;
|
|
64
|
+
}>;
|
|
65
|
+
}
|
|
66
|
+
export type DetailItem = FileDetail | ZoneDetail | GenericDetail | PRDDetail;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/viewer/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants for token usage functionality.
|
|
3
|
+
*
|
|
4
|
+
* Centralises polling key, interval, and view identifier so that the
|
|
5
|
+
* token-usage view, polling integration tests, and navigation tests
|
|
6
|
+
* all reference the same source of truth.
|
|
7
|
+
*/
|
|
8
|
+
import type { ViewId } from "../types.js";
|
|
9
|
+
/** Polling-manager registration key for the token usage poller. */
|
|
10
|
+
export declare const TOKEN_USAGE_POLL_KEY = "token-usage";
|
|
11
|
+
/** Polling interval for automatic usage data refresh (ms). */
|
|
12
|
+
export declare const USAGE_POLL_INTERVAL_MS = 10000;
|
|
13
|
+
/** View ID used in routing and sidebar navigation. */
|
|
14
|
+
export declare const TOKEN_USAGE_VIEW_ID: ViewId;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants for token usage functionality.
|
|
3
|
+
*
|
|
4
|
+
* Centralises polling key, interval, and view identifier so that the
|
|
5
|
+
* token-usage view, polling integration tests, and navigation tests
|
|
6
|
+
* all reference the same source of truth.
|
|
7
|
+
*/
|
|
8
|
+
/** Polling-manager registration key for the token usage poller. */
|
|
9
|
+
export const TOKEN_USAGE_POLL_KEY = "token-usage";
|
|
10
|
+
/** Polling interval for automatic usage data refresh (ms). */
|
|
11
|
+
export const USAGE_POLL_INTERVAL_MS = 10_000;
|
|
12
|
+
/** View ID used in routing and sidebar navigation. */
|
|
13
|
+
export const TOKEN_USAGE_VIEW_ID = "token-usage";
|
|
14
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/viewer/usage/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAElD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C,sDAAsD;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAW,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token usage module barrel.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports shared constants used across the token-usage view,
|
|
5
|
+
* polling integration, and navigation tests.
|
|
6
|
+
*/
|
|
7
|
+
export { TOKEN_USAGE_POLL_KEY, USAGE_POLL_INTERVAL_MS, TOKEN_USAGE_VIEW_ID, } from "./constants.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/viewer/usage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared viewer utilities — path display helpers.
|
|
3
|
+
*
|
|
4
|
+
* Color, metric, and flow-diagram utilities have been extracted to the
|
|
5
|
+
* `visualization/` layer (colors.ts, metrics.ts, flow.ts) to reduce this
|
|
6
|
+
* module's hub status and consolidate visualization concerns.
|
|
7
|
+
*
|
|
8
|
+
* Re-exports are provided below for backward compatibility so existing
|
|
9
|
+
* consumers don't break. New code should import from `visualization/`
|
|
10
|
+
* directly.
|
|
11
|
+
*/
|
|
12
|
+
/** Extract the filename from a path (last segment after '/'). */
|
|
13
|
+
export declare function basename(path: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Truncate a filename for graph labels, preserving extension and meaningful prefix.
|
|
16
|
+
* Returns a shortened name with ellipsis when the name exceeds maxLen characters.
|
|
17
|
+
*
|
|
18
|
+
* Examples:
|
|
19
|
+
* truncateFilename("very-long-component-name.tsx", 16) → "very-long…e.tsx"
|
|
20
|
+
* truncateFilename("short.ts", 16) → "short.ts"
|
|
21
|
+
*/
|
|
22
|
+
export declare function truncateFilename(name: string, maxLen?: number): string;
|
|
23
|
+
export { getZoneColorByIndex, getZoneColor, buildZoneColorMap, } from "./visualization/colors.js";
|
|
24
|
+
export { meterClass } from "./visualization/metrics.js";
|
|
25
|
+
export { buildFileToZoneMap, buildFlowEdges, buildCallFlowEdges, buildExternalImportEdges, buildFlowNodes, } from "./visualization/flow.js";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared viewer utilities — path display helpers.
|
|
3
|
+
*
|
|
4
|
+
* Color, metric, and flow-diagram utilities have been extracted to the
|
|
5
|
+
* `visualization/` layer (colors.ts, metrics.ts, flow.ts) to reduce this
|
|
6
|
+
* module's hub status and consolidate visualization concerns.
|
|
7
|
+
*
|
|
8
|
+
* Re-exports are provided below for backward compatibility so existing
|
|
9
|
+
* consumers don't break. New code should import from `visualization/`
|
|
10
|
+
* directly.
|
|
11
|
+
*/
|
|
12
|
+
// ── Path display helpers (owned here) ───────────────────────────────
|
|
13
|
+
/** Extract the filename from a path (last segment after '/'). */
|
|
14
|
+
export function basename(path) {
|
|
15
|
+
return path.split("/").pop() || path;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Truncate a filename for graph labels, preserving extension and meaningful prefix.
|
|
19
|
+
* Returns a shortened name with ellipsis when the name exceeds maxLen characters.
|
|
20
|
+
*
|
|
21
|
+
* Examples:
|
|
22
|
+
* truncateFilename("very-long-component-name.tsx", 16) → "very-long…e.tsx"
|
|
23
|
+
* truncateFilename("short.ts", 16) → "short.ts"
|
|
24
|
+
*/
|
|
25
|
+
export function truncateFilename(name, maxLen = 18) {
|
|
26
|
+
if (name.length <= maxLen)
|
|
27
|
+
return name;
|
|
28
|
+
const dotIdx = name.lastIndexOf(".");
|
|
29
|
+
if (dotIdx <= 0) {
|
|
30
|
+
// No extension — simple truncation
|
|
31
|
+
return name.slice(0, maxLen - 1) + "…";
|
|
32
|
+
}
|
|
33
|
+
const ext = name.slice(dotIdx); // e.g. ".tsx"
|
|
34
|
+
// Keep at least 4 chars of the stem visible + ellipsis + extension
|
|
35
|
+
const stemBudget = maxLen - ext.length - 1; // -1 for the "…"
|
|
36
|
+
if (stemBudget < 4) {
|
|
37
|
+
// Extension too long relative to budget — just truncate the whole thing
|
|
38
|
+
return name.slice(0, maxLen - 1) + "…";
|
|
39
|
+
}
|
|
40
|
+
const stem = name.slice(0, dotIdx);
|
|
41
|
+
return stem.slice(0, stemBudget) + "…" + ext;
|
|
42
|
+
}
|
|
43
|
+
// ── Backward-compatible re-exports from visualization layer ─────────
|
|
44
|
+
// New code should import from `visualization/` directly.
|
|
45
|
+
export { getZoneColorByIndex, getZoneColor, buildZoneColorMap, } from "./visualization/colors.js";
|
|
46
|
+
export { meterClass } from "./visualization/metrics.js";
|
|
47
|
+
export { buildFileToZoneMap, buildFlowEdges, buildCallFlowEdges, buildExternalImportEdges, buildFlowNodes, } from "./visualization/flow.js";
|
|
48
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/viewer/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uEAAuE;AAEvE,iEAAiE;AACjE,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAiB,EAAE;IAChE,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,mCAAmC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;IAC9C,mEAAmE;IACnE,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB;IAC7D,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,wEAAwE;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/C,CAAC;AAED,uEAAuE;AACvE,yDAAyD;AACzD,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,GACf,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side data validation for the sourcevision viewer.
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas that validate JSON fetched from the server or dropped
|
|
5
|
+
* as files. Lives in the viewer layer because the viewer is the sole
|
|
6
|
+
* consumer — the server layer does its own domain-specific validation
|
|
7
|
+
* independently.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { V1 } from "./external.js";
|
|
11
|
+
export type ValidationResult<T> = {
|
|
12
|
+
ok: true;
|
|
13
|
+
data: T;
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
errors: z.ZodError;
|
|
17
|
+
};
|
|
18
|
+
export declare function validateManifest(data: unknown): ValidationResult<V1.Manifest>;
|
|
19
|
+
export declare function validateInventory(data: unknown): ValidationResult<V1.Inventory>;
|
|
20
|
+
export declare function validateImports(data: unknown): ValidationResult<V1.Imports>;
|
|
21
|
+
export declare function validateZones(data: unknown): ValidationResult<V1.Zones>;
|
|
22
|
+
export declare function validateComponents(data: unknown): ValidationResult<V1.Components>;
|
|
23
|
+
export declare function validateCallGraph(data: unknown): ValidationResult<V1.CallGraph>;
|