sdd-agent-platform 0.4.0 → 0.4.1

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 (417) hide show
  1. package/README.md +18 -23
  2. package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js +31 -28
  3. package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js.map +1 -1
  4. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js +3 -2
  5. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js.map +1 -1
  6. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.d.ts +1 -1
  7. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js +14 -5
  8. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js.map +1 -1
  9. package/node_modules/@sdd-agent-platform/core/dist/contracts.d.ts +2 -0
  10. package/node_modules/@sdd-agent-platform/core/dist/contracts.js +2 -0
  11. package/node_modules/@sdd-agent-platform/core/dist/contracts.js.map +1 -1
  12. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/run-evidence.js +3 -3
  13. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/run-evidence.js.map +1 -1
  14. package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js +155 -1
  15. package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js.map +1 -1
  16. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.d.ts +23 -0
  17. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js +54 -0
  18. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js.map +1 -0
  19. package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/contracts.d.ts +11 -0
  20. package/node_modules/@sdd-agent-platform/core/dist/execution/agent-execution-records.js +15 -8
  21. package/node_modules/@sdd-agent-platform/core/dist/execution/agent-execution-records.js.map +1 -1
  22. package/node_modules/@sdd-agent-platform/core/dist/execution/resident-worker.js +14 -6
  23. package/node_modules/@sdd-agent-platform/core/dist/execution/resident-worker.js.map +1 -1
  24. package/node_modules/@sdd-agent-platform/core/dist/execution/stage-team-runtime.d.ts +112 -0
  25. package/node_modules/@sdd-agent-platform/core/dist/execution/stage-team-runtime.js +145 -0
  26. package/node_modules/@sdd-agent-platform/core/dist/execution/stage-team-runtime.js.map +1 -0
  27. package/node_modules/@sdd-agent-platform/core/dist/instructions.js +36 -36
  28. package/node_modules/@sdd-agent-platform/core/dist/instructions.js.map +1 -1
  29. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.d.ts +2 -0
  30. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js +37 -17
  31. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js.map +1 -1
  32. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-capability-catalog.d.ts +16 -1
  33. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-capability-catalog.js +174 -16
  34. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-capability-catalog.js.map +1 -1
  35. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js +2 -2
  36. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js.map +1 -1
  37. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-runtime-static.d.ts +10 -0
  38. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-runtime-static.js +31 -1
  39. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-runtime-static.js.map +1 -1
  40. package/node_modules/@sdd-agent-platform/core/dist/registries/capability-sources.d.ts +2 -17
  41. package/node_modules/@sdd-agent-platform/core/dist/registries/capability-sources.js +222 -10
  42. package/node_modules/@sdd-agent-platform/core/dist/registries/capability-sources.js.map +1 -1
  43. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js +5 -5
  44. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js.map +1 -1
  45. package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime-config.js +27 -12
  46. package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime-config.js.map +1 -1
  47. package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime.d.ts +59 -1
  48. package/node_modules/@sdd-agent-platform/core/dist/router/route-projection.d.ts +3 -1
  49. package/node_modules/@sdd-agent-platform/core/dist/router/route-projection.js +191 -0
  50. package/node_modules/@sdd-agent-platform/core/dist/router/route-projection.js.map +1 -1
  51. package/node_modules/@sdd-agent-platform/core/dist/router/routing.js +32 -6
  52. package/node_modules/@sdd-agent-platform/core/dist/router/routing.js.map +1 -1
  53. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-inspection.js +11 -4
  54. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-inspection.js.map +1 -1
  55. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-validation.js +31 -3
  56. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-validation.js.map +1 -1
  57. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js +48 -15
  58. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js.map +1 -1
  59. package/node_modules/@sdd-agent-platform/core/dist/run-state/events.js +2 -2
  60. package/node_modules/@sdd-agent-platform/core/dist/run-state/events.js.map +1 -1
  61. package/node_modules/@sdd-agent-platform/core/dist/run-state/inspect-run.d.ts +3 -1
  62. package/node_modules/@sdd-agent-platform/core/dist/run-state/inspect-run.js +15 -49
  63. package/node_modules/@sdd-agent-platform/core/dist/run-state/inspect-run.js.map +1 -1
  64. package/node_modules/@sdd-agent-platform/core/dist/run-state/invocation-ledger.js +2 -2
  65. package/node_modules/@sdd-agent-platform/core/dist/run-state/invocation-ledger.js.map +1 -1
  66. package/node_modules/@sdd-agent-platform/core/dist/run-state/model.d.ts +25 -1
  67. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js +21 -14
  68. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js.map +1 -1
  69. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.d.ts +62 -0
  70. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js +130 -0
  71. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js.map +1 -0
  72. package/node_modules/@sdd-agent-platform/core/dist/run-state.d.ts +1 -0
  73. package/node_modules/@sdd-agent-platform/core/dist/run-state.js +1 -0
  74. package/node_modules/@sdd-agent-platform/core/dist/run-state.js.map +1 -1
  75. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.d.ts +10 -0
  76. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js +44 -14
  77. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js.map +1 -1
  78. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/context.js +1 -1
  79. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/context.js.map +1 -1
  80. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/document-hashes.d.ts +4 -0
  81. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/document-hashes.js +189 -0
  82. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/document-hashes.js.map +1 -0
  83. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/run-binding.js +12 -3
  84. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/run-binding.js.map +1 -1
  85. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.d.ts +20 -0
  86. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js +101 -21
  87. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js.map +1 -1
  88. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.d.ts +62 -1
  89. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js +192 -4
  90. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js.map +1 -1
  91. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.d.ts +195 -2
  92. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js +499 -2
  93. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js.map +1 -1
  94. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js +23 -1
  95. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js.map +1 -1
  96. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.d.ts +19 -0
  97. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js +114 -12
  98. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js.map +1 -1
  99. package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js +21 -0
  100. package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js.map +1 -1
  101. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js +16 -2
  102. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js.map +1 -1
  103. package/node_modules/@sdd-agent-platform/core/dist/tsconfig.tsbuildinfo +1 -1
  104. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js +34 -2
  105. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js.map +1 -1
  106. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js +15 -5
  107. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js.map +1 -1
  108. package/node_modules/@sdd-agent-platform/core/dist/verification/review-gate.d.ts +22 -0
  109. package/node_modules/@sdd-agent-platform/core/dist/verification/review-gate.js +53 -0
  110. package/node_modules/@sdd-agent-platform/core/dist/verification/review-gate.js.map +1 -0
  111. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js +102 -9
  112. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js.map +1 -1
  113. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.d.ts +16 -1
  114. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js +355 -69
  115. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js.map +1 -1
  116. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-wave.d.ts +58 -0
  117. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-wave.js +428 -0
  118. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-wave.js.map +1 -0
  119. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.d.ts +2 -0
  120. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js +116 -18
  121. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js.map +1 -1
  122. package/node_modules/@sdd-agent-platform/core/dist/verification.d.ts +2 -0
  123. package/node_modules/@sdd-agent-platform/core/dist/verification.js +2 -0
  124. package/node_modules/@sdd-agent-platform/core/dist/verification.js.map +1 -1
  125. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.d.ts +24 -0
  126. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js +182 -0
  127. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js.map +1 -0
  128. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.d.ts +4 -0
  129. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js +130 -0
  130. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js.map +1 -0
  131. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.d.ts +4 -0
  132. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js +146 -0
  133. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js.map +1 -0
  134. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/types.d.ts +89 -0
  135. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/types.js +2 -0
  136. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/types.js.map +1 -0
  137. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/affected-file-conflicts.d.ts +1 -0
  138. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/affected-file-conflicts.js +16 -1
  139. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/affected-file-conflicts.js.map +1 -1
  140. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/dependencies.d.ts +8 -4
  141. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/dependencies.js +25 -11
  142. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/dependencies.js.map +1 -1
  143. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.d.ts +38 -0
  144. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js +122 -0
  145. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js.map +1 -0
  146. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.d.ts +27 -0
  147. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js +166 -37
  148. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js.map +1 -1
  149. package/node_modules/@sdd-agent-platform/core/dist/workflow-state.d.ts +1 -0
  150. package/node_modules/@sdd-agent-platform/core/dist/workflow-state.js +1 -0
  151. package/node_modules/@sdd-agent-platform/core/dist/workflow-state.js.map +1 -1
  152. package/node_modules/@sdd-agent-platform/core/package.json +1 -1
  153. package/node_modules/@sdd-agent-platform/core/src/ai-tools.ts +31 -28
  154. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.test.ts +50 -4
  155. package/node_modules/@sdd-agent-platform/core/src/config/init-project.test.ts +13 -10
  156. package/node_modules/@sdd-agent-platform/core/src/config/init-project.ts +3 -2
  157. package/node_modules/@sdd-agent-platform/core/src/config/starter-documents.ts +15 -5
  158. package/node_modules/@sdd-agent-platform/core/src/contracts.ts +2 -0
  159. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-evidence.ts +3 -3
  160. package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.test.ts +117 -5
  161. package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.ts +164 -1
  162. package/node_modules/@sdd-agent-platform/core/src/evidence/lookup.ts +80 -0
  163. package/node_modules/@sdd-agent-platform/core/src/evidence-runtime/contracts.ts +12 -0
  164. package/node_modules/@sdd-agent-platform/core/src/execution/agent-execution-records.ts +16 -11
  165. package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.test.ts +7 -0
  166. package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.test.ts +5 -0
  167. package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.ts +14 -6
  168. package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.test.ts +102 -0
  169. package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.ts +271 -0
  170. package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.test.ts +4 -0
  171. package/node_modules/@sdd-agent-platform/core/src/governance/policy.test.ts +2 -0
  172. package/node_modules/@sdd-agent-platform/core/src/instructions.test.ts +11 -5
  173. package/node_modules/@sdd-agent-platform/core/src/instructions.ts +36 -36
  174. package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.ts +39 -17
  175. package/node_modules/@sdd-agent-platform/core/src/phase8-contracts.test.ts +3 -2
  176. package/node_modules/@sdd-agent-platform/core/src/phase8-risk-kernel.test.ts +5 -0
  177. package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.test.ts +2 -0
  178. package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.test.ts +3 -0
  179. package/node_modules/@sdd-agent-platform/core/src/registries/agent-capability-catalog.ts +269 -17
  180. package/node_modules/@sdd-agent-platform/core/src/registries/agent-registry.ts +2 -2
  181. package/node_modules/@sdd-agent-platform/core/src/registries/agent-runtime-static.ts +41 -1
  182. package/node_modules/@sdd-agent-platform/core/src/registries/capability-sources.ts +238 -15
  183. package/node_modules/@sdd-agent-platform/core/src/registries/registries.test.ts +27 -2
  184. package/node_modules/@sdd-agent-platform/core/src/registries/workflow-gates.ts +5 -5
  185. package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime-config.ts +31 -12
  186. package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime.ts +66 -1
  187. package/node_modules/@sdd-agent-platform/core/src/router/route-projection.ts +211 -0
  188. package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.test.ts +151 -3
  189. package/node_modules/@sdd-agent-platform/core/src/router/routing.ts +35 -6
  190. package/node_modules/@sdd-agent-platform/core/src/router/runtime-inspection.ts +11 -4
  191. package/node_modules/@sdd-agent-platform/core/src/router/runtime-validation.ts +32 -3
  192. package/node_modules/@sdd-agent-platform/core/src/run-state/artifacts.ts +48 -15
  193. package/node_modules/@sdd-agent-platform/core/src/run-state/events.ts +2 -2
  194. package/node_modules/@sdd-agent-platform/core/src/run-state/inspect-run.ts +17 -52
  195. package/node_modules/@sdd-agent-platform/core/src/run-state/invocation-ledger.ts +2 -2
  196. package/node_modules/@sdd-agent-platform/core/src/run-state/model.ts +28 -1
  197. package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.test.ts +3 -0
  198. package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.ts +22 -18
  199. package/node_modules/@sdd-agent-platform/core/src/run-state/task-evidence.ts +206 -0
  200. package/node_modules/@sdd-agent-platform/core/src/run-state.ts +1 -0
  201. package/node_modules/@sdd-agent-platform/core/src/runtime-paths.ts +54 -14
  202. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/context.ts +1 -1
  203. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/document-hashes.ts +207 -0
  204. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/run-binding.ts +12 -3
  205. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.test.ts +139 -0
  206. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.ts +137 -24
  207. package/node_modules/@sdd-agent-platform/core/src/status/project-status.ts +268 -5
  208. package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.test.ts +368 -4
  209. package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.ts +697 -2
  210. package/node_modules/@sdd-agent-platform/core/src/sync-back/apply.ts +23 -1
  211. package/node_modules/@sdd-agent-platform/core/src/sync-back/inspect.ts +145 -12
  212. package/node_modules/@sdd-agent-platform/core/src/sync-back/sync-back.test.ts +132 -9
  213. package/node_modules/@sdd-agent-platform/core/src/test-support/fixtures.ts +21 -0
  214. package/node_modules/@sdd-agent-platform/core/src/test-support/run-state.ts +16 -2
  215. package/node_modules/@sdd-agent-platform/core/src/verification/goal-verify.test.ts +1 -1
  216. package/node_modules/@sdd-agent-platform/core/src/verification/goal-verify.ts +38 -5
  217. package/node_modules/@sdd-agent-platform/core/src/verification/rendering.ts +15 -5
  218. package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.test.ts +77 -0
  219. package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.ts +77 -0
  220. package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.test.ts +64 -4
  221. package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.ts +110 -12
  222. package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.test.ts +72 -25
  223. package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.ts +402 -77
  224. package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.test.ts +341 -0
  225. package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.ts +513 -0
  226. package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.test.ts +144 -5
  227. package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.ts +129 -18
  228. package/node_modules/@sdd-agent-platform/core/src/verification.ts +2 -0
  229. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/evidence-packet.ts +196 -0
  230. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.test.ts +171 -0
  231. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.ts +143 -0
  232. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.test.ts +137 -0
  233. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.ts +155 -0
  234. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/types.ts +114 -0
  235. package/node_modules/@sdd-agent-platform/core/src/workflow-state/affected-file-conflicts.ts +18 -1
  236. package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.test.ts +1 -1
  237. package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.ts +33 -11
  238. package/node_modules/@sdd-agent-platform/core/src/workflow-state/latest-eligible-run.ts +156 -0
  239. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.test.ts +351 -2
  240. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.ts +227 -39
  241. package/node_modules/@sdd-agent-platform/core/src/workflow-state.ts +1 -0
  242. package/package.json +1 -1
  243. package/packages/cli/dist/commands/status.js +2 -2
  244. package/packages/cli/dist/commands/status.js.map +1 -1
  245. package/packages/cli/dist/commands/sync-back.js +1 -1
  246. package/packages/cli/dist/commands/sync-back.js.map +1 -1
  247. package/packages/cli/dist/commands/tasks.js +4 -4
  248. package/packages/cli/dist/commands/tasks.js.map +1 -1
  249. package/packages/cli/dist/commands/test.js +94 -5
  250. package/packages/cli/dist/commands/test.js.map +1 -1
  251. package/packages/cli/dist/commands/verifies.js +5 -3
  252. package/packages/cli/dist/commands/verifies.js.map +1 -1
  253. package/packages/cli/dist/commands/verify.js +48 -7
  254. package/packages/cli/dist/commands/verify.js.map +1 -1
  255. package/packages/cli/dist/help.js +32 -18
  256. package/packages/cli/dist/help.js.map +1 -1
  257. package/packages/cli/dist/renderers/artifacts.js +1 -1
  258. package/packages/cli/dist/renderers/artifacts.js.map +1 -1
  259. package/packages/cli/dist/renderers/registry-runtime.js +7 -2
  260. package/packages/cli/dist/renderers/registry-runtime.js.map +1 -1
  261. package/packages/cli/dist/renderers/router.js +4 -2
  262. package/packages/cli/dist/renderers/router.js.map +1 -1
  263. package/packages/cli/dist/renderers/workflow.js +33 -12
  264. package/packages/cli/dist/renderers/workflow.js.map +1 -1
  265. package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
  266. package/packages/cli/package.json +2 -2
  267. package/packages/core/dist/ai-tools.js +31 -28
  268. package/packages/core/dist/ai-tools.js.map +1 -1
  269. package/packages/core/dist/config/init-project.js +3 -2
  270. package/packages/core/dist/config/init-project.js.map +1 -1
  271. package/packages/core/dist/config/starter-documents.d.ts +1 -1
  272. package/packages/core/dist/config/starter-documents.js +14 -5
  273. package/packages/core/dist/config/starter-documents.js.map +1 -1
  274. package/packages/core/dist/contracts.d.ts +2 -0
  275. package/packages/core/dist/contracts.js +2 -0
  276. package/packages/core/dist/contracts.js.map +1 -1
  277. package/packages/core/dist/doctor/checks/run-evidence.js +3 -3
  278. package/packages/core/dist/doctor/checks/run-evidence.js.map +1 -1
  279. package/packages/core/dist/doctor/doctor.js +155 -1
  280. package/packages/core/dist/doctor/doctor.js.map +1 -1
  281. package/packages/core/dist/evidence/lookup.d.ts +23 -0
  282. package/packages/core/dist/evidence/lookup.js +54 -0
  283. package/packages/core/dist/evidence/lookup.js.map +1 -0
  284. package/packages/core/dist/evidence-runtime/contracts.d.ts +11 -0
  285. package/packages/core/dist/execution/agent-execution-records.js +15 -8
  286. package/packages/core/dist/execution/agent-execution-records.js.map +1 -1
  287. package/packages/core/dist/execution/resident-worker.js +14 -6
  288. package/packages/core/dist/execution/resident-worker.js.map +1 -1
  289. package/packages/core/dist/execution/stage-team-runtime.d.ts +112 -0
  290. package/packages/core/dist/execution/stage-team-runtime.js +145 -0
  291. package/packages/core/dist/execution/stage-team-runtime.js.map +1 -0
  292. package/packages/core/dist/instructions.js +36 -36
  293. package/packages/core/dist/instructions.js.map +1 -1
  294. package/packages/core/dist/lifecycle/ship.d.ts +2 -0
  295. package/packages/core/dist/lifecycle/ship.js +37 -17
  296. package/packages/core/dist/lifecycle/ship.js.map +1 -1
  297. package/packages/core/dist/registries/agent-capability-catalog.d.ts +16 -1
  298. package/packages/core/dist/registries/agent-capability-catalog.js +174 -16
  299. package/packages/core/dist/registries/agent-capability-catalog.js.map +1 -1
  300. package/packages/core/dist/registries/agent-registry.js +2 -2
  301. package/packages/core/dist/registries/agent-registry.js.map +1 -1
  302. package/packages/core/dist/registries/agent-runtime-static.d.ts +10 -0
  303. package/packages/core/dist/registries/agent-runtime-static.js +31 -1
  304. package/packages/core/dist/registries/agent-runtime-static.js.map +1 -1
  305. package/packages/core/dist/registries/capability-sources.d.ts +2 -17
  306. package/packages/core/dist/registries/capability-sources.js +222 -10
  307. package/packages/core/dist/registries/capability-sources.js.map +1 -1
  308. package/packages/core/dist/registries/workflow-gates.js +5 -5
  309. package/packages/core/dist/registries/workflow-gates.js.map +1 -1
  310. package/packages/core/dist/router/agent-runtime-config.js +27 -12
  311. package/packages/core/dist/router/agent-runtime-config.js.map +1 -1
  312. package/packages/core/dist/router/agent-runtime.d.ts +59 -1
  313. package/packages/core/dist/router/route-projection.d.ts +3 -1
  314. package/packages/core/dist/router/route-projection.js +191 -0
  315. package/packages/core/dist/router/route-projection.js.map +1 -1
  316. package/packages/core/dist/router/routing.js +32 -6
  317. package/packages/core/dist/router/routing.js.map +1 -1
  318. package/packages/core/dist/router/runtime-inspection.js +11 -4
  319. package/packages/core/dist/router/runtime-inspection.js.map +1 -1
  320. package/packages/core/dist/router/runtime-validation.js +31 -3
  321. package/packages/core/dist/router/runtime-validation.js.map +1 -1
  322. package/packages/core/dist/run-state/artifacts.js +48 -15
  323. package/packages/core/dist/run-state/artifacts.js.map +1 -1
  324. package/packages/core/dist/run-state/events.js +2 -2
  325. package/packages/core/dist/run-state/events.js.map +1 -1
  326. package/packages/core/dist/run-state/inspect-run.d.ts +3 -1
  327. package/packages/core/dist/run-state/inspect-run.js +15 -49
  328. package/packages/core/dist/run-state/inspect-run.js.map +1 -1
  329. package/packages/core/dist/run-state/invocation-ledger.js +2 -2
  330. package/packages/core/dist/run-state/invocation-ledger.js.map +1 -1
  331. package/packages/core/dist/run-state/model.d.ts +25 -1
  332. package/packages/core/dist/run-state/run-state.js +21 -14
  333. package/packages/core/dist/run-state/run-state.js.map +1 -1
  334. package/packages/core/dist/run-state/task-evidence.d.ts +62 -0
  335. package/packages/core/dist/run-state/task-evidence.js +130 -0
  336. package/packages/core/dist/run-state/task-evidence.js.map +1 -0
  337. package/packages/core/dist/run-state.d.ts +1 -0
  338. package/packages/core/dist/run-state.js +1 -0
  339. package/packages/core/dist/run-state.js.map +1 -1
  340. package/packages/core/dist/runtime-paths.d.ts +10 -0
  341. package/packages/core/dist/runtime-paths.js +44 -14
  342. package/packages/core/dist/runtime-paths.js.map +1 -1
  343. package/packages/core/dist/sdd-docs/context.js +1 -1
  344. package/packages/core/dist/sdd-docs/context.js.map +1 -1
  345. package/packages/core/dist/sdd-docs/document-hashes.d.ts +4 -0
  346. package/packages/core/dist/sdd-docs/document-hashes.js +189 -0
  347. package/packages/core/dist/sdd-docs/document-hashes.js.map +1 -0
  348. package/packages/core/dist/sdd-docs/run-binding.js +12 -3
  349. package/packages/core/dist/sdd-docs/run-binding.js.map +1 -1
  350. package/packages/core/dist/sdd-docs/task-parser.d.ts +20 -0
  351. package/packages/core/dist/sdd-docs/task-parser.js +101 -21
  352. package/packages/core/dist/sdd-docs/task-parser.js.map +1 -1
  353. package/packages/core/dist/status/project-status.d.ts +62 -1
  354. package/packages/core/dist/status/project-status.js +192 -4
  355. package/packages/core/dist/status/project-status.js.map +1 -1
  356. package/packages/core/dist/storage/runtime-store.d.ts +195 -2
  357. package/packages/core/dist/storage/runtime-store.js +499 -2
  358. package/packages/core/dist/storage/runtime-store.js.map +1 -1
  359. package/packages/core/dist/sync-back/apply.js +23 -1
  360. package/packages/core/dist/sync-back/apply.js.map +1 -1
  361. package/packages/core/dist/sync-back/inspect.d.ts +19 -0
  362. package/packages/core/dist/sync-back/inspect.js +114 -12
  363. package/packages/core/dist/sync-back/inspect.js.map +1 -1
  364. package/packages/core/dist/test-support/fixtures.js +21 -0
  365. package/packages/core/dist/test-support/fixtures.js.map +1 -1
  366. package/packages/core/dist/test-support/run-state.js +16 -2
  367. package/packages/core/dist/test-support/run-state.js.map +1 -1
  368. package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
  369. package/packages/core/dist/verification/goal-verify.js +34 -2
  370. package/packages/core/dist/verification/goal-verify.js.map +1 -1
  371. package/packages/core/dist/verification/rendering.js +15 -5
  372. package/packages/core/dist/verification/rendering.js.map +1 -1
  373. package/packages/core/dist/verification/review-gate.d.ts +22 -0
  374. package/packages/core/dist/verification/review-gate.js +53 -0
  375. package/packages/core/dist/verification/review-gate.js.map +1 -0
  376. package/packages/core/dist/verification/single-task-loop.js +102 -9
  377. package/packages/core/dist/verification/single-task-loop.js.map +1 -1
  378. package/packages/core/dist/verification/test-runtime.d.ts +16 -1
  379. package/packages/core/dist/verification/test-runtime.js +355 -69
  380. package/packages/core/dist/verification/test-runtime.js.map +1 -1
  381. package/packages/core/dist/verification/validation-wave.d.ts +58 -0
  382. package/packages/core/dist/verification/validation-wave.js +428 -0
  383. package/packages/core/dist/verification/validation-wave.js.map +1 -0
  384. package/packages/core/dist/verification/verify-contract.d.ts +2 -0
  385. package/packages/core/dist/verification/verify-contract.js +116 -18
  386. package/packages/core/dist/verification/verify-contract.js.map +1 -1
  387. package/packages/core/dist/verification.d.ts +2 -0
  388. package/packages/core/dist/verification.js +2 -0
  389. package/packages/core/dist/verification.js.map +1 -1
  390. package/packages/core/dist/workflow-gate/evidence-packet.d.ts +24 -0
  391. package/packages/core/dist/workflow-gate/evidence-packet.js +182 -0
  392. package/packages/core/dist/workflow-gate/evidence-packet.js.map +1 -0
  393. package/packages/core/dist/workflow-gate/hard-checks.d.ts +4 -0
  394. package/packages/core/dist/workflow-gate/hard-checks.js +130 -0
  395. package/packages/core/dist/workflow-gate/hard-checks.js.map +1 -0
  396. package/packages/core/dist/workflow-gate/policy.d.ts +4 -0
  397. package/packages/core/dist/workflow-gate/policy.js +146 -0
  398. package/packages/core/dist/workflow-gate/policy.js.map +1 -0
  399. package/packages/core/dist/workflow-gate/types.d.ts +89 -0
  400. package/packages/core/dist/workflow-gate/types.js +2 -0
  401. package/packages/core/dist/workflow-gate/types.js.map +1 -0
  402. package/packages/core/dist/workflow-state/affected-file-conflicts.d.ts +1 -0
  403. package/packages/core/dist/workflow-state/affected-file-conflicts.js +16 -1
  404. package/packages/core/dist/workflow-state/affected-file-conflicts.js.map +1 -1
  405. package/packages/core/dist/workflow-state/dependencies.d.ts +8 -4
  406. package/packages/core/dist/workflow-state/dependencies.js +25 -11
  407. package/packages/core/dist/workflow-state/dependencies.js.map +1 -1
  408. package/packages/core/dist/workflow-state/latest-eligible-run.d.ts +38 -0
  409. package/packages/core/dist/workflow-state/latest-eligible-run.js +122 -0
  410. package/packages/core/dist/workflow-state/latest-eligible-run.js.map +1 -0
  411. package/packages/core/dist/workflow-state/resolve.d.ts +27 -0
  412. package/packages/core/dist/workflow-state/resolve.js +166 -37
  413. package/packages/core/dist/workflow-state/resolve.js.map +1 -1
  414. package/packages/core/dist/workflow-state.d.ts +1 -0
  415. package/packages/core/dist/workflow-state.js +1 -0
  416. package/packages/core/dist/workflow-state.js.map +1 -1
  417. package/packages/core/package.json +1 -1
@@ -0,0 +1,122 @@
1
+ export function selectLatestEligibleRun(input) {
2
+ const candidates = input.states
3
+ .filter((state) => state.partition === input.partition && state.taskId === input.taskId)
4
+ .map((state) => latestEligibleCandidate(state, input.model));
5
+ const visible = candidates.filter((candidate) => candidate.runStatus !== 'archived').sort(compareCandidates);
6
+ const eligible = visible.filter((candidate) => candidate.eligibleForDefaultApply);
7
+ return {
8
+ partition: input.partition,
9
+ taskId: input.taskId,
10
+ selected: eligible[0] ?? null,
11
+ candidates: visible,
12
+ rejected: candidates.filter((candidate) => !candidate.eligibleForDefaultApply).sort(compareCandidates)
13
+ };
14
+ }
15
+ export function selectLatestEligibleRunsByTask(input) {
16
+ const taskIds = Array.from(new Set([
17
+ ...input.model.tasks.map((task) => task.id),
18
+ ...input.states
19
+ .filter((state) => state.partition === input.partition && state.taskId)
20
+ .map((state) => state.taskId)
21
+ ]))
22
+ .sort((left, right) => left.localeCompare(right));
23
+ return taskIds.map((taskId) => selectLatestEligibleRun({ ...input, taskId }));
24
+ }
25
+ function latestEligibleCandidate(state, model) {
26
+ const compatibility = classifyDocumentCompatibility(state, model);
27
+ const reasons = candidateRejectionReasons(state, compatibility);
28
+ return {
29
+ partition: state.partition ?? model.branch,
30
+ gitBranch: state.gitBranch,
31
+ taskId: state.taskId ?? state.currentTask ?? '',
32
+ runId: state.runId,
33
+ runStatus: state.status,
34
+ validationStatus: state.validation.status,
35
+ syncBackStatus: state.syncBack.status,
36
+ affectedFiles: state.affectedFiles,
37
+ updatedAt: state.updatedAt,
38
+ compatibility,
39
+ eligibleForDefaultApply: reasons.length === 0,
40
+ reasons
41
+ };
42
+ }
43
+ export function classifyDocumentCompatibility(state, model) {
44
+ const snapshot = state.documentSnapshot;
45
+ const hasSnapshot = Boolean(snapshot.specHash || snapshot.planHash || snapshot.tasksHash || snapshot.specContractHash || snapshot.planContractHash || snapshot.tasksContractHash);
46
+ if (!hasSnapshot) {
47
+ return 'incompatible';
48
+ }
49
+ const specMismatch = snapshot.specContractHash !== null
50
+ ? documentHashMismatch(snapshot.specContractHash, model.documents.specContractHash ?? null)
51
+ : documentHashMismatch(snapshot.specHash, model.documents.specHash ?? null);
52
+ const planMismatch = snapshot.planContractHash !== null
53
+ ? documentHashMismatch(snapshot.planContractHash, model.documents.planContractHash ?? null)
54
+ : documentHashMismatch(snapshot.planHash, model.documents.planHash ?? null);
55
+ const tasksSemanticMismatch = snapshot.tasksContractHash !== null
56
+ ? documentHashMismatch(snapshot.tasksContractHash, model.documents.tasksContractHash ?? null)
57
+ : false;
58
+ const tasksDocMismatch = documentHashMismatch(snapshot.tasksHash, model.documents.tasksHash ?? null);
59
+ if (specMismatch || planMismatch) {
60
+ return 'strict_stale';
61
+ }
62
+ if (model.documents.planStale || model.documents.tasksStale) {
63
+ return 'strict_stale';
64
+ }
65
+ if (tasksSemanticMismatch) {
66
+ return 'strict_stale';
67
+ }
68
+ if (tasksDocMismatch) {
69
+ return 'soft_stale';
70
+ }
71
+ return 'compatible';
72
+ }
73
+ function candidateRejectionReasons(state, compatibility) {
74
+ const reasons = [];
75
+ if (state.status === 'archived') {
76
+ reasons.push('Run is archived.');
77
+ }
78
+ if (state.status === 'failed') {
79
+ reasons.push('Run failed.');
80
+ }
81
+ if (state.status === 'blocked') {
82
+ reasons.push('Run is blocked.');
83
+ }
84
+ if (state.validation.status === 'fail' || state.validation.status === 'blocked') {
85
+ reasons.push(`Run validation status is ${state.validation.status}.`);
86
+ }
87
+ if (compatibility === 'strict_stale') {
88
+ reasons.push('Run document compatibility is strict_stale.');
89
+ }
90
+ if (compatibility === 'incompatible') {
91
+ reasons.push('Run document compatibility is incompatible.');
92
+ }
93
+ return reasons;
94
+ }
95
+ function documentHashMismatch(expected, actual) {
96
+ if (!expected && !actual) {
97
+ return false;
98
+ }
99
+ return expected !== actual;
100
+ }
101
+ function compareCandidates(left, right) {
102
+ const leftRank = compatibilityRank(left.compatibility);
103
+ const rightRank = compatibilityRank(right.compatibility);
104
+ if (leftRank !== rightRank) {
105
+ return leftRank - rightRank;
106
+ }
107
+ const updatedAt = Date.parse(right.updatedAt) - Date.parse(left.updatedAt);
108
+ return updatedAt !== 0 ? updatedAt : right.runId.localeCompare(left.runId);
109
+ }
110
+ function compatibilityRank(compatibility) {
111
+ switch (compatibility) {
112
+ case 'compatible':
113
+ return 0;
114
+ case 'soft_stale':
115
+ return 1;
116
+ case 'strict_stale':
117
+ return 2;
118
+ case 'incompatible':
119
+ return 3;
120
+ }
121
+ }
122
+ //# sourceMappingURL=latest-eligible-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latest-eligible-run.js","sourceRoot":"","sources":["../../src/workflow-state/latest-eligible-run.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { type WorkflowAffectedFileConflict } from './affected-file-conflicts.js'
4
4
  import { type ContextBranchSource, type ContextResolverContract } from '../sdd-docs/context.js';
5
5
  import { type SddTaskGap, type SddTaskModel } from '../sdd-docs/task-parser.js';
6
6
  import { type WorkflowDependencyBlocker } from './dependencies.js';
7
+ import { type DocumentCompatibilityClass, type LatestEligibleRunSelection } from './latest-eligible-run.js';
7
8
  export interface WorkflowTaskCounts {
8
9
  total: number;
9
10
  pending: number;
@@ -24,6 +25,30 @@ export interface WorkflowLatestTaskRun {
24
25
  syncBackStatus: RunState['syncBack']['status'];
25
26
  affectedFiles: string[];
26
27
  updatedAt: string;
28
+ compatibility: DocumentCompatibilityClass;
29
+ eligibleForDefaultApply: boolean;
30
+ reasons: string[];
31
+ }
32
+ export type WorkflowCommandSemantics = 'inspection_navigation' | 'gate_execution';
33
+ export type WorkflowHostProjectionStatus = 'active' | 'future' | 'unsupported';
34
+ export type WorkflowNextStage = 'spec' | 'tasks' | 'do' | 'test' | 'ship';
35
+ export type WorkflowNextIntentKind = 'start_spec' | 'resolve_task_gaps' | 'inspect_dependency' | 'ship_readiness' | 'inspect_task' | 'list_tasks' | 'continue_do' | 'run_task_validation' | 'run_batch_validation' | 'run_wave_validation';
36
+ export interface WorkflowHostCommandProjection {
37
+ host: 'claude_code' | 'codex' | 'opencode';
38
+ status: WorkflowHostProjectionStatus;
39
+ entry: string | null;
40
+ projectionSurfaces: string[];
41
+ permissionProjection: string;
42
+ reason: string;
43
+ }
44
+ export interface WorkflowNextIntent {
45
+ stage: WorkflowNextStage;
46
+ intent: WorkflowNextIntentKind;
47
+ canonicalCommand: string;
48
+ commandSemantics: WorkflowCommandSemantics;
49
+ evidenceRequirement: string;
50
+ blockingReason: string | null;
51
+ hostProjections: WorkflowHostCommandProjection[];
27
52
  }
28
53
  export interface WorkflowStateResolution {
29
54
  contract: typeof WORKFLOW_STATE_RESOLVER_CONTRACT_VERSION;
@@ -38,10 +63,12 @@ export interface WorkflowStateResolution {
38
63
  latestRun: RunSummary | null;
39
64
  latestRunState: RunState | null;
40
65
  latestRunsByTask: WorkflowLatestTaskRun[];
66
+ latestEligibleRunsByTask: LatestEligibleRunSelection[];
41
67
  affectedFileConflicts: WorkflowAffectedFileConflict[];
42
68
  blockingReasons: string[];
43
69
  dependencyBlockers: WorkflowDependencyBlocker[];
44
70
  recommendedNextCommand: string;
71
+ nextIntent: WorkflowNextIntent;
45
72
  }
46
73
  export declare function resolveWorkflowState(projectRoot: string, options?: {
47
74
  branch?: string | null;
@@ -4,19 +4,22 @@ import { affectedFileConflictsForSelectedRun } from './affected-file-conflicts.j
4
4
  import { readAllRunStates, summarizeRunState } from '../run-state/run-state.js';
5
5
  import { resolveSddContext } from '../sdd-docs/context.js';
6
6
  import { parseSddBranch } from '../sdd-docs/task-parser.js';
7
- import { workflowDependencyBlockers } from './dependencies.js';
7
+ import { dependencyBlockingReasonsForTask, workflowDependencyBlockers } from './dependencies.js';
8
+ import { selectLatestEligibleRunsByTask } from './latest-eligible-run.js';
8
9
  export async function resolveWorkflowState(projectRoot, options = {}) {
9
10
  const context = await resolveSddContext(projectRoot, options);
10
11
  const branch = context.partition;
11
12
  const [model, states] = await Promise.all([parseSddBranch(projectRoot, branch), readAllRunStates(projectRoot)]);
12
13
  const visibleGaps = workflowIsActive(model) ? model.gaps : [];
13
- const latestRunsByTask = latestTaskRuns(states, branch);
14
+ const latestEligibleRunsByTask = selectLatestEligibleRunsByTask({ states, model, partition: branch, currentGitBranch: context.currentGitBranch });
15
+ const latestRunsByTask = selectedLatestTaskRuns(latestEligibleRunsByTask);
14
16
  const selectedTaskRun = options.taskId
15
17
  ? latestRunsByTask.find((entry) => entry.taskId === options.taskId) ?? null
16
18
  : latestRunsByTask.slice().sort((left, right) => Date.parse(right.updatedAt) - Date.parse(left.updatedAt))[0] ?? null;
17
19
  const latestRunState = selectedTaskRun ? states.find((state) => state.runId === selectedTaskRun.runId) ?? null : null;
18
20
  const affectedFileConflicts = latestRunState ? affectedFileConflictsForSelectedRun(states, latestRunState) : [];
19
- const dependencyBlockers = workflowDependencyBlockers(model);
21
+ const runtimeByTask = latestRuntimeTaskStates(latestEligibleRunsByTask, states);
22
+ const dependencyBlockers = workflowDependencyBlockers(model, { runtimeByTask });
20
23
  const blockingReasons = blockingWorkflowReasons(visibleGaps, affectedFileConflicts, dependencyBlockers);
21
24
  const resolution = {
22
25
  contract: WORKFLOW_STATE_RESOLVER_CONTRACT_VERSION,
@@ -31,12 +34,20 @@ export async function resolveWorkflowState(projectRoot, options = {}) {
31
34
  latestRun: latestRunState ? summarizeRunState(latestRunState) : null,
32
35
  latestRunState,
33
36
  latestRunsByTask,
37
+ latestEligibleRunsByTask,
34
38
  affectedFileConflicts,
35
39
  dependencyBlockers,
36
40
  blockingReasons,
37
- recommendedNextCommand: recommendedNextCommand(context, model, latestRunState, visibleGaps, dependencyBlockers)
41
+ nextIntent: recommendedWorkflowNextIntent(context, model, latestRunsByTask, visibleGaps, dependencyBlockers, runtimeByTask),
42
+ recommendedNextCommand: ''
38
43
  };
39
- await recordRuntimeProjection(projectRoot, 'workflow_state', branch, projectWorkflowStateProjection(resolution));
44
+ resolution.recommendedNextCommand = resolution.nextIntent.canonicalCommand;
45
+ try {
46
+ await recordRuntimeProjection(projectRoot, 'workflow_state', branch, projectWorkflowStateProjection(resolution));
47
+ }
48
+ catch {
49
+ // Projection writes are rebuildable and must not block workflow resolution.
50
+ }
40
51
  return resolution;
41
52
  }
42
53
  function workflowIsActive(model) {
@@ -54,29 +65,24 @@ function taskCounts(model, gaps) {
54
65
  gaps: gaps.length
55
66
  };
56
67
  }
57
- function latestTaskRuns(states, partition) {
58
- const latest = new Map();
59
- for (const state of states) {
60
- if (state.status === 'archived' || state.partition !== partition || !state.taskId) {
61
- continue;
62
- }
63
- const entry = {
64
- partition,
65
- gitBranch: state.gitBranch,
66
- taskId: state.taskId,
67
- runId: state.runId,
68
- runStatus: state.status,
69
- validationStatus: state.validation.status,
70
- syncBackStatus: state.syncBack.status,
71
- affectedFiles: state.affectedFiles,
72
- updatedAt: state.updatedAt
73
- };
74
- const existing = latest.get(entry.taskId);
75
- if (!existing || Date.parse(entry.updatedAt) > Date.parse(existing.updatedAt) || (entry.updatedAt === existing.updatedAt && entry.runId.localeCompare(existing.runId) > 0)) {
76
- latest.set(entry.taskId, entry);
77
- }
78
- }
79
- return Array.from(latest.values()).sort((left, right) => left.taskId.localeCompare(right.taskId));
68
+ function selectedLatestTaskRuns(selections) {
69
+ return selections
70
+ .flatMap((selection) => selection.selected ? [selection.selected] : [])
71
+ .map((candidate) => ({
72
+ partition: candidate.partition,
73
+ gitBranch: candidate.gitBranch,
74
+ taskId: candidate.taskId,
75
+ runId: candidate.runId,
76
+ runStatus: candidate.runStatus,
77
+ validationStatus: candidate.validationStatus,
78
+ syncBackStatus: candidate.syncBackStatus,
79
+ affectedFiles: candidate.affectedFiles,
80
+ updatedAt: candidate.updatedAt,
81
+ compatibility: candidate.compatibility,
82
+ eligibleForDefaultApply: candidate.eligibleForDefaultApply,
83
+ reasons: candidate.reasons
84
+ }))
85
+ .sort((left, right) => left.taskId.localeCompare(right.taskId));
80
86
  }
81
87
  function blockingWorkflowReasons(gaps, conflicts, dependencyBlockers) {
82
88
  const reasons = gaps.filter((gap) => gap.severity === 'blocking').map((gap) => `${gap.field}: ${gap.message}`);
@@ -88,22 +94,143 @@ function blockingWorkflowReasons(gaps, conflicts, dependencyBlockers) {
88
94
  }
89
95
  return reasons;
90
96
  }
91
- function recommendedNextCommand(context, model, latestRun, gaps, dependencyBlockers) {
97
+ function recommendedWorkflowNextIntent(context, model, latestRunsByTask, gaps, dependencyBlockers, runtimeByTask) {
92
98
  if (!workflowIsActive(model)) {
93
- return context.branchSource === 'git_branch' ? '/sdd:spec' : `/sdd:spec --branch ${context.rawBranch}`;
99
+ return workflowNextIntent('spec', 'start_spec', `sdd spec --branch ${context.partition}`, 'Start the spec stage before planning or task execution.', null);
100
+ }
101
+ const blockingGap = gaps.find((gap) => gap.severity === 'blocking');
102
+ if (blockingGap) {
103
+ return workflowNextIntent('tasks', 'resolve_task_gaps', `sdd tasks gaps --branch ${context.partition}`, 'Resolve blocking task document gaps before execution evidence can be trusted.', `${blockingGap.field}: ${blockingGap.message}`);
104
+ }
105
+ const strictTask = model.tasks.find((task) => needsTaskValidation(task, runtimeByTask.get(task.id)));
106
+ if (strictTask) {
107
+ return workflowNextIntent('test', 'run_task_validation', `sdd test task ${strictTask.id} --branch ${context.partition}`, 'Validate this strict or task_end task before more implementation proceeds.', null);
108
+ }
109
+ const readyBoundary = readyValidationBoundary(model, runtimeByTask);
110
+ if (readyBoundary?.kind === 'batch') {
111
+ return workflowNextIntent('test', 'run_batch_validation', `sdd test batch ${readyBoundary.id} --branch ${context.partition}`, `Validate accumulated implementation evidence for batch ${readyBoundary.id}.`, null);
112
+ }
113
+ if (readyBoundary?.kind === 'wave') {
114
+ return workflowNextIntent('test', 'run_wave_validation', waveValidationCommand(context.partition, readyBoundary.wave), `Validate accumulated implementation evidence for wave ${readyBoundary.wave ?? 'all'}.`, null);
94
115
  }
95
- if (gaps.some((gap) => gap.severity === 'blocking')) {
96
- return `sdd tasks gaps --branch ${context.partition}`;
116
+ if (latestRunsByTask.some(latestEligibleRunReadyForShip)) {
117
+ return workflowNextIntent('ship', 'ship_readiness', `sdd ship --branch ${context.partition} --dry-run`, 'Run release readiness after validation PASS; create a decision card only if the gate requires human review.', null);
118
+ }
119
+ const nextTask = model.tasks.find((task) => task.status === 'pending' && !runtimeTaskImplemented(runtimeByTask.get(task.id)) && dependencyBlockingReasonsForTask(model, task.id, { runtimeByTask }).length === 0);
120
+ if (nextTask) {
121
+ return workflowNextIntent('do', 'continue_do', `sdd do task ${nextTask.id} --branch ${context.partition}`, 'Continue sequential implementation; validation can wait until the declared task or batch boundary.', null);
97
122
  }
98
123
  const dependencyBlocker = dependencyBlockers[0];
99
124
  if (dependencyBlocker) {
100
- return `sdd tasks inspect ${dependencyBlocker.dependencyId} --branch ${context.partition}`;
101
- }
102
- if (latestRun?.syncBack.status === 'proposed' && latestRun.currentTask) {
103
- return `sdd sync-back inspect --branch ${context.partition} --task ${latestRun.currentTask}`;
125
+ return workflowNextIntent('tasks', 'inspect_dependency', `sdd tasks inspect ${dependencyBlocker.dependencyId} --branch ${context.partition}`, 'Inspect the dependency task before continuing this workflow.', dependencyBlocker.reason);
104
126
  }
105
127
  const pendingTask = model.tasks.find((task) => task.status === 'pending');
106
- return pendingTask ? `sdd tasks inspect ${pendingTask.id} --branch ${context.partition}` : `sdd tasks list --branch ${context.partition}`;
128
+ return pendingTask
129
+ ? workflowNextIntent('tasks', 'inspect_task', `sdd tasks inspect ${pendingTask.id} --branch ${context.partition}`, 'Inspect task boundary, acceptance, validation, and capability needs before do/test.', null)
130
+ : workflowNextIntent('tasks', 'list_tasks', `sdd tasks list --branch ${context.partition}`, 'Inspect task state and decide whether to continue or ship.', null);
131
+ }
132
+ function latestRuntimeTaskStates(selections, states) {
133
+ const stateByRunId = new Map(states.map((state) => [state.runId, state]));
134
+ const result = new Map();
135
+ for (const selection of selections) {
136
+ const selected = selection.selected;
137
+ if (!selected) {
138
+ continue;
139
+ }
140
+ const taskState = stateByRunId.get(selected.runId)?.tasks[selected.taskId];
141
+ if (taskState) {
142
+ result.set(selected.taskId, taskState);
143
+ }
144
+ }
145
+ return result;
146
+ }
147
+ function needsTaskValidation(task, runtime) {
148
+ return Boolean(runtimeTaskImplemented(runtime) && runtime?.verificationStatus !== 'pass' && (task.requiresVerifyBeforeNext || task.validationTiming === 'task_end'));
149
+ }
150
+ function readyValidationBoundary(model, runtimeByTask) {
151
+ const batchGroups = new Map();
152
+ const waveGroups = new Map();
153
+ for (const task of model.tasks) {
154
+ if (task.validationTiming === 'batch_end' && task.validationBatch) {
155
+ batchGroups.set(task.validationBatch, [...(batchGroups.get(task.validationBatch) ?? []), task]);
156
+ }
157
+ if (task.validationTiming === 'wave_end') {
158
+ const key = String(task.wave ?? 'all');
159
+ const group = waveGroups.get(key) ?? { wave: task.wave, tasks: [] };
160
+ group.tasks.push(task);
161
+ waveGroups.set(key, group);
162
+ }
163
+ }
164
+ for (const [id, tasks] of batchGroups) {
165
+ if (validationBoundaryReady(tasks, runtimeByTask)) {
166
+ return { kind: 'batch', id };
167
+ }
168
+ }
169
+ for (const group of waveGroups.values()) {
170
+ if (validationBoundaryReady(group.tasks, runtimeByTask)) {
171
+ return { kind: 'wave', wave: group.wave };
172
+ }
173
+ }
174
+ return null;
175
+ }
176
+ function validationBoundaryReady(tasks, runtimeByTask) {
177
+ return tasks.every((task) => runtimeTaskImplemented(runtimeByTask.get(task.id)))
178
+ && tasks.some((task) => runtimeByTask.get(task.id)?.verificationStatus !== 'pass');
179
+ }
180
+ function runtimeTaskImplemented(runtime) {
181
+ return runtime?.implementationStatus === 'implemented' || runtime?.status === 'implemented_pending_validation' || runtime?.status === 'implemented_verified';
182
+ }
183
+ function latestEligibleRunReadyForShip(run) {
184
+ return run.runStatus === 'completed' && run.validationStatus === 'pass';
185
+ }
186
+ function waveValidationCommand(branch, wave) {
187
+ return wave === null ? `sdd test wave --branch ${branch}` : `sdd test wave --branch ${branch} --wave ${wave}`;
188
+ }
189
+ function workflowNextIntent(stage, intent, canonicalCommand, evidenceRequirement, blockingReason) {
190
+ return {
191
+ stage,
192
+ intent,
193
+ canonicalCommand,
194
+ commandSemantics: stage === 'do' || stage === 'test' || stage === 'ship' ? 'gate_execution' : 'inspection_navigation',
195
+ evidenceRequirement,
196
+ blockingReason,
197
+ hostProjections: hostCommandProjections(canonicalCommand)
198
+ };
199
+ }
200
+ function hostCommandProjections(canonicalCommand) {
201
+ return [
202
+ {
203
+ host: 'claude_code',
204
+ status: 'active',
205
+ entry: claudeCodeSlashEntry(canonicalCommand),
206
+ projectionSurfaces: ['slash command', 'skill', 'settings/hooks/statusline metadata'],
207
+ permissionProjection: 'Claude Code permission mode/tool prompts remain host enforcement, not SDD lifecycle truth.',
208
+ reason: 'Claude Code supports slash/skill/statusline projections; the canonical CLI command remains the portable source of workflow intent.'
209
+ },
210
+ {
211
+ host: 'codex',
212
+ status: 'future',
213
+ entry: null,
214
+ projectionSurfaces: ['config.toml profile', 'AGENTS.md instruction surface', 'approval_policy', 'sandbox_mode'],
215
+ permissionProjection: 'Codex approval and sandbox controls can project execution policy; custom command/skill projection is not marked active without stronger evidence.',
216
+ reason: 'Codex exposes approval, sandbox, AGENTS.md, and built-in slash surfaces, but project custom workflow command semantics stay future until validated.'
217
+ },
218
+ {
219
+ host: 'opencode',
220
+ status: 'active',
221
+ entry: opencodeCommandEntry(canonicalCommand),
222
+ projectionSurfaces: ['opencode.json/jsonc', '.opencode/commands', '.opencode/agents', '.opencode/skills', 'permissions'],
223
+ permissionProjection: 'OpenCode allow/ask/deny permissions can project SDD tool policy; SDD artifacts remain authoritative evidence.',
224
+ reason: 'OpenCode documents project commands, agents, skills, and permissions suitable for host-specific projection.'
225
+ }
226
+ ];
227
+ }
228
+ function claudeCodeSlashEntry(canonicalCommand) {
229
+ const [command, ...rest] = canonicalCommand.replace(/^sdd\s+/, '').split(' ');
230
+ return `/sdd:${command}${rest.length > 0 ? ` ${rest.join(' ')}` : ''}`;
231
+ }
232
+ function opencodeCommandEntry(canonicalCommand) {
233
+ return `/sdd ${canonicalCommand.replace(/^sdd\s+/, '')}`;
107
234
  }
108
235
  function projectWorkflowStateProjection(resolution) {
109
236
  return {
@@ -115,9 +242,11 @@ function projectWorkflowStateProjection(resolution) {
115
242
  taskCounts: resolution.taskCounts,
116
243
  latestRun: resolution.latestRun,
117
244
  latestRunsByTask: resolution.latestRunsByTask,
245
+ latestEligibleRunsByTask: resolution.latestEligibleRunsByTask,
118
246
  affectedFileConflicts: resolution.affectedFileConflicts,
119
247
  dependencyBlockers: resolution.dependencyBlockers,
120
248
  blockingReasons: resolution.blockingReasons,
249
+ nextIntent: resolution.nextIntent,
121
250
  recommendedNextCommand: resolution.recommendedNextCommand
122
251
  };
123
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/workflow-state/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/workflow-state/resolve.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export * from './workflow-state/resolve.js';
2
+ export * from './workflow-state/dependencies.js';
@@ -1,2 +1,3 @@
1
1
  export * from './workflow-state/resolve.js';
2
+ export * from './workflow-state/dependencies.js';
2
3
  //# sourceMappingURL=workflow-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdd-agent-platform/core",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "engines": {