gsd-pi 2.79.0-dev.ece5fd8ba → 2.80.0-dev.c5f2443b3

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 (502) hide show
  1. package/dist/resources/.managed-resources-content-hash +1 -1
  2. package/dist/resources/extensions/github-sync/templates.js +55 -70
  3. package/dist/resources/extensions/gsd/auto/contracts.js +1 -0
  4. package/dist/resources/extensions/gsd/auto/custom-verify-retry-store.js +53 -0
  5. package/dist/resources/extensions/gsd/auto/loop.js +359 -523
  6. package/dist/resources/extensions/gsd/auto/orchestrator.js +146 -0
  7. package/dist/resources/extensions/gsd/auto/phases.js +55 -6
  8. package/dist/resources/extensions/gsd/auto/session.js +8 -0
  9. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.js +12 -0
  10. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-iteration.js +24 -0
  11. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.js +33 -0
  12. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.js +26 -0
  13. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-retry.js +49 -0
  14. package/dist/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.js +25 -0
  15. package/dist/resources/extensions/gsd/auto/workflow-dispatch-claim.js +48 -0
  16. package/dist/resources/extensions/gsd/auto/workflow-dispatch-ledger.js +26 -0
  17. package/dist/resources/extensions/gsd/auto/workflow-iteration-completion.js +10 -0
  18. package/dist/resources/extensions/gsd/auto/workflow-journal-reporter.js +16 -0
  19. package/dist/resources/extensions/gsd/auto/workflow-kernel.js +263 -0
  20. package/dist/resources/extensions/gsd/auto/workflow-memory-pressure.js +36 -0
  21. package/dist/resources/extensions/gsd/auto/workflow-phase-reporter.js +9 -0
  22. package/dist/resources/extensions/gsd/auto/workflow-session-lock.js +35 -0
  23. package/dist/resources/extensions/gsd/auto/workflow-sidecar-iteration.js +24 -0
  24. package/dist/resources/extensions/gsd/auto/workflow-sidecar-queue.js +26 -0
  25. package/dist/resources/extensions/gsd/auto/workflow-turn-reporter.js +36 -0
  26. package/dist/resources/extensions/gsd/auto/workflow-unit-dispatch.js +44 -0
  27. package/dist/resources/extensions/gsd/auto/workflow-worker-heartbeat.js +15 -0
  28. package/dist/resources/extensions/gsd/auto-dashboard.js +3 -0
  29. package/dist/resources/extensions/gsd/auto-prompts.js +168 -3
  30. package/dist/resources/extensions/gsd/auto-recovery.js +45 -52
  31. package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -0
  32. package/dist/resources/extensions/gsd/auto-verification.js +2 -11
  33. package/dist/resources/extensions/gsd/auto-worktree.js +87 -38
  34. package/dist/resources/extensions/gsd/auto.js +159 -2
  35. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +9 -1
  36. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +10 -0
  37. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +11 -5
  38. package/dist/resources/extensions/gsd/commands-ship.js +23 -46
  39. package/dist/resources/extensions/gsd/commands-workflow-templates.js +12 -7
  40. package/dist/resources/extensions/gsd/component-loader.js +5 -11
  41. package/dist/resources/extensions/gsd/custom-workflow-engine.js +4 -0
  42. package/dist/resources/extensions/gsd/db-adapter.js +47 -0
  43. package/dist/resources/extensions/gsd/db-base-schema.js +337 -0
  44. package/dist/resources/extensions/gsd/db-connection-cache.js +31 -0
  45. package/dist/resources/extensions/gsd/db-coordination-schema.js +104 -0
  46. package/dist/resources/extensions/gsd/db-decision-requirement-rows.js +71 -0
  47. package/dist/resources/extensions/gsd/db-gate-rows.js +16 -0
  48. package/dist/resources/extensions/gsd/db-lightweight-query-rows.js +29 -0
  49. package/dist/resources/extensions/gsd/db-memory-fts-schema.js +56 -0
  50. package/dist/resources/extensions/gsd/db-migration-backup.js +22 -0
  51. package/dist/resources/extensions/gsd/db-migration-steps.js +394 -0
  52. package/dist/resources/extensions/gsd/db-milestone-artifact-rows.js +35 -0
  53. package/dist/resources/extensions/gsd/db-open-state.js +32 -0
  54. package/dist/resources/extensions/gsd/db-provider.js +108 -0
  55. package/dist/resources/extensions/gsd/db-runtime-kv-schema.js +27 -0
  56. package/dist/resources/extensions/gsd/db-schema-metadata.js +23 -0
  57. package/dist/resources/extensions/gsd/db-task-slice-rows.js +86 -0
  58. package/dist/resources/extensions/gsd/db-transaction.js +63 -0
  59. package/dist/resources/extensions/gsd/db-verification-evidence-rows.js +3 -0
  60. package/dist/resources/extensions/gsd/db-verification-evidence-schema.js +19 -0
  61. package/dist/resources/extensions/gsd/escalation.js +2 -0
  62. package/dist/resources/extensions/gsd/gsd-db.js +215 -1519
  63. package/dist/resources/extensions/gsd/legacy-telemetry.js +70 -0
  64. package/dist/resources/extensions/gsd/markdown-renderer.js +2 -0
  65. package/dist/resources/extensions/gsd/model-router.js +9 -6
  66. package/dist/resources/extensions/gsd/notification-widget.js +21 -3
  67. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -6
  68. package/dist/resources/extensions/gsd/pr-evidence.js +76 -0
  69. package/dist/resources/extensions/gsd/pre-execution-checks.js +2 -0
  70. package/dist/resources/extensions/gsd/process-task-path.js +61 -0
  71. package/dist/resources/extensions/gsd/prompt-loader.js +9 -5
  72. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  73. package/dist/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  74. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  75. package/dist/resources/extensions/gsd/prompts/discuss.md +81 -181
  76. package/dist/resources/extensions/gsd/prompts/execute-task.md +40 -67
  77. package/dist/resources/extensions/gsd/prompts/forensics.md +41 -84
  78. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  79. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  80. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  81. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  82. package/dist/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  83. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  84. package/dist/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  85. package/dist/resources/extensions/gsd/prompts/queue.md +46 -53
  86. package/dist/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  87. package/dist/resources/extensions/gsd/prompts/research-slice.md +23 -23
  88. package/dist/resources/extensions/gsd/prompts/rethink.md +10 -10
  89. package/dist/resources/extensions/gsd/prompts/system.md +65 -107
  90. package/dist/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  91. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  92. package/dist/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  93. package/dist/resources/extensions/gsd/state.js +4 -0
  94. package/dist/resources/extensions/gsd/tools/complete-milestone.js +14 -9
  95. package/dist/resources/extensions/gsd/tools/complete-task.js +2 -0
  96. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +6 -1
  97. package/dist/resources/extensions/gsd/unit-context-composer.js +1 -1
  98. package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
  99. package/dist/resources/extensions/gsd/uok/plan-v2.js +2 -0
  100. package/dist/resources/extensions/gsd/workflow-logger.js +13 -13
  101. package/dist/resources/extensions/gsd/workflow-manifest.js +2 -0
  102. package/dist/resources/extensions/gsd/workflow-projections.js +2 -0
  103. package/dist/resources/extensions/gsd/workflow-templates.js +9 -0
  104. package/dist/resources/extensions/shared/interview-ui.js +15 -4
  105. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  106. package/dist/web/standalone/.next/BUILD_ID +1 -1
  107. package/dist/web/standalone/.next/app-path-routes-manifest.json +13 -13
  108. package/dist/web/standalone/.next/build-manifest.json +2 -2
  109. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  110. package/dist/web/standalone/.next/required-server-files.json +1 -1
  111. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  112. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  113. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  114. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  115. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  116. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  117. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  118. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  119. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  120. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  121. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  122. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  123. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  124. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  125. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  126. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  127. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  129. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  130. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  131. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  133. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  135. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  136. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  137. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  139. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  141. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  143. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  145. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  147. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  149. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  151. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  152. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  153. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  155. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  157. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  159. package/dist/web/standalone/.next/server/app/api/notifications/route.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  161. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  163. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  165. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  166. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  167. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  169. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  171. package/dist/web/standalone/.next/server/app/api/session/events/route.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  173. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  175. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  177. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  179. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  181. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  183. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  184. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  185. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +1 -1
  186. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  187. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  188. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  189. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  190. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  191. package/dist/web/standalone/.next/server/app/index.html +1 -1
  192. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  193. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  194. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  195. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  196. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  197. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  198. package/dist/web/standalone/.next/server/app-paths-manifest.json +13 -13
  199. package/dist/web/standalone/.next/server/chunks/167.js +2 -0
  200. package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
  201. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  202. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  203. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  204. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  205. package/dist/web/standalone/package.json +1 -0
  206. package/dist/web/standalone/server.js +1 -1
  207. package/package.json +9 -2
  208. package/packages/contracts/dist/index.d.ts +3 -0
  209. package/packages/contracts/dist/index.d.ts.map +1 -0
  210. package/packages/contracts/dist/index.js +5 -0
  211. package/packages/contracts/dist/index.js.map +1 -0
  212. package/packages/contracts/dist/rpc.d.ts +549 -0
  213. package/packages/contracts/dist/rpc.d.ts.map +1 -0
  214. package/packages/contracts/dist/rpc.js +53 -0
  215. package/packages/contracts/dist/rpc.js.map +1 -0
  216. package/packages/contracts/dist/rpc.test.d.ts +2 -0
  217. package/packages/contracts/dist/rpc.test.d.ts.map +1 -0
  218. package/packages/contracts/dist/rpc.test.js +47 -0
  219. package/packages/contracts/dist/rpc.test.js.map +1 -0
  220. package/packages/contracts/dist/workflow.d.ts +180 -0
  221. package/packages/contracts/dist/workflow.d.ts.map +1 -0
  222. package/packages/contracts/dist/workflow.js +201 -0
  223. package/packages/contracts/dist/workflow.js.map +1 -0
  224. package/packages/contracts/package.json +39 -0
  225. package/packages/contracts/src/index.ts +5 -0
  226. package/packages/contracts/src/rpc.test.ts +72 -0
  227. package/packages/contracts/src/rpc.ts +286 -0
  228. package/packages/contracts/src/workflow.ts +213 -0
  229. package/packages/contracts/tsconfig.json +25 -0
  230. package/packages/contracts/tsconfig.tsbuildinfo +1 -0
  231. package/packages/daemon/package.json +3 -2
  232. package/packages/daemon/src/event-bridge.test.ts +2 -1
  233. package/packages/daemon/src/event-bridge.ts +1 -1
  234. package/packages/daemon/src/event-formatter.test.ts +1 -2
  235. package/packages/daemon/src/event-formatter.ts +1 -2
  236. package/packages/daemon/src/session-manager.ts +2 -2
  237. package/packages/daemon/src/types.ts +3 -18
  238. package/packages/mcp-server/dist/server.d.ts +13 -0
  239. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  240. package/packages/mcp-server/dist/server.js +77 -0
  241. package/packages/mcp-server/dist/server.js.map +1 -1
  242. package/packages/mcp-server/dist/session-manager.js +1 -1
  243. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  244. package/packages/mcp-server/dist/types.d.ts +3 -11
  245. package/packages/mcp-server/dist/types.d.ts.map +1 -1
  246. package/packages/mcp-server/dist/types.js.map +1 -1
  247. package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
  248. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  249. package/packages/mcp-server/dist/workflow-tools.js +2 -40
  250. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  251. package/packages/mcp-server/package.json +3 -2
  252. package/packages/mcp-server/src/mcp-server.test.ts +138 -0
  253. package/packages/mcp-server/src/server.ts +99 -1
  254. package/packages/mcp-server/src/session-manager.ts +2 -2
  255. package/packages/mcp-server/src/types.ts +7 -18
  256. package/packages/mcp-server/src/workflow-tools.ts +2 -40
  257. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  258. package/packages/native/package.json +1 -1
  259. package/packages/pi-agent-core/package.json +1 -1
  260. package/packages/pi-ai/package.json +1 -1
  261. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +14 -0
  262. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  263. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +20 -0
  264. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -1
  265. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  266. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +6 -1
  267. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  268. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +9 -1
  269. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  270. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +31 -10
  271. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  272. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -512
  273. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  274. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js +3 -7
  275. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  276. package/packages/pi-coding-agent/package.json +2 -1
  277. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +23 -2
  278. package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +31 -0
  279. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +6 -1
  280. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +50 -9
  281. package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +3 -336
  282. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  283. package/packages/pi-tui/dist/tui.d.ts +1 -0
  284. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  285. package/packages/pi-tui/dist/tui.js +8 -2
  286. package/packages/pi-tui/dist/tui.js.map +1 -1
  287. package/packages/pi-tui/package.json +1 -1
  288. package/packages/pi-tui/src/tui.ts +8 -2
  289. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  290. package/packages/rpc-client/README.md +3 -3
  291. package/packages/rpc-client/dist/index.d.ts +1 -1
  292. package/packages/rpc-client/dist/index.d.ts.map +1 -1
  293. package/packages/rpc-client/dist/index.js.map +1 -1
  294. package/packages/rpc-client/dist/rpc-client.d.ts +2 -6
  295. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -1
  296. package/packages/rpc-client/dist/rpc-client.js.map +1 -1
  297. package/packages/rpc-client/dist/rpc-types.d.ts +1 -565
  298. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -1
  299. package/packages/rpc-client/dist/rpc-types.js +3 -11
  300. package/packages/rpc-client/dist/rpc-types.js.map +1 -1
  301. package/packages/rpc-client/package.json +4 -1
  302. package/packages/rpc-client/src/index.ts +1 -1
  303. package/packages/rpc-client/src/rpc-client.ts +3 -6
  304. package/packages/rpc-client/src/rpc-types.ts +3 -398
  305. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
  306. package/pkg/package.json +1 -1
  307. package/src/resources/extensions/github-sync/templates.ts +59 -84
  308. package/src/resources/extensions/github-sync/tests/templates.test.ts +10 -2
  309. package/src/resources/extensions/gsd/auto/contracts.ts +87 -0
  310. package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +72 -0
  311. package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -3
  312. package/src/resources/extensions/gsd/auto/loop.ts +411 -598
  313. package/src/resources/extensions/gsd/auto/orchestrator.ts +161 -0
  314. package/src/resources/extensions/gsd/auto/phases.ts +82 -8
  315. package/src/resources/extensions/gsd/auto/session.ts +11 -0
  316. package/src/resources/extensions/gsd/auto/workflow-custom-engine-dispatch-outcome.ts +28 -0
  317. package/src/resources/extensions/gsd/auto/workflow-custom-engine-iteration.ts +52 -0
  318. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile-outcome.ts +58 -0
  319. package/src/resources/extensions/gsd/auto/workflow-custom-engine-reconcile.ts +71 -0
  320. package/src/resources/extensions/gsd/auto/workflow-custom-engine-retry.ts +90 -0
  321. package/src/resources/extensions/gsd/auto/workflow-custom-engine-verify-outcome.ts +50 -0
  322. package/src/resources/extensions/gsd/auto/workflow-dispatch-claim.ts +97 -0
  323. package/src/resources/extensions/gsd/auto/workflow-dispatch-ledger.ts +45 -0
  324. package/src/resources/extensions/gsd/auto/workflow-iteration-completion.ts +26 -0
  325. package/src/resources/extensions/gsd/auto/workflow-journal-reporter.ts +33 -0
  326. package/src/resources/extensions/gsd/auto/workflow-kernel.ts +520 -0
  327. package/src/resources/extensions/gsd/auto/workflow-memory-pressure.ts +58 -0
  328. package/src/resources/extensions/gsd/auto/workflow-phase-reporter.ts +22 -0
  329. package/src/resources/extensions/gsd/auto/workflow-session-lock.ts +68 -0
  330. package/src/resources/extensions/gsd/auto/workflow-sidecar-iteration.ts +46 -0
  331. package/src/resources/extensions/gsd/auto/workflow-sidecar-queue.ts +46 -0
  332. package/src/resources/extensions/gsd/auto/workflow-turn-reporter.ts +68 -0
  333. package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +89 -0
  334. package/src/resources/extensions/gsd/auto/workflow-worker-heartbeat.ts +38 -0
  335. package/src/resources/extensions/gsd/auto-dashboard.ts +4 -0
  336. package/src/resources/extensions/gsd/auto-prompts.ts +170 -3
  337. package/src/resources/extensions/gsd/auto-recovery.ts +42 -50
  338. package/src/resources/extensions/gsd/auto-runtime-state.ts +7 -0
  339. package/src/resources/extensions/gsd/auto-verification.ts +5 -1
  340. package/src/resources/extensions/gsd/auto-worktree.ts +85 -36
  341. package/src/resources/extensions/gsd/auto.ts +167 -1
  342. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +14 -1
  343. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +11 -0
  344. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +13 -5
  345. package/src/resources/extensions/gsd/commands-ship.ts +24 -51
  346. package/src/resources/extensions/gsd/commands-workflow-templates.ts +13 -0
  347. package/src/resources/extensions/gsd/component-loader.ts +5 -11
  348. package/src/resources/extensions/gsd/custom-workflow-engine.ts +6 -0
  349. package/src/resources/extensions/gsd/db-adapter.ts +75 -0
  350. package/src/resources/extensions/gsd/db-base-schema.ts +368 -0
  351. package/src/resources/extensions/gsd/db-connection-cache.ts +45 -0
  352. package/src/resources/extensions/gsd/db-coordination-schema.ts +109 -0
  353. package/src/resources/extensions/gsd/db-decision-requirement-rows.ts +77 -0
  354. package/src/resources/extensions/gsd/db-gate-rows.ts +19 -0
  355. package/src/resources/extensions/gsd/db-lightweight-query-rows.ts +50 -0
  356. package/src/resources/extensions/gsd/db-memory-fts-schema.ts +66 -0
  357. package/src/resources/extensions/gsd/db-migration-backup.ts +34 -0
  358. package/src/resources/extensions/gsd/db-migration-steps.ts +434 -0
  359. package/src/resources/extensions/gsd/db-milestone-artifact-rows.ts +70 -0
  360. package/src/resources/extensions/gsd/db-open-state.ts +47 -0
  361. package/src/resources/extensions/gsd/db-provider.ts +148 -0
  362. package/src/resources/extensions/gsd/db-runtime-kv-schema.ts +30 -0
  363. package/src/resources/extensions/gsd/db-schema-metadata.ts +33 -0
  364. package/src/resources/extensions/gsd/db-task-slice-rows.ts +146 -0
  365. package/src/resources/extensions/gsd/db-transaction.ts +76 -0
  366. package/src/resources/extensions/gsd/db-verification-evidence-rows.ts +14 -0
  367. package/src/resources/extensions/gsd/db-verification-evidence-schema.ts +22 -0
  368. package/src/resources/extensions/gsd/escalation.ts +3 -1
  369. package/src/resources/extensions/gsd/gsd-db.ts +260 -1659
  370. package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
  371. package/src/resources/extensions/gsd/legacy-telemetry.ts +99 -0
  372. package/src/resources/extensions/gsd/markdown-renderer.ts +4 -1
  373. package/src/resources/extensions/gsd/model-router.ts +10 -6
  374. package/src/resources/extensions/gsd/notification-widget.ts +25 -4
  375. package/src/resources/extensions/gsd/post-execution-checks.ts +35 -7
  376. package/src/resources/extensions/gsd/pr-evidence.ts +124 -0
  377. package/src/resources/extensions/gsd/pre-execution-checks.ts +4 -1
  378. package/src/resources/extensions/gsd/process-task-path.ts +81 -0
  379. package/src/resources/extensions/gsd/prompt-loader.ts +9 -5
  380. package/src/resources/extensions/gsd/prompts/complete-milestone.md +32 -30
  381. package/src/resources/extensions/gsd/prompts/complete-slice.md +23 -34
  382. package/src/resources/extensions/gsd/prompts/discuss-headless.md +50 -96
  383. package/src/resources/extensions/gsd/prompts/discuss.md +81 -181
  384. package/src/resources/extensions/gsd/prompts/execute-task.md +40 -67
  385. package/src/resources/extensions/gsd/prompts/forensics.md +41 -84
  386. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +29 -39
  387. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +30 -65
  388. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +25 -52
  389. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +36 -36
  390. package/src/resources/extensions/gsd/prompts/guided-research-project.md +20 -38
  391. package/src/resources/extensions/gsd/prompts/plan-milestone.md +45 -59
  392. package/src/resources/extensions/gsd/prompts/plan-slice.md +25 -87
  393. package/src/resources/extensions/gsd/prompts/queue.md +46 -53
  394. package/src/resources/extensions/gsd/prompts/refine-slice.md +23 -23
  395. package/src/resources/extensions/gsd/prompts/research-slice.md +23 -23
  396. package/src/resources/extensions/gsd/prompts/rethink.md +10 -10
  397. package/src/resources/extensions/gsd/prompts/system.md +65 -107
  398. package/src/resources/extensions/gsd/prompts/triage-captures.md +15 -15
  399. package/src/resources/extensions/gsd/prompts/validate-milestone.md +24 -24
  400. package/src/resources/extensions/gsd/prompts/worktree-merge.md +35 -35
  401. package/src/resources/extensions/gsd/state.ts +6 -3
  402. package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +32 -0
  403. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +65 -0
  404. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +38 -0
  405. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +353 -0
  406. package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +19 -0
  407. package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +39 -0
  408. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +3 -0
  409. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +2 -2
  410. package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +3 -2
  411. package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +47 -0
  412. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +19 -5
  413. package/src/resources/extensions/gsd/tests/component-loader.test.ts +2 -9
  414. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +38 -0
  415. package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +139 -0
  416. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +12 -0
  417. package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +3 -3
  418. package/src/resources/extensions/gsd/tests/db-adapter.test.ts +82 -0
  419. package/src/resources/extensions/gsd/tests/db-base-schema.test.ts +62 -0
  420. package/src/resources/extensions/gsd/tests/db-connection-cache.test.ts +60 -0
  421. package/src/resources/extensions/gsd/tests/db-coordination-schema.test.ts +39 -0
  422. package/src/resources/extensions/gsd/tests/db-decision-requirement-rows.test.ts +135 -0
  423. package/src/resources/extensions/gsd/tests/db-gate-rows.test.ts +53 -0
  424. package/src/resources/extensions/gsd/tests/db-lightweight-query-rows.test.ts +45 -0
  425. package/src/resources/extensions/gsd/tests/db-memory-fts-schema.test.ts +86 -0
  426. package/src/resources/extensions/gsd/tests/db-migration-backup.test.ts +105 -0
  427. package/src/resources/extensions/gsd/tests/db-migration-steps.test.ts +159 -0
  428. package/src/resources/extensions/gsd/tests/db-milestone-artifact-rows.test.ts +53 -0
  429. package/src/resources/extensions/gsd/tests/db-open-state.test.ts +56 -0
  430. package/src/resources/extensions/gsd/tests/db-provider.test.ts +105 -0
  431. package/src/resources/extensions/gsd/tests/db-runtime-kv-schema.test.ts +37 -0
  432. package/src/resources/extensions/gsd/tests/db-schema-metadata.test.ts +115 -0
  433. package/src/resources/extensions/gsd/tests/db-task-slice-rows.test.ts +128 -0
  434. package/src/resources/extensions/gsd/tests/db-transaction.test.ts +110 -0
  435. package/src/resources/extensions/gsd/tests/db-verification-evidence-schema.test.ts +76 -0
  436. package/src/resources/extensions/gsd/tests/discuss-headless-rendering.test.ts +37 -0
  437. package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +59 -0
  438. package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +36 -0
  439. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +95 -0
  440. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +43 -0
  441. package/src/resources/extensions/gsd/tests/guided-discuss-project-prompt-rendering.test.ts +41 -0
  442. package/src/resources/extensions/gsd/tests/guided-discuss-requirements-prompt-rendering.test.ts +45 -0
  443. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +79 -0
  444. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +37 -0
  445. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +5 -3
  446. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +134 -0
  447. package/src/resources/extensions/gsd/tests/legacy-component-format-telemetry.test.ts +62 -0
  448. package/src/resources/extensions/gsd/tests/legacy-telemetry.test.ts +144 -0
  449. package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +40 -16
  450. package/src/resources/extensions/gsd/tests/model-router.test.ts +33 -12
  451. package/src/resources/extensions/gsd/tests/notification-store.test.ts +8 -0
  452. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +40 -1
  453. package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +2 -0
  454. package/src/resources/extensions/gsd/tests/plan-milestone-rendering.test.ts +45 -0
  455. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +65 -16
  456. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +27 -0
  457. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +46 -0
  458. package/src/resources/extensions/gsd/tests/pr-evidence.test.ts +79 -0
  459. package/src/resources/extensions/gsd/tests/process-task-path.test.ts +51 -0
  460. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -1
  461. package/src/resources/extensions/gsd/tests/queue-prompt-rendering.test.ts +37 -0
  462. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +32 -9
  463. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +6 -6
  464. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +12 -0
  465. package/src/resources/extensions/gsd/tests/workflow-custom-engine-dispatch-outcome.test.ts +55 -0
  466. package/src/resources/extensions/gsd/tests/workflow-custom-engine-iteration.test.ts +93 -0
  467. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile-outcome.test.ts +108 -0
  468. package/src/resources/extensions/gsd/tests/workflow-custom-engine-reconcile.test.ts +146 -0
  469. package/src/resources/extensions/gsd/tests/workflow-custom-engine-retry.test.ts +136 -0
  470. package/src/resources/extensions/gsd/tests/workflow-custom-engine-verify-outcome.test.ts +95 -0
  471. package/src/resources/extensions/gsd/tests/workflow-dispatch-claim.test.ts +158 -0
  472. package/src/resources/extensions/gsd/tests/workflow-dispatch-ledger.test.ts +82 -0
  473. package/src/resources/extensions/gsd/tests/workflow-iteration-completion.test.ts +44 -0
  474. package/src/resources/extensions/gsd/tests/workflow-journal-reporter.test.ts +49 -0
  475. package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +607 -0
  476. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +20 -4
  477. package/src/resources/extensions/gsd/tests/workflow-memory-pressure.test.ts +71 -0
  478. package/src/resources/extensions/gsd/tests/workflow-phase-reporter.test.ts +40 -0
  479. package/src/resources/extensions/gsd/tests/workflow-session-lock.test.ts +135 -0
  480. package/src/resources/extensions/gsd/tests/workflow-sidecar-iteration.test.ts +110 -0
  481. package/src/resources/extensions/gsd/tests/workflow-sidecar-queue.test.ts +116 -0
  482. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +21 -0
  483. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +32 -0
  484. package/src/resources/extensions/gsd/tests/workflow-turn-reporter.test.ts +87 -0
  485. package/src/resources/extensions/gsd/tests/workflow-unit-dispatch.test.ts +160 -0
  486. package/src/resources/extensions/gsd/tests/workflow-worker-heartbeat.test.ts +123 -0
  487. package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +17 -33
  488. package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
  489. package/src/resources/extensions/gsd/tools/complete-task.ts +4 -1
  490. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +6 -1
  491. package/src/resources/extensions/gsd/unit-context-composer.ts +1 -1
  492. package/src/resources/extensions/gsd/uok/kernel.ts +10 -3
  493. package/src/resources/extensions/gsd/uok/plan-v2.ts +5 -1
  494. package/src/resources/extensions/gsd/workflow-logger.ts +13 -13
  495. package/src/resources/extensions/gsd/workflow-manifest.ts +6 -15
  496. package/src/resources/extensions/gsd/workflow-projections.ts +5 -1
  497. package/src/resources/extensions/gsd/workflow-templates.ts +11 -0
  498. package/src/resources/extensions/shared/interview-ui.ts +18 -5
  499. package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +41 -0
  500. package/dist/web/standalone/.next/server/chunks/6336.js +0 -1
  501. /package/dist/web/standalone/.next/static/{TzEVJ1Lh8vbez4n4Q9TqQ → bQDK5_LtkGVS64AirQgQG}/_buildManifest.js +0 -0
  502. /package/dist/web/standalone/.next/static/{TzEVJ1Lh8vbez4n4Q9TqQ → bQDK5_LtkGVS64AirQgQG}/_ssgManifest.js +0 -0
@@ -0,0 +1,109 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Auto-mode coordination SQLite schema helper for the GSD database facade.
3
+
4
+ import type { DbAdapter } from "./db-adapter.js";
5
+
6
+ /**
7
+ * Create the v24 coordination tables (workers, milestone_leases,
8
+ * unit_dispatches, cancellation_requests, command_queue) and their indexes.
9
+ *
10
+ * Idempotent — uses IF NOT EXISTS throughout. Called from both the
11
+ * fresh-install path and the v24 migration block in migrateSchema().
12
+ *
13
+ * Single-host invariant: these tables coordinate concurrent auto-mode
14
+ * workers via shared SQLite WAL on local disk only. NFS / network
15
+ * filesystems break the coordination semantics — multi-host execution
16
+ * needs a real coordinator (etcd, Postgres) and is out of scope.
17
+ */
18
+ export function createCoordinationTablesV24(db: DbAdapter): void {
19
+ const ddl = [
20
+ `CREATE TABLE IF NOT EXISTS workers (
21
+ worker_id TEXT PRIMARY KEY,
22
+ host TEXT NOT NULL,
23
+ pid INTEGER NOT NULL,
24
+ started_at TEXT NOT NULL,
25
+ version TEXT NOT NULL,
26
+ last_heartbeat_at TEXT NOT NULL,
27
+ status TEXT NOT NULL,
28
+ project_root_realpath TEXT NOT NULL
29
+ )`,
30
+ `CREATE TABLE IF NOT EXISTS milestone_leases (
31
+ milestone_id TEXT PRIMARY KEY,
32
+ worker_id TEXT NOT NULL,
33
+ fencing_token INTEGER NOT NULL,
34
+ acquired_at TEXT NOT NULL,
35
+ expires_at TEXT NOT NULL,
36
+ status TEXT NOT NULL,
37
+ FOREIGN KEY (worker_id) REFERENCES workers(worker_id),
38
+ FOREIGN KEY (milestone_id) REFERENCES milestones(id)
39
+ )`,
40
+ `CREATE TABLE IF NOT EXISTS unit_dispatches (
41
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
42
+ trace_id TEXT NOT NULL,
43
+ turn_id TEXT,
44
+ worker_id TEXT NOT NULL,
45
+ milestone_lease_token INTEGER NOT NULL,
46
+ milestone_id TEXT NOT NULL,
47
+ slice_id TEXT,
48
+ task_id TEXT,
49
+ unit_type TEXT NOT NULL,
50
+ unit_id TEXT NOT NULL,
51
+ status TEXT NOT NULL,
52
+ attempt_n INTEGER NOT NULL DEFAULT 1,
53
+ started_at TEXT NOT NULL,
54
+ ended_at TEXT,
55
+ exit_reason TEXT,
56
+ error_summary TEXT,
57
+ verification_evidence_id INTEGER,
58
+ next_run_at TEXT,
59
+ retry_after_ms INTEGER,
60
+ max_attempts INTEGER NOT NULL DEFAULT 3,
61
+ last_error_code TEXT,
62
+ last_error_at TEXT,
63
+ FOREIGN KEY (worker_id) REFERENCES workers(worker_id),
64
+ FOREIGN KEY (verification_evidence_id) REFERENCES verification_evidence(id)
65
+ )`,
66
+ `CREATE TABLE IF NOT EXISTS cancellation_requests (
67
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
68
+ requested_at TEXT NOT NULL,
69
+ requested_by TEXT NOT NULL,
70
+ scope TEXT NOT NULL,
71
+ scope_id TEXT NOT NULL,
72
+ dispatch_id INTEGER,
73
+ reason TEXT NOT NULL,
74
+ status TEXT NOT NULL,
75
+ acked_at TEXT,
76
+ acked_worker_id TEXT,
77
+ FOREIGN KEY (dispatch_id) REFERENCES unit_dispatches(id),
78
+ FOREIGN KEY (acked_worker_id) REFERENCES workers(worker_id)
79
+ )`,
80
+ `CREATE TABLE IF NOT EXISTS command_queue (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ target_worker TEXT,
83
+ command TEXT NOT NULL,
84
+ args_json TEXT NOT NULL DEFAULT '{}',
85
+ enqueued_at TEXT NOT NULL,
86
+ claimed_at TEXT,
87
+ claimed_by TEXT,
88
+ completed_at TEXT,
89
+ result_json TEXT
90
+ )`,
91
+ ];
92
+ for (const stmt of ddl) db.exec(stmt);
93
+
94
+ // Indexes — created here so both fresh-install and v24-migration paths
95
+ // produce identical structure.
96
+ db.exec("CREATE INDEX IF NOT EXISTS idx_unit_dispatches_active ON unit_dispatches(milestone_id, status)");
97
+ db.exec("CREATE INDEX IF NOT EXISTS idx_unit_dispatches_trace ON unit_dispatches(trace_id, turn_id)");
98
+ // Partial unique index — prevents two workers from claiming the same
99
+ // unit concurrently. Codex review MEDIUM B2: enforces double-claim guard
100
+ // at the DB level.
101
+ db.exec(
102
+ "CREATE UNIQUE INDEX IF NOT EXISTS idx_unit_dispatches_active_per_unit "
103
+ + "ON unit_dispatches(unit_id) WHERE status IN ('claimed','running')",
104
+ );
105
+ // command_queue index — SQLite indexes NULLs in B-trees, so this single
106
+ // index serves both targeted (target_worker = ?) and broadcast
107
+ // (target_worker IS NULL) queries. Codex review LOW B4 documented.
108
+ db.exec("CREATE INDEX IF NOT EXISTS idx_command_queue_pending ON command_queue(target_worker, claimed_at)");
109
+ }
@@ -0,0 +1,77 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Decision and requirement row mappers for the GSD database facade.
3
+
4
+ import type { Decision, DecisionMadeBy, Requirement, RequirementCounts } from "./types.js";
5
+
6
+ type DbRow = Record<string, unknown>;
7
+
8
+ export function rowToDecision(row: DbRow): Decision {
9
+ return {
10
+ seq: row["seq"] as number,
11
+ id: row["id"] as string,
12
+ when_context: row["when_context"] as string,
13
+ scope: row["scope"] as string,
14
+ decision: row["decision"] as string,
15
+ choice: row["choice"] as string,
16
+ rationale: row["rationale"] as string,
17
+ revisable: row["revisable"] as string,
18
+ made_by: (row["made_by"] as DecisionMadeBy) ?? "agent",
19
+ source: (row["source"] as string) ?? "discussion",
20
+ superseded_by: (row["superseded_by"] as string) ?? null,
21
+ };
22
+ }
23
+
24
+ export function rowToActiveDecision(row: DbRow): Decision {
25
+ return {
26
+ ...rowToDecision(row),
27
+ superseded_by: null,
28
+ };
29
+ }
30
+
31
+ export function rowToRequirement(row: DbRow): Requirement {
32
+ return {
33
+ id: row["id"] as string,
34
+ class: row["class"] as string,
35
+ status: row["status"] as string,
36
+ description: row["description"] as string,
37
+ why: row["why"] as string,
38
+ source: row["source"] as string,
39
+ primary_owner: row["primary_owner"] as string,
40
+ supporting_slices: row["supporting_slices"] as string,
41
+ validation: row["validation"] as string,
42
+ notes: row["notes"] as string,
43
+ full_content: row["full_content"] as string,
44
+ superseded_by: (row["superseded_by"] as string) ?? null,
45
+ };
46
+ }
47
+
48
+ export function rowToActiveRequirement(row: DbRow): Requirement {
49
+ return {
50
+ ...rowToRequirement(row),
51
+ superseded_by: null,
52
+ };
53
+ }
54
+
55
+ export function rowsToRequirementCounts(rows: DbRow[]): RequirementCounts {
56
+ const counts: RequirementCounts = {
57
+ active: 0,
58
+ validated: 0,
59
+ deferred: 0,
60
+ outOfScope: 0,
61
+ blocked: 0,
62
+ total: 0,
63
+ };
64
+
65
+ for (const row of rows) {
66
+ const status = String(row["status"] ?? "");
67
+ const count = Number(row["count"] ?? 0);
68
+ counts.total += count;
69
+ if (status === "active") counts.active += count;
70
+ else if (status === "validated") counts.validated += count;
71
+ else if (status === "deferred") counts.deferred += count;
72
+ else if (status === "out-of-scope" || status === "out_of_scope") counts.outOfScope += count;
73
+ else if (status === "blocked") counts.blocked += count;
74
+ }
75
+
76
+ return counts;
77
+ }
@@ -0,0 +1,19 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Quality gate row mapper for the GSD database facade.
3
+
4
+ import type { GateId, GateRow, GateScope, GateStatus, GateVerdict } from "./types.js";
5
+
6
+ export function rowToGate(row: Record<string, unknown>): GateRow {
7
+ return {
8
+ milestone_id: row["milestone_id"] as string,
9
+ slice_id: row["slice_id"] as string,
10
+ gate_id: row["gate_id"] as GateId,
11
+ scope: row["scope"] as GateScope,
12
+ task_id: (row["task_id"] as string) ?? "",
13
+ status: row["status"] as GateStatus,
14
+ verdict: row["status"] === "pending" ? null : (row["verdict"] as GateVerdict),
15
+ rationale: (row["rationale"] as string) || "",
16
+ findings: (row["findings"] as string) || "",
17
+ evaluated_at: (row["evaluated_at"] as string) ?? null,
18
+ };
19
+ }
@@ -0,0 +1,50 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Lightweight DB query row mappers for hot-path status reads.
3
+
4
+ type DbRow = Record<string, unknown>;
5
+
6
+ export interface IdStatusSummary {
7
+ id: string;
8
+ status: string;
9
+ }
10
+
11
+ export interface ActiveTaskSummary extends IdStatusSummary {
12
+ title: string;
13
+ }
14
+
15
+ export interface TaskStatusCounts {
16
+ total: number;
17
+ done: number;
18
+ pending: number;
19
+ }
20
+
21
+ export function rowToIdStatusSummary(row: DbRow): IdStatusSummary {
22
+ return {
23
+ id: row["id"] as string,
24
+ status: row["status"] as string,
25
+ };
26
+ }
27
+
28
+ export function rowToActiveTaskSummary(row: DbRow): ActiveTaskSummary {
29
+ return {
30
+ ...rowToIdStatusSummary(row),
31
+ title: row["title"] as string,
32
+ };
33
+ }
34
+
35
+ export function rowToTaskStatusCounts(row: DbRow | undefined): TaskStatusCounts {
36
+ if (!row) return emptyTaskStatusCounts();
37
+ return {
38
+ total: (row["total"] as number) ?? 0,
39
+ done: (row["done"] as number) ?? 0,
40
+ pending: (row["pending"] as number) ?? 0,
41
+ };
42
+ }
43
+
44
+ export function emptyTaskStatusCounts(): TaskStatusCounts {
45
+ return { total: 0, done: 0, pending: 0 };
46
+ }
47
+
48
+ export function rowsToStringColumn(rows: DbRow[], column: string): string[] {
49
+ return rows.map((row) => row[column] as string);
50
+ }
@@ -0,0 +1,66 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Memory FTS5 SQLite schema helpers for the GSD database facade.
3
+
4
+ import type { DbAdapter } from "./db-adapter.js";
5
+
6
+ export interface MemoryFtsSchemaOptions {
7
+ onUnavailable?: (message: string) => void;
8
+ }
9
+
10
+ function formatFtsUnavailableError(err: unknown): string {
11
+ const message = err instanceof Error ? err.message : String(err);
12
+ return message.replace(/\bmoduel\s*:\s*/gi, "module: ");
13
+ }
14
+
15
+ /**
16
+ * Create the FTS5 virtual table for memories plus the triggers that keep it
17
+ * in sync with the base table. FTS5 may be unavailable on stripped-down
18
+ * SQLite builds — callers should treat failure as non-fatal and fall back
19
+ * to LIKE-based scans in `memory-store.queryMemoriesRanked`.
20
+ */
21
+ export function tryCreateMemoriesFtsSchema(
22
+ db: DbAdapter,
23
+ options: MemoryFtsSchemaOptions = {},
24
+ ): boolean {
25
+ try {
26
+ db.exec(`
27
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts
28
+ USING fts5(content, content='memories', content_rowid='seq', tokenize='porter unicode61')
29
+ `);
30
+ // Triggers mirror inserts / updates / deletes on the base memories table.
31
+ db.exec(`
32
+ CREATE TRIGGER IF NOT EXISTS memories_ai
33
+ AFTER INSERT ON memories BEGIN
34
+ INSERT INTO memories_fts(rowid, content) VALUES (new.seq, new.content);
35
+ END
36
+ `);
37
+ db.exec(`
38
+ CREATE TRIGGER IF NOT EXISTS memories_ad
39
+ AFTER DELETE ON memories BEGIN
40
+ INSERT INTO memories_fts(memories_fts, rowid, content) VALUES ('delete', old.seq, old.content);
41
+ END
42
+ `);
43
+ db.exec(`
44
+ CREATE TRIGGER IF NOT EXISTS memories_au
45
+ AFTER UPDATE OF content ON memories BEGIN
46
+ INSERT INTO memories_fts(memories_fts, rowid, content) VALUES ('delete', old.seq, old.content);
47
+ INSERT INTO memories_fts(rowid, content) VALUES (new.seq, new.content);
48
+ END
49
+ `);
50
+ return true;
51
+ } catch (err) {
52
+ options.onUnavailable?.(`FTS5 unavailable — memory queries will use LIKE fallback: ${formatFtsUnavailableError(err)}`);
53
+ return false;
54
+ }
55
+ }
56
+
57
+ export function isMemoriesFtsAvailableSchema(db: DbAdapter): boolean {
58
+ try {
59
+ const row = db
60
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='memories_fts'")
61
+ .get();
62
+ return !!row;
63
+ } catch {
64
+ return false;
65
+ }
66
+ }
@@ -0,0 +1,34 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Pre-migration backup helper for GSD database schema upgrades.
3
+
4
+ import type { DbAdapter } from "./db-adapter.js";
5
+
6
+ export interface MigrationBackupDeps {
7
+ existsSync(path: string): boolean;
8
+ copyFileSync(src: string, dest: string): void;
9
+ logWarning(scope: string, message: string): void;
10
+ }
11
+
12
+ export function backupDatabaseBeforeMigration(
13
+ db: DbAdapter,
14
+ dbPath: string | null,
15
+ currentVersion: number,
16
+ deps: MigrationBackupDeps,
17
+ ): void {
18
+ if (!dbPath || dbPath === ":memory:" || !deps.existsSync(dbPath)) return;
19
+
20
+ try {
21
+ const backupPath = `${dbPath}.backup-v${currentVersion}`;
22
+ if (deps.existsSync(backupPath)) return;
23
+
24
+ try {
25
+ db.exec("PRAGMA wal_checkpoint(TRUNCATE)");
26
+ } catch {
27
+ // Checkpoint is best effort; copying the base file is still better than no backup.
28
+ }
29
+ deps.copyFileSync(dbPath, backupPath);
30
+ } catch (backupErr) {
31
+ const message = backupErr instanceof Error ? backupErr.message : String(backupErr);
32
+ deps.logWarning("db", `Pre-migration backup failed: ${message}`);
33
+ }
34
+ }