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
|
@@ -9,10 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
12
|
-
import { join, resolve } from "node:path";
|
|
12
|
+
import { join, resolve, sep } from "node:path";
|
|
13
13
|
import { randomUUID } from "node:crypto";
|
|
14
14
|
import { gsdRoot } from "./paths.js";
|
|
15
|
-
import { resolveProjectRoot } from "./worktree.js";
|
|
16
15
|
|
|
17
16
|
// ─── Types ────────────────────────────────────────────────────────────────────
|
|
18
17
|
|
|
@@ -59,8 +58,15 @@ const VALID_CLASSIFICATIONS: readonly string[] = [
|
|
|
59
58
|
* directory that contains `.gsd/worktrees/` — that's the project root.
|
|
60
59
|
*/
|
|
61
60
|
export function resolveCapturesPath(basePath: string): string {
|
|
62
|
-
const
|
|
63
|
-
|
|
61
|
+
const resolved = resolve(basePath);
|
|
62
|
+
const worktreeMarker = `${sep}.gsd${sep}worktrees${sep}`;
|
|
63
|
+
const idx = resolved.indexOf(worktreeMarker);
|
|
64
|
+
if (idx !== -1) {
|
|
65
|
+
// basePath is inside a worktree — resolve to project root
|
|
66
|
+
const projectRoot = resolved.slice(0, idx);
|
|
67
|
+
return join(projectRoot, ".gsd", CAPTURES_FILENAME);
|
|
68
|
+
}
|
|
69
|
+
return join(gsdRoot(basePath), CAPTURES_FILENAME);
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
// ─── File I/O ─────────────────────────────────────────────────────────────────
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@gsd/pi-coding-agent";
|
|
2
|
+
|
|
3
|
+
const TOP_LEVEL_SUBCOMMANDS = [
|
|
4
|
+
{ cmd: "help", desc: "Categorized command reference with descriptions" },
|
|
5
|
+
{ cmd: "next", desc: "Explicit step mode (same as /gsd)" },
|
|
6
|
+
{ cmd: "auto", desc: "Autonomous mode — research, plan, execute, commit, repeat" },
|
|
7
|
+
{ cmd: "stop", desc: "Stop auto mode gracefully" },
|
|
8
|
+
{ cmd: "pause", desc: "Pause auto-mode (preserves state, /gsd auto to resume)" },
|
|
9
|
+
{ cmd: "status", desc: "Progress dashboard" },
|
|
10
|
+
{ cmd: "visualize", desc: "Open workflow visualizer" },
|
|
11
|
+
{ cmd: "queue", desc: "Queue and reorder future milestones" },
|
|
12
|
+
{ cmd: "quick", desc: "Execute a quick task without full planning overhead" },
|
|
13
|
+
{ cmd: "discuss", desc: "Discuss architecture and decisions" },
|
|
14
|
+
{ cmd: "capture", desc: "Fire-and-forget thought capture" },
|
|
15
|
+
{ cmd: "triage", desc: "Manually trigger triage of pending captures" },
|
|
16
|
+
{ cmd: "dispatch", desc: "Dispatch a specific phase directly" },
|
|
17
|
+
{ cmd: "history", desc: "View execution history" },
|
|
18
|
+
{ cmd: "undo", desc: "Revert last completed unit" },
|
|
19
|
+
{ cmd: "skip", desc: "Prevent a unit from auto-mode dispatch" },
|
|
20
|
+
{ cmd: "export", desc: "Export milestone or slice results" },
|
|
21
|
+
{ cmd: "cleanup", desc: "Remove merged branches or snapshots" },
|
|
22
|
+
{ cmd: "mode", desc: "Switch workflow mode (solo/team)" },
|
|
23
|
+
{ cmd: "prefs", desc: "Manage preferences" },
|
|
24
|
+
{ cmd: "config", desc: "Set API keys for external tools" },
|
|
25
|
+
{ cmd: "keys", desc: "API key manager" },
|
|
26
|
+
{ cmd: "hooks", desc: "Show configured hooks" },
|
|
27
|
+
{ cmd: "run-hook", desc: "Manually trigger a specific hook" },
|
|
28
|
+
{ cmd: "skill-health", desc: "Skill lifecycle dashboard" },
|
|
29
|
+
{ cmd: "doctor", desc: "Runtime health checks with auto-fix" },
|
|
30
|
+
{ cmd: "logs", desc: "Browse activity logs, debug logs, and metrics" },
|
|
31
|
+
{ cmd: "forensics", desc: "Examine execution logs" },
|
|
32
|
+
{ cmd: "init", desc: "Project init wizard" },
|
|
33
|
+
{ cmd: "setup", desc: "Global setup status and configuration" },
|
|
34
|
+
{ cmd: "migrate", desc: "Migrate a v1 .planning directory to .gsd format" },
|
|
35
|
+
{ cmd: "remote", desc: "Control remote auto-mode" },
|
|
36
|
+
{ cmd: "steer", desc: "Hard-steer plan documents during execution" },
|
|
37
|
+
{ cmd: "inspect", desc: "Show SQLite DB diagnostics" },
|
|
38
|
+
{ cmd: "knowledge", desc: "Add persistent project knowledge" },
|
|
39
|
+
{ cmd: "new-milestone", desc: "Create a milestone from a specification document" },
|
|
40
|
+
{ cmd: "parallel", desc: "Parallel milestone orchestration" },
|
|
41
|
+
{ cmd: "park", desc: "Park a milestone" },
|
|
42
|
+
{ cmd: "unpark", desc: "Reactivate a parked milestone" },
|
|
43
|
+
{ cmd: "update", desc: "Update GSD to the latest version" },
|
|
44
|
+
{ cmd: "start", desc: "Start a workflow template" },
|
|
45
|
+
{ cmd: "templates", desc: "List available workflow templates" },
|
|
46
|
+
{ cmd: "extensions", desc: "Manage extensions" },
|
|
47
|
+
] as const;
|
|
48
|
+
|
|
49
|
+
function filterStartsWith(
|
|
50
|
+
partial: string,
|
|
51
|
+
options: ReadonlyArray<{ cmd: string; desc: string }>,
|
|
52
|
+
prefix = "",
|
|
53
|
+
) {
|
|
54
|
+
const normalizedPrefix = prefix.length > 0 ? `${prefix} ` : "";
|
|
55
|
+
return options
|
|
56
|
+
.filter((option) => option.cmd.startsWith(partial))
|
|
57
|
+
.map((option) => ({
|
|
58
|
+
value: `${normalizedPrefix}${option.cmd}`,
|
|
59
|
+
label: option.cmd,
|
|
60
|
+
description: option.desc,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function getGsdArgumentCompletions(prefix: string) {
|
|
65
|
+
const parts = prefix.trim().split(/\s+/);
|
|
66
|
+
|
|
67
|
+
if (parts.length <= 1) {
|
|
68
|
+
return filterStartsWith(parts[0] ?? "", TOP_LEVEL_SUBCOMMANDS);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const partial = parts[1] ?? "";
|
|
72
|
+
|
|
73
|
+
if (parts[0] === "auto" && parts.length <= 2) {
|
|
74
|
+
return filterStartsWith(partial, [
|
|
75
|
+
{ cmd: "--verbose", desc: "Show detailed execution output" },
|
|
76
|
+
{ cmd: "--debug", desc: "Enable debug logging" },
|
|
77
|
+
], "auto");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (parts[0] === "next" && parts.length <= 2) {
|
|
81
|
+
return filterStartsWith(partial, [
|
|
82
|
+
{ cmd: "--verbose", desc: "Show detailed step output" },
|
|
83
|
+
{ cmd: "--dry-run", desc: "Preview next step without executing" },
|
|
84
|
+
], "next");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (parts[0] === "mode" && parts.length <= 2) {
|
|
88
|
+
return filterStartsWith(partial, [
|
|
89
|
+
{ cmd: "global", desc: "Edit global workflow mode" },
|
|
90
|
+
{ cmd: "project", desc: "Edit project-specific workflow mode" },
|
|
91
|
+
], "mode");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (parts[0] === "parallel" && parts.length <= 2) {
|
|
95
|
+
return filterStartsWith(partial, [
|
|
96
|
+
{ cmd: "start", desc: "Start parallel milestone orchestration" },
|
|
97
|
+
{ cmd: "status", desc: "Show parallel worker statuses" },
|
|
98
|
+
{ cmd: "stop", desc: "Stop all parallel workers" },
|
|
99
|
+
{ cmd: "pause", desc: "Pause a specific worker" },
|
|
100
|
+
{ cmd: "resume", desc: "Resume a paused worker" },
|
|
101
|
+
{ cmd: "merge", desc: "Merge completed milestone branches" },
|
|
102
|
+
], "parallel");
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (parts[0] === "setup" && parts.length <= 2) {
|
|
106
|
+
return filterStartsWith(partial, [
|
|
107
|
+
{ cmd: "llm", desc: "Configure LLM provider settings" },
|
|
108
|
+
{ cmd: "search", desc: "Configure web search provider" },
|
|
109
|
+
{ cmd: "remote", desc: "Configure remote integrations" },
|
|
110
|
+
{ cmd: "keys", desc: "Manage API keys" },
|
|
111
|
+
{ cmd: "prefs", desc: "Configure global preferences" },
|
|
112
|
+
], "setup");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (parts[0] === "logs" && parts.length <= 2) {
|
|
116
|
+
return filterStartsWith(partial, [
|
|
117
|
+
{ cmd: "debug", desc: "List or view debug log files" },
|
|
118
|
+
{ cmd: "tail", desc: "Show last N activity log summaries" },
|
|
119
|
+
{ cmd: "clear", desc: "Remove old activity and debug logs" },
|
|
120
|
+
], "logs");
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (parts[0] === "keys" && parts.length <= 2) {
|
|
124
|
+
return filterStartsWith(partial, [
|
|
125
|
+
{ cmd: "list", desc: "Show key status dashboard" },
|
|
126
|
+
{ cmd: "add", desc: "Add a key for a provider" },
|
|
127
|
+
{ cmd: "remove", desc: "Remove a key" },
|
|
128
|
+
{ cmd: "test", desc: "Validate key(s) with API call" },
|
|
129
|
+
{ cmd: "rotate", desc: "Replace an existing key" },
|
|
130
|
+
{ cmd: "doctor", desc: "Health check all keys" },
|
|
131
|
+
], "keys");
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (parts[0] === "prefs" && parts.length <= 2) {
|
|
135
|
+
return filterStartsWith(partial, [
|
|
136
|
+
{ cmd: "global", desc: "Edit global preferences file" },
|
|
137
|
+
{ cmd: "project", desc: "Edit project preferences file" },
|
|
138
|
+
{ cmd: "status", desc: "Show effective preferences" },
|
|
139
|
+
{ cmd: "wizard", desc: "Interactive preferences wizard" },
|
|
140
|
+
{ cmd: "setup", desc: "First-time preferences setup" },
|
|
141
|
+
{ cmd: "import-claude", desc: "Import settings from Claude Code" },
|
|
142
|
+
], "prefs");
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (parts[0] === "remote" && parts.length <= 2) {
|
|
146
|
+
return filterStartsWith(partial, [
|
|
147
|
+
{ cmd: "slack", desc: "Configure Slack integration" },
|
|
148
|
+
{ cmd: "discord", desc: "Configure Discord integration" },
|
|
149
|
+
{ cmd: "status", desc: "Show remote connection status" },
|
|
150
|
+
{ cmd: "disconnect", desc: "Disconnect remote integrations" },
|
|
151
|
+
], "remote");
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (parts[0] === "history" && parts.length <= 2) {
|
|
155
|
+
return filterStartsWith(partial, [
|
|
156
|
+
{ cmd: "--cost", desc: "Show cost breakdown per entry" },
|
|
157
|
+
{ cmd: "--phase", desc: "Filter by phase type" },
|
|
158
|
+
{ cmd: "--model", desc: "Filter by model used" },
|
|
159
|
+
{ cmd: "10", desc: "Show last 10 entries" },
|
|
160
|
+
{ cmd: "20", desc: "Show last 20 entries" },
|
|
161
|
+
{ cmd: "50", desc: "Show last 50 entries" },
|
|
162
|
+
], "history");
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (parts[0] === "export" && parts.length <= 2) {
|
|
166
|
+
return filterStartsWith(partial, [
|
|
167
|
+
{ cmd: "--json", desc: "Export as JSON" },
|
|
168
|
+
{ cmd: "--markdown", desc: "Export as Markdown" },
|
|
169
|
+
{ cmd: "--html", desc: "Export as HTML" },
|
|
170
|
+
{ cmd: "--html --all", desc: "Export all milestones as HTML" },
|
|
171
|
+
], "export");
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (parts[0] === "cleanup" && parts.length <= 2) {
|
|
175
|
+
return filterStartsWith(partial, [
|
|
176
|
+
{ cmd: "branches", desc: "Remove merged milestone branches" },
|
|
177
|
+
{ cmd: "snapshots", desc: "Remove old execution snapshots" },
|
|
178
|
+
], "cleanup");
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (parts[0] === "knowledge" && parts.length <= 2) {
|
|
182
|
+
return filterStartsWith(partial, [
|
|
183
|
+
{ cmd: "rule", desc: "Add a project rule" },
|
|
184
|
+
{ cmd: "pattern", desc: "Add a code pattern" },
|
|
185
|
+
{ cmd: "lesson", desc: "Record a lesson learned" },
|
|
186
|
+
], "knowledge");
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (parts[0] === "start" && parts.length <= 2) {
|
|
190
|
+
return filterStartsWith(partial, [
|
|
191
|
+
{ cmd: "bugfix", desc: "Triage, fix, test, and ship a bug fix" },
|
|
192
|
+
{ cmd: "small-feature", desc: "Lightweight feature with optional discussion" },
|
|
193
|
+
{ cmd: "spike", desc: "Research, prototype, and document findings" },
|
|
194
|
+
{ cmd: "hotfix", desc: "Minimal: fix it, test it, ship it" },
|
|
195
|
+
{ cmd: "refactor", desc: "Inventory, plan waves, migrate, verify" },
|
|
196
|
+
{ cmd: "security-audit", desc: "Scan, triage, remediate, re-scan" },
|
|
197
|
+
{ cmd: "dep-upgrade", desc: "Assess, upgrade, fix breaks, verify" },
|
|
198
|
+
{ cmd: "full-project", desc: "Complete GSD workflow with full ceremony" },
|
|
199
|
+
{ cmd: "resume", desc: "Resume an in-progress workflow" },
|
|
200
|
+
{ cmd: "--list", desc: "List all available templates" },
|
|
201
|
+
{ cmd: "--dry-run", desc: "Preview workflow without executing" },
|
|
202
|
+
], "start");
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (parts[0] === "templates" && parts.length <= 2) {
|
|
206
|
+
return filterStartsWith(partial, [
|
|
207
|
+
{ cmd: "info", desc: "Show detailed template info" },
|
|
208
|
+
], "templates");
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (parts[0] === "extensions" && parts.length <= 2) {
|
|
212
|
+
return filterStartsWith(partial, [
|
|
213
|
+
{ cmd: "list", desc: "List all extensions and their status" },
|
|
214
|
+
{ cmd: "enable", desc: "Enable a disabled extension" },
|
|
215
|
+
{ cmd: "disable", desc: "Disable an extension" },
|
|
216
|
+
{ cmd: "info", desc: "Show extension details" },
|
|
217
|
+
], "extensions");
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (parts[0] === "doctor" && parts.length <= 2) {
|
|
221
|
+
return filterStartsWith(partial, [
|
|
222
|
+
{ cmd: "fix", desc: "Auto-fix detected issues" },
|
|
223
|
+
{ cmd: "heal", desc: "AI-driven deep healing" },
|
|
224
|
+
{ cmd: "audit", desc: "Run health audit without fixing" },
|
|
225
|
+
], "doctor");
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
if (parts[0] === "dispatch" && parts.length <= 2) {
|
|
229
|
+
return filterStartsWith(partial, [
|
|
230
|
+
{ cmd: "research", desc: "Run research phase" },
|
|
231
|
+
{ cmd: "plan", desc: "Run planning phase" },
|
|
232
|
+
{ cmd: "execute", desc: "Run execution phase" },
|
|
233
|
+
{ cmd: "complete", desc: "Run completion phase" },
|
|
234
|
+
{ cmd: "reassess", desc: "Reassess current progress" },
|
|
235
|
+
{ cmd: "uat", desc: "Run user acceptance testing" },
|
|
236
|
+
{ cmd: "replan", desc: "Replan the current slice" },
|
|
237
|
+
], "dispatch");
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export function registerLazyGSDCommand(pi: ExtensionAPI): void {
|
|
244
|
+
pi.registerCommand("gsd", {
|
|
245
|
+
description: "GSD — Get Shit Done",
|
|
246
|
+
getArgumentCompletions: getGsdArgumentCompletions,
|
|
247
|
+
handler: async (args: string, ctx: ExtensionCommandContext) => {
|
|
248
|
+
const { handleGSDCommand } = await importExtensionModule<typeof import("./commands.js")>(import.meta.url, "./commands.js");
|
|
249
|
+
await handleGSDCommand(args, ctx, pi);
|
|
250
|
+
},
|
|
251
|
+
});
|
|
252
|
+
}
|
|
@@ -416,36 +416,46 @@ export function registerGSDCommand(pi: ExtensionAPI): void {
|
|
|
416
416
|
},
|
|
417
417
|
|
|
418
418
|
async handler(args: string, ctx: ExtensionCommandContext) {
|
|
419
|
-
|
|
419
|
+
await handleGSDCommand(args, ctx, pi);
|
|
420
|
+
},
|
|
421
|
+
});
|
|
422
|
+
}
|
|
420
423
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
424
|
+
export async function handleGSDCommand(
|
|
425
|
+
args: string,
|
|
426
|
+
ctx: ExtensionCommandContext,
|
|
427
|
+
pi: ExtensionAPI,
|
|
428
|
+
): Promise<void> {
|
|
429
|
+
const trimmed = (typeof args === "string" ? args : "").trim();
|
|
425
430
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
431
|
+
if (trimmed === "help" || trimmed === "h" || trimmed === "?") {
|
|
432
|
+
showHelp(ctx);
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
430
435
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
436
|
+
if (trimmed === "status") {
|
|
437
|
+
await handleStatus(ctx);
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
435
440
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
await ensurePreferencesFile(path, ctx, scope);
|
|
441
|
-
await handlePrefsMode(ctx, scope);
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
441
|
+
if (trimmed === "visualize") {
|
|
442
|
+
await handleVisualize(ctx);
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
444
445
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
446
|
+
if (trimmed === "mode" || trimmed.startsWith("mode ")) {
|
|
447
|
+
const modeArgs = trimmed.replace(/^mode\s*/, "").trim();
|
|
448
|
+
const scope = modeArgs === "project" ? "project" : "global";
|
|
449
|
+
const path = scope === "project" ? getProjectGSDPreferencesPath() : getGlobalGSDPreferencesPath();
|
|
450
|
+
await ensurePreferencesFile(path, ctx, scope);
|
|
451
|
+
await handlePrefsMode(ctx, scope);
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
if (trimmed === "prefs" || trimmed.startsWith("prefs ")) {
|
|
456
|
+
await handlePrefs(trimmed.replace(/^prefs\s*/, "").trim(), ctx);
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
449
459
|
|
|
450
460
|
if (trimmed === "init") {
|
|
451
461
|
const { detectProjectState } = await import("./detection.js");
|
|
@@ -893,12 +903,10 @@ Examples:
|
|
|
893
903
|
return;
|
|
894
904
|
}
|
|
895
905
|
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
},
|
|
901
|
-
});
|
|
906
|
+
ctx.ui.notify(
|
|
907
|
+
`Unknown: /gsd ${trimmed}. Run /gsd help for available commands.`,
|
|
908
|
+
"warning",
|
|
909
|
+
);
|
|
902
910
|
}
|
|
903
911
|
|
|
904
912
|
function showHelp(ctx: ExtensionCommandContext): void {
|
|
@@ -5,7 +5,6 @@ import { readdirSync } from "node:fs";
|
|
|
5
5
|
import { resolveMilestoneFile, milestonesDir } from "./paths.js";
|
|
6
6
|
import { parseRoadmapSlices } from "./roadmap-slices.js";
|
|
7
7
|
import { findMilestoneIds } from "./guided-flow.js";
|
|
8
|
-
import { parseUnitId } from "./unit-id.js";
|
|
9
8
|
|
|
10
9
|
const SLICE_DISPATCH_TYPES = new Set([
|
|
11
10
|
"research-slice",
|
|
@@ -37,10 +36,15 @@ function readRoadmapFromDisk(base: string, milestoneId: string): string | null {
|
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
export function getPriorSliceCompletionBlocker(
|
|
39
|
+
export function getPriorSliceCompletionBlocker(
|
|
40
|
+
base: string,
|
|
41
|
+
_mainBranch: string,
|
|
42
|
+
unitType: string,
|
|
43
|
+
unitId: string,
|
|
44
|
+
): string | null {
|
|
41
45
|
if (!SLICE_DISPATCH_TYPES.has(unitType)) return null;
|
|
42
46
|
|
|
43
|
-
const
|
|
47
|
+
const [targetMid, targetSid] = unitId.split("/");
|
|
44
48
|
if (!targetMid || !targetSid) return null;
|
|
45
49
|
|
|
46
50
|
// Use findMilestoneIds to respect custom queue order.
|
|
@@ -51,9 +55,7 @@ export function getPriorSliceCompletionBlocker(base: string, _mainBranch: string
|
|
|
51
55
|
const milestoneIds = allIds.slice(0, targetIdx + 1);
|
|
52
56
|
|
|
53
57
|
for (const mid of milestoneIds) {
|
|
54
|
-
|
|
55
|
-
const parkedFile = resolveMilestoneFile(base, mid, "PARKED");
|
|
56
|
-
if (parkedFile) continue;
|
|
58
|
+
if (resolveMilestoneFile(base, mid, "PARKED")) continue;
|
|
57
59
|
|
|
58
60
|
// Read from disk (working tree) — always has the latest state
|
|
59
61
|
const roadmapContent = readRoadmapFromDisk(base, mid);
|
|
@@ -61,17 +63,19 @@ export function getPriorSliceCompletionBlocker(base: string, _mainBranch: string
|
|
|
61
63
|
|
|
62
64
|
const slices = parseRoadmapSlices(roadmapContent);
|
|
63
65
|
if (mid !== targetMid) {
|
|
64
|
-
const incomplete = slices.find(slice => !slice.done);
|
|
66
|
+
const incomplete = slices.find((slice) => !slice.done);
|
|
65
67
|
if (incomplete) {
|
|
66
68
|
return `Cannot dispatch ${unitType} ${unitId}: earlier slice ${mid}/${incomplete.id} is not complete.`;
|
|
67
69
|
}
|
|
68
70
|
continue;
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
const targetIndex = slices.findIndex(slice => slice.id === targetSid);
|
|
73
|
+
const targetIndex = slices.findIndex((slice) => slice.id === targetSid);
|
|
72
74
|
if (targetIndex === -1) return null;
|
|
73
75
|
|
|
74
|
-
const incomplete = slices
|
|
76
|
+
const incomplete = slices
|
|
77
|
+
.slice(0, targetIndex)
|
|
78
|
+
.find((slice) => !slice.done);
|
|
75
79
|
if (incomplete) {
|
|
76
80
|
return `Cannot dispatch ${unitType} ${unitId}: earlier slice ${targetMid}/${incomplete.id} is not complete.`;
|
|
77
81
|
}
|
|
@@ -21,7 +21,12 @@ Full documentation for `~/.gsd/preferences.md` (global) and `.gsd/preferences.md
|
|
|
21
21
|
**Empty arrays (`[]`) are equivalent to omitting the field entirely.** During validation, GSD deletes empty arrays from the preferences object (see `validatePreferences()` in `preferences.ts`):
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
|
-
for (const key of [
|
|
24
|
+
for (const key of [
|
|
25
|
+
"always_use_skills",
|
|
26
|
+
"prefer_skills",
|
|
27
|
+
"avoid_skills",
|
|
28
|
+
"custom_instructions",
|
|
29
|
+
] as const) {
|
|
25
30
|
if (validated[key] && validated[key]!.length === 0) {
|
|
26
31
|
delete validated[key];
|
|
27
32
|
}
|
|
@@ -50,6 +55,7 @@ Preferences are loaded from two locations and merged:
|
|
|
50
55
|
2. **Project:** `.gsd/preferences.md` — applies to the current project only
|
|
51
56
|
|
|
52
57
|
**Merge behavior** (see `mergePreferences()` in `preferences.ts`):
|
|
58
|
+
|
|
53
59
|
- **Scalar fields** (`skill_discovery`, `budget_ceiling`, etc.): Project wins if defined, otherwise global. Uses nullish coalescing (`??`).
|
|
54
60
|
- **Array fields** (`always_use_skills`, `prefer_skills`, etc.): Concatenated via `mergeStringLists()` (global first, then project).
|
|
55
61
|
- **Object fields** (`models`, `git`, `auto_supervisor`): Shallow merge via spread operator `{ ...base, ...override }`.
|
|
@@ -60,10 +66,10 @@ For `models`, project settings override global at the phase level. If global has
|
|
|
60
66
|
|
|
61
67
|
These are **separate concerns**:
|
|
62
68
|
|
|
63
|
-
| Field
|
|
64
|
-
|
|
65
|
-
| `skill_discovery`
|
|
66
|
-
| `always_use_skills`, `prefer_skills`, `avoid_skills` | **Which** skills to use when they're found relevant
|
|
69
|
+
| Field | What it controls | Code reference |
|
|
70
|
+
| ---------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------- |
|
|
71
|
+
| `skill_discovery` | **Whether** GSD looks for relevant skills during research | `resolveSkillDiscoveryMode()` in `preferences.ts` |
|
|
72
|
+
| `always_use_skills`, `prefer_skills`, `avoid_skills` | **Which** skills to use when they're found relevant | `renderPreferencesForSystemPrompt()` in `preferences.ts` |
|
|
67
73
|
|
|
68
74
|
Setting `prefer_skills: []` does **not** disable skill discovery — it just means you have no preference overrides. Use `skill_discovery: off` to disable discovery entirely.
|
|
69
75
|
|
|
@@ -75,14 +81,14 @@ Setting `prefer_skills: []` does **not** disable skill discovery — it just mea
|
|
|
75
81
|
|
|
76
82
|
- `mode`: workflow mode — `"solo"` or `"team"`. Sets sensible defaults for git and project settings based on your workflow. Mode defaults are the lowest priority layer — any explicit preference overrides them. Omit to configure everything manually.
|
|
77
83
|
|
|
78
|
-
| Setting
|
|
79
|
-
|
|
80
|
-
| `git.auto_push`
|
|
81
|
-
| `git.push_branches`
|
|
82
|
-
| `git.pre_merge_check`
|
|
83
|
-
| `git.merge_strategy`
|
|
84
|
-
| `git.isolation`
|
|
85
|
-
| `unique_milestone_ids` | `false`
|
|
84
|
+
| Setting | `solo` | `team` |
|
|
85
|
+
| ---------------------- | ------------ | ------------ |
|
|
86
|
+
| `git.auto_push` | `true` | `false` |
|
|
87
|
+
| `git.push_branches` | `false` | `true` |
|
|
88
|
+
| `git.pre_merge_check` | `false` | `true` |
|
|
89
|
+
| `git.merge_strategy` | `"squash"` | `"squash"` |
|
|
90
|
+
| `git.isolation` | `"worktree"` | `"worktree"` |
|
|
91
|
+
| `unique_milestone_ids` | `false` | `true` |
|
|
86
92
|
|
|
87
93
|
Quick setup: `/gsd mode` (global) or `/gsd mode project` (project-level).
|
|
88
94
|
|
|
@@ -141,11 +147,12 @@ Setting `prefer_skills: []` does **not** disable skill discovery — it just mea
|
|
|
141
147
|
|
|
142
148
|
- `context_pause_threshold`: number (0-100) — context window usage percentage at which auto-mode should pause to suggest checkpointing. Set to `0` to disable. Default: `0` (disabled).
|
|
143
149
|
|
|
144
|
-
- `token_profile`: `"budget"`, `"balanced"`, or `"quality"` — coordinates model selection, phase skipping, and context compression. `budget` skips research/reassessment and uses cheaper models; `balanced` (default)
|
|
150
|
+
- `token_profile`: `"budget"`, `"balanced"`, or `"quality"` — coordinates model selection, phase skipping, and context compression. `budget` skips research/reassessment and uses cheaper models; `balanced` (default) skips research/reassessment to reduce token burn; `quality` prefers higher-quality models. See token-optimization docs.
|
|
145
151
|
|
|
146
152
|
- `phases`: fine-grained control over which phases run. Usually set by `token_profile`, but can be overridden. Keys:
|
|
147
153
|
- `skip_research`: boolean — skip milestone-level research. Default: `false`.
|
|
148
|
-
- `
|
|
154
|
+
- `reassess_after_slice`: boolean — run roadmap reassessment after each completed slice. Default: `false`.
|
|
155
|
+
- `skip_reassess`: boolean — force-disable roadmap reassessment even if `reassess_after_slice` is enabled. Default: `false`.
|
|
149
156
|
- `skip_slice_research`: boolean — skip per-slice research. Default: `false`.
|
|
150
157
|
|
|
151
158
|
- `remote_questions`: route interactive questions to Slack/Discord for headless auto-mode. Keys:
|
|
@@ -359,11 +366,11 @@ If you use a bare model ID (no provider prefix) and it exists in multiple provid
|
|
|
359
366
|
---
|
|
360
367
|
version: 1
|
|
361
368
|
models:
|
|
362
|
-
research: openrouter/deepseek/deepseek-r1
|
|
369
|
+
research: openrouter/deepseek/deepseek-r1 # $0.28/$0.42 per 1M tokens
|
|
363
370
|
planning:
|
|
364
|
-
model: claude-opus-4-6
|
|
371
|
+
model: claude-opus-4-6 # $5/$25 — best for architecture
|
|
365
372
|
fallbacks:
|
|
366
|
-
- openrouter/z-ai/glm-5
|
|
373
|
+
- openrouter/z-ai/glm-5 # $1/$3.20 — strong alternative
|
|
367
374
|
execution: openrouter/minimax/minimax-m2.5 # $0.30/$1.20 — cheapest quality
|
|
368
375
|
completion: openrouter/minimax/minimax-m2.5
|
|
369
376
|
---
|
|
@@ -314,10 +314,9 @@ export async function checkRuntimeHealth(
|
|
|
314
314
|
});
|
|
315
315
|
|
|
316
316
|
if (shouldFix("orphaned_completed_units")) {
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
}
|
|
317
|
+
const orphanedSet = new Set(orphaned);
|
|
318
|
+
const remaining = keys.filter((key) => !orphanedSet.has(key));
|
|
319
|
+
await saveFile(completedKeysFile, JSON.stringify(remaining));
|
|
321
320
|
fixesApplied.push(`removed ${orphaned.length} orphaned completed-unit key(s)`);
|
|
322
321
|
}
|
|
323
322
|
}
|
|
@@ -42,6 +42,8 @@ export interface GitPreferences {
|
|
|
42
42
|
push_branches?: boolean;
|
|
43
43
|
remote?: string;
|
|
44
44
|
snapshots?: boolean;
|
|
45
|
+
/** Deprecated. .gsd/ is managed externally; retained for compatibility. */
|
|
46
|
+
commit_docs?: boolean;
|
|
45
47
|
pre_merge_check?: boolean | string;
|
|
46
48
|
commit_type?: string;
|
|
47
49
|
main_branch?: string;
|
|
@@ -223,9 +225,21 @@ export function readIntegrationBranch(basePath: string, milestoneId: string): st
|
|
|
223
225
|
*
|
|
224
226
|
* The file is committed immediately so the metadata is persisted in git.
|
|
225
227
|
*/
|
|
226
|
-
|
|
228
|
+
/** Regex matching GSD quick-task branches: gsd/quick/<num>-<slug> */
|
|
229
|
+
export const QUICK_BRANCH_RE = /^gsd\/quick\//;
|
|
230
|
+
|
|
231
|
+
export function writeIntegrationBranch(
|
|
232
|
+
basePath: string,
|
|
233
|
+
milestoneId: string,
|
|
234
|
+
branch: string,
|
|
235
|
+
_options?: { commitDocs?: boolean },
|
|
236
|
+
): void {
|
|
227
237
|
// Don't record slice branches as the integration target
|
|
228
238
|
if (SLICE_BRANCH_RE.test(branch)) return;
|
|
239
|
+
// Don't record quick-task branches — they are ephemeral and merge back
|
|
240
|
+
// to their origin branch on completion. Recording one as the integration
|
|
241
|
+
// target causes milestone merges to land on the wrong branch (#1293).
|
|
242
|
+
if (QUICK_BRANCH_RE.test(branch)) return;
|
|
229
243
|
// Validate
|
|
230
244
|
if (!VALID_BRANCH_NAME.test(branch)) return;
|
|
231
245
|
// Skip if already recorded with the same branch (idempotent across restarts).
|
|
@@ -336,13 +350,17 @@ export class GitServiceImpl {
|
|
|
336
350
|
* @param extraExclusions Additional pathspec exclusions beyond RUNTIME_EXCLUSION_PATHS.
|
|
337
351
|
*/
|
|
338
352
|
private smartStage(extraExclusions: readonly string[] = []): void {
|
|
339
|
-
// Always exclude .gsd/ — state is managed externally (symlinked to ~/.gsd/projects/<hash>/)
|
|
340
|
-
const allExclusions = [".gsd/", ...extraExclusions];
|
|
341
|
-
|
|
342
353
|
// One-time cleanup: if runtime files are already tracked in the index
|
|
343
354
|
// (from older versions where the fallback bug staged them), untrack them
|
|
344
355
|
// in a dedicated commit. This must happen as a separate commit because
|
|
345
356
|
// the git reset HEAD step below would otherwise undo the rm --cached.
|
|
357
|
+
//
|
|
358
|
+
// SAFETY: Only untrack the specific RUNTIME paths (activity/, runtime/,
|
|
359
|
+
// auto.lock, etc.) — NOT all of .gsd/. If .gsd/milestones/ files were
|
|
360
|
+
// previously tracked, they stay tracked until the milestone completes
|
|
361
|
+
// and the worktree is torn down. This prevents a mid-execution behavioral
|
|
362
|
+
// discontinuity where the first half of a milestone has .gsd/ artifacts
|
|
363
|
+
// committed but the second half doesn't (#1326).
|
|
346
364
|
if (!this._runtimeFilesCleanedUp) {
|
|
347
365
|
let cleaned = false;
|
|
348
366
|
for (const exclusion of RUNTIME_EXCLUSION_PATHS) {
|
|
@@ -357,17 +375,19 @@ export class GitServiceImpl {
|
|
|
357
375
|
|
|
358
376
|
// Stage everything, then unstage excluded paths.
|
|
359
377
|
//
|
|
360
|
-
//
|
|
361
|
-
//
|
|
362
|
-
//
|
|
363
|
-
//
|
|
364
|
-
//
|
|
378
|
+
// Exclude only RUNTIME paths from staging — not the entire .gsd/ directory.
|
|
379
|
+
// When .gsd/milestones/ files are already tracked in the index (projects
|
|
380
|
+
// where .gsd/ is not gitignored, or Windows junctions that git sees as
|
|
381
|
+
// real directories), they should continue to be committed. Excluding the
|
|
382
|
+
// entire .gsd/ directory mid-milestone causes silent commit failure where
|
|
383
|
+
// the second half of a milestone's artifacts are never committed (#1326).
|
|
365
384
|
//
|
|
366
|
-
//
|
|
367
|
-
//
|
|
385
|
+
// If .gsd/ IS in .gitignore (the default for external state projects),
|
|
386
|
+
// git add -A already skips it and the reset is a harmless no-op.
|
|
368
387
|
nativeAddAll(this.basePath);
|
|
369
388
|
|
|
370
|
-
|
|
389
|
+
const runtimeExclusions = [...RUNTIME_EXCLUSION_PATHS, ...extraExclusions];
|
|
390
|
+
for (const exclusion of runtimeExclusions) {
|
|
371
391
|
try { nativeResetPaths(this.basePath, [exclusion]); } catch { /* path not staged — ignore */ }
|
|
372
392
|
}
|
|
373
393
|
}
|
|
@@ -86,7 +86,10 @@ const BASELINE_PATTERNS = [
|
|
|
86
86
|
* `.gsd/` state is managed externally (symlinked to `~/.gsd/projects/<hash>/`),
|
|
87
87
|
* so the entire directory is always gitignored.
|
|
88
88
|
*/
|
|
89
|
-
export function ensureGitignore(
|
|
89
|
+
export function ensureGitignore(
|
|
90
|
+
basePath: string,
|
|
91
|
+
options?: { manageGitignore?: boolean; commitDocs?: boolean },
|
|
92
|
+
): boolean {
|
|
90
93
|
// If manage_gitignore is explicitly false, do not touch .gitignore at all
|
|
91
94
|
if (options?.manageGitignore === false) return false;
|
|
92
95
|
|
|
@@ -212,4 +215,3 @@ custom_instructions:
|
|
|
212
215
|
return true;
|
|
213
216
|
}
|
|
214
217
|
|
|
215
|
-
|