gsd-pi 2.79.0 → 2.80.0-dev.710c06e97

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 (774) 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 +2 -0
  34. package/dist/resources/extensions/gsd/auto-prompts.js +220 -32
  35. package/dist/resources/extensions/gsd/auto-recovery.js +90 -58
  36. package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -0
  37. package/dist/resources/extensions/gsd/auto-start.js +3 -2
  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 +159 -2
  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-ship.js +23 -46
  48. package/dist/resources/extensions/gsd/commands-workflow-templates.js +12 -7
  49. package/dist/resources/extensions/gsd/component-loader.js +5 -11
  50. package/dist/resources/extensions/gsd/custom-workflow-engine.js +25 -1
  51. package/dist/resources/extensions/gsd/db-adapter.js +47 -0
  52. package/dist/resources/extensions/gsd/db-base-schema.js +337 -0
  53. package/dist/resources/extensions/gsd/db-connection-cache.js +31 -0
  54. package/dist/resources/extensions/gsd/db-coordination-schema.js +104 -0
  55. package/dist/resources/extensions/gsd/db-decision-requirement-rows.js +71 -0
  56. package/dist/resources/extensions/gsd/db-gate-rows.js +16 -0
  57. package/dist/resources/extensions/gsd/db-lightweight-query-rows.js +29 -0
  58. package/dist/resources/extensions/gsd/db-memory-fts-schema.js +56 -0
  59. package/dist/resources/extensions/gsd/db-migration-backup.js +22 -0
  60. package/dist/resources/extensions/gsd/db-migration-steps.js +394 -0
  61. package/dist/resources/extensions/gsd/db-milestone-artifact-rows.js +35 -0
  62. package/dist/resources/extensions/gsd/db-open-state.js +32 -0
  63. package/dist/resources/extensions/gsd/db-provider.js +108 -0
  64. package/dist/resources/extensions/gsd/db-runtime-kv-schema.js +27 -0
  65. package/dist/resources/extensions/gsd/db-schema-metadata.js +23 -0
  66. package/dist/resources/extensions/gsd/db-task-slice-rows.js +86 -0
  67. package/dist/resources/extensions/gsd/db-transaction.js +63 -0
  68. package/dist/resources/extensions/gsd/db-verification-evidence-rows.js +3 -0
  69. package/dist/resources/extensions/gsd/db-verification-evidence-schema.js +19 -0
  70. package/dist/resources/extensions/gsd/escalation.js +2 -0
  71. package/dist/resources/extensions/gsd/graph.js +9 -3
  72. package/dist/resources/extensions/gsd/gsd-db.js +215 -1519
  73. package/dist/resources/extensions/gsd/guided-flow.js +40 -0
  74. package/dist/resources/extensions/gsd/legacy-telemetry.js +70 -0
  75. package/dist/resources/extensions/gsd/markdown-renderer.js +2 -0
  76. package/dist/resources/extensions/gsd/model-router.js +9 -6
  77. package/dist/resources/extensions/gsd/notification-widget.js +21 -3
  78. package/dist/resources/extensions/gsd/paths.js +5 -1
  79. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -6
  80. package/dist/resources/extensions/gsd/pr-evidence.js +117 -0
  81. package/dist/resources/extensions/gsd/pre-execution-checks.js +2 -0
  82. package/dist/resources/extensions/gsd/preferences-types.js +20 -2
  83. package/dist/resources/extensions/gsd/preferences-validation.js +3 -3
  84. package/dist/resources/extensions/gsd/process-task-path.js +61 -0
  85. package/dist/resources/extensions/gsd/prompt-loader.js +9 -5
  86. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  87. package/dist/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  88. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  89. package/dist/resources/extensions/gsd/prompts/discuss.md +81 -181
  90. package/dist/resources/extensions/gsd/prompts/execute-task.md +40 -67
  91. package/dist/resources/extensions/gsd/prompts/forensics.md +41 -84
  92. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  93. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  94. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  95. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  96. package/dist/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  97. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  98. package/dist/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  99. package/dist/resources/extensions/gsd/prompts/queue.md +46 -53
  100. package/dist/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  101. package/dist/resources/extensions/gsd/prompts/research-slice.md +23 -23
  102. package/dist/resources/extensions/gsd/prompts/rethink.md +10 -10
  103. package/dist/resources/extensions/gsd/prompts/system.md +65 -107
  104. package/dist/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  105. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  106. package/dist/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  107. package/dist/resources/extensions/gsd/state.js +4 -0
  108. package/dist/resources/extensions/gsd/tools/complete-milestone.js +14 -9
  109. package/dist/resources/extensions/gsd/tools/complete-task.js +2 -0
  110. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +88 -3
  111. package/dist/resources/extensions/gsd/unit-context-composer.js +32 -0
  112. package/dist/resources/extensions/gsd/unit-context-manifest.js +21 -0
  113. package/dist/resources/extensions/gsd/uok/audit.js +23 -9
  114. package/dist/resources/extensions/gsd/uok/contracts.js +69 -1
  115. package/dist/resources/extensions/gsd/uok/dispatch-envelope.js +3 -0
  116. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  117. package/dist/resources/extensions/gsd/uok/loop-adapter.js +48 -33
  118. package/dist/resources/extensions/gsd/uok/plan-v2.js +2 -0
  119. package/dist/resources/extensions/gsd/uok/timeline.js +125 -0
  120. package/dist/resources/extensions/gsd/workflow-logger.js +13 -13
  121. package/dist/resources/extensions/gsd/workflow-manifest.js +2 -0
  122. package/dist/resources/extensions/gsd/workflow-projections.js +2 -0
  123. package/dist/resources/extensions/gsd/workflow-templates.js +9 -0
  124. package/dist/resources/extensions/gsd/working-output-messages.js +64 -0
  125. package/dist/resources/extensions/shared/gsd-phase-state.js +45 -3
  126. package/dist/resources/extensions/shared/interview-ui.js +15 -4
  127. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  128. package/dist/web/standalone/.next/BUILD_ID +1 -1
  129. package/dist/web/standalone/.next/app-path-routes-manifest.json +7 -7
  130. package/dist/web/standalone/.next/build-manifest.json +4 -4
  131. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  132. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  133. package/dist/web/standalone/.next/required-server-files.json +4 -4
  134. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  135. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  136. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  137. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  138. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  139. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  140. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  141. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  142. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  143. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  144. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  145. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  147. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  148. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  149. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  150. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  151. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  152. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  153. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  154. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  156. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  159. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  162. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  163. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  164. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  165. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  166. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  170. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  173. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  178. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  179. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  180. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  181. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  183. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  184. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  186. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  187. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  188. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  189. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  190. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  192. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  193. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  194. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  195. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  196. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  197. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  198. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  199. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  200. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  201. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  202. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  203. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  204. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  205. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  206. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  207. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  208. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  209. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  210. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  211. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  212. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  213. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  214. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  215. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  216. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  217. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  218. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  219. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  220. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  221. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  222. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  223. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  224. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  225. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  226. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  227. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  228. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  229. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  230. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  231. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  232. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  233. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  234. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  235. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  236. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  238. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  239. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  240. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  241. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  242. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  243. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  244. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  245. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  246. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  247. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  248. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  249. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  250. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  251. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  252. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  253. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  254. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  255. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  256. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  257. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
  258. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  259. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  260. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  261. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  263. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  264. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  265. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  266. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  267. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  268. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  269. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  270. package/dist/web/standalone/.next/server/app/index.html +1 -1
  271. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  272. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  273. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  274. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  275. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  276. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  277. package/dist/web/standalone/.next/server/app/page.js +2 -2
  278. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  279. package/dist/web/standalone/.next/server/app-paths-manifest.json +7 -7
  280. package/dist/web/standalone/.next/server/chunks/167.js +2 -0
  281. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  282. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  283. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  284. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  285. package/dist/web/standalone/.next/server/middleware.js +2 -2
  286. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  287. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  288. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  289. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  290. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  291. package/dist/web/standalone/.next/static/chunks/{8336.6f6f30e410419aff.js → 8336.631939fb583761fa.js} +1 -1
  292. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  293. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  294. package/dist/web/standalone/.next/static/chunks/app/page-fab3ebb85b006001.js +1 -0
  295. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  296. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  297. package/dist/web/standalone/.next/static/chunks/{webpack-d82dbee6356c1733.js → webpack-0481f1221120a7c6.js} +1 -1
  298. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  299. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  300. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  301. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  302. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  303. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  304. package/dist/web/standalone/package.json +1 -0
  305. package/dist/web/standalone/server.js +1 -1
  306. package/package.json +15 -6
  307. package/packages/contracts/dist/index.d.ts +3 -0
  308. package/packages/contracts/dist/index.d.ts.map +1 -0
  309. package/packages/contracts/dist/index.js +5 -0
  310. package/packages/contracts/dist/index.js.map +1 -0
  311. package/packages/contracts/dist/rpc.d.ts +549 -0
  312. package/packages/contracts/dist/rpc.d.ts.map +1 -0
  313. package/packages/contracts/dist/rpc.js +53 -0
  314. package/packages/contracts/dist/rpc.js.map +1 -0
  315. package/packages/contracts/dist/rpc.test.d.ts +2 -0
  316. package/packages/contracts/dist/rpc.test.d.ts.map +1 -0
  317. package/packages/contracts/dist/rpc.test.js +47 -0
  318. package/packages/contracts/dist/rpc.test.js.map +1 -0
  319. package/packages/contracts/dist/workflow.d.ts +180 -0
  320. package/packages/contracts/dist/workflow.d.ts.map +1 -0
  321. package/packages/contracts/dist/workflow.js +201 -0
  322. package/packages/contracts/dist/workflow.js.map +1 -0
  323. package/packages/contracts/package.json +39 -0
  324. package/packages/contracts/src/index.ts +5 -0
  325. package/packages/contracts/src/rpc.test.ts +72 -0
  326. package/packages/contracts/src/rpc.ts +286 -0
  327. package/packages/contracts/src/workflow.ts +213 -0
  328. package/packages/contracts/tsconfig.json +25 -0
  329. package/packages/daemon/package.json +3 -2
  330. package/packages/daemon/src/event-bridge.test.ts +2 -1
  331. package/packages/daemon/src/event-bridge.ts +1 -1
  332. package/packages/daemon/src/event-formatter.test.ts +1 -2
  333. package/packages/daemon/src/event-formatter.ts +1 -2
  334. package/packages/daemon/src/session-manager.ts +2 -2
  335. package/packages/daemon/src/types.ts +3 -18
  336. package/packages/mcp-server/dist/server.d.ts +13 -0
  337. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  338. package/packages/mcp-server/dist/server.js +77 -0
  339. package/packages/mcp-server/dist/server.js.map +1 -1
  340. package/packages/mcp-server/dist/session-manager.js +1 -1
  341. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  342. package/packages/mcp-server/dist/types.d.ts +3 -11
  343. package/packages/mcp-server/dist/types.d.ts.map +1 -1
  344. package/packages/mcp-server/dist/types.js.map +1 -1
  345. package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
  346. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  347. package/packages/mcp-server/dist/workflow-tools.js +52 -37
  348. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  349. package/packages/mcp-server/package.json +3 -2
  350. package/packages/mcp-server/src/mcp-server.test.ts +138 -0
  351. package/packages/mcp-server/src/server.ts +99 -1
  352. package/packages/mcp-server/src/session-manager.ts +2 -2
  353. package/packages/mcp-server/src/types.ts +7 -18
  354. package/packages/mcp-server/src/workflow-tools.test.ts +129 -2
  355. package/packages/mcp-server/src/workflow-tools.ts +80 -37
  356. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  357. package/packages/native/package.json +1 -1
  358. package/packages/pi-agent-core/package.json +1 -1
  359. package/packages/pi-ai/dist/models/fake-model.d.ts +12 -0
  360. package/packages/pi-ai/dist/models/fake-model.d.ts.map +1 -0
  361. package/packages/pi-ai/dist/models/fake-model.js +27 -0
  362. package/packages/pi-ai/dist/models/fake-model.js.map +1 -0
  363. package/packages/pi-ai/dist/models/index.d.ts.map +1 -1
  364. package/packages/pi-ai/dist/models/index.js +8 -0
  365. package/packages/pi-ai/dist/models/index.js.map +1 -1
  366. package/packages/pi-ai/dist/providers/fake.d.ts +42 -0
  367. package/packages/pi-ai/dist/providers/fake.d.ts.map +1 -0
  368. package/packages/pi-ai/dist/providers/fake.js +319 -0
  369. package/packages/pi-ai/dist/providers/fake.js.map +1 -0
  370. package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  371. package/packages/pi-ai/dist/providers/register-builtins.js +24 -0
  372. package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
  373. package/packages/pi-ai/package.json +1 -1
  374. package/packages/pi-ai/src/models/fake-model.ts +30 -0
  375. package/packages/pi-ai/src/models/index.ts +9 -0
  376. package/packages/pi-ai/src/providers/fake.ts +376 -0
  377. package/packages/pi-ai/src/providers/register-builtins.ts +23 -0
  378. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  379. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  380. package/packages/pi-coding-agent/dist/core/model-registry.js +5 -0
  381. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  382. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +4 -0
  383. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  384. package/packages/pi-coding-agent/dist/core/settings-manager.js +8 -0
  385. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  386. package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  387. package/packages/pi-coding-agent/dist/core/slash-commands.js +1 -0
  388. package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  389. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +22 -0
  390. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  391. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts +26 -0
  392. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts.map +1 -0
  393. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js +112 -0
  394. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js.map +1 -0
  395. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts +2 -0
  396. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts.map +1 -0
  397. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js +51 -0
  398. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js.map +1 -0
  399. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +8 -8
  400. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  401. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -0
  402. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  403. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +11 -0
  404. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  405. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +20 -0
  406. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -1
  407. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +4 -0
  408. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  409. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +48 -15
  410. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  411. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  412. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +1 -0
  413. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  414. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js +40 -1
  415. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js.map +1 -1
  416. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +1 -0
  417. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  418. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +1 -0
  419. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  420. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  421. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +12 -1
  422. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  423. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +54 -10
  424. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  425. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
  426. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +20 -0
  427. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  428. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts +2 -0
  429. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts.map +1 -0
  430. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js +79 -0
  431. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js.map +1 -0
  432. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  433. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  434. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +13 -0
  435. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  436. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -1
  437. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  438. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +18 -1
  439. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  440. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts +11 -0
  441. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts.map +1 -0
  442. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js +18 -0
  443. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js.map +1 -0
  444. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts +2 -0
  445. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts.map +1 -0
  446. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js +27 -0
  447. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js.map +1 -0
  448. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -512
  449. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  450. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js +3 -7
  451. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  452. package/packages/pi-coding-agent/package.json +2 -1
  453. package/packages/pi-coding-agent/src/core/model-registry.ts +4 -0
  454. package/packages/pi-coding-agent/src/core/settings-manager.ts +12 -0
  455. package/packages/pi-coding-agent/src/core/slash-commands.ts +1 -0
  456. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +37 -2
  457. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.test.ts +59 -0
  458. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.ts +160 -0
  459. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +8 -8
  460. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  461. package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +31 -0
  462. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +50 -15
  463. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.test.ts +43 -1
  464. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +1 -0
  465. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +1 -0
  466. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +1 -1
  467. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +75 -9
  468. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.test.ts +95 -0
  469. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +24 -1
  470. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +13 -0
  471. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +32 -2
  472. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.test.ts +40 -0
  473. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.ts +29 -0
  474. package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +3 -336
  475. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  476. package/packages/pi-tui/dist/__tests__/style.test.d.ts +2 -0
  477. package/packages/pi-tui/dist/__tests__/style.test.d.ts.map +1 -0
  478. package/packages/pi-tui/dist/__tests__/style.test.js +63 -0
  479. package/packages/pi-tui/dist/__tests__/style.test.js.map +1 -0
  480. package/packages/pi-tui/dist/__tests__/tui.test.js +24 -3
  481. package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
  482. package/packages/pi-tui/dist/index.d.ts +1 -0
  483. package/packages/pi-tui/dist/index.d.ts.map +1 -1
  484. package/packages/pi-tui/dist/index.js +2 -0
  485. package/packages/pi-tui/dist/index.js.map +1 -1
  486. package/packages/pi-tui/dist/style.d.ts +41 -0
  487. package/packages/pi-tui/dist/style.d.ts.map +1 -0
  488. package/packages/pi-tui/dist/style.js +158 -0
  489. package/packages/pi-tui/dist/style.js.map +1 -0
  490. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  491. package/packages/pi-tui/dist/tui.js +1 -0
  492. package/packages/pi-tui/dist/tui.js.map +1 -1
  493. package/packages/pi-tui/package.json +1 -1
  494. package/packages/pi-tui/src/__tests__/style.test.ts +76 -0
  495. package/packages/pi-tui/src/__tests__/tui.test.ts +29 -3
  496. package/packages/pi-tui/src/index.ts +9 -0
  497. package/packages/pi-tui/src/style.ts +225 -0
  498. package/packages/pi-tui/src/tui.ts +1 -0
  499. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  500. package/packages/rpc-client/README.md +3 -3
  501. package/packages/rpc-client/dist/index.d.ts +1 -1
  502. package/packages/rpc-client/dist/index.d.ts.map +1 -1
  503. package/packages/rpc-client/dist/index.js.map +1 -1
  504. package/packages/rpc-client/dist/rpc-client.d.ts +2 -6
  505. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -1
  506. package/packages/rpc-client/dist/rpc-client.js.map +1 -1
  507. package/packages/rpc-client/dist/rpc-types.d.ts +1 -565
  508. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -1
  509. package/packages/rpc-client/dist/rpc-types.js +3 -11
  510. package/packages/rpc-client/dist/rpc-types.js.map +1 -1
  511. package/packages/rpc-client/package.json +4 -1
  512. package/packages/rpc-client/src/index.ts +1 -1
  513. package/packages/rpc-client/src/rpc-client.ts +3 -6
  514. package/packages/rpc-client/src/rpc-types.ts +3 -398
  515. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  516. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  517. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  518. package/pkg/dist/modes/interactive/theme/theme-schema.js +13 -0
  519. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  520. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -1
  521. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  522. package/pkg/dist/modes/interactive/theme/theme.js +18 -1
  523. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  524. package/pkg/package.json +1 -1
  525. package/src/resources/extensions/github-sync/templates.ts +93 -88
  526. package/src/resources/extensions/github-sync/tests/inline-code.test.ts +66 -0
  527. package/src/resources/extensions/github-sync/tests/templates.test.ts +10 -2
  528. package/src/resources/extensions/gsd/auto/contracts.ts +87 -0
  529. package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +72 -0
  530. package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -3
  531. package/src/resources/extensions/gsd/auto/loop.ts +416 -596
  532. package/src/resources/extensions/gsd/auto/orchestrator.ts +161 -0
  533. package/src/resources/extensions/gsd/auto/phases.ts +88 -9
  534. package/src/resources/extensions/gsd/auto/run-unit.ts +24 -14
  535. package/src/resources/extensions/gsd/auto/session.ts +11 -0
  536. package/src/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.ts +28 -0
  537. package/src/resources/extensions/gsd/auto/workflow-custom-engine-iteration.ts +52 -0
  538. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.ts +58 -0
  539. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.ts +71 -0
  540. package/src/resources/extensions/gsd/auto/workflow-custom-engine-retry.ts +90 -0
  541. package/src/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.ts +50 -0
  542. package/src/resources/extensions/gsd/auto/workflow-dispatch-claim.ts +97 -0
  543. package/src/resources/extensions/gsd/auto/workflow-dispatch-ledger.ts +45 -0
  544. package/src/resources/extensions/gsd/auto/workflow-iteration-completion.ts +26 -0
  545. package/src/resources/extensions/gsd/auto/workflow-journal-reporter.ts +33 -0
  546. package/src/resources/extensions/gsd/auto/workflow-kernel.ts +520 -0
  547. package/src/resources/extensions/gsd/auto/workflow-memory-pressure.ts +58 -0
  548. package/src/resources/extensions/gsd/auto/workflow-phase-reporter.ts +22 -0
  549. package/src/resources/extensions/gsd/auto/workflow-session-lock.ts +68 -0
  550. package/src/resources/extensions/gsd/auto/workflow-sidecar-iteration.ts +46 -0
  551. package/src/resources/extensions/gsd/auto/workflow-sidecar-queue.ts +46 -0
  552. package/src/resources/extensions/gsd/auto/workflow-turn-reporter.ts +68 -0
  553. package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +89 -0
  554. package/src/resources/extensions/gsd/auto/workflow-worker-heartbeat.ts +38 -0
  555. package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
  556. package/src/resources/extensions/gsd/auto-dashboard.ts +61 -8
  557. package/src/resources/extensions/gsd/auto-dispatch.ts +1 -0
  558. package/src/resources/extensions/gsd/auto-prompts.ts +276 -31
  559. package/src/resources/extensions/gsd/auto-recovery.ts +84 -56
  560. package/src/resources/extensions/gsd/auto-runtime-state.ts +7 -0
  561. package/src/resources/extensions/gsd/auto-start.ts +3 -2
  562. package/src/resources/extensions/gsd/auto-verification.ts +5 -1
  563. package/src/resources/extensions/gsd/auto-worktree.ts +85 -36
  564. package/src/resources/extensions/gsd/auto.ts +167 -1
  565. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +30 -2
  566. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -0
  567. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
  568. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +79 -52
  569. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-shouldblock-basepath.test.ts +97 -0
  570. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +143 -5
  571. package/src/resources/extensions/gsd/commands/context.ts +1 -1
  572. package/src/resources/extensions/gsd/commands-ship.ts +24 -51
  573. package/src/resources/extensions/gsd/commands-workflow-templates.ts +13 -0
  574. package/src/resources/extensions/gsd/component-loader.ts +5 -11
  575. package/src/resources/extensions/gsd/custom-workflow-engine.ts +29 -0
  576. package/src/resources/extensions/gsd/db-adapter.ts +75 -0
  577. package/src/resources/extensions/gsd/db-base-schema.ts +368 -0
  578. package/src/resources/extensions/gsd/db-connection-cache.ts +45 -0
  579. package/src/resources/extensions/gsd/db-coordination-schema.ts +109 -0
  580. package/src/resources/extensions/gsd/db-decision-requirement-rows.ts +77 -0
  581. package/src/resources/extensions/gsd/db-gate-rows.ts +19 -0
  582. package/src/resources/extensions/gsd/db-lightweight-query-rows.ts +50 -0
  583. package/src/resources/extensions/gsd/db-memory-fts-schema.ts +66 -0
  584. package/src/resources/extensions/gsd/db-migration-backup.ts +34 -0
  585. package/src/resources/extensions/gsd/db-migration-steps.ts +434 -0
  586. package/src/resources/extensions/gsd/db-milestone-artifact-rows.ts +70 -0
  587. package/src/resources/extensions/gsd/db-open-state.ts +47 -0
  588. package/src/resources/extensions/gsd/db-provider.ts +148 -0
  589. package/src/resources/extensions/gsd/db-runtime-kv-schema.ts +30 -0
  590. package/src/resources/extensions/gsd/db-schema-metadata.ts +33 -0
  591. package/src/resources/extensions/gsd/db-task-slice-rows.ts +146 -0
  592. package/src/resources/extensions/gsd/db-transaction.ts +76 -0
  593. package/src/resources/extensions/gsd/db-verification-evidence-rows.ts +14 -0
  594. package/src/resources/extensions/gsd/db-verification-evidence-schema.ts +22 -0
  595. package/src/resources/extensions/gsd/escalation.ts +3 -1
  596. package/src/resources/extensions/gsd/graph.ts +12 -5
  597. package/src/resources/extensions/gsd/gsd-db.ts +260 -1659
  598. package/src/resources/extensions/gsd/guided-flow.ts +47 -0
  599. package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
  600. package/src/resources/extensions/gsd/legacy-telemetry.ts +99 -0
  601. package/src/resources/extensions/gsd/markdown-renderer.ts +4 -1
  602. package/src/resources/extensions/gsd/model-router.ts +10 -6
  603. package/src/resources/extensions/gsd/notification-widget.ts +25 -4
  604. package/src/resources/extensions/gsd/paths.ts +6 -1
  605. package/src/resources/extensions/gsd/post-execution-checks.ts +35 -7
  606. package/src/resources/extensions/gsd/pr-evidence.ts +182 -0
  607. package/src/resources/extensions/gsd/pre-execution-checks.ts +4 -1
  608. package/src/resources/extensions/gsd/preferences-types.ts +23 -4
  609. package/src/resources/extensions/gsd/preferences-validation.ts +3 -3
  610. package/src/resources/extensions/gsd/process-task-path.ts +81 -0
  611. package/src/resources/extensions/gsd/prompt-loader.ts +9 -5
  612. package/src/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  613. package/src/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  614. package/src/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  615. package/src/resources/extensions/gsd/prompts/discuss.md +81 -181
  616. package/src/resources/extensions/gsd/prompts/execute-task.md +40 -67
  617. package/src/resources/extensions/gsd/prompts/forensics.md +41 -84
  618. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  619. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  620. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  621. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  622. package/src/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  623. package/src/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  624. package/src/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  625. package/src/resources/extensions/gsd/prompts/queue.md +46 -53
  626. package/src/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  627. package/src/resources/extensions/gsd/prompts/research-slice.md +23 -23
  628. package/src/resources/extensions/gsd/prompts/rethink.md +10 -10
  629. package/src/resources/extensions/gsd/prompts/system.md +65 -107
  630. package/src/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  631. package/src/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  632. package/src/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  633. package/src/resources/extensions/gsd/state.ts +6 -3
  634. package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +38 -0
  635. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +98 -0
  636. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +117 -0
  637. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +353 -0
  638. package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +19 -0
  639. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +153 -1
  640. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +39 -0
  641. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +3 -0
  642. package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +2 -2
  643. package/src/resources/extensions/gsd/tests/check-auto-start-pending-gate.test.ts +203 -0
  644. package/src/resources/extensions/gsd/tests/check-auto-start-ready-guard.test.ts +148 -0
  645. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +2 -2
  646. package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +3 -2
  647. package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +47 -0
  648. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +19 -5
  649. package/src/resources/extensions/gsd/tests/component-loader.test.ts +2 -9
  650. package/src/resources/extensions/gsd/tests/current-directory-root-homedir-fallback.test.ts +63 -0
  651. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +144 -0
  652. package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +139 -0
  653. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +50 -0
  654. package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +3 -3
  655. package/src/resources/extensions/gsd/tests/db-adapter.test.ts +82 -0
  656. package/src/resources/extensions/gsd/tests/db-base-schema.test.ts +62 -0
  657. package/src/resources/extensions/gsd/tests/db-connection-cache.test.ts +60 -0
  658. package/src/resources/extensions/gsd/tests/db-coordination-schema.test.ts +39 -0
  659. package/src/resources/extensions/gsd/tests/db-decision-requirement-rows.test.ts +135 -0
  660. package/src/resources/extensions/gsd/tests/db-gate-rows.test.ts +53 -0
  661. package/src/resources/extensions/gsd/tests/db-lightweight-query-rows.test.ts +45 -0
  662. package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +86 -0
  663. package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +105 -0
  664. package/src/resources/extensions/gsd/tests/db-migration-steps.integration.test.ts +428 -0
  665. package/src/resources/extensions/gsd/tests/db-migration-steps.test.ts +159 -0
  666. package/src/resources/extensions/gsd/tests/db-milestone-artifact-rows.test.ts +53 -0
  667. package/src/resources/extensions/gsd/tests/db-open-state.test.ts +56 -0
  668. package/src/resources/extensions/gsd/tests/db-provider.test.ts +105 -0
  669. package/src/resources/extensions/gsd/tests/db-runtime-kv-schema.test.ts +37 -0
  670. package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +115 -0
  671. package/src/resources/extensions/gsd/tests/db-task-slice-rows.test.ts +128 -0
  672. package/src/resources/extensions/gsd/tests/db-transaction.test.ts +110 -0
  673. package/src/resources/extensions/gsd/tests/db-verification-evidence-schema.test.ts +76 -0
  674. package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +42 -0
  675. package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +63 -2
  676. package/src/resources/extensions/gsd/tests/discuss-headless-rendering.test.ts +37 -0
  677. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +109 -0
  678. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +59 -0
  679. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-basic.md +52 -0
  680. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-empty-optionals.md +42 -0
  681. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +55 -0
  682. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +60 -0
  683. package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +36 -0
  684. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +10 -0
  685. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +95 -0
  686. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +43 -0
  687. package/src/resources/extensions/gsd/tests/guided-discuss-project-prompt-rendering.test.ts +41 -0
  688. package/src/resources/extensions/gsd/tests/guided-discuss-requirements-prompt-rendering.test.ts +45 -0
  689. package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +14 -0
  690. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +79 -0
  691. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +37 -0
  692. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +5 -3
  693. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +134 -0
  694. package/src/resources/extensions/gsd/tests/legacy-component-format-telemetry.test.ts +62 -0
  695. package/src/resources/extensions/gsd/tests/legacy-telemetry.test.ts +144 -0
  696. package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +40 -16
  697. package/src/resources/extensions/gsd/tests/model-router.test.ts +33 -12
  698. package/src/resources/extensions/gsd/tests/notification-store.test.ts +8 -0
  699. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +40 -1
  700. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +8 -0
  701. package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +2 -0
  702. package/src/resources/extensions/gsd/tests/plan-milestone-rendering.test.ts +45 -0
  703. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +65 -16
  704. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +27 -0
  705. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +46 -0
  706. package/src/resources/extensions/gsd/tests/pr-evidence-equivalence.test.ts +102 -0
  707. package/src/resources/extensions/gsd/tests/pr-evidence-hardening.test.ts +165 -0
  708. package/src/resources/extensions/gsd/tests/pr-evidence.test.ts +79 -0
  709. package/src/resources/extensions/gsd/tests/pre-exec-gate-loop.test.ts +3 -0
  710. package/src/resources/extensions/gsd/tests/process-task-path.test.ts +51 -0
  711. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -1
  712. package/src/resources/extensions/gsd/tests/queue-prompt-rendering.test.ts +37 -0
  713. package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +85 -0
  714. package/src/resources/extensions/gsd/tests/run-uat-composer.test.ts +2 -0
  715. package/src/resources/extensions/gsd/tests/subagent-model-dispatch.test.ts +59 -0
  716. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +32 -9
  717. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +42 -4
  718. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +32 -0
  719. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +109 -1
  720. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +12 -0
  721. package/src/resources/extensions/gsd/tests/uok-loop-adapter-writer.test.ts +98 -0
  722. package/src/resources/extensions/gsd/tests/workflow-custom-engine-dispatch-outcome.test.ts +55 -0
  723. package/src/resources/extensions/gsd/tests/workflow-custom-engine-iteration.test.ts +93 -0
  724. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile-outcome.test.ts +108 -0
  725. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile.test.ts +146 -0
  726. package/src/resources/extensions/gsd/tests/workflow-custom-engine-retry.test.ts +136 -0
  727. package/src/resources/extensions/gsd/tests/workflow-custom-engine-verify-outcome.test.ts +95 -0
  728. package/src/resources/extensions/gsd/tests/workflow-dispatch-claim.test.ts +158 -0
  729. package/src/resources/extensions/gsd/tests/workflow-dispatch-ledger.test.ts +82 -0
  730. package/src/resources/extensions/gsd/tests/workflow-iteration-completion.test.ts +44 -0
  731. package/src/resources/extensions/gsd/tests/workflow-journal-reporter.test.ts +49 -0
  732. package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +607 -0
  733. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +20 -4
  734. package/src/resources/extensions/gsd/tests/workflow-memory-pressure.test.ts +71 -0
  735. package/src/resources/extensions/gsd/tests/workflow-phase-reporter.test.ts +40 -0
  736. package/src/resources/extensions/gsd/tests/workflow-session-lock.test.ts +135 -0
  737. package/src/resources/extensions/gsd/tests/workflow-sidecar-iteration.test.ts +110 -0
  738. package/src/resources/extensions/gsd/tests/workflow-sidecar-queue.test.ts +116 -0
  739. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +21 -0
  740. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +164 -3
  741. package/src/resources/extensions/gsd/tests/workflow-turn-reporter.test.ts +87 -0
  742. package/src/resources/extensions/gsd/tests/workflow-unit-dispatch.test.ts +160 -0
  743. package/src/resources/extensions/gsd/tests/workflow-worker-heartbeat.test.ts +123 -0
  744. package/src/resources/extensions/gsd/tests/working-output-messages.test.ts +93 -0
  745. package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +3 -0
  746. package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +17 -33
  747. package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +179 -0
  748. package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
  749. package/src/resources/extensions/gsd/tools/complete-task.ts +4 -1
  750. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +90 -2
  751. package/src/resources/extensions/gsd/unit-context-composer.ts +49 -0
  752. package/src/resources/extensions/gsd/unit-context-manifest.ts +34 -0
  753. package/src/resources/extensions/gsd/uok/audit.ts +25 -9
  754. package/src/resources/extensions/gsd/uok/contracts.ts +105 -0
  755. package/src/resources/extensions/gsd/uok/dispatch-envelope.ts +4 -0
  756. package/src/resources/extensions/gsd/uok/kernel.ts +10 -3
  757. package/src/resources/extensions/gsd/uok/loop-adapter.ts +60 -45
  758. package/src/resources/extensions/gsd/uok/plan-v2.ts +5 -1
  759. package/src/resources/extensions/gsd/uok/timeline.ts +158 -0
  760. package/src/resources/extensions/gsd/workflow-logger.ts +13 -13
  761. package/src/resources/extensions/gsd/workflow-manifest.ts +6 -15
  762. package/src/resources/extensions/gsd/workflow-projections.ts +5 -1
  763. package/src/resources/extensions/gsd/workflow-templates.ts +11 -0
  764. package/src/resources/extensions/gsd/working-output-messages.ts +120 -0
  765. package/src/resources/extensions/shared/gsd-phase-state.ts +56 -3
  766. package/src/resources/extensions/shared/interview-ui.ts +18 -5
  767. package/src/resources/extensions/shared/tests/gsd-phase-state.test.ts +43 -1
  768. package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +41 -0
  769. package/dist/web/standalone/.next/server/chunks/6336.js +0 -1
  770. package/dist/web/standalone/.next/static/chunks/app/page-ff639266d978f2a0.js +0 -1
  771. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  772. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  773. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → CaMwumvGbBPZrJicfsCzV}/_buildManifest.js +0 -0
  774. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → CaMwumvGbBPZrJicfsCzV}/_ssgManifest.js +0 -0
@@ -12,7 +12,7 @@ import { appendEvent } from "./workflow-events.js";
12
12
  import { atomicWriteSync } from "./atomic-write.js";
13
13
  import { clearParseCache } from "./files.js";
14
14
  import { parseRoadmap as parseLegacyRoadmap, parsePlan as parseLegacyPlan } from "./parsers-legacy.js";
15
- import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updateTaskStatus, updateSliceStatus, insertSlice, getMilestone } from "./gsd-db.js";
15
+ import { isDbAvailable, getTask, getSlice, getSliceTasks, getPendingGates, updateTaskStatus, updateSliceStatus, insertSlice, getMilestone, refreshOpenDatabaseFromDisk } from "./gsd-db.js";
16
16
  import { isValidationTerminal } from "./state.js";
17
17
  import { getErrorMessage } from "./error-utils.js";
18
18
  import { logWarning, logError } from "./workflow-logger.js";
@@ -120,7 +120,22 @@ export function hasImplementationArtifacts(basePath, milestoneId) {
120
120
  return "absent";
121
121
  return "unknown";
122
122
  }
123
- return classifyImplementationFiles(changedFiles);
123
+ const branchClassification = classifyImplementationFiles(changedFiles);
124
+ if (branchClassification === "present")
125
+ return "present";
126
+ // A completing milestone branch can have a non-empty diff containing only
127
+ // .gsd/ closeout files after implementation commits already landed on the
128
+ // recorded integration branch. In that topology, the branch diff alone is
129
+ // insufficient; use the same milestone-tagged evidence fallback as the
130
+ // self-diff retry path before declaring the milestone implementation-free.
131
+ if (milestoneId) {
132
+ const tagged = getChangedFilesFromMilestoneTaggedCommits(basePath, milestoneId);
133
+ if (!tagged.ok)
134
+ return "unknown";
135
+ if (tagged.matched)
136
+ return classifyImplementationFiles(tagged.files);
137
+ }
138
+ return "absent";
124
139
  }
125
140
  catch (e) {
126
141
  // Non-fatal — if git operations fail, return unknown so callers can decide
@@ -217,7 +232,7 @@ function getChangedFilesFromMilestoneTaggedCommits(basePath, milestoneId) {
217
232
  ]);
218
233
  if (!scoped.ok)
219
234
  return scoped;
220
- if (scoped.matched)
235
+ if (scoped.matched && classifyImplementationFiles(scoped.files) === "present")
221
236
  return scoped;
222
237
  // Fallback (#5033): when .gsd/ is gitignored / external / untracked, the
223
238
  // path-scoped scan matches no commits even though GSD-tagged commits
@@ -228,9 +243,18 @@ function getChangedFilesFromMilestoneTaggedCommits(basePath, milestoneId) {
228
243
  // Intentionally unbounded — symmetric with the primary scan, and avoids
229
244
  // reintroducing the rolling-depth failure class removed in #4699 where
230
245
  // milestone evidence aged out behind unrelated activity.
231
- return scanGsdTaggedCommits(basePath, milestoneId, [
246
+ const unscoped = scanGsdTaggedCommits(basePath, milestoneId, [
232
247
  "log", "--format=%H%x1f%B%x1e", "HEAD",
233
248
  ]);
249
+ if (!unscoped.ok)
250
+ return scoped.matched ? scoped : unscoped;
251
+ if (!unscoped.matched)
252
+ return scoped;
253
+ return {
254
+ ok: true,
255
+ matched: true,
256
+ files: [...new Set([...scoped.files, ...unscoped.files])],
257
+ };
234
258
  }
235
259
  function scanGsdTaggedCommits(basePath, milestoneId, gitArgs) {
236
260
  try {
@@ -257,7 +281,7 @@ function scanGsdTaggedCommits(basePath, milestoneId, gitArgs) {
257
281
  if (!commitMessageHasGsdTrailer(message))
258
282
  continue;
259
283
  const commitFiles = getChangedFilesForCommit(basePath, hash);
260
- if (!commitMatchesMilestone(message, milestoneId, commitFiles))
284
+ if (!commitMatchesMilestone(basePath, message, milestoneId, commitFiles))
261
285
  continue;
262
286
  matched = true;
263
287
  for (const file of commitFiles) {
@@ -278,22 +302,37 @@ function getChangedFilesForCommit(basePath, hash) {
278
302
  function commitMessageHasGsdTrailer(message) {
279
303
  return /^GSD-(?:Task|Unit):\s*\S+/m.test(message);
280
304
  }
281
- function commitMatchesMilestone(message, milestoneId, files) {
305
+ function commitMatchesMilestone(basePath, message, milestoneId, files) {
282
306
  if (commitTrailerStartsWithMilestone(message, milestoneId))
283
307
  return true;
284
308
  // Meaningful execute-task commits currently store task scope as Sxx/Tyy
285
309
  // rather than Mxx/Sxx/Tyy. Bind those commits back to the milestone when
286
310
  // either the commit touched this milestone's artifacts, or — for projects
287
311
  // where .gsd/ is gitignored/external (#5033) — the message explicitly
288
- // names the milestone.
312
+ // names the milestone or local GSD state proves the task belongs here.
289
313
  if (/^GSD-Task:\s*S[^/\s]+\/T\S+/m.test(message)) {
290
314
  if (files.some((file) => isMilestoneArtifactPath(file, milestoneId)))
291
315
  return true;
292
316
  if (commitMessageMentionsMilestone(message, milestoneId))
293
317
  return true;
318
+ if (commitTaskTrailerBelongsToMilestone(basePath, message, milestoneId))
319
+ return true;
294
320
  }
295
321
  return false;
296
322
  }
323
+ function commitTaskTrailerBelongsToMilestone(basePath, message, milestoneId) {
324
+ const match = message.match(/^GSD-Task:\s*(S[^/\s]+)\/(T[^\s]+)/m);
325
+ if (!match)
326
+ return false;
327
+ const [, sliceId, taskId] = match;
328
+ if (getTask(milestoneId, sliceId, taskId))
329
+ return true;
330
+ const tasksDir = resolveTasksDir(basePath, milestoneId, sliceId);
331
+ if (!tasksDir)
332
+ return false;
333
+ return existsSync(join(tasksDir, `${taskId}-PLAN.md`))
334
+ || existsSync(join(tasksDir, `${taskId}-SUMMARY.md`));
335
+ }
297
336
  function commitMessageMentionsMilestone(message, milestoneId) {
298
337
  if (!MILESTONE_ID_RE.test(milestoneId))
299
338
  return false;
@@ -495,66 +534,32 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
495
534
  return false;
496
535
  }
497
536
  }
498
- // plan-slice must produce a plan with actual task entries, not just a scaffold.
499
- // The plan file may exist from a prior discussion/context step with only headings
500
- // but no tasks. Without this check the artifact is considered "complete" and the
501
- // unit gets skipped — but deriveState still returns phase:"planning" because the
502
- // plan has no tasks, creating an infinite skip loop (#699).
503
- if (unitType === "plan-slice") {
504
- const planContent = readFileSync(absPath, "utf-8");
505
- // Accept checkbox-style (- [x] **T01: ...) or heading-style (### T01 -- / ### T01: / ### T01 —)
506
- const hasCheckboxTask = /^- \[[xX ]\] \*\*T\d+:/m.test(planContent);
507
- const hasHeadingTask = /^#{2,4}\s+T\d+\s*(?:--|—|:)/m.test(planContent);
508
- if (!hasCheckboxTask && !hasHeadingTask) {
509
- logWarning("recovery", `verify-fail ${unitType} ${unitId}: plan has no task checkbox/heading (len=${planContent.length}) at ${absPath}`);
510
- return false;
511
- }
512
- }
513
- // execute-task: DB status is authoritative. Fall back to checked-checkbox
514
- // detection when the DB is unavailable (unmigrated projects), or when the
515
- // disk artifacts already reflect completion but the DB replay is one beat
516
- // behind the completion write.
517
- if (unitType === "execute-task") {
518
- const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
519
- if (mid && sid && tid) {
520
- const dbTask = getTask(mid, sid, tid);
521
- if (dbTask) {
522
- if (dbTask.status !== "complete" && dbTask.status !== "done" && !hasCheckedTaskCompletionOnDisk(base, mid, sid, tid)) {
523
- return false;
524
- }
525
- }
526
- else if (!isDbAvailable()) {
527
- // LEGACY: Pre-migration fallback for projects without DB.
528
- // Require a CHECKED checkbox — a bare heading or unchecked checkbox
529
- // does not prove gsd_complete_task ran. Summary file on disk alone
530
- // is not sufficient evidence (could be a rogue write) (#3607).
531
- if (!hasCheckedTaskCompletionOnDisk(base, mid, sid, tid))
532
- return false;
533
- }
534
- else {
535
- // DB available but task row not found — completion tool never ran (#3607)
536
- return false;
537
- }
538
- }
539
- }
540
- // plan-slice must also produce individual task plan files for every task listed
541
- // in the slice plan. Without this check, a plan-slice that wrote S{sid}-PLAN.md
542
- // but omitted T{tid}-PLAN.md files would be marked complete, causing execute-task
543
- // to dispatch with a missing task plan (see issue #739).
537
+ // plan-slice verification is DB-primary. The slice plan is a projection, so
538
+ // DB task rows prove the slice was planned even if the rendered markdown no
539
+ // longer uses legacy checkbox/heading syntax.
544
540
  if (unitType === "plan-slice") {
545
541
  const { milestone: mid, slice: sid } = parseUnitId(unitId);
546
542
  if (mid && sid) {
547
543
  try {
548
- // DB primary path — get task IDs to verify task plan files exist
549
544
  let taskIds = null;
550
545
  if (isDbAvailable()) {
551
- const tasks = getSliceTasks(mid, sid);
552
- if (tasks.length > 0)
553
- taskIds = tasks.map(t => t.id);
546
+ const refreshed = refreshOpenDatabaseFromDisk();
547
+ if (refreshed) {
548
+ const tasks = getSliceTasks(mid, sid);
549
+ if (tasks.length > 0)
550
+ taskIds = tasks.map(t => t.id);
551
+ }
554
552
  }
555
553
  if (!taskIds) {
556
- // LEGACY: DB unavailable or no tasks in DB parse plan file for task IDs
554
+ // LEGACY: DB unavailable or no tasks in DB. Require actual task
555
+ // entries so an empty scaffold cannot advance the pipeline (#699).
557
556
  const planContent = readFileSync(absPath, "utf-8");
557
+ const hasCheckboxTask = /^\s*- \[[xX ]\] \*\*T\d+:/m.test(planContent);
558
+ const hasHeadingTask = /^\s*#{2,4}\s+T\d+\s*(?:--|—|:)/m.test(planContent);
559
+ if (!hasCheckboxTask && !hasHeadingTask) {
560
+ logWarning("recovery", `verify-fail ${unitType} ${unitId}: plan has no task checkbox/heading (len=${planContent.length}) at ${absPath}`);
561
+ return false;
562
+ }
558
563
  const plan = parseLegacyPlan(planContent);
559
564
  if (plan.tasks.length > 0)
560
565
  taskIds = plan.tasks.map((t) => t.id);
@@ -580,6 +585,33 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
580
585
  }
581
586
  }
582
587
  }
588
+ // execute-task: DB status is authoritative. Fall back to checked-checkbox
589
+ // detection when the DB is unavailable (unmigrated projects), or when the
590
+ // disk artifacts already reflect completion but the DB replay is one beat
591
+ // behind the completion write.
592
+ if (unitType === "execute-task") {
593
+ const { milestone: mid, slice: sid, task: tid } = parseUnitId(unitId);
594
+ if (mid && sid && tid) {
595
+ const dbTask = getTask(mid, sid, tid);
596
+ if (dbTask) {
597
+ if (dbTask.status !== "complete" && dbTask.status !== "done" && !hasCheckedTaskCompletionOnDisk(base, mid, sid, tid)) {
598
+ return false;
599
+ }
600
+ }
601
+ else if (!isDbAvailable()) {
602
+ // LEGACY: Pre-migration fallback for projects without DB.
603
+ // Require a CHECKED checkbox — a bare heading or unchecked checkbox
604
+ // does not prove gsd_complete_task ran. Summary file on disk alone
605
+ // is not sufficient evidence (could be a rogue write) (#3607).
606
+ if (!hasCheckedTaskCompletionOnDisk(base, mid, sid, tid))
607
+ return false;
608
+ }
609
+ else {
610
+ // DB available but task row not found — completion tool never ran (#3607)
611
+ return false;
612
+ }
613
+ }
614
+ }
583
615
  // complete-slice: DB status is authoritative for whether the slice is done.
584
616
  // Fall back to file-based check (roadmap [x]) when DB is unavailable.
585
617
  if (unitType === "complete-slice") {
@@ -3,11 +3,15 @@ import { AutoSession } from "./auto/session.js";
3
3
  import { isDeterministicPolicyError, isQueuedUserMessageSkip, isToolInvocationError, markToolEnd as markTrackedToolEnd, markToolStart as markTrackedToolStart, } from "./auto-tool-tracking.js";
4
4
  export const autoSession = new AutoSession();
5
5
  export function getAutoRuntimeSnapshot() {
6
+ const orchestrationStatus = autoSession.orchestration?.getStatus();
6
7
  return {
7
8
  active: autoSession.active,
8
9
  paused: autoSession.paused,
9
10
  currentUnit: autoSession.currentUnit ? { ...autoSession.currentUnit } : null,
10
11
  basePath: autoSession.basePath,
12
+ orchestrationPhase: orchestrationStatus?.phase,
13
+ orchestrationTransitionCount: orchestrationStatus?.transitionCount,
14
+ orchestrationLastTransitionAt: orchestrationStatus?.lastTransitionAt,
11
15
  };
12
16
  }
13
17
  export function isAutoActive() {
@@ -486,8 +486,9 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
486
486
  // Clear survivor flag — finalization is done
487
487
  hasSurvivorBranch = false;
488
488
  }
489
+ const effectivePrefs = loadEffectiveGSDPreferences(base)?.preferences;
489
490
  const deepProjectStagePending = !hasSurvivorBranch
490
- ? (await import("./auto-dispatch.js")).hasPendingDeepStage(loadEffectiveGSDPreferences(base)?.preferences, base)
491
+ ? (await import("./auto-dispatch.js")).hasPendingDeepStage(effectivePrefs, base)
491
492
  : false;
492
493
  if (deepProjectStagePending) {
493
494
  // Deep project-level setup runs before the first milestone exists. Let
@@ -526,7 +527,7 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
526
527
  const mid = state.activeMilestone.id;
527
528
  const contextFile = resolveMilestoneFile(base, mid, "CONTEXT");
528
529
  const hasContext = !!(contextFile && (await loadFile(contextFile)));
529
- if (!hasContext) {
530
+ if (!hasContext && effectivePrefs?.planning_depth !== "deep") {
530
531
  const { showSmartEntry } = await import("./guided-flow.js");
531
532
  await showSmartEntry(ctx, pi, base, { step: requestedStepMode });
532
533
  // showSmartEntry dispatches via pi.sendMessage() which is fire-and-forget:
@@ -1,14 +1,5 @@
1
- /**
2
- * Post-unit verification gate for auto-mode.
3
- *
4
- * Runs typecheck/lint/test checks, captures runtime errors, performs
5
- * dependency audits, handles auto-fix retry logic, and writes
6
- * verification evidence JSON.
7
- *
8
- * Extracted from the pre-loop agent_end handler in auto.ts. Returns a
9
- * sentinel value instead of calling return/pauseAuto directly — the
10
- * caller checks the result and handles control flow.
11
- */
1
+ // Project/App: GSD-2
2
+ // File Purpose: Post-unit verification gate for GSD auto-mode units.
12
3
  import { mkdirSync, writeFileSync } from "node:fs";
13
4
  import { resolveSlicePath, resolveMilestoneFile } from "./paths.js";
14
5
  import { parseUnitId } from "./unit-id.js";
@@ -1,3 +1,5 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Auto-mode worktree lifecycle, merge, and cleanup management.
1
3
  /**
2
4
  * GSD Auto-Worktree -- lifecycle management for auto-mode worktrees.
3
5
  *
@@ -6,7 +8,7 @@
6
8
  * manages create, enter, detect, and teardown for auto-mode worktrees.
7
9
  */
8
10
  import { existsSync, cpSync, readFileSync, readdirSync, mkdirSync, realpathSync, rmSync, unlinkSync, statSync, lstatSync as lstatSyncFn, } from "node:fs";
9
- import { isAbsolute, join, sep as pathSep } from "node:path";
11
+ import { isAbsolute, join, relative, sep as pathSep } from "node:path";
10
12
  import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js";
11
13
  import { reconcileWorktreeDb, isDbAvailable, getMilestone, getMilestoneSlices, closeDatabase, openDatabase, getDbPath, } from "./gsd-db.js";
12
14
  import { execFileSync } from "node:child_process";
@@ -15,7 +17,8 @@ import { gsdRoot, resolveGsdPathContract } from "./paths.js";
15
17
  import { createWorktree, removeWorktree, resolveGitDir, worktreePath, isInsideWorktreesDir, } from "./worktree-manager.js";
16
18
  import { detectWorktreeName, nudgeGitBranchCache, } from "./worktree.js";
17
19
  import { isGsdWorktreePath, normalizeWorktreePathForCompare, resolveWorktreeProjectRoot, } from "./worktree-root.js";
18
- import { MergeConflictError, readIntegrationBranch, RUNTIME_EXCLUSION_PATHS } from "./git-service.js";
20
+ import { MergeConflictError, createDraftPR, readIntegrationBranch, RUNTIME_EXCLUSION_PATHS } from "./git-service.js";
21
+ import { buildPrEvidence } from "./pr-evidence.js";
19
22
  import { debugLog } from "./debug-logger.js";
20
23
  import { logWarning, logError } from "./workflow-logger.js";
21
24
  import { loadEffectiveGSDPreferences } from "./preferences.js";
@@ -203,6 +206,41 @@ function setActiveWorkspace(ws) {
203
206
  function getActiveWorkspace() {
204
207
  return activeWorkspace;
205
208
  }
209
+ function gitPathspecForWorktreePath(basePath, targetPath) {
210
+ let base = basePath;
211
+ let target = targetPath;
212
+ try {
213
+ base = realpathSync.native(basePath);
214
+ }
215
+ catch {
216
+ /* keep original */
217
+ void base;
218
+ }
219
+ try {
220
+ target = realpathSync.native(targetPath);
221
+ }
222
+ catch {
223
+ /* keep original */
224
+ void target;
225
+ }
226
+ const rel = relative(base, target);
227
+ if (rel === "" || rel.startsWith("..") || isAbsolute(rel))
228
+ return null;
229
+ return rel.replaceAll("\\", "/");
230
+ }
231
+ function gitRemoteExists(basePath, remote) {
232
+ try {
233
+ execFileSync("git", ["remote", "get-url", remote], {
234
+ cwd: basePath,
235
+ stdio: ["ignore", "pipe", "pipe"],
236
+ encoding: "utf-8",
237
+ });
238
+ return true;
239
+ }
240
+ catch {
241
+ return false;
242
+ }
243
+ }
206
244
  function clearProjectRootStateFiles(basePath, milestoneId) {
207
245
  const gsdDir = gsdRoot(basePath);
208
246
  // Phase C pt 2: auto.lock removed from this list — the file is gone
@@ -236,9 +274,12 @@ function clearProjectRootStateFiles(basePath, milestoneId) {
236
274
  for (const dir of syncedDirs) {
237
275
  try {
238
276
  if (existsSync(dir)) {
277
+ const pathspec = gitPathspecForWorktreePath(basePath, dir);
278
+ if (!pathspec)
279
+ continue;
239
280
  // Only remove files that are untracked by git — tracked files are
240
281
  // managed by the branch checkout and should not be deleted.
241
- const untrackedOutput = execFileSync("git", ["ls-files", "--others", "--exclude-standard", dir], { cwd: basePath, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
282
+ const untrackedOutput = execFileSync("git", ["ls-files", "--others", "--exclude-standard", pathspec], { cwd: basePath, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
242
283
  if (untrackedOutput) {
243
284
  for (const f of untrackedOutput.split("\n").filter(Boolean)) {
244
285
  try {
@@ -1899,17 +1940,19 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1899
1940
  let pushed = false;
1900
1941
  if (prefs.auto_push === true && prefs.auto_pr !== true && !nothingToCommit) {
1901
1942
  const remote = prefs.remote ?? "origin";
1902
- try {
1903
- execFileSync("git", ["push", remote, mainBranch], {
1904
- cwd: originalBasePath_,
1905
- stdio: ["ignore", "pipe", "pipe"],
1906
- encoding: "utf-8",
1907
- });
1908
- pushed = true;
1909
- }
1910
- catch (err) {
1911
- // Push failure is non-fatal
1912
- logWarning("worktree", `git push failed: ${err instanceof Error ? err.message : String(err)}`);
1943
+ if (gitRemoteExists(originalBasePath_, remote)) {
1944
+ try {
1945
+ execFileSync("git", ["push", remote, mainBranch], {
1946
+ cwd: originalBasePath_,
1947
+ stdio: ["ignore", "pipe", "pipe"],
1948
+ encoding: "utf-8",
1949
+ });
1950
+ pushed = true;
1951
+ }
1952
+ catch (err) {
1953
+ // Push failure is non-fatal
1954
+ logWarning("worktree", `git push failed: ${err instanceof Error ? err.message : String(err)}`);
1955
+ }
1913
1956
  }
1914
1957
  }
1915
1958
  // 9b. Auto-create PR if enabled (#2302: no longer gated on pushed/auto_push)
@@ -1917,30 +1960,36 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1917
1960
  if (prefs.auto_pr === true && !nothingToCommit) {
1918
1961
  const remote = prefs.remote ?? "origin";
1919
1962
  const prTarget = prefs.pr_target_branch ?? mainBranch;
1920
- try {
1921
- // Push the milestone branch to remote first
1922
- execFileSync("git", ["push", remote, milestoneBranch], {
1923
- cwd: originalBasePath_,
1924
- stdio: ["ignore", "pipe", "pipe"],
1925
- encoding: "utf-8",
1926
- });
1927
- // Create PR via gh CLI with explicit --head and --base (#2302)
1928
- execFileSync("gh", [
1929
- "pr", "create", "--draft",
1930
- "--base", prTarget,
1931
- "--head", milestoneBranch,
1932
- "--title", `Milestone ${milestoneId} complete`,
1933
- "--body", "Auto-created by GSD on milestone completion.",
1934
- ], {
1935
- cwd: originalBasePath_,
1936
- stdio: ["ignore", "pipe", "pipe"],
1937
- encoding: "utf-8",
1938
- });
1939
- prCreated = true;
1940
- }
1941
- catch (err) {
1942
- // PR creation failure is non-fatal — gh may not be installed or authenticated
1943
- logWarning("worktree", `PR creation failed: ${err instanceof Error ? err.message : String(err)}`);
1963
+ if (gitRemoteExists(originalBasePath_, remote)) {
1964
+ try {
1965
+ // Push the milestone branch to remote first
1966
+ execFileSync("git", ["push", remote, milestoneBranch], {
1967
+ cwd: originalBasePath_,
1968
+ stdio: ["ignore", "pipe", "pipe"],
1969
+ encoding: "utf-8",
1970
+ });
1971
+ const prEvidence = buildPrEvidence({
1972
+ milestoneId,
1973
+ milestoneTitle,
1974
+ changeType: "feat",
1975
+ summaries: completedSlices.map((slice) => `### ${slice.id}\n${slice.title}`),
1976
+ testsRun: ["Auto-created after milestone merge. Run `npm run verify:pr` before marking this draft ready."],
1977
+ rollbackNotes: ["Close the draft PR or revert the merge commit if review finds a behavior regression."],
1978
+ how: "Generated by git.auto_pr after the milestone branch was pushed and merged locally.",
1979
+ });
1980
+ const prUrl = createDraftPR(originalBasePath_, milestoneId, prEvidence.title, prEvidence.body, {
1981
+ head: milestoneBranch,
1982
+ base: prTarget,
1983
+ });
1984
+ if (!prUrl) {
1985
+ throw new Error("gh pr create returned no URL");
1986
+ }
1987
+ prCreated = true;
1988
+ }
1989
+ catch (err) {
1990
+ // PR creation failure is non-fatal — gh may not be installed or authenticated
1991
+ logWarning("worktree", `PR creation failed: ${err instanceof Error ? err.message : String(err)}`);
1992
+ }
1944
1993
  }
1945
1994
  }
1946
1995
  // 11. Guard removed — step 9b (#1792) now handles this with a smarter check: