gsd-pi 2.77.0-dev.538325aea → 2.77.0-dev.58d3d4d6c

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 (1018) hide show
  1. package/dist/cli-web-branch.d.ts +1 -0
  2. package/dist/cli-web-branch.js +3 -0
  3. package/dist/cli.js +59 -15
  4. package/dist/extension-discovery.d.ts +6 -0
  5. package/dist/extension-discovery.js +37 -0
  6. package/dist/extension-registry.d.ts +3 -0
  7. package/dist/extension-registry.js +1 -1
  8. package/dist/extension-sort.d.ts +18 -0
  9. package/dist/extension-sort.js +114 -0
  10. package/dist/extension-validator.d.ts +47 -0
  11. package/dist/extension-validator.js +127 -0
  12. package/dist/headless-ui.d.ts +1 -1
  13. package/dist/headless.js +4 -2
  14. package/dist/loader.js +36 -7
  15. package/dist/onboarding.js +5 -5
  16. package/dist/provider-migrations.d.ts +20 -2
  17. package/dist/provider-migrations.js +15 -2
  18. package/dist/remote-questions-config.js +1 -1
  19. package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -1
  20. package/dist/resources/extensions/aws-auth/index.js +1 -2
  21. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +9 -6
  22. package/dist/resources/extensions/bg-shell/process-manager.js +1 -2
  23. package/dist/resources/extensions/browser-tools/index.js +1 -0
  24. package/dist/resources/extensions/claude-code-cli/index.js +1 -1
  25. package/dist/resources/extensions/claude-code-cli/partial-builder.js +17 -106
  26. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +71 -57
  27. package/dist/resources/extensions/cmux/index.js +20 -0
  28. package/dist/resources/extensions/github-sync/templates.js +103 -0
  29. package/dist/resources/extensions/google-search/extension-manifest.json +5 -4
  30. package/dist/resources/extensions/google-search/index.js +3 -375
  31. package/dist/resources/extensions/gsd/abandon-detect.js +44 -0
  32. package/dist/resources/extensions/gsd/auto/loop.js +81 -2
  33. package/dist/resources/extensions/gsd/auto/phases.js +42 -18
  34. package/dist/resources/extensions/gsd/auto/resolve.js +24 -0
  35. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -2
  36. package/dist/resources/extensions/gsd/auto/session.js +6 -0
  37. package/dist/resources/extensions/gsd/auto/turn-epoch.js +95 -0
  38. package/dist/resources/extensions/gsd/auto-dispatch.js +64 -5
  39. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  40. package/dist/resources/extensions/gsd/auto-post-unit.js +110 -0
  41. package/dist/resources/extensions/gsd/auto-prompts.js +48 -7
  42. package/dist/resources/extensions/gsd/auto-recovery.js +2 -25
  43. package/dist/resources/extensions/gsd/auto-start.js +73 -5
  44. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +11 -5
  45. package/dist/resources/extensions/gsd/auto-unit-closeout.js +11 -2
  46. package/dist/resources/extensions/gsd/auto-worktree.js +58 -8
  47. package/dist/resources/extensions/gsd/auto.js +76 -15
  48. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +10 -0
  49. package/dist/resources/extensions/gsd/bootstrap/provider-error-resume.js +4 -2
  50. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +11 -0
  51. package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -6
  52. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +31 -4
  53. package/dist/resources/extensions/gsd/commands-cmux.js +9 -6
  54. package/dist/resources/extensions/gsd/commands-extensions.js +634 -43
  55. package/dist/resources/extensions/gsd/context-store.js +23 -7
  56. package/dist/resources/extensions/gsd/dispatch-guard.js +2 -17
  57. package/dist/resources/extensions/gsd/file-lock.js +49 -9
  58. package/dist/resources/extensions/gsd/forensics.js +106 -0
  59. package/dist/resources/extensions/gsd/git-service.js +1 -0
  60. package/dist/resources/extensions/gsd/gitignore.js +1 -0
  61. package/dist/resources/extensions/gsd/guided-flow-queue.js +4 -1
  62. package/dist/resources/extensions/gsd/guided-flow.js +23 -9
  63. package/dist/resources/extensions/gsd/journal.js +17 -2
  64. package/dist/resources/extensions/gsd/milestone-actions.js +15 -0
  65. package/dist/resources/extensions/gsd/milestone-summary-classifier.js +37 -0
  66. package/dist/resources/extensions/gsd/notifications.js +30 -16
  67. package/dist/resources/extensions/gsd/preferences-validation.js +23 -0
  68. package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +4 -0
  69. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +23 -4
  70. package/dist/resources/extensions/gsd/prompts/doctor-heal.md +5 -4
  71. package/dist/resources/extensions/gsd/reports.js +5 -4
  72. package/dist/resources/extensions/gsd/slice-cadence.js +238 -0
  73. package/dist/resources/extensions/gsd/state-transition-matrix.js +118 -0
  74. package/dist/resources/extensions/gsd/state.js +25 -25
  75. package/dist/resources/extensions/gsd/tools/complete-slice.js +21 -0
  76. package/dist/resources/extensions/gsd/tools/complete-task.js +31 -0
  77. package/dist/resources/extensions/gsd/tools/validate-milestone.js +7 -2
  78. package/dist/resources/extensions/gsd/uok/audit.js +18 -2
  79. package/dist/resources/extensions/gsd/uok/dispatch-envelope.js +33 -0
  80. package/dist/resources/extensions/gsd/uok/execution-graph.js +10 -0
  81. package/dist/resources/extensions/gsd/uok/gitops.js +2 -1
  82. package/dist/resources/extensions/gsd/uok/loop-adapter.js +37 -10
  83. package/dist/resources/extensions/gsd/uok/parity-report.js +58 -0
  84. package/dist/resources/extensions/gsd/uok/plan-v2.js +10 -4
  85. package/dist/resources/extensions/gsd/uok/writer.js +82 -0
  86. package/dist/resources/extensions/gsd/workflow-logger.js +10 -2
  87. package/dist/resources/extensions/gsd/worktree-manager.js +52 -0
  88. package/dist/resources/extensions/gsd/worktree-resolver.js +86 -7
  89. package/dist/resources/extensions/gsd/worktree-telemetry.js +198 -0
  90. package/dist/resources/extensions/mcp-client/auth.js +10 -1
  91. package/dist/resources/extensions/mcp-client/index.js +119 -10
  92. package/dist/resources/extensions/ollama/index.js +2 -1
  93. package/dist/resources/extensions/ollama/ollama-chat-provider.js +15 -5
  94. package/dist/resources/extensions/remote-questions/config.js +1 -12
  95. package/dist/resources/extensions/shared/cmux-events.js +12 -0
  96. package/dist/resources/extensions/shared/rtk-session-stats.js +1 -2
  97. package/dist/resources/extensions/universal-config/index.js +1 -1
  98. package/dist/resources/skills/create-skill/SKILL.md +2 -2
  99. package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +4 -4
  100. package/dist/resources/skills/create-skill/workflows/audit-skill.md +4 -4
  101. package/dist/resources/skills/create-skill/workflows/create-new-skill.md +5 -5
  102. package/dist/security-overrides.d.ts +1 -4
  103. package/dist/security-overrides.js +3 -16
  104. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  105. package/dist/web/standalone/.next/BUILD_ID +1 -1
  106. package/dist/web/standalone/.next/app-path-routes-manifest.json +4 -4
  107. package/dist/web/standalone/.next/build-manifest.json +3 -3
  108. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  109. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  110. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  111. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  112. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  113. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  114. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  115. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  116. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  117. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  118. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  119. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  120. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  121. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  122. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  123. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  124. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  125. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  126. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  127. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  128. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  130. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  132. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +1 -1
  133. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  134. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  135. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  136. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  137. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  138. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  139. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  140. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  142. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  144. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  145. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  146. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  148. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  150. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  151. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  152. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  154. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  156. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  158. package/dist/web/standalone/.next/server/app/api/notifications/route.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  160. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  162. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  163. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  164. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  166. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  168. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  170. package/dist/web/standalone/.next/server/app/api/session/events/route.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  172. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  174. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  176. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  178. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  179. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  180. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  181. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  182. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  183. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +1 -1
  184. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  186. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +1 -1
  187. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  188. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  189. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  190. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  192. package/dist/web/standalone/.next/server/app/index.html +1 -1
  193. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  194. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  195. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  196. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  197. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  198. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  199. package/dist/web/standalone/.next/server/app-paths-manifest.json +4 -4
  200. package/dist/web/standalone/.next/server/chunks/1926.js +1 -0
  201. package/dist/web/standalone/.next/server/chunks/6897.js +2 -2
  202. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  203. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  204. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  205. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  206. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  207. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  208. package/dist/web/standalone/.next/static/chunks/2826.e9f5195e91f9cad2.js +11 -0
  209. package/dist/web/standalone/.next/static/chunks/{webpack-1832629448831fdc.js → webpack-2e68521d7c82f7c2.js} +1 -1
  210. package/dist/web-mode.js +1 -1
  211. package/dist/welcome-screen.js +20 -19
  212. package/dist/wizard.js +5 -2
  213. package/package.json +16 -32
  214. package/packages/mcp-server/README.md +3 -3
  215. package/packages/mcp-server/dist/env-writer.d.ts +1 -0
  216. package/packages/mcp-server/dist/env-writer.d.ts.map +1 -1
  217. package/packages/mcp-server/dist/env-writer.js +74 -6
  218. package/packages/mcp-server/dist/env-writer.js.map +1 -1
  219. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  220. package/packages/mcp-server/dist/server.js +36 -17
  221. package/packages/mcp-server/dist/server.js.map +1 -1
  222. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  223. package/packages/mcp-server/dist/workflow-tools.js +15 -6
  224. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  225. package/packages/mcp-server/package.json +5 -0
  226. package/packages/mcp-server/src/env-writer.test.ts +79 -1
  227. package/packages/mcp-server/src/env-writer.ts +76 -6
  228. package/packages/mcp-server/src/readers/readers.test.ts +5 -1
  229. package/packages/mcp-server/src/server.ts +45 -19
  230. package/packages/mcp-server/src/workflow-tools.test.ts +44 -0
  231. package/packages/mcp-server/src/workflow-tools.ts +19 -6
  232. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  233. package/packages/native/package.json +5 -0
  234. package/packages/native/src/__tests__/clipboard.test.mjs +69 -23
  235. package/packages/native/tsconfig.json +1 -2
  236. package/packages/native/tsconfig.tsbuildinfo +1 -0
  237. package/packages/pi-agent-core/package.json +5 -0
  238. package/packages/pi-agent-core/src/agent-loop.test.ts +220 -15
  239. package/packages/pi-ai/package.json +5 -0
  240. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  241. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +25 -0
  242. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  243. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +105 -6
  244. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  245. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +230 -28
  246. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +1 -1
  247. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +30 -2
  248. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  249. package/packages/pi-coding-agent/dist/core/compaction/utils.js +113 -12
  250. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  251. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts +1 -0
  252. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -1
  253. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +29 -18
  254. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -1
  255. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.d.ts +2 -0
  256. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.d.ts.map +1 -0
  257. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.js +130 -0
  258. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.js.map +1 -0
  259. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js +56 -1
  260. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js.map +1 -1
  261. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js +8 -15
  262. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js.map +1 -1
  263. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts +25 -0
  264. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts.map +1 -0
  265. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js +109 -0
  266. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js.map +1 -0
  267. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts +67 -0
  268. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts.map +1 -0
  269. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js +167 -0
  270. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js.map +1 -0
  271. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +3 -2
  272. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  273. package/packages/pi-coding-agent/dist/core/extensions/loader.js +24 -8
  274. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  275. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +7 -0
  276. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  277. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  278. package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js +11 -0
  279. package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js.map +1 -1
  280. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +2 -2
  281. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  282. package/packages/pi-coding-agent/dist/core/resource-loader.js +1 -1
  283. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  284. package/packages/pi-coding-agent/dist/core/sdk.d.ts +1 -0
  285. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  286. package/packages/pi-coding-agent/dist/core/sdk.js +4 -1
  287. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  288. package/packages/pi-coding-agent/dist/core/sdk.test.js +19 -1
  289. package/packages/pi-coding-agent/dist/core/sdk.test.js.map +1 -1
  290. package/packages/pi-coding-agent/dist/core/system-prompt.js +3 -3
  291. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  292. package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js +2 -1
  293. package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js.map +1 -1
  294. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/provider-display-name.test.js +15 -6
  295. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/provider-display-name.test.js.map +1 -1
  296. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +36 -5
  297. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  298. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  299. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +14 -5
  300. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  301. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +7 -1
  302. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  303. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js +31 -9
  304. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
  305. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  306. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +30 -12
  307. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  308. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +14 -0
  309. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  310. package/packages/pi-coding-agent/package.json +5 -0
  311. package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +368 -28
  312. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +122 -6
  313. package/packages/pi-coding-agent/src/core/compaction/utils.ts +111 -13
  314. package/packages/pi-coding-agent/src/core/compaction-orchestrator.test.ts +154 -0
  315. package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +32 -18
  316. package/packages/pi-coding-agent/src/core/compaction-utils.test.ts +68 -1
  317. package/packages/pi-coding-agent/src/core/discovery-cache.test.ts +9 -18
  318. package/packages/pi-coding-agent/src/core/extensions/extension-discovery.ts +119 -0
  319. package/packages/pi-coding-agent/src/core/extensions/extension-registry.ts +222 -0
  320. package/packages/pi-coding-agent/src/core/extensions/loader.ts +24 -11
  321. package/packages/pi-coding-agent/src/core/extensions/types.ts +8 -0
  322. package/packages/pi-coding-agent/src/core/lsp/lsp-integration.test.ts +13 -0
  323. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +2 -2
  324. package/packages/pi-coding-agent/src/core/resource-loader.ts +1 -1
  325. package/packages/pi-coding-agent/src/core/sdk.test.ts +25 -1
  326. package/packages/pi-coding-agent/src/core/sdk.ts +10 -3
  327. package/packages/pi-coding-agent/src/core/system-prompt.ts +3 -3
  328. package/packages/pi-coding-agent/src/core/tools/path-utils.test.ts +2 -1
  329. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts +17 -7
  330. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +49 -3
  331. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +14 -5
  332. package/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +45 -11
  333. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +48 -9
  334. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +14 -0
  335. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  336. package/packages/pi-tui/dist/__tests__/autocomplete.test.js +12 -5
  337. package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -1
  338. package/packages/pi-tui/dist/__tests__/stdin-buffer.test.js +21 -0
  339. package/packages/pi-tui/dist/__tests__/stdin-buffer.test.js.map +1 -1
  340. package/packages/pi-tui/dist/stdin-buffer.d.ts +7 -0
  341. package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  342. package/packages/pi-tui/dist/stdin-buffer.js +20 -0
  343. package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
  344. package/packages/pi-tui/package.json +5 -0
  345. package/packages/pi-tui/src/__tests__/autocomplete.test.ts +20 -5
  346. package/packages/pi-tui/src/__tests__/stdin-buffer.test.ts +27 -0
  347. package/packages/pi-tui/src/stdin-buffer.ts +26 -0
  348. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  349. package/packages/rpc-client/package.json +5 -0
  350. package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  351. package/pkg/dist/core/export-html/ansi-to-html.js +0 -1
  352. package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
  353. package/pkg/dist/core/export-html/index.d.ts +1 -1
  354. package/pkg/dist/core/export-html/index.d.ts.map +1 -1
  355. package/pkg/dist/core/export-html/index.js +5 -39
  356. package/pkg/dist/core/export-html/index.js.map +1 -1
  357. package/pkg/dist/core/export-html/tool-renderer.d.ts +2 -2
  358. package/pkg/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  359. package/pkg/dist/core/export-html/tool-renderer.js.map +1 -1
  360. package/scripts/ensure-workspace-builds.cjs +0 -2
  361. package/scripts/lib/workspace-manifest.cjs +86 -0
  362. package/scripts/link-workspace-packages.cjs +5 -19
  363. package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -1
  364. package/src/resources/extensions/aws-auth/index.ts +1 -2
  365. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +7 -4
  366. package/src/resources/extensions/bg-shell/index.ts +1 -2
  367. package/src/resources/extensions/bg-shell/process-manager.ts +1 -2
  368. package/src/resources/extensions/browser-tools/index.ts +1 -2
  369. package/src/resources/extensions/claude-code-cli/index.ts +1 -1
  370. package/src/resources/extensions/claude-code-cli/partial-builder.ts +23 -115
  371. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +81 -61
  372. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +91 -22
  373. package/src/resources/extensions/cmux/index.ts +35 -10
  374. package/src/resources/extensions/github-sync/templates.ts +151 -0
  375. package/src/resources/extensions/github-sync/tests/templates.test.ts +59 -0
  376. package/src/resources/extensions/google-search/extension-manifest.json +5 -4
  377. package/src/resources/extensions/google-search/index.ts +9 -470
  378. package/src/resources/extensions/gsd/abandon-detect.ts +62 -0
  379. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -1
  380. package/src/resources/extensions/gsd/auto/loop.ts +95 -2
  381. package/src/resources/extensions/gsd/auto/phases.ts +46 -18
  382. package/src/resources/extensions/gsd/auto/resolve.ts +29 -0
  383. package/src/resources/extensions/gsd/auto/run-unit.ts +16 -2
  384. package/src/resources/extensions/gsd/auto/session.ts +7 -0
  385. package/src/resources/extensions/gsd/auto/turn-epoch.ts +108 -0
  386. package/src/resources/extensions/gsd/auto/types.ts +1 -1
  387. package/src/resources/extensions/gsd/auto-dispatch.ts +63 -5
  388. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  389. package/src/resources/extensions/gsd/auto-post-unit.ts +111 -0
  390. package/src/resources/extensions/gsd/auto-prompts.ts +59 -7
  391. package/src/resources/extensions/gsd/auto-recovery.ts +5 -27
  392. package/src/resources/extensions/gsd/auto-start.ts +73 -3
  393. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +12 -5
  394. package/src/resources/extensions/gsd/auto-unit-closeout.ts +14 -3
  395. package/src/resources/extensions/gsd/auto-worktree.ts +60 -5
  396. package/src/resources/extensions/gsd/auto.ts +84 -19
  397. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +11 -0
  398. package/src/resources/extensions/gsd/bootstrap/provider-error-resume.ts +6 -2
  399. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +11 -0
  400. package/src/resources/extensions/gsd/bootstrap/system-context.ts +13 -9
  401. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +27 -8
  402. package/src/resources/extensions/gsd/commands-cmux.ts +10 -6
  403. package/src/resources/extensions/gsd/commands-extensions.ts +747 -41
  404. package/src/resources/extensions/gsd/context-store.ts +25 -8
  405. package/src/resources/extensions/gsd/dispatch-guard.ts +2 -20
  406. package/src/resources/extensions/gsd/file-lock.ts +84 -11
  407. package/src/resources/extensions/gsd/forensics.ts +118 -1
  408. package/src/resources/extensions/gsd/git-service.ts +17 -0
  409. package/src/resources/extensions/gsd/gitignore.ts +1 -0
  410. package/src/resources/extensions/gsd/guided-flow-queue.ts +4 -1
  411. package/src/resources/extensions/gsd/guided-flow.ts +38 -10
  412. package/src/resources/extensions/gsd/journal.ts +38 -3
  413. package/src/resources/extensions/gsd/milestone-actions.ts +18 -0
  414. package/src/resources/extensions/gsd/milestone-summary-classifier.ts +42 -0
  415. package/src/resources/extensions/gsd/notifications.ts +27 -15
  416. package/src/resources/extensions/gsd/preferences-validation.ts +21 -0
  417. package/src/resources/extensions/gsd/prompt-cache-optimizer.ts +4 -0
  418. package/src/resources/extensions/gsd/prompts/discuss-headless.md +23 -4
  419. package/src/resources/extensions/gsd/prompts/doctor-heal.md +5 -4
  420. package/src/resources/extensions/gsd/reports.ts +5 -4
  421. package/src/resources/extensions/gsd/slice-cadence.ts +299 -0
  422. package/src/resources/extensions/gsd/state-transition-matrix.ts +152 -0
  423. package/src/resources/extensions/gsd/state.ts +35 -30
  424. package/src/resources/extensions/gsd/tests/artifacts-table-preserved-on-cache-invalidate.test.ts +2 -1
  425. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +55 -10
  426. package/src/resources/extensions/gsd/tests/auto-mode-guards.test.ts +79 -0
  427. package/src/resources/extensions/gsd/tests/auto-remediate-slice-status.test.ts +4 -1
  428. package/src/resources/extensions/gsd/tests/auto-retry-mcp-churn-fixes.test.ts +12 -9
  429. package/src/resources/extensions/gsd/tests/auto-start-clean-runtime-db-gated.test.ts +3 -2
  430. package/src/resources/extensions/gsd/tests/auto-start-cold-db-bootstrap.test.ts +2 -2
  431. package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +4 -3
  432. package/src/resources/extensions/gsd/tests/auto-start-worktree-db-path.test.ts +2 -2
  433. package/src/resources/extensions/gsd/tests/auto-thinking-restore.test.ts +3 -2
  434. package/src/resources/extensions/gsd/tests/auto-warning-noise-regression.test.ts +3 -2
  435. package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +2 -1
  436. package/src/resources/extensions/gsd/tests/canonical-milestone-root.test.ts +108 -0
  437. package/src/resources/extensions/gsd/tests/cmux.test.ts +5 -9
  438. package/src/resources/extensions/gsd/tests/complete-slice-verification-gate.test.ts +2 -1
  439. package/src/resources/extensions/gsd/tests/context-store.test.ts +79 -0
  440. package/src/resources/extensions/gsd/tests/copy-planning-artifacts-samepath.test.ts +2 -1
  441. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +159 -0
  442. package/src/resources/extensions/gsd/tests/db-access-guardrails.test.ts +1 -0
  443. package/src/resources/extensions/gsd/tests/derive-state.test.ts +1 -2
  444. package/src/resources/extensions/gsd/tests/discuss-slice-structured-questions.test.ts +2 -1
  445. package/src/resources/extensions/gsd/tests/discuss-tool-scope-leak.test.ts +2 -1
  446. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +5 -0
  447. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +25 -0
  448. package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +14 -0
  449. package/src/resources/extensions/gsd/tests/double-merge-guard.test.ts +4 -3
  450. package/src/resources/extensions/gsd/tests/empty-content-abort-loop.test.ts +4 -3
  451. package/src/resources/extensions/gsd/tests/execution-entry-missing-context-4671.test.ts +173 -0
  452. package/src/resources/extensions/gsd/tests/file-lock.test.ts +86 -12
  453. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +2 -2
  454. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +2 -1
  455. package/src/resources/extensions/gsd/tests/forensics-worktree-telemetry.test.ts +145 -0
  456. package/src/resources/extensions/gsd/tests/google-search-stub.test.ts +131 -0
  457. package/src/resources/extensions/gsd/tests/headless-milestone-parity.test.ts +117 -0
  458. package/src/resources/extensions/gsd/tests/idle-watchdog-stall-override.test.ts +6 -1
  459. package/src/resources/extensions/gsd/tests/import-done-milestones.test.ts +2 -1
  460. package/src/resources/extensions/gsd/tests/integration/all-milestones-complete-merge.test.ts +2 -1
  461. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +30 -0
  462. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +3 -2
  463. package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +9 -3
  464. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +64 -0
  465. package/src/resources/extensions/gsd/tests/knowledge.test.ts +93 -1
  466. package/src/resources/extensions/gsd/tests/mcp-client-security.test.ts +76 -0
  467. package/src/resources/extensions/gsd/tests/merge-conflict-stops-loop.test.ts +10 -3
  468. package/src/resources/extensions/gsd/tests/milestone-summary-classifier.test.ts +30 -0
  469. package/src/resources/extensions/gsd/tests/milestone-transition-state-rebuild.test.ts +4 -2
  470. package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +2 -1
  471. package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +59 -2
  472. package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +5 -0
  473. package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +4 -1
  474. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +150 -0
  475. package/src/resources/extensions/gsd/tests/preferences-worktree-sync.test.ts +2 -1
  476. package/src/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +12 -0
  477. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +15 -4
  478. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +39 -25
  479. package/src/resources/extensions/gsd/tests/queue-auto-guard.test.ts +181 -0
  480. package/src/resources/extensions/gsd/tests/queue-draft-detection.test.ts +3 -2
  481. package/src/resources/extensions/gsd/tests/queued-discuss-fast-path.test.ts +4 -5
  482. package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +13 -7
  483. package/src/resources/extensions/gsd/tests/require-slice-discussion-dispatch.test.ts +170 -0
  484. package/src/resources/extensions/gsd/tests/restore-tools-after-discuss.test.ts +6 -3
  485. package/src/resources/extensions/gsd/tests/rewrite-docs-abandon-detect.test.ts +195 -0
  486. package/src/resources/extensions/gsd/tests/sidecar-queue.test.ts +3 -2
  487. package/src/resources/extensions/gsd/tests/slice-cadence.test.ts +242 -0
  488. package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +3 -2
  489. package/src/resources/extensions/gsd/tests/smart-entry-draft.test.ts +2 -1
  490. package/src/resources/extensions/gsd/tests/stale-dirlistcache-4648.test.ts +112 -0
  491. package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +24 -0
  492. package/src/resources/extensions/gsd/tests/state-transition-matrix.test.ts +44 -0
  493. package/src/resources/extensions/gsd/tests/stop-auto-race-null-unit.test.ts +3 -3
  494. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +2 -2
  495. package/src/resources/extensions/gsd/tests/subagent-model-dispatch.test.ts +7 -6
  496. package/src/resources/extensions/gsd/tests/sync-worktree-skip-current.test.ts +4 -3
  497. package/src/resources/extensions/gsd/tests/test-helpers.test.ts +147 -0
  498. package/src/resources/extensions/gsd/tests/test-helpers.ts +140 -0
  499. package/src/resources/extensions/gsd/tests/token-profile.test.ts +8 -1
  500. package/src/resources/extensions/gsd/tests/triage-resolution.test.ts +50 -2
  501. package/src/resources/extensions/gsd/tests/turn-epoch.test.ts +162 -0
  502. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +51 -0
  503. package/src/resources/extensions/gsd/tests/uok-execution-graph.test.ts +16 -0
  504. package/src/resources/extensions/gsd/tests/uok-loop-adapter-writer.test.ts +65 -0
  505. package/src/resources/extensions/gsd/tests/uok-parity-report.test.ts +42 -0
  506. package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +19 -2
  507. package/src/resources/extensions/gsd/tests/uok-writer.test.ts +75 -0
  508. package/src/resources/extensions/gsd/tests/validate-extension-package.test.ts +168 -0
  509. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +11 -0
  510. package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +6 -5
  511. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +25 -2
  512. package/src/resources/extensions/gsd/tests/worktree-health-monorepo.test.ts +2 -2
  513. package/src/resources/extensions/gsd/tests/worktree-nested-git-safety.test.ts +2 -2
  514. package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +2 -2
  515. package/src/resources/extensions/gsd/tests/worktree-telemetry.test.ts +210 -0
  516. package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +3 -3
  517. package/src/resources/extensions/gsd/tools/complete-slice.ts +38 -0
  518. package/src/resources/extensions/gsd/tools/complete-task.ts +49 -0
  519. package/src/resources/extensions/gsd/tools/validate-milestone.ts +8 -2
  520. package/src/resources/extensions/gsd/uok/audit.ts +20 -2
  521. package/src/resources/extensions/gsd/uok/contracts.ts +65 -0
  522. package/src/resources/extensions/gsd/uok/dispatch-envelope.ts +56 -0
  523. package/src/resources/extensions/gsd/uok/execution-graph.ts +22 -0
  524. package/src/resources/extensions/gsd/uok/gitops.ts +6 -1
  525. package/src/resources/extensions/gsd/uok/loop-adapter.ts +45 -10
  526. package/src/resources/extensions/gsd/uok/parity-report.ts +84 -0
  527. package/src/resources/extensions/gsd/uok/plan-v2.ts +13 -5
  528. package/src/resources/extensions/gsd/uok/writer.ts +113 -0
  529. package/src/resources/extensions/gsd/workflow-logger.ts +22 -3
  530. package/src/resources/extensions/gsd/worktree-manager.ts +54 -0
  531. package/src/resources/extensions/gsd/worktree-resolver.ts +96 -9
  532. package/src/resources/extensions/gsd/worktree-telemetry.ts +322 -0
  533. package/src/resources/extensions/mcp-client/auth.ts +12 -1
  534. package/src/resources/extensions/mcp-client/index.ts +130 -11
  535. package/src/resources/extensions/ollama/index.ts +3 -3
  536. package/src/resources/extensions/ollama/ollama-chat-provider.ts +18 -6
  537. package/src/resources/extensions/remote-questions/config.ts +4 -15
  538. package/src/resources/extensions/search-the-web/index.ts +1 -2
  539. package/src/resources/extensions/shared/cmux-events.ts +59 -0
  540. package/src/resources/extensions/shared/rtk-session-stats.ts +1 -2
  541. package/src/resources/extensions/shared/tests/format-utils.test.ts +3 -5
  542. package/src/resources/extensions/universal-config/index.ts +1 -1
  543. package/src/resources/skills/create-skill/SKILL.md +2 -2
  544. package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +4 -4
  545. package/src/resources/skills/create-skill/workflows/audit-skill.md +4 -4
  546. package/src/resources/skills/create-skill/workflows/create-new-skill.md +5 -5
  547. package/dist/web/standalone/.next/server/chunks/7461.js +0 -1
  548. package/dist/web/standalone/.next/static/chunks/2826.d445fb428ef41fa1.js +0 -9
  549. package/packages/gsd-agent-core/dist/agent-session.d.ts +0 -716
  550. package/packages/gsd-agent-core/dist/agent-session.d.ts.map +0 -1
  551. package/packages/gsd-agent-core/dist/agent-session.js +0 -2595
  552. package/packages/gsd-agent-core/dist/agent-session.js.map +0 -1
  553. package/packages/gsd-agent-core/dist/artifact-manager.d.ts +0 -52
  554. package/packages/gsd-agent-core/dist/artifact-manager.d.ts.map +0 -1
  555. package/packages/gsd-agent-core/dist/artifact-manager.js +0 -118
  556. package/packages/gsd-agent-core/dist/artifact-manager.js.map +0 -1
  557. package/packages/gsd-agent-core/dist/bash-executor.d.ts +0 -57
  558. package/packages/gsd-agent-core/dist/bash-executor.d.ts.map +0 -1
  559. package/packages/gsd-agent-core/dist/bash-executor.js +0 -282
  560. package/packages/gsd-agent-core/dist/bash-executor.js.map +0 -1
  561. package/packages/gsd-agent-core/dist/blob-store.d.ts +0 -39
  562. package/packages/gsd-agent-core/dist/blob-store.d.ts.map +0 -1
  563. package/packages/gsd-agent-core/dist/blob-store.js +0 -151
  564. package/packages/gsd-agent-core/dist/blob-store.js.map +0 -1
  565. package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts +0 -90
  566. package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts.map +0 -1
  567. package/packages/gsd-agent-core/dist/compaction/branch-summarization.js +0 -207
  568. package/packages/gsd-agent-core/dist/compaction/branch-summarization.js.map +0 -1
  569. package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +0 -137
  570. package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +0 -1
  571. package/packages/gsd-agent-core/dist/compaction/compaction.js +0 -621
  572. package/packages/gsd-agent-core/dist/compaction/compaction.js.map +0 -1
  573. package/packages/gsd-agent-core/dist/compaction/index.d.ts +0 -7
  574. package/packages/gsd-agent-core/dist/compaction/index.d.ts.map +0 -1
  575. package/packages/gsd-agent-core/dist/compaction/index.js +0 -7
  576. package/packages/gsd-agent-core/dist/compaction/index.js.map +0 -1
  577. package/packages/gsd-agent-core/dist/compaction/utils.d.ts +0 -78
  578. package/packages/gsd-agent-core/dist/compaction/utils.d.ts.map +0 -1
  579. package/packages/gsd-agent-core/dist/compaction/utils.js +0 -263
  580. package/packages/gsd-agent-core/dist/compaction/utils.js.map +0 -1
  581. package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts +0 -90
  582. package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts.map +0 -1
  583. package/packages/gsd-agent-core/dist/compaction-orchestrator.js +0 -338
  584. package/packages/gsd-agent-core/dist/compaction-orchestrator.js.map +0 -1
  585. package/packages/gsd-agent-core/dist/contextual-tips.d.ts +0 -43
  586. package/packages/gsd-agent-core/dist/contextual-tips.d.ts.map +0 -1
  587. package/packages/gsd-agent-core/dist/contextual-tips.js +0 -208
  588. package/packages/gsd-agent-core/dist/contextual-tips.js.map +0 -1
  589. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts +0 -18
  590. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts.map +0 -1
  591. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js +0 -250
  592. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js.map +0 -1
  593. package/packages/gsd-agent-core/dist/export-html/index.d.ts +0 -37
  594. package/packages/gsd-agent-core/dist/export-html/index.d.ts.map +0 -1
  595. package/packages/gsd-agent-core/dist/export-html/index.js +0 -257
  596. package/packages/gsd-agent-core/dist/export-html/index.js.map +0 -1
  597. package/packages/gsd-agent-core/dist/export-html/template.css +0 -971
  598. package/packages/gsd-agent-core/dist/export-html/template.html +0 -54
  599. package/packages/gsd-agent-core/dist/export-html/template.js +0 -1583
  600. package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts +0 -38
  601. package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts.map +0 -1
  602. package/packages/gsd-agent-core/dist/export-html/tool-renderer.js +0 -70
  603. package/packages/gsd-agent-core/dist/export-html/tool-renderer.js.map +0 -1
  604. package/packages/gsd-agent-core/dist/export-html/vendor/highlight.min.js +0 -1213
  605. package/packages/gsd-agent-core/dist/export-html/vendor/marked.min.js +0 -6
  606. package/packages/gsd-agent-core/dist/fallback-resolver.d.ts +0 -75
  607. package/packages/gsd-agent-core/dist/fallback-resolver.d.ts.map +0 -1
  608. package/packages/gsd-agent-core/dist/fallback-resolver.js +0 -118
  609. package/packages/gsd-agent-core/dist/fallback-resolver.js.map +0 -1
  610. package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts +0 -44
  611. package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts.map +0 -1
  612. package/packages/gsd-agent-core/dist/image-overflow-recovery.js +0 -99
  613. package/packages/gsd-agent-core/dist/image-overflow-recovery.js.map +0 -1
  614. package/packages/gsd-agent-core/dist/index.d.ts +0 -14
  615. package/packages/gsd-agent-core/dist/index.d.ts.map +0 -1
  616. package/packages/gsd-agent-core/dist/index.js +0 -19
  617. package/packages/gsd-agent-core/dist/index.js.map +0 -1
  618. package/packages/gsd-agent-core/dist/keybindings.d.ts +0 -47
  619. package/packages/gsd-agent-core/dist/keybindings.d.ts.map +0 -1
  620. package/packages/gsd-agent-core/dist/keybindings.js +0 -156
  621. package/packages/gsd-agent-core/dist/keybindings.js.map +0 -1
  622. package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts +0 -42
  623. package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts.map +0 -1
  624. package/packages/gsd-agent-core/dist/lifecycle-hooks.js +0 -204
  625. package/packages/gsd-agent-core/dist/lifecycle-hooks.js.map +0 -1
  626. package/packages/gsd-agent-core/dist/retry-handler.d.ts +0 -128
  627. package/packages/gsd-agent-core/dist/retry-handler.d.ts.map +0 -1
  628. package/packages/gsd-agent-core/dist/retry-handler.js +0 -518
  629. package/packages/gsd-agent-core/dist/retry-handler.js.map +0 -1
  630. package/packages/gsd-agent-core/dist/sdk.d.ts +0 -159
  631. package/packages/gsd-agent-core/dist/sdk.d.ts.map +0 -1
  632. package/packages/gsd-agent-core/dist/sdk.js +0 -375
  633. package/packages/gsd-agent-core/dist/sdk.js.map +0 -1
  634. package/packages/gsd-agent-core/dist/system-prompt.d.ts +0 -28
  635. package/packages/gsd-agent-core/dist/system-prompt.d.ts.map +0 -1
  636. package/packages/gsd-agent-core/dist/system-prompt.js +0 -201
  637. package/packages/gsd-agent-core/dist/system-prompt.js.map +0 -1
  638. package/packages/gsd-agent-core/package.json +0 -25
  639. package/packages/gsd-agent-core/scripts/copy-assets.cjs +0 -43
  640. package/packages/gsd-agent-core/src/agent-session.test.ts +0 -169
  641. package/packages/gsd-agent-core/src/agent-session.ts +0 -3358
  642. package/packages/gsd-agent-core/src/artifact-manager.ts +0 -126
  643. package/packages/gsd-agent-core/src/bash-executor.ts +0 -352
  644. package/packages/gsd-agent-core/src/blob-store.ts +0 -154
  645. package/packages/gsd-agent-core/src/compaction/branch-summarization.ts +0 -317
  646. package/packages/gsd-agent-core/src/compaction/compaction.ts +0 -855
  647. package/packages/gsd-agent-core/src/compaction/index.ts +0 -7
  648. package/packages/gsd-agent-core/src/compaction/utils.ts +0 -312
  649. package/packages/gsd-agent-core/src/compaction-orchestrator.ts +0 -449
  650. package/packages/gsd-agent-core/src/contextual-tips.ts +0 -232
  651. package/packages/gsd-agent-core/src/export-html/ansi-to-html.ts +0 -259
  652. package/packages/gsd-agent-core/src/export-html/index.ts +0 -345
  653. package/packages/gsd-agent-core/src/export-html/template.css +0 -971
  654. package/packages/gsd-agent-core/src/export-html/template.html +0 -54
  655. package/packages/gsd-agent-core/src/export-html/template.js +0 -1583
  656. package/packages/gsd-agent-core/src/export-html/tool-renderer.ts +0 -114
  657. package/packages/gsd-agent-core/src/export-html/vendor/highlight.min.js +0 -1213
  658. package/packages/gsd-agent-core/src/export-html/vendor/marked.min.js +0 -6
  659. package/packages/gsd-agent-core/src/fallback-resolver.ts +0 -193
  660. package/packages/gsd-agent-core/src/image-overflow-recovery.ts +0 -120
  661. package/packages/gsd-agent-core/src/index.ts +0 -68
  662. package/packages/gsd-agent-core/src/keybindings.ts +0 -220
  663. package/packages/gsd-agent-core/src/lifecycle-hooks.ts +0 -284
  664. package/packages/gsd-agent-core/src/retry-handler.ts +0 -620
  665. package/packages/gsd-agent-core/src/sdk.ts +0 -550
  666. package/packages/gsd-agent-core/src/system-prompt.ts +0 -270
  667. package/packages/gsd-agent-core/tsconfig.json +0 -28
  668. package/packages/gsd-agent-core/tsconfig.tsbuildinfo +0 -1
  669. package/packages/gsd-agent-modes/dist/cli/args.d.ts +0 -58
  670. package/packages/gsd-agent-modes/dist/cli/args.d.ts.map +0 -1
  671. package/packages/gsd-agent-modes/dist/cli/args.js +0 -324
  672. package/packages/gsd-agent-modes/dist/cli/args.js.map +0 -1
  673. package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts +0 -13
  674. package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts.map +0 -1
  675. package/packages/gsd-agent-modes/dist/cli/config-selector.js +0 -32
  676. package/packages/gsd-agent-modes/dist/cli/config-selector.js.map +0 -1
  677. package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts +0 -15
  678. package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts.map +0 -1
  679. package/packages/gsd-agent-modes/dist/cli/file-processor.js +0 -86
  680. package/packages/gsd-agent-modes/dist/cli/file-processor.js.map +0 -1
  681. package/packages/gsd-agent-modes/dist/cli/list-models.d.ts +0 -21
  682. package/packages/gsd-agent-modes/dist/cli/list-models.d.ts.map +0 -1
  683. package/packages/gsd-agent-modes/dist/cli/list-models.js +0 -114
  684. package/packages/gsd-agent-modes/dist/cli/list-models.js.map +0 -1
  685. package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts +0 -10
  686. package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts.map +0 -1
  687. package/packages/gsd-agent-modes/dist/cli/session-picker.js +0 -37
  688. package/packages/gsd-agent-modes/dist/cli/session-picker.js.map +0 -1
  689. package/packages/gsd-agent-modes/dist/index.d.ts +0 -7
  690. package/packages/gsd-agent-modes/dist/index.d.ts.map +0 -1
  691. package/packages/gsd-agent-modes/dist/index.js +0 -7
  692. package/packages/gsd-agent-modes/dist/index.js.map +0 -1
  693. package/packages/gsd-agent-modes/dist/main.d.ts +0 -8
  694. package/packages/gsd-agent-modes/dist/main.d.ts.map +0 -1
  695. package/packages/gsd-agent-modes/dist/main.js +0 -491
  696. package/packages/gsd-agent-modes/dist/main.js.map +0 -1
  697. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts +0 -34
  698. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts.map +0 -1
  699. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js +0 -330
  700. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js.map +0 -1
  701. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +0 -29
  702. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  703. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +0 -141
  704. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +0 -1
  705. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts +0 -36
  706. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  707. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +0 -157
  708. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +0 -1
  709. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  710. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  711. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js +0 -48
  712. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  713. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  714. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  715. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +0 -43
  716. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  717. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts +0 -11
  718. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts.map +0 -1
  719. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js +0 -47
  720. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js.map +0 -1
  721. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  722. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  723. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +0 -44
  724. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  725. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts +0 -71
  726. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  727. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js +0 -474
  728. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js.map +0 -1
  729. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts +0 -15
  730. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  731. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js +0 -32
  732. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  733. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +0 -22
  734. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  735. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +0 -70
  736. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +0 -1
  737. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts +0 -20
  738. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  739. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js +0 -75
  740. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js.map +0 -1
  741. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  742. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  743. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js +0 -140
  744. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js.map +0 -1
  745. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts +0 -12
  746. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts.map +0 -1
  747. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js +0 -133
  748. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js.map +0 -1
  749. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts +0 -33
  750. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  751. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js +0 -82
  752. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  753. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  754. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  755. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +0 -111
  756. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +0 -1
  757. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +0 -24
  758. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  759. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +0 -63
  760. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +0 -1
  761. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +0 -33
  762. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  763. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +0 -118
  764. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +0 -1
  765. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +0 -32
  766. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +0 -1
  767. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +0 -230
  768. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +0 -1
  769. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +0 -34
  770. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +0 -1
  771. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +0 -36
  772. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +0 -1
  773. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts +0 -48
  774. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  775. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js +0 -72
  776. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  777. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +0 -63
  778. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  779. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +0 -213
  780. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +0 -1
  781. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts +0 -86
  782. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  783. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js +0 -536
  784. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js.map +0 -1
  785. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
  786. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  787. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +0 -93
  788. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  789. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts +0 -30
  790. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts.map +0 -1
  791. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js +0 -169
  792. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js.map +0 -1
  793. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
  794. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  795. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js +0 -267
  796. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  797. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts +0 -21
  798. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  799. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js +0 -155
  800. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  801. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts +0 -97
  802. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  803. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js +0 -810
  804. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js.map +0 -1
  805. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +0 -71
  806. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  807. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +0 -320
  808. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +0 -1
  809. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  810. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  811. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js +0 -34
  812. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  813. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  814. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  815. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +0 -46
  816. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  817. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  818. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  819. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js +0 -45
  820. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js.map +0 -1
  821. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  822. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  823. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js +0 -46
  824. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  825. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts +0 -15
  826. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts.map +0 -1
  827. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js +0 -40
  828. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js.map +0 -1
  829. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +0 -111
  830. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  831. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +0 -984
  832. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +0 -1
  833. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts +0 -44
  834. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts.map +0 -1
  835. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js +0 -61
  836. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js.map +0 -1
  837. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts +0 -109
  838. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  839. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js +0 -1035
  840. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js.map +0 -1
  841. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  842. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  843. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js +0 -112
  844. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  845. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +0 -12
  846. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  847. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +0 -38
  848. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +0 -1
  849. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  850. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  851. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js +0 -33
  852. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  853. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +0 -27
  854. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +0 -1
  855. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +0 -793
  856. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +0 -1
  857. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts +0 -4
  858. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +0 -1
  859. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +0 -62
  860. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +0 -1
  861. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts +0 -22
  862. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +0 -1
  863. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +0 -118
  864. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +0 -1
  865. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts +0 -7
  866. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts.map +0 -1
  867. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js +0 -68
  868. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js.map +0 -1
  869. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +0 -50
  870. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +0 -1
  871. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +0 -2
  872. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +0 -1
  873. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +0 -358
  874. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  875. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +0 -3409
  876. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +0 -1
  877. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts +0 -77
  878. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts.map +0 -1
  879. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js +0 -529
  880. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js.map +0 -1
  881. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts +0 -6
  882. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts.map +0 -1
  883. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js +0 -15
  884. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js.map +0 -1
  885. package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts +0 -28
  886. package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts.map +0 -1
  887. package/packages/gsd-agent-modes/dist/modes/print-mode.js +0 -84
  888. package/packages/gsd-agent-modes/dist/modes/print-mode.js.map +0 -1
  889. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts +0 -17
  890. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts.map +0 -1
  891. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js +0 -49
  892. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js.map +0 -1
  893. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts +0 -37
  894. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts.map +0 -1
  895. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js +0 -84
  896. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js.map +0 -1
  897. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +0 -243
  898. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  899. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +0 -464
  900. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +0 -1
  901. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts +0 -25
  902. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  903. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +0 -750
  904. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +0 -1
  905. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts +0 -511
  906. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  907. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js +0 -8
  908. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js.map +0 -1
  909. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts +0 -19
  910. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts.map +0 -1
  911. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js +0 -45
  912. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js.map +0 -1
  913. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts +0 -22
  914. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts.map +0 -1
  915. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js +0 -21
  916. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js.map +0 -1
  917. package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts +0 -4
  918. package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts.map +0 -1
  919. package/packages/gsd-agent-modes/dist/pi-tui-compat.js +0 -3
  920. package/packages/gsd-agent-modes/dist/pi-tui-compat.js.map +0 -1
  921. package/packages/gsd-agent-modes/dist/theme.d.ts +0 -15
  922. package/packages/gsd-agent-modes/dist/theme.d.ts.map +0 -1
  923. package/packages/gsd-agent-modes/dist/theme.js +0 -23
  924. package/packages/gsd-agent-modes/dist/theme.js.map +0 -1
  925. package/packages/gsd-agent-modes/dist/utils/theme.d.ts +0 -16
  926. package/packages/gsd-agent-modes/dist/utils/theme.d.ts.map +0 -1
  927. package/packages/gsd-agent-modes/dist/utils/theme.js +0 -11
  928. package/packages/gsd-agent-modes/dist/utils/theme.js.map +0 -1
  929. package/packages/gsd-agent-modes/package.json +0 -23
  930. package/packages/gsd-agent-modes/src/cli/args.ts +0 -350
  931. package/packages/gsd-agent-modes/src/cli/config-selector.ts +0 -54
  932. package/packages/gsd-agent-modes/src/cli/file-processor.ts +0 -107
  933. package/packages/gsd-agent-modes/src/cli/list-models.ts +0 -141
  934. package/packages/gsd-agent-modes/src/cli/session-picker.ts +0 -59
  935. package/packages/gsd-agent-modes/src/index.ts +0 -6
  936. package/packages/gsd-agent-modes/src/main.ts +0 -614
  937. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/login-dialog.test.ts +0 -24
  938. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/provider-display-name.test.ts +0 -18
  939. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/timestamp.test.ts +0 -38
  940. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/tool-execution.test.ts +0 -171
  941. package/packages/gsd-agent-modes/src/modes/interactive/components/armin.ts +0 -382
  942. package/packages/gsd-agent-modes/src/modes/interactive/components/assistant-message.ts +0 -178
  943. package/packages/gsd-agent-modes/src/modes/interactive/components/bash-execution.ts +0 -212
  944. package/packages/gsd-agent-modes/src/modes/interactive/components/bordered-loader.ts +0 -66
  945. package/packages/gsd-agent-modes/src/modes/interactive/components/branch-summary-message.ts +0 -59
  946. package/packages/gsd-agent-modes/src/modes/interactive/components/chat-frame.ts +0 -67
  947. package/packages/gsd-agent-modes/src/modes/interactive/components/compaction-summary-message.ts +0 -60
  948. package/packages/gsd-agent-modes/src/modes/interactive/components/config-selector.ts +0 -597
  949. package/packages/gsd-agent-modes/src/modes/interactive/components/countdown-timer.ts +0 -41
  950. package/packages/gsd-agent-modes/src/modes/interactive/components/custom-editor.ts +0 -88
  951. package/packages/gsd-agent-modes/src/modes/interactive/components/custom-message.ts +0 -100
  952. package/packages/gsd-agent-modes/src/modes/interactive/components/daxnuts.ts +0 -165
  953. package/packages/gsd-agent-modes/src/modes/interactive/components/diff.ts +0 -147
  954. package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.test.ts +0 -73
  955. package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.ts +0 -89
  956. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-editor.ts +0 -151
  957. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-input.ts +0 -100
  958. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-selector.ts +0 -156
  959. package/packages/gsd-agent-modes/src/modes/interactive/components/footer.ts +0 -257
  960. package/packages/gsd-agent-modes/src/modes/interactive/components/index.ts +0 -35
  961. package/packages/gsd-agent-modes/src/modes/interactive/components/keybinding-hints.ts +0 -84
  962. package/packages/gsd-agent-modes/src/modes/interactive/components/login-dialog.ts +0 -257
  963. package/packages/gsd-agent-modes/src/modes/interactive/components/model-selector.ts +0 -656
  964. package/packages/gsd-agent-modes/src/modes/interactive/components/oauth-selector.ts +0 -122
  965. package/packages/gsd-agent-modes/src/modes/interactive/components/provider-manager.ts +0 -210
  966. package/packages/gsd-agent-modes/src/modes/interactive/components/scoped-models-selector.ts +0 -342
  967. package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector-search.ts +0 -194
  968. package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector.ts +0 -1011
  969. package/packages/gsd-agent-modes/src/modes/interactive/components/settings-selector.ts +0 -452
  970. package/packages/gsd-agent-modes/src/modes/interactive/components/show-images-selector.ts +0 -45
  971. package/packages/gsd-agent-modes/src/modes/interactive/components/skill-invocation-message.ts +0 -56
  972. package/packages/gsd-agent-modes/src/modes/interactive/components/theme-selector.ts +0 -63
  973. package/packages/gsd-agent-modes/src/modes/interactive/components/thinking-selector.ts +0 -64
  974. package/packages/gsd-agent-modes/src/modes/interactive/components/timestamp.ts +0 -48
  975. package/packages/gsd-agent-modes/src/modes/interactive/components/tool-execution.ts +0 -1157
  976. package/packages/gsd-agent-modes/src/modes/interactive/components/tree-render-utils.ts +0 -81
  977. package/packages/gsd-agent-modes/src/modes/interactive/components/tree-selector.ts +0 -1208
  978. package/packages/gsd-agent-modes/src/modes/interactive/components/user-message-selector.ts +0 -145
  979. package/packages/gsd-agent-modes/src/modes/interactive/components/user-message.ts +0 -44
  980. package/packages/gsd-agent-modes/src/modes/interactive/components/visual-truncate.ts +0 -50
  981. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller-ordering.test.ts +0 -1430
  982. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.test.ts +0 -71
  983. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.ts +0 -957
  984. package/packages/gsd-agent-modes/src/modes/interactive/controllers/extension-ui-controller.ts +0 -63
  985. package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.test.ts +0 -183
  986. package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.ts +0 -140
  987. package/packages/gsd-agent-modes/src/modes/interactive/controllers/model-controller.ts +0 -77
  988. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-ordering.test.ts +0 -44
  989. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-state.ts +0 -49
  990. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode.ts +0 -4195
  991. package/packages/gsd-agent-modes/src/modes/interactive/slash-command-handlers.ts +0 -670
  992. package/packages/gsd-agent-modes/src/modes/interactive/utils/shorten-path.ts +0 -14
  993. package/packages/gsd-agent-modes/src/modes/print-mode.ts +0 -106
  994. package/packages/gsd-agent-modes/src/modes/rpc/jsonl.ts +0 -58
  995. package/packages/gsd-agent-modes/src/modes/rpc/remote-terminal.ts +0 -109
  996. package/packages/gsd-agent-modes/src/modes/rpc/rpc-client.ts +0 -572
  997. package/packages/gsd-agent-modes/src/modes/rpc/rpc-mode.ts +0 -902
  998. package/packages/gsd-agent-modes/src/modes/rpc/rpc-protocol-v2.test.ts +0 -971
  999. package/packages/gsd-agent-modes/src/modes/rpc/rpc-types.ts +0 -335
  1000. package/packages/gsd-agent-modes/src/modes/shared/command-context-actions.ts +0 -53
  1001. package/packages/gsd-agent-modes/src/pi-coding-agent-compat.ts +0 -42
  1002. package/packages/gsd-agent-modes/src/pi-tui-compat.ts +0 -4
  1003. package/packages/gsd-agent-modes/src/theme.ts +0 -25
  1004. package/packages/gsd-agent-modes/src/utils/theme.ts +0 -24
  1005. package/packages/gsd-agent-modes/tsconfig.json +0 -28
  1006. package/packages/gsd-agent-modes/tsconfig.tsbuildinfo +0 -1
  1007. package/packages/gsd-agent-types/dist/index.d.ts +0 -176
  1008. package/packages/gsd-agent-types/dist/index.d.ts.map +0 -1
  1009. package/packages/gsd-agent-types/dist/index.js +0 -24
  1010. package/packages/gsd-agent-types/dist/index.js.map +0 -1
  1011. package/packages/gsd-agent-types/package.json +0 -24
  1012. package/packages/gsd-agent-types/src/index.ts +0 -206
  1013. package/packages/gsd-agent-types/tsconfig.json +0 -25
  1014. package/packages/gsd-agent-types/tsconfig.tsbuildinfo +0 -1
  1015. package/packages/native/dist/tsconfig.tsbuildinfo +0 -1
  1016. package/src/resources/extensions/claude-code-cli/tests/provider-registration.test.ts +0 -27
  1017. /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → Cev5xrAYA3ZGTRLyjR2fX}/_buildManifest.js +0 -0
  1018. /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → Cev5xrAYA3ZGTRLyjR2fX}/_ssgManifest.js +0 -0
@@ -15,7 +15,6 @@ import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updat
15
15
  import { isValidationTerminal } from "./state.js";
16
16
  import { getErrorMessage } from "./error-utils.js";
17
17
  import { logWarning, logError } from "./workflow-logger.js";
18
- import { splitFrontmatter, parseFrontmatterMap } from "./files.js";
19
18
  import { isClosedStatus } from "./status-guards.js";
20
19
  import { nativeConflictFiles, nativeCommit, nativeCheckoutTheirs, nativeAddPaths, nativeMergeAbort, nativeResetHard, } from "./native-git-bridge.js";
21
20
  import { resolveSlicePath, resolveSliceFile, resolveTasksDir, resolveTaskFiles, relMilestoneFile, relSliceFile, buildSliceFileName, resolveMilestoneFile, clearPathCache, resolveGsdRootFile, } from "./paths.js";
@@ -23,32 +22,10 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, } from
23
22
  import { execFileSync } from "node:child_process";
24
23
  import { dirname, join } from "node:path";
25
24
  import { resolveExpectedArtifactPath, diagnoseExpectedArtifact, } from "./auto-artifact-paths.js";
25
+ import { classifyMilestoneSummaryContent } from "./milestone-summary-classifier.js";
26
26
  // Re-export so existing consumers of auto-recovery.ts keep working.
27
27
  export { resolveExpectedArtifactPath, diagnoseExpectedArtifact };
28
- /**
29
- * Classify milestone summary content for recovery/dispatch decisions.
30
- * - success: canonical completion summary (frontmatter status is closed)
31
- * - failure: explicit blocker/failure markers
32
- * - unknown: ambiguous content
33
- */
34
- export function classifyMilestoneSummaryContent(content) {
35
- const [fmLines] = splitFrontmatter(content);
36
- const fm = fmLines ? parseFrontmatterMap(fmLines) : null;
37
- const rawStatus = typeof fm?.status === "string" ? fm.status.trim().toLowerCase() : "";
38
- if (rawStatus) {
39
- if (isClosedStatus(rawStatus))
40
- return "success";
41
- if (["active", "pending", "blocked", "failed", "incomplete"].includes(rawStatus))
42
- return "failure";
43
- }
44
- const failureSignal = /(?:^|\n)\s*#\s*BLOCKER\b/i.test(content)
45
- || /auto-mode recovery failed/i.test(content)
46
- || /verification\s+failed/i.test(content)
47
- || /\bnot complete\b/i.test(content);
48
- if (failureSignal)
49
- return "failure";
50
- return "unknown";
51
- }
28
+ export { classifyMilestoneSummaryContent, } from "./milestone-summary-classifier.js";
52
29
  // ─── Artifact Resolution & Verification ───────────────────────────────────────
53
30
  /**
54
31
  * Check whether a milestone produced implementation artifacts (non-`.gsd/` files)
@@ -19,12 +19,13 @@ import { invalidateAllCaches } from "./cache.js";
19
19
  import { writeLock, clearLock } from "./crash-recovery.js";
20
20
  import { acquireSessionLock, releaseSessionLock, updateSessionLock, } from "./session-lock.js";
21
21
  import { ensureGitignore, untrackRuntimeFiles } from "./gitignore.js";
22
- import { nativeIsRepo, nativeInit, nativeAddAll, nativeCommit, nativeGetCurrentBranch, nativeDetectMainBranch, nativeCheckoutBranch, nativeBranchList, nativeBranchListMerged, nativeBranchDelete, nativeWorktreeRemove, } from "./native-git-bridge.js";
22
+ import { nativeIsRepo, nativeInit, nativeAddAll, nativeCommit, nativeGetCurrentBranch, nativeDetectMainBranch, nativeCheckoutBranch, nativeBranchList, nativeBranchListMerged, nativeBranchDelete, nativeWorktreeRemove, nativeCommitCountBetween, } from "./native-git-bridge.js";
23
23
  import { GitServiceImpl } from "./git-service.js";
24
24
  import { captureIntegrationBranch, detectWorktreeName, setActiveMilestoneId, } from "./worktree.js";
25
25
  import { getAutoWorktreePath } from "./auto-worktree.js";
26
26
  import { readResourceVersion, cleanStaleRuntimeUnits } from "./auto-worktree.js";
27
27
  import { worktreePath as getWorktreeDir, isInsideWorktreesDir } from "./worktree-manager.js";
28
+ import { emitWorktreeOrphaned } from "./worktree-telemetry.js";
28
29
  import { initMetrics } from "./metrics.js";
29
30
  import { initRoutingHistory } from "./routing-history.js";
30
31
  import { restoreHookState, resetHookState } from "./post-unit-hooks.js";
@@ -32,9 +33,10 @@ import { resetProactiveHealing, setLevelChangeCallback } from "./doctor-proactiv
32
33
  import { snapshotSkills } from "./skill-discovery.js";
33
34
  import { isDbAvailable, getMilestone, openDatabase, getDbStatus } from "./gsd-db.js";
34
35
  import { isClosedStatus } from "./status-guards.js";
36
+ import { classifyMilestoneSummaryContent } from "./milestone-summary-classifier.js";
35
37
  import { debugLog, enableDebug, isDebugEnabled, getDebugLogPath, } from "./debug-logger.js";
36
38
  import { logWarning, logError } from "./workflow-logger.js";
37
- import { existsSync, mkdirSync, readdirSync, rmSync, statSync, unlinkSync, } from "node:fs";
39
+ import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, unlinkSync, } from "node:fs";
38
40
  import { join } from "node:path";
39
41
  import { sep as pathSep } from "node:path";
40
42
  import { resolveProjectRootDbPath } from "./bootstrap/dynamic-tools.js";
@@ -119,10 +121,58 @@ export function auditOrphanedMilestoneBranches(basePath, isolationMode) {
119
121
  for (const branch of milestoneBranches) {
120
122
  const milestoneId = branch.replace(/^milestone\//, "");
121
123
  const milestone = getMilestone(milestoneId);
122
- // Only audit completed milestones
123
- if (!milestone || milestone.status !== "complete")
124
+ if (!milestone)
124
125
  continue;
125
126
  const isMerged = mergedBranches.has(branch);
127
+ // #4762 — in-progress milestone branch with unmerged commits ahead of
128
+ // main. This is the pre-completion orphan case: auto-mode exited without
129
+ // completing the milestone (pause, stop, crash, merge error, blocker) and
130
+ // work is stranded on the branch or in the worktree. Data safety first:
131
+ // we never delete or touch; we just surface a warning so the user knows
132
+ // where to look.
133
+ //
134
+ // Gate on isClosedStatus so we only warn about genuinely open milestones.
135
+ // Parked/other closed statuses go through the legacy complete/unmerged
136
+ // path below where appropriate.
137
+ if (!isClosedStatus(milestone.status)) {
138
+ if (isMerged)
139
+ continue; // nothing to recover
140
+ let commitsAhead = 0;
141
+ try {
142
+ commitsAhead = nativeCommitCountBetween(basePath, mainBranch, branch);
143
+ }
144
+ catch {
145
+ // Rev-walk failure — skip rather than noise
146
+ continue;
147
+ }
148
+ if (commitsAhead === 0)
149
+ continue;
150
+ const wtDir = getWorktreeDir(basePath, milestoneId);
151
+ const wtDirExists = existsSync(wtDir);
152
+ const wtSuffix = wtDirExists
153
+ ? ` Worktree directory at .gsd/worktrees/${milestoneId}/ holds the live work.`
154
+ : "";
155
+ warnings.push(`Branch ${branch} has ${commitsAhead} commit(s) ahead of ${mainBranch} for in-progress milestone ${milestoneId}.` +
156
+ wtSuffix +
157
+ ` Run \`/gsd auto\` to resume, or merge manually if abandoning.`);
158
+ // #4764 telemetry
159
+ try {
160
+ emitWorktreeOrphaned(basePath, milestoneId, {
161
+ reason: "in-progress-unmerged",
162
+ commitsAhead,
163
+ worktreeDirExists: wtDirExists,
164
+ });
165
+ }
166
+ catch (err) {
167
+ logWarning("engine", `worktree-orphaned telemetry failed for ${milestoneId}: ${err instanceof Error ? err.message : String(err)}`);
168
+ }
169
+ continue;
170
+ }
171
+ // Only the "complete" status participates in the merged/unmerged cleanup
172
+ // paths below — other closed statuses (parked, etc.) are intentionally
173
+ // left alone.
174
+ if (milestone.status !== "complete")
175
+ continue;
126
176
  if (isMerged) {
127
177
  // Branch is merged — safe to delete branch and clean up worktree dir
128
178
  try {
@@ -169,6 +219,16 @@ export function auditOrphanedMilestoneBranches(basePath, isolationMode) {
169
219
  // Branch is NOT merged — preserve for safety, warn the user
170
220
  warnings.push(`Branch ${branch} exists for completed milestone ${milestoneId} but is NOT merged into ${mainBranch}. ` +
171
221
  `This may contain unmerged work. Merge manually or run \`/gsd health --fix\` to resolve.`);
222
+ // #4764 telemetry
223
+ try {
224
+ emitWorktreeOrphaned(basePath, milestoneId, {
225
+ reason: "complete-unmerged",
226
+ worktreeDirExists: existsSync(getWorktreeDir(basePath, milestoneId)),
227
+ });
228
+ }
229
+ catch (err) {
230
+ logWarning("engine", `worktree-orphaned telemetry failed for ${milestoneId}: ${err instanceof Error ? err.message : String(err)}`);
231
+ }
172
232
  }
173
233
  }
174
234
  return { recovered, warnings };
@@ -328,7 +388,15 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
328
388
  const row = getMilestone(mid);
329
389
  return !!row && isClosedStatus(row.status);
330
390
  }
331
- return !!resolveMilestoneFile(base, mid, "SUMMARY");
391
+ const summaryFile = resolveMilestoneFile(base, mid, "SUMMARY");
392
+ if (!summaryFile)
393
+ return false;
394
+ try {
395
+ return classifyMilestoneSummaryContent(readFileSync(summaryFile, "utf-8")) !== "failure";
396
+ }
397
+ catch {
398
+ return false;
399
+ }
332
400
  });
333
401
  // ── Orphaned milestone branch audit ──
334
402
  // Catches completed milestones whose teardown (merge + branch delete)
@@ -6,8 +6,14 @@
6
6
  import { readUnitRuntimeRecord, writeUnitRuntimeRecord, formatExecuteTaskRecoveryStatus, inspectExecuteTaskDurability, } from "./unit-runtime.js";
7
7
  import { resolveExpectedArtifactPath, diagnoseExpectedArtifact, writeBlockerPlaceholder, } from "./auto-recovery.js";
8
8
  import { existsSync } from "node:fs";
9
- import { resolveAgentEnd } from "./auto-loop.js";
9
+ import { bumpAndResolveSynthetic } from "./auto/resolve.js";
10
10
  export async function recoverTimedOutUnit(ctx, pi, unitType, unitId, reason, rctx) {
11
+ // Note on turn epoch: the bump is intentionally NOT unconditional at
12
+ // function entry. Two branches below (the "steering retry" paths) keep
13
+ // the same LLM turn alive and let it try again — they must NOT bump,
14
+ // otherwise the retry's legitimate writes get marked stale and drop.
15
+ // Each advance branch calls `bumpAndResolveSynthetic` to bump+resolve
16
+ // atomically. Search for that helper to find all supersede sites.
11
17
  const { basePath, verbose, currentUnitStartedAt, unitRecoveryCount } = rctx;
12
18
  const runtime = readUnitRuntimeRecord(basePath, unitType, unitId);
13
19
  const recoveryAttempts = runtime?.recoveryAttempts ?? 0;
@@ -36,7 +42,7 @@ export async function recoverTimedOutUnit(ctx, pi, unitType, unitId, reason, rct
36
42
  });
37
43
  ctx.ui.notify(`${reason === "idle" ? "Idle" : "Timeout"} recovery: ${unitType} ${unitId} already completed on disk. Continuing auto-mode. (attempt ${attemptNumber})`, "info");
38
44
  unitRecoveryCount.delete(recoveryKey);
39
- resolveAgentEnd({ messages: [], _synthetic: "timeout-recovery" });
45
+ bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
40
46
  return "recovered";
41
47
  }
42
48
  if (recoveryAttempts < maxRecoveryAttempts) {
@@ -90,7 +96,7 @@ export async function recoverTimedOutUnit(ctx, pi, unitType, unitId, reason, rct
90
96
  });
91
97
  ctx.ui.notify(`${unitType} ${unitId} skipped after ${maxRecoveryAttempts} recovery attempts (${diagnostic}). Blocker artifacts written. Advancing pipeline. (attempt ${attemptNumber})`, "warning");
92
98
  unitRecoveryCount.delete(recoveryKey);
93
- resolveAgentEnd({ messages: [], _synthetic: "timeout-recovery" });
99
+ bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
94
100
  return "recovered";
95
101
  }
96
102
  // Fallback: couldn't write skip artifacts — pause as before.
@@ -115,7 +121,7 @@ export async function recoverTimedOutUnit(ctx, pi, unitType, unitId, reason, rct
115
121
  });
116
122
  ctx.ui.notify(`${reason === "idle" ? "Idle" : "Timeout"} recovery: ${unitType} ${unitId} artifact already exists on disk. Advancing. (attempt ${attemptNumber})`, "info");
117
123
  unitRecoveryCount.delete(recoveryKey);
118
- resolveAgentEnd({ messages: [], _synthetic: "timeout-recovery" });
124
+ bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
119
125
  return "recovered";
120
126
  }
121
127
  if (recoveryAttempts < maxRecoveryAttempts) {
@@ -180,7 +186,7 @@ export async function recoverTimedOutUnit(ctx, pi, unitType, unitId, reason, rct
180
186
  });
181
187
  ctx.ui.notify(`${unitType} ${unitId} skipped after ${maxRecoveryAttempts} recovery attempts. Blocker placeholder written to ${placeholder}. Advancing pipeline. (attempt ${attemptNumber})`, "warning");
182
188
  unitRecoveryCount.delete(recoveryKey);
183
- resolveAgentEnd({ messages: [], _synthetic: "timeout-recovery" });
189
+ bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
184
190
  return "recovered";
185
191
  }
186
192
  // Fallback: couldn't resolve artifact path — pause as before.
@@ -20,9 +20,18 @@ export async function closeoutUnit(ctx, basePath, unitType, unitId, startedAt, o
20
20
  const { buildMemoryLLMCall, extractMemoriesFromUnit } = await import('./memory-extractor.js');
21
21
  const llmCallFn = buildMemoryLLMCall(ctx);
22
22
  if (llmCallFn) {
23
- extractMemoriesFromUnit(activityFile, unitType, unitId, llmCallFn).catch((err) => {
23
+ // Awaited: a fire-and-forget here lets memory-extractor writes land in
24
+ // .gsd/ after closeoutUnit returns but before the milestone merge
25
+ // runs, which made the working tree appear dirty to `git merge
26
+ // --squash` (root cause class of #4704). Completion latency is now
27
+ // bounded by the extractor's LLM call, which is the acceptable price
28
+ // for not racing the merge boundary.
29
+ try {
30
+ await extractMemoriesFromUnit(activityFile, unitType, unitId, llmCallFn);
31
+ }
32
+ catch (err) {
24
33
  logWarning("engine", `memory extraction failed for ${unitType}/${unitId}: ${err.message}`);
25
- });
34
+ }
26
35
  }
27
36
  }
28
37
  catch (err) { /* non-fatal */
@@ -9,7 +9,7 @@ import { existsSync, cpSync, readFileSync, readdirSync, mkdirSync, realpathSync,
9
9
  import { isAbsolute, join, sep as pathSep } from "node:path";
10
10
  import { homedir } from "node:os";
11
11
  import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js";
12
- import { reconcileWorktreeDb, isDbAvailable, getMilestone, getMilestoneSlices, } from "./gsd-db.js";
12
+ import { reconcileWorktreeDb, isDbAvailable, getMilestone, getMilestoneSlices, closeDatabase, openDatabase, getDbPath, } from "./gsd-db.js";
13
13
  import { atomicWriteSync } from "./atomic-write.js";
14
14
  import { execFileSync } from "node:child_process";
15
15
  import { safeCopy, safeCopyRecursive } from "./safe-fs.js";
@@ -1433,26 +1433,53 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1433
1433
  const milestonesDir = join(gsdRoot(originalBasePath_), "milestones");
1434
1434
  const shelterDir = join(gsdRoot(originalBasePath_), ".milestone-shelter");
1435
1435
  const shelteredDirs = [];
1436
+ let shelterRestored = false;
1436
1437
  // Helper: restore sheltered milestone directories (#2505).
1437
1438
  // Called on both success and error paths to ensure queued CONTEXT files
1438
- // are never permanently lost.
1439
+ // are never permanently lost. Idempotent — the error path may fire after
1440
+ // the success path has already restored and removed the shelter dir; a
1441
+ // second call is a no-op instead of logging a misleading "shelter restore
1442
+ // failed: ENOENT" error for shelter sources that were cleaned up legitimately.
1439
1443
  const restoreShelter = () => {
1444
+ if (shelterRestored)
1445
+ return;
1446
+ shelterRestored = true;
1440
1447
  if (shelteredDirs.length === 0)
1441
1448
  return;
1449
+ let restoreFailed = false;
1442
1450
  for (const dirName of shelteredDirs) {
1451
+ const src = join(shelterDir, dirName);
1452
+ // If the shelter source is missing the restore cannot proceed for this
1453
+ // entry. Distinguish "legitimately missing" (shelter dir removed by a
1454
+ // prior successful restore or never copied) from a surprising ENOENT
1455
+ // inside an otherwise-populated shelter.
1456
+ if (!existsSync(src)) {
1457
+ logWarning("worktree", `shelter source missing for ${dirName}; skipping restore (shelter already cleaned or entry never staged)`);
1458
+ continue;
1459
+ }
1443
1460
  try {
1444
1461
  mkdirSync(milestonesDir, { recursive: true });
1445
- cpSync(join(shelterDir, dirName), join(milestonesDir, dirName), { recursive: true, force: true });
1462
+ cpSync(src, join(milestonesDir, dirName), { recursive: true, force: true });
1446
1463
  }
1447
1464
  catch (err) { /* best-effort */
1448
- logError("worktree", `shelter restore failed: ${err instanceof Error ? err.message : String(err)}`);
1465
+ restoreFailed = true;
1466
+ logError("worktree", `shelter restore failed (${dirName}): ${err instanceof Error ? err.message : String(err)}`);
1449
1467
  }
1450
1468
  }
1451
- try {
1452
- rmSync(shelterDir, { recursive: true, force: true });
1469
+ // Preserve the shelter if any per-entry restore failed — it is the only
1470
+ // surviving copy of the queued milestone dirs (sources were deleted during
1471
+ // shelter). Deleting it here would permanently lose those files (#2505).
1472
+ if (restoreFailed) {
1473
+ logWarning("worktree", `shelter retained at ${shelterDir} — manual recovery required for unrestored entries`);
1474
+ return;
1453
1475
  }
1454
- catch (err) { /* best-effort */
1455
- logWarning("worktree", `shelter cleanup failed: ${err instanceof Error ? err.message : String(err)}`);
1476
+ if (existsSync(shelterDir)) {
1477
+ try {
1478
+ rmSync(shelterDir, { recursive: true, force: true });
1479
+ }
1480
+ catch (err) { /* best-effort */
1481
+ logWarning("worktree", `shelter cleanup failed: ${err instanceof Error ? err.message : String(err)}`);
1482
+ }
1456
1483
  }
1457
1484
  };
1458
1485
  try {
@@ -1491,6 +1518,21 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1491
1518
  // entries (e.g. a gitignored `.gsd` symlink under ADR-002) (#4573).
1492
1519
  // Queued CONTEXT files under `.gsd/milestones/*` are already sheltered
1493
1520
  // in step 7 above, so they won't be swept into the stash.
1521
+ // On Windows, SQLite holds mandatory file locks on the gsd.db WAL/SHM
1522
+ // sidecars while the connection is open. `git stash --include-untracked`
1523
+ // walks those files and fails with EBUSY (#4704). Close the DB before
1524
+ // stashing so Windows releases the handles; reopen after. No-op on
1525
+ // POSIX, where advisory locks don't block git.
1526
+ const needsDbCycle = process.platform === "win32" && isDbAvailable();
1527
+ const dbPathToReopen = needsDbCycle ? getDbPath() : null;
1528
+ if (needsDbCycle) {
1529
+ try {
1530
+ closeDatabase();
1531
+ }
1532
+ catch (err) {
1533
+ logWarning("worktree", `pre-stash db close failed: ${err instanceof Error ? err.message : String(err)}`);
1534
+ }
1535
+ }
1494
1536
  let stashed = false;
1495
1537
  try {
1496
1538
  const status = execFileSync("git", ["status", "--porcelain"], {
@@ -1508,6 +1550,14 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1508
1550
  // report the dirty tree if it fails.
1509
1551
  logWarning("worktree", `git stash failed: ${err instanceof Error ? err.message : String(err)}`);
1510
1552
  }
1553
+ if (needsDbCycle && dbPathToReopen) {
1554
+ try {
1555
+ openDatabase(dbPathToReopen);
1556
+ }
1557
+ catch (err) {
1558
+ logWarning("worktree", `post-stash db reopen failed: ${err instanceof Error ? err.message : String(err)}`);
1559
+ }
1560
+ }
1511
1561
  // 7b. Clean up stale merge state before attempting squash merge (#2912).
1512
1562
  // A leftover MERGE_HEAD (from a previous failed merge, libgit2 native path,
1513
1563
  // or interrupted operation) causes `git merge --squash` to refuse with
@@ -51,6 +51,7 @@ import { pruneQueueOrder } from "./queue-order.js";
51
51
  import { startCommandPolling as _startCommandPolling, isRemoteConfigured } from "../remote-questions/manager.js";
52
52
  import { debugLog, isDebugEnabled, writeDebugSummary } from "./debug-logger.js";
53
53
  import { reconcileMergeState, } from "./auto-recovery.js";
54
+ import { classifyMilestoneSummaryContent } from "./milestone-summary-classifier.js";
54
55
  import { resolveDispatch, DISPATCH_RULES } from "./auto-dispatch.js";
55
56
  import { getErrorMessage } from "./error-utils.js";
56
57
  import { recoverFailedMigration } from "./migrate-external.js";
@@ -60,7 +61,14 @@ import { updateProgressWidget as _updateProgressWidget, updateSliceProgressCache
60
61
  import { registerSigtermHandler as _registerSigtermHandler, deregisterSigtermHandler as _deregisterSigtermHandler, } from "./auto-supervisor.js";
61
62
  import { isDbAvailable, getMilestone } from "./gsd-db.js";
62
63
  import { countPendingCaptures } from "./captures.js";
63
- import { clearCmuxSidebar, logCmuxEvent, syncCmuxSidebar } from "../cmux/index.js";
64
+ import { CMUX_CHANNELS } from "../shared/cmux-events.js";
65
+ function makeCmuxEmitters(pi) {
66
+ return {
67
+ syncCmuxSidebar: (preferences, state) => pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "sync", preferences, state }),
68
+ logCmuxEvent: (preferences, message, level) => pi.events.emit(CMUX_CHANNELS.LOG, { preferences, message, level: level ?? "info" }),
69
+ clearCmuxSidebar: (preferences) => pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "clear", preferences }),
70
+ };
71
+ }
64
72
  // ── Extracted modules ──────────────────────────────────────────────────────
65
73
  import { startUnitSupervision } from "./auto-timers.js";
66
74
  import { runPostUnitVerification } from "./auto-verification.js";
@@ -267,6 +275,10 @@ export function getAutoDashboardData() {
267
275
  export function isAutoActive() {
268
276
  return s.active;
269
277
  }
278
+ /** Test-only seam for validating auto-mode guards (#4704). Do not use in production code. */
279
+ export function _setAutoActiveForTest(active) {
280
+ s.active = active;
281
+ }
270
282
  export function isAutoPaused() {
271
283
  return s.paused;
272
284
  }
@@ -446,7 +458,6 @@ function handleLostSessionLock(ctx, lockStatus) {
446
458
  restoreProjectRootEnv();
447
459
  restoreMilestoneLockEnv();
448
460
  deregisterSigtermHandler();
449
- clearCmuxSidebar(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences);
450
461
  const base = lockBase();
451
462
  const lockFilePath = base ? join(gsdRoot(base), "auto.lock") : "unknown";
452
463
  const recoverySuggestion = "\nTo recover, run: gsd doctor --fix";
@@ -517,6 +528,40 @@ export async function stopAuto(ctx, pi, reason) {
517
528
  return;
518
529
  const loadedPreferences = loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences;
519
530
  const reasonSuffix = reason ? ` — ${reason}` : "";
531
+ // #4764 — telemetry: record the exit reason and whether the current milestone
532
+ // was merged before we entered stopAuto. This is the producer-side signal for
533
+ // the #4761 orphan class: milestoneMerged=false + currentMilestoneId present
534
+ // is exactly the pattern that strands work.
535
+ try {
536
+ const { emitAutoExit } = await import("./worktree-telemetry.js");
537
+ // Normalize the free-form reason to a closed set so the telemetry
538
+ // aggregator buckets stably. Raw detail is preserved in the phases.ts
539
+ // notification and the notify'd error string.
540
+ const rawReason = reason ?? "stop";
541
+ const normalizedReason = rawReason.startsWith("Blocked:")
542
+ ? "blocked"
543
+ : rawReason.startsWith("Merge conflict")
544
+ ? "merge-conflict"
545
+ : rawReason.startsWith("Merge error") || rawReason.startsWith("Merge failed")
546
+ ? "merge-failed"
547
+ : rawReason.startsWith("slice-merge-conflict")
548
+ ? "slice-merge-conflict"
549
+ : rawReason === "All milestones complete"
550
+ ? "all-complete"
551
+ : rawReason === "No active milestone"
552
+ ? "no-active-milestone"
553
+ : rawReason === "stop" || rawReason === "pause"
554
+ ? rawReason
555
+ : "other";
556
+ emitAutoExit(s.originalBasePath || s.basePath, {
557
+ reason: normalizedReason,
558
+ milestoneId: s.currentMilestoneId ?? undefined,
559
+ milestoneMerged: s.milestoneMergedInPhases === true,
560
+ });
561
+ }
562
+ catch (err) {
563
+ logWarning("engine", `auto-exit telemetry failed: ${err instanceof Error ? err.message : String(err)}`);
564
+ }
520
565
  try {
521
566
  // ── Step 1: Timers and locks ──
522
567
  try {
@@ -674,8 +719,12 @@ export async function stopAuto(ctx, pi, reason) {
674
719
  }
675
720
  // ── Step 9: Cmux sidebar / event log ──
676
721
  try {
677
- clearCmuxSidebar(loadedPreferences);
678
- logCmuxEvent(loadedPreferences, `Auto-mode stopped${reasonSuffix || ""}.`, reason?.startsWith("Blocked:") ? "warning" : "info");
722
+ pi?.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "clear", preferences: loadedPreferences });
723
+ pi?.events.emit(CMUX_CHANNELS.LOG, {
724
+ preferences: loadedPreferences,
725
+ message: `Auto-mode stopped${reasonSuffix || ""}.`,
726
+ level: reason?.startsWith("Blocked:") ? "warning" : "info",
727
+ });
679
728
  }
680
729
  catch (e) {
681
730
  debugLog("stop-cleanup-cmux", { error: e instanceof Error ? e.message : String(e) });
@@ -892,11 +941,12 @@ function buildResolver() {
892
941
  * Build the LoopDeps object from auto.ts private scope.
893
942
  * This bundles all private functions that autoLoop needs without exporting them.
894
943
  */
895
- function buildLoopDeps() {
944
+ function buildLoopDeps(pi) {
896
945
  // Initialize the unified rule registry with converted dispatch rules.
897
946
  // Must happen before LoopDeps is assembled so facade functions
898
947
  // (resolveDispatch, runPreDispatchHooks, etc.) delegate to the registry.
899
948
  initRegistry(convertDispatchRules(DISPATCH_RULES));
949
+ const cmux = makeCmuxEmitters(pi);
900
950
  return {
901
951
  lockBase,
902
952
  buildSnapshotOpts,
@@ -904,8 +954,11 @@ function buildLoopDeps() {
904
954
  pauseAuto,
905
955
  clearUnitTimeout,
906
956
  updateProgressWidget,
907
- syncCmuxSidebar,
908
- logCmuxEvent,
957
+ ...cmux,
958
+ handleLostSessionLock: (ctx, lockStatus) => {
959
+ cmux.clearCmuxSidebar(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences);
960
+ handleLostSessionLock(ctx, lockStatus);
961
+ },
909
962
  // State and cache
910
963
  invalidateAllCaches,
911
964
  deriveState,
@@ -920,7 +973,6 @@ function buildLoopDeps() {
920
973
  // Session lock
921
974
  validateSessionLock: getSessionLockStatus,
922
975
  updateSessionLock,
923
- handleLostSessionLock,
924
976
  // Milestone transition
925
977
  sendDesktopNotification,
926
978
  setActiveMilestoneId,
@@ -1067,7 +1119,16 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1067
1119
  // Validate the milestone still exists and isn't already complete (#1664).
1068
1120
  const mDir = resolveMilestonePath(base, meta.milestoneId);
1069
1121
  const summaryFile = resolveMilestoneFile(base, meta.milestoneId, "SUMMARY");
1070
- if (!mDir || summaryFile) {
1122
+ let summaryIsTerminal = false;
1123
+ if (summaryFile) {
1124
+ try {
1125
+ summaryIsTerminal = classifyMilestoneSummaryContent(readFileSync(summaryFile, "utf-8")) !== "failure";
1126
+ }
1127
+ catch {
1128
+ summaryIsTerminal = false;
1129
+ }
1130
+ }
1131
+ if (!mDir || summaryIsTerminal) {
1071
1132
  try {
1072
1133
  unlinkSync(pausedPath);
1073
1134
  }
@@ -1236,7 +1297,7 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1236
1297
  await openProjectDbIfPresent(s.basePath);
1237
1298
  try {
1238
1299
  await rebuildState(s.basePath);
1239
- syncCmuxSidebar(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, await deriveState(s.basePath));
1300
+ pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "sync", preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, state: await deriveState(s.basePath) });
1240
1301
  }
1241
1302
  catch (e) {
1242
1303
  debugLog("resume-rebuild-state-failed", {
@@ -1266,14 +1327,14 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1266
1327
  }
1267
1328
  updateSessionLock(lockBase(), "resuming", s.currentMilestoneId ?? "unknown");
1268
1329
  writeLock(lockBase(), "resuming", s.currentMilestoneId ?? "unknown");
1269
- logCmuxEvent(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", "progress");
1330
+ pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", level: "progress" });
1270
1331
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1271
1332
  startAutoCommandPolling(s.basePath);
1272
1333
  await runAutoLoopWithUok({
1273
1334
  ctx,
1274
1335
  pi,
1275
1336
  s,
1276
- deps: buildLoopDeps(),
1337
+ deps: buildLoopDeps(pi),
1277
1338
  runKernelLoop: runUokKernelLoop,
1278
1339
  runLegacyLoop: runLegacyAutoLoop,
1279
1340
  });
@@ -1292,20 +1353,20 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1292
1353
  return;
1293
1354
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1294
1355
  try {
1295
- syncCmuxSidebar(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, await deriveState(s.basePath));
1356
+ pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "sync", preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, state: await deriveState(s.basePath) });
1296
1357
  }
1297
1358
  catch (err) {
1298
1359
  // Best-effort only — sidebar sync must never block auto-mode startup
1299
1360
  logWarning("engine", `cmux sync failed: ${err instanceof Error ? err.message : String(err)}`, { file: "auto.ts" });
1300
1361
  }
1301
- logCmuxEvent(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, requestedStepMode ? "Step-mode started." : "Auto-mode started.", "progress");
1362
+ pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: requestedStepMode ? "Step-mode started." : "Auto-mode started.", level: "progress" });
1302
1363
  startAutoCommandPolling(s.basePath);
1303
1364
  // Dispatch the first unit
1304
1365
  await runAutoLoopWithUok({
1305
1366
  ctx,
1306
1367
  pi,
1307
1368
  s,
1308
- deps: buildLoopDeps(),
1369
+ deps: buildLoopDeps(pi),
1309
1370
  runKernelLoop: runUokKernelLoop,
1310
1371
  runLegacyLoop: runLegacyAutoLoop,
1311
1372
  });
@@ -1,5 +1,6 @@
1
1
  import { logWarning } from "../workflow-logger.js";
2
2
  import { checkAutoStartAfterDiscuss, maybeHandleReadyPhraseWithoutFiles, maybeHandleEmptyIntentTurn, resetEmptyTurnCounter, } from "../guided-flow.js";
3
+ import { clearPathCache } from "../paths.js";
3
4
  import { getAutoDashboardData, getAutoModeStartModel, isAutoActive, pauseAuto, setCurrentDispatchedModelId } from "../auto.js";
4
5
  import { getNextFallbackModel, resolveModelWithFallbacksForUnit } from "../preferences.js";
5
6
  import { pauseAutoForProviderError } from "../provider-error-pause.js";
@@ -49,6 +50,15 @@ async function pauseTransientWithBackoff(cls, pi, ctx, errorDetail, isRateLimit)
49
50
  });
50
51
  }
51
52
  export async function handleAgentEnd(pi, event, ctx) {
53
+ // #4648 — Invalidate the directory-listing cache before any artifact-existence
54
+ // checks. The LLM may have written milestone files (CONTEXT.md, ROADMAP.md,
55
+ // PROJECT.md, REQUIREMENTS.md) via tool calls during the turn that just
56
+ // ended. `paths.ts` caches readdir() results without a TTL, so without this
57
+ // flush, `resolveMilestoneFile` returns the pre-write listing and the guards
58
+ // below (`checkAutoStartAfterDiscuss` and `maybeHandleReadyPhraseWithoutFiles`)
59
+ // falsely report files as missing — producing a spurious "ready signal
60
+ // rejected" loop even though the files are on disk.
61
+ clearPathCache();
52
62
  if (checkAutoStartAfterDiscuss()) {
53
63
  clearDiscussionFlowState();
54
64
  return;
@@ -3,6 +3,8 @@ import { resetTransientRetryState } from "./agent-end-recovery.js";
3
3
  import { resetSessionTimeoutState } from "../auto/phases.js";
4
4
  const defaultDeps = {
5
5
  getSnapshot: () => getAutoDashboardData(),
6
+ resetTransientRetryState,
7
+ resetSessionTimeoutState,
6
8
  startAuto,
7
9
  };
8
10
  export async function resumeAutoAfterProviderDelay(pi, ctx, deps = defaultDeps) {
@@ -18,8 +20,8 @@ export async function resumeAutoAfterProviderDelay(pi, ctx, deps = defaultDeps)
18
20
  // Reset retry counters before restarting — without this, counters
19
21
  // accumulate across pause/resume cycles and permanently lock out
20
22
  // auto-resume after their respective MAX thresholds.
21
- resetTransientRetryState();
22
- resetSessionTimeoutState();
23
+ deps.resetTransientRetryState();
24
+ deps.resetSessionTimeoutState();
23
25
  await deps.startAuto(ctx, pi, snapshot.basePath, false, { step: snapshot.stepMode });
24
26
  return "resumed";
25
27
  }
@@ -12,6 +12,13 @@ import { registerHooks } from "./register-hooks.js";
12
12
  import { registerShortcuts } from "./register-shortcuts.js";
13
13
  import { writeCrashLog } from "./crash-log.js";
14
14
  import { logWarning } from "../workflow-logger.js";
15
+ // Static import so cmux event listeners are registered synchronously during
16
+ // extension bootstrap. Prior implementation used `void import().then()` which
17
+ // queued listener registration as a microtask — any CMUX_CHANNELS emit fired
18
+ // in the same event loop turn as registration (e.g. from a provider-error
19
+ // session hook calling startAuto) would be silently dropped because Node's
20
+ // EventEmitter does not buffer events for late subscribers.
21
+ import { initCmuxEventListeners } from "../../cmux/index.js";
15
22
  export { writeCrashLog } from "./crash-log.js";
16
23
  export function handleRecoverableExtensionProcessError(err) {
17
24
  if (err.code === "EPIPE") {
@@ -89,6 +96,10 @@ export function registerGsdExtension(pi) {
89
96
  ["memory-tools", () => registerMemoryTools(pi)],
90
97
  ["exec-tools", () => registerExecTools(pi)],
91
98
  ["shortcuts", () => registerShortcuts(pi)],
99
+ // cmux is a library (no pi), so gsd sets up the event listeners on its
100
+ // behalf using the shared event channel contract. Registration is
101
+ // synchronous — see the import comment above for the rationale.
102
+ ["cmux-events", () => initCmuxEventListeners(pi.events)],
92
103
  ["hooks", () => registerHooks(pi, ecosystemHandlers)],
93
104
  ["ecosystem", () => {
94
105
  void loadEcosystemExtensions(pi, ecosystemHandlers).catch((err) => {