@revisium/orchestrator 0.1.0-alpha.4 → 0.1.0-alpha.6

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 (465) hide show
  1. package/README.md +149 -1
  2. package/control-plane/bootstrap.config.json +1 -0
  3. package/control-plane/default-playbook/catalog/pipelines.json +289 -52
  4. package/control-plane/default-playbook/catalog/roles.json +9 -0
  5. package/control-plane/default-playbook/prompts/analyst.md +3 -1
  6. package/control-plane/default-playbook/prompts/reviewer.md +2 -2
  7. package/control-plane/default-playbook/prompts/triager.md +51 -0
  8. package/control-plane/default-playbook/prompts/watcher.md +2 -2
  9. package/dist/api/graphql-api/filters/agent-observability-exception.filter.js +24 -0
  10. package/dist/api/graphql-api/filters/agent-observability-exception.filter.js.map +1 -0
  11. package/dist/api/graphql-api/filters/graphql-validation-exception.filter.js +36 -0
  12. package/dist/api/graphql-api/filters/graphql-validation-exception.filter.js.map +1 -0
  13. package/dist/api/graphql-api/graphql-api.module.js +77 -0
  14. package/dist/api/graphql-api/graphql-api.module.js.map +1 -0
  15. package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-bridge.service.js +296 -0
  16. package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-bridge.service.js.map +1 -0
  17. package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-mappers.js +64 -0
  18. package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-mappers.js.map +1 -0
  19. package/dist/api/graphql-api/graphql-ws/constants.js +11 -0
  20. package/dist/api/graphql-api/graphql-ws/constants.js.map +1 -0
  21. package/dist/api/graphql-api/graphql-ws/pubsub.module.js +32 -0
  22. package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -0
  23. package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +101 -0
  24. package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -0
  25. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +115 -0
  26. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -0
  27. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +85 -0
  28. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -0
  29. package/dist/api/graphql-api/graphql-ws/ws.js +22 -0
  30. package/dist/api/graphql-api/graphql-ws/ws.js.map +1 -0
  31. package/dist/api/graphql-api/inbox/inbox-subscription.resolver.js +56 -0
  32. package/dist/api/graphql-api/inbox/inbox-subscription.resolver.js.map +1 -0
  33. package/dist/api/graphql-api/inbox/inbox.resolver.js +125 -0
  34. package/dist/api/graphql-api/inbox/inbox.resolver.js.map +1 -0
  35. package/dist/api/graphql-api/inbox/inputs/answer-question.input.js +33 -0
  36. package/dist/api/graphql-api/inbox/inputs/answer-question.input.js.map +1 -0
  37. package/dist/api/graphql-api/inbox/inputs/gate-decision.input.js +27 -0
  38. package/dist/api/graphql-api/inbox/inputs/gate-decision.input.js.map +1 -0
  39. package/dist/api/graphql-api/inbox/inputs/list-inbox.input.js +28 -0
  40. package/dist/api/graphql-api/inbox/inputs/list-inbox.input.js.map +1 -0
  41. package/dist/api/graphql-api/inbox/inputs/resolve-inbox-item.input.js +38 -0
  42. package/dist/api/graphql-api/inbox/inputs/resolve-inbox-item.input.js.map +1 -0
  43. package/dist/api/graphql-api/inbox/model/gate-risk.model.js +53 -0
  44. package/dist/api/graphql-api/inbox/model/gate-risk.model.js.map +1 -0
  45. package/dist/api/graphql-api/inbox/model/inbox-connection.model.js +16 -0
  46. package/dist/api/graphql-api/inbox/model/inbox-connection.model.js.map +1 -0
  47. package/dist/api/graphql-api/inbox/model/inbox-item.model.js +88 -0
  48. package/dist/api/graphql-api/inbox/model/inbox-item.model.js.map +1 -0
  49. package/dist/api/graphql-api/inbox/model/inbox-resolution.model.js +48 -0
  50. package/dist/api/graphql-api/inbox/model/inbox-resolution.model.js.map +1 -0
  51. package/dist/api/graphql-api/method/inputs/list-method.input.js +15 -0
  52. package/dist/api/graphql-api/method/inputs/list-method.input.js.map +1 -0
  53. package/dist/api/graphql-api/method/method.resolver.js +90 -0
  54. package/dist/api/graphql-api/method/method.resolver.js.map +1 -0
  55. package/dist/api/graphql-api/method/model/alternative-role-group.model.js +32 -0
  56. package/dist/api/graphql-api/method/model/alternative-role-group.model.js.map +1 -0
  57. package/dist/api/graphql-api/method/model/pipeline-connection.model.js +16 -0
  58. package/dist/api/graphql-api/method/model/pipeline-connection.model.js.map +1 -0
  59. package/dist/api/graphql-api/method/model/pipeline.model.js +69 -0
  60. package/dist/api/graphql-api/method/model/pipeline.model.js.map +1 -0
  61. package/dist/api/graphql-api/method/model/playbook-connection.model.js +16 -0
  62. package/dist/api/graphql-api/method/model/playbook-connection.model.js.map +1 -0
  63. package/dist/api/graphql-api/method/model/playbook.model.js +47 -0
  64. package/dist/api/graphql-api/method/model/playbook.model.js.map +1 -0
  65. package/dist/api/graphql-api/method/model/role-connection.model.js +16 -0
  66. package/dist/api/graphql-api/method/model/role-connection.model.js.map +1 -0
  67. package/dist/api/graphql-api/method/model/role.model.js +98 -0
  68. package/dist/api/graphql-api/method/model/role.model.js.map +1 -0
  69. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +52 -0
  70. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -0
  71. package/dist/api/graphql-api/pr/model/pr-readiness.model.js +403 -0
  72. package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -0
  73. package/dist/api/graphql-api/pr/pr.resolver.js +76 -0
  74. package/dist/api/graphql-api/pr/pr.resolver.js.map +1 -0
  75. package/dist/api/graphql-api/registerGraphqlEnums.js +9 -0
  76. package/dist/api/graphql-api/registerGraphqlEnums.js.map +1 -0
  77. package/dist/api/graphql-api/runs/inputs/create-run.input.js +63 -0
  78. package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -0
  79. package/dist/api/graphql-api/runs/inputs/get-agent-log.input.js +48 -0
  80. package/dist/api/graphql-api/runs/inputs/get-agent-log.input.js.map +1 -0
  81. package/dist/api/graphql-api/runs/inputs/get-run-attempts.input.js +32 -0
  82. package/dist/api/graphql-api/runs/inputs/get-run-attempts.input.js.map +1 -0
  83. package/dist/api/graphql-api/runs/inputs/get-run-events.input.js +28 -0
  84. package/dist/api/graphql-api/runs/inputs/get-run-events.input.js.map +1 -0
  85. package/dist/api/graphql-api/runs/inputs/list-runs.input.js +23 -0
  86. package/dist/api/graphql-api/runs/inputs/list-runs.input.js.map +1 -0
  87. package/dist/api/graphql-api/runs/inputs/simulate-route.input.js +43 -0
  88. package/dist/api/graphql-api/runs/inputs/simulate-route.input.js.map +1 -0
  89. package/dist/api/graphql-api/runs/model/agent-activity.model.js +367 -0
  90. package/dist/api/graphql-api/runs/model/agent-activity.model.js.map +1 -0
  91. package/dist/api/graphql-api/runs/model/create-run-result.model.js +53 -0
  92. package/dist/api/graphql-api/runs/model/create-run-result.model.js.map +1 -0
  93. package/dist/api/graphql-api/runs/model/run-attempt.model.js +114 -0
  94. package/dist/api/graphql-api/runs/model/run-attempt.model.js.map +1 -0
  95. package/dist/api/graphql-api/runs/model/run-connection.model.js +16 -0
  96. package/dist/api/graphql-api/runs/model/run-connection.model.js.map +1 -0
  97. package/dist/api/graphql-api/runs/model/run-cost.model.js +67 -0
  98. package/dist/api/graphql-api/runs/model/run-cost.model.js.map +1 -0
  99. package/dist/api/graphql-api/runs/model/run-digest.model.js +41 -0
  100. package/dist/api/graphql-api/runs/model/run-digest.model.js.map +1 -0
  101. package/dist/api/graphql-api/runs/model/run-event-connection.model.js +16 -0
  102. package/dist/api/graphql-api/runs/model/run-event-connection.model.js.map +1 -0
  103. package/dist/api/graphql-api/runs/model/run-event.model.js +58 -0
  104. package/dist/api/graphql-api/runs/model/run-event.model.js.map +1 -0
  105. package/dist/api/graphql-api/runs/model/run-progress.model.js +33 -0
  106. package/dist/api/graphql-api/runs/model/run-progress.model.js.map +1 -0
  107. package/dist/api/graphql-api/runs/model/run-workflow.model.js +287 -0
  108. package/dist/api/graphql-api/runs/model/run-workflow.model.js.map +1 -0
  109. package/dist/api/graphql-api/runs/model/run.model.js +57 -0
  110. package/dist/api/graphql-api/runs/model/run.model.js.map +1 -0
  111. package/dist/api/graphql-api/runs/model/usage.model.js +32 -0
  112. package/dist/api/graphql-api/runs/model/usage.model.js.map +1 -0
  113. package/dist/api/graphql-api/runs/run-digest.resolver.js +40 -0
  114. package/dist/api/graphql-api/runs/run-digest.resolver.js.map +1 -0
  115. package/dist/api/graphql-api/runs/run-events.resolver.js +45 -0
  116. package/dist/api/graphql-api/runs/run-events.resolver.js.map +1 -0
  117. package/dist/api/graphql-api/runs/run-progress.resolver.js +53 -0
  118. package/dist/api/graphql-api/runs/run-progress.resolver.js.map +1 -0
  119. package/dist/api/graphql-api/runs/runs-subscription.resolver.js +124 -0
  120. package/dist/api/graphql-api/runs/runs-subscription.resolver.js.map +1 -0
  121. package/dist/api/graphql-api/runs/runs.resolver.js +165 -0
  122. package/dist/api/graphql-api/runs/runs.resolver.js.map +1 -0
  123. package/dist/api/graphql-api/share/graphql-param-types.js +6 -0
  124. package/dist/api/graphql-api/share/graphql-param-types.js.map +1 -0
  125. package/dist/api/graphql-api/share/inputs/connection.input.js +27 -0
  126. package/dist/api/graphql-api/share/inputs/connection.input.js.map +1 -0
  127. package/dist/api/graphql-api/share/inputs/run-subscription.input.js +22 -0
  128. package/dist/api/graphql-api/share/inputs/run-subscription.input.js.map +1 -0
  129. package/dist/api/graphql-api/share/model/paginated.model.js +75 -0
  130. package/dist/api/graphql-api/share/model/paginated.model.js.map +1 -0
  131. package/dist/api/graphql-api/system/model/daemon-status.model.js +47 -0
  132. package/dist/api/graphql-api/system/model/daemon-status.model.js.map +1 -0
  133. package/dist/api/graphql-api/system/model/doctor-result.model.js +33 -0
  134. package/dist/api/graphql-api/system/model/doctor-result.model.js.map +1 -0
  135. package/dist/api/graphql-api/system/model/project.model.js +37 -0
  136. package/dist/api/graphql-api/system/model/project.model.js.map +1 -0
  137. package/dist/api/graphql-api/system/model/repository-context.model.js +70 -0
  138. package/dist/api/graphql-api/system/model/repository-context.model.js.map +1 -0
  139. package/dist/api/graphql-api/system/model/repository-validation.model.js +62 -0
  140. package/dist/api/graphql-api/system/model/repository-validation.model.js.map +1 -0
  141. package/dist/api/graphql-api/system/model/system-status.model.js +29 -0
  142. package/dist/api/graphql-api/system/model/system-status.model.js.map +1 -0
  143. package/dist/api/graphql-api/system/system.resolver.js +83 -0
  144. package/dist/api/graphql-api/system/system.resolver.js.map +1 -0
  145. package/dist/cli/commands/doctor-report.js +39 -0
  146. package/dist/cli/commands/doctor-report.js.map +1 -0
  147. package/dist/cli/commands/lifecycle.js +237 -0
  148. package/dist/cli/commands/lifecycle.js.map +1 -0
  149. package/dist/cli/commands/mcp.js +46 -8
  150. package/dist/cli/commands/mcp.js.map +1 -1
  151. package/dist/cli/commands/revisium-helpers.js +2 -2
  152. package/dist/cli/index.js +5 -29
  153. package/dist/cli/index.js.map +1 -1
  154. package/dist/cli/program.js +7 -21
  155. package/dist/cli/program.js.map +1 -1
  156. package/dist/config.js +57 -5
  157. package/dist/config.js.map +1 -1
  158. package/dist/control-plane/bootstrap.js +93 -0
  159. package/dist/control-plane/bootstrap.js.map +1 -0
  160. package/dist/control-plane/change-notifications.js +35 -0
  161. package/dist/control-plane/change-notifications.js.map +1 -0
  162. package/dist/control-plane/data-access.js +10 -3
  163. package/dist/control-plane/data-access.js.map +1 -1
  164. package/dist/control-plane/inbox.js +5 -31
  165. package/dist/control-plane/inbox.js.map +1 -1
  166. package/dist/control-plane/index.js +1 -1
  167. package/dist/control-plane/index.js.map +1 -1
  168. package/dist/control-plane/resolve-cwd.js +76 -8
  169. package/dist/control-plane/resolve-cwd.js.map +1 -1
  170. package/dist/control-plane/schema-migration.js +7 -11
  171. package/dist/control-plane/schema-migration.js.map +1 -1
  172. package/dist/control-plane/seed-default-playbook.js +23 -0
  173. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  174. package/dist/control-plane/steps.js +15 -349
  175. package/dist/control-plane/steps.js.map +1 -1
  176. package/dist/e2e/kit/agents.js +43 -8
  177. package/dist/e2e/kit/agents.js.map +1 -1
  178. package/dist/e2e/kit/assertions.js +57 -14
  179. package/dist/e2e/kit/assertions.js.map +1 -1
  180. package/dist/e2e/kit/drive.js +0 -4
  181. package/dist/e2e/kit/drive.js.map +1 -1
  182. package/dist/e2e/kit/fake-integrator.js +16 -1
  183. package/dist/e2e/kit/fake-integrator.js.map +1 -1
  184. package/dist/e2e/kit/gh-emulator.js +173 -10
  185. package/dist/e2e/kit/gh-emulator.js.map +1 -1
  186. package/dist/e2e/kit/git-target-repo.js +35 -3
  187. package/dist/e2e/kit/git-target-repo.js.map +1 -1
  188. package/dist/e2e/kit/harness.js +16 -3
  189. package/dist/e2e/kit/harness.js.map +1 -1
  190. package/dist/e2e/kit/scenarios.js +1 -1
  191. package/dist/e2e/recovery-dd-crash-child.js +3 -2
  192. package/dist/e2e/recovery-dd-crash-child.js.map +1 -1
  193. package/dist/engine/dbos.module.js +2 -1
  194. package/dist/engine/dbos.module.js.map +1 -1
  195. package/dist/engine/dbos.service.js +89 -18
  196. package/dist/engine/dbos.service.js.map +1 -1
  197. package/dist/engine/ensure-postgres.js +11 -9
  198. package/dist/engine/ensure-postgres.js.map +1 -1
  199. package/dist/features/inbox/commands/handlers/inbox-command.handlers.js +80 -0
  200. package/dist/features/inbox/commands/handlers/inbox-command.handlers.js.map +1 -0
  201. package/dist/features/inbox/commands/impl/answer-question.command.js +7 -0
  202. package/dist/features/inbox/commands/impl/answer-question.command.js.map +1 -0
  203. package/dist/features/inbox/commands/impl/approve-gate.command.js +7 -0
  204. package/dist/features/inbox/commands/impl/approve-gate.command.js.map +1 -0
  205. package/dist/features/inbox/commands/impl/reject-gate.command.js +7 -0
  206. package/dist/features/inbox/commands/impl/reject-gate.command.js.map +1 -0
  207. package/dist/features/inbox/commands/impl/resolve-inbox-item.command.js +7 -0
  208. package/dist/features/inbox/commands/impl/resolve-inbox-item.command.js.map +1 -0
  209. package/dist/features/inbox/commands/index.js +8 -0
  210. package/dist/features/inbox/commands/index.js.map +1 -0
  211. package/dist/features/inbox/inbox-api.module.js +23 -0
  212. package/dist/features/inbox/inbox-api.module.js.map +1 -0
  213. package/dist/features/inbox/inbox-api.service.js +63 -0
  214. package/dist/features/inbox/inbox-api.service.js.map +1 -0
  215. package/dist/features/inbox/queries/handlers/inbox-query.handlers.js +111 -0
  216. package/dist/features/inbox/queries/handlers/inbox-query.handlers.js.map +1 -0
  217. package/dist/features/inbox/queries/impl/get-inbox-item.query.js +7 -0
  218. package/dist/features/inbox/queries/impl/get-inbox-item.query.js.map +1 -0
  219. package/dist/features/inbox/queries/impl/get-pending-decisions.query.js +7 -0
  220. package/dist/features/inbox/queries/impl/get-pending-decisions.query.js.map +1 -0
  221. package/dist/features/inbox/queries/impl/list-inbox.query.js +7 -0
  222. package/dist/features/inbox/queries/impl/list-inbox.query.js.map +1 -0
  223. package/dist/features/inbox/queries/impl/summarize-gate-risk.query.js +7 -0
  224. package/dist/features/inbox/queries/impl/summarize-gate-risk.query.js.map +1 -0
  225. package/dist/features/inbox/queries/index.js +8 -0
  226. package/dist/features/inbox/queries/index.js.map +1 -0
  227. package/dist/features/method/commands/index.js +2 -0
  228. package/dist/features/method/commands/index.js.map +1 -0
  229. package/dist/features/method/method-api.module.js +23 -0
  230. package/dist/features/method/method-api.module.js.map +1 -0
  231. package/dist/features/method/method-api.service.js +47 -0
  232. package/dist/features/method/method-api.service.js.map +1 -0
  233. package/dist/features/method/queries/handlers/method-query.handlers.js +115 -0
  234. package/dist/features/method/queries/handlers/method-query.handlers.js.map +1 -0
  235. package/dist/features/method/queries/impl/get-pipeline.query.js +7 -0
  236. package/dist/features/method/queries/impl/get-pipeline.query.js.map +1 -0
  237. package/dist/features/method/queries/impl/get-role.query.js +7 -0
  238. package/dist/features/method/queries/impl/get-role.query.js.map +1 -0
  239. package/dist/features/method/queries/impl/list-pipelines.query.js +7 -0
  240. package/dist/features/method/queries/impl/list-pipelines.query.js.map +1 -0
  241. package/dist/features/method/queries/impl/list-playbooks.query.js +7 -0
  242. package/dist/features/method/queries/impl/list-playbooks.query.js.map +1 -0
  243. package/dist/features/method/queries/impl/list-roles.query.js +7 -0
  244. package/dist/features/method/queries/impl/list-roles.query.js.map +1 -0
  245. package/dist/features/method/queries/index.js +9 -0
  246. package/dist/features/method/queries/index.js.map +1 -0
  247. package/dist/features/pr/commands/index.js +2 -0
  248. package/dist/features/pr/commands/index.js.map +1 -0
  249. package/dist/features/pr/pr-api.module.js +23 -0
  250. package/dist/features/pr/pr-api.module.js.map +1 -0
  251. package/dist/features/pr/pr-api.service.js +35 -0
  252. package/dist/features/pr/pr-api.service.js.map +1 -0
  253. package/dist/features/pr/queries/handlers/pr-query.handlers.js +48 -0
  254. package/dist/features/pr/queries/handlers/pr-query.handlers.js.map +1 -0
  255. package/dist/features/pr/queries/impl/get-pr-readiness.query.js +7 -0
  256. package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -0
  257. package/dist/features/pr/queries/impl/list-pr-feedback.query.js +7 -0
  258. package/dist/features/pr/queries/impl/list-pr-feedback.query.js.map +1 -0
  259. package/dist/features/pr/queries/index.js +3 -0
  260. package/dist/features/pr/queries/index.js.map +1 -0
  261. package/dist/features/runs/commands/handlers/runs-command.handlers.js +32 -0
  262. package/dist/features/runs/commands/handlers/runs-command.handlers.js.map +1 -0
  263. package/dist/features/runs/commands/impl/create-run.command.js +7 -0
  264. package/dist/features/runs/commands/impl/create-run.command.js.map +1 -0
  265. package/dist/features/runs/commands/index.js +3 -0
  266. package/dist/features/runs/commands/index.js.map +1 -0
  267. package/dist/features/runs/queries/handlers/runs-query.handlers.js +359 -0
  268. package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -0
  269. package/dist/features/runs/queries/impl/get-agent-activity.query.js +7 -0
  270. package/dist/features/runs/queries/impl/get-agent-activity.query.js.map +1 -0
  271. package/dist/features/runs/queries/impl/get-agent-attempts.query.js +7 -0
  272. package/dist/features/runs/queries/impl/get-agent-attempts.query.js.map +1 -0
  273. package/dist/features/runs/queries/impl/get-agent-log.query.js +7 -0
  274. package/dist/features/runs/queries/impl/get-agent-log.query.js.map +1 -0
  275. package/dist/features/runs/queries/impl/get-run-attempts.query.js +7 -0
  276. package/dist/features/runs/queries/impl/get-run-attempts.query.js.map +1 -0
  277. package/dist/features/runs/queries/impl/get-run-digest.query.js +7 -0
  278. package/dist/features/runs/queries/impl/get-run-digest.query.js.map +1 -0
  279. package/dist/features/runs/queries/impl/get-run-events.query.js +7 -0
  280. package/dist/features/runs/queries/impl/get-run-events.query.js.map +1 -0
  281. package/dist/features/runs/queries/impl/get-run-progress.query.js +7 -0
  282. package/dist/features/runs/queries/impl/get-run-progress.query.js.map +1 -0
  283. package/dist/features/runs/queries/impl/get-run-workflow.query.js +7 -0
  284. package/dist/features/runs/queries/impl/get-run-workflow.query.js.map +1 -0
  285. package/dist/features/runs/queries/impl/get-run.query.js +7 -0
  286. package/dist/features/runs/queries/impl/get-run.query.js.map +1 -0
  287. package/dist/features/runs/queries/impl/list-runs.query.js +7 -0
  288. package/dist/features/runs/queries/impl/list-runs.query.js.map +1 -0
  289. package/dist/features/runs/queries/impl/simulate-route.query.js +7 -0
  290. package/dist/features/runs/queries/impl/simulate-route.query.js.map +1 -0
  291. package/dist/features/runs/queries/index.js +15 -0
  292. package/dist/features/runs/queries/index.js.map +1 -0
  293. package/dist/features/runs/runs-api.module.js +23 -0
  294. package/dist/features/runs/runs-api.module.js.map +1 -0
  295. package/dist/features/runs/runs-api.service.js +79 -0
  296. package/dist/features/runs/runs-api.service.js.map +1 -0
  297. package/dist/features/shared/connection.js +39 -0
  298. package/dist/features/shared/connection.js.map +1 -0
  299. package/dist/features/system/commands/index.js +2 -0
  300. package/dist/features/system/commands/index.js.map +1 -0
  301. package/dist/features/system/queries/handlers/system-query.handlers.js +96 -0
  302. package/dist/features/system/queries/handlers/system-query.handlers.js.map +1 -0
  303. package/dist/features/system/queries/impl/doctor.query.js +4 -0
  304. package/dist/features/system/queries/impl/doctor.query.js.map +1 -0
  305. package/dist/features/system/queries/impl/get-project.query.js +4 -0
  306. package/dist/features/system/queries/impl/get-project.query.js.map +1 -0
  307. package/dist/features/system/queries/impl/get-repository-context.query.js +7 -0
  308. package/dist/features/system/queries/impl/get-repository-context.query.js.map +1 -0
  309. package/dist/features/system/queries/impl/get-status.query.js +4 -0
  310. package/dist/features/system/queries/impl/get-status.query.js.map +1 -0
  311. package/dist/features/system/queries/impl/validate-repository.query.js +7 -0
  312. package/dist/features/system/queries/impl/validate-repository.query.js.map +1 -0
  313. package/dist/features/system/queries/index.js +9 -0
  314. package/dist/features/system/queries/index.js.map +1 -0
  315. package/dist/features/system/system-api.module.js +23 -0
  316. package/dist/features/system/system-api.module.js.map +1 -0
  317. package/dist/features/system/system-api.service.js +47 -0
  318. package/dist/features/system/system-api.service.js.map +1 -0
  319. package/dist/host/daemon.js +68 -0
  320. package/dist/host/daemon.js.map +1 -0
  321. package/dist/host/ensure-host.js +109 -0
  322. package/dist/host/ensure-host.js.map +1 -0
  323. package/dist/host/host-runtime.js +52 -0
  324. package/dist/host/host-runtime.js.map +1 -0
  325. package/dist/host/host.lifecycle.js +16 -3
  326. package/dist/host/host.lifecycle.js.map +1 -1
  327. package/dist/http/graphql-host.js +56 -0
  328. package/dist/http/graphql-host.js.map +1 -0
  329. package/dist/{mcp/mcp.module.js → http/graphql-host.module.js} +12 -10
  330. package/dist/http/graphql-host.module.js.map +1 -0
  331. package/dist/infrastructure/metrics/graphql/graphql-metrics.js +91 -0
  332. package/dist/infrastructure/metrics/graphql/graphql-metrics.js.map +1 -0
  333. package/dist/mcp/mcp-capabilities.js +6 -1
  334. package/dist/mcp/mcp-capabilities.js.map +1 -1
  335. package/dist/mcp/mcp-facade.service.js +24 -0
  336. package/dist/mcp/mcp-facade.service.js.map +1 -1
  337. package/dist/mcp/mcp-http.service.js +95 -0
  338. package/dist/mcp/mcp-http.service.js.map +1 -0
  339. package/dist/mcp/mcp-tools.js +58 -0
  340. package/dist/mcp/mcp-tools.js.map +1 -1
  341. package/dist/observability/agent-activity-reporter.js +185 -0
  342. package/dist/observability/agent-activity-reporter.js.map +1 -0
  343. package/dist/observability/agent-observability.service.js +1142 -0
  344. package/dist/observability/agent-observability.service.js.map +1 -0
  345. package/dist/observability/index.js +4 -0
  346. package/dist/observability/index.js.map +1 -0
  347. package/dist/observability/types.js +11 -0
  348. package/dist/observability/types.js.map +1 -0
  349. package/dist/pipeline/await-human.js +8 -4
  350. package/dist/pipeline/await-human.js.map +1 -1
  351. package/dist/pipeline/data-driven-task.workflow.js +184 -73
  352. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  353. package/dist/pipeline/data-driven-template.js +3 -3
  354. package/dist/pipeline/pipeline.module.js +1 -1
  355. package/dist/pipeline/pipeline.module.js.map +1 -1
  356. package/dist/pipeline/{develop-task.workflow.js → pipeline.service.js} +97 -26
  357. package/dist/pipeline/pipeline.service.js.map +1 -0
  358. package/dist/pipeline-core/kit/fixtures.js +94 -0
  359. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  360. package/dist/pipeline-core/validate-capability.js +23 -0
  361. package/dist/pipeline-core/validate-capability.js.map +1 -0
  362. package/dist/pipeline-core/validate-conflicts.js +37 -0
  363. package/dist/pipeline-core/validate-conflicts.js.map +1 -0
  364. package/dist/pipeline-core/validate-dataflow.js +180 -0
  365. package/dist/pipeline-core/validate-dataflow.js.map +1 -0
  366. package/dist/pipeline-core/validate-diff.js +158 -0
  367. package/dist/pipeline-core/validate-diff.js.map +1 -0
  368. package/dist/pipeline-core/validate-edges.js +44 -0
  369. package/dist/pipeline-core/validate-edges.js.map +1 -0
  370. package/dist/pipeline-core/validate-graph.js +123 -0
  371. package/dist/pipeline-core/validate-graph.js.map +1 -0
  372. package/dist/pipeline-core/validate-loops.js +226 -0
  373. package/dist/pipeline-core/validate-loops.js.map +1 -0
  374. package/dist/pipeline-core/validate-parallel.js +132 -0
  375. package/dist/pipeline-core/validate-parallel.js.map +1 -0
  376. package/dist/pipeline-core/validate-sink.js +27 -0
  377. package/dist/pipeline-core/validate-sink.js.map +1 -0
  378. package/dist/pipeline-core/validate-topology.js +140 -0
  379. package/dist/pipeline-core/validate-topology.js.map +1 -0
  380. package/dist/pipeline-core/validate-verdict.js +72 -0
  381. package/dist/pipeline-core/validate-verdict.js.map +1 -0
  382. package/dist/pipeline-core/validate.js +34 -1107
  383. package/dist/pipeline-core/validate.js.map +1 -1
  384. package/dist/revisium/run.service.js +31 -8
  385. package/dist/revisium/run.service.js.map +1 -1
  386. package/dist/run/create-run.js +5 -31
  387. package/dist/run/create-run.js.map +1 -1
  388. package/dist/run/inspect-run.js +2 -29
  389. package/dist/run/inspect-run.js.map +1 -1
  390. package/dist/run/terminal-run-status.js +7 -30
  391. package/dist/run/terminal-run-status.js.map +1 -1
  392. package/dist/runners/claude-code.service.js +1 -0
  393. package/dist/runners/claude-code.service.js.map +1 -1
  394. package/dist/runners/codex.service.js +51 -0
  395. package/dist/runners/codex.service.js.map +1 -0
  396. package/dist/runners/integrator-branch-naming.js +24 -0
  397. package/dist/runners/integrator-branch-naming.js.map +1 -0
  398. package/dist/runners/integrator-git.js +84 -0
  399. package/dist/runners/integrator-git.js.map +1 -0
  400. package/dist/runners/integrator-remote.js +34 -0
  401. package/dist/runners/integrator-remote.js.map +1 -0
  402. package/dist/runners/integrator-types.js +9 -0
  403. package/dist/runners/integrator-types.js.map +1 -0
  404. package/dist/runners/integrator.js +250 -134
  405. package/dist/runners/integrator.js.map +1 -1
  406. package/dist/runners/runner.module.js +7 -3
  407. package/dist/runners/runner.module.js.map +1 -1
  408. package/dist/runners/worktree.service.js +63 -0
  409. package/dist/runners/worktree.service.js.map +1 -0
  410. package/dist/smoke/cli.js +47 -0
  411. package/dist/smoke/cli.js.map +1 -0
  412. package/dist/smoke/isolation.js +113 -0
  413. package/dist/smoke/isolation.js.map +1 -0
  414. package/dist/task-control-plane/task-control-plane-api.service.js +317 -4
  415. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  416. package/dist/task-control-plane/task-control-plane.module.js +22 -3
  417. package/dist/task-control-plane/task-control-plane.module.js.map +1 -1
  418. package/dist/worker/artifact-store.js +6 -1
  419. package/dist/worker/artifact-store.js.map +1 -1
  420. package/dist/worker/build-context.js +135 -1
  421. package/dist/worker/build-context.js.map +1 -1
  422. package/dist/worker/claude-code-runner.js +79 -82
  423. package/dist/worker/claude-code-runner.js.map +1 -1
  424. package/dist/worker/codex-runner.js +474 -0
  425. package/dist/worker/codex-runner.js.map +1 -0
  426. package/dist/worker/git-worktree-manager.js +148 -0
  427. package/dist/worker/git-worktree-manager.js.map +1 -0
  428. package/dist/worker/result-envelope.js +75 -63
  429. package/dist/worker/result-envelope.js.map +1 -1
  430. package/dist/worker/runner-common.js +106 -0
  431. package/dist/worker/runner-common.js.map +1 -0
  432. package/dist/worker/runner-dispatch.js +3 -1
  433. package/dist/worker/runner-dispatch.js.map +1 -1
  434. package/dist/worker/runner.js.map +1 -1
  435. package/dist/worker/stub-runner.js +3 -3
  436. package/dist/worker/stub-runner.js.map +1 -1
  437. package/package.json +15 -7
  438. package/dist/app.module.js +0 -28
  439. package/dist/app.module.js.map +0 -1
  440. package/dist/cli/commands/bootstrap.js +0 -100
  441. package/dist/cli/commands/bootstrap.js.map +0 -1
  442. package/dist/cli/commands/dev.js +0 -143
  443. package/dist/cli/commands/dev.js.map +0 -1
  444. package/dist/cli/commands/inbox.js +0 -288
  445. package/dist/cli/commands/inbox.js.map +0 -1
  446. package/dist/cli/commands/playbook.js +0 -74
  447. package/dist/cli/commands/playbook.js.map +0 -1
  448. package/dist/cli/commands/poll-workflow-state.js +0 -144
  449. package/dist/cli/commands/poll-workflow-state.js.map +0 -1
  450. package/dist/cli/commands/revisium-context.js +0 -23
  451. package/dist/cli/commands/revisium-context.js.map +0 -1
  452. package/dist/cli/commands/revisium.js +0 -89
  453. package/dist/cli/commands/revisium.js.map +0 -1
  454. package/dist/cli/commands/run.js +0 -453
  455. package/dist/cli/commands/run.js.map +0 -1
  456. package/dist/cli/live-guard.js +0 -49
  457. package/dist/cli/live-guard.js.map +0 -1
  458. package/dist/cli/needs-host.js +0 -77
  459. package/dist/cli/needs-host.js.map +0 -1
  460. package/dist/mcp/mcp-stdio.service.js +0 -48
  461. package/dist/mcp/mcp-stdio.service.js.map +0 -1
  462. package/dist/mcp/mcp.module.js.map +0 -1
  463. package/dist/pipeline/develop-task.workflow.js.map +0 -1
  464. package/dist/worker/worktree-manager.js +0 -7
  465. package/dist/worker/worktree-manager.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-observability.service.js","sourceRoot":"","sources":["../../src/observability/agent-observability.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './agent-activity-reporter.js';
2
+ export * from './agent-observability.service.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ export const AGENT_ACTIVITY_EVENT_KEY = 'agent-activity';
2
+ export const AGENT_OUTPUT_STREAM_KEY = 'agent-output';
3
+ export class AgentObservabilityError extends Error {
4
+ code;
5
+ constructor(code, message) {
6
+ super(message);
7
+ this.code = code;
8
+ this.name = 'AgentObservabilityError';
9
+ }
10
+ }
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC;AA6HtD,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAE9B;IADlB,YACkB,IAAiC,EACjD,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAA6B;QAIjD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
@@ -26,10 +26,14 @@ import { fnv1a64Hex } from '../control-plane/steps.js';
26
26
  */
27
27
  export function makeAwaitHuman(deps) {
28
28
  const { pushInbox, awaitDecision, appendEvent } = deps;
29
- return async function awaitHumanImpl(runId, topic, title, summary) {
29
+ return async function awaitHumanImpl(runId, topic, gateKey, title, summary) {
30
30
  // 1. FULLY deterministic inbox id (no timestamp) so replay/restart never creates a duplicate row.
31
- // fnv1a64Hex 16 hex; `inbox_` + 16 = 22 chars 64 (mirrors append-event id derivation).
32
- const inboxKey = runId + '|' + topic;
31
+ // Keyed by the per-entry gateKey (`nodeId#ordinal`), NOT just the topic: a generic template can
32
+ // re-enter the same gate node (e.g. a question gate inside the review loop) or declare two gates
33
+ // with the same topic — a `runId|topic` key would collide on the 2nd, ROW_CONFLICT back to the
34
+ // first (resolved) row, leaving the human no fresh item and the workflow parked on recv. The
35
+ // gateKey disambiguates each entry. fnv1a64Hex → 16 hex; `inbox_`+16 = 22 chars ≤ 64.
36
+ const inboxKey = `${runId}|${gateKey}`;
33
37
  const inboxId = `inbox_${fnv1a64Hex(inboxKey)}`;
34
38
  // 2. Draft write: pending approval row. context carries the topic (OQ-2) so resolve can read it back.
35
39
  // pushInbox catches ROW_CONFLICT internally and returns the same id (no-op on replay) — §3.4a.
@@ -47,7 +51,7 @@ export function makeAwaitHuman(deps) {
47
51
  runId,
48
52
  taskId: '',
49
53
  stepId: '',
50
- stepKey: `gate:${topic}`,
54
+ stepKey: `gate:${gateKey}`,
51
55
  type: 'gate_opened',
52
56
  payload: { topic },
53
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"await-human.js","sourceRoot":"","sources":["../../src/pipeline/await-human.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA2BvD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEvD,OAAO,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,KAAuB,EACvB,KAAa,EACb,OAAgB;QAEhB,kGAAkG;QAClG,8FAA8F;QAC9F,MAAM,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;QACrC,MAAM,OAAO,GAAG,SAAS,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEhD,sGAAsG;QACtG,kGAAkG;QAClG,mFAAmF;QACnF,MAAM,SAAS,CACb;YACE,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,KAAK;YACL,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC3B,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC/B,EACD,OAAO,CACR,CAAC;QAEF,8GAA8G;QAC9G,6GAA6G;QAC7G,MAAM,WAAW,CAAC;YAChB,KAAK;YACL,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,QAAQ,KAAK,EAAE;YACxB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;QAEH,sEAAsE;QACtE,iFAAiF;QACjF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAW,KAAK,CAAC,CAAC;QAEjD,wGAAwG;QACxG,wBAAwB;QACxB,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"await-human.js","sourceRoot":"","sources":["../../src/pipeline/await-human.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA2BvD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEvD,OAAO,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,KAAoC,EACpC,OAAe,EACf,KAAa,EACb,OAAgB;QAEhB,kGAAkG;QAClG,mGAAmG;QACnG,oGAAoG;QACpG,kGAAkG;QAClG,gGAAgG;QAChG,yFAAyF;QACzF,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,SAAS,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEhD,sGAAsG;QACtG,kGAAkG;QAClG,mFAAmF;QACnF,MAAM,SAAS,CACb;YACE,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,KAAK;YACL,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC3B,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC/B,EACD,OAAO,CACR,CAAC;QAEF,8GAA8G;QAC9G,6GAA6G;QAC7G,MAAM,WAAW,CAAC;YAChB,KAAK;YACL,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,QAAQ,OAAO,EAAE;YAC1B,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;QAEH,sEAAsE;QACtE,iFAAiF;QACjF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAW,KAAK,CAAC,CAAC;QAEjD,wGAAwG;QACxG,wBAAwB;QACxB,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC"}
@@ -29,6 +29,7 @@
29
29
  */
30
30
  import { step as coreStep, initialState, validateTemplate, InterpretError, } from '../pipeline-core/index.js';
31
31
  import { runnerNeedsLivePreflight, runnerUsesRealIntegrator } from './route-contract.js';
32
+ export const RUN_PROGRESS_EVENT_KEY = 'run-progress';
32
33
  const MAX_STEPS = 1_000; // a VALID template terminates; guards a data/loop authoring mistake at runtime.
33
34
  /**
34
35
  * Reserved engine error codes (matched only by a node's `catch`, §3/§6).
@@ -61,53 +62,24 @@ function nextOrdinal(byNode, nodeId) {
61
62
  function isRecord(value) {
62
63
  return value !== null && typeof value === 'object' && !Array.isArray(value);
63
64
  }
64
- /**
65
- * Extract the DOMAIN verdict from a recorded agent/script result, restricted to the node's declared
66
- * `outcomes`/domain vocabulary. The engine treats domain verdicts as opaque labels (§8): we read the
67
- * agent's free output for a label the template can route on, never inventing engine semantics.
68
- *
69
- * Resolution order: explicit `output.verdict` (string) → a leading-token string output → undefined.
70
- * The value is lowercased to match the spec's domain vocabulary (`approved|blocker|clean|…`).
71
- */
65
+ /** Extract the DOMAIN verdict from the only supported source: top-level AttemptResult.verdict. */
72
66
  function domainVerdictOf(result) {
73
- const output = result.output;
74
- const raw = isRecord(output) ? output.verdict : output;
75
- if (typeof raw !== 'string')
76
- return undefined;
77
- return normalizeDomainLabel(raw);
67
+ if (typeof result.verdict === 'string' && result.verdict.trim().length > 0) {
68
+ return result.verdict.trim().toLowerCase();
69
+ }
70
+ return undefined;
78
71
  }
79
- /**
80
- * Normalize an agent's free-text verdict token to a domain label. The seeded test/agent vocabulary
81
- * uses PASS/BLOCKER/MAJOR/etc.; the data-driven templates use approved/blocker/clean/dirty/… . We map
82
- * the well-known structural tokens to the closest domain label and otherwise pass the lowercased token
83
- * through (so a template that declares its own labels just works). Total + deterministic.
84
- */
85
- function normalizeDomainLabel(raw) {
86
- const token = raw.trim().toUpperCase().replace(/[\s-]+/g, '_');
87
- switch (token) {
88
- case 'PASS':
89
- case 'PASSED':
90
- case 'APPROVE':
91
- case 'APPROVED':
92
- case 'CLEAN':
93
- case 'READY':
94
- case 'VERIFIED':
95
- // A passing structural token maps to the canonical "good" labels; the interpreter only routes on
96
- // labels a guard names, so emitting both-equivalents is unnecessary — return the lowercased token.
97
- return token === 'CLEAN' ? 'clean' : 'approved';
98
- case 'MINOR':
99
- return 'approved'; // MINOR proceeds (parity with the hardcoded isBlocking)
100
- case 'MAJOR':
101
- case 'REQUEST_CHANGES':
102
- case 'CHANGES_REQUESTED':
103
- return 'changes_requested';
104
- case 'BLOCKER':
105
- case 'BLOCK':
106
- case 'DIRTY':
107
- return token === 'DIRTY' ? 'dirty' : 'blocker';
108
- default:
109
- return raw.trim().toLowerCase();
72
+ function resultVerdictProblem(template, node, result) {
73
+ if (node.kind !== 'agent')
74
+ return undefined;
75
+ const verdict = domainVerdictOf(result);
76
+ if (!verdict) {
77
+ return `${REVO_RESULT_INVALID}: node ${node.id} requires top-level result.verdict`;
78
+ }
79
+ if (!template.verdicts.domain.includes(verdict)) {
80
+ return `${REVO_RESULT_INVALID}: node ${node.id} emitted verdict "${verdict}" outside template verdicts.domain [${template.verdicts.domain.join(', ')}]`;
110
81
  }
82
+ return undefined;
111
83
  }
112
84
  /**
113
85
  * Validate a recorded result against a node's `resultSchema` at the ADAPTER boundary (§10). MVP
@@ -127,6 +99,14 @@ function resultSatisfiesSchema(node, result) {
127
99
  return true;
128
100
  return Array.isArray(output);
129
101
  }
102
+ function progressCursor(state, lastResult) {
103
+ return {
104
+ activeNodeIds: [...state.activeNodeIds],
105
+ scopedCounters: { ...state.scopedCounters },
106
+ status: state.status,
107
+ ...(lastResult ? { lastResult } : {}),
108
+ };
109
+ }
130
110
  /**
131
111
  * Map an approve/reject human decision onto a DOMAIN verdict the template's gate `outcomes` can route.
132
112
  * The core never sees approve/reject — it routes on a domain label (§8). Approve → the first declared
@@ -140,9 +120,21 @@ function gateVerdict(decision, outcomes) {
140
120
  // reject: prefer a declared "rework/changes" outcome; else let the default branch route (blocked).
141
121
  return outcomes.length > 1 ? outcomes.at(-1) : undefined;
142
122
  }
143
- /** Stable gate topic from a node's reason (plan-review → 'plan', merge-review → 'merge', else 'plan'). */
123
+ /**
124
+ * Stable gate topic from a node's reason. The topic is the DBOS recv channel AND part of the gate
125
+ * inbox id (`runId|topic`), so DISTINCT gates in one pipeline MUST map to DISTINCT topics — otherwise
126
+ * a second gate's `recv` collides with the first's already-consumed message and the run hangs (plan
127
+ * 0018: the `review-question` gate would otherwise reuse the `plan` topic of the plan gate).
128
+ * merge-review → 'merge'
129
+ * review-question→ 'question'
130
+ * (anything else)→ 'plan' (the plan-review gate)
131
+ */
144
132
  function gateTopicFor(reason) {
145
- return /merge/i.test(reason) ? 'merge' : 'plan';
133
+ if (/merge/i.test(reason))
134
+ return 'merge';
135
+ if (/question/i.test(reason))
136
+ return 'question';
137
+ return 'plan';
146
138
  }
147
139
  /**
148
140
  * makeDataDrivenTask — DBOS-free factory for the dataDrivenTask async function (C1).
@@ -151,7 +143,7 @@ function gateTopicFor(reason) {
151
143
  * production and tests. Returns a plain async function with the workflow signature.
152
144
  */
153
145
  export function makeDataDrivenTask(runStepFn, deps) {
154
- const { appendEvent, appendRunOutput, awaitHuman, completeRun, failRun, blockRun, loadRunTaskContext, integrateFn, runStub, preflightFn } = deps;
146
+ const { appendEvent, appendRunOutput, awaitHuman, completeRun, failRun, blockRun, loadRunTaskContext, integrateFn, runStub, confirmMergeFn, runConfirmStub, pollPrFn, runPollStub, respondThreadsFn, runRespondStub, preflightFn, createWorktreeFn, releaseWorktreeFn } = deps;
155
147
  /** Resolve a node's `consumes` from the workflow-local output accumulator — NOT live Revisium reads
156
148
  * (0016 §6 / consensus M4: a live read on replay can see rows written past the replay point). */
157
149
  function resolveConsumes(node, outputsByNode) {
@@ -234,12 +226,46 @@ export function makeDataDrivenTask(runStepFn, deps) {
234
226
  // engine's gate). A `needsHuman` preflight blocks the run (clean/base invariant unmet) and surfaces
235
227
  // the lesson — the run never enters the graph. This is an engine-level guard (infrastructure), not a
236
228
  // template node: it is cross-cutting and identical for every pinned pipeline (zero role-ids/shapes).
237
- if (route.roleBindings.some((b) => runnerNeedsLivePreflight(b.resolvedRunnerId))) {
229
+ const live = route.roleBindings.some((b) => runnerNeedsLivePreflight(b.resolvedRunnerId));
230
+ if (live) {
231
+ // Preflight runs against the BASE checkout (resolveTaskCwd), BEFORE the worktree exists — its
232
+ // fetch + clean/freshness checks protect the user's base repo. Ordering is load-bearing.
238
233
  const pf = await preflightFn(taskId, base);
239
234
  if ('needsHuman' in pf) {
240
235
  return await blockWithLesson(runId, taskId, 'preflight', pf.lesson, 0);
241
236
  }
242
237
  }
238
+ // Per-run worktree (plan 0017): create AFTER a passing preflight and BEFORE any live effect, so all
239
+ // repo-touching steps (developer/rework + integrator) resolve to the isolated worktree (keyed by
240
+ // runId) — never the shared base checkout. Skipped for non-live runs. The `finally` releases it at a
241
+ // SUCCEEDED terminal (the PR is merged via confirmMerge → branch is in base → worktree disposable) and
242
+ // on a throw (failure); it KEEPS the worktree on a `blocked` terminal (confirmMerge blocks when the PR
243
+ // isn't merged yet — the tree must survive for rework / a manual merge; reclaimed by cleanup_worktree
244
+ // + the host-start sweep). It does NOT run while parked at a gate (awaitHuman suspends the live
245
+ // workflow via `recv`, so runBody never returns there). Create is INSIDE the try so the release also
246
+ // cleans up a create that partially built the worktree before throwing (codex/CodeRabbit).
247
+ let result;
248
+ try {
249
+ if (live) {
250
+ await createWorktreeFn(runId, taskId, title, base);
251
+ }
252
+ result = await runGraph(runId, opts, taskId, title, base);
253
+ return result;
254
+ }
255
+ finally {
256
+ if (live && result?.status !== 'blocked') {
257
+ try {
258
+ await releaseWorktreeFn(runId, taskId);
259
+ }
260
+ catch (releaseErr) {
261
+ console.warn(`[data-driven] worktree release for ${runId} failed (orphan; pruned later): ${String(releaseErr)}`);
262
+ }
263
+ }
264
+ }
265
+ }
266
+ /** The pipeline-core interpretation loop, extracted so the worktree `finally` in runBody wraps it. */
267
+ async function runGraph(runId, opts, taskId, title, base) {
268
+ const { route, template } = opts;
243
269
  // Capability resolution map (GENERIC — no role-ids in the engine): roleRef/scriptRef → route binding.
244
270
  // The route's bindings are authoritative for runner dispatch (and durable on recovery via the DBOS
245
271
  // workflow input). A `role:<id>` handle resolves to the binding whose roleId matches `<id>`. A
@@ -259,6 +285,7 @@ export function makeDataDrivenTask(runStepFn, deps) {
259
285
  let state = initialState(template);
260
286
  let lastResult;
261
287
  let lastVerdict = '';
288
+ let lastFailureReason = '';
262
289
  let stepCount = 0;
263
290
  // Workflow-local dataflow state (0016 §4.1/§6): per-node execution ordinals + produced outputs.
264
291
  // Both are rebuilt deterministically on DBOS replay (the loop re-runs identically); the adapter
@@ -268,8 +295,9 @@ export function makeDataDrivenTask(runStepFn, deps) {
268
295
  for (let i = 0; i < MAX_STEPS; i++) {
269
296
  const { state: nextState, decision } = coreStep(template, state, lastResult);
270
297
  state = nextState;
298
+ await deps.setProgress?.(runId, progressCursor(state, lastResult));
271
299
  if (decision.type === 'complete') {
272
- return await finish(runId, decision.status, lastVerdict, stepCount);
300
+ return await finish(runId, decision.status, lastVerdict, stepCount, lastFailureReason);
273
301
  }
274
302
  const eff = await applyDecision(decision, {
275
303
  runId, template, bindingByRef, executionProfile, taskId, title, base,
@@ -278,6 +306,7 @@ export function makeDataDrivenTask(runStepFn, deps) {
278
306
  lastResult = eff.lastResult;
279
307
  if (eff.lastVerdict !== undefined)
280
308
  lastVerdict = eff.lastVerdict;
309
+ lastFailureReason = eff.failureReason ?? '';
281
310
  stepCount += eff.stepDelta;
282
311
  }
283
312
  throw new InterpretError(`data-driven ${template.pipelineId} did not terminate within ${MAX_STEPS} steps (template loop bug)`);
@@ -288,7 +317,7 @@ export function makeDataDrivenTask(runStepFn, deps) {
288
317
  * (the loop just threads the result; this is the per-kind dispatch).
289
318
  */
290
319
  async function applyDecision(decision, ctx) {
291
- const { runId, template, bindingByRef, executionProfile, taskId, title, base } = ctx;
320
+ const { runId, template, bindingByRef, taskId, title, base } = ctx;
292
321
  switch (decision.type) {
293
322
  case 'invokeRole': {
294
323
  const node = resolveNode(template, decision.nodeId);
@@ -305,9 +334,13 @@ export function makeDataDrivenTask(runStepFn, deps) {
305
334
  });
306
335
  return { lastResult: { outcome: 'failed', errorCode: REVO_INPUT_MISSING }, lastVerdict: 'failed', stepDelta: 1 };
307
336
  }
308
- const result = await invokeRole(runId, decision, node, bindingByRef, executionProfile, resolved.inputs, stepKey);
337
+ const result = await invokeRole(runId, decision, node, ctx, resolved.inputs, stepKey);
309
338
  if (result.failed) {
310
- return { lastResult: { outcome: 'failed', errorCode: result.errorCode }, lastVerdict: 'failed', stepDelta: 1 };
339
+ await appendEvent({
340
+ runId, taskId, stepId: '', stepKey, type: 'step_failed',
341
+ payload: { nodeId: node.id, error: result.errorCode },
342
+ });
343
+ return { lastResult: { outcome: 'failed', errorCode: result.errorCode }, lastVerdict: 'failed', failureReason: result.reason, stepDelta: 1 };
311
344
  }
312
345
  await recordOutput(runId, node, ordinal, result.output, ctx.outputsByNode);
313
346
  const verdict = result.verdict;
@@ -320,7 +353,17 @@ export function makeDataDrivenTask(runStepFn, deps) {
320
353
  case 'invokeScript': {
321
354
  const node = resolveNode(template, decision.nodeId);
322
355
  const ordinal = nextOrdinal(ctx.effectOrdinalByNode, node.id);
323
- const scriptResult = await invokeScript(runId, decision, { taskId, title, base }, bindingByRef, stepKeyFor(node.id, ordinal));
356
+ // A script node may `consumes` upstream data (plan 0018: respondThreads triage). Hydrate it
357
+ // from the workflow-local accumulator (same seam as agents), fail-loud on a missing required input.
358
+ const resolved = resolveConsumes(node, ctx.outputsByNode);
359
+ if ('missing' in resolved) {
360
+ await appendEvent({
361
+ runId, taskId, stepId: '', stepKey: stepKeyFor(node.id, ordinal), type: 'step_failed',
362
+ payload: { nodeId: node.id, error: `${REVO_INPUT_MISSING}: required input ${resolved.missing} was not produced` },
363
+ });
364
+ return { lastResult: { outcome: 'failed', errorCode: REVO_INPUT_MISSING }, lastVerdict: 'failed', stepDelta: 1 };
365
+ }
366
+ const scriptResult = await invokeScript(runId, decision, { taskId, title, base }, bindingByRef, stepKeyFor(node.id, ordinal), resolved.inputs);
324
367
  // A blocked script (needsHuman) routes via revo.ScriptBlocked → a `blocked` terminal; a thrown
325
368
  // script routes via revo.ScriptFailed → a `failed` terminal (§6 catch). The lesson-bearing
326
369
  // pipeline_blocked is emitted inside invokeScript for the block path (parity with the old engine).
@@ -331,11 +374,17 @@ export function makeDataDrivenTask(runStepFn, deps) {
331
374
  return { lastResult: { outcome: 'failed', errorCode: REVO_SCRIPT_FAILED }, lastVerdict: 'failed', stepDelta: 1 };
332
375
  }
333
376
  await recordOutput(runId, node, ordinal, scriptResult.pointer, ctx.outputsByNode);
334
- return { lastResult: { outcome: 'succeeded' }, stepDelta: 1 };
377
+ // A classifying script (pollPr, plan 0018) surfaces a DOMAIN verdict so the next `choice` can
378
+ // route on it (§8). Scripts with a single fixed `next` (integrator/confirmMerge) carry none.
379
+ const sv = scriptResult.verdict;
380
+ return { lastResult: { outcome: 'succeeded', ...(sv ? { verdict: sv } : {}) }, ...(sv ? { lastVerdict: sv } : {}), stepDelta: 1 };
335
381
  }
336
382
  case 'awaitGate': {
337
383
  const topic = gateTopicFor(decision.reason);
338
- const human = await awaitHuman(runId, topic, `${decision.reason} approval`, {
384
+ // Per-entry gate key (nodeId#ordinal) so a re-entered gate (e.g. a question gate looped in the
385
+ // review phase) gets a DISTINCT inbox row instead of colliding on `runId|topic` (§3.2 audit).
386
+ const ordinal = nextOrdinal(ctx.effectOrdinalByNode, decision.nodeId);
387
+ const human = await awaitHuman(runId, topic, stepKeyFor(decision.nodeId, ordinal), `${decision.reason} approval`, {
339
388
  nodeId: decision.nodeId,
340
389
  outcomes: decision.outcomes,
341
390
  });
@@ -367,8 +416,8 @@ export function makeDataDrivenTask(runStepFn, deps) {
367
416
  }
368
417
  // ── Effect executors ─────────────────────────────────────────────────────────
369
418
  /** invokeRole → dispatch via the existing runStep DBOS step; validate result vs resultSchema. */
370
- async function invokeRole(runId, decision, node, bindingByRef, executionProfile, inputs, stepKey) {
371
- const binding = bindingByRef.get(decision.roleRef);
419
+ async function invokeRole(runId, decision, node, ctx, inputs, stepKey) {
420
+ const binding = ctx.bindingByRef.get(decision.roleRef);
372
421
  if (!binding) {
373
422
  // A VALID template's caps resolve at run start; an unresolved roleRef is a fatal config gap.
374
423
  throw new Error(`CAPABILITY_UNRESOLVED: roleRef ${decision.roleRef} has no route binding`);
@@ -377,11 +426,18 @@ export function makeDataDrivenTask(runStepFn, deps) {
377
426
  // hydrated `inputs` (consumed upstream outputs) ride in stepInput → the runner renders them as a
378
427
  // `## Inputs (from previous steps)` prompt section (build-context).
379
428
  const stepInput = Object.keys(inputs).length > 0 ? { nodeId: decision.nodeId, inputs } : { nodeId: decision.nodeId };
380
- const result = await runStepFn(runId, binding.rowId, stepKey, stepInput, binding.resolvedRunnerId, executionProfile);
429
+ const result = await runStepFn(runId, binding.rowId, stepKey, stepInput, binding.resolvedRunnerId, ctx.executionProfile);
381
430
  // runStep converts a runner-process crash into a blocking attempt (needsHuman + verdict BLOCKER);
382
431
  // that is a domain failure of the node → route via §6 precedence as a result-invalid/failed effect.
383
- if (result.needsHuman || !resultSatisfiesSchema(node, result)) {
384
- return { failed: true, errorCode: REVO_RESULT_INVALID };
432
+ if (result.needsHuman) {
433
+ return { failed: true, errorCode: REVO_RESULT_INVALID, reason: `${REVO_RESULT_INVALID}: node ${node.id} returned needsHuman instead of a valid result` };
434
+ }
435
+ if (!resultSatisfiesSchema(node, result)) {
436
+ return { failed: true, errorCode: REVO_RESULT_INVALID, reason: `${REVO_RESULT_INVALID}: node ${node.id} result did not satisfy resultSchema ${String('resultSchema' in node ? node.resultSchema : '')}` };
437
+ }
438
+ const verdictProblem = resultVerdictProblem(ctx.template, node, result);
439
+ if (verdictProblem) {
440
+ return { failed: true, errorCode: REVO_RESULT_INVALID, reason: verdictProblem };
385
441
  }
386
442
  return { failed: false, verdict: domainVerdictOf(result), output: result.output };
387
443
  }
@@ -398,16 +454,31 @@ export function makeDataDrivenTask(runStepFn, deps) {
398
454
  * - `failed`: the integrator THREW (a gh/push error). `catch[revo.ScriptFailed]` routes to a `failed`
399
455
  * terminal; the run's top-level catch failRuns (the thrown reason is recorded, redacted).
400
456
  */
401
- async function invokeScript(runId, decision, ctx, bindingByRef, stepKey) {
457
+ async function invokeScript(runId, decision, ctx, bindingByRef, stepKey, inputs) {
458
+ const isConfirmMerge = decision.scriptRef === 'script:confirmMerge';
459
+ const isPollPr = decision.scriptRef === 'script:pollPr';
460
+ const isRespondThreads = decision.scriptRef === 'script:respondThreads';
402
461
  const binding = bindingByRef.get(decision.scriptRef) ?? bindingByRef.get('script:integrator');
403
- const integratorInput = { runId, taskId: ctx.taskId, title: ctx.title, base: ctx.base };
462
+ // respondThreads consumes `triage` (plan 0018) ride the hydrated input on the integrator input so
463
+ // the live script can reply/resolve the triaged threads without a live Revisium read.
464
+ const integratorInput = { runId, taskId: ctx.taskId, title: ctx.title, base: ctx.base, ...(inputs.triage !== undefined ? { triage: inputs.triage } : {}) };
465
+ // A script node whose resolved runner mechanically performs the merge uses the REAL script;
466
+ // otherwise the pure stub (zero git/gh). Absent a binding (template-only script), default to stub.
467
+ const useReal = !!binding && runnerUsesRealIntegrator(binding.resolvedRunnerId);
404
468
  let result;
405
469
  try {
406
- // A script node whose resolved runner mechanically performs the merge uses the real integrator;
407
- // otherwise the pure stub (zero git/gh). Absent a binding (template-only script), default to stub.
408
- result = binding && runnerUsesRealIntegrator(binding.resolvedRunnerId)
409
- ? await integrateFn(integratorInput)
410
- : runStub(integratorInput);
470
+ if (isConfirmMerge) {
471
+ result = useReal ? await confirmMergeFn(integratorInput) : runConfirmStub(integratorInput);
472
+ }
473
+ else if (isPollPr) {
474
+ result = useReal ? await pollPrFn(integratorInput) : runPollStub(integratorInput);
475
+ }
476
+ else if (isRespondThreads) {
477
+ result = useReal ? await respondThreadsFn(integratorInput) : runRespondStub(integratorInput);
478
+ }
479
+ else {
480
+ result = useReal ? await integrateFn(integratorInput) : runStub(integratorInput);
481
+ }
411
482
  }
412
483
  catch (err) {
413
484
  await appendEvent({
@@ -422,29 +493,69 @@ export function makeDataDrivenTask(runStepFn, deps) {
422
493
  }
423
494
  if ('needsHuman' in result) {
424
495
  // Surface the blocking reason as pipeline_blocked (the persist boundary redacts any token, D15) so
425
- // the human sees WHY the integrator could not proceed — exactly as the old engine's blockPipeline.
496
+ // the human sees WHY the script could not proceed — exactly as the old engine's blockPipeline.
497
+ const reason = isConfirmMerge ? 'confirm-merge' : isPollPr ? 'poll-pr' : isRespondThreads ? 'respond-threads' : 'integrate';
426
498
  await appendEvent({
427
499
  runId,
428
500
  taskId: ctx.taskId,
429
501
  stepId: '',
430
502
  stepKey: 'pipeline',
431
503
  type: 'pipeline_blocked',
432
- payload: { reason: 'integrate', lesson: result.lesson, nodeId: decision.nodeId },
504
+ payload: { reason, lesson: result.lesson, nodeId: decision.nodeId },
433
505
  });
434
506
  return { outcome: 'blocked' };
435
507
  }
508
+ if (isConfirmMerge) {
509
+ const merged = result;
510
+ await appendEvent({
511
+ runId,
512
+ taskId: ctx.taskId,
513
+ stepId: '',
514
+ stepKey,
515
+ type: 'merge_confirmed',
516
+ payload: { prNumber: merged.prNumber, prUrl: merged.prUrl },
517
+ });
518
+ return { outcome: 'ok', pointer: { merged: true, prNumber: merged.prNumber, prUrl: merged.prUrl } };
519
+ }
520
+ if (isPollPr) {
521
+ // pollPr CLASSIFIES the feedback: its verdict (review_changes/ci_changes/clean) routes the prRouter
522
+ // choice (§8 — a script may emit a domain verdict the routing data acts on, same as an agent).
523
+ const feedback = result;
524
+ await appendEvent({
525
+ runId,
526
+ taskId: ctx.taskId,
527
+ stepId: '',
528
+ stepKey,
529
+ type: 'pr_polled',
530
+ payload: { prNumber: feedback.prNumber, verdict: feedback.verdict, ciFailures: feedback.ciFailures.length, reviewThreads: feedback.reviewThreads.length },
531
+ });
532
+ return { outcome: 'ok', pointer: feedback, verdict: feedback.verdict };
533
+ }
534
+ if (isRespondThreads) {
535
+ const responded = result;
536
+ await appendEvent({
537
+ runId,
538
+ taskId: ctx.taskId,
539
+ stepId: '',
540
+ stepKey,
541
+ type: 'threads_responded',
542
+ payload: { replied: responded.replied, resolved: responded.resolved },
543
+ });
544
+ return { outcome: 'ok', pointer: responded };
545
+ }
546
+ const integrated = result;
436
547
  await appendEvent({
437
548
  runId,
438
549
  taskId: ctx.taskId,
439
550
  stepId: '',
440
551
  stepKey,
441
552
  type: 'integrate_succeeded',
442
- payload: { prUrl: result.prUrl, branch: result.branch, prNumber: result.prNumber },
553
+ payload: { prUrl: integrated.prUrl, branch: integrated.branch, prNumber: integrated.prNumber },
443
554
  });
444
- return { outcome: 'ok', pointer: { prUrl: result.prUrl, branch: result.branch, prNumber: result.prNumber } };
555
+ return { outcome: 'ok', pointer: { prUrl: integrated.prUrl, branch: integrated.branch, prNumber: integrated.prNumber } };
445
556
  }
446
557
  /** Terminal: finish the run in Revisium per the core's terminal status. */
447
- async function finish(runId, status, verdict, steps) {
558
+ async function finish(runId, status, verdict, steps, failureReason = '') {
448
559
  if (status === 'succeeded') {
449
560
  await completeRun(runId, { actor: 'pipeline', source: 'data-driven-complete', verdict, iterations: steps });
450
561
  }
@@ -460,7 +571,7 @@ export function makeDataDrivenTask(runStepFn, deps) {
460
571
  await blockRun(runId, { actor: 'pipeline', source: 'data-driven-blocked', reason: 'route-terminal' });
461
572
  }
462
573
  else {
463
- await failRun(runId, `data-driven pipeline reached a failed terminal (lastVerdict=${verdict})`);
574
+ await failRun(runId, failureReason || `data-driven pipeline reached a failed terminal (lastVerdict=${verdict})`);
464
575
  }
465
576
  return { runId, status, verdict, steps };
466
577
  }