gsd-pi 2.79.0 → 2.80.0-dev.4ea7d80e7

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 (805) hide show
  1. package/README.md +94 -47
  2. package/dist/loader.js +0 -0
  3. package/dist/resources/.managed-resources-content-hash +1 -1
  4. package/dist/resources/extensions/github-sync/templates.js +90 -74
  5. package/dist/resources/extensions/gsd/auto/contracts.js +1 -0
  6. package/dist/resources/extensions/gsd/auto/custom-verify-retry-store.js +53 -0
  7. package/dist/resources/extensions/gsd/auto/loop.js +365 -522
  8. package/dist/resources/extensions/gsd/auto/orchestrator.js +146 -0
  9. package/dist/resources/extensions/gsd/auto/phases.js +61 -7
  10. package/dist/resources/extensions/gsd/auto/run-unit.js +19 -15
  11. package/dist/resources/extensions/gsd/auto/session.js +8 -0
  12. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.js +12 -0
  13. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-iteration.js +24 -0
  14. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.js +33 -0
  15. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.js +26 -0
  16. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-retry.js +49 -0
  17. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.js +25 -0
  18. package/dist/resources/extensions/gsd/auto/workflow-dispatch-claim.js +48 -0
  19. package/dist/resources/extensions/gsd/auto/workflow-dispatch-ledger.js +26 -0
  20. package/dist/resources/extensions/gsd/auto/workflow-iteration-completion.js +10 -0
  21. package/dist/resources/extensions/gsd/auto/workflow-journal-reporter.js +16 -0
  22. package/dist/resources/extensions/gsd/auto/workflow-kernel.js +263 -0
  23. package/dist/resources/extensions/gsd/auto/workflow-memory-pressure.js +36 -0
  24. package/dist/resources/extensions/gsd/auto/workflow-phase-reporter.js +9 -0
  25. package/dist/resources/extensions/gsd/auto/workflow-session-lock.js +35 -0
  26. package/dist/resources/extensions/gsd/auto/workflow-sidecar-iteration.js +24 -0
  27. package/dist/resources/extensions/gsd/auto/workflow-sidecar-queue.js +26 -0
  28. package/dist/resources/extensions/gsd/auto/workflow-turn-reporter.js +36 -0
  29. package/dist/resources/extensions/gsd/auto/workflow-unit-dispatch.js +44 -0
  30. package/dist/resources/extensions/gsd/auto/workflow-worker-heartbeat.js +15 -0
  31. package/dist/resources/extensions/gsd/auto-artifact-paths.js +2 -2
  32. package/dist/resources/extensions/gsd/auto-dashboard.js +54 -15
  33. package/dist/resources/extensions/gsd/auto-dispatch.js +12 -0
  34. package/dist/resources/extensions/gsd/auto-prompts.js +220 -32
  35. package/dist/resources/extensions/gsd/auto-recovery.js +216 -62
  36. package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -0
  37. package/dist/resources/extensions/gsd/auto-start.js +4 -4
  38. package/dist/resources/extensions/gsd/auto-verification.js +2 -11
  39. package/dist/resources/extensions/gsd/auto-worktree.js +87 -38
  40. package/dist/resources/extensions/gsd/auto.js +168 -3
  41. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +24 -2
  42. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +10 -0
  43. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -2
  44. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +63 -51
  45. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +137 -9
  46. package/dist/resources/extensions/gsd/commands/context.js +1 -1
  47. package/dist/resources/extensions/gsd/commands-extract-learnings.js +17 -12
  48. package/dist/resources/extensions/gsd/commands-ship.js +23 -46
  49. package/dist/resources/extensions/gsd/commands-workflow-templates.js +12 -7
  50. package/dist/resources/extensions/gsd/component-loader.js +5 -11
  51. package/dist/resources/extensions/gsd/custom-workflow-engine.js +25 -1
  52. package/dist/resources/extensions/gsd/db-adapter.js +47 -0
  53. package/dist/resources/extensions/gsd/db-base-schema.js +351 -0
  54. package/dist/resources/extensions/gsd/db-connection-cache.js +31 -0
  55. package/dist/resources/extensions/gsd/db-coordination-schema.js +104 -0
  56. package/dist/resources/extensions/gsd/db-decision-requirement-rows.js +71 -0
  57. package/dist/resources/extensions/gsd/db-gate-rows.js +16 -0
  58. package/dist/resources/extensions/gsd/db-lightweight-query-rows.js +29 -0
  59. package/dist/resources/extensions/gsd/db-memory-fts-schema.js +56 -0
  60. package/dist/resources/extensions/gsd/db-migration-backup.js +22 -0
  61. package/dist/resources/extensions/gsd/db-migration-steps.js +410 -0
  62. package/dist/resources/extensions/gsd/db-milestone-artifact-rows.js +35 -0
  63. package/dist/resources/extensions/gsd/db-open-state.js +32 -0
  64. package/dist/resources/extensions/gsd/db-provider.js +108 -0
  65. package/dist/resources/extensions/gsd/db-runtime-kv-schema.js +27 -0
  66. package/dist/resources/extensions/gsd/db-schema-metadata.js +23 -0
  67. package/dist/resources/extensions/gsd/db-task-slice-rows.js +86 -0
  68. package/dist/resources/extensions/gsd/db-transaction.js +63 -0
  69. package/dist/resources/extensions/gsd/db-verification-evidence-rows.js +3 -0
  70. package/dist/resources/extensions/gsd/db-verification-evidence-schema.js +19 -0
  71. package/dist/resources/extensions/gsd/escalation.js +2 -0
  72. package/dist/resources/extensions/gsd/graph.js +9 -3
  73. package/dist/resources/extensions/gsd/gsd-db.js +316 -1520
  74. package/dist/resources/extensions/gsd/guided-flow.js +42 -2
  75. package/dist/resources/extensions/gsd/legacy-telemetry.js +70 -0
  76. package/dist/resources/extensions/gsd/markdown-renderer.js +2 -0
  77. package/dist/resources/extensions/gsd/model-router.js +9 -6
  78. package/dist/resources/extensions/gsd/notification-widget.js +21 -3
  79. package/dist/resources/extensions/gsd/paths.js +5 -1
  80. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -6
  81. package/dist/resources/extensions/gsd/pr-evidence.js +117 -0
  82. package/dist/resources/extensions/gsd/pre-execution-checks.js +2 -0
  83. package/dist/resources/extensions/gsd/preferences-types.js +20 -2
  84. package/dist/resources/extensions/gsd/preferences-validation.js +3 -3
  85. package/dist/resources/extensions/gsd/process-task-path.js +61 -0
  86. package/dist/resources/extensions/gsd/prompt-loader.js +9 -5
  87. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  88. package/dist/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  89. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  90. package/dist/resources/extensions/gsd/prompts/discuss.md +81 -181
  91. package/dist/resources/extensions/gsd/prompts/execute-task.md +40 -67
  92. package/dist/resources/extensions/gsd/prompts/forensics.md +41 -84
  93. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  94. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  95. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  96. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  97. package/dist/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  98. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  99. package/dist/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  100. package/dist/resources/extensions/gsd/prompts/queue.md +46 -53
  101. package/dist/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  102. package/dist/resources/extensions/gsd/prompts/research-slice.md +23 -23
  103. package/dist/resources/extensions/gsd/prompts/rethink.md +10 -10
  104. package/dist/resources/extensions/gsd/prompts/system.md +65 -107
  105. package/dist/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  106. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  107. package/dist/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  108. package/dist/resources/extensions/gsd/state.js +4 -0
  109. package/dist/resources/extensions/gsd/tools/complete-milestone.js +14 -9
  110. package/dist/resources/extensions/gsd/tools/complete-task.js +2 -0
  111. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +88 -3
  112. package/dist/resources/extensions/gsd/unit-context-composer.js +32 -0
  113. package/dist/resources/extensions/gsd/unit-context-manifest.js +21 -0
  114. package/dist/resources/extensions/gsd/uok/audit.js +23 -9
  115. package/dist/resources/extensions/gsd/uok/contracts.js +69 -1
  116. package/dist/resources/extensions/gsd/uok/dispatch-envelope.js +3 -0
  117. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  118. package/dist/resources/extensions/gsd/uok/loop-adapter.js +48 -33
  119. package/dist/resources/extensions/gsd/uok/plan-v2.js +2 -0
  120. package/dist/resources/extensions/gsd/uok/timeline.js +125 -0
  121. package/dist/resources/extensions/gsd/workflow-logger.js +13 -13
  122. package/dist/resources/extensions/gsd/workflow-manifest.js +2 -0
  123. package/dist/resources/extensions/gsd/workflow-projections.js +2 -0
  124. package/dist/resources/extensions/gsd/workflow-templates.js +9 -0
  125. package/dist/resources/extensions/gsd/working-output-messages.js +64 -0
  126. package/dist/resources/extensions/shared/gsd-phase-state.js +45 -3
  127. package/dist/resources/extensions/shared/interview-ui.js +15 -4
  128. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  129. package/dist/web/standalone/.next/BUILD_ID +1 -1
  130. package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
  131. package/dist/web/standalone/.next/build-manifest.json +4 -4
  132. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  133. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  134. package/dist/web/standalone/.next/required-server-files.json +4 -4
  135. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  136. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  137. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  138. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  139. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  140. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  141. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  142. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  143. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  144. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  145. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  146. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  147. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  148. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  149. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  150. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  151. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  152. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  153. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  154. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  155. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  157. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  160. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  163. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  165. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  166. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  171. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  174. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  179. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  181. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  183. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  184. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  186. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  187. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  188. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  189. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  190. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  192. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  193. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  195. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  196. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  197. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  198. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  199. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  200. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  201. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  202. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  203. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  204. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  205. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  206. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  207. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  208. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  209. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  210. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  211. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  212. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  213. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  214. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  215. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  216. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  217. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  218. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  219. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  220. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  221. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  222. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  223. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  224. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  225. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  226. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  227. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  228. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  229. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  230. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  232. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  233. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  234. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  235. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  236. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  238. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  239. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  240. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  241. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  242. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  243. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  244. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  245. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  246. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  247. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  248. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  249. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  250. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  251. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  252. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  253. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  254. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  255. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  256. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  257. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  258. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
  259. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  260. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  261. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  263. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  264. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  265. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  266. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  267. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  268. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  269. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  270. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  271. package/dist/web/standalone/.next/server/app/index.html +1 -1
  272. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  273. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  274. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  275. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  276. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  277. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  278. package/dist/web/standalone/.next/server/app/page.js +2 -2
  279. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  280. package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
  281. package/dist/web/standalone/.next/server/chunks/167.js +2 -0
  282. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  283. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  284. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  285. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  286. package/dist/web/standalone/.next/server/middleware.js +2 -2
  287. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  288. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  289. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  290. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  291. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  292. package/dist/web/standalone/.next/static/chunks/{8336.6f6f30e410419aff.js → 8336.631939fb583761fa.js} +1 -1
  293. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  294. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  295. package/dist/web/standalone/.next/static/chunks/app/page-fab3ebb85b006001.js +1 -0
  296. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  297. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  298. package/dist/web/standalone/.next/static/chunks/{webpack-d82dbee6356c1733.js → webpack-0481f1221120a7c6.js} +1 -1
  299. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  300. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  301. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  302. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  303. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  304. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  305. package/dist/web/standalone/package.json +1 -0
  306. package/dist/web/standalone/server.js +1 -1
  307. package/package.json +18 -7
  308. package/packages/contracts/dist/index.d.ts +3 -0
  309. package/packages/contracts/dist/index.d.ts.map +1 -0
  310. package/packages/contracts/dist/index.js +5 -0
  311. package/packages/contracts/dist/index.js.map +1 -0
  312. package/packages/contracts/dist/rpc.d.ts +549 -0
  313. package/packages/contracts/dist/rpc.d.ts.map +1 -0
  314. package/packages/contracts/dist/rpc.js +53 -0
  315. package/packages/contracts/dist/rpc.js.map +1 -0
  316. package/packages/contracts/dist/rpc.test.d.ts +2 -0
  317. package/packages/contracts/dist/rpc.test.d.ts.map +1 -0
  318. package/packages/contracts/dist/rpc.test.js +47 -0
  319. package/packages/contracts/dist/rpc.test.js.map +1 -0
  320. package/packages/contracts/dist/workflow.d.ts +180 -0
  321. package/packages/contracts/dist/workflow.d.ts.map +1 -0
  322. package/packages/contracts/dist/workflow.js +201 -0
  323. package/packages/contracts/dist/workflow.js.map +1 -0
  324. package/packages/contracts/package.json +39 -0
  325. package/packages/contracts/src/index.ts +5 -0
  326. package/packages/contracts/src/rpc.test.ts +72 -0
  327. package/packages/contracts/src/rpc.ts +286 -0
  328. package/packages/contracts/src/workflow.ts +213 -0
  329. package/packages/contracts/tsconfig.json +25 -0
  330. package/packages/daemon/package.json +3 -2
  331. package/packages/daemon/src/event-bridge.test.ts +2 -1
  332. package/packages/daemon/src/event-bridge.ts +1 -1
  333. package/packages/daemon/src/event-formatter.test.ts +1 -2
  334. package/packages/daemon/src/event-formatter.ts +1 -2
  335. package/packages/daemon/src/session-manager.ts +2 -2
  336. package/packages/daemon/src/types.ts +3 -18
  337. package/packages/mcp-server/dist/server.d.ts +13 -0
  338. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  339. package/packages/mcp-server/dist/server.js +77 -0
  340. package/packages/mcp-server/dist/server.js.map +1 -1
  341. package/packages/mcp-server/dist/session-manager.js +1 -1
  342. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  343. package/packages/mcp-server/dist/types.d.ts +3 -11
  344. package/packages/mcp-server/dist/types.d.ts.map +1 -1
  345. package/packages/mcp-server/dist/types.js.map +1 -1
  346. package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
  347. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  348. package/packages/mcp-server/dist/workflow-tools.js +52 -37
  349. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  350. package/packages/mcp-server/package.json +3 -2
  351. package/packages/mcp-server/src/mcp-server.test.ts +138 -0
  352. package/packages/mcp-server/src/server.ts +99 -1
  353. package/packages/mcp-server/src/session-manager.ts +2 -2
  354. package/packages/mcp-server/src/types.ts +7 -18
  355. package/packages/mcp-server/src/workflow-tools.test.ts +129 -2
  356. package/packages/mcp-server/src/workflow-tools.ts +80 -37
  357. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  358. package/packages/native/package.json +1 -1
  359. package/packages/pi-agent-core/package.json +1 -1
  360. package/packages/pi-ai/dist/models/fake-model.d.ts +12 -0
  361. package/packages/pi-ai/dist/models/fake-model.d.ts.map +1 -0
  362. package/packages/pi-ai/dist/models/fake-model.js +27 -0
  363. package/packages/pi-ai/dist/models/fake-model.js.map +1 -0
  364. package/packages/pi-ai/dist/models/index.d.ts.map +1 -1
  365. package/packages/pi-ai/dist/models/index.js +8 -0
  366. package/packages/pi-ai/dist/models/index.js.map +1 -1
  367. package/packages/pi-ai/dist/providers/fake.d.ts +42 -0
  368. package/packages/pi-ai/dist/providers/fake.d.ts.map +1 -0
  369. package/packages/pi-ai/dist/providers/fake.js +319 -0
  370. package/packages/pi-ai/dist/providers/fake.js.map +1 -0
  371. package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  372. package/packages/pi-ai/dist/providers/register-builtins.js +24 -0
  373. package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
  374. package/packages/pi-ai/package.json +1 -1
  375. package/packages/pi-ai/src/models/fake-model.ts +30 -0
  376. package/packages/pi-ai/src/models/index.ts +9 -0
  377. package/packages/pi-ai/src/providers/fake.ts +376 -0
  378. package/packages/pi-ai/src/providers/register-builtins.ts +23 -0
  379. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  380. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +74 -0
  381. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  382. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -0
  383. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  384. package/packages/pi-coding-agent/dist/core/extensions/runner.js +14 -1
  385. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  386. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +97 -0
  387. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
  388. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  389. package/packages/pi-coding-agent/dist/core/model-registry.js +5 -0
  390. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  391. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +4 -0
  392. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  393. package/packages/pi-coding-agent/dist/core/settings-manager.js +8 -0
  394. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  395. package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  396. package/packages/pi-coding-agent/dist/core/slash-commands.js +1 -0
  397. package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  398. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.js +6 -4
  399. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.js.map +1 -1
  400. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +67 -14
  401. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  402. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts +26 -0
  403. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts.map +1 -0
  404. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js +112 -0
  405. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js.map +1 -0
  406. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts +2 -0
  407. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts.map +1 -0
  408. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js +51 -0
  409. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js.map +1 -0
  410. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  411. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  412. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
  413. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +10 -9
  414. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  415. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -0
  416. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  417. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +11 -0
  418. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  419. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +27 -6
  420. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -1
  421. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +16 -0
  422. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  423. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +112 -18
  424. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  425. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  426. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +60 -1
  427. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  428. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js +40 -1
  429. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js.map +1 -1
  430. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +1 -0
  431. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  432. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +1 -0
  433. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  434. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  435. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +12 -1
  436. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  437. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +54 -10
  438. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  439. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
  440. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +20 -0
  441. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  442. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts +2 -0
  443. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts.map +1 -0
  444. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js +79 -0
  445. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js.map +1 -0
  446. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  447. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  448. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +13 -0
  449. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  450. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -1
  451. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  452. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +18 -1
  453. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  454. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  455. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +36 -27
  456. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  457. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts +11 -0
  458. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts.map +1 -0
  459. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js +18 -0
  460. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js.map +1 -0
  461. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts +2 -0
  462. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts.map +1 -0
  463. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js +48 -0
  464. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js.map +1 -0
  465. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -512
  466. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  467. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js +3 -7
  468. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  469. package/packages/pi-coding-agent/package.json +2 -1
  470. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +87 -0
  471. package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +108 -0
  472. package/packages/pi-coding-agent/src/core/extensions/runner.ts +16 -1
  473. package/packages/pi-coding-agent/src/core/model-registry.ts +4 -0
  474. package/packages/pi-coding-agent/src/core/settings-manager.ts +12 -0
  475. package/packages/pi-coding-agent/src/core/slash-commands.ts +1 -0
  476. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.ts +7 -5
  477. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +100 -16
  478. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.test.ts +59 -0
  479. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.ts +160 -0
  480. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +1 -0
  481. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +10 -9
  482. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  483. package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +41 -9
  484. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +124 -18
  485. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.test.ts +43 -1
  486. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +75 -1
  487. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +1 -0
  488. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +1 -1
  489. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +75 -9
  490. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.test.ts +95 -0
  491. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +24 -1
  492. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +13 -0
  493. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +32 -2
  494. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +36 -27
  495. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.test.ts +65 -0
  496. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.ts +29 -0
  497. package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +3 -336
  498. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  499. package/packages/pi-tui/dist/__tests__/style.test.d.ts +2 -0
  500. package/packages/pi-tui/dist/__tests__/style.test.d.ts.map +1 -0
  501. package/packages/pi-tui/dist/__tests__/style.test.js +63 -0
  502. package/packages/pi-tui/dist/__tests__/style.test.js.map +1 -0
  503. package/packages/pi-tui/dist/__tests__/tui.test.js +24 -3
  504. package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
  505. package/packages/pi-tui/dist/index.d.ts +1 -0
  506. package/packages/pi-tui/dist/index.d.ts.map +1 -1
  507. package/packages/pi-tui/dist/index.js +2 -0
  508. package/packages/pi-tui/dist/index.js.map +1 -1
  509. package/packages/pi-tui/dist/style.d.ts +41 -0
  510. package/packages/pi-tui/dist/style.d.ts.map +1 -0
  511. package/packages/pi-tui/dist/style.js +158 -0
  512. package/packages/pi-tui/dist/style.js.map +1 -0
  513. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  514. package/packages/pi-tui/dist/tui.js +1 -0
  515. package/packages/pi-tui/dist/tui.js.map +1 -1
  516. package/packages/pi-tui/package.json +1 -1
  517. package/packages/pi-tui/src/__tests__/style.test.ts +76 -0
  518. package/packages/pi-tui/src/__tests__/tui.test.ts +29 -3
  519. package/packages/pi-tui/src/index.ts +9 -0
  520. package/packages/pi-tui/src/style.ts +225 -0
  521. package/packages/pi-tui/src/tui.ts +1 -0
  522. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  523. package/packages/rpc-client/README.md +3 -3
  524. package/packages/rpc-client/dist/index.d.ts +1 -1
  525. package/packages/rpc-client/dist/index.d.ts.map +1 -1
  526. package/packages/rpc-client/dist/index.js.map +1 -1
  527. package/packages/rpc-client/dist/rpc-client.d.ts +2 -6
  528. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -1
  529. package/packages/rpc-client/dist/rpc-client.js.map +1 -1
  530. package/packages/rpc-client/dist/rpc-types.d.ts +1 -565
  531. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -1
  532. package/packages/rpc-client/dist/rpc-types.js +3 -11
  533. package/packages/rpc-client/dist/rpc-types.js.map +1 -1
  534. package/packages/rpc-client/package.json +4 -1
  535. package/packages/rpc-client/src/index.ts +1 -1
  536. package/packages/rpc-client/src/rpc-client.ts +3 -6
  537. package/packages/rpc-client/src/rpc-types.ts +3 -398
  538. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  539. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  540. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  541. package/pkg/dist/modes/interactive/theme/theme-schema.js +13 -0
  542. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  543. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -1
  544. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  545. package/pkg/dist/modes/interactive/theme/theme.js +18 -1
  546. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  547. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  548. package/pkg/dist/modes/interactive/theme/themes.js +36 -27
  549. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  550. package/pkg/package.json +1 -1
  551. package/src/resources/extensions/github-sync/templates.ts +93 -88
  552. package/src/resources/extensions/github-sync/tests/inline-code.test.ts +66 -0
  553. package/src/resources/extensions/github-sync/tests/templates.test.ts +10 -2
  554. package/src/resources/extensions/gsd/auto/contracts.ts +87 -0
  555. package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +72 -0
  556. package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -3
  557. package/src/resources/extensions/gsd/auto/loop.ts +416 -596
  558. package/src/resources/extensions/gsd/auto/orchestrator.ts +161 -0
  559. package/src/resources/extensions/gsd/auto/phases.ts +88 -9
  560. package/src/resources/extensions/gsd/auto/run-unit.ts +24 -14
  561. package/src/resources/extensions/gsd/auto/session.ts +11 -0
  562. package/src/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.ts +28 -0
  563. package/src/resources/extensions/gsd/auto/workflow-custom-engine-iteration.ts +52 -0
  564. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.ts +58 -0
  565. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.ts +71 -0
  566. package/src/resources/extensions/gsd/auto/workflow-custom-engine-retry.ts +90 -0
  567. package/src/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.ts +50 -0
  568. package/src/resources/extensions/gsd/auto/workflow-dispatch-claim.ts +97 -0
  569. package/src/resources/extensions/gsd/auto/workflow-dispatch-ledger.ts +45 -0
  570. package/src/resources/extensions/gsd/auto/workflow-iteration-completion.ts +26 -0
  571. package/src/resources/extensions/gsd/auto/workflow-journal-reporter.ts +33 -0
  572. package/src/resources/extensions/gsd/auto/workflow-kernel.ts +520 -0
  573. package/src/resources/extensions/gsd/auto/workflow-memory-pressure.ts +58 -0
  574. package/src/resources/extensions/gsd/auto/workflow-phase-reporter.ts +22 -0
  575. package/src/resources/extensions/gsd/auto/workflow-session-lock.ts +68 -0
  576. package/src/resources/extensions/gsd/auto/workflow-sidecar-iteration.ts +46 -0
  577. package/src/resources/extensions/gsd/auto/workflow-sidecar-queue.ts +46 -0
  578. package/src/resources/extensions/gsd/auto/workflow-turn-reporter.ts +68 -0
  579. package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +89 -0
  580. package/src/resources/extensions/gsd/auto/workflow-worker-heartbeat.ts +38 -0
  581. package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
  582. package/src/resources/extensions/gsd/auto-dashboard.ts +61 -8
  583. package/src/resources/extensions/gsd/auto-dispatch.ts +18 -0
  584. package/src/resources/extensions/gsd/auto-prompts.ts +276 -31
  585. package/src/resources/extensions/gsd/auto-recovery.ts +211 -59
  586. package/src/resources/extensions/gsd/auto-runtime-state.ts +7 -0
  587. package/src/resources/extensions/gsd/auto-start.ts +9 -7
  588. package/src/resources/extensions/gsd/auto-verification.ts +5 -1
  589. package/src/resources/extensions/gsd/auto-worktree.ts +85 -36
  590. package/src/resources/extensions/gsd/auto.ts +179 -2
  591. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +30 -2
  592. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -0
  593. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
  594. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +79 -52
  595. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-shouldblock-basepath.test.ts +97 -0
  596. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +143 -5
  597. package/src/resources/extensions/gsd/commands/context.ts +1 -1
  598. package/src/resources/extensions/gsd/commands-extract-learnings.ts +17 -12
  599. package/src/resources/extensions/gsd/commands-ship.ts +24 -51
  600. package/src/resources/extensions/gsd/commands-workflow-templates.ts +13 -0
  601. package/src/resources/extensions/gsd/component-loader.ts +5 -11
  602. package/src/resources/extensions/gsd/custom-workflow-engine.ts +29 -0
  603. package/src/resources/extensions/gsd/db-adapter.ts +75 -0
  604. package/src/resources/extensions/gsd/db-base-schema.ts +383 -0
  605. package/src/resources/extensions/gsd/db-connection-cache.ts +45 -0
  606. package/src/resources/extensions/gsd/db-coordination-schema.ts +109 -0
  607. package/src/resources/extensions/gsd/db-decision-requirement-rows.ts +77 -0
  608. package/src/resources/extensions/gsd/db-gate-rows.ts +19 -0
  609. package/src/resources/extensions/gsd/db-lightweight-query-rows.ts +50 -0
  610. package/src/resources/extensions/gsd/db-memory-fts-schema.ts +66 -0
  611. package/src/resources/extensions/gsd/db-migration-backup.ts +34 -0
  612. package/src/resources/extensions/gsd/db-migration-steps.ts +451 -0
  613. package/src/resources/extensions/gsd/db-milestone-artifact-rows.ts +70 -0
  614. package/src/resources/extensions/gsd/db-open-state.ts +47 -0
  615. package/src/resources/extensions/gsd/db-provider.ts +148 -0
  616. package/src/resources/extensions/gsd/db-runtime-kv-schema.ts +30 -0
  617. package/src/resources/extensions/gsd/db-schema-metadata.ts +33 -0
  618. package/src/resources/extensions/gsd/db-task-slice-rows.ts +146 -0
  619. package/src/resources/extensions/gsd/db-transaction.ts +76 -0
  620. package/src/resources/extensions/gsd/db-verification-evidence-rows.ts +14 -0
  621. package/src/resources/extensions/gsd/db-verification-evidence-schema.ts +22 -0
  622. package/src/resources/extensions/gsd/escalation.ts +3 -1
  623. package/src/resources/extensions/gsd/graph.ts +12 -5
  624. package/src/resources/extensions/gsd/gsd-db.ts +379 -1660
  625. package/src/resources/extensions/gsd/guided-flow.ts +49 -2
  626. package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
  627. package/src/resources/extensions/gsd/legacy-telemetry.ts +99 -0
  628. package/src/resources/extensions/gsd/markdown-renderer.ts +4 -1
  629. package/src/resources/extensions/gsd/model-router.ts +10 -6
  630. package/src/resources/extensions/gsd/notification-widget.ts +25 -4
  631. package/src/resources/extensions/gsd/paths.ts +6 -1
  632. package/src/resources/extensions/gsd/post-execution-checks.ts +35 -7
  633. package/src/resources/extensions/gsd/pr-evidence.ts +182 -0
  634. package/src/resources/extensions/gsd/pre-execution-checks.ts +4 -1
  635. package/src/resources/extensions/gsd/preferences-types.ts +23 -4
  636. package/src/resources/extensions/gsd/preferences-validation.ts +3 -3
  637. package/src/resources/extensions/gsd/process-task-path.ts +81 -0
  638. package/src/resources/extensions/gsd/prompt-loader.ts +9 -5
  639. package/src/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  640. package/src/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  641. package/src/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  642. package/src/resources/extensions/gsd/prompts/discuss.md +81 -181
  643. package/src/resources/extensions/gsd/prompts/execute-task.md +40 -67
  644. package/src/resources/extensions/gsd/prompts/forensics.md +41 -84
  645. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  646. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  647. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  648. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  649. package/src/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  650. package/src/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  651. package/src/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  652. package/src/resources/extensions/gsd/prompts/queue.md +46 -53
  653. package/src/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  654. package/src/resources/extensions/gsd/prompts/research-slice.md +23 -23
  655. package/src/resources/extensions/gsd/prompts/rethink.md +10 -10
  656. package/src/resources/extensions/gsd/prompts/system.md +65 -107
  657. package/src/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  658. package/src/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  659. package/src/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  660. package/src/resources/extensions/gsd/state.ts +6 -3
  661. package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +38 -0
  662. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +98 -0
  663. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +117 -0
  664. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +353 -0
  665. package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +19 -0
  666. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +277 -1
  667. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +39 -0
  668. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +3 -0
  669. package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +2 -2
  670. package/src/resources/extensions/gsd/tests/check-auto-start-pending-gate.test.ts +203 -0
  671. package/src/resources/extensions/gsd/tests/check-auto-start-ready-guard.test.ts +148 -0
  672. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +2 -2
  673. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +9 -0
  674. package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +3 -2
  675. package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +47 -0
  676. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +19 -5
  677. package/src/resources/extensions/gsd/tests/component-loader.test.ts +2 -9
  678. package/src/resources/extensions/gsd/tests/current-directory-root-homedir-fallback.test.ts +63 -0
  679. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +144 -0
  680. package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +139 -0
  681. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +50 -0
  682. package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +3 -3
  683. package/src/resources/extensions/gsd/tests/db-adapter.test.ts +82 -0
  684. package/src/resources/extensions/gsd/tests/db-base-schema.test.ts +62 -0
  685. package/src/resources/extensions/gsd/tests/db-connection-cache.test.ts +60 -0
  686. package/src/resources/extensions/gsd/tests/db-coordination-schema.test.ts +39 -0
  687. package/src/resources/extensions/gsd/tests/db-decision-requirement-rows.test.ts +135 -0
  688. package/src/resources/extensions/gsd/tests/db-gate-rows.test.ts +53 -0
  689. package/src/resources/extensions/gsd/tests/db-lightweight-query-rows.test.ts +45 -0
  690. package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +86 -0
  691. package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +105 -0
  692. package/src/resources/extensions/gsd/tests/db-migration-steps.integration.test.ts +428 -0
  693. package/src/resources/extensions/gsd/tests/db-migration-steps.test.ts +159 -0
  694. package/src/resources/extensions/gsd/tests/db-milestone-artifact-rows.test.ts +53 -0
  695. package/src/resources/extensions/gsd/tests/db-open-state.test.ts +56 -0
  696. package/src/resources/extensions/gsd/tests/db-provider.test.ts +105 -0
  697. package/src/resources/extensions/gsd/tests/db-runtime-kv-schema.test.ts +37 -0
  698. package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +115 -0
  699. package/src/resources/extensions/gsd/tests/db-task-slice-rows.test.ts +128 -0
  700. package/src/resources/extensions/gsd/tests/db-transaction.test.ts +110 -0
  701. package/src/resources/extensions/gsd/tests/db-verification-evidence-schema.test.ts +76 -0
  702. package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +42 -0
  703. package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +63 -2
  704. package/src/resources/extensions/gsd/tests/discuss-headless-rendering.test.ts +37 -0
  705. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +109 -0
  706. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +59 -0
  707. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-basic.md +52 -0
  708. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-empty-optionals.md +42 -0
  709. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +55 -0
  710. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +60 -0
  711. package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +36 -0
  712. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +10 -0
  713. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +139 -0
  714. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +43 -0
  715. package/src/resources/extensions/gsd/tests/guided-discuss-project-prompt-rendering.test.ts +41 -0
  716. package/src/resources/extensions/gsd/tests/guided-discuss-requirements-prompt-rendering.test.ts +45 -0
  717. package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +14 -0
  718. package/src/resources/extensions/gsd/tests/has-pending-deep-stage.test.ts +33 -1
  719. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +79 -0
  720. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +37 -0
  721. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +5 -3
  722. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +134 -0
  723. package/src/resources/extensions/gsd/tests/legacy-component-format-telemetry.test.ts +62 -0
  724. package/src/resources/extensions/gsd/tests/legacy-telemetry.test.ts +144 -0
  725. package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +40 -16
  726. package/src/resources/extensions/gsd/tests/model-router.test.ts +33 -12
  727. package/src/resources/extensions/gsd/tests/notification-store.test.ts +8 -0
  728. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +40 -1
  729. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +8 -0
  730. package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +2 -0
  731. package/src/resources/extensions/gsd/tests/plan-milestone-rendering.test.ts +45 -0
  732. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +65 -16
  733. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +27 -0
  734. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +46 -0
  735. package/src/resources/extensions/gsd/tests/pr-evidence-equivalence.test.ts +102 -0
  736. package/src/resources/extensions/gsd/tests/pr-evidence-hardening.test.ts +165 -0
  737. package/src/resources/extensions/gsd/tests/pr-evidence.test.ts +79 -0
  738. package/src/resources/extensions/gsd/tests/pre-exec-gate-loop.test.ts +3 -0
  739. package/src/resources/extensions/gsd/tests/process-task-path.test.ts +51 -0
  740. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -1
  741. package/src/resources/extensions/gsd/tests/queue-prompt-rendering.test.ts +37 -0
  742. package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +85 -0
  743. package/src/resources/extensions/gsd/tests/run-uat-composer.test.ts +2 -0
  744. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +46 -2
  745. package/src/resources/extensions/gsd/tests/subagent-model-dispatch.test.ts +59 -0
  746. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +32 -9
  747. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +42 -4
  748. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +32 -0
  749. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +109 -1
  750. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +12 -0
  751. package/src/resources/extensions/gsd/tests/uok-loop-adapter-writer.test.ts +98 -0
  752. package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +1 -1
  753. package/src/resources/extensions/gsd/tests/workflow-custom-engine-dispatch-outcome.test.ts +55 -0
  754. package/src/resources/extensions/gsd/tests/workflow-custom-engine-iteration.test.ts +93 -0
  755. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile-outcome.test.ts +108 -0
  756. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile.test.ts +146 -0
  757. package/src/resources/extensions/gsd/tests/workflow-custom-engine-retry.test.ts +136 -0
  758. package/src/resources/extensions/gsd/tests/workflow-custom-engine-verify-outcome.test.ts +95 -0
  759. package/src/resources/extensions/gsd/tests/workflow-dispatch-claim.test.ts +158 -0
  760. package/src/resources/extensions/gsd/tests/workflow-dispatch-ledger.test.ts +82 -0
  761. package/src/resources/extensions/gsd/tests/workflow-iteration-completion.test.ts +44 -0
  762. package/src/resources/extensions/gsd/tests/workflow-journal-reporter.test.ts +49 -0
  763. package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +607 -0
  764. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +20 -4
  765. package/src/resources/extensions/gsd/tests/workflow-memory-pressure.test.ts +71 -0
  766. package/src/resources/extensions/gsd/tests/workflow-phase-reporter.test.ts +40 -0
  767. package/src/resources/extensions/gsd/tests/workflow-session-lock.test.ts +135 -0
  768. package/src/resources/extensions/gsd/tests/workflow-sidecar-iteration.test.ts +110 -0
  769. package/src/resources/extensions/gsd/tests/workflow-sidecar-queue.test.ts +116 -0
  770. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +21 -0
  771. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +164 -3
  772. package/src/resources/extensions/gsd/tests/workflow-turn-reporter.test.ts +87 -0
  773. package/src/resources/extensions/gsd/tests/workflow-unit-dispatch.test.ts +160 -0
  774. package/src/resources/extensions/gsd/tests/workflow-worker-heartbeat.test.ts +123 -0
  775. package/src/resources/extensions/gsd/tests/working-output-messages.test.ts +93 -0
  776. package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +3 -0
  777. package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +17 -33
  778. package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +179 -0
  779. package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
  780. package/src/resources/extensions/gsd/tools/complete-task.ts +4 -1
  781. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +90 -2
  782. package/src/resources/extensions/gsd/unit-context-composer.ts +49 -0
  783. package/src/resources/extensions/gsd/unit-context-manifest.ts +34 -0
  784. package/src/resources/extensions/gsd/uok/audit.ts +25 -9
  785. package/src/resources/extensions/gsd/uok/contracts.ts +105 -0
  786. package/src/resources/extensions/gsd/uok/dispatch-envelope.ts +4 -0
  787. package/src/resources/extensions/gsd/uok/kernel.ts +10 -3
  788. package/src/resources/extensions/gsd/uok/loop-adapter.ts +60 -45
  789. package/src/resources/extensions/gsd/uok/plan-v2.ts +5 -1
  790. package/src/resources/extensions/gsd/uok/timeline.ts +158 -0
  791. package/src/resources/extensions/gsd/workflow-logger.ts +13 -13
  792. package/src/resources/extensions/gsd/workflow-manifest.ts +6 -15
  793. package/src/resources/extensions/gsd/workflow-projections.ts +5 -1
  794. package/src/resources/extensions/gsd/workflow-templates.ts +11 -0
  795. package/src/resources/extensions/gsd/working-output-messages.ts +120 -0
  796. package/src/resources/extensions/shared/gsd-phase-state.ts +56 -3
  797. package/src/resources/extensions/shared/interview-ui.ts +18 -5
  798. package/src/resources/extensions/shared/tests/gsd-phase-state.test.ts +43 -1
  799. package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +41 -0
  800. package/dist/web/standalone/.next/server/chunks/6336.js +0 -1
  801. package/dist/web/standalone/.next/static/chunks/app/page-ff639266d978f2a0.js +0 -1
  802. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  803. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  804. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → vIAZSyxIuvqNkCvXt9oqb}/_buildManifest.js +0 -0
  805. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → vIAZSyxIuvqNkCvXt9oqb}/_ssgManifest.js +0 -0
@@ -147,6 +147,7 @@ import {
147
147
  MergeConflictError,
148
148
  parseSliceBranch,
149
149
  setActiveMilestoneId,
150
+ resolveProjectRoot,
150
151
  } from "./worktree.js";
151
152
  import { GitServiceImpl } from "./git-service.js";
152
153
  import { getPriorSliceCompletionBlocker } from "./dispatch-guard.js";
@@ -231,6 +232,8 @@ import type { ErrorContext } from "./auto/types.js";
231
232
  import { runAutoLoopWithUok } from "./uok/kernel.js";
232
233
  import { resolveUokFlags } from "./uok/flags.js";
233
234
  import { validateDirectory } from "./validate-directory.js";
235
+ import { createAutoOrchestrator } from "./auto/orchestrator.js";
236
+ import type { AutoOrchestrationModule, AutoOrchestratorDeps } from "./auto/contracts.js";
234
237
  // Slice-level parallelism (#2340)
235
238
  import { getEligibleSlices } from "./slice-parallel-eligibility.js";
236
239
  import { startSliceParallel } from "./slice-parallel-orchestrator.js";
@@ -417,6 +420,17 @@ export function _synthesizePausedSessionRecoveryForTest(
417
420
  return synthesizePausedSessionRecovery(basePath, unitType, unitId, sessionFile);
418
421
  }
419
422
 
423
+ const DETACHED_AUTO_KEEPALIVE_INTERVAL_MS = 30_000;
424
+
425
+ function withDetachedAutoKeepalive<T>(run: Promise<T>): Promise<T> {
426
+ const keepAlive = setInterval(() => {}, DETACHED_AUTO_KEEPALIVE_INTERVAL_MS);
427
+ return run.finally(() => {
428
+ clearInterval(keepAlive);
429
+ });
430
+ }
431
+
432
+ export const _withDetachedAutoKeepaliveForTest = withDetachedAutoKeepalive;
433
+
420
434
  export function startAutoDetached(
421
435
  ctx: ExtensionCommandContext,
422
436
  pi: ExtensionAPI,
@@ -428,7 +442,7 @@ export function startAutoDetached(
428
442
  milestoneLock?: string | null;
429
443
  },
430
444
  ): void {
431
- void startAuto(ctx, pi, base, verboseMode, options).catch((err) => {
445
+ void withDetachedAutoKeepalive(startAuto(ctx, pi, base, verboseMode, options)).catch((err) => {
432
446
  const message = getErrorMessage(err);
433
447
  ctx.ui.notify(`Auto-start failed: ${message}`, "error");
434
448
  logWarning("engine", `auto start error: ${message}`, { file: "auto.ts" });
@@ -1208,6 +1222,12 @@ export async function stopAuto(
1208
1222
  // changes the user made between sessions (#4959 / CodeRabbit).
1209
1223
  if (pi) clearToolBaseline(pi);
1210
1224
 
1225
+ try {
1226
+ await s.orchestration?.stop(reason ?? "stop");
1227
+ } catch (err) {
1228
+ debugLog("stop-orchestration-stop", { error: err instanceof Error ? err.message : String(err) });
1229
+ }
1230
+
1211
1231
  // Reset all session state in one call
1212
1232
  s.reset();
1213
1233
  }
@@ -1264,6 +1284,7 @@ export async function pauseAuto(
1264
1284
  activeRunDir: s.activeRunDir,
1265
1285
  autoStartTime: s.autoStartTime,
1266
1286
  milestoneLock: s.sessionMilestoneLock ?? undefined,
1287
+ pauseReason: _errorContext?.message,
1267
1288
  };
1268
1289
  setRuntimeKv("global", "", PAUSED_SESSION_KV_KEY, pausedMeta);
1269
1290
  } catch (err) {
@@ -1306,6 +1327,12 @@ export async function pauseAuto(
1306
1327
  resolveAgentEnd({ messages: [] });
1307
1328
  _resetPendingResolve();
1308
1329
 
1330
+ try {
1331
+ await s.orchestration?.stop("pause");
1332
+ } catch (err) {
1333
+ debugLog("pause-orchestration-stop", { error: err instanceof Error ? err.message : String(err) });
1334
+ }
1335
+
1309
1336
  s.active = false;
1310
1337
  s.paused = true;
1311
1338
  deactivateGSD();
@@ -1363,6 +1390,141 @@ function buildResolver(): WorktreeResolver {
1363
1390
  return new WorktreeResolver(s, buildResolverDeps());
1364
1391
  }
1365
1392
 
1393
+ /**
1394
+ * Thin entry glue for the new Auto Orchestration module.
1395
+ *
1396
+ * This intentionally wires only dispatch + error notification today, with
1397
+ * no behavior changes to the existing auto loop. It provides a concrete seam
1398
+ * the next refactor steps can adopt incrementally.
1399
+ */
1400
+ export function createWiredAutoOrchestrationModule(
1401
+ ctx: ExtensionContext,
1402
+ _pi: ExtensionAPI,
1403
+ dispatchBasePath: string,
1404
+ runtimeBasePath = resolveProjectRoot(dispatchBasePath),
1405
+ ): AutoOrchestrationModule {
1406
+ const flowId = `auto-orchestrator-${Date.now()}`;
1407
+ let seq = 0;
1408
+
1409
+ const deps: AutoOrchestratorDeps = {
1410
+ dispatch: {
1411
+ async decideNextUnit() {
1412
+ const state = await deriveState(dispatchBasePath);
1413
+ const active = state.activeMilestone;
1414
+ if (!active) return null;
1415
+
1416
+ const prefs = loadEffectiveGSDPreferences(dispatchBasePath)?.preferences;
1417
+ const action = await resolveDispatch({
1418
+ basePath: dispatchBasePath,
1419
+ mid: active.id,
1420
+ midTitle: active.title,
1421
+ state,
1422
+ prefs,
1423
+ });
1424
+
1425
+ if (action.action !== "dispatch") return null;
1426
+ return {
1427
+ unitType: action.unitType,
1428
+ unitId: action.unitId,
1429
+ reason: action.matchedRule ?? "dispatch",
1430
+ preconditions: [],
1431
+ };
1432
+ },
1433
+ },
1434
+ recovery: {
1435
+ async classifyAndRecover(input) {
1436
+ const reason = input.error instanceof Error ? input.error.message : String(input.error ?? "unknown auto error");
1437
+ return { action: "escalate" as const, reason };
1438
+ },
1439
+ },
1440
+ worktree: {
1441
+ async prepareForUnit() {},
1442
+ async syncAfterUnit() {},
1443
+ async cleanupOnStop() {},
1444
+ },
1445
+ health: {
1446
+ async preAdvanceGate() {
1447
+ const gate = await preDispatchHealthGate(dispatchBasePath);
1448
+ return {
1449
+ allow: gate.proceed,
1450
+ reason: gate.reason,
1451
+ };
1452
+ },
1453
+ async postAdvanceRecord(result) {
1454
+ if (result.kind === "error") {
1455
+ recordHealthSnapshot(1, 0, 0, [{
1456
+ code: "orchestration-error",
1457
+ message: result.reason ?? "orchestration error",
1458
+ severity: "error",
1459
+ unitId: "orchestration",
1460
+ }], [], "orchestration");
1461
+ } else if (result.kind === "blocked") {
1462
+ recordHealthSnapshot(0, 1, 0, [{
1463
+ code: "orchestration-blocked",
1464
+ message: result.reason ?? "orchestration blocked",
1465
+ severity: "warning",
1466
+ unitId: "orchestration",
1467
+ }], [], "orchestration");
1468
+ }
1469
+ },
1470
+ },
1471
+ runtime: {
1472
+ async ensureLockOwnership() {
1473
+ const status = getSessionLockStatus(runtimeBasePath);
1474
+ if (!status.valid || status.failureReason === "pid-mismatch") {
1475
+ throw new Error("session lock held by another process");
1476
+ }
1477
+ },
1478
+ async journalTransition(event) {
1479
+ const eventType = event.name === "start"
1480
+ ? "iteration-start"
1481
+ : event.name === "resume"
1482
+ ? "iteration-start"
1483
+ : event.name === "advance"
1484
+ ? "dispatch-match"
1485
+ : event.name === "advance-blocked"
1486
+ ? "guard-block"
1487
+ : event.name === "advance-stopped"
1488
+ ? "dispatch-stop"
1489
+ : event.name === "advance-error"
1490
+ ? "iteration-end"
1491
+ : event.name === "advance-paused" || event.name === "advance-retry"
1492
+ ? "guard-block"
1493
+ : event.name === "stop"
1494
+ ? "terminal"
1495
+ : "iteration-end";
1496
+
1497
+ _emitJournalEvent(runtimeBasePath, {
1498
+ ts: new Date().toISOString(),
1499
+ flowId,
1500
+ seq: ++seq,
1501
+ eventType,
1502
+ data: {
1503
+ source: "auto-orchestrator",
1504
+ name: event.name,
1505
+ reason: event.reason,
1506
+ unitType: event.unitType,
1507
+ unitId: event.unitId,
1508
+ },
1509
+ });
1510
+ },
1511
+ },
1512
+ notifications: {
1513
+ async notifyLifecycle(event) {
1514
+ if (event.name === "error") {
1515
+ ctx.ui.notify(event.detail ?? "auto orchestration error", "error");
1516
+ }
1517
+ },
1518
+ },
1519
+ };
1520
+
1521
+ return createAutoOrchestrator(deps);
1522
+ }
1523
+
1524
+ function ensureOrchestrationModule(ctx: ExtensionContext, pi: ExtensionAPI, basePath: string): void {
1525
+ s.orchestration = createWiredAutoOrchestrationModule(ctx, pi, basePath, lockBase());
1526
+ }
1527
+
1366
1528
  /**
1367
1529
  * Build the LoopDeps object from auto.ts private scope.
1368
1530
  * This bundles all private functions that autoLoop needs without exporting them.
@@ -1785,6 +1947,7 @@ export async function startAuto(
1785
1947
  rebuildScope(s.basePath, s.currentMilestoneId);
1786
1948
  }
1787
1949
 
1950
+ ensureOrchestrationModule(ctx, pi, s.basePath || base);
1788
1951
  registerSigtermHandler(lockBase());
1789
1952
 
1790
1953
  ctx.ui.setStatus("gsd-auto", s.stepMode ? "next" : "auto");
@@ -1868,6 +2031,11 @@ export async function startAuto(
1868
2031
  }
1869
2032
  pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", level: "progress" });
1870
2033
 
2034
+ try {
2035
+ await s.orchestration?.resume();
2036
+ } catch (err) {
2037
+ debugLog("resume-orchestration-resume", { error: err instanceof Error ? err.message : String(err) });
2038
+ }
1871
2039
  startAutoCommandPolling(s.basePath);
1872
2040
  await runAutoLoopWithUok({
1873
2041
  ctx,
@@ -1904,7 +2072,7 @@ export async function startAuto(
1904
2072
  // Build scope after bootstrap has populated s.basePath / s.originalBasePath /
1905
2073
  // s.currentMilestoneId (including worktree setup inside bootstrapAutoSession).
1906
2074
  rebuildScope(s.basePath, s.currentMilestoneId);
1907
-
2075
+ ensureOrchestrationModule(ctx, pi, s.basePath || base);
1908
2076
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1909
2077
  registerAutoWorkerForSession(s);
1910
2078
  try {
@@ -1915,6 +2083,12 @@ export async function startAuto(
1915
2083
  }
1916
2084
  pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: requestedStepMode ? "Step-mode started." : "Auto-mode started.", level: "progress" });
1917
2085
 
2086
+ try {
2087
+ await s.orchestration?.start({ basePath: s.basePath, trigger: "auto-loop" });
2088
+ } catch (err) {
2089
+ debugLog("start-orchestration-start", { error: err instanceof Error ? err.message : String(err) });
2090
+ }
2091
+
1918
2092
  startAutoCommandPolling(s.basePath);
1919
2093
 
1920
2094
  // Dispatch the first unit
@@ -2037,6 +2211,9 @@ export async function dispatchHookUnit(
2037
2211
  }
2038
2212
 
2039
2213
  s.basePath = targetBasePath;
2214
+ if (!s.orchestration) {
2215
+ ensureOrchestrationModule(ctx, pi, s.basePath);
2216
+ }
2040
2217
 
2041
2218
  const hookUnitType = `hook/${hookName}`;
2042
2219
  const hookStartedAt = Date.now();
@@ -1,3 +1,5 @@
1
+ // GSD-2 + src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts - Handles provider and agent-end recovery for GSD auto-mode.
2
+
1
3
  import type { ExtensionAPI, ExtensionContext } from "@gsd/pi-coding-agent";
2
4
 
3
5
  import { logWarning } from "../workflow-logger.js";
@@ -12,7 +14,7 @@ import { clearPathCache } from "../paths.js";
12
14
  import { getAutoDashboardData, getAutoModeStartModel, isAutoActive, pauseAuto, setCurrentDispatchedModelId } from "../auto.js";
13
15
  import { getNextFallbackModel, resolveModelWithFallbacksForUnit } from "../preferences.js";
14
16
  import { pauseAutoForProviderError } from "../provider-error-pause.js";
15
- import { isSessionSwitchInFlight, resolveAgentEnd } from "../auto/resolve.js";
17
+ import { isSessionSwitchInFlight, resolveAgentEnd, resolveAgentEndCancelled } from "../auto/resolve.js";
16
18
  import { resolveModelId } from "../auto-model-selection.js";
17
19
  import { resolveProjectRoot } from "../worktree.js";
18
20
  import { clearDiscussionFlowState } from "./write-gate.js";
@@ -56,6 +58,24 @@ function resolveAgentEndBasePath(): string | undefined {
56
58
  }
57
59
  }
58
60
 
61
+ export function _buildAbortedPauseContext(lastMsg: { errorMessage?: unknown }): {
62
+ message: string;
63
+ category: "aborted";
64
+ isTransient: true;
65
+ } {
66
+ const hasErrorMessage = Object.prototype.hasOwnProperty.call(lastMsg, "errorMessage") && !!lastMsg.errorMessage;
67
+ return {
68
+ message: hasErrorMessage ? String(lastMsg.errorMessage) : "Operation aborted",
69
+ category: "aborted",
70
+ isTransient: true,
71
+ };
72
+ }
73
+
74
+ export function isUserInitiatedAbortMessage(message: string | undefined | null): boolean {
75
+ if (!message) return false;
76
+ return /\b(?:claude code process aborted by user|request aborted by user|process aborted by user)\b/i.test(message);
77
+ }
78
+
59
79
  async function pauseTransientWithBackoff(
60
80
  cls: ErrorClass,
61
81
  pi: ExtensionAPI,
@@ -159,7 +179,7 @@ export async function handleAgentEnd(
159
179
  return;
160
180
  }
161
181
 
162
- await pauseAuto(ctx, pi);
182
+ await pauseAuto(ctx, pi, _buildAbortedPauseContext(lastMsg as { errorMessage?: unknown }));
163
183
  return;
164
184
  }
165
185
  if (lastMsg && "stopReason" in lastMsg && lastMsg.stopReason === "error") {
@@ -167,6 +187,14 @@ export async function handleAgentEnd(
167
187
  // is in the assistant message text content. Fall back to content when
168
188
  // errorMessage looks uninformative.
169
189
  const rawErrorMsg = ("errorMessage" in lastMsg && lastMsg.errorMessage) ? String(lastMsg.errorMessage) : "";
190
+ if (isUserInitiatedAbortMessage(rawErrorMsg)) {
191
+ resolveAgentEndCancelled({
192
+ message: rawErrorMsg,
193
+ category: "aborted",
194
+ isTransient: false,
195
+ });
196
+ return;
197
+ }
170
198
  const isUseless = !rawErrorMsg || /^(success|ok|true|error|unknown)$/i.test(rawErrorMsg.trim());
171
199
  // #3588: When errorMessage is uninformative, extract the real error from
172
200
  // the assistant message text content for display purposes only.
@@ -1,3 +1,5 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Registers DB-backed GSD workflow tools and compatibility aliases.
1
3
  import { Type } from "@sinclair/typebox";
2
4
  import type { ExtensionAPI } from "@gsd/pi-coding-agent";
3
5
  import { Text } from "@gsd/pi-tui";
@@ -8,6 +10,7 @@ import { loadWriteGateSnapshot, shouldBlockRootArtifactSaveInSnapshot } from "./
8
10
  import { StringEnum } from "@gsd/pi-ai";
9
11
  import { logError } from "../workflow-logger.js";
10
12
  import { getErrorMessage } from "../error-utils.js";
13
+ import { incrementLegacyTelemetry } from "../legacy-telemetry.js";
11
14
 
12
15
  async function loadWorkflowExecutors(): Promise<typeof import("../tools/workflow-tool-executors.js")> {
13
16
  return import("../tools/workflow-tool-executors.js");
@@ -19,11 +22,19 @@ async function loadWorkflowExecutors(): Promise<typeof import("../tools/workflow
19
22
  */
20
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- toolDef shape matches ToolDefinition but typing it fully requires generics
21
24
  function registerAlias(pi: ExtensionAPI, toolDef: any, aliasName: string, canonicalName: string): void {
25
+ const execute = typeof toolDef.execute === "function"
26
+ ? async (...args: any[]) => {
27
+ incrementLegacyTelemetry("legacy.mcpAliasUsed");
28
+ return toolDef.execute(...args);
29
+ }
30
+ : toolDef.execute;
31
+
22
32
  pi.registerTool({
23
33
  ...toolDef,
24
34
  name: aliasName,
25
35
  description: toolDef.description + ` (alias for ${canonicalName} — prefer the canonical name)`,
26
36
  promptGuidelines: [`Alias for ${canonicalName} — prefer the canonical name.`],
37
+ execute,
27
38
  });
28
39
  }
29
40
 
@@ -1,7 +1,7 @@
1
1
  // GSD2 — Exec (context-mode) tool registration.
2
2
  //
3
- // Exposes the `gsd_exec` tool over MCP. Opt-in: disabled unless
4
- // `context_mode.enabled: true` is set in preferences.
3
+ // Exposes the Context Mode runtime tools in-process. Default-on; opt out with
4
+ // `context_mode.enabled: false` in preferences.
5
5
 
6
6
  import { Type } from "@sinclair/typebox";
7
7
  import type { ExtensionAPI } from "@gsd/pi-coding-agent";
@@ -7,7 +7,7 @@ import type { GSDEcosystemBeforeAgentStartHandler } from "../ecosystem/gsd-exten
7
7
  import { updateSnapshot } from "../ecosystem/gsd-extension-api.js";
8
8
 
9
9
  import { buildMilestoneFileName, resolveMilestonePath, resolveSliceFile, resolveSlicePath } from "../paths.js";
10
- import { canonicalToolName, clearDiscussionFlowState, isDepthConfirmationAnswer, isQueuePhaseActive, markApprovalGateVerified, markDepthVerified, resetWriteGateState, shouldBlockContextWrite, shouldBlockPlanningUnit, shouldBlockQueueExecution, isGateQuestionId, setPendingGate, clearPendingGate, getPendingGate, shouldBlockPendingGate, shouldBlockPendingGateBash, extractDepthVerificationMilestoneId } from "./write-gate.js";
10
+ import { canonicalToolName, clearDiscussionFlowState, isDepthConfirmationAnswer, isQueuePhaseActive, markApprovalGateVerified, markDepthVerified, resetWriteGateState, shouldBlockContextWrite, shouldBlockPlanningUnit, shouldBlockQueueExecution, shouldBlockWorktreeWrite, isGateQuestionId, setPendingGate, clearPendingGate, getPendingGate, shouldBlockPendingGate, shouldBlockPendingGateBash, extractDepthVerificationMilestoneId } from "./write-gate.js";
11
11
  import { resolveManifest } from "../unit-context-manifest.js";
12
12
  import { isBlockedStateFile, isBashWriteToStateFile, BLOCKED_WRITE_ERROR } from "../write-intercept.js";
13
13
  import { loadFile, saveFile, formatContinue } from "../files.js";
@@ -22,6 +22,7 @@ import { logWarning as safetyLogWarning } from "../workflow-logger.js";
22
22
  import { installNotifyInterceptor } from "./notify-interceptor.js";
23
23
  import { initNotificationStore } from "../notification-store.js";
24
24
  import { initNotificationWidget } from "../notification-widget.js";
25
+ import { resolveWorktreeProjectRoot } from "../worktree-root.js";
25
26
  import { extractSubagentAgentClasses } from "./subagent-input.js";
26
27
  import { approvalGateIdForUnit, isExplicitApprovalResponse, shouldPauseForUserApprovalQuestion } from "../user-input-boundary.js";
27
28
 
@@ -64,14 +65,54 @@ async function applyDisabledModelProviderPolicy(ctx: ExtensionContext): Promise<
64
65
  }
65
66
  }
66
67
 
68
+ export function resolveNotificationStoreBasePath(cwd: string = process.cwd()): string {
69
+ return resolveWorktreeProjectRoot(cwd);
70
+ }
71
+
72
+ function initSessionNotifications(ctx: ExtensionContext): void {
73
+ initNotificationStore(resolveNotificationStoreBasePath());
74
+ installNotifyInterceptor(ctx);
75
+ initNotificationWidget(ctx);
76
+ }
77
+
78
+ async function writeContextModeCompactionSnapshot(basePath: string): Promise<void> {
79
+ try {
80
+ const { loadEffectiveGSDPreferences } = await import("../preferences.js");
81
+ const { isContextModeEnabled } = await import("../preferences-types.js");
82
+ const prefs = loadEffectiveGSDPreferences(basePath);
83
+ if (!isContextModeEnabled(prefs?.preferences)) return;
84
+
85
+ const { writeCompactionSnapshot } = await import("../compaction-snapshot.js");
86
+ const { ensureDbOpen } = await import("./dynamic-tools.js");
87
+ await ensureDbOpen(basePath);
88
+
89
+ let activeContext: string | null = null;
90
+ try {
91
+ const state = await deriveGsdState(basePath);
92
+ if (state.activeMilestone && state.activeSlice && state.activeTask) {
93
+ activeContext =
94
+ `Active: ${state.activeMilestone.id} / ${state.activeSlice.id} / ${state.activeTask.id}` +
95
+ (state.activeTask.title ? ` - ${state.activeTask.title}` : "");
96
+ }
97
+ } catch {
98
+ /* non-fatal */
99
+ }
100
+
101
+ writeCompactionSnapshot(basePath, { activeContext });
102
+ } catch (err) {
103
+ safetyLogWarning(
104
+ "context-mode",
105
+ `failed to write compaction snapshot: ${err instanceof Error ? err.message : String(err)}`,
106
+ );
107
+ }
108
+ }
109
+
67
110
  export function registerHooks(
68
111
  pi: ExtensionAPI,
69
112
  ecosystemHandlers: GSDEcosystemBeforeAgentStartHandler[],
70
113
  ): void {
71
114
  pi.on("session_start", async (_event, ctx) => {
72
- initNotificationStore(process.cwd());
73
- installNotifyInterceptor(ctx);
74
- initNotificationWidget(ctx);
115
+ initSessionNotifications(ctx);
75
116
  if (!isAutoActive()) {
76
117
  const { initHealthWidget } = await import("../health-widget.js");
77
118
  initHealthWidget(ctx);
@@ -124,8 +165,7 @@ export function registerHooks(
124
165
  });
125
166
 
126
167
  pi.on("session_switch", async (_event, ctx) => {
127
- initNotificationStore(process.cwd());
128
- installNotifyInterceptor(ctx);
168
+ initSessionNotifications(ctx);
129
169
  resetWriteGateState(process.cwd());
130
170
  resetToolCallLoopGuard();
131
171
  await resetAskUserQuestionsTurnCache();
@@ -156,7 +196,7 @@ export function registerHooks(
156
196
  await getEcosystemReadyPromise();
157
197
 
158
198
  const beforeAgentBasePath = process.cwd();
159
- const pendingApprovalGate = getPendingGate();
199
+ const pendingApprovalGate = getPendingGate(beforeAgentBasePath);
160
200
  if (pendingApprovalGate && isExplicitApprovalResponse(event.prompt, pendingApprovalGate)) {
161
201
  markApprovalGateVerified(pendingApprovalGate, beforeAgentBasePath);
162
202
  const milestoneId = extractDepthVerificationMilestoneId(pendingApprovalGate);
@@ -229,15 +269,19 @@ export function registerHooks(
229
269
  });
230
270
 
231
271
  pi.on("session_before_compact", async () => {
272
+ const basePath = process.cwd();
273
+ // Context Mode is default-on. Write the resumable snapshot before any
274
+ // active-auto cancel return so auto sessions still leave re-entry context.
275
+ await writeContextModeCompactionSnapshot(basePath);
276
+
232
277
  // Only cancel compaction while auto-mode is actively running.
233
278
  // Paused auto-mode should allow compaction — the user may be doing
234
279
  // interactive work (#3165).
235
280
  if (isAutoActive()) {
236
281
  return { cancel: true };
237
282
  }
238
- const basePath = process.cwd();
239
283
  const { ensureDbOpen } = await import("./dynamic-tools.js");
240
- await ensureDbOpen();
284
+ await ensureDbOpen(basePath);
241
285
  const state = await deriveGsdState(basePath);
242
286
  if (!state.activeMilestone || !state.activeSlice) return;
243
287
  // Write checkpoint for ALL phases, not just "executing" — discuss, research,
@@ -282,42 +326,6 @@ export function registerHooks(
282
326
  }));
283
327
  });
284
328
 
285
- // Context-mode snapshot: write .gsd/last-snapshot.md before compaction so
286
- // agents can call gsd_resume (or Read the file) to re-orient. Opt-in via
287
- // preferences.context_mode.enabled. Runs after the auto-cancel handler
288
- // above — if that one returned cancel:true, pi still fires us but the
289
- // compaction won't actually happen; the snapshot is still useful then,
290
- // since auto may pause and resume later.
291
- pi.on("session_before_compact", async () => {
292
- try {
293
- const { loadEffectiveGSDPreferences } = await import("../preferences.js");
294
- const { isContextModeEnabled } = await import("../preferences-types.js");
295
- const prefs = loadEffectiveGSDPreferences();
296
- if (!isContextModeEnabled(prefs?.preferences)) return;
297
- const { writeCompactionSnapshot } = await import("../compaction-snapshot.js");
298
- const { ensureDbOpen } = await import("./dynamic-tools.js");
299
- await ensureDbOpen();
300
- const basePath = process.cwd();
301
- let activeContext: string | null = null;
302
- try {
303
- const state = await deriveGsdState(basePath);
304
- if (state.activeMilestone && state.activeSlice && state.activeTask) {
305
- activeContext =
306
- `Active: ${state.activeMilestone.id} / ${state.activeSlice.id} / ${state.activeTask.id}` +
307
- (state.activeTask.title ? ` — ${state.activeTask.title}` : "");
308
- }
309
- } catch {
310
- /* non-fatal */
311
- }
312
- writeCompactionSnapshot(basePath, { activeContext });
313
- } catch (err) {
314
- safetyLogWarning(
315
- "context-mode",
316
- `failed to write compaction snapshot: ${err instanceof Error ? err.message : String(err)}`,
317
- );
318
- }
319
- });
320
-
321
329
  pi.on("message_update", async (event, ctx: ExtensionContext) => {
322
330
  if (approvalQuestionAbortInFlight) return;
323
331
 
@@ -401,20 +409,22 @@ export function registerHooks(
401
409
  // ── Discussion gate enforcement: block tool calls while gate is pending ──
402
410
  // If ask_user_questions was called with a gate ID but hasn't been confirmed,
403
411
  // block all non-read-only tool calls to prevent the model from skipping gates.
404
- if (getPendingGate()) {
412
+ if (getPendingGate(discussionBasePath)) {
405
413
  const milestoneId = await getDiscussionMilestoneIdFor(discussionBasePath);
406
414
  if (isToolCallEventType("bash", event)) {
407
415
  const bashGuard = shouldBlockPendingGateBash(
408
416
  event.input.command,
409
417
  milestoneId,
410
- isQueuePhaseActive(),
418
+ isQueuePhaseActive(discussionBasePath),
419
+ discussionBasePath,
411
420
  );
412
421
  if (bashGuard.block) return bashGuard;
413
422
  } else {
414
423
  const gateGuard = shouldBlockPendingGate(
415
424
  toolName,
416
425
  milestoneId,
417
- isQueuePhaseActive(),
426
+ isQueuePhaseActive(discussionBasePath),
427
+ discussionBasePath,
418
428
  );
419
429
  if (gateGuard.block) return gateGuard;
420
430
  }
@@ -424,7 +434,7 @@ export function registerHooks(
424
434
  // When /gsd queue is active, the agent should only create milestones,
425
435
  // not execute work. Block write/edit to non-.gsd/ paths and bash commands
426
436
  // that would modify files.
427
- if (isQueuePhaseActive()) {
437
+ if (isQueuePhaseActive(discussionBasePath)) {
428
438
  let queueInput = "";
429
439
  if (isToolCallEventType("write", event)) {
430
440
  queueInput = event.input.path;
@@ -472,6 +482,22 @@ export function registerHooks(
472
482
  }
473
483
  }
474
484
 
485
+ // ── Worktree-isolation write gate (#5199) ────────────────────────────
486
+ // Block planning-write tools from landing code at the project root when
487
+ // git.isolation=worktree but auto-mode hasn't created the milestone
488
+ // worktree yet. Without this, writes silently orphan outside git history.
489
+ if (isToolCallEventType("write", event) || isToolCallEventType("edit", event)) {
490
+ const wtBasePath = resolveWorktreeProjectRoot(dash.basePath ?? discussionBasePath);
491
+ const wtGuard = shouldBlockWorktreeWrite(
492
+ event.toolName,
493
+ event.input.path,
494
+ wtBasePath,
495
+ isAutoActive(),
496
+ dash.currentUnit?.type,
497
+ );
498
+ if (wtGuard.block) return wtGuard;
499
+ }
500
+
475
501
  // ── Single-writer engine: block direct writes to STATE.md ──────────
476
502
  // Covers write, edit, and bash tools to prevent bypass vectors.
477
503
  if (isToolCallEventType("write", event)) {
@@ -498,7 +524,8 @@ export function registerHooks(
498
524
  event.toolName,
499
525
  event.input.path,
500
526
  await getDiscussionMilestoneIdFor(discussionBasePath),
501
- isQueuePhaseActive(),
527
+ isQueuePhaseActive(discussionBasePath),
528
+ discussionBasePath,
502
529
  );
503
530
  if (result.block) return result;
504
531
  });
@@ -558,7 +585,7 @@ export function registerHooks(
558
585
  if (toolName !== "ask_user_questions") return;
559
586
  const basePath = process.cwd();
560
587
  const milestoneId = await getDiscussionMilestoneIdFor(basePath);
561
- const queueActive = isQueuePhaseActive();
588
+ const queueActive = isQueuePhaseActive(basePath);
562
589
 
563
590
  const details = event.details as any;
564
591
 
@@ -568,7 +595,7 @@ export function registerHooks(
568
595
  // If the user responded at all (even "needs adjustment"), clear the pending gate
569
596
  // because the user engaged — the prompt handles the re-ask-after-adjustment flow.
570
597
  const questions: any[] = (event.input as any)?.questions ?? [];
571
- const currentPendingGate = getPendingGate();
598
+ const currentPendingGate = getPendingGate(basePath);
572
599
  if (currentPendingGate) {
573
600
  if (details?.cancelled || !details?.response) {
574
601
  // Gate stays pending. Direct the agent to the most reliable recovery