gsd-pi 2.44.0-dev.62b5d6c → 2.44.0-dev.73f2fd5
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/README.md +30 -12
- package/dist/resources/extensions/gsd/auto/infra-errors.js +3 -0
- package/dist/resources/extensions/gsd/auto/phases.js +36 -36
- package/dist/resources/extensions/gsd/auto-prompts.js +24 -1
- package/dist/resources/extensions/gsd/auto-start.js +10 -0
- package/dist/resources/extensions/gsd/auto-timers.js +57 -3
- package/dist/resources/extensions/gsd/auto-worktree-sync.js +4 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +9 -6
- package/dist/resources/extensions/gsd/auto.js +30 -3
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +156 -0
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +46 -12
- package/dist/resources/extensions/gsd/commands/catalog.js +6 -1
- package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -0
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +5 -0
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +5 -0
- package/dist/resources/extensions/gsd/commands-mcp-status.js +187 -0
- package/dist/resources/extensions/gsd/db-writer.js +34 -16
- package/dist/resources/extensions/gsd/doctor.js +8 -0
- package/dist/resources/extensions/gsd/git-service.js +8 -3
- package/dist/resources/extensions/gsd/gsd-db.js +12 -1
- package/dist/resources/extensions/gsd/markdown-renderer.js +1 -1
- package/dist/resources/extensions/gsd/preferences.js +9 -1
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -4
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +6 -6
- package/dist/resources/extensions/gsd/prompts/replan-slice.md +3 -14
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +7 -37
- package/dist/resources/extensions/gsd/provider-error-pause.js +7 -0
- package/dist/resources/extensions/gsd/state.js +19 -2
- package/dist/resources/extensions/gsd/tools/plan-slice.js +1 -0
- package/dist/resources/extensions/gsd/tools/plan-task.js +1 -0
- package/dist/resources/extensions/gsd/tools/replan-slice.js +2 -0
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +88 -0
- package/dist/resources/extensions/gsd/worktree-resolver.js +6 -0
- package/dist/resources/extensions/mcp-client/index.js +14 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +2 -2
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +3 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +15 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js +6 -8
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +24 -26
- package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/fs-utils.test.js +29 -48
- package/packages/pi-coding-agent/dist/core/fs-utils.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/local-model-check.d.ts +15 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.js +41 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts +11 -0
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js +20 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +34 -44
- package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.test.js +30 -34
- package/packages/pi-coding-agent/dist/core/session-manager.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +6 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js +10 -12
- package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/main.js +17 -0
- package/packages/pi-coding-agent/dist/main.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.js +32 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +3 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +8 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +12 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.d.ts +15 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.js +40 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +4 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts +5 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js +13 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +17 -8
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +7 -3
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js +43 -47
- package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js.map +1 -1
- package/packages/pi-coding-agent/src/core/auth-storage.test.ts +7 -7
- package/packages/pi-coding-agent/src/core/auth-storage.ts +15 -1
- package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +26 -26
- package/packages/pi-coding-agent/src/core/fs-utils.test.ts +31 -43
- package/packages/pi-coding-agent/src/core/local-model-check.ts +45 -0
- package/packages/pi-coding-agent/src/core/model-registry.ts +21 -1
- package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +40 -45
- package/packages/pi-coding-agent/src/core/session-manager.test.ts +33 -33
- package/packages/pi-coding-agent/src/core/settings-manager.ts +9 -0
- package/packages/pi-coding-agent/src/core/tools/edit-diff.test.ts +17 -17
- package/packages/pi-coding-agent/src/main.ts +19 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/timestamp.test.ts +38 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +10 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/timestamp.ts +48 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +3 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts +18 -3
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +16 -7
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +8 -1
- package/packages/pi-coding-agent/src/resources/extensions/memory/storage.test.ts +74 -74
- package/src/resources/extensions/gsd/auto/infra-errors.ts +3 -0
- package/src/resources/extensions/gsd/auto/phases.ts +45 -48
- package/src/resources/extensions/gsd/auto-prompts.ts +24 -1
- package/src/resources/extensions/gsd/auto-start.ts +14 -0
- package/src/resources/extensions/gsd/auto-timers.ts +64 -3
- package/src/resources/extensions/gsd/auto-worktree-sync.ts +5 -0
- package/src/resources/extensions/gsd/auto-worktree.ts +9 -6
- package/src/resources/extensions/gsd/auto.ts +37 -3
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +148 -0
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +48 -11
- package/src/resources/extensions/gsd/commands/catalog.ts +6 -1
- package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -0
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +5 -0
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +8 -0
- package/src/resources/extensions/gsd/commands-mcp-status.ts +247 -0
- package/src/resources/extensions/gsd/db-writer.ts +39 -17
- package/src/resources/extensions/gsd/doctor.ts +7 -1
- package/src/resources/extensions/gsd/git-service.ts +6 -2
- package/src/resources/extensions/gsd/gsd-db.ts +16 -1
- package/src/resources/extensions/gsd/markdown-renderer.ts +1 -1
- package/src/resources/extensions/gsd/preferences.ts +11 -1
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -4
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +6 -6
- package/src/resources/extensions/gsd/prompts/replan-slice.md +3 -14
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +7 -37
- package/src/resources/extensions/gsd/provider-error-pause.ts +9 -0
- package/src/resources/extensions/gsd/state.ts +19 -1
- package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +99 -99
- package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +14 -16
- package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +43 -57
- package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +88 -0
- package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +11 -13
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +465 -523
- package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +73 -75
- package/src/resources/extensions/gsd/tests/auto-start-needs-discussion.test.ts +34 -56
- package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +533 -656
- package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +165 -143
- package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +29 -52
- package/src/resources/extensions/gsd/tests/captures.test.ts +148 -176
- package/src/resources/extensions/gsd/tests/claude-import-tui.test.ts +32 -33
- package/src/resources/extensions/gsd/tests/collect-from-manifest.test.ts +141 -143
- package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +25 -25
- package/src/resources/extensions/gsd/tests/commands-logs.test.ts +81 -81
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +38 -59
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +228 -263
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +250 -302
- package/src/resources/extensions/gsd/tests/completed-units-metrics-sync.test.ts +114 -0
- package/src/resources/extensions/gsd/tests/context-store.test.ts +354 -367
- package/src/resources/extensions/gsd/tests/continue-here.test.ts +68 -72
- package/src/resources/extensions/gsd/tests/cost-projection.test.ts +92 -106
- package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +27 -35
- package/src/resources/extensions/gsd/tests/dashboard-budget.test.ts +220 -237
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +465 -416
- package/src/resources/extensions/gsd/tests/definition-loader.test.ts +76 -92
- package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +68 -83
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +210 -181
- package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +78 -101
- package/src/resources/extensions/gsd/tests/derive-state.test.ts +192 -227
- package/src/resources/extensions/gsd/tests/detection.test.ts +232 -278
- package/src/resources/extensions/gsd/tests/dev-engine-wrapper.test.ts +30 -34
- package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +164 -180
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +43 -49
- package/src/resources/extensions/gsd/tests/dispatch-uat-last-completed.test.ts +28 -32
- package/src/resources/extensions/gsd/tests/doctor-completion-deferral.test.ts +27 -29
- package/src/resources/extensions/gsd/tests/doctor-delimiter-fix.test.ts +34 -38
- package/src/resources/extensions/gsd/tests/doctor-enhancements.test.ts +54 -75
- package/src/resources/extensions/gsd/tests/doctor-environment-worktree.test.ts +21 -32
- package/src/resources/extensions/gsd/tests/doctor-environment.test.ts +72 -97
- package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +38 -44
- package/src/resources/extensions/gsd/tests/doctor-git.test.ts +104 -145
- package/src/resources/extensions/gsd/tests/doctor-proactive.test.ts +84 -106
- package/src/resources/extensions/gsd/tests/doctor-roadmap-summary-atomicity.test.ts +54 -60
- package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +72 -93
- package/src/resources/extensions/gsd/tests/doctor.test.ts +104 -134
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +123 -131
- package/src/resources/extensions/gsd/tests/est-annotation-timeout.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/exit-command.test.ts +20 -24
- package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +48 -57
- package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +5 -7
- package/src/resources/extensions/gsd/tests/flag-file-db.test.ts +30 -42
- package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +198 -206
- package/src/resources/extensions/gsd/tests/git-locale.test.ts +13 -27
- package/src/resources/extensions/gsd/tests/git-service.test.ts +285 -388
- package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +31 -39
- package/src/resources/extensions/gsd/tests/graph-operations.test.ts +63 -69
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +255 -264
- package/src/resources/extensions/gsd/tests/gsd-inspect.test.ts +108 -119
- package/src/resources/extensions/gsd/tests/gsd-recover.test.ts +81 -103
- package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +229 -262
- package/src/resources/extensions/gsd/tests/headless-answers.test.ts +13 -13
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +29 -37
- package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +81 -102
- package/src/resources/extensions/gsd/tests/infra-error.test.ts +20 -2
- package/src/resources/extensions/gsd/tests/init-wizard.test.ts +16 -18
- package/src/resources/extensions/gsd/tests/integration-edge.test.ts +41 -46
- package/src/resources/extensions/gsd/tests/integration-lifecycle.test.ts +42 -53
- package/src/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +75 -91
- package/src/resources/extensions/gsd/tests/integration-proof.test.ts +18 -18
- package/src/resources/extensions/gsd/tests/knowledge.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +150 -194
- package/src/resources/extensions/gsd/tests/mcp-status.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +101 -125
- package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +45 -54
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +80 -93
- package/src/resources/extensions/gsd/tests/merge-conflict-stops-loop.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/migrate-command.test.ts +57 -66
- package/src/resources/extensions/gsd/tests/migrate-hierarchy.test.ts +83 -93
- package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +161 -170
- package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +125 -141
- package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +107 -131
- package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +87 -96
- package/src/resources/extensions/gsd/tests/migrate-writer.test.ts +125 -164
- package/src/resources/extensions/gsd/tests/must-have-parser.test.ts +81 -94
- package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +35 -36
- package/src/resources/extensions/gsd/tests/overrides.test.ts +99 -106
- package/src/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +40 -47
- package/src/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +25 -28
- package/src/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +66 -83
- package/src/resources/extensions/gsd/tests/park-edge-cases.test.ts +54 -77
- package/src/resources/extensions/gsd/tests/park-milestone.test.ts +68 -115
- package/src/resources/extensions/gsd/tests/parsers.test.ts +546 -611
- package/src/resources/extensions/gsd/tests/paths.test.ts +72 -87
- package/src/resources/extensions/gsd/tests/post-unit-hooks.test.ts +77 -117
- package/src/resources/extensions/gsd/tests/preferences.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +11 -7
- package/src/resources/extensions/gsd/tests/prompt-db.test.ts +56 -56
- package/src/resources/extensions/gsd/tests/queue-draft-detection.test.ts +93 -119
- package/src/resources/extensions/gsd/tests/queue-order.test.ts +70 -82
- package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +42 -55
- package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +45 -73
- package/src/resources/extensions/gsd/tests/reassess-prompt.test.ts +28 -38
- package/src/resources/extensions/gsd/tests/replan-slice.test.ts +73 -80
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -74
- package/src/resources/extensions/gsd/tests/requirements.test.ts +70 -75
- package/src/resources/extensions/gsd/tests/retry-state-reset.test.ts +44 -66
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +114 -181
- package/src/resources/extensions/gsd/tests/rule-registry.test.ts +63 -65
- package/src/resources/extensions/gsd/tests/run-uat.test.ts +66 -128
- package/src/resources/extensions/gsd/tests/session-lock-multipath.test.ts +18 -25
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +37 -44
- package/src/resources/extensions/gsd/tests/shared-wal.test.ts +19 -26
- package/src/resources/extensions/gsd/tests/sqlite-unavailable-gate.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +6 -8
- package/src/resources/extensions/gsd/tests/stop-auto-merge-back.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/symlink-numbered-variants.test.ts +22 -28
- package/src/resources/extensions/gsd/tests/terminated-transient.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/token-savings.test.ts +54 -56
- package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +23 -25
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +10 -11
- package/src/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +66 -82
- package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +46 -47
- package/src/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +20 -22
- package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +84 -86
- package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +41 -43
- package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +94 -96
- package/src/resources/extensions/gsd/tests/windows-path-normalization.test.ts +11 -13
- package/src/resources/extensions/gsd/tests/worker-registry.test.ts +27 -29
- package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +50 -52
- package/src/resources/extensions/gsd/tests/worktree-bugfix.test.ts +10 -13
- package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +14 -18
- package/src/resources/extensions/gsd/tests/worktree-db.test.ts +38 -39
- package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +17 -21
- package/src/resources/extensions/gsd/tests/worktree-health.test.ts +25 -30
- package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +30 -37
- package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +15 -22
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +59 -66
- package/src/resources/extensions/gsd/tests/worktree.test.ts +44 -50
- package/src/resources/extensions/gsd/tools/plan-slice.ts +2 -0
- package/src/resources/extensions/gsd/tools/plan-task.ts +2 -0
- package/src/resources/extensions/gsd/tools/replan-slice.ts +3 -0
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +127 -0
- package/src/resources/extensions/gsd/worktree-resolver.ts +7 -0
- package/src/resources/extensions/mcp-client/index.ts +20 -0
- /package/dist/web/standalone/.next/static/{fOnWQBjWXMKUs4bqTg530 → kxxAA66bah_yhPYqLBHE2}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{fOnWQBjWXMKUs4bqTg530 → kxxAA66bah_yhPYqLBHE2}/_ssgManifest.js +0 -0
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
import { readFileSync } from "node:fs";
|
|
5
5
|
import { join, dirname } from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
-
import {
|
|
7
|
+
import { test } from 'node:test';
|
|
8
|
+
import assert from 'node:assert/strict';
|
|
8
9
|
|
|
9
10
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
const { assertTrue, report } = createTestContext();
|
|
11
11
|
|
|
12
12
|
const dataPath = join(__dirname, "..", "visualizer-data.ts");
|
|
13
13
|
const dataSrc = readFileSync(dataPath, "utf-8");
|
|
@@ -15,293 +15,293 @@ const dataSrc = readFileSync(dataPath, "utf-8");
|
|
|
15
15
|
console.log("\n=== visualizer-data.ts source contracts ===");
|
|
16
16
|
|
|
17
17
|
// Interface exports
|
|
18
|
-
|
|
18
|
+
assert.ok(
|
|
19
19
|
dataSrc.includes("export interface VisualizerData"),
|
|
20
20
|
"exports VisualizerData interface",
|
|
21
21
|
);
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
assert.ok(
|
|
24
24
|
dataSrc.includes("export interface VisualizerMilestone"),
|
|
25
25
|
"exports VisualizerMilestone interface",
|
|
26
26
|
);
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
assert.ok(
|
|
29
29
|
dataSrc.includes("export interface VisualizerSlice"),
|
|
30
30
|
"exports VisualizerSlice interface",
|
|
31
31
|
);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
assert.ok(
|
|
34
34
|
dataSrc.includes("export interface VisualizerTask"),
|
|
35
35
|
"exports VisualizerTask interface",
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
// New interfaces
|
|
39
|
-
|
|
39
|
+
assert.ok(
|
|
40
40
|
dataSrc.includes("export interface CriticalPathInfo"),
|
|
41
41
|
"exports CriticalPathInfo interface",
|
|
42
42
|
);
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
assert.ok(
|
|
45
45
|
dataSrc.includes("export interface AgentActivityInfo"),
|
|
46
46
|
"exports AgentActivityInfo interface",
|
|
47
47
|
);
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
assert.ok(
|
|
50
50
|
dataSrc.includes("export interface ChangelogEntry"),
|
|
51
51
|
"exports ChangelogEntry interface",
|
|
52
52
|
);
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
assert.ok(
|
|
55
55
|
dataSrc.includes("export interface ChangelogInfo"),
|
|
56
56
|
"exports ChangelogInfo interface",
|
|
57
57
|
);
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
assert.ok(
|
|
60
60
|
dataSrc.includes("export interface SliceVerification"),
|
|
61
61
|
"exports SliceVerification interface",
|
|
62
62
|
);
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
assert.ok(
|
|
65
65
|
dataSrc.includes("export interface KnowledgeInfo"),
|
|
66
66
|
"exports KnowledgeInfo interface",
|
|
67
67
|
);
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
assert.ok(
|
|
70
70
|
dataSrc.includes("export interface CapturesInfo"),
|
|
71
71
|
"exports CapturesInfo interface",
|
|
72
72
|
);
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
assert.ok(
|
|
75
75
|
dataSrc.includes("export interface HealthInfo"),
|
|
76
76
|
"exports HealthInfo interface",
|
|
77
77
|
);
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
assert.ok(
|
|
80
80
|
dataSrc.includes("export interface VisualizerDiscussionState"),
|
|
81
81
|
"exports VisualizerDiscussionState interface",
|
|
82
82
|
);
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
assert.ok(
|
|
85
85
|
dataSrc.includes("export type DiscussionState"),
|
|
86
86
|
"exports DiscussionState type",
|
|
87
87
|
);
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
assert.ok(
|
|
90
90
|
dataSrc.includes("export interface VisualizerSliceRef"),
|
|
91
91
|
"exports VisualizerSliceRef interface",
|
|
92
92
|
);
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
assert.ok(
|
|
95
95
|
dataSrc.includes("export interface VisualizerSliceActivity"),
|
|
96
96
|
"exports VisualizerSliceActivity interface",
|
|
97
97
|
);
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
assert.ok(
|
|
100
100
|
dataSrc.includes("export interface VisualizerStats"),
|
|
101
101
|
"exports VisualizerStats interface",
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
// Function export
|
|
105
|
-
|
|
105
|
+
assert.ok(
|
|
106
106
|
dataSrc.includes("export async function loadVisualizerData"),
|
|
107
107
|
"exports loadVisualizerData function",
|
|
108
108
|
);
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
assert.ok(
|
|
111
111
|
dataSrc.includes("export function computeCriticalPath"),
|
|
112
112
|
"exports computeCriticalPath function",
|
|
113
113
|
);
|
|
114
114
|
|
|
115
115
|
// Data source usage
|
|
116
|
-
|
|
116
|
+
assert.ok(
|
|
117
117
|
dataSrc.includes("deriveState"),
|
|
118
118
|
"uses deriveState for state derivation",
|
|
119
119
|
);
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
assert.ok(
|
|
122
122
|
dataSrc.includes("findMilestoneIds"),
|
|
123
123
|
"uses findMilestoneIds to enumerate milestones",
|
|
124
124
|
);
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
assert.ok(
|
|
127
127
|
dataSrc.includes("parseRoadmap"),
|
|
128
128
|
"uses parseRoadmap for roadmap parsing",
|
|
129
129
|
);
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
assert.ok(
|
|
132
132
|
dataSrc.includes("parsePlan"),
|
|
133
133
|
"uses parsePlan for plan parsing",
|
|
134
134
|
);
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
assert.ok(
|
|
137
137
|
dataSrc.includes("parseSummary"),
|
|
138
138
|
"uses parseSummary for changelog parsing",
|
|
139
139
|
);
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
assert.ok(
|
|
142
142
|
dataSrc.includes("getLedger"),
|
|
143
143
|
"uses getLedger for in-memory metrics",
|
|
144
144
|
);
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
assert.ok(
|
|
147
147
|
dataSrc.includes("loadLedgerFromDisk"),
|
|
148
148
|
"uses loadLedgerFromDisk as fallback",
|
|
149
149
|
);
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
assert.ok(
|
|
152
152
|
dataSrc.includes("getProjectTotals"),
|
|
153
153
|
"uses getProjectTotals for aggregation",
|
|
154
154
|
);
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
assert.ok(
|
|
157
157
|
dataSrc.includes("aggregateByPhase"),
|
|
158
158
|
"uses aggregateByPhase",
|
|
159
159
|
);
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
assert.ok(
|
|
162
162
|
dataSrc.includes("aggregateBySlice"),
|
|
163
163
|
"uses aggregateBySlice",
|
|
164
164
|
);
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
assert.ok(
|
|
167
167
|
dataSrc.includes("aggregateByModel"),
|
|
168
168
|
"uses aggregateByModel",
|
|
169
169
|
);
|
|
170
170
|
|
|
171
|
-
|
|
171
|
+
assert.ok(
|
|
172
172
|
dataSrc.includes("aggregateByTier"),
|
|
173
173
|
"uses aggregateByTier",
|
|
174
174
|
);
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
assert.ok(
|
|
177
177
|
dataSrc.includes("formatTierSavings"),
|
|
178
178
|
"uses formatTierSavings",
|
|
179
179
|
);
|
|
180
180
|
|
|
181
|
-
|
|
181
|
+
assert.ok(
|
|
182
182
|
dataSrc.includes("loadAllCaptures"),
|
|
183
183
|
"uses loadAllCaptures",
|
|
184
184
|
);
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
assert.ok(
|
|
187
187
|
dataSrc.includes("countPendingCaptures"),
|
|
188
188
|
"uses countPendingCaptures",
|
|
189
189
|
);
|
|
190
190
|
|
|
191
|
-
|
|
191
|
+
assert.ok(
|
|
192
192
|
dataSrc.includes("loadEffectiveGSDPreferences"),
|
|
193
193
|
"uses loadEffectiveGSDPreferences",
|
|
194
194
|
);
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
assert.ok(
|
|
197
197
|
dataSrc.includes("resolveGsdRootFile"),
|
|
198
198
|
"uses resolveGsdRootFile for KNOWLEDGE path",
|
|
199
199
|
);
|
|
200
200
|
|
|
201
201
|
// Interface fields
|
|
202
|
-
|
|
202
|
+
assert.ok(
|
|
203
203
|
dataSrc.includes("dependsOn: string[]"),
|
|
204
204
|
"VisualizerMilestone has dependsOn field",
|
|
205
205
|
);
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
assert.ok(
|
|
208
208
|
dataSrc.includes("depends: string[]"),
|
|
209
209
|
"VisualizerSlice has depends field",
|
|
210
210
|
);
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
assert.ok(
|
|
213
213
|
dataSrc.includes("totals: ProjectTotals | null"),
|
|
214
214
|
"VisualizerData has nullable totals",
|
|
215
215
|
);
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
assert.ok(
|
|
218
218
|
dataSrc.includes("units: UnitMetrics[]"),
|
|
219
219
|
"VisualizerData has units array",
|
|
220
220
|
);
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
assert.ok(
|
|
223
223
|
dataSrc.includes("estimate?: string"),
|
|
224
224
|
"VisualizerTask has optional estimate field",
|
|
225
225
|
);
|
|
226
226
|
|
|
227
227
|
// New data model fields
|
|
228
|
-
|
|
228
|
+
assert.ok(
|
|
229
229
|
dataSrc.includes("criticalPath: CriticalPathInfo"),
|
|
230
230
|
"VisualizerData has criticalPath field",
|
|
231
231
|
);
|
|
232
232
|
|
|
233
|
-
|
|
233
|
+
assert.ok(
|
|
234
234
|
dataSrc.includes("remainingSliceCount: number"),
|
|
235
235
|
"VisualizerData has remainingSliceCount field",
|
|
236
236
|
);
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
assert.ok(
|
|
239
239
|
dataSrc.includes("agentActivity: AgentActivityInfo | null"),
|
|
240
240
|
"VisualizerData has agentActivity field",
|
|
241
241
|
);
|
|
242
242
|
|
|
243
|
-
|
|
243
|
+
assert.ok(
|
|
244
244
|
dataSrc.includes("changelog: ChangelogInfo"),
|
|
245
245
|
"VisualizerData has changelog field",
|
|
246
246
|
);
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
assert.ok(
|
|
249
249
|
dataSrc.includes("sliceVerifications: SliceVerification[]"),
|
|
250
250
|
"VisualizerData has sliceVerifications field",
|
|
251
251
|
);
|
|
252
252
|
|
|
253
|
-
|
|
253
|
+
assert.ok(
|
|
254
254
|
dataSrc.includes("knowledge: KnowledgeInfo"),
|
|
255
255
|
"VisualizerData has knowledge field",
|
|
256
256
|
);
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
assert.ok(
|
|
259
259
|
dataSrc.includes("captures: CapturesInfo"),
|
|
260
260
|
"VisualizerData has captures field",
|
|
261
261
|
);
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
assert.ok(
|
|
264
264
|
dataSrc.includes("health: HealthInfo"),
|
|
265
265
|
"VisualizerData has health field",
|
|
266
266
|
);
|
|
267
267
|
|
|
268
|
-
|
|
268
|
+
assert.ok(
|
|
269
269
|
dataSrc.includes("stats: VisualizerStats"),
|
|
270
270
|
"VisualizerData has stats field",
|
|
271
271
|
);
|
|
272
272
|
|
|
273
|
-
|
|
273
|
+
assert.ok(
|
|
274
274
|
dataSrc.includes("discussion: VisualizerDiscussionState[]"),
|
|
275
275
|
"VisualizerData has discussion field",
|
|
276
276
|
);
|
|
277
277
|
|
|
278
|
-
|
|
278
|
+
assert.ok(
|
|
279
279
|
dataSrc.includes("loadDiscussionState"),
|
|
280
280
|
"uses loadDiscussionState helper",
|
|
281
281
|
);
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
assert.ok(
|
|
284
284
|
dataSrc.includes("buildVisualizerStats"),
|
|
285
285
|
"uses buildVisualizerStats helper",
|
|
286
286
|
);
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
assert.ok(
|
|
289
289
|
dataSrc.includes("byTier: TierAggregate[]"),
|
|
290
290
|
"VisualizerData has byTier field",
|
|
291
291
|
);
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
assert.ok(
|
|
294
294
|
dataSrc.includes("tierSavingsLine: string"),
|
|
295
295
|
"VisualizerData has tierSavingsLine field",
|
|
296
296
|
);
|
|
297
297
|
|
|
298
298
|
// completedAt must be coerced to String() to handle YAML Date objects (issue #644)
|
|
299
|
-
|
|
299
|
+
assert.ok(
|
|
300
300
|
dataSrc.includes("String(summary.frontmatter.completed_at"),
|
|
301
301
|
"completedAt assignment coerces to String() for YAML Date safety",
|
|
302
302
|
);
|
|
303
303
|
|
|
304
|
-
|
|
304
|
+
assert.ok(
|
|
305
305
|
dataSrc.includes("String(b.completedAt") && dataSrc.includes("String(a.completedAt"),
|
|
306
306
|
"changelog sort coerces completedAt to String() for YAML Date safety",
|
|
307
307
|
);
|
|
@@ -312,112 +312,112 @@ const overlaySrc = readFileSync(overlayPath, "utf-8");
|
|
|
312
312
|
|
|
313
313
|
console.log("\n=== visualizer-overlay.ts source contracts ===");
|
|
314
314
|
|
|
315
|
-
|
|
315
|
+
assert.ok(
|
|
316
316
|
overlaySrc.includes("export class GSDVisualizerOverlay"),
|
|
317
317
|
"exports GSDVisualizerOverlay class",
|
|
318
318
|
);
|
|
319
319
|
|
|
320
|
-
|
|
320
|
+
assert.ok(
|
|
321
321
|
overlaySrc.includes("loadVisualizerData"),
|
|
322
322
|
"overlay uses loadVisualizerData",
|
|
323
323
|
);
|
|
324
324
|
|
|
325
|
-
|
|
325
|
+
assert.ok(
|
|
326
326
|
overlaySrc.includes("renderProgressView"),
|
|
327
327
|
"overlay delegates to renderProgressView",
|
|
328
328
|
);
|
|
329
329
|
|
|
330
|
-
|
|
330
|
+
assert.ok(
|
|
331
331
|
overlaySrc.includes("renderDepsView"),
|
|
332
332
|
"overlay delegates to renderDepsView",
|
|
333
333
|
);
|
|
334
334
|
|
|
335
|
-
|
|
335
|
+
assert.ok(
|
|
336
336
|
overlaySrc.includes("renderMetricsView"),
|
|
337
337
|
"overlay delegates to renderMetricsView",
|
|
338
338
|
);
|
|
339
339
|
|
|
340
|
-
|
|
340
|
+
assert.ok(
|
|
341
341
|
overlaySrc.includes("renderTimelineView"),
|
|
342
342
|
"overlay delegates to renderTimelineView",
|
|
343
343
|
);
|
|
344
344
|
|
|
345
|
-
|
|
345
|
+
assert.ok(
|
|
346
346
|
overlaySrc.includes("renderAgentView"),
|
|
347
347
|
"overlay delegates to renderAgentView",
|
|
348
348
|
);
|
|
349
349
|
|
|
350
|
-
|
|
350
|
+
assert.ok(
|
|
351
351
|
overlaySrc.includes("renderChangelogView"),
|
|
352
352
|
"overlay delegates to renderChangelogView",
|
|
353
353
|
);
|
|
354
354
|
|
|
355
|
-
|
|
355
|
+
assert.ok(
|
|
356
356
|
overlaySrc.includes("renderExportView"),
|
|
357
357
|
"overlay delegates to renderExportView",
|
|
358
358
|
);
|
|
359
359
|
|
|
360
|
-
|
|
360
|
+
assert.ok(
|
|
361
361
|
overlaySrc.includes("renderKnowledgeView"),
|
|
362
362
|
"overlay delegates to renderKnowledgeView",
|
|
363
363
|
);
|
|
364
364
|
|
|
365
|
-
|
|
365
|
+
assert.ok(
|
|
366
366
|
overlaySrc.includes("renderCapturesView"),
|
|
367
367
|
"overlay delegates to renderCapturesView",
|
|
368
368
|
);
|
|
369
369
|
|
|
370
|
-
|
|
370
|
+
assert.ok(
|
|
371
371
|
overlaySrc.includes("renderHealthView"),
|
|
372
372
|
"overlay delegates to renderHealthView",
|
|
373
373
|
);
|
|
374
374
|
|
|
375
|
-
|
|
375
|
+
assert.ok(
|
|
376
376
|
overlaySrc.includes("handleInput"),
|
|
377
377
|
"overlay has handleInput method",
|
|
378
378
|
);
|
|
379
379
|
|
|
380
|
-
|
|
380
|
+
assert.ok(
|
|
381
381
|
overlaySrc.includes("dispose"),
|
|
382
382
|
"overlay has dispose method",
|
|
383
383
|
);
|
|
384
384
|
|
|
385
|
-
|
|
385
|
+
assert.ok(
|
|
386
386
|
overlaySrc.includes("wrapInBox"),
|
|
387
387
|
"overlay has wrapInBox helper",
|
|
388
388
|
);
|
|
389
389
|
|
|
390
|
-
|
|
390
|
+
assert.ok(
|
|
391
391
|
overlaySrc.includes("activeTab"),
|
|
392
392
|
"overlay tracks active tab",
|
|
393
393
|
);
|
|
394
394
|
|
|
395
|
-
|
|
395
|
+
assert.ok(
|
|
396
396
|
overlaySrc.includes("scrollOffsets"),
|
|
397
397
|
"overlay tracks per-tab scroll offsets",
|
|
398
398
|
);
|
|
399
399
|
|
|
400
|
-
|
|
400
|
+
assert.ok(
|
|
401
401
|
overlaySrc.includes("filterMode"),
|
|
402
402
|
"overlay has filterMode state",
|
|
403
403
|
);
|
|
404
404
|
|
|
405
|
-
|
|
405
|
+
assert.ok(
|
|
406
406
|
overlaySrc.includes("filterText"),
|
|
407
407
|
"overlay has filterText state",
|
|
408
408
|
);
|
|
409
409
|
|
|
410
|
-
|
|
410
|
+
assert.ok(
|
|
411
411
|
overlaySrc.includes("filterField"),
|
|
412
412
|
"overlay has filterField state",
|
|
413
413
|
);
|
|
414
414
|
|
|
415
|
-
|
|
415
|
+
assert.ok(
|
|
416
416
|
overlaySrc.includes("TAB_COUNT"),
|
|
417
417
|
"overlay defines TAB_COUNT",
|
|
418
418
|
);
|
|
419
419
|
|
|
420
|
-
|
|
420
|
+
assert.ok(
|
|
421
421
|
overlaySrc.includes("0 Export"),
|
|
422
422
|
"overlay has 10 tab labels",
|
|
423
423
|
);
|
|
@@ -428,19 +428,17 @@ const coreHandlerSrc = readFileSync(coreHandlerPath, "utf-8");
|
|
|
428
428
|
|
|
429
429
|
console.log("\n=== commands/handlers/core.ts integration ===");
|
|
430
430
|
|
|
431
|
-
|
|
431
|
+
assert.ok(
|
|
432
432
|
coreHandlerSrc.includes('"visualize"'),
|
|
433
433
|
"core.ts has visualize in subcommands array",
|
|
434
434
|
);
|
|
435
435
|
|
|
436
|
-
|
|
436
|
+
assert.ok(
|
|
437
437
|
coreHandlerSrc.includes("GSDVisualizerOverlay"),
|
|
438
438
|
"core.ts imports GSDVisualizerOverlay",
|
|
439
439
|
);
|
|
440
440
|
|
|
441
|
-
|
|
441
|
+
assert.ok(
|
|
442
442
|
coreHandlerSrc.includes("handleVisualize"),
|
|
443
443
|
"core.ts has handleVisualize handler",
|
|
444
444
|
);
|
|
445
|
-
|
|
446
|
-
report();
|