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
@@ -8,7 +8,7 @@
8
8
 
9
9
  import { loadFile, parseContinue, parseSummary, loadActiveOverrides, formatOverridesSection, parseTaskPlanFile } from "./files.js";
10
10
  import type { Override, UatType } from "./files.js";
11
- import { hasVerdict, getUatType } from "./verdict-parser.js";
11
+ import { hasVerdict, getUatType, extractVerdict } from "./verdict-parser.js";
12
12
  import { loadPrompt, inlineTemplate } from "./prompt-loader.js";
13
13
  import {
14
14
  resolveMilestoneFile, resolveSliceFile, resolveSlicePath,
@@ -17,6 +17,7 @@ import {
17
17
  resolveGsdRootFile, relGsdRootFile, resolveRuntimeFile,
18
18
  } from "./paths.js";
19
19
  import { resolveSkillDiscoveryMode, resolveInlineLevel, loadEffectiveGSDPreferences, resolveAllSkillReferences } from "./preferences.js";
20
+ import { isContextModeEnabled } from "./preferences-types.js";
20
21
  import { parseRoadmap } from "./parsers-legacy.js";
21
22
  import type { GSDState, InlineLevel } from "./types.js";
22
23
  import type { GSDPreferences } from "./preferences.js";
@@ -33,11 +34,12 @@ import {
33
34
  } from "./gate-registry.js";
34
35
  import { formatDecisionsCompact, formatRequirementsCompact } from "./structured-data-formatter.js";
35
36
  import { readPhaseAnchor, formatAnchorForPrompt } from "./phase-anchor.js";
36
- import { composeInlinedContext, type ArtifactResolver } from "./unit-context-composer.js";
37
+ import { composeContextModeInstructions, composeInlinedContext, type ArtifactResolver, type ContextModeRenderMode } from "./unit-context-composer.js";
37
38
  import { logWarning } from "./workflow-logger.js";
38
39
  import { inlineGraphSubgraph } from "./graph-context.js";
39
40
  import { buildExtractionStepsBlock } from "./commands-extract-learnings.js";
40
41
  import { resolveSkillManifest, warnIfManifestHasMissingSkills } from "./skill-manifest.js";
42
+ import { classifyProject, type ProjectClassification } from "./detection.js";
41
43
 
42
44
  // ─── Preamble Cap ─────────────────────────────────────────────────────────────
43
45
 
@@ -79,6 +81,108 @@ function resolveSummaryBudgetChars(): number {
79
81
  return resolvePromptBudgets().summaryBudgetChars;
80
82
  }
81
83
 
84
+ function formatProjectClassificationForPlanning(classification: ProjectClassification): string {
85
+ const sampleFiles = classification.contentFiles.slice(0, 8);
86
+ const sample = sampleFiles.length > 0 ? sampleFiles.map((file) => `\`${file}\``).join(", ") : "(none)";
87
+ const lines = [
88
+ "### Project Classification",
89
+ "",
90
+ `- **Kind:** ${classification.kind}`,
91
+ `- **Content files:** ${classification.contentFiles.length}`,
92
+ `- **Sample files:** ${sample}`,
93
+ `- **Reason:** ${classification.reason}`,
94
+ "",
95
+ ];
96
+
97
+ if (classification.kind === "untyped-existing") {
98
+ if (classification.contentFiles.length <= 2) {
99
+ lines.push(
100
+ "**Workflow sizing:** This is a tiny existing untyped project. Prefer exactly one slice unless the milestone request clearly spans multiple independent user-visible capabilities.",
101
+ );
102
+ } else if (classification.contentFiles.length <= 5) {
103
+ lines.push(
104
+ "**Workflow sizing:** This is a small existing untyped project. Prefer 1-2 slices unless the milestone request clearly spans multiple independent user-visible capabilities.",
105
+ );
106
+ } else {
107
+ lines.push(
108
+ "**Workflow sizing:** Existing untyped project. Use generic file-level workflow guidance and size slices by real capability boundaries, not by missing tooling markers.",
109
+ );
110
+ }
111
+ } else if (classification.kind === "greenfield") {
112
+ lines.push("**Workflow sizing:** No project content exists yet. Use normal greenfield sizing for the requested scope.");
113
+ } else if (classification.kind === "typed-existing") {
114
+ lines.push("**Workflow sizing:** Known project markers exist. Use normal ecosystem-aware planning guidance.");
115
+ } else {
116
+ lines.push("**Workflow sizing:** Invalid repository state. Planning should surface this as a blocker rather than inventing project structure.");
117
+ }
118
+
119
+ return lines.join("\n");
120
+ }
121
+
122
+ function normalizeArtifactRef(value: string): string {
123
+ return value.trim().replace(/^[-\s]+/, "").replace(/^["'`]+|["'`]+$/g, "").replaceAll("\\", "/").replace(/^\.\//, "");
124
+ }
125
+
126
+ function parseCoveredArtifacts(validationContent: string): Set<string> {
127
+ const covered = new Set<string>();
128
+ const lines = validationContent.split(/\r?\n/);
129
+ let inCoveredArtifacts = false;
130
+ for (const line of lines) {
131
+ if (/^\s*covered[-_]?artifacts\s*:/i.test(line)) {
132
+ inCoveredArtifacts = true;
133
+ const inline = line.split(/covered[-_]?artifacts\s*:/i)[1]?.trim();
134
+ if (inline && inline !== "[]") {
135
+ inline.replace(/^\[|\]$/g, "").split(",").map(normalizeArtifactRef).filter(Boolean).forEach((item) => covered.add(item));
136
+ }
137
+ continue;
138
+ }
139
+ if (!inCoveredArtifacts) continue;
140
+ if (/^\S/.test(line) && !/^\s*-/.test(line)) break;
141
+ const item = line.match(/^\s*-\s*(.+)$/)?.[1];
142
+ if (item) covered.add(normalizeArtifactRef(item));
143
+ }
144
+ return covered;
145
+ }
146
+
147
+ function isValidationFreshOrApplicable(validationContent: string | null, currentArtifacts: string[]): boolean {
148
+ if (!validationContent) return false;
149
+ if (!/validation_metadata:/i.test(validationContent)) return false;
150
+ const coveredArtifacts = parseCoveredArtifacts(validationContent);
151
+ if (coveredArtifacts.size === 0) return false;
152
+ return currentArtifacts
153
+ .map(normalizeArtifactRef)
154
+ .filter(Boolean)
155
+ .every((artifact) => coveredArtifacts.has(artifact));
156
+ }
157
+
158
+ function formatCloseoutReviewInstructions(validationContent: string | null, validationRel: string, currentArtifacts: string[]): string {
159
+ const verdict = validationContent ? extractVerdict(validationContent) : null;
160
+ const validationFresh = isValidationFreshOrApplicable(validationContent, currentArtifacts);
161
+ if (verdict === "pass" && validationFresh) {
162
+ return [
163
+ "### Passing Validation Artifact",
164
+ "",
165
+ `A passing validation artifact is present at \`${validationRel}\`. Treat it as authoritative for success criteria, requirement coverage, verification classes, and cross-slice integration.`,
166
+ "",
167
+ "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`.",
168
+ ].join("\n");
169
+ }
170
+
171
+ if (verdict) {
172
+ return [
173
+ "### Validation Requires Attention",
174
+ "",
175
+ `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.`,
176
+ ].join("\n");
177
+ }
178
+
179
+ return [
180
+ "### No Passing Validation Artifact",
181
+ "",
182
+ `No passing validation artifact was found at \`${validationRel}\`. Use the full closeout review path before completion.`,
183
+ ].join("\n");
184
+ }
185
+
82
186
  function capPreamble(preamble: string): string {
83
187
  // Cap inlined context at min(historical 30K ceiling, scaled inline budget).
84
188
  // The ceiling preserves pre-fix behavior for large-window users; the scaled
@@ -89,6 +193,30 @@ function capPreamble(preamble: string): string {
89
193
  return truncateAtSectionBoundary(preamble, budget).content;
90
194
  }
91
195
 
196
+ function renderContextModeForPrompt(
197
+ unitType: string,
198
+ base: string,
199
+ renderMode: ContextModeRenderMode = "standalone",
200
+ ): string {
201
+ const effectivePrefs = loadEffectiveGSDPreferences(base)?.preferences;
202
+ return composeContextModeInstructions(unitType, {
203
+ enabled: isContextModeEnabled(effectivePrefs),
204
+ renderMode,
205
+ });
206
+ }
207
+
208
+ function prependContextModeToBlock(
209
+ unitType: string,
210
+ base: string,
211
+ block: string,
212
+ renderMode: ContextModeRenderMode = "standalone",
213
+ ): string {
214
+ const contextMode = renderContextModeForPrompt(unitType, base, renderMode);
215
+ if (!contextMode) return block;
216
+ if (!block.trim()) return contextMode;
217
+ return `${contextMode}\n\n${block}`;
218
+ }
219
+
92
220
  // ─── Executor Constraints ─────────────────────────────────────────────────────
93
221
 
94
222
  /**
@@ -250,6 +378,171 @@ export async function inlineFileSmart(
250
378
  return `### ${label}\nSource: \`${relPath}\`\n\n${truncated}`;
251
379
  }
252
380
 
381
+ function inlineCompactTemplate(name: "plan" | "task-summary" | "slice-summary", label: string): string {
382
+ const compact: Record<typeof name, string> = {
383
+ plan: [
384
+ "# {{sliceId}}: {{sliceTitle}}",
385
+ "",
386
+ "**Goal:** {{goal}}",
387
+ "**Demo:** {{demo}}",
388
+ "",
389
+ "## Must-Haves",
390
+ "- {{mustHave}}",
391
+ "",
392
+ "## Threat Surface",
393
+ "- Abuse: {{abuseScenarios}}",
394
+ "- Data exposure: {{sensitiveDataAccessible}}",
395
+ "- Input trust: {{untrustedInput}}",
396
+ "",
397
+ "## Requirement Impact",
398
+ "- Requirements touched: {{requirementIds}}",
399
+ "- Re-verify: {{whatMustBeRetested}}",
400
+ "- Decisions revisited: {{decisionIds}}",
401
+ "",
402
+ "## Proof Level",
403
+ "- This slice proves: {{contract | integration | operational | final-assembly}}",
404
+ "- Real runtime required: {{yes/no}}",
405
+ "- Human/UAT required: {{yes/no}}",
406
+ "",
407
+ "## Verification",
408
+ "- {{testFileOrCommand}}",
409
+ "",
410
+ "## Observability / Diagnostics",
411
+ "- Runtime signals: {{signalOrNone}}",
412
+ "- Inspection surfaces: {{surfaceOrNone}}",
413
+ "- Failure visibility: {{failureSignalOrNone}}",
414
+ "- Redaction constraints: {{secretOrPiiBoundaryOrNone}}",
415
+ "",
416
+ "## Integration Closure",
417
+ "- Upstream surfaces consumed: {{filesModulesContracts}}",
418
+ "- New wiring introduced: {{entrypointOrNone}}",
419
+ "- Remaining end-to-end work: {{listOrNothing}}",
420
+ "",
421
+ "## Tasks",
422
+ "- [ ] **T01: {{taskTitle}}** `est:{{estimate}}`",
423
+ " - Why: {{whyThisTaskExists}}",
424
+ " - Files: `{{filePath}}`",
425
+ " - Do: {{specificImplementationStepsAndConstraints}}",
426
+ " - Verify: {{testCommandOrRuntimeCheck}}",
427
+ " - Done when: {{measurableAcceptanceCondition}}",
428
+ "",
429
+ "## Files Likely Touched",
430
+ "- `{{filePath}}`",
431
+ ].join("\n"),
432
+ "task-summary": [
433
+ "---",
434
+ "id: {{taskId}}",
435
+ "parent: {{sliceId}}",
436
+ "milestone: {{milestoneId}}",
437
+ "provides: [{{whatThisTaskProvides}}]",
438
+ "key_files: [{{filePath}}]",
439
+ "key_decisions: [{{decision}}]",
440
+ "patterns_established: [{{pattern}}]",
441
+ "observability_surfaces: [{{diagnosticOrNone}}]",
442
+ "duration: {{duration}}",
443
+ "verification_result: passed",
444
+ "completed_at: {{date}}",
445
+ "blocker_discovered: false",
446
+ "---",
447
+ "",
448
+ "# {{taskId}}: {{taskTitle}}",
449
+ "**{{oneLiner}}**",
450
+ "",
451
+ "## What Happened",
452
+ "{{narrative}}",
453
+ "",
454
+ "## Verification",
455
+ "{{whatWasVerifiedAndHow}}",
456
+ "",
457
+ "## Verification Evidence",
458
+ "| # | Command | Exit Code | Verdict | Duration |",
459
+ "|---|---------|-----------|---------|----------|",
460
+ "| {{row}} | {{command}} | {{exitCode}} | {{verdict}} | {{duration}} |",
461
+ "",
462
+ "## Diagnostics",
463
+ "{{diagnosticsOrNone}}",
464
+ "",
465
+ "## Deviations",
466
+ "{{deviationsFromPlan_OR_none}}",
467
+ "",
468
+ "## Known Issues",
469
+ "{{issuesDiscoveredButNotFixed_OR_none}}",
470
+ "",
471
+ "## Files Created/Modified",
472
+ "- `{{filePath}}` - {{description}}",
473
+ ].join("\n"),
474
+ "slice-summary": [
475
+ "---",
476
+ "id: {{sliceId}}",
477
+ "parent: {{milestoneId}}",
478
+ "milestone: {{milestoneId}}",
479
+ "provides: [{{whatThisSliceProvides}}]",
480
+ "requires: []",
481
+ "affects: []",
482
+ "key_files: [{{filePath}}]",
483
+ "key_decisions: [{{decision}}]",
484
+ "patterns_established: [{{pattern}}]",
485
+ "observability_surfaces: [{{diagnosticOrNone}}]",
486
+ "drill_down_paths: [{{pathToTaskSummary}}]",
487
+ "duration: {{duration}}",
488
+ "verification_result: passed",
489
+ "completed_at: {{date}}",
490
+ "---",
491
+ "",
492
+ "# {{sliceId}}: {{sliceTitle}}",
493
+ "**{{oneLiner}}**",
494
+ "",
495
+ "## What Happened",
496
+ "{{narrative}}",
497
+ "",
498
+ "## Verification",
499
+ "{{whatWasVerifiedAcrossAllTasks}}",
500
+ "",
501
+ "## Requirements Advanced",
502
+ "- {{requirementId}} - {{howThisSliceAdvancedIt}}",
503
+ "",
504
+ "## Requirements Validated",
505
+ "- {{requirementId}} - {{whatProofNowMakesItValidated}}",
506
+ "",
507
+ "## New Requirements Surfaced",
508
+ "- {{newRequirementOr_none}}",
509
+ "",
510
+ "## Requirements Invalidated or Re-scoped",
511
+ "- {{requirementIdOr_none}} - {{whatChanged}}",
512
+ "",
513
+ "## Operational Readiness",
514
+ "- Health signal: {{healthSignalOrNA}}",
515
+ "- Failure signal: {{failureSignalOrNA}}",
516
+ "- Recovery: {{recoveryOrNA}}",
517
+ "- Monitoring gaps: {{gapsOrNone}}",
518
+ "",
519
+ "## Deviations",
520
+ "{{deviationsFromPlan_OR_none}}",
521
+ "",
522
+ "## Known Limitations",
523
+ "{{whatDoesntWorkYet_OR_whatWasDeferredToLaterSlices}}",
524
+ "",
525
+ "## Follow-ups",
526
+ "{{workDeferredOrDiscoveredDuringExecution_OR_none}}",
527
+ "",
528
+ "## Files Created/Modified",
529
+ "- `{{filePath}}` - {{description}}",
530
+ "",
531
+ "## Forward Intelligence",
532
+ "### What the next slice should know",
533
+ "- {{insightThatWouldHelpDownstreamWork}}",
534
+ "### What's fragile",
535
+ "- {{fragileAreaOrThinImplementation}} - {{whyItMatters}}",
536
+ "### Authoritative diagnostics",
537
+ "- {{whereAFutureAgentShouldLookFirst}} - {{whyThisSignalIsTrustworthy}}",
538
+ "### What assumptions changed",
539
+ "- {{originalAssumption}} - {{whatActuallyHappened}}",
540
+ ].join("\n"),
541
+ };
542
+
543
+ return `${compact[name]}\n\n### Output Template: ${label}\nSource: \`templates/${name}.md\``;
544
+ }
545
+
253
546
  /**
254
547
  * Compact slice-summary excerpt for milestone-level closers (#4780).
255
548
  *
@@ -1266,6 +1559,7 @@ export async function buildDiscussMilestonePrompt(
1266
1559
  structuredQuestionsAvailable = "false",
1267
1560
  ): Promise<string> {
1268
1561
  const discussTemplates = inlineTemplate("context", "Context");
1562
+ const contextModeInstructions = renderContextModeForPrompt("discuss-milestone", base);
1269
1563
 
1270
1564
  const basePrompt = loadPrompt("guided-discuss-milestone", {
1271
1565
  workingDirectory: base,
@@ -1276,16 +1570,17 @@ export async function buildDiscussMilestonePrompt(
1276
1570
  commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally.",
1277
1571
  fastPathInstruction: "",
1278
1572
  });
1573
+ const promptWithContextMode = prependContextModeToBlock("discuss-milestone", base, basePrompt);
1279
1574
 
1280
1575
  // If a CONTEXT-DRAFT.md exists, append it as seed material
1281
1576
  const draftPath = resolveMilestoneFile(base, mid, "CONTEXT-DRAFT");
1282
1577
  const draftContent = draftPath ? await loadFile(draftPath) : null;
1283
1578
 
1284
1579
  if (draftContent) {
1285
- 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}`;
1580
+ 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}`;
1286
1581
  }
1287
1582
 
1288
- return basePrompt;
1583
+ return contextModeInstructions ? promptWithContextMode : basePrompt;
1289
1584
  }
1290
1585
 
1291
1586
  /**
@@ -1298,10 +1593,10 @@ export async function buildWorkflowPreferencesPrompt(
1298
1593
  base: string,
1299
1594
  structuredQuestionsAvailable = "false",
1300
1595
  ): Promise<string> {
1301
- return loadPrompt("guided-workflow-preferences", {
1596
+ return prependContextModeToBlock("workflow-preferences", base, loadPrompt("guided-workflow-preferences", {
1302
1597
  workingDirectory: base,
1303
1598
  structuredQuestionsAvailable,
1304
- });
1599
+ }));
1305
1600
  }
1306
1601
 
1307
1602
  /**
@@ -1315,10 +1610,10 @@ export async function buildResearchProjectPrompt(
1315
1610
  base: string,
1316
1611
  structuredQuestionsAvailable = "false",
1317
1612
  ): Promise<string> {
1318
- return loadPrompt("guided-research-project", {
1613
+ return prependContextModeToBlock("research-project", base, loadPrompt("guided-research-project", {
1319
1614
  workingDirectory: base,
1320
1615
  structuredQuestionsAvailable,
1321
- });
1616
+ }));
1322
1617
  }
1323
1618
 
1324
1619
  /**
@@ -1331,10 +1626,10 @@ export async function buildResearchDecisionPrompt(
1331
1626
  base: string,
1332
1627
  structuredQuestionsAvailable = "false",
1333
1628
  ): Promise<string> {
1334
- return loadPrompt("guided-research-decision", {
1629
+ return prependContextModeToBlock("research-decision", base, loadPrompt("guided-research-decision", {
1335
1630
  workingDirectory: base,
1336
1631
  structuredQuestionsAvailable,
1337
- });
1632
+ }));
1338
1633
  }
1339
1634
 
1340
1635
  /**
@@ -1349,12 +1644,12 @@ export async function buildDiscussProjectPrompt(
1349
1644
  ): Promise<string> {
1350
1645
  const inlinedTemplates = inlineTemplate("project", "Project");
1351
1646
 
1352
- return loadPrompt("guided-discuss-project", {
1647
+ return prependContextModeToBlock("discuss-project", base, loadPrompt("guided-discuss-project", {
1353
1648
  workingDirectory: base,
1354
1649
  inlinedTemplates,
1355
1650
  structuredQuestionsAvailable,
1356
1651
  commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally.",
1357
- });
1652
+ }));
1358
1653
  }
1359
1654
 
1360
1655
  /**
@@ -1369,12 +1664,12 @@ export async function buildDiscussRequirementsPrompt(
1369
1664
  ): Promise<string> {
1370
1665
  const inlinedTemplates = inlineTemplate("requirements", "Requirements");
1371
1666
 
1372
- return loadPrompt("guided-discuss-requirements", {
1667
+ return prependContextModeToBlock("discuss-requirements", base, loadPrompt("guided-discuss-requirements", {
1373
1668
  workingDirectory: base,
1374
1669
  inlinedTemplates,
1375
1670
  structuredQuestionsAvailable,
1376
1671
  commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally.",
1377
- });
1672
+ }));
1378
1673
  }
1379
1674
 
1380
1675
  export async function buildResearchMilestonePrompt(mid: string, midTitle: string, base: string): Promise<string> {
@@ -1428,7 +1723,11 @@ export async function buildResearchMilestonePrompt(mid: string, midTitle: string
1428
1723
  if (knowledgeInlineRM) parts.push(knowledgeInlineRM);
1429
1724
  }
1430
1725
 
1431
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`);
1726
+ const inlinedContext = prependContextModeToBlock(
1727
+ "research-milestone",
1728
+ base,
1729
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`),
1730
+ );
1432
1731
 
1433
1732
  const outputRelPath = relMilestoneFile(base, mid, "RESEARCH");
1434
1733
  return loadPrompt("research-milestone", {
@@ -1462,6 +1761,8 @@ export async function buildPlanMilestonePrompt(mid: string, midTitle: string, ba
1462
1761
  const researchAnchor = readPhaseAnchor(base, mid, "research-milestone");
1463
1762
  if (researchAnchor) inlined.push(formatAnchorForPrompt(researchAnchor));
1464
1763
 
1764
+ inlined.push(formatProjectClassificationForPlanning(classifyProject(base)));
1765
+
1465
1766
  inlined.push(await inlineFile(contextPath, contextRel, "Milestone Context"));
1466
1767
  const researchInline = await inlineFileOptional(researchPath, researchRel, "Milestone Research");
1467
1768
  if (researchInline) inlined.push(researchInline);
@@ -1501,7 +1802,11 @@ export async function buildPlanMilestonePrompt(mid: string, midTitle: string, ba
1501
1802
  inlined.push(inlineTemplate("task-plan", "Task Plan"));
1502
1803
  }
1503
1804
 
1504
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
1805
+ const inlinedContext = prependContextModeToBlock(
1806
+ "plan-milestone",
1807
+ base,
1808
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`),
1809
+ );
1505
1810
 
1506
1811
  const outputRelPath = relMilestoneFile(base, mid, "ROADMAP");
1507
1812
  const researchOutputPath = join(base, relMilestoneFile(base, mid, "RESEARCH"));
@@ -1530,6 +1835,7 @@ export async function buildPlanMilestonePrompt(mid: string, midTitle: string, ba
1530
1835
 
1531
1836
  export async function buildResearchSlicePrompt(
1532
1837
  mid: string, _midTitle: string, sid: string, sTitle: string, base: string,
1838
+ options?: { contextModeRenderMode?: ContextModeRenderMode },
1533
1839
  ): Promise<string> {
1534
1840
  const roadmapPath = resolveMilestoneFile(base, mid, "ROADMAP");
1535
1841
  const roadmapRel = relMilestoneFile(base, mid, "ROADMAP");
@@ -1582,7 +1888,12 @@ export async function buildResearchSlicePrompt(
1582
1888
  const overridesInline = formatOverridesSection(activeOverrides);
1583
1889
  if (overridesInline) inlined.unshift(overridesInline);
1584
1890
 
1585
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
1891
+ const inlinedContext = prependContextModeToBlock(
1892
+ "research-slice",
1893
+ base,
1894
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`),
1895
+ options?.contextModeRenderMode,
1896
+ );
1586
1897
 
1587
1898
  const outputRelPath = relSliceFile(base, mid, sid, "RESEARCH");
1588
1899
  return loadPrompt("research-slice", {
@@ -1629,6 +1940,7 @@ async function renderSlicePrompt(options: {
1629
1940
  sessionContextWindow?: number;
1630
1941
  modelRegistry?: MinimalModelRegistry;
1631
1942
  sessionProvider?: string;
1943
+ contextModeRenderMode?: ContextModeRenderMode;
1632
1944
  }): Promise<string> {
1633
1945
  const {
1634
1946
  mid, sid, sTitle, base, level, promptTemplate, prependBlocks = [], extraVars = {},
@@ -1675,7 +1987,7 @@ async function renderSlicePrompt(options: {
1675
1987
  const graphBlock = await inlineGraphSubgraph(base, `${sid} ${sTitle}`, { budget: 3000 });
1676
1988
  if (graphBlock) inlined.push(graphBlock);
1677
1989
 
1678
- inlined.push(inlineTemplate("plan", "Slice Plan"));
1990
+ inlined.push(level === "minimal" ? inlineCompactTemplate("plan", "Slice Plan") : inlineTemplate("plan", "Slice Plan"));
1679
1991
  if (level === "full") {
1680
1992
  inlined.push(inlineTemplate("task-plan", "Task Plan"));
1681
1993
  }
@@ -1684,7 +1996,12 @@ async function renderSlicePrompt(options: {
1684
1996
  const overridesInline = formatOverridesSection(await loadActiveOverrides(base));
1685
1997
  if (overridesInline) inlined.unshift(overridesInline);
1686
1998
 
1687
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
1999
+ const inlinedContext = prependContextModeToBlock(
2000
+ promptTemplate,
2001
+ base,
2002
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`),
2003
+ options.contextModeRenderMode,
2004
+ );
1688
2005
  const executorContextConstraints = formatExecutorConstraints(sessionContextWindow, modelRegistry, sessionProvider);
1689
2006
  const outputRelPath = relSliceFile(base, mid, sid, "PLAN");
1690
2007
  const commitInstruction = "Do not commit — .gsd/ planning docs are managed externally and not tracked in git.";
@@ -1820,6 +2137,8 @@ export interface ExecuteTaskPromptOptions {
1820
2137
  modelRegistry?: MinimalModelRegistry;
1821
2138
  /** Session model provider, used for provider-specific effective context windows. */
1822
2139
  sessionProvider?: string;
2140
+ /** Render compact Context Mode guidance when embedded inside another prompt. */
2141
+ contextModeRenderMode?: ContextModeRenderMode;
1823
2142
  }
1824
2143
 
1825
2144
  export async function buildExecuteTaskPrompt(
@@ -1896,7 +2215,7 @@ export async function buildExecuteTaskPrompt(
1896
2215
  const graphBlockET = await inlineGraphSubgraph(base, `${tid} ${tTitle}`, { budget: 2000 });
1897
2216
 
1898
2217
  const inlinedTemplates = inlineLevel === "minimal"
1899
- ? inlineTemplate("task-summary", "Task Summary")
2218
+ ? inlineCompactTemplate("task-summary", "Task Summary")
1900
2219
  : [
1901
2220
  inlineTemplate("task-summary", "Task Summary"),
1902
2221
  inlineTemplate("decisions", "Decisions"),
@@ -1962,6 +2281,7 @@ export async function buildExecuteTaskPrompt(
1962
2281
  getGatesForTurn("execute-task"),
1963
2282
  { pending: new Set(etPending.map((g) => g.gate_id)), allowOmit: true },
1964
2283
  );
2284
+ phaseAnchorSection = prependContextModeToBlock("execute-task", base, phaseAnchorSection, opts.contextModeRenderMode);
1965
2285
 
1966
2286
  return loadPrompt("execute-task", {
1967
2287
  overridesSection,
@@ -1990,6 +2310,7 @@ export async function buildExecuteTaskPrompt(
1990
2310
  taskTitle: tTitle,
1991
2311
  taskPlanContent,
1992
2312
  extraContext: [taskPlanInline, slicePlanExcerpt, finalCarryForward, resumeSection],
2313
+ unitType: "execute-task",
1993
2314
  }),
1994
2315
  });
1995
2316
  }
@@ -2040,7 +2361,9 @@ export async function buildCompleteSlicePrompt(
2040
2361
  return blocks.length > 0 ? blocks.join("\n\n---\n\n") : null;
2041
2362
  }
2042
2363
  case "templates": {
2043
- const parts = [inlineTemplate("slice-summary", "Slice Summary")];
2364
+ const parts = [inlineLevel === "minimal"
2365
+ ? inlineCompactTemplate("slice-summary", "Slice Summary")
2366
+ : inlineTemplate("slice-summary", "Slice Summary")];
2044
2367
  if (inlineLevel !== "minimal") {
2045
2368
  parts.push(inlineTemplate("uat", "UAT"));
2046
2369
  }
@@ -2088,7 +2411,11 @@ export async function buildCompleteSlicePrompt(
2088
2411
  ? `${completeOverridesInline}\n\n---\n\n${body}`
2089
2412
  : body;
2090
2413
 
2091
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${finalBody}`);
2414
+ const inlinedContext = prependContextModeToBlock(
2415
+ "complete-slice",
2416
+ base,
2417
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${finalBody}`),
2418
+ );
2092
2419
  const roadmapRel = relMilestoneFile(base, mid, "ROADMAP");
2093
2420
 
2094
2421
  const sliceRel = relSlicePath(base, mid, sid);
@@ -2126,6 +2453,9 @@ export async function buildCompleteMilestonePrompt(
2126
2453
  const inlineLevel = level ?? resolveInlineLevel();
2127
2454
  const roadmapPath = resolveMilestoneFile(base, mid, "ROADMAP");
2128
2455
  const roadmapRel = relMilestoneFile(base, mid, "ROADMAP");
2456
+ const validationPath = resolveMilestoneFile(base, mid, "VALIDATION");
2457
+ const validationRel = relMilestoneFile(base, mid, "VALIDATION");
2458
+ const validationContent = validationPath ? await loadFile(validationPath) : null;
2129
2459
 
2130
2460
  const inlined: string[] = [];
2131
2461
  inlined.push(await inlineFile(roadmapPath, roadmapRel, "Milestone Roadmap"));
@@ -2167,6 +2497,13 @@ export async function buildCompleteMilestonePrompt(
2167
2497
  `### 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}`,
2168
2498
  );
2169
2499
  }
2500
+ const validationContext = [
2501
+ formatCloseoutReviewInstructions(validationContent, validationRel, [validationRel, roadmapRel, ...summaryRelPaths]),
2502
+ ];
2503
+ if (validationContent) {
2504
+ validationContext.push(`### Milestone Validation\nSource: \`${validationRel}\`\n\n${validationContent.trim()}`);
2505
+ }
2506
+ inlined.unshift(...validationContext);
2170
2507
 
2171
2508
  // Inline root GSD files (skip for minimal — completion can read these if needed)
2172
2509
  if (inlineLevel !== "minimal") {
@@ -2187,7 +2524,11 @@ export async function buildCompleteMilestonePrompt(
2187
2524
  if (contextInline) inlined.push(contextInline);
2188
2525
  inlined.push(inlineTemplate("milestone-summary", "Milestone Summary"));
2189
2526
 
2190
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
2527
+ const inlinedContext = prependContextModeToBlock(
2528
+ "complete-milestone",
2529
+ base,
2530
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`),
2531
+ );
2191
2532
 
2192
2533
  const milestoneSummaryPath = join(base, `${relMilestonePath(base, mid)}/${mid}-SUMMARY.md`);
2193
2534
 
@@ -2324,7 +2665,11 @@ export async function buildValidateMilestonePrompt(
2324
2665
  const contextInline = await inlineFileOptional(contextPath, contextRel, "Milestone Context");
2325
2666
  if (contextInline) inlined.push(contextInline);
2326
2667
 
2327
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
2668
+ const inlinedContext = prependContextModeToBlock(
2669
+ "validate-milestone",
2670
+ base,
2671
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`),
2672
+ );
2328
2673
 
2329
2674
  const validationOutputPath = join(base, `${relMilestonePath(base, mid)}/${mid}-VALIDATION.md`);
2330
2675
  const roadmapOutputPath = `${relMilestonePath(base, mid)}/${mid}-ROADMAP.md`;
@@ -2400,7 +2745,11 @@ export async function buildReplanSlicePrompt(
2400
2745
  const replanOverridesInline = formatOverridesSection(replanActiveOverrides);
2401
2746
  if (replanOverridesInline) inlined.unshift(replanOverridesInline);
2402
2747
 
2403
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`);
2748
+ const inlinedContext = prependContextModeToBlock(
2749
+ "replan-slice",
2750
+ base,
2751
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${inlined.join("\n\n---\n\n")}`),
2752
+ );
2404
2753
 
2405
2754
  const replanPath = join(base, `${relSlicePath(base, mid, sid)}/${sid}-REPLAN.md`);
2406
2755
 
@@ -2474,7 +2823,11 @@ export async function buildRunUatPrompt(
2474
2823
  };
2475
2824
 
2476
2825
  const composed = await composeInlinedContext("run-uat", resolveArtifact);
2477
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${composed}`);
2826
+ const inlinedContext = prependContextModeToBlock(
2827
+ "run-uat",
2828
+ base,
2829
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${composed}`),
2830
+ );
2478
2831
 
2479
2832
  const uatResultPath = join(base, relSliceFile(base, mid, sliceId, "ASSESSMENT"));
2480
2833
  const uatType = getUatType(uatContent);
@@ -2548,7 +2901,11 @@ export async function buildReassessRoadmapPrompt(
2548
2901
  const knowledgeInlineRA = await inlineKnowledgeBudgeted(base, extractKeywords(midTitle));
2549
2902
  if (knowledgeInlineRA) parts.push(knowledgeInlineRA);
2550
2903
 
2551
- const inlinedContext = capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`);
2904
+ const inlinedContext = prependContextModeToBlock(
2905
+ "reassess-roadmap",
2906
+ base,
2907
+ capPreamble(`## Inlined Context (preloaded — do not re-read these files)\n\n${parts.join("\n\n---\n\n")}`),
2908
+ );
2552
2909
 
2553
2910
  const assessmentPath = join(base, relSliceFile(base, mid, completedSliceId, "ASSESSMENT"));
2554
2911
 
@@ -2641,6 +2998,7 @@ export async function buildReactiveExecutePrompt(
2641
2998
  sessionContextWindow: opts?.sessionContextWindow,
2642
2999
  modelRegistry: opts?.modelRegistry,
2643
3000
  sessionProvider: opts?.sessionProvider,
3001
+ contextModeRenderMode: "nested",
2644
3002
  },
2645
3003
  );
2646
3004
 
@@ -2664,7 +3022,7 @@ export async function buildReactiveExecutePrompt(
2664
3022
  milestoneTitle: midTitle,
2665
3023
  sliceId: sid,
2666
3024
  sliceTitle: sTitle,
2667
- graphContext,
3025
+ graphContext: prependContextModeToBlock("reactive-execute", base, graphContext),
2668
3026
  readyTaskCount: String(readyTaskIds.length),
2669
3027
  readyTaskList: readyTaskListLines.join("\n"),
2670
3028
  subagentPrompts: subagentSections.join("\n\n---\n\n"),
@@ -2730,7 +3088,7 @@ export async function buildParallelResearchSlicesPrompt(
2730
3088
  const subagentSections: string[] = [];
2731
3089
  const modelSuffix = subagentModel ? ` with model: "${subagentModel}"` : "";
2732
3090
  for (const slice of slices) {
2733
- const slicePrompt = await buildResearchSlicePrompt(mid, midTitle, slice.id, slice.title, basePath);
3091
+ const slicePrompt = await buildResearchSlicePrompt(mid, midTitle, slice.id, slice.title, basePath, { contextModeRenderMode: "nested" });
2734
3092
  subagentSections.push([
2735
3093
  `### ${slice.id}: ${slice.title}`,
2736
3094
  "",
@@ -2786,6 +3144,8 @@ export async function buildGateEvaluatePrompt(
2786
3144
  gateListLines.push(`- **${def.id}**: ${def.question}`);
2787
3145
 
2788
3146
  const subPrompt = [
3147
+ renderContextModeForPrompt("gate-evaluate", base, "nested"),
3148
+ "",
2789
3149
  `You are evaluating quality gate **${def.id}** for slice ${sid} (${sTitle}).`,
2790
3150
  "",
2791
3151
  `**Working directory:** \`${normalizedBase}\`. All file reads, writes, and shell commands MUST operate relative to this directory. Do NOT \`cd\` to any other directory.`,
@@ -2828,7 +3188,7 @@ export async function buildGateEvaluatePrompt(
2828
3188
  milestoneTitle: midTitle,
2829
3189
  sliceId: sid,
2830
3190
  sliceTitle: sTitle,
2831
- slicePlanContent: planContent,
3191
+ slicePlanContent: prependContextModeToBlock("gate-evaluate", base, planContent),
2832
3192
  gateCount: String(pending.length),
2833
3193
  gateList: gateListLines.join("\n"),
2834
3194
  subagentPrompts: subagentSections.join("\n\n---\n\n"),
@@ -2905,7 +3265,7 @@ export async function buildRewriteDocsPrompt(
2905
3265
 
2906
3266
  const documentList = docList.length > 0 ? docList.join("\n") : "- No active plan documents found.";
2907
3267
 
2908
- return loadPrompt("rewrite-docs", {
3268
+ return prependContextModeToBlock("rewrite-docs", base, loadPrompt("rewrite-docs", {
2909
3269
  workingDirectory: base,
2910
3270
  milestoneId: mid,
2911
3271
  milestoneTitle: midTitle,
@@ -2914,5 +3274,5 @@ export async function buildRewriteDocsPrompt(
2914
3274
  overrideContent,
2915
3275
  documentList,
2916
3276
  overridesPath: relGsdRootFile("OVERRIDES"),
2917
- });
3277
+ }));
2918
3278
  }