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
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collision Diagnostics Module
|
|
3
|
+
*
|
|
4
|
+
* Bridges NamespacedRegistry collision data and NamespacedResolver ambiguous
|
|
5
|
+
* resolution into a classified diagnostic taxonomy. Provides two functions:
|
|
6
|
+
* - analyzeCollisions: Scans registry and resolver state to produce classified diagnostics
|
|
7
|
+
* - doctorReport: Formats diagnostics into human-readable output with severity and remediation
|
|
8
|
+
*
|
|
9
|
+
* This module implements R010 (collision reporting) and R011 (doctor advice) for the
|
|
10
|
+
* namespaced component system.
|
|
11
|
+
*/
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Implementation
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Analyze a registry and resolver to produce classified diagnostics.
|
|
17
|
+
*
|
|
18
|
+
* This function:
|
|
19
|
+
* 1. Reads registry.getDiagnostics() for canonical conflicts (→ error severity)
|
|
20
|
+
* 2. Groups registry.getAll() by bare component.name
|
|
21
|
+
* 3. For groups with 2+ entries, calls resolver.resolve(bareName) to confirm ambiguity
|
|
22
|
+
* 4. Produces warning diagnostics for ambiguous shorthand resolution
|
|
23
|
+
*
|
|
24
|
+
* @param registry - The namespaced registry to analyze
|
|
25
|
+
* @param resolver - The resolver to test ambiguity
|
|
26
|
+
* @returns Array of classified diagnostics
|
|
27
|
+
*/
|
|
28
|
+
export function analyzeCollisions(registry, resolver) {
|
|
29
|
+
const diagnostics = [];
|
|
30
|
+
// Step 1: Process canonical conflicts from registry diagnostics
|
|
31
|
+
const registryDiagnostics = registry.getDiagnostics();
|
|
32
|
+
for (const diag of registryDiagnostics) {
|
|
33
|
+
if (diag.type === 'collision') {
|
|
34
|
+
diagnostics.push({
|
|
35
|
+
class: 'canonical-conflict',
|
|
36
|
+
severity: 'error',
|
|
37
|
+
involvedCanonicalNames: [diag.collision.canonicalName],
|
|
38
|
+
filePaths: [diag.collision.winnerPath, diag.collision.loserPath],
|
|
39
|
+
remediation: `Canonical name "${diag.collision.canonicalName}" registered multiple times. ` +
|
|
40
|
+
`The first registration (${diag.collision.winnerSource ?? 'unknown source'}) ` +
|
|
41
|
+
`took precedence over subsequent registration (${diag.collision.loserSource ?? 'unknown source'}). ` +
|
|
42
|
+
`Rename one of the conflicting components to resolve.`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Step 2: Find shorthand overlaps by grouping components by bare name
|
|
47
|
+
const components = registry.getAll();
|
|
48
|
+
const byBareName = new Map();
|
|
49
|
+
for (const component of components) {
|
|
50
|
+
const bareName = component.name;
|
|
51
|
+
if (!byBareName.has(bareName)) {
|
|
52
|
+
byBareName.set(bareName, []);
|
|
53
|
+
}
|
|
54
|
+
byBareName.get(bareName).push(component);
|
|
55
|
+
}
|
|
56
|
+
// Step 3: For groups with 2+ entries, check if resolver confirms ambiguity
|
|
57
|
+
for (const [bareName, candidates] of byBareName) {
|
|
58
|
+
if (candidates.length >= 2) {
|
|
59
|
+
// Use resolver to confirm ambiguity
|
|
60
|
+
const result = resolver.resolve(bareName);
|
|
61
|
+
if (result.resolution === 'ambiguous') {
|
|
62
|
+
// This is a shorthand overlap
|
|
63
|
+
const canonicalNames = candidates.map(c => c.canonicalName);
|
|
64
|
+
const filePaths = candidates.map(c => c.filePath);
|
|
65
|
+
diagnostics.push({
|
|
66
|
+
class: 'shorthand-overlap',
|
|
67
|
+
severity: 'warning',
|
|
68
|
+
involvedCanonicalNames: canonicalNames,
|
|
69
|
+
filePaths,
|
|
70
|
+
remediation: formatShorthandRemediation(bareName, canonicalNames),
|
|
71
|
+
ambiguousBareName: bareName,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// If resolution is 'shorthand' or 'local-first', the overlap is resolved
|
|
75
|
+
// unambiguously by the resolver, so we don't warn
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Step 4: Check for alias conflicts
|
|
79
|
+
const aliases = registry.getAliases();
|
|
80
|
+
const canonicalNamesSet = new Set(components.map(c => c.canonicalName));
|
|
81
|
+
for (const [alias, targetCanonical] of aliases) {
|
|
82
|
+
// Check if alias shadows a canonical name
|
|
83
|
+
// (This can happen if a component was registered AFTER the alias was created)
|
|
84
|
+
if (canonicalNamesSet.has(alias)) {
|
|
85
|
+
const shadowedComponent = components.find(c => c.canonicalName === alias);
|
|
86
|
+
const aliasedComponent = components.find(c => c.canonicalName === targetCanonical);
|
|
87
|
+
diagnostics.push({
|
|
88
|
+
class: 'alias-conflict',
|
|
89
|
+
severity: 'warning',
|
|
90
|
+
involvedCanonicalNames: [alias, targetCanonical],
|
|
91
|
+
filePaths: [
|
|
92
|
+
shadowedComponent?.filePath ?? '<unknown>',
|
|
93
|
+
aliasedComponent?.filePath ?? '<unknown>',
|
|
94
|
+
],
|
|
95
|
+
remediation: formatAliasShadowsCanonicalRemediation(alias, targetCanonical),
|
|
96
|
+
alias,
|
|
97
|
+
aliasTarget: targetCanonical,
|
|
98
|
+
aliasConflictType: 'shadows-canonical',
|
|
99
|
+
});
|
|
100
|
+
continue; // Skip further checks for this alias
|
|
101
|
+
}
|
|
102
|
+
// Check if alias shadows a bare name (matches component.name in any namespace)
|
|
103
|
+
const matchingBareNames = components.filter(c => c.name === alias);
|
|
104
|
+
if (matchingBareNames.length > 0) {
|
|
105
|
+
const filePaths = matchingBareNames.map(c => c.filePath);
|
|
106
|
+
const aliasedComponent = components.find(c => c.canonicalName === targetCanonical);
|
|
107
|
+
if (aliasedComponent)
|
|
108
|
+
filePaths.push(aliasedComponent.filePath);
|
|
109
|
+
diagnostics.push({
|
|
110
|
+
class: 'alias-conflict',
|
|
111
|
+
severity: 'warning',
|
|
112
|
+
involvedCanonicalNames: [targetCanonical, ...matchingBareNames.map(c => c.canonicalName)],
|
|
113
|
+
filePaths,
|
|
114
|
+
remediation: formatAliasShadowsBareNameRemediation(alias, targetCanonical, matchingBareNames.map(c => c.canonicalName)),
|
|
115
|
+
alias,
|
|
116
|
+
aliasTarget: targetCanonical,
|
|
117
|
+
aliasConflictType: 'shadows-bare-name',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return diagnostics;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Format remediation advice for shorthand overlap.
|
|
125
|
+
*
|
|
126
|
+
* @param bareName - The ambiguous bare name
|
|
127
|
+
* @param canonicalNames - All canonical names that match
|
|
128
|
+
* @returns Human-readable remediation message
|
|
129
|
+
*/
|
|
130
|
+
function formatShorthandRemediation(bareName, canonicalNames) {
|
|
131
|
+
const suggestions = canonicalNames
|
|
132
|
+
.map(cn => `\`${cn}\``)
|
|
133
|
+
.join(', ');
|
|
134
|
+
return `Bare name "${bareName}" is ambiguous across ${canonicalNames.length} namespaces. ` +
|
|
135
|
+
`Use a canonical name (${suggestions}) to avoid ambiguity.`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Format remediation advice for alias shadowing a canonical name.
|
|
139
|
+
*
|
|
140
|
+
* @param alias - The alias that shadows a canonical name
|
|
141
|
+
* @param targetCanonical - The canonical name the alias points to
|
|
142
|
+
* @returns Human-readable remediation message
|
|
143
|
+
*/
|
|
144
|
+
function formatAliasShadowsCanonicalRemediation(alias, targetCanonical) {
|
|
145
|
+
return `Alias "${alias}" shadows an existing canonical name. ` +
|
|
146
|
+
`The alias points to "${targetCanonical}", but resolving "${alias}" will now match the component, not the alias. ` +
|
|
147
|
+
`Consider rename or remove the alias to avoid confusion.`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Format remediation advice for alias shadowing a bare name.
|
|
151
|
+
*
|
|
152
|
+
* @param alias - The alias that shadows bare names
|
|
153
|
+
* @param targetCanonical - The canonical name the alias points to
|
|
154
|
+
* @param shadowedCanonicals - The canonical names whose bare names are shadowed
|
|
155
|
+
* @returns Human-readable remediation message
|
|
156
|
+
*/
|
|
157
|
+
function formatAliasShadowsBareNameRemediation(alias, targetCanonical, shadowedCanonicals) {
|
|
158
|
+
const shadowed = shadowedCanonicals.map(cn => `\`${cn}\``).join(', ');
|
|
159
|
+
return `Alias "${alias}" shadows ${shadowedCanonicals.length} component(s) with the same bare name (${shadowed}). ` +
|
|
160
|
+
`Resolving "${alias}" will use the alias (pointing to "${targetCanonical}"), not shorthand resolution. ` +
|
|
161
|
+
`Use canonical names to be explicit, or rename the alias if this is unintended.`;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Format diagnostics into a human-readable doctor report.
|
|
165
|
+
*
|
|
166
|
+
* Each diagnostic is formatted with:
|
|
167
|
+
* - Severity icon (❌ error / ⚠️ warning)
|
|
168
|
+
* - Description of the issue
|
|
169
|
+
* - Involved file paths
|
|
170
|
+
* - Remediation advice
|
|
171
|
+
*
|
|
172
|
+
* @param diagnostics - Array of classified diagnostics
|
|
173
|
+
* @returns Doctor report with summary and formatted entries
|
|
174
|
+
*/
|
|
175
|
+
export function doctorReport(diagnostics) {
|
|
176
|
+
const summary = {
|
|
177
|
+
total: diagnostics.length,
|
|
178
|
+
canonicalConflicts: diagnostics.filter(d => d.class === 'canonical-conflict').length,
|
|
179
|
+
shorthandOverlaps: diagnostics.filter(d => d.class === 'shorthand-overlap').length,
|
|
180
|
+
aliasConflicts: diagnostics.filter(d => d.class === 'alias-conflict').length,
|
|
181
|
+
};
|
|
182
|
+
const entries = diagnostics.map(diagnostic => formatDiagnosticEntry(diagnostic));
|
|
183
|
+
return { summary, entries };
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Format a single diagnostic entry for display.
|
|
187
|
+
*
|
|
188
|
+
* @param diagnostic - The diagnostic to format
|
|
189
|
+
* @returns Formatted string entry
|
|
190
|
+
*/
|
|
191
|
+
function formatDiagnosticEntry(diagnostic) {
|
|
192
|
+
const icon = diagnostic.severity === 'error' ? '❌' : '⚠️';
|
|
193
|
+
const lines = [];
|
|
194
|
+
// Header with severity and class
|
|
195
|
+
lines.push(`${icon} ${diagnostic.class.toUpperCase()}`);
|
|
196
|
+
// Description
|
|
197
|
+
if (diagnostic.class === 'canonical-conflict') {
|
|
198
|
+
lines.push(` Canonical name conflict: ${diagnostic.involvedCanonicalNames[0]}`);
|
|
199
|
+
}
|
|
200
|
+
else if (diagnostic.class === 'alias-conflict') {
|
|
201
|
+
if (diagnostic.aliasConflictType === 'shadows-canonical') {
|
|
202
|
+
lines.push(` Alias "${diagnostic.alias}" shadows canonical name (points to ${diagnostic.aliasTarget})`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
lines.push(` Alias "${diagnostic.alias}" shadows bare name (points to ${diagnostic.aliasTarget})`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
lines.push(` Shorthand overlap: "${diagnostic.ambiguousBareName}" matches ${diagnostic.involvedCanonicalNames.length} components`);
|
|
210
|
+
}
|
|
211
|
+
// File paths
|
|
212
|
+
lines.push(' Files:');
|
|
213
|
+
for (const path of diagnostic.filePaths) {
|
|
214
|
+
lines.push(` - ${path}`);
|
|
215
|
+
}
|
|
216
|
+
// Remediation
|
|
217
|
+
lines.push(` Remediation: ${diagnostic.remediation}`);
|
|
218
|
+
return lines.join('\n');
|
|
219
|
+
}
|
|
220
|
+
// ============================================================================
|
|
221
|
+
// Exports
|
|
222
|
+
// ============================================================================
|
|
223
|
+
export default {
|
|
224
|
+
analyzeCollisions,
|
|
225
|
+
doctorReport,
|
|
226
|
+
};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { importExtensionModule } from "@gsd/pi-coding-agent";
|
|
2
|
+
const TOP_LEVEL_SUBCOMMANDS = [
|
|
3
|
+
{ cmd: "help", desc: "Categorized command reference with descriptions" },
|
|
4
|
+
{ cmd: "next", desc: "Explicit step mode (same as /gsd)" },
|
|
5
|
+
{ cmd: "auto", desc: "Autonomous mode — research, plan, execute, commit, repeat" },
|
|
6
|
+
{ cmd: "stop", desc: "Stop auto mode gracefully" },
|
|
7
|
+
{ cmd: "pause", desc: "Pause auto-mode (preserves state, /gsd auto to resume)" },
|
|
8
|
+
{ cmd: "status", desc: "Progress dashboard" },
|
|
9
|
+
{ cmd: "visualize", desc: "Open workflow visualizer" },
|
|
10
|
+
{ cmd: "queue", desc: "Queue and reorder future milestones" },
|
|
11
|
+
{ cmd: "quick", desc: "Execute a quick task without full planning overhead" },
|
|
12
|
+
{ cmd: "discuss", desc: "Discuss architecture and decisions" },
|
|
13
|
+
{ cmd: "capture", desc: "Fire-and-forget thought capture" },
|
|
14
|
+
{ cmd: "triage", desc: "Manually trigger triage of pending captures" },
|
|
15
|
+
{ cmd: "dispatch", desc: "Dispatch a specific phase directly" },
|
|
16
|
+
{ cmd: "history", desc: "View execution history" },
|
|
17
|
+
{ cmd: "undo", desc: "Revert last completed unit" },
|
|
18
|
+
{ cmd: "skip", desc: "Prevent a unit from auto-mode dispatch" },
|
|
19
|
+
{ cmd: "export", desc: "Export milestone or slice results" },
|
|
20
|
+
{ cmd: "cleanup", desc: "Remove merged branches or snapshots" },
|
|
21
|
+
{ cmd: "mode", desc: "Switch workflow mode (solo/team)" },
|
|
22
|
+
{ cmd: "prefs", desc: "Manage preferences" },
|
|
23
|
+
{ cmd: "config", desc: "Set API keys for external tools" },
|
|
24
|
+
{ cmd: "keys", desc: "API key manager" },
|
|
25
|
+
{ cmd: "hooks", desc: "Show configured hooks" },
|
|
26
|
+
{ cmd: "run-hook", desc: "Manually trigger a specific hook" },
|
|
27
|
+
{ cmd: "skill-health", desc: "Skill lifecycle dashboard" },
|
|
28
|
+
{ cmd: "doctor", desc: "Runtime health checks with auto-fix" },
|
|
29
|
+
{ cmd: "logs", desc: "Browse activity logs, debug logs, and metrics" },
|
|
30
|
+
{ cmd: "forensics", desc: "Examine execution logs" },
|
|
31
|
+
{ cmd: "init", desc: "Project init wizard" },
|
|
32
|
+
{ cmd: "setup", desc: "Global setup status and configuration" },
|
|
33
|
+
{ cmd: "migrate", desc: "Migrate a v1 .planning directory to .gsd format" },
|
|
34
|
+
{ cmd: "remote", desc: "Control remote auto-mode" },
|
|
35
|
+
{ cmd: "steer", desc: "Hard-steer plan documents during execution" },
|
|
36
|
+
{ cmd: "inspect", desc: "Show SQLite DB diagnostics" },
|
|
37
|
+
{ cmd: "knowledge", desc: "Add persistent project knowledge" },
|
|
38
|
+
{ cmd: "new-milestone", desc: "Create a milestone from a specification document" },
|
|
39
|
+
{ cmd: "parallel", desc: "Parallel milestone orchestration" },
|
|
40
|
+
{ cmd: "park", desc: "Park a milestone" },
|
|
41
|
+
{ cmd: "unpark", desc: "Reactivate a parked milestone" },
|
|
42
|
+
{ cmd: "update", desc: "Update GSD to the latest version" },
|
|
43
|
+
{ cmd: "start", desc: "Start a workflow template" },
|
|
44
|
+
{ cmd: "templates", desc: "List available workflow templates" },
|
|
45
|
+
{ cmd: "extensions", desc: "Manage extensions" },
|
|
46
|
+
];
|
|
47
|
+
function filterStartsWith(partial, options, prefix = "") {
|
|
48
|
+
const normalizedPrefix = prefix.length > 0 ? `${prefix} ` : "";
|
|
49
|
+
return options
|
|
50
|
+
.filter((option) => option.cmd.startsWith(partial))
|
|
51
|
+
.map((option) => ({
|
|
52
|
+
value: `${normalizedPrefix}${option.cmd}`,
|
|
53
|
+
label: option.cmd,
|
|
54
|
+
description: option.desc,
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
function getGsdArgumentCompletions(prefix) {
|
|
58
|
+
const parts = prefix.trim().split(/\s+/);
|
|
59
|
+
if (parts.length <= 1) {
|
|
60
|
+
return filterStartsWith(parts[0] ?? "", TOP_LEVEL_SUBCOMMANDS);
|
|
61
|
+
}
|
|
62
|
+
const partial = parts[1] ?? "";
|
|
63
|
+
if (parts[0] === "auto" && parts.length <= 2) {
|
|
64
|
+
return filterStartsWith(partial, [
|
|
65
|
+
{ cmd: "--verbose", desc: "Show detailed execution output" },
|
|
66
|
+
{ cmd: "--debug", desc: "Enable debug logging" },
|
|
67
|
+
], "auto");
|
|
68
|
+
}
|
|
69
|
+
if (parts[0] === "next" && parts.length <= 2) {
|
|
70
|
+
return filterStartsWith(partial, [
|
|
71
|
+
{ cmd: "--verbose", desc: "Show detailed step output" },
|
|
72
|
+
{ cmd: "--dry-run", desc: "Preview next step without executing" },
|
|
73
|
+
], "next");
|
|
74
|
+
}
|
|
75
|
+
if (parts[0] === "mode" && parts.length <= 2) {
|
|
76
|
+
return filterStartsWith(partial, [
|
|
77
|
+
{ cmd: "global", desc: "Edit global workflow mode" },
|
|
78
|
+
{ cmd: "project", desc: "Edit project-specific workflow mode" },
|
|
79
|
+
], "mode");
|
|
80
|
+
}
|
|
81
|
+
if (parts[0] === "parallel" && parts.length <= 2) {
|
|
82
|
+
return filterStartsWith(partial, [
|
|
83
|
+
{ cmd: "start", desc: "Start parallel milestone orchestration" },
|
|
84
|
+
{ cmd: "status", desc: "Show parallel worker statuses" },
|
|
85
|
+
{ cmd: "stop", desc: "Stop all parallel workers" },
|
|
86
|
+
{ cmd: "pause", desc: "Pause a specific worker" },
|
|
87
|
+
{ cmd: "resume", desc: "Resume a paused worker" },
|
|
88
|
+
{ cmd: "merge", desc: "Merge completed milestone branches" },
|
|
89
|
+
], "parallel");
|
|
90
|
+
}
|
|
91
|
+
if (parts[0] === "setup" && parts.length <= 2) {
|
|
92
|
+
return filterStartsWith(partial, [
|
|
93
|
+
{ cmd: "llm", desc: "Configure LLM provider settings" },
|
|
94
|
+
{ cmd: "search", desc: "Configure web search provider" },
|
|
95
|
+
{ cmd: "remote", desc: "Configure remote integrations" },
|
|
96
|
+
{ cmd: "keys", desc: "Manage API keys" },
|
|
97
|
+
{ cmd: "prefs", desc: "Configure global preferences" },
|
|
98
|
+
], "setup");
|
|
99
|
+
}
|
|
100
|
+
if (parts[0] === "logs" && parts.length <= 2) {
|
|
101
|
+
return filterStartsWith(partial, [
|
|
102
|
+
{ cmd: "debug", desc: "List or view debug log files" },
|
|
103
|
+
{ cmd: "tail", desc: "Show last N activity log summaries" },
|
|
104
|
+
{ cmd: "clear", desc: "Remove old activity and debug logs" },
|
|
105
|
+
], "logs");
|
|
106
|
+
}
|
|
107
|
+
if (parts[0] === "keys" && parts.length <= 2) {
|
|
108
|
+
return filterStartsWith(partial, [
|
|
109
|
+
{ cmd: "list", desc: "Show key status dashboard" },
|
|
110
|
+
{ cmd: "add", desc: "Add a key for a provider" },
|
|
111
|
+
{ cmd: "remove", desc: "Remove a key" },
|
|
112
|
+
{ cmd: "test", desc: "Validate key(s) with API call" },
|
|
113
|
+
{ cmd: "rotate", desc: "Replace an existing key" },
|
|
114
|
+
{ cmd: "doctor", desc: "Health check all keys" },
|
|
115
|
+
], "keys");
|
|
116
|
+
}
|
|
117
|
+
if (parts[0] === "prefs" && parts.length <= 2) {
|
|
118
|
+
return filterStartsWith(partial, [
|
|
119
|
+
{ cmd: "global", desc: "Edit global preferences file" },
|
|
120
|
+
{ cmd: "project", desc: "Edit project preferences file" },
|
|
121
|
+
{ cmd: "status", desc: "Show effective preferences" },
|
|
122
|
+
{ cmd: "wizard", desc: "Interactive preferences wizard" },
|
|
123
|
+
{ cmd: "setup", desc: "First-time preferences setup" },
|
|
124
|
+
{ cmd: "import-claude", desc: "Import settings from Claude Code" },
|
|
125
|
+
], "prefs");
|
|
126
|
+
}
|
|
127
|
+
if (parts[0] === "remote" && parts.length <= 2) {
|
|
128
|
+
return filterStartsWith(partial, [
|
|
129
|
+
{ cmd: "slack", desc: "Configure Slack integration" },
|
|
130
|
+
{ cmd: "discord", desc: "Configure Discord integration" },
|
|
131
|
+
{ cmd: "status", desc: "Show remote connection status" },
|
|
132
|
+
{ cmd: "disconnect", desc: "Disconnect remote integrations" },
|
|
133
|
+
], "remote");
|
|
134
|
+
}
|
|
135
|
+
if (parts[0] === "history" && parts.length <= 2) {
|
|
136
|
+
return filterStartsWith(partial, [
|
|
137
|
+
{ cmd: "--cost", desc: "Show cost breakdown per entry" },
|
|
138
|
+
{ cmd: "--phase", desc: "Filter by phase type" },
|
|
139
|
+
{ cmd: "--model", desc: "Filter by model used" },
|
|
140
|
+
{ cmd: "10", desc: "Show last 10 entries" },
|
|
141
|
+
{ cmd: "20", desc: "Show last 20 entries" },
|
|
142
|
+
{ cmd: "50", desc: "Show last 50 entries" },
|
|
143
|
+
], "history");
|
|
144
|
+
}
|
|
145
|
+
if (parts[0] === "export" && parts.length <= 2) {
|
|
146
|
+
return filterStartsWith(partial, [
|
|
147
|
+
{ cmd: "--json", desc: "Export as JSON" },
|
|
148
|
+
{ cmd: "--markdown", desc: "Export as Markdown" },
|
|
149
|
+
{ cmd: "--html", desc: "Export as HTML" },
|
|
150
|
+
{ cmd: "--html --all", desc: "Export all milestones as HTML" },
|
|
151
|
+
], "export");
|
|
152
|
+
}
|
|
153
|
+
if (parts[0] === "cleanup" && parts.length <= 2) {
|
|
154
|
+
return filterStartsWith(partial, [
|
|
155
|
+
{ cmd: "branches", desc: "Remove merged milestone branches" },
|
|
156
|
+
{ cmd: "snapshots", desc: "Remove old execution snapshots" },
|
|
157
|
+
], "cleanup");
|
|
158
|
+
}
|
|
159
|
+
if (parts[0] === "knowledge" && parts.length <= 2) {
|
|
160
|
+
return filterStartsWith(partial, [
|
|
161
|
+
{ cmd: "rule", desc: "Add a project rule" },
|
|
162
|
+
{ cmd: "pattern", desc: "Add a code pattern" },
|
|
163
|
+
{ cmd: "lesson", desc: "Record a lesson learned" },
|
|
164
|
+
], "knowledge");
|
|
165
|
+
}
|
|
166
|
+
if (parts[0] === "start" && parts.length <= 2) {
|
|
167
|
+
return filterStartsWith(partial, [
|
|
168
|
+
{ cmd: "bugfix", desc: "Triage, fix, test, and ship a bug fix" },
|
|
169
|
+
{ cmd: "small-feature", desc: "Lightweight feature with optional discussion" },
|
|
170
|
+
{ cmd: "spike", desc: "Research, prototype, and document findings" },
|
|
171
|
+
{ cmd: "hotfix", desc: "Minimal: fix it, test it, ship it" },
|
|
172
|
+
{ cmd: "refactor", desc: "Inventory, plan waves, migrate, verify" },
|
|
173
|
+
{ cmd: "security-audit", desc: "Scan, triage, remediate, re-scan" },
|
|
174
|
+
{ cmd: "dep-upgrade", desc: "Assess, upgrade, fix breaks, verify" },
|
|
175
|
+
{ cmd: "full-project", desc: "Complete GSD workflow with full ceremony" },
|
|
176
|
+
{ cmd: "resume", desc: "Resume an in-progress workflow" },
|
|
177
|
+
{ cmd: "--list", desc: "List all available templates" },
|
|
178
|
+
{ cmd: "--dry-run", desc: "Preview workflow without executing" },
|
|
179
|
+
], "start");
|
|
180
|
+
}
|
|
181
|
+
if (parts[0] === "templates" && parts.length <= 2) {
|
|
182
|
+
return filterStartsWith(partial, [
|
|
183
|
+
{ cmd: "info", desc: "Show detailed template info" },
|
|
184
|
+
], "templates");
|
|
185
|
+
}
|
|
186
|
+
if (parts[0] === "extensions" && parts.length <= 2) {
|
|
187
|
+
return filterStartsWith(partial, [
|
|
188
|
+
{ cmd: "list", desc: "List all extensions and their status" },
|
|
189
|
+
{ cmd: "enable", desc: "Enable a disabled extension" },
|
|
190
|
+
{ cmd: "disable", desc: "Disable an extension" },
|
|
191
|
+
{ cmd: "info", desc: "Show extension details" },
|
|
192
|
+
], "extensions");
|
|
193
|
+
}
|
|
194
|
+
if (parts[0] === "doctor" && parts.length <= 2) {
|
|
195
|
+
return filterStartsWith(partial, [
|
|
196
|
+
{ cmd: "fix", desc: "Auto-fix detected issues" },
|
|
197
|
+
{ cmd: "heal", desc: "AI-driven deep healing" },
|
|
198
|
+
{ cmd: "audit", desc: "Run health audit without fixing" },
|
|
199
|
+
], "doctor");
|
|
200
|
+
}
|
|
201
|
+
if (parts[0] === "dispatch" && parts.length <= 2) {
|
|
202
|
+
return filterStartsWith(partial, [
|
|
203
|
+
{ cmd: "research", desc: "Run research phase" },
|
|
204
|
+
{ cmd: "plan", desc: "Run planning phase" },
|
|
205
|
+
{ cmd: "execute", desc: "Run execution phase" },
|
|
206
|
+
{ cmd: "complete", desc: "Run completion phase" },
|
|
207
|
+
{ cmd: "reassess", desc: "Reassess current progress" },
|
|
208
|
+
{ cmd: "uat", desc: "Run user acceptance testing" },
|
|
209
|
+
{ cmd: "replan", desc: "Replan the current slice" },
|
|
210
|
+
], "dispatch");
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
export function registerLazyGSDCommand(pi) {
|
|
215
|
+
pi.registerCommand("gsd", {
|
|
216
|
+
description: "GSD — Get Shit Done",
|
|
217
|
+
getArgumentCompletions: getGsdArgumentCompletions,
|
|
218
|
+
handler: async (args, ctx) => {
|
|
219
|
+
const { handleGSDCommand } = await importExtensionModule(import.meta.url, "./commands.js");
|
|
220
|
+
await handleGSDCommand(args, ctx, pi);
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GSD Config — Tool API key management.
|
|
3
|
+
*
|
|
4
|
+
* Contains: TOOL_KEYS, loadToolApiKeys, getConfigAuthStorage, handleConfig
|
|
5
|
+
*/
|
|
6
|
+
import { AuthStorage } from "@gsd/pi-coding-agent";
|
|
7
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
8
|
+
import { join, dirname } from "node:path";
|
|
9
|
+
/**
|
|
10
|
+
* Tool API key configurations.
|
|
11
|
+
* This is the source of truth for tool credentials - used by both the config wizard
|
|
12
|
+
* and session startup to load keys from auth.json into environment variables.
|
|
13
|
+
*/
|
|
14
|
+
export const TOOL_KEYS = [
|
|
15
|
+
{ id: "tavily", env: "TAVILY_API_KEY", label: "Tavily Search", hint: "tavily.com/app/api-keys" },
|
|
16
|
+
{ id: "brave", env: "BRAVE_API_KEY", label: "Brave Search", hint: "brave.com/search/api" },
|
|
17
|
+
{ id: "context7", env: "CONTEXT7_API_KEY", label: "Context7 Docs", hint: "context7.com/dashboard" },
|
|
18
|
+
{ id: "jina", env: "JINA_API_KEY", label: "Jina Page Extract", hint: "jina.ai/api" },
|
|
19
|
+
{ id: "groq", env: "GROQ_API_KEY", label: "Groq Voice", hint: "console.groq.com" },
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Load tool API keys from auth.json into environment variables.
|
|
23
|
+
* Called at session startup to ensure tools have access to their credentials.
|
|
24
|
+
*/
|
|
25
|
+
export function loadToolApiKeys() {
|
|
26
|
+
try {
|
|
27
|
+
const authPath = join(process.env.HOME ?? "", ".gsd", "agent", "auth.json");
|
|
28
|
+
if (!existsSync(authPath))
|
|
29
|
+
return;
|
|
30
|
+
const auth = AuthStorage.create(authPath);
|
|
31
|
+
for (const tool of TOOL_KEYS) {
|
|
32
|
+
const cred = auth.get(tool.id);
|
|
33
|
+
if (cred && cred.type === "api_key" && cred.key && !process.env[tool.env]) {
|
|
34
|
+
process.env[tool.env] = cred.key;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Failed to load tool keys — ignore, they can still be set via env vars
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function getConfigAuthStorage() {
|
|
43
|
+
const authPath = join(process.env.HOME ?? "", ".gsd", "agent", "auth.json");
|
|
44
|
+
mkdirSync(dirname(authPath), { recursive: true });
|
|
45
|
+
return AuthStorage.create(authPath);
|
|
46
|
+
}
|
|
47
|
+
export async function handleConfig(ctx) {
|
|
48
|
+
const auth = getConfigAuthStorage();
|
|
49
|
+
// Show current status
|
|
50
|
+
const statusLines = ["GSD Tool Configuration\n"];
|
|
51
|
+
for (const tool of TOOL_KEYS) {
|
|
52
|
+
const hasKey = !!process.env[tool.env] || !!auth.get(tool.id)?.key;
|
|
53
|
+
statusLines.push(` ${hasKey ? "\u2713" : "\u2717"} ${tool.label}${hasKey ? "" : ` \u2014 get key at ${tool.hint}`}`);
|
|
54
|
+
}
|
|
55
|
+
ctx.ui.notify(statusLines.join("\n"), "info");
|
|
56
|
+
// Ask which tools to configure
|
|
57
|
+
const options = TOOL_KEYS.map(t => {
|
|
58
|
+
const hasKey = !!process.env[t.env] || !!auth.get(t.id)?.key;
|
|
59
|
+
return `${t.label} ${hasKey ? "(configured \u2713)" : "(not set)"}`;
|
|
60
|
+
});
|
|
61
|
+
options.push("(done)");
|
|
62
|
+
let changed = false;
|
|
63
|
+
while (true) {
|
|
64
|
+
const choice = await ctx.ui.select("Configure which tool? Press Escape when done.", options);
|
|
65
|
+
if (!choice || typeof choice !== "string" || choice === "(done)")
|
|
66
|
+
break;
|
|
67
|
+
const toolIdx = TOOL_KEYS.findIndex(t => choice.startsWith(t.label));
|
|
68
|
+
if (toolIdx === -1)
|
|
69
|
+
break;
|
|
70
|
+
const tool = TOOL_KEYS[toolIdx];
|
|
71
|
+
const input = await ctx.ui.input(`API key for ${tool.label} (${tool.hint}):`, "paste your key here");
|
|
72
|
+
if (input !== null && input !== undefined) {
|
|
73
|
+
const key = input.trim();
|
|
74
|
+
if (key) {
|
|
75
|
+
auth.set(tool.id, { type: "api_key", key });
|
|
76
|
+
process.env[tool.env] = key;
|
|
77
|
+
ctx.ui.notify(`${tool.label} key saved and activated.`, "info");
|
|
78
|
+
// Update option label
|
|
79
|
+
options[toolIdx] = `${tool.label} (configured \u2713)`;
|
|
80
|
+
changed = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (changed) {
|
|
85
|
+
await ctx.waitForIdle();
|
|
86
|
+
await ctx.reload();
|
|
87
|
+
ctx.ui.notify("Configuration saved. Extensions reloaded with new keys.", "info");
|
|
88
|
+
}
|
|
89
|
+
}
|