gsd-pi 2.79.0 → 2.80.0-dev.8b3a59f5c

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 (780) 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 +216 -62
  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-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 +40 -0
  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 +11 -11
  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 +11 -11
  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 +15 -6
  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 +44 -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/model-registry.d.ts.map +1 -1
  383. package/packages/pi-coding-agent/dist/core/model-registry.js +5 -0
  384. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  385. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +4 -0
  386. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  387. package/packages/pi-coding-agent/dist/core/settings-manager.js +8 -0
  388. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  389. package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  390. package/packages/pi-coding-agent/dist/core/slash-commands.js +1 -0
  391. package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  392. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +49 -1
  393. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  394. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts +26 -0
  395. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts.map +1 -0
  396. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js +112 -0
  397. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js.map +1 -0
  398. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts +2 -0
  399. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts.map +1 -0
  400. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js +51 -0
  401. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js.map +1 -0
  402. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +8 -8
  403. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  404. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -0
  405. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  406. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +11 -0
  407. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  408. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +20 -0
  409. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -1
  410. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +16 -0
  411. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  412. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +99 -15
  413. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  414. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  415. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +58 -1
  416. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  417. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js +40 -1
  418. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js.map +1 -1
  419. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +1 -0
  420. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  421. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +1 -0
  422. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  423. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  424. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +12 -1
  425. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  426. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +54 -10
  427. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  428. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
  429. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +20 -0
  430. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  431. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts +2 -0
  432. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts.map +1 -0
  433. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js +79 -0
  434. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js.map +1 -0
  435. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  436. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  437. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +13 -0
  438. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  439. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -1
  440. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  441. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +18 -1
  442. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  443. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts +11 -0
  444. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts.map +1 -0
  445. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js +18 -0
  446. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js.map +1 -0
  447. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts +2 -0
  448. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts.map +1 -0
  449. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js +27 -0
  450. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js.map +1 -0
  451. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -512
  452. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  453. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js +3 -7
  454. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  455. package/packages/pi-coding-agent/package.json +2 -1
  456. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +51 -0
  457. package/packages/pi-coding-agent/src/core/model-registry.ts +4 -0
  458. package/packages/pi-coding-agent/src/core/settings-manager.ts +12 -0
  459. package/packages/pi-coding-agent/src/core/slash-commands.ts +1 -0
  460. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +82 -3
  461. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.test.ts +59 -0
  462. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.ts +160 -0
  463. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +8 -8
  464. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  465. package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +31 -0
  466. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +105 -15
  467. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.test.ts +43 -1
  468. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +73 -1
  469. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +1 -0
  470. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +1 -1
  471. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +75 -9
  472. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.test.ts +95 -0
  473. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +24 -1
  474. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +13 -0
  475. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +32 -2
  476. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.test.ts +40 -0
  477. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.ts +29 -0
  478. package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +3 -336
  479. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  480. package/packages/pi-tui/dist/__tests__/style.test.d.ts +2 -0
  481. package/packages/pi-tui/dist/__tests__/style.test.d.ts.map +1 -0
  482. package/packages/pi-tui/dist/__tests__/style.test.js +63 -0
  483. package/packages/pi-tui/dist/__tests__/style.test.js.map +1 -0
  484. package/packages/pi-tui/dist/__tests__/tui.test.js +24 -3
  485. package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
  486. package/packages/pi-tui/dist/index.d.ts +1 -0
  487. package/packages/pi-tui/dist/index.d.ts.map +1 -1
  488. package/packages/pi-tui/dist/index.js +2 -0
  489. package/packages/pi-tui/dist/index.js.map +1 -1
  490. package/packages/pi-tui/dist/style.d.ts +41 -0
  491. package/packages/pi-tui/dist/style.d.ts.map +1 -0
  492. package/packages/pi-tui/dist/style.js +158 -0
  493. package/packages/pi-tui/dist/style.js.map +1 -0
  494. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  495. package/packages/pi-tui/dist/tui.js +1 -0
  496. package/packages/pi-tui/dist/tui.js.map +1 -1
  497. package/packages/pi-tui/package.json +1 -1
  498. package/packages/pi-tui/src/__tests__/style.test.ts +76 -0
  499. package/packages/pi-tui/src/__tests__/tui.test.ts +29 -3
  500. package/packages/pi-tui/src/index.ts +9 -0
  501. package/packages/pi-tui/src/style.ts +225 -0
  502. package/packages/pi-tui/src/tui.ts +1 -0
  503. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  504. package/packages/rpc-client/README.md +3 -3
  505. package/packages/rpc-client/dist/index.d.ts +1 -1
  506. package/packages/rpc-client/dist/index.d.ts.map +1 -1
  507. package/packages/rpc-client/dist/index.js.map +1 -1
  508. package/packages/rpc-client/dist/rpc-client.d.ts +2 -6
  509. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -1
  510. package/packages/rpc-client/dist/rpc-client.js.map +1 -1
  511. package/packages/rpc-client/dist/rpc-types.d.ts +1 -565
  512. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -1
  513. package/packages/rpc-client/dist/rpc-types.js +3 -11
  514. package/packages/rpc-client/dist/rpc-types.js.map +1 -1
  515. package/packages/rpc-client/package.json +4 -1
  516. package/packages/rpc-client/src/index.ts +1 -1
  517. package/packages/rpc-client/src/rpc-client.ts +3 -6
  518. package/packages/rpc-client/src/rpc-types.ts +3 -398
  519. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  520. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  521. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  522. package/pkg/dist/modes/interactive/theme/theme-schema.js +13 -0
  523. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  524. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -1
  525. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  526. package/pkg/dist/modes/interactive/theme/theme.js +18 -1
  527. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  528. package/pkg/package.json +1 -1
  529. package/src/resources/extensions/github-sync/templates.ts +93 -88
  530. package/src/resources/extensions/github-sync/tests/inline-code.test.ts +66 -0
  531. package/src/resources/extensions/github-sync/tests/templates.test.ts +10 -2
  532. package/src/resources/extensions/gsd/auto/contracts.ts +87 -0
  533. package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +72 -0
  534. package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -3
  535. package/src/resources/extensions/gsd/auto/loop.ts +416 -596
  536. package/src/resources/extensions/gsd/auto/orchestrator.ts +161 -0
  537. package/src/resources/extensions/gsd/auto/phases.ts +88 -9
  538. package/src/resources/extensions/gsd/auto/run-unit.ts +24 -14
  539. package/src/resources/extensions/gsd/auto/session.ts +11 -0
  540. package/src/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.ts +28 -0
  541. package/src/resources/extensions/gsd/auto/workflow-custom-engine-iteration.ts +52 -0
  542. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.ts +58 -0
  543. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.ts +71 -0
  544. package/src/resources/extensions/gsd/auto/workflow-custom-engine-retry.ts +90 -0
  545. package/src/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.ts +50 -0
  546. package/src/resources/extensions/gsd/auto/workflow-dispatch-claim.ts +97 -0
  547. package/src/resources/extensions/gsd/auto/workflow-dispatch-ledger.ts +45 -0
  548. package/src/resources/extensions/gsd/auto/workflow-iteration-completion.ts +26 -0
  549. package/src/resources/extensions/gsd/auto/workflow-journal-reporter.ts +33 -0
  550. package/src/resources/extensions/gsd/auto/workflow-kernel.ts +520 -0
  551. package/src/resources/extensions/gsd/auto/workflow-memory-pressure.ts +58 -0
  552. package/src/resources/extensions/gsd/auto/workflow-phase-reporter.ts +22 -0
  553. package/src/resources/extensions/gsd/auto/workflow-session-lock.ts +68 -0
  554. package/src/resources/extensions/gsd/auto/workflow-sidecar-iteration.ts +46 -0
  555. package/src/resources/extensions/gsd/auto/workflow-sidecar-queue.ts +46 -0
  556. package/src/resources/extensions/gsd/auto/workflow-turn-reporter.ts +68 -0
  557. package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +89 -0
  558. package/src/resources/extensions/gsd/auto/workflow-worker-heartbeat.ts +38 -0
  559. package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
  560. package/src/resources/extensions/gsd/auto-dashboard.ts +61 -8
  561. package/src/resources/extensions/gsd/auto-dispatch.ts +1 -0
  562. package/src/resources/extensions/gsd/auto-prompts.ts +276 -31
  563. package/src/resources/extensions/gsd/auto-recovery.ts +211 -59
  564. package/src/resources/extensions/gsd/auto-runtime-state.ts +7 -0
  565. package/src/resources/extensions/gsd/auto-start.ts +3 -2
  566. package/src/resources/extensions/gsd/auto-verification.ts +5 -1
  567. package/src/resources/extensions/gsd/auto-worktree.ts +85 -36
  568. package/src/resources/extensions/gsd/auto.ts +167 -1
  569. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +30 -2
  570. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -0
  571. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
  572. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +79 -52
  573. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-shouldblock-basepath.test.ts +97 -0
  574. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +143 -5
  575. package/src/resources/extensions/gsd/commands/context.ts +1 -1
  576. package/src/resources/extensions/gsd/commands-extract-learnings.ts +17 -12
  577. package/src/resources/extensions/gsd/commands-ship.ts +24 -51
  578. package/src/resources/extensions/gsd/commands-workflow-templates.ts +13 -0
  579. package/src/resources/extensions/gsd/component-loader.ts +5 -11
  580. package/src/resources/extensions/gsd/custom-workflow-engine.ts +29 -0
  581. package/src/resources/extensions/gsd/db-adapter.ts +75 -0
  582. package/src/resources/extensions/gsd/db-base-schema.ts +383 -0
  583. package/src/resources/extensions/gsd/db-connection-cache.ts +45 -0
  584. package/src/resources/extensions/gsd/db-coordination-schema.ts +109 -0
  585. package/src/resources/extensions/gsd/db-decision-requirement-rows.ts +77 -0
  586. package/src/resources/extensions/gsd/db-gate-rows.ts +19 -0
  587. package/src/resources/extensions/gsd/db-lightweight-query-rows.ts +50 -0
  588. package/src/resources/extensions/gsd/db-memory-fts-schema.ts +66 -0
  589. package/src/resources/extensions/gsd/db-migration-backup.ts +34 -0
  590. package/src/resources/extensions/gsd/db-migration-steps.ts +451 -0
  591. package/src/resources/extensions/gsd/db-milestone-artifact-rows.ts +70 -0
  592. package/src/resources/extensions/gsd/db-open-state.ts +47 -0
  593. package/src/resources/extensions/gsd/db-provider.ts +148 -0
  594. package/src/resources/extensions/gsd/db-runtime-kv-schema.ts +30 -0
  595. package/src/resources/extensions/gsd/db-schema-metadata.ts +33 -0
  596. package/src/resources/extensions/gsd/db-task-slice-rows.ts +146 -0
  597. package/src/resources/extensions/gsd/db-transaction.ts +76 -0
  598. package/src/resources/extensions/gsd/db-verification-evidence-rows.ts +14 -0
  599. package/src/resources/extensions/gsd/db-verification-evidence-schema.ts +22 -0
  600. package/src/resources/extensions/gsd/escalation.ts +3 -1
  601. package/src/resources/extensions/gsd/graph.ts +12 -5
  602. package/src/resources/extensions/gsd/gsd-db.ts +379 -1660
  603. package/src/resources/extensions/gsd/guided-flow.ts +47 -0
  604. package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
  605. package/src/resources/extensions/gsd/legacy-telemetry.ts +99 -0
  606. package/src/resources/extensions/gsd/markdown-renderer.ts +4 -1
  607. package/src/resources/extensions/gsd/model-router.ts +10 -6
  608. package/src/resources/extensions/gsd/notification-widget.ts +25 -4
  609. package/src/resources/extensions/gsd/paths.ts +6 -1
  610. package/src/resources/extensions/gsd/post-execution-checks.ts +35 -7
  611. package/src/resources/extensions/gsd/pr-evidence.ts +182 -0
  612. package/src/resources/extensions/gsd/pre-execution-checks.ts +4 -1
  613. package/src/resources/extensions/gsd/preferences-types.ts +23 -4
  614. package/src/resources/extensions/gsd/preferences-validation.ts +3 -3
  615. package/src/resources/extensions/gsd/process-task-path.ts +81 -0
  616. package/src/resources/extensions/gsd/prompt-loader.ts +9 -5
  617. package/src/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  618. package/src/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  619. package/src/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  620. package/src/resources/extensions/gsd/prompts/discuss.md +81 -181
  621. package/src/resources/extensions/gsd/prompts/execute-task.md +40 -67
  622. package/src/resources/extensions/gsd/prompts/forensics.md +41 -84
  623. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  624. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  625. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  626. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  627. package/src/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  628. package/src/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  629. package/src/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  630. package/src/resources/extensions/gsd/prompts/queue.md +46 -53
  631. package/src/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  632. package/src/resources/extensions/gsd/prompts/research-slice.md +23 -23
  633. package/src/resources/extensions/gsd/prompts/rethink.md +10 -10
  634. package/src/resources/extensions/gsd/prompts/system.md +65 -107
  635. package/src/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  636. package/src/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  637. package/src/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  638. package/src/resources/extensions/gsd/state.ts +6 -3
  639. package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +38 -0
  640. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +98 -0
  641. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +117 -0
  642. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +353 -0
  643. package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +19 -0
  644. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +277 -1
  645. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +39 -0
  646. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +3 -0
  647. package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +2 -2
  648. package/src/resources/extensions/gsd/tests/check-auto-start-pending-gate.test.ts +203 -0
  649. package/src/resources/extensions/gsd/tests/check-auto-start-ready-guard.test.ts +148 -0
  650. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +2 -2
  651. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +9 -0
  652. package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +3 -2
  653. package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +47 -0
  654. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +19 -5
  655. package/src/resources/extensions/gsd/tests/component-loader.test.ts +2 -9
  656. package/src/resources/extensions/gsd/tests/current-directory-root-homedir-fallback.test.ts +63 -0
  657. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +144 -0
  658. package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +139 -0
  659. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +50 -0
  660. package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +3 -3
  661. package/src/resources/extensions/gsd/tests/db-adapter.test.ts +82 -0
  662. package/src/resources/extensions/gsd/tests/db-base-schema.test.ts +62 -0
  663. package/src/resources/extensions/gsd/tests/db-connection-cache.test.ts +60 -0
  664. package/src/resources/extensions/gsd/tests/db-coordination-schema.test.ts +39 -0
  665. package/src/resources/extensions/gsd/tests/db-decision-requirement-rows.test.ts +135 -0
  666. package/src/resources/extensions/gsd/tests/db-gate-rows.test.ts +53 -0
  667. package/src/resources/extensions/gsd/tests/db-lightweight-query-rows.test.ts +45 -0
  668. package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +86 -0
  669. package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +105 -0
  670. package/src/resources/extensions/gsd/tests/db-migration-steps.integration.test.ts +428 -0
  671. package/src/resources/extensions/gsd/tests/db-migration-steps.test.ts +159 -0
  672. package/src/resources/extensions/gsd/tests/db-milestone-artifact-rows.test.ts +53 -0
  673. package/src/resources/extensions/gsd/tests/db-open-state.test.ts +56 -0
  674. package/src/resources/extensions/gsd/tests/db-provider.test.ts +105 -0
  675. package/src/resources/extensions/gsd/tests/db-runtime-kv-schema.test.ts +37 -0
  676. package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +115 -0
  677. package/src/resources/extensions/gsd/tests/db-task-slice-rows.test.ts +128 -0
  678. package/src/resources/extensions/gsd/tests/db-transaction.test.ts +110 -0
  679. package/src/resources/extensions/gsd/tests/db-verification-evidence-schema.test.ts +76 -0
  680. package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +42 -0
  681. package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +63 -2
  682. package/src/resources/extensions/gsd/tests/discuss-headless-rendering.test.ts +37 -0
  683. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +109 -0
  684. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +59 -0
  685. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-basic.md +52 -0
  686. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-empty-optionals.md +42 -0
  687. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +55 -0
  688. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +60 -0
  689. package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +36 -0
  690. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +10 -0
  691. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +139 -0
  692. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +43 -0
  693. package/src/resources/extensions/gsd/tests/guided-discuss-project-prompt-rendering.test.ts +41 -0
  694. package/src/resources/extensions/gsd/tests/guided-discuss-requirements-prompt-rendering.test.ts +45 -0
  695. package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +14 -0
  696. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +79 -0
  697. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +37 -0
  698. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +5 -3
  699. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +134 -0
  700. package/src/resources/extensions/gsd/tests/legacy-component-format-telemetry.test.ts +62 -0
  701. package/src/resources/extensions/gsd/tests/legacy-telemetry.test.ts +144 -0
  702. package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +40 -16
  703. package/src/resources/extensions/gsd/tests/model-router.test.ts +33 -12
  704. package/src/resources/extensions/gsd/tests/notification-store.test.ts +8 -0
  705. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +40 -1
  706. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +8 -0
  707. package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +2 -0
  708. package/src/resources/extensions/gsd/tests/plan-milestone-rendering.test.ts +45 -0
  709. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +65 -16
  710. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +27 -0
  711. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +46 -0
  712. package/src/resources/extensions/gsd/tests/pr-evidence-equivalence.test.ts +102 -0
  713. package/src/resources/extensions/gsd/tests/pr-evidence-hardening.test.ts +165 -0
  714. package/src/resources/extensions/gsd/tests/pr-evidence.test.ts +79 -0
  715. package/src/resources/extensions/gsd/tests/pre-exec-gate-loop.test.ts +3 -0
  716. package/src/resources/extensions/gsd/tests/process-task-path.test.ts +51 -0
  717. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -1
  718. package/src/resources/extensions/gsd/tests/queue-prompt-rendering.test.ts +37 -0
  719. package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +85 -0
  720. package/src/resources/extensions/gsd/tests/run-uat-composer.test.ts +2 -0
  721. package/src/resources/extensions/gsd/tests/subagent-model-dispatch.test.ts +59 -0
  722. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +32 -9
  723. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +42 -4
  724. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +32 -0
  725. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +109 -1
  726. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +12 -0
  727. package/src/resources/extensions/gsd/tests/uok-loop-adapter-writer.test.ts +98 -0
  728. package/src/resources/extensions/gsd/tests/workflow-custom-engine-dispatch-outcome.test.ts +55 -0
  729. package/src/resources/extensions/gsd/tests/workflow-custom-engine-iteration.test.ts +93 -0
  730. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile-outcome.test.ts +108 -0
  731. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile.test.ts +146 -0
  732. package/src/resources/extensions/gsd/tests/workflow-custom-engine-retry.test.ts +136 -0
  733. package/src/resources/extensions/gsd/tests/workflow-custom-engine-verify-outcome.test.ts +95 -0
  734. package/src/resources/extensions/gsd/tests/workflow-dispatch-claim.test.ts +158 -0
  735. package/src/resources/extensions/gsd/tests/workflow-dispatch-ledger.test.ts +82 -0
  736. package/src/resources/extensions/gsd/tests/workflow-iteration-completion.test.ts +44 -0
  737. package/src/resources/extensions/gsd/tests/workflow-journal-reporter.test.ts +49 -0
  738. package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +607 -0
  739. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +20 -4
  740. package/src/resources/extensions/gsd/tests/workflow-memory-pressure.test.ts +71 -0
  741. package/src/resources/extensions/gsd/tests/workflow-phase-reporter.test.ts +40 -0
  742. package/src/resources/extensions/gsd/tests/workflow-session-lock.test.ts +135 -0
  743. package/src/resources/extensions/gsd/tests/workflow-sidecar-iteration.test.ts +110 -0
  744. package/src/resources/extensions/gsd/tests/workflow-sidecar-queue.test.ts +116 -0
  745. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +21 -0
  746. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +164 -3
  747. package/src/resources/extensions/gsd/tests/workflow-turn-reporter.test.ts +87 -0
  748. package/src/resources/extensions/gsd/tests/workflow-unit-dispatch.test.ts +160 -0
  749. package/src/resources/extensions/gsd/tests/workflow-worker-heartbeat.test.ts +123 -0
  750. package/src/resources/extensions/gsd/tests/working-output-messages.test.ts +93 -0
  751. package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +3 -0
  752. package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +17 -33
  753. package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +179 -0
  754. package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
  755. package/src/resources/extensions/gsd/tools/complete-task.ts +4 -1
  756. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +90 -2
  757. package/src/resources/extensions/gsd/unit-context-composer.ts +49 -0
  758. package/src/resources/extensions/gsd/unit-context-manifest.ts +34 -0
  759. package/src/resources/extensions/gsd/uok/audit.ts +25 -9
  760. package/src/resources/extensions/gsd/uok/contracts.ts +105 -0
  761. package/src/resources/extensions/gsd/uok/dispatch-envelope.ts +4 -0
  762. package/src/resources/extensions/gsd/uok/kernel.ts +10 -3
  763. package/src/resources/extensions/gsd/uok/loop-adapter.ts +60 -45
  764. package/src/resources/extensions/gsd/uok/plan-v2.ts +5 -1
  765. package/src/resources/extensions/gsd/uok/timeline.ts +158 -0
  766. package/src/resources/extensions/gsd/workflow-logger.ts +13 -13
  767. package/src/resources/extensions/gsd/workflow-manifest.ts +6 -15
  768. package/src/resources/extensions/gsd/workflow-projections.ts +5 -1
  769. package/src/resources/extensions/gsd/workflow-templates.ts +11 -0
  770. package/src/resources/extensions/gsd/working-output-messages.ts +120 -0
  771. package/src/resources/extensions/shared/gsd-phase-state.ts +56 -3
  772. package/src/resources/extensions/shared/interview-ui.ts +18 -5
  773. package/src/resources/extensions/shared/tests/gsd-phase-state.test.ts +43 -1
  774. package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +41 -0
  775. package/dist/web/standalone/.next/server/chunks/6336.js +0 -1
  776. package/dist/web/standalone/.next/static/chunks/app/page-ff639266d978f2a0.js +0 -1
  777. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  778. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  779. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → k-MDjzPMF62Rg1-FR437h}/_buildManifest.js +0 -0
  780. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → k-MDjzPMF62Rg1-FR437h}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -27,54 +27,95 @@ One command. Walk away. Come back to a built project with clean git history.
27
27
 
28
28
  ---
29
29
 
30
- ## What's New in v2.78
30
+ ## What's New in v2.79
31
31
 
32
- ### Worktree Lifecycle & Forensics
32
+ ### DB-Authoritative Runtime State
33
33
 
34
- - **Slice-cadence worktree collapse (#4765)** — new `git.collapse_cadence: "milestone" | "slice"` preference. With `slice`, each validated slice squash-merges to main immediately, shrinking the orphan window from milestone-size to slice-size. Pair with `git.milestone_resquash: true` to collapse per-slice commits into one milestone commit at completion.
35
- - **Worktree telemetry (#4764)** — new journal events (`worktree-created`, `worktree-merged`, `worktree-orphaned`, `auto-exit`, `canonical-root-redirect`, `slice-merged`, `milestone-resquash`) and a `summarizeWorktreeTelemetry` aggregator that reports orphan breakdowns, merge durations, conflict counts, exit reasons, and unmerged-exit metrics.
36
- - **`/gsd forensics` worktree section** — surfaces the telemetry above with two new anomalies: `worktree-orphan` and `worktree-unmerged-exit`.
37
- - **Worktree-aware canonical milestone root (#4761)** `resolveCanonicalMilestoneRoot` routes validators and cross-session readers through the live worktree, so milestone validation no longer silently reads stale project-root state.
38
- - **Bootstrap orphan audit (#4762)** — in-progress milestones with commits ahead of main no longer get skipped; the audit emits a warning with commit count and worktree location so interrupted auto-runs are visible.
34
+ - **Auto-mode coordination tables (#5247)** — workers, leases, dispatches, and a command queue are now first-class DB rows, replacing ad-hoc files for cross-process auto coordination.
35
+ - **`auto.lock` + `paused-session.json` → DB (#5250)** — phase C pt 2 of the runtime-state migration. The on-disk lockfile and paused-session JSON are gone; lock acquisition, stale-lock detection, and pause state all live in `gsd.db`.
36
+ - **Stuck-state migration (#5249)** — `copyPlanningArtifacts` / `reconcile` deleted; auto-mode writers canonicalize through the DB instead of mirroring artifacts to disk.
37
+ - **`gsd headless recover`**non-TTY DB recovery command for unattended environments where the interactive recover flow can't run.
38
+ - **Doctor surfaces DB locks** — `gsd doctor` reports DB-backed stale locks and flags exhausted `run-uat` retry counters so wedged runs are visible without log archaeology.
39
39
 
40
- ### Auto Pipeline & Component System
40
+ ### Workspace & Worktree Isolation
41
41
 
42
- - **Unified component system** — skills, agents, pipelines, and marketplace are now one component model wired through runtime, dispatch, and telemetry, replacing per-surface plumbing.
43
- - **UnitContextManifest v2 (#4924, #4934)** — auto dispatch runs through a typed manifest with declarative tools-policy and typed computed artifacts. CI guards the schema so drift fails fast.
44
- - **Composer migration phase 3 (#4782)** — `complete-slice`, `research-milestone`, `run-uat`, and `reassess-roadmap` now build context through the manifest composer for a consistent shape across units.
45
- - **Milestone scope classifier + pipeline variants (#4781)** auto picks a pipeline variant from milestone shape, so research-heavy and execution-heavy milestones no longer share a one-size dispatch path.
46
- - **Per-unit-type skill manifest resolver (#4779)** — skills wire into specific unit types instead of being globally on, with manifests expanded across the remaining types.
47
- - **Single-writer-v3 control plane** — closes outstanding gaps in the durable-state writer model so concurrent writers can't desync workflow state.
48
- - **Opt-in `reassess-roadmap` (#4778)** — gated behind the `skip_clean_reassess` preference per ADR-003 §4; auto no longer triggers reassessment unprompted.
42
+ - **`GsdWorkspace` + `MilestoneScope` handle types** — workspace identity is now an explicit handle threaded through writers, metrics, and the DB connection instead of a module singleton.
43
+ - **Symlink-safe canonicalization** — `deriveState` read root and cache key are canonicalized; path normalization unified on `realpathSync.native`; `gsdRootCache` keys normalized and decoupled from per-turn cache clears; `git-root` anchor guarded against `~/.gsd` resolution.
44
+ - **Worktree-scoped DB + metrics** — `gsd-db` connections and metrics ledgers are scoped by workspace identity, so concurrent milestones in separate worktrees can't cross-contaminate state.
45
+ - **Worktree cwd anchoring** subagent dispatch anchors to the canonical worktree path, `mergeAndExit` anchors cwd at project root (closes [#5079](https://github.com/gsd-build/GSD-2/issues/5079)), MCP cwd is hardened against drift, and dispatch stops on cwd anchor failures.
46
+ - **Slice isolation through resolver (#5246)** — slice merge isolation routed through the worktree resolver; `originalBase` checks use `isSamePath` instead of string equality; `auto-worktree` validates `milestoneId` match in `ByScope` wrappers.
47
+ - **Worktree CLI commands** — `gsd worktree {list, merge, clean, remove}` exposed in the TUI dispatcher.
49
48
 
50
- ### Extensions Framework
49
+ ### Deep Planning Mode (Phase 11)
51
50
 
52
- - **Extension lifecycle commands**`gsd extensions install / update / uninstall / list / info / validate` for npm, git, and local sources, with dependency warnings and user-metadata tracking.
53
- - **Topological extension load order** — Kahn's-algorithm sort with surfaced `ExtensionLoadWarning`s, so dependent extensions resolve deterministically and misconfigurations are visible instead of silent.
54
- - **cmux gsd decoupling** — static cross-imports replaced with a shared `cmux-events` contract and dynamic imports, isolating extension boundaries.
55
- - **Extracted `@gsd-extensions/google-search` workspace** — first reference extension carved out of core; legacy in-tree source replaced with a deprecation stub.
51
+ - **`/gsd new-project --deep`**opt-in deep mode for new projects, with `research-decision` and `research-project` dispatch units, deep-mode artifact validators, and gated approval flows that pause the milestone instead of aborting on grounding/discovery questions.
52
+ - **EVAL-REVIEW system** — `/gsd eval-review` command, frontmatter schema, pre-ship soft warning when EVAL-REVIEW status is incomplete, and registration in the catalog + ops dispatcher.
53
+ - **Project-shape-aware discuss depth** — discuss-phase questioning depth scales via the project-shape classifier; tiny apps cap research and auto-skip stale research blockers; deep research is opt-in and blocked while a marker is in flight.
54
+ - **Approval-gate hardening** — deep approval gates verified, opening interview question protected from approval abort, plain-text setup approvals gated, deep setup state guarded against phantom transitions.
56
55
 
57
- ### Models, Agent, and UX
56
+ ### Auto Pipeline & Dispatch
58
57
 
59
- - **GPT-5.5 Codex support** — added across `gsd` and `pi-ai`, including `xhigh` thinking level for custom GPT-5.5 models.
60
- - **Auth mode in `/model`** providers display alongside auth mode for clearer routing.
61
- - **Permission granularity picker** — Claude Code "Always Allow" prompts let you scope the grant instead of approving the broad case.
62
- - **Headless auto default `bypassPermissions` (#4657)** Claude Code CLI headless auto-mode runs without permission prompts by default.
63
- - **`skillFilter` for system prompts** — `pi-coding-agent` filters which skills are surfaced in `buildSystemPrompt`, with consumer exceptions guarded.
64
- - **Visual postinstall (#4641)** — install shows a spinner/banner UX so first-run state is legible.
65
- - **PR-risk verification** — risk prompt emits a copy-pasteable code block to make follow-up commands one step.
58
+ - **Delegation-policy verdicts** — dispatch actions are annotated with a per-tool background-safety policy verdict; the policy itself is codified instead of inferred per call.
59
+ - **Reactive-execute default** auto-dispatch defaults to reactive-execute when ≥3 ready tasks are queued, replacing the always-sequential fallback.
60
+ - **Proactive rate limiting (#2996)** — `min_request_interval_ms` preference paces auto-mode requests; the interval is stamped at dispatch.
61
+ - **Manifest-driven skill surfacing** `auto-prompts` surfaces manifest skills via recommendations + auto-match; planning-dispatch mode added to the unit manifest for slice plan/complete; runtime tools-policy enforced for planning units (#4934).
62
+ - **Subagent telemetry** — dispatch telemetry, stronger prompt guidelines, and model-override threading (`??` consistently used for `modelOverride`).
66
63
 
67
- ### Reliability & Safety
64
+ ### MCP, Models & Cross-Platform
68
65
 
69
- - **Major git-safety pass** — clarified TOCTOU ancestry guard, atomic sync-lock acquire with PID-verified stale override, `.git/index.lock` force-removal gated by 5-min age, `GIT_DIR`/`GIT_WORK_TREE`/`GIT_INDEX_FILE` stripped from env overlays, rebase/cherry-pick/revert state detected and aborted in recovery, working tree stashed before `reset --hard` in self-heal/rollback, worktree create guarded against unborn branches, and user hooks + `commit.gpgsign` honored on auto-commits.
70
- - **Atomic `.gsd/` state writes** — file-locks now actually lock and throw on contention; appends are lock-wrapped to prevent interleaved writes.
71
- - **Compaction correctness (#4665)** — fixed chunker/truncation mismatch and silent chunk-drops that produced degenerate or empty summaries.
72
- - **Write-gate (#4950)** — fail-closed depth confirmation, EXDEV-safe snapshot rename, opt-out persistence default, off-by-one max-attempts fix, exception capture in `gate.execute`, and audit/DB rows for unknown gate ids.
73
- - **Auto state machine** — deterministic policy errors classified non-retriable (#4973), depth-verification bypass for non-interactive sessions, baseline restored between units (#4961), `restoreToolBaseline` gated by `isAutoMode` (#4966).
74
- - **Slice + crash recovery** — slice orchestrator state persists across crashes; ancestry-guarded force-reset, detached-HEAD refusal, and stash-by-ref recovery.
75
- - **Empty-turn recovery** — Claude Code CLI tool-block shape canonicalized so empty-turn recovery matches real provider output.
66
+ - **Global MCP config** — `mcp-client` reads `~/.gsd/mcp.json` for user-level MCP server config.
67
+ - **`ask_user_questions` over MCP** — host elicitation tried before remote channel; multi-select array shape preserved; explicit cancellation handled; remote answers normalized into `structuredContent`.
68
+ - **Model routing overhaul** — cross-provider tier resolution, provider-agnostic profile-tier defaults, disabled-provider routing denylist, resolved tier model IDs normalized, and `findModelForTier` with behavioral tests.
69
+ - **Ollama** — configurable probe/request timeouts via env vars (clamped); cloud / long-variant context windows reported correctly.
70
+ - **Windows fixes** — home directory resolved correctly (#5015), `Path` env lookup repaired, Windows-safe env CLI shims, DEP0190 avoided in Claude CLI binary probes, tool-bootstrap skipped when tools are on PATH.
71
+ - **Anthropic prompt-cache preserved (#5019)** — `pi-coding-agent` and `gsd` no longer thrash the cache on dispatch.
76
72
 
77
- See the full [Changelog](./CHANGELOG.md) for details on every release.
73
+ ### Git, GitHub Sync & Reliability
74
+
75
+ - **Integration-branch self-merge guard (#5024)** — milestone refuses to self-merge when the integration branch equals the milestone branch; self-merge ref guard normalized.
76
+ - **Slice-cadence safety** — integration branch used for slice cadence, dirty worktree state preserved on merge, checked-out slice worktrees advance safely, slice PRs deferred until completion, slice-PR sync stays retryable on failure.
77
+ - **Milestone-ID reservation** — DB rows included in reservation; ghost IDs reused in `nextMilestoneId` to close gaps; `ensurePreconditions` guarded against phantom IDs (#4996); orphan milestone-dir doctor check (#4996); milestone-dir creation deferred until first artifact write.
78
+ - **Auto-commit hygiene** — task commits scoped to reported files, generated commit subjects sanitized, user hooks run on automated commits, milestone-tagged commits bound when `.gsd/` is gitignored (#5033), startup blocked on `git index.lock`.
79
+ - **GitHub sync** — issues no longer closed before delivery, failed task closure / slice PR sync stay retryable, config cache scoped by project, safe git environment used.
80
+
81
+ ### Safety, Recovery & Hardening
82
+
83
+ - **Policy-block pause through dispatch errors** — pause state is preserved when dispatch errors out mid-policy-block.
84
+ - **Skip-validation persistence** — skip-validation state persists and gate rows are cleared on recover.
85
+ - **Cancelled-gate hard block** — redirected to `ask_user_questions`; false plain-text claim dropped from the message.
86
+ - **Write-gate basePath required** — `process.cwd()` defaults removed; basePath threaded through pre-existing tests.
87
+ - **Atomic metrics writes** — parallel-mode `metrics.json` writes merge atomically; ledger cache invalidated after prune; `saveLedger` aborts when lock not acquired; stale-lock detection adds PID stamp + async yield.
88
+ - **Auto-worktree teardown** — `activeWorkspace` guaranteed cleared on teardown failure; teardown try/finally broadened to cover `chdir`; cleanup steps mirrored on the abort path; warning emitted on resume when persisted worktree is missing.
89
+ - **Empty-turn nudge** — no longer auto-replies to user questions; deferred on mid-line approval prompts.
90
+ - **Refuses project writes from `$HOME`** — and surfaces real SQL errors from `capture_thought` instead of swallowing them.
91
+
92
+ ### VS Code & TUI
93
+
94
+ - **Checkpoint tree view** — registered in the VS Code extension; checkpoint file existence restored; RPC file-mutation events tracked; agent diff scoped to tracked files.
95
+ - **TUI image paste** — pasted images preserved on regular submit.
96
+ - **Bundled `/gsd` slash command protected** — core handler refuses to overwrite the bundled command.
97
+
98
+ See the full [Changelog](./CHANGELOG.md) for the complete v2.79 entry and prior releases.
99
+
100
+ <details>
101
+ <summary>v2.78 highlights</summary>
102
+
103
+ - **Slice-cadence worktree collapse (#4765)** — `git.collapse_cadence: "milestone" | "slice"` shrinks the orphan window per-slice; pair with `git.milestone_resquash: true` to collapse to one milestone commit
104
+ - **Worktree telemetry (#4764)** — journal events + `summarizeWorktreeTelemetry`; `/gsd forensics` worktree section with `worktree-orphan` and `worktree-unmerged-exit` anomalies
105
+ - **Worktree-aware canonical milestone root (#4761)** — `resolveCanonicalMilestoneRoot` routes validators through the live worktree
106
+ - **Bootstrap orphan audit (#4762)** — in-progress milestones with commits ahead of main are no longer skipped
107
+ - **Unified component system** — skills, agents, pipelines, and marketplace as one component model wired through runtime, dispatch, and telemetry
108
+ - **UnitContextManifest v2 (#4924, #4934)** — typed manifest with declarative tools-policy and typed computed artifacts; CI-guarded
109
+ - **Composer migration phase 3 (#4782)** — `complete-slice`, `research-milestone`, `run-uat`, `reassess-roadmap` build context through the manifest composer
110
+ - **Milestone scope classifier + pipeline variants (#4781)** — auto picks a pipeline variant from milestone shape
111
+ - **Per-unit-type skill manifest resolver (#4779)** — skills wire into specific unit types instead of being globally on
112
+ - **Single-writer-v3 control plane** — durable-state writer gaps closed
113
+ - **Extensions framework** — `gsd extensions install / update / uninstall / list / info / validate`; topological load order; cmux↔gsd decoupling via `cmux-events`; extracted `@gsd-extensions/google-search`
114
+ - **GPT-5.5 Codex support** + `xhigh` thinking level; auth mode in `/model`; permission granularity picker; headless auto default → `bypassPermissions` (#4657)
115
+ - **Major git-safety pass** — TOCTOU ancestry guard, atomic sync-lock with PID-verified stale override, `.git/index.lock` 5-min gate, env overlay strip, rebase/cherry-pick/revert detection, working-tree stash before `reset --hard`, unborn-branch worktree guard, user hooks + `commit.gpgsign` on auto-commits
116
+ - **Atomic `.gsd/` state writes**; **compaction correctness fix (#4665)**; **write-gate hardening (#4950)**; **auto state-machine** non-retriable policy errors (#4973), baseline restoration (#4961, #4966); slice + crash recovery; empty-turn recovery shape canonicalized
117
+
118
+ </details>
78
119
 
79
120
  <details>
80
121
  <summary>v2.77 highlights</summary>
@@ -320,25 +361,27 @@ The database is authoritative for milestones, slices, tasks, requirements, decis
320
361
 
321
362
  2. **Context pre-loading** — The dispatch prompt includes inlined task plans, slice plans, prior task summaries, dependency summaries, roadmap excerpts, and decisions register. The LLM starts with everything it needs instead of spending tool calls reading files.
322
363
 
323
- 3. **Git isolation** — When `git.isolation` is set to `worktree` or `branch`, each milestone runs on its own `milestone/<MID>` branch (in a worktree or in-place). All slice work commits sequentially no branch switching, no merge conflicts. When the milestone completes, it's squash-merged to main as one clean commit. The default is `none` (work on the current branch), configurable via preferences. If `worktree` is configured in a repo with no committed `HEAD`, GSD temporarily behaves as `none` until the first commit exists because git worktrees need a committed start point.
364
+ 3. **Context Mode** — Context Mode is enabled by default and gives every auto-mode unit guidance for preserving context. Agents are steered toward `gsd_exec` for noisy scans, builds, tests, and diagnostics; full stdout/stderr is saved under `.gsd/exec/` while only a short digest enters the conversation. `gsd_exec_search` lets agents reuse prior runs instead of repeating expensive checks, and `gsd_resume` reads `.gsd/last-snapshot.md` after compaction or resume. Opt out with `context_mode.enabled: false`; tune sandbox timeout/output caps with `context_mode.exec_timeout_ms`, `context_mode.exec_stdout_cap_bytes`, and `context_mode.exec_digest_chars`.
365
+
366
+ 4. **Git isolation** — When `git.isolation` is set to `worktree` or `branch`, each milestone runs on its own `milestone/<MID>` branch (in a worktree or in-place). All slice work commits sequentially — no branch switching, no merge conflicts. When the milestone completes, it's squash-merged to main as one clean commit. The default is `none` (work on the current branch), configurable via preferences. If `worktree` is configured in a repo with no committed `HEAD`, GSD temporarily behaves as `none` until the first commit exists because git worktrees need a committed start point.
324
367
 
325
- 4. **Crash recovery** — Auto mode persists worker state, unit-dispatch state, and paused-session metadata in the project-root SQLite database. If the session dies, the next `/gsd auto` reconstructs the interrupted unit from DB-backed runtime state, reads the surviving session file, synthesizes a recovery briefing from every tool call that made it to disk, and resumes with full context. Parallel orchestrator IPC still lives under `.gsd/parallel/`, so multi-worker sessions survive crashes too. In headless mode, crashes trigger automatic restart with exponential backoff (default 3 attempts).
368
+ 5. **Crash recovery** — Auto mode persists worker state, unit-dispatch state, and paused-session metadata in the project-root SQLite database. If the session dies, the next `/gsd auto` reconstructs the interrupted unit from DB-backed runtime state, reads the surviving session file, synthesizes a recovery briefing from every tool call that made it to disk, and resumes with full context. Parallel orchestrator IPC still lives under `.gsd/parallel/`, so multi-worker sessions survive crashes too. In headless mode, crashes trigger automatic restart with exponential backoff (default 3 attempts).
326
369
 
327
- 5. **Provider error recovery** — Transient provider errors (rate limits, 500/503 server errors, overloaded) auto-resume after a delay. Permanent errors (auth, billing) pause for manual review. The model fallback chain retries transient network errors before switching models.
370
+ 6. **Provider error recovery** — Transient provider errors (rate limits, 500/503 server errors, overloaded) auto-resume after a delay. Permanent errors (auth, billing) pause for manual review. The model fallback chain retries transient network errors before switching models.
328
371
 
329
- 6. **Stuck and artifact detection** — A sliding-window detector identifies repeated dispatch patterns (including multi-unit cycles). Missing expected artifacts use a separate bounded path: GSD retries artifact verification up to 3 times with failure context, then pauses auto mode with the missing artifact error instead of looping indefinitely.
372
+ 7. **Stuck and artifact detection** — A sliding-window detector identifies repeated dispatch patterns (including multi-unit cycles). Missing expected artifacts use a separate bounded path: GSD retries artifact verification up to 3 times with failure context, then pauses auto mode with the missing artifact error instead of looping indefinitely.
330
373
 
331
- 7. **Timeout supervision** — Soft timeout warns the LLM to wrap up. Idle watchdog detects stalls. Hard timeout pauses auto mode. Recovery steering nudges the LLM to finish durable output before giving up.
374
+ 8. **Timeout supervision** — Soft timeout warns the LLM to wrap up. Idle watchdog detects stalls. Hard timeout pauses auto mode. Recovery steering nudges the LLM to finish durable output before giving up.
332
375
 
333
- 8. **Cost tracking** — Every unit's token usage and cost is captured, broken down by phase, slice, and model. The dashboard shows running totals and projections. Budget ceilings can pause auto mode before overspending.
376
+ 9. **Cost tracking** — Every unit's token usage and cost is captured, broken down by phase, slice, and model. The dashboard shows running totals and projections. Budget ceilings can pause auto mode before overspending.
334
377
 
335
- 9. **Adaptive replanning** — After each slice completes, the roadmap is reassessed. If the work revealed new information that changes the plan, slices are reordered, added, or removed before continuing.
378
+ 10. **Adaptive replanning** — After each slice completes, the roadmap is reassessed. If the work revealed new information that changes the plan, slices are reordered, added, or removed before continuing.
336
379
 
337
- 10. **Verification enforcement** — Configure shell commands (`npm run lint`, `npm run test`, etc.) that run automatically after task execution. Failures trigger auto-fix retries before advancing. Auto-discovered checks from `package.json` run in advisory mode — they log warnings but don't block on pre-existing errors. Configurable via `verification_commands`, `verification_auto_fix`, and `verification_max_retries` preferences.
380
+ 11. **Verification enforcement** — Configure shell commands (`npm run lint`, `npm run test`, etc.) that run automatically after task execution. Failures trigger auto-fix retries before advancing. Auto-discovered checks from `package.json` run in advisory mode — they log warnings but don't block on pre-existing errors. Configurable via `verification_commands`, `verification_auto_fix`, and `verification_max_retries` preferences.
338
381
 
339
- 11. **Milestone validation** — After all slices complete, a `validate-milestone` gate compares roadmap success criteria against actual results before sealing the milestone.
382
+ 12. **Milestone validation** — After all slices complete, a `validate-milestone` gate compares roadmap success criteria against actual results before sealing the milestone.
340
383
 
341
- 12. **Escape hatch** — Press Escape to pause. The conversation is preserved. Interact with the agent, inspect what happened, or just `/gsd auto` to resume from disk state.
384
+ 13. **Escape hatch** — Press Escape to pause. The conversation is preserved. Interact with the agent, inspect what happened, or just `/gsd auto` to resume from disk state.
342
385
 
343
386
  ### `/gsd` and `/gsd next` — Step Mode
344
387
 
@@ -616,6 +659,10 @@ auto_report: true
616
659
  | `unique_milestone_ids` | Uses unique milestone names to avoid clashes when working in teams of people |
617
660
  | `git.isolation` | `none` (default), `worktree`, or `branch` — enable worktree or branch isolation for milestone work. `worktree` requires a committed `HEAD`; zero-commit repos temporarily run as `none` |
618
661
  | `git.manage_gitignore` | Set `false` to prevent GSD from modifying `.gitignore` |
662
+ | `context_mode.enabled` | Context Mode is default-on; set `false` to disable `gsd_exec`, exec history guidance, and resume snapshots |
663
+ | `context_mode.exec_timeout_ms` | Timeout for sandboxed `gsd_exec` runs (default: 30000) |
664
+ | `context_mode.exec_stdout_cap_bytes` | Persisted stdout cap for `gsd_exec` output (default: 1048576) |
665
+ | `context_mode.exec_digest_chars` | Trailing stdout characters returned to the agent context (default: 300) |
619
666
  | `verification_commands` | Array of shell commands to run after task execution (e.g., `["npm run lint", "npm run test"]`) |
620
667
  | `verification_auto_fix` | Auto-retry on verification failures (default: true) |
621
668
  | `verification_max_retries` | Max retries for verification failures (default: 2) |
package/dist/loader.js CHANGED
File without changes
@@ -1 +1 @@
1
- 36cc9805e706289c
1
+ 2b428bb01a7f0322
@@ -1,3 +1,5 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Markdown formatters for GitHub sync issues, PR bodies, and comments.
1
3
  /**
2
4
  * Markdown formatters for GitHub issue bodies, PR descriptions,
3
5
  * and summary comments.
@@ -5,6 +7,38 @@
5
7
  * All functions produce GitHub-flavored markdown strings ready
6
8
  * for the `gh` CLI body parameters.
7
9
  */
10
+ import { buildPrEvidence } from "../gsd/pr-evidence.js";
11
+ // ─── Helpers ────────────────────────────────────────────────────────────────
12
+ /**
13
+ * Wrap a string in a CommonMark inline-code span, escaping any embedded
14
+ * backticks by selecting a fence longer than the longest backtick run inside
15
+ * the input. If the input begins or ends with a backtick, pad with a single
16
+ * space inside the fence (CommonMark requirement).
17
+ *
18
+ * Empty input returns an empty string (no fence) — there is nothing to render
19
+ * as code, and emitting an empty pair of backticks would produce literal
20
+ * backticks in GitHub-flavored markdown.
21
+ */
22
+ export function inlineCode(s) {
23
+ if (s.length === 0)
24
+ return "";
25
+ let longestRun = 0;
26
+ let currentRun = 0;
27
+ for (const ch of s) {
28
+ if (ch === "`") {
29
+ currentRun++;
30
+ if (currentRun > longestRun)
31
+ longestRun = currentRun;
32
+ }
33
+ else {
34
+ currentRun = 0;
35
+ }
36
+ }
37
+ const fence = "`".repeat(longestRun + 1);
38
+ const needsPad = s.startsWith("`") || s.endsWith("`");
39
+ const pad = needsPad ? " " : "";
40
+ return `${fence}${pad}${s}${pad}${fence}`;
41
+ }
8
42
  export function formatMilestoneIssueBody(data) {
9
43
  const lines = [];
10
44
  lines.push(`# ${data.id}: ${data.title}`);
@@ -36,37 +70,33 @@ export function formatMilestoneIssueBody(data) {
36
70
  return lines.join("\n");
37
71
  }
38
72
  export function formatSlicePRBody(data) {
39
- const lines = [];
40
- lines.push(`## ${data.id}: ${data.title}`);
41
- lines.push("");
42
- if (data.goal) {
43
- lines.push("### Goal");
44
- lines.push(data.goal);
45
- lines.push("");
46
- }
47
- if (data.mustHaves?.length) {
48
- lines.push("### Must-Haves");
49
- for (const item of data.mustHaves) {
50
- lines.push(`- ${item}`);
51
- }
52
- lines.push("");
53
- }
54
- if (data.demoCriterion) {
55
- lines.push("### Demo Criterion");
56
- lines.push(data.demoCriterion);
57
- lines.push("");
58
- }
59
- if (data.tasks?.length) {
60
- lines.push("### Tasks");
61
- for (const task of data.tasks) {
62
- const ref = task.issueNumber ? ` (#${task.issueNumber})` : "";
63
- lines.push(`- [ ] ${task.id}: ${task.title}${ref}`);
64
- }
65
- lines.push("");
66
- }
67
- lines.push("---");
68
- lines.push("*Auto-generated by GSD GitHub Sync*");
69
- return lines.join("\n");
73
+ const summaries = [
74
+ data.goal ? `### Goal\n${data.goal}` : "",
75
+ data.mustHaves?.length ? `### Must-Haves\n${data.mustHaves.map((item) => `- ${item}`).join("\n")}` : "",
76
+ data.demoCriterion ? `### Demo Criterion\n${data.demoCriterion}` : "",
77
+ data.tasks?.length
78
+ ? `### Tasks\n${data.tasks.map((task) => {
79
+ const ref = task.issueNumber ? ` (#${task.issueNumber})` : "";
80
+ return `- [ ] ${task.id}: ${task.title}${ref}`;
81
+ }).join("\n")}`
82
+ : "",
83
+ ].filter(Boolean);
84
+ const issueRefs = (data.tasks ?? [])
85
+ .map((task) => task.issueNumber)
86
+ .filter((issueNumber) => typeof issueNumber === "number")
87
+ .map((issueNumber) => `#${issueNumber}`);
88
+ return buildPrEvidence({
89
+ milestoneId: data.id,
90
+ subjectId: data.id,
91
+ subjectKind: "slice",
92
+ milestoneTitle: data.title,
93
+ changeType: "feat",
94
+ linkedIssue: issueRefs.length > 0 ? `Related issues: ${issueRefs.join(", ")}` : undefined,
95
+ summaries,
96
+ testsRun: data.demoCriterion ? [`Demo criterion: ${data.demoCriterion}`] : undefined,
97
+ rollbackNotes: ["Close this draft slice PR before merge or revert the slice squash commit from the milestone branch."],
98
+ how: "Generated by GSD GitHub Sync from the slice plan, task issues, and branch mapping.",
99
+ }).body;
70
100
  }
71
101
  export function formatTaskIssueBody(data) {
72
102
  const lines = [];
@@ -79,7 +109,7 @@ export function formatTaskIssueBody(data) {
79
109
  if (data.files?.length) {
80
110
  lines.push("### Files");
81
111
  for (const file of data.files) {
82
- lines.push(`- \`${file}\``);
112
+ lines.push(`- ${inlineCode(file)}`);
83
113
  }
84
114
  lines.push("");
85
115
  }
@@ -129,52 +159,38 @@ function checkedList(items, emptyLabel) {
129
159
  return items.map((item) => `- [ ] ${item}`);
130
160
  }
131
161
  export function formatSwarmLanePRBody(data) {
132
- const lines = [];
133
162
  const laneLabel = SWARM_LANE_LABELS[data.lane.id];
134
- lines.push("## Swarm lane");
135
- lines.push("");
136
- lines.push(`**Lane:** \`${laneLabel}\``);
137
- lines.push(`**Branch:** \`${data.lane.branch}\``);
138
- if (data.lane.owner)
139
- lines.push(`**Owner:** ${data.lane.owner}`);
140
- if (data.lane.latestCommit)
141
- lines.push(`**Latest commit:** \`${data.lane.latestCommit}\``);
142
- lines.push("");
143
- lines.push("## Impact area");
144
- lines.push("");
145
- lines.push(data.impactArea);
146
- lines.push("");
147
- lines.push("## Changed contracts");
148
- lines.push(...checkedList(data.lane.changedContracts, "No shared contracts changed"));
149
- lines.push("");
150
- lines.push("## Transition risks");
151
- lines.push(...checkedList(data.transitionRisks, "No transition risks identified"));
152
- lines.push("");
153
- lines.push("## Rollback plan");
154
- lines.push(...checkedList(data.rollbackPlan, "Revert this lane PR"));
155
- lines.push("");
156
- lines.push("## Test evidence");
157
- lines.push(...checkedList(data.lane.testEvidence, "Test evidence pending"));
158
- lines.push("");
159
- if (data.lane.blockers?.length) {
160
- lines.push("## Blockers");
161
- for (const blocker of data.lane.blockers)
162
- lines.push(`- ${blocker}`);
163
- lines.push("");
164
- }
165
- if (data.linkedIssue) {
166
- lines.push(`Closes #${data.linkedIssue}`);
167
- lines.push("");
168
- }
169
- lines.push("---");
170
- lines.push("*Auto-generated by GSD GitHub Sync swarm routines*");
171
- return lines.join("\n");
163
+ const summaries = [
164
+ [
165
+ "### Swarm lane",
166
+ `**Lane:** ${inlineCode(laneLabel)}`,
167
+ `**Branch:** ${inlineCode(data.lane.branch)}`,
168
+ data.lane.owner ? `**Owner:** ${data.lane.owner}` : "",
169
+ data.lane.latestCommit ? `**Latest commit:** ${inlineCode(data.lane.latestCommit)}` : "",
170
+ ].filter(Boolean).join("\n"),
171
+ `### Impact area\n${data.impactArea}`,
172
+ `### Changed contracts\n${checkedList(data.lane.changedContracts, "No shared contracts changed").join("\n")}`,
173
+ `### Transition risks\n${checkedList(data.transitionRisks, "No transition risks identified").join("\n")}`,
174
+ ].filter(Boolean);
175
+ return buildPrEvidence({
176
+ milestoneId: laneLabel,
177
+ subjectId: laneLabel,
178
+ subjectKind: "workflow",
179
+ milestoneTitle: laneLabel,
180
+ changeType: "refactor",
181
+ linkedIssue: data.linkedIssue ? `Closes #${data.linkedIssue}` : undefined,
182
+ summaries,
183
+ blockers: data.lane.blockers ?? [],
184
+ testsRun: data.lane.testEvidence,
185
+ rollbackNotes: data.rollbackPlan,
186
+ how: "Generated by GSD GitHub Sync swarm routines from lane evidence.",
187
+ }).body;
172
188
  }
173
189
  export function formatSwarmReleaseChecklistBody(data) {
174
190
  const lines = [];
175
191
  lines.push(`# UOK Swarm Release Checklist`);
176
192
  lines.push("");
177
- lines.push(`**Integration branch:** \`${data.integrationBranch}\``);
193
+ lines.push(`**Integration branch:** ${inlineCode(data.integrationBranch)}`);
178
194
  lines.push("");
179
195
  lines.push("## Lane summary");
180
196
  lines.push("");
@@ -182,9 +198,9 @@ export function formatSwarmReleaseChecklistBody(data) {
182
198
  lines.push("|------|--------|-------|--------|--------|");
183
199
  for (const lane of data.lanes) {
184
200
  const owner = lane.owner ?? "";
185
- const commit = lane.latestCommit ? `\`${lane.latestCommit}\`` : "";
201
+ const commit = lane.latestCommit ? inlineCode(lane.latestCommit) : "";
186
202
  const status = lane.blockers?.length ? "blocked" : "ready";
187
- lines.push(`| \`${SWARM_LANE_LABELS[lane.id]}\` | \`${lane.branch}\` | ${owner} | ${commit} | ${status} |`);
203
+ lines.push(`| ${inlineCode(SWARM_LANE_LABELS[lane.id])} | ${inlineCode(lane.branch)} | ${owner} | ${commit} | ${status} |`);
188
204
  }
189
205
  lines.push("");
190
206
  lines.push("## Required evidence");
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Persistence adapter for custom workflow verification retry counts.
3
+ import { readFileSync, mkdirSync, unlinkSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import { atomicWriteSync } from "../atomic-write.js";
6
+ import { gsdRoot } from "../paths.js";
7
+ export function customVerifyRetryStateDir(s) {
8
+ return s.activeRunDir ? join(s.activeRunDir, "runtime") : join(gsdRoot(s.basePath), "runtime");
9
+ }
10
+ export function customVerifyRetryStatePath(s) {
11
+ return join(customVerifyRetryStateDir(s), "custom-verify-retries.json");
12
+ }
13
+ export function hydrateCustomVerifyRetryCounts(s, deps) {
14
+ if (s.verificationRetryCount.size > 0) {
15
+ return s.verificationRetryCount;
16
+ }
17
+ try {
18
+ const raw = JSON.parse(readFileSync(customVerifyRetryStatePath(s), "utf-8"));
19
+ const counts = raw && typeof raw === "object" && raw.counts && typeof raw.counts === "object"
20
+ ? raw.counts
21
+ : {};
22
+ for (const [key, value] of Object.entries(counts)) {
23
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
24
+ s.verificationRetryCount.set(key, Math.floor(value));
25
+ }
26
+ }
27
+ }
28
+ catch (err) {
29
+ deps.logFailure(err);
30
+ }
31
+ return s.verificationRetryCount;
32
+ }
33
+ export function saveCustomVerifyRetryCounts(s, deps) {
34
+ const retryCounts = s.verificationRetryCount;
35
+ const filePath = customVerifyRetryStatePath(s);
36
+ try {
37
+ if (!retryCounts || retryCounts.size === 0) {
38
+ unlinkSync(filePath);
39
+ return;
40
+ }
41
+ mkdirSync(customVerifyRetryStateDir(s), { recursive: true });
42
+ atomicWriteSync(filePath, JSON.stringify({
43
+ counts: Object.fromEntries(retryCounts),
44
+ updatedAt: new Date().toISOString(),
45
+ }) + "\n");
46
+ }
47
+ catch (err) {
48
+ const code = err && typeof err === "object" && "code" in err ? err.code : undefined;
49
+ if (code !== "ENOENT") {
50
+ deps.logFailure(err);
51
+ }
52
+ }
53
+ }