gsd-pi 2.33.1-dev.29a8268 → 2.33.1-dev.bf822e6

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 (758) hide show
  1. package/dist/cli.js +16 -0
  2. package/dist/resource-loader.d.ts +2 -0
  3. package/dist/resource-loader.js +39 -4
  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 +665 -0
  78. package/dist/resources/extensions/gsd/auto.js +1495 -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-ai/dist/models.generated.d.ts +5498 -3645
  276. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  277. package/packages/pi-ai/dist/models.generated.js +2595 -742
  278. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  279. package/packages/pi-ai/src/models.generated.ts +2852 -999
  280. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  281. package/packages/pi-coding-agent/dist/core/agent-session.js +9 -0
  282. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  283. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  284. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  285. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  286. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  287. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -0
  288. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  289. package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
  290. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  291. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  292. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  293. package/packages/pi-coding-agent/dist/index.js +1 -1
  294. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  295. package/packages/pi-coding-agent/src/core/agent-session.ts +9 -0
  296. package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
  297. package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
  298. package/packages/pi-coding-agent/src/index.ts +1 -0
  299. package/packages/pi-tui/dist/utils.d.ts.map +1 -1
  300. package/packages/pi-tui/dist/utils.js +32 -2
  301. package/packages/pi-tui/dist/utils.js.map +1 -1
  302. package/packages/pi-tui/src/utils.ts +28 -2
  303. package/src/resources/extensions/bg-shell/index.ts +41 -46
  304. package/src/resources/extensions/browser-tools/index.ts +156 -67
  305. package/src/resources/extensions/gsd/auto-verification.ts +20 -2
  306. package/src/resources/extensions/gsd/auto-worktree.ts +74 -2
  307. package/src/resources/extensions/gsd/auto.ts +11 -0
  308. package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
  309. package/src/resources/extensions/gsd/commands.ts +39 -31
  310. package/src/resources/extensions/gsd/git-service.ts +7 -0
  311. package/src/resources/extensions/gsd/guided-flow.ts +22 -11
  312. package/src/resources/extensions/gsd/index.ts +93 -32
  313. package/src/resources/extensions/gsd/quick.ts +52 -3
  314. package/src/resources/extensions/gsd/repo-identity.ts +56 -22
  315. package/src/resources/extensions/gsd/session-lock.ts +6 -0
  316. package/src/resources/extensions/gsd/tests/loop-regression.test.ts +1 -4
  317. package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
  318. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
  319. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +65 -0
  320. package/src/resources/extensions/gsd/types.ts +4 -0
  321. package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
  322. package/src/resources/extensions/gsd/verification-gate.ts +23 -2
  323. package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
  324. package/src/resources/extensions/gsd/worktree-command.ts +17 -11
  325. package/src/resources/extensions/package.json +3 -0
  326. package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
  327. package/src/resources/extensions/search-the-web/index.ts +35 -52
  328. package/src/resources/extensions/search-the-web/tavily.ts +1 -1
  329. package/dist/resources/extensions/ask-user-questions.ts +0 -290
  330. package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
  331. package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
  332. package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
  333. package/dist/resources/extensions/async-jobs/index.ts +0 -141
  334. package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
  335. package/dist/resources/extensions/aws-auth/index.ts +0 -144
  336. package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
  337. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
  338. package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
  339. package/dist/resources/extensions/bg-shell/index.ts +0 -59
  340. package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
  341. package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
  342. package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
  343. package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
  344. package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
  345. package/dist/resources/extensions/bg-shell/types.ts +0 -303
  346. package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
  347. package/dist/resources/extensions/browser-tools/capture.ts +0 -199
  348. package/dist/resources/extensions/browser-tools/core.ts +0 -1196
  349. package/dist/resources/extensions/browser-tools/index.ts +0 -71
  350. package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
  351. package/dist/resources/extensions/browser-tools/refs.ts +0 -264
  352. package/dist/resources/extensions/browser-tools/settle.ts +0 -197
  353. package/dist/resources/extensions/browser-tools/state.ts +0 -408
  354. package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
  355. package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
  356. package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
  357. package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
  358. package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
  359. package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
  360. package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
  361. package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
  362. package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
  363. package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
  364. package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
  365. package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
  366. package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
  367. package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
  368. package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
  369. package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
  370. package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
  371. package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
  372. package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
  373. package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
  374. package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
  375. package/dist/resources/extensions/browser-tools/utils.ts +0 -660
  376. package/dist/resources/extensions/context7/index.ts +0 -428
  377. package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
  378. package/dist/resources/extensions/google-search/index.ts +0 -466
  379. package/dist/resources/extensions/gsd/activity-log.ts +0 -162
  380. package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
  381. package/dist/resources/extensions/gsd/auto/session.ts +0 -236
  382. package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
  383. package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
  384. package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
  385. package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
  386. package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
  387. package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
  388. package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
  389. package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
  390. package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
  391. package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
  392. package/dist/resources/extensions/gsd/auto-start.ts +0 -483
  393. package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
  394. package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
  395. package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
  396. package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
  397. package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
  398. package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
  399. package/dist/resources/extensions/gsd/auto-worktree.ts +0 -658
  400. package/dist/resources/extensions/gsd/auto.ts +0 -1834
  401. package/dist/resources/extensions/gsd/captures.ts +0 -427
  402. package/dist/resources/extensions/gsd/claude-import.ts +0 -656
  403. package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
  404. package/dist/resources/extensions/gsd/commands-config.ts +0 -102
  405. package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
  406. package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
  407. package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
  408. package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
  409. package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
  410. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
  411. package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
  412. package/dist/resources/extensions/gsd/commands.ts +0 -1149
  413. package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
  414. package/dist/resources/extensions/gsd/context-budget.ts +0 -266
  415. package/dist/resources/extensions/gsd/context-store.ts +0 -195
  416. package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
  417. package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
  418. package/dist/resources/extensions/gsd/db-writer.ts +0 -360
  419. package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
  420. package/dist/resources/extensions/gsd/detection.ts +0 -470
  421. package/dist/resources/extensions/gsd/diff-context.ts +0 -214
  422. package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
  423. package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
  424. package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
  425. package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
  426. package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
  427. package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
  428. package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
  429. package/dist/resources/extensions/gsd/doctor.ts +0 -722
  430. package/dist/resources/extensions/gsd/error-utils.ts +0 -6
  431. package/dist/resources/extensions/gsd/exit-command.ts +0 -18
  432. package/dist/resources/extensions/gsd/export.ts +0 -317
  433. package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
  434. package/dist/resources/extensions/gsd/files.ts +0 -1058
  435. package/dist/resources/extensions/gsd/forensics.ts +0 -629
  436. package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
  437. package/dist/resources/extensions/gsd/git-service.ts +0 -586
  438. package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
  439. package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
  440. package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
  441. package/dist/resources/extensions/gsd/health-widget.ts +0 -167
  442. package/dist/resources/extensions/gsd/history.ts +0 -143
  443. package/dist/resources/extensions/gsd/index.ts +0 -1401
  444. package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
  445. package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
  446. package/dist/resources/extensions/gsd/key-manager.ts +0 -996
  447. package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
  448. package/dist/resources/extensions/gsd/md-importer.ts +0 -527
  449. package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
  450. package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
  451. package/dist/resources/extensions/gsd/memory-store.ts +0 -441
  452. package/dist/resources/extensions/gsd/metrics.ts +0 -532
  453. package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
  454. package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
  455. package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
  456. package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
  457. package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
  458. package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
  459. package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
  460. package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
  461. package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
  462. package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
  463. package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
  464. package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
  465. package/dist/resources/extensions/gsd/model-router.ts +0 -256
  466. package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
  467. package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
  468. package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
  469. package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
  470. package/dist/resources/extensions/gsd/notifications.ts +0 -87
  471. package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
  472. package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
  473. package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
  474. package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
  475. package/dist/resources/extensions/gsd/paths.ts +0 -449
  476. package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
  477. package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
  478. package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
  479. package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
  480. package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
  481. package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
  482. package/dist/resources/extensions/gsd/preferences.ts +0 -416
  483. package/dist/resources/extensions/gsd/progress-score.ts +0 -273
  484. package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
  485. package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
  486. package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
  487. package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
  488. package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
  489. package/dist/resources/extensions/gsd/queue-order.ts +0 -230
  490. package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
  491. package/dist/resources/extensions/gsd/quick.ts +0 -212
  492. package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
  493. package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
  494. package/dist/resources/extensions/gsd/routing-history.ts +0 -286
  495. package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
  496. package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
  497. package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
  498. package/dist/resources/extensions/gsd/session-lock.ts +0 -426
  499. package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
  500. package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
  501. package/dist/resources/extensions/gsd/skill-health.ts +0 -417
  502. package/dist/resources/extensions/gsd/state.ts +0 -727
  503. package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
  504. package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
  505. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
  506. package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
  507. package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
  508. package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
  509. package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
  510. package/dist/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +0 -691
  511. package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
  512. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
  513. package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
  514. package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
  515. package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
  516. package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
  517. package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
  518. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
  519. package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
  520. package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
  521. package/dist/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +0 -317
  522. package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
  523. package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
  524. package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
  525. package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
  526. package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
  527. package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
  528. package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
  529. package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
  530. package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
  531. package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
  532. package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
  533. package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
  534. package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
  535. package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
  536. package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
  537. package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
  538. package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
  539. package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
  540. package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
  541. package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
  542. package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
  543. package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
  544. package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
  545. package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
  546. package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
  547. package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
  548. package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
  549. package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
  550. package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
  551. package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
  552. package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
  553. package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
  554. package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
  555. package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
  556. package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
  557. package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
  558. package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
  559. package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
  560. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
  561. package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
  562. package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1181
  563. package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
  564. package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
  565. package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
  566. package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
  567. package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
  568. package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
  569. package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
  570. package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
  571. package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
  572. package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
  573. package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
  574. package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
  575. package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
  576. package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
  577. package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -877
  578. package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
  579. package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
  580. package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
  581. package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
  582. package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
  583. package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
  584. package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
  585. package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
  586. package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
  587. package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
  588. package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
  589. package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
  590. package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
  591. package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
  592. package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
  593. package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
  594. package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
  595. package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
  596. package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
  597. package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
  598. package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
  599. package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
  600. package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
  601. package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
  602. package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
  603. package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
  604. package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
  605. package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
  606. package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
  607. package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
  608. package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
  609. package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
  610. package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
  611. package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
  612. package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
  613. package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
  614. package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
  615. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
  616. package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
  617. package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
  618. package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
  619. package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
  620. package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
  621. package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
  622. package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
  623. package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
  624. package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
  625. package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
  626. package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
  627. package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
  628. package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
  629. package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
  630. package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
  631. package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
  632. package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
  633. package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
  634. package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
  635. package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
  636. package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
  637. package/dist/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +0 -358
  638. package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
  639. package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
  640. package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
  641. package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
  642. package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
  643. package/dist/resources/extensions/gsd/tests/session-lock-regression.test.ts +0 -216
  644. package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -434
  645. package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
  646. package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
  647. package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
  648. package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
  649. package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
  650. package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
  651. package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
  652. package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
  653. package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
  654. package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
  655. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
  656. package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
  657. package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
  658. package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
  659. package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
  660. package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
  661. package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
  662. package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
  663. package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
  664. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
  665. package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
  666. package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
  667. package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
  668. package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
  669. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
  670. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
  671. package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
  672. package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
  673. package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
  674. package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
  675. package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
  676. package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
  677. package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
  678. package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
  679. package/dist/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +0 -206
  680. package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
  681. package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
  682. package/dist/resources/extensions/gsd/token-counter.ts +0 -65
  683. package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
  684. package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
  685. package/dist/resources/extensions/gsd/types.ts +0 -425
  686. package/dist/resources/extensions/gsd/undo.ts +0 -223
  687. package/dist/resources/extensions/gsd/unit-id.ts +0 -14
  688. package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
  689. package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
  690. package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
  691. package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
  692. package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
  693. package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
  694. package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
  695. package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
  696. package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
  697. package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
  698. package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
  699. package/dist/resources/extensions/gsd/worktree.ts +0 -257
  700. package/dist/resources/extensions/mac-tools/index.ts +0 -852
  701. package/dist/resources/extensions/mcp-client/index.ts +0 -459
  702. package/dist/resources/extensions/remote-questions/config.ts +0 -83
  703. package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
  704. package/dist/resources/extensions/remote-questions/format.ts +0 -315
  705. package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
  706. package/dist/resources/extensions/remote-questions/manager.ts +0 -184
  707. package/dist/resources/extensions/remote-questions/notify.ts +0 -90
  708. package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
  709. package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
  710. package/dist/resources/extensions/remote-questions/status.ts +0 -31
  711. package/dist/resources/extensions/remote-questions/store.ts +0 -81
  712. package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
  713. package/dist/resources/extensions/remote-questions/types.ts +0 -102
  714. package/dist/resources/extensions/search-the-web/cache.ts +0 -78
  715. package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
  716. package/dist/resources/extensions/search-the-web/format.ts +0 -258
  717. package/dist/resources/extensions/search-the-web/http.ts +0 -238
  718. package/dist/resources/extensions/search-the-web/index.ts +0 -65
  719. package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
  720. package/dist/resources/extensions/search-the-web/provider.ts +0 -148
  721. package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
  722. package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
  723. package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
  724. package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
  725. package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
  726. package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
  727. package/dist/resources/extensions/shared/frontmatter.ts +0 -117
  728. package/dist/resources/extensions/shared/interview-ui.ts +0 -613
  729. package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
  730. package/dist/resources/extensions/shared/sanitize.ts +0 -19
  731. package/dist/resources/extensions/shared/terminal.ts +0 -23
  732. package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
  733. package/dist/resources/extensions/shared/ui.ts +0 -400
  734. package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
  735. package/dist/resources/extensions/slash-commands/audit.ts +0 -88
  736. package/dist/resources/extensions/slash-commands/clear.ts +0 -10
  737. package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
  738. package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
  739. package/dist/resources/extensions/slash-commands/index.ts +0 -12
  740. package/dist/resources/extensions/subagent/agents.ts +0 -126
  741. package/dist/resources/extensions/subagent/index.ts +0 -1121
  742. package/dist/resources/extensions/subagent/isolation.ts +0 -501
  743. package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
  744. package/dist/resources/extensions/ttsr/index.ts +0 -168
  745. package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
  746. package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
  747. package/dist/resources/extensions/universal-config/discovery.ts +0 -104
  748. package/dist/resources/extensions/universal-config/format.ts +0 -191
  749. package/dist/resources/extensions/universal-config/index.ts +0 -120
  750. package/dist/resources/extensions/universal-config/scanners.ts +0 -642
  751. package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
  752. package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
  753. package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
  754. package/dist/resources/extensions/universal-config/tools.ts +0 -60
  755. package/dist/resources/extensions/universal-config/types.ts +0 -135
  756. package/dist/resources/extensions/voice/index.ts +0 -272
  757. package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
  758. package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
@@ -1,356 +0,0 @@
1
- /**
2
- * Mechanical Completion — unit tests (ADR-003).
3
- *
4
- * Tests deterministic slice/milestone completion using fixture data.
5
- * Uses node:test + node:assert for consistency with token-profile.test.ts.
6
- */
7
-
8
- import test from "node:test";
9
- import assert from "node:assert/strict";
10
- import { mkdirSync, writeFileSync, readFileSync, rmSync, existsSync } from "node:fs";
11
- import { join } from "node:path";
12
- import { tmpdir } from "node:os";
13
- import { randomBytes } from "node:crypto";
14
-
15
- // ─── Fixture Helpers ──────────────────────────────────────────────────────────
16
-
17
- function createTmpBase(): string {
18
- const base = join(tmpdir(), `gsd-mech-test-${randomBytes(4).toString("hex")}`);
19
- mkdirSync(base, { recursive: true });
20
- return base;
21
- }
22
-
23
- function scaffold(base: string, mid: string, sid: string, taskSummaries: Array<{ tid: string; content: string }>) {
24
- const gsdRoot = join(base, ".gsd");
25
- const mDir = join(gsdRoot, "milestones", mid);
26
- const sDir = join(mDir, "slices", sid);
27
- const tDir = join(sDir, "tasks");
28
- mkdirSync(tDir, { recursive: true });
29
-
30
- for (const { tid, content } of taskSummaries) {
31
- writeFileSync(join(tDir, `${tid}-SUMMARY.md`), content, "utf-8");
32
- }
33
-
34
- return { gsdRoot, mDir, sDir, tDir };
35
- }
36
-
37
- function makeTaskSummary(tid: string, opts: {
38
- oneLiner?: string;
39
- provides?: string[];
40
- key_files?: string[];
41
- key_decisions?: string[];
42
- verification_result?: string;
43
- }): string {
44
- const lines: string[] = [
45
- "---",
46
- `id: ${tid}`,
47
- `parent: S01`,
48
- `milestone: M001`,
49
- ];
50
- if (opts.provides?.length) lines.push(`provides:\n${opts.provides.map(p => ` - ${p}`).join("\n")}`);
51
- if (opts.key_files?.length) lines.push(`key_files:\n${opts.key_files.map(f => ` - ${f}`).join("\n")}`);
52
- if (opts.key_decisions?.length) lines.push(`key_decisions:\n${opts.key_decisions.map(d => ` - ${d}`).join("\n")}`);
53
- lines.push(`verification_result: ${opts.verification_result ?? "passed"}`);
54
- lines.push("---");
55
- lines.push("");
56
- lines.push(`# ${tid}: Test Task`);
57
- lines.push("");
58
- if (opts.oneLiner) lines.push(`**${opts.oneLiner}**`);
59
- lines.push("");
60
- lines.push("## What Happened");
61
- lines.push("");
62
- lines.push(`Implemented the feature described in ${tid}. This was a significant change that modified multiple files across the codebase to support the new functionality.`);
63
- lines.push("");
64
- return lines.join("\n");
65
- }
66
-
67
- // ─── Source-level structural tests ────────────────────────────────────────────
68
-
69
- const mechanicalSrc = readFileSync(
70
- join(import.meta.dirname!, "..", "mechanical-completion.ts"),
71
- "utf-8",
72
- );
73
-
74
- test("mechanical-completion: exports mechanicalSliceCompletion", () => {
75
- assert.ok(
76
- mechanicalSrc.includes("export async function mechanicalSliceCompletion"),
77
- "should export mechanicalSliceCompletion",
78
- );
79
- });
80
-
81
- test("mechanical-completion: exports aggregateMilestoneVerification", () => {
82
- assert.ok(
83
- mechanicalSrc.includes("export async function aggregateMilestoneVerification"),
84
- "should export aggregateMilestoneVerification",
85
- );
86
- });
87
-
88
- test("mechanical-completion: exports generateMilestoneSummary", () => {
89
- assert.ok(
90
- mechanicalSrc.includes("export async function generateMilestoneSummary"),
91
- "should export generateMilestoneSummary",
92
- );
93
- });
94
-
95
- test("mechanical-completion: exports appendNewDecisions", () => {
96
- assert.ok(
97
- mechanicalSrc.includes("export async function appendNewDecisions"),
98
- "should export appendNewDecisions",
99
- );
100
- });
101
-
102
- test("mechanical-completion: uses atomicWriteSync for file writes", () => {
103
- assert.ok(
104
- mechanicalSrc.includes("atomicWriteSync"),
105
- "should use atomicWriteSync for safe file writes",
106
- );
107
- });
108
-
109
- test("mechanical-completion: quality gate checks summary length for multi-task slices", () => {
110
- assert.ok(
111
- mechanicalSrc.includes("totalContent.length < 200"),
112
- "should have quality gate for summary content length",
113
- );
114
- });
115
-
116
- test("mechanical-completion: marks slice [x] in roadmap", () => {
117
- assert.ok(
118
- mechanicalSrc.includes("markSliceInRoadmap"),
119
- "should mark slice done in roadmap",
120
- );
121
- });
122
-
123
- test("mechanical-completion: aggregates VERIFY.json files for milestone validation", () => {
124
- assert.ok(
125
- mechanicalSrc.includes("resolveTaskJsonFiles") && mechanicalSrc.includes("VERIFY"),
126
- "should read VERIFY.json files for milestone validation",
127
- );
128
- });
129
-
130
- test("mechanical-completion: deduplicates decisions against existing DECISIONS.md", () => {
131
- assert.ok(
132
- mechanicalSrc.includes("existing.includes(d.trim())"),
133
- "should deduplicate decisions against existing content",
134
- );
135
- });
136
-
137
- test("mechanical-completion: produces VALIDATION.md with verdict frontmatter", () => {
138
- assert.ok(
139
- mechanicalSrc.includes("verdict:") && mechanicalSrc.includes("remediation_round: 0"),
140
- "VALIDATION.md should have verdict and remediation_round frontmatter",
141
- );
142
- });
143
-
144
- // ─── Integration tests with fixture data ──────────────────────────────────────
145
-
146
- test("mechanical: slice completion with 2 task summaries produces SUMMARY.md", async () => {
147
- const base = createTmpBase();
148
- try {
149
- const mid = "M001";
150
- const sid = "S01";
151
-
152
- // Scaffold task summaries
153
- scaffold(base, mid, sid, [
154
- {
155
- tid: "T01",
156
- content: makeTaskSummary("T01", {
157
- oneLiner: "Set up project structure",
158
- provides: ["project-scaffold"],
159
- key_files: ["src/index.ts", "package.json"],
160
- verification_result: "passed",
161
- }),
162
- },
163
- {
164
- tid: "T02",
165
- content: makeTaskSummary("T02", {
166
- oneLiner: "Add core API endpoints",
167
- provides: ["api-endpoints"],
168
- key_files: ["src/api.ts"],
169
- key_decisions: ["Used Express over Fastify"],
170
- verification_result: "passed",
171
- }),
172
- },
173
- ]);
174
-
175
- // Write a roadmap with the slice unchecked
176
- const roadmapPath = join(base, ".gsd", "milestones", mid, `${mid}-ROADMAP.md`);
177
- writeFileSync(roadmapPath, `# Roadmap\n\n- [ ] **${sid}: First Slice**\n`, "utf-8");
178
-
179
- // Write a slice plan with Verification section
180
- const planPath = join(base, ".gsd", "milestones", mid, "slices", sid, `${sid}-PLAN.md`);
181
- writeFileSync(planPath, `# Plan\n\n## Verification\n\n- Run \`npm test\`\n- Check output\n`, "utf-8");
182
-
183
- // Dynamic import to get the actual module
184
- const { mechanicalSliceCompletion } = await import("../mechanical-completion.js");
185
- const ok = await mechanicalSliceCompletion(base, mid, sid);
186
-
187
- assert.ok(ok, "should return true for valid slice completion");
188
-
189
- // Check SUMMARY.md was written
190
- const summaryPath = join(base, ".gsd", "milestones", mid, "slices", sid, `${sid}-SUMMARY.md`);
191
- assert.ok(existsSync(summaryPath), "SUMMARY.md should exist");
192
-
193
- const summaryContent = readFileSync(summaryPath, "utf-8");
194
- assert.ok(summaryContent.includes("T01"), "summary should reference T01");
195
- assert.ok(summaryContent.includes("T02"), "summary should reference T02");
196
- assert.ok(summaryContent.includes("verification_result: passed"), "should have passed verification");
197
-
198
- // Check roadmap was updated
199
- const updatedRoadmap = readFileSync(roadmapPath, "utf-8");
200
- assert.ok(updatedRoadmap.includes("[x]"), "roadmap should have [x] checkbox");
201
-
202
- // Check UAT was written
203
- const uatPath = join(base, ".gsd", "milestones", mid, "slices", sid, `${sid}-UAT.md`);
204
- assert.ok(existsSync(uatPath), "UAT.md should exist");
205
- const uatContent = readFileSync(uatPath, "utf-8");
206
- assert.ok(uatContent.includes("npm test"), "UAT should contain verification content");
207
- } finally {
208
- rmSync(base, { recursive: true, force: true });
209
- }
210
- });
211
-
212
- test("mechanical: returns false for empty task summaries", async () => {
213
- const base = createTmpBase();
214
- try {
215
- const mid = "M001";
216
- const sid = "S01";
217
- scaffold(base, mid, sid, []);
218
-
219
- const { mechanicalSliceCompletion } = await import("../mechanical-completion.js");
220
- const ok = await mechanicalSliceCompletion(base, mid, sid);
221
- assert.ok(!ok, "should return false when no summaries exist");
222
- } finally {
223
- rmSync(base, { recursive: true, force: true });
224
- }
225
- });
226
-
227
- test("mechanical: returns false for insufficient summary content in multi-task slice", async () => {
228
- const base = createTmpBase();
229
- try {
230
- const mid = "M001";
231
- const sid = "S01";
232
-
233
- // Two tasks but with very short content (under 200 chars)
234
- scaffold(base, mid, sid, [
235
- { tid: "T01", content: "---\nid: T01\nparent: S01\nmilestone: M001\n---\n\n# T01: A\n\n**Short**\n" },
236
- { tid: "T02", content: "---\nid: T02\nparent: S01\nmilestone: M001\n---\n\n# T02: B\n\n**Brief**\n" },
237
- ]);
238
-
239
- const { mechanicalSliceCompletion } = await import("../mechanical-completion.js");
240
- const ok = await mechanicalSliceCompletion(base, mid, sid);
241
- assert.ok(!ok, "should return false when summaries are too short");
242
- } finally {
243
- rmSync(base, { recursive: true, force: true });
244
- }
245
- });
246
-
247
- test("mechanical: milestone verification aggregates VERIFY.json files", async () => {
248
- const base = createTmpBase();
249
- try {
250
- const mid = "M001";
251
- const sid = "S01";
252
- const { tDir } = scaffold(base, mid, sid, []);
253
-
254
- // Write VERIFY.json files
255
- const evidence = {
256
- schemaVersion: 1,
257
- taskId: "T01",
258
- unitId: "M001/S01/T01",
259
- timestamp: Date.now(),
260
- passed: true,
261
- discoverySource: "plan",
262
- checks: [
263
- { command: "npm test", exitCode: 0, durationMs: 1500, verdict: "pass", blocking: true },
264
- ],
265
- };
266
- writeFileSync(join(tDir, "T01-VERIFY.json"), JSON.stringify(evidence), "utf-8");
267
-
268
- const evidence2 = { ...evidence, taskId: "T02", passed: false, checks: [
269
- { command: "npm test", exitCode: 1, durationMs: 500, verdict: "fail", blocking: true },
270
- ]};
271
- writeFileSync(join(tDir, "T02-VERIFY.json"), JSON.stringify(evidence2), "utf-8");
272
-
273
- const { aggregateMilestoneVerification } = await import("../mechanical-completion.js");
274
- const result = await aggregateMilestoneVerification(base, mid);
275
-
276
- assert.equal(result.verdict, "mixed", "should be mixed when some pass and some fail");
277
- assert.equal(result.checks.length, 2, "should have 2 checks");
278
-
279
- // Check VALIDATION.md was written
280
- const validationPath = join(base, ".gsd", "milestones", mid, `${mid}-VALIDATION.md`);
281
- assert.ok(existsSync(validationPath), "VALIDATION.md should exist");
282
- const validationContent = readFileSync(validationPath, "utf-8");
283
- assert.ok(validationContent.includes("verdict: mixed"), "should have mixed verdict in frontmatter");
284
- } finally {
285
- rmSync(base, { recursive: true, force: true });
286
- }
287
- });
288
-
289
- test("mechanical: milestone summary aggregates slice summaries", async () => {
290
- const base = createTmpBase();
291
- try {
292
- const mid = "M001";
293
-
294
- // Create two slices with summaries
295
- for (const sid of ["S01", "S02"]) {
296
- const sDir = join(base, ".gsd", "milestones", mid, "slices", sid);
297
- mkdirSync(sDir, { recursive: true });
298
- writeFileSync(
299
- join(sDir, `${sid}-SUMMARY.md`),
300
- `---\nid: ${sid}\nprovides:\n - feature-${sid.toLowerCase()}\nkey_files:\n - src/${sid.toLowerCase()}.ts\n---\n\n# ${sid}: Slice\n\n**${sid} implemented**\n`,
301
- "utf-8",
302
- );
303
- }
304
-
305
- const { generateMilestoneSummary } = await import("../mechanical-completion.js");
306
- const content = await generateMilestoneSummary(base, mid);
307
-
308
- assert.ok(content.includes("S01"), "should reference S01");
309
- assert.ok(content.includes("S02"), "should reference S02");
310
- assert.ok(content.includes("feature-s01"), "should aggregate provides");
311
- assert.ok(content.includes("feature-s02"), "should aggregate provides");
312
-
313
- const summaryPath = join(base, ".gsd", "milestones", mid, `${mid}-SUMMARY.md`);
314
- assert.ok(existsSync(summaryPath), "M##-SUMMARY.md should exist");
315
- } finally {
316
- rmSync(base, { recursive: true, force: true });
317
- }
318
- });
319
-
320
- test("mechanical: decision deduplication skips existing decisions", async () => {
321
- const base = createTmpBase();
322
- try {
323
- const gsdRoot = join(base, ".gsd");
324
- mkdirSync(gsdRoot, { recursive: true });
325
-
326
- // Write existing decisions
327
- const decisionsPath = join(gsdRoot, "DECISIONS.md");
328
- writeFileSync(decisionsPath, "# Decisions\n\n- Used TypeScript for type safety\n", "utf-8");
329
-
330
- const { appendNewDecisions } = await import("../mechanical-completion.js");
331
-
332
- // Call with one existing and one new decision
333
- const mockSummaries = [
334
- {
335
- frontmatter: {
336
- id: "T01", parent: "S01", milestone: "M001",
337
- provides: [], requires: [], affects: [],
338
- key_files: [], key_decisions: ["Used TypeScript for type safety", "Chose Express over Koa"],
339
- patterns_established: [], drill_down_paths: [], observability_surfaces: [],
340
- duration: "", verification_result: "passed", completed_at: "", blocker_discovered: false,
341
- },
342
- title: "T01", oneLiner: "", whatHappened: "", deviations: "", filesModified: [],
343
- },
344
- ];
345
-
346
- await appendNewDecisions(base, mockSummaries as any);
347
-
348
- const updated = readFileSync(decisionsPath, "utf-8");
349
- assert.ok(updated.includes("Chose Express over Koa"), "should append new decision");
350
- // The existing decision should not be duplicated
351
- const matches = updated.match(/Used TypeScript for type safety/g);
352
- assert.equal(matches?.length, 1, "should not duplicate existing decision");
353
- } finally {
354
- rmSync(base, { recursive: true, force: true });
355
- }
356
- });
@@ -1,180 +0,0 @@
1
- import { createTestContext } from './test-helpers.ts';
2
- import { parseMemoryResponse, _resetExtractionState } from '../memory-extractor.ts';
3
- import {
4
- openDatabase,
5
- closeDatabase,
6
- } from '../gsd-db.ts';
7
- import {
8
- getActiveMemories,
9
- applyMemoryActions,
10
- getActiveMemoriesRanked,
11
- } from '../memory-store.ts';
12
- import type { MemoryAction } from '../memory-store.ts';
13
-
14
- const { assertEq, assertTrue, report } = createTestContext();
15
-
16
- // ═══════════════════════════════════════════════════════════════════════════
17
- // memory-extractor: parse valid JSON response
18
- // ═══════════════════════════════════════════════════════════════════════════
19
-
20
- console.log('\n=== memory-extractor: parse valid JSON ===');
21
- {
22
- const response = JSON.stringify([
23
- { action: 'CREATE', category: 'gotcha', content: 'esbuild drops binaries', confidence: 0.85 },
24
- { action: 'REINFORCE', id: 'MEM001' },
25
- { action: 'UPDATE', id: 'MEM002', content: 'revised content' },
26
- { action: 'SUPERSEDE', id: 'MEM003', superseded_by: 'MEM004' },
27
- ]);
28
-
29
- const actions = parseMemoryResponse(response);
30
- assertEq(actions.length, 4, 'should parse 4 actions');
31
- assertEq(actions[0].action, 'CREATE', 'first action should be CREATE');
32
- assertEq((actions[0] as any).category, 'gotcha', 'CREATE category');
33
- assertEq((actions[0] as any).confidence, 0.85, 'CREATE confidence');
34
- assertEq(actions[1].action, 'REINFORCE', 'second action should be REINFORCE');
35
- assertEq(actions[2].action, 'UPDATE', 'third action should be UPDATE');
36
- assertEq(actions[3].action, 'SUPERSEDE', 'fourth action should be SUPERSEDE');
37
- }
38
-
39
- // ═══════════════════════════════════════════════════════════════════════════
40
- // memory-extractor: parse fenced JSON response
41
- // ═══════════════════════════════════════════════════════════════════════════
42
-
43
- console.log('\n=== memory-extractor: parse fenced JSON ===');
44
- {
45
- const response = '```json\n[\n {"action": "CREATE", "category": "convention", "content": "test memory"}\n]\n```';
46
-
47
- const actions = parseMemoryResponse(response);
48
- assertEq(actions.length, 1, 'should parse 1 action from fenced JSON');
49
- assertEq(actions[0].action, 'CREATE', 'action should be CREATE');
50
- }
51
-
52
- // ═══════════════════════════════════════════════════════════════════════════
53
- // memory-extractor: parse empty array response
54
- // ═══════════════════════════════════════════════════════════════════════════
55
-
56
- console.log('\n=== memory-extractor: parse empty array ===');
57
- {
58
- const actions = parseMemoryResponse('[]');
59
- assertEq(actions.length, 0, 'empty array should parse to empty actions');
60
- }
61
-
62
- // ═══════════════════════════════════════════════════════════════════════════
63
- // memory-extractor: parse malformed response
64
- // ═══════════════════════════════════════════════════════════════════════════
65
-
66
- console.log('\n=== memory-extractor: malformed responses ===');
67
- {
68
- assertEq(parseMemoryResponse('not json at all'), [], 'garbage text should return []');
69
- assertEq(parseMemoryResponse('{"action": "CREATE"}'), [], 'non-array should return []');
70
- assertEq(parseMemoryResponse(''), [], 'empty string should return []');
71
- assertEq(parseMemoryResponse('```\nbroken\n```'), [], 'fenced non-JSON should return []');
72
- }
73
-
74
- // ═══════════════════════════════════════════════════════════════════════════
75
- // memory-extractor: validation of required fields
76
- // ═══════════════════════════════════════════════════════════════════════════
77
-
78
- console.log('\n=== memory-extractor: field validation ===');
79
- {
80
- const response = JSON.stringify([
81
- // Valid CREATE
82
- { action: 'CREATE', category: 'gotcha', content: 'valid' },
83
- // Invalid CREATE — missing content
84
- { action: 'CREATE', category: 'gotcha' },
85
- // Invalid CREATE — missing category
86
- { action: 'CREATE', content: 'no category' },
87
- // Valid REINFORCE
88
- { action: 'REINFORCE', id: 'MEM001' },
89
- // Invalid REINFORCE — missing id
90
- { action: 'REINFORCE' },
91
- // Valid UPDATE
92
- { action: 'UPDATE', id: 'MEM002', content: 'new content' },
93
- // Invalid UPDATE — missing content
94
- { action: 'UPDATE', id: 'MEM002' },
95
- // Valid SUPERSEDE
96
- { action: 'SUPERSEDE', id: 'MEM001', superseded_by: 'MEM002' },
97
- // Invalid SUPERSEDE — missing superseded_by
98
- { action: 'SUPERSEDE', id: 'MEM001' },
99
- // Unknown action
100
- { action: 'DELETE', id: 'MEM001' },
101
- // Null entry
102
- null,
103
- ]);
104
-
105
- const actions = parseMemoryResponse(response);
106
- assertEq(actions.length, 4, 'should only accept 4 valid actions');
107
- assertEq(actions[0].action, 'CREATE', 'first valid is CREATE');
108
- assertEq(actions[1].action, 'REINFORCE', 'second valid is REINFORCE');
109
- assertEq(actions[2].action, 'UPDATE', 'third valid is UPDATE');
110
- assertEq(actions[3].action, 'SUPERSEDE', 'fourth valid is SUPERSEDE');
111
- }
112
-
113
- // ═══════════════════════════════════════════════════════════════════════════
114
- // Integration: applyMemoryActions with mixed actions
115
- // ═══════════════════════════════════════════════════════════════════════════
116
-
117
- console.log('\n=== integration: mixed action lifecycle ===');
118
- {
119
- openDatabase(':memory:');
120
-
121
- // Phase 1: Create initial memories
122
- applyMemoryActions([
123
- { action: 'CREATE', category: 'gotcha', content: 'npm run build needs tsc first', confidence: 0.7 },
124
- { action: 'CREATE', category: 'convention', content: 'all DB queries use named params', confidence: 0.8 },
125
- { action: 'CREATE', category: 'architecture', content: 'extensions loaded from two paths', confidence: 0.85 },
126
- ], 'plan-slice', 'M001/S01');
127
-
128
- let active = getActiveMemoriesRanked(30);
129
- assertEq(active.length, 3, 'phase 1: 3 active memories');
130
-
131
- // Phase 2: Reinforce one, update another, create new
132
- applyMemoryActions([
133
- { action: 'REINFORCE', id: 'MEM002' },
134
- { action: 'UPDATE', id: 'MEM001', content: 'npm run build requires tsc --noEmit first' },
135
- { action: 'CREATE', category: 'pattern', content: 'use INSERT OR IGNORE for idempotency', confidence: 0.75 },
136
- ], 'execute-task', 'M001/S01/T01');
137
-
138
- active = getActiveMemoriesRanked(30);
139
- assertEq(active.length, 4, 'phase 2: 4 active memories');
140
- assertEq(
141
- active.find(m => m.id === 'MEM001')?.content,
142
- 'npm run build requires tsc --noEmit first',
143
- 'MEM001 content should be updated',
144
- );
145
- assertEq(active.find(m => m.id === 'MEM002')?.hit_count, 1, 'MEM002 should be reinforced');
146
-
147
- // Phase 3: Supersede MEM001 with MEM005
148
- applyMemoryActions([
149
- { action: 'CREATE', category: 'gotcha', content: 'build script handles tsc automatically now', confidence: 0.9 },
150
- { action: 'SUPERSEDE', id: 'MEM001', superseded_by: 'MEM005' },
151
- ], 'execute-task', 'M001/S01/T02');
152
-
153
- active = getActiveMemoriesRanked(30);
154
- assertEq(active.length, 4, 'phase 3: 4 active (1 superseded, 1 created)');
155
- assertTrue(!active.find(m => m.id === 'MEM001'), 'MEM001 should be superseded');
156
- assertTrue(!!active.find(m => m.id === 'MEM005'), 'MEM005 should be active');
157
-
158
- // Verify ranking: MEM003 (0.85) > MEM005 (0.9) but MEM002 has 1 hit
159
- // MEM002: 0.8 * (1 + 1*0.1) = 0.88
160
- // MEM003: 0.85 * 1.0 = 0.85
161
- // MEM005: 0.9 * 1.0 = 0.9
162
- // MEM004: 0.75 * 1.0 = 0.75
163
- assertEq(active[0].id, 'MEM005', 'MEM005 should rank first (0.9)');
164
- assertEq(active[1].id, 'MEM002', 'MEM002 should rank second (0.88)');
165
-
166
- closeDatabase();
167
- }
168
-
169
- // ═══════════════════════════════════════════════════════════════════════════
170
- // memory-extractor: _resetExtractionState
171
- // ═══════════════════════════════════════════════════════════════════════════
172
-
173
- console.log('\n=== memory-extractor: reset extraction state ===');
174
- {
175
- // Just verify it doesn't throw
176
- _resetExtractionState();
177
- assertTrue(true, '_resetExtractionState should not throw');
178
- }
179
-
180
- report();
@@ -1,91 +0,0 @@
1
- /**
2
- * memory-leak-guards.test.ts — Tests for #611 memory leak fixes.
3
- *
4
- * Verifies that module-level state accumulators are properly bounded
5
- * and cleared to prevent OOM during long-running auto-mode sessions.
6
- */
7
-
8
- import test from "node:test";
9
- import assert from "node:assert/strict";
10
- import { mkdtempSync, rmSync, existsSync, readdirSync, readFileSync, realpathSync } from "node:fs";
11
- import { join } from "node:path";
12
- import { tmpdir } from "node:os";
13
-
14
- import { saveActivityLog, clearActivityLogState } from "../activity-log.ts";
15
- import { clearPathCache } from "../paths.ts";
16
- import type { ExtensionContext } from "@gsd/pi-coding-agent";
17
-
18
- function createCtx(entries: unknown[]) {
19
- return { sessionManager: { getEntries: () => entries } } as unknown as ExtensionContext;
20
- }
21
-
22
- // ─── activity-log: clearActivityLogState ─────────────────────────────────────
23
-
24
- test("clearActivityLogState resets dedup state so identical saves write again", () => {
25
- clearActivityLogState();
26
- // Pre-resolve baseDir so gsdRoot() returns a stable key across calls.
27
- // On macOS, /tmp is a symlink to /private/tmp — without realpathSync, the
28
- // key changes between the first save (dir doesn't exist, realpathSync throws)
29
- // and subsequent saves (dir exists, realpathSync resolves to /private/tmp/...).
30
- const baseDir = realpathSync(mkdtempSync(join(tmpdir(), "gsd-memleak-test-")));
31
- try {
32
- const entries = [{ role: "assistant", content: "test entry" }];
33
- const ctx = createCtx(entries);
34
-
35
- // First save
36
- saveActivityLog(ctx, baseDir, "execute-task", "M001/S01/T01");
37
-
38
- const actDir = join(baseDir, ".gsd", "activity");
39
- assert.equal(readdirSync(actDir).length, 1, "first save creates one file");
40
-
41
- // Same content, same unit — deduped
42
- saveActivityLog(ctx, baseDir, "execute-task", "M001/S01/T01");
43
- assert.equal(readdirSync(actDir).length, 1, "dedup prevents duplicate write");
44
-
45
- // Clear state
46
- clearActivityLogState();
47
-
48
- // Same content again — after clear, writes again (fresh state)
49
- saveActivityLog(ctx, baseDir, "execute-task", "M001/S01/T01");
50
- assert.equal(readdirSync(actDir).length, 2, "after clear, dedup state is reset");
51
- } finally {
52
- rmSync(baseDir, { recursive: true, force: true });
53
- }
54
- });
55
-
56
- // ─── activity-log: streaming JSONL write ────────────────────────────────────
57
-
58
- test("saveActivityLog writes valid JSONL via streaming", () => {
59
- clearActivityLogState();
60
- const baseDir = realpathSync(mkdtempSync(join(tmpdir(), "gsd-memleak-jsonl-")));
61
- try {
62
- const entries = [
63
- { type: "message", message: { role: "user", content: "hello" } },
64
- { type: "message", message: { role: "assistant", content: "world" } },
65
- { type: "message", message: { role: "user", content: "test" } },
66
- ];
67
- const ctx = createCtx(entries);
68
-
69
- saveActivityLog(ctx, baseDir, "execute-task", "M002/S01/T01");
70
-
71
- const actDir = join(baseDir, ".gsd", "activity");
72
- const files = readdirSync(actDir);
73
- assert.equal(files.length, 1, "one file written");
74
-
75
- const content = readFileSync(join(actDir, files[0]), "utf-8");
76
- const lines = content.trim().split("\n");
77
- assert.equal(lines.length, 3, "three JSONL lines");
78
-
79
- for (const line of lines) {
80
- assert.doesNotThrow(() => JSON.parse(line), `line is valid JSON`);
81
- }
82
- } finally {
83
- rmSync(baseDir, { recursive: true, force: true });
84
- }
85
- });
86
-
87
- // ─── paths.ts: directory cache bounds ───────────────────────────────────────
88
-
89
- test("clearPathCache does not throw", () => {
90
- assert.doesNotThrow(() => clearPathCache(), "clearPathCache should not throw");
91
- });