@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,237 @@
|
|
|
1
|
+
import { h, Fragment } from "preact";
|
|
2
|
+
import { useState, useEffect, useCallback } from "preact/hooks";
|
|
3
|
+
const FAQ_SECTIONS = [
|
|
4
|
+
{
|
|
5
|
+
title: "Getting Started",
|
|
6
|
+
items: [
|
|
7
|
+
{
|
|
8
|
+
question: "How do I set up n-dx for a new project?",
|
|
9
|
+
answer: "Run 'ndx init .' in your project root. This initializes SourceVision (static analysis), Rex (PRD management), and Hench (autonomous agent) directories.",
|
|
10
|
+
docLink: { label: "Overview", hash: "overview" },
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
question: "What does 'ndx plan' do?",
|
|
14
|
+
answer: "It runs SourceVision analysis on your codebase and feeds the results into Rex, which proposes epics, features, and tasks for your PRD. Use 'ndx plan --accept' to add proposals to your PRD.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: "How do I execute tasks autonomously?",
|
|
18
|
+
answer: "Run 'ndx work .' to let Hench pick the next Rex task, build a brief, and execute it using Claude in a tool-use loop. You can target a specific task with '--task=ID'.",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: "SourceVision",
|
|
24
|
+
items: [
|
|
25
|
+
{
|
|
26
|
+
question: "What are zones and how are they detected?",
|
|
27
|
+
answer: "Zones are architectural areas detected by Louvain community detection on the import graph. Files with strong internal connections cluster into zones. Low cohesion (<0.4) suggests a zone should be split; high coupling (>0.6) suggests merging.",
|
|
28
|
+
docLink: { label: "Zones view", hash: "zones" },
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
question: "What are enrichment passes?",
|
|
32
|
+
answer: "SourceVision runs multiple analysis passes. Pass 1 covers inventory, imports, zones, and components. Passes 2-4 add AI-generated architecture insights, problem detection, and suggestions. Run additional 'sourcevision analyze' passes for deeper analysis.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
question: "What does the import graph show?",
|
|
36
|
+
answer: "A force-directed visualization where nodes are files colored by zone. Orange cross-zone edges highlight potential boundary violations. Dense clusters suggest tight coupling; isolated nodes may be dead code.",
|
|
37
|
+
docLink: { label: "Import Graph", hash: "graph" },
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
title: "Rex (PRD Management)",
|
|
43
|
+
items: [
|
|
44
|
+
{
|
|
45
|
+
question: "How is the PRD structured?",
|
|
46
|
+
answer: "The PRD is a tree: epics contain features, features contain tasks, and tasks can have subtasks. Each item has a status (pending, in_progress, completed, deferred, blocked, deleted), priority, and optional acceptance criteria.",
|
|
47
|
+
docLink: { label: "Tasks view", hash: "prd" },
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
question: "How does Rex determine the next task?",
|
|
51
|
+
answer: "Rex considers priority (critical > high > medium > low), dependency blocking (items with unresolved blockers are skipped), and tree position (earlier items in the tree are preferred).",
|
|
52
|
+
docLink: { label: "Rex Dashboard", hash: "rex-dashboard" },
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
question: "Can I sync my PRD with Notion?",
|
|
56
|
+
answer: "Yes. Configure a Notion adapter, then run 'ndx sync .' to bidirectionally sync your local PRD with a Notion database. Use '--push' or '--pull' for one-way sync.",
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: "Hench (Autonomous Agent)",
|
|
62
|
+
items: [
|
|
63
|
+
{
|
|
64
|
+
question: "What happens during an autonomous run?",
|
|
65
|
+
answer: "Hench picks the next Rex task, generates a detailed brief with context from SourceVision and Rex, then calls Claude in a tool-use loop. It reads files, writes code, runs tests, and commits changes. Runs are recorded in .hench/runs/.",
|
|
66
|
+
docLink: { label: "Hench Runs", hash: "hench-runs" },
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
question: "How do I monitor agent progress?",
|
|
70
|
+
answer: "Use 'ndx status .' to check PRD completion. The Hench Runs view in this dashboard shows run history, transcripts, and token usage for each autonomous execution.",
|
|
71
|
+
docLink: { label: "Token Usage", hash: "token-usage" },
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
question: "Can I limit which tasks Hench works on?",
|
|
75
|
+
answer: "Yes. Use 'ndx work --task=ID' to target a specific task. You can also use '--dry-run' to see what Hench would do without executing. Configure model and max turns in .hench/config.json.",
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
title: "Dashboard",
|
|
81
|
+
items: [
|
|
82
|
+
{
|
|
83
|
+
question: "How do I switch between light and dark mode?",
|
|
84
|
+
answer: "Use the theme toggle (sun/moon icon) in the sidebar footer. Your preference is saved automatically and persists across sessions.",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
question: "What do the locked navigation items mean?",
|
|
88
|
+
answer: "Items marked with P2, P3, or P4 badges require additional SourceVision enrichment passes. Run more 'sourcevision analyze' passes to unlock Architecture, Problems, and Suggestions views.",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
question: "Can I run the dashboard in the background?",
|
|
92
|
+
answer: "Yes. Run 'ndx web --background .' to start the dashboard as a daemon. Use 'ndx web stop' to stop it and 'ndx web status' to check if it's running.",
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
/**
|
|
98
|
+
* Map view IDs to the FAQ section title that is most relevant.
|
|
99
|
+
* Used by HeaderFAQ to auto-expand the contextual section.
|
|
100
|
+
*/
|
|
101
|
+
const VIEW_TO_FAQ_SECTION = {
|
|
102
|
+
// SourceVision views
|
|
103
|
+
overview: "SourceVision",
|
|
104
|
+
graph: "SourceVision",
|
|
105
|
+
zones: "SourceVision",
|
|
106
|
+
files: "SourceVision",
|
|
107
|
+
routes: "SourceVision",
|
|
108
|
+
architecture: "SourceVision",
|
|
109
|
+
problems: "SourceVision",
|
|
110
|
+
suggestions: "SourceVision",
|
|
111
|
+
"pr-markdown": "SourceVision",
|
|
112
|
+
// Rex views
|
|
113
|
+
"rex-dashboard": "Rex (PRD Management)",
|
|
114
|
+
prd: "Rex (PRD Management)",
|
|
115
|
+
"token-usage": "Dashboard",
|
|
116
|
+
validation: "Rex (PRD Management)",
|
|
117
|
+
// Hench views
|
|
118
|
+
"hench-runs": "Hench (Autonomous Agent)",
|
|
119
|
+
};
|
|
120
|
+
/** Shared FAQ modal body — used by both sidebar FAQ and header FAQ */
|
|
121
|
+
function FAQModal({ onClose, initialSection }) {
|
|
122
|
+
const [expandedSection, setExpandedSection] = useState(initialSection);
|
|
123
|
+
const toggleSection = useCallback((title) => {
|
|
124
|
+
setExpandedSection((prev) => (prev === title ? null : title));
|
|
125
|
+
}, []);
|
|
126
|
+
return h("div", {
|
|
127
|
+
class: "faq-overlay",
|
|
128
|
+
onClick: onClose,
|
|
129
|
+
role: "dialog",
|
|
130
|
+
"aria-label": "Help and FAQ",
|
|
131
|
+
"aria-modal": "true",
|
|
132
|
+
}, h("div", {
|
|
133
|
+
class: "faq-modal",
|
|
134
|
+
onClick: (e) => e.stopPropagation(),
|
|
135
|
+
}, h("div", { class: "faq-header" }, h("h2", null, "Help & FAQ"), h("button", {
|
|
136
|
+
class: "faq-close",
|
|
137
|
+
onClick: onClose,
|
|
138
|
+
"aria-label": "Close FAQ",
|
|
139
|
+
}, "\u2715")), h("div", { class: "faq-body" }, FAQ_SECTIONS.map((section) => {
|
|
140
|
+
const isExpanded = expandedSection === section.title;
|
|
141
|
+
return h("div", { key: section.title, class: "faq-section" }, h("div", {
|
|
142
|
+
class: "faq-section-header",
|
|
143
|
+
role: "button",
|
|
144
|
+
tabIndex: 0,
|
|
145
|
+
"aria-expanded": String(isExpanded),
|
|
146
|
+
onClick: () => toggleSection(section.title),
|
|
147
|
+
onKeyDown: (e) => {
|
|
148
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
149
|
+
e.preventDefault();
|
|
150
|
+
toggleSection(section.title);
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
}, h("span", {
|
|
154
|
+
class: `faq-section-chevron${isExpanded ? " faq-section-chevron-open" : ""}`,
|
|
155
|
+
"aria-hidden": "true",
|
|
156
|
+
}, "\u25B8"), h("span", null, section.title)), isExpanded
|
|
157
|
+
? h("div", { class: "faq-section-items" }, section.items.map((item, i) => h("div", { key: i, class: "faq-item" }, h("div", { class: "faq-question" }, item.question), h("div", { class: "faq-answer" }, item.answer), item.docLink
|
|
158
|
+
? h("a", {
|
|
159
|
+
class: "faq-doc-link",
|
|
160
|
+
href: `#${item.docLink.hash}`,
|
|
161
|
+
onClick: onClose,
|
|
162
|
+
}, `\u2192 ${item.docLink.label}`)
|
|
163
|
+
: null)))
|
|
164
|
+
: null);
|
|
165
|
+
})), h("div", { class: "faq-footer" }, h("p", null, "For CLI reference, run ", h("code", null, "ndx --help"), " or ", h("code", null, "ndx <command> --help")))));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Global FAQ button — lives in the sidebar footer toolbar (bottom-left).
|
|
169
|
+
* Opens the full FAQ modal without view-contextual auto-expansion.
|
|
170
|
+
*/
|
|
171
|
+
export function GlobalFAQ() {
|
|
172
|
+
const [open, setOpen] = useState(false);
|
|
173
|
+
// Close on Escape
|
|
174
|
+
useEffect(() => {
|
|
175
|
+
if (!open)
|
|
176
|
+
return;
|
|
177
|
+
const handler = (e) => {
|
|
178
|
+
if (e.key === "Escape")
|
|
179
|
+
setOpen(false);
|
|
180
|
+
};
|
|
181
|
+
window.addEventListener("keydown", handler);
|
|
182
|
+
return () => window.removeEventListener("keydown", handler);
|
|
183
|
+
}, [open]);
|
|
184
|
+
return h(Fragment, null, h("button", {
|
|
185
|
+
class: "sidebar-control-btn global-faq-btn",
|
|
186
|
+
onClick: () => setOpen(true),
|
|
187
|
+
title: "Help & FAQ",
|
|
188
|
+
"aria-label": "Open help and FAQ",
|
|
189
|
+
}, h("svg", {
|
|
190
|
+
width: 14,
|
|
191
|
+
height: 14,
|
|
192
|
+
viewBox: "0 0 16 16",
|
|
193
|
+
fill: "none",
|
|
194
|
+
stroke: "currentColor",
|
|
195
|
+
"stroke-width": "1.5",
|
|
196
|
+
"stroke-linecap": "round",
|
|
197
|
+
"stroke-linejoin": "round",
|
|
198
|
+
"aria-hidden": "true",
|
|
199
|
+
}, h("circle", { cx: 8, cy: 8, r: 7 }), h("path", { d: "M5.5 6a2.5 2.5 0 0 1 4.9.5c0 1.5-2.4 2-2.4 3" }), h("circle", { cx: 8, cy: 12, r: 0.5, fill: "currentColor", stroke: "none" }))), open ? h(FAQModal, { onClose: () => setOpen(false), initialSection: null }) : null);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Header FAQ button — contextual entry point in the content area header.
|
|
203
|
+
* Auto-expands the FAQ section relevant to the current view.
|
|
204
|
+
*/
|
|
205
|
+
export function HeaderFAQ({ view }) {
|
|
206
|
+
const [open, setOpen] = useState(false);
|
|
207
|
+
// Determine which FAQ section to auto-expand based on current view
|
|
208
|
+
const contextSection = VIEW_TO_FAQ_SECTION[view] ?? FAQ_SECTIONS[0].title;
|
|
209
|
+
// Close on Escape
|
|
210
|
+
useEffect(() => {
|
|
211
|
+
if (!open)
|
|
212
|
+
return;
|
|
213
|
+
const handler = (e) => {
|
|
214
|
+
if (e.key === "Escape")
|
|
215
|
+
setOpen(false);
|
|
216
|
+
};
|
|
217
|
+
window.addEventListener("keydown", handler);
|
|
218
|
+
return () => window.removeEventListener("keydown", handler);
|
|
219
|
+
}, [open]);
|
|
220
|
+
return h(Fragment, null, h("button", {
|
|
221
|
+
class: "header-faq-btn",
|
|
222
|
+
onClick: () => setOpen(true),
|
|
223
|
+
title: "Help & FAQ",
|
|
224
|
+
"aria-label": "Open contextual help and FAQ",
|
|
225
|
+
}, h("svg", {
|
|
226
|
+
width: 14,
|
|
227
|
+
height: 14,
|
|
228
|
+
viewBox: "0 0 16 16",
|
|
229
|
+
fill: "none",
|
|
230
|
+
stroke: "currentColor",
|
|
231
|
+
"stroke-width": "1.5",
|
|
232
|
+
"stroke-linecap": "round",
|
|
233
|
+
"stroke-linejoin": "round",
|
|
234
|
+
"aria-hidden": "true",
|
|
235
|
+
}, h("circle", { cx: 8, cy: 8, r: 7 }), h("path", { d: "M5.5 6a2.5 2.5 0 0 1 4.9.5c0 1.5-2.4 2-2.4 3" }), h("circle", { cx: 8, cy: 12, r: 0.5, fill: "currentColor", stroke: "none" }))), open ? h(FAQModal, { onClose: () => setOpen(false), initialSection: contextSection }) : null);
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=faq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faq.js","sourceRoot":"","sources":["../../../src/viewer/components/faq.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic favicon management.
|
|
3
|
+
*
|
|
4
|
+
* Uses PNG favicons for each product section and swaps
|
|
5
|
+
* the <link rel="icon"> element when the active view changes.
|
|
6
|
+
* Falls back to the n-dx logo on non-package-specific pages.
|
|
7
|
+
*/
|
|
8
|
+
import type { ViewId } from "../types.js";
|
|
9
|
+
type Product = "sourcevision" | "rex" | "hench";
|
|
10
|
+
declare const FAVICON_PNGS: Record<Product | "ndx", string>;
|
|
11
|
+
/**
|
|
12
|
+
* Map from ViewId → the product that owns it.
|
|
13
|
+
* Views not in this map default to the n-dx favicon.
|
|
14
|
+
*/
|
|
15
|
+
declare const VIEW_TO_PRODUCT: Partial<Record<ViewId, Product>>;
|
|
16
|
+
/**
|
|
17
|
+
* Update the browser favicon to match the active view's product section.
|
|
18
|
+
*
|
|
19
|
+
* Call this whenever the view changes. It determines the owning product
|
|
20
|
+
* from the ViewId and swaps the favicon accordingly. Non-package views
|
|
21
|
+
* (if any) fall back to the n-dx logo.
|
|
22
|
+
*/
|
|
23
|
+
export declare function updateFavicon(view: ViewId): void;
|
|
24
|
+
/**
|
|
25
|
+
* Reset internal cache. Call between tests to avoid stale references
|
|
26
|
+
* when the DOM is torn down and rebuilt.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resetFavicon(): void;
|
|
29
|
+
/** Exported for testing. */
|
|
30
|
+
export { FAVICON_PNGS, VIEW_TO_PRODUCT };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic favicon management.
|
|
3
|
+
*
|
|
4
|
+
* Uses PNG favicons for each product section and swaps
|
|
5
|
+
* the <link rel="icon"> element when the active view changes.
|
|
6
|
+
* Falls back to the n-dx logo on non-package-specific pages.
|
|
7
|
+
*/
|
|
8
|
+
/* ── PNG favicon paths ──
|
|
9
|
+
*
|
|
10
|
+
* Each product has a branded PNG favicon. These are served as static
|
|
11
|
+
* assets by the web server and copied into dist/viewer/ at build time.
|
|
12
|
+
*/
|
|
13
|
+
const FAVICON_PNGS = {
|
|
14
|
+
/** n-dx — default brand mark */
|
|
15
|
+
ndx: "/n-dx.png",
|
|
16
|
+
/** SourceVision — pixel-art eye icon */
|
|
17
|
+
sourcevision: "/SourceVision-F.png",
|
|
18
|
+
/** Rex — pixel-art dinosaur icon */
|
|
19
|
+
rex: "/Rex-F.png",
|
|
20
|
+
/** Hench — pixel-art wrench icon */
|
|
21
|
+
hench: "/Hench-F.png",
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Map from ViewId → the product that owns it.
|
|
25
|
+
* Views not in this map default to the n-dx favicon.
|
|
26
|
+
*/
|
|
27
|
+
const VIEW_TO_PRODUCT = {
|
|
28
|
+
overview: "sourcevision",
|
|
29
|
+
graph: "sourcevision",
|
|
30
|
+
zones: "sourcevision",
|
|
31
|
+
files: "sourcevision",
|
|
32
|
+
routes: "sourcevision",
|
|
33
|
+
architecture: "sourcevision",
|
|
34
|
+
problems: "sourcevision",
|
|
35
|
+
suggestions: "sourcevision",
|
|
36
|
+
"pr-markdown": "sourcevision",
|
|
37
|
+
"rex-dashboard": "rex",
|
|
38
|
+
prd: "rex",
|
|
39
|
+
validation: "rex",
|
|
40
|
+
"hench-runs": "hench",
|
|
41
|
+
"hench-audit": "hench",
|
|
42
|
+
};
|
|
43
|
+
/** Cached reference to the <link rel="icon"> element. */
|
|
44
|
+
let faviconLink = null;
|
|
45
|
+
function getFaviconLink() {
|
|
46
|
+
if (faviconLink)
|
|
47
|
+
return faviconLink;
|
|
48
|
+
// Look for existing favicon link
|
|
49
|
+
const existing = document.querySelector('link[rel="icon"]');
|
|
50
|
+
if (existing) {
|
|
51
|
+
faviconLink = existing;
|
|
52
|
+
return faviconLink;
|
|
53
|
+
}
|
|
54
|
+
// Create one if missing (shouldn't happen in practice)
|
|
55
|
+
const link = document.createElement("link");
|
|
56
|
+
link.rel = "icon";
|
|
57
|
+
link.type = "image/png";
|
|
58
|
+
document.head.appendChild(link);
|
|
59
|
+
faviconLink = link;
|
|
60
|
+
return faviconLink;
|
|
61
|
+
}
|
|
62
|
+
/** Track current favicon to avoid redundant DOM updates. */
|
|
63
|
+
let currentProduct = null;
|
|
64
|
+
/**
|
|
65
|
+
* Update the browser favicon to match the active view's product section.
|
|
66
|
+
*
|
|
67
|
+
* Call this whenever the view changes. It determines the owning product
|
|
68
|
+
* from the ViewId and swaps the favicon accordingly. Non-package views
|
|
69
|
+
* (if any) fall back to the n-dx logo.
|
|
70
|
+
*/
|
|
71
|
+
export function updateFavicon(view) {
|
|
72
|
+
const product = VIEW_TO_PRODUCT[view] ?? "ndx";
|
|
73
|
+
if (product === currentProduct)
|
|
74
|
+
return;
|
|
75
|
+
currentProduct = product;
|
|
76
|
+
const link = getFaviconLink();
|
|
77
|
+
link.type = "image/png";
|
|
78
|
+
link.href = FAVICON_PNGS[product];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Reset internal cache. Call between tests to avoid stale references
|
|
82
|
+
* when the DOM is torn down and rebuilt.
|
|
83
|
+
*/
|
|
84
|
+
export function resetFavicon() {
|
|
85
|
+
faviconLink = null;
|
|
86
|
+
currentProduct = null;
|
|
87
|
+
}
|
|
88
|
+
/** Exported for testing. */
|
|
89
|
+
export { FAVICON_PNGS, VIEW_TO_PRODUCT };
|
|
90
|
+
//# sourceMappingURL=favicon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"favicon.js","sourceRoot":"","sources":["../../../src/viewer/components/favicon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;GAIG;AAEH,MAAM,YAAY,GAAoC;IACpD,gCAAgC;IAChC,GAAG,EAAE,WAAW;IAEhB,wCAAwC;IACxC,YAAY,EAAE,qBAAqB;IAEnC,oCAAoC;IACpC,GAAG,EAAE,YAAY;IAEjB,oCAAoC;IACpC,KAAK,EAAE,cAAc;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,eAAe,GAAqC;IACxD,QAAQ,EAAE,cAAc;IACxB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,cAAc;IACxB,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,cAAc;IAC7B,eAAe,EAAE,KAAK;IACtB,GAAG,EAAE,KAAK;IACV,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,OAAO;IACrB,aAAa,EAAE,OAAO;CACvB,CAAC;AAEF,yDAAyD;AACzD,IAAI,WAAW,GAA2B,IAAI,CAAC;AAE/C,SAAS,cAAc;IACrB,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,iCAAiC;IACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAkB,kBAAkB,CAAC,CAAC;IAC7E,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,QAAQ,CAAC;QACvB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,uDAAuD;IACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;IAClB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,4DAA4D;AAC5D,IAAI,cAAc,GAA2B,IAAI,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAC/C,IAAI,OAAO,KAAK,cAAc;QAAE,OAAO;IAEvC,cAAc,GAAG,OAAO,CAAC;IACzB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,WAAW,GAAG,IAAI,CAAC;IACnB,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,4BAA4B;AAC5B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { h, Fragment } from "preact";
|
|
2
|
+
import { useState, useEffect } from "preact/hooks";
|
|
3
|
+
const GUIDE_CONTENT = {
|
|
4
|
+
// ── SourceVision views ──
|
|
5
|
+
overview: {
|
|
6
|
+
title: "Overview",
|
|
7
|
+
description: "Dashboard showing high-level project statistics: file counts, languages, import density, zone structure, and module completion status.",
|
|
8
|
+
lookFor: "High import counts on single files (hub files). Circular dependencies. Unbalanced language distribution.",
|
|
9
|
+
actions: "Check module status table to see which analysis phases have completed. Run additional 'sourcevision analyze' passes for deeper AI-generated insights.",
|
|
10
|
+
},
|
|
11
|
+
graph: {
|
|
12
|
+
title: "Import Graph",
|
|
13
|
+
description: "Force-directed visualization of the import graph. Nodes are colored by zone. Cross-zone edges are highlighted in orange.",
|
|
14
|
+
lookFor: "Dense clusters suggest tightly-coupled modules. Orange cross-zone edges indicate zone boundary violations. Isolated nodes may be dead code.",
|
|
15
|
+
actions: "Click nodes to inspect. Look for hub files that could be split. Consider if cross-zone imports suggest zones should be merged or boundaries clarified.",
|
|
16
|
+
},
|
|
17
|
+
zones: {
|
|
18
|
+
title: "Zones",
|
|
19
|
+
description: "Architectural zones detected by Louvain community detection. Each zone groups files with strong internal import connections.",
|
|
20
|
+
lookFor: "Cohesion < 0.4 means files in a zone aren't well-related — consider splitting. Coupling > 0.6 means heavy cross-zone dependencies. Large zones (>50 files) may need decomposition.",
|
|
21
|
+
actions: "Click a zone to see its files and entry points. Review AI-generated insights. Check if zone boundaries match your intended architecture.",
|
|
22
|
+
},
|
|
23
|
+
files: {
|
|
24
|
+
title: "Files",
|
|
25
|
+
description: "Sortable, filterable table of all project files with language, role, size, and category information.",
|
|
26
|
+
lookFor: "Very large files (>500 lines) that might benefit from splitting. Files classified as 'other' role that should be reclassified. Category groupings that reveal organizational patterns.",
|
|
27
|
+
actions: "Sort by line count to find the largest files. Filter by role to focus on source, test, or config files. Use search to locate specific files.",
|
|
28
|
+
},
|
|
29
|
+
routes: {
|
|
30
|
+
title: "Routes",
|
|
31
|
+
description: "Route tree showing React Router v7 / Remix file-based routes with their convention exports (loader, action, meta, etc).",
|
|
32
|
+
lookFor: "Route modules missing loaders (data fetching). Missing ErrorBoundary exports. Deep layout nesting. Routes without meta exports (SEO gaps).",
|
|
33
|
+
actions: "Check convention coverage stats to identify missing exports. Review the route tree for proper nesting. Look at component usage for shared UI patterns.",
|
|
34
|
+
},
|
|
35
|
+
architecture: {
|
|
36
|
+
title: "Architecture",
|
|
37
|
+
description: "Architectural patterns and relationships identified by AI analysis. Requires enrichment pass 2.",
|
|
38
|
+
lookFor: "Cross-cutting concerns, shared utilities, interface boundaries between zones, dependency direction patterns.",
|
|
39
|
+
actions: "Compare observed patterns against your intended architecture. Look for findings tagged as relationships — these show how zones interact.",
|
|
40
|
+
},
|
|
41
|
+
problems: {
|
|
42
|
+
title: "Problems",
|
|
43
|
+
description: "Anti-patterns and issues identified by AI analysis. Grouped by severity (critical, warning, info). Requires enrichment pass 3.",
|
|
44
|
+
lookFor: "Critical issues first. Circular dependencies between zones. God files. Leaky abstractions. Tight coupling patterns.",
|
|
45
|
+
actions: "Address critical findings first. Group related warnings for batch fixes. Use related file references to understand the scope of each issue.",
|
|
46
|
+
},
|
|
47
|
+
suggestions: {
|
|
48
|
+
title: "Suggestions",
|
|
49
|
+
description: "Improvement suggestions from AI analysis. Requires enrichment pass 4.",
|
|
50
|
+
lookFor: "Quick wins vs larger refactors. Suggestions that align with your current sprint goals. Patterns that could benefit from abstraction.",
|
|
51
|
+
actions: "Prioritize suggestions by scope (global vs zone-specific). Start with suggestions that reduce coupling or improve cohesion.",
|
|
52
|
+
},
|
|
53
|
+
"pr-markdown": {
|
|
54
|
+
title: "PR Markdown",
|
|
55
|
+
description: "PR-ready markdown generated for copy/paste into pull request descriptions.",
|
|
56
|
+
lookFor: "Clear summary, accurate file/change grouping, and any missing sections before sharing.",
|
|
57
|
+
actions: "Copy sections into your PR description and refresh after major changes to keep the text current.",
|
|
58
|
+
},
|
|
59
|
+
// ── Rex views ──
|
|
60
|
+
"rex-dashboard": {
|
|
61
|
+
title: "Rex Dashboard",
|
|
62
|
+
description: "PRD completion overview showing epic progress, priority distribution, and recent activity. Each epic displays a segmented progress bar with status breakdowns.",
|
|
63
|
+
lookFor: "Epics with low completion rates or many blocked tasks. Imbalanced priority distribution (too many critical items may indicate scope creep). Stalled items that haven't progressed.",
|
|
64
|
+
actions: "Click an epic to see its tasks. Review blocked items and resolve dependencies. Use the execution panel to run the next task autonomously.",
|
|
65
|
+
},
|
|
66
|
+
prd: {
|
|
67
|
+
title: "Tasks",
|
|
68
|
+
description: "Interactive PRD tree showing the full hierarchy: epics → features → tasks → subtasks. Each item shows its status, priority, and tags. Supports multi-select for bulk operations.",
|
|
69
|
+
lookFor: "Tasks stuck in 'in_progress' for too long. Blocked items with unresolved dependencies. Orphaned subtasks without clear parent context. Items missing acceptance criteria.",
|
|
70
|
+
actions: "Click items to view details in the side panel. Use bulk actions to update multiple items at once. Merge duplicate tasks. Add new items at any level of the hierarchy.",
|
|
71
|
+
},
|
|
72
|
+
"token-usage": {
|
|
73
|
+
title: "Token Usage",
|
|
74
|
+
description: "Analytics dashboard showing token consumption across autonomous agent runs. Tracks input/output tokens, costs, and usage trends over time.",
|
|
75
|
+
lookFor: "Runs with unusually high token counts (may indicate stuck loops). Cost trends over time. Token distribution across epics to understand where effort is spent.",
|
|
76
|
+
actions: "Review high-cost runs for optimization opportunities. Compare token usage across similar tasks. Use the grouping controls to view usage by day, week, or month.",
|
|
77
|
+
},
|
|
78
|
+
validation: {
|
|
79
|
+
title: "Validation",
|
|
80
|
+
description: "PRD integrity checks that verify the health of your task tree. Detects orphaned items, circular dependencies, invalid references, and structural issues.",
|
|
81
|
+
lookFor: "Critical validation errors (must be fixed). Orphaned items disconnected from the tree. Circular blockedBy references that create deadlocks. Items with invalid status transitions.",
|
|
82
|
+
actions: "Fix critical errors first — they can prevent task execution. Resolve orphaned items by reparenting or deleting them. Clear circular dependencies by editing blockedBy fields.",
|
|
83
|
+
},
|
|
84
|
+
// ── Hench views ──
|
|
85
|
+
"hench-runs": {
|
|
86
|
+
title: "Execution History",
|
|
87
|
+
description: "Timeline of autonomous agent runs showing status, duration, token usage, and task associations. Each run records the full execution transcript.",
|
|
88
|
+
lookFor: "Failed runs that need investigation. Runs with high turn counts (may indicate the agent struggled). Patterns in which tasks succeed vs fail autonomously.",
|
|
89
|
+
actions: "Click a run to see its full details and token breakdown. Review failed runs to understand what went wrong. Use insights to improve task descriptions and acceptance criteria.",
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
export function Guide({ view }) {
|
|
93
|
+
const [open, setOpen] = useState(false);
|
|
94
|
+
const content = GUIDE_CONTENT[view] || GUIDE_CONTENT.overview;
|
|
95
|
+
// Close on Escape key
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!open)
|
|
98
|
+
return;
|
|
99
|
+
const handler = (e) => {
|
|
100
|
+
if (e.key === "Escape")
|
|
101
|
+
setOpen(false);
|
|
102
|
+
};
|
|
103
|
+
window.addEventListener("keydown", handler);
|
|
104
|
+
return () => window.removeEventListener("keydown", handler);
|
|
105
|
+
}, [open]);
|
|
106
|
+
return h(Fragment, null, h("button", {
|
|
107
|
+
class: "guide-btn",
|
|
108
|
+
onClick: () => setOpen(!open),
|
|
109
|
+
title: "View guide",
|
|
110
|
+
"aria-label": "View guide for this page",
|
|
111
|
+
"aria-expanded": String(open),
|
|
112
|
+
}, "?"), open
|
|
113
|
+
? h("div", { class: "guide-overlay", onClick: () => setOpen(false), role: "dialog", "aria-modal": "true", "aria-label": `Guide: ${content.title}` }, h("div", { class: "guide-modal", onClick: (e) => e.stopPropagation() }, h("div", { class: "guide-header" }, h("h2", null, content.title), h("button", { class: "guide-close", onClick: () => setOpen(false), "aria-label": "Close guide" }, "\u2715")), h("div", { class: "guide-body" }, h("section", null, h("h3", null, "What you're looking at"), h("p", null, content.description)), h("section", null, h("h3", null, "What to look for"), h("p", null, content.lookFor)), h("section", null, h("h3", null, "What actions to take"), h("p", null, content.actions)))))
|
|
114
|
+
: null);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../../src/viewer/components/guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard panel components — public barrel.
|
|
3
|
+
*
|
|
4
|
+
* All cross-zone consumers should import from this barrel rather than
|
|
5
|
+
* individual component files. This provides a single stable import surface
|
|
6
|
+
* and makes it possible to split the zone later without auditing individual
|
|
7
|
+
* import paths across consumer layers.
|
|
8
|
+
*/
|
|
9
|
+
export { ActiveTasksPanel } from "./active-tasks-panel.js";
|
|
10
|
+
export type { ActiveRun } from "./active-tasks-panel.js";
|
|
11
|
+
export { ConcurrencyPanel } from "./concurrency-panel.js";
|
|
12
|
+
export { MemoryPanel } from "./memory-panel.js";
|
|
13
|
+
export { WsHealthPanel } from "./ws-health-panel.js";
|
|
14
|
+
export { ThrottleControlsPanel } from "./throttle-controls.js";
|
|
15
|
+
export { DetailPanel } from "./detail-panel.js";
|
|
16
|
+
export { CrashRecoveryBanner } from "./crash-recovery-banner.js";
|
|
17
|
+
export { DegradationBanner, type DegradationBannerProps, } from "./degradation-banner.js";
|
|
18
|
+
export { MemoryWarningBanner } from "./memory-warning.js";
|
|
19
|
+
export { Breadcrumb, type BreadcrumbProps, } from "./breadcrumb.js";
|
|
20
|
+
export { CopyLinkButton, buildShareableUrl, type CopyLinkButtonProps, } from "./copy-link-button.js";
|
|
21
|
+
export { ConfigFooter } from "./config-footer.js";
|
|
22
|
+
export { ElapsedTime } from "./elapsed-time.js";
|
|
23
|
+
export { updateFavicon, resetFavicon, FAVICON_PNGS, VIEW_TO_PRODUCT } from "./favicon.js";
|
|
24
|
+
export { SidebarThemeToggle, initTheme } from "./theme-toggle.js";
|
|
25
|
+
export { NdxLogoPng, ProductLogoPng, BrandedHeader } from "./logos.js";
|
|
26
|
+
export { PollingSuspensionIndicator } from "./polling-suspension-indicator.js";
|
|
27
|
+
export { RefreshQueueStatus } from "./refresh-queue-status.js";
|
|
28
|
+
export { useProjectStatus, SvFreshnessIndicator, RexCompletionIndicator, HenchActivityIndicator, type ProjectStatus, type SourceVisionStatus, type RexStatus, type HenchStatus, } from "./status-indicators.js";
|
|
29
|
+
export { SearchFilter } from "./search-filter.js";
|
|
30
|
+
export { SearchOverlay, useSearchOverlay } from "./search-overlay.js";
|
|
31
|
+
export { RexTaskLink, type RexTaskLinkProps, type TaskRef, } from "./rex-task-link.js";
|
|
32
|
+
export { Sidebar } from "./sidebar.js";
|
|
33
|
+
export { Guide } from "./guide.js";
|
|
34
|
+
export { GlobalFAQ } from "./faq.js";
|
|
35
|
+
export { NotionSchemaWizard } from "./notion-schema-wizard.js";
|
|
36
|
+
export { ZoneSlideout } from "./zone-slideout.js";
|
|
37
|
+
export * from "./constants.js";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard panel components — public barrel.
|
|
3
|
+
*
|
|
4
|
+
* All cross-zone consumers should import from this barrel rather than
|
|
5
|
+
* individual component files. This provides a single stable import surface
|
|
6
|
+
* and makes it possible to split the zone later without auditing individual
|
|
7
|
+
* import paths across consumer layers.
|
|
8
|
+
*/
|
|
9
|
+
// ── Panel components ─────────────────────────────────────────────────
|
|
10
|
+
export { ActiveTasksPanel } from "./active-tasks-panel.js";
|
|
11
|
+
export { ConcurrencyPanel } from "./concurrency-panel.js";
|
|
12
|
+
export { MemoryPanel } from "./memory-panel.js";
|
|
13
|
+
export { WsHealthPanel } from "./ws-health-panel.js";
|
|
14
|
+
export { ThrottleControlsPanel } from "./throttle-controls.js";
|
|
15
|
+
export { DetailPanel } from "./detail-panel.js";
|
|
16
|
+
// ── Banners ──────────────────────────────────────────────────────────
|
|
17
|
+
export { CrashRecoveryBanner } from "./crash-recovery-banner.js";
|
|
18
|
+
export { DegradationBanner, } from "./degradation-banner.js";
|
|
19
|
+
export { MemoryWarningBanner } from "./memory-warning.js";
|
|
20
|
+
// ── UI primitives ────────────────────────────────────────────────────
|
|
21
|
+
export { Breadcrumb, } from "./breadcrumb.js";
|
|
22
|
+
export { CopyLinkButton, buildShareableUrl, } from "./copy-link-button.js";
|
|
23
|
+
export { ConfigFooter } from "./config-footer.js";
|
|
24
|
+
export { ElapsedTime } from "./elapsed-time.js";
|
|
25
|
+
export { updateFavicon, resetFavicon, FAVICON_PNGS, VIEW_TO_PRODUCT } from "./favicon.js";
|
|
26
|
+
export { SidebarThemeToggle, initTheme } from "./theme-toggle.js";
|
|
27
|
+
export { NdxLogoPng, ProductLogoPng, BrandedHeader } from "./logos.js";
|
|
28
|
+
export { PollingSuspensionIndicator } from "./polling-suspension-indicator.js";
|
|
29
|
+
export { RefreshQueueStatus } from "./refresh-queue-status.js";
|
|
30
|
+
// ── Status indicators ───────────────────────────────────────────────
|
|
31
|
+
export { useProjectStatus, SvFreshnessIndicator, RexCompletionIndicator, HenchActivityIndicator, } from "./status-indicators.js";
|
|
32
|
+
// ── Search ──────────────────────────────────────────────────────────
|
|
33
|
+
export { SearchFilter } from "./search-filter.js";
|
|
34
|
+
export { SearchOverlay, useSearchOverlay } from "./search-overlay.js";
|
|
35
|
+
// ── Task link ───────────────────────────────────────────────────────
|
|
36
|
+
export { RexTaskLink, } from "./rex-task-link.js";
|
|
37
|
+
// ── Navigation ──────────────────────────────────────────────────────
|
|
38
|
+
export { Sidebar } from "./sidebar.js";
|
|
39
|
+
// ── Content ─────────────────────────────────────────────────────────
|
|
40
|
+
export { Guide } from "./guide.js";
|
|
41
|
+
export { GlobalFAQ } from "./faq.js";
|
|
42
|
+
export { NotionSchemaWizard } from "./notion-schema-wizard.js";
|
|
43
|
+
export { ZoneSlideout } from "./zone-slideout.js";
|
|
44
|
+
// ── Constants ───────────────────────────────────────────────────────
|
|
45
|
+
export * from "./constants.js";
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/viewer/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wEAAwE;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,wEAAwE;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wEAAwE;AAExE,OAAO,EACL,UAAU,GAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,uEAAuE;AAEvE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GAKvB,MAAM,wBAAwB,CAAC;AAEhC,uEAAuE;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,uEAAuE;AAEvE,OAAO,EACL,WAAW,GAGZ,MAAM,oBAAoB,CAAC;AAE5B,uEAAuE;AAEvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,uEAAuE;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,uEAAuE;AAEvE,cAAc,gBAAgB,CAAC"}
|