gsd-pi 2.33.1 → 2.34.0-dev.bbb5216
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/dist/bundled-resource-path.d.ts +8 -0
- package/dist/bundled-resource-path.js +14 -0
- package/dist/cli.js +16 -0
- package/dist/headless-query.js +6 -6
- package/dist/resource-loader.d.ts +2 -0
- package/dist/resource-loader.js +39 -4
- package/dist/resources/extensions/ask-user-questions.js +217 -0
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +180 -0
- package/dist/resources/extensions/async-jobs/await-tool.js +90 -0
- package/dist/resources/extensions/async-jobs/cancel-job-tool.js +28 -0
- package/dist/resources/extensions/async-jobs/index.js +119 -0
- package/dist/resources/extensions/async-jobs/job-manager.js +159 -0
- package/dist/resources/extensions/aws-auth/index.js +138 -0
- package/dist/resources/extensions/bg-shell/bg-shell-command.js +182 -0
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +343 -0
- package/dist/resources/extensions/bg-shell/bg-shell-tool.js +831 -0
- package/dist/resources/extensions/bg-shell/index.js +41 -0
- package/dist/resources/extensions/bg-shell/interaction.js +160 -0
- package/dist/resources/extensions/bg-shell/output-formatter.js +245 -0
- package/dist/resources/extensions/bg-shell/overlay.js +378 -0
- package/dist/resources/extensions/bg-shell/process-manager.js +413 -0
- package/dist/resources/extensions/bg-shell/readiness-detector.js +109 -0
- package/dist/resources/extensions/bg-shell/types.js +96 -0
- package/dist/resources/extensions/bg-shell/utilities.js +50 -0
- package/dist/resources/extensions/browser-tools/capture.js +179 -0
- package/dist/resources/extensions/browser-tools/core.js +899 -0
- package/dist/resources/extensions/browser-tools/{evaluate-helpers.ts → evaluate-helpers.js} +0 -1
- package/dist/resources/extensions/browser-tools/index.js +123 -0
- package/dist/resources/extensions/browser-tools/lifecycle.js +222 -0
- package/dist/resources/extensions/browser-tools/refs.js +254 -0
- package/dist/resources/extensions/browser-tools/settle.js +173 -0
- package/dist/resources/extensions/browser-tools/state.js +126 -0
- package/dist/resources/extensions/browser-tools/tools/action-cache.js +179 -0
- package/dist/resources/extensions/browser-tools/tools/assertions.js +320 -0
- package/dist/resources/extensions/browser-tools/tools/codegen.js +242 -0
- package/dist/resources/extensions/browser-tools/tools/device.js +162 -0
- package/dist/resources/extensions/browser-tools/tools/extract.js +191 -0
- package/dist/resources/extensions/browser-tools/tools/forms.js +710 -0
- package/dist/resources/extensions/browser-tools/tools/injection-detect.js +178 -0
- package/dist/resources/extensions/browser-tools/tools/inspection.js +426 -0
- package/dist/resources/extensions/browser-tools/tools/intent.js +556 -0
- package/dist/resources/extensions/browser-tools/tools/interaction.js +776 -0
- package/dist/resources/extensions/browser-tools/tools/navigation.js +208 -0
- package/dist/resources/extensions/browser-tools/tools/network-mock.js +194 -0
- package/dist/resources/extensions/browser-tools/tools/pages.js +280 -0
- package/dist/resources/extensions/browser-tools/tools/pdf.js +74 -0
- package/dist/resources/extensions/browser-tools/tools/refs.js +485 -0
- package/dist/resources/extensions/browser-tools/tools/screenshot.js +87 -0
- package/dist/resources/extensions/browser-tools/tools/session.js +375 -0
- package/dist/resources/extensions/browser-tools/tools/state-persistence.js +180 -0
- package/dist/resources/extensions/browser-tools/tools/visual-diff.js +174 -0
- package/dist/resources/extensions/browser-tools/tools/wait.js +201 -0
- package/dist/resources/extensions/browser-tools/tools/zoom.js +90 -0
- package/dist/resources/extensions/browser-tools/utils.js +490 -0
- package/dist/resources/extensions/context7/index.js +337 -0
- package/dist/resources/extensions/get-secrets-from-user.js +492 -0
- package/dist/resources/extensions/google-search/index.js +373 -0
- package/dist/resources/extensions/gsd/activity-log.js +146 -0
- package/dist/resources/extensions/gsd/atomic-write.js +38 -0
- package/dist/resources/extensions/gsd/auto/session.js +182 -0
- package/dist/resources/extensions/gsd/auto-budget.js +30 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +429 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +185 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +353 -0
- package/dist/resources/extensions/gsd/auto-loop.js +956 -0
- package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
- package/dist/resources/extensions/gsd/auto-observability.js +56 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +385 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +1153 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +512 -0
- package/dist/resources/extensions/gsd/auto-start.js +414 -0
- package/dist/resources/extensions/gsd/auto-supervisor.js +47 -0
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
- package/dist/resources/extensions/gsd/auto-timers.js +180 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +30 -0
- package/dist/resources/extensions/gsd/auto-verification.js +171 -0
- package/dist/resources/extensions/gsd/auto-worktree-sync.js +167 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +830 -0
- package/dist/resources/extensions/gsd/auto.js +765 -0
- package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
- package/dist/resources/extensions/gsd/captures.js +354 -0
- package/dist/resources/extensions/gsd/claude-import.js +540 -0
- package/dist/resources/extensions/gsd/collision-diagnostics.js +226 -0
- package/dist/resources/extensions/gsd/commands-bootstrap.js +223 -0
- package/dist/resources/extensions/gsd/commands-config.js +89 -0
- package/dist/resources/extensions/gsd/commands-extensions.js +259 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +310 -0
- package/dist/resources/extensions/gsd/commands-inspect.js +70 -0
- package/dist/resources/extensions/gsd/commands-logs.js +468 -0
- package/dist/resources/extensions/gsd/commands-maintenance.js +185 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +660 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +408 -0
- package/dist/resources/extensions/gsd/commands.js +1024 -0
- package/dist/resources/extensions/gsd/complexity-classifier.js +257 -0
- package/dist/resources/extensions/gsd/{constants.ts → constants.js} +0 -6
- package/dist/resources/extensions/gsd/context-budget.js +187 -0
- package/dist/resources/extensions/gsd/context-store.js +165 -0
- package/dist/resources/extensions/gsd/crash-recovery.js +110 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.js +562 -0
- package/dist/resources/extensions/gsd/db-writer.js +298 -0
- package/dist/resources/extensions/gsd/debug-logger.js +161 -0
- package/dist/resources/extensions/gsd/detection.js +373 -0
- package/dist/resources/extensions/gsd/diff-context.js +168 -0
- package/dist/resources/extensions/gsd/dispatch-guard.js +75 -0
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +25 -18
- package/dist/resources/extensions/gsd/doctor-checks.js +562 -0
- package/dist/resources/extensions/gsd/doctor-environment.js +429 -0
- package/dist/resources/extensions/gsd/doctor-format.js +71 -0
- package/dist/resources/extensions/gsd/doctor-proactive.js +239 -0
- package/dist/resources/extensions/gsd/doctor-providers.js +292 -0
- package/dist/resources/extensions/gsd/doctor-types.js +12 -0
- package/dist/resources/extensions/gsd/doctor.js +672 -0
- package/dist/resources/extensions/gsd/error-utils.js +6 -0
- package/dist/resources/extensions/gsd/{errors.ts → errors.js} +6 -11
- package/dist/resources/extensions/gsd/exit-command.js +11 -0
- package/dist/resources/extensions/gsd/{export-html.ts → export-html.js} +482 -614
- package/dist/resources/extensions/gsd/export.js +268 -0
- package/dist/resources/extensions/gsd/file-watcher.js +76 -0
- package/dist/resources/extensions/gsd/files.js +937 -0
- package/dist/resources/extensions/gsd/forensics.js +511 -0
- package/dist/resources/extensions/gsd/{git-constants.ts → git-constants.js} +4 -5
- package/dist/resources/extensions/gsd/git-self-heal.js +113 -0
- package/dist/resources/extensions/gsd/git-service.js +460 -0
- package/dist/resources/extensions/gsd/{gitignore.ts → gitignore.js} +98 -125
- package/dist/resources/extensions/gsd/gsd-db.js +735 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
- package/dist/resources/extensions/gsd/guided-flow.js +1158 -0
- package/dist/resources/extensions/gsd/health-widget.js +141 -0
- package/dist/resources/extensions/gsd/history.js +118 -0
- package/dist/resources/extensions/gsd/index.js +1114 -0
- package/dist/resources/extensions/gsd/init-wizard.js +479 -0
- package/dist/resources/extensions/gsd/json-persistence.js +62 -0
- package/dist/resources/extensions/gsd/{jsonl-utils.ts → jsonl-utils.js} +10 -7
- package/dist/resources/extensions/gsd/key-manager.js +829 -0
- package/dist/resources/extensions/gsd/marketplace-discovery.js +356 -0
- package/dist/resources/extensions/gsd/md-importer.js +440 -0
- package/dist/resources/extensions/gsd/memory-extractor.js +295 -0
- package/dist/resources/extensions/gsd/memory-store.js +351 -0
- package/dist/resources/extensions/gsd/metrics.js +377 -0
- package/dist/resources/extensions/gsd/migrate/command.js +157 -0
- package/dist/resources/extensions/gsd/migrate/index.js +7 -0
- package/dist/resources/extensions/gsd/migrate/parser.js +268 -0
- package/dist/resources/extensions/gsd/migrate/parsers.js +477 -0
- package/dist/resources/extensions/gsd/migrate/preview.js +47 -0
- package/dist/resources/extensions/gsd/migrate/transformer.js +278 -0
- package/dist/resources/extensions/gsd/migrate/types.js +4 -0
- package/dist/resources/extensions/gsd/migrate/validator.js +41 -0
- package/dist/resources/extensions/gsd/migrate/writer.js +477 -0
- package/dist/resources/extensions/gsd/migrate-external.js +130 -0
- package/dist/resources/extensions/gsd/milestone-actions.js +111 -0
- package/dist/resources/extensions/gsd/{milestone-ids.ts → milestone-ids.js} +50 -63
- package/dist/resources/extensions/gsd/model-cost-table.js +48 -0
- package/dist/resources/extensions/gsd/model-router.js +187 -0
- package/dist/resources/extensions/gsd/namespaced-registry.js +322 -0
- package/dist/resources/extensions/gsd/namespaced-resolver.js +176 -0
- package/dist/resources/extensions/gsd/native-git-bridge.js +842 -0
- package/dist/resources/extensions/gsd/native-parser-bridge.js +156 -0
- package/dist/resources/extensions/gsd/notifications.js +58 -0
- package/dist/resources/extensions/gsd/observability-validator.js +398 -0
- package/dist/resources/extensions/gsd/parallel-eligibility.js +182 -0
- package/dist/resources/extensions/gsd/parallel-merge.js +121 -0
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +687 -0
- package/dist/resources/extensions/gsd/paths.js +414 -0
- package/dist/resources/extensions/gsd/plugin-importer.js +254 -0
- package/dist/resources/extensions/gsd/post-unit-hooks.js +433 -0
- package/dist/resources/extensions/gsd/preferences-models.js +294 -0
- package/dist/resources/extensions/gsd/preferences-skills.js +154 -0
- package/dist/resources/extensions/gsd/preferences-types.js +73 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +607 -0
- package/dist/resources/extensions/gsd/preferences.js +325 -0
- package/dist/resources/extensions/gsd/progress-score.js +102 -0
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +150 -0
- package/dist/resources/extensions/gsd/prompt-compressor.js +393 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +119 -0
- package/dist/resources/extensions/gsd/prompt-ordering.js +170 -0
- package/dist/resources/extensions/gsd/provider-error-pause.js +60 -0
- package/dist/resources/extensions/gsd/queue-order.js +178 -0
- package/dist/resources/extensions/gsd/queue-reorder-ui.js +234 -0
- package/dist/resources/extensions/gsd/quick.js +206 -0
- package/dist/resources/extensions/gsd/repo-identity.js +187 -0
- package/dist/resources/extensions/gsd/{reports.ts → reports.js} +146 -241
- package/dist/resources/extensions/gsd/{resource-version.ts → resource-version.js} +50 -53
- package/dist/resources/extensions/gsd/roadmap-slices.js +130 -0
- package/dist/resources/extensions/gsd/routing-history.js +210 -0
- package/dist/resources/extensions/gsd/safe-fs.js +52 -0
- package/dist/resources/extensions/gsd/semantic-chunker.js +254 -0
- package/dist/resources/extensions/gsd/session-forensics.js +427 -0
- package/dist/resources/extensions/gsd/session-lock.js +397 -0
- package/dist/resources/extensions/gsd/session-status-io.js +134 -0
- package/dist/resources/extensions/gsd/skill-discovery.js +121 -0
- package/dist/resources/extensions/gsd/skill-health.js +324 -0
- package/dist/resources/extensions/gsd/{skill-telemetry.ts → skill-telemetry.js} +58 -74
- package/dist/resources/extensions/gsd/state.js +653 -0
- package/dist/resources/extensions/gsd/structured-data-formatter.js +97 -0
- package/dist/resources/extensions/gsd/summary-distiller.js +212 -0
- package/dist/resources/extensions/gsd/templates/preferences.md +1 -0
- package/dist/resources/extensions/gsd/token-counter.js +54 -0
- package/dist/resources/extensions/gsd/triage-resolution.js +217 -0
- package/dist/resources/extensions/gsd/triage-ui.js +125 -0
- package/dist/resources/extensions/gsd/types.js +4 -0
- package/dist/resources/extensions/gsd/undo.js +205 -0
- package/dist/resources/extensions/gsd/unit-id.js +7 -0
- package/dist/resources/extensions/gsd/unit-runtime.js +131 -0
- package/dist/resources/extensions/gsd/validate-directory.js +143 -0
- package/dist/resources/extensions/gsd/verification-evidence.js +122 -0
- package/dist/resources/extensions/gsd/verification-gate.js +514 -0
- package/dist/resources/extensions/gsd/visualizer-data.js +612 -0
- package/dist/resources/extensions/gsd/visualizer-overlay.js +501 -0
- package/dist/resources/extensions/gsd/visualizer-views.js +893 -0
- package/dist/resources/extensions/gsd/workflow-templates.js +188 -0
- package/dist/resources/extensions/gsd/workspace-index.js +139 -0
- package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +40 -0
- package/dist/resources/extensions/gsd/worktree-command.js +682 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +358 -0
- package/dist/resources/extensions/gsd/worktree-resolver.js +344 -0
- package/dist/resources/extensions/gsd/worktree.js +199 -0
- package/dist/resources/extensions/mac-tools/index.js +768 -0
- package/dist/resources/extensions/mcp-client/index.js +363 -0
- package/dist/resources/extensions/package.json +3 -0
- package/dist/resources/extensions/remote-questions/config.js +70 -0
- package/dist/resources/extensions/remote-questions/discord-adapter.js +134 -0
- package/dist/resources/extensions/remote-questions/format.js +234 -0
- package/dist/resources/extensions/remote-questions/http-client.js +43 -0
- package/dist/resources/extensions/remote-questions/manager.js +156 -0
- package/dist/resources/extensions/remote-questions/{mod.ts → mod.js} +1 -10
- package/dist/resources/extensions/remote-questions/notify.js +89 -0
- package/dist/resources/extensions/remote-questions/remote-command.js +453 -0
- package/dist/resources/extensions/remote-questions/slack-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/status.js +25 -0
- package/dist/resources/extensions/remote-questions/store.js +70 -0
- package/dist/resources/extensions/remote-questions/telegram-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/types.js +5 -0
- package/dist/resources/extensions/search-the-web/cache.js +74 -0
- package/dist/resources/extensions/search-the-web/command-search-provider.js +79 -0
- package/dist/resources/extensions/search-the-web/format.js +161 -0
- package/dist/resources/extensions/search-the-web/http.js +178 -0
- package/dist/resources/extensions/search-the-web/index.js +41 -0
- package/dist/resources/extensions/search-the-web/native-search.js +166 -0
- package/dist/resources/extensions/search-the-web/provider.js +143 -0
- package/dist/resources/extensions/search-the-web/tavily.js +82 -0
- package/dist/resources/extensions/search-the-web/tool-fetch-page.js +452 -0
- package/dist/resources/extensions/search-the-web/tool-llm-context.js +455 -0
- package/dist/resources/extensions/search-the-web/tool-search.js +482 -0
- package/dist/resources/extensions/search-the-web/url-utils.js +121 -0
- package/dist/resources/extensions/shared/confirm-ui.js +96 -0
- package/dist/resources/extensions/shared/{format-utils.ts → format-utils.js} +85 -91
- package/dist/resources/extensions/shared/frontmatter.js +109 -0
- package/dist/resources/extensions/shared/interview-ui.js +569 -0
- package/dist/resources/extensions/shared/{mod.ts → mod.js} +2 -24
- package/dist/resources/extensions/shared/next-action-ui.js +168 -0
- package/dist/resources/extensions/shared/{path-display.ts → path-display.js} +2 -3
- package/dist/resources/extensions/shared/sanitize.js +17 -0
- package/dist/resources/extensions/shared/terminal.js +21 -0
- package/dist/resources/extensions/shared/ui.js +245 -0
- package/dist/resources/extensions/shared/wizard-ui.js +478 -0
- package/dist/resources/extensions/slash-commands/audit.js +72 -0
- package/dist/resources/extensions/slash-commands/clear.js +8 -0
- package/dist/resources/extensions/slash-commands/create-extension.js +264 -0
- package/dist/resources/extensions/slash-commands/create-slash-command.js +208 -0
- package/dist/resources/extensions/slash-commands/index.js +10 -0
- package/dist/resources/extensions/subagent/agents.js +103 -0
- package/dist/resources/extensions/subagent/index.js +905 -0
- package/dist/resources/extensions/subagent/isolation.js +384 -0
- package/dist/resources/extensions/subagent/worker-registry.js +73 -0
- package/dist/resources/extensions/ttsr/index.js +144 -0
- package/dist/resources/extensions/ttsr/rule-loader.js +70 -0
- package/dist/resources/extensions/ttsr/ttsr-manager.js +380 -0
- package/dist/resources/extensions/universal-config/discovery.js +94 -0
- package/dist/resources/extensions/universal-config/format.js +178 -0
- package/dist/resources/extensions/universal-config/index.js +99 -0
- package/dist/resources/extensions/universal-config/scanners.js +574 -0
- package/dist/resources/extensions/universal-config/tools.js +57 -0
- package/dist/resources/extensions/universal-config/types.js +8 -0
- package/dist/resources/extensions/voice/index.js +247 -0
- package/dist/startup-timings.d.ts +2 -0
- package/dist/startup-timings.js +22 -0
- package/dist/tool-bootstrap.js +59 -11
- package/dist/worktree-cli.js +7 -7
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +9 -0
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/agent-session.ts +9 -0
- package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
- package/packages/pi-coding-agent/src/index.ts +1 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/bg-shell/index.ts +41 -46
- package/src/resources/extensions/browser-tools/index.ts +156 -67
- package/src/resources/extensions/gsd/auto/session.ts +47 -30
- package/src/resources/extensions/gsd/auto-dashboard.ts +28 -131
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +6 -1
- package/src/resources/extensions/gsd/auto-dispatch.ts +135 -91
- package/src/resources/extensions/gsd/auto-loop.ts +1665 -0
- package/src/resources/extensions/gsd/auto-observability.ts +4 -2
- package/src/resources/extensions/gsd/auto-post-unit.ts +85 -228
- package/src/resources/extensions/gsd/auto-prompts.ts +138 -109
- package/src/resources/extensions/gsd/auto-recovery.ts +124 -118
- package/src/resources/extensions/gsd/auto-start.ts +440 -354
- package/src/resources/extensions/gsd/auto-supervisor.ts +5 -12
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +8 -8
- package/src/resources/extensions/gsd/auto-timers.ts +3 -4
- package/src/resources/extensions/gsd/auto-verification.ts +76 -72
- package/src/resources/extensions/gsd/auto-worktree-sync.ts +204 -0
- package/src/resources/extensions/gsd/auto-worktree.ts +453 -133
- package/src/resources/extensions/gsd/auto.ts +516 -1189
- package/src/resources/extensions/gsd/captures.ts +10 -4
- package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
- package/src/resources/extensions/gsd/commands.ts +39 -31
- package/src/resources/extensions/gsd/dispatch-guard.ts +13 -9
- package/src/resources/extensions/gsd/docs/preferences-reference.md +25 -18
- package/src/resources/extensions/gsd/doctor-checks.ts +3 -4
- package/src/resources/extensions/gsd/git-service.ts +32 -12
- package/src/resources/extensions/gsd/gitignore.ts +4 -2
- package/src/resources/extensions/gsd/gsd-db.ts +375 -180
- package/src/resources/extensions/gsd/guided-flow.ts +22 -11
- package/src/resources/extensions/gsd/index.ts +76 -163
- package/src/resources/extensions/gsd/post-unit-hooks.ts +13 -13
- package/src/resources/extensions/gsd/progress-score.ts +65 -200
- package/src/resources/extensions/gsd/quick.ts +121 -76
- package/src/resources/extensions/gsd/repo-identity.ts +56 -22
- package/src/resources/extensions/gsd/session-lock.ts +17 -0
- package/src/resources/extensions/gsd/templates/preferences.md +1 -0
- package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +32 -59
- package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +75 -27
- package/src/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +1458 -0
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +8 -162
- package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +2 -108
- package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +1 -3
- package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -3
- package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +58 -0
- package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -55
- package/src/resources/extensions/gsd/tests/git-service.test.ts +16 -7
- package/src/resources/extensions/gsd/tests/headless-query.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +8 -11
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +4 -6
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/run-uat.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +64 -0
- package/src/resources/extensions/gsd/tests/sidecar-queue.test.ts +181 -0
- package/src/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -3
- package/src/resources/extensions/gsd/tests/token-profile.test.ts +6 -6
- package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +6 -6
- package/src/resources/extensions/gsd/tests/undo.test.ts +6 -0
- package/src/resources/extensions/gsd/tests/verification-evidence.test.ts +24 -26
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +7 -136
- package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +205 -0
- package/src/resources/extensions/gsd/tests/worktree-db.test.ts +442 -0
- package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -3
- package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +705 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +57 -106
- package/src/resources/extensions/gsd/tests/worktree.test.ts +5 -1
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +43 -132
- package/src/resources/extensions/gsd/types.ts +90 -77
- package/src/resources/extensions/gsd/undo.ts +42 -46
- package/src/resources/extensions/gsd/unit-runtime.ts +14 -18
- package/src/resources/extensions/gsd/verification-evidence.ts +0 -2
- package/src/resources/extensions/gsd/verification-gate.ts +4 -16
- package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
- package/src/resources/extensions/gsd/worktree-command.ts +29 -11
- package/src/resources/extensions/gsd/worktree-manager.ts +2 -3
- package/src/resources/extensions/gsd/worktree-resolver.ts +485 -0
- package/src/resources/extensions/gsd/worktree.ts +7 -44
- package/src/resources/extensions/package.json +3 -0
- package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
- package/src/resources/extensions/search-the-web/index.ts +35 -52
- package/src/resources/extensions/search-the-web/tavily.ts +1 -1
- package/dist/resources/extensions/ask-user-questions.ts +0 -290
- package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
- package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
- package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
- package/dist/resources/extensions/async-jobs/index.ts +0 -141
- package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
- package/dist/resources/extensions/aws-auth/index.ts +0 -144
- package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
- package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
- package/dist/resources/extensions/bg-shell/index.ts +0 -59
- package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
- package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
- package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
- package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
- package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
- package/dist/resources/extensions/bg-shell/types.ts +0 -303
- package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
- package/dist/resources/extensions/browser-tools/capture.ts +0 -199
- package/dist/resources/extensions/browser-tools/core.ts +0 -1196
- package/dist/resources/extensions/browser-tools/index.ts +0 -71
- package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
- package/dist/resources/extensions/browser-tools/refs.ts +0 -264
- package/dist/resources/extensions/browser-tools/settle.ts +0 -197
- package/dist/resources/extensions/browser-tools/state.ts +0 -408
- package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
- package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
- package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
- package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
- package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
- package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
- package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
- package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
- package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
- package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
- package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
- package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
- package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
- package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
- package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
- package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
- package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
- package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
- package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
- package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
- package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
- package/dist/resources/extensions/browser-tools/utils.ts +0 -660
- package/dist/resources/extensions/context7/index.ts +0 -428
- package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
- package/dist/resources/extensions/google-search/index.ts +0 -466
- package/dist/resources/extensions/gsd/activity-log.ts +0 -162
- package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
- package/dist/resources/extensions/gsd/auto/session.ts +0 -236
- package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
- package/dist/resources/extensions/gsd/auto-constants.ts +0 -6
- package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
- package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
- package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
- package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
- package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
- package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
- package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
- package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
- package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
- package/dist/resources/extensions/gsd/auto-start.ts +0 -483
- package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
- package/dist/resources/extensions/gsd/auto-supervisor.ts +0 -61
- package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
- package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
- package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
- package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
- package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
- package/dist/resources/extensions/gsd/auto-worktree.ts +0 -658
- package/dist/resources/extensions/gsd/auto.ts +0 -1834
- package/dist/resources/extensions/gsd/captures.ts +0 -427
- package/dist/resources/extensions/gsd/claude-import.ts +0 -656
- package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
- package/dist/resources/extensions/gsd/commands-config.ts +0 -102
- package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
- package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
- package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
- package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
- package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
- package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
- package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
- package/dist/resources/extensions/gsd/commands.ts +0 -1149
- package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
- package/dist/resources/extensions/gsd/context-budget.ts +0 -266
- package/dist/resources/extensions/gsd/context-store.ts +0 -195
- package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
- package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
- package/dist/resources/extensions/gsd/db-writer.ts +0 -360
- package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
- package/dist/resources/extensions/gsd/detection.ts +0 -470
- package/dist/resources/extensions/gsd/diff-context.ts +0 -214
- package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
- package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
- package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
- package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
- package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
- package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
- package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
- package/dist/resources/extensions/gsd/doctor.ts +0 -722
- package/dist/resources/extensions/gsd/error-utils.ts +0 -6
- package/dist/resources/extensions/gsd/exit-command.ts +0 -18
- package/dist/resources/extensions/gsd/export.ts +0 -317
- package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
- package/dist/resources/extensions/gsd/files.ts +0 -1058
- package/dist/resources/extensions/gsd/forensics.ts +0 -629
- package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
- package/dist/resources/extensions/gsd/git-service.ts +0 -580
- package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
- package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
- package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
- package/dist/resources/extensions/gsd/health-widget.ts +0 -167
- package/dist/resources/extensions/gsd/history.ts +0 -143
- package/dist/resources/extensions/gsd/index.ts +0 -1390
- package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
- package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
- package/dist/resources/extensions/gsd/key-manager.ts +0 -996
- package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
- package/dist/resources/extensions/gsd/md-importer.ts +0 -527
- package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
- package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
- package/dist/resources/extensions/gsd/memory-store.ts +0 -441
- package/dist/resources/extensions/gsd/metrics.ts +0 -532
- package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
- package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
- package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
- package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
- package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
- package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
- package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
- package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
- package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
- package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
- package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
- package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
- package/dist/resources/extensions/gsd/model-router.ts +0 -256
- package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
- package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
- package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
- package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
- package/dist/resources/extensions/gsd/notifications.ts +0 -87
- package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
- package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
- package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
- package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
- package/dist/resources/extensions/gsd/paths.ts +0 -449
- package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
- package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
- package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
- package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
- package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
- package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
- package/dist/resources/extensions/gsd/preferences.ts +0 -416
- package/dist/resources/extensions/gsd/progress-score.ts +0 -273
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
- package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
- package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
- package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
- package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
- package/dist/resources/extensions/gsd/queue-order.ts +0 -230
- package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
- package/dist/resources/extensions/gsd/quick.ts +0 -212
- package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
- package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
- package/dist/resources/extensions/gsd/routing-history.ts +0 -286
- package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
- package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
- package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
- package/dist/resources/extensions/gsd/session-lock.ts +0 -426
- package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
- package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
- package/dist/resources/extensions/gsd/skill-health.ts +0 -417
- package/dist/resources/extensions/gsd/state.ts +0 -727
- package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
- package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
- package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
- package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
- package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
- package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
- package/dist/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +0 -691
- package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
- package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
- package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
- package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
- package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
- package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
- package/dist/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +0 -317
- package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
- package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
- package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
- package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
- package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
- package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
- package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
- package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
- package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
- package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
- package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
- package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
- package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
- package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
- package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
- package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
- package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
- package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
- package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
- package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
- package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
- package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
- package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
- package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
- package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
- package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
- package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
- package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
- package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
- package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1172
- package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
- package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
- package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
- package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
- package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
- package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
- package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
- package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
- package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
- package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
- package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
- package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
- package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -877
- package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
- package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
- package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
- package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
- package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
- package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
- package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
- package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
- package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
- package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
- package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
- package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
- package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
- package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
- package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
- package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
- package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
- package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
- package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
- package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
- package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
- package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
- package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
- package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
- package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
- package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
- package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
- package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
- package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
- package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
- package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
- package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
- package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
- package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
- package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
- package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
- package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
- package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
- package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
- package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
- package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
- package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
- package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
- package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
- package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
- package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
- package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
- package/dist/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +0 -358
- package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
- package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
- package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
- package/dist/resources/extensions/gsd/tests/session-lock-regression.test.ts +0 -216
- package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -434
- package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
- package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
- package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
- package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
- package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
- package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
- package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
- package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
- package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
- package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
- package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
- package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
- package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
- package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
- package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
- package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
- package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
- package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
- package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
- package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
- package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
- package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
- package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
- package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
- package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
- package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
- package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
- package/dist/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +0 -206
- package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
- package/dist/resources/extensions/gsd/token-counter.ts +0 -65
- package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
- package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
- package/dist/resources/extensions/gsd/types.ts +0 -425
- package/dist/resources/extensions/gsd/undo.ts +0 -223
- package/dist/resources/extensions/gsd/unit-id.ts +0 -14
- package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
- package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
- package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
- package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
- package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
- package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
- package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
- package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
- package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
- package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
- package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
- package/dist/resources/extensions/gsd/worktree.ts +0 -257
- package/dist/resources/extensions/mac-tools/index.ts +0 -852
- package/dist/resources/extensions/mcp-client/index.ts +0 -459
- package/dist/resources/extensions/remote-questions/config.ts +0 -83
- package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
- package/dist/resources/extensions/remote-questions/format.ts +0 -315
- package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
- package/dist/resources/extensions/remote-questions/manager.ts +0 -184
- package/dist/resources/extensions/remote-questions/notify.ts +0 -90
- package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
- package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
- package/dist/resources/extensions/remote-questions/status.ts +0 -31
- package/dist/resources/extensions/remote-questions/store.ts +0 -81
- package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
- package/dist/resources/extensions/remote-questions/types.ts +0 -102
- package/dist/resources/extensions/search-the-web/cache.ts +0 -78
- package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
- package/dist/resources/extensions/search-the-web/format.ts +0 -258
- package/dist/resources/extensions/search-the-web/http.ts +0 -238
- package/dist/resources/extensions/search-the-web/index.ts +0 -65
- package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
- package/dist/resources/extensions/search-the-web/provider.ts +0 -148
- package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
- package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
- package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
- package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
- package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
- package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
- package/dist/resources/extensions/shared/frontmatter.ts +0 -117
- package/dist/resources/extensions/shared/interview-ui.ts +0 -613
- package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
- package/dist/resources/extensions/shared/sanitize.ts +0 -19
- package/dist/resources/extensions/shared/terminal.ts +0 -23
- package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
- package/dist/resources/extensions/shared/ui.ts +0 -400
- package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
- package/dist/resources/extensions/slash-commands/audit.ts +0 -88
- package/dist/resources/extensions/slash-commands/clear.ts +0 -10
- package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
- package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
- package/dist/resources/extensions/slash-commands/index.ts +0 -12
- package/dist/resources/extensions/subagent/agents.ts +0 -126
- package/dist/resources/extensions/subagent/index.ts +0 -1121
- package/dist/resources/extensions/subagent/isolation.ts +0 -501
- package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
- package/dist/resources/extensions/ttsr/index.ts +0 -168
- package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
- package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
- package/dist/resources/extensions/universal-config/discovery.ts +0 -104
- package/dist/resources/extensions/universal-config/format.ts +0 -191
- package/dist/resources/extensions/universal-config/index.ts +0 -120
- package/dist/resources/extensions/universal-config/scanners.ts +0 -642
- package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
- package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
- package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
- package/dist/resources/extensions/universal-config/tools.ts +0 -60
- package/dist/resources/extensions/universal-config/types.ts +0 -135
- package/dist/resources/extensions/voice/index.ts +0 -272
- package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
- package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
- package/src/resources/extensions/gsd/auto-constants.ts +0 -6
- package/src/resources/extensions/gsd/auto-idempotency.ts +0 -151
- package/src/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
- package/src/resources/extensions/gsd/mechanical-completion.ts +0 -430
- package/src/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +0 -691
- package/src/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
- package/src/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
- package/src/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
- package/src/resources/extensions/gsd/tests/loop-regression.test.ts +0 -877
- package/src/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
- package/src/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
- package/src/resources/extensions/gsd/tests/session-lock.test.ts +0 -434
|
@@ -792,17 +792,28 @@ export async function showSmartEntry(
|
|
|
792
792
|
const crashLock = readCrashLock(basePath);
|
|
793
793
|
if (crashLock) {
|
|
794
794
|
clearLock(basePath);
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
795
|
+
|
|
796
|
+
// Bootstrap crash with zero completed units = no work was lost.
|
|
797
|
+
// Auto-discard instead of prompting the user — this commonly happens
|
|
798
|
+
// when the user exits during init wizard or discuss phase before any
|
|
799
|
+
// real auto-mode work begins.
|
|
800
|
+
const isBootstrapCrash = crashLock.unitType === "starting"
|
|
801
|
+
&& crashLock.unitId === "bootstrap"
|
|
802
|
+
&& crashLock.completedUnits === 0;
|
|
803
|
+
|
|
804
|
+
if (!isBootstrapCrash) {
|
|
805
|
+
const resume = await showNextAction(ctx, {
|
|
806
|
+
title: "GSD — Interrupted Session Detected",
|
|
807
|
+
summary: [formatCrashInfo(crashLock)],
|
|
808
|
+
actions: [
|
|
809
|
+
{ id: "resume", label: "Resume with /gsd auto", description: "Pick up where it left off", recommended: true },
|
|
810
|
+
{ id: "continue", label: "Continue manually", description: "Open the wizard as normal" },
|
|
811
|
+
],
|
|
812
|
+
});
|
|
813
|
+
if (resume === "resume") {
|
|
814
|
+
await startAuto(ctx, pi, basePath, false);
|
|
815
|
+
return;
|
|
816
|
+
}
|
|
806
817
|
}
|
|
807
818
|
}
|
|
808
819
|
|
|
@@ -35,7 +35,8 @@ import { getActiveAutoWorktreeContext } from "./auto-worktree.js";
|
|
|
35
35
|
import { saveFile, formatContinue, loadFile, parseContinue, parseSummary, loadActiveOverrides, formatOverridesSection } from "./files.js";
|
|
36
36
|
import { loadPrompt } from "./prompt-loader.js";
|
|
37
37
|
import { deriveState } from "./state.js";
|
|
38
|
-
import { isAutoActive, isAutoPaused,
|
|
38
|
+
import { isAutoActive, isAutoPaused, pauseAuto, getAutoDashboardData, getAutoModeStartModel, markToolStart, markToolEnd } from "./auto.js";
|
|
39
|
+
import { isSessionSwitchInFlight, resolveAgentEnd } from "./auto-loop.js";
|
|
39
40
|
import { saveActivityLog } from "./activity-log.js";
|
|
40
41
|
import { checkAutoStartAfterDiscuss, getDiscussionMilestoneId, findMilestoneIds, nextMilestoneId } from "./guided-flow.js";
|
|
41
42
|
import { GSDDashboardOverlay } from "./dashboard-overlay.js";
|
|
@@ -64,26 +65,6 @@ import { pauseAutoForProviderError, classifyProviderError } from "./provider-err
|
|
|
64
65
|
import { toPosixPath } from "../shared/mod.js";
|
|
65
66
|
import { isParallelActive, shutdownParallel } from "./parallel-orchestrator.js";
|
|
66
67
|
import { DEFAULT_BASH_TIMEOUT_SECS } from "./constants.js";
|
|
67
|
-
import { getErrorMessage } from "./error-utils.js";
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Ensure the GSD database is available, auto-initializing if needed.
|
|
71
|
-
* Returns true if the DB is ready, false if initialization failed.
|
|
72
|
-
*/
|
|
73
|
-
async function ensureDbAvailable(): Promise<boolean> {
|
|
74
|
-
try {
|
|
75
|
-
const db = await import("./gsd-db.js");
|
|
76
|
-
if (db.isDbAvailable()) return true;
|
|
77
|
-
|
|
78
|
-
// Auto-initialize: open (and create if needed) the DB at the standard path
|
|
79
|
-
const gsdDir = gsdRoot(process.cwd());
|
|
80
|
-
if (!existsSync(gsdDir)) return false; // No GSD project — can't create DB
|
|
81
|
-
const dbPath = join(gsdDir, "gsd.db");
|
|
82
|
-
return db.openDatabase(dbPath);
|
|
83
|
-
} catch {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
68
|
|
|
88
69
|
// ── Agent Instructions ────────────────────────────────────────────────────
|
|
89
70
|
// Lightweight "always follow" files injected into every GSD agent session.
|
|
@@ -114,9 +95,7 @@ function loadAgentInstructions(): string | null {
|
|
|
114
95
|
}
|
|
115
96
|
|
|
116
97
|
// ── Depth verification state ──────────────────────────────────────────────
|
|
117
|
-
|
|
118
|
-
// Single-milestone flows set '*' (wildcard). Multi-milestone flows set per-ID.
|
|
119
|
-
const depthVerifiedMilestones = new Set<string>();
|
|
98
|
+
let depthVerificationDone = false;
|
|
120
99
|
|
|
121
100
|
// ── Queue phase tracking ──────────────────────────────────────────────────
|
|
122
101
|
// When true, the LLM is in a queue flow writing CONTEXT.md files.
|
|
@@ -127,28 +106,11 @@ let activeQueuePhase = false;
|
|
|
127
106
|
// Tracks per-model retry attempts for transient network errors.
|
|
128
107
|
// Cleared when a model switch occurs or retries are exhausted.
|
|
129
108
|
const networkRetryCounters = new Map<string, number>();
|
|
130
|
-
|
|
131
|
-
// ── Transient error escalation ───────────────────────────────────────────
|
|
132
|
-
// Tracks consecutive transient auto-resume attempts. Each attempt doubles
|
|
133
|
-
// the delay. After MAX_TRANSIENT_AUTO_RESUMES consecutive failures, auto-mode
|
|
134
|
-
// pauses indefinitely to avoid infinite rapid-fire retries (#1166).
|
|
135
|
-
const MAX_TRANSIENT_AUTO_RESUMES = 5;
|
|
109
|
+
const MAX_TRANSIENT_AUTO_RESUMES = 3;
|
|
136
110
|
let consecutiveTransientErrors = 0;
|
|
137
111
|
|
|
138
112
|
export function isDepthVerified(): boolean {
|
|
139
|
-
return
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/** Check whether a specific milestone has passed depth verification. */
|
|
143
|
-
export function isDepthVerifiedFor(milestoneId: string): boolean {
|
|
144
|
-
// Wildcard means "all milestones verified" (single-milestone flow)
|
|
145
|
-
if (depthVerifiedMilestones.has("*")) return true;
|
|
146
|
-
return depthVerifiedMilestones.has(milestoneId);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/** Mark a specific milestone as depth-verified. */
|
|
150
|
-
export function markDepthVerified(milestoneId: string): void {
|
|
151
|
-
depthVerifiedMilestones.add(milestoneId);
|
|
113
|
+
return depthVerificationDone;
|
|
152
114
|
}
|
|
153
115
|
|
|
154
116
|
/** Check whether a queue phase is active. */
|
|
@@ -179,25 +141,11 @@ export function shouldBlockContextWrite(
|
|
|
179
141
|
if (!inDiscussion && !inQueue) return { block: false };
|
|
180
142
|
|
|
181
143
|
if (!MILESTONE_CONTEXT_RE.test(inputPath)) return { block: false };
|
|
182
|
-
|
|
183
|
-
// For discussion flows: check global depth verification (backward compat)
|
|
184
|
-
if (inDiscussion && depthVerified) return { block: false };
|
|
185
|
-
|
|
186
|
-
// For queue flows: extract milestone ID from the path and check per-milestone verification
|
|
187
|
-
if (inQueue) {
|
|
188
|
-
const pathMatch = inputPath.match(/\/(M\d+(?:-[a-z0-9]{6})?)-CONTEXT\.md$/);
|
|
189
|
-
const targetMid = pathMatch?.[1];
|
|
190
|
-
if (targetMid && depthVerifiedMilestones.has(targetMid)) return { block: false };
|
|
191
|
-
// Wildcard passes all
|
|
192
|
-
if (depthVerifiedMilestones.has("*")) return { block: false };
|
|
193
|
-
}
|
|
144
|
+
if (depthVerified) return { block: false };
|
|
194
145
|
|
|
195
146
|
return {
|
|
196
147
|
block: true,
|
|
197
|
-
reason: `Blocked: Cannot write milestone CONTEXT.md without depth verification.
|
|
198
|
-
`Use ask_user_questions with a question id containing "depth_verification" first. ` +
|
|
199
|
-
`For multi-milestone flows, include the milestone ID in the question id (e.g., "depth_verification_M001"). ` +
|
|
200
|
-
`This ensures each milestone's context has been critically examined before being written.`,
|
|
148
|
+
reason: `Blocked: Cannot write to milestone CONTEXT.md during discussion phase without depth verification. Call ask_user_questions with question id "depth_verification" first to confirm discussion depth before writing context.`,
|
|
201
149
|
};
|
|
202
150
|
}
|
|
203
151
|
|
|
@@ -348,8 +296,14 @@ export default function (pi: ExtensionAPI) {
|
|
|
348
296
|
when_context: Type.Optional(Type.String({ description: "When/context for the decision (e.g. milestone ID)" })),
|
|
349
297
|
}),
|
|
350
298
|
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
351
|
-
//
|
|
352
|
-
|
|
299
|
+
// Check DB availability
|
|
300
|
+
let dbAvailable = false;
|
|
301
|
+
try {
|
|
302
|
+
const db = await import("./gsd-db.js");
|
|
303
|
+
dbAvailable = db.isDbAvailable();
|
|
304
|
+
} catch { /* dynamic import failed */ }
|
|
305
|
+
|
|
306
|
+
if (!dbAvailable) {
|
|
353
307
|
return {
|
|
354
308
|
content: [{ type: "text" as const, text: "Error: GSD database is not available. Cannot save decision." }],
|
|
355
309
|
isError: true,
|
|
@@ -375,7 +329,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
375
329
|
details: { operation: "save_decision", id },
|
|
376
330
|
};
|
|
377
331
|
} catch (err) {
|
|
378
|
-
const msg =
|
|
332
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
379
333
|
process.stderr.write(`gsd-db: gsd_save_decision tool failed: ${msg}\n`);
|
|
380
334
|
return {
|
|
381
335
|
content: [{ type: "text" as const, text: `Error saving decision: ${msg}` }],
|
|
@@ -409,8 +363,13 @@ export default function (pi: ExtensionAPI) {
|
|
|
409
363
|
supporting_slices: Type.Optional(Type.String({ description: "Supporting slices" })),
|
|
410
364
|
}),
|
|
411
365
|
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
412
|
-
|
|
413
|
-
|
|
366
|
+
let dbAvailable = false;
|
|
367
|
+
try {
|
|
368
|
+
const db = await import("./gsd-db.js");
|
|
369
|
+
dbAvailable = db.isDbAvailable();
|
|
370
|
+
} catch { /* dynamic import failed */ }
|
|
371
|
+
|
|
372
|
+
if (!dbAvailable) {
|
|
414
373
|
return {
|
|
415
374
|
content: [{ type: "text" as const, text: "Error: GSD database is not available. Cannot update requirement." }],
|
|
416
375
|
isError: true,
|
|
@@ -446,7 +405,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
446
405
|
details: { operation: "update_requirement", id: params.id },
|
|
447
406
|
};
|
|
448
407
|
} catch (err) {
|
|
449
|
-
const msg =
|
|
408
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
450
409
|
process.stderr.write(`gsd-db: gsd_update_requirement tool failed: ${msg}\n`);
|
|
451
410
|
return {
|
|
452
411
|
content: [{ type: "text" as const, text: `Error updating requirement: ${msg}` }],
|
|
@@ -478,8 +437,13 @@ export default function (pi: ExtensionAPI) {
|
|
|
478
437
|
content: Type.String({ description: "The full markdown content of the artifact" }),
|
|
479
438
|
}),
|
|
480
439
|
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
481
|
-
|
|
482
|
-
|
|
440
|
+
let dbAvailable = false;
|
|
441
|
+
try {
|
|
442
|
+
const db = await import("./gsd-db.js");
|
|
443
|
+
dbAvailable = db.isDbAvailable();
|
|
444
|
+
} catch { /* dynamic import failed */ }
|
|
445
|
+
|
|
446
|
+
if (!dbAvailable) {
|
|
483
447
|
return {
|
|
484
448
|
content: [{ type: "text" as const, text: "Error: GSD database is not available. Cannot save artifact." }],
|
|
485
449
|
isError: true,
|
|
@@ -526,7 +490,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
526
490
|
details: { operation: "save_summary", path: relativePath, artifact_type: params.artifact_type },
|
|
527
491
|
};
|
|
528
492
|
} catch (err) {
|
|
529
|
-
const msg =
|
|
493
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
530
494
|
process.stderr.write(`gsd-db: gsd_save_summary tool failed: ${msg}\n`);
|
|
531
495
|
return {
|
|
532
496
|
content: [{ type: "text" as const, text: `Error saving artifact: ${msg}` }],
|
|
@@ -575,7 +539,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
575
539
|
details: { operation: "generate_milestone_id", id: newId, existingCount: existingIds.length, reservedCount: reservedMilestoneIds.size, uniqueEnabled },
|
|
576
540
|
};
|
|
577
541
|
} catch (err) {
|
|
578
|
-
const msg =
|
|
542
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
579
543
|
return {
|
|
580
544
|
content: [{ type: "text" as const, text: `Error generating milestone ID: ${msg}` }],
|
|
581
545
|
isError: true,
|
|
@@ -587,9 +551,8 @@ export default function (pi: ExtensionAPI) {
|
|
|
587
551
|
|
|
588
552
|
// ── session_start: render branded GSD header + load tool keys + remote status ──
|
|
589
553
|
pi.on("session_start", async (_event, ctx) => {
|
|
590
|
-
// Clear
|
|
591
|
-
|
|
592
|
-
activeQueuePhase = false;
|
|
554
|
+
// Clear per-session state that must not leak across sessions (e.g. RPC mode)
|
|
555
|
+
depthVerificationDone = false;
|
|
593
556
|
|
|
594
557
|
// Theme access throws in RPC mode (no TUI) — header is decorative, skip it
|
|
595
558
|
try {
|
|
@@ -608,12 +571,6 @@ export default function (pi: ExtensionAPI) {
|
|
|
608
571
|
// Load tool API keys from auth.json into environment
|
|
609
572
|
loadToolApiKeys();
|
|
610
573
|
|
|
611
|
-
// Always-on health widget — ambient system health signal below the editor
|
|
612
|
-
try {
|
|
613
|
-
const { initHealthWidget } = await import("./health-widget.js");
|
|
614
|
-
initHealthWidget(ctx);
|
|
615
|
-
} catch { /* non-fatal — widget is best-effort */ }
|
|
616
|
-
|
|
617
574
|
// Notify remote questions status if configured
|
|
618
575
|
try {
|
|
619
576
|
const [{ getRemoteConfigStatus }, { getLatestPromptSummary }] = await Promise.all([
|
|
@@ -636,12 +593,12 @@ export default function (pi: ExtensionAPI) {
|
|
|
636
593
|
description: shortcutDesc("Open GSD dashboard", "/gsd status"),
|
|
637
594
|
handler: async (ctx) => {
|
|
638
595
|
// Only show if .gsd/ exists
|
|
639
|
-
if (!existsSync(
|
|
596
|
+
if (!existsSync(join(process.cwd(), ".gsd"))) {
|
|
640
597
|
ctx.ui.notify("No .gsd/ directory found. Run /gsd to start.", "info");
|
|
641
598
|
return;
|
|
642
599
|
}
|
|
643
600
|
|
|
644
|
-
|
|
601
|
+
await ctx.ui.custom<void>(
|
|
645
602
|
(tui, theme, _kb, done) => {
|
|
646
603
|
return new GSDDashboardOverlay(tui, theme, () => done());
|
|
647
604
|
},
|
|
@@ -655,18 +612,12 @@ export default function (pi: ExtensionAPI) {
|
|
|
655
612
|
},
|
|
656
613
|
},
|
|
657
614
|
);
|
|
658
|
-
|
|
659
|
-
// Fallback for RPC mode where ctx.ui.custom() returns undefined.
|
|
660
|
-
if (result === undefined) {
|
|
661
|
-
const { fireStatusViaCommand } = await import("./commands.js");
|
|
662
|
-
await fireStatusViaCommand(ctx);
|
|
663
|
-
}
|
|
664
615
|
},
|
|
665
616
|
});
|
|
666
617
|
|
|
667
618
|
// ── before_agent_start: inject GSD contract into true system prompt ─────
|
|
668
619
|
pi.on("before_agent_start", async (event, ctx: ExtensionContext) => {
|
|
669
|
-
if (!existsSync(
|
|
620
|
+
if (!existsSync(join(process.cwd(), ".gsd"))) return;
|
|
670
621
|
|
|
671
622
|
const stopContextTimer = debugTime("context-inject");
|
|
672
623
|
const systemContent = loadPrompt("system");
|
|
@@ -796,15 +747,9 @@ export default function (pi: ExtensionAPI) {
|
|
|
796
747
|
|
|
797
748
|
// ── agent_end: auto-mode advancement or auto-start after discuss ───────────
|
|
798
749
|
pi.on("agent_end", async (event, ctx: ExtensionContext) => {
|
|
799
|
-
// Clean up quick-task branch if one just completed (#1269)
|
|
800
|
-
try {
|
|
801
|
-
const { cleanupQuickBranch } = await import("./quick.js");
|
|
802
|
-
cleanupQuickBranch();
|
|
803
|
-
} catch { /* non-fatal */ }
|
|
804
|
-
|
|
805
750
|
// If discuss phase just finished, start auto-mode
|
|
806
751
|
if (checkAutoStartAfterDiscuss()) {
|
|
807
|
-
|
|
752
|
+
depthVerificationDone = false;
|
|
808
753
|
activeQueuePhase = false;
|
|
809
754
|
return;
|
|
810
755
|
}
|
|
@@ -812,6 +757,13 @@ export default function (pi: ExtensionAPI) {
|
|
|
812
757
|
// If auto-mode is already running, advance to next unit
|
|
813
758
|
if (!isAutoActive()) return;
|
|
814
759
|
|
|
760
|
+
// Fresh-session auto-mode intentionally aborts the previous session during
|
|
761
|
+
// cmdCtx.newSession(). Ignore that agent_end so we neither pause nor
|
|
762
|
+
// resolve the new unit with an event from the old session.
|
|
763
|
+
if (isSessionSwitchInFlight()) {
|
|
764
|
+
return;
|
|
765
|
+
}
|
|
766
|
+
|
|
815
767
|
// If the agent was aborted (user pressed Escape) or hit a provider
|
|
816
768
|
// error (fetch failure, rate limit, etc.), pause auto-mode instead of
|
|
817
769
|
// advancing. This preserves the conversation so the user can inspect
|
|
@@ -951,50 +903,46 @@ export default function (pi: ExtensionAPI) {
|
|
|
951
903
|
const explicitRetryAfterMs = ("retryAfterMs" in lastMsg && typeof lastMsg.retryAfterMs === "number")
|
|
952
904
|
? lastMsg.retryAfterMs
|
|
953
905
|
: undefined;
|
|
954
|
-
let retryAfterMs = explicitRetryAfterMs ?? classification.suggestedDelayMs;
|
|
955
|
-
|
|
956
|
-
// ── Escalating backoff for repeated transient errors ──────────────
|
|
957
|
-
// Each consecutive transient auto-resume doubles the delay. After
|
|
958
|
-
// MAX_TRANSIENT_AUTO_RESUMES consecutive failures, treat as permanent
|
|
959
|
-
// to avoid infinite rapid-fire retries (#1166).
|
|
960
|
-
let effectiveTransient = classification.isTransient;
|
|
961
906
|
if (classification.isTransient) {
|
|
962
|
-
consecutiveTransientErrors
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
907
|
+
consecutiveTransientErrors += 1;
|
|
908
|
+
} else {
|
|
909
|
+
consecutiveTransientErrors = 0;
|
|
910
|
+
}
|
|
911
|
+
const baseRetryAfterMs = explicitRetryAfterMs ?? classification.suggestedDelayMs;
|
|
912
|
+
const retryAfterMs = classification.isTransient ? baseRetryAfterMs * 2 ** Math.max(0, consecutiveTransientErrors - 1) : baseRetryAfterMs;
|
|
913
|
+
const allowAutoResume = classification.isTransient
|
|
914
|
+
&& consecutiveTransientErrors <= MAX_TRANSIENT_AUTO_RESUMES;
|
|
915
|
+
|
|
916
|
+
if (classification.isTransient && !allowAutoResume) {
|
|
917
|
+
ctx.ui.notify(
|
|
918
|
+
`Transient provider errors persisted after ${MAX_TRANSIENT_AUTO_RESUMES} auto-resume attempts. Pausing for manual review.`,
|
|
919
|
+
"warning",
|
|
920
|
+
);
|
|
974
921
|
}
|
|
975
922
|
|
|
976
923
|
await pauseAutoForProviderError(ctx.ui, errorDetail, () => pauseAuto(ctx, pi), {
|
|
977
924
|
isRateLimit: classification.isRateLimit,
|
|
978
|
-
isTransient:
|
|
925
|
+
isTransient: allowAutoResume,
|
|
979
926
|
retryAfterMs,
|
|
980
|
-
resume:
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
927
|
+
resume: allowAutoResume
|
|
928
|
+
? () => {
|
|
929
|
+
pi.sendMessage(
|
|
930
|
+
{ customType: "gsd-auto-timeout-recovery", content: "Continue execution \u2014 provider error recovery delay elapsed.", display: false },
|
|
931
|
+
{ triggerTurn: true },
|
|
932
|
+
);
|
|
933
|
+
}
|
|
934
|
+
: undefined,
|
|
986
935
|
});
|
|
987
936
|
return;
|
|
988
937
|
}
|
|
989
938
|
|
|
990
939
|
try {
|
|
940
|
+
consecutiveTransientErrors = 0;
|
|
991
941
|
networkRetryCounters.clear(); // Clear network retry state on successful unit completion
|
|
992
|
-
|
|
993
|
-
await handleAgentEnd(ctx, pi);
|
|
942
|
+
resolveAgentEnd(event);
|
|
994
943
|
} catch (err) {
|
|
995
|
-
// Safety net: if
|
|
996
|
-
|
|
997
|
-
const message = getErrorMessage(err);
|
|
944
|
+
// Safety net: if resolveAgentEnd throws, ensure auto-mode stops gracefully (#381).
|
|
945
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
998
946
|
ctx.ui.notify(
|
|
999
947
|
`Auto-mode error in agent_end handler: ${message}. Stopping auto-mode.`,
|
|
1000
948
|
"error",
|
|
@@ -1061,19 +1009,6 @@ export default function (pi: ExtensionAPI) {
|
|
|
1061
1009
|
} catch { /* best-effort */ }
|
|
1062
1010
|
}
|
|
1063
1011
|
|
|
1064
|
-
// Auto-commit dirty work in CLI-spawned worktrees so nothing is lost.
|
|
1065
|
-
// The CLI sets GSD_CLI_WORKTREE when launched with -w.
|
|
1066
|
-
const cliWorktree = process.env.GSD_CLI_WORKTREE;
|
|
1067
|
-
if (cliWorktree) {
|
|
1068
|
-
try {
|
|
1069
|
-
const { autoCommitCurrentBranch } = await import("./worktree.js");
|
|
1070
|
-
const msg = autoCommitCurrentBranch(process.cwd(), "session-end", cliWorktree);
|
|
1071
|
-
if (msg) {
|
|
1072
|
-
ctx.ui.notify(`Auto-committed worktree ${cliWorktree} before exit.`, "info");
|
|
1073
|
-
}
|
|
1074
|
-
} catch { /* best-effort */ }
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
1012
|
if (!isAutoActive() && !isAutoPaused()) return;
|
|
1078
1013
|
|
|
1079
1014
|
// Save the current session — the lock file stays on disk
|
|
@@ -1084,11 +1019,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
1084
1019
|
}
|
|
1085
1020
|
});
|
|
1086
1021
|
|
|
1087
|
-
// ── tool_call: block CONTEXT.md writes without depth verification ──
|
|
1088
|
-
// Active during both discussion flows (pendingAutoStart set) and
|
|
1089
|
-
// queue flows (activeQueuePhase set). For multi-milestone queue flows,
|
|
1090
|
-
// each milestone must pass its own depth verification before its
|
|
1091
|
-
// CONTEXT.md can be written.
|
|
1022
|
+
// ── tool_call: block CONTEXT.md writes during discussion without depth verification ──
|
|
1092
1023
|
pi.on("tool_call", async (event) => {
|
|
1093
1024
|
if (!isToolCallEventType("write", event)) return;
|
|
1094
1025
|
const result = shouldBlockContextWrite(
|
|
@@ -1102,42 +1033,24 @@ export default function (pi: ExtensionAPI) {
|
|
|
1102
1033
|
});
|
|
1103
1034
|
|
|
1104
1035
|
// ── tool_result: persist discussion exchanges & detect depth gate ──────
|
|
1105
|
-
// Handles both discussion flows and queue flows. For queue flows,
|
|
1106
|
-
// depth verification question IDs may include milestone IDs
|
|
1107
|
-
// (e.g., "depth_verification_M001") for per-milestone gating.
|
|
1108
1036
|
pi.on("tool_result", async (event) => {
|
|
1109
1037
|
if (event.toolName !== "ask_user_questions") return;
|
|
1110
1038
|
|
|
1111
1039
|
const milestoneId = getDiscussionMilestoneId();
|
|
1112
|
-
|
|
1113
|
-
// Depth gate detection still applies — it sets per-milestone flags.
|
|
1114
|
-
const inQueue = activeQueuePhase;
|
|
1040
|
+
if (!milestoneId) return;
|
|
1115
1041
|
|
|
1116
1042
|
const details = event.details as any;
|
|
1117
1043
|
if (details?.cancelled || !details?.response) return;
|
|
1118
1044
|
|
|
1119
1045
|
// ── Depth gate detection ──────────────────────────────────────────
|
|
1120
|
-
// Supports two patterns:
|
|
1121
|
-
// 1. "depth_verification" — wildcard, marks all milestones verified
|
|
1122
|
-
// 2. "depth_verification_M001" — per-milestone verification
|
|
1123
1046
|
const questions: any[] = (event.input as any)?.questions ?? [];
|
|
1124
1047
|
for (const q of questions) {
|
|
1125
1048
|
if (typeof q.id === "string" && q.id.includes("depth_verification")) {
|
|
1126
|
-
|
|
1127
|
-
const midMatch = q.id.match(/depth_verification[_-](M\d+(?:-[a-z0-9]{6})?)/i);
|
|
1128
|
-
if (midMatch) {
|
|
1129
|
-
depthVerifiedMilestones.add(midMatch[1]);
|
|
1130
|
-
} else {
|
|
1131
|
-
// Wildcard — all milestones verified (backward compat for single-milestone)
|
|
1132
|
-
depthVerifiedMilestones.add("*");
|
|
1133
|
-
}
|
|
1049
|
+
depthVerificationDone = true;
|
|
1134
1050
|
break;
|
|
1135
1051
|
}
|
|
1136
1052
|
}
|
|
1137
1053
|
|
|
1138
|
-
// Discussion persistence only applies when in a discussion flow with a known milestone
|
|
1139
|
-
if (!milestoneId) return;
|
|
1140
|
-
|
|
1141
1054
|
// ── Persist exchange to DISCUSSION.md ──────────────────────────────
|
|
1142
1055
|
const basePath = process.cwd();
|
|
1143
1056
|
const milestoneDir = resolveMilestonePath(basePath, milestoneId);
|
|
@@ -14,8 +14,6 @@ import type {
|
|
|
14
14
|
import { resolvePostUnitHooks, resolvePreDispatchHooks } from "./preferences.js";
|
|
15
15
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
16
16
|
import { join } from "node:path";
|
|
17
|
-
import { gsdRoot } from "./paths.js";
|
|
18
|
-
import { parseUnitId } from "./unit-id.js";
|
|
19
17
|
|
|
20
18
|
// ─── Hook Queue State ──────────────────────────────────────────────────────
|
|
21
19
|
|
|
@@ -150,7 +148,7 @@ function dequeueNextHook(basePath: string): HookDispatchResult | null {
|
|
|
150
148
|
};
|
|
151
149
|
|
|
152
150
|
// Build the prompt with variable substitution
|
|
153
|
-
const
|
|
151
|
+
const [mid, sid, tid] = triggerUnitId.split("/");
|
|
154
152
|
const prompt = config.prompt
|
|
155
153
|
.replace(/\{milestoneId\}/g, mid ?? "")
|
|
156
154
|
.replace(/\{sliceId\}/g, sid ?? "")
|
|
@@ -209,14 +207,16 @@ function handleHookCompletion(basePath: string): HookDispatchResult | null {
|
|
|
209
207
|
* - Milestone-level (M001): .gsd/M001/{artifact}
|
|
210
208
|
*/
|
|
211
209
|
export function resolveHookArtifactPath(basePath: string, unitId: string, artifactName: string): string {
|
|
212
|
-
const
|
|
213
|
-
if (
|
|
214
|
-
|
|
210
|
+
const parts = unitId.split("/");
|
|
211
|
+
if (parts.length === 3) {
|
|
212
|
+
const [mid, sid, tid] = parts;
|
|
213
|
+
return join(basePath, ".gsd", mid, "slices", sid, "tasks", `${tid}-${artifactName}`);
|
|
215
214
|
}
|
|
216
|
-
if (
|
|
217
|
-
|
|
215
|
+
if (parts.length === 2) {
|
|
216
|
+
const [mid, sid] = parts;
|
|
217
|
+
return join(basePath, ".gsd", mid, "slices", sid, artifactName);
|
|
218
218
|
}
|
|
219
|
-
return join(
|
|
219
|
+
return join(basePath, ".gsd", parts[0], artifactName);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -252,7 +252,7 @@ export function runPreDispatchHooks(
|
|
|
252
252
|
return { action: "proceed", prompt, firedHooks: [] };
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
const
|
|
255
|
+
const [mid, sid, tid] = unitId.split("/");
|
|
256
256
|
const substitute = (text: string): string =>
|
|
257
257
|
text
|
|
258
258
|
.replace(/\{milestoneId\}/g, mid ?? "")
|
|
@@ -310,7 +310,7 @@ export function runPreDispatchHooks(
|
|
|
310
310
|
const HOOK_STATE_FILE = "hook-state.json";
|
|
311
311
|
|
|
312
312
|
function hookStatePath(basePath: string): string {
|
|
313
|
-
return join(
|
|
313
|
+
return join(basePath, ".gsd", HOOK_STATE_FILE);
|
|
314
314
|
}
|
|
315
315
|
|
|
316
316
|
/**
|
|
@@ -323,7 +323,7 @@ export function persistHookState(basePath: string): void {
|
|
|
323
323
|
savedAt: new Date().toISOString(),
|
|
324
324
|
};
|
|
325
325
|
try {
|
|
326
|
-
const dir =
|
|
326
|
+
const dir = join(basePath, ".gsd");
|
|
327
327
|
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
328
328
|
writeFileSync(hookStatePath(basePath), JSON.stringify(state, null, 2), "utf-8");
|
|
329
329
|
} catch {
|
|
@@ -465,7 +465,7 @@ export function triggerHookManually(
|
|
|
465
465
|
activeHook.cycle = currentCycle;
|
|
466
466
|
|
|
467
467
|
// Build the prompt with variable substitution
|
|
468
|
-
const
|
|
468
|
+
const [mid, sid, tid] = unitId.split("/");
|
|
469
469
|
const prompt = hook.prompt
|
|
470
470
|
.replace(/\{milestoneId\}/g, mid ?? "")
|
|
471
471
|
.replace(/\{sliceId\}/g, sid ?? "")
|