gsd-pi 2.33.0-dev.bafba33 → 2.33.1-dev.235d83a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -18
- package/dist/cli.js +16 -0
- package/dist/resource-loader.d.ts +2 -0
- package/dist/resource-loader.js +36 -3
- package/dist/resources/extensions/ask-user-questions.js +217 -0
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +180 -0
- package/dist/resources/extensions/async-jobs/await-tool.js +90 -0
- package/dist/resources/extensions/async-jobs/cancel-job-tool.js +28 -0
- package/dist/resources/extensions/async-jobs/index.js +119 -0
- package/dist/resources/extensions/async-jobs/job-manager.js +159 -0
- package/dist/resources/extensions/aws-auth/index.js +138 -0
- package/dist/resources/extensions/bg-shell/bg-shell-command.js +182 -0
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +343 -0
- package/dist/resources/extensions/bg-shell/bg-shell-tool.js +831 -0
- package/dist/resources/extensions/bg-shell/index.js +41 -0
- package/dist/resources/extensions/bg-shell/interaction.js +160 -0
- package/dist/resources/extensions/bg-shell/output-formatter.js +245 -0
- package/dist/resources/extensions/bg-shell/overlay.js +378 -0
- package/dist/resources/extensions/bg-shell/process-manager.js +413 -0
- package/dist/resources/extensions/bg-shell/readiness-detector.js +109 -0
- package/dist/resources/extensions/bg-shell/types.js +96 -0
- package/dist/resources/extensions/bg-shell/utilities.js +50 -0
- package/dist/resources/extensions/browser-tools/capture.js +179 -0
- package/dist/resources/extensions/browser-tools/core.js +899 -0
- package/dist/resources/extensions/browser-tools/{evaluate-helpers.ts → evaluate-helpers.js} +0 -1
- package/dist/resources/extensions/browser-tools/index.js +123 -0
- package/dist/resources/extensions/browser-tools/lifecycle.js +222 -0
- package/dist/resources/extensions/browser-tools/refs.js +254 -0
- package/dist/resources/extensions/browser-tools/settle.js +173 -0
- package/dist/resources/extensions/browser-tools/state.js +126 -0
- package/dist/resources/extensions/browser-tools/tools/action-cache.js +179 -0
- package/dist/resources/extensions/browser-tools/tools/assertions.js +320 -0
- package/dist/resources/extensions/browser-tools/tools/codegen.js +242 -0
- package/dist/resources/extensions/browser-tools/tools/device.js +162 -0
- package/dist/resources/extensions/browser-tools/tools/extract.js +191 -0
- package/dist/resources/extensions/browser-tools/tools/forms.js +710 -0
- package/dist/resources/extensions/browser-tools/tools/injection-detect.js +178 -0
- package/dist/resources/extensions/browser-tools/tools/inspection.js +426 -0
- package/dist/resources/extensions/browser-tools/tools/intent.js +556 -0
- package/dist/resources/extensions/browser-tools/tools/interaction.js +776 -0
- package/dist/resources/extensions/browser-tools/tools/navigation.js +208 -0
- package/dist/resources/extensions/browser-tools/tools/network-mock.js +194 -0
- package/dist/resources/extensions/browser-tools/tools/pages.js +280 -0
- package/dist/resources/extensions/browser-tools/tools/pdf.js +74 -0
- package/dist/resources/extensions/browser-tools/tools/refs.js +485 -0
- package/dist/resources/extensions/browser-tools/tools/screenshot.js +87 -0
- package/dist/resources/extensions/browser-tools/tools/session.js +375 -0
- package/dist/resources/extensions/browser-tools/tools/state-persistence.js +180 -0
- package/dist/resources/extensions/browser-tools/tools/visual-diff.js +174 -0
- package/dist/resources/extensions/browser-tools/tools/wait.js +201 -0
- package/dist/resources/extensions/browser-tools/tools/zoom.js +90 -0
- package/dist/resources/extensions/browser-tools/utils.js +490 -0
- package/dist/resources/extensions/context7/index.js +337 -0
- package/dist/resources/extensions/get-secrets-from-user.js +492 -0
- package/dist/resources/extensions/google-search/index.js +373 -0
- package/dist/resources/extensions/gsd/activity-log.js +146 -0
- package/dist/resources/extensions/gsd/atomic-write.js +38 -0
- package/dist/resources/extensions/gsd/auto/session.js +187 -0
- package/dist/resources/extensions/gsd/auto-budget.js +30 -0
- package/dist/resources/extensions/gsd/{auto-constants.ts → auto-constants.js} +0 -1
- package/dist/resources/extensions/gsd/auto-dashboard.js +509 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +180 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +382 -0
- package/dist/resources/extensions/gsd/auto-idempotency.js +106 -0
- package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
- package/dist/resources/extensions/gsd/auto-observability.js +54 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +495 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +1121 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +550 -0
- package/dist/resources/extensions/gsd/auto-start.js +393 -0
- package/dist/resources/extensions/gsd/auto-stuck-detection.js +165 -0
- package/dist/resources/extensions/gsd/{auto-supervisor.ts → auto-supervisor.js} +29 -32
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
- package/dist/resources/extensions/gsd/auto-timers.js +181 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +30 -0
- package/dist/resources/extensions/gsd/auto-verification.js +209 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +594 -0
- package/dist/resources/extensions/gsd/auto.js +1485 -0
- package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
- package/dist/resources/extensions/gsd/captures.js +348 -0
- package/dist/resources/extensions/gsd/claude-import.js +540 -0
- package/dist/resources/extensions/gsd/collision-diagnostics.js +226 -0
- package/dist/resources/extensions/gsd/commands-bootstrap.js +223 -0
- package/dist/resources/extensions/gsd/commands-config.js +89 -0
- package/dist/resources/extensions/gsd/commands-extensions.js +259 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +310 -0
- package/dist/resources/extensions/gsd/commands-inspect.js +70 -0
- package/dist/resources/extensions/gsd/commands-logs.js +468 -0
- package/dist/resources/extensions/gsd/commands-maintenance.js +185 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +660 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +408 -0
- package/dist/resources/extensions/gsd/commands.js +1024 -0
- package/dist/resources/extensions/gsd/complexity-classifier.js +257 -0
- package/dist/resources/extensions/gsd/{constants.ts → constants.js} +0 -6
- package/dist/resources/extensions/gsd/context-budget.js +187 -0
- package/dist/resources/extensions/gsd/context-store.js +165 -0
- package/dist/resources/extensions/gsd/crash-recovery.js +110 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.js +562 -0
- package/dist/resources/extensions/gsd/db-writer.js +298 -0
- package/dist/resources/extensions/gsd/debug-logger.js +161 -0
- package/dist/resources/extensions/gsd/detection.js +373 -0
- package/dist/resources/extensions/gsd/diff-context.js +168 -0
- package/dist/resources/extensions/gsd/dispatch-guard.js +76 -0
- package/dist/resources/extensions/gsd/doctor-checks.js +563 -0
- package/dist/resources/extensions/gsd/doctor-environment.js +429 -0
- package/dist/resources/extensions/gsd/doctor-format.js +71 -0
- package/dist/resources/extensions/gsd/doctor-proactive.js +239 -0
- package/dist/resources/extensions/gsd/doctor-providers.js +292 -0
- package/dist/resources/extensions/gsd/doctor-types.js +12 -0
- package/dist/resources/extensions/gsd/doctor.js +672 -0
- package/dist/resources/extensions/gsd/error-utils.js +6 -0
- package/dist/resources/extensions/gsd/{errors.ts → errors.js} +6 -11
- package/dist/resources/extensions/gsd/exit-command.js +11 -0
- package/dist/resources/extensions/gsd/{export-html.ts → export-html.js} +482 -614
- package/dist/resources/extensions/gsd/export.js +268 -0
- package/dist/resources/extensions/gsd/file-watcher.js +76 -0
- package/dist/resources/extensions/gsd/files.js +937 -0
- package/dist/resources/extensions/gsd/forensics.js +511 -0
- package/dist/resources/extensions/gsd/{git-constants.ts → git-constants.js} +4 -5
- package/dist/resources/extensions/gsd/git-self-heal.js +113 -0
- package/dist/resources/extensions/gsd/git-service.js +460 -0
- package/dist/resources/extensions/gsd/{gitignore.ts → gitignore.js} +98 -125
- package/dist/resources/extensions/gsd/gsd-db.js +590 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
- package/dist/resources/extensions/gsd/guided-flow.js +1149 -0
- package/dist/resources/extensions/gsd/health-widget.js +141 -0
- package/dist/resources/extensions/gsd/history.js +118 -0
- package/dist/resources/extensions/gsd/index.js +1250 -0
- package/dist/resources/extensions/gsd/init-wizard.js +479 -0
- package/dist/resources/extensions/gsd/json-persistence.js +62 -0
- package/dist/resources/extensions/gsd/{jsonl-utils.ts → jsonl-utils.js} +10 -7
- package/dist/resources/extensions/gsd/key-manager.js +829 -0
- package/dist/resources/extensions/gsd/marketplace-discovery.js +356 -0
- package/dist/resources/extensions/gsd/md-importer.js +440 -0
- package/dist/resources/extensions/gsd/mechanical-completion.js +351 -0
- package/dist/resources/extensions/gsd/memory-extractor.js +295 -0
- package/dist/resources/extensions/gsd/memory-store.js +351 -0
- package/dist/resources/extensions/gsd/metrics.js +377 -0
- package/dist/resources/extensions/gsd/migrate/command.js +157 -0
- package/dist/resources/extensions/gsd/migrate/index.js +7 -0
- package/dist/resources/extensions/gsd/migrate/parser.js +268 -0
- package/dist/resources/extensions/gsd/migrate/parsers.js +477 -0
- package/dist/resources/extensions/gsd/migrate/preview.js +47 -0
- package/dist/resources/extensions/gsd/migrate/transformer.js +278 -0
- package/dist/resources/extensions/gsd/migrate/types.js +4 -0
- package/dist/resources/extensions/gsd/migrate/validator.js +41 -0
- package/dist/resources/extensions/gsd/migrate/writer.js +477 -0
- package/dist/resources/extensions/gsd/migrate-external.js +130 -0
- package/dist/resources/extensions/gsd/milestone-actions.js +111 -0
- package/dist/resources/extensions/gsd/{milestone-ids.ts → milestone-ids.js} +50 -63
- package/dist/resources/extensions/gsd/model-cost-table.js +48 -0
- package/dist/resources/extensions/gsd/model-router.js +187 -0
- package/dist/resources/extensions/gsd/namespaced-registry.js +322 -0
- package/dist/resources/extensions/gsd/namespaced-resolver.js +176 -0
- package/dist/resources/extensions/gsd/native-git-bridge.js +842 -0
- package/dist/resources/extensions/gsd/native-parser-bridge.js +156 -0
- package/dist/resources/extensions/gsd/notifications.js +58 -0
- package/dist/resources/extensions/gsd/observability-validator.js +398 -0
- package/dist/resources/extensions/gsd/parallel-eligibility.js +182 -0
- package/dist/resources/extensions/gsd/parallel-merge.js +121 -0
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +687 -0
- package/dist/resources/extensions/gsd/paths.js +414 -0
- package/dist/resources/extensions/gsd/plugin-importer.js +254 -0
- package/dist/resources/extensions/gsd/post-unit-hooks.js +433 -0
- package/dist/resources/extensions/gsd/preferences-models.js +294 -0
- package/dist/resources/extensions/gsd/preferences-skills.js +154 -0
- package/dist/resources/extensions/gsd/preferences-types.js +73 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +607 -0
- package/dist/resources/extensions/gsd/preferences.js +325 -0
- package/dist/resources/extensions/gsd/progress-score.js +197 -0
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +150 -0
- package/dist/resources/extensions/gsd/prompt-compressor.js +393 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +119 -0
- package/dist/resources/extensions/gsd/prompt-ordering.js +170 -0
- package/dist/resources/extensions/gsd/provider-error-pause.js +60 -0
- package/dist/resources/extensions/gsd/queue-order.js +178 -0
- package/dist/resources/extensions/gsd/queue-reorder-ui.js +234 -0
- package/dist/resources/extensions/gsd/quick.js +230 -0
- package/dist/resources/extensions/gsd/repo-identity.js +187 -0
- package/dist/resources/extensions/gsd/{reports.ts → reports.js} +146 -241
- package/dist/resources/extensions/gsd/{resource-version.ts → resource-version.js} +50 -53
- package/dist/resources/extensions/gsd/roadmap-slices.js +130 -0
- package/dist/resources/extensions/gsd/routing-history.js +210 -0
- package/dist/resources/extensions/gsd/safe-fs.js +52 -0
- package/dist/resources/extensions/gsd/semantic-chunker.js +254 -0
- package/dist/resources/extensions/gsd/session-forensics.js +427 -0
- package/dist/resources/extensions/gsd/session-lock.js +376 -0
- package/dist/resources/extensions/gsd/session-status-io.js +134 -0
- package/dist/resources/extensions/gsd/skill-discovery.js +121 -0
- package/dist/resources/extensions/gsd/skill-health.js +324 -0
- package/dist/resources/extensions/gsd/{skill-telemetry.ts → skill-telemetry.js} +58 -74
- package/dist/resources/extensions/gsd/state.js +653 -0
- package/dist/resources/extensions/gsd/structured-data-formatter.js +97 -0
- package/dist/resources/extensions/gsd/summary-distiller.js +212 -0
- package/dist/resources/extensions/gsd/token-counter.js +54 -0
- package/dist/resources/extensions/gsd/triage-resolution.js +217 -0
- package/dist/resources/extensions/gsd/triage-ui.js +125 -0
- package/dist/resources/extensions/gsd/types.js +4 -0
- package/dist/resources/extensions/gsd/undo.js +210 -0
- package/dist/resources/extensions/gsd/unit-id.js +7 -0
- package/dist/resources/extensions/gsd/unit-runtime.js +130 -0
- package/dist/resources/extensions/gsd/validate-directory.js +143 -0
- package/dist/resources/extensions/gsd/verification-evidence.js +123 -0
- package/dist/resources/extensions/gsd/verification-gate.js +543 -0
- package/dist/resources/extensions/gsd/visualizer-data.js +612 -0
- package/dist/resources/extensions/gsd/visualizer-overlay.js +501 -0
- package/dist/resources/extensions/gsd/visualizer-views.js +893 -0
- package/dist/resources/extensions/gsd/workflow-templates.js +188 -0
- package/dist/resources/extensions/gsd/workspace-index.js +139 -0
- package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +40 -0
- package/dist/resources/extensions/gsd/worktree-command.js +676 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +359 -0
- package/dist/resources/extensions/gsd/worktree.js +236 -0
- package/dist/resources/extensions/mac-tools/index.js +768 -0
- package/dist/resources/extensions/mcp-client/index.js +363 -0
- package/dist/resources/extensions/package.json +3 -0
- package/dist/resources/extensions/remote-questions/config.js +70 -0
- package/dist/resources/extensions/remote-questions/discord-adapter.js +134 -0
- package/dist/resources/extensions/remote-questions/format.js +234 -0
- package/dist/resources/extensions/remote-questions/http-client.js +43 -0
- package/dist/resources/extensions/remote-questions/manager.js +156 -0
- package/dist/resources/extensions/remote-questions/{mod.ts → mod.js} +1 -10
- package/dist/resources/extensions/remote-questions/notify.js +89 -0
- package/dist/resources/extensions/remote-questions/remote-command.js +453 -0
- package/dist/resources/extensions/remote-questions/slack-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/status.js +25 -0
- package/dist/resources/extensions/remote-questions/store.js +70 -0
- package/dist/resources/extensions/remote-questions/telegram-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/types.js +5 -0
- package/dist/resources/extensions/search-the-web/cache.js +74 -0
- package/dist/resources/extensions/search-the-web/command-search-provider.js +79 -0
- package/dist/resources/extensions/search-the-web/format.js +161 -0
- package/dist/resources/extensions/search-the-web/http.js +178 -0
- package/dist/resources/extensions/search-the-web/index.js +41 -0
- package/dist/resources/extensions/search-the-web/native-search.js +166 -0
- package/dist/resources/extensions/search-the-web/provider.js +143 -0
- package/dist/resources/extensions/search-the-web/tavily.js +82 -0
- package/dist/resources/extensions/search-the-web/tool-fetch-page.js +452 -0
- package/dist/resources/extensions/search-the-web/tool-llm-context.js +455 -0
- package/dist/resources/extensions/search-the-web/tool-search.js +482 -0
- package/dist/resources/extensions/search-the-web/url-utils.js +121 -0
- package/dist/resources/extensions/shared/confirm-ui.js +96 -0
- package/dist/resources/extensions/shared/{format-utils.ts → format-utils.js} +85 -91
- package/dist/resources/extensions/shared/frontmatter.js +109 -0
- package/dist/resources/extensions/shared/interview-ui.js +569 -0
- package/dist/resources/extensions/shared/{mod.ts → mod.js} +2 -24
- package/dist/resources/extensions/shared/next-action-ui.js +168 -0
- package/dist/resources/extensions/shared/{path-display.ts → path-display.js} +2 -3
- package/dist/resources/extensions/shared/sanitize.js +17 -0
- package/dist/resources/extensions/shared/terminal.js +21 -0
- package/dist/resources/extensions/shared/ui.js +245 -0
- package/dist/resources/extensions/shared/wizard-ui.js +478 -0
- package/dist/resources/extensions/slash-commands/audit.js +72 -0
- package/dist/resources/extensions/slash-commands/clear.js +8 -0
- package/dist/resources/extensions/slash-commands/create-extension.js +264 -0
- package/dist/resources/extensions/slash-commands/create-slash-command.js +208 -0
- package/dist/resources/extensions/slash-commands/index.js +10 -0
- package/dist/resources/extensions/subagent/agents.js +103 -0
- package/dist/resources/extensions/subagent/index.js +905 -0
- package/dist/resources/extensions/subagent/isolation.js +384 -0
- package/dist/resources/extensions/subagent/worker-registry.js +73 -0
- package/dist/resources/extensions/ttsr/index.js +144 -0
- package/dist/resources/extensions/ttsr/rule-loader.js +70 -0
- package/dist/resources/extensions/ttsr/ttsr-manager.js +380 -0
- package/dist/resources/extensions/universal-config/discovery.js +94 -0
- package/dist/resources/extensions/universal-config/format.js +178 -0
- package/dist/resources/extensions/universal-config/index.js +99 -0
- package/dist/resources/extensions/universal-config/scanners.js +574 -0
- package/dist/resources/extensions/universal-config/tools.js +57 -0
- package/dist/resources/extensions/universal-config/types.js +8 -0
- package/dist/resources/extensions/voice/index.js +247 -0
- package/dist/startup-timings.d.ts +2 -0
- package/dist/startup-timings.js +22 -0
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
- package/packages/pi-coding-agent/src/index.ts +1 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/bg-shell/index.ts +41 -46
- package/src/resources/extensions/browser-tools/index.ts +156 -67
- package/src/resources/extensions/gsd/auto-supervisor.ts +10 -5
- package/src/resources/extensions/gsd/auto-verification.ts +20 -2
- package/src/resources/extensions/gsd/auto-worktree.ts +136 -1
- package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
- package/src/resources/extensions/gsd/commands.ts +53 -33
- package/src/resources/extensions/gsd/git-service.ts +24 -11
- package/src/resources/extensions/gsd/index.ts +106 -34
- package/src/resources/extensions/gsd/quick.ts +52 -3
- package/src/resources/extensions/gsd/repo-identity.ts +56 -22
- package/src/resources/extensions/gsd/session-lock.ts +80 -16
- package/src/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +691 -0
- package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +317 -0
- package/src/resources/extensions/gsd/tests/git-service.test.ts +16 -7
- package/src/resources/extensions/gsd/tests/loop-regression.test.ts +40 -5
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +358 -0
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +216 -0
- package/src/resources/extensions/gsd/tests/session-lock.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +206 -0
- package/src/resources/extensions/gsd/types.ts +4 -0
- package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
- package/src/resources/extensions/gsd/verification-gate.ts +23 -2
- package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
- package/src/resources/extensions/gsd/worktree-command.ts +17 -11
- package/src/resources/extensions/package.json +3 -0
- package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
- package/src/resources/extensions/search-the-web/index.ts +35 -52
- package/src/resources/extensions/search-the-web/tavily.ts +1 -1
- package/dist/resources/extensions/ask-user-questions.ts +0 -290
- package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
- package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
- package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
- package/dist/resources/extensions/async-jobs/index.ts +0 -141
- package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
- package/dist/resources/extensions/aws-auth/index.ts +0 -144
- package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
- package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
- package/dist/resources/extensions/bg-shell/index.ts +0 -59
- package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
- package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
- package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
- package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
- package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
- package/dist/resources/extensions/bg-shell/types.ts +0 -303
- package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
- package/dist/resources/extensions/browser-tools/capture.ts +0 -199
- package/dist/resources/extensions/browser-tools/core.ts +0 -1196
- package/dist/resources/extensions/browser-tools/index.ts +0 -71
- package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
- package/dist/resources/extensions/browser-tools/refs.ts +0 -264
- package/dist/resources/extensions/browser-tools/settle.ts +0 -197
- package/dist/resources/extensions/browser-tools/state.ts +0 -408
- package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
- package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
- package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
- package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
- package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
- package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
- package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
- package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
- package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
- package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
- package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
- package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
- package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
- package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
- package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
- package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
- package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
- package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
- package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
- package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
- package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
- package/dist/resources/extensions/browser-tools/utils.ts +0 -660
- package/dist/resources/extensions/context7/index.ts +0 -428
- package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
- package/dist/resources/extensions/google-search/index.ts +0 -466
- package/dist/resources/extensions/gsd/activity-log.ts +0 -162
- package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
- package/dist/resources/extensions/gsd/auto/session.ts +0 -236
- package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
- package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
- package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
- package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
- package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
- package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
- package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
- package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
- package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
- package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
- package/dist/resources/extensions/gsd/auto-start.ts +0 -483
- package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
- package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
- package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
- package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
- package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
- package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
- package/dist/resources/extensions/gsd/auto-worktree.ts +0 -524
- package/dist/resources/extensions/gsd/auto.ts +0 -1834
- package/dist/resources/extensions/gsd/captures.ts +0 -427
- package/dist/resources/extensions/gsd/claude-import.ts +0 -656
- package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
- package/dist/resources/extensions/gsd/commands-config.ts +0 -102
- package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
- package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
- package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
- package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
- package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
- package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
- package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
- package/dist/resources/extensions/gsd/commands.ts +0 -1137
- package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
- package/dist/resources/extensions/gsd/context-budget.ts +0 -266
- package/dist/resources/extensions/gsd/context-store.ts +0 -195
- package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
- package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
- package/dist/resources/extensions/gsd/db-writer.ts +0 -360
- package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
- package/dist/resources/extensions/gsd/detection.ts +0 -470
- package/dist/resources/extensions/gsd/diff-context.ts +0 -214
- package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
- package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
- package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
- package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
- package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
- package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
- package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
- package/dist/resources/extensions/gsd/doctor.ts +0 -722
- package/dist/resources/extensions/gsd/error-utils.ts +0 -6
- package/dist/resources/extensions/gsd/exit-command.ts +0 -18
- package/dist/resources/extensions/gsd/export.ts +0 -317
- package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
- package/dist/resources/extensions/gsd/files.ts +0 -1058
- package/dist/resources/extensions/gsd/forensics.ts +0 -629
- package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
- package/dist/resources/extensions/gsd/git-service.ts +0 -580
- package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
- package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
- package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
- package/dist/resources/extensions/gsd/health-widget.ts +0 -167
- package/dist/resources/extensions/gsd/history.ts +0 -143
- package/dist/resources/extensions/gsd/index.ts +0 -1390
- package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
- package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
- package/dist/resources/extensions/gsd/key-manager.ts +0 -996
- package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
- package/dist/resources/extensions/gsd/md-importer.ts +0 -527
- package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
- package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
- package/dist/resources/extensions/gsd/memory-store.ts +0 -441
- package/dist/resources/extensions/gsd/metrics.ts +0 -532
- package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
- package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
- package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
- package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
- package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
- package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
- package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
- package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
- package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
- package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
- package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
- package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
- package/dist/resources/extensions/gsd/model-router.ts +0 -256
- package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
- package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
- package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
- package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
- package/dist/resources/extensions/gsd/notifications.ts +0 -87
- package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
- package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
- package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
- package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
- package/dist/resources/extensions/gsd/paths.ts +0 -449
- package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
- package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
- package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
- package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
- package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
- package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
- package/dist/resources/extensions/gsd/preferences.ts +0 -416
- package/dist/resources/extensions/gsd/progress-score.ts +0 -273
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
- package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
- package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
- package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
- package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
- package/dist/resources/extensions/gsd/queue-order.ts +0 -230
- package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
- package/dist/resources/extensions/gsd/quick.ts +0 -212
- package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
- package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
- package/dist/resources/extensions/gsd/routing-history.ts +0 -286
- package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
- package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
- package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
- package/dist/resources/extensions/gsd/session-lock.ts +0 -362
- package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
- package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
- package/dist/resources/extensions/gsd/skill-health.ts +0 -417
- package/dist/resources/extensions/gsd/state.ts +0 -727
- package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
- package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
- package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
- package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
- package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
- package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
- package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
- package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
- package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
- package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
- package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
- package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
- package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
- package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
- package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
- package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
- package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
- package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
- package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
- package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
- package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
- package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
- package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
- package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
- package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
- package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
- package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
- package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
- package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
- package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
- package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
- package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
- package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
- package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
- package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
- package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
- package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
- package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
- package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
- package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
- package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
- package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1172
- package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
- package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
- package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
- package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
- package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
- package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
- package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
- package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
- package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
- package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
- package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
- package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
- package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -839
- package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
- package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
- package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
- package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
- package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
- package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
- package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
- package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
- package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
- package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
- package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
- package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
- package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
- package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
- package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
- package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
- package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
- package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
- package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
- package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
- package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
- package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
- package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
- package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
- package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
- package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
- package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
- package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
- package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
- package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
- package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
- package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
- package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
- package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
- package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
- package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
- package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
- package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
- package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
- package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
- package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
- package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
- package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
- package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
- package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
- package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
- package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
- package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
- package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
- package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
- package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -315
- package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
- package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
- package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
- package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
- package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
- package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
- package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
- package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
- package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
- package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
- package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
- package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
- package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
- package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
- package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
- package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
- package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
- package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
- package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
- package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
- package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
- package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
- package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
- package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
- package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
- package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
- package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
- package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
- package/dist/resources/extensions/gsd/token-counter.ts +0 -65
- package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
- package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
- package/dist/resources/extensions/gsd/types.ts +0 -425
- package/dist/resources/extensions/gsd/undo.ts +0 -223
- package/dist/resources/extensions/gsd/unit-id.ts +0 -14
- package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
- package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
- package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
- package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
- package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
- package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
- package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
- package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
- package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
- package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
- package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
- package/dist/resources/extensions/gsd/worktree.ts +0 -257
- package/dist/resources/extensions/mac-tools/index.ts +0 -852
- package/dist/resources/extensions/mcp-client/index.ts +0 -459
- package/dist/resources/extensions/mcporter/extension-manifest.json +0 -12
- package/dist/resources/extensions/remote-questions/config.ts +0 -83
- package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
- package/dist/resources/extensions/remote-questions/format.ts +0 -315
- package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
- package/dist/resources/extensions/remote-questions/manager.ts +0 -184
- package/dist/resources/extensions/remote-questions/notify.ts +0 -90
- package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
- package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
- package/dist/resources/extensions/remote-questions/status.ts +0 -31
- package/dist/resources/extensions/remote-questions/store.ts +0 -81
- package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
- package/dist/resources/extensions/remote-questions/types.ts +0 -102
- package/dist/resources/extensions/search-the-web/cache.ts +0 -78
- package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
- package/dist/resources/extensions/search-the-web/format.ts +0 -258
- package/dist/resources/extensions/search-the-web/http.ts +0 -238
- package/dist/resources/extensions/search-the-web/index.ts +0 -65
- package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
- package/dist/resources/extensions/search-the-web/provider.ts +0 -148
- package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
- package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
- package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
- package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
- package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
- package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
- package/dist/resources/extensions/shared/frontmatter.ts +0 -117
- package/dist/resources/extensions/shared/interview-ui.ts +0 -613
- package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
- package/dist/resources/extensions/shared/sanitize.ts +0 -19
- package/dist/resources/extensions/shared/terminal.ts +0 -23
- package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
- package/dist/resources/extensions/shared/ui.ts +0 -400
- package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
- package/dist/resources/extensions/slash-commands/audit.ts +0 -88
- package/dist/resources/extensions/slash-commands/clear.ts +0 -10
- package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
- package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
- package/dist/resources/extensions/slash-commands/index.ts +0 -12
- package/dist/resources/extensions/subagent/agents.ts +0 -126
- package/dist/resources/extensions/subagent/index.ts +0 -1121
- package/dist/resources/extensions/subagent/isolation.ts +0 -501
- package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
- package/dist/resources/extensions/ttsr/index.ts +0 -168
- package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
- package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
- package/dist/resources/extensions/universal-config/discovery.ts +0 -104
- package/dist/resources/extensions/universal-config/format.ts +0 -191
- package/dist/resources/extensions/universal-config/index.ts +0 -120
- package/dist/resources/extensions/universal-config/scanners.ts +0 -642
- package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
- package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
- package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
- package/dist/resources/extensions/universal-config/tools.ts +0 -60
- package/dist/resources/extensions/universal-config/types.ts +0 -135
- package/dist/resources/extensions/voice/index.ts +0 -272
- package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
- package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
- package/src/resources/extensions/mcporter/extension-manifest.json +0 -12
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* auto-skip-loop.test.ts — Tests for the consecutive-skip loop breaker.
|
|
3
|
-
*
|
|
4
|
-
* Regression for #728: auto-mode infinite skip loop on previously completed
|
|
5
|
-
* plan-slice units when deriveState keeps returning the same unit.
|
|
6
|
-
*
|
|
7
|
-
* The skip paths in dispatchNextUnit track consecutive skips per unit via
|
|
8
|
-
* unitConsecutiveSkips. When the same unit is skipped > MAX_CONSECUTIVE_SKIPS
|
|
9
|
-
* times without a real dispatch in between, the completion record is evicted
|
|
10
|
-
* so deriveState can reconcile.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
14
|
-
import { join } from "node:path";
|
|
15
|
-
import { tmpdir } from "node:os";
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
_getUnitConsecutiveSkips,
|
|
19
|
-
_resetUnitConsecutiveSkips,
|
|
20
|
-
} from "../auto.ts";
|
|
21
|
-
import { MAX_CONSECUTIVE_SKIPS } from "../auto/session.ts";
|
|
22
|
-
import { persistCompletedKey, removePersistedKey, loadPersistedKeys } from "../auto-recovery.ts";
|
|
23
|
-
import { createTestContext } from "./test-helpers.ts";
|
|
24
|
-
|
|
25
|
-
const { assertEq, assertTrue, report } = createTestContext();
|
|
26
|
-
|
|
27
|
-
function makeTmpBase(): string {
|
|
28
|
-
const dir = mkdtempSync(join(tmpdir(), "gsd-skip-loop-test-"));
|
|
29
|
-
mkdirSync(join(dir, ".gsd"), { recursive: true });
|
|
30
|
-
return dir;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
async function main(): Promise<void> {
|
|
34
|
-
// ─── Counter starts at zero ────────────────────────────────────────────
|
|
35
|
-
console.log("\n=== skip loop counter: initial state ===");
|
|
36
|
-
{
|
|
37
|
-
_resetUnitConsecutiveSkips();
|
|
38
|
-
const map = _getUnitConsecutiveSkips();
|
|
39
|
-
assertEq(map.size, 0, "counter map starts empty after reset");
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// ─── Counter increments correctly ────────────────────────────────────
|
|
43
|
-
console.log("\n=== skip loop counter: increments on repeated calls ===");
|
|
44
|
-
{
|
|
45
|
-
_resetUnitConsecutiveSkips();
|
|
46
|
-
const map = _getUnitConsecutiveSkips();
|
|
47
|
-
const key = "plan-slice/M001/S04";
|
|
48
|
-
|
|
49
|
-
for (let i = 1; i <= MAX_CONSECUTIVE_SKIPS; i++) {
|
|
50
|
-
const prev = map.get(key) ?? 0;
|
|
51
|
-
map.set(key, prev + 1);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
assertEq(map.get(key), MAX_CONSECUTIVE_SKIPS, `counter reaches MAX_CONSECUTIVE_SKIPS (${MAX_CONSECUTIVE_SKIPS})`);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// ─── Threshold constant is sane ──────────────────────────────────────
|
|
58
|
-
console.log("\n=== skip loop counter: threshold is reasonable ===");
|
|
59
|
-
{
|
|
60
|
-
assertTrue(MAX_CONSECUTIVE_SKIPS >= 3, "threshold allows a few legitimate skips");
|
|
61
|
-
assertTrue(MAX_CONSECUTIVE_SKIPS <= 10, "threshold catches loops quickly");
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// ─── Reset clears all keys ────────────────────────────────────────────
|
|
65
|
-
console.log("\n=== skip loop counter: reset clears all keys ===");
|
|
66
|
-
{
|
|
67
|
-
_resetUnitConsecutiveSkips();
|
|
68
|
-
const map = _getUnitConsecutiveSkips();
|
|
69
|
-
map.set("plan-slice/M001/S01", 2);
|
|
70
|
-
map.set("plan-slice/M001/S02", 1);
|
|
71
|
-
assertEq(map.size, 2, "map has 2 entries before reset");
|
|
72
|
-
|
|
73
|
-
_resetUnitConsecutiveSkips();
|
|
74
|
-
assertEq(_getUnitConsecutiveSkips().size, 0, "map empty after reset");
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// ─── Eviction path: persistCompletedKey + removePersistedKey round-trip
|
|
78
|
-
// (simulates what the loop-breaker does) ───────────────────────────
|
|
79
|
-
console.log("\n=== skip loop counter: eviction removes persisted key ===");
|
|
80
|
-
{
|
|
81
|
-
_resetUnitConsecutiveSkips();
|
|
82
|
-
const base = makeTmpBase();
|
|
83
|
-
try {
|
|
84
|
-
const key = "plan-slice/M001/S04";
|
|
85
|
-
const keySet = new Set<string>();
|
|
86
|
-
|
|
87
|
-
persistCompletedKey(base, key);
|
|
88
|
-
loadPersistedKeys(base, keySet);
|
|
89
|
-
assertTrue(keySet.has(key), "key persisted before eviction");
|
|
90
|
-
|
|
91
|
-
// Simulate loop-breaker eviction
|
|
92
|
-
keySet.delete(key);
|
|
93
|
-
removePersistedKey(base, key);
|
|
94
|
-
const keySet2 = new Set<string>();
|
|
95
|
-
loadPersistedKeys(base, keySet2);
|
|
96
|
-
assertTrue(!keySet2.has(key), "key absent after eviction");
|
|
97
|
-
} finally {
|
|
98
|
-
rmSync(base, { recursive: true, force: true });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// ─── Counter resets per-key, not globally ─────────────────────────────
|
|
103
|
-
console.log("\n=== skip loop counter: per-key isolation ===");
|
|
104
|
-
{
|
|
105
|
-
_resetUnitConsecutiveSkips();
|
|
106
|
-
const map = _getUnitConsecutiveSkips();
|
|
107
|
-
map.set("plan-slice/M001/S04", MAX_CONSECUTIVE_SKIPS + 1);
|
|
108
|
-
map.set("plan-slice/M001/S05", 1);
|
|
109
|
-
|
|
110
|
-
// Deleting S04 (eviction) should not affect S05
|
|
111
|
-
map.delete("plan-slice/M001/S04");
|
|
112
|
-
assertTrue(!map.has("plan-slice/M001/S04"), "S04 evicted");
|
|
113
|
-
assertEq(map.get("plan-slice/M001/S05"), 1, "S05 counter unaffected");
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
_resetUnitConsecutiveSkips();
|
|
117
|
-
report();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
main().catch((err) => {
|
|
121
|
-
console.error(err);
|
|
122
|
-
process.exit(1);
|
|
123
|
-
});
|
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* auto-worktree-milestone-merge.test.ts — Integration tests for mergeMilestoneToMain.
|
|
3
|
-
*
|
|
4
|
-
* Covers: squash-merge topology (one commit on main), rich commit message with
|
|
5
|
-
* slice titles, worktree cleanup, nothing-to-commit edge case, auto-push with
|
|
6
|
-
* bare remote. All tests use real git operations in temp repos.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync, existsSync, realpathSync, readFileSync } from "node:fs";
|
|
10
|
-
import { join } from "node:path";
|
|
11
|
-
import { tmpdir } from "node:os";
|
|
12
|
-
import { execSync } from "node:child_process";
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
createAutoWorktree,
|
|
16
|
-
mergeMilestoneToMain,
|
|
17
|
-
getAutoWorktreeOriginalBase,
|
|
18
|
-
} from "../auto-worktree.ts";
|
|
19
|
-
import { getSliceBranchName } from "../worktree.ts";
|
|
20
|
-
|
|
21
|
-
import { createTestContext } from "./test-helpers.ts";
|
|
22
|
-
|
|
23
|
-
const { assertEq, assertTrue, assertMatch, report } = createTestContext();
|
|
24
|
-
|
|
25
|
-
function run(cmd: string, cwd: string): string {
|
|
26
|
-
return execSync(cmd, { cwd, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function createTempRepo(): string {
|
|
30
|
-
const dir = realpathSync(mkdtempSync(join(tmpdir(), "wt-ms-merge-test-")));
|
|
31
|
-
run("git init", dir);
|
|
32
|
-
run("git config user.email test@test.com", dir);
|
|
33
|
-
run("git config user.name Test", dir);
|
|
34
|
-
writeFileSync(join(dir, "README.md"), "# test\n");
|
|
35
|
-
// Mirror production: GSD runtime dirs are gitignored so autoCommitDirtyState
|
|
36
|
-
// doesn't pick up the worktrees directory as dirty state (#1127 fix).
|
|
37
|
-
writeFileSync(join(dir, ".gitignore"), ".gsd/worktrees/\n");
|
|
38
|
-
mkdirSync(join(dir, ".gsd"), { recursive: true });
|
|
39
|
-
writeFileSync(join(dir, ".gsd", "STATE.md"), "# State\n");
|
|
40
|
-
run("git add .", dir);
|
|
41
|
-
run("git commit -m init", dir);
|
|
42
|
-
run("git branch -M main", dir);
|
|
43
|
-
return dir;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/** Minimal roadmap content for mergeMilestoneToMain. */
|
|
47
|
-
function makeRoadmap(milestoneId: string, title: string, slices: Array<{ id: string; title: string }>): string {
|
|
48
|
-
const sliceLines = slices.map(s => `- [x] **${s.id}: ${s.title}**`).join("\n");
|
|
49
|
-
return `# ${milestoneId}: ${title}\n\n## Slices\n${sliceLines}\n`;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/** Set up a slice branch on the worktree, add commits, merge it --no-ff to milestone. */
|
|
53
|
-
function addSliceToMilestone(
|
|
54
|
-
repo: string,
|
|
55
|
-
wtPath: string,
|
|
56
|
-
milestoneId: string,
|
|
57
|
-
sliceId: string,
|
|
58
|
-
sliceTitle: string,
|
|
59
|
-
commits: Array<{ file: string; content: string; message: string }>,
|
|
60
|
-
): void {
|
|
61
|
-
// Detect worktree name for branch naming
|
|
62
|
-
const normalizedPath = wtPath.replaceAll("\\", "/");
|
|
63
|
-
const marker = "/.gsd/worktrees/";
|
|
64
|
-
const idx = normalizedPath.indexOf(marker);
|
|
65
|
-
const worktreeName = idx !== -1 ? normalizedPath.slice(idx + marker.length).split("/")[0] : null;
|
|
66
|
-
|
|
67
|
-
const sliceBranch = getSliceBranchName(milestoneId, sliceId, worktreeName);
|
|
68
|
-
|
|
69
|
-
run(`git checkout -b ${sliceBranch}`, wtPath);
|
|
70
|
-
for (const c of commits) {
|
|
71
|
-
writeFileSync(join(wtPath, c.file), c.content);
|
|
72
|
-
run("git add .", wtPath);
|
|
73
|
-
run(`git commit -m "${c.message}"`, wtPath);
|
|
74
|
-
}
|
|
75
|
-
run(`git checkout milestone/${milestoneId}`, wtPath);
|
|
76
|
-
run(`git merge --no-ff ${sliceBranch} -m "feat(${milestoneId}/${sliceId}): ${sliceTitle}"`, wtPath);
|
|
77
|
-
// Clean up the slice branch
|
|
78
|
-
run(`git branch -d ${sliceBranch}`, wtPath);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async function main(): Promise<void> {
|
|
82
|
-
const savedCwd = process.cwd();
|
|
83
|
-
const tempDirs: string[] = [];
|
|
84
|
-
|
|
85
|
-
function freshRepo(): string {
|
|
86
|
-
const d = createTempRepo();
|
|
87
|
-
tempDirs.push(d);
|
|
88
|
-
return d;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
// ─── Test 1: Basic squash merge — one commit on main ───────────────
|
|
93
|
-
console.log("\n=== basic squash merge — one commit on main ===");
|
|
94
|
-
{
|
|
95
|
-
const repo = freshRepo();
|
|
96
|
-
const wtPath = createAutoWorktree(repo, "M010");
|
|
97
|
-
|
|
98
|
-
// Add two slices with multiple commits each
|
|
99
|
-
addSliceToMilestone(repo, wtPath, "M010", "S01", "Auth module", [
|
|
100
|
-
{ file: "auth.ts", content: "export const auth = true;\n", message: "add auth" },
|
|
101
|
-
{ file: "auth-utils.ts", content: "export const hash = () => {};\n", message: "add auth utils" },
|
|
102
|
-
]);
|
|
103
|
-
addSliceToMilestone(repo, wtPath, "M010", "S02", "User dashboard", [
|
|
104
|
-
{ file: "dashboard.ts", content: "export const dash = true;\n", message: "add dashboard" },
|
|
105
|
-
{ file: "widgets.ts", content: "export const widgets = [];\n", message: "add widgets" },
|
|
106
|
-
]);
|
|
107
|
-
|
|
108
|
-
const roadmap = makeRoadmap("M010", "User management", [
|
|
109
|
-
{ id: "S01", title: "Auth module" },
|
|
110
|
-
{ id: "S02", title: "User dashboard" },
|
|
111
|
-
]);
|
|
112
|
-
|
|
113
|
-
const mainLogBefore = run("git log --oneline main", repo);
|
|
114
|
-
const mainCommitCountBefore = mainLogBefore.split("\n").length;
|
|
115
|
-
|
|
116
|
-
const result = mergeMilestoneToMain(repo, "M010", roadmap);
|
|
117
|
-
|
|
118
|
-
// Exactly one new commit on main
|
|
119
|
-
const mainLog = run("git log --oneline main", repo);
|
|
120
|
-
const mainCommitCountAfter = mainLog.split("\n").length;
|
|
121
|
-
assertEq(mainCommitCountAfter, mainCommitCountBefore + 1, "exactly one new commit on main");
|
|
122
|
-
|
|
123
|
-
// Milestone branch deleted
|
|
124
|
-
const branches = run("git branch", repo);
|
|
125
|
-
assertTrue(!branches.includes("milestone/M010"), "milestone branch deleted");
|
|
126
|
-
|
|
127
|
-
// Worktree directory removed
|
|
128
|
-
const worktreeDir = join(repo, ".gsd", "worktrees", "M010");
|
|
129
|
-
assertTrue(!existsSync(worktreeDir), "worktree directory removed");
|
|
130
|
-
|
|
131
|
-
// Module state cleared
|
|
132
|
-
assertEq(getAutoWorktreeOriginalBase(), null, "originalBase cleared after merge");
|
|
133
|
-
|
|
134
|
-
// Files from both slices present on main
|
|
135
|
-
assertTrue(existsSync(join(repo, "auth.ts")), "auth.ts on main");
|
|
136
|
-
assertTrue(existsSync(join(repo, "dashboard.ts")), "dashboard.ts on main");
|
|
137
|
-
assertTrue(existsSync(join(repo, "widgets.ts")), "widgets.ts on main");
|
|
138
|
-
|
|
139
|
-
// Result shape
|
|
140
|
-
assertTrue(result.commitMessage.length > 0, "commitMessage returned");
|
|
141
|
-
assertTrue(typeof result.pushed === "boolean", "pushed is boolean");
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// ─── Test 2: Rich commit message format ────────────────────────────
|
|
145
|
-
console.log("\n=== rich commit message format ===");
|
|
146
|
-
{
|
|
147
|
-
const repo = freshRepo();
|
|
148
|
-
const wtPath = createAutoWorktree(repo, "M020");
|
|
149
|
-
|
|
150
|
-
addSliceToMilestone(repo, wtPath, "M020", "S01", "Core API", [
|
|
151
|
-
{ file: "api.ts", content: "export const api = true;\n", message: "add api" },
|
|
152
|
-
]);
|
|
153
|
-
addSliceToMilestone(repo, wtPath, "M020", "S02", "Error handling", [
|
|
154
|
-
{ file: "errors.ts", content: "export class AppError {}\n", message: "add errors" },
|
|
155
|
-
]);
|
|
156
|
-
addSliceToMilestone(repo, wtPath, "M020", "S03", "Logging infra", [
|
|
157
|
-
{ file: "logger.ts", content: "export const log = () => {};\n", message: "add logger" },
|
|
158
|
-
]);
|
|
159
|
-
|
|
160
|
-
const roadmap = makeRoadmap("M020", "Backend foundation", [
|
|
161
|
-
{ id: "S01", title: "Core API" },
|
|
162
|
-
{ id: "S02", title: "Error handling" },
|
|
163
|
-
{ id: "S03", title: "Logging infra" },
|
|
164
|
-
]);
|
|
165
|
-
|
|
166
|
-
const result = mergeMilestoneToMain(repo, "M020", roadmap);
|
|
167
|
-
|
|
168
|
-
// Subject line: conventional commit format
|
|
169
|
-
assertMatch(result.commitMessage, /^feat\(M020\):/, "subject has conventional commit prefix");
|
|
170
|
-
assertTrue(result.commitMessage.includes("Backend foundation"), "subject includes milestone title");
|
|
171
|
-
|
|
172
|
-
// Body: slice listing
|
|
173
|
-
assertTrue(result.commitMessage.includes("- S01: Core API"), "body lists S01");
|
|
174
|
-
assertTrue(result.commitMessage.includes("- S02: Error handling"), "body lists S02");
|
|
175
|
-
assertTrue(result.commitMessage.includes("- S03: Logging infra"), "body lists S03");
|
|
176
|
-
|
|
177
|
-
// Branch metadata
|
|
178
|
-
assertTrue(result.commitMessage.includes("Branch: milestone/M020"), "body has branch metadata");
|
|
179
|
-
|
|
180
|
-
// Verify the actual git commit message matches
|
|
181
|
-
const gitMsg = run("git log -1 --format=%B main", repo).trim();
|
|
182
|
-
assertMatch(gitMsg, /^feat\(M020\):/, "git commit message starts with feat(M020):");
|
|
183
|
-
assertTrue(gitMsg.includes("- S01: Core API"), "git commit body has S01");
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// ─── Test 3: Nothing to commit — no changes ────────────────────────
|
|
187
|
-
console.log("\n=== nothing to commit — no changes ===");
|
|
188
|
-
{
|
|
189
|
-
const repo = freshRepo();
|
|
190
|
-
const wtPath = createAutoWorktree(repo, "M030");
|
|
191
|
-
|
|
192
|
-
// Don't add any slices/changes — milestone branch is identical to main
|
|
193
|
-
const roadmap = makeRoadmap("M030", "Empty milestone", []);
|
|
194
|
-
|
|
195
|
-
// Should complete without throwing
|
|
196
|
-
let threw = false;
|
|
197
|
-
try {
|
|
198
|
-
const result = mergeMilestoneToMain(repo, "M030", roadmap);
|
|
199
|
-
assertTrue(typeof result.pushed === "boolean", "returns result even with nothing to commit");
|
|
200
|
-
} catch {
|
|
201
|
-
threw = true;
|
|
202
|
-
}
|
|
203
|
-
assertTrue(!threw, "does not throw on nothing-to-commit");
|
|
204
|
-
|
|
205
|
-
// Main log unchanged (only init commit)
|
|
206
|
-
const mainLog = run("git log --oneline main", repo);
|
|
207
|
-
assertEq(mainLog.split("\n").length, 1, "main still has only init commit");
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// ─── Test 4: Auto-push — verify push mechanics work ──────────────
|
|
211
|
-
// Note: loadEffectiveGSDPreferences uses a module-level const for project
|
|
212
|
-
// prefs path (process.cwd() at import time), so temp repo prefs aren't
|
|
213
|
-
// discoverable. We verify the push mechanics work by testing that
|
|
214
|
-
// mergeMilestoneToMain successfully completes with a remote configured,
|
|
215
|
-
// then manually push to verify the remote is set up correctly.
|
|
216
|
-
console.log("\n=== auto-push with bare remote ===");
|
|
217
|
-
{
|
|
218
|
-
const repo = freshRepo();
|
|
219
|
-
|
|
220
|
-
// Set up bare remote
|
|
221
|
-
const bareDir = realpathSync(mkdtempSync(join(tmpdir(), "wt-ms-bare-")));
|
|
222
|
-
tempDirs.push(bareDir);
|
|
223
|
-
run("git init --bare", bareDir);
|
|
224
|
-
run(`git remote add origin ${bareDir}`, repo);
|
|
225
|
-
run("git push -u origin main", repo);
|
|
226
|
-
|
|
227
|
-
const wtPath = createAutoWorktree(repo, "M040");
|
|
228
|
-
|
|
229
|
-
addSliceToMilestone(repo, wtPath, "M040", "S01", "Push test", [
|
|
230
|
-
{ file: "pushed.ts", content: "export const pushed = true;\n", message: "add pushed file" },
|
|
231
|
-
]);
|
|
232
|
-
|
|
233
|
-
const roadmap = makeRoadmap("M040", "Push verification", [
|
|
234
|
-
{ id: "S01", title: "Push test" },
|
|
235
|
-
]);
|
|
236
|
-
|
|
237
|
-
const result = mergeMilestoneToMain(repo, "M040", roadmap);
|
|
238
|
-
|
|
239
|
-
// Verify merge succeeded (commit on main)
|
|
240
|
-
const mainLog = run("git log --oneline main", repo);
|
|
241
|
-
assertTrue(mainLog.includes("feat(M040)"), "milestone commit on main");
|
|
242
|
-
|
|
243
|
-
// Manually push to verify remote works
|
|
244
|
-
run("git push origin main", repo);
|
|
245
|
-
const remoteLog = run("git log --oneline main", bareDir);
|
|
246
|
-
assertTrue(remoteLog.includes("feat(M040)"), "milestone commit reachable on remote after manual push");
|
|
247
|
-
|
|
248
|
-
// result.pushed will be false since prefs aren't loadable in temp repos
|
|
249
|
-
// (module-level const limitation) — that's expected
|
|
250
|
-
assertEq(result.pushed, false, "pushed is false without discoverable prefs");
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// ─── Test 5: Auto-resolve .gsd/ state file conflicts (#530) ───────
|
|
254
|
-
console.log("\n=== auto-resolve .gsd/ state file conflicts ===");
|
|
255
|
-
{
|
|
256
|
-
const repo = freshRepo();
|
|
257
|
-
const wtPath = createAutoWorktree(repo, "M050");
|
|
258
|
-
|
|
259
|
-
// Add a slice with real work
|
|
260
|
-
addSliceToMilestone(repo, wtPath, "M050", "S01", "Conflict test", [
|
|
261
|
-
{ file: "feature.ts", content: "export const feature = true;\n", message: "add feature" },
|
|
262
|
-
]);
|
|
263
|
-
|
|
264
|
-
// Modify .gsd/STATE.md on the milestone branch (simulates auto-mode state updates)
|
|
265
|
-
writeFileSync(join(wtPath, ".gsd", "STATE.md"), "# State\n\n## Updated on milestone branch\n");
|
|
266
|
-
run("git add .", wtPath);
|
|
267
|
-
run('git commit -m "chore: update state on milestone branch"', wtPath);
|
|
268
|
-
|
|
269
|
-
// Now modify .gsd/STATE.md on main too (simulates divergence)
|
|
270
|
-
run("git checkout main", repo);
|
|
271
|
-
writeFileSync(join(repo, ".gsd", "STATE.md"), "# State\n\n## Updated on main\n");
|
|
272
|
-
run("git add .", repo);
|
|
273
|
-
run('git commit -m "chore: update state on main"', repo);
|
|
274
|
-
|
|
275
|
-
// Go back to worktree for the merge
|
|
276
|
-
process.chdir(wtPath);
|
|
277
|
-
|
|
278
|
-
const roadmap = makeRoadmap("M050", "Conflict resolution", [
|
|
279
|
-
{ id: "S01", title: "Conflict test" },
|
|
280
|
-
]);
|
|
281
|
-
|
|
282
|
-
// Merge should succeed despite .gsd/STATE.md conflict — auto-resolved
|
|
283
|
-
let threw = false;
|
|
284
|
-
try {
|
|
285
|
-
const result = mergeMilestoneToMain(repo, "M050", roadmap);
|
|
286
|
-
assertTrue(result.commitMessage.includes("feat(M050)"), "merge commit created despite .gsd conflict");
|
|
287
|
-
} catch (err) {
|
|
288
|
-
threw = true;
|
|
289
|
-
}
|
|
290
|
-
assertTrue(!threw, "auto-resolves .gsd/ state file conflicts without throwing");
|
|
291
|
-
|
|
292
|
-
// Feature file should be on main
|
|
293
|
-
assertTrue(existsSync(join(repo, "feature.ts")), "feature.ts merged to main");
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// ─── Test 6: Skip checkout when main already current (#757) ───────
|
|
297
|
-
console.log("\n=== skip checkout when main already current (#757) ===");
|
|
298
|
-
{
|
|
299
|
-
const repo = freshRepo();
|
|
300
|
-
const wtPath = createAutoWorktree(repo, "M060");
|
|
301
|
-
|
|
302
|
-
addSliceToMilestone(repo, wtPath, "M060", "S01", "Skip checkout test", [
|
|
303
|
-
{ file: "skip-checkout.ts", content: "export const skip = true;\n", message: "add skip-checkout" },
|
|
304
|
-
]);
|
|
305
|
-
|
|
306
|
-
const roadmap = makeRoadmap("M060", "Skip checkout verification", [
|
|
307
|
-
{ id: "S01", title: "Skip checkout test" },
|
|
308
|
-
]);
|
|
309
|
-
|
|
310
|
-
// Verify main is already checked out at repo root (worktree default)
|
|
311
|
-
const branchAtRoot = run("git rev-parse --abbrev-ref HEAD", repo);
|
|
312
|
-
assertEq(branchAtRoot, "main", "main is already checked out at project root");
|
|
313
|
-
|
|
314
|
-
// mergeMilestoneToMain should succeed without attempting to checkout main
|
|
315
|
-
// (which would fail with "already used by worktree" error)
|
|
316
|
-
let threw = false;
|
|
317
|
-
try {
|
|
318
|
-
const result = mergeMilestoneToMain(repo, "M060", roadmap);
|
|
319
|
-
assertTrue(result.commitMessage.includes("feat(M060)"), "merge commit created");
|
|
320
|
-
} catch (err) {
|
|
321
|
-
threw = true;
|
|
322
|
-
console.error("Unexpected error:", err);
|
|
323
|
-
}
|
|
324
|
-
assertTrue(!threw, "does not fail when main is already checked out at project root");
|
|
325
|
-
|
|
326
|
-
// Verify the merge actually happened
|
|
327
|
-
assertTrue(existsSync(join(repo, "skip-checkout.ts")), "skip-checkout.ts merged to main");
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
} finally {
|
|
331
|
-
process.chdir(savedCwd);
|
|
332
|
-
for (const d of tempDirs) {
|
|
333
|
-
if (existsSync(d)) rmSync(d, { recursive: true, force: true });
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
report();
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
main();
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* auto-worktree.test.ts — Tests for auto-worktree lifecycle.
|
|
3
|
-
*
|
|
4
|
-
* Covers: create → detect → teardown, re-entry, path helpers.
|
|
5
|
-
* Runs in a real temp git repo.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync, existsSync, realpathSync } from "node:fs";
|
|
9
|
-
import { join } from "node:path";
|
|
10
|
-
import { tmpdir } from "node:os";
|
|
11
|
-
import { execSync } from "node:child_process";
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
createAutoWorktree,
|
|
15
|
-
teardownAutoWorktree,
|
|
16
|
-
isInAutoWorktree,
|
|
17
|
-
getAutoWorktreePath,
|
|
18
|
-
enterAutoWorktree,
|
|
19
|
-
getAutoWorktreeOriginalBase,
|
|
20
|
-
getActiveAutoWorktreeContext,
|
|
21
|
-
} from "../auto-worktree.ts";
|
|
22
|
-
|
|
23
|
-
import { createTestContext } from "./test-helpers.ts";
|
|
24
|
-
|
|
25
|
-
const { assertEq, assertTrue, report } = createTestContext();
|
|
26
|
-
|
|
27
|
-
function run(command: string, cwd: string): string {
|
|
28
|
-
return execSync(command, { cwd, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function createTempRepo(): string {
|
|
32
|
-
const dir = realpathSync(mkdtempSync(join(tmpdir(), "auto-wt-test-")));
|
|
33
|
-
run("git init", dir);
|
|
34
|
-
run("git config user.email test@test.com", dir);
|
|
35
|
-
run("git config user.name Test", dir);
|
|
36
|
-
// Create initial commit on main
|
|
37
|
-
writeFileSync(join(dir, "README.md"), "# test\n");
|
|
38
|
-
run("git add .", dir);
|
|
39
|
-
run("git commit -m init", dir);
|
|
40
|
-
// Ensure branch is called main
|
|
41
|
-
run("git branch -M main", dir);
|
|
42
|
-
return dir;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async function main(): Promise<void> {
|
|
46
|
-
const savedCwd = process.cwd();
|
|
47
|
-
let tempDir = "";
|
|
48
|
-
|
|
49
|
-
try {
|
|
50
|
-
tempDir = createTempRepo();
|
|
51
|
-
|
|
52
|
-
// Create .gsd/milestones/M003 with a dummy file (simulates planning artifacts)
|
|
53
|
-
const msDir = join(tempDir, ".gsd", "milestones", "M003");
|
|
54
|
-
mkdirSync(msDir, { recursive: true });
|
|
55
|
-
writeFileSync(join(msDir, "CONTEXT.md"), "# M003 Context\n");
|
|
56
|
-
run("git add .", tempDir);
|
|
57
|
-
run("git commit -m \"add milestone\"", tempDir);
|
|
58
|
-
|
|
59
|
-
console.log("\n=== auto-worktree lifecycle ===");
|
|
60
|
-
|
|
61
|
-
// ─── createAutoWorktree ──────────────────────────────────────────
|
|
62
|
-
const wtPath = createAutoWorktree(tempDir, "M003");
|
|
63
|
-
|
|
64
|
-
assertTrue(existsSync(wtPath), "worktree directory exists after create");
|
|
65
|
-
assertEq(process.cwd(), wtPath, "process.cwd() is worktree path after create");
|
|
66
|
-
|
|
67
|
-
const branch = run("git branch --show-current", wtPath);
|
|
68
|
-
assertEq(branch, "milestone/M003", "git branch is milestone/M003");
|
|
69
|
-
|
|
70
|
-
assertTrue(
|
|
71
|
-
existsSync(join(wtPath, ".gsd", "milestones", "M003", "CONTEXT.md")),
|
|
72
|
-
"planning files inherited in worktree",
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
// ─── isInAutoWorktree ────────────────────────────────────────────
|
|
76
|
-
assertTrue(isInAutoWorktree(tempDir), "isInAutoWorktree returns true when inside");
|
|
77
|
-
|
|
78
|
-
// ─── getAutoWorktreeOriginalBase ─────────────────────────────────
|
|
79
|
-
assertEq(getAutoWorktreeOriginalBase(), tempDir, "originalBase returns temp dir");
|
|
80
|
-
assertEq(
|
|
81
|
-
getActiveAutoWorktreeContext(),
|
|
82
|
-
{
|
|
83
|
-
originalBase: tempDir,
|
|
84
|
-
worktreeName: "M003",
|
|
85
|
-
branch: "milestone/M003",
|
|
86
|
-
},
|
|
87
|
-
"active auto-worktree context reflects the worktree cwd",
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
// ─── getAutoWorktreePath ─────────────────────────────────────────
|
|
91
|
-
assertEq(getAutoWorktreePath(tempDir, "M003"), wtPath, "getAutoWorktreePath returns correct path");
|
|
92
|
-
assertEq(getAutoWorktreePath(tempDir, "M999"), null, "getAutoWorktreePath returns null for nonexistent");
|
|
93
|
-
|
|
94
|
-
// ─── teardownAutoWorktree ────────────────────────────────────────
|
|
95
|
-
teardownAutoWorktree(tempDir, "M003");
|
|
96
|
-
|
|
97
|
-
assertEq(process.cwd(), tempDir, "process.cwd() back to original after teardown");
|
|
98
|
-
assertTrue(!existsSync(wtPath), "worktree directory removed after teardown");
|
|
99
|
-
assertTrue(!isInAutoWorktree(tempDir), "isInAutoWorktree returns false after teardown");
|
|
100
|
-
assertEq(getAutoWorktreeOriginalBase(), null, "originalBase is null after teardown");
|
|
101
|
-
assertEq(getActiveAutoWorktreeContext(), null, "active auto-worktree context clears after teardown");
|
|
102
|
-
|
|
103
|
-
// ─── Re-entry: create again, exit without teardown, re-enter ─────
|
|
104
|
-
console.log("\n=== re-entry ===");
|
|
105
|
-
|
|
106
|
-
const wtPath2 = createAutoWorktree(tempDir, "M003");
|
|
107
|
-
assertTrue(existsSync(wtPath2), "worktree re-created");
|
|
108
|
-
|
|
109
|
-
// Manually chdir out (simulates pause/crash)
|
|
110
|
-
process.chdir(tempDir);
|
|
111
|
-
|
|
112
|
-
// enterAutoWorktree should re-enter
|
|
113
|
-
const entered = enterAutoWorktree(tempDir, "M003");
|
|
114
|
-
assertEq(process.cwd(), entered, "re-entered worktree via enterAutoWorktree");
|
|
115
|
-
assertEq(getAutoWorktreeOriginalBase(), tempDir, "originalBase restored on re-entry");
|
|
116
|
-
assertTrue(isInAutoWorktree(tempDir), "isInAutoWorktree true after re-entry");
|
|
117
|
-
assertEq(
|
|
118
|
-
getActiveAutoWorktreeContext(),
|
|
119
|
-
{
|
|
120
|
-
originalBase: tempDir,
|
|
121
|
-
worktreeName: "M003",
|
|
122
|
-
branch: "milestone/M003",
|
|
123
|
-
},
|
|
124
|
-
"active auto-worktree context is restored on re-entry",
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
// Cleanup
|
|
128
|
-
teardownAutoWorktree(tempDir, "M003");
|
|
129
|
-
|
|
130
|
-
// ─── Coexistence with manual worktree ─────────────────────────────
|
|
131
|
-
console.log("\n=== coexistence ===");
|
|
132
|
-
|
|
133
|
-
// Import createWorktree directly for manual worktree
|
|
134
|
-
const { createWorktree } = await import("../worktree-manager.ts");
|
|
135
|
-
|
|
136
|
-
// Create manual worktree (uses worktree/<name> branch)
|
|
137
|
-
const manualWt = createWorktree(tempDir, "feature-x");
|
|
138
|
-
assertTrue(existsSync(manualWt.path), "manual worktree exists");
|
|
139
|
-
assertEq(manualWt.branch, "worktree/feature-x", "manual worktree uses worktree/ prefix");
|
|
140
|
-
|
|
141
|
-
// Create auto-worktree alongside
|
|
142
|
-
const autoWtPath = createAutoWorktree(tempDir, "M003");
|
|
143
|
-
assertTrue(existsSync(autoWtPath), "auto-worktree coexists with manual");
|
|
144
|
-
assertTrue(existsSync(manualWt.path), "manual worktree still exists");
|
|
145
|
-
|
|
146
|
-
// Cleanup both
|
|
147
|
-
teardownAutoWorktree(tempDir, "M003");
|
|
148
|
-
const { removeWorktree } = await import("../worktree-manager.ts");
|
|
149
|
-
removeWorktree(tempDir, "feature-x");
|
|
150
|
-
|
|
151
|
-
// ─── Failure: split-brain prevention ──────────────────────────────
|
|
152
|
-
console.log("\n=== split-brain prevention ===");
|
|
153
|
-
// After teardown, originalBase should be null
|
|
154
|
-
assertEq(getAutoWorktreeOriginalBase(), null, "no split-brain: originalBase cleared");
|
|
155
|
-
|
|
156
|
-
} finally {
|
|
157
|
-
// Always restore cwd and clean up
|
|
158
|
-
process.chdir(savedCwd);
|
|
159
|
-
if (tempDir && existsSync(tempDir)) {
|
|
160
|
-
rmSync(tempDir, { recursive: true, force: true });
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
report();
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
main();
|