@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,429 @@
|
|
|
1
|
+
export const GIT_CREDENTIAL_HELPER_COMMAND = "sourcevision git-credential-helper";
|
|
2
|
+
const FALLBACK_TRIGGER_CODES = new Set([
|
|
3
|
+
"missing_git",
|
|
4
|
+
"not_repo",
|
|
5
|
+
"unresolved_main_or_origin_main",
|
|
6
|
+
"auth_fetch_denied",
|
|
7
|
+
"network_dns_error",
|
|
8
|
+
"fetch_failed",
|
|
9
|
+
"rev_parse_failed",
|
|
10
|
+
"diff_failed",
|
|
11
|
+
]);
|
|
12
|
+
const REMEDIATION_HINTS = {
|
|
13
|
+
missing_git: [
|
|
14
|
+
"Install Git and ensure `git` is available on PATH, then retry refresh.",
|
|
15
|
+
],
|
|
16
|
+
not_repo: [
|
|
17
|
+
"Run refresh from a cloned Git repository (a directory containing `.git`).",
|
|
18
|
+
],
|
|
19
|
+
unresolved_main_or_origin_main: [
|
|
20
|
+
"Check that `main` or `origin/main` exists (`git rev-parse --verify main` and `git rev-parse --verify origin/main`), then fetch or create one before retrying.",
|
|
21
|
+
],
|
|
22
|
+
auth_fetch_denied: [
|
|
23
|
+
`Run \`${GIT_CREDENTIAL_HELPER_COMMAND}\` to set up git credentials, then retry refresh.`,
|
|
24
|
+
],
|
|
25
|
+
network_dns_error: [
|
|
26
|
+
"Remote host could not be reached. Verify DNS/network/VPN/proxy connectivity to your git remote and retry refresh.",
|
|
27
|
+
],
|
|
28
|
+
fetch_failed: [
|
|
29
|
+
"Run `git fetch origin main` manually and verify remote connectivity.",
|
|
30
|
+
],
|
|
31
|
+
rev_parse_failed: [
|
|
32
|
+
"Verify the base ref resolves (`git rev-parse --verify main` or `git rev-parse --verify origin/main`) and retry refresh.",
|
|
33
|
+
],
|
|
34
|
+
diff_failed: [
|
|
35
|
+
"Run `git diff main...HEAD --name-status` (or `origin/main...HEAD`) to reproduce and fix the diff error, then retry refresh.",
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
const FETCH_ERROR_TOKENS = [
|
|
39
|
+
"fetch_denied",
|
|
40
|
+
"authentication failed",
|
|
41
|
+
"authorization failed",
|
|
42
|
+
"access denied",
|
|
43
|
+
"could not read username",
|
|
44
|
+
"terminal prompts disabled",
|
|
45
|
+
"http basic: access denied",
|
|
46
|
+
"the requested url returned error: 401",
|
|
47
|
+
"the requested url returned error: 403",
|
|
48
|
+
];
|
|
49
|
+
const NETWORK_ERROR_TOKENS = [
|
|
50
|
+
"network_dns_error",
|
|
51
|
+
"could not resolve host",
|
|
52
|
+
"name or service not known",
|
|
53
|
+
"temporary failure in name resolution",
|
|
54
|
+
"failed to connect to",
|
|
55
|
+
"connection timed out",
|
|
56
|
+
"network is unreachable",
|
|
57
|
+
"no route to host",
|
|
58
|
+
"connection refused",
|
|
59
|
+
];
|
|
60
|
+
const LOCAL_HISTORY_ERROR_TOKENS = [
|
|
61
|
+
"bad revision",
|
|
62
|
+
"unknown revision or path not in the working tree",
|
|
63
|
+
"invalid symmetric difference expression",
|
|
64
|
+
"fatal: ambiguous argument",
|
|
65
|
+
"no merge base",
|
|
66
|
+
"not something we can merge",
|
|
67
|
+
];
|
|
68
|
+
const SHALLOW_CLONE_ERROR_TOKENS = [
|
|
69
|
+
"shallow clone",
|
|
70
|
+
"shallow repository",
|
|
71
|
+
"is shallow",
|
|
72
|
+
"--unshallow",
|
|
73
|
+
"git fetch --depth",
|
|
74
|
+
"shallow update not allowed",
|
|
75
|
+
];
|
|
76
|
+
const PREFLIGHT_ERROR_CATALOG = {
|
|
77
|
+
NOT_A_REPO: {
|
|
78
|
+
summary: "The refresh command is running outside a Git repository.",
|
|
79
|
+
remediationCommands: [
|
|
80
|
+
"git rev-parse --is-inside-work-tree",
|
|
81
|
+
"cd <repository-root>",
|
|
82
|
+
"sourcevision pr-markdown <project-dir>",
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
MISSING_BASE_REF: {
|
|
86
|
+
summary: "Neither `main` nor `origin/main` could be resolved for diff preflight.",
|
|
87
|
+
remediationCommands: [
|
|
88
|
+
"git rev-parse --verify main",
|
|
89
|
+
"git rev-parse --verify origin/main",
|
|
90
|
+
"git fetch origin main",
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
FETCH_DENIED: {
|
|
94
|
+
summary: "Remote fetch was denied due to missing/invalid credentials.",
|
|
95
|
+
remediationCommands: [
|
|
96
|
+
GIT_CREDENTIAL_HELPER_COMMAND,
|
|
97
|
+
"git fetch origin main",
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
NETWORK_DNS_ERROR: {
|
|
101
|
+
summary: "Remote host could not be resolved or reached over the network.",
|
|
102
|
+
remediationCommands: [
|
|
103
|
+
"git remote -v",
|
|
104
|
+
"git fetch origin main",
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
DETACHED_HEAD: {
|
|
108
|
+
summary: "HEAD is detached, so PR diff preflight cannot infer branch context.",
|
|
109
|
+
remediationCommands: [
|
|
110
|
+
"git status --short --branch",
|
|
111
|
+
"git switch -c <branch-name>",
|
|
112
|
+
"git rev-parse --abbrev-ref HEAD",
|
|
113
|
+
],
|
|
114
|
+
},
|
|
115
|
+
SHALLOW_CLONE: {
|
|
116
|
+
summary: "Repository history is shallow and does not contain enough commits for base diffing.",
|
|
117
|
+
remediationCommands: [
|
|
118
|
+
"git rev-parse --is-shallow-repository",
|
|
119
|
+
"git fetch --unshallow",
|
|
120
|
+
"git fetch origin main --depth=200",
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
function getErrorText(input) {
|
|
125
|
+
if (typeof input === "string")
|
|
126
|
+
return input;
|
|
127
|
+
if (!(input instanceof Error))
|
|
128
|
+
return "";
|
|
129
|
+
const err = input;
|
|
130
|
+
const stderrRaw = typeof err.stderr === "string" ? err.stderr : err.stderr?.toString("utf-8") ?? "";
|
|
131
|
+
return `${stderrRaw}\n${err.message ?? ""}`.trim();
|
|
132
|
+
}
|
|
133
|
+
function normalizeText(input) {
|
|
134
|
+
return getErrorText(input).toLowerCase();
|
|
135
|
+
}
|
|
136
|
+
export function classifyPRMarkdownRefreshFailureCode(input) {
|
|
137
|
+
const normalized = normalizeText(input);
|
|
138
|
+
if (!normalized)
|
|
139
|
+
return null;
|
|
140
|
+
if (normalized.includes("git is not available on path")
|
|
141
|
+
|| (normalized.includes("git") && normalized.includes("enoent"))
|
|
142
|
+
|| normalized.includes("spawn git enoent")) {
|
|
143
|
+
return "missing_git";
|
|
144
|
+
}
|
|
145
|
+
if (normalized.includes("not a git repository")
|
|
146
|
+
|| normalized.includes("outside repository")) {
|
|
147
|
+
return "not_repo";
|
|
148
|
+
}
|
|
149
|
+
if (normalized.includes("could not resolve a base branch")
|
|
150
|
+
|| normalized.includes("unresolved")
|
|
151
|
+
&& normalized.includes("origin/main")) {
|
|
152
|
+
return "unresolved_main_or_origin_main";
|
|
153
|
+
}
|
|
154
|
+
if (FETCH_ERROR_TOKENS.some((token) => normalized.includes(token))) {
|
|
155
|
+
return "auth_fetch_denied";
|
|
156
|
+
}
|
|
157
|
+
if (NETWORK_ERROR_TOKENS.some((token) => normalized.includes(token))) {
|
|
158
|
+
return "network_dns_error";
|
|
159
|
+
}
|
|
160
|
+
if (normalized.includes("failed to fetch")
|
|
161
|
+
|| normalized.includes("fetch failed")
|
|
162
|
+
|| normalized.includes("couldn't find remote ref")
|
|
163
|
+
|| normalized.includes("remote ref does not exist")
|
|
164
|
+
|| (normalized.includes("git fetch") && normalized.includes("failed"))) {
|
|
165
|
+
return "fetch_failed";
|
|
166
|
+
}
|
|
167
|
+
if (normalized.includes("detached_head")
|
|
168
|
+
|| normalized.includes("head is detached")) {
|
|
169
|
+
return "rev_parse_failed";
|
|
170
|
+
}
|
|
171
|
+
if (normalized.includes("rev-parse")
|
|
172
|
+
|| normalized.includes("rev parse")) {
|
|
173
|
+
return "rev_parse_failed";
|
|
174
|
+
}
|
|
175
|
+
if (LOCAL_HISTORY_ERROR_TOKENS.some((token) => normalized.includes(token))
|
|
176
|
+
|| normalized.includes("fatal: bad object")) {
|
|
177
|
+
return "diff_failed";
|
|
178
|
+
}
|
|
179
|
+
if (normalized.includes("failed to compute git diff")
|
|
180
|
+
|| normalized.includes("failed to inspect semantic diff details")
|
|
181
|
+
|| normalized.includes("diff failed")
|
|
182
|
+
|| (normalized.includes("git diff") && normalized.includes("failed"))) {
|
|
183
|
+
return "diff_failed";
|
|
184
|
+
}
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
export function classifyPRMarkdownRefreshPreflightCode(input, diagnosticCode) {
|
|
188
|
+
const normalized = normalizeText(input);
|
|
189
|
+
if (!normalized)
|
|
190
|
+
return null;
|
|
191
|
+
if (SHALLOW_CLONE_ERROR_TOKENS.some((token) => normalized.includes(token))) {
|
|
192
|
+
return "SHALLOW_CLONE";
|
|
193
|
+
}
|
|
194
|
+
if (normalized.includes("detached_head") || normalized.includes("head is detached")) {
|
|
195
|
+
return "DETACHED_HEAD";
|
|
196
|
+
}
|
|
197
|
+
if (normalized.includes("not a git repository")
|
|
198
|
+
|| normalized.includes("outside repository")
|
|
199
|
+
|| diagnosticCode === "not_repo") {
|
|
200
|
+
return "NOT_A_REPO";
|
|
201
|
+
}
|
|
202
|
+
if (normalized.includes("could not resolve a base branch")
|
|
203
|
+
|| (normalized.includes("unresolved") && normalized.includes("origin/main"))
|
|
204
|
+
|| diagnosticCode === "unresolved_main_or_origin_main") {
|
|
205
|
+
return "MISSING_BASE_REF";
|
|
206
|
+
}
|
|
207
|
+
if (FETCH_ERROR_TOKENS.some((token) => normalized.includes(token)) || diagnosticCode === "auth_fetch_denied") {
|
|
208
|
+
return "FETCH_DENIED";
|
|
209
|
+
}
|
|
210
|
+
if (NETWORK_ERROR_TOKENS.some((token) => normalized.includes(token)) || diagnosticCode === "network_dns_error") {
|
|
211
|
+
return "NETWORK_DNS_ERROR";
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
export function resolvePRMarkdownRefreshPreflightErrorContract(input, diagnosticCode) {
|
|
216
|
+
const code = classifyPRMarkdownRefreshPreflightCode(input, diagnosticCode);
|
|
217
|
+
if (!code)
|
|
218
|
+
return null;
|
|
219
|
+
const spec = PREFLIGHT_ERROR_CATALOG[code];
|
|
220
|
+
return {
|
|
221
|
+
code,
|
|
222
|
+
summary: spec.summary,
|
|
223
|
+
remediationCommands: [...spec.remediationCommands],
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
export function validatePRMarkdownRefreshPreflightErrorContract(input) {
|
|
227
|
+
if (!input || typeof input !== "object")
|
|
228
|
+
return false;
|
|
229
|
+
const candidate = input;
|
|
230
|
+
if (typeof candidate.code !== "string")
|
|
231
|
+
return false;
|
|
232
|
+
if (!(candidate.code in PREFLIGHT_ERROR_CATALOG))
|
|
233
|
+
return false;
|
|
234
|
+
if (typeof candidate.summary !== "string" || candidate.summary.trim().length === 0)
|
|
235
|
+
return false;
|
|
236
|
+
if (!Array.isArray(candidate.remediationCommands) || candidate.remediationCommands.length === 0)
|
|
237
|
+
return false;
|
|
238
|
+
return candidate.remediationCommands.every((command) => typeof command === "string" && command.trim().length > 0);
|
|
239
|
+
}
|
|
240
|
+
export function shouldUsePRMarkdownFallbackForCode(code) {
|
|
241
|
+
return FALLBACK_TRIGGER_CODES.has(code);
|
|
242
|
+
}
|
|
243
|
+
export function shouldUsePRMarkdownFallback(input) {
|
|
244
|
+
const code = classifyPRMarkdownRefreshFailureCode(input);
|
|
245
|
+
return code ? shouldUsePRMarkdownFallbackForCode(code) : false;
|
|
246
|
+
}
|
|
247
|
+
export function getPRMarkdownRefreshRemediationHints(code) {
|
|
248
|
+
return REMEDIATION_HINTS[code];
|
|
249
|
+
}
|
|
250
|
+
export function resolvePRMarkdownRefreshGuidance(code) {
|
|
251
|
+
if (code === "auth_fetch_denied" || code === "network_dns_error" || code === "fetch_failed") {
|
|
252
|
+
return {
|
|
253
|
+
category: "fetch_retry",
|
|
254
|
+
summary: "Remote fetch failed. Resolve connectivity/credentials, then retry refresh.",
|
|
255
|
+
commands: [
|
|
256
|
+
"git fetch origin main",
|
|
257
|
+
"sourcevision pr-markdown <project-dir>",
|
|
258
|
+
],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (code === "rev_parse_failed" || code === "unresolved_main_or_origin_main" || code === "diff_failed") {
|
|
262
|
+
return {
|
|
263
|
+
category: "local_history_remediation",
|
|
264
|
+
summary: "Local branch/history state is incomplete for semantic diff generation.",
|
|
265
|
+
commands: [
|
|
266
|
+
"git rev-parse --verify main",
|
|
267
|
+
"git rev-parse --verify origin/main",
|
|
268
|
+
"git diff main...HEAD --name-status",
|
|
269
|
+
],
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
category: "environment_fix",
|
|
274
|
+
summary: "Environment preflight failed before refresh could run.",
|
|
275
|
+
commands: [
|
|
276
|
+
"git --version",
|
|
277
|
+
"sourcevision pr-markdown <project-dir>",
|
|
278
|
+
],
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
function compactWhitespace(value) {
|
|
282
|
+
return value.replace(/\s+/g, " ").trim();
|
|
283
|
+
}
|
|
284
|
+
function stderrExcerpt(details, maxLength = 240) {
|
|
285
|
+
const compact = compactWhitespace(details);
|
|
286
|
+
if (compact.length <= maxLength)
|
|
287
|
+
return compact;
|
|
288
|
+
return `${compact.slice(0, maxLength - 3)}...`;
|
|
289
|
+
}
|
|
290
|
+
function redactSensitiveValues(input) {
|
|
291
|
+
return input
|
|
292
|
+
.replace(/(https?:\/\/[^/\s:@]+):[^@\s/]+@/gi, "$1:***@")
|
|
293
|
+
.replace(/(authorization:\s*(?:basic|bearer)\s+)[^\s]+/gi, "$1***")
|
|
294
|
+
.replace(/\b(token|password|secret|api[_-]?key)\s*[:=]\s*[^\s]+/gi, "$1=***")
|
|
295
|
+
.replace(/\b(gh[pousr]_[A-Za-z0-9_]{8,})\b/g, "***");
|
|
296
|
+
}
|
|
297
|
+
function sanitizeCommandStderr(raw) {
|
|
298
|
+
if (!raw)
|
|
299
|
+
return undefined;
|
|
300
|
+
const trimmed = raw.trim();
|
|
301
|
+
if (trimmed.length === 0)
|
|
302
|
+
return undefined;
|
|
303
|
+
const redacted = redactSensitiveValues(trimmed);
|
|
304
|
+
return redacted.length > 4000 ? `${redacted.slice(0, 3997)}...` : redacted;
|
|
305
|
+
}
|
|
306
|
+
function parseComparisonRange(details) {
|
|
307
|
+
const singleQuoteMatch = /for '([^']+\.\.\.[^']+)'/i.exec(details);
|
|
308
|
+
if (singleQuoteMatch?.[1])
|
|
309
|
+
return singleQuoteMatch[1];
|
|
310
|
+
const backtickMatch = /for `([^`]+\.\.\.[^`]+)`/i.exec(details);
|
|
311
|
+
if (backtickMatch?.[1])
|
|
312
|
+
return backtickMatch[1];
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
function inferDiffSubcommand(details, semanticDiffInspection) {
|
|
316
|
+
const range = parseComparisonRange(details) ?? "main...HEAD";
|
|
317
|
+
const mode = semanticDiffInspection ? "--numstat" : "--name-status";
|
|
318
|
+
return `git --no-pager diff --no-ext-diff --no-textconv ${mode} ${range}`;
|
|
319
|
+
}
|
|
320
|
+
export function buildPRMarkdownRefreshFailure(code, details, options) {
|
|
321
|
+
const guidance = resolvePRMarkdownRefreshGuidance(code);
|
|
322
|
+
const preflight = resolvePRMarkdownRefreshPreflightErrorContract(details, code);
|
|
323
|
+
const commandStderr = sanitizeCommandStderr(options.commandExecution?.stderr ?? details);
|
|
324
|
+
const commandExitCode = options.commandExecution?.exitCode;
|
|
325
|
+
if (code === "diff_failed") {
|
|
326
|
+
const semanticDiffFailed = options.semanticDiffInspection;
|
|
327
|
+
const nameStatusDiffStatus = semanticDiffFailed
|
|
328
|
+
? options.nameStatusDiffSucceeded ? "succeeded" : "failed"
|
|
329
|
+
: "failed";
|
|
330
|
+
const semanticDiffStatus = semanticDiffFailed ? "failed" : "not_run";
|
|
331
|
+
const stage = semanticDiffFailed && nameStatusDiffStatus === "succeeded"
|
|
332
|
+
? "mixed"
|
|
333
|
+
: semanticDiffFailed
|
|
334
|
+
? "semantic-diff"
|
|
335
|
+
: "diff";
|
|
336
|
+
return {
|
|
337
|
+
type: "pr_markdown_refresh_failure",
|
|
338
|
+
code,
|
|
339
|
+
stage,
|
|
340
|
+
stageStatuses: {
|
|
341
|
+
nameStatusDiff: nameStatusDiffStatus,
|
|
342
|
+
semanticDiff: semanticDiffStatus,
|
|
343
|
+
},
|
|
344
|
+
summary: guidance.summary,
|
|
345
|
+
remediationCommands: guidance.commands,
|
|
346
|
+
guidanceCategory: guidance.category,
|
|
347
|
+
commandSuggestions: guidance.commands,
|
|
348
|
+
command: {
|
|
349
|
+
gitSubcommand: "diff",
|
|
350
|
+
subcommand: inferDiffSubcommand(details, semanticDiffFailed),
|
|
351
|
+
stageId: semanticDiffFailed ? "semantic_diff_numstat" : "name_status_diff",
|
|
352
|
+
...(commandStderr ? { stderr: commandStderr } : {}),
|
|
353
|
+
...(commandExitCode !== undefined ? { exitCode: commandExitCode } : {}),
|
|
354
|
+
stderrExcerpt: stderrExcerpt(commandStderr ?? details),
|
|
355
|
+
reproduce: [
|
|
356
|
+
"git diff main...HEAD --name-status",
|
|
357
|
+
"git diff origin/main...HEAD --name-status",
|
|
358
|
+
"sourcevision pr-markdown <project-dir>",
|
|
359
|
+
],
|
|
360
|
+
},
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
if (code === "fetch_failed" || code === "auth_fetch_denied" || code === "network_dns_error") {
|
|
364
|
+
return {
|
|
365
|
+
type: "pr_markdown_refresh_failure",
|
|
366
|
+
code,
|
|
367
|
+
stage: "fetch",
|
|
368
|
+
summary: guidance.summary,
|
|
369
|
+
remediationCommands: guidance.commands,
|
|
370
|
+
guidanceCategory: guidance.category,
|
|
371
|
+
commandSuggestions: guidance.commands,
|
|
372
|
+
command: {
|
|
373
|
+
gitSubcommand: "fetch",
|
|
374
|
+
stageId: "fetch",
|
|
375
|
+
...(commandStderr ? { stderr: commandStderr } : {}),
|
|
376
|
+
...(commandExitCode !== undefined ? { exitCode: commandExitCode } : {}),
|
|
377
|
+
stderrExcerpt: stderrExcerpt(commandStderr ?? details),
|
|
378
|
+
reproduce: [
|
|
379
|
+
"git fetch origin main",
|
|
380
|
+
"sourcevision pr-markdown <project-dir>",
|
|
381
|
+
],
|
|
382
|
+
},
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
if (code === "rev_parse_failed" || code === "unresolved_main_or_origin_main") {
|
|
386
|
+
return {
|
|
387
|
+
type: "pr_markdown_refresh_failure",
|
|
388
|
+
code,
|
|
389
|
+
stage: "rev-parse",
|
|
390
|
+
summary: guidance.summary,
|
|
391
|
+
remediationCommands: guidance.commands,
|
|
392
|
+
guidanceCategory: guidance.category,
|
|
393
|
+
commandSuggestions: guidance.commands,
|
|
394
|
+
command: {
|
|
395
|
+
gitSubcommand: "rev-parse",
|
|
396
|
+
stageId: "rev_parse",
|
|
397
|
+
...(commandStderr ? { stderr: commandStderr } : {}),
|
|
398
|
+
...(commandExitCode !== undefined ? { exitCode: commandExitCode } : {}),
|
|
399
|
+
stderrExcerpt: stderrExcerpt(commandStderr ?? details),
|
|
400
|
+
reproduce: [
|
|
401
|
+
"git rev-parse --verify main",
|
|
402
|
+
"git rev-parse --verify origin/main",
|
|
403
|
+
"sourcevision pr-markdown <project-dir>",
|
|
404
|
+
],
|
|
405
|
+
},
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
return {
|
|
409
|
+
type: "pr_markdown_refresh_failure",
|
|
410
|
+
code: preflight?.code ?? code,
|
|
411
|
+
stage: "preflight",
|
|
412
|
+
summary: preflight?.summary ?? guidance.summary,
|
|
413
|
+
remediationCommands: preflight?.remediationCommands ?? guidance.commands,
|
|
414
|
+
guidanceCategory: guidance.category,
|
|
415
|
+
commandSuggestions: guidance.commands,
|
|
416
|
+
command: {
|
|
417
|
+
gitSubcommand: "version",
|
|
418
|
+
stageId: "preflight",
|
|
419
|
+
...(commandStderr ? { stderr: commandStderr } : {}),
|
|
420
|
+
...(commandExitCode !== undefined ? { exitCode: commandExitCode } : {}),
|
|
421
|
+
stderrExcerpt: stderrExcerpt(commandStderr ?? details),
|
|
422
|
+
reproduce: [
|
|
423
|
+
"git --version",
|
|
424
|
+
"sourcevision pr-markdown <project-dir>",
|
|
425
|
+
],
|
|
426
|
+
},
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=pr-markdown-refresh-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-markdown-refresh-diagnostics.js","sourceRoot":"","sources":["../../src/server/pr-markdown-refresh-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized PRD file I/O for web server routes.
|
|
3
|
+
*
|
|
4
|
+
* All web-server reads and writes of `.rex/prd.json` pass through this
|
|
5
|
+
* module. This replaces scattered `readFileSync`/`writeFileSync` calls
|
|
6
|
+
* across 6+ route files with a single, auditable access point.
|
|
7
|
+
*
|
|
8
|
+
* **Why sync?** HTTP route handlers in the web server use synchronous
|
|
9
|
+
* patterns. Rex's canonical store API (`FileStore.loadDocument()`) is
|
|
10
|
+
* async and includes schema validation + canonical JSON formatting.
|
|
11
|
+
* For hot-path reads where validation overhead is unnecessary (e.g.
|
|
12
|
+
* extracting stats, serving raw JSON), these sync helpers avoid the
|
|
13
|
+
* async conversion cost across dozens of handler functions.
|
|
14
|
+
*
|
|
15
|
+
* **Future migration path:** To switch to rex's async store, update
|
|
16
|
+
* this single module and convert callers to await.
|
|
17
|
+
*
|
|
18
|
+
* @module web/server/prd-io
|
|
19
|
+
*/
|
|
20
|
+
import type { PRDDocument } from "./rex-gateway.js";
|
|
21
|
+
/**
|
|
22
|
+
* Check whether prd.json exists in the given rex directory.
|
|
23
|
+
*/
|
|
24
|
+
export declare function prdExists(rexDir: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Load and parse prd.json synchronously. Returns null if not found or unparseable.
|
|
27
|
+
*
|
|
28
|
+
* Validates the schema version before returning. If the version is incompatible,
|
|
29
|
+
* logs a warning and returns null to prevent silent data corruption from
|
|
30
|
+
* operating on a document whose structure may have changed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadPRDSync(rexDir: string): PRDDocument | null;
|
|
33
|
+
/**
|
|
34
|
+
* Save a PRD document to prd.json synchronously.
|
|
35
|
+
*/
|
|
36
|
+
export declare function savePRDSync(rexDir: string, doc: PRDDocument): void;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the path to prd.json in the given rex directory.
|
|
39
|
+
*/
|
|
40
|
+
export declare function prdPath(rexDir: string): string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized PRD file I/O for web server routes.
|
|
3
|
+
*
|
|
4
|
+
* All web-server reads and writes of `.rex/prd.json` pass through this
|
|
5
|
+
* module. This replaces scattered `readFileSync`/`writeFileSync` calls
|
|
6
|
+
* across 6+ route files with a single, auditable access point.
|
|
7
|
+
*
|
|
8
|
+
* **Why sync?** HTTP route handlers in the web server use synchronous
|
|
9
|
+
* patterns. Rex's canonical store API (`FileStore.loadDocument()`) is
|
|
10
|
+
* async and includes schema validation + canonical JSON formatting.
|
|
11
|
+
* For hot-path reads where validation overhead is unnecessary (e.g.
|
|
12
|
+
* extracting stats, serving raw JSON), these sync helpers avoid the
|
|
13
|
+
* async conversion cost across dozens of handler functions.
|
|
14
|
+
*
|
|
15
|
+
* **Future migration path:** To switch to rex's async store, update
|
|
16
|
+
* this single module and convert callers to await.
|
|
17
|
+
*
|
|
18
|
+
* @module web/server/prd-io
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
import { SCHEMA_VERSION, isCompatibleSchema } from "./rex-gateway.js";
|
|
23
|
+
/**
|
|
24
|
+
* Check whether prd.json exists in the given rex directory.
|
|
25
|
+
*/
|
|
26
|
+
export function prdExists(rexDir) {
|
|
27
|
+
return existsSync(join(rexDir, "prd.json"));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Load and parse prd.json synchronously. Returns null if not found or unparseable.
|
|
31
|
+
*
|
|
32
|
+
* Validates the schema version before returning. If the version is incompatible,
|
|
33
|
+
* logs a warning and returns null to prevent silent data corruption from
|
|
34
|
+
* operating on a document whose structure may have changed.
|
|
35
|
+
*/
|
|
36
|
+
export function loadPRDSync(rexDir) {
|
|
37
|
+
const prdPath = join(rexDir, "prd.json");
|
|
38
|
+
if (!existsSync(prdPath))
|
|
39
|
+
return null;
|
|
40
|
+
try {
|
|
41
|
+
const doc = JSON.parse(readFileSync(prdPath, "utf-8"));
|
|
42
|
+
if (!isCompatibleSchema(doc.schema)) {
|
|
43
|
+
console.warn(`[prd-io] Incompatible PRD schema: found "${doc.schema ?? "(missing)"}",` +
|
|
44
|
+
` expected "${SCHEMA_VERSION}". Run "rex validate" to check your PRD.`);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return doc;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Save a PRD document to prd.json synchronously.
|
|
55
|
+
*/
|
|
56
|
+
export function savePRDSync(rexDir, doc) {
|
|
57
|
+
const prdPath = join(rexDir, "prd.json");
|
|
58
|
+
writeFileSync(prdPath, JSON.stringify(doc, null, 2) + "\n");
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve the path to prd.json in the given rex directory.
|
|
62
|
+
*/
|
|
63
|
+
export function prdPath(rexDir) {
|
|
64
|
+
return join(rexDir, "prd.json");
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=prd-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-io.js","sourceRoot":"","sources":["../../src/server/prd-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtE;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAgB,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CACV,4CAA4C,GAAG,CAAC,MAAM,IAAI,WAAW,IAAI;gBACzE,cAAc,cAAc,0CAA0C,CACvE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,GAAgB;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-process memory tracking with history and high-RSS warnings.
|
|
3
|
+
*
|
|
4
|
+
* Collects time-series RSS samples for individual hench task processes
|
|
5
|
+
* and stores them in bounded ring buffers. Flags processes whose RSS
|
|
6
|
+
* exceeds a configurable threshold.
|
|
7
|
+
*
|
|
8
|
+
* This is the web-server counterpart to hench's own ProcessMemoryTracker.
|
|
9
|
+
* Implemented separately to avoid adding a runtime dependency from
|
|
10
|
+
* @n-dx/web to hench (web reads hench data from disk, never imports it).
|
|
11
|
+
*
|
|
12
|
+
* @module @n-dx/web/server/process-memory-tracker
|
|
13
|
+
*/
|
|
14
|
+
export interface ProcessMemoryTrackerConfig {
|
|
15
|
+
maxSamples: number;
|
|
16
|
+
maxCompletedHistories: number;
|
|
17
|
+
rssWarningBytes: number;
|
|
18
|
+
}
|
|
19
|
+
export declare const DEFAULT_PROCESS_MEMORY_TRACKER_CONFIG: ProcessMemoryTrackerConfig;
|
|
20
|
+
export interface ProcessMemorySample {
|
|
21
|
+
rssBytes: number;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
epochMs: number;
|
|
24
|
+
}
|
|
25
|
+
export interface MemoryTrend {
|
|
26
|
+
isLeaking: boolean;
|
|
27
|
+
description: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ProcessMemoryHistory {
|
|
30
|
+
taskId: string;
|
|
31
|
+
taskTitle: string;
|
|
32
|
+
pid: number;
|
|
33
|
+
samples: ProcessMemorySample[];
|
|
34
|
+
startedAt: string;
|
|
35
|
+
endedAt?: string;
|
|
36
|
+
trend?: MemoryTrend;
|
|
37
|
+
peakRssBytes: number;
|
|
38
|
+
currentRssBytes: number;
|
|
39
|
+
}
|
|
40
|
+
export interface LeakReport {
|
|
41
|
+
taskId: string;
|
|
42
|
+
taskTitle: string;
|
|
43
|
+
pid: number;
|
|
44
|
+
trend: MemoryTrend;
|
|
45
|
+
currentRssBytes: number;
|
|
46
|
+
peakRssBytes: number;
|
|
47
|
+
trackingDurationSec: number;
|
|
48
|
+
timestamp: string;
|
|
49
|
+
}
|
|
50
|
+
export interface LeakDetectionSummary {
|
|
51
|
+
activeProcesses: number;
|
|
52
|
+
completedProcesses: number;
|
|
53
|
+
leaks: LeakReport[];
|
|
54
|
+
health: "healthy" | "warning";
|
|
55
|
+
timestamp: string;
|
|
56
|
+
}
|
|
57
|
+
export declare class ProcessMemoryTracker {
|
|
58
|
+
private readonly _config;
|
|
59
|
+
private readonly _active;
|
|
60
|
+
private readonly _completed;
|
|
61
|
+
private readonly _now;
|
|
62
|
+
constructor(config?: Partial<ProcessMemoryTrackerConfig>, overrides?: {
|
|
63
|
+
now?: () => number;
|
|
64
|
+
});
|
|
65
|
+
get config(): Readonly<ProcessMemoryTrackerConfig>;
|
|
66
|
+
get activeCount(): number;
|
|
67
|
+
get completedCount(): number;
|
|
68
|
+
recordSample(taskId: string, taskTitle: string, pid: number, rssBytes: number): void;
|
|
69
|
+
markCompleted(taskId: string): void;
|
|
70
|
+
remove(taskId: string): void;
|
|
71
|
+
getHistory(taskId: string): ProcessMemoryHistory | undefined;
|
|
72
|
+
getAllHistories(): ProcessMemoryHistory[];
|
|
73
|
+
getActiveHistories(): ProcessMemoryHistory[];
|
|
74
|
+
detectLeaks(): LeakDetectionSummary;
|
|
75
|
+
getLeakAlerts(): LeakReport[];
|
|
76
|
+
reset(): void;
|
|
77
|
+
private _computeTrend;
|
|
78
|
+
private _buildHistory;
|
|
79
|
+
}
|