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,127 +0,0 @@
1
- /**
2
- * auto-reentrancy-guard.test.ts — Tests for the unconditional reentrancy guard.
3
- *
4
- * Regression for #1272: auto-mode stuck-loop where gap watchdog or
5
- * pendingAgentEndRetry could enter dispatchNextUnit concurrently during
6
- * recursive skip chains because the reentrancy guard was bypassed when
7
- * skipDepth > 0.
8
- *
9
- * The fix makes the guard unconditional (`if (s.dispatching)` without
10
- * `&& s.skipDepth === 0`), and defers recursive re-dispatch via
11
- * setImmediate/setTimeout so s.dispatching is released first.
12
- */
13
-
14
- import {
15
- _getDispatching,
16
- _setDispatching,
17
- _getSkipDepth,
18
- _setSkipDepth,
19
- } from "../auto.ts";
20
- import { createTestContext } from "./test-helpers.ts";
21
-
22
- const { assertEq, assertTrue, report } = createTestContext();
23
-
24
- async function main(): Promise<void> {
25
- // ─── Test-only accessors work ───────────────────────────────────────────
26
- console.log("\n=== reentrancy guard: test accessors round-trip ===");
27
- {
28
- _setDispatching(false);
29
- assertEq(_getDispatching(), false, "dispatching starts false");
30
-
31
- _setDispatching(true);
32
- assertEq(_getDispatching(), true, "dispatching set to true");
33
-
34
- _setDispatching(false);
35
- assertEq(_getDispatching(), false, "dispatching reset to false");
36
- }
37
-
38
- // ─── skipDepth accessors ────────────────────────────────────────────────
39
- console.log("\n=== reentrancy guard: skipDepth accessors round-trip ===");
40
- {
41
- _setSkipDepth(0);
42
- assertEq(_getSkipDepth(), 0, "skipDepth starts at 0");
43
-
44
- _setSkipDepth(3);
45
- assertEq(_getSkipDepth(), 3, "skipDepth set to 3");
46
-
47
- _setSkipDepth(0);
48
- assertEq(_getSkipDepth(), 0, "skipDepth reset to 0");
49
- }
50
-
51
- // ─── Guard blocks even when skipDepth > 0 (#1272 regression) ───────────
52
- console.log("\n=== reentrancy guard: blocks when dispatching=true regardless of skipDepth ===");
53
- {
54
- // Simulate the scenario from #1272: dispatching=true + skipDepth>0
55
- // The old guard (`if (s.dispatching && s.skipDepth === 0)`) would allow
56
- // concurrent entry when skipDepth > 0. The fix makes the check
57
- // unconditional on skipDepth.
58
- _setDispatching(true);
59
- _setSkipDepth(2);
60
-
61
- // Verify dispatching is true — guard should block regardless of skipDepth
62
- assertTrue(
63
- _getDispatching() === true,
64
- "dispatching flag is true during skip chain"
65
- );
66
-
67
- // The actual reentrancy guard in dispatchNextUnit checks:
68
- // if (s.dispatching) { return; }
69
- // We verify the state that would trigger the guard:
70
- const wouldBlock = _getDispatching(); // unconditional check
71
- const wouldBlockOld = _getDispatching() && _getSkipDepth() === 0; // old check
72
-
73
- assertTrue(wouldBlock === true, "new guard blocks when dispatching=true, skipDepth=2");
74
- assertTrue(wouldBlockOld === false, "old guard WOULD NOT block when dispatching=true, skipDepth=2 (the bug)");
75
-
76
- // Clean up
77
- _setDispatching(false);
78
- _setSkipDepth(0);
79
- }
80
-
81
- // ─── Guard allows entry when dispatching=false ──────────────────────────
82
- console.log("\n=== reentrancy guard: allows entry when dispatching=false ===");
83
- {
84
- _setDispatching(false);
85
- _setSkipDepth(0);
86
- assertTrue(!_getDispatching(), "guard allows entry when dispatching=false, skipDepth=0");
87
-
88
- _setDispatching(false);
89
- _setSkipDepth(3);
90
- assertTrue(!_getDispatching(), "guard allows entry when dispatching=false, skipDepth=3");
91
-
92
- _setSkipDepth(0);
93
- }
94
-
95
- // ─── skipDepth does not affect guard decision (the fix) ─────────────────
96
- console.log("\n=== reentrancy guard: skipDepth is irrelevant to guard decision ===");
97
- {
98
- for (const depth of [0, 1, 2, 5]) {
99
- _setDispatching(true);
100
- _setSkipDepth(depth);
101
- assertTrue(
102
- _getDispatching() === true,
103
- `guard blocks at skipDepth=${depth} when dispatching=true`
104
- );
105
- }
106
-
107
- for (const depth of [0, 1, 2, 5]) {
108
- _setDispatching(false);
109
- _setSkipDepth(depth);
110
- assertTrue(
111
- _getDispatching() === false,
112
- `guard allows at skipDepth=${depth} when dispatching=false`
113
- );
114
- }
115
-
116
- // Clean up
117
- _setDispatching(false);
118
- _setSkipDepth(0);
119
- }
120
-
121
- report();
122
- }
123
-
124
- main().catch((err) => {
125
- console.error(err);
126
- process.exit(1);
127
- });
@@ -1,302 +0,0 @@
1
- /**
2
- * Integration tests for the secrets collection gate in startAuto().
3
- *
4
- * Exercises getManifestStatus() → collectSecretsFromManifest() composition
5
- * end-to-end using real filesystem state. Proves the gate paths:
6
- * 1. No manifest exists — gate skips silently
7
- * 2. Pending keys exist — gate triggers collection (direct call)
8
- * 3. No pending keys — gate skips silently
9
- * 4. Pending keys in auto-mode — session pauses instead of blocking (#1146)
10
- *
11
- * Uses temp directories with real .gsd/milestones/M001/ structure, mirroring
12
- * the pattern from manifest-status.test.ts.
13
- */
14
-
15
- import test from 'node:test';
16
- import assert from 'node:assert/strict';
17
- import { mkdirSync, writeFileSync, readFileSync, rmSync } from 'node:fs';
18
- import { join } from 'node:path';
19
- import { tmpdir } from 'node:os';
20
- import { getManifestStatus } from '../files.ts';
21
- import { collectSecretsFromManifest } from '../../get-secrets-from-user.ts';
22
- import { AutoSession } from '../auto/session.ts';
23
-
24
- function makeTempDir(prefix: string): string {
25
- const dir = join(tmpdir(), `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2)}`);
26
- mkdirSync(dir, { recursive: true });
27
- return dir;
28
- }
29
-
30
- /** Create the .gsd/milestones/M001/ directory structure and write a secrets manifest. */
31
- function writeManifest(base: string, content: string): void {
32
- const mDir = join(base, '.gsd', 'milestones', 'M001');
33
- mkdirSync(mDir, { recursive: true });
34
- writeFileSync(join(mDir, 'M001-SECRETS.md'), content);
35
- }
36
-
37
- /** Stub ctx with hasUI: false — collectOneSecret returns null (skip), showSecretsSummary is a no-op. */
38
- function makeNoUICtx(cwd: string) {
39
- return {
40
- ui: {},
41
- hasUI: false,
42
- cwd,
43
- };
44
- }
45
-
46
- // ─── Scenario 1: No manifest exists ──────────────────────────────────────────
47
-
48
- test('secrets gate: no manifest exists — getManifestStatus returns null', async () => {
49
- const tmp = makeTempDir('gate-no-manifest');
50
- try {
51
- // No .gsd directory at all
52
- const result = await getManifestStatus(tmp, 'M001');
53
- assert.strictEqual(result, null, 'should return null when no manifest file exists');
54
- } finally {
55
- rmSync(tmp, { recursive: true, force: true });
56
- }
57
- });
58
-
59
- // ─── Scenario 2: Pending keys exist ─────────────────────────────────────────
60
-
61
- test('secrets gate: pending keys exist — gate triggers collection, manifest updated on disk', async () => {
62
- const tmp = makeTempDir('gate-pending');
63
- const savedA = process.env.GSD_GATE_TEST_EXISTING;
64
- try {
65
- // Simulate one key already in env
66
- process.env.GSD_GATE_TEST_EXISTING = 'already-here';
67
-
68
- // Ensure pending keys are NOT in env
69
- delete process.env.GSD_GATE_TEST_PEND_A;
70
- delete process.env.GSD_GATE_TEST_PEND_B;
71
-
72
- writeManifest(tmp, `# Secrets Manifest
73
-
74
- **Milestone:** M001
75
- **Generated:** 2025-06-20T10:00:00Z
76
-
77
- ### GSD_GATE_TEST_PEND_A
78
-
79
- **Service:** ServiceA
80
- **Status:** pending
81
- **Destination:** dotenv
82
-
83
- 1. Get key A from dashboard
84
-
85
- ### GSD_GATE_TEST_PEND_B
86
-
87
- **Service:** ServiceB
88
- **Status:** pending
89
- **Destination:** dotenv
90
-
91
- 1. Get key B from dashboard
92
-
93
- ### GSD_GATE_TEST_EXISTING
94
-
95
- **Service:** ServiceC
96
- **Status:** pending
97
- **Destination:** dotenv
98
-
99
- 1. Already in env
100
- `);
101
-
102
- // (a) Verify getManifestStatus shows pending keys
103
- const status = await getManifestStatus(tmp, 'M001');
104
- assert.notStrictEqual(status, null, 'manifest should exist');
105
- assert.ok(status!.pending.length > 0, 'should have pending keys');
106
- assert.deepStrictEqual(status!.pending, ['GSD_GATE_TEST_PEND_A', 'GSD_GATE_TEST_PEND_B']);
107
- assert.deepStrictEqual(status!.existing, ['GSD_GATE_TEST_EXISTING']);
108
-
109
- // (b) Call collectSecretsFromManifest with no-UI context
110
- // With hasUI: false, collectOneSecret returns null → pending keys become "skipped"
111
- const result = await collectSecretsFromManifest(tmp, 'M001', makeNoUICtx(tmp));
112
-
113
- // (c) Verify return shape
114
- assert.deepStrictEqual(result.applied, [], 'no keys applied (no UI to enter values)');
115
- assert.ok(result.skipped.includes('GSD_GATE_TEST_PEND_A'), 'PEND_A should be skipped');
116
- assert.ok(result.skipped.includes('GSD_GATE_TEST_PEND_B'), 'PEND_B should be skipped');
117
- assert.deepStrictEqual(result.existingSkipped, ['GSD_GATE_TEST_EXISTING']);
118
-
119
- // (d) Verify manifest on disk was updated — pending entries that went through
120
- // collection are now "skipped". The existing-in-env entry retains its manifest
121
- // status ("pending") because collectSecretsFromManifest only updates entries
122
- // that flow through collectOneSecret. At runtime, getManifestStatus overrides
123
- // env-present entries to "existing" regardless of manifest status.
124
- const manifestPath = join(tmp, '.gsd', 'milestones', 'M001', 'M001-SECRETS.md');
125
- const updatedContent = readFileSync(manifestPath, 'utf8');
126
- assert.ok(
127
- updatedContent.includes('**Status:** skipped'),
128
- 'formerly-pending entries should now have status "skipped" in the manifest file',
129
- );
130
- // Count: PEND_A → skipped, PEND_B → skipped, EXISTING stays pending on disk
131
- const skippedMatches = updatedContent.match(/\*\*Status:\*\* skipped/g);
132
- assert.strictEqual(skippedMatches?.length, 2, 'two entries should have status "skipped"');
133
- const pendingMatches = updatedContent.match(/\*\*Status:\*\* pending/g);
134
- assert.strictEqual(pendingMatches?.length, 1, 'one entry (existing-in-env) retains pending on disk');
135
-
136
- // (e) Verify getManifestStatus now shows no pending
137
- const statusAfter = await getManifestStatus(tmp, 'M001');
138
- assert.notStrictEqual(statusAfter, null);
139
- assert.deepStrictEqual(statusAfter!.pending, [], 'no pending keys after collection');
140
- } finally {
141
- delete process.env.GSD_GATE_TEST_EXISTING;
142
- if (savedA !== undefined) process.env.GSD_GATE_TEST_EXISTING = savedA;
143
- delete process.env.GSD_GATE_TEST_PEND_A;
144
- delete process.env.GSD_GATE_TEST_PEND_B;
145
- rmSync(tmp, { recursive: true, force: true });
146
- }
147
- });
148
-
149
- // ─── Scenario 3: No pending keys — all collected or in env ──────────────────
150
-
151
- // ─── Scenario 4: Pending keys pause AutoSession instead of blocking (#1146) ──
152
-
153
- test('secrets gate: pending keys set pausedForSecrets on AutoSession', async () => {
154
- const tmp = makeTempDir('gate-pause-session');
155
- try {
156
- // Ensure pending keys are NOT in env
157
- delete process.env.GSD_PAUSE_TEST_KEY_A;
158
- delete process.env.GSD_PAUSE_TEST_KEY_B;
159
-
160
- writeManifest(tmp, `# Secrets Manifest
161
-
162
- **Milestone:** M001
163
- **Generated:** 2025-06-20T10:00:00Z
164
-
165
- ### GSD_PAUSE_TEST_KEY_A
166
-
167
- **Service:** ServiceA
168
- **Status:** pending
169
- **Destination:** dotenv
170
-
171
- 1. Get key A from dashboard
172
-
173
- ### GSD_PAUSE_TEST_KEY_B
174
-
175
- **Service:** ServiceB
176
- **Status:** pending
177
- **Destination:** dotenv
178
-
179
- 1. Get key B from dashboard
180
- `);
181
-
182
- // Verify manifest has pending keys
183
- const status = await getManifestStatus(tmp, 'M001');
184
- assert.notStrictEqual(status, null, 'manifest should exist');
185
- assert.deepStrictEqual(status!.pending, ['GSD_PAUSE_TEST_KEY_A', 'GSD_PAUSE_TEST_KEY_B']);
186
-
187
- // Simulate what auto-start.ts now does: set pause flags on session
188
- const session = new AutoSession();
189
- session.active = true;
190
- session.currentMilestoneId = 'M001';
191
-
192
- // The new gate logic: if pending keys exist, pause instead of collecting
193
- if (status!.pending.length > 0) {
194
- session.paused = true;
195
- session.pausedForSecrets = true;
196
- }
197
-
198
- assert.strictEqual(session.paused, true, 'session should be paused');
199
- assert.strictEqual(session.pausedForSecrets, true, 'pausedForSecrets flag should be set');
200
-
201
- // Verify reset() clears pausedForSecrets
202
- session.reset();
203
- assert.strictEqual(session.pausedForSecrets, false, 'reset() should clear pausedForSecrets');
204
- } finally {
205
- delete process.env.GSD_PAUSE_TEST_KEY_A;
206
- delete process.env.GSD_PAUSE_TEST_KEY_B;
207
- rmSync(tmp, { recursive: true, force: true });
208
- }
209
- });
210
-
211
- test('secrets gate: no pending keys do not set pausedForSecrets', async () => {
212
- const tmp = makeTempDir('gate-no-pause');
213
- const savedKey = process.env.GSD_NO_PAUSE_TEST_KEY;
214
- try {
215
- process.env.GSD_NO_PAUSE_TEST_KEY = 'already-set';
216
-
217
- writeManifest(tmp, `# Secrets Manifest
218
-
219
- **Milestone:** M001
220
- **Generated:** 2025-06-20T10:00:00Z
221
-
222
- ### GSD_NO_PAUSE_TEST_KEY
223
-
224
- **Service:** ServiceX
225
- **Status:** pending
226
- **Destination:** dotenv
227
-
228
- 1. Already in env
229
- `);
230
-
231
- const status = await getManifestStatus(tmp, 'M001');
232
- assert.notStrictEqual(status, null, 'manifest should exist');
233
- assert.deepStrictEqual(status!.pending, [], 'no pending keys — already in env');
234
-
235
- // Simulate gate logic — no pending keys, no pause
236
- const session = new AutoSession();
237
- session.active = true;
238
-
239
- if (status!.pending.length > 0) {
240
- session.paused = true;
241
- session.pausedForSecrets = true;
242
- }
243
-
244
- assert.strictEqual(session.paused, false, 'session should NOT be paused');
245
- assert.strictEqual(session.pausedForSecrets, false, 'pausedForSecrets should NOT be set');
246
- } finally {
247
- delete process.env.GSD_NO_PAUSE_TEST_KEY;
248
- if (savedKey !== undefined) process.env.GSD_NO_PAUSE_TEST_KEY = savedKey;
249
- rmSync(tmp, { recursive: true, force: true });
250
- }
251
- });
252
-
253
- // ─── Scenario 3: No pending keys — all collected or in env ──────────────────
254
-
255
- test('secrets gate: no pending keys — getManifestStatus shows pending.length === 0', async () => {
256
- const tmp = makeTempDir('gate-no-pending');
257
- const savedKey = process.env.GSD_GATE_TEST_ENVKEY;
258
- try {
259
- process.env.GSD_GATE_TEST_ENVKEY = 'some-value';
260
-
261
- writeManifest(tmp, `# Secrets Manifest
262
-
263
- **Milestone:** M001
264
- **Generated:** 2025-06-20T10:00:00Z
265
-
266
- ### ALREADY_COLLECTED
267
-
268
- **Service:** ServiceX
269
- **Status:** collected
270
- **Destination:** dotenv
271
-
272
- 1. Was collected previously
273
-
274
- ### ALREADY_SKIPPED
275
-
276
- **Service:** ServiceY
277
- **Status:** skipped
278
- **Destination:** dotenv
279
-
280
- 1. Not needed
281
-
282
- ### GSD_GATE_TEST_ENVKEY
283
-
284
- **Service:** ServiceZ
285
- **Status:** pending
286
- **Destination:** dotenv
287
-
288
- 1. In env already
289
- `);
290
-
291
- const result = await getManifestStatus(tmp, 'M001');
292
- assert.notStrictEqual(result, null, 'manifest should exist');
293
- assert.deepStrictEqual(result!.pending, [], 'no pending keys — gate would skip');
294
- assert.deepStrictEqual(result!.collected, ['ALREADY_COLLECTED']);
295
- assert.deepStrictEqual(result!.skipped, ['ALREADY_SKIPPED']);
296
- assert.deepStrictEqual(result!.existing, ['GSD_GATE_TEST_ENVKEY']);
297
- } finally {
298
- delete process.env.GSD_GATE_TEST_ENVKEY;
299
- if (savedKey !== undefined) process.env.GSD_GATE_TEST_ENVKEY = savedKey;
300
- rmSync(tmp, { recursive: true, force: true });
301
- }
302
- });
@@ -1,257 +0,0 @@
1
- /**
2
- * auto-session-encapsulation.test.ts — Guards the AutoSession encapsulation invariant.
3
- *
4
- * All mutable auto-mode state must live in AutoSession (auto/session.ts).
5
- * auto.ts must not declare module-level `let` or `var` variables.
6
- *
7
- * These tests parse auto.ts source to detect violations, so they fail at
8
- * test time — before a PR merges — when someone accidentally adds mutable
9
- * module-level state to auto.ts instead of AutoSession.
10
- */
11
-
12
- import test from "node:test";
13
- import assert from "node:assert/strict";
14
- import { readFileSync } from "node:fs";
15
- import { join, dirname } from "node:path";
16
- import { fileURLToPath } from "node:url";
17
-
18
- const __dirname = dirname(fileURLToPath(import.meta.url));
19
- const AUTO_TS_PATH = join(__dirname, "..", "auto.ts");
20
- const SESSION_TS_PATH = join(__dirname, "..", "auto", "session.ts");
21
-
22
- function getAutoTsSource(): string {
23
- return readFileSync(AUTO_TS_PATH, "utf-8");
24
- }
25
-
26
- function getSessionTsSource(): string {
27
- return readFileSync(SESSION_TS_PATH, "utf-8");
28
- }
29
-
30
- // ── Invariant 1: No module-level mutable variables in auto.ts ────────────────
31
-
32
- test("auto.ts has no module-level let declarations", () => {
33
- const source = getAutoTsSource();
34
- const lines = source.split("\n");
35
- const violations: string[] = [];
36
-
37
- for (let i = 0; i < lines.length; i++) {
38
- const line = lines[i]!;
39
- // Match lines starting with `let ` or `export let ` (module-level)
40
- // Skip lines inside functions/blocks (indented)
41
- if (/^(export\s+)?let\s+/.test(line)) {
42
- violations.push(`line ${i + 1}: ${line.trim()}`);
43
- }
44
- }
45
-
46
- assert.equal(
47
- violations.length,
48
- 0,
49
- `auto.ts must not have module-level \`let\` declarations. ` +
50
- `All mutable state belongs in AutoSession (auto/session.ts).\n` +
51
- `Violations:\n${violations.join("\n")}`,
52
- );
53
- });
54
-
55
- test("auto.ts has no module-level var declarations", () => {
56
- const source = getAutoTsSource();
57
- const lines = source.split("\n");
58
- const violations: string[] = [];
59
-
60
- for (let i = 0; i < lines.length; i++) {
61
- const line = lines[i]!;
62
- if (/^(export\s+)?var\s+/.test(line)) {
63
- violations.push(`line ${i + 1}: ${line.trim()}`);
64
- }
65
- }
66
-
67
- assert.equal(
68
- violations.length,
69
- 0,
70
- `auto.ts must not have module-level \`var\` declarations. ` +
71
- `All mutable state belongs in AutoSession (auto/session.ts).\n` +
72
- `Violations:\n${violations.join("\n")}`,
73
- );
74
- });
75
-
76
- // ── Invariant 2: AutoSession singleton is the only mutable module-level binding ──
77
-
78
- test("auto.ts has exactly one module-level const for AutoSession", () => {
79
- const source = getAutoTsSource();
80
- const lines = source.split("\n");
81
-
82
- const sessionConsts = lines.filter(line =>
83
- /^const\s+\w+\s*=\s*new\s+AutoSession/.test(line),
84
- );
85
-
86
- assert.equal(
87
- sessionConsts.length,
88
- 1,
89
- `auto.ts should have exactly one \`const s = new AutoSession()\`. ` +
90
- `Found ${sessionConsts.length}: ${sessionConsts.join(", ")}`,
91
- );
92
- });
93
-
94
- // ── Invariant 3: AutoSession.reset() covers all instance properties ──────────
95
-
96
- test("AutoSession.reset() references every instance property", () => {
97
- const source = getSessionTsSource();
98
-
99
- // Extract property names from class body (lines like ` propName = ...` or ` propName:`)
100
- // Skip readonly collections (Maps/Sets) that use .clear() instead of reassignment
101
- const propertyPattern = /^\s+(readonly\s+)?(\w+)\s*[:=]/;
102
- const properties: string[] = [];
103
- let inClass = false;
104
- let inMethod = false;
105
- let braceDepth = 0;
106
-
107
- for (const line of source.split("\n")) {
108
- if (/^export class AutoSession/.test(line)) {
109
- inClass = true;
110
- braceDepth = 0;
111
- continue;
112
- }
113
- if (!inClass) continue;
114
-
115
- // Track brace depth to distinguish properties from method bodies
116
- for (const ch of line) {
117
- if (ch === "{") braceDepth++;
118
- if (ch === "}") braceDepth--;
119
- }
120
-
121
- // Class-level properties are at brace depth 1 (inside the class, outside methods)
122
- if (braceDepth === 1 && !inMethod) {
123
- const match = line.match(propertyPattern);
124
- if (match && match[2]) {
125
- const propName = match[2];
126
- // Skip method-like names and type-only declarations
127
- if (!["constructor", "clearTimers", "resetDispatchCounters", "lockBasePath",
128
- "completeCurrentUnit", "reset", "toJSON"].includes(propName)) {
129
- properties.push(propName);
130
- }
131
- }
132
- }
133
-
134
- // Detect method start/end
135
- if (braceDepth === 1 && /^\s+(get |async )?(\w+)\s*\(/.test(line)) {
136
- inMethod = true;
137
- }
138
- if (braceDepth === 1 && inMethod) {
139
- inMethod = false;
140
- }
141
- }
142
-
143
- // Extract the reset() method body
144
- const resetMatch = source.match(/reset\(\): void \{([\s\S]*?)^\s{2}\}/m);
145
- assert.ok(resetMatch, "AutoSession.reset() method not found");
146
- const resetBody = resetMatch![1]!;
147
-
148
- // completedKeySet is intentionally not cleared (documented in reset())
149
- const intentionallySkipped = new Set(["completedKeySet"]);
150
-
151
- const missingFromReset: string[] = [];
152
- for (const prop of properties) {
153
- if (intentionallySkipped.has(prop)) continue;
154
- // Check if the property name appears in reset body (as `this.prop` assignment or `.clear()`)
155
- if (!resetBody.includes(`this.${prop}`)) {
156
- missingFromReset.push(prop);
157
- }
158
- }
159
-
160
- assert.equal(
161
- missingFromReset.length,
162
- 0,
163
- `AutoSession.reset() must reference every instance property. ` +
164
- `Missing: ${missingFromReset.join(", ")}. ` +
165
- `If a property should persist across resets, add it to the intentionallySkipped set in this test.`,
166
- );
167
- });
168
-
169
- // ── Invariant 4: AutoSession.toJSON() provides diagnostic visibility ─────────
170
-
171
- test("AutoSession.toJSON() includes key diagnostic properties", () => {
172
- const source = getSessionTsSource();
173
-
174
- const toJSONMatch = source.match(/toJSON\(\)[\s\S]*?return \{([\s\S]*?)\};/);
175
- assert.ok(toJSONMatch, "AutoSession.toJSON() method not found");
176
- const toJSONBody = toJSONMatch![1]!;
177
-
178
- // These are the minimum properties needed for diagnostic snapshots
179
- const requiredDiagnostics = [
180
- "active",
181
- "paused",
182
- "basePath",
183
- "currentMilestoneId",
184
- "currentUnit",
185
- "dispatching",
186
- ];
187
-
188
- const missing = requiredDiagnostics.filter(prop => !toJSONBody.includes(prop));
189
-
190
- assert.equal(
191
- missing.length,
192
- 0,
193
- `AutoSession.toJSON() must include diagnostic properties: ${missing.join(", ")}`,
194
- );
195
- });
196
-
197
- // ── Invariant 5: No state-bearing module-level consts that should be in AutoSession ──
198
-
199
- test("auto.ts module-level consts are only AutoSession instance, true constants, or static accessors", () => {
200
- const source = getAutoTsSource();
201
- const lines = source.split("\n");
202
- const violations: string[] = [];
203
-
204
- // Patterns that are acceptable at module level
205
- const allowedPatterns = [
206
- /^const s = new AutoSession/, // The session singleton
207
- /^const [A-Z_]+\s*=/, // UPPER_CASE constants
208
- /^const \w+StateAccessors/, // Static accessor objects
209
- /^const \w+:\s*\w+\s*=/, // Typed constants
210
- ];
211
-
212
- for (let i = 0; i < lines.length; i++) {
213
- const line = lines[i]!;
214
- if (!/^(export\s+)?const\s+/.test(line)) continue;
215
-
216
- const isAllowed = allowedPatterns.some(p => p.test(line.replace(/^export\s+/, "")));
217
- if (!isAllowed) {
218
- // Check if it looks like mutable state (arrays, objects with mutable semantics)
219
- if (/= new (Map|Set|Array)\(/.test(line) || /= \[\]/.test(line)) {
220
- violations.push(`line ${i + 1}: ${line.trim()}`);
221
- }
222
- }
223
- }
224
-
225
- assert.equal(
226
- violations.length,
227
- 0,
228
- `auto.ts has module-level const declarations that look like mutable state. ` +
229
- `Move these into AutoSession:\n${violations.join("\n")}`,
230
- );
231
- });
232
-
233
- // ── Invariant 6: session.ts file exists and exports AutoSession ──────────────
234
-
235
- test("auto/session.ts exports AutoSession class", () => {
236
- const source = getSessionTsSource();
237
- assert.ok(
238
- /export class AutoSession/.test(source),
239
- "auto/session.ts must export the AutoSession class",
240
- );
241
- });
242
-
243
- test("AutoSession has a reset() method", () => {
244
- const source = getSessionTsSource();
245
- assert.ok(
246
- /reset\(\): void/.test(source),
247
- "AutoSession must have a reset(): void method",
248
- );
249
- });
250
-
251
- test("AutoSession has a toJSON() method", () => {
252
- const source = getSessionTsSource();
253
- assert.ok(
254
- /toJSON\(\)/.test(source),
255
- "AutoSession must have a toJSON() method for diagnostics",
256
- );
257
- });