gsd-pi 2.33.0-dev.bafba33 → 2.33.1-dev.235d83a
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 +13 -18
- package/dist/cli.js +16 -0
- package/dist/resource-loader.d.ts +2 -0
- package/dist/resource-loader.js +36 -3
- 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 +187 -0
- package/dist/resources/extensions/gsd/auto-budget.js +30 -0
- package/dist/resources/extensions/gsd/{auto-constants.ts → auto-constants.js} +0 -1
- package/dist/resources/extensions/gsd/auto-dashboard.js +509 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +180 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +382 -0
- package/dist/resources/extensions/gsd/auto-idempotency.js +106 -0
- package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
- package/dist/resources/extensions/gsd/auto-observability.js +54 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +495 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +1121 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +550 -0
- package/dist/resources/extensions/gsd/auto-start.js +393 -0
- package/dist/resources/extensions/gsd/auto-stuck-detection.js +165 -0
- package/dist/resources/extensions/gsd/{auto-supervisor.ts → auto-supervisor.js} +29 -32
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
- package/dist/resources/extensions/gsd/auto-timers.js +181 -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 +209 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +594 -0
- package/dist/resources/extensions/gsd/auto.js +1485 -0
- package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
- package/dist/resources/extensions/gsd/captures.js +348 -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 +76 -0
- package/dist/resources/extensions/gsd/doctor-checks.js +563 -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 +590 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
- package/dist/resources/extensions/gsd/guided-flow.js +1149 -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 +1250 -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/mechanical-completion.js +351 -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 +197 -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 +230 -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 +376 -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/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 +210 -0
- package/dist/resources/extensions/gsd/unit-id.js +7 -0
- package/dist/resources/extensions/gsd/unit-runtime.js +130 -0
- package/dist/resources/extensions/gsd/validate-directory.js +143 -0
- package/dist/resources/extensions/gsd/verification-evidence.js +123 -0
- package/dist/resources/extensions/gsd/verification-gate.js +543 -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 +676 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +359 -0
- package/dist/resources/extensions/gsd/worktree.js +236 -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/package.json +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/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-supervisor.ts +10 -5
- package/src/resources/extensions/gsd/auto-verification.ts +20 -2
- package/src/resources/extensions/gsd/auto-worktree.ts +136 -1
- package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
- package/src/resources/extensions/gsd/commands.ts +53 -33
- package/src/resources/extensions/gsd/git-service.ts +24 -11
- package/src/resources/extensions/gsd/index.ts +106 -34
- package/src/resources/extensions/gsd/quick.ts +52 -3
- package/src/resources/extensions/gsd/repo-identity.ts +56 -22
- package/src/resources/extensions/gsd/session-lock.ts +80 -16
- package/src/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +691 -0
- package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +317 -0
- package/src/resources/extensions/gsd/tests/git-service.test.ts +16 -7
- package/src/resources/extensions/gsd/tests/loop-regression.test.ts +40 -5
- 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/roadmap-parse-regression.test.ts +358 -0
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +216 -0
- package/src/resources/extensions/gsd/tests/session-lock.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +206 -0
- package/src/resources/extensions/gsd/types.ts +4 -0
- package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
- package/src/resources/extensions/gsd/verification-gate.ts +23 -2
- package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
- package/src/resources/extensions/gsd/worktree-command.ts +17 -11
- 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-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-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 -524
- 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 -1137
- 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 -362
- 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-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/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 -839
- 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-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.test.ts +0 -315
- 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.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/mcporter/extension-manifest.json +0 -12
- 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/mcporter/extension-manifest.json +0 -12
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-mode Recovery — artifact resolution, verification, blocker placeholders,
|
|
3
|
+
* skip artifacts, completed-unit persistence, merge state reconciliation,
|
|
4
|
+
* self-heal runtime records, and loop remediation steps.
|
|
5
|
+
*
|
|
6
|
+
* Pure functions that receive all needed state as parameters — no module-level
|
|
7
|
+
* globals or AutoContext dependency.
|
|
8
|
+
*/
|
|
9
|
+
import { clearUnitRuntimeRecord, } from "./unit-runtime.js";
|
|
10
|
+
import { clearParseCache, parseRoadmap, parsePlan } from "./files.js";
|
|
11
|
+
import { nativeConflictFiles, nativeCommit, nativeCheckoutTheirs, nativeAddPaths, nativeMergeAbort, nativeResetHard, } from "./native-git-bridge.js";
|
|
12
|
+
import { resolveMilestonePath, resolveSlicePath, resolveSliceFile, resolveTasksDir, relMilestoneFile, relSliceFile, relSlicePath, relTaskFile, buildMilestoneFileName, buildSliceFileName, buildTaskFileName, resolveMilestoneFile, clearPathCache, resolveGsdRootFile, gsdRoot, } from "./paths.js";
|
|
13
|
+
import { isValidationTerminal } from "./state.js";
|
|
14
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from "node:fs";
|
|
15
|
+
import { atomicWriteSync } from "./atomic-write.js";
|
|
16
|
+
import { loadJsonFileOrNull } from "./json-persistence.js";
|
|
17
|
+
import { dirname, join } from "node:path";
|
|
18
|
+
import { parseUnitId } from "./unit-id.js";
|
|
19
|
+
// ─── Artifact Resolution & Verification ───────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the expected artifact for a unit to an absolute path.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveExpectedArtifactPath(unitType, unitId, base) {
|
|
24
|
+
const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
|
|
25
|
+
switch (unitType) {
|
|
26
|
+
case "research-milestone": {
|
|
27
|
+
const dir = resolveMilestonePath(base, mid);
|
|
28
|
+
return dir ? join(dir, buildMilestoneFileName(mid, "RESEARCH")) : null;
|
|
29
|
+
}
|
|
30
|
+
case "plan-milestone": {
|
|
31
|
+
const dir = resolveMilestonePath(base, mid);
|
|
32
|
+
return dir ? join(dir, buildMilestoneFileName(mid, "ROADMAP")) : null;
|
|
33
|
+
}
|
|
34
|
+
case "research-slice": {
|
|
35
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
36
|
+
return dir ? join(dir, buildSliceFileName(sid, "RESEARCH")) : null;
|
|
37
|
+
}
|
|
38
|
+
case "plan-slice": {
|
|
39
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
40
|
+
return dir ? join(dir, buildSliceFileName(sid, "PLAN")) : null;
|
|
41
|
+
}
|
|
42
|
+
case "reassess-roadmap": {
|
|
43
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
44
|
+
return dir ? join(dir, buildSliceFileName(sid, "ASSESSMENT")) : null;
|
|
45
|
+
}
|
|
46
|
+
case "run-uat": {
|
|
47
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
48
|
+
return dir ? join(dir, buildSliceFileName(sid, "UAT-RESULT")) : null;
|
|
49
|
+
}
|
|
50
|
+
case "execute-task": {
|
|
51
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
52
|
+
return dir && tid ? join(dir, "tasks", buildTaskFileName(tid, "SUMMARY")) : null;
|
|
53
|
+
}
|
|
54
|
+
case "complete-slice": {
|
|
55
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
56
|
+
return dir ? join(dir, buildSliceFileName(sid, "SUMMARY")) : null;
|
|
57
|
+
}
|
|
58
|
+
case "validate-milestone": {
|
|
59
|
+
const dir = resolveMilestonePath(base, mid);
|
|
60
|
+
return dir ? join(dir, buildMilestoneFileName(mid, "VALIDATION")) : null;
|
|
61
|
+
}
|
|
62
|
+
case "complete-milestone": {
|
|
63
|
+
const dir = resolveMilestonePath(base, mid);
|
|
64
|
+
return dir ? join(dir, buildMilestoneFileName(mid, "SUMMARY")) : null;
|
|
65
|
+
}
|
|
66
|
+
case "replan-slice": {
|
|
67
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
68
|
+
return dir ? join(dir, buildSliceFileName(sid, "REPLAN")) : null;
|
|
69
|
+
}
|
|
70
|
+
case "rewrite-docs":
|
|
71
|
+
return null;
|
|
72
|
+
default:
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check whether the expected artifact(s) for a unit exist on disk.
|
|
78
|
+
* Returns true if all required artifacts exist, or if the unit type has no
|
|
79
|
+
* single verifiable artifact (e.g., replan-slice).
|
|
80
|
+
*
|
|
81
|
+
* complete-slice requires both SUMMARY and UAT files — verifying only
|
|
82
|
+
* the summary allowed the unit to be marked complete when the LLM
|
|
83
|
+
* skipped writing the UAT file (see #176).
|
|
84
|
+
*/
|
|
85
|
+
export function verifyExpectedArtifact(unitType, unitId, base) {
|
|
86
|
+
// Hook units have no standard artifact — always pass. Their lifecycle
|
|
87
|
+
// is managed by the hook engine, not the artifact verification system.
|
|
88
|
+
if (unitType.startsWith("hook/"))
|
|
89
|
+
return true;
|
|
90
|
+
// Clear stale directory listing cache AND parse cache so artifact checks see
|
|
91
|
+
// fresh disk state (#431). The parse cache must also be cleared because
|
|
92
|
+
// cacheKey() uses length + first/last 100 chars — when a checkbox changes
|
|
93
|
+
// from [ ] to [x], the key collides with the pre-edit version, returning
|
|
94
|
+
// stale parsed results (e.g., slice.done = false when it's actually true).
|
|
95
|
+
clearPathCache();
|
|
96
|
+
clearParseCache();
|
|
97
|
+
if (unitType === "rewrite-docs") {
|
|
98
|
+
const overridesPath = resolveGsdRootFile(base, "OVERRIDES");
|
|
99
|
+
if (!existsSync(overridesPath))
|
|
100
|
+
return true;
|
|
101
|
+
const content = readFileSync(overridesPath, "utf-8");
|
|
102
|
+
return !content.includes("**Scope:** active");
|
|
103
|
+
}
|
|
104
|
+
const absPath = resolveExpectedArtifactPath(unitType, unitId, base);
|
|
105
|
+
// For unit types with no verifiable artifact (null path), the parent directory
|
|
106
|
+
// is missing on disk — treat as stale completion state so the key gets evicted (#313).
|
|
107
|
+
if (!absPath)
|
|
108
|
+
return false;
|
|
109
|
+
if (!existsSync(absPath))
|
|
110
|
+
return false;
|
|
111
|
+
// validate-milestone must have a VALIDATION file with a terminal verdict
|
|
112
|
+
// (pass, needs-attention, or needs-remediation). Without this check, a
|
|
113
|
+
// VALIDATION file with missing/malformed frontmatter or an unrecognized
|
|
114
|
+
// verdict is treated as "complete" by the artifact check but deriveState
|
|
115
|
+
// still returns phase:"validating-milestone" (because isValidationTerminal
|
|
116
|
+
// returns false), creating an infinite skip loop that hits the lifetime cap.
|
|
117
|
+
if (unitType === "validate-milestone") {
|
|
118
|
+
try {
|
|
119
|
+
const validationContent = readFileSync(absPath, "utf-8");
|
|
120
|
+
if (!isValidationTerminal(validationContent))
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// plan-slice must produce a plan with actual task entries, not just a scaffold.
|
|
128
|
+
// The plan file may exist from a prior discussion/context step with only headings
|
|
129
|
+
// but no tasks. Without this check the artifact is considered "complete" and the
|
|
130
|
+
// unit gets skipped — but deriveState still returns phase:"planning" because the
|
|
131
|
+
// plan has no tasks, creating an infinite skip loop (#699).
|
|
132
|
+
if (unitType === "plan-slice") {
|
|
133
|
+
const planContent = readFileSync(absPath, "utf-8");
|
|
134
|
+
if (!/^- \[[xX ]\] \*\*T\d+:/m.test(planContent))
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
// execute-task must also have its checkbox marked [x] in the slice plan
|
|
138
|
+
if (unitType === "execute-task") {
|
|
139
|
+
const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
|
|
140
|
+
if (mid && sid && tid) {
|
|
141
|
+
const planAbs = resolveSliceFile(base, mid, sid, "PLAN");
|
|
142
|
+
if (planAbs && existsSync(planAbs)) {
|
|
143
|
+
const planContent = readFileSync(planAbs, "utf-8");
|
|
144
|
+
const escapedTid = tid.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
145
|
+
const re = new RegExp(`^- \\[[xX]\\] \\*\\*${escapedTid}:`, "m");
|
|
146
|
+
if (!re.test(planContent))
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// plan-slice must also produce individual task plan files for every task listed
|
|
152
|
+
// in the slice plan. Without this check, a plan-slice that wrote S{sid}-PLAN.md
|
|
153
|
+
// but omitted T{tid}-PLAN.md files would be marked complete, causing execute-task
|
|
154
|
+
// to dispatch with a missing task plan (see issue #739).
|
|
155
|
+
if (unitType === "plan-slice") {
|
|
156
|
+
const { milestone: mid, slice: sid } = parseUnitId(unitId);
|
|
157
|
+
if (mid && sid) {
|
|
158
|
+
try {
|
|
159
|
+
const planContent = readFileSync(absPath, "utf-8");
|
|
160
|
+
const plan = parsePlan(planContent);
|
|
161
|
+
const tasksDir = resolveTasksDir(base, mid, sid);
|
|
162
|
+
if (plan.tasks.length > 0 && tasksDir) {
|
|
163
|
+
for (const task of plan.tasks) {
|
|
164
|
+
const taskPlanFile = join(tasksDir, `${task.id}-PLAN.md`);
|
|
165
|
+
if (!existsSync(taskPlanFile))
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Parse failure — don't block; slice plan may have non-standard format
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// complete-slice must also produce a UAT file AND mark the slice [x] in the roadmap.
|
|
176
|
+
// Without the roadmap check, a crash after writing SUMMARY+UAT but before updating
|
|
177
|
+
// the roadmap causes an infinite skip loop: the idempotency key says "done" but the
|
|
178
|
+
// state machine keeps returning the same complete-slice unit (roadmap still shows
|
|
179
|
+
// the slice incomplete), so dispatchNextUnit recurses forever.
|
|
180
|
+
if (unitType === "complete-slice") {
|
|
181
|
+
const { milestone: mid, slice: sid } = parseUnitId(unitId);
|
|
182
|
+
if (mid && sid) {
|
|
183
|
+
const dir = resolveSlicePath(base, mid, sid);
|
|
184
|
+
if (dir) {
|
|
185
|
+
const uatPath = join(dir, buildSliceFileName(sid, "UAT"));
|
|
186
|
+
if (!existsSync(uatPath))
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
// Verify the roadmap has the slice marked [x]. If not, the completion
|
|
190
|
+
// record is stale — the unit must re-run to update the roadmap.
|
|
191
|
+
const roadmapFile = resolveMilestoneFile(base, mid, "ROADMAP");
|
|
192
|
+
if (roadmapFile && existsSync(roadmapFile)) {
|
|
193
|
+
try {
|
|
194
|
+
const roadmapContent = readFileSync(roadmapFile, "utf-8");
|
|
195
|
+
const roadmap = parseRoadmap(roadmapContent);
|
|
196
|
+
const slice = (roadmap.slices ?? []).find(s => s.id === sid);
|
|
197
|
+
if (slice && !slice.done)
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// Corrupt/unparseable roadmap — fail verification so the unit
|
|
202
|
+
// re-runs and has a chance to fix the roadmap. Silently passing
|
|
203
|
+
// here could advance past an incomplete slice.
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Write a placeholder artifact so the pipeline can advance past a stuck unit.
|
|
213
|
+
* Returns the relative path written, or null if the path couldn't be resolved.
|
|
214
|
+
*/
|
|
215
|
+
export function writeBlockerPlaceholder(unitType, unitId, base, reason) {
|
|
216
|
+
const absPath = resolveExpectedArtifactPath(unitType, unitId, base);
|
|
217
|
+
if (!absPath)
|
|
218
|
+
return null;
|
|
219
|
+
const dir = dirname(absPath);
|
|
220
|
+
if (!existsSync(dir))
|
|
221
|
+
mkdirSync(dir, { recursive: true });
|
|
222
|
+
const content = [
|
|
223
|
+
`# BLOCKER — auto-mode recovery failed`,
|
|
224
|
+
``,
|
|
225
|
+
`Unit \`${unitType}\` for \`${unitId}\` failed to produce this artifact after idle recovery exhausted all retries.`,
|
|
226
|
+
``,
|
|
227
|
+
`**Reason**: ${reason}`,
|
|
228
|
+
``,
|
|
229
|
+
`This placeholder was written by auto-mode so the pipeline can advance.`,
|
|
230
|
+
`Review and replace this file before relying on downstream artifacts.`,
|
|
231
|
+
].join("\n");
|
|
232
|
+
writeFileSync(absPath, content, "utf-8");
|
|
233
|
+
return diagnoseExpectedArtifact(unitType, unitId, base);
|
|
234
|
+
}
|
|
235
|
+
export function diagnoseExpectedArtifact(unitType, unitId, base) {
|
|
236
|
+
const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
|
|
237
|
+
switch (unitType) {
|
|
238
|
+
case "research-milestone":
|
|
239
|
+
return `${relMilestoneFile(base, mid, "RESEARCH")} (milestone research)`;
|
|
240
|
+
case "plan-milestone":
|
|
241
|
+
return `${relMilestoneFile(base, mid, "ROADMAP")} (milestone roadmap)`;
|
|
242
|
+
case "research-slice":
|
|
243
|
+
return `${relSliceFile(base, mid, sid, "RESEARCH")} (slice research)`;
|
|
244
|
+
case "plan-slice":
|
|
245
|
+
return `${relSliceFile(base, mid, sid, "PLAN")} (slice plan)`;
|
|
246
|
+
case "execute-task": {
|
|
247
|
+
return `Task ${tid} marked [x] in ${relSliceFile(base, mid, sid, "PLAN")} + summary written`;
|
|
248
|
+
}
|
|
249
|
+
case "complete-slice":
|
|
250
|
+
return `Slice ${sid} marked [x] in ${relMilestoneFile(base, mid, "ROADMAP")} + summary + UAT written`;
|
|
251
|
+
case "replan-slice":
|
|
252
|
+
return `${relSliceFile(base, mid, sid, "REPLAN")} + updated ${relSliceFile(base, mid, sid, "PLAN")}`;
|
|
253
|
+
case "rewrite-docs":
|
|
254
|
+
return "Active overrides resolved in .gsd/OVERRIDES.md + plan documents updated";
|
|
255
|
+
case "reassess-roadmap":
|
|
256
|
+
return `${relSliceFile(base, mid, sid, "ASSESSMENT")} (roadmap reassessment)`;
|
|
257
|
+
case "run-uat":
|
|
258
|
+
return `${relSliceFile(base, mid, sid, "UAT-RESULT")} (UAT result)`;
|
|
259
|
+
case "validate-milestone":
|
|
260
|
+
return `${relMilestoneFile(base, mid, "VALIDATION")} (milestone validation report)`;
|
|
261
|
+
case "complete-milestone":
|
|
262
|
+
return `${relMilestoneFile(base, mid, "SUMMARY")} (milestone summary)`;
|
|
263
|
+
default:
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// ─── Skip / Blocker Artifact Generation ───────────────────────────────────────
|
|
268
|
+
/**
|
|
269
|
+
* Write skip artifacts for a stuck execute-task: a blocker task summary and
|
|
270
|
+
* the [x] checkbox in the slice plan. Returns true if artifacts were written.
|
|
271
|
+
*/
|
|
272
|
+
export function skipExecuteTask(base, mid, sid, tid, status, reason, maxAttempts) {
|
|
273
|
+
// Write a blocker task summary if missing.
|
|
274
|
+
if (!status.summaryExists) {
|
|
275
|
+
const tasksDir = resolveTasksDir(base, mid, sid);
|
|
276
|
+
const sDir = resolveSlicePath(base, mid, sid);
|
|
277
|
+
const targetDir = tasksDir ?? (sDir ? join(sDir, "tasks") : null);
|
|
278
|
+
if (!targetDir)
|
|
279
|
+
return false;
|
|
280
|
+
if (!existsSync(targetDir))
|
|
281
|
+
mkdirSync(targetDir, { recursive: true });
|
|
282
|
+
const summaryPath = join(targetDir, buildTaskFileName(tid, "SUMMARY"));
|
|
283
|
+
const content = [
|
|
284
|
+
`# BLOCKER — task skipped by auto-mode recovery`,
|
|
285
|
+
``,
|
|
286
|
+
`Task \`${tid}\` in slice \`${sid}\` (milestone \`${mid}\`) failed to complete after ${reason} recovery exhausted ${maxAttempts} attempts.`,
|
|
287
|
+
``,
|
|
288
|
+
`This placeholder was written by auto-mode so the pipeline can advance.`,
|
|
289
|
+
`Review this task manually and replace this file with a real summary.`,
|
|
290
|
+
].join("\n");
|
|
291
|
+
writeFileSync(summaryPath, content, "utf-8");
|
|
292
|
+
}
|
|
293
|
+
// Mark [x] in the slice plan if not already checked.
|
|
294
|
+
if (!status.taskChecked) {
|
|
295
|
+
const planAbs = resolveSliceFile(base, mid, sid, "PLAN");
|
|
296
|
+
if (planAbs && existsSync(planAbs)) {
|
|
297
|
+
const planContent = readFileSync(planAbs, "utf-8");
|
|
298
|
+
const escapedTid = tid.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
299
|
+
const re = new RegExp(`^(- \\[) \\] (\\*\\*${escapedTid}:)`, "m");
|
|
300
|
+
if (re.test(planContent)) {
|
|
301
|
+
writeFileSync(planAbs, planContent.replace(re, "$1x] $2"), "utf-8");
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
// Regex didn't match — checkbox format differs from expected pattern.
|
|
305
|
+
// Return false so callers know the plan was NOT updated and can
|
|
306
|
+
// fall through to other recovery strategies instead of assuming success.
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
// ─── Disk-backed completed-unit helpers ───────────────────────────────────────
|
|
314
|
+
function isStringArray(data) {
|
|
315
|
+
return Array.isArray(data) && data.every(item => typeof item === "string");
|
|
316
|
+
}
|
|
317
|
+
/** Path to the persisted completed-unit keys file. */
|
|
318
|
+
export function completedKeysPath(base) {
|
|
319
|
+
return join(gsdRoot(base), "completed-units.json");
|
|
320
|
+
}
|
|
321
|
+
/** Write a completed unit key to disk (read-modify-write append to set). */
|
|
322
|
+
export function persistCompletedKey(base, key) {
|
|
323
|
+
const file = completedKeysPath(base);
|
|
324
|
+
const keys = loadJsonFileOrNull(file, isStringArray) ?? [];
|
|
325
|
+
const keySet = new Set(keys);
|
|
326
|
+
if (!keySet.has(key)) {
|
|
327
|
+
keys.push(key);
|
|
328
|
+
atomicWriteSync(file, JSON.stringify(keys));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/** Remove a stale completed unit key from disk. */
|
|
332
|
+
export function removePersistedKey(base, key) {
|
|
333
|
+
const file = completedKeysPath(base);
|
|
334
|
+
const keys = loadJsonFileOrNull(file, isStringArray);
|
|
335
|
+
if (!keys)
|
|
336
|
+
return;
|
|
337
|
+
const filtered = keys.filter(k => k !== key);
|
|
338
|
+
if (filtered.length !== keys.length) {
|
|
339
|
+
atomicWriteSync(file, JSON.stringify(filtered));
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/** Load all completed unit keys from disk into the in-memory set. */
|
|
343
|
+
export function loadPersistedKeys(base, target) {
|
|
344
|
+
const file = completedKeysPath(base);
|
|
345
|
+
const keys = loadJsonFileOrNull(file, isStringArray);
|
|
346
|
+
if (keys) {
|
|
347
|
+
for (const k of keys)
|
|
348
|
+
target.add(k);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// ─── Merge State Reconciliation ───────────────────────────────────────────────
|
|
352
|
+
/**
|
|
353
|
+
* Detect leftover merge state from a prior session and reconcile it.
|
|
354
|
+
* If MERGE_HEAD or SQUASH_MSG exists, check whether conflicts are resolved.
|
|
355
|
+
* If resolved: finalize the commit. If still conflicted: abort and reset.
|
|
356
|
+
*
|
|
357
|
+
* Returns true if state was dirty and re-derivation is needed.
|
|
358
|
+
*/
|
|
359
|
+
export function reconcileMergeState(basePath, ctx) {
|
|
360
|
+
const mergeHeadPath = join(basePath, ".git", "MERGE_HEAD");
|
|
361
|
+
const squashMsgPath = join(basePath, ".git", "SQUASH_MSG");
|
|
362
|
+
const hasMergeHead = existsSync(mergeHeadPath);
|
|
363
|
+
const hasSquashMsg = existsSync(squashMsgPath);
|
|
364
|
+
if (!hasMergeHead && !hasSquashMsg)
|
|
365
|
+
return false;
|
|
366
|
+
const conflictedFiles = nativeConflictFiles(basePath);
|
|
367
|
+
if (conflictedFiles.length === 0) {
|
|
368
|
+
// All conflicts resolved — finalize the merge/squash commit
|
|
369
|
+
try {
|
|
370
|
+
nativeCommit(basePath, ""); // --no-edit equivalent: use empty message placeholder
|
|
371
|
+
const mode = hasMergeHead ? "merge" : "squash commit";
|
|
372
|
+
ctx.ui.notify(`Finalized leftover ${mode} from prior session.`, "info");
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
// Commit may already exist; non-fatal
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
// Still conflicted — try auto-resolving .gsd/ state file conflicts (#530)
|
|
380
|
+
const gsdConflicts = conflictedFiles.filter(f => f.startsWith(".gsd/"));
|
|
381
|
+
const codeConflicts = conflictedFiles.filter(f => !f.startsWith(".gsd/"));
|
|
382
|
+
if (gsdConflicts.length > 0 && codeConflicts.length === 0) {
|
|
383
|
+
// All conflicts are in .gsd/ state files — auto-resolve by accepting theirs
|
|
384
|
+
let resolved = true;
|
|
385
|
+
try {
|
|
386
|
+
nativeCheckoutTheirs(basePath, gsdConflicts);
|
|
387
|
+
nativeAddPaths(basePath, gsdConflicts);
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
resolved = false;
|
|
391
|
+
}
|
|
392
|
+
if (resolved) {
|
|
393
|
+
try {
|
|
394
|
+
nativeCommit(basePath, "chore: auto-resolve .gsd/ state file conflicts");
|
|
395
|
+
ctx.ui.notify(`Auto-resolved ${gsdConflicts.length} .gsd/ state file conflict(s) from prior merge.`, "info");
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
resolved = false;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
if (!resolved) {
|
|
402
|
+
if (hasMergeHead) {
|
|
403
|
+
try {
|
|
404
|
+
nativeMergeAbort(basePath);
|
|
405
|
+
}
|
|
406
|
+
catch { /* best-effort */ }
|
|
407
|
+
}
|
|
408
|
+
else if (hasSquashMsg) {
|
|
409
|
+
try {
|
|
410
|
+
unlinkSync(squashMsgPath);
|
|
411
|
+
}
|
|
412
|
+
catch { /* best-effort */ }
|
|
413
|
+
}
|
|
414
|
+
try {
|
|
415
|
+
nativeResetHard(basePath);
|
|
416
|
+
}
|
|
417
|
+
catch { /* best-effort */ }
|
|
418
|
+
ctx.ui.notify("Detected leftover merge state — auto-resolve failed, cleaned up. Re-deriving state.", "warning");
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
// Code conflicts present — abort and reset
|
|
423
|
+
if (hasMergeHead) {
|
|
424
|
+
try {
|
|
425
|
+
nativeMergeAbort(basePath);
|
|
426
|
+
}
|
|
427
|
+
catch { /* best-effort */ }
|
|
428
|
+
}
|
|
429
|
+
else if (hasSquashMsg) {
|
|
430
|
+
try {
|
|
431
|
+
unlinkSync(squashMsgPath);
|
|
432
|
+
}
|
|
433
|
+
catch { /* best-effort */ }
|
|
434
|
+
}
|
|
435
|
+
try {
|
|
436
|
+
nativeResetHard(basePath);
|
|
437
|
+
}
|
|
438
|
+
catch { /* best-effort */ }
|
|
439
|
+
ctx.ui.notify("Detected leftover merge state with unresolved conflicts — cleaned up. Re-deriving state.", "warning");
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return true;
|
|
443
|
+
}
|
|
444
|
+
// ─── Self-Heal Runtime Records ────────────────────────────────────────────────
|
|
445
|
+
/**
|
|
446
|
+
* Self-heal: scan runtime records in .gsd/ and clear any where the expected
|
|
447
|
+
* artifact already exists on disk. This repairs incomplete closeouts from
|
|
448
|
+
* prior crashes — preventing spurious re-dispatch of already-completed units.
|
|
449
|
+
*/
|
|
450
|
+
export async function selfHealRuntimeRecords(base, ctx, completedKeySet) {
|
|
451
|
+
try {
|
|
452
|
+
const { listUnitRuntimeRecords } = await import("./unit-runtime.js");
|
|
453
|
+
const records = listUnitRuntimeRecords(base);
|
|
454
|
+
let healed = 0;
|
|
455
|
+
const STALE_THRESHOLD_MS = 60 * 60 * 1000; // 1 hour
|
|
456
|
+
const now = Date.now();
|
|
457
|
+
for (const record of records) {
|
|
458
|
+
const { unitType, unitId } = record;
|
|
459
|
+
const artifactPath = resolveExpectedArtifactPath(unitType, unitId, base);
|
|
460
|
+
// Case 1: Artifact exists — unit completed but closeout didn't finish.
|
|
461
|
+
// Use verifyExpectedArtifact (not just existsSync) so that execute-task
|
|
462
|
+
// also checks the plan checkbox is marked [x]. Without this, a task
|
|
463
|
+
// whose summary exists but checkbox is unchecked would be incorrectly
|
|
464
|
+
// marked as completed, causing deriveState to re-dispatch it endlessly.
|
|
465
|
+
if (artifactPath && existsSync(artifactPath) && verifyExpectedArtifact(unitType, unitId, base)) {
|
|
466
|
+
clearUnitRuntimeRecord(base, unitType, unitId);
|
|
467
|
+
// Also persist completion key if missing
|
|
468
|
+
const key = `${unitType}/${unitId}`;
|
|
469
|
+
if (!completedKeySet.has(key)) {
|
|
470
|
+
persistCompletedKey(base, key);
|
|
471
|
+
completedKeySet.add(key);
|
|
472
|
+
}
|
|
473
|
+
healed++;
|
|
474
|
+
continue;
|
|
475
|
+
}
|
|
476
|
+
// Case 2: No artifact but record is stale (dispatched > 1h ago, process crashed)
|
|
477
|
+
const age = now - (record.startedAt ?? 0);
|
|
478
|
+
if (record.phase === "dispatched" && age > STALE_THRESHOLD_MS) {
|
|
479
|
+
clearUnitRuntimeRecord(base, unitType, unitId);
|
|
480
|
+
healed++;
|
|
481
|
+
continue;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
if (healed > 0) {
|
|
485
|
+
ctx.ui.notify(`Self-heal: cleared ${healed} stale runtime record(s).`, "info");
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
catch (e) {
|
|
489
|
+
// Non-fatal — self-heal should never block auto-mode start
|
|
490
|
+
void e;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
// ─── Loop Remediation ─────────────────────────────────────────────────────────
|
|
494
|
+
/**
|
|
495
|
+
* Build concrete, manual remediation steps for a loop-detected unit failure.
|
|
496
|
+
* These are shown when automatic reconciliation is not possible.
|
|
497
|
+
*/
|
|
498
|
+
export function buildLoopRemediationSteps(unitType, unitId, base) {
|
|
499
|
+
const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
|
|
500
|
+
switch (unitType) {
|
|
501
|
+
case "execute-task": {
|
|
502
|
+
if (!mid || !sid || !tid)
|
|
503
|
+
break;
|
|
504
|
+
const planRel = relSliceFile(base, mid, sid, "PLAN");
|
|
505
|
+
const summaryRel = relTaskFile(base, mid, sid, tid, "SUMMARY");
|
|
506
|
+
return [
|
|
507
|
+
` 1. Write ${summaryRel} (even a partial summary is sufficient to unblock the pipeline)`,
|
|
508
|
+
` 2. Mark ${tid} [x] in ${planRel}: change "- [ ] **${tid}:" → "- [x] **${tid}:"`,
|
|
509
|
+
` 3. Run \`gsd doctor\` to reconcile .gsd/ state`,
|
|
510
|
+
` 4. Resume auto-mode — it will pick up from the next task`,
|
|
511
|
+
].join("\n");
|
|
512
|
+
}
|
|
513
|
+
case "plan-slice":
|
|
514
|
+
case "research-slice": {
|
|
515
|
+
if (!mid || !sid)
|
|
516
|
+
break;
|
|
517
|
+
const artifactRel = unitType === "plan-slice"
|
|
518
|
+
? relSliceFile(base, mid, sid, "PLAN")
|
|
519
|
+
: relSliceFile(base, mid, sid, "RESEARCH");
|
|
520
|
+
return [
|
|
521
|
+
` 1. Write ${artifactRel} manually (or with the LLM in interactive mode)`,
|
|
522
|
+
` 2. Run \`gsd doctor\` to reconcile .gsd/ state`,
|
|
523
|
+
` 3. Resume auto-mode`,
|
|
524
|
+
].join("\n");
|
|
525
|
+
}
|
|
526
|
+
case "complete-slice": {
|
|
527
|
+
if (!mid || !sid)
|
|
528
|
+
break;
|
|
529
|
+
return [
|
|
530
|
+
` 1. Write the slice summary and UAT file for ${sid} in ${relSlicePath(base, mid, sid)}`,
|
|
531
|
+
` 2. Mark ${sid} [x] in ${relMilestoneFile(base, mid, "ROADMAP")}`,
|
|
532
|
+
` 3. Run \`gsd doctor\` to reconcile .gsd/ state`,
|
|
533
|
+
` 4. Resume auto-mode`,
|
|
534
|
+
].join("\n");
|
|
535
|
+
}
|
|
536
|
+
case "validate-milestone": {
|
|
537
|
+
if (!mid)
|
|
538
|
+
break;
|
|
539
|
+
const artifactRel = relMilestoneFile(base, mid, "VALIDATION");
|
|
540
|
+
return [
|
|
541
|
+
` 1. Write ${artifactRel} with verdict: pass`,
|
|
542
|
+
` 2. Run \`gsd doctor\``,
|
|
543
|
+
` 3. Resume auto-mode`,
|
|
544
|
+
].join("\n");
|
|
545
|
+
}
|
|
546
|
+
default:
|
|
547
|
+
break;
|
|
548
|
+
}
|
|
549
|
+
return null;
|
|
550
|
+
}
|