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
@@ -31,7 +31,7 @@ import { selectAndApplyModel, resolveModelId, clearToolBaseline } from "./auto-m
31
31
  import { resetRoutingHistory, recordOutcome } from "./routing-history.js";
32
32
  import { resetHookState, runPreDispatchHooks, restoreHookState, clearPersistedHookState, } from "./post-unit-hooks.js";
33
33
  import { runGSDDoctor, rebuildState } from "./doctor.js";
34
- import { preDispatchHealthGate, resetProactiveHealing, setLevelChangeCallback, } from "./doctor-proactive.js";
34
+ import { preDispatchHealthGate, recordHealthSnapshot, resetProactiveHealing, setLevelChangeCallback, } from "./doctor-proactive.js";
35
35
  import { clearSkillSnapshot } from "./skill-discovery.js";
36
36
  import { captureAvailableSkills, resetSkillTelemetry, } from "./skill-telemetry.js";
37
37
  import { getRtkSessionSavings } from "../shared/rtk-session-stats.js";
@@ -43,7 +43,7 @@ import { isAbsolute, join } from "node:path";
43
43
  import { pathToFileURL } from "node:url";
44
44
  import { readFileSync, existsSync, mkdirSync } from "node:fs";
45
45
  import { atomicWriteSync } from "./atomic-write.js";
46
- import { autoCommitCurrentBranch, captureIntegrationBranch, detectWorktreeName, getCurrentBranch, getMainBranch, setActiveMilestoneId, } from "./worktree.js";
46
+ import { autoCommitCurrentBranch, captureIntegrationBranch, detectWorktreeName, getCurrentBranch, getMainBranch, setActiveMilestoneId, resolveProjectRoot, } from "./worktree.js";
47
47
  import { GitServiceImpl } from "./git-service.js";
48
48
  import { getPriorSliceCompletionBlocker } from "./dispatch-guard.js";
49
49
  import { createAutoWorktree, enterAutoWorktree, enterBranchModeForMilestone, teardownAutoWorktree, isInAutoWorktree, getAutoWorktreePath, mergeMilestoneToMain, autoWorktreeBranch, syncWorktreeStateBack, syncProjectRootToWorktree, checkResourcesStale, escapeStaleWorktree, } from "./auto-worktree.js";
@@ -82,6 +82,7 @@ import { resolveAgentEnd, resolveAgentEndCancelled, _resetPendingResolve, isSess
82
82
  import { runAutoLoopWithUok } from "./uok/kernel.js";
83
83
  import { resolveUokFlags } from "./uok/flags.js";
84
84
  import { validateDirectory } from "./validate-directory.js";
85
+ import { createAutoOrchestrator } from "./auto/orchestrator.js";
85
86
  import { WorktreeResolver, } from "./worktree-resolver.js";
86
87
  import { reorderForCaching } from "./prompt-ordering.js";
87
88
  export { STUB_RECOVERY_THRESHOLD, NEW_SESSION_TIMEOUT_MS, } from "./auto/session.js";
@@ -224,8 +225,16 @@ function synthesizePausedSessionRecovery(basePath, unitType, unitId, sessionFile
224
225
  export function _synthesizePausedSessionRecoveryForTest(basePath, unitType, unitId, sessionFile) {
225
226
  return synthesizePausedSessionRecovery(basePath, unitType, unitId, sessionFile);
226
227
  }
228
+ const DETACHED_AUTO_KEEPALIVE_INTERVAL_MS = 30_000;
229
+ function withDetachedAutoKeepalive(run) {
230
+ const keepAlive = setInterval(() => { }, DETACHED_AUTO_KEEPALIVE_INTERVAL_MS);
231
+ return run.finally(() => {
232
+ clearInterval(keepAlive);
233
+ });
234
+ }
235
+ export const _withDetachedAutoKeepaliveForTest = withDetachedAutoKeepalive;
227
236
  export function startAutoDetached(ctx, pi, base, verboseMode, options) {
228
- void startAuto(ctx, pi, base, verboseMode, options).catch((err) => {
237
+ void withDetachedAutoKeepalive(startAuto(ctx, pi, base, verboseMode, options)).catch((err) => {
229
238
  const message = getErrorMessage(err);
230
239
  ctx.ui.notify(`Auto-start failed: ${message}`, "error");
231
240
  logWarning("engine", `auto start error: ${message}`, { file: "auto.ts" });
@@ -904,6 +913,12 @@ export async function stopAuto(ctx, pi, reason) {
904
913
  // changes the user made between sessions (#4959 / CodeRabbit).
905
914
  if (pi)
906
915
  clearToolBaseline(pi);
916
+ try {
917
+ await s.orchestration?.stop(reason ?? "stop");
918
+ }
919
+ catch (err) {
920
+ debugLog("stop-orchestration-stop", { error: err instanceof Error ? err.message : String(err) });
921
+ }
907
922
  // Reset all session state in one call
908
923
  s.reset();
909
924
  }
@@ -953,6 +968,7 @@ export async function pauseAuto(ctx, _pi, _errorContext) {
953
968
  activeRunDir: s.activeRunDir,
954
969
  autoStartTime: s.autoStartTime,
955
970
  milestoneLock: s.sessionMilestoneLock ?? undefined,
971
+ pauseReason: _errorContext?.message,
956
972
  };
957
973
  setRuntimeKv("global", "", PAUSED_SESSION_KV_KEY, pausedMeta);
958
974
  }
@@ -992,6 +1008,12 @@ export async function pauseAuto(ctx, _pi, _errorContext) {
992
1008
  // Unblock pending unitPromise so autoLoop exits cleanly (#1799)
993
1009
  resolveAgentEnd({ messages: [] });
994
1010
  _resetPendingResolve();
1011
+ try {
1012
+ await s.orchestration?.stop("pause");
1013
+ }
1014
+ catch (err) {
1015
+ debugLog("pause-orchestration-stop", { error: err instanceof Error ? err.message : String(err) });
1016
+ }
995
1017
  s.active = false;
996
1018
  s.paused = true;
997
1019
  deactivateGSD();
@@ -1041,6 +1063,132 @@ function buildResolverDeps() {
1041
1063
  function buildResolver() {
1042
1064
  return new WorktreeResolver(s, buildResolverDeps());
1043
1065
  }
1066
+ /**
1067
+ * Thin entry glue for the new Auto Orchestration module.
1068
+ *
1069
+ * This intentionally wires only dispatch + error notification today, with
1070
+ * no behavior changes to the existing auto loop. It provides a concrete seam
1071
+ * the next refactor steps can adopt incrementally.
1072
+ */
1073
+ export function createWiredAutoOrchestrationModule(ctx, _pi, dispatchBasePath, runtimeBasePath = resolveProjectRoot(dispatchBasePath)) {
1074
+ const flowId = `auto-orchestrator-${Date.now()}`;
1075
+ let seq = 0;
1076
+ const deps = {
1077
+ dispatch: {
1078
+ async decideNextUnit() {
1079
+ const state = await deriveState(dispatchBasePath);
1080
+ const active = state.activeMilestone;
1081
+ if (!active)
1082
+ return null;
1083
+ const prefs = loadEffectiveGSDPreferences(dispatchBasePath)?.preferences;
1084
+ const action = await resolveDispatch({
1085
+ basePath: dispatchBasePath,
1086
+ mid: active.id,
1087
+ midTitle: active.title,
1088
+ state,
1089
+ prefs,
1090
+ });
1091
+ if (action.action !== "dispatch")
1092
+ return null;
1093
+ return {
1094
+ unitType: action.unitType,
1095
+ unitId: action.unitId,
1096
+ reason: action.matchedRule ?? "dispatch",
1097
+ preconditions: [],
1098
+ };
1099
+ },
1100
+ },
1101
+ recovery: {
1102
+ async classifyAndRecover(input) {
1103
+ const reason = input.error instanceof Error ? input.error.message : String(input.error ?? "unknown auto error");
1104
+ return { action: "escalate", reason };
1105
+ },
1106
+ },
1107
+ worktree: {
1108
+ async prepareForUnit() { },
1109
+ async syncAfterUnit() { },
1110
+ async cleanupOnStop() { },
1111
+ },
1112
+ health: {
1113
+ async preAdvanceGate() {
1114
+ const gate = await preDispatchHealthGate(dispatchBasePath);
1115
+ return {
1116
+ allow: gate.proceed,
1117
+ reason: gate.reason,
1118
+ };
1119
+ },
1120
+ async postAdvanceRecord(result) {
1121
+ if (result.kind === "error") {
1122
+ recordHealthSnapshot(1, 0, 0, [{
1123
+ code: "orchestration-error",
1124
+ message: result.reason ?? "orchestration error",
1125
+ severity: "error",
1126
+ unitId: "orchestration",
1127
+ }], [], "orchestration");
1128
+ }
1129
+ else if (result.kind === "blocked") {
1130
+ recordHealthSnapshot(0, 1, 0, [{
1131
+ code: "orchestration-blocked",
1132
+ message: result.reason ?? "orchestration blocked",
1133
+ severity: "warning",
1134
+ unitId: "orchestration",
1135
+ }], [], "orchestration");
1136
+ }
1137
+ },
1138
+ },
1139
+ runtime: {
1140
+ async ensureLockOwnership() {
1141
+ const status = getSessionLockStatus(runtimeBasePath);
1142
+ if (!status.valid || status.failureReason === "pid-mismatch") {
1143
+ throw new Error("session lock held by another process");
1144
+ }
1145
+ },
1146
+ async journalTransition(event) {
1147
+ const eventType = event.name === "start"
1148
+ ? "iteration-start"
1149
+ : event.name === "resume"
1150
+ ? "iteration-start"
1151
+ : event.name === "advance"
1152
+ ? "dispatch-match"
1153
+ : event.name === "advance-blocked"
1154
+ ? "guard-block"
1155
+ : event.name === "advance-stopped"
1156
+ ? "dispatch-stop"
1157
+ : event.name === "advance-error"
1158
+ ? "iteration-end"
1159
+ : event.name === "advance-paused" || event.name === "advance-retry"
1160
+ ? "guard-block"
1161
+ : event.name === "stop"
1162
+ ? "terminal"
1163
+ : "iteration-end";
1164
+ _emitJournalEvent(runtimeBasePath, {
1165
+ ts: new Date().toISOString(),
1166
+ flowId,
1167
+ seq: ++seq,
1168
+ eventType,
1169
+ data: {
1170
+ source: "auto-orchestrator",
1171
+ name: event.name,
1172
+ reason: event.reason,
1173
+ unitType: event.unitType,
1174
+ unitId: event.unitId,
1175
+ },
1176
+ });
1177
+ },
1178
+ },
1179
+ notifications: {
1180
+ async notifyLifecycle(event) {
1181
+ if (event.name === "error") {
1182
+ ctx.ui.notify(event.detail ?? "auto orchestration error", "error");
1183
+ }
1184
+ },
1185
+ },
1186
+ };
1187
+ return createAutoOrchestrator(deps);
1188
+ }
1189
+ function ensureOrchestrationModule(ctx, pi, basePath) {
1190
+ s.orchestration = createWiredAutoOrchestrationModule(ctx, pi, basePath, lockBase());
1191
+ }
1044
1192
  /**
1045
1193
  * Build the LoopDeps object from auto.ts private scope.
1046
1194
  * This bundles all private functions that autoLoop needs without exporting them.
@@ -1398,6 +1546,7 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1398
1546
  // s.basePath may have been updated to a worktree path by enterMilestone.
1399
1547
  rebuildScope(s.basePath, s.currentMilestoneId);
1400
1548
  }
1549
+ ensureOrchestrationModule(ctx, pi, s.basePath || base);
1401
1550
  registerSigtermHandler(lockBase());
1402
1551
  ctx.ui.setStatus("gsd-auto", s.stepMode ? "next" : "auto");
1403
1552
  ctx.ui.setWidget("gsd-health", undefined);
@@ -1457,6 +1606,12 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1457
1606
  clearPausedSession("paused-session DB cleanup failed (resume activation)");
1458
1607
  }
1459
1608
  pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", level: "progress" });
1609
+ try {
1610
+ await s.orchestration?.resume();
1611
+ }
1612
+ catch (err) {
1613
+ debugLog("resume-orchestration-resume", { error: err instanceof Error ? err.message : String(err) });
1614
+ }
1460
1615
  startAutoCommandPolling(s.basePath);
1461
1616
  await runAutoLoopWithUok({
1462
1617
  ctx,
@@ -1482,6 +1637,7 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1482
1637
  // Build scope after bootstrap has populated s.basePath / s.originalBasePath /
1483
1638
  // s.currentMilestoneId (including worktree setup inside bootstrapAutoSession).
1484
1639
  rebuildScope(s.basePath, s.currentMilestoneId);
1640
+ ensureOrchestrationModule(ctx, pi, s.basePath || base);
1485
1641
  captureProjectRootEnv(s.originalBasePath || s.basePath);
1486
1642
  registerAutoWorkerForSession(s);
1487
1643
  try {
@@ -1492,6 +1648,12 @@ export async function startAuto(ctx, pi, base, verboseMode, options) {
1492
1648
  logWarning("engine", `cmux sync failed: ${err instanceof Error ? err.message : String(err)}`, { file: "auto.ts" });
1493
1649
  }
1494
1650
  pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: requestedStepMode ? "Step-mode started." : "Auto-mode started.", level: "progress" });
1651
+ try {
1652
+ await s.orchestration?.start({ basePath: s.basePath, trigger: "auto-loop" });
1653
+ }
1654
+ catch (err) {
1655
+ debugLog("start-orchestration-start", { error: err instanceof Error ? err.message : String(err) });
1656
+ }
1495
1657
  startAutoCommandPolling(s.basePath);
1496
1658
  // Dispatch the first unit
1497
1659
  await runAutoLoopWithUok({
@@ -1576,6 +1738,9 @@ export async function dispatchHookUnit(ctx, pi, hookName, triggerUnitType, trigg
1576
1738
  s.pendingQuickTasks = [];
1577
1739
  }
1578
1740
  s.basePath = targetBasePath;
1741
+ if (!s.orchestration) {
1742
+ ensureOrchestrationModule(ctx, pi, s.basePath);
1743
+ }
1579
1744
  const hookUnitType = `hook/${hookName}`;
1580
1745
  const hookStartedAt = Date.now();
1581
1746
  s.currentUnit = {
@@ -1,10 +1,11 @@
1
+ // GSD-2 + src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts - Handles provider and agent-end recovery for GSD auto-mode.
1
2
  import { logWarning } from "../workflow-logger.js";
2
3
  import { checkDeepProjectSetupAfterTurn, checkAutoStartAfterDiscuss, maybeHandleReadyPhraseWithoutFiles, maybeHandleEmptyIntentTurn, resetEmptyTurnCounter, } from "../guided-flow.js";
3
4
  import { clearPathCache } from "../paths.js";
4
5
  import { getAutoDashboardData, getAutoModeStartModel, isAutoActive, pauseAuto, setCurrentDispatchedModelId } from "../auto.js";
5
6
  import { getNextFallbackModel, resolveModelWithFallbacksForUnit } from "../preferences.js";
6
7
  import { pauseAutoForProviderError } from "../provider-error-pause.js";
7
- import { isSessionSwitchInFlight, resolveAgentEnd } from "../auto/resolve.js";
8
+ import { isSessionSwitchInFlight, resolveAgentEnd, resolveAgentEndCancelled } from "../auto/resolve.js";
8
9
  import { resolveModelId } from "../auto-model-selection.js";
9
10
  import { resolveProjectRoot } from "../worktree.js";
10
11
  import { clearDiscussionFlowState } from "./write-gate.js";
@@ -39,6 +40,19 @@ function resolveAgentEndBasePath() {
39
40
  return undefined;
40
41
  }
41
42
  }
43
+ export function _buildAbortedPauseContext(lastMsg) {
44
+ const hasErrorMessage = Object.prototype.hasOwnProperty.call(lastMsg, "errorMessage") && !!lastMsg.errorMessage;
45
+ return {
46
+ message: hasErrorMessage ? String(lastMsg.errorMessage) : "Operation aborted",
47
+ category: "aborted",
48
+ isTransient: true,
49
+ };
50
+ }
51
+ export function isUserInitiatedAbortMessage(message) {
52
+ if (!message)
53
+ return false;
54
+ return /\b(?:claude code process aborted by user|request aborted by user|process aborted by user)\b/i.test(message);
55
+ }
42
56
  async function pauseTransientWithBackoff(cls, pi, ctx, errorDetail, isRateLimit) {
43
57
  retryState.consecutiveTransientCount += 1;
44
58
  const baseRetryAfterMs = "retryAfterMs" in cls ? cls.retryAfterMs : 15_000;
@@ -134,7 +148,7 @@ export async function handleAgentEnd(pi, event, ctx) {
134
148
  }
135
149
  return;
136
150
  }
137
- await pauseAuto(ctx, pi);
151
+ await pauseAuto(ctx, pi, _buildAbortedPauseContext(lastMsg));
138
152
  return;
139
153
  }
140
154
  if (lastMsg && "stopReason" in lastMsg && lastMsg.stopReason === "error") {
@@ -142,6 +156,14 @@ export async function handleAgentEnd(pi, event, ctx) {
142
156
  // is in the assistant message text content. Fall back to content when
143
157
  // errorMessage looks uninformative.
144
158
  const rawErrorMsg = ("errorMessage" in lastMsg && lastMsg.errorMessage) ? String(lastMsg.errorMessage) : "";
159
+ if (isUserInitiatedAbortMessage(rawErrorMsg)) {
160
+ resolveAgentEndCancelled({
161
+ message: rawErrorMsg,
162
+ category: "aborted",
163
+ isTransient: false,
164
+ });
165
+ return;
166
+ }
145
167
  const isUseless = !rawErrorMsg || /^(success|ok|true|error|unknown)$/i.test(rawErrorMsg.trim());
146
168
  // #3588: When errorMessage is uninformative, extract the real error from
147
169
  // 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 { Text } from "@gsd/pi-tui";
3
5
  import { loadEffectiveGSDPreferences } from "../preferences.js";
@@ -5,6 +7,7 @@ import { ensureDbOpen } from "./dynamic-tools.js";
5
7
  import { loadWriteGateSnapshot, shouldBlockRootArtifactSaveInSnapshot } from "./write-gate.js";
6
8
  import { StringEnum } from "@gsd/pi-ai";
7
9
  import { logError } from "../workflow-logger.js";
10
+ import { incrementLegacyTelemetry } from "../legacy-telemetry.js";
8
11
  async function loadWorkflowExecutors() {
9
12
  return import("../tools/workflow-tool-executors.js");
10
13
  }
@@ -14,11 +17,18 @@ async function loadWorkflowExecutors() {
14
17
  */
15
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- toolDef shape matches ToolDefinition but typing it fully requires generics
16
19
  function registerAlias(pi, toolDef, aliasName, canonicalName) {
20
+ const execute = typeof toolDef.execute === "function"
21
+ ? async (...args) => {
22
+ incrementLegacyTelemetry("legacy.mcpAliasUsed");
23
+ return toolDef.execute(...args);
24
+ }
25
+ : toolDef.execute;
17
26
  pi.registerTool({
18
27
  ...toolDef,
19
28
  name: aliasName,
20
29
  description: toolDef.description + ` (alias for ${canonicalName} — prefer the canonical name)`,
21
30
  promptGuidelines: [`Alias for ${canonicalName} — prefer the canonical name.`],
31
+ execute,
22
32
  });
23
33
  }
24
34
  function requirementRootWriteGuard(operation) {
@@ -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
  import { Type } from "@sinclair/typebox";
6
6
  export function registerExecTools(pi) {
7
7
  pi.registerTool({
@@ -2,7 +2,7 @@ import { join } from "node:path";
2
2
  import { isToolCallEventType } from "@gsd/pi-coding-agent";
3
3
  import { updateSnapshot } from "../ecosystem/gsd-extension-api.js";
4
4
  import { buildMilestoneFileName, resolveMilestonePath, resolveSliceFile, resolveSlicePath } from "../paths.js";
5
- import { canonicalToolName, clearDiscussionFlowState, isDepthConfirmationAnswer, isQueuePhaseActive, markApprovalGateVerified, markDepthVerified, resetWriteGateState, shouldBlockContextWrite, shouldBlockPlanningUnit, shouldBlockQueueExecution, isGateQuestionId, setPendingGate, clearPendingGate, getPendingGate, shouldBlockPendingGate, shouldBlockPendingGateBash, extractDepthVerificationMilestoneId } from "./write-gate.js";
5
+ import { canonicalToolName, clearDiscussionFlowState, isDepthConfirmationAnswer, isQueuePhaseActive, markApprovalGateVerified, markDepthVerified, resetWriteGateState, shouldBlockContextWrite, shouldBlockPlanningUnit, shouldBlockQueueExecution, shouldBlockWorktreeWrite, isGateQuestionId, setPendingGate, clearPendingGate, getPendingGate, shouldBlockPendingGate, shouldBlockPendingGateBash, extractDepthVerificationMilestoneId } from "./write-gate.js";
6
6
  import { resolveManifest } from "../unit-context-manifest.js";
7
7
  import { isBlockedStateFile, isBashWriteToStateFile, BLOCKED_WRITE_ERROR } from "../write-intercept.js";
8
8
  import { loadFile, saveFile, formatContinue } from "../files.js";
@@ -16,6 +16,7 @@ import { logWarning as safetyLogWarning } from "../workflow-logger.js";
16
16
  import { installNotifyInterceptor } from "./notify-interceptor.js";
17
17
  import { initNotificationStore } from "../notification-store.js";
18
18
  import { initNotificationWidget } from "../notification-widget.js";
19
+ import { resolveWorktreeProjectRoot } from "../worktree-root.js";
19
20
  import { extractSubagentAgentClasses } from "./subagent-input.js";
20
21
  import { approvalGateIdForUnit, isExplicitApprovalResponse, shouldPauseForUserApprovalQuestion } from "../user-input-boundary.js";
21
22
  // Skip the welcome screen on the very first session_start — cli.ts already
@@ -51,11 +52,45 @@ async function applyDisabledModelProviderPolicy(ctx) {
51
52
  // Non-fatal: keep default provider visibility if preferences cannot be loaded.
52
53
  }
53
54
  }
55
+ export function resolveNotificationStoreBasePath(cwd = process.cwd()) {
56
+ return resolveWorktreeProjectRoot(cwd);
57
+ }
58
+ function initSessionNotifications(ctx) {
59
+ initNotificationStore(resolveNotificationStoreBasePath());
60
+ installNotifyInterceptor(ctx);
61
+ initNotificationWidget(ctx);
62
+ }
63
+ async function writeContextModeCompactionSnapshot(basePath) {
64
+ try {
65
+ const { loadEffectiveGSDPreferences } = await import("../preferences.js");
66
+ const { isContextModeEnabled } = await import("../preferences-types.js");
67
+ const prefs = loadEffectiveGSDPreferences(basePath);
68
+ if (!isContextModeEnabled(prefs?.preferences))
69
+ return;
70
+ const { writeCompactionSnapshot } = await import("../compaction-snapshot.js");
71
+ const { ensureDbOpen } = await import("./dynamic-tools.js");
72
+ await ensureDbOpen(basePath);
73
+ let activeContext = null;
74
+ try {
75
+ const state = await deriveGsdState(basePath);
76
+ if (state.activeMilestone && state.activeSlice && state.activeTask) {
77
+ activeContext =
78
+ `Active: ${state.activeMilestone.id} / ${state.activeSlice.id} / ${state.activeTask.id}` +
79
+ (state.activeTask.title ? ` - ${state.activeTask.title}` : "");
80
+ }
81
+ }
82
+ catch {
83
+ /* non-fatal */
84
+ }
85
+ writeCompactionSnapshot(basePath, { activeContext });
86
+ }
87
+ catch (err) {
88
+ safetyLogWarning("context-mode", `failed to write compaction snapshot: ${err instanceof Error ? err.message : String(err)}`);
89
+ }
90
+ }
54
91
  export function registerHooks(pi, ecosystemHandlers) {
55
92
  pi.on("session_start", async (_event, ctx) => {
56
- initNotificationStore(process.cwd());
57
- installNotifyInterceptor(ctx);
58
- initNotificationWidget(ctx);
93
+ initSessionNotifications(ctx);
59
94
  if (!isAutoActive()) {
60
95
  const { initHealthWidget } = await import("../health-widget.js");
61
96
  initHealthWidget(ctx);
@@ -107,8 +142,7 @@ export function registerHooks(pi, ecosystemHandlers) {
107
142
  }
108
143
  });
109
144
  pi.on("session_switch", async (_event, ctx) => {
110
- initNotificationStore(process.cwd());
111
- installNotifyInterceptor(ctx);
145
+ initSessionNotifications(ctx);
112
146
  resetWriteGateState(process.cwd());
113
147
  resetToolCallLoopGuard();
114
148
  await resetAskUserQuestionsTurnCache();
@@ -138,7 +172,7 @@ export function registerHooks(pi, ecosystemHandlers) {
138
172
  const { getEcosystemReadyPromise } = await import("../ecosystem/loader.js");
139
173
  await getEcosystemReadyPromise();
140
174
  const beforeAgentBasePath = process.cwd();
141
- const pendingApprovalGate = getPendingGate();
175
+ const pendingApprovalGate = getPendingGate(beforeAgentBasePath);
142
176
  if (pendingApprovalGate && isExplicitApprovalResponse(event.prompt, pendingApprovalGate)) {
143
177
  markApprovalGateVerified(pendingApprovalGate, beforeAgentBasePath);
144
178
  const milestoneId = extractDepthVerificationMilestoneId(pendingApprovalGate);
@@ -204,15 +238,18 @@ export function registerHooks(pi, ecosystemHandlers) {
204
238
  }
205
239
  });
206
240
  pi.on("session_before_compact", async () => {
241
+ const basePath = process.cwd();
242
+ // Context Mode is default-on. Write the resumable snapshot before any
243
+ // active-auto cancel return so auto sessions still leave re-entry context.
244
+ await writeContextModeCompactionSnapshot(basePath);
207
245
  // Only cancel compaction while auto-mode is actively running.
208
246
  // Paused auto-mode should allow compaction — the user may be doing
209
247
  // interactive work (#3165).
210
248
  if (isAutoActive()) {
211
249
  return { cancel: true };
212
250
  }
213
- const basePath = process.cwd();
214
251
  const { ensureDbOpen } = await import("./dynamic-tools.js");
215
- await ensureDbOpen();
252
+ await ensureDbOpen(basePath);
216
253
  const state = await deriveGsdState(basePath);
217
254
  if (!state.activeMilestone || !state.activeSlice)
218
255
  return;
@@ -256,41 +293,6 @@ export function registerHooks(pi, ecosystemHandlers) {
256
293
  : `Resume ${phaseLabel} work for slice ${state.activeSlice.id}.`,
257
294
  }));
258
295
  });
259
- // Context-mode snapshot: write .gsd/last-snapshot.md before compaction so
260
- // agents can call gsd_resume (or Read the file) to re-orient. Opt-in via
261
- // preferences.context_mode.enabled. Runs after the auto-cancel handler
262
- // above — if that one returned cancel:true, pi still fires us but the
263
- // compaction won't actually happen; the snapshot is still useful then,
264
- // since auto may pause and resume later.
265
- pi.on("session_before_compact", async () => {
266
- try {
267
- const { loadEffectiveGSDPreferences } = await import("../preferences.js");
268
- const { isContextModeEnabled } = await import("../preferences-types.js");
269
- const prefs = loadEffectiveGSDPreferences();
270
- if (!isContextModeEnabled(prefs?.preferences))
271
- return;
272
- const { writeCompactionSnapshot } = await import("../compaction-snapshot.js");
273
- const { ensureDbOpen } = await import("./dynamic-tools.js");
274
- await ensureDbOpen();
275
- const basePath = process.cwd();
276
- let activeContext = null;
277
- try {
278
- const state = await deriveGsdState(basePath);
279
- if (state.activeMilestone && state.activeSlice && state.activeTask) {
280
- activeContext =
281
- `Active: ${state.activeMilestone.id} / ${state.activeSlice.id} / ${state.activeTask.id}` +
282
- (state.activeTask.title ? ` — ${state.activeTask.title}` : "");
283
- }
284
- }
285
- catch {
286
- /* non-fatal */
287
- }
288
- writeCompactionSnapshot(basePath, { activeContext });
289
- }
290
- catch (err) {
291
- safetyLogWarning("context-mode", `failed to write compaction snapshot: ${err instanceof Error ? err.message : String(err)}`);
292
- }
293
- });
294
296
  pi.on("message_update", async (event, ctx) => {
295
297
  if (approvalQuestionAbortInFlight)
296
298
  return;
@@ -367,15 +369,15 @@ export function registerHooks(pi, ecosystemHandlers) {
367
369
  // ── Discussion gate enforcement: block tool calls while gate is pending ──
368
370
  // If ask_user_questions was called with a gate ID but hasn't been confirmed,
369
371
  // block all non-read-only tool calls to prevent the model from skipping gates.
370
- if (getPendingGate()) {
372
+ if (getPendingGate(discussionBasePath)) {
371
373
  const milestoneId = await getDiscussionMilestoneIdFor(discussionBasePath);
372
374
  if (isToolCallEventType("bash", event)) {
373
- const bashGuard = shouldBlockPendingGateBash(event.input.command, milestoneId, isQueuePhaseActive());
375
+ const bashGuard = shouldBlockPendingGateBash(event.input.command, milestoneId, isQueuePhaseActive(discussionBasePath), discussionBasePath);
374
376
  if (bashGuard.block)
375
377
  return bashGuard;
376
378
  }
377
379
  else {
378
- const gateGuard = shouldBlockPendingGate(toolName, milestoneId, isQueuePhaseActive());
380
+ const gateGuard = shouldBlockPendingGate(toolName, milestoneId, isQueuePhaseActive(discussionBasePath), discussionBasePath);
379
381
  if (gateGuard.block)
380
382
  return gateGuard;
381
383
  }
@@ -384,7 +386,7 @@ export function registerHooks(pi, ecosystemHandlers) {
384
386
  // When /gsd queue is active, the agent should only create milestones,
385
387
  // not execute work. Block write/edit to non-.gsd/ paths and bash commands
386
388
  // that would modify files.
387
- if (isQueuePhaseActive()) {
389
+ if (isQueuePhaseActive(discussionBasePath)) {
388
390
  let queueInput = "";
389
391
  if (isToolCallEventType("write", event)) {
390
392
  queueInput = event.input.path;
@@ -430,6 +432,16 @@ export function registerHooks(pi, ecosystemHandlers) {
430
432
  return planningGuard;
431
433
  }
432
434
  }
435
+ // ── Worktree-isolation write gate (#5199) ────────────────────────────
436
+ // Block planning-write tools from landing code at the project root when
437
+ // git.isolation=worktree but auto-mode hasn't created the milestone
438
+ // worktree yet. Without this, writes silently orphan outside git history.
439
+ if (isToolCallEventType("write", event) || isToolCallEventType("edit", event)) {
440
+ const wtBasePath = resolveWorktreeProjectRoot(dash.basePath ?? discussionBasePath);
441
+ const wtGuard = shouldBlockWorktreeWrite(event.toolName, event.input.path, wtBasePath, isAutoActive(), dash.currentUnit?.type);
442
+ if (wtGuard.block)
443
+ return wtGuard;
444
+ }
433
445
  // ── Single-writer engine: block direct writes to STATE.md ──────────
434
446
  // Covers write, edit, and bash tools to prevent bypass vectors.
435
447
  if (isToolCallEventType("write", event)) {
@@ -449,7 +461,7 @@ export function registerHooks(pi, ecosystemHandlers) {
449
461
  }
450
462
  if (!isToolCallEventType("write", event))
451
463
  return;
452
- const result = shouldBlockContextWrite(event.toolName, event.input.path, await getDiscussionMilestoneIdFor(discussionBasePath), isQueuePhaseActive());
464
+ const result = shouldBlockContextWrite(event.toolName, event.input.path, await getDiscussionMilestoneIdFor(discussionBasePath), isQueuePhaseActive(discussionBasePath), discussionBasePath);
453
465
  if (result.block)
454
466
  return result;
455
467
  });
@@ -504,7 +516,7 @@ export function registerHooks(pi, ecosystemHandlers) {
504
516
  return;
505
517
  const basePath = process.cwd();
506
518
  const milestoneId = await getDiscussionMilestoneIdFor(basePath);
507
- const queueActive = isQueuePhaseActive();
519
+ const queueActive = isQueuePhaseActive(basePath);
508
520
  const details = event.details;
509
521
  // ── Discussion gate enforcement: handle gate question responses ──
510
522
  // If the result is cancelled or has no response, the pending gate stays active
@@ -512,7 +524,7 @@ export function registerHooks(pi, ecosystemHandlers) {
512
524
  // If the user responded at all (even "needs adjustment"), clear the pending gate
513
525
  // because the user engaged — the prompt handles the re-ask-after-adjustment flow.
514
526
  const questions = event.input?.questions ?? [];
515
- const currentPendingGate = getPendingGate();
527
+ const currentPendingGate = getPendingGate(basePath);
516
528
  if (currentPendingGate) {
517
529
  if (details?.cancelled || !details?.response) {
518
530
  // Gate stays pending. Direct the agent to the most reliable recovery