gsd-pi 2.33.1 → 2.34.0-dev.6769913

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 (1061) hide show
  1. package/dist/bundled-resource-path.d.ts +8 -0
  2. package/dist/bundled-resource-path.js +14 -0
  3. package/dist/cli.js +16 -0
  4. package/dist/headless-query.js +6 -6
  5. package/dist/resource-loader.d.ts +2 -0
  6. package/dist/resource-loader.js +39 -4
  7. package/dist/resources/extensions/ask-user-questions.js +217 -0
  8. package/dist/resources/extensions/async-jobs/async-bash-tool.js +180 -0
  9. package/dist/resources/extensions/async-jobs/await-tool.js +90 -0
  10. package/dist/resources/extensions/async-jobs/cancel-job-tool.js +28 -0
  11. package/dist/resources/extensions/async-jobs/index.js +119 -0
  12. package/dist/resources/extensions/async-jobs/job-manager.js +159 -0
  13. package/dist/resources/extensions/aws-auth/index.js +138 -0
  14. package/dist/resources/extensions/bg-shell/bg-shell-command.js +182 -0
  15. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +343 -0
  16. package/dist/resources/extensions/bg-shell/bg-shell-tool.js +831 -0
  17. package/dist/resources/extensions/bg-shell/index.js +41 -0
  18. package/dist/resources/extensions/bg-shell/interaction.js +160 -0
  19. package/dist/resources/extensions/bg-shell/output-formatter.js +245 -0
  20. package/dist/resources/extensions/bg-shell/overlay.js +378 -0
  21. package/dist/resources/extensions/bg-shell/process-manager.js +413 -0
  22. package/dist/resources/extensions/bg-shell/readiness-detector.js +109 -0
  23. package/dist/resources/extensions/bg-shell/types.js +96 -0
  24. package/dist/resources/extensions/bg-shell/utilities.js +50 -0
  25. package/dist/resources/extensions/browser-tools/capture.js +179 -0
  26. package/dist/resources/extensions/browser-tools/core.js +899 -0
  27. package/dist/resources/extensions/browser-tools/{evaluate-helpers.ts → evaluate-helpers.js} +0 -1
  28. package/dist/resources/extensions/browser-tools/index.js +123 -0
  29. package/dist/resources/extensions/browser-tools/lifecycle.js +222 -0
  30. package/dist/resources/extensions/browser-tools/refs.js +254 -0
  31. package/dist/resources/extensions/browser-tools/settle.js +173 -0
  32. package/dist/resources/extensions/browser-tools/state.js +126 -0
  33. package/dist/resources/extensions/browser-tools/tools/action-cache.js +179 -0
  34. package/dist/resources/extensions/browser-tools/tools/assertions.js +320 -0
  35. package/dist/resources/extensions/browser-tools/tools/codegen.js +242 -0
  36. package/dist/resources/extensions/browser-tools/tools/device.js +162 -0
  37. package/dist/resources/extensions/browser-tools/tools/extract.js +191 -0
  38. package/dist/resources/extensions/browser-tools/tools/forms.js +710 -0
  39. package/dist/resources/extensions/browser-tools/tools/injection-detect.js +178 -0
  40. package/dist/resources/extensions/browser-tools/tools/inspection.js +426 -0
  41. package/dist/resources/extensions/browser-tools/tools/intent.js +556 -0
  42. package/dist/resources/extensions/browser-tools/tools/interaction.js +776 -0
  43. package/dist/resources/extensions/browser-tools/tools/navigation.js +208 -0
  44. package/dist/resources/extensions/browser-tools/tools/network-mock.js +194 -0
  45. package/dist/resources/extensions/browser-tools/tools/pages.js +280 -0
  46. package/dist/resources/extensions/browser-tools/tools/pdf.js +74 -0
  47. package/dist/resources/extensions/browser-tools/tools/refs.js +485 -0
  48. package/dist/resources/extensions/browser-tools/tools/screenshot.js +87 -0
  49. package/dist/resources/extensions/browser-tools/tools/session.js +375 -0
  50. package/dist/resources/extensions/browser-tools/tools/state-persistence.js +180 -0
  51. package/dist/resources/extensions/browser-tools/tools/visual-diff.js +174 -0
  52. package/dist/resources/extensions/browser-tools/tools/wait.js +201 -0
  53. package/dist/resources/extensions/browser-tools/tools/zoom.js +90 -0
  54. package/dist/resources/extensions/browser-tools/utils.js +490 -0
  55. package/dist/resources/extensions/context7/index.js +337 -0
  56. package/dist/resources/extensions/get-secrets-from-user.js +492 -0
  57. package/dist/resources/extensions/google-search/index.js +373 -0
  58. package/dist/resources/extensions/gsd/activity-log.js +146 -0
  59. package/dist/resources/extensions/gsd/atomic-write.js +38 -0
  60. package/dist/resources/extensions/gsd/auto/session.js +182 -0
  61. package/dist/resources/extensions/gsd/auto-budget.js +30 -0
  62. package/dist/resources/extensions/gsd/auto-dashboard.js +429 -0
  63. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +185 -0
  64. package/dist/resources/extensions/gsd/auto-dispatch.js +353 -0
  65. package/dist/resources/extensions/gsd/auto-loop.js +956 -0
  66. package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
  67. package/dist/resources/extensions/gsd/auto-observability.js +56 -0
  68. package/dist/resources/extensions/gsd/auto-post-unit.js +385 -0
  69. package/dist/resources/extensions/gsd/auto-prompts.js +1153 -0
  70. package/dist/resources/extensions/gsd/auto-recovery.js +512 -0
  71. package/dist/resources/extensions/gsd/auto-start.js +414 -0
  72. package/dist/resources/extensions/gsd/auto-supervisor.js +47 -0
  73. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
  74. package/dist/resources/extensions/gsd/auto-timers.js +180 -0
  75. package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
  76. package/dist/resources/extensions/gsd/auto-unit-closeout.js +30 -0
  77. package/dist/resources/extensions/gsd/auto-verification.js +171 -0
  78. package/dist/resources/extensions/gsd/auto-worktree-sync.js +167 -0
  79. package/dist/resources/extensions/gsd/auto-worktree.js +830 -0
  80. package/dist/resources/extensions/gsd/auto.js +765 -0
  81. package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
  82. package/dist/resources/extensions/gsd/captures.js +354 -0
  83. package/dist/resources/extensions/gsd/changelog.js +162 -0
  84. package/dist/resources/extensions/gsd/claude-import.js +540 -0
  85. package/dist/resources/extensions/gsd/collision-diagnostics.js +226 -0
  86. package/dist/resources/extensions/gsd/commands-bootstrap.js +224 -0
  87. package/dist/resources/extensions/gsd/commands-config.js +89 -0
  88. package/dist/resources/extensions/gsd/commands-extensions.js +259 -0
  89. package/dist/resources/extensions/gsd/commands-handlers.js +310 -0
  90. package/dist/resources/extensions/gsd/commands-inspect.js +70 -0
  91. package/dist/resources/extensions/gsd/commands-logs.js +468 -0
  92. package/dist/resources/extensions/gsd/commands-maintenance.js +185 -0
  93. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +660 -0
  94. package/dist/resources/extensions/gsd/commands-workflow-templates.js +408 -0
  95. package/dist/resources/extensions/gsd/commands.js +1031 -0
  96. package/dist/resources/extensions/gsd/complexity-classifier.js +257 -0
  97. package/dist/resources/extensions/gsd/{constants.ts → constants.js} +0 -6
  98. package/dist/resources/extensions/gsd/context-budget.js +187 -0
  99. package/dist/resources/extensions/gsd/context-store.js +165 -0
  100. package/dist/resources/extensions/gsd/crash-recovery.js +110 -0
  101. package/dist/resources/extensions/gsd/dashboard-overlay.js +562 -0
  102. package/dist/resources/extensions/gsd/db-writer.js +298 -0
  103. package/dist/resources/extensions/gsd/debug-logger.js +161 -0
  104. package/dist/resources/extensions/gsd/detection.js +373 -0
  105. package/dist/resources/extensions/gsd/diff-context.js +168 -0
  106. package/dist/resources/extensions/gsd/dispatch-guard.js +75 -0
  107. package/dist/resources/extensions/gsd/docs/preferences-reference.md +25 -18
  108. package/dist/resources/extensions/gsd/doctor-checks.js +562 -0
  109. package/dist/resources/extensions/gsd/doctor-environment.js +429 -0
  110. package/dist/resources/extensions/gsd/doctor-format.js +71 -0
  111. package/dist/resources/extensions/gsd/doctor-proactive.js +239 -0
  112. package/dist/resources/extensions/gsd/doctor-providers.js +292 -0
  113. package/dist/resources/extensions/gsd/doctor-types.js +12 -0
  114. package/dist/resources/extensions/gsd/doctor.js +672 -0
  115. package/dist/resources/extensions/gsd/error-utils.js +6 -0
  116. package/dist/resources/extensions/gsd/{errors.ts → errors.js} +6 -11
  117. package/dist/resources/extensions/gsd/exit-command.js +11 -0
  118. package/dist/resources/extensions/gsd/{export-html.ts → export-html.js} +482 -614
  119. package/dist/resources/extensions/gsd/export.js +268 -0
  120. package/dist/resources/extensions/gsd/file-watcher.js +76 -0
  121. package/dist/resources/extensions/gsd/files.js +937 -0
  122. package/dist/resources/extensions/gsd/forensics.js +511 -0
  123. package/dist/resources/extensions/gsd/{git-constants.ts → git-constants.js} +4 -5
  124. package/dist/resources/extensions/gsd/git-self-heal.js +113 -0
  125. package/dist/resources/extensions/gsd/git-service.js +460 -0
  126. package/dist/resources/extensions/gsd/{gitignore.ts → gitignore.js} +98 -125
  127. package/dist/resources/extensions/gsd/gsd-db.js +735 -0
  128. package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
  129. package/dist/resources/extensions/gsd/guided-flow.js +1158 -0
  130. package/dist/resources/extensions/gsd/health-widget.js +141 -0
  131. package/dist/resources/extensions/gsd/history.js +118 -0
  132. package/dist/resources/extensions/gsd/index.js +1114 -0
  133. package/dist/resources/extensions/gsd/init-wizard.js +479 -0
  134. package/dist/resources/extensions/gsd/json-persistence.js +62 -0
  135. package/dist/resources/extensions/gsd/{jsonl-utils.ts → jsonl-utils.js} +10 -7
  136. package/dist/resources/extensions/gsd/key-manager.js +829 -0
  137. package/dist/resources/extensions/gsd/marketplace-discovery.js +356 -0
  138. package/dist/resources/extensions/gsd/md-importer.js +440 -0
  139. package/dist/resources/extensions/gsd/memory-extractor.js +295 -0
  140. package/dist/resources/extensions/gsd/memory-store.js +351 -0
  141. package/dist/resources/extensions/gsd/metrics.js +377 -0
  142. package/dist/resources/extensions/gsd/migrate/command.js +157 -0
  143. package/dist/resources/extensions/gsd/migrate/index.js +7 -0
  144. package/dist/resources/extensions/gsd/migrate/parser.js +268 -0
  145. package/dist/resources/extensions/gsd/migrate/parsers.js +477 -0
  146. package/dist/resources/extensions/gsd/migrate/preview.js +47 -0
  147. package/dist/resources/extensions/gsd/migrate/transformer.js +278 -0
  148. package/dist/resources/extensions/gsd/migrate/types.js +4 -0
  149. package/dist/resources/extensions/gsd/migrate/validator.js +41 -0
  150. package/dist/resources/extensions/gsd/migrate/writer.js +477 -0
  151. package/dist/resources/extensions/gsd/migrate-external.js +130 -0
  152. package/dist/resources/extensions/gsd/milestone-actions.js +111 -0
  153. package/dist/resources/extensions/gsd/{milestone-ids.ts → milestone-ids.js} +50 -63
  154. package/dist/resources/extensions/gsd/model-cost-table.js +48 -0
  155. package/dist/resources/extensions/gsd/model-router.js +187 -0
  156. package/dist/resources/extensions/gsd/namespaced-registry.js +322 -0
  157. package/dist/resources/extensions/gsd/namespaced-resolver.js +176 -0
  158. package/dist/resources/extensions/gsd/native-git-bridge.js +842 -0
  159. package/dist/resources/extensions/gsd/native-parser-bridge.js +156 -0
  160. package/dist/resources/extensions/gsd/notifications.js +58 -0
  161. package/dist/resources/extensions/gsd/observability-validator.js +398 -0
  162. package/dist/resources/extensions/gsd/parallel-eligibility.js +182 -0
  163. package/dist/resources/extensions/gsd/parallel-merge.js +121 -0
  164. package/dist/resources/extensions/gsd/parallel-orchestrator.js +687 -0
  165. package/dist/resources/extensions/gsd/paths.js +414 -0
  166. package/dist/resources/extensions/gsd/plugin-importer.js +254 -0
  167. package/dist/resources/extensions/gsd/post-unit-hooks.js +433 -0
  168. package/dist/resources/extensions/gsd/preferences-models.js +294 -0
  169. package/dist/resources/extensions/gsd/preferences-skills.js +154 -0
  170. package/dist/resources/extensions/gsd/preferences-types.js +73 -0
  171. package/dist/resources/extensions/gsd/preferences-validation.js +607 -0
  172. package/dist/resources/extensions/gsd/preferences.js +325 -0
  173. package/dist/resources/extensions/gsd/progress-score.js +102 -0
  174. package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +150 -0
  175. package/dist/resources/extensions/gsd/prompt-compressor.js +393 -0
  176. package/dist/resources/extensions/gsd/prompt-loader.js +119 -0
  177. package/dist/resources/extensions/gsd/prompt-ordering.js +170 -0
  178. package/dist/resources/extensions/gsd/provider-error-pause.js +60 -0
  179. package/dist/resources/extensions/gsd/queue-order.js +178 -0
  180. package/dist/resources/extensions/gsd/queue-reorder-ui.js +234 -0
  181. package/dist/resources/extensions/gsd/quick.js +206 -0
  182. package/dist/resources/extensions/gsd/repo-identity.js +187 -0
  183. package/dist/resources/extensions/gsd/{reports.ts → reports.js} +146 -241
  184. package/dist/resources/extensions/gsd/{resource-version.ts → resource-version.js} +50 -53
  185. package/dist/resources/extensions/gsd/roadmap-slices.js +130 -0
  186. package/dist/resources/extensions/gsd/routing-history.js +210 -0
  187. package/dist/resources/extensions/gsd/safe-fs.js +52 -0
  188. package/dist/resources/extensions/gsd/semantic-chunker.js +254 -0
  189. package/dist/resources/extensions/gsd/session-forensics.js +427 -0
  190. package/dist/resources/extensions/gsd/session-lock.js +397 -0
  191. package/dist/resources/extensions/gsd/session-status-io.js +134 -0
  192. package/dist/resources/extensions/gsd/skill-discovery.js +121 -0
  193. package/dist/resources/extensions/gsd/skill-health.js +324 -0
  194. package/dist/resources/extensions/gsd/{skill-telemetry.ts → skill-telemetry.js} +58 -74
  195. package/dist/resources/extensions/gsd/state.js +653 -0
  196. package/dist/resources/extensions/gsd/structured-data-formatter.js +97 -0
  197. package/dist/resources/extensions/gsd/summary-distiller.js +212 -0
  198. package/dist/resources/extensions/gsd/templates/preferences.md +1 -0
  199. package/dist/resources/extensions/gsd/token-counter.js +54 -0
  200. package/dist/resources/extensions/gsd/triage-resolution.js +217 -0
  201. package/dist/resources/extensions/gsd/triage-ui.js +125 -0
  202. package/dist/resources/extensions/gsd/types.js +4 -0
  203. package/dist/resources/extensions/gsd/undo.js +205 -0
  204. package/dist/resources/extensions/gsd/unit-id.js +7 -0
  205. package/dist/resources/extensions/gsd/unit-runtime.js +131 -0
  206. package/dist/resources/extensions/gsd/validate-directory.js +143 -0
  207. package/dist/resources/extensions/gsd/verification-evidence.js +122 -0
  208. package/dist/resources/extensions/gsd/verification-gate.js +514 -0
  209. package/dist/resources/extensions/gsd/visualizer-data.js +612 -0
  210. package/dist/resources/extensions/gsd/visualizer-overlay.js +501 -0
  211. package/dist/resources/extensions/gsd/visualizer-views.js +893 -0
  212. package/dist/resources/extensions/gsd/workflow-templates.js +188 -0
  213. package/dist/resources/extensions/gsd/workspace-index.js +139 -0
  214. package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +40 -0
  215. package/dist/resources/extensions/gsd/worktree-command.js +682 -0
  216. package/dist/resources/extensions/gsd/worktree-manager.js +358 -0
  217. package/dist/resources/extensions/gsd/worktree-resolver.js +344 -0
  218. package/dist/resources/extensions/gsd/worktree.js +199 -0
  219. package/dist/resources/extensions/mac-tools/index.js +768 -0
  220. package/dist/resources/extensions/mcp-client/index.js +364 -0
  221. package/dist/resources/extensions/package.json +3 -0
  222. package/dist/resources/extensions/remote-questions/config.js +70 -0
  223. package/dist/resources/extensions/remote-questions/discord-adapter.js +134 -0
  224. package/dist/resources/extensions/remote-questions/format.js +234 -0
  225. package/dist/resources/extensions/remote-questions/http-client.js +43 -0
  226. package/dist/resources/extensions/remote-questions/manager.js +156 -0
  227. package/dist/resources/extensions/remote-questions/{mod.ts → mod.js} +1 -10
  228. package/dist/resources/extensions/remote-questions/notify.js +89 -0
  229. package/dist/resources/extensions/remote-questions/remote-command.js +453 -0
  230. package/dist/resources/extensions/remote-questions/slack-adapter.js +123 -0
  231. package/dist/resources/extensions/remote-questions/status.js +25 -0
  232. package/dist/resources/extensions/remote-questions/store.js +70 -0
  233. package/dist/resources/extensions/remote-questions/telegram-adapter.js +123 -0
  234. package/dist/resources/extensions/remote-questions/types.js +5 -0
  235. package/dist/resources/extensions/search-the-web/cache.js +74 -0
  236. package/dist/resources/extensions/search-the-web/command-search-provider.js +79 -0
  237. package/dist/resources/extensions/search-the-web/format.js +161 -0
  238. package/dist/resources/extensions/search-the-web/http.js +178 -0
  239. package/dist/resources/extensions/search-the-web/index.js +41 -0
  240. package/dist/resources/extensions/search-the-web/native-search.js +166 -0
  241. package/dist/resources/extensions/search-the-web/provider.js +143 -0
  242. package/dist/resources/extensions/search-the-web/tavily.js +82 -0
  243. package/dist/resources/extensions/search-the-web/tool-fetch-page.js +452 -0
  244. package/dist/resources/extensions/search-the-web/tool-llm-context.js +455 -0
  245. package/dist/resources/extensions/search-the-web/tool-search.js +482 -0
  246. package/dist/resources/extensions/search-the-web/url-utils.js +121 -0
  247. package/dist/resources/extensions/shared/confirm-ui.js +96 -0
  248. package/dist/resources/extensions/shared/{format-utils.ts → format-utils.js} +85 -91
  249. package/dist/resources/extensions/shared/frontmatter.js +109 -0
  250. package/dist/resources/extensions/shared/interview-ui.js +569 -0
  251. package/dist/resources/extensions/shared/{mod.ts → mod.js} +2 -24
  252. package/dist/resources/extensions/shared/next-action-ui.js +168 -0
  253. package/dist/resources/extensions/shared/{path-display.ts → path-display.js} +2 -3
  254. package/dist/resources/extensions/shared/sanitize.js +17 -0
  255. package/dist/resources/extensions/shared/terminal.js +21 -0
  256. package/dist/resources/extensions/shared/ui.js +245 -0
  257. package/dist/resources/extensions/shared/wizard-ui.js +478 -0
  258. package/dist/resources/extensions/slash-commands/audit.js +72 -0
  259. package/dist/resources/extensions/slash-commands/clear.js +8 -0
  260. package/dist/resources/extensions/slash-commands/create-extension.js +264 -0
  261. package/dist/resources/extensions/slash-commands/create-slash-command.js +208 -0
  262. package/dist/resources/extensions/slash-commands/index.js +10 -0
  263. package/dist/resources/extensions/subagent/agents.js +103 -0
  264. package/dist/resources/extensions/subagent/index.js +905 -0
  265. package/dist/resources/extensions/subagent/isolation.js +384 -0
  266. package/dist/resources/extensions/subagent/worker-registry.js +73 -0
  267. package/dist/resources/extensions/ttsr/index.js +144 -0
  268. package/dist/resources/extensions/ttsr/rule-loader.js +70 -0
  269. package/dist/resources/extensions/ttsr/ttsr-manager.js +380 -0
  270. package/dist/resources/extensions/universal-config/discovery.js +94 -0
  271. package/dist/resources/extensions/universal-config/format.js +178 -0
  272. package/dist/resources/extensions/universal-config/index.js +99 -0
  273. package/dist/resources/extensions/universal-config/scanners.js +574 -0
  274. package/dist/resources/extensions/universal-config/tools.js +57 -0
  275. package/dist/resources/extensions/universal-config/types.js +8 -0
  276. package/dist/resources/extensions/voice/index.js +247 -0
  277. package/dist/startup-timings.d.ts +2 -0
  278. package/dist/startup-timings.js +22 -0
  279. package/dist/tool-bootstrap.js +59 -11
  280. package/dist/worktree-cli.js +7 -7
  281. package/package.json +1 -1
  282. package/packages/native/dist/native.d.ts +0 -2
  283. package/packages/native/dist/native.js +0 -2
  284. package/packages/native/src/native.ts +0 -3
  285. package/packages/pi-agent-core/dist/agent-loop.d.ts +14 -0
  286. package/packages/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  287. package/packages/pi-agent-core/dist/agent-loop.js +24 -27
  288. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  289. package/packages/pi-agent-core/dist/agent.d.ts +1 -0
  290. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  291. package/packages/pi-agent-core/dist/agent.js +11 -22
  292. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  293. package/packages/pi-agent-core/dist/proxy.d.ts +1 -25
  294. package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
  295. package/packages/pi-agent-core/dist/proxy.js +1 -1
  296. package/packages/pi-agent-core/dist/proxy.js.map +1 -1
  297. package/packages/pi-agent-core/src/agent-loop.ts +30 -27
  298. package/packages/pi-agent-core/src/agent.ts +12 -23
  299. package/packages/pi-agent-core/src/proxy.ts +1 -1
  300. package/packages/pi-ai/dist/api-registry.d.ts +0 -2
  301. package/packages/pi-ai/dist/api-registry.d.ts.map +1 -1
  302. package/packages/pi-ai/dist/api-registry.js +0 -10
  303. package/packages/pi-ai/dist/api-registry.js.map +1 -1
  304. package/packages/pi-ai/dist/providers/anthropic.d.ts +0 -8
  305. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  306. package/packages/pi-ai/dist/providers/anthropic.js +1 -1
  307. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  308. package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts +0 -1
  309. package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
  310. package/packages/pi-ai/dist/providers/github-copilot-headers.js +1 -1
  311. package/packages/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
  312. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts +1 -43
  313. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts.map +1 -1
  314. package/packages/pi-ai/dist/providers/google-gemini-cli.js +2 -2
  315. package/packages/pi-ai/dist/providers/google-gemini-cli.js.map +1 -1
  316. package/packages/pi-ai/dist/providers/google-shared.d.ts +0 -4
  317. package/packages/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  318. package/packages/pi-ai/dist/providers/google-shared.js +1 -1
  319. package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
  320. package/packages/pi-ai/dist/providers/register-builtins.d.ts +0 -1
  321. package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  322. package/packages/pi-ai/dist/providers/register-builtins.js +1 -1
  323. package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
  324. package/packages/pi-ai/dist/utils/event-stream.d.ts +0 -2
  325. package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  326. package/packages/pi-ai/dist/utils/event-stream.js +0 -4
  327. package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
  328. package/packages/pi-ai/dist/utils/overflow.d.ts +0 -4
  329. package/packages/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  330. package/packages/pi-ai/dist/utils/overflow.js +0 -6
  331. package/packages/pi-ai/dist/utils/overflow.js.map +1 -1
  332. package/packages/pi-ai/dist/utils/validation.d.ts +0 -8
  333. package/packages/pi-ai/dist/utils/validation.d.ts.map +1 -1
  334. package/packages/pi-ai/dist/utils/validation.js +0 -14
  335. package/packages/pi-ai/dist/utils/validation.js.map +1 -1
  336. package/packages/pi-ai/src/api-registry.ts +0 -12
  337. package/packages/pi-ai/src/providers/anthropic.ts +1 -1
  338. package/packages/pi-ai/src/providers/github-copilot-headers.ts +1 -1
  339. package/packages/pi-ai/src/providers/google-gemini-cli.ts +2 -2
  340. package/packages/pi-ai/src/providers/google-shared.ts +1 -1
  341. package/packages/pi-ai/src/providers/register-builtins.ts +1 -1
  342. package/packages/pi-ai/src/utils/event-stream.ts +0 -5
  343. package/packages/pi-ai/src/utils/overflow.ts +1 -8
  344. package/packages/pi-ai/src/utils/validation.ts +0 -15
  345. package/packages/pi-coding-agent/dist/config.d.ts +0 -9
  346. package/packages/pi-coding-agent/dist/config.d.ts.map +1 -1
  347. package/packages/pi-coding-agent/dist/config.js +4 -8
  348. package/packages/pi-coding-agent/dist/config.js.map +1 -1
  349. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +4 -0
  350. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  351. package/packages/pi-coding-agent/dist/core/agent-session.js +24 -5
  352. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  353. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts +0 -4
  354. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  355. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js +1 -1
  356. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js.map +1 -1
  357. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  358. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  359. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  360. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  361. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +1 -0
  362. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  363. package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
  364. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  365. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +0 -5
  366. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  367. package/packages/pi-coding-agent/dist/core/extensions/runner.js +0 -13
  368. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  369. package/packages/pi-coding-agent/dist/core/keybindings.d.ts +0 -8
  370. package/packages/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  371. package/packages/pi-coding-agent/dist/core/keybindings.js +2 -2
  372. package/packages/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  373. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts +0 -17
  374. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
  375. package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -62
  376. package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
  377. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts +0 -2
  378. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts.map +1 -1
  379. package/packages/pi-coding-agent/dist/core/lsp/config.js +0 -7
  380. package/packages/pi-coding-agent/dist/core/lsp/config.js.map +1 -1
  381. package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts +0 -5
  382. package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts.map +1 -1
  383. package/packages/pi-coding-agent/dist/core/lsp/edits.js +1 -1
  384. package/packages/pi-coding-agent/dist/core/lsp/edits.js.map +1 -1
  385. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts +0 -1
  386. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  387. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +1 -1
  388. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  389. package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts +1 -6
  390. package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts.map +1 -1
  391. package/packages/pi-coding-agent/dist/core/lsp/utils.js +1 -28
  392. package/packages/pi-coding-agent/dist/core/lsp/utils.js.map +1 -1
  393. package/packages/pi-coding-agent/dist/core/messages.d.ts +0 -8
  394. package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
  395. package/packages/pi-coding-agent/dist/core/messages.js +5 -5
  396. package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
  397. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +0 -3
  398. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  399. package/packages/pi-coding-agent/dist/core/model-registry.js +1 -3
  400. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  401. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts +1 -26
  402. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  403. package/packages/pi-coding-agent/dist/core/model-resolver.js +3 -59
  404. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  405. package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts +0 -17
  406. package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
  407. package/packages/pi-coding-agent/dist/core/prompt-templates.js +2 -2
  408. package/packages/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
  409. package/packages/pi-coding-agent/dist/core/session-manager.d.ts +0 -4
  410. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  411. package/packages/pi-coding-agent/dist/core/session-manager.js +2 -4
  412. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  413. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +8 -12
  414. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  415. package/packages/pi-coding-agent/dist/core/settings-manager.js +78 -168
  416. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  417. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  418. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  419. package/packages/pi-coding-agent/dist/index.js +1 -1
  420. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  421. package/packages/pi-coding-agent/dist/migrations.d.ts +0 -16
  422. package/packages/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  423. package/packages/pi-coding-agent/dist/migrations.js +2 -2
  424. package/packages/pi-coding-agent/dist/migrations.js.map +1 -1
  425. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts +0 -2
  426. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  427. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js +2 -2
  428. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  429. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +1 -24
  430. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  431. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +50 -512
  432. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  433. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts +71 -0
  434. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -0
  435. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +514 -0
  436. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -0
  437. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +65 -4
  438. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  439. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +6 -23
  440. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  441. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +12 -0
  442. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  443. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +175 -0
  444. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -0
  445. package/packages/pi-coding-agent/dist/utils/changelog.d.ts +0 -4
  446. package/packages/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  447. package/packages/pi-coding-agent/dist/utils/changelog.js +1 -1
  448. package/packages/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  449. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts +0 -1
  450. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  451. package/packages/pi-coding-agent/dist/utils/clipboard-image.js +1 -1
  452. package/packages/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  453. package/packages/pi-coding-agent/dist/utils/photon.d.ts +0 -19
  454. package/packages/pi-coding-agent/dist/utils/photon.d.ts.map +1 -1
  455. package/packages/pi-coding-agent/dist/utils/photon.js +1 -120
  456. package/packages/pi-coding-agent/dist/utils/photon.js.map +1 -1
  457. package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts +0 -1
  458. package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
  459. package/packages/pi-coding-agent/dist/utils/tools-manager.js +1 -1
  460. package/packages/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
  461. package/packages/pi-coding-agent/package.json +1 -1
  462. package/packages/pi-coding-agent/src/config.ts +5 -10
  463. package/packages/pi-coding-agent/src/core/agent-session.ts +26 -5
  464. package/packages/pi-coding-agent/src/core/export-html/ansi-to-html.ts +1 -1
  465. package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
  466. package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
  467. package/packages/pi-coding-agent/src/core/extensions/runner.ts +0 -13
  468. package/packages/pi-coding-agent/src/core/keybindings.ts +2 -2
  469. package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -73
  470. package/packages/pi-coding-agent/src/core/lsp/config.ts +0 -11
  471. package/packages/pi-coding-agent/src/core/lsp/edits.ts +1 -1
  472. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +1 -1
  473. package/packages/pi-coding-agent/src/core/lsp/utils.ts +1 -33
  474. package/packages/pi-coding-agent/src/core/messages.ts +5 -5
  475. package/packages/pi-coding-agent/src/core/model-registry.ts +0 -2
  476. package/packages/pi-coding-agent/src/core/model-resolver.ts +3 -77
  477. package/packages/pi-coding-agent/src/core/prompt-templates.ts +2 -2
  478. package/packages/pi-coding-agent/src/core/session-manager.ts +2 -4
  479. package/packages/pi-coding-agent/src/core/settings-manager.ts +87 -166
  480. package/packages/pi-coding-agent/src/index.ts +1 -0
  481. package/packages/pi-coding-agent/src/migrations.ts +2 -2
  482. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts +2 -2
  483. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +50 -561
  484. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +653 -0
  485. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +7 -26
  486. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +196 -0
  487. package/packages/pi-coding-agent/src/utils/changelog.ts +1 -1
  488. package/packages/pi-coding-agent/src/utils/clipboard-image.ts +1 -1
  489. package/packages/pi-coding-agent/src/utils/photon.ts +0 -137
  490. package/packages/pi-coding-agent/src/utils/tools-manager.ts +1 -1
  491. package/packages/pi-tui/dist/components/editor.d.ts +0 -10
  492. package/packages/pi-tui/dist/components/editor.d.ts.map +1 -1
  493. package/packages/pi-tui/dist/components/editor.js +1 -1
  494. package/packages/pi-tui/dist/components/editor.js.map +1 -1
  495. package/packages/pi-tui/dist/overlay-layout.d.ts +55 -0
  496. package/packages/pi-tui/dist/overlay-layout.d.ts.map +1 -0
  497. package/packages/pi-tui/dist/overlay-layout.js +288 -0
  498. package/packages/pi-tui/dist/overlay-layout.js.map +1 -0
  499. package/packages/pi-tui/dist/tui.d.ts +0 -22
  500. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  501. package/packages/pi-tui/dist/tui.js +6 -272
  502. package/packages/pi-tui/dist/tui.js.map +1 -1
  503. package/packages/pi-tui/dist/utils.d.ts +0 -7
  504. package/packages/pi-tui/dist/utils.d.ts.map +1 -1
  505. package/packages/pi-tui/dist/utils.js +0 -44
  506. package/packages/pi-tui/dist/utils.js.map +1 -1
  507. package/packages/pi-tui/src/components/editor.ts +1 -1
  508. package/packages/pi-tui/src/overlay-layout.ts +372 -0
  509. package/packages/pi-tui/src/tui.ts +11 -312
  510. package/packages/pi-tui/src/utils.ts +0 -43
  511. package/pkg/dist/core/export-html/ansi-to-html.d.ts +0 -4
  512. package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  513. package/pkg/dist/core/export-html/ansi-to-html.js +1 -1
  514. package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
  515. package/pkg/dist/modes/interactive/theme/theme.d.ts +65 -4
  516. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  517. package/pkg/dist/modes/interactive/theme/theme.js +6 -23
  518. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  519. package/pkg/dist/modes/interactive/theme/themes.d.ts +12 -0
  520. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  521. package/pkg/dist/modes/interactive/theme/themes.js +175 -0
  522. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -0
  523. package/pkg/package.json +1 -1
  524. package/src/resources/extensions/bg-shell/index.ts +41 -46
  525. package/src/resources/extensions/browser-tools/index.ts +156 -67
  526. package/src/resources/extensions/gsd/auto/session.ts +47 -30
  527. package/src/resources/extensions/gsd/auto-dashboard.ts +28 -131
  528. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +6 -1
  529. package/src/resources/extensions/gsd/auto-dispatch.ts +135 -91
  530. package/src/resources/extensions/gsd/auto-loop.ts +1665 -0
  531. package/src/resources/extensions/gsd/auto-observability.ts +4 -2
  532. package/src/resources/extensions/gsd/auto-post-unit.ts +85 -228
  533. package/src/resources/extensions/gsd/auto-prompts.ts +138 -109
  534. package/src/resources/extensions/gsd/auto-recovery.ts +124 -118
  535. package/src/resources/extensions/gsd/auto-start.ts +440 -354
  536. package/src/resources/extensions/gsd/auto-supervisor.ts +5 -12
  537. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +8 -8
  538. package/src/resources/extensions/gsd/auto-timers.ts +3 -4
  539. package/src/resources/extensions/gsd/auto-verification.ts +76 -72
  540. package/src/resources/extensions/gsd/auto-worktree-sync.ts +204 -0
  541. package/src/resources/extensions/gsd/auto-worktree.ts +453 -133
  542. package/src/resources/extensions/gsd/auto.ts +516 -1189
  543. package/src/resources/extensions/gsd/captures.ts +10 -4
  544. package/src/resources/extensions/gsd/changelog.ts +213 -0
  545. package/src/resources/extensions/gsd/commands-bootstrap.ts +253 -0
  546. package/src/resources/extensions/gsd/commands.ts +48 -32
  547. package/src/resources/extensions/gsd/dispatch-guard.ts +13 -9
  548. package/src/resources/extensions/gsd/docs/preferences-reference.md +25 -18
  549. package/src/resources/extensions/gsd/doctor-checks.ts +3 -4
  550. package/src/resources/extensions/gsd/git-service.ts +32 -12
  551. package/src/resources/extensions/gsd/gitignore.ts +4 -2
  552. package/src/resources/extensions/gsd/gsd-db.ts +375 -180
  553. package/src/resources/extensions/gsd/guided-flow.ts +22 -11
  554. package/src/resources/extensions/gsd/index.ts +76 -163
  555. package/src/resources/extensions/gsd/post-unit-hooks.ts +13 -13
  556. package/src/resources/extensions/gsd/progress-score.ts +65 -200
  557. package/src/resources/extensions/gsd/quick.ts +121 -76
  558. package/src/resources/extensions/gsd/repo-identity.ts +56 -22
  559. package/src/resources/extensions/gsd/session-lock.ts +17 -0
  560. package/src/resources/extensions/gsd/templates/preferences.md +1 -0
  561. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +32 -59
  562. package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +75 -27
  563. package/src/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +1 -1
  564. package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +37 -0
  565. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +1458 -0
  566. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +8 -162
  567. package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +2 -108
  568. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +1 -3
  569. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -3
  570. package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +58 -0
  571. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -55
  572. package/src/resources/extensions/gsd/tests/git-service.test.ts +16 -7
  573. package/src/resources/extensions/gsd/tests/headless-query.test.ts +22 -0
  574. package/src/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +8 -11
  575. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +4 -6
  576. package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
  577. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
  578. package/src/resources/extensions/gsd/tests/run-uat.test.ts +3 -3
  579. package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +64 -0
  580. package/src/resources/extensions/gsd/tests/sidecar-queue.test.ts +181 -0
  581. package/src/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -3
  582. package/src/resources/extensions/gsd/tests/token-profile.test.ts +6 -6
  583. package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +6 -6
  584. package/src/resources/extensions/gsd/tests/undo.test.ts +6 -0
  585. package/src/resources/extensions/gsd/tests/verification-evidence.test.ts +24 -26
  586. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +7 -136
  587. package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +205 -0
  588. package/src/resources/extensions/gsd/tests/worktree-db.test.ts +442 -0
  589. package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -3
  590. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +705 -0
  591. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +57 -106
  592. package/src/resources/extensions/gsd/tests/worktree.test.ts +5 -1
  593. package/src/resources/extensions/gsd/tests/write-gate.test.ts +43 -132
  594. package/src/resources/extensions/gsd/types.ts +90 -77
  595. package/src/resources/extensions/gsd/undo.ts +42 -46
  596. package/src/resources/extensions/gsd/unit-runtime.ts +14 -18
  597. package/src/resources/extensions/gsd/verification-evidence.ts +0 -2
  598. package/src/resources/extensions/gsd/verification-gate.ts +4 -16
  599. package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
  600. package/src/resources/extensions/gsd/worktree-command.ts +29 -11
  601. package/src/resources/extensions/gsd/worktree-manager.ts +2 -3
  602. package/src/resources/extensions/gsd/worktree-resolver.ts +485 -0
  603. package/src/resources/extensions/gsd/worktree.ts +7 -44
  604. package/src/resources/extensions/mcp-client/index.ts +2 -1
  605. package/src/resources/extensions/package.json +3 -0
  606. package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
  607. package/src/resources/extensions/search-the-web/index.ts +35 -52
  608. package/src/resources/extensions/search-the-web/tavily.ts +1 -1
  609. package/dist/resources/extensions/ask-user-questions.ts +0 -290
  610. package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
  611. package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
  612. package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
  613. package/dist/resources/extensions/async-jobs/index.ts +0 -141
  614. package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
  615. package/dist/resources/extensions/aws-auth/index.ts +0 -144
  616. package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
  617. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
  618. package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
  619. package/dist/resources/extensions/bg-shell/index.ts +0 -59
  620. package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
  621. package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
  622. package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
  623. package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
  624. package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
  625. package/dist/resources/extensions/bg-shell/types.ts +0 -303
  626. package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
  627. package/dist/resources/extensions/browser-tools/capture.ts +0 -199
  628. package/dist/resources/extensions/browser-tools/core.ts +0 -1196
  629. package/dist/resources/extensions/browser-tools/index.ts +0 -71
  630. package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
  631. package/dist/resources/extensions/browser-tools/refs.ts +0 -264
  632. package/dist/resources/extensions/browser-tools/settle.ts +0 -197
  633. package/dist/resources/extensions/browser-tools/state.ts +0 -408
  634. package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
  635. package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
  636. package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
  637. package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
  638. package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
  639. package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
  640. package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
  641. package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
  642. package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
  643. package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
  644. package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
  645. package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
  646. package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
  647. package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
  648. package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
  649. package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
  650. package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
  651. package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
  652. package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
  653. package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
  654. package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
  655. package/dist/resources/extensions/browser-tools/utils.ts +0 -660
  656. package/dist/resources/extensions/context7/index.ts +0 -428
  657. package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
  658. package/dist/resources/extensions/google-search/index.ts +0 -466
  659. package/dist/resources/extensions/gsd/activity-log.ts +0 -162
  660. package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
  661. package/dist/resources/extensions/gsd/auto/session.ts +0 -236
  662. package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
  663. package/dist/resources/extensions/gsd/auto-constants.ts +0 -6
  664. package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
  665. package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
  666. package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
  667. package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
  668. package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
  669. package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
  670. package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
  671. package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
  672. package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
  673. package/dist/resources/extensions/gsd/auto-start.ts +0 -483
  674. package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
  675. package/dist/resources/extensions/gsd/auto-supervisor.ts +0 -61
  676. package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
  677. package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
  678. package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
  679. package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
  680. package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
  681. package/dist/resources/extensions/gsd/auto-worktree.ts +0 -658
  682. package/dist/resources/extensions/gsd/auto.ts +0 -1834
  683. package/dist/resources/extensions/gsd/captures.ts +0 -427
  684. package/dist/resources/extensions/gsd/claude-import.ts +0 -656
  685. package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
  686. package/dist/resources/extensions/gsd/commands-config.ts +0 -102
  687. package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
  688. package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
  689. package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
  690. package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
  691. package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
  692. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
  693. package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
  694. package/dist/resources/extensions/gsd/commands.ts +0 -1149
  695. package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
  696. package/dist/resources/extensions/gsd/context-budget.ts +0 -266
  697. package/dist/resources/extensions/gsd/context-store.ts +0 -195
  698. package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
  699. package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
  700. package/dist/resources/extensions/gsd/db-writer.ts +0 -360
  701. package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
  702. package/dist/resources/extensions/gsd/detection.ts +0 -470
  703. package/dist/resources/extensions/gsd/diff-context.ts +0 -214
  704. package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
  705. package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
  706. package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
  707. package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
  708. package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
  709. package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
  710. package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
  711. package/dist/resources/extensions/gsd/doctor.ts +0 -722
  712. package/dist/resources/extensions/gsd/error-utils.ts +0 -6
  713. package/dist/resources/extensions/gsd/exit-command.ts +0 -18
  714. package/dist/resources/extensions/gsd/export.ts +0 -317
  715. package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
  716. package/dist/resources/extensions/gsd/files.ts +0 -1058
  717. package/dist/resources/extensions/gsd/forensics.ts +0 -629
  718. package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
  719. package/dist/resources/extensions/gsd/git-service.ts +0 -580
  720. package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
  721. package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
  722. package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
  723. package/dist/resources/extensions/gsd/health-widget.ts +0 -167
  724. package/dist/resources/extensions/gsd/history.ts +0 -143
  725. package/dist/resources/extensions/gsd/index.ts +0 -1390
  726. package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
  727. package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
  728. package/dist/resources/extensions/gsd/key-manager.ts +0 -996
  729. package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
  730. package/dist/resources/extensions/gsd/md-importer.ts +0 -527
  731. package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
  732. package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
  733. package/dist/resources/extensions/gsd/memory-store.ts +0 -441
  734. package/dist/resources/extensions/gsd/metrics.ts +0 -532
  735. package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
  736. package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
  737. package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
  738. package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
  739. package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
  740. package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
  741. package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
  742. package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
  743. package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
  744. package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
  745. package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
  746. package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
  747. package/dist/resources/extensions/gsd/model-router.ts +0 -256
  748. package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
  749. package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
  750. package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
  751. package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
  752. package/dist/resources/extensions/gsd/notifications.ts +0 -87
  753. package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
  754. package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
  755. package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
  756. package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
  757. package/dist/resources/extensions/gsd/paths.ts +0 -449
  758. package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
  759. package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
  760. package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
  761. package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
  762. package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
  763. package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
  764. package/dist/resources/extensions/gsd/preferences.ts +0 -416
  765. package/dist/resources/extensions/gsd/progress-score.ts +0 -273
  766. package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
  767. package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
  768. package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
  769. package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
  770. package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
  771. package/dist/resources/extensions/gsd/queue-order.ts +0 -230
  772. package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
  773. package/dist/resources/extensions/gsd/quick.ts +0 -212
  774. package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
  775. package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
  776. package/dist/resources/extensions/gsd/routing-history.ts +0 -286
  777. package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
  778. package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
  779. package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
  780. package/dist/resources/extensions/gsd/session-lock.ts +0 -426
  781. package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
  782. package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
  783. package/dist/resources/extensions/gsd/skill-health.ts +0 -417
  784. package/dist/resources/extensions/gsd/state.ts +0 -727
  785. package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
  786. package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
  787. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
  788. package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
  789. package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
  790. package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
  791. package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
  792. package/dist/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +0 -691
  793. package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
  794. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
  795. package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
  796. package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
  797. package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
  798. package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
  799. package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
  800. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
  801. package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
  802. package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
  803. package/dist/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +0 -317
  804. package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
  805. package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
  806. package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
  807. package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
  808. package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
  809. package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
  810. package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
  811. package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
  812. package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
  813. package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
  814. package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
  815. package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
  816. package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
  817. package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
  818. package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
  819. package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
  820. package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
  821. package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
  822. package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
  823. package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
  824. package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
  825. package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
  826. package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
  827. package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
  828. package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
  829. package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
  830. package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
  831. package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
  832. package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
  833. package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
  834. package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
  835. package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
  836. package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
  837. package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
  838. package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
  839. package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
  840. package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
  841. package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
  842. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
  843. package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
  844. package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1172
  845. package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
  846. package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
  847. package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
  848. package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
  849. package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
  850. package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
  851. package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
  852. package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
  853. package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
  854. package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
  855. package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
  856. package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
  857. package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
  858. package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
  859. package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -877
  860. package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
  861. package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
  862. package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
  863. package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
  864. package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
  865. package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
  866. package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
  867. package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
  868. package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
  869. package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
  870. package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
  871. package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
  872. package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
  873. package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
  874. package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
  875. package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
  876. package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
  877. package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
  878. package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
  879. package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
  880. package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
  881. package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
  882. package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
  883. package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
  884. package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
  885. package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
  886. package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
  887. package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
  888. package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
  889. package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
  890. package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
  891. package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
  892. package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
  893. package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
  894. package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
  895. package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
  896. package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
  897. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
  898. package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
  899. package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
  900. package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
  901. package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
  902. package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
  903. package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
  904. package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
  905. package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
  906. package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
  907. package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
  908. package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
  909. package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
  910. package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
  911. package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
  912. package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
  913. package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
  914. package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
  915. package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
  916. package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
  917. package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
  918. package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
  919. package/dist/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +0 -358
  920. package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
  921. package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
  922. package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
  923. package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
  924. package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
  925. package/dist/resources/extensions/gsd/tests/session-lock-regression.test.ts +0 -216
  926. package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -434
  927. package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
  928. package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
  929. package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
  930. package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
  931. package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
  932. package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
  933. package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
  934. package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
  935. package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
  936. package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
  937. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
  938. package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
  939. package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
  940. package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
  941. package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
  942. package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
  943. package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
  944. package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
  945. package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
  946. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
  947. package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
  948. package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
  949. package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
  950. package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
  951. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
  952. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
  953. package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
  954. package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
  955. package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
  956. package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
  957. package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
  958. package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
  959. package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
  960. package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
  961. package/dist/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +0 -206
  962. package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
  963. package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
  964. package/dist/resources/extensions/gsd/token-counter.ts +0 -65
  965. package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
  966. package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
  967. package/dist/resources/extensions/gsd/types.ts +0 -425
  968. package/dist/resources/extensions/gsd/undo.ts +0 -223
  969. package/dist/resources/extensions/gsd/unit-id.ts +0 -14
  970. package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
  971. package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
  972. package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
  973. package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
  974. package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
  975. package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
  976. package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
  977. package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
  978. package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
  979. package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
  980. package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
  981. package/dist/resources/extensions/gsd/worktree.ts +0 -257
  982. package/dist/resources/extensions/mac-tools/index.ts +0 -852
  983. package/dist/resources/extensions/mcp-client/index.ts +0 -459
  984. package/dist/resources/extensions/remote-questions/config.ts +0 -83
  985. package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
  986. package/dist/resources/extensions/remote-questions/format.ts +0 -315
  987. package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
  988. package/dist/resources/extensions/remote-questions/manager.ts +0 -184
  989. package/dist/resources/extensions/remote-questions/notify.ts +0 -90
  990. package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
  991. package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
  992. package/dist/resources/extensions/remote-questions/status.ts +0 -31
  993. package/dist/resources/extensions/remote-questions/store.ts +0 -81
  994. package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
  995. package/dist/resources/extensions/remote-questions/types.ts +0 -102
  996. package/dist/resources/extensions/search-the-web/cache.ts +0 -78
  997. package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
  998. package/dist/resources/extensions/search-the-web/format.ts +0 -258
  999. package/dist/resources/extensions/search-the-web/http.ts +0 -238
  1000. package/dist/resources/extensions/search-the-web/index.ts +0 -65
  1001. package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
  1002. package/dist/resources/extensions/search-the-web/provider.ts +0 -148
  1003. package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
  1004. package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
  1005. package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
  1006. package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
  1007. package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
  1008. package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
  1009. package/dist/resources/extensions/shared/frontmatter.ts +0 -117
  1010. package/dist/resources/extensions/shared/interview-ui.ts +0 -613
  1011. package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
  1012. package/dist/resources/extensions/shared/sanitize.ts +0 -19
  1013. package/dist/resources/extensions/shared/terminal.ts +0 -23
  1014. package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
  1015. package/dist/resources/extensions/shared/ui.ts +0 -400
  1016. package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
  1017. package/dist/resources/extensions/slash-commands/audit.ts +0 -88
  1018. package/dist/resources/extensions/slash-commands/clear.ts +0 -10
  1019. package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
  1020. package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
  1021. package/dist/resources/extensions/slash-commands/index.ts +0 -12
  1022. package/dist/resources/extensions/subagent/agents.ts +0 -126
  1023. package/dist/resources/extensions/subagent/index.ts +0 -1121
  1024. package/dist/resources/extensions/subagent/isolation.ts +0 -501
  1025. package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
  1026. package/dist/resources/extensions/ttsr/index.ts +0 -168
  1027. package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
  1028. package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
  1029. package/dist/resources/extensions/universal-config/discovery.ts +0 -104
  1030. package/dist/resources/extensions/universal-config/format.ts +0 -191
  1031. package/dist/resources/extensions/universal-config/index.ts +0 -120
  1032. package/dist/resources/extensions/universal-config/scanners.ts +0 -642
  1033. package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
  1034. package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
  1035. package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
  1036. package/dist/resources/extensions/universal-config/tools.ts +0 -60
  1037. package/dist/resources/extensions/universal-config/types.ts +0 -135
  1038. package/dist/resources/extensions/voice/index.ts +0 -272
  1039. package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
  1040. package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
  1041. package/packages/pi-coding-agent/dist/modes/interactive/theme/dark.json +0 -85
  1042. package/packages/pi-coding-agent/dist/modes/interactive/theme/light.json +0 -84
  1043. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.json +0 -335
  1044. package/packages/pi-coding-agent/src/modes/interactive/theme/dark.json +0 -85
  1045. package/packages/pi-coding-agent/src/modes/interactive/theme/light.json +0 -84
  1046. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.json +0 -335
  1047. package/pkg/dist/modes/interactive/theme/dark.json +0 -85
  1048. package/pkg/dist/modes/interactive/theme/light.json +0 -84
  1049. package/pkg/dist/modes/interactive/theme/theme-schema.json +0 -335
  1050. package/src/resources/extensions/gsd/auto-constants.ts +0 -6
  1051. package/src/resources/extensions/gsd/auto-idempotency.ts +0 -151
  1052. package/src/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
  1053. package/src/resources/extensions/gsd/mechanical-completion.ts +0 -430
  1054. package/src/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +0 -691
  1055. package/src/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
  1056. package/src/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
  1057. package/src/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
  1058. package/src/resources/extensions/gsd/tests/loop-regression.test.ts +0 -877
  1059. package/src/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
  1060. package/src/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
  1061. package/src/resources/extensions/gsd/tests/session-lock.test.ts +0 -434
@@ -6,24 +6,40 @@
6
6
  * manages create, enter, detect, and teardown for auto-mode worktrees.
7
7
  */
8
8
 
9
- import { existsSync, readFileSync, realpathSync, unlinkSync, statSync, rmSync, readdirSync, cpSync, lstatSync as lstatSyncFn } from "node:fs";
10
- import { isAbsolute, join, sep } from "node:path";
9
+ import {
10
+ existsSync,
11
+ cpSync,
12
+ readFileSync,
13
+ readdirSync,
14
+ mkdirSync,
15
+ realpathSync,
16
+ unlinkSync,
17
+ lstatSync as lstatSyncFn,
18
+ } from "node:fs";
19
+ import { isAbsolute, join } from "node:path";
11
20
  import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js";
21
+ import {
22
+ copyWorktreeDb,
23
+ reconcileWorktreeDb,
24
+ isDbAvailable,
25
+ } from "./gsd-db.js";
26
+ import { atomicWriteSync } from "./atomic-write.js";
12
27
  import { execSync, execFileSync } from "node:child_process";
28
+ import { safeCopy, safeCopyRecursive } from "./safe-fs.js";
29
+ import { gsdRoot } from "./paths.js";
13
30
  import {
14
31
  createWorktree,
15
32
  removeWorktree,
16
33
  worktreePath,
17
34
  } from "./worktree-manager.js";
18
- import { detectWorktreeName, resolveGitHeadPath, nudgeGitBranchCache } from "./worktree.js";
19
- import { ensureGsdSymlink } from "./repo-identity.js";
20
35
  import {
21
- MergeConflictError,
22
- readIntegrationBranch,
23
- } from "./git-service.js";
36
+ detectWorktreeName,
37
+ resolveGitHeadPath,
38
+ nudgeGitBranchCache,
39
+ } from "./worktree.js";
40
+ import { MergeConflictError, readIntegrationBranch } from "./git-service.js";
24
41
  import { parseRoadmap } from "./files.js";
25
42
  import { loadEffectiveGSDPreferences } from "./preferences.js";
26
- import { gsdRoot } from "./paths.js";
27
43
  import {
28
44
  nativeGetCurrentBranch,
29
45
  nativeWorkingTreeStatus,
@@ -38,13 +54,28 @@ import {
38
54
  nativeBranchDelete,
39
55
  nativeBranchExists,
40
56
  } from "./native-git-bridge.js";
41
- import { getErrorMessage } from "./error-utils.js";
42
57
 
43
58
  // ─── Module State ──────────────────────────────────────────────────────────
44
59
 
45
60
  /** Original project root before chdir into auto-worktree. */
46
61
  let originalBase: string | null = null;
47
62
 
63
+ function clearProjectRootStateFiles(basePath: string, milestoneId: string): void {
64
+ const gsdDir = gsdRoot(basePath);
65
+ const transientFiles = [
66
+ join(gsdDir, "STATE.md"),
67
+ join(gsdDir, "auto.lock"),
68
+ join(gsdDir, "milestones", milestoneId, `${milestoneId}-META.json`),
69
+ ];
70
+
71
+ for (const file of transientFiles) {
72
+ try {
73
+ unlinkSync(file);
74
+ } catch {
75
+ /* non-fatal — file may not exist */
76
+ }
77
+ }
78
+ }
48
79
  // ─── Worktree ↔ Main Repo Sync (#1311) ──────────────────────────────────────
49
80
 
50
81
  /**
@@ -61,7 +92,10 @@ let originalBase: string | null = null;
61
92
  * Only adds missing content — never overwrites existing files in the worktree
62
93
  * (the worktree's execution state is authoritative for in-progress work).
63
94
  */
64
- export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: string): { synced: string[] } {
95
+ export function syncGsdStateToWorktree(
96
+ mainBasePath: string,
97
+ worktreePath_: string,
98
+ ): { synced: string[] } {
65
99
  const mainGsd = gsdRoot(mainBasePath);
66
100
  const wtGsd = gsdRoot(worktreePath_);
67
101
  const synced: string[] = [];
@@ -78,7 +112,13 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
78
112
  if (!existsSync(mainGsd) || !existsSync(wtGsd)) return { synced };
79
113
 
80
114
  // Sync root-level .gsd/ files (DECISIONS, REQUIREMENTS, PROJECT, KNOWLEDGE)
81
- const rootFiles = ["DECISIONS.md", "REQUIREMENTS.md", "PROJECT.md", "KNOWLEDGE.md", "OVERRIDES.md"];
115
+ const rootFiles = [
116
+ "DECISIONS.md",
117
+ "REQUIREMENTS.md",
118
+ "PROJECT.md",
119
+ "KNOWLEDGE.md",
120
+ "OVERRIDES.md",
121
+ ];
82
122
  for (const f of rootFiles) {
83
123
  const src = join(mainGsd, f);
84
124
  const dst = join(wtGsd, f);
@@ -86,18 +126,23 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
86
126
  try {
87
127
  cpSync(src, dst);
88
128
  synced.push(f);
89
- } catch { /* non-fatal */ }
129
+ } catch {
130
+ /* non-fatal */
131
+ }
90
132
  }
91
133
  }
92
134
 
93
135
  // Sync milestones: copy entire milestone directories that are missing
94
136
  const mainMilestonesDir = join(mainGsd, "milestones");
95
137
  const wtMilestonesDir = join(wtGsd, "milestones");
96
- if (existsSync(mainMilestonesDir) && existsSync(wtMilestonesDir)) {
138
+ if (existsSync(mainMilestonesDir)) {
97
139
  try {
98
- const mainMilestones = readdirSync(mainMilestonesDir, { withFileTypes: true })
99
- .filter(d => d.isDirectory() && /^M\d{3}/.test(d.name))
100
- .map(d => d.name);
140
+ mkdirSync(wtMilestonesDir, { recursive: true });
141
+ const mainMilestones = readdirSync(mainMilestonesDir, {
142
+ withFileTypes: true,
143
+ })
144
+ .filter((d) => d.isDirectory() && /^M\d{3}/.test(d.name))
145
+ .map((d) => d.name);
101
146
 
102
147
  for (const mid of mainMilestones) {
103
148
  const srcDir = join(mainMilestonesDir, mid);
@@ -108,12 +153,16 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
108
153
  try {
109
154
  cpSync(srcDir, dstDir, { recursive: true });
110
155
  synced.push(`milestones/${mid}/`);
111
- } catch { /* non-fatal */ }
156
+ } catch {
157
+ /* non-fatal */
158
+ }
112
159
  } else {
113
160
  // Milestone directory exists but may be missing files (stale snapshot).
114
161
  // Sync individual top-level milestone files (CONTEXT, ROADMAP, RESEARCH, etc.)
115
162
  try {
116
- const srcFiles = readdirSync(srcDir).filter(f => f.endsWith(".md") || f.endsWith(".json"));
163
+ const srcFiles = readdirSync(srcDir).filter(
164
+ (f) => f.endsWith(".md") || f.endsWith(".json"),
165
+ );
117
166
  for (const f of srcFiles) {
118
167
  const srcFile = join(srcDir, f);
119
168
  const dstFile = join(dstDir, f);
@@ -124,7 +173,9 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
124
173
  cpSync(srcFile, dstFile);
125
174
  synced.push(`milestones/${mid}/${f}`);
126
175
  }
127
- } catch { /* non-fatal */ }
176
+ } catch {
177
+ /* non-fatal */
178
+ }
128
179
  }
129
180
  }
130
181
 
@@ -135,12 +186,16 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
135
186
  try {
136
187
  cpSync(srcSlicesDir, dstSlicesDir, { recursive: true });
137
188
  synced.push(`milestones/${mid}/slices/`);
138
- } catch { /* non-fatal */ }
189
+ } catch {
190
+ /* non-fatal */
191
+ }
139
192
  } else if (existsSync(srcSlicesDir) && existsSync(dstSlicesDir)) {
140
193
  // Both exist — sync missing slice directories
141
- const srcSlices = readdirSync(srcSlicesDir, { withFileTypes: true })
142
- .filter(d => d.isDirectory())
143
- .map(d => d.name);
194
+ const srcSlices = readdirSync(srcSlicesDir, {
195
+ withFileTypes: true,
196
+ })
197
+ .filter((d) => d.isDirectory())
198
+ .map((d) => d.name);
144
199
  for (const sid of srcSlices) {
145
200
  const srcSlice = join(srcSlicesDir, sid);
146
201
  const dstSlice = join(dstSlicesDir, sid);
@@ -148,19 +203,113 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
148
203
  try {
149
204
  cpSync(srcSlice, dstSlice, { recursive: true });
150
205
  synced.push(`milestones/${mid}/slices/${sid}/`);
151
- } catch { /* non-fatal */ }
206
+ } catch {
207
+ /* non-fatal */
208
+ }
152
209
  }
153
210
  }
154
211
  }
155
- } catch { /* non-fatal */ }
212
+ } catch {
213
+ /* non-fatal */
214
+ }
156
215
  }
157
216
  }
158
- } catch { /* non-fatal */ }
217
+ } catch {
218
+ /* non-fatal */
219
+ }
159
220
  }
160
221
 
161
222
  return { synced };
162
223
  }
163
224
 
225
+ /**
226
+ * Sync milestone artifacts from worktree back to the main external state directory.
227
+ * Called before milestone merge to ensure completion artifacts (SUMMARY, VALIDATION,
228
+ * updated ROADMAP) are visible from the project root (#1412).
229
+ *
230
+ * Only syncs .gsd/milestones/ content — root-level files (DECISIONS, REQUIREMENTS, etc.)
231
+ * are handled by the merge itself.
232
+ */
233
+ export function syncWorktreeStateBack(
234
+ mainBasePath: string,
235
+ worktreePath: string,
236
+ milestoneId: string,
237
+ ): { synced: string[] } {
238
+ const mainGsd = gsdRoot(mainBasePath);
239
+ const wtGsd = gsdRoot(worktreePath);
240
+ const synced: string[] = [];
241
+
242
+ // If both resolve to the same directory (symlink), no sync needed
243
+ try {
244
+ const mainResolved = realpathSync(mainGsd);
245
+ const wtResolved = realpathSync(wtGsd);
246
+ if (mainResolved === wtResolved) return { synced };
247
+ } catch {
248
+ // Can't resolve — proceed with sync
249
+ }
250
+
251
+ const wtMilestoneDir = join(wtGsd, "milestones", milestoneId);
252
+ const mainMilestoneDir = join(mainGsd, "milestones", milestoneId);
253
+
254
+ if (!existsSync(wtMilestoneDir)) return { synced };
255
+ mkdirSync(mainMilestoneDir, { recursive: true });
256
+
257
+ // Sync milestone-level files (SUMMARY, VALIDATION, ROADMAP, CONTEXT)
258
+ try {
259
+ for (const entry of readdirSync(wtMilestoneDir, { withFileTypes: true })) {
260
+ if (entry.isFile() && entry.name.endsWith(".md")) {
261
+ const src = join(wtMilestoneDir, entry.name);
262
+ const dst = join(mainMilestoneDir, entry.name);
263
+ try {
264
+ cpSync(src, dst, { force: true });
265
+ synced.push(`milestones/${milestoneId}/${entry.name}`);
266
+ } catch {
267
+ /* non-fatal */
268
+ }
269
+ }
270
+ }
271
+ } catch {
272
+ /* non-fatal */
273
+ }
274
+
275
+ // Sync slice-level files (summaries, UATs)
276
+ const wtSlicesDir = join(wtMilestoneDir, "slices");
277
+ const mainSlicesDir = join(mainMilestoneDir, "slices");
278
+ if (existsSync(wtSlicesDir)) {
279
+ try {
280
+ for (const sliceEntry of readdirSync(wtSlicesDir, {
281
+ withFileTypes: true,
282
+ })) {
283
+ if (!sliceEntry.isDirectory()) continue;
284
+ const sid = sliceEntry.name;
285
+ const wtSliceDir = join(wtSlicesDir, sid);
286
+ const mainSliceDir = join(mainSlicesDir, sid);
287
+ mkdirSync(mainSliceDir, { recursive: true });
288
+
289
+ for (const fileEntry of readdirSync(wtSliceDir, {
290
+ withFileTypes: true,
291
+ })) {
292
+ if (fileEntry.isFile() && fileEntry.name.endsWith(".md")) {
293
+ const src = join(wtSliceDir, fileEntry.name);
294
+ const dst = join(mainSliceDir, fileEntry.name);
295
+ try {
296
+ cpSync(src, dst, { force: true });
297
+ synced.push(
298
+ `milestones/${milestoneId}/slices/${sid}/${fileEntry.name}`,
299
+ );
300
+ } catch {
301
+ /* non-fatal */
302
+ }
303
+ }
304
+ }
305
+ }
306
+ } catch {
307
+ /* non-fatal */
308
+ }
309
+ }
310
+
311
+ return { synced };
312
+ }
164
313
  // ─── Worktree Post-Create Hook (#597) ────────────────────────────────────────
165
314
 
166
315
  /**
@@ -171,7 +320,11 @@ export function syncGsdStateToWorktree(mainBasePath: string, worktreePath_: stri
171
320
  * Reads the hook path from git.worktree_post_create in preferences.
172
321
  * Pass hookPath directly to bypass preference loading (useful for testing).
173
322
  */
174
- export function runWorktreePostCreateHook(sourceDir: string, worktreeDir: string, hookPath?: string): string | null {
323
+ export function runWorktreePostCreateHook(
324
+ sourceDir: string,
325
+ worktreeDir: string,
326
+ hookPath?: string,
327
+ ): string | null {
175
328
  if (hookPath === undefined) {
176
329
  const prefs = loadEffectiveGSDPreferences()?.preferences?.git;
177
330
  hookPath = prefs?.worktree_post_create;
@@ -198,7 +351,7 @@ export function runWorktreePostCreateHook(sourceDir: string, worktreeDir: string
198
351
  });
199
352
  return null;
200
353
  } catch (err) {
201
- const msg = getErrorMessage(err);
354
+ const msg = err instanceof Error ? err.message : String(err);
202
355
  return `Worktree post-create hook failed: ${msg}`;
203
356
  }
204
357
  }
@@ -219,7 +372,110 @@ export function autoWorktreeBranch(milestoneId: string): string {
219
372
  * to prevent split-brain.
220
373
  */
221
374
 
222
- export function createAutoWorktree(basePath: string, milestoneId: string): string {
375
+ /**
376
+ * Forward-merge plan checkbox state from the project root into a freshly
377
+ * re-attached worktree (#778).
378
+ *
379
+ * When auto-mode stops via crash (not graceful stop), the milestone branch
380
+ * HEAD may be behind the filesystem state at the project root because
381
+ * syncStateToProjectRoot() runs after every task completion but the final
382
+ * git commit may not have happened before the crash. On restart the worktree
383
+ * is re-attached to the branch HEAD, which has [ ] for the crashed task,
384
+ * causing verifyExpectedArtifact() to fail and triggering an infinite
385
+ * dispatch/skip loop.
386
+ *
387
+ * Fix: after re-attaching, read every *.md plan file in the milestone
388
+ * directory at the project root and apply any [x] checkbox states that are
389
+ * ahead of the worktree version (forward-only: never downgrade [x] → [ ]).
390
+ *
391
+ * This is safe because syncStateToProjectRoot() is the authoritative source
392
+ * of post-task state at the project root — it writes the same [x] the LLM
393
+ * produced, then the auto-commit follows. If the commit never happened, the
394
+ * filesystem copy is still valid and correct.
395
+ */
396
+ function reconcilePlanCheckboxes(
397
+ projectRoot: string,
398
+ wtPath: string,
399
+ milestoneId: string,
400
+ ): void {
401
+ const srcMilestone = join(projectRoot, ".gsd", "milestones", milestoneId);
402
+ const dstMilestone = join(wtPath, ".gsd", "milestones", milestoneId);
403
+ if (!existsSync(srcMilestone) || !existsSync(dstMilestone)) return;
404
+
405
+ // Walk all markdown files in the milestone directory (plans, summaries, etc.)
406
+ function walkMd(dir: string): string[] {
407
+ const results: string[] = [];
408
+ try {
409
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
410
+ const full = join(dir, entry.name);
411
+ if (entry.isDirectory()) {
412
+ results.push(...walkMd(full));
413
+ } else if (entry.isFile() && entry.name.endsWith(".md")) {
414
+ results.push(full);
415
+ }
416
+ }
417
+ } catch {
418
+ /* non-fatal */
419
+ }
420
+ return results;
421
+ }
422
+
423
+ for (const srcFile of walkMd(srcMilestone)) {
424
+ const rel = srcFile.slice(srcMilestone.length);
425
+ const dstFile = dstMilestone + rel;
426
+ if (!existsSync(dstFile)) continue; // only reconcile existing files
427
+
428
+ let srcContent: string;
429
+ let dstContent: string;
430
+ try {
431
+ srcContent = readFileSync(srcFile, "utf-8");
432
+ dstContent = readFileSync(dstFile, "utf-8");
433
+ } catch {
434
+ continue;
435
+ }
436
+
437
+ if (srcContent === dstContent) continue;
438
+
439
+ // Extract all checked task IDs from the source (project root)
440
+ // Pattern: - [x] **T<id>: or - [x] **S<id>: (case-insensitive x)
441
+ const checkedRe = /^- \[[xX]\] \*\*([TS]\d+):/gm;
442
+ const srcChecked = new Set<string>();
443
+ for (const m of srcContent.matchAll(checkedRe)) srcChecked.add(m[1]);
444
+
445
+ if (srcChecked.size === 0) continue;
446
+
447
+ // Forward-apply: replace [ ] → [x] for any IDs that are checked in src
448
+ let updated = dstContent;
449
+ let changed = false;
450
+ for (const id of srcChecked) {
451
+ const escapedId = id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
452
+ const uncheckedRe = new RegExp(
453
+ `^(- )\\[ \\]( \\*\\*${escapedId}:)`,
454
+ "gm",
455
+ );
456
+ if (uncheckedRe.test(updated)) {
457
+ updated = updated.replace(
458
+ new RegExp(`^(- )\\[ \\]( \\*\\*${escapedId}:)`, "gm"),
459
+ "$1[x]$2",
460
+ );
461
+ changed = true;
462
+ }
463
+ }
464
+
465
+ if (changed) {
466
+ try {
467
+ atomicWriteSync(dstFile, updated, "utf-8");
468
+ } catch {
469
+ /* non-fatal */
470
+ }
471
+ }
472
+ }
473
+ }
474
+
475
+ export function createAutoWorktree(
476
+ basePath: string,
477
+ milestoneId: string,
478
+ ): string {
223
479
  const branch = autoWorktreeBranch(milestoneId);
224
480
 
225
481
  // Check if the milestone branch already exists — it survives auto-mode
@@ -231,21 +487,46 @@ export function createAutoWorktree(basePath: string, milestoneId: string): strin
231
487
  let info: { name: string; path: string; branch: string; exists: boolean };
232
488
  if (branchExists) {
233
489
  // Re-attach worktree to the existing milestone branch (preserving commits)
234
- info = createWorktree(basePath, milestoneId, { branch, reuseExistingBranch: true });
490
+ info = createWorktree(basePath, milestoneId, {
491
+ branch,
492
+ reuseExistingBranch: true,
493
+ });
235
494
  } else {
236
495
  // Fresh start — create branch from integration branch
237
- const integrationBranch = readIntegrationBranch(basePath, milestoneId) ?? undefined;
238
- info = createWorktree(basePath, milestoneId, { branch, startPoint: integrationBranch });
496
+ const integrationBranch =
497
+ readIntegrationBranch(basePath, milestoneId) ?? undefined;
498
+ info = createWorktree(basePath, milestoneId, {
499
+ branch,
500
+ startPoint: integrationBranch,
501
+ });
239
502
  }
240
503
 
241
- // Ensure worktree shares external state via symlink
242
- ensureGsdSymlink(info.path);
243
-
244
- // Sync .gsd/ state from main repo into the worktree (#1311).
245
- // Even with the symlink, the worktree may have stale git-tracked files
246
- // if .gsd/ is not gitignored. And on fresh create, the milestone files
247
- // created on main since the branch point won't be in the worktree.
248
- syncGsdStateToWorktree(basePath, info.path);
504
+ // Copy .gsd/ planning artifacts from the source repo into the new worktree.
505
+ // Worktrees are fresh git checkouts — untracked files don't carry over.
506
+ // Planning artifacts may be untracked if the project's .gitignore had a
507
+ // blanket .gsd/ rule (pre-v2.14.0). Without this copy, auto-mode loops
508
+ // on plan-slice because the plan file doesn't exist in the worktree.
509
+ //
510
+ // IMPORTANT: Skip when re-attaching to an existing branch (#759).
511
+ // The branch checkout already has committed artifacts with correct state
512
+ // (e.g. [x] for completed slices). Copying from the project root would
513
+ // overwrite them with stale data ([ ] checkboxes) because the root is
514
+ // not always fully synced.
515
+ if (!branchExists) {
516
+ copyPlanningArtifacts(basePath, info.path);
517
+ } else {
518
+ // Re-attaching to an existing branch: forward-merge any plan checkpoint
519
+ // state from the project root into the worktree (#778).
520
+ //
521
+ // If auto-mode stopped via crash, the milestone branch HEAD may lag behind
522
+ // the project root filesystem because syncStateToProjectRoot() ran after
523
+ // task completion but the auto-commit never fired. On restart the worktree
524
+ // is re-created from the branch HEAD (which has [ ] for the crashed task),
525
+ // causing verifyExpectedArtifact() to return false → stale-key eviction →
526
+ // infinite dispatch/skip loop. Reconciling here ensures the worktree sees
527
+ // the same [x] state that syncStateToProjectRoot() wrote to the root.
528
+ reconcilePlanCheckboxes(basePath, info.path, milestoneId);
529
+ }
249
530
 
250
531
  // Run user-configured post-create hook (#597) — e.g. copy .env, symlink assets
251
532
  const hookError = runWorktreePostCreateHook(basePath, info.path);
@@ -264,7 +545,7 @@ export function createAutoWorktree(basePath: string, milestoneId: string): strin
264
545
  // Don't store originalBase -- caller can retry or clean up.
265
546
  throw new GSDError(
266
547
  GSD_IO_ERROR,
267
- `Auto-worktree created at ${info.path} but chdir failed: ${getErrorMessage(err)}`,
548
+ `Auto-worktree created at ${info.path} but chdir failed: ${err instanceof Error ? err.message : String(err)}`,
268
549
  );
269
550
  }
270
551
 
@@ -272,6 +553,49 @@ export function createAutoWorktree(basePath: string, milestoneId: string): strin
272
553
  return info.path;
273
554
  }
274
555
 
556
+ /**
557
+ * Copy .gsd/ planning artifacts from source repo to a new worktree.
558
+ * Copies milestones/, DECISIONS.md, REQUIREMENTS.md, PROJECT.md, QUEUE.md,
559
+ * STATE.md, KNOWLEDGE.md, and OVERRIDES.md.
560
+ * Skips runtime files (auto.lock, metrics.json, etc.) and the worktrees/ dir.
561
+ * Best-effort — failures are non-fatal since auto-mode can recreate artifacts.
562
+ */
563
+ function copyPlanningArtifacts(srcBase: string, wtPath: string): void {
564
+ const srcGsd = join(srcBase, ".gsd");
565
+ const dstGsd = join(wtPath, ".gsd");
566
+ if (!existsSync(srcGsd)) return;
567
+
568
+ // Copy milestones/ directory (planning files, roadmaps, plans, research)
569
+ safeCopyRecursive(join(srcGsd, "milestones"), join(dstGsd, "milestones"), {
570
+ force: true,
571
+ filter: (src) => !src.endsWith("-META.json"),
572
+ });
573
+
574
+ // Copy top-level planning files
575
+ for (const file of [
576
+ "DECISIONS.md",
577
+ "REQUIREMENTS.md",
578
+ "PROJECT.md",
579
+ "QUEUE.md",
580
+ "STATE.md",
581
+ "KNOWLEDGE.md",
582
+ "OVERRIDES.md",
583
+ ]) {
584
+ safeCopy(join(srcGsd, file), join(dstGsd, file), { force: true });
585
+ }
586
+
587
+ // Copy gsd.db if present in source
588
+ const srcDb = join(srcGsd, "gsd.db");
589
+ const destDb = join(dstGsd, "gsd.db");
590
+ if (existsSync(srcDb)) {
591
+ try {
592
+ copyWorktreeDb(srcDb, destDb);
593
+ } catch {
594
+ /* non-fatal */
595
+ }
596
+ }
597
+ }
598
+
275
599
  /**
276
600
  * Teardown an auto-worktree: chdir back to original base, then remove
277
601
  * the worktree and its branch.
@@ -291,12 +615,15 @@ export function teardownAutoWorktree(
291
615
  } catch (err) {
292
616
  throw new GSDError(
293
617
  GSD_IO_ERROR,
294
- `Failed to chdir back to ${originalBasePath} during teardown: ${getErrorMessage(err)}`,
618
+ `Failed to chdir back to ${originalBasePath} during teardown: ${err instanceof Error ? err.message : String(err)}`,
295
619
  );
296
620
  }
297
621
 
298
622
  nudgeGitBranchCache(previousCwd);
299
- removeWorktree(originalBasePath, milestoneId, { branch, deleteBranch: !preserveBranch });
623
+ removeWorktree(originalBasePath, milestoneId, {
624
+ branch,
625
+ deleteBranch: !preserveBranch,
626
+ });
300
627
  }
301
628
 
302
629
  /**
@@ -304,36 +631,13 @@ export function teardownAutoWorktree(
304
631
  * Checks both module state and git branch prefix.
305
632
  */
306
633
  export function isInAutoWorktree(basePath: string): boolean {
634
+ if (!originalBase) return false;
307
635
  const cwd = process.cwd();
308
-
309
- // Primary check: use originalBase if available (fast path)
310
- if (originalBase) {
311
- const resolvedBase = existsSync(basePath) ? realpathSync(basePath) : basePath;
312
- const wtDir = join(gsdRoot(resolvedBase), "worktrees");
313
- if (!cwd.startsWith(wtDir)) return false;
314
- const branch = nativeGetCurrentBranch(cwd);
315
- return branch.startsWith("milestone/");
316
- }
317
-
318
- // Fallback: infer worktree status structurally when originalBase is null
319
- // (happens after session restart where module-level state is lost, #1120).
320
- // Check if cwd is inside a .gsd/worktrees/ directory and has a .git file
321
- // (worktree marker) pointing to the main repo.
322
- const worktreeMarker = join(cwd, ".git");
323
- if (!existsSync(worktreeMarker)) return false;
324
- try {
325
- const stat = statSync(worktreeMarker);
326
- if (stat.isDirectory()) return false; // Main repo has .git dir, not file
327
- // Worktrees have a .git file with "gitdir: ..." pointing to the main repo
328
- const gitContent = readFileSync(worktreeMarker, "utf-8").trim();
329
- if (!gitContent.startsWith("gitdir:")) return false;
330
- // Verify we're inside a GSD-managed worktree
331
- if (!detectWorktreeName(cwd)) return false;
332
- const branch = nativeGetCurrentBranch(cwd);
333
- return branch.startsWith("milestone/");
334
- } catch {
335
- return false;
336
- }
636
+ const resolvedBase = existsSync(basePath) ? realpathSync(basePath) : basePath;
637
+ const wtDir = join(resolvedBase, ".gsd", "worktrees");
638
+ if (!cwd.startsWith(wtDir)) return false;
639
+ const branch = nativeGetCurrentBranch(cwd);
640
+ return branch.startsWith("milestone/");
337
641
  }
338
642
 
339
643
  /**
@@ -344,7 +648,10 @@ export function isInAutoWorktree(basePath: string): boolean {
344
648
  * gitdir: pointer) rather than just a stray directory. This prevents
345
649
  * mis-detection of leftover directories as active worktrees (#695).
346
650
  */
347
- export function getAutoWorktreePath(basePath: string, milestoneId: string): string | null {
651
+ export function getAutoWorktreePath(
652
+ basePath: string,
653
+ milestoneId: string,
654
+ ): string | null {
348
655
  const p = worktreePath(basePath, milestoneId);
349
656
  if (!existsSync(p)) return null;
350
657
 
@@ -368,39 +675,42 @@ export function getAutoWorktreePath(basePath: string, milestoneId: string): stri
368
675
  *
369
676
  * Atomic: chdir + originalBase update in same try block.
370
677
  */
371
- export function enterAutoWorktree(basePath: string, milestoneId: string): string {
678
+ export function enterAutoWorktree(
679
+ basePath: string,
680
+ milestoneId: string,
681
+ ): string {
372
682
  const p = worktreePath(basePath, milestoneId);
373
683
  if (!existsSync(p)) {
374
- throw new GSDError(GSD_IO_ERROR, `Auto-worktree for ${milestoneId} does not exist at ${p}`);
684
+ throw new GSDError(
685
+ GSD_IO_ERROR,
686
+ `Auto-worktree for ${milestoneId} does not exist at ${p}`,
687
+ );
375
688
  }
376
689
 
377
690
  // Validate this is a real git worktree, not a stray directory (#695)
378
691
  const gitPath = join(p, ".git");
379
692
  if (!existsSync(gitPath)) {
380
- throw new GSDError(GSD_GIT_ERROR, `Auto-worktree path ${p} exists but is not a git worktree (no .git)`);
693
+ throw new GSDError(
694
+ GSD_GIT_ERROR,
695
+ `Auto-worktree path ${p} exists but is not a git worktree (no .git)`,
696
+ );
381
697
  }
382
698
  try {
383
699
  const content = readFileSync(gitPath, "utf8").trim();
384
700
  if (!content.startsWith("gitdir: ")) {
385
- throw new GSDError(GSD_GIT_ERROR, `Auto-worktree path ${p} has a .git but it is not a worktree gitdir pointer`);
701
+ throw new GSDError(
702
+ GSD_GIT_ERROR,
703
+ `Auto-worktree path ${p} has a .git but it is not a worktree gitdir pointer`,
704
+ );
386
705
  }
387
706
  } catch (err) {
388
707
  if (err instanceof Error && err.message.includes("worktree")) throw err;
389
- throw new GSDError(GSD_IO_ERROR, `Auto-worktree path ${p} exists but .git is unreadable`);
708
+ throw new GSDError(
709
+ GSD_IO_ERROR,
710
+ `Auto-worktree path ${p} exists but .git is unreadable`,
711
+ );
390
712
  }
391
713
 
392
- // Ensure worktree shares external state via symlink (#1311).
393
- // On resume (enterAutoWorktree), the symlink may be missing if it was
394
- // created before ensureGsdSymlink existed, or the .gsd/ directory may be
395
- // a stale git-tracked copy instead of a symlink. Refreshing here ensures
396
- // the worktree sees the same milestone state as the main repo.
397
- ensureGsdSymlink(p);
398
-
399
- // Sync .gsd/ state from main repo into worktree (#1311).
400
- // Covers the case where .gsd/ is a real directory (not symlinked) and
401
- // milestones were created on main after the worktree was last used.
402
- syncGsdStateToWorktree(basePath, p);
403
-
404
714
  const previousCwd = process.cwd();
405
715
 
406
716
  try {
@@ -409,7 +719,7 @@ export function enterAutoWorktree(basePath: string, milestoneId: string): string
409
719
  } catch (err) {
410
720
  throw new GSDError(
411
721
  GSD_IO_ERROR,
412
- `Failed to enter auto-worktree at ${p}: ${getErrorMessage(err)}`,
722
+ `Failed to enter auto-worktree at ${p}: ${err instanceof Error ? err.message : String(err)}`,
413
723
  );
414
724
  }
415
725
 
@@ -432,8 +742,10 @@ export function getActiveAutoWorktreeContext(): {
432
742
  } | null {
433
743
  if (!originalBase) return null;
434
744
  const cwd = process.cwd();
435
- const resolvedBase = existsSync(originalBase) ? realpathSync(originalBase) : originalBase;
436
- const wtDir = join(gsdRoot(resolvedBase), "worktrees");
745
+ const resolvedBase = existsSync(originalBase)
746
+ ? realpathSync(originalBase)
747
+ : originalBase;
748
+ const wtDir = join(resolvedBase, ".gsd", "worktrees");
437
749
  if (!cwd.startsWith(wtDir)) return null;
438
750
  const worktreeName = detectWorktreeName(cwd);
439
751
  if (!worktreeName) return null;
@@ -457,7 +769,10 @@ function autoCommitDirtyState(cwd: string): boolean {
457
769
  const status = nativeWorkingTreeStatus(cwd);
458
770
  if (!status) return false;
459
771
  nativeAddAll(cwd);
460
- const result = nativeCommit(cwd, "chore: auto-commit before milestone merge");
772
+ const result = nativeCommit(
773
+ cwd,
774
+ "chore: auto-commit before milestone merge",
775
+ );
461
776
  return result !== null;
462
777
  } catch {
463
778
  return false;
@@ -493,59 +808,53 @@ export function mergeMilestoneToMain(
493
808
  // 1. Auto-commit dirty state in worktree before leaving
494
809
  autoCommitDirtyState(worktreeCwd);
495
810
 
811
+ // Reconcile worktree DB into main DB before leaving worktree context
812
+ if (isDbAvailable()) {
813
+ try {
814
+ const worktreeDbPath = join(worktreeCwd, ".gsd", "gsd.db");
815
+ const mainDbPath = join(originalBasePath_, ".gsd", "gsd.db");
816
+ reconcileWorktreeDb(mainDbPath, worktreeDbPath);
817
+ } catch {
818
+ /* non-fatal */
819
+ }
820
+ }
821
+
496
822
  // 2. Parse roadmap for slice listing
497
823
  const roadmap = parseRoadmap(roadmapContent);
498
- const completedSlices = roadmap.slices.filter(s => s.done);
824
+ const completedSlices = roadmap.slices.filter((s) => s.done);
499
825
 
500
826
  // 3. chdir to original base
501
827
  const previousCwd = process.cwd();
502
828
  process.chdir(originalBasePath_);
503
829
 
504
- // 3a. Auto-commit any dirty state in the project root. Without this, the
505
- // squash merge can fail with "Your local changes would be overwritten" (#1127).
506
- autoCommitDirtyState(originalBasePath_);
507
-
508
- // 3b. Remove untracked .gsd/ runtime files that syncStateToProjectRoot copied.
509
- // Only clean specific runtime files — NEVER touch milestones/, decisions, or
510
- // other planning artifacts that represent user work (#1250).
511
- const runtimeFilesToClean = ["STATE.md", "completed-units.json", "auto.lock", "gsd.db"];
512
- for (const f of runtimeFilesToClean) {
513
- const p = join(originalBasePath_, ".gsd", f);
514
- try { if (existsSync(p)) unlinkSync(p); } catch { /* non-fatal */ }
515
- }
516
- try {
517
- const runtimeDir = join(originalBasePath_, ".gsd", "runtime");
518
- if (existsSync(runtimeDir)) rmSync(runtimeDir, { recursive: true, force: true });
519
- } catch { /* non-fatal */ }
520
-
521
830
  // 4. Resolve integration branch — prefer milestone metadata, fall back to preferences / "main"
522
831
  const prefs = loadEffectiveGSDPreferences()?.preferences?.git ?? {};
523
- const integrationBranch = readIntegrationBranch(originalBasePath_, milestoneId);
832
+ const integrationBranch = readIntegrationBranch(
833
+ originalBasePath_,
834
+ milestoneId,
835
+ );
524
836
  const mainBranch = integrationBranch ?? prefs.main_branch ?? "main";
525
837
 
838
+ // Remove transient project-root state files before any branch or merge
839
+ // operation. Untracked milestone metadata can otherwise block squash merges.
840
+ clearProjectRootStateFiles(originalBasePath_, milestoneId);
841
+
526
842
  // 5. Checkout integration branch (skip if already current — avoids git error
527
843
  // when main is already checked out in the project-root worktree, #757)
528
844
  const currentBranchAtBase = nativeGetCurrentBranch(originalBasePath_);
529
845
  if (currentBranchAtBase !== mainBranch) {
530
- // Remove untracked .gsd/ state files that may conflict with the branch
531
- // being checked out. These are regenerated by doctor/rebuildState and
532
- // are not meaningful in the main working tree — the worktree had the
533
- // real state. Without this, `git checkout main` fails with
534
- // "Your local changes would be overwritten" (#827).
535
- const gsdStateFiles = ["STATE.md", "completed-units.json", "auto.lock"];
536
- for (const f of gsdStateFiles) {
537
- const p = join(gsdRoot(originalBasePath_), f);
538
- try { unlinkSync(p); } catch { /* non-fatal — file may not exist */ }
539
- }
540
846
  nativeCheckoutBranch(originalBasePath_, mainBranch);
541
847
  }
542
848
 
543
849
  // 6. Build rich commit message
544
- const milestoneTitle = roadmap.title.replace(/^M\d+:\s*/, "").trim() || milestoneId;
850
+ const milestoneTitle =
851
+ roadmap.title.replace(/^M\d+:\s*/, "").trim() || milestoneId;
545
852
  const subject = `feat(${milestoneId}): ${milestoneTitle}`;
546
853
  let body = "";
547
854
  if (completedSlices.length > 0) {
548
- const sliceLines = completedSlices.map(s => `- ${s.id}: ${s.title}`).join("\n");
855
+ const sliceLines = completedSlices
856
+ .map((s) => `- ${s.id}: ${s.title}`)
857
+ .join("\n");
549
858
  body = `\n\nCompleted slices:\n${sliceLines}\n\nBranch: ${milestoneBranch}`;
550
859
  }
551
860
  const commitMessage = subject + body;
@@ -555,17 +864,20 @@ export function mergeMilestoneToMain(
555
864
 
556
865
  if (!mergeResult.success) {
557
866
  // Check for conflicts — use merge result first, fall back to nativeConflictFiles
558
- const conflictedFiles = mergeResult.conflicts.length > 0
559
- ? mergeResult.conflicts
560
- : nativeConflictFiles(originalBasePath_);
867
+ const conflictedFiles =
868
+ mergeResult.conflicts.length > 0
869
+ ? mergeResult.conflicts
870
+ : nativeConflictFiles(originalBasePath_);
561
871
 
562
872
  if (conflictedFiles.length > 0) {
563
873
  // Separate .gsd/ state file conflicts from real code conflicts.
564
- // GSD state files (STATE.md, completed-units.json, auto.lock, etc.)
874
+ // GSD state files (STATE.md, auto.lock, etc.)
565
875
  // diverge between branches during normal operation — always prefer the
566
876
  // milestone branch version since it has the latest execution state.
567
- const gsdConflicts = conflictedFiles.filter(f => f.startsWith(".gsd/"));
568
- const codeConflicts = conflictedFiles.filter(f => !f.startsWith(".gsd/"));
877
+ const gsdConflicts = conflictedFiles.filter((f) => f.startsWith(".gsd/"));
878
+ const codeConflicts = conflictedFiles.filter(
879
+ (f) => !f.startsWith(".gsd/"),
880
+ );
569
881
 
570
882
  // Auto-resolve .gsd/ conflicts by accepting the milestone branch version
571
883
  if (gsdConflicts.length > 0) {
@@ -583,7 +895,12 @@ export function mergeMilestoneToMain(
583
895
 
584
896
  // If there are still non-.gsd conflicts, escalate
585
897
  if (codeConflicts.length > 0) {
586
- throw new MergeConflictError(codeConflicts, "squash", milestoneBranch, mainBranch);
898
+ throw new MergeConflictError(
899
+ codeConflicts,
900
+ "squash",
901
+ milestoneBranch,
902
+ mainBranch,
903
+ );
587
904
  }
588
905
  }
589
906
  // No conflicts detected — possibly "already up to date", fall through to commit
@@ -638,7 +955,10 @@ export function mergeMilestoneToMain(
638
955
 
639
956
  // 10. Remove worktree directory first (must happen before branch deletion)
640
957
  try {
641
- removeWorktree(originalBasePath_, milestoneId, { branch: null as unknown as string, deleteBranch: false });
958
+ removeWorktree(originalBasePath_, milestoneId, {
959
+ branch: null as unknown as string,
960
+ deleteBranch: false,
961
+ });
642
962
  } catch {
643
963
  // Best-effort -- worktree dir may already be gone
644
964
  }