gsd-pi 2.33.0 → 2.33.1-dev.235d83a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -18
- package/dist/cli.js +16 -0
- package/dist/resource-loader.d.ts +2 -0
- package/dist/resource-loader.js +36 -3
- package/dist/resources/extensions/ask-user-questions.js +217 -0
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +180 -0
- package/dist/resources/extensions/async-jobs/await-tool.js +90 -0
- package/dist/resources/extensions/async-jobs/cancel-job-tool.js +28 -0
- package/dist/resources/extensions/async-jobs/index.js +119 -0
- package/dist/resources/extensions/async-jobs/job-manager.js +159 -0
- package/dist/resources/extensions/aws-auth/index.js +138 -0
- package/dist/resources/extensions/bg-shell/bg-shell-command.js +182 -0
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +343 -0
- package/dist/resources/extensions/bg-shell/bg-shell-tool.js +831 -0
- package/dist/resources/extensions/bg-shell/index.js +41 -0
- package/dist/resources/extensions/bg-shell/interaction.js +160 -0
- package/dist/resources/extensions/bg-shell/output-formatter.js +245 -0
- package/dist/resources/extensions/bg-shell/overlay.js +378 -0
- package/dist/resources/extensions/bg-shell/process-manager.js +413 -0
- package/dist/resources/extensions/bg-shell/readiness-detector.js +109 -0
- package/dist/resources/extensions/bg-shell/types.js +96 -0
- package/dist/resources/extensions/bg-shell/utilities.js +50 -0
- package/dist/resources/extensions/browser-tools/capture.js +179 -0
- package/dist/resources/extensions/browser-tools/core.js +899 -0
- package/dist/resources/extensions/browser-tools/{evaluate-helpers.ts → evaluate-helpers.js} +0 -1
- package/dist/resources/extensions/browser-tools/index.js +123 -0
- package/dist/resources/extensions/browser-tools/lifecycle.js +222 -0
- package/dist/resources/extensions/browser-tools/refs.js +254 -0
- package/dist/resources/extensions/browser-tools/settle.js +173 -0
- package/dist/resources/extensions/browser-tools/state.js +126 -0
- package/dist/resources/extensions/browser-tools/tools/action-cache.js +179 -0
- package/dist/resources/extensions/browser-tools/tools/assertions.js +320 -0
- package/dist/resources/extensions/browser-tools/tools/codegen.js +242 -0
- package/dist/resources/extensions/browser-tools/tools/device.js +162 -0
- package/dist/resources/extensions/browser-tools/tools/extract.js +191 -0
- package/dist/resources/extensions/browser-tools/tools/forms.js +710 -0
- package/dist/resources/extensions/browser-tools/tools/injection-detect.js +178 -0
- package/dist/resources/extensions/browser-tools/tools/inspection.js +426 -0
- package/dist/resources/extensions/browser-tools/tools/intent.js +556 -0
- package/dist/resources/extensions/browser-tools/tools/interaction.js +776 -0
- package/dist/resources/extensions/browser-tools/tools/navigation.js +208 -0
- package/dist/resources/extensions/browser-tools/tools/network-mock.js +194 -0
- package/dist/resources/extensions/browser-tools/tools/pages.js +280 -0
- package/dist/resources/extensions/browser-tools/tools/pdf.js +74 -0
- package/dist/resources/extensions/browser-tools/tools/refs.js +485 -0
- package/dist/resources/extensions/browser-tools/tools/screenshot.js +87 -0
- package/dist/resources/extensions/browser-tools/tools/session.js +375 -0
- package/dist/resources/extensions/browser-tools/tools/state-persistence.js +180 -0
- package/dist/resources/extensions/browser-tools/tools/visual-diff.js +174 -0
- package/dist/resources/extensions/browser-tools/tools/wait.js +201 -0
- package/dist/resources/extensions/browser-tools/tools/zoom.js +90 -0
- package/dist/resources/extensions/browser-tools/utils.js +490 -0
- package/dist/resources/extensions/context7/index.js +337 -0
- package/dist/resources/extensions/get-secrets-from-user.js +492 -0
- package/dist/resources/extensions/google-search/index.js +373 -0
- package/dist/resources/extensions/gsd/activity-log.js +146 -0
- package/dist/resources/extensions/gsd/atomic-write.js +38 -0
- package/dist/resources/extensions/gsd/auto/session.js +187 -0
- package/dist/resources/extensions/gsd/auto-budget.js +30 -0
- package/dist/resources/extensions/gsd/{auto-constants.ts → auto-constants.js} +0 -1
- package/dist/resources/extensions/gsd/auto-dashboard.js +509 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +180 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +382 -0
- package/dist/resources/extensions/gsd/auto-idempotency.js +106 -0
- package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
- package/dist/resources/extensions/gsd/auto-observability.js +54 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +495 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +1121 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +550 -0
- package/dist/resources/extensions/gsd/auto-start.js +393 -0
- package/dist/resources/extensions/gsd/auto-stuck-detection.js +165 -0
- package/dist/resources/extensions/gsd/{auto-supervisor.ts → auto-supervisor.js} +29 -32
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
- package/dist/resources/extensions/gsd/auto-timers.js +181 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +30 -0
- package/dist/resources/extensions/gsd/auto-verification.js +209 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +594 -0
- package/dist/resources/extensions/gsd/auto.js +1485 -0
- package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
- package/dist/resources/extensions/gsd/captures.js +348 -0
- package/dist/resources/extensions/gsd/claude-import.js +540 -0
- package/dist/resources/extensions/gsd/collision-diagnostics.js +226 -0
- package/dist/resources/extensions/gsd/commands-bootstrap.js +223 -0
- package/dist/resources/extensions/gsd/commands-config.js +89 -0
- package/dist/resources/extensions/gsd/commands-extensions.js +259 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +310 -0
- package/dist/resources/extensions/gsd/commands-inspect.js +70 -0
- package/dist/resources/extensions/gsd/commands-logs.js +468 -0
- package/dist/resources/extensions/gsd/commands-maintenance.js +185 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +660 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +408 -0
- package/dist/resources/extensions/gsd/commands.js +1024 -0
- package/dist/resources/extensions/gsd/complexity-classifier.js +257 -0
- package/dist/resources/extensions/gsd/{constants.ts → constants.js} +0 -6
- package/dist/resources/extensions/gsd/context-budget.js +187 -0
- package/dist/resources/extensions/gsd/context-store.js +165 -0
- package/dist/resources/extensions/gsd/crash-recovery.js +110 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.js +562 -0
- package/dist/resources/extensions/gsd/db-writer.js +298 -0
- package/dist/resources/extensions/gsd/debug-logger.js +161 -0
- package/dist/resources/extensions/gsd/detection.js +373 -0
- package/dist/resources/extensions/gsd/diff-context.js +168 -0
- package/dist/resources/extensions/gsd/dispatch-guard.js +76 -0
- package/dist/resources/extensions/gsd/doctor-checks.js +563 -0
- package/dist/resources/extensions/gsd/doctor-environment.js +429 -0
- package/dist/resources/extensions/gsd/doctor-format.js +71 -0
- package/dist/resources/extensions/gsd/doctor-proactive.js +239 -0
- package/dist/resources/extensions/gsd/doctor-providers.js +292 -0
- package/dist/resources/extensions/gsd/doctor-types.js +12 -0
- package/dist/resources/extensions/gsd/doctor.js +672 -0
- package/dist/resources/extensions/gsd/error-utils.js +6 -0
- package/dist/resources/extensions/gsd/{errors.ts → errors.js} +6 -11
- package/dist/resources/extensions/gsd/exit-command.js +11 -0
- package/dist/resources/extensions/gsd/{export-html.ts → export-html.js} +482 -614
- package/dist/resources/extensions/gsd/export.js +268 -0
- package/dist/resources/extensions/gsd/file-watcher.js +76 -0
- package/dist/resources/extensions/gsd/files.js +937 -0
- package/dist/resources/extensions/gsd/forensics.js +511 -0
- package/dist/resources/extensions/gsd/{git-constants.ts → git-constants.js} +4 -5
- package/dist/resources/extensions/gsd/git-self-heal.js +113 -0
- package/dist/resources/extensions/gsd/git-service.js +460 -0
- package/dist/resources/extensions/gsd/{gitignore.ts → gitignore.js} +98 -125
- package/dist/resources/extensions/gsd/gsd-db.js +590 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
- package/dist/resources/extensions/gsd/guided-flow.js +1149 -0
- package/dist/resources/extensions/gsd/health-widget.js +141 -0
- package/dist/resources/extensions/gsd/history.js +118 -0
- package/dist/resources/extensions/gsd/index.js +1250 -0
- package/dist/resources/extensions/gsd/init-wizard.js +479 -0
- package/dist/resources/extensions/gsd/json-persistence.js +62 -0
- package/dist/resources/extensions/gsd/{jsonl-utils.ts → jsonl-utils.js} +10 -7
- package/dist/resources/extensions/gsd/key-manager.js +829 -0
- package/dist/resources/extensions/gsd/marketplace-discovery.js +356 -0
- package/dist/resources/extensions/gsd/md-importer.js +440 -0
- package/dist/resources/extensions/gsd/mechanical-completion.js +351 -0
- package/dist/resources/extensions/gsd/memory-extractor.js +295 -0
- package/dist/resources/extensions/gsd/memory-store.js +351 -0
- package/dist/resources/extensions/gsd/metrics.js +377 -0
- package/dist/resources/extensions/gsd/migrate/command.js +157 -0
- package/dist/resources/extensions/gsd/migrate/index.js +7 -0
- package/dist/resources/extensions/gsd/migrate/parser.js +268 -0
- package/dist/resources/extensions/gsd/migrate/parsers.js +477 -0
- package/dist/resources/extensions/gsd/migrate/preview.js +47 -0
- package/dist/resources/extensions/gsd/migrate/transformer.js +278 -0
- package/dist/resources/extensions/gsd/migrate/types.js +4 -0
- package/dist/resources/extensions/gsd/migrate/validator.js +41 -0
- package/dist/resources/extensions/gsd/migrate/writer.js +477 -0
- package/dist/resources/extensions/gsd/migrate-external.js +130 -0
- package/dist/resources/extensions/gsd/milestone-actions.js +111 -0
- package/dist/resources/extensions/gsd/{milestone-ids.ts → milestone-ids.js} +50 -63
- package/dist/resources/extensions/gsd/model-cost-table.js +48 -0
- package/dist/resources/extensions/gsd/model-router.js +187 -0
- package/dist/resources/extensions/gsd/namespaced-registry.js +322 -0
- package/dist/resources/extensions/gsd/namespaced-resolver.js +176 -0
- package/dist/resources/extensions/gsd/native-git-bridge.js +842 -0
- package/dist/resources/extensions/gsd/native-parser-bridge.js +156 -0
- package/dist/resources/extensions/gsd/notifications.js +58 -0
- package/dist/resources/extensions/gsd/observability-validator.js +398 -0
- package/dist/resources/extensions/gsd/parallel-eligibility.js +182 -0
- package/dist/resources/extensions/gsd/parallel-merge.js +121 -0
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +687 -0
- package/dist/resources/extensions/gsd/paths.js +414 -0
- package/dist/resources/extensions/gsd/plugin-importer.js +254 -0
- package/dist/resources/extensions/gsd/post-unit-hooks.js +433 -0
- package/dist/resources/extensions/gsd/preferences-models.js +294 -0
- package/dist/resources/extensions/gsd/preferences-skills.js +154 -0
- package/dist/resources/extensions/gsd/preferences-types.js +73 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +607 -0
- package/dist/resources/extensions/gsd/preferences.js +325 -0
- package/dist/resources/extensions/gsd/progress-score.js +197 -0
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +150 -0
- package/dist/resources/extensions/gsd/prompt-compressor.js +393 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +119 -0
- package/dist/resources/extensions/gsd/prompt-ordering.js +170 -0
- package/dist/resources/extensions/gsd/provider-error-pause.js +60 -0
- package/dist/resources/extensions/gsd/queue-order.js +178 -0
- package/dist/resources/extensions/gsd/queue-reorder-ui.js +234 -0
- package/dist/resources/extensions/gsd/quick.js +230 -0
- package/dist/resources/extensions/gsd/repo-identity.js +187 -0
- package/dist/resources/extensions/gsd/{reports.ts → reports.js} +146 -241
- package/dist/resources/extensions/gsd/{resource-version.ts → resource-version.js} +50 -53
- package/dist/resources/extensions/gsd/roadmap-slices.js +130 -0
- package/dist/resources/extensions/gsd/routing-history.js +210 -0
- package/dist/resources/extensions/gsd/safe-fs.js +52 -0
- package/dist/resources/extensions/gsd/semantic-chunker.js +254 -0
- package/dist/resources/extensions/gsd/session-forensics.js +427 -0
- package/dist/resources/extensions/gsd/session-lock.js +376 -0
- package/dist/resources/extensions/gsd/session-status-io.js +134 -0
- package/dist/resources/extensions/gsd/skill-discovery.js +121 -0
- package/dist/resources/extensions/gsd/skill-health.js +324 -0
- package/dist/resources/extensions/gsd/{skill-telemetry.ts → skill-telemetry.js} +58 -74
- package/dist/resources/extensions/gsd/state.js +653 -0
- package/dist/resources/extensions/gsd/structured-data-formatter.js +97 -0
- package/dist/resources/extensions/gsd/summary-distiller.js +212 -0
- package/dist/resources/extensions/gsd/token-counter.js +54 -0
- package/dist/resources/extensions/gsd/triage-resolution.js +217 -0
- package/dist/resources/extensions/gsd/triage-ui.js +125 -0
- package/dist/resources/extensions/gsd/types.js +4 -0
- package/dist/resources/extensions/gsd/undo.js +210 -0
- package/dist/resources/extensions/gsd/unit-id.js +7 -0
- package/dist/resources/extensions/gsd/unit-runtime.js +130 -0
- package/dist/resources/extensions/gsd/validate-directory.js +143 -0
- package/dist/resources/extensions/gsd/verification-evidence.js +123 -0
- package/dist/resources/extensions/gsd/verification-gate.js +543 -0
- package/dist/resources/extensions/gsd/visualizer-data.js +612 -0
- package/dist/resources/extensions/gsd/visualizer-overlay.js +501 -0
- package/dist/resources/extensions/gsd/visualizer-views.js +893 -0
- package/dist/resources/extensions/gsd/workflow-templates.js +188 -0
- package/dist/resources/extensions/gsd/workspace-index.js +139 -0
- package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +40 -0
- package/dist/resources/extensions/gsd/worktree-command.js +676 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +359 -0
- package/dist/resources/extensions/gsd/worktree.js +236 -0
- package/dist/resources/extensions/mac-tools/index.js +768 -0
- package/dist/resources/extensions/mcp-client/index.js +363 -0
- package/dist/resources/extensions/package.json +3 -0
- package/dist/resources/extensions/remote-questions/config.js +70 -0
- package/dist/resources/extensions/remote-questions/discord-adapter.js +134 -0
- package/dist/resources/extensions/remote-questions/format.js +234 -0
- package/dist/resources/extensions/remote-questions/http-client.js +43 -0
- package/dist/resources/extensions/remote-questions/manager.js +156 -0
- package/dist/resources/extensions/remote-questions/{mod.ts → mod.js} +1 -10
- package/dist/resources/extensions/remote-questions/notify.js +89 -0
- package/dist/resources/extensions/remote-questions/remote-command.js +453 -0
- package/dist/resources/extensions/remote-questions/slack-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/status.js +25 -0
- package/dist/resources/extensions/remote-questions/store.js +70 -0
- package/dist/resources/extensions/remote-questions/telegram-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/types.js +5 -0
- package/dist/resources/extensions/search-the-web/cache.js +74 -0
- package/dist/resources/extensions/search-the-web/command-search-provider.js +79 -0
- package/dist/resources/extensions/search-the-web/format.js +161 -0
- package/dist/resources/extensions/search-the-web/http.js +178 -0
- package/dist/resources/extensions/search-the-web/index.js +41 -0
- package/dist/resources/extensions/search-the-web/native-search.js +166 -0
- package/dist/resources/extensions/search-the-web/provider.js +143 -0
- package/dist/resources/extensions/search-the-web/tavily.js +82 -0
- package/dist/resources/extensions/search-the-web/tool-fetch-page.js +452 -0
- package/dist/resources/extensions/search-the-web/tool-llm-context.js +455 -0
- package/dist/resources/extensions/search-the-web/tool-search.js +482 -0
- package/dist/resources/extensions/search-the-web/url-utils.js +121 -0
- package/dist/resources/extensions/shared/confirm-ui.js +96 -0
- package/dist/resources/extensions/shared/{format-utils.ts → format-utils.js} +85 -91
- package/dist/resources/extensions/shared/frontmatter.js +109 -0
- package/dist/resources/extensions/shared/interview-ui.js +569 -0
- package/dist/resources/extensions/shared/{mod.ts → mod.js} +2 -24
- package/dist/resources/extensions/shared/next-action-ui.js +168 -0
- package/dist/resources/extensions/shared/{path-display.ts → path-display.js} +2 -3
- package/dist/resources/extensions/shared/sanitize.js +17 -0
- package/dist/resources/extensions/shared/terminal.js +21 -0
- package/dist/resources/extensions/shared/ui.js +245 -0
- package/dist/resources/extensions/shared/wizard-ui.js +478 -0
- package/dist/resources/extensions/slash-commands/audit.js +72 -0
- package/dist/resources/extensions/slash-commands/clear.js +8 -0
- package/dist/resources/extensions/slash-commands/create-extension.js +264 -0
- package/dist/resources/extensions/slash-commands/create-slash-command.js +208 -0
- package/dist/resources/extensions/slash-commands/index.js +10 -0
- package/dist/resources/extensions/subagent/agents.js +103 -0
- package/dist/resources/extensions/subagent/index.js +905 -0
- package/dist/resources/extensions/subagent/isolation.js +384 -0
- package/dist/resources/extensions/subagent/worker-registry.js +73 -0
- package/dist/resources/extensions/ttsr/index.js +144 -0
- package/dist/resources/extensions/ttsr/rule-loader.js +70 -0
- package/dist/resources/extensions/ttsr/ttsr-manager.js +380 -0
- package/dist/resources/extensions/universal-config/discovery.js +94 -0
- package/dist/resources/extensions/universal-config/format.js +178 -0
- package/dist/resources/extensions/universal-config/index.js +99 -0
- package/dist/resources/extensions/universal-config/scanners.js +574 -0
- package/dist/resources/extensions/universal-config/tools.js +57 -0
- package/dist/resources/extensions/universal-config/types.js +8 -0
- package/dist/resources/extensions/voice/index.js +247 -0
- package/dist/startup-timings.d.ts +2 -0
- package/dist/startup-timings.js +22 -0
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
- package/packages/pi-coding-agent/src/index.ts +1 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/bg-shell/index.ts +41 -46
- package/src/resources/extensions/browser-tools/index.ts +156 -67
- package/src/resources/extensions/gsd/auto-supervisor.ts +10 -5
- package/src/resources/extensions/gsd/auto-verification.ts +20 -2
- package/src/resources/extensions/gsd/auto-worktree.ts +136 -1
- package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
- package/src/resources/extensions/gsd/commands.ts +53 -33
- package/src/resources/extensions/gsd/git-service.ts +24 -11
- package/src/resources/extensions/gsd/index.ts +106 -34
- package/src/resources/extensions/gsd/quick.ts +52 -3
- package/src/resources/extensions/gsd/repo-identity.ts +56 -22
- package/src/resources/extensions/gsd/session-lock.ts +80 -16
- package/src/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +691 -0
- package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +317 -0
- package/src/resources/extensions/gsd/tests/git-service.test.ts +16 -7
- package/src/resources/extensions/gsd/tests/loop-regression.test.ts +40 -5
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +358 -0
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +216 -0
- package/src/resources/extensions/gsd/tests/session-lock.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +206 -0
- package/src/resources/extensions/gsd/types.ts +4 -0
- package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
- package/src/resources/extensions/gsd/verification-gate.ts +23 -2
- package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
- package/src/resources/extensions/gsd/worktree-command.ts +17 -11
- package/src/resources/extensions/package.json +3 -0
- package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
- package/src/resources/extensions/search-the-web/index.ts +35 -52
- package/src/resources/extensions/search-the-web/tavily.ts +1 -1
- package/dist/resources/extensions/ask-user-questions.ts +0 -290
- package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
- package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
- package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
- package/dist/resources/extensions/async-jobs/index.ts +0 -141
- package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
- package/dist/resources/extensions/aws-auth/index.ts +0 -144
- package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
- package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
- package/dist/resources/extensions/bg-shell/index.ts +0 -59
- package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
- package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
- package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
- package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
- package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
- package/dist/resources/extensions/bg-shell/types.ts +0 -303
- package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
- package/dist/resources/extensions/browser-tools/capture.ts +0 -199
- package/dist/resources/extensions/browser-tools/core.ts +0 -1196
- package/dist/resources/extensions/browser-tools/index.ts +0 -71
- package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
- package/dist/resources/extensions/browser-tools/refs.ts +0 -264
- package/dist/resources/extensions/browser-tools/settle.ts +0 -197
- package/dist/resources/extensions/browser-tools/state.ts +0 -408
- package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
- package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
- package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
- package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
- package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
- package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
- package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
- package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
- package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
- package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
- package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
- package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
- package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
- package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
- package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
- package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
- package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
- package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
- package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
- package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
- package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
- package/dist/resources/extensions/browser-tools/utils.ts +0 -660
- package/dist/resources/extensions/context7/index.ts +0 -428
- package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
- package/dist/resources/extensions/google-search/index.ts +0 -466
- package/dist/resources/extensions/gsd/activity-log.ts +0 -162
- package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
- package/dist/resources/extensions/gsd/auto/session.ts +0 -236
- package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
- package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
- package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
- package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
- package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
- package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
- package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
- package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
- package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
- package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
- package/dist/resources/extensions/gsd/auto-start.ts +0 -483
- package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
- package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
- package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
- package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
- package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
- package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
- package/dist/resources/extensions/gsd/auto-worktree.ts +0 -524
- package/dist/resources/extensions/gsd/auto.ts +0 -1834
- package/dist/resources/extensions/gsd/captures.ts +0 -427
- package/dist/resources/extensions/gsd/claude-import.ts +0 -656
- package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
- package/dist/resources/extensions/gsd/commands-config.ts +0 -102
- package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
- package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
- package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
- package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
- package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
- package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
- package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
- package/dist/resources/extensions/gsd/commands.ts +0 -1137
- package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
- package/dist/resources/extensions/gsd/context-budget.ts +0 -266
- package/dist/resources/extensions/gsd/context-store.ts +0 -195
- package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
- package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
- package/dist/resources/extensions/gsd/db-writer.ts +0 -360
- package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
- package/dist/resources/extensions/gsd/detection.ts +0 -470
- package/dist/resources/extensions/gsd/diff-context.ts +0 -214
- package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
- package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
- package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
- package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
- package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
- package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
- package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
- package/dist/resources/extensions/gsd/doctor.ts +0 -722
- package/dist/resources/extensions/gsd/error-utils.ts +0 -6
- package/dist/resources/extensions/gsd/exit-command.ts +0 -18
- package/dist/resources/extensions/gsd/export.ts +0 -317
- package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
- package/dist/resources/extensions/gsd/files.ts +0 -1058
- package/dist/resources/extensions/gsd/forensics.ts +0 -629
- package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
- package/dist/resources/extensions/gsd/git-service.ts +0 -580
- package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
- package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
- package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
- package/dist/resources/extensions/gsd/health-widget.ts +0 -167
- package/dist/resources/extensions/gsd/history.ts +0 -143
- package/dist/resources/extensions/gsd/index.ts +0 -1390
- package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
- package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
- package/dist/resources/extensions/gsd/key-manager.ts +0 -996
- package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
- package/dist/resources/extensions/gsd/md-importer.ts +0 -527
- package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
- package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
- package/dist/resources/extensions/gsd/memory-store.ts +0 -441
- package/dist/resources/extensions/gsd/metrics.ts +0 -532
- package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
- package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
- package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
- package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
- package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
- package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
- package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
- package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
- package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
- package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
- package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
- package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
- package/dist/resources/extensions/gsd/model-router.ts +0 -256
- package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
- package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
- package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
- package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
- package/dist/resources/extensions/gsd/notifications.ts +0 -87
- package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
- package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
- package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
- package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
- package/dist/resources/extensions/gsd/paths.ts +0 -449
- package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
- package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
- package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
- package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
- package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
- package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
- package/dist/resources/extensions/gsd/preferences.ts +0 -416
- package/dist/resources/extensions/gsd/progress-score.ts +0 -273
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
- package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
- package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
- package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
- package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
- package/dist/resources/extensions/gsd/queue-order.ts +0 -230
- package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
- package/dist/resources/extensions/gsd/quick.ts +0 -212
- package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
- package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
- package/dist/resources/extensions/gsd/routing-history.ts +0 -286
- package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
- package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
- package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
- package/dist/resources/extensions/gsd/session-lock.ts +0 -362
- package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
- package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
- package/dist/resources/extensions/gsd/skill-health.ts +0 -417
- package/dist/resources/extensions/gsd/state.ts +0 -727
- package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
- package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
- package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
- package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
- package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
- package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
- package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
- package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
- package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
- package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
- package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
- package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
- package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
- package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
- package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
- package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
- package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
- package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
- package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
- package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
- package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
- package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
- package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
- package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
- package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
- package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
- package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
- package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
- package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
- package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
- package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
- package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
- package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
- package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
- package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
- package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
- package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
- package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
- package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
- package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
- package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
- package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1172
- package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
- package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
- package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
- package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
- package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
- package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
- package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
- package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
- package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
- package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
- package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
- package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
- package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -839
- package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
- package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
- package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
- package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
- package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
- package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
- package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
- package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
- package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
- package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
- package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
- package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
- package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
- package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
- package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
- package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
- package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
- package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
- package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
- package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
- package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
- package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
- package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
- package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
- package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
- package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
- package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
- package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
- package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
- package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
- package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
- package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
- package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
- package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
- package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
- package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
- package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
- package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
- package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
- package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
- package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
- package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
- package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
- package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
- package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
- package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
- package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
- package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
- package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
- package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
- package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -315
- package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
- package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
- package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
- package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
- package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
- package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
- package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
- package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
- package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
- package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
- package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
- package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
- package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
- package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
- package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
- package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
- package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
- package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
- package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
- package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
- package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
- package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
- package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
- package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
- package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
- package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
- package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
- package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
- package/dist/resources/extensions/gsd/token-counter.ts +0 -65
- package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
- package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
- package/dist/resources/extensions/gsd/types.ts +0 -425
- package/dist/resources/extensions/gsd/undo.ts +0 -223
- package/dist/resources/extensions/gsd/unit-id.ts +0 -14
- package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
- package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
- package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
- package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
- package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
- package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
- package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
- package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
- package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
- package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
- package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
- package/dist/resources/extensions/gsd/worktree.ts +0 -257
- package/dist/resources/extensions/mac-tools/index.ts +0 -852
- package/dist/resources/extensions/mcp-client/index.ts +0 -459
- package/dist/resources/extensions/mcporter/extension-manifest.json +0 -12
- package/dist/resources/extensions/remote-questions/config.ts +0 -83
- package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
- package/dist/resources/extensions/remote-questions/format.ts +0 -315
- package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
- package/dist/resources/extensions/remote-questions/manager.ts +0 -184
- package/dist/resources/extensions/remote-questions/notify.ts +0 -90
- package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
- package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
- package/dist/resources/extensions/remote-questions/status.ts +0 -31
- package/dist/resources/extensions/remote-questions/store.ts +0 -81
- package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
- package/dist/resources/extensions/remote-questions/types.ts +0 -102
- package/dist/resources/extensions/search-the-web/cache.ts +0 -78
- package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
- package/dist/resources/extensions/search-the-web/format.ts +0 -258
- package/dist/resources/extensions/search-the-web/http.ts +0 -238
- package/dist/resources/extensions/search-the-web/index.ts +0 -65
- package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
- package/dist/resources/extensions/search-the-web/provider.ts +0 -148
- package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
- package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
- package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
- package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
- package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
- package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
- package/dist/resources/extensions/shared/frontmatter.ts +0 -117
- package/dist/resources/extensions/shared/interview-ui.ts +0 -613
- package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
- package/dist/resources/extensions/shared/sanitize.ts +0 -19
- package/dist/resources/extensions/shared/terminal.ts +0 -23
- package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
- package/dist/resources/extensions/shared/ui.ts +0 -400
- package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
- package/dist/resources/extensions/slash-commands/audit.ts +0 -88
- package/dist/resources/extensions/slash-commands/clear.ts +0 -10
- package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
- package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
- package/dist/resources/extensions/slash-commands/index.ts +0 -12
- package/dist/resources/extensions/subagent/agents.ts +0 -126
- package/dist/resources/extensions/subagent/index.ts +0 -1121
- package/dist/resources/extensions/subagent/isolation.ts +0 -501
- package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
- package/dist/resources/extensions/ttsr/index.ts +0 -168
- package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
- package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
- package/dist/resources/extensions/universal-config/discovery.ts +0 -104
- package/dist/resources/extensions/universal-config/format.ts +0 -191
- package/dist/resources/extensions/universal-config/index.ts +0 -120
- package/dist/resources/extensions/universal-config/scanners.ts +0 -642
- package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
- package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
- package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
- package/dist/resources/extensions/universal-config/tools.ts +0 -60
- package/dist/resources/extensions/universal-config/types.ts +0 -135
- package/dist/resources/extensions/voice/index.ts +0 -272
- package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
- package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
- package/src/resources/extensions/mcporter/extension-manifest.json +0 -12
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GSD Paths — ID-based path resolution
|
|
3
|
+
*
|
|
4
|
+
* Directories use bare IDs: M001/, S01/, etc.
|
|
5
|
+
* Files use ID-SUFFIX: M001-ROADMAP.md, S01-PLAN.md, T01-PLAN.md
|
|
6
|
+
*
|
|
7
|
+
* Resolvers still handle legacy descriptor-suffixed names
|
|
8
|
+
* (e.g. M001-FLIGHT-SIMULATOR/, T03-INSTALL-PACKAGES-PLAN.md)
|
|
9
|
+
* via prefix matching, so existing projects work without migration.
|
|
10
|
+
*/
|
|
11
|
+
import { readdirSync, existsSync, realpathSync, Dirent } from "node:fs";
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { nativeScanGsdTree } from "./native-parser-bridge.js";
|
|
14
|
+
import { DIR_CACHE_MAX } from "./constants.js";
|
|
15
|
+
// ─── Directory Listing Cache ──────────────────────────────────────────────────
|
|
16
|
+
const dirEntryCache = new Map();
|
|
17
|
+
const dirListCache = new Map();
|
|
18
|
+
// ─── Native Tree Cache ────────────────────────────────────────────────────────
|
|
19
|
+
// When the native module is available, scan the entire .gsd/ tree in one call
|
|
20
|
+
// and serve directory listings from memory instead of individual readdirSync calls.
|
|
21
|
+
let nativeTreeCache = null;
|
|
22
|
+
let nativeTreeBase = null;
|
|
23
|
+
function getNativeTree(gsdDir) {
|
|
24
|
+
if (nativeTreeCache && nativeTreeBase === gsdDir)
|
|
25
|
+
return nativeTreeCache;
|
|
26
|
+
const entries = nativeScanGsdTree(gsdDir);
|
|
27
|
+
if (!entries)
|
|
28
|
+
return null;
|
|
29
|
+
// Build a map of parent directory -> entries
|
|
30
|
+
const tree = new Map();
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
const parts = entry.path.split('/');
|
|
33
|
+
const parentPath = parts.slice(0, -1).join('/');
|
|
34
|
+
const parentKey = parentPath || '.';
|
|
35
|
+
if (!tree.has(parentKey))
|
|
36
|
+
tree.set(parentKey, []);
|
|
37
|
+
tree.get(parentKey).push(entry);
|
|
38
|
+
}
|
|
39
|
+
nativeTreeCache = tree;
|
|
40
|
+
nativeTreeBase = gsdDir;
|
|
41
|
+
return tree;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Convert a native tree lookup into a relative key for the tree map.
|
|
45
|
+
* Returns the relative path from the gsdDir, or null if the path isn't under gsdDir.
|
|
46
|
+
*/
|
|
47
|
+
function nativeTreeKey(dirPath, gsdDir) {
|
|
48
|
+
if (!dirPath.startsWith(gsdDir))
|
|
49
|
+
return null;
|
|
50
|
+
const rel = dirPath.slice(gsdDir.length).replace(/^\//, '');
|
|
51
|
+
return rel || '.';
|
|
52
|
+
}
|
|
53
|
+
function cachedReaddirWithTypes(dirPath) {
|
|
54
|
+
const cached = dirEntryCache.get(dirPath);
|
|
55
|
+
if (cached)
|
|
56
|
+
return cached;
|
|
57
|
+
// Try native tree cache for paths under .gsd/
|
|
58
|
+
if (nativeTreeBase) {
|
|
59
|
+
const key = nativeTreeKey(dirPath, nativeTreeBase);
|
|
60
|
+
if (key && nativeTreeCache) {
|
|
61
|
+
const treeEntries = nativeTreeCache.get(key);
|
|
62
|
+
if (treeEntries) {
|
|
63
|
+
// Synthesize Dirent-like objects from native tree entries
|
|
64
|
+
const dirents = treeEntries.map(e => {
|
|
65
|
+
const d = Object.create(Dirent.prototype);
|
|
66
|
+
Object.assign(d, {
|
|
67
|
+
name: e.name,
|
|
68
|
+
parentPath: dirPath,
|
|
69
|
+
path: dirPath,
|
|
70
|
+
});
|
|
71
|
+
// Override the type check methods
|
|
72
|
+
const isDir = e.isDir;
|
|
73
|
+
d.isDirectory = () => isDir;
|
|
74
|
+
d.isFile = () => !isDir;
|
|
75
|
+
d.isSymbolicLink = () => false;
|
|
76
|
+
d.isBlockDevice = () => false;
|
|
77
|
+
d.isCharacterDevice = () => false;
|
|
78
|
+
d.isFIFO = () => false;
|
|
79
|
+
d.isSocket = () => false;
|
|
80
|
+
return d;
|
|
81
|
+
});
|
|
82
|
+
if (dirEntryCache.size >= DIR_CACHE_MAX)
|
|
83
|
+
dirEntryCache.clear();
|
|
84
|
+
dirEntryCache.set(dirPath, dirents);
|
|
85
|
+
return dirents;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const entries = readdirSync(dirPath, { withFileTypes: true });
|
|
90
|
+
if (dirEntryCache.size >= DIR_CACHE_MAX)
|
|
91
|
+
dirEntryCache.clear();
|
|
92
|
+
dirEntryCache.set(dirPath, entries);
|
|
93
|
+
return entries;
|
|
94
|
+
}
|
|
95
|
+
function cachedReaddir(dirPath) {
|
|
96
|
+
const cached = dirListCache.get(dirPath);
|
|
97
|
+
if (cached)
|
|
98
|
+
return cached;
|
|
99
|
+
// Try native tree cache for paths under .gsd/
|
|
100
|
+
if (nativeTreeBase) {
|
|
101
|
+
const key = nativeTreeKey(dirPath, nativeTreeBase);
|
|
102
|
+
if (key && nativeTreeCache) {
|
|
103
|
+
const treeEntries = nativeTreeCache.get(key);
|
|
104
|
+
if (treeEntries) {
|
|
105
|
+
const names = treeEntries.map(e => e.name);
|
|
106
|
+
if (dirListCache.size >= DIR_CACHE_MAX)
|
|
107
|
+
dirListCache.clear();
|
|
108
|
+
dirListCache.set(dirPath, names);
|
|
109
|
+
return names;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const entries = readdirSync(dirPath);
|
|
114
|
+
if (dirListCache.size >= DIR_CACHE_MAX)
|
|
115
|
+
dirListCache.clear();
|
|
116
|
+
dirListCache.set(dirPath, entries);
|
|
117
|
+
return entries;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Clear the directory listing cache.
|
|
121
|
+
* Call after milestone transitions, file creation in planning directories,
|
|
122
|
+
* or at the start/end of a dispatch cycle.
|
|
123
|
+
*/
|
|
124
|
+
export function clearPathCache() {
|
|
125
|
+
dirEntryCache.clear();
|
|
126
|
+
dirListCache.clear();
|
|
127
|
+
nativeTreeCache = null;
|
|
128
|
+
nativeTreeBase = null;
|
|
129
|
+
}
|
|
130
|
+
// ─── Name Builders ─────────────────────────────────────────────────────────
|
|
131
|
+
/**
|
|
132
|
+
* Build a milestone-level file name.
|
|
133
|
+
* ("M001", "CONTEXT") → "M001-CONTEXT.md"
|
|
134
|
+
*/
|
|
135
|
+
export function buildMilestoneFileName(milestoneId, suffix) {
|
|
136
|
+
return `${milestoneId}-${suffix}.md`;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Build a slice-level file name.
|
|
140
|
+
* ("S01", "PLAN") → "S01-PLAN.md"
|
|
141
|
+
*/
|
|
142
|
+
export function buildSliceFileName(sliceId, suffix) {
|
|
143
|
+
return `${sliceId}-${suffix}.md`;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build a task file name.
|
|
147
|
+
* ("T03", "PLAN") → "T03-PLAN.md"
|
|
148
|
+
* ("T03", "SUMMARY") → "T03-SUMMARY.md"
|
|
149
|
+
*/
|
|
150
|
+
export function buildTaskFileName(taskId, suffix) {
|
|
151
|
+
return `${taskId}-${suffix}.md`;
|
|
152
|
+
}
|
|
153
|
+
// ─── Resolvers ─────────────────────────────────────────────────────────────
|
|
154
|
+
/**
|
|
155
|
+
* Find a directory entry by ID prefix within a parent directory.
|
|
156
|
+
* Exact match first (M001), then prefix match (M001-SOMETHING) for
|
|
157
|
+
* backward compatibility with legacy descriptor directories.
|
|
158
|
+
* Returns the full directory name or null.
|
|
159
|
+
*/
|
|
160
|
+
export function resolveDir(parentDir, idPrefix) {
|
|
161
|
+
if (!existsSync(parentDir))
|
|
162
|
+
return null;
|
|
163
|
+
try {
|
|
164
|
+
const entries = cachedReaddirWithTypes(parentDir);
|
|
165
|
+
// Exact match first (current convention: bare ID)
|
|
166
|
+
const exact = entries.find(e => e.isDirectory() && e.name === idPrefix);
|
|
167
|
+
if (exact)
|
|
168
|
+
return exact.name;
|
|
169
|
+
// Prefix match for legacy descriptor dirs: M001-SOMETHING
|
|
170
|
+
const prefixed = entries.find(e => e.isDirectory() && e.name.startsWith(idPrefix + "-"));
|
|
171
|
+
return prefixed ? prefixed.name : null;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Find a file by ID prefix and suffix within a directory.
|
|
179
|
+
* Checks in order:
|
|
180
|
+
* 1. Direct: ID-SUFFIX.md (e.g. M001-ROADMAP.md, T03-PLAN.md)
|
|
181
|
+
* 2. Legacy descriptor: ID-DESCRIPTOR-SUFFIX.md (e.g. T03-INSTALL-PACKAGES-PLAN.md)
|
|
182
|
+
* 3. Legacy bare: suffix.md (e.g. roadmap.md)
|
|
183
|
+
*/
|
|
184
|
+
export function resolveFile(dir, idPrefix, suffix) {
|
|
185
|
+
if (!existsSync(dir))
|
|
186
|
+
return null;
|
|
187
|
+
const target = `${idPrefix}-${suffix}.md`.toUpperCase();
|
|
188
|
+
try {
|
|
189
|
+
const entries = cachedReaddir(dir);
|
|
190
|
+
// Direct match: ID-SUFFIX.md
|
|
191
|
+
const direct = entries.find(e => e.toUpperCase() === target);
|
|
192
|
+
if (direct)
|
|
193
|
+
return direct;
|
|
194
|
+
// Legacy pattern match: ID-DESCRIPTOR-SUFFIX.md
|
|
195
|
+
const pattern = new RegExp(`^${idPrefix}-.*-${suffix}\\.md$`, "i");
|
|
196
|
+
const match = entries.find(e => pattern.test(e));
|
|
197
|
+
if (match)
|
|
198
|
+
return match;
|
|
199
|
+
// Legacy fallback: suffix.md
|
|
200
|
+
const legacy = entries.find(e => e.toLowerCase() === `${suffix.toLowerCase()}.md`);
|
|
201
|
+
if (legacy)
|
|
202
|
+
return legacy;
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Find all task files matching a pattern in a tasks directory.
|
|
211
|
+
* Returns sorted file names matching T##-SUFFIX.md or legacy T##-*-SUFFIX.md
|
|
212
|
+
*/
|
|
213
|
+
export function resolveTaskFiles(tasksDir, suffix) {
|
|
214
|
+
if (!existsSync(tasksDir))
|
|
215
|
+
return [];
|
|
216
|
+
try {
|
|
217
|
+
// Current convention: T01-PLAN.md
|
|
218
|
+
const currentPattern = new RegExp(`^T\\d+-${suffix}\\.md$`, "i");
|
|
219
|
+
// Legacy convention: T01-INSTALL-PACKAGES-PLAN.md
|
|
220
|
+
const legacyPattern = new RegExp(`^T\\d+-.*-${suffix}\\.md$`, "i");
|
|
221
|
+
return cachedReaddir(tasksDir)
|
|
222
|
+
.filter(f => currentPattern.test(f) || legacyPattern.test(f))
|
|
223
|
+
.sort();
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Find all task JSON files matching a pattern in a tasks directory.
|
|
231
|
+
* Returns sorted file names matching T##-SUFFIX.json or legacy T##-*-SUFFIX.json
|
|
232
|
+
*/
|
|
233
|
+
export function resolveTaskJsonFiles(tasksDir, suffix) {
|
|
234
|
+
if (!existsSync(tasksDir))
|
|
235
|
+
return [];
|
|
236
|
+
try {
|
|
237
|
+
const currentPattern = new RegExp(`^T\\d+-${suffix}\\.json$`, "i");
|
|
238
|
+
const legacyPattern = new RegExp(`^T\\d+-.*-${suffix}\\.json$`, "i");
|
|
239
|
+
return cachedReaddir(tasksDir)
|
|
240
|
+
.filter(f => currentPattern.test(f) || legacyPattern.test(f))
|
|
241
|
+
.sort();
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// ─── Full Path Builders ────────────────────────────────────────────────────
|
|
248
|
+
export const GSD_ROOT_FILES = {
|
|
249
|
+
PROJECT: "PROJECT.md",
|
|
250
|
+
DECISIONS: "DECISIONS.md",
|
|
251
|
+
QUEUE: "QUEUE.md",
|
|
252
|
+
STATE: "STATE.md",
|
|
253
|
+
REQUIREMENTS: "REQUIREMENTS.md",
|
|
254
|
+
OVERRIDES: "OVERRIDES.md",
|
|
255
|
+
KNOWLEDGE: "KNOWLEDGE.md",
|
|
256
|
+
};
|
|
257
|
+
const LEGACY_GSD_ROOT_FILES = {
|
|
258
|
+
PROJECT: "project.md",
|
|
259
|
+
DECISIONS: "decisions.md",
|
|
260
|
+
QUEUE: "queue.md",
|
|
261
|
+
STATE: "state.md",
|
|
262
|
+
REQUIREMENTS: "requirements.md",
|
|
263
|
+
OVERRIDES: "overrides.md",
|
|
264
|
+
KNOWLEDGE: "knowledge.md",
|
|
265
|
+
};
|
|
266
|
+
export function gsdRoot(basePath) {
|
|
267
|
+
const local = join(basePath, ".gsd");
|
|
268
|
+
try {
|
|
269
|
+
const resolved = realpathSync(local);
|
|
270
|
+
if (resolved !== local)
|
|
271
|
+
return resolved; // symlink resolved
|
|
272
|
+
}
|
|
273
|
+
catch { /* doesn't exist yet — fall through */ }
|
|
274
|
+
return local; // backwards compat: unmigrated projects
|
|
275
|
+
}
|
|
276
|
+
export function milestonesDir(basePath) {
|
|
277
|
+
return join(gsdRoot(basePath), "milestones");
|
|
278
|
+
}
|
|
279
|
+
export function resolveGsdRootFile(basePath, key) {
|
|
280
|
+
const root = gsdRoot(basePath);
|
|
281
|
+
const canonical = join(root, GSD_ROOT_FILES[key]);
|
|
282
|
+
if (existsSync(canonical))
|
|
283
|
+
return canonical;
|
|
284
|
+
const legacy = join(root, LEGACY_GSD_ROOT_FILES[key]);
|
|
285
|
+
if (existsSync(legacy))
|
|
286
|
+
return legacy;
|
|
287
|
+
return canonical;
|
|
288
|
+
}
|
|
289
|
+
export function relGsdRootFile(key) {
|
|
290
|
+
return `.gsd/${GSD_ROOT_FILES[key]}`;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Resolve the full path to a milestone directory.
|
|
294
|
+
* Returns null if the milestone doesn't exist.
|
|
295
|
+
*/
|
|
296
|
+
export function resolveMilestonePath(basePath, milestoneId) {
|
|
297
|
+
const dir = resolveDir(milestonesDir(basePath), milestoneId);
|
|
298
|
+
return dir ? join(milestonesDir(basePath), dir) : null;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Resolve the full path to a milestone file (e.g. ROADMAP, CONTEXT, RESEARCH).
|
|
302
|
+
*/
|
|
303
|
+
export function resolveMilestoneFile(basePath, milestoneId, suffix) {
|
|
304
|
+
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
305
|
+
if (!mDir)
|
|
306
|
+
return null;
|
|
307
|
+
const file = resolveFile(mDir, milestoneId, suffix);
|
|
308
|
+
return file ? join(mDir, file) : null;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Resolve the full path to a slice directory within a milestone.
|
|
312
|
+
*/
|
|
313
|
+
export function resolveSlicePath(basePath, milestoneId, sliceId) {
|
|
314
|
+
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
315
|
+
if (!mDir)
|
|
316
|
+
return null;
|
|
317
|
+
const slicesDir = join(mDir, "slices");
|
|
318
|
+
const dir = resolveDir(slicesDir, sliceId);
|
|
319
|
+
return dir ? join(slicesDir, dir) : null;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Resolve the full path to a slice file (e.g. PLAN, RESEARCH, CONTEXT, SUMMARY).
|
|
323
|
+
*/
|
|
324
|
+
export function resolveSliceFile(basePath, milestoneId, sliceId, suffix) {
|
|
325
|
+
const sDir = resolveSlicePath(basePath, milestoneId, sliceId);
|
|
326
|
+
if (!sDir)
|
|
327
|
+
return null;
|
|
328
|
+
const file = resolveFile(sDir, sliceId, suffix);
|
|
329
|
+
return file ? join(sDir, file) : null;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Resolve the tasks directory within a slice.
|
|
333
|
+
*/
|
|
334
|
+
export function resolveTasksDir(basePath, milestoneId, sliceId) {
|
|
335
|
+
const sDir = resolveSlicePath(basePath, milestoneId, sliceId);
|
|
336
|
+
if (!sDir)
|
|
337
|
+
return null;
|
|
338
|
+
const tDir = join(sDir, "tasks");
|
|
339
|
+
return existsSync(tDir) ? tDir : null;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Resolve a specific task file.
|
|
343
|
+
*/
|
|
344
|
+
export function resolveTaskFile(basePath, milestoneId, sliceId, taskId, suffix) {
|
|
345
|
+
const tDir = resolveTasksDir(basePath, milestoneId, sliceId);
|
|
346
|
+
if (!tDir)
|
|
347
|
+
return null;
|
|
348
|
+
const file = resolveFile(tDir, taskId, suffix);
|
|
349
|
+
return file ? join(tDir, file) : null;
|
|
350
|
+
}
|
|
351
|
+
// ─── Relative Path Builders (for prompts — .gsd/milestones/...) ────────────
|
|
352
|
+
/**
|
|
353
|
+
* Build relative .gsd/ path to a milestone directory.
|
|
354
|
+
* Uses the actual directory name on disk if it exists, otherwise bare ID.
|
|
355
|
+
*/
|
|
356
|
+
export function relMilestonePath(basePath, milestoneId) {
|
|
357
|
+
const dir = resolveDir(milestonesDir(basePath), milestoneId);
|
|
358
|
+
if (dir)
|
|
359
|
+
return `.gsd/milestones/${dir}`;
|
|
360
|
+
return `.gsd/milestones/${milestoneId}`;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Build relative .gsd/ path to a milestone file.
|
|
364
|
+
*/
|
|
365
|
+
export function relMilestoneFile(basePath, milestoneId, suffix) {
|
|
366
|
+
const mRel = relMilestonePath(basePath, milestoneId);
|
|
367
|
+
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
368
|
+
if (mDir) {
|
|
369
|
+
const file = resolveFile(mDir, milestoneId, suffix);
|
|
370
|
+
if (file)
|
|
371
|
+
return `${mRel}/${file}`;
|
|
372
|
+
}
|
|
373
|
+
return `${mRel}/${buildMilestoneFileName(milestoneId, suffix)}`;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Build relative .gsd/ path to a slice directory.
|
|
377
|
+
*/
|
|
378
|
+
export function relSlicePath(basePath, milestoneId, sliceId) {
|
|
379
|
+
const mRel = relMilestonePath(basePath, milestoneId);
|
|
380
|
+
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
381
|
+
if (mDir) {
|
|
382
|
+
const slicesDir = join(mDir, "slices");
|
|
383
|
+
const dir = resolveDir(slicesDir, sliceId);
|
|
384
|
+
if (dir)
|
|
385
|
+
return `${mRel}/slices/${dir}`;
|
|
386
|
+
}
|
|
387
|
+
return `${mRel}/slices/${sliceId}`;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Build relative .gsd/ path to a slice file.
|
|
391
|
+
*/
|
|
392
|
+
export function relSliceFile(basePath, milestoneId, sliceId, suffix) {
|
|
393
|
+
const sRel = relSlicePath(basePath, milestoneId, sliceId);
|
|
394
|
+
const sDir = resolveSlicePath(basePath, milestoneId, sliceId);
|
|
395
|
+
if (sDir) {
|
|
396
|
+
const file = resolveFile(sDir, sliceId, suffix);
|
|
397
|
+
if (file)
|
|
398
|
+
return `${sRel}/${file}`;
|
|
399
|
+
}
|
|
400
|
+
return `${sRel}/${buildSliceFileName(sliceId, suffix)}`;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Build relative .gsd/ path to a task file.
|
|
404
|
+
*/
|
|
405
|
+
export function relTaskFile(basePath, milestoneId, sliceId, taskId, suffix) {
|
|
406
|
+
const sRel = relSlicePath(basePath, milestoneId, sliceId);
|
|
407
|
+
const tDir = resolveTasksDir(basePath, milestoneId, sliceId);
|
|
408
|
+
if (tDir) {
|
|
409
|
+
const file = resolveFile(tDir, taskId, suffix);
|
|
410
|
+
if (file)
|
|
411
|
+
return `${sRel}/tasks/${file}`;
|
|
412
|
+
}
|
|
413
|
+
return `${sRel}/tasks/${buildTaskFileName(taskId, suffix)}`;
|
|
414
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PluginImporter Service
|
|
3
|
+
*
|
|
4
|
+
* Composes S01-S04 modules into a staged discover → select → validate → commit pipeline.
|
|
5
|
+
* Each stage is independently testable. The service owns no UI — it produces data structures
|
|
6
|
+
* that the command layer (T02) consumes.
|
|
7
|
+
*
|
|
8
|
+
* Pipeline stages:
|
|
9
|
+
* 1. discover(marketplacePaths) - Read marketplace manifests, populate registry
|
|
10
|
+
* 2. selectComponents(filter) - Filter to user-chosen components
|
|
11
|
+
* 3. validateImport(selected) - Check for collisions, return diagnostics
|
|
12
|
+
* 4. getImportManifest(selected) - Produce serializable config structure
|
|
13
|
+
*
|
|
14
|
+
* This service implements R012 (discover/select/import flow) and R013 (canonical name preservation).
|
|
15
|
+
*/
|
|
16
|
+
import { discoverMarketplace, } from './marketplace-discovery.js';
|
|
17
|
+
import { GSDError, GSD_STALE_STATE } from './errors.js';
|
|
18
|
+
import { NamespacedRegistry, componentsFromDiscovery, } from './namespaced-registry.js';
|
|
19
|
+
import { NamespacedResolver } from './namespaced-resolver.js';
|
|
20
|
+
import { analyzeCollisions, } from './collision-diagnostics.js';
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// PluginImporter Class
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Service for discovering, selecting, validating, and importing plugin components.
|
|
26
|
+
*
|
|
27
|
+
* Usage:
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const importer = new PluginImporter();
|
|
30
|
+
*
|
|
31
|
+
* // Stage 1: Discover
|
|
32
|
+
* const discovery = importer.discover(['../claude-plugins']);
|
|
33
|
+
*
|
|
34
|
+
* // Stage 2: Select
|
|
35
|
+
* const selected = importer.selectComponents(c => c.namespace === 'my-plugin');
|
|
36
|
+
*
|
|
37
|
+
* // Stage 3: Validate
|
|
38
|
+
* const validation = importer.validateImport(selected);
|
|
39
|
+
* if (!validation.canProceed) {
|
|
40
|
+
* console.error('Cannot import:', validation.diagnostics);
|
|
41
|
+
* return;
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* // Stage 4: Get manifest for persistence
|
|
45
|
+
* const manifest = importer.getImportManifest(selected);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export class PluginImporter {
|
|
49
|
+
/** The internal registry populated during discovery */
|
|
50
|
+
registry = null;
|
|
51
|
+
/** All discovered plugins from the last discovery run */
|
|
52
|
+
discoveredPlugins = [];
|
|
53
|
+
/** Last discovery result for inspection */
|
|
54
|
+
lastDiscoveryResult = null;
|
|
55
|
+
/** Last validation result for inspection */
|
|
56
|
+
lastValidationResult = null;
|
|
57
|
+
/**
|
|
58
|
+
* Stage 1: Discover plugins from marketplace paths.
|
|
59
|
+
*
|
|
60
|
+
* Calls `discoverMarketplace()` for each path and populates a `NamespacedRegistry`
|
|
61
|
+
* via `componentsFromDiscovery()`.
|
|
62
|
+
*
|
|
63
|
+
* @param marketplacePaths - Array of paths to marketplace directories
|
|
64
|
+
* @returns Discovery result with registry and summary
|
|
65
|
+
*/
|
|
66
|
+
discover(marketplacePaths) {
|
|
67
|
+
// Reset state for fresh discovery
|
|
68
|
+
this.registry = new NamespacedRegistry();
|
|
69
|
+
this.discoveredPlugins = [];
|
|
70
|
+
this.lastValidationResult = null;
|
|
71
|
+
const marketplaceResults = [];
|
|
72
|
+
let marketplacesWithErrors = 0;
|
|
73
|
+
let pluginsWithErrors = 0;
|
|
74
|
+
// Process each marketplace path
|
|
75
|
+
for (const marketplacePath of marketplacePaths) {
|
|
76
|
+
const result = discoverMarketplace(marketplacePath);
|
|
77
|
+
marketplaceResults.push(result);
|
|
78
|
+
if (result.status === 'error') {
|
|
79
|
+
marketplacesWithErrors++;
|
|
80
|
+
}
|
|
81
|
+
// Collect all plugins
|
|
82
|
+
for (const plugin of result.plugins) {
|
|
83
|
+
this.discoveredPlugins.push(plugin);
|
|
84
|
+
if (plugin.status === 'error') {
|
|
85
|
+
pluginsWithErrors++;
|
|
86
|
+
}
|
|
87
|
+
// Convert plugin inventory to components and register
|
|
88
|
+
const components = componentsFromDiscovery(plugin);
|
|
89
|
+
for (const component of components) {
|
|
90
|
+
this.registry.register(component);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Build summary
|
|
95
|
+
const summary = {
|
|
96
|
+
marketplacesProcessed: marketplacePaths.length,
|
|
97
|
+
marketplacesWithErrors,
|
|
98
|
+
totalPlugins: this.discoveredPlugins.length,
|
|
99
|
+
pluginsWithErrors,
|
|
100
|
+
totalComponents: this.registry.size,
|
|
101
|
+
};
|
|
102
|
+
this.lastDiscoveryResult = {
|
|
103
|
+
marketplaceResults,
|
|
104
|
+
plugins: this.discoveredPlugins,
|
|
105
|
+
registry: this.registry,
|
|
106
|
+
summary,
|
|
107
|
+
};
|
|
108
|
+
return this.lastDiscoveryResult;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Stage 2: Select components by filter function.
|
|
112
|
+
*
|
|
113
|
+
* Returns a filtered subset of registered components.
|
|
114
|
+
* Must be called after discover().
|
|
115
|
+
*
|
|
116
|
+
* @param componentFilter - Filter function returning true for selected components
|
|
117
|
+
* @returns Array of selected components
|
|
118
|
+
*/
|
|
119
|
+
selectComponents(componentFilter) {
|
|
120
|
+
if (!this.registry) {
|
|
121
|
+
throw new GSDError(GSD_STALE_STATE, 'Must call discover() before selectComponents()');
|
|
122
|
+
}
|
|
123
|
+
return this.registry.getAll().filter(componentFilter);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Stage 3: Validate selected components for import.
|
|
127
|
+
*
|
|
128
|
+
* Builds a `NamespacedResolver`, runs `analyzeCollisions()`, and returns
|
|
129
|
+
* `{ diagnostics, canProceed }` where `canProceed` is false if any
|
|
130
|
+
* error-severity diagnostics exist.
|
|
131
|
+
*
|
|
132
|
+
* @param selected - Array of components to validate
|
|
133
|
+
* @returns Validation result with diagnostics and proceed flag
|
|
134
|
+
*/
|
|
135
|
+
validateImport(selected) {
|
|
136
|
+
if (!this.registry) {
|
|
137
|
+
throw new GSDError(GSD_STALE_STATE, 'Must call discover() before validateImport()');
|
|
138
|
+
}
|
|
139
|
+
// Create a temporary resolver for the selected components
|
|
140
|
+
const tempRegistry = new NamespacedRegistry();
|
|
141
|
+
// Register only selected components into temp registry
|
|
142
|
+
for (const component of selected) {
|
|
143
|
+
tempRegistry.register({
|
|
144
|
+
name: component.name,
|
|
145
|
+
namespace: component.namespace,
|
|
146
|
+
type: component.type,
|
|
147
|
+
filePath: component.filePath,
|
|
148
|
+
source: component.source,
|
|
149
|
+
description: component.description,
|
|
150
|
+
metadata: component.metadata,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// Create resolver and analyze collisions
|
|
154
|
+
const resolver = new NamespacedResolver(tempRegistry);
|
|
155
|
+
const diagnostics = analyzeCollisions(tempRegistry, resolver);
|
|
156
|
+
// Count by severity
|
|
157
|
+
const errors = diagnostics.filter((d) => d.severity === 'error').length;
|
|
158
|
+
const warnings = diagnostics.filter((d) => d.severity === 'warning').length;
|
|
159
|
+
const summary = {
|
|
160
|
+
total: diagnostics.length,
|
|
161
|
+
errors,
|
|
162
|
+
warnings,
|
|
163
|
+
};
|
|
164
|
+
// canProceed is false if any error-severity diagnostics exist
|
|
165
|
+
const canProceed = errors === 0;
|
|
166
|
+
this.lastValidationResult = {
|
|
167
|
+
diagnostics,
|
|
168
|
+
canProceed,
|
|
169
|
+
summary,
|
|
170
|
+
};
|
|
171
|
+
return this.lastValidationResult;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Stage 4: Generate import manifest for selected components.
|
|
175
|
+
*
|
|
176
|
+
* Produces a serializable config structure with canonical names preserved.
|
|
177
|
+
* The manifest can be persisted to config files.
|
|
178
|
+
*
|
|
179
|
+
* @param selected - Array of components to include in manifest
|
|
180
|
+
* @returns Import manifest with all entries and metadata
|
|
181
|
+
*/
|
|
182
|
+
getImportManifest(selected) {
|
|
183
|
+
const entries = selected.map((component) => ({
|
|
184
|
+
canonicalName: component.canonicalName,
|
|
185
|
+
type: component.type,
|
|
186
|
+
name: component.name,
|
|
187
|
+
namespace: component.namespace,
|
|
188
|
+
filePath: component.filePath,
|
|
189
|
+
source: component.source,
|
|
190
|
+
description: component.description,
|
|
191
|
+
metadata: {
|
|
192
|
+
pluginVersion: component.metadata.pluginVersion,
|
|
193
|
+
pluginAuthor: component.metadata.pluginAuthor,
|
|
194
|
+
pluginHomepage: component.metadata.pluginHomepage,
|
|
195
|
+
pluginCategory: component.metadata.pluginCategory,
|
|
196
|
+
},
|
|
197
|
+
}));
|
|
198
|
+
// Count by type
|
|
199
|
+
const skills = entries.filter((e) => e.type === 'skill').length;
|
|
200
|
+
const agents = entries.filter((e) => e.type === 'agent').length;
|
|
201
|
+
// Collect unique namespaces
|
|
202
|
+
const namespaces = Array.from(new Set(entries.map((e) => e.namespace).filter((n) => n !== undefined))).sort();
|
|
203
|
+
return {
|
|
204
|
+
schemaVersion: '1.0',
|
|
205
|
+
generatedAt: new Date().toISOString(),
|
|
206
|
+
entries,
|
|
207
|
+
summary: {
|
|
208
|
+
total: entries.length,
|
|
209
|
+
skills,
|
|
210
|
+
agents,
|
|
211
|
+
namespaces,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get the internal registry for inspection.
|
|
217
|
+
* Useful for debugging or advanced filtering.
|
|
218
|
+
*
|
|
219
|
+
* @returns The registry or null if discover() hasn't been called
|
|
220
|
+
*/
|
|
221
|
+
getRegistry() {
|
|
222
|
+
return this.registry;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get all discovered plugins.
|
|
226
|
+
*
|
|
227
|
+
* @returns Array of discovered plugins
|
|
228
|
+
*/
|
|
229
|
+
getDiscoveredPlugins() {
|
|
230
|
+
return this.discoveredPlugins;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get the last validation result.
|
|
234
|
+
* Useful for re-inspecting validation without re-running.
|
|
235
|
+
*
|
|
236
|
+
* @returns Last validation result or null
|
|
237
|
+
*/
|
|
238
|
+
getLastValidation() {
|
|
239
|
+
return this.lastValidationResult;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get the last discovery result.
|
|
243
|
+
* Useful for re-inspecting discovery without re-running.
|
|
244
|
+
*
|
|
245
|
+
* @returns Last discovery result or null
|
|
246
|
+
*/
|
|
247
|
+
getLastDiscovery() {
|
|
248
|
+
return this.lastDiscoveryResult;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// ============================================================================
|
|
252
|
+
// Exports
|
|
253
|
+
// ============================================================================
|
|
254
|
+
export default PluginImporter;
|