gsd-pi 2.33.1-dev.29a8268 → 2.33.1-dev.9bafd68

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.
Files changed (744) hide show
  1. package/dist/cli.js +16 -0
  2. package/dist/resource-loader.d.ts +2 -0
  3. package/dist/resource-loader.js +36 -3
  4. package/dist/resources/extensions/ask-user-questions.js +217 -0
  5. package/dist/resources/extensions/async-jobs/async-bash-tool.js +180 -0
  6. package/dist/resources/extensions/async-jobs/await-tool.js +90 -0
  7. package/dist/resources/extensions/async-jobs/cancel-job-tool.js +28 -0
  8. package/dist/resources/extensions/async-jobs/index.js +119 -0
  9. package/dist/resources/extensions/async-jobs/job-manager.js +159 -0
  10. package/dist/resources/extensions/aws-auth/index.js +138 -0
  11. package/dist/resources/extensions/bg-shell/bg-shell-command.js +182 -0
  12. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +343 -0
  13. package/dist/resources/extensions/bg-shell/bg-shell-tool.js +831 -0
  14. package/dist/resources/extensions/bg-shell/index.js +41 -0
  15. package/dist/resources/extensions/bg-shell/interaction.js +160 -0
  16. package/dist/resources/extensions/bg-shell/output-formatter.js +245 -0
  17. package/dist/resources/extensions/bg-shell/overlay.js +378 -0
  18. package/dist/resources/extensions/bg-shell/process-manager.js +413 -0
  19. package/dist/resources/extensions/bg-shell/readiness-detector.js +109 -0
  20. package/dist/resources/extensions/bg-shell/types.js +96 -0
  21. package/dist/resources/extensions/bg-shell/utilities.js +50 -0
  22. package/dist/resources/extensions/browser-tools/capture.js +179 -0
  23. package/dist/resources/extensions/browser-tools/core.js +899 -0
  24. package/dist/resources/extensions/browser-tools/{evaluate-helpers.ts → evaluate-helpers.js} +0 -1
  25. package/dist/resources/extensions/browser-tools/index.js +123 -0
  26. package/dist/resources/extensions/browser-tools/lifecycle.js +222 -0
  27. package/dist/resources/extensions/browser-tools/refs.js +254 -0
  28. package/dist/resources/extensions/browser-tools/settle.js +173 -0
  29. package/dist/resources/extensions/browser-tools/state.js +126 -0
  30. package/dist/resources/extensions/browser-tools/tools/action-cache.js +179 -0
  31. package/dist/resources/extensions/browser-tools/tools/assertions.js +320 -0
  32. package/dist/resources/extensions/browser-tools/tools/codegen.js +242 -0
  33. package/dist/resources/extensions/browser-tools/tools/device.js +162 -0
  34. package/dist/resources/extensions/browser-tools/tools/extract.js +191 -0
  35. package/dist/resources/extensions/browser-tools/tools/forms.js +710 -0
  36. package/dist/resources/extensions/browser-tools/tools/injection-detect.js +178 -0
  37. package/dist/resources/extensions/browser-tools/tools/inspection.js +426 -0
  38. package/dist/resources/extensions/browser-tools/tools/intent.js +556 -0
  39. package/dist/resources/extensions/browser-tools/tools/interaction.js +776 -0
  40. package/dist/resources/extensions/browser-tools/tools/navigation.js +208 -0
  41. package/dist/resources/extensions/browser-tools/tools/network-mock.js +194 -0
  42. package/dist/resources/extensions/browser-tools/tools/pages.js +280 -0
  43. package/dist/resources/extensions/browser-tools/tools/pdf.js +74 -0
  44. package/dist/resources/extensions/browser-tools/tools/refs.js +485 -0
  45. package/dist/resources/extensions/browser-tools/tools/screenshot.js +87 -0
  46. package/dist/resources/extensions/browser-tools/tools/session.js +375 -0
  47. package/dist/resources/extensions/browser-tools/tools/state-persistence.js +180 -0
  48. package/dist/resources/extensions/browser-tools/tools/visual-diff.js +174 -0
  49. package/dist/resources/extensions/browser-tools/tools/wait.js +201 -0
  50. package/dist/resources/extensions/browser-tools/tools/zoom.js +90 -0
  51. package/dist/resources/extensions/browser-tools/utils.js +490 -0
  52. package/dist/resources/extensions/context7/index.js +337 -0
  53. package/dist/resources/extensions/get-secrets-from-user.js +492 -0
  54. package/dist/resources/extensions/google-search/index.js +373 -0
  55. package/dist/resources/extensions/gsd/activity-log.js +146 -0
  56. package/dist/resources/extensions/gsd/atomic-write.js +38 -0
  57. package/dist/resources/extensions/gsd/auto/session.js +187 -0
  58. package/dist/resources/extensions/gsd/auto-budget.js +30 -0
  59. package/dist/resources/extensions/gsd/{auto-constants.ts → auto-constants.js} +0 -1
  60. package/dist/resources/extensions/gsd/auto-dashboard.js +509 -0
  61. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +180 -0
  62. package/dist/resources/extensions/gsd/auto-dispatch.js +382 -0
  63. package/dist/resources/extensions/gsd/auto-idempotency.js +106 -0
  64. package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
  65. package/dist/resources/extensions/gsd/auto-observability.js +54 -0
  66. package/dist/resources/extensions/gsd/auto-post-unit.js +495 -0
  67. package/dist/resources/extensions/gsd/auto-prompts.js +1121 -0
  68. package/dist/resources/extensions/gsd/auto-recovery.js +550 -0
  69. package/dist/resources/extensions/gsd/auto-start.js +393 -0
  70. package/dist/resources/extensions/gsd/auto-stuck-detection.js +165 -0
  71. package/dist/resources/extensions/gsd/{auto-supervisor.ts → auto-supervisor.js} +25 -33
  72. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
  73. package/dist/resources/extensions/gsd/auto-timers.js +181 -0
  74. package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
  75. package/dist/resources/extensions/gsd/auto-unit-closeout.js +30 -0
  76. package/dist/resources/extensions/gsd/auto-verification.js +209 -0
  77. package/dist/resources/extensions/gsd/auto-worktree.js +594 -0
  78. package/dist/resources/extensions/gsd/auto.js +1485 -0
  79. package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
  80. package/dist/resources/extensions/gsd/captures.js +348 -0
  81. package/dist/resources/extensions/gsd/claude-import.js +540 -0
  82. package/dist/resources/extensions/gsd/collision-diagnostics.js +226 -0
  83. package/dist/resources/extensions/gsd/commands-bootstrap.js +223 -0
  84. package/dist/resources/extensions/gsd/commands-config.js +89 -0
  85. package/dist/resources/extensions/gsd/commands-extensions.js +259 -0
  86. package/dist/resources/extensions/gsd/commands-handlers.js +310 -0
  87. package/dist/resources/extensions/gsd/commands-inspect.js +70 -0
  88. package/dist/resources/extensions/gsd/commands-logs.js +468 -0
  89. package/dist/resources/extensions/gsd/commands-maintenance.js +185 -0
  90. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +660 -0
  91. package/dist/resources/extensions/gsd/commands-workflow-templates.js +408 -0
  92. package/dist/resources/extensions/gsd/commands.js +1024 -0
  93. package/dist/resources/extensions/gsd/complexity-classifier.js +257 -0
  94. package/dist/resources/extensions/gsd/{constants.ts → constants.js} +0 -6
  95. package/dist/resources/extensions/gsd/context-budget.js +187 -0
  96. package/dist/resources/extensions/gsd/context-store.js +165 -0
  97. package/dist/resources/extensions/gsd/crash-recovery.js +110 -0
  98. package/dist/resources/extensions/gsd/dashboard-overlay.js +562 -0
  99. package/dist/resources/extensions/gsd/db-writer.js +298 -0
  100. package/dist/resources/extensions/gsd/debug-logger.js +161 -0
  101. package/dist/resources/extensions/gsd/detection.js +373 -0
  102. package/dist/resources/extensions/gsd/diff-context.js +168 -0
  103. package/dist/resources/extensions/gsd/dispatch-guard.js +76 -0
  104. package/dist/resources/extensions/gsd/doctor-checks.js +563 -0
  105. package/dist/resources/extensions/gsd/doctor-environment.js +429 -0
  106. package/dist/resources/extensions/gsd/doctor-format.js +71 -0
  107. package/dist/resources/extensions/gsd/doctor-proactive.js +239 -0
  108. package/dist/resources/extensions/gsd/doctor-providers.js +292 -0
  109. package/dist/resources/extensions/gsd/doctor-types.js +12 -0
  110. package/dist/resources/extensions/gsd/doctor.js +672 -0
  111. package/dist/resources/extensions/gsd/error-utils.js +6 -0
  112. package/dist/resources/extensions/gsd/{errors.ts → errors.js} +6 -11
  113. package/dist/resources/extensions/gsd/exit-command.js +11 -0
  114. package/dist/resources/extensions/gsd/{export-html.ts → export-html.js} +482 -614
  115. package/dist/resources/extensions/gsd/export.js +268 -0
  116. package/dist/resources/extensions/gsd/file-watcher.js +76 -0
  117. package/dist/resources/extensions/gsd/files.js +937 -0
  118. package/dist/resources/extensions/gsd/forensics.js +511 -0
  119. package/dist/resources/extensions/gsd/{git-constants.ts → git-constants.js} +4 -5
  120. package/dist/resources/extensions/gsd/git-self-heal.js +113 -0
  121. package/dist/resources/extensions/gsd/git-service.js +460 -0
  122. package/dist/resources/extensions/gsd/{gitignore.ts → gitignore.js} +98 -125
  123. package/dist/resources/extensions/gsd/gsd-db.js +590 -0
  124. package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
  125. package/dist/resources/extensions/gsd/guided-flow.js +1158 -0
  126. package/dist/resources/extensions/gsd/health-widget.js +141 -0
  127. package/dist/resources/extensions/gsd/history.js +118 -0
  128. package/dist/resources/extensions/gsd/index.js +1250 -0
  129. package/dist/resources/extensions/gsd/init-wizard.js +479 -0
  130. package/dist/resources/extensions/gsd/json-persistence.js +62 -0
  131. package/dist/resources/extensions/gsd/{jsonl-utils.ts → jsonl-utils.js} +10 -7
  132. package/dist/resources/extensions/gsd/key-manager.js +829 -0
  133. package/dist/resources/extensions/gsd/marketplace-discovery.js +356 -0
  134. package/dist/resources/extensions/gsd/md-importer.js +440 -0
  135. package/dist/resources/extensions/gsd/mechanical-completion.js +351 -0
  136. package/dist/resources/extensions/gsd/memory-extractor.js +295 -0
  137. package/dist/resources/extensions/gsd/memory-store.js +351 -0
  138. package/dist/resources/extensions/gsd/metrics.js +377 -0
  139. package/dist/resources/extensions/gsd/migrate/command.js +157 -0
  140. package/dist/resources/extensions/gsd/migrate/index.js +7 -0
  141. package/dist/resources/extensions/gsd/migrate/parser.js +268 -0
  142. package/dist/resources/extensions/gsd/migrate/parsers.js +477 -0
  143. package/dist/resources/extensions/gsd/migrate/preview.js +47 -0
  144. package/dist/resources/extensions/gsd/migrate/transformer.js +278 -0
  145. package/dist/resources/extensions/gsd/migrate/types.js +4 -0
  146. package/dist/resources/extensions/gsd/migrate/validator.js +41 -0
  147. package/dist/resources/extensions/gsd/migrate/writer.js +477 -0
  148. package/dist/resources/extensions/gsd/migrate-external.js +130 -0
  149. package/dist/resources/extensions/gsd/milestone-actions.js +111 -0
  150. package/dist/resources/extensions/gsd/{milestone-ids.ts → milestone-ids.js} +50 -63
  151. package/dist/resources/extensions/gsd/model-cost-table.js +48 -0
  152. package/dist/resources/extensions/gsd/model-router.js +187 -0
  153. package/dist/resources/extensions/gsd/namespaced-registry.js +322 -0
  154. package/dist/resources/extensions/gsd/namespaced-resolver.js +176 -0
  155. package/dist/resources/extensions/gsd/native-git-bridge.js +842 -0
  156. package/dist/resources/extensions/gsd/native-parser-bridge.js +156 -0
  157. package/dist/resources/extensions/gsd/notifications.js +58 -0
  158. package/dist/resources/extensions/gsd/observability-validator.js +398 -0
  159. package/dist/resources/extensions/gsd/parallel-eligibility.js +182 -0
  160. package/dist/resources/extensions/gsd/parallel-merge.js +121 -0
  161. package/dist/resources/extensions/gsd/parallel-orchestrator.js +687 -0
  162. package/dist/resources/extensions/gsd/paths.js +414 -0
  163. package/dist/resources/extensions/gsd/plugin-importer.js +254 -0
  164. package/dist/resources/extensions/gsd/post-unit-hooks.js +433 -0
  165. package/dist/resources/extensions/gsd/preferences-models.js +294 -0
  166. package/dist/resources/extensions/gsd/preferences-skills.js +154 -0
  167. package/dist/resources/extensions/gsd/preferences-types.js +73 -0
  168. package/dist/resources/extensions/gsd/preferences-validation.js +607 -0
  169. package/dist/resources/extensions/gsd/preferences.js +325 -0
  170. package/dist/resources/extensions/gsd/progress-score.js +197 -0
  171. package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +150 -0
  172. package/dist/resources/extensions/gsd/prompt-compressor.js +393 -0
  173. package/dist/resources/extensions/gsd/prompt-loader.js +119 -0
  174. package/dist/resources/extensions/gsd/prompt-ordering.js +170 -0
  175. package/dist/resources/extensions/gsd/provider-error-pause.js +60 -0
  176. package/dist/resources/extensions/gsd/queue-order.js +178 -0
  177. package/dist/resources/extensions/gsd/queue-reorder-ui.js +234 -0
  178. package/dist/resources/extensions/gsd/quick.js +230 -0
  179. package/dist/resources/extensions/gsd/repo-identity.js +187 -0
  180. package/dist/resources/extensions/gsd/{reports.ts → reports.js} +146 -241
  181. package/dist/resources/extensions/gsd/{resource-version.ts → resource-version.js} +50 -53
  182. package/dist/resources/extensions/gsd/roadmap-slices.js +130 -0
  183. package/dist/resources/extensions/gsd/routing-history.js +210 -0
  184. package/dist/resources/extensions/gsd/safe-fs.js +52 -0
  185. package/dist/resources/extensions/gsd/semantic-chunker.js +254 -0
  186. package/dist/resources/extensions/gsd/session-forensics.js +427 -0
  187. package/dist/resources/extensions/gsd/session-lock.js +384 -0
  188. package/dist/resources/extensions/gsd/session-status-io.js +134 -0
  189. package/dist/resources/extensions/gsd/skill-discovery.js +121 -0
  190. package/dist/resources/extensions/gsd/skill-health.js +324 -0
  191. package/dist/resources/extensions/gsd/{skill-telemetry.ts → skill-telemetry.js} +58 -74
  192. package/dist/resources/extensions/gsd/state.js +653 -0
  193. package/dist/resources/extensions/gsd/structured-data-formatter.js +97 -0
  194. package/dist/resources/extensions/gsd/summary-distiller.js +212 -0
  195. package/dist/resources/extensions/gsd/token-counter.js +54 -0
  196. package/dist/resources/extensions/gsd/triage-resolution.js +217 -0
  197. package/dist/resources/extensions/gsd/triage-ui.js +125 -0
  198. package/dist/resources/extensions/gsd/types.js +4 -0
  199. package/dist/resources/extensions/gsd/undo.js +210 -0
  200. package/dist/resources/extensions/gsd/unit-id.js +7 -0
  201. package/dist/resources/extensions/gsd/unit-runtime.js +130 -0
  202. package/dist/resources/extensions/gsd/validate-directory.js +143 -0
  203. package/dist/resources/extensions/gsd/verification-evidence.js +123 -0
  204. package/dist/resources/extensions/gsd/verification-gate.js +543 -0
  205. package/dist/resources/extensions/gsd/visualizer-data.js +612 -0
  206. package/dist/resources/extensions/gsd/visualizer-overlay.js +501 -0
  207. package/dist/resources/extensions/gsd/visualizer-views.js +893 -0
  208. package/dist/resources/extensions/gsd/workflow-templates.js +188 -0
  209. package/dist/resources/extensions/gsd/workspace-index.js +139 -0
  210. package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +40 -0
  211. package/dist/resources/extensions/gsd/worktree-command.js +676 -0
  212. package/dist/resources/extensions/gsd/worktree-manager.js +359 -0
  213. package/dist/resources/extensions/gsd/worktree.js +236 -0
  214. package/dist/resources/extensions/mac-tools/index.js +768 -0
  215. package/dist/resources/extensions/mcp-client/index.js +363 -0
  216. package/dist/resources/extensions/package.json +3 -0
  217. package/dist/resources/extensions/remote-questions/config.js +70 -0
  218. package/dist/resources/extensions/remote-questions/discord-adapter.js +134 -0
  219. package/dist/resources/extensions/remote-questions/format.js +234 -0
  220. package/dist/resources/extensions/remote-questions/http-client.js +43 -0
  221. package/dist/resources/extensions/remote-questions/manager.js +156 -0
  222. package/dist/resources/extensions/remote-questions/{mod.ts → mod.js} +1 -10
  223. package/dist/resources/extensions/remote-questions/notify.js +89 -0
  224. package/dist/resources/extensions/remote-questions/remote-command.js +453 -0
  225. package/dist/resources/extensions/remote-questions/slack-adapter.js +123 -0
  226. package/dist/resources/extensions/remote-questions/status.js +25 -0
  227. package/dist/resources/extensions/remote-questions/store.js +70 -0
  228. package/dist/resources/extensions/remote-questions/telegram-adapter.js +123 -0
  229. package/dist/resources/extensions/remote-questions/types.js +5 -0
  230. package/dist/resources/extensions/search-the-web/cache.js +74 -0
  231. package/dist/resources/extensions/search-the-web/command-search-provider.js +79 -0
  232. package/dist/resources/extensions/search-the-web/format.js +161 -0
  233. package/dist/resources/extensions/search-the-web/http.js +178 -0
  234. package/dist/resources/extensions/search-the-web/index.js +41 -0
  235. package/dist/resources/extensions/search-the-web/native-search.js +166 -0
  236. package/dist/resources/extensions/search-the-web/provider.js +143 -0
  237. package/dist/resources/extensions/search-the-web/tavily.js +82 -0
  238. package/dist/resources/extensions/search-the-web/tool-fetch-page.js +452 -0
  239. package/dist/resources/extensions/search-the-web/tool-llm-context.js +455 -0
  240. package/dist/resources/extensions/search-the-web/tool-search.js +482 -0
  241. package/dist/resources/extensions/search-the-web/url-utils.js +121 -0
  242. package/dist/resources/extensions/shared/confirm-ui.js +96 -0
  243. package/dist/resources/extensions/shared/{format-utils.ts → format-utils.js} +85 -91
  244. package/dist/resources/extensions/shared/frontmatter.js +109 -0
  245. package/dist/resources/extensions/shared/interview-ui.js +569 -0
  246. package/dist/resources/extensions/shared/{mod.ts → mod.js} +2 -24
  247. package/dist/resources/extensions/shared/next-action-ui.js +168 -0
  248. package/dist/resources/extensions/shared/{path-display.ts → path-display.js} +2 -3
  249. package/dist/resources/extensions/shared/sanitize.js +17 -0
  250. package/dist/resources/extensions/shared/terminal.js +21 -0
  251. package/dist/resources/extensions/shared/ui.js +245 -0
  252. package/dist/resources/extensions/shared/wizard-ui.js +478 -0
  253. package/dist/resources/extensions/slash-commands/audit.js +72 -0
  254. package/dist/resources/extensions/slash-commands/clear.js +8 -0
  255. package/dist/resources/extensions/slash-commands/create-extension.js +264 -0
  256. package/dist/resources/extensions/slash-commands/create-slash-command.js +208 -0
  257. package/dist/resources/extensions/slash-commands/index.js +10 -0
  258. package/dist/resources/extensions/subagent/agents.js +103 -0
  259. package/dist/resources/extensions/subagent/index.js +905 -0
  260. package/dist/resources/extensions/subagent/isolation.js +384 -0
  261. package/dist/resources/extensions/subagent/worker-registry.js +73 -0
  262. package/dist/resources/extensions/ttsr/index.js +144 -0
  263. package/dist/resources/extensions/ttsr/rule-loader.js +70 -0
  264. package/dist/resources/extensions/ttsr/ttsr-manager.js +380 -0
  265. package/dist/resources/extensions/universal-config/discovery.js +94 -0
  266. package/dist/resources/extensions/universal-config/format.js +178 -0
  267. package/dist/resources/extensions/universal-config/index.js +99 -0
  268. package/dist/resources/extensions/universal-config/scanners.js +574 -0
  269. package/dist/resources/extensions/universal-config/tools.js +57 -0
  270. package/dist/resources/extensions/universal-config/types.js +8 -0
  271. package/dist/resources/extensions/voice/index.js +247 -0
  272. package/dist/startup-timings.d.ts +2 -0
  273. package/dist/startup-timings.js +22 -0
  274. package/package.json +1 -1
  275. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  276. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  277. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  278. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  279. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -0
  280. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  281. package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
  282. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  283. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  284. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  285. package/packages/pi-coding-agent/dist/index.js +1 -1
  286. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  287. package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
  288. package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
  289. package/packages/pi-coding-agent/src/index.ts +1 -0
  290. package/src/resources/extensions/bg-shell/index.ts +41 -46
  291. package/src/resources/extensions/browser-tools/index.ts +156 -67
  292. package/src/resources/extensions/gsd/auto-verification.ts +20 -2
  293. package/src/resources/extensions/gsd/auto-worktree.ts +3 -2
  294. package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
  295. package/src/resources/extensions/gsd/commands.ts +39 -31
  296. package/src/resources/extensions/gsd/git-service.ts +7 -0
  297. package/src/resources/extensions/gsd/guided-flow.ts +22 -11
  298. package/src/resources/extensions/gsd/index.ts +93 -32
  299. package/src/resources/extensions/gsd/quick.ts +52 -3
  300. package/src/resources/extensions/gsd/repo-identity.ts +56 -22
  301. package/src/resources/extensions/gsd/session-lock.ts +6 -0
  302. package/src/resources/extensions/gsd/tests/loop-regression.test.ts +1 -4
  303. package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
  304. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
  305. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +65 -0
  306. package/src/resources/extensions/gsd/types.ts +4 -0
  307. package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
  308. package/src/resources/extensions/gsd/verification-gate.ts +23 -2
  309. package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
  310. package/src/resources/extensions/gsd/worktree-command.ts +17 -11
  311. package/src/resources/extensions/package.json +3 -0
  312. package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
  313. package/src/resources/extensions/search-the-web/index.ts +35 -52
  314. package/src/resources/extensions/search-the-web/tavily.ts +1 -1
  315. package/dist/resources/extensions/ask-user-questions.ts +0 -290
  316. package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
  317. package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
  318. package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
  319. package/dist/resources/extensions/async-jobs/index.ts +0 -141
  320. package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
  321. package/dist/resources/extensions/aws-auth/index.ts +0 -144
  322. package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
  323. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
  324. package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
  325. package/dist/resources/extensions/bg-shell/index.ts +0 -59
  326. package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
  327. package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
  328. package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
  329. package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
  330. package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
  331. package/dist/resources/extensions/bg-shell/types.ts +0 -303
  332. package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
  333. package/dist/resources/extensions/browser-tools/capture.ts +0 -199
  334. package/dist/resources/extensions/browser-tools/core.ts +0 -1196
  335. package/dist/resources/extensions/browser-tools/index.ts +0 -71
  336. package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
  337. package/dist/resources/extensions/browser-tools/refs.ts +0 -264
  338. package/dist/resources/extensions/browser-tools/settle.ts +0 -197
  339. package/dist/resources/extensions/browser-tools/state.ts +0 -408
  340. package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
  341. package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
  342. package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
  343. package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
  344. package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
  345. package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
  346. package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
  347. package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
  348. package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
  349. package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
  350. package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
  351. package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
  352. package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
  353. package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
  354. package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
  355. package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
  356. package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
  357. package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
  358. package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
  359. package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
  360. package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
  361. package/dist/resources/extensions/browser-tools/utils.ts +0 -660
  362. package/dist/resources/extensions/context7/index.ts +0 -428
  363. package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
  364. package/dist/resources/extensions/google-search/index.ts +0 -466
  365. package/dist/resources/extensions/gsd/activity-log.ts +0 -162
  366. package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
  367. package/dist/resources/extensions/gsd/auto/session.ts +0 -236
  368. package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
  369. package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
  370. package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
  371. package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
  372. package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
  373. package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
  374. package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
  375. package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
  376. package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
  377. package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
  378. package/dist/resources/extensions/gsd/auto-start.ts +0 -483
  379. package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
  380. package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
  381. package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
  382. package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
  383. package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
  384. package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
  385. package/dist/resources/extensions/gsd/auto-worktree.ts +0 -658
  386. package/dist/resources/extensions/gsd/auto.ts +0 -1834
  387. package/dist/resources/extensions/gsd/captures.ts +0 -427
  388. package/dist/resources/extensions/gsd/claude-import.ts +0 -656
  389. package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
  390. package/dist/resources/extensions/gsd/commands-config.ts +0 -102
  391. package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
  392. package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
  393. package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
  394. package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
  395. package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
  396. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
  397. package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
  398. package/dist/resources/extensions/gsd/commands.ts +0 -1149
  399. package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
  400. package/dist/resources/extensions/gsd/context-budget.ts +0 -266
  401. package/dist/resources/extensions/gsd/context-store.ts +0 -195
  402. package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
  403. package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
  404. package/dist/resources/extensions/gsd/db-writer.ts +0 -360
  405. package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
  406. package/dist/resources/extensions/gsd/detection.ts +0 -470
  407. package/dist/resources/extensions/gsd/diff-context.ts +0 -214
  408. package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
  409. package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
  410. package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
  411. package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
  412. package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
  413. package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
  414. package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
  415. package/dist/resources/extensions/gsd/doctor.ts +0 -722
  416. package/dist/resources/extensions/gsd/error-utils.ts +0 -6
  417. package/dist/resources/extensions/gsd/exit-command.ts +0 -18
  418. package/dist/resources/extensions/gsd/export.ts +0 -317
  419. package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
  420. package/dist/resources/extensions/gsd/files.ts +0 -1058
  421. package/dist/resources/extensions/gsd/forensics.ts +0 -629
  422. package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
  423. package/dist/resources/extensions/gsd/git-service.ts +0 -586
  424. package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
  425. package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
  426. package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
  427. package/dist/resources/extensions/gsd/health-widget.ts +0 -167
  428. package/dist/resources/extensions/gsd/history.ts +0 -143
  429. package/dist/resources/extensions/gsd/index.ts +0 -1401
  430. package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
  431. package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
  432. package/dist/resources/extensions/gsd/key-manager.ts +0 -996
  433. package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
  434. package/dist/resources/extensions/gsd/md-importer.ts +0 -527
  435. package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
  436. package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
  437. package/dist/resources/extensions/gsd/memory-store.ts +0 -441
  438. package/dist/resources/extensions/gsd/metrics.ts +0 -532
  439. package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
  440. package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
  441. package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
  442. package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
  443. package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
  444. package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
  445. package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
  446. package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
  447. package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
  448. package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
  449. package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
  450. package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
  451. package/dist/resources/extensions/gsd/model-router.ts +0 -256
  452. package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
  453. package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
  454. package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
  455. package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
  456. package/dist/resources/extensions/gsd/notifications.ts +0 -87
  457. package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
  458. package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
  459. package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
  460. package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
  461. package/dist/resources/extensions/gsd/paths.ts +0 -449
  462. package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
  463. package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
  464. package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
  465. package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
  466. package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
  467. package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
  468. package/dist/resources/extensions/gsd/preferences.ts +0 -416
  469. package/dist/resources/extensions/gsd/progress-score.ts +0 -273
  470. package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
  471. package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
  472. package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
  473. package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
  474. package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
  475. package/dist/resources/extensions/gsd/queue-order.ts +0 -230
  476. package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
  477. package/dist/resources/extensions/gsd/quick.ts +0 -212
  478. package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
  479. package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
  480. package/dist/resources/extensions/gsd/routing-history.ts +0 -286
  481. package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
  482. package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
  483. package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
  484. package/dist/resources/extensions/gsd/session-lock.ts +0 -426
  485. package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
  486. package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
  487. package/dist/resources/extensions/gsd/skill-health.ts +0 -417
  488. package/dist/resources/extensions/gsd/state.ts +0 -727
  489. package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
  490. package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
  491. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
  492. package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
  493. package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
  494. package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
  495. package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
  496. package/dist/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +0 -691
  497. package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
  498. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
  499. package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
  500. package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
  501. package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
  502. package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
  503. package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
  504. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
  505. package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
  506. package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
  507. package/dist/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +0 -317
  508. package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
  509. package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
  510. package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
  511. package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
  512. package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
  513. package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
  514. package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
  515. package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
  516. package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
  517. package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
  518. package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
  519. package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
  520. package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
  521. package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
  522. package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
  523. package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
  524. package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
  525. package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
  526. package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
  527. package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
  528. package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
  529. package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
  530. package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
  531. package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
  532. package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
  533. package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
  534. package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
  535. package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
  536. package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
  537. package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
  538. package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
  539. package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
  540. package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
  541. package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
  542. package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
  543. package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
  544. package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
  545. package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
  546. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
  547. package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
  548. package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1181
  549. package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
  550. package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
  551. package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
  552. package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
  553. package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
  554. package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
  555. package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
  556. package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
  557. package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
  558. package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
  559. package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
  560. package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
  561. package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
  562. package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
  563. package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -877
  564. package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
  565. package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
  566. package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
  567. package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
  568. package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
  569. package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
  570. package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
  571. package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
  572. package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
  573. package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
  574. package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
  575. package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
  576. package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
  577. package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
  578. package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
  579. package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
  580. package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
  581. package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
  582. package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
  583. package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
  584. package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
  585. package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
  586. package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
  587. package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
  588. package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
  589. package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
  590. package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
  591. package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
  592. package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
  593. package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
  594. package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
  595. package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
  596. package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
  597. package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
  598. package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
  599. package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
  600. package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
  601. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
  602. package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
  603. package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
  604. package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
  605. package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
  606. package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
  607. package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
  608. package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
  609. package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
  610. package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
  611. package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
  612. package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
  613. package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
  614. package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
  615. package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
  616. package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
  617. package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
  618. package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
  619. package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
  620. package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
  621. package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
  622. package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
  623. package/dist/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +0 -358
  624. package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
  625. package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
  626. package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
  627. package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
  628. package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
  629. package/dist/resources/extensions/gsd/tests/session-lock-regression.test.ts +0 -216
  630. package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -434
  631. package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
  632. package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
  633. package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
  634. package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
  635. package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
  636. package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
  637. package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
  638. package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
  639. package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
  640. package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
  641. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
  642. package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
  643. package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
  644. package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
  645. package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
  646. package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
  647. package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
  648. package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
  649. package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
  650. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
  651. package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
  652. package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
  653. package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
  654. package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
  655. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
  656. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
  657. package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
  658. package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
  659. package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
  660. package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
  661. package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
  662. package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
  663. package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
  664. package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
  665. package/dist/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +0 -206
  666. package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
  667. package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
  668. package/dist/resources/extensions/gsd/token-counter.ts +0 -65
  669. package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
  670. package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
  671. package/dist/resources/extensions/gsd/types.ts +0 -425
  672. package/dist/resources/extensions/gsd/undo.ts +0 -223
  673. package/dist/resources/extensions/gsd/unit-id.ts +0 -14
  674. package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
  675. package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
  676. package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
  677. package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
  678. package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
  679. package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
  680. package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
  681. package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
  682. package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
  683. package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
  684. package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
  685. package/dist/resources/extensions/gsd/worktree.ts +0 -257
  686. package/dist/resources/extensions/mac-tools/index.ts +0 -852
  687. package/dist/resources/extensions/mcp-client/index.ts +0 -459
  688. package/dist/resources/extensions/remote-questions/config.ts +0 -83
  689. package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
  690. package/dist/resources/extensions/remote-questions/format.ts +0 -315
  691. package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
  692. package/dist/resources/extensions/remote-questions/manager.ts +0 -184
  693. package/dist/resources/extensions/remote-questions/notify.ts +0 -90
  694. package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
  695. package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
  696. package/dist/resources/extensions/remote-questions/status.ts +0 -31
  697. package/dist/resources/extensions/remote-questions/store.ts +0 -81
  698. package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
  699. package/dist/resources/extensions/remote-questions/types.ts +0 -102
  700. package/dist/resources/extensions/search-the-web/cache.ts +0 -78
  701. package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
  702. package/dist/resources/extensions/search-the-web/format.ts +0 -258
  703. package/dist/resources/extensions/search-the-web/http.ts +0 -238
  704. package/dist/resources/extensions/search-the-web/index.ts +0 -65
  705. package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
  706. package/dist/resources/extensions/search-the-web/provider.ts +0 -148
  707. package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
  708. package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
  709. package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
  710. package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
  711. package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
  712. package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
  713. package/dist/resources/extensions/shared/frontmatter.ts +0 -117
  714. package/dist/resources/extensions/shared/interview-ui.ts +0 -613
  715. package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
  716. package/dist/resources/extensions/shared/sanitize.ts +0 -19
  717. package/dist/resources/extensions/shared/terminal.ts +0 -23
  718. package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
  719. package/dist/resources/extensions/shared/ui.ts +0 -400
  720. package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
  721. package/dist/resources/extensions/slash-commands/audit.ts +0 -88
  722. package/dist/resources/extensions/slash-commands/clear.ts +0 -10
  723. package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
  724. package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
  725. package/dist/resources/extensions/slash-commands/index.ts +0 -12
  726. package/dist/resources/extensions/subagent/agents.ts +0 -126
  727. package/dist/resources/extensions/subagent/index.ts +0 -1121
  728. package/dist/resources/extensions/subagent/isolation.ts +0 -501
  729. package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
  730. package/dist/resources/extensions/ttsr/index.ts +0 -168
  731. package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
  732. package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
  733. package/dist/resources/extensions/universal-config/discovery.ts +0 -104
  734. package/dist/resources/extensions/universal-config/format.ts +0 -191
  735. package/dist/resources/extensions/universal-config/index.ts +0 -120
  736. package/dist/resources/extensions/universal-config/scanners.ts +0 -642
  737. package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
  738. package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
  739. package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
  740. package/dist/resources/extensions/universal-config/tools.ts +0 -60
  741. package/dist/resources/extensions/universal-config/types.ts +0 -135
  742. package/dist/resources/extensions/voice/index.ts +0 -272
  743. package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
  744. package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
@@ -1,652 +0,0 @@
1
- import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync, existsSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { tmpdir } from "node:os";
4
-
5
- import { formatDoctorReport, runGSDDoctor, summarizeDoctorIssues, filterDoctorIssues, selectDoctorScope, validateTitle } from "../doctor.js";
6
- import { createTestContext } from './test-helpers.ts';
7
-
8
- const { assertEq, assertTrue, report } = createTestContext();
9
- const tmpBase = mkdtempSync(join(tmpdir(), "gsd-doctor-test-"));
10
- const gsd = join(tmpBase, ".gsd");
11
- const mDir = join(gsd, "milestones", "M001");
12
- const sDir = join(mDir, "slices", "S01");
13
- const tDir = join(sDir, "tasks");
14
- mkdirSync(tDir, { recursive: true });
15
-
16
- writeFileSync(join(mDir, "M001-ROADMAP.md"), `# M001: Test Milestone
17
-
18
- ## Slices
19
- - [ ] **S01: Demo Slice** \`risk:low\` \`depends:[]\`
20
- > After this: demo works
21
- `);
22
-
23
- writeFileSync(join(sDir, "S01-PLAN.md"), `# S01: Demo Slice
24
-
25
- **Goal:** Demo
26
- **Demo:** Demo
27
-
28
- ## Must-Haves
29
- - done
30
-
31
- ## Tasks
32
- - [x] **T01: Implement thing** \`est:10m\`
33
- Task is complete.
34
- `);
35
-
36
- writeFileSync(join(tDir, "T01-SUMMARY.md"), `---
37
- id: T01
38
- parent: S01
39
- milestone: M001
40
- provides: []
41
- requires: []
42
- affects: []
43
- key_files: []
44
- key_decisions: []
45
- patterns_established: []
46
- observability_surfaces: []
47
- drill_down_paths: []
48
- duration: 10m
49
- verification_result: passed
50
- completed_at: 2026-03-09T00:00:00Z
51
- ---
52
-
53
- # T01: Implement thing
54
-
55
- **Done**
56
-
57
- ## What Happened
58
- Implemented.
59
-
60
- ## Diagnostics
61
- - log
62
- `);
63
-
64
- async function main(): Promise<void> {
65
- console.log("\n=== doctor diagnose ===");
66
- {
67
- const report = await runGSDDoctor(tmpBase, { fix: false });
68
- assertTrue(!report.ok, "report is not ok when completion artifacts are missing");
69
- assertTrue(report.issues.some(issue => issue.code === "all_tasks_done_missing_slice_summary"), "detects missing slice summary");
70
- assertTrue(report.issues.some(issue => issue.code === "all_tasks_done_missing_slice_uat"), "detects missing slice UAT");
71
- }
72
-
73
- console.log("\n=== doctor formatting ===");
74
- {
75
- const report = await runGSDDoctor(tmpBase, { fix: false });
76
- const summary = summarizeDoctorIssues(report.issues);
77
- assertEq(summary.errors, 2, "two blocking errors in summary");
78
- const scoped = filterDoctorIssues(report.issues, { scope: "M001/S01", includeWarnings: true });
79
- assertTrue(scoped.length >= 2, "scope filter keeps slice issues");
80
- const text = formatDoctorReport(report, { scope: "M001/S01", includeWarnings: true, maxIssues: 5 });
81
- assertTrue(text.includes("Scope: M001/S01"), "formatted report shows scope");
82
- assertTrue(text.includes("Top issue types:"), "formatted report shows grouped issue types");
83
- }
84
-
85
- console.log("\n=== doctor default scope ===");
86
- {
87
- const scope = await selectDoctorScope(tmpBase);
88
- assertEq(scope, "M001/S01", "default doctor scope targets the active slice");
89
- }
90
-
91
- console.log("\n=== doctor fix ===");
92
- {
93
- const report = await runGSDDoctor(tmpBase, { fix: true });
94
- if (report.fixesApplied.length < 3) console.error(report);
95
- assertTrue(report.fixesApplied.length >= 3, "applies multiple fixes");
96
- assertTrue(existsSync(join(sDir, "S01-SUMMARY.md")), "creates placeholder slice summary");
97
- assertTrue(existsSync(join(sDir, "S01-UAT.md")), "creates placeholder UAT");
98
-
99
- const plan = readFileSync(join(sDir, "S01-PLAN.md"), "utf-8");
100
- assertTrue(plan.includes("- [x] **T01:"), "marks task checkbox done");
101
-
102
- const roadmap = readFileSync(join(mDir, "M001-ROADMAP.md"), "utf-8");
103
- assertTrue(roadmap.includes("- [x] **S01:"), "marks slice checkbox done");
104
-
105
- const state = readFileSync(join(gsd, "STATE.md"), "utf-8");
106
- assertTrue(state.includes("# GSD State"), "writes state file");
107
- }
108
-
109
- rmSync(tmpBase, { recursive: true, force: true });
110
-
111
- // ─── Milestone summary detection: missing summary ──────────────────────
112
- console.log("\n=== doctor detects missing milestone summary ===");
113
- {
114
- const msBase = mkdtempSync(join(tmpdir(), "gsd-doctor-ms-test-"));
115
- const msGsd = join(msBase, ".gsd");
116
- const msMDir = join(msGsd, "milestones", "M001");
117
- const msSDir = join(msMDir, "slices", "S01");
118
- const msTDir = join(msSDir, "tasks");
119
- mkdirSync(msTDir, { recursive: true });
120
-
121
- // Roadmap with ALL slices [x] — milestone is complete by slice status
122
- writeFileSync(join(msMDir, "M001-ROADMAP.md"), `# M001: Test Milestone
123
-
124
- ## Slices
125
- - [x] **S01: Done Slice** \`risk:low\` \`depends:[]\`
126
- > After this: done
127
- `);
128
-
129
- // Slice has plan with all tasks done
130
- writeFileSync(join(msSDir, "S01-PLAN.md"), `# S01: Done Slice
131
-
132
- **Goal:** Done
133
- **Demo:** Done
134
-
135
- ## Tasks
136
- - [x] **T01: Done Task** \`est:10m\`
137
- Done.
138
- `);
139
-
140
- // Task summary exists
141
- writeFileSync(join(msTDir, "T01-SUMMARY.md"), `---
142
- id: T01
143
- parent: S01
144
- milestone: M001
145
- ---
146
- # T01: Done
147
- **Done**
148
- ## What Happened
149
- Done.
150
- `);
151
-
152
- // Slice summary exists (so slice-level checks pass)
153
- writeFileSync(join(msSDir, "S01-SUMMARY.md"), `---
154
- id: S01
155
- parent: M001
156
- ---
157
- # S01: Done
158
- `);
159
-
160
- // Slice UAT exists (so slice-level checks pass)
161
- writeFileSync(join(msSDir, "S01-UAT.md"), `# S01 UAT\nDone.\n`);
162
-
163
- // NO milestone summary — this is the condition we're detecting
164
-
165
- const report = await runGSDDoctor(msBase, { fix: false });
166
- assertTrue(
167
- report.issues.some(issue => issue.code === "all_slices_done_missing_milestone_summary"),
168
- "detects missing milestone summary when all slices are done"
169
- );
170
- const msIssue = report.issues.find(issue => issue.code === "all_slices_done_missing_milestone_summary");
171
- assertEq(msIssue?.scope, "milestone", "milestone summary issue has scope 'milestone'");
172
- assertEq(msIssue?.severity, "warning", "milestone summary issue has severity 'warning'");
173
- assertEq(msIssue?.unitId, "M001", "milestone summary issue unitId is 'M001'");
174
- assertTrue(msIssue?.message?.includes("SUMMARY") ?? false, "milestone summary issue message mentions SUMMARY");
175
-
176
- rmSync(msBase, { recursive: true, force: true });
177
- }
178
-
179
- // ─── Milestone summary detection: summary present (no false positive) ──
180
- console.log("\n=== doctor does NOT flag milestone with summary ===");
181
- {
182
- const msBase = mkdtempSync(join(tmpdir(), "gsd-doctor-ms-ok-test-"));
183
- const msGsd = join(msBase, ".gsd");
184
- const msMDir = join(msGsd, "milestones", "M001");
185
- const msSDir = join(msMDir, "slices", "S01");
186
- const msTDir = join(msSDir, "tasks");
187
- mkdirSync(msTDir, { recursive: true });
188
-
189
- // Roadmap with ALL slices [x]
190
- writeFileSync(join(msMDir, "M001-ROADMAP.md"), `# M001: Test Milestone
191
-
192
- ## Slices
193
- - [x] **S01: Done Slice** \`risk:low\` \`depends:[]\`
194
- > After this: done
195
- `);
196
-
197
- writeFileSync(join(msSDir, "S01-PLAN.md"), `# S01: Done Slice
198
-
199
- **Goal:** Done
200
- **Demo:** Done
201
-
202
- ## Tasks
203
- - [x] **T01: Done Task** \`est:10m\`
204
- Done.
205
- `);
206
-
207
- writeFileSync(join(msTDir, "T01-SUMMARY.md"), `---
208
- id: T01
209
- parent: S01
210
- milestone: M001
211
- ---
212
- # T01: Done
213
- **Done**
214
- ## What Happened
215
- Done.
216
- `);
217
-
218
- writeFileSync(join(msSDir, "S01-SUMMARY.md"), `---
219
- id: S01
220
- parent: M001
221
- ---
222
- # S01: Done
223
- `);
224
-
225
- writeFileSync(join(msSDir, "S01-UAT.md"), `# S01 UAT\nDone.\n`);
226
-
227
- // Milestone summary EXISTS
228
- writeFileSync(join(msMDir, "M001-SUMMARY.md"), `# M001 Summary\n\nMilestone complete.`);
229
-
230
- const report = await runGSDDoctor(msBase, { fix: false });
231
- assertTrue(
232
- !report.issues.some(issue => issue.code === "all_slices_done_missing_milestone_summary"),
233
- "does NOT report missing milestone summary when summary exists"
234
- );
235
-
236
- rmSync(msBase, { recursive: true, force: true });
237
- }
238
-
239
- // ─── blocker_discovered_no_replan detection ────────────────────────────
240
- console.log("\n=== doctor detects blocker_discovered_no_replan ===");
241
- {
242
- const bBase = mkdtempSync(join(tmpdir(), "gsd-doctor-blocker-test-"));
243
- const bGsd = join(bBase, ".gsd");
244
- const bMDir = join(bGsd, "milestones", "M001");
245
- const bSDir = join(bMDir, "slices", "S01");
246
- const bTDir = join(bSDir, "tasks");
247
- mkdirSync(bTDir, { recursive: true });
248
-
249
- writeFileSync(join(bMDir, "M001-ROADMAP.md"), `# M001: Test Milestone
250
-
251
- ## Slices
252
- - [ ] **S01: Test Slice** \`risk:low\` \`depends:[]\`
253
- > After this: stuff works
254
- `);
255
-
256
- writeFileSync(join(bSDir, "S01-PLAN.md"), `# S01: Test Slice
257
-
258
- **Goal:** Test
259
- **Demo:** Test
260
-
261
- ## Tasks
262
- - [x] **T01: First task** \`est:10m\`
263
- First task.
264
-
265
- - [ ] **T02: Second task** \`est:10m\`
266
- Second task.
267
- `);
268
-
269
- // Task summary with blocker_discovered: true
270
- writeFileSync(join(bTDir, "T01-SUMMARY.md"), `---
271
- id: T01
272
- parent: S01
273
- milestone: M001
274
- provides: []
275
- key_files: []
276
- key_decisions: []
277
- patterns_established: []
278
- observability_surfaces: []
279
- duration: 10m
280
- verification_result: passed
281
- completed_at: 2026-03-10T00:00:00Z
282
- blocker_discovered: true
283
- ---
284
-
285
- # T01: First task
286
-
287
- **Found a blocker.**
288
-
289
- ## What Happened
290
-
291
- Discovered an issue.
292
- `);
293
-
294
- // No REPLAN.md — should trigger the issue
295
- const report = await runGSDDoctor(bBase, { fix: false });
296
- const blockerIssues = report.issues.filter(i => i.code === "blocker_discovered_no_replan");
297
- assertTrue(blockerIssues.length > 0, "detects blocker_discovered_no_replan");
298
- assertEq(blockerIssues[0]?.severity, "warning", "blocker issue has warning severity");
299
- assertEq(blockerIssues[0]?.scope, "slice", "blocker issue has slice scope");
300
- assertTrue(blockerIssues[0]?.message?.includes("T01") ?? false, "blocker issue message mentions T01");
301
- assertTrue(blockerIssues[0]?.message?.includes("S01") ?? false, "blocker issue message mentions S01");
302
-
303
- rmSync(bBase, { recursive: true, force: true });
304
- }
305
-
306
- // ─── blocker_discovered with REPLAN.md (no false positive) ─────────────
307
- console.log("\n=== doctor does NOT flag blocker when REPLAN.md exists ===");
308
- {
309
- const bBase = mkdtempSync(join(tmpdir(), "gsd-doctor-blocker-ok-test-"));
310
- const bGsd = join(bBase, ".gsd");
311
- const bMDir = join(bGsd, "milestones", "M001");
312
- const bSDir = join(bMDir, "slices", "S01");
313
- const bTDir = join(bSDir, "tasks");
314
- mkdirSync(bTDir, { recursive: true });
315
-
316
- writeFileSync(join(bMDir, "M001-ROADMAP.md"), `# M001: Test Milestone
317
-
318
- ## Slices
319
- - [ ] **S01: Test Slice** \`risk:low\` \`depends:[]\`
320
- > After this: stuff works
321
- `);
322
-
323
- writeFileSync(join(bSDir, "S01-PLAN.md"), `# S01: Test Slice
324
-
325
- **Goal:** Test
326
- **Demo:** Test
327
-
328
- ## Tasks
329
- - [x] **T01: First task** \`est:10m\`
330
- First task.
331
-
332
- - [ ] **T02: Second task** \`est:10m\`
333
- Second task.
334
- `);
335
-
336
- writeFileSync(join(bTDir, "T01-SUMMARY.md"), `---
337
- id: T01
338
- parent: S01
339
- milestone: M001
340
- blocker_discovered: true
341
- completed_at: 2026-03-10T00:00:00Z
342
- ---
343
-
344
- # T01: First task
345
-
346
- **Found a blocker.**
347
-
348
- ## What Happened
349
-
350
- Discovered an issue.
351
- `);
352
-
353
- // REPLAN.md exists — should NOT trigger
354
- writeFileSync(join(bSDir, "S01-REPLAN.md"), `# Replan\n\nAlready replanned.`);
355
-
356
- const report = await runGSDDoctor(bBase, { fix: false });
357
- const blockerIssues = report.issues.filter(i => i.code === "blocker_discovered_no_replan");
358
- assertEq(blockerIssues.length, 0, "no blocker_discovered_no_replan when REPLAN.md exists");
359
-
360
- rmSync(bBase, { recursive: true, force: true });
361
- }
362
-
363
- // ─── Must-have verification: all addressed → no issue ─────────────────
364
- console.log("\n=== doctor: done task with must-haves all addressed → no issue ===");
365
- {
366
- const mhBase = mkdtempSync(join(tmpdir(), "gsd-doctor-mh-ok-"));
367
- const mhGsd = join(mhBase, ".gsd");
368
- const mhMDir = join(mhGsd, "milestones", "M001");
369
- const mhSDir = join(mhMDir, "slices", "S01");
370
- const mhTDir = join(mhSDir, "tasks");
371
- mkdirSync(mhTDir, { recursive: true });
372
-
373
- writeFileSync(join(mhMDir, "M001-ROADMAP.md"), `# M001: Test\n\n## Slices\n- [ ] **S01: Slice** \`risk:low\` \`depends:[]\`\n > After this: done\n`);
374
- writeFileSync(join(mhSDir, "S01-PLAN.md"), `# S01: Slice\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [x] **T01: Implement** \`est:10m\`\n Done.\n`);
375
-
376
- // Task plan with must-haves
377
- writeFileSync(join(mhTDir, "T01-PLAN.md"), `# T01: Implement\n\n## Must-Haves\n\n- [ ] \`parseWidgets\` function exported\n- [ ] Unit tests pass with zero failures\n`);
378
-
379
- // Summary mentioning both must-haves
380
- writeFileSync(join(mhTDir, "T01-SUMMARY.md"), `---\nid: T01\nparent: S01\nmilestone: M001\n---\n# T01: Implement\n\n## What Happened\nAdded parseWidgets function. Unit tests pass with zero failures.\n`);
381
-
382
- const report = await runGSDDoctor(mhBase, { fix: false });
383
- assertTrue(
384
- !report.issues.some(i => i.code === "task_done_must_haves_not_verified"),
385
- "no must-have issue when all must-haves are addressed"
386
- );
387
-
388
- rmSync(mhBase, { recursive: true, force: true });
389
- }
390
-
391
- // ─── Must-have verification: not addressed → warning fired ───────────
392
- console.log("\n=== doctor: done task with must-haves NOT addressed → warning ===");
393
- {
394
- const mhBase = mkdtempSync(join(tmpdir(), "gsd-doctor-mh-fail-"));
395
- const mhGsd = join(mhBase, ".gsd");
396
- const mhMDir = join(mhGsd, "milestones", "M001");
397
- const mhSDir = join(mhMDir, "slices", "S01");
398
- const mhTDir = join(mhSDir, "tasks");
399
- mkdirSync(mhTDir, { recursive: true });
400
-
401
- writeFileSync(join(mhMDir, "M001-ROADMAP.md"), `# M001: Test\n\n## Slices\n- [ ] **S01: Slice** \`risk:low\` \`depends:[]\`\n > After this: done\n`);
402
- writeFileSync(join(mhSDir, "S01-PLAN.md"), `# S01: Slice\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [x] **T01: Implement** \`est:10m\`\n Done.\n`);
403
-
404
- // Task plan with 3 must-haves
405
- writeFileSync(join(mhTDir, "T01-PLAN.md"), `# T01: Implement\n\n## Must-Haves\n\n- [ ] \`parseWidgets\` function exported\n- [ ] \`countWidgets\` utility added\n- [ ] Full regression suite passes\n`);
406
-
407
- // Summary mentions only parseWidgets — the other two are missing
408
- writeFileSync(join(mhTDir, "T01-SUMMARY.md"), `---\nid: T01\nparent: S01\nmilestone: M001\n---\n# T01: Implement\n\n## What Happened\nAdded parseWidgets function.\n`);
409
-
410
- const report = await runGSDDoctor(mhBase, { fix: false });
411
- const mhIssue = report.issues.find(i => i.code === "task_done_must_haves_not_verified");
412
- assertTrue(!!mhIssue, "must-have issue is fired when summary doesn't address all must-haves");
413
- assertEq(mhIssue?.severity, "warning", "must-have issue is warning severity");
414
- assertEq(mhIssue?.scope, "task", "must-have issue scope is task");
415
- assertTrue(mhIssue?.message?.includes("3 must-haves") ?? false, "message mentions total must-have count");
416
- assertTrue(mhIssue?.message?.includes("only 1") ?? false, "message mentions addressed count");
417
- assertEq(mhIssue?.fixable, false, "must-have issue is not fixable");
418
-
419
- rmSync(mhBase, { recursive: true, force: true });
420
- }
421
-
422
- // ─── Must-have verification: no task plan → no issue ─────────────────
423
- console.log("\n=== doctor: done task with no task plan file → no issue ===");
424
- {
425
- const mhBase = mkdtempSync(join(tmpdir(), "gsd-doctor-mh-noplan-"));
426
- const mhGsd = join(mhBase, ".gsd");
427
- const mhMDir = join(mhGsd, "milestones", "M001");
428
- const mhSDir = join(mhMDir, "slices", "S01");
429
- const mhTDir = join(mhSDir, "tasks");
430
- mkdirSync(mhTDir, { recursive: true });
431
-
432
- writeFileSync(join(mhMDir, "M001-ROADMAP.md"), `# M001: Test\n\n## Slices\n- [ ] **S01: Slice** \`risk:low\` \`depends:[]\`\n > After this: done\n`);
433
- writeFileSync(join(mhSDir, "S01-PLAN.md"), `# S01: Slice\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [x] **T01: Implement** \`est:10m\`\n Done.\n`);
434
-
435
- // NO task plan file — just a summary
436
- writeFileSync(join(mhTDir, "T01-SUMMARY.md"), `---\nid: T01\nparent: S01\nmilestone: M001\n---\n# T01: Implement\n\n## What Happened\nDone.\n`);
437
-
438
- const report = await runGSDDoctor(mhBase, { fix: false });
439
- assertTrue(
440
- !report.issues.some(i => i.code === "task_done_must_haves_not_verified"),
441
- "no must-have issue when task plan file doesn't exist"
442
- );
443
-
444
- rmSync(mhBase, { recursive: true, force: true });
445
- }
446
-
447
- // ─── Must-have verification: plan exists but no Must-Haves section → no issue
448
- console.log("\n=== doctor: done task with plan but no Must-Haves section → no issue ===");
449
- {
450
- const mhBase = mkdtempSync(join(tmpdir(), "gsd-doctor-mh-nosect-"));
451
- const mhGsd = join(mhBase, ".gsd");
452
- const mhMDir = join(mhGsd, "milestones", "M001");
453
- const mhSDir = join(mhMDir, "slices", "S01");
454
- const mhTDir = join(mhSDir, "tasks");
455
- mkdirSync(mhTDir, { recursive: true });
456
-
457
- writeFileSync(join(mhMDir, "M001-ROADMAP.md"), `# M001: Test\n\n## Slices\n- [ ] **S01: Slice** \`risk:low\` \`depends:[]\`\n > After this: done\n`);
458
- writeFileSync(join(mhSDir, "S01-PLAN.md"), `# S01: Slice\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [x] **T01: Implement** \`est:10m\`\n Done.\n`);
459
-
460
- // Task plan with NO Must-Haves section
461
- writeFileSync(join(mhTDir, "T01-PLAN.md"), `# T01: Implement\n\n## Steps\n\n1. Do the thing.\n\n## Verification\n\n- Run tests.\n`);
462
-
463
- writeFileSync(join(mhTDir, "T01-SUMMARY.md"), `---\nid: T01\nparent: S01\nmilestone: M001\n---\n# T01: Implement\n\n## What Happened\nDone.\n`);
464
-
465
- const report = await runGSDDoctor(mhBase, { fix: false });
466
- assertTrue(
467
- !report.issues.some(i => i.code === "task_done_must_haves_not_verified"),
468
- "no must-have issue when task plan has no Must-Haves section"
469
- );
470
-
471
- rmSync(mhBase, { recursive: true, force: true });
472
- }
473
-
474
- // ─── validateTitle: em dash and slash detection ────────────────────────
475
- console.log("\n=== validateTitle: returns null for clean titles ===");
476
- {
477
- assertEq(validateTitle("Foundation"), null, "clean title passes");
478
- assertEq(validateTitle("Build Core Systems"), null, "clean title with spaces passes");
479
- assertEq(validateTitle("API v2 Integration"), null, "clean title with version passes");
480
- assertEq(validateTitle(""), null, "empty title passes");
481
- }
482
-
483
- console.log("\n=== validateTitle: detects em dash ===");
484
- {
485
- const result = validateTitle("Foundation — Build Core");
486
- assertTrue(result !== null, "detects em dash in title");
487
- assertTrue(result!.includes("em/en dash"), "message mentions em/en dash");
488
- }
489
-
490
- console.log("\n=== validateTitle: detects en dash ===");
491
- {
492
- const result = validateTitle("Phase 1 – Phase 2");
493
- assertTrue(result !== null, "detects en dash in title");
494
- assertTrue(result!.includes("em/en dash"), "message mentions em/en dash for en dash");
495
- }
496
-
497
- console.log("\n=== validateTitle: detects forward slash ===");
498
- {
499
- const result = validateTitle("Client/Server");
500
- assertTrue(result !== null, "detects forward slash in title");
501
- assertTrue(result!.includes("forward slash"), "message mentions forward slash");
502
- }
503
-
504
- console.log("\n=== validateTitle: detects both em dash and slash ===");
505
- {
506
- const result = validateTitle("Client — Server/API");
507
- assertTrue(result !== null, "detects both delimiters");
508
- assertTrue(result!.includes("em/en dash"), "message mentions em/en dash");
509
- assertTrue(result!.includes("forward slash"), "message mentions forward slash");
510
- }
511
-
512
- // ─── doctor detects delimiter_in_title for milestone ───────────────────
513
- console.log("\n=== doctor detects em dash in milestone title ===");
514
- {
515
- const dtBase = mkdtempSync(join(tmpdir(), "gsd-doctor-dt-test-"));
516
- const dtGsd = join(dtBase, ".gsd");
517
- const dtMDir = join(dtGsd, "milestones", "M001");
518
- const dtSDir = join(dtMDir, "slices", "S01");
519
- const dtTDir = join(dtSDir, "tasks");
520
- mkdirSync(dtTDir, { recursive: true });
521
-
522
- // Roadmap with em dash in milestone title
523
- writeFileSync(join(dtMDir, "M001-ROADMAP.md"), `# M001: Foundation — Build Core\n\n## Slices\n- [ ] **S01: Demo Slice** \`risk:low\` \`depends:[]\`\n > After this: demo works\n`);
524
- writeFileSync(join(dtSDir, "S01-PLAN.md"), `# S01: Demo Slice\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [ ] **T01: Implement** \`est:10m\`\n Task.\n`);
525
- writeFileSync(join(dtTDir, "T01-PLAN.md"), `# T01: Implement\n\n## Steps\n\n1. Do the thing.\n`);
526
-
527
- const report = await runGSDDoctor(dtBase, { fix: false });
528
- const dtIssues = report.issues.filter(i => i.code === "delimiter_in_title");
529
- assertTrue(dtIssues.length >= 1, "detects delimiter_in_title for milestone with em dash");
530
- const milestoneIssue = dtIssues.find(i => i.scope === "milestone");
531
- assertTrue(milestoneIssue !== undefined, "delimiter issue has milestone scope");
532
- assertEq(milestoneIssue?.severity, "warning", "delimiter issue has warning severity");
533
- assertEq(milestoneIssue?.unitId, "M001", "delimiter issue unitId is M001");
534
- assertTrue(milestoneIssue?.message?.includes("em/en dash") ?? false, "issue message mentions em/en dash");
535
- assertEq(milestoneIssue?.fixable, false, "delimiter issue is not auto-fixable");
536
-
537
- rmSync(dtBase, { recursive: true, force: true });
538
- }
539
-
540
- // ─── doctor detects delimiter_in_title for slice ────────────────────────
541
- console.log("\n=== doctor detects em dash in slice title ===");
542
- {
543
- const dtBase = mkdtempSync(join(tmpdir(), "gsd-doctor-dt-slice-"));
544
- const dtGsd = join(dtBase, ".gsd");
545
- const dtMDir = join(dtGsd, "milestones", "M001");
546
- const dtSDir = join(dtMDir, "slices", "S01");
547
- const dtTDir = join(dtSDir, "tasks");
548
- mkdirSync(dtTDir, { recursive: true });
549
-
550
- // Roadmap with em dash in slice title (milestone title is clean)
551
- writeFileSync(join(dtMDir, "M001-ROADMAP.md"), `# M001: Clean Milestone\n\n## Slices\n- [ ] **S01: Core — Foundation** \`risk:low\` \`depends:[]\`\n > After this: demo works\n`);
552
- writeFileSync(join(dtSDir, "S01-PLAN.md"), `# S01: Core — Foundation\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [ ] **T01: Implement** \`est:10m\`\n Task.\n`);
553
- writeFileSync(join(dtTDir, "T01-PLAN.md"), `# T01: Implement\n\n## Steps\n\n1. Do the thing.\n`);
554
-
555
- const report = await runGSDDoctor(dtBase, { fix: false });
556
- const dtIssues = report.issues.filter(i => i.code === "delimiter_in_title");
557
- assertTrue(dtIssues.length >= 1, "detects delimiter_in_title for slice with em dash");
558
- const sliceIssue = dtIssues.find(i => i.scope === "slice");
559
- assertTrue(sliceIssue !== undefined, "delimiter issue has slice scope");
560
- assertEq(sliceIssue?.severity, "warning", "slice delimiter issue has warning severity");
561
- assertEq(sliceIssue?.unitId, "M001/S01", "slice delimiter issue unitId is M001/S01");
562
-
563
- rmSync(dtBase, { recursive: true, force: true });
564
- }
565
-
566
- // ─── doctor does NOT flag clean titles ──────────────────────────────────
567
- console.log("\n=== doctor does NOT flag milestone with clean title ===");
568
- {
569
- const dtBase = mkdtempSync(join(tmpdir(), "gsd-doctor-dt-clean-"));
570
- const dtGsd = join(dtBase, ".gsd");
571
- const dtMDir = join(dtGsd, "milestones", "M001");
572
- const dtSDir = join(dtMDir, "slices", "S01");
573
- const dtTDir = join(dtSDir, "tasks");
574
- mkdirSync(dtTDir, { recursive: true });
575
-
576
- // Roadmap with clean titles (no delimiters)
577
- writeFileSync(join(dtMDir, "M001-ROADMAP.md"), `# M001: Foundation Build Core\n\n## Slices\n- [ ] **S01: Demo Slice** \`risk:low\` \`depends:[]\`\n > After this: demo works\n`);
578
- writeFileSync(join(dtSDir, "S01-PLAN.md"), `# S01: Demo Slice\n\n**Goal:** Demo\n**Demo:** Demo\n\n## Tasks\n- [ ] **T01: Implement** \`est:10m\`\n Task.\n`);
579
- writeFileSync(join(dtTDir, "T01-PLAN.md"), `# T01: Implement\n\n## Steps\n\n1. Do the thing.\n`);
580
-
581
- const report = await runGSDDoctor(dtBase, { fix: false });
582
- const dtIssues = report.issues.filter(i => i.code === "delimiter_in_title");
583
- assertEq(dtIssues.length, 0, "no delimiter_in_title issues for clean titles");
584
-
585
- rmSync(dtBase, { recursive: true, force: true });
586
- }
587
-
588
- // ─── unresolvable_dependency: range syntax dep warns ─────────────────
589
- console.log("\n=== doctor: unresolvable_dependency warns for leftover range ID ===");
590
- {
591
- // Simulate a roadmap where expandDependencies did NOT expand (pre-fix stored artifact)
592
- // by writing a dep that looks like a range but doesn't match any real slice.
593
- const base = mkdtempSync(join(tmpdir(), "gsd-doctor-udep-"));
594
- const mDir2 = join(base, ".gsd", "milestones", "M001");
595
- const sDir2 = join(mDir2, "slices", "S01");
596
- const tDir2 = join(sDir2, "tasks");
597
- mkdirSync(tDir2, { recursive: true });
598
- writeFileSync(join(mDir2, "M001-ROADMAP.md"), [
599
- "# M001: Test",
600
- "",
601
- "## Slices",
602
- "- [x] **S01: Done** `risk:low` `depends:[]`",
603
- " > After this: done",
604
- "- [ ] **S02: Blocked** `risk:low` `depends:[S99]`",
605
- " > After this: also done",
606
- ].join("\n") + "\n");
607
- writeFileSync(join(sDir2, "S01-PLAN.md"), "# S01\n\n**Goal:** g\n**Demo:** d\n\n## Tasks\n- [x] **T01: t** `est:5m`\n");
608
- writeFileSync(join(tDir2, "T01-SUMMARY.md"), "---\nid: T01\nparent: S01\nmilestone: M001\n---\n# T01\n## What Happened\nDone.\n");
609
-
610
- const r = await runGSDDoctor(base, { fix: false });
611
- const udepIssues = r.issues.filter(i => i.code === "unresolvable_dependency");
612
- assertTrue(udepIssues.length > 0, "unresolvable_dependency fires for unknown dep S99");
613
- assertEq(udepIssues[0]?.severity, "warning", "severity is warning");
614
- assertTrue(udepIssues[0]?.message.includes("S99"), "message names the bad dep");
615
-
616
- rmSync(base, { recursive: true, force: true });
617
- }
618
-
619
- // ─── unresolvable_dependency: valid deps do not warn ─────────────────
620
- console.log("\n=== doctor: no unresolvable_dependency for valid deps ===");
621
- {
622
- const base = mkdtempSync(join(tmpdir(), "gsd-doctor-udep-ok-"));
623
- const mDir2 = join(base, ".gsd", "milestones", "M001");
624
- const sDir2 = join(mDir2, "slices", "S01");
625
- const tDir2 = join(sDir2, "tasks");
626
- mkdirSync(tDir2, { recursive: true });
627
- writeFileSync(join(mDir2, "M001-ROADMAP.md"), [
628
- "# M001: Test",
629
- "",
630
- "## Slices",
631
- "- [x] **S01: Done** `risk:low` `depends:[]`",
632
- " > After this: done",
633
- "- [ ] **S02: Next** `risk:low` `depends:[S01]`",
634
- " > After this: next done",
635
- ].join("\n") + "\n");
636
- writeFileSync(join(sDir2, "S01-PLAN.md"), "# S01\n\n**Goal:** g\n**Demo:** d\n\n## Tasks\n- [x] **T01: t** `est:5m`\n");
637
- writeFileSync(join(tDir2, "T01-SUMMARY.md"), "---\nid: T01\nparent: S01\nmilestone: M001\n---\n# T01\n## What Happened\nDone.\n");
638
-
639
- const r = await runGSDDoctor(base, { fix: false });
640
- const udepIssues = r.issues.filter(i => i.code === "unresolvable_dependency");
641
- assertEq(udepIssues.length, 0, "no unresolvable_dependency for valid S01 dep");
642
-
643
- rmSync(base, { recursive: true, force: true });
644
- }
645
-
646
- report();
647
- }
648
-
649
- main().catch((error) => {
650
- console.error(error);
651
- process.exit(1);
652
- });