gsd-pi 2.79.0 → 2.80.0-dev.0aaa4fc17

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 (866) 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/GSD-WORKFLOW.md +2 -2
  5. package/dist/resources/extensions/github-sync/templates.js +90 -74
  6. package/dist/resources/extensions/gsd/auto/contracts.js +1 -0
  7. package/dist/resources/extensions/gsd/auto/custom-verify-retry-store.js +53 -0
  8. package/dist/resources/extensions/gsd/auto/loop.js +394 -520
  9. package/dist/resources/extensions/gsd/auto/orchestrator.js +146 -0
  10. package/dist/resources/extensions/gsd/auto/phases.js +98 -37
  11. package/dist/resources/extensions/gsd/auto/run-unit.js +19 -15
  12. package/dist/resources/extensions/gsd/auto/session.js +8 -0
  13. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.js +12 -0
  14. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-iteration.js +24 -0
  15. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.js +33 -0
  16. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.js +26 -0
  17. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-retry.js +49 -0
  18. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.js +25 -0
  19. package/dist/resources/extensions/gsd/auto/workflow-dispatch-claim.js +48 -0
  20. package/dist/resources/extensions/gsd/auto/workflow-dispatch-ledger.js +26 -0
  21. package/dist/resources/extensions/gsd/auto/workflow-iteration-completion.js +10 -0
  22. package/dist/resources/extensions/gsd/auto/workflow-journal-reporter.js +16 -0
  23. package/dist/resources/extensions/gsd/auto/workflow-kernel.js +263 -0
  24. package/dist/resources/extensions/gsd/auto/workflow-memory-pressure.js +36 -0
  25. package/dist/resources/extensions/gsd/auto/workflow-phase-reporter.js +9 -0
  26. package/dist/resources/extensions/gsd/auto/workflow-session-lock.js +35 -0
  27. package/dist/resources/extensions/gsd/auto/workflow-sidecar-iteration.js +24 -0
  28. package/dist/resources/extensions/gsd/auto/workflow-sidecar-queue.js +26 -0
  29. package/dist/resources/extensions/gsd/auto/workflow-turn-reporter.js +36 -0
  30. package/dist/resources/extensions/gsd/auto/workflow-unit-dispatch.js +44 -0
  31. package/dist/resources/extensions/gsd/auto/workflow-worker-heartbeat.js +15 -0
  32. package/dist/resources/extensions/gsd/auto-artifact-paths.js +2 -2
  33. package/dist/resources/extensions/gsd/auto-dashboard.js +54 -15
  34. package/dist/resources/extensions/gsd/auto-dispatch.js +12 -0
  35. package/dist/resources/extensions/gsd/auto-post-unit.js +10 -10
  36. package/dist/resources/extensions/gsd/auto-prompts.js +331 -33
  37. package/dist/resources/extensions/gsd/auto-recovery.js +216 -62
  38. package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -0
  39. package/dist/resources/extensions/gsd/auto-start.js +4 -4
  40. package/dist/resources/extensions/gsd/auto-verification.js +2 -11
  41. package/dist/resources/extensions/gsd/auto-worktree.js +87 -38
  42. package/dist/resources/extensions/gsd/auto.js +168 -3
  43. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +24 -2
  44. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +10 -0
  45. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -2
  46. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +63 -51
  47. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +137 -9
  48. package/dist/resources/extensions/gsd/clean-root-preflight.js +42 -4
  49. package/dist/resources/extensions/gsd/commands/context.js +1 -1
  50. package/dist/resources/extensions/gsd/commands/dispatcher.js +5 -0
  51. package/dist/resources/extensions/gsd/commands-extract-learnings.js +17 -12
  52. package/dist/resources/extensions/gsd/commands-ship.js +23 -46
  53. package/dist/resources/extensions/gsd/commands-workflow-templates.js +12 -7
  54. package/dist/resources/extensions/gsd/component-loader.js +5 -11
  55. package/dist/resources/extensions/gsd/crash-recovery.js +56 -10
  56. package/dist/resources/extensions/gsd/custom-workflow-engine.js +25 -1
  57. package/dist/resources/extensions/gsd/db-adapter.js +47 -0
  58. package/dist/resources/extensions/gsd/db-base-schema.js +351 -0
  59. package/dist/resources/extensions/gsd/db-connection-cache.js +31 -0
  60. package/dist/resources/extensions/gsd/db-coordination-schema.js +104 -0
  61. package/dist/resources/extensions/gsd/db-decision-requirement-rows.js +71 -0
  62. package/dist/resources/extensions/gsd/db-gate-rows.js +16 -0
  63. package/dist/resources/extensions/gsd/db-lightweight-query-rows.js +29 -0
  64. package/dist/resources/extensions/gsd/db-memory-fts-schema.js +56 -0
  65. package/dist/resources/extensions/gsd/db-migration-backup.js +22 -0
  66. package/dist/resources/extensions/gsd/db-migration-steps.js +410 -0
  67. package/dist/resources/extensions/gsd/db-milestone-artifact-rows.js +35 -0
  68. package/dist/resources/extensions/gsd/db-open-state.js +32 -0
  69. package/dist/resources/extensions/gsd/db-provider.js +108 -0
  70. package/dist/resources/extensions/gsd/db-runtime-kv-schema.js +27 -0
  71. package/dist/resources/extensions/gsd/db-schema-metadata.js +23 -0
  72. package/dist/resources/extensions/gsd/db-task-slice-rows.js +86 -0
  73. package/dist/resources/extensions/gsd/db-transaction.js +63 -0
  74. package/dist/resources/extensions/gsd/db-verification-evidence-rows.js +3 -0
  75. package/dist/resources/extensions/gsd/db-verification-evidence-schema.js +19 -0
  76. package/dist/resources/extensions/gsd/detection.js +106 -0
  77. package/dist/resources/extensions/gsd/escalation.js +2 -0
  78. package/dist/resources/extensions/gsd/graph.js +9 -3
  79. package/dist/resources/extensions/gsd/gsd-db.js +316 -1520
  80. package/dist/resources/extensions/gsd/guided-flow.js +103 -12
  81. package/dist/resources/extensions/gsd/legacy-telemetry.js +70 -0
  82. package/dist/resources/extensions/gsd/markdown-renderer.js +2 -0
  83. package/dist/resources/extensions/gsd/migrate/command.js +40 -1
  84. package/dist/resources/extensions/gsd/migration-auto-check.js +87 -0
  85. package/dist/resources/extensions/gsd/model-router.js +9 -6
  86. package/dist/resources/extensions/gsd/notification-widget.js +21 -3
  87. package/dist/resources/extensions/gsd/paths.js +5 -1
  88. package/dist/resources/extensions/gsd/planning-path-scope.js +26 -0
  89. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -6
  90. package/dist/resources/extensions/gsd/pr-evidence.js +117 -0
  91. package/dist/resources/extensions/gsd/pre-execution-checks.js +2 -0
  92. package/dist/resources/extensions/gsd/preferences-types.js +20 -2
  93. package/dist/resources/extensions/gsd/preferences-validation.js +3 -3
  94. package/dist/resources/extensions/gsd/process-task-path.js +61 -0
  95. package/dist/resources/extensions/gsd/prompt-loader.js +9 -5
  96. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +32 -31
  97. package/dist/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  98. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  99. package/dist/resources/extensions/gsd/prompts/discuss.md +81 -181
  100. package/dist/resources/extensions/gsd/prompts/execute-task.md +40 -67
  101. package/dist/resources/extensions/gsd/prompts/forensics.md +41 -84
  102. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  103. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  104. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  105. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  106. package/dist/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  107. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +47 -59
  108. package/dist/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  109. package/dist/resources/extensions/gsd/prompts/queue.md +46 -53
  110. package/dist/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  111. package/dist/resources/extensions/gsd/prompts/research-slice.md +23 -23
  112. package/dist/resources/extensions/gsd/prompts/rethink.md +10 -10
  113. package/dist/resources/extensions/gsd/prompts/system.md +65 -107
  114. package/dist/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  115. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  116. package/dist/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  117. package/dist/resources/extensions/gsd/safety/evidence-collector.js +10 -2
  118. package/dist/resources/extensions/gsd/state.js +4 -0
  119. package/dist/resources/extensions/gsd/tools/complete-milestone.js +14 -9
  120. package/dist/resources/extensions/gsd/tools/complete-task.js +2 -0
  121. package/dist/resources/extensions/gsd/tools/plan-slice.js +9 -0
  122. package/dist/resources/extensions/gsd/tools/plan-task.js +9 -0
  123. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +88 -3
  124. package/dist/resources/extensions/gsd/unit-context-composer.js +32 -0
  125. package/dist/resources/extensions/gsd/unit-context-manifest.js +21 -0
  126. package/dist/resources/extensions/gsd/unit-runtime.js +11 -0
  127. package/dist/resources/extensions/gsd/uok/audit.js +23 -9
  128. package/dist/resources/extensions/gsd/uok/contracts.js +69 -1
  129. package/dist/resources/extensions/gsd/uok/dispatch-envelope.js +3 -0
  130. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  131. package/dist/resources/extensions/gsd/uok/loop-adapter.js +48 -33
  132. package/dist/resources/extensions/gsd/uok/plan-v2.js +2 -0
  133. package/dist/resources/extensions/gsd/uok/timeline.js +125 -0
  134. package/dist/resources/extensions/gsd/workflow-logger.js +13 -13
  135. package/dist/resources/extensions/gsd/workflow-manifest.js +2 -0
  136. package/dist/resources/extensions/gsd/workflow-projections.js +2 -0
  137. package/dist/resources/extensions/gsd/workflow-templates.js +9 -0
  138. package/dist/resources/extensions/gsd/working-output-messages.js +64 -0
  139. package/dist/resources/extensions/gsd/worktree-manager.js +16 -14
  140. package/dist/resources/extensions/shared/gsd-phase-state.js +45 -3
  141. package/dist/resources/extensions/shared/interview-ui.js +15 -4
  142. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  143. package/dist/web/standalone/.next/BUILD_ID +1 -1
  144. package/dist/web/standalone/.next/app-path-routes-manifest.json +12 -12
  145. package/dist/web/standalone/.next/build-manifest.json +4 -4
  146. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  147. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  148. package/dist/web/standalone/.next/required-server-files.json +4 -4
  149. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  150. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  151. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  152. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  153. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  154. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  155. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  156. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  157. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  158. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  159. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  160. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  161. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  162. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  163. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  164. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  165. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  166. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  167. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  168. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  169. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  171. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  174. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  177. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  179. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  180. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  181. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  183. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  184. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  185. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  186. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  187. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  188. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  189. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  190. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  192. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  193. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  195. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  196. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  197. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  198. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  199. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  200. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  201. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  202. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  203. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  204. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  205. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  206. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  207. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  208. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  209. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  210. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  211. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  212. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  213. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  214. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  215. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  216. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  217. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  218. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  219. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  220. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  221. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  222. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  223. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  224. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  225. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  226. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  227. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  228. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  229. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  230. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  232. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  233. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  234. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  235. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  236. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  238. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  239. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  240. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  241. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  242. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  243. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  244. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  245. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  246. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  247. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  248. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  249. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  250. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  251. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  252. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  253. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  254. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  255. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  256. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  257. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  258. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  259. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  260. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  261. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  263. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  264. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  265. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  266. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  267. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  268. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  269. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  270. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  271. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  272. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
  273. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  274. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  275. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  276. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  277. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  278. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  279. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  280. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  281. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  282. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  283. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  284. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  285. package/dist/web/standalone/.next/server/app/index.html +1 -1
  286. package/dist/web/standalone/.next/server/app/index.rsc +4 -4
  287. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  288. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  289. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  290. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  291. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  292. package/dist/web/standalone/.next/server/app/page.js +2 -2
  293. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  294. package/dist/web/standalone/.next/server/app-paths-manifest.json +12 -12
  295. package/dist/web/standalone/.next/server/chunks/167.js +2 -0
  296. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  297. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  298. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  299. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  300. package/dist/web/standalone/.next/server/middleware.js +2 -2
  301. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  302. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  303. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  304. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  305. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  306. package/dist/web/standalone/.next/static/chunks/{8336.6f6f30e410419aff.js → 8336.631939fb583761fa.js} +1 -1
  307. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  308. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  309. package/dist/web/standalone/.next/static/chunks/app/page-fab3ebb85b006001.js +1 -0
  310. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  311. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  312. package/dist/web/standalone/.next/static/chunks/{webpack-d82dbee6356c1733.js → webpack-0481f1221120a7c6.js} +1 -1
  313. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  314. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  315. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  316. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  317. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  318. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  319. package/dist/web/standalone/package.json +1 -0
  320. package/dist/web/standalone/server.js +1 -1
  321. package/package.json +18 -7
  322. package/packages/contracts/dist/index.d.ts +3 -0
  323. package/packages/contracts/dist/index.d.ts.map +1 -0
  324. package/packages/contracts/dist/index.js +5 -0
  325. package/packages/contracts/dist/index.js.map +1 -0
  326. package/packages/contracts/dist/rpc.d.ts +549 -0
  327. package/packages/contracts/dist/rpc.d.ts.map +1 -0
  328. package/packages/contracts/dist/rpc.js +53 -0
  329. package/packages/contracts/dist/rpc.js.map +1 -0
  330. package/packages/contracts/dist/rpc.test.d.ts +2 -0
  331. package/packages/contracts/dist/rpc.test.d.ts.map +1 -0
  332. package/packages/contracts/dist/rpc.test.js +47 -0
  333. package/packages/contracts/dist/rpc.test.js.map +1 -0
  334. package/packages/contracts/dist/workflow.d.ts +180 -0
  335. package/packages/contracts/dist/workflow.d.ts.map +1 -0
  336. package/packages/contracts/dist/workflow.js +201 -0
  337. package/packages/contracts/dist/workflow.js.map +1 -0
  338. package/packages/contracts/package.json +39 -0
  339. package/packages/contracts/src/index.ts +5 -0
  340. package/packages/contracts/src/rpc.test.ts +72 -0
  341. package/packages/contracts/src/rpc.ts +286 -0
  342. package/packages/contracts/src/workflow.ts +213 -0
  343. package/packages/contracts/tsconfig.json +25 -0
  344. package/packages/daemon/package.json +3 -2
  345. package/packages/daemon/src/event-bridge.test.ts +2 -1
  346. package/packages/daemon/src/event-bridge.ts +1 -1
  347. package/packages/daemon/src/event-formatter.test.ts +1 -2
  348. package/packages/daemon/src/event-formatter.ts +1 -2
  349. package/packages/daemon/src/session-manager.ts +2 -2
  350. package/packages/daemon/src/types.ts +3 -18
  351. package/packages/mcp-server/dist/server.d.ts +13 -0
  352. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  353. package/packages/mcp-server/dist/server.js +77 -0
  354. package/packages/mcp-server/dist/server.js.map +1 -1
  355. package/packages/mcp-server/dist/session-manager.js +1 -1
  356. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  357. package/packages/mcp-server/dist/types.d.ts +3 -11
  358. package/packages/mcp-server/dist/types.d.ts.map +1 -1
  359. package/packages/mcp-server/dist/types.js.map +1 -1
  360. package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
  361. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  362. package/packages/mcp-server/dist/workflow-tools.js +52 -37
  363. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  364. package/packages/mcp-server/package.json +3 -2
  365. package/packages/mcp-server/src/mcp-server.test.ts +138 -0
  366. package/packages/mcp-server/src/server.ts +99 -1
  367. package/packages/mcp-server/src/session-manager.ts +2 -2
  368. package/packages/mcp-server/src/types.ts +7 -18
  369. package/packages/mcp-server/src/workflow-tools.test.ts +129 -2
  370. package/packages/mcp-server/src/workflow-tools.ts +80 -37
  371. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  372. package/packages/native/package.json +1 -1
  373. package/packages/pi-agent-core/package.json +1 -1
  374. package/packages/pi-ai/dist/models/fake-model.d.ts +12 -0
  375. package/packages/pi-ai/dist/models/fake-model.d.ts.map +1 -0
  376. package/packages/pi-ai/dist/models/fake-model.js +27 -0
  377. package/packages/pi-ai/dist/models/fake-model.js.map +1 -0
  378. package/packages/pi-ai/dist/models/index.d.ts.map +1 -1
  379. package/packages/pi-ai/dist/models/index.js +8 -0
  380. package/packages/pi-ai/dist/models/index.js.map +1 -1
  381. package/packages/pi-ai/dist/providers/fake.d.ts +42 -0
  382. package/packages/pi-ai/dist/providers/fake.d.ts.map +1 -0
  383. package/packages/pi-ai/dist/providers/fake.js +319 -0
  384. package/packages/pi-ai/dist/providers/fake.js.map +1 -0
  385. package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  386. package/packages/pi-ai/dist/providers/register-builtins.js +24 -0
  387. package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
  388. package/packages/pi-ai/package.json +1 -1
  389. package/packages/pi-ai/src/models/fake-model.ts +30 -0
  390. package/packages/pi-ai/src/models/index.ts +9 -0
  391. package/packages/pi-ai/src/providers/fake.ts +376 -0
  392. package/packages/pi-ai/src/providers/register-builtins.ts +23 -0
  393. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  394. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +74 -0
  395. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  396. package/packages/pi-coding-agent/dist/core/db-snapshot.d.ts +15 -0
  397. package/packages/pi-coding-agent/dist/core/db-snapshot.d.ts.map +1 -0
  398. package/packages/pi-coding-agent/dist/core/db-snapshot.js +66 -0
  399. package/packages/pi-coding-agent/dist/core/db-snapshot.js.map +1 -0
  400. package/packages/pi-coding-agent/dist/core/db-snapshot.test.d.ts +2 -0
  401. package/packages/pi-coding-agent/dist/core/db-snapshot.test.d.ts.map +1 -0
  402. package/packages/pi-coding-agent/dist/core/db-snapshot.test.js +24 -0
  403. package/packages/pi-coding-agent/dist/core/db-snapshot.test.js.map +1 -0
  404. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -0
  405. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  406. package/packages/pi-coding-agent/dist/core/extensions/runner.js +14 -1
  407. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  408. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +97 -0
  409. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
  410. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  411. package/packages/pi-coding-agent/dist/core/model-registry.js +5 -0
  412. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  413. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +4 -0
  414. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  415. package/packages/pi-coding-agent/dist/core/settings-manager.js +8 -0
  416. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  417. package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  418. package/packages/pi-coding-agent/dist/core/slash-commands.js +1 -0
  419. package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  420. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.js +6 -4
  421. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.js.map +1 -1
  422. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +67 -14
  423. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  424. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts +26 -0
  425. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts.map +1 -0
  426. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js +112 -0
  427. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js.map +1 -0
  428. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts +2 -0
  429. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.d.ts.map +1 -0
  430. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js +51 -0
  431. package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js.map +1 -0
  432. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  433. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  434. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
  435. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +10 -9
  436. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
  437. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -0
  438. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  439. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +11 -0
  440. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  441. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +27 -6
  442. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -1
  443. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +16 -0
  444. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  445. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +112 -18
  446. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  447. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  448. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +60 -1
  449. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  450. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js +40 -1
  451. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.test.js.map +1 -1
  452. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +1 -0
  453. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  454. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +1 -0
  455. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  456. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  457. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +12 -1
  458. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  459. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +54 -10
  460. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  461. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
  462. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +20 -0
  463. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  464. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts +2 -0
  465. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.d.ts.map +1 -0
  466. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js +79 -0
  467. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.test.js.map +1 -0
  468. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  469. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  470. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +13 -0
  471. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  472. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -1
  473. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  474. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +18 -1
  475. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  476. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  477. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +36 -27
  478. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  479. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts +11 -0
  480. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.d.ts.map +1 -0
  481. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js +18 -0
  482. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.js.map +1 -0
  483. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts +2 -0
  484. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.d.ts.map +1 -0
  485. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js +48 -0
  486. package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js.map +1 -0
  487. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -512
  488. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  489. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js +3 -7
  490. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  491. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage-safety-guard.test.d.ts +2 -0
  492. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage-safety-guard.test.d.ts.map +1 -0
  493. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage-safety-guard.test.js +10 -0
  494. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage-safety-guard.test.js.map +1 -0
  495. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.d.ts.map +1 -1
  496. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.js +3 -2
  497. package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.js.map +1 -1
  498. package/packages/pi-coding-agent/package.json +2 -1
  499. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +87 -0
  500. package/packages/pi-coding-agent/src/core/db-snapshot.test.ts +32 -0
  501. package/packages/pi-coding-agent/src/core/db-snapshot.ts +66 -0
  502. package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +108 -0
  503. package/packages/pi-coding-agent/src/core/extensions/runner.ts +16 -1
  504. package/packages/pi-coding-agent/src/core/model-registry.ts +4 -0
  505. package/packages/pi-coding-agent/src/core/settings-manager.ts +12 -0
  506. package/packages/pi-coding-agent/src/core/slash-commands.ts +1 -0
  507. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.ts +7 -5
  508. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +100 -16
  509. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.test.ts +59 -0
  510. package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.ts +160 -0
  511. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +1 -0
  512. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +10 -9
  513. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  514. package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +41 -9
  515. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +124 -18
  516. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.test.ts +43 -1
  517. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +75 -1
  518. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +1 -0
  519. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +1 -1
  520. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +75 -9
  521. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.test.ts +95 -0
  522. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +24 -1
  523. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +13 -0
  524. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +32 -2
  525. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +36 -27
  526. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.test.ts +65 -0
  527. package/packages/pi-coding-agent/src/modes/interactive/tui-mode.ts +29 -0
  528. package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +3 -336
  529. package/packages/pi-coding-agent/src/resources/extensions/memory/storage-safety-guard.test.ts +14 -0
  530. package/packages/pi-coding-agent/src/resources/extensions/memory/storage.ts +3 -2
  531. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  532. package/packages/pi-tui/dist/__tests__/style.test.d.ts +2 -0
  533. package/packages/pi-tui/dist/__tests__/style.test.d.ts.map +1 -0
  534. package/packages/pi-tui/dist/__tests__/style.test.js +63 -0
  535. package/packages/pi-tui/dist/__tests__/style.test.js.map +1 -0
  536. package/packages/pi-tui/dist/__tests__/tui.test.js +24 -3
  537. package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
  538. package/packages/pi-tui/dist/index.d.ts +1 -0
  539. package/packages/pi-tui/dist/index.d.ts.map +1 -1
  540. package/packages/pi-tui/dist/index.js +2 -0
  541. package/packages/pi-tui/dist/index.js.map +1 -1
  542. package/packages/pi-tui/dist/style.d.ts +41 -0
  543. package/packages/pi-tui/dist/style.d.ts.map +1 -0
  544. package/packages/pi-tui/dist/style.js +158 -0
  545. package/packages/pi-tui/dist/style.js.map +1 -0
  546. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  547. package/packages/pi-tui/dist/tui.js +1 -0
  548. package/packages/pi-tui/dist/tui.js.map +1 -1
  549. package/packages/pi-tui/package.json +1 -1
  550. package/packages/pi-tui/src/__tests__/style.test.ts +76 -0
  551. package/packages/pi-tui/src/__tests__/tui.test.ts +29 -3
  552. package/packages/pi-tui/src/index.ts +9 -0
  553. package/packages/pi-tui/src/style.ts +225 -0
  554. package/packages/pi-tui/src/tui.ts +1 -0
  555. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  556. package/packages/rpc-client/README.md +3 -3
  557. package/packages/rpc-client/dist/index.d.ts +1 -1
  558. package/packages/rpc-client/dist/index.d.ts.map +1 -1
  559. package/packages/rpc-client/dist/index.js.map +1 -1
  560. package/packages/rpc-client/dist/rpc-client.d.ts +2 -6
  561. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -1
  562. package/packages/rpc-client/dist/rpc-client.js.map +1 -1
  563. package/packages/rpc-client/dist/rpc-types.d.ts +1 -565
  564. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -1
  565. package/packages/rpc-client/dist/rpc-types.js +3 -11
  566. package/packages/rpc-client/dist/rpc-types.js.map +1 -1
  567. package/packages/rpc-client/package.json +4 -1
  568. package/packages/rpc-client/src/index.ts +1 -1
  569. package/packages/rpc-client/src/rpc-client.ts +3 -6
  570. package/packages/rpc-client/src/rpc-types.ts +3 -398
  571. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  572. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +12 -0
  573. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  574. package/pkg/dist/modes/interactive/theme/theme-schema.js +13 -0
  575. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  576. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -1
  577. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  578. package/pkg/dist/modes/interactive/theme/theme.js +18 -1
  579. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  580. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  581. package/pkg/dist/modes/interactive/theme/themes.js +36 -27
  582. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  583. package/pkg/package.json +1 -1
  584. package/src/resources/GSD-WORKFLOW.md +2 -2
  585. package/src/resources/extensions/github-sync/templates.ts +93 -88
  586. package/src/resources/extensions/github-sync/tests/inline-code.test.ts +66 -0
  587. package/src/resources/extensions/github-sync/tests/templates.test.ts +10 -2
  588. package/src/resources/extensions/gsd/auto/contracts.ts +87 -0
  589. package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +72 -0
  590. package/src/resources/extensions/gsd/auto/loop-deps.ts +11 -3
  591. package/src/resources/extensions/gsd/auto/loop.ts +461 -599
  592. package/src/resources/extensions/gsd/auto/orchestrator.ts +161 -0
  593. package/src/resources/extensions/gsd/auto/phases.ts +130 -37
  594. package/src/resources/extensions/gsd/auto/run-unit.ts +24 -14
  595. package/src/resources/extensions/gsd/auto/session.ts +11 -0
  596. package/src/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.ts +28 -0
  597. package/src/resources/extensions/gsd/auto/workflow-custom-engine-iteration.ts +52 -0
  598. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.ts +58 -0
  599. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.ts +71 -0
  600. package/src/resources/extensions/gsd/auto/workflow-custom-engine-retry.ts +90 -0
  601. package/src/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.ts +50 -0
  602. package/src/resources/extensions/gsd/auto/workflow-dispatch-claim.ts +97 -0
  603. package/src/resources/extensions/gsd/auto/workflow-dispatch-ledger.ts +45 -0
  604. package/src/resources/extensions/gsd/auto/workflow-iteration-completion.ts +26 -0
  605. package/src/resources/extensions/gsd/auto/workflow-journal-reporter.ts +33 -0
  606. package/src/resources/extensions/gsd/auto/workflow-kernel.ts +520 -0
  607. package/src/resources/extensions/gsd/auto/workflow-memory-pressure.ts +58 -0
  608. package/src/resources/extensions/gsd/auto/workflow-phase-reporter.ts +22 -0
  609. package/src/resources/extensions/gsd/auto/workflow-session-lock.ts +68 -0
  610. package/src/resources/extensions/gsd/auto/workflow-sidecar-iteration.ts +46 -0
  611. package/src/resources/extensions/gsd/auto/workflow-sidecar-queue.ts +46 -0
  612. package/src/resources/extensions/gsd/auto/workflow-turn-reporter.ts +68 -0
  613. package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +89 -0
  614. package/src/resources/extensions/gsd/auto/workflow-worker-heartbeat.ts +38 -0
  615. package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
  616. package/src/resources/extensions/gsd/auto-dashboard.ts +61 -8
  617. package/src/resources/extensions/gsd/auto-dispatch.ts +18 -0
  618. package/src/resources/extensions/gsd/auto-post-unit.ts +10 -10
  619. package/src/resources/extensions/gsd/auto-prompts.ts +392 -32
  620. package/src/resources/extensions/gsd/auto-recovery.ts +211 -59
  621. package/src/resources/extensions/gsd/auto-runtime-state.ts +7 -0
  622. package/src/resources/extensions/gsd/auto-start.ts +9 -7
  623. package/src/resources/extensions/gsd/auto-verification.ts +5 -1
  624. package/src/resources/extensions/gsd/auto-worktree.ts +85 -36
  625. package/src/resources/extensions/gsd/auto.ts +179 -2
  626. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +30 -2
  627. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -0
  628. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
  629. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +79 -52
  630. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-shouldblock-basepath.test.ts +97 -0
  631. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +143 -5
  632. package/src/resources/extensions/gsd/clean-root-preflight.ts +41 -3
  633. package/src/resources/extensions/gsd/commands/context.ts +1 -1
  634. package/src/resources/extensions/gsd/commands/dispatcher.ts +6 -0
  635. package/src/resources/extensions/gsd/commands-extract-learnings.ts +17 -12
  636. package/src/resources/extensions/gsd/commands-ship.ts +24 -51
  637. package/src/resources/extensions/gsd/commands-workflow-templates.ts +13 -0
  638. package/src/resources/extensions/gsd/component-loader.ts +5 -11
  639. package/src/resources/extensions/gsd/crash-recovery.ts +67 -10
  640. package/src/resources/extensions/gsd/custom-workflow-engine.ts +29 -0
  641. package/src/resources/extensions/gsd/db-adapter.ts +75 -0
  642. package/src/resources/extensions/gsd/db-base-schema.ts +383 -0
  643. package/src/resources/extensions/gsd/db-connection-cache.ts +45 -0
  644. package/src/resources/extensions/gsd/db-coordination-schema.ts +109 -0
  645. package/src/resources/extensions/gsd/db-decision-requirement-rows.ts +77 -0
  646. package/src/resources/extensions/gsd/db-gate-rows.ts +19 -0
  647. package/src/resources/extensions/gsd/db-lightweight-query-rows.ts +50 -0
  648. package/src/resources/extensions/gsd/db-memory-fts-schema.ts +66 -0
  649. package/src/resources/extensions/gsd/db-migration-backup.ts +34 -0
  650. package/src/resources/extensions/gsd/db-migration-steps.ts +451 -0
  651. package/src/resources/extensions/gsd/db-milestone-artifact-rows.ts +70 -0
  652. package/src/resources/extensions/gsd/db-open-state.ts +47 -0
  653. package/src/resources/extensions/gsd/db-provider.ts +148 -0
  654. package/src/resources/extensions/gsd/db-runtime-kv-schema.ts +30 -0
  655. package/src/resources/extensions/gsd/db-schema-metadata.ts +33 -0
  656. package/src/resources/extensions/gsd/db-task-slice-rows.ts +146 -0
  657. package/src/resources/extensions/gsd/db-transaction.ts +76 -0
  658. package/src/resources/extensions/gsd/db-verification-evidence-rows.ts +14 -0
  659. package/src/resources/extensions/gsd/db-verification-evidence-schema.ts +22 -0
  660. package/src/resources/extensions/gsd/detection.ts +128 -0
  661. package/src/resources/extensions/gsd/escalation.ts +3 -1
  662. package/src/resources/extensions/gsd/graph.ts +12 -5
  663. package/src/resources/extensions/gsd/gsd-db.ts +379 -1660
  664. package/src/resources/extensions/gsd/guided-flow.ts +113 -12
  665. package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
  666. package/src/resources/extensions/gsd/legacy-telemetry.ts +99 -0
  667. package/src/resources/extensions/gsd/markdown-renderer.ts +4 -1
  668. package/src/resources/extensions/gsd/migrate/command.ts +47 -1
  669. package/src/resources/extensions/gsd/migration-auto-check.ts +129 -0
  670. package/src/resources/extensions/gsd/model-router.ts +10 -6
  671. package/src/resources/extensions/gsd/notification-widget.ts +25 -4
  672. package/src/resources/extensions/gsd/paths.ts +6 -1
  673. package/src/resources/extensions/gsd/planning-path-scope.ts +35 -0
  674. package/src/resources/extensions/gsd/post-execution-checks.ts +35 -7
  675. package/src/resources/extensions/gsd/pr-evidence.ts +182 -0
  676. package/src/resources/extensions/gsd/pre-execution-checks.ts +4 -1
  677. package/src/resources/extensions/gsd/preferences-types.ts +23 -4
  678. package/src/resources/extensions/gsd/preferences-validation.ts +3 -3
  679. package/src/resources/extensions/gsd/process-task-path.ts +81 -0
  680. package/src/resources/extensions/gsd/prompt-loader.ts +9 -5
  681. package/src/resources/extensions/gsd/prompts/complete-milestone.md +32 -31
  682. package/src/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  683. package/src/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  684. package/src/resources/extensions/gsd/prompts/discuss.md +81 -181
  685. package/src/resources/extensions/gsd/prompts/execute-task.md +40 -67
  686. package/src/resources/extensions/gsd/prompts/forensics.md +41 -84
  687. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  688. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  689. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  690. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  691. package/src/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  692. package/src/resources/extensions/gsd/prompts/plan-milestone.md +47 -59
  693. package/src/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  694. package/src/resources/extensions/gsd/prompts/queue.md +46 -53
  695. package/src/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  696. package/src/resources/extensions/gsd/prompts/research-slice.md +23 -23
  697. package/src/resources/extensions/gsd/prompts/rethink.md +10 -10
  698. package/src/resources/extensions/gsd/prompts/system.md +65 -107
  699. package/src/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  700. package/src/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  701. package/src/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  702. package/src/resources/extensions/gsd/safety/evidence-collector.ts +11 -2
  703. package/src/resources/extensions/gsd/state.ts +6 -3
  704. package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +38 -0
  705. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +98 -0
  706. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +118 -1
  707. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +353 -0
  708. package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +19 -0
  709. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +277 -1
  710. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +39 -0
  711. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +3 -0
  712. package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +2 -2
  713. package/src/resources/extensions/gsd/tests/check-auto-start-pending-gate.test.ts +203 -0
  714. package/src/resources/extensions/gsd/tests/check-auto-start-ready-guard.test.ts +148 -0
  715. package/src/resources/extensions/gsd/tests/clean-root-preflight.test.ts +88 -2
  716. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +2 -2
  717. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +9 -0
  718. package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +3 -2
  719. package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +47 -0
  720. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +19 -5
  721. package/src/resources/extensions/gsd/tests/component-loader.test.ts +2 -9
  722. package/src/resources/extensions/gsd/tests/crash-handler-secondary.test.ts +55 -0
  723. package/src/resources/extensions/gsd/tests/crash-recovery-via-db.test.ts +22 -0
  724. package/src/resources/extensions/gsd/tests/current-directory-root-homedir-fallback.test.ts +63 -0
  725. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +144 -0
  726. package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +139 -0
  727. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +50 -0
  728. package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +3 -3
  729. package/src/resources/extensions/gsd/tests/db-adapter.test.ts +82 -0
  730. package/src/resources/extensions/gsd/tests/db-base-schema.test.ts +62 -0
  731. package/src/resources/extensions/gsd/tests/db-connection-cache.test.ts +60 -0
  732. package/src/resources/extensions/gsd/tests/db-coordination-schema.test.ts +39 -0
  733. package/src/resources/extensions/gsd/tests/db-decision-requirement-rows.test.ts +135 -0
  734. package/src/resources/extensions/gsd/tests/db-gate-rows.test.ts +53 -0
  735. package/src/resources/extensions/gsd/tests/db-lightweight-query-rows.test.ts +45 -0
  736. package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +86 -0
  737. package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +105 -0
  738. package/src/resources/extensions/gsd/tests/db-migration-steps.integration.test.ts +428 -0
  739. package/src/resources/extensions/gsd/tests/db-migration-steps.test.ts +159 -0
  740. package/src/resources/extensions/gsd/tests/db-milestone-artifact-rows.test.ts +53 -0
  741. package/src/resources/extensions/gsd/tests/db-open-state.test.ts +56 -0
  742. package/src/resources/extensions/gsd/tests/db-provider.test.ts +105 -0
  743. package/src/resources/extensions/gsd/tests/db-runtime-kv-schema.test.ts +37 -0
  744. package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +115 -0
  745. package/src/resources/extensions/gsd/tests/db-task-slice-rows.test.ts +128 -0
  746. package/src/resources/extensions/gsd/tests/db-transaction.test.ts +110 -0
  747. package/src/resources/extensions/gsd/tests/db-verification-evidence-schema.test.ts +76 -0
  748. package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +42 -0
  749. package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +63 -2
  750. package/src/resources/extensions/gsd/tests/detection.test.ts +140 -0
  751. package/src/resources/extensions/gsd/tests/discuss-headless-rendering.test.ts +37 -0
  752. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +109 -0
  753. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +59 -0
  754. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-basic.md +52 -0
  755. package/src/resources/extensions/gsd/tests/fixtures/pr-body/commands-ship-empty-optionals.md +42 -0
  756. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +55 -0
  757. package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +60 -0
  758. package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +36 -0
  759. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +10 -0
  760. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +139 -0
  761. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +43 -0
  762. package/src/resources/extensions/gsd/tests/guided-discuss-project-prompt-rendering.test.ts +41 -0
  763. package/src/resources/extensions/gsd/tests/guided-discuss-requirements-prompt-rendering.test.ts +45 -0
  764. package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +14 -0
  765. package/src/resources/extensions/gsd/tests/has-pending-deep-stage.test.ts +33 -1
  766. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +79 -0
  767. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +37 -0
  768. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +5 -3
  769. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +134 -0
  770. package/src/resources/extensions/gsd/tests/legacy-component-format-telemetry.test.ts +62 -0
  771. package/src/resources/extensions/gsd/tests/legacy-telemetry.test.ts +144 -0
  772. package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +40 -16
  773. package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +48 -0
  774. package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +127 -0
  775. package/src/resources/extensions/gsd/tests/model-router.test.ts +33 -12
  776. package/src/resources/extensions/gsd/tests/notification-store.test.ts +8 -0
  777. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +40 -1
  778. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +8 -0
  779. package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +2 -0
  780. package/src/resources/extensions/gsd/tests/plan-milestone-rendering.test.ts +45 -0
  781. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +65 -16
  782. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +77 -0
  783. package/src/resources/extensions/gsd/tests/plan-task.test.ts +21 -0
  784. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +46 -0
  785. package/src/resources/extensions/gsd/tests/pr-evidence-equivalence.test.ts +102 -0
  786. package/src/resources/extensions/gsd/tests/pr-evidence-hardening.test.ts +165 -0
  787. package/src/resources/extensions/gsd/tests/pr-evidence.test.ts +79 -0
  788. package/src/resources/extensions/gsd/tests/pre-exec-gate-loop.test.ts +3 -0
  789. package/src/resources/extensions/gsd/tests/process-task-path.test.ts +51 -0
  790. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -1
  791. package/src/resources/extensions/gsd/tests/queue-prompt-rendering.test.ts +37 -0
  792. package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +85 -0
  793. package/src/resources/extensions/gsd/tests/right-sized-workflow-prompts.test.ts +192 -0
  794. package/src/resources/extensions/gsd/tests/run-uat-composer.test.ts +2 -0
  795. package/src/resources/extensions/gsd/tests/safety-harness-false-positives.test.ts +29 -0
  796. package/src/resources/extensions/gsd/tests/smart-entry-complete.test.ts +38 -0
  797. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +46 -2
  798. package/src/resources/extensions/gsd/tests/subagent-model-dispatch.test.ts +59 -0
  799. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +32 -9
  800. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +42 -4
  801. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +32 -0
  802. package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +7 -0
  803. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +109 -1
  804. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +12 -0
  805. package/src/resources/extensions/gsd/tests/uok-loop-adapter-writer.test.ts +98 -0
  806. package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +1 -1
  807. package/src/resources/extensions/gsd/tests/workflow-custom-engine-dispatch-outcome.test.ts +55 -0
  808. package/src/resources/extensions/gsd/tests/workflow-custom-engine-iteration.test.ts +93 -0
  809. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile-outcome.test.ts +108 -0
  810. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile.test.ts +146 -0
  811. package/src/resources/extensions/gsd/tests/workflow-custom-engine-retry.test.ts +136 -0
  812. package/src/resources/extensions/gsd/tests/workflow-custom-engine-verify-outcome.test.ts +95 -0
  813. package/src/resources/extensions/gsd/tests/workflow-dispatch-claim.test.ts +158 -0
  814. package/src/resources/extensions/gsd/tests/workflow-dispatch-ledger.test.ts +82 -0
  815. package/src/resources/extensions/gsd/tests/workflow-iteration-completion.test.ts +44 -0
  816. package/src/resources/extensions/gsd/tests/workflow-journal-reporter.test.ts +49 -0
  817. package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +607 -0
  818. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +20 -4
  819. package/src/resources/extensions/gsd/tests/workflow-memory-pressure.test.ts +71 -0
  820. package/src/resources/extensions/gsd/tests/workflow-phase-reporter.test.ts +40 -0
  821. package/src/resources/extensions/gsd/tests/workflow-session-lock.test.ts +135 -0
  822. package/src/resources/extensions/gsd/tests/workflow-sidecar-iteration.test.ts +110 -0
  823. package/src/resources/extensions/gsd/tests/workflow-sidecar-queue.test.ts +116 -0
  824. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +21 -0
  825. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +164 -3
  826. package/src/resources/extensions/gsd/tests/workflow-turn-reporter.test.ts +87 -0
  827. package/src/resources/extensions/gsd/tests/workflow-unit-dispatch.test.ts +160 -0
  828. package/src/resources/extensions/gsd/tests/workflow-worker-heartbeat.test.ts +123 -0
  829. package/src/resources/extensions/gsd/tests/working-output-messages.test.ts +93 -0
  830. package/src/resources/extensions/gsd/tests/worktree-health-dispatch.test.ts +37 -6
  831. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +7 -0
  832. package/src/resources/extensions/gsd/tests/worktree-nested-git-safety.test.ts +9 -2
  833. package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +3 -0
  834. package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +17 -33
  835. package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +179 -0
  836. package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
  837. package/src/resources/extensions/gsd/tools/complete-task.ts +4 -1
  838. package/src/resources/extensions/gsd/tools/plan-slice.ts +13 -0
  839. package/src/resources/extensions/gsd/tools/plan-task.ts +10 -0
  840. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +90 -2
  841. package/src/resources/extensions/gsd/unit-context-composer.ts +49 -0
  842. package/src/resources/extensions/gsd/unit-context-manifest.ts +34 -0
  843. package/src/resources/extensions/gsd/unit-runtime.ts +14 -0
  844. package/src/resources/extensions/gsd/uok/audit.ts +25 -9
  845. package/src/resources/extensions/gsd/uok/contracts.ts +105 -0
  846. package/src/resources/extensions/gsd/uok/dispatch-envelope.ts +4 -0
  847. package/src/resources/extensions/gsd/uok/kernel.ts +10 -3
  848. package/src/resources/extensions/gsd/uok/loop-adapter.ts +60 -45
  849. package/src/resources/extensions/gsd/uok/plan-v2.ts +5 -1
  850. package/src/resources/extensions/gsd/uok/timeline.ts +158 -0
  851. package/src/resources/extensions/gsd/workflow-logger.ts +13 -13
  852. package/src/resources/extensions/gsd/workflow-manifest.ts +6 -15
  853. package/src/resources/extensions/gsd/workflow-projections.ts +5 -1
  854. package/src/resources/extensions/gsd/workflow-templates.ts +11 -0
  855. package/src/resources/extensions/gsd/working-output-messages.ts +120 -0
  856. package/src/resources/extensions/gsd/worktree-manager.ts +15 -4
  857. package/src/resources/extensions/shared/gsd-phase-state.ts +56 -3
  858. package/src/resources/extensions/shared/interview-ui.ts +18 -5
  859. package/src/resources/extensions/shared/tests/gsd-phase-state.test.ts +43 -1
  860. package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +41 -0
  861. package/dist/web/standalone/.next/server/chunks/6336.js +0 -1
  862. package/dist/web/standalone/.next/static/chunks/app/page-ff639266d978f2a0.js +0 -1
  863. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  864. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  865. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → YRK7-Es93MwpIn3VL35K0}/_buildManifest.js +0 -0
  866. /package/dist/web/standalone/.next/static/{J-CU-p_sp45CJHT3R9TJS → YRK7-Es93MwpIn3VL35K0}/_ssgManifest.js +0 -0
@@ -6,10 +6,11 @@
6
6
  * utility.
7
7
  */
8
8
  import { loadFile, parseContinue, parseSummary, loadActiveOverrides, formatOverridesSection, parseTaskPlanFile } from "./files.js";
9
- import { hasVerdict, getUatType } from "./verdict-parser.js";
9
+ import { hasVerdict, getUatType, extractVerdict } from "./verdict-parser.js";
10
10
  import { loadPrompt, inlineTemplate } from "./prompt-loader.js";
11
11
  import { resolveMilestoneFile, resolveSliceFile, resolveSlicePath, resolveTasksDir, resolveTaskFiles, resolveTaskFile, relMilestoneFile, relSliceFile, relSlicePath, relMilestonePath, resolveGsdRootFile, relGsdRootFile, resolveRuntimeFile, } from "./paths.js";
12
12
  import { resolveSkillDiscoveryMode, resolveInlineLevel, loadEffectiveGSDPreferences, resolveAllSkillReferences } from "./preferences.js";
13
+ import { isContextModeEnabled } from "./preferences-types.js";
13
14
  import { parseRoadmap } from "./parsers-legacy.js";
14
15
  import { getLoadedSkills } from "@gsd/pi-coding-agent";
15
16
  import { join, basename } from "node:path";
@@ -19,11 +20,12 @@ import { getPendingGatesForTurn } from "./gsd-db.js";
19
20
  import { assertGateCoverage, getGatesForTurn, } from "./gate-registry.js";
20
21
  import { formatDecisionsCompact, formatRequirementsCompact } from "./structured-data-formatter.js";
21
22
  import { readPhaseAnchor, formatAnchorForPrompt } from "./phase-anchor.js";
22
- import { composeInlinedContext } from "./unit-context-composer.js";
23
+ import { composeContextModeInstructions, composeInlinedContext } from "./unit-context-composer.js";
23
24
  import { logWarning } from "./workflow-logger.js";
24
25
  import { inlineGraphSubgraph } from "./graph-context.js";
25
26
  import { buildExtractionStepsBlock } from "./commands-extract-learnings.js";
26
27
  import { resolveSkillManifest, warnIfManifestHasMissingSkills } from "./skill-manifest.js";
28
+ import { classifyProject } from "./detection.js";
27
29
  // ─── Preamble Cap ─────────────────────────────────────────────────────────────
28
30
  /**
29
31
  * Historical static ceiling for the preamble cap. Kept as an upper bound even
@@ -61,6 +63,104 @@ function resolvePromptBudgets() {
61
63
  function resolveSummaryBudgetChars() {
62
64
  return resolvePromptBudgets().summaryBudgetChars;
63
65
  }
66
+ function formatProjectClassificationForPlanning(classification) {
67
+ const sampleFiles = classification.contentFiles.slice(0, 8);
68
+ const sample = sampleFiles.length > 0 ? sampleFiles.map((file) => `\`${file}\``).join(", ") : "(none)";
69
+ const lines = [
70
+ "### Project Classification",
71
+ "",
72
+ `- **Kind:** ${classification.kind}`,
73
+ `- **Content files:** ${classification.contentFiles.length}`,
74
+ `- **Sample files:** ${sample}`,
75
+ `- **Reason:** ${classification.reason}`,
76
+ "",
77
+ ];
78
+ if (classification.kind === "untyped-existing") {
79
+ if (classification.contentFiles.length <= 2) {
80
+ lines.push("**Workflow sizing:** This is a tiny existing untyped project. Prefer exactly one slice unless the milestone request clearly spans multiple independent user-visible capabilities.");
81
+ }
82
+ else if (classification.contentFiles.length <= 5) {
83
+ lines.push("**Workflow sizing:** This is a small existing untyped project. Prefer 1-2 slices unless the milestone request clearly spans multiple independent user-visible capabilities.");
84
+ }
85
+ else {
86
+ lines.push("**Workflow sizing:** Existing untyped project. Use generic file-level workflow guidance and size slices by real capability boundaries, not by missing tooling markers.");
87
+ }
88
+ }
89
+ else if (classification.kind === "greenfield") {
90
+ lines.push("**Workflow sizing:** No project content exists yet. Use normal greenfield sizing for the requested scope.");
91
+ }
92
+ else if (classification.kind === "typed-existing") {
93
+ lines.push("**Workflow sizing:** Known project markers exist. Use normal ecosystem-aware planning guidance.");
94
+ }
95
+ else {
96
+ lines.push("**Workflow sizing:** Invalid repository state. Planning should surface this as a blocker rather than inventing project structure.");
97
+ }
98
+ return lines.join("\n");
99
+ }
100
+ function normalizeArtifactRef(value) {
101
+ return value.trim().replace(/^[-\s]+/, "").replace(/^["'`]+|["'`]+$/g, "").replaceAll("\\", "/").replace(/^\.\//, "");
102
+ }
103
+ function parseCoveredArtifacts(validationContent) {
104
+ const covered = new Set();
105
+ const lines = validationContent.split(/\r?\n/);
106
+ let inCoveredArtifacts = false;
107
+ for (const line of lines) {
108
+ if (/^\s*covered[-_]?artifacts\s*:/i.test(line)) {
109
+ inCoveredArtifacts = true;
110
+ const inline = line.split(/covered[-_]?artifacts\s*:/i)[1]?.trim();
111
+ if (inline && inline !== "[]") {
112
+ inline.replace(/^\[|\]$/g, "").split(",").map(normalizeArtifactRef).filter(Boolean).forEach((item) => covered.add(item));
113
+ }
114
+ continue;
115
+ }
116
+ if (!inCoveredArtifacts)
117
+ continue;
118
+ if (/^\S/.test(line) && !/^\s*-/.test(line))
119
+ break;
120
+ const item = line.match(/^\s*-\s*(.+)$/)?.[1];
121
+ if (item)
122
+ covered.add(normalizeArtifactRef(item));
123
+ }
124
+ return covered;
125
+ }
126
+ function isValidationFreshOrApplicable(validationContent, currentArtifacts) {
127
+ if (!validationContent)
128
+ return false;
129
+ if (!/validation_metadata:/i.test(validationContent))
130
+ return false;
131
+ const coveredArtifacts = parseCoveredArtifacts(validationContent);
132
+ if (coveredArtifacts.size === 0)
133
+ return false;
134
+ return currentArtifacts
135
+ .map(normalizeArtifactRef)
136
+ .filter(Boolean)
137
+ .every((artifact) => coveredArtifacts.has(artifact));
138
+ }
139
+ function formatCloseoutReviewInstructions(validationContent, validationRel, currentArtifacts) {
140
+ const verdict = validationContent ? extractVerdict(validationContent) : null;
141
+ const validationFresh = isValidationFreshOrApplicable(validationContent, currentArtifacts);
142
+ if (verdict === "pass" && validationFresh) {
143
+ return [
144
+ "### Passing Validation Artifact",
145
+ "",
146
+ `A passing validation artifact is present at \`${validationRel}\`. Treat it as authoritative for success criteria, requirement coverage, verification classes, and cross-slice integration.`,
147
+ "",
148
+ "Do not delegate fresh reviewer/security/tester audits and do not redo the validation evidence review unless the artifact is internally inconsistent with the inlined summaries. Focus this unit on final milestone narrative, learnings, PROJECT/requirements updates, and `gsd_complete_milestone`.",
149
+ ].join("\n");
150
+ }
151
+ if (verdict) {
152
+ return [
153
+ "### Validation Requires Attention",
154
+ "",
155
+ `A validation artifact is present at \`${validationRel}\` with verdict \`${verdict}\`, but it is missing freshness metadata or does not cover current milestone artifacts. Do not treat the milestone as complete unless the issues are resolved and evidence supports completion.`,
156
+ ].join("\n");
157
+ }
158
+ return [
159
+ "### No Passing Validation Artifact",
160
+ "",
161
+ `No passing validation artifact was found at \`${validationRel}\`. Use the full closeout review path before completion.`,
162
+ ].join("\n");
163
+ }
64
164
  function capPreamble(preamble) {
65
165
  // Cap inlined context at min(historical 30K ceiling, scaled inline budget).
66
166
  // The ceiling preserves pre-fix behavior for large-window users; the scaled
@@ -71,6 +171,21 @@ function capPreamble(preamble) {
71
171
  return preamble;
72
172
  return truncateAtSectionBoundary(preamble, budget).content;
73
173
  }
174
+ function renderContextModeForPrompt(unitType, base, renderMode = "standalone") {
175
+ const effectivePrefs = loadEffectiveGSDPreferences(base)?.preferences;
176
+ return composeContextModeInstructions(unitType, {
177
+ enabled: isContextModeEnabled(effectivePrefs),
178
+ renderMode,
179
+ });
180
+ }
181
+ function prependContextModeToBlock(unitType, base, block, renderMode = "standalone") {
182
+ const contextMode = renderContextModeForPrompt(unitType, base, renderMode);
183
+ if (!contextMode)
184
+ return block;
185
+ if (!block.trim())
186
+ return contextMode;
187
+ return `${contextMode}\n\n${block}`;
188
+ }
74
189
  // ─── Executor Constraints ─────────────────────────────────────────────────────
75
190
  /**
76
191
  * Format executor context constraints for injection into the plan-slice prompt.
@@ -203,6 +318,169 @@ export async function inlineFileSmart(absPath, relPath, label, query, threshold
203
318
  const truncated = truncateAtSectionBoundary(content, threshold).content;
204
319
  return `### ${label}\nSource: \`${relPath}\`\n\n${truncated}`;
205
320
  }
321
+ function inlineCompactTemplate(name, label) {
322
+ const compact = {
323
+ plan: [
324
+ "# {{sliceId}}: {{sliceTitle}}",
325
+ "",
326
+ "**Goal:** {{goal}}",
327
+ "**Demo:** {{demo}}",
328
+ "",
329
+ "## Must-Haves",
330
+ "- {{mustHave}}",
331
+ "",
332
+ "## Threat Surface",
333
+ "- Abuse: {{abuseScenarios}}",
334
+ "- Data exposure: {{sensitiveDataAccessible}}",
335
+ "- Input trust: {{untrustedInput}}",
336
+ "",
337
+ "## Requirement Impact",
338
+ "- Requirements touched: {{requirementIds}}",
339
+ "- Re-verify: {{whatMustBeRetested}}",
340
+ "- Decisions revisited: {{decisionIds}}",
341
+ "",
342
+ "## Proof Level",
343
+ "- This slice proves: {{contract | integration | operational | final-assembly}}",
344
+ "- Real runtime required: {{yes/no}}",
345
+ "- Human/UAT required: {{yes/no}}",
346
+ "",
347
+ "## Verification",
348
+ "- {{testFileOrCommand}}",
349
+ "",
350
+ "## Observability / Diagnostics",
351
+ "- Runtime signals: {{signalOrNone}}",
352
+ "- Inspection surfaces: {{surfaceOrNone}}",
353
+ "- Failure visibility: {{failureSignalOrNone}}",
354
+ "- Redaction constraints: {{secretOrPiiBoundaryOrNone}}",
355
+ "",
356
+ "## Integration Closure",
357
+ "- Upstream surfaces consumed: {{filesModulesContracts}}",
358
+ "- New wiring introduced: {{entrypointOrNone}}",
359
+ "- Remaining end-to-end work: {{listOrNothing}}",
360
+ "",
361
+ "## Tasks",
362
+ "- [ ] **T01: {{taskTitle}}** `est:{{estimate}}`",
363
+ " - Why: {{whyThisTaskExists}}",
364
+ " - Files: `{{filePath}}`",
365
+ " - Do: {{specificImplementationStepsAndConstraints}}",
366
+ " - Verify: {{testCommandOrRuntimeCheck}}",
367
+ " - Done when: {{measurableAcceptanceCondition}}",
368
+ "",
369
+ "## Files Likely Touched",
370
+ "- `{{filePath}}`",
371
+ ].join("\n"),
372
+ "task-summary": [
373
+ "---",
374
+ "id: {{taskId}}",
375
+ "parent: {{sliceId}}",
376
+ "milestone: {{milestoneId}}",
377
+ "provides: [{{whatThisTaskProvides}}]",
378
+ "key_files: [{{filePath}}]",
379
+ "key_decisions: [{{decision}}]",
380
+ "patterns_established: [{{pattern}}]",
381
+ "observability_surfaces: [{{diagnosticOrNone}}]",
382
+ "duration: {{duration}}",
383
+ "verification_result: passed",
384
+ "completed_at: {{date}}",
385
+ "blocker_discovered: false",
386
+ "---",
387
+ "",
388
+ "# {{taskId}}: {{taskTitle}}",
389
+ "**{{oneLiner}}**",
390
+ "",
391
+ "## What Happened",
392
+ "{{narrative}}",
393
+ "",
394
+ "## Verification",
395
+ "{{whatWasVerifiedAndHow}}",
396
+ "",
397
+ "## Verification Evidence",
398
+ "| # | Command | Exit Code | Verdict | Duration |",
399
+ "|---|---------|-----------|---------|----------|",
400
+ "| {{row}} | {{command}} | {{exitCode}} | {{verdict}} | {{duration}} |",
401
+ "",
402
+ "## Diagnostics",
403
+ "{{diagnosticsOrNone}}",
404
+ "",
405
+ "## Deviations",
406
+ "{{deviationsFromPlan_OR_none}}",
407
+ "",
408
+ "## Known Issues",
409
+ "{{issuesDiscoveredButNotFixed_OR_none}}",
410
+ "",
411
+ "## Files Created/Modified",
412
+ "- `{{filePath}}` - {{description}}",
413
+ ].join("\n"),
414
+ "slice-summary": [
415
+ "---",
416
+ "id: {{sliceId}}",
417
+ "parent: {{milestoneId}}",
418
+ "milestone: {{milestoneId}}",
419
+ "provides: [{{whatThisSliceProvides}}]",
420
+ "requires: []",
421
+ "affects: []",
422
+ "key_files: [{{filePath}}]",
423
+ "key_decisions: [{{decision}}]",
424
+ "patterns_established: [{{pattern}}]",
425
+ "observability_surfaces: [{{diagnosticOrNone}}]",
426
+ "drill_down_paths: [{{pathToTaskSummary}}]",
427
+ "duration: {{duration}}",
428
+ "verification_result: passed",
429
+ "completed_at: {{date}}",
430
+ "---",
431
+ "",
432
+ "# {{sliceId}}: {{sliceTitle}}",
433
+ "**{{oneLiner}}**",
434
+ "",
435
+ "## What Happened",
436
+ "{{narrative}}",
437
+ "",
438
+ "## Verification",
439
+ "{{whatWasVerifiedAcrossAllTasks}}",
440
+ "",
441
+ "## Requirements Advanced",
442
+ "- {{requirementId}} - {{howThisSliceAdvancedIt}}",
443
+ "",
444
+ "## Requirements Validated",
445
+ "- {{requirementId}} - {{whatProofNowMakesItValidated}}",
446
+ "",
447
+ "## New Requirements Surfaced",
448
+ "- {{newRequirementOr_none}}",
449
+ "",
450
+ "## Requirements Invalidated or Re-scoped",
451
+ "- {{requirementIdOr_none}} - {{whatChanged}}",
452
+ "",
453
+ "## Operational Readiness",
454
+ "- Health signal: {{healthSignalOrNA}}",
455
+ "- Failure signal: {{failureSignalOrNA}}",
456
+ "- Recovery: {{recoveryOrNA}}",
457
+ "- Monitoring gaps: {{gapsOrNone}}",
458
+ "",
459
+ "## Deviations",
460
+ "{{deviationsFromPlan_OR_none}}",
461
+ "",
462
+ "## Known Limitations",
463
+ "{{whatDoesntWorkYet_OR_whatWasDeferredToLaterSlices}}",
464
+ "",
465
+ "## Follow-ups",
466
+ "{{workDeferredOrDiscoveredDuringExecution_OR_none}}",
467
+ "",
468
+ "## Files Created/Modified",
469
+ "- `{{filePath}}` - {{description}}",
470
+ "",
471
+ "## Forward Intelligence",
472
+ "### What the next slice should know",
473
+ "- {{insightThatWouldHelpDownstreamWork}}",
474
+ "### What's fragile",
475
+ "- {{fragileAreaOrThinImplementation}} - {{whyItMatters}}",
476
+ "### Authoritative diagnostics",
477
+ "- {{whereAFutureAgentShouldLookFirst}} - {{whyThisSignalIsTrustworthy}}",
478
+ "### What assumptions changed",
479
+ "- {{originalAssumption}} - {{whatActuallyHappened}}",
480
+ ].join("\n"),
481
+ };
482
+ return `${compact[name]}\n\n### Output Template: ${label}\nSource: \`templates/${name}.md\``;
483
+ }
206
484
  /**
207
485
  * Compact slice-summary excerpt for milestone-level closers (#4780).
208
486
  *
@@ -1119,6 +1397,7 @@ export async function checkNeedsRunUat(base, mid, state, prefs) {
1119
1397
  */
1120
1398
  export async function buildDiscussMilestonePrompt(mid, midTitle, base, structuredQuestionsAvailable = "false") {
1121
1399
  const discussTemplates = inlineTemplate("context", "Context");
1400
+ const contextModeInstructions = renderContextModeForPrompt("discuss-milestone", base);
1122
1401
  const basePrompt = loadPrompt("guided-discuss-milestone", {
1123
1402
  workingDirectory: base,
1124
1403
  milestoneId: mid,
@@ -1128,13 +1407,14 @@ export async function buildDiscussMilestonePrompt(mid, midTitle, base, structure
1128
1407
  commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally.",
1129
1408
  fastPathInstruction: "",
1130
1409
  });
1410
+ const promptWithContextMode = prependContextModeToBlock("discuss-milestone", base, basePrompt);
1131
1411
  // If a CONTEXT-DRAFT.md exists, append it as seed material
1132
1412
  const draftPath = resolveMilestoneFile(base, mid, "CONTEXT-DRAFT");
1133
1413
  const draftContent = draftPath ? await loadFile(draftPath) : null;
1134
1414
  if (draftContent) {
1135
- return `${basePrompt}\n\n## Prior Discussion (Draft Seed)\n\nThe following draft was captured from a prior multi-milestone discussion. Use it as seed material — the user has already provided this context. Start with a brief reflection on what the draft covers, then probe for any gaps or open questions before writing the full CONTEXT.md.\n\n${draftContent}`;
1415
+ return `${promptWithContextMode}\n\n## Prior Discussion (Draft Seed)\n\nThe following draft was captured from a prior multi-milestone discussion. Use it as seed material — the user has already provided this context. Start with a brief reflection on what the draft covers, then probe for any gaps or open questions before writing the full CONTEXT.md.\n\n${draftContent}`;
1136
1416
  }
1137
- return basePrompt;
1417
+ return contextModeInstructions ? promptWithContextMode : basePrompt;
1138
1418
  }
1139
1419
  /**
1140
1420
  * Build a prompt for the workflow-preferences unit type (deep mode).
@@ -1143,10 +1423,10 @@ export async function buildDiscussMilestonePrompt(mid, midTitle, base, structure
1143
1423
  * in deep-mode bootstrap before discuss-project.
1144
1424
  */
1145
1425
  export async function buildWorkflowPreferencesPrompt(base, structuredQuestionsAvailable = "false") {
1146
- return loadPrompt("guided-workflow-preferences", {
1426
+ return prependContextModeToBlock("workflow-preferences", base, loadPrompt("guided-workflow-preferences", {
1147
1427
  workingDirectory: base,
1148
1428
  structuredQuestionsAvailable,
1149
- });
1429
+ }));
1150
1430
  }
1151
1431
  /**
1152
1432
  * Build a prompt for the research-project (parallel) unit type (deep mode).
@@ -1156,10 +1436,10 @@ export async function buildWorkflowPreferencesPrompt(base, structuredQuestionsAv
1156
1436
  * are missing. Skipped entirely if user picked "skip".
1157
1437
  */
1158
1438
  export async function buildResearchProjectPrompt(base, structuredQuestionsAvailable = "false") {
1159
- return loadPrompt("guided-research-project", {
1439
+ return prependContextModeToBlock("research-project", base, loadPrompt("guided-research-project", {
1160
1440
  workingDirectory: base,
1161
1441
  structuredQuestionsAvailable,
1162
- });
1442
+ }));
1163
1443
  }
1164
1444
  /**
1165
1445
  * Build a prompt for the research-decision unit type (deep mode).
@@ -1168,10 +1448,10 @@ export async function buildResearchProjectPrompt(base, structuredQuestionsAvaila
1168
1448
  * and before research-project-parallel.
1169
1449
  */
1170
1450
  export async function buildResearchDecisionPrompt(base, structuredQuestionsAvailable = "false") {
1171
- return loadPrompt("guided-research-decision", {
1451
+ return prependContextModeToBlock("research-decision", base, loadPrompt("guided-research-decision", {
1172
1452
  workingDirectory: base,
1173
1453
  structuredQuestionsAvailable,
1174
- });
1454
+ }));
1175
1455
  }
1176
1456
  /**
1177
1457
  * Build a prompt for the discuss-project unit type (deep mode).
@@ -1181,12 +1461,12 @@ export async function buildResearchDecisionPrompt(base, structuredQuestionsAvail
1181
1461
  */
1182
1462
  export async function buildDiscussProjectPrompt(base, structuredQuestionsAvailable = "false") {
1183
1463
  const inlinedTemplates = inlineTemplate("project", "Project");
1184
- return loadPrompt("guided-discuss-project", {
1464
+ return prependContextModeToBlock("discuss-project", base, loadPrompt("guided-discuss-project", {
1185
1465
  workingDirectory: base,
1186
1466
  inlinedTemplates,
1187
1467
  structuredQuestionsAvailable,
1188
1468
  commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally.",
1189
- });
1469
+ }));
1190
1470
  }
1191
1471
  /**
1192
1472
  * Build a prompt for the discuss-requirements unit type (deep mode).
@@ -1196,12 +1476,12 @@ export async function buildDiscussProjectPrompt(base, structuredQuestionsAvailab
1196
1476
  */
1197
1477
  export async function buildDiscussRequirementsPrompt(base, structuredQuestionsAvailable = "false") {
1198
1478
  const inlinedTemplates = inlineTemplate("requirements", "Requirements");
1199
- return loadPrompt("guided-discuss-requirements", {
1479
+ return prependContextModeToBlock("discuss-requirements", base, loadPrompt("guided-discuss-requirements", {
1200
1480
  workingDirectory: base,
1201
1481
  inlinedTemplates,
1202
1482
  structuredQuestionsAvailable,
1203
1483
  commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally.",
1204
- });
1484
+ }));
1205
1485
  }
1206
1486
  export async function buildResearchMilestonePrompt(mid, midTitle, base) {
1207
1487
  // #4782 phase 3: research-milestone migrated through the composer.
@@ -1254,7 +1534,7 @@ export async function buildResearchMilestonePrompt(mid, midTitle, base) {
1254
1534
  if (knowledgeInlineRM)
1255
1535
  parts.push(knowledgeInlineRM);
1256
1536
  }
1257
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`);
1537
+ const inlinedContext = prependContextModeToBlock("research-milestone", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`));
1258
1538
  const outputRelPath = relMilestoneFile(base, mid, "RESEARCH");
1259
1539
  return loadPrompt("research-milestone", {
1260
1540
  workingDirectory: base,
@@ -1284,6 +1564,7 @@ export async function buildPlanMilestonePrompt(mid, midTitle, base, level) {
1284
1564
  const researchAnchor = readPhaseAnchor(base, mid, "research-milestone");
1285
1565
  if (researchAnchor)
1286
1566
  inlined.push(formatAnchorForPrompt(researchAnchor));
1567
+ inlined.push(formatProjectClassificationForPlanning(classifyProject(base)));
1287
1568
  inlined.push(await inlineFile(contextPath, contextRel, "Milestone Context"));
1288
1569
  const researchInline = await inlineFileOptional(researchPath, researchRel, "Milestone Research");
1289
1570
  if (researchInline)
@@ -1324,7 +1605,7 @@ export async function buildPlanMilestonePrompt(mid, midTitle, base, level) {
1324
1605
  inlined.push(inlineTemplate("plan", "Slice Plan"));
1325
1606
  inlined.push(inlineTemplate("task-plan", "Task Plan"));
1326
1607
  }
1327
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
1608
+ const inlinedContext = prependContextModeToBlock("plan-milestone", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`));
1328
1609
  const outputRelPath = relMilestoneFile(base, mid, "ROADMAP");
1329
1610
  const researchOutputPath = join(base, relMilestoneFile(base, mid, "RESEARCH"));
1330
1611
  const secretsOutputPath = join(base, relMilestoneFile(base, mid, "SECRETS"));
@@ -1349,7 +1630,7 @@ export async function buildPlanMilestonePrompt(mid, midTitle, base, level) {
1349
1630
  ...buildSkillDiscoveryVars(),
1350
1631
  });
1351
1632
  }
1352
- export async function buildResearchSlicePrompt(mid, _midTitle, sid, sTitle, base) {
1633
+ export async function buildResearchSlicePrompt(mid, _midTitle, sid, sTitle, base, options) {
1353
1634
  const roadmapPath = resolveMilestoneFile(base, mid, "ROADMAP");
1354
1635
  const roadmapRel = relMilestoneFile(base, mid, "ROADMAP");
1355
1636
  const contextPath = resolveMilestoneFile(base, mid, "CONTEXT");
@@ -1400,7 +1681,7 @@ export async function buildResearchSlicePrompt(mid, _midTitle, sid, sTitle, base
1400
1681
  const overridesInline = formatOverridesSection(activeOverrides);
1401
1682
  if (overridesInline)
1402
1683
  inlined.unshift(overridesInline);
1403
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
1684
+ const inlinedContext = prependContextModeToBlock("research-slice", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`), options?.contextModeRenderMode);
1404
1685
  const outputRelPath = relSliceFile(base, mid, sid, "RESEARCH");
1405
1686
  return loadPrompt("research-slice", {
1406
1687
  workingDirectory: base,
@@ -1475,7 +1756,7 @@ async function renderSlicePrompt(options) {
1475
1756
  const graphBlock = await inlineGraphSubgraph(base, `${sid} ${sTitle}`, { budget: 3000 });
1476
1757
  if (graphBlock)
1477
1758
  inlined.push(graphBlock);
1478
- inlined.push(inlineTemplate("plan", "Slice Plan"));
1759
+ inlined.push(level === "minimal" ? inlineCompactTemplate("plan", "Slice Plan") : inlineTemplate("plan", "Slice Plan"));
1479
1760
  if (level === "full") {
1480
1761
  inlined.push(inlineTemplate("task-plan", "Task Plan"));
1481
1762
  }
@@ -1483,7 +1764,7 @@ async function renderSlicePrompt(options) {
1483
1764
  const overridesInline = formatOverridesSection(await loadActiveOverrides(base));
1484
1765
  if (overridesInline)
1485
1766
  inlined.unshift(overridesInline);
1486
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
1767
+ const inlinedContext = prependContextModeToBlock(promptTemplate, base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`), options.contextModeRenderMode);
1487
1768
  const executorContextConstraints = formatExecutorConstraints(sessionContextWindow, modelRegistry, sessionProvider);
1488
1769
  const outputRelPath = relSliceFile(base, mid, sid, "PLAN");
1489
1770
  const commitInstruction = "Do not commit — .gsd/ planning docs are managed externally and not tracked in git.";
@@ -1630,7 +1911,7 @@ export async function buildExecuteTaskPrompt(mid, sid, sTitle, tid, tTitle, base
1630
1911
  // Knowledge graph: tight subgraph for this task (graceful — skipped if no graph.json)
1631
1912
  const graphBlockET = await inlineGraphSubgraph(base, `${tid} ${tTitle}`, { budget: 2000 });
1632
1913
  const inlinedTemplates = inlineLevel === "minimal"
1633
- ? inlineTemplate("task-summary", "Task Summary")
1914
+ ? inlineCompactTemplate("task-summary", "Task Summary")
1634
1915
  : [
1635
1916
  inlineTemplate("task-summary", "Task Summary"),
1636
1917
  inlineTemplate("decisions", "Decisions"),
@@ -1686,6 +1967,7 @@ export async function buildExecuteTaskPrompt(mid, sid, sTitle, tid, tTitle, base
1686
1967
  const etPending = getPendingGatesForTurn(mid, sid, "execute-task", tid);
1687
1968
  assertGateCoverage(etPending, "execute-task", { requireAll: false });
1688
1969
  const gatesToClose = renderGatesToCloseBlock(getGatesForTurn("execute-task"), { pending: new Set(etPending.map((g) => g.gate_id)), allowOmit: true });
1970
+ phaseAnchorSection = prependContextModeToBlock("execute-task", base, phaseAnchorSection, opts.contextModeRenderMode);
1689
1971
  return loadPrompt("execute-task", {
1690
1972
  overridesSection,
1691
1973
  runtimeContext,
@@ -1713,6 +1995,7 @@ export async function buildExecuteTaskPrompt(mid, sid, sTitle, tid, tTitle, base
1713
1995
  taskTitle: tTitle,
1714
1996
  taskPlanContent,
1715
1997
  extraContext: [taskPlanInline, slicePlanExcerpt, finalCarryForward, resumeSection],
1998
+ unitType: "execute-task",
1716
1999
  }),
1717
2000
  });
1718
2001
  }
@@ -1762,7 +2045,9 @@ export async function buildCompleteSlicePrompt(mid, midTitle, sid, sTitle, base,
1762
2045
  return blocks.length > 0 ? blocks.join("\n\n---\n\n") : null;
1763
2046
  }
1764
2047
  case "templates": {
1765
- const parts = [inlineTemplate("slice-summary", "Slice Summary")];
2048
+ const parts = [inlineLevel === "minimal"
2049
+ ? inlineCompactTemplate("slice-summary", "Slice Summary")
2050
+ : inlineTemplate("slice-summary", "Slice Summary")];
1766
2051
  if (inlineLevel !== "minimal") {
1767
2052
  parts.push(inlineTemplate("uat", "UAT"));
1768
2053
  }
@@ -1803,7 +2088,7 @@ export async function buildCompleteSlicePrompt(mid, midTitle, sid, sTitle, base,
1803
2088
  const finalBody = completeOverridesInline
1804
2089
  ? `${completeOverridesInline}\n\n---\n\n${body}`
1805
2090
  : body;
1806
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${finalBody}`);
2091
+ const inlinedContext = prependContextModeToBlock("complete-slice", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${finalBody}`));
1807
2092
  const roadmapRel = relMilestoneFile(base, mid, "ROADMAP");
1808
2093
  const sliceRel = relSlicePath(base, mid, sid);
1809
2094
  const sliceSummaryPath = join(base, `${sliceRel}/${sid}-SUMMARY.md`);
@@ -1832,6 +2117,9 @@ export async function buildCompleteMilestonePrompt(mid, midTitle, base, level) {
1832
2117
  const inlineLevel = level ?? resolveInlineLevel();
1833
2118
  const roadmapPath = resolveMilestoneFile(base, mid, "ROADMAP");
1834
2119
  const roadmapRel = relMilestoneFile(base, mid, "ROADMAP");
2120
+ const validationPath = resolveMilestoneFile(base, mid, "VALIDATION");
2121
+ const validationRel = relMilestoneFile(base, mid, "VALIDATION");
2122
+ const validationContent = validationPath ? await loadFile(validationPath) : null;
1835
2123
  const inlined = [];
1836
2124
  inlined.push(await inlineFile(roadmapPath, roadmapRel, "Milestone Roadmap"));
1837
2125
  // Inline all slice summaries (deduplicated by slice ID)
@@ -1871,6 +2159,13 @@ export async function buildCompleteMilestonePrompt(mid, midTitle, base, level) {
1871
2159
  const pathList = summaryRelPaths.map(p => `- \`${p}\``).join("\n");
1872
2160
  inlined.push(`### On-demand Slice Summaries\n\nExcerpted above. Read the full file for any slice when the excerpt's section heads don't carry enough narrative for the milestone summary you're drafting:\n\n${pathList}`);
1873
2161
  }
2162
+ const validationContext = [
2163
+ formatCloseoutReviewInstructions(validationContent, validationRel, [validationRel, roadmapRel, ...summaryRelPaths]),
2164
+ ];
2165
+ if (validationContent) {
2166
+ validationContext.push(`### Milestone Validation\nSource: \`${validationRel}\`\n\n${validationContent.trim()}`);
2167
+ }
2168
+ inlined.unshift(...validationContext);
1874
2169
  // Inline root GSD files (skip for minimal — completion can read these if needed)
1875
2170
  if (inlineLevel !== "minimal") {
1876
2171
  const requirementsInline = await inlineRequirementsFromDb(base, mid, undefined, inlineLevel);
@@ -1894,7 +2189,7 @@ export async function buildCompleteMilestonePrompt(mid, midTitle, base, level) {
1894
2189
  if (contextInline)
1895
2190
  inlined.push(contextInline);
1896
2191
  inlined.push(inlineTemplate("milestone-summary", "Milestone Summary"));
1897
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
2192
+ const inlinedContext = prependContextModeToBlock("complete-milestone", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`));
1898
2193
  const milestoneSummaryPath = join(base, `${relMilestonePath(base, mid)}/${mid}-SUMMARY.md`);
1899
2194
  const learningsRelPath = join(relMilestonePath(base, mid), `${mid}-LEARNINGS.md`);
1900
2195
  const learningsAbsPath = join(base, learningsRelPath);
@@ -2034,7 +2329,7 @@ export async function buildValidateMilestonePrompt(mid, midTitle, base, level) {
2034
2329
  const contextInline = await inlineFileOptional(contextPath, contextRel, "Milestone Context");
2035
2330
  if (contextInline)
2036
2331
  inlined.push(contextInline);
2037
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
2332
+ const inlinedContext = prependContextModeToBlock("validate-milestone", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`));
2038
2333
  const validationOutputPath = join(base, `${relMilestonePath(base, mid)}/${mid}-VALIDATION.md`);
2039
2334
  const roadmapOutputPath = `${relMilestonePath(base, mid)}/${mid}-ROADMAP.md`;
2040
2335
  // Every milestone validation turn owns MV01–MV04 unconditionally: the
@@ -2104,7 +2399,7 @@ export async function buildReplanSlicePrompt(mid, midTitle, sid, sTitle, base) {
2104
2399
  const replanOverridesInline = formatOverridesSection(replanActiveOverrides);
2105
2400
  if (replanOverridesInline)
2106
2401
  inlined.unshift(replanOverridesInline);
2107
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
2402
+ const inlinedContext = prependContextModeToBlock("replan-slice", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`));
2108
2403
  const replanPath = join(base, `${relSlicePath(base, mid, sid)}/${sid}-REPLAN.md`);
2109
2404
  // Build capture context for replan prompt (captures that triggered this replan)
2110
2405
  let captureContext = "(none)";
@@ -2171,7 +2466,7 @@ export async function buildRunUatPrompt(mid, sliceId, uatPath, uatContent, base)
2171
2466
  }
2172
2467
  };
2173
2468
  const composed = await composeInlinedContext("run-uat", resolveArtifact);
2174
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${composed}`);
2469
+ const inlinedContext = prependContextModeToBlock("run-uat", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${composed}`));
2175
2470
  const uatResultPath = join(base, relSliceFile(base, mid, sliceId, "ASSESSMENT"));
2176
2471
  const uatType = getUatType(uatContent);
2177
2472
  return loadPrompt("run-uat", {
@@ -2242,7 +2537,7 @@ export async function buildReassessRoadmapPrompt(mid, midTitle, completedSliceId
2242
2537
  const knowledgeInlineRA = await inlineKnowledgeBudgeted(base, extractKeywords(midTitle));
2243
2538
  if (knowledgeInlineRA)
2244
2539
  parts.push(knowledgeInlineRA);
2245
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`);
2540
+ const inlinedContext = prependContextModeToBlock("reassess-roadmap", base, capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`));
2246
2541
  const assessmentPath = join(base, relSliceFile(base, mid, completedSliceId, "ASSESSMENT"));
2247
2542
  // Build deferred captures context for reassess prompt
2248
2543
  let deferredCaptures = "(none)";
@@ -2313,6 +2608,7 @@ export async function buildReactiveExecutePrompt(mid, midTitle, sid, sTitle, rea
2313
2608
  sessionContextWindow: opts?.sessionContextWindow,
2314
2609
  modelRegistry: opts?.modelRegistry,
2315
2610
  sessionProvider: opts?.sessionProvider,
2611
+ contextModeRenderMode: "nested",
2316
2612
  });
2317
2613
  const modelSuffix = subagentModel ? ` with model: "${subagentModel}"` : "";
2318
2614
  subagentSections.push([
@@ -2332,7 +2628,7 @@ export async function buildReactiveExecutePrompt(mid, midTitle, sid, sTitle, rea
2332
2628
  milestoneTitle: midTitle,
2333
2629
  sliceId: sid,
2334
2630
  sliceTitle: sTitle,
2335
- graphContext,
2631
+ graphContext: prependContextModeToBlock("reactive-execute", base, graphContext),
2336
2632
  readyTaskCount: String(readyTaskIds.length),
2337
2633
  readyTaskList: readyTaskListLines.join("\n"),
2338
2634
  subagentPrompts: subagentSections.join("\n\n---\n\n"),
@@ -2382,7 +2678,7 @@ export async function buildParallelResearchSlicesPrompt(mid, midTitle, slices, b
2382
2678
  const subagentSections = [];
2383
2679
  const modelSuffix = subagentModel ? ` with model: "${subagentModel}"` : "";
2384
2680
  for (const slice of slices) {
2385
- const slicePrompt = await buildResearchSlicePrompt(mid, midTitle, slice.id, slice.title, basePath);
2681
+ const slicePrompt = await buildResearchSlicePrompt(mid, midTitle, slice.id, slice.title, basePath, { contextModeRenderMode: "nested" });
2386
2682
  subagentSections.push([
2387
2683
  `### ${slice.id}: ${slice.title}`,
2388
2684
  "",
@@ -2426,6 +2722,8 @@ export async function buildGateEvaluatePrompt(mid, midTitle, sid, sTitle, base,
2426
2722
  for (const def of gateDefs) {
2427
2723
  gateListLines.push(`- **${def.id}**: ${def.question}`);
2428
2724
  const subPrompt = [
2725
+ renderContextModeForPrompt("gate-evaluate", base, "nested"),
2726
+ "",
2429
2727
  `You are evaluating quality gate **${def.id}** for slice ${sid} (${sTitle}).`,
2430
2728
  "",
2431
2729
  `**Working directory:** \`${normalizedBase}\`. All file reads, writes, and shell commands MUST operate relative to this directory. Do NOT \`cd\` to any other directory.`,
@@ -2466,7 +2764,7 @@ export async function buildGateEvaluatePrompt(mid, midTitle, sid, sTitle, base,
2466
2764
  milestoneTitle: midTitle,
2467
2765
  sliceId: sid,
2468
2766
  sliceTitle: sTitle,
2469
- slicePlanContent: planContent,
2767
+ slicePlanContent: prependContextModeToBlock("gate-evaluate", base, planContent),
2470
2768
  gateCount: String(pending.length),
2471
2769
  gateList: gateListLines.join("\n"),
2472
2770
  subagentPrompts: subagentSections.join("\n\n---\n\n"),
@@ -2536,7 +2834,7 @@ export async function buildRewriteDocsPrompt(mid, midTitle, activeSlice, base, o
2536
2834
  `**During:** ${o.appliedAt}`,
2537
2835
  ].join("\n")).join("\n\n");
2538
2836
  const documentList = docList.length > 0 ? docList.join("\n") : "- No active plan documents found.";
2539
- return loadPrompt("rewrite-docs", {
2837
+ return prependContextModeToBlock("rewrite-docs", base, loadPrompt("rewrite-docs", {
2540
2838
  workingDirectory: base,
2541
2839
  milestoneId: mid,
2542
2840
  milestoneTitle: midTitle,
@@ -2545,5 +2843,5 @@ export async function buildRewriteDocsPrompt(mid, midTitle, activeSlice, base, o
2545
2843
  overrideContent,
2546
2844
  documentList,
2547
2845
  overridesPath: relGsdRootFile("OVERRIDES"),
2548
- });
2846
+ }));
2549
2847
  }