@revisium/orchestrator 0.1.0 → 0.2.0-alpha.0

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 (212) hide show
  1. package/README.md +78 -0
  2. package/control-plane/bootstrap.config.json +43 -1
  3. package/control-plane/default-playbook/catalog/pipelines.json +941 -3
  4. package/control-plane/default-playbook/catalog/roles.json +54 -0
  5. package/dist/api/graphql-api/graphql-ws/pubsub.module.js +0 -1
  6. package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
  7. package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +0 -1
  8. package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -1
  9. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +0 -1
  10. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
  11. package/dist/api/graphql-api/pr/model/pr-readiness.model.js +0 -4
  12. package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
  13. package/dist/cli/commands/doctor-report.js +0 -18
  14. package/dist/cli/commands/doctor-report.js.map +1 -1
  15. package/dist/cli/commands/lifecycle.js +3 -71
  16. package/dist/cli/commands/lifecycle.js.map +1 -1
  17. package/dist/cli/commands/mcp.js +0 -14
  18. package/dist/cli/commands/mcp.js.map +1 -1
  19. package/dist/cli/commands/process-tree.js +4 -26
  20. package/dist/cli/commands/process-tree.js.map +1 -1
  21. package/dist/cli/commands/revisium-helpers.js +0 -6
  22. package/dist/cli/commands/revisium-helpers.js.map +1 -1
  23. package/dist/cli/commands/rogue-reaper.js +0 -34
  24. package/dist/cli/commands/rogue-reaper.js.map +1 -1
  25. package/dist/cli/index.js +0 -4
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/program.js +0 -5
  28. package/dist/cli/program.js.map +1 -1
  29. package/dist/config.js +0 -25
  30. package/dist/config.js.map +1 -1
  31. package/dist/control-plane/bootstrap.js +0 -28
  32. package/dist/control-plane/bootstrap.js.map +1 -1
  33. package/dist/control-plane/change-notifications.js +0 -1
  34. package/dist/control-plane/change-notifications.js.map +1 -1
  35. package/dist/control-plane/client-transport.js +0 -11
  36. package/dist/control-plane/client-transport.js.map +1 -1
  37. package/dist/control-plane/definitions.js +8 -17
  38. package/dist/control-plane/definitions.js.map +1 -1
  39. package/dist/control-plane/inbox.js +2 -120
  40. package/dist/control-plane/inbox.js.map +1 -1
  41. package/dist/control-plane/resolve-cwd.js +0 -61
  42. package/dist/control-plane/resolve-cwd.js.map +1 -1
  43. package/dist/control-plane/schema-migration.js +0 -9
  44. package/dist/control-plane/schema-migration.js.map +1 -1
  45. package/dist/control-plane/seed-default-playbook.js +5 -70
  46. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  47. package/dist/control-plane/steps.js +0 -15
  48. package/dist/control-plane/steps.js.map +1 -1
  49. package/dist/e2e/kit/assertions.js +1 -1
  50. package/dist/e2e/kit/assertions.js.map +1 -1
  51. package/dist/engine/dbos.service.js +9 -179
  52. package/dist/engine/dbos.service.js.map +1 -1
  53. package/dist/engine/ensure-postgres.js +0 -48
  54. package/dist/engine/ensure-postgres.js.map +1 -1
  55. package/dist/host/daemon.js +2 -21
  56. package/dist/host/daemon.js.map +1 -1
  57. package/dist/host/dbos-identity.js +0 -31
  58. package/dist/host/dbos-identity.js.map +1 -1
  59. package/dist/host/ensure-host.js +1 -37
  60. package/dist/host/ensure-host.js.map +1 -1
  61. package/dist/host/ensure-revisium.js +1 -135
  62. package/dist/host/ensure-revisium.js.map +1 -1
  63. package/dist/host/host-runtime.js +0 -28
  64. package/dist/host/host-runtime.js.map +1 -1
  65. package/dist/host/host.lifecycle.js +0 -27
  66. package/dist/host/host.lifecycle.js.map +1 -1
  67. package/dist/host/queue-ownership.js +0 -42
  68. package/dist/host/queue-ownership.js.map +1 -1
  69. package/dist/host/queue-poller-census.js +1 -28
  70. package/dist/host/queue-poller-census.js.map +1 -1
  71. package/dist/http/graphql-host.module.js +0 -3
  72. package/dist/http/graphql-host.module.js.map +1 -1
  73. package/dist/mcp/mcp-capabilities.js +19 -14
  74. package/dist/mcp/mcp-capabilities.js.map +1 -1
  75. package/dist/mcp/mcp-facade.service.js +41 -23
  76. package/dist/mcp/mcp-facade.service.js.map +1 -1
  77. package/dist/mcp/mcp-http.service.js +0 -18
  78. package/dist/mcp/mcp-http.service.js.map +1 -1
  79. package/dist/mcp/mcp-tools.js +18 -40
  80. package/dist/mcp/mcp-tools.js.map +1 -1
  81. package/dist/observability/activity-signal.js +0 -4
  82. package/dist/observability/activity-signal.js.map +1 -1
  83. package/dist/observability/agent-activity-reporter.js +0 -4
  84. package/dist/observability/agent-activity-reporter.js.map +1 -1
  85. package/dist/pipeline/await-human.js +0 -40
  86. package/dist/pipeline/await-human.js.map +1 -1
  87. package/dist/pipeline/data-driven-task.workflow.js +106 -236
  88. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  89. package/dist/pipeline/data-driven-template.js +0 -25
  90. package/dist/pipeline/data-driven-template.js.map +1 -1
  91. package/dist/pipeline/pipeline.module.js +0 -12
  92. package/dist/pipeline/pipeline.module.js.map +1 -1
  93. package/dist/pipeline/pipeline.service.js +10 -99
  94. package/dist/pipeline/pipeline.service.js.map +1 -1
  95. package/dist/pipeline-core/index.js +1 -13
  96. package/dist/pipeline-core/index.js.map +1 -1
  97. package/dist/pipeline-core/interpret.js +21 -94
  98. package/dist/pipeline-core/interpret.js.map +1 -1
  99. package/dist/pipeline-core/kit/assertions.js +0 -19
  100. package/dist/pipeline-core/kit/assertions.js.map +1 -1
  101. package/dist/pipeline-core/kit/builders.js +1 -21
  102. package/dist/pipeline-core/kit/builders.js.map +1 -1
  103. package/dist/pipeline-core/kit/drive.js +1 -31
  104. package/dist/pipeline-core/kit/drive.js.map +1 -1
  105. package/dist/pipeline-core/kit/fixtures.js +8 -82
  106. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  107. package/dist/pipeline-core/kit/index.js +0 -8
  108. package/dist/pipeline-core/kit/index.js.map +1 -1
  109. package/dist/pipeline-core/types.js +13 -52
  110. package/dist/pipeline-core/types.js.map +1 -1
  111. package/dist/pipeline-core/validate-capability.js +0 -3
  112. package/dist/pipeline-core/validate-capability.js.map +1 -1
  113. package/dist/pipeline-core/validate-conflicts.js +0 -9
  114. package/dist/pipeline-core/validate-conflicts.js.map +1 -1
  115. package/dist/pipeline-core/validate-dataflow.js +0 -17
  116. package/dist/pipeline-core/validate-dataflow.js.map +1 -1
  117. package/dist/pipeline-core/validate-diff.js +3 -36
  118. package/dist/pipeline-core/validate-diff.js.map +1 -1
  119. package/dist/pipeline-core/validate-edges.js +0 -6
  120. package/dist/pipeline-core/validate-edges.js.map +1 -1
  121. package/dist/pipeline-core/validate-graph.js +0 -11
  122. package/dist/pipeline-core/validate-graph.js.map +1 -1
  123. package/dist/pipeline-core/validate-loops.js +37 -44
  124. package/dist/pipeline-core/validate-loops.js.map +1 -1
  125. package/dist/pipeline-core/validate-parallel.js +9 -15
  126. package/dist/pipeline-core/validate-parallel.js.map +1 -1
  127. package/dist/pipeline-core/validate-sink.js +0 -7
  128. package/dist/pipeline-core/validate-sink.js.map +1 -1
  129. package/dist/pipeline-core/validate-topology.js +1 -20
  130. package/dist/pipeline-core/validate-topology.js.map +1 -1
  131. package/dist/pipeline-core/validate-verdict.js +52 -7
  132. package/dist/pipeline-core/validate-verdict.js.map +1 -1
  133. package/dist/pipeline-core/validate.js +5 -29
  134. package/dist/pipeline-core/validate.js.map +1 -1
  135. package/dist/playbook/catalog-loader.js +8 -3
  136. package/dist/playbook/catalog-loader.js.map +1 -1
  137. package/dist/playbook/import-mapper.js +1 -9
  138. package/dist/playbook/import-mapper.js.map +1 -1
  139. package/dist/poller/pr-readiness-core.js +0 -74
  140. package/dist/poller/pr-readiness-core.js.map +1 -1
  141. package/dist/revisium/inbox.service.js +0 -24
  142. package/dist/revisium/inbox.service.js.map +1 -1
  143. package/dist/revisium/playbooks.service.js +2 -4
  144. package/dist/revisium/playbooks.service.js.map +1 -1
  145. package/dist/revisium/revisium.module.js +0 -12
  146. package/dist/revisium/revisium.module.js.map +1 -1
  147. package/dist/revisium/roles.service.js +0 -6
  148. package/dist/revisium/roles.service.js.map +1 -1
  149. package/dist/revisium/run.service.js +1 -75
  150. package/dist/revisium/run.service.js.map +1 -1
  151. package/dist/revisium/tokens.js +0 -4
  152. package/dist/revisium/tokens.js.map +1 -1
  153. package/dist/run/append-event.js +0 -34
  154. package/dist/run/append-event.js.map +1 -1
  155. package/dist/run/block-run.js.map +1 -1
  156. package/dist/run/cancel-run.js +0 -33
  157. package/dist/run/cancel-run.js.map +1 -1
  158. package/dist/run/complete-run.js.map +1 -1
  159. package/dist/run/create-run.js +0 -7
  160. package/dist/run/create-run.js.map +1 -1
  161. package/dist/run/fail-run.js +0 -3
  162. package/dist/run/fail-run.js.map +1 -1
  163. package/dist/run/inspect-run.js +0 -26
  164. package/dist/run/inspect-run.js.map +1 -1
  165. package/dist/run/run-outputs.js +0 -19
  166. package/dist/run/run-outputs.js.map +1 -1
  167. package/dist/run/terminal-run-status.js +0 -12
  168. package/dist/run/terminal-run-status.js.map +1 -1
  169. package/dist/runners/claude-code.service.js +0 -11
  170. package/dist/runners/claude-code.service.js.map +1 -1
  171. package/dist/runners/codex.service.js +0 -9
  172. package/dist/runners/codex.service.js.map +1 -1
  173. package/dist/runners/gh-identity.js +0 -52
  174. package/dist/runners/gh-identity.js.map +1 -1
  175. package/dist/runners/integrator-branch-naming.js +3 -11
  176. package/dist/runners/integrator-branch-naming.js.map +1 -1
  177. package/dist/runners/integrator-git.js +0 -25
  178. package/dist/runners/integrator-git.js.map +1 -1
  179. package/dist/runners/integrator-remote.js +0 -2
  180. package/dist/runners/integrator-remote.js.map +1 -1
  181. package/dist/runners/integrator-types.js +0 -7
  182. package/dist/runners/integrator-types.js.map +1 -1
  183. package/dist/runners/integrator.js +3 -167
  184. package/dist/runners/integrator.js.map +1 -1
  185. package/dist/runners/runner.module.js +0 -6
  186. package/dist/runners/runner.module.js.map +1 -1
  187. package/dist/runners/tokens.js +0 -4
  188. package/dist/runners/tokens.js.map +1 -1
  189. package/dist/runners/worktree.service.js +1 -17
  190. package/dist/runners/worktree.service.js.map +1 -1
  191. package/dist/task-control-plane/run-watch.service.js +49 -173
  192. package/dist/task-control-plane/run-watch.service.js.map +1 -1
  193. package/dist/task-control-plane/task-control-plane-api.service.js +15 -17
  194. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  195. package/dist/worker/build-context.js +0 -16
  196. package/dist/worker/build-context.js.map +1 -1
  197. package/dist/worker/claude-code-runner.js +9 -42
  198. package/dist/worker/claude-code-runner.js.map +1 -1
  199. package/dist/worker/codex-runner.js +88 -22
  200. package/dist/worker/codex-runner.js.map +1 -1
  201. package/dist/worker/git-worktree-manager.js +20 -67
  202. package/dist/worker/git-worktree-manager.js.map +1 -1
  203. package/dist/worker/process-executor.js +0 -12
  204. package/dist/worker/process-executor.js.map +1 -1
  205. package/dist/worker/result-envelope.js +33 -49
  206. package/dist/worker/result-envelope.js.map +1 -1
  207. package/dist/worker/runner-dispatch.js +0 -3
  208. package/dist/worker/runner-dispatch.js.map +1 -1
  209. package/dist/worker/runner.js.map +1 -1
  210. package/dist/worker/stub-runner.js +0 -7
  211. package/dist/worker/stub-runner.js.map +1 -1
  212. package/package.json +2 -2
@@ -1,27 +1,3 @@
1
- /**
2
- * pipeline-core/interpret.ts — the pure deterministic reducer (§10).
3
- *
4
- * step(template, state, lastResult) -> { state, decision }
5
- *
6
- * One call advances the run by exactly one OBSERVABLE step. Given the current cursor and the RECORDED
7
- * result of the previously-emitted Decision, it computes the NEXT cursor (updated/reset scoped
8
- * counters + activeNodeIds + status) AND the next effect `decision`. Total + deterministic: no clocks,
9
- * no randomness, no live reads — every external fact arrives as recorded data on `lastResult` (§10).
10
- *
11
- * The adapter loop (§10): `{state, decision} = step(t, state, lastResult)` → execute `decision` as a
12
- * durable step → record its result → feed that back as the next `lastResult` → repeat until
13
- * `decision.type === 'complete'`.
14
- *
15
- * Model. The active node is the one whose Decision was last emitted (or the entry on the first call).
16
- * `step` first RESOLVES that node against `lastResult` (route a gate/choice by its branches; route an
17
- * agent/script by its core outcome via §6 precedence; aggregate a join's recorded arrivals), walking
18
- * through pure routing nodes (`choice`/`join`) until it reaches a node that emits an effect
19
- * (`agent`/`script`/`humanGate`/`wait`/`parallel`/`terminal`). Loop-entry counter mutations (§7) are
20
- * applied as each node is entered, BEFORE its guards are evaluated, so a cap-guard sees the
21
- * post-increment value. Core verdicts route STRUCTURALLY (catch/onFailure/terminal/timeout) and NEVER
22
- * via branch guards (§3/§6).
23
- */
24
- /** Thrown when the interpreter hits a state a VALID template can never produce (a caller/data bug). */
25
1
  export class InterpretError extends Error {
26
2
  constructor(message) {
27
3
  super(message);
@@ -33,7 +9,6 @@ const STATUS_BY_TERMINAL = {
33
9
  failed: 'failed',
34
10
  blocked: 'blocked',
35
11
  };
36
- /** Kinds that SUSPEND: they emit a Decision and stay active until their result is fed back. */
37
12
  function suspends(node) {
38
13
  return (node.kind === 'agent' ||
39
14
  node.kind === 'script' ||
@@ -42,42 +17,22 @@ function suspends(node) {
42
17
  node.kind === 'parallel' ||
43
18
  node.kind === 'terminal');
44
19
  }
45
- /**
46
- * Build the initial cursor: the entry node active, every declared scope at 0, no recorded result.
47
- * The first `step(t, initialState(t), undefined)` emits the entry node's first Decision.
48
- */
49
20
  export function initialState(template) {
50
21
  const scopedCounters = {};
51
22
  for (const scopeId of Object.keys(template.scopes ?? {}))
52
23
  scopedCounters[scopeId] = 0;
53
24
  return { activeNodeIds: new Set([template.entry]), scopedCounters, status: 'running' };
54
25
  }
55
- /**
56
- * Advance one observable step. Resolves the active node against `lastResult`, walks any pure routing
57
- * nodes, and returns the next suspending node's Decision plus the next cursor.
58
- *
59
- * On the FIRST call (entry just activated, no Decision emitted yet) the active node has not run, so
60
- * `lastResult` describes nothing for it: we emit its Decision directly. On every later call the active
61
- * node is a suspended one whose recorded result is in `lastResult`: we route PAST it.
62
- */
63
26
  export function step(template, state, lastResult) {
64
27
  const active = resolveNode(template, soleActiveNodeId(state));
65
- // First emission of a freshly-entered suspending node: no result to consume yet — emit its Decision.
66
28
  if (lastResult === undefined && suspends(active)) {
67
29
  return emit(template, active, state);
68
30
  }
69
- // Otherwise consume the active node's recorded result and route onward.
70
31
  return routeFrom(template, active, state, lastResult);
71
32
  }
72
- // ─────────────────────────────────────────────────────────────────────────────
73
- // Routing — consume the active node's result, compute the successor id, then enter it.
74
- // ─────────────────────────────────────────────────────────────────────────────
75
33
  function routeFrom(template, node, state, lastResult) {
76
34
  switch (node.kind) {
77
35
  case 'terminal':
78
- // A terminal has no successor; re-resolving it just re-asserts completion (idempotent). The
79
- // cursor SITS on the terminal (activeNodeIds = {terminal}); the adapter detects done via
80
- // status/decision, not an empty active set.
81
36
  return {
82
37
  state: { ...state, activeNodeIds: new Set([node.id]), status: STATUS_BY_TERMINAL[node.status] },
83
38
  decision: { type: 'complete', status: node.status },
@@ -86,7 +41,6 @@ function routeFrom(template, node, state, lastResult) {
86
41
  case 'script':
87
42
  return routeEffect(template, node, state, lastResult);
88
43
  case 'humanGate': {
89
- // A gate's recorded timeout firing routes via timeout.goto (§6), NOT a branch guard.
90
44
  if (lastResult?.outcome === 'timed_out') {
91
45
  if (!node.timeout) {
92
46
  throw new InterpretError(`gate ${node.id} timed_out but has no timeout edge (invalid)`);
@@ -105,29 +59,25 @@ function routeFrom(template, node, state, lastResult) {
105
59
  case 'join': {
106
60
  const arrivals = lastResult?.joinArrivals ?? [];
107
61
  const winner = selectJoinWinner(node.joinMode, arrivals, node.id);
108
- const forward = winner?.verdict === undefined ? undefined : { verdict: winner.verdict };
62
+ const verdict = reduceJoinVerdict(node, arrivals, winner);
63
+ const forward = verdict === undefined ? undefined : { verdict };
109
64
  return enter(template, node.next, state, forward);
110
65
  }
111
66
  case 'parallel':
112
- // A parallel's "result" is the join's arrivals; routing past a parallel is meaningless —
113
- // the join consumes the arrivals. Reaching here means the loop mis-fed a result.
114
67
  throw new InterpretError(`routeFrom called on parallel ${node.id} (feed the join, not the fork)`);
115
68
  }
116
69
  }
117
- /** §6 failure-precedence routing for an `agent`/`script` node from its RECORDED outcome. */
118
70
  function routeEffect(template, node, state, lastResult) {
119
71
  const outcome = lastResult?.outcome;
120
72
  if (outcome === undefined || outcome === 'succeeded') {
121
73
  return enter(template, node.next, state, carryVerdict(lastResult));
122
74
  }
123
- // Failure (`failed`/`errored`). Precedence: matching catch → onFailure (abort/route/escalate).
124
75
  const code = lastResult?.errorCode;
125
76
  const matched = code ? node.catch?.find((c) => c.onError === code) : undefined;
126
77
  if (matched)
127
78
  return enter(template, matched.goto, state, undefined);
128
79
  const policy = node.onFailure ?? 'abort';
129
80
  if (policy === 'abort') {
130
- // The run fails AT the aborting node; the cursor stays on it (no terminal node to route to).
131
81
  return {
132
82
  state: { ...state, activeNodeIds: new Set([node.id]), status: 'failed' },
133
83
  decision: { type: 'complete', status: 'failed' },
@@ -139,24 +89,16 @@ function routeEffect(template, node, state, lastResult) {
139
89
  }
140
90
  return enter(template, node.escalateTo, state, undefined);
141
91
  }
142
- // 'route' with no matching catch — a VALID template forbids this (§6 / §12 FAILURE_ROUTE_NO_CATCH).
143
92
  throw new InterpretError(`node ${node.id} onFailure=route but no catch matched ${code ?? '<no code>'} (invalid)`);
144
93
  }
145
- /**
146
- * ENTER a node: apply its loop-entry counter mutations (§7), make it the sole active node, then
147
- * either emit its Decision (suspending kinds) or recursively route through it (pure `choice`/`join`).
148
- * `incoming` is the verdict/arrivals context the entered node's guards may read.
149
- */
150
94
  function enter(template, nodeId, state, incoming) {
151
95
  const node = resolveNode(template, nodeId);
152
96
  const scopedCounters = applyCounterMutations(template, state.scopedCounters, incrementCountersOf(node));
153
97
  const entered = { ...state, scopedCounters, activeNodeIds: new Set([nodeId]) };
154
98
  if (suspends(node))
155
99
  return emit(template, node, entered);
156
- // Pure routing node — resolve it immediately against the incoming context.
157
100
  return routeFrom(template, node, entered, incoming);
158
101
  }
159
- /** Emit the Decision of a freshly-entered SUSPENDING node and set the matching run status. */
160
102
  function emit(template, node, state) {
161
103
  switch (node.kind) {
162
104
  case 'agent':
@@ -204,20 +146,15 @@ function emit(template, node, state) {
204
146
  decision: { type: 'complete', status: node.status },
205
147
  };
206
148
  default:
207
- // choice/join never suspend — emit() is only called on suspending kinds.
208
149
  throw new InterpretError(`emit() called on non-suspending node ${node.id} (${node.kind})`);
209
150
  }
210
151
  }
211
152
  function activate(state, nodeId, status) {
212
153
  return { ...state, activeNodeIds: new Set([nodeId]), status };
213
154
  }
214
- /** Forward only a domain verdict (core outcomes are consumed structurally, never carried forward). */
215
155
  function carryVerdict(lastResult) {
216
156
  return lastResult?.verdict === undefined ? undefined : { verdict: lastResult.verdict };
217
157
  }
218
- // ─────────────────────────────────────────────────────────────────────────────
219
- // Guard evaluation (§3) — total, first-true-wins, mandatory default.
220
- // ─────────────────────────────────────────────────────────────────────────────
221
158
  function evalBranches(template, nodeId, branches, state, lastResult) {
222
159
  let fallback;
223
160
  for (const b of branches) {
@@ -233,10 +170,6 @@ function evalBranches(template, nodeId, branches, state, lastResult) {
233
170
  }
234
171
  return fallback;
235
172
  }
236
- /**
237
- * Evaluate a v1 Condition (§3). Reads ONLY the recorded DOMAIN verdict (`lastResult.verdict`) and the
238
- * scoped counters in `state` — never a core verdict (those route structurally, §3/§6).
239
- */
240
173
  export function evalCondition(cond, state, lastResult) {
241
174
  switch (cond.op) {
242
175
  case 'verdict.eq':
@@ -258,13 +191,6 @@ export function evalCondition(cond, state, lastResult) {
258
191
  function counterValue(state, scope) {
259
192
  return state.scopedCounters[scope] ?? 0;
260
193
  }
261
- // ─────────────────────────────────────────────────────────────────────────────
262
- // §7 Counter mutation — increment + descendant reset, deterministic & pure.
263
- // ─────────────────────────────────────────────────────────────────────────────
264
- /**
265
- * Apply a node's `incrementCounters` to a counter map: +1 each named scope and RESET every
266
- * descendant scope of each (entering a scope resets its descendants, §7). Returns a fresh map.
267
- */
268
194
  export function applyCounterMutations(template, current, increments) {
269
195
  if (increments.length === 0)
270
196
  return { ...current };
@@ -280,7 +206,6 @@ export function applyCounterMutations(template, current, increments) {
280
206
  }
281
207
  return next;
282
208
  }
283
- /** True when `candidate`'s ancestor chain (via `parent`) passes through `ancestor`. */
284
209
  function isDescendantScope(scopes, candidate, ancestor) {
285
210
  let cursor = scopes[candidate]?.parent ?? null;
286
211
  const seen = new Set();
@@ -288,7 +213,7 @@ function isDescendantScope(scopes, candidate, ancestor) {
288
213
  if (cursor === ancestor)
289
214
  return true;
290
215
  if (seen.has(cursor))
291
- break; // defensive against a malformed cycle (validation rejects these)
216
+ break;
292
217
  seen.add(cursor);
293
218
  cursor = scopes[cursor]?.parent ?? null;
294
219
  }
@@ -297,19 +222,8 @@ function isDescendantScope(scopes, candidate, ancestor) {
297
222
  function incrementCountersOf(node) {
298
223
  return 'incrementCounters' in node ? (node.incrementCounters ?? []) : [];
299
224
  }
300
- // ─────────────────────────────────────────────────────────────────────────────
301
- // §4 Join — consume recorded arrivals; pick a deterministic winner.
302
- // ─────────────────────────────────────────────────────────────────────────────
303
- /**
304
- * Select the join winner from durably-recorded arrivals (§4), in the canonical recorded order
305
- * (`seq` asc, branchId tie-break):
306
- * - `all` → the barrier; the winner is the last arrival (its verdict is forwarded);
307
- * - `any` → the first arrival;
308
- * - `quorum` → the K-th arrival.
309
- * The core never sees the live race; the adapter supplies the recorded order + cancelled set.
310
- */
311
225
  export function selectJoinWinner(mode, arrivals, joinId) {
312
- const ordered = [...arrivals].sort((a, b) => a.seq - b.seq || cmp(a.branchId, b.branchId));
226
+ const ordered = orderedJoinArrivals(arrivals);
313
227
  if (mode.kind === 'any')
314
228
  return ordered[0];
315
229
  if (mode.kind === 'quorum') {
@@ -318,7 +232,23 @@ export function selectJoinWinner(mode, arrivals, joinId) {
318
232
  }
319
233
  return ordered[mode.count - 1];
320
234
  }
321
- return ordered.at(-1); // 'all'
235
+ return ordered.at(-1);
236
+ }
237
+ export function reduceJoinVerdict(node, arrivals, winner) {
238
+ if (!node.verdictReducer)
239
+ return winner?.verdict;
240
+ const reducer = node.verdictReducer;
241
+ if (reducer.kind === 'allIn') {
242
+ const pass = new Set(reducer.pass);
243
+ const ordered = orderedJoinArrivals(arrivals);
244
+ return ordered.length > 0 && ordered.every((arrival) => arrival.verdict !== undefined && pass.has(arrival.verdict))
245
+ ? reducer.passVerdict
246
+ : reducer.failVerdict;
247
+ }
248
+ throw new InterpretError(`join ${node.id} has unknown verdictReducer "${String(reducer.kind)}"`);
249
+ }
250
+ function orderedJoinArrivals(arrivals) {
251
+ return [...arrivals].sort((a, b) => a.seq - b.seq || cmp(a.branchId, b.branchId));
322
252
  }
323
253
  function cmp(a, b) {
324
254
  if (a < b)
@@ -334,9 +264,6 @@ function joinModeOf(template, joinId) {
334
264
  }
335
265
  return join.joinMode;
336
266
  }
337
- // ─────────────────────────────────────────────────────────────────────────────
338
- // Helpers.
339
- // ─────────────────────────────────────────────────────────────────────────────
340
267
  function resolveNode(template, id) {
341
268
  const node = template.nodes[id];
342
269
  if (!node)
@@ -1 +1 @@
1
- {"version":3,"file":"interpret.js","sourceRoot":"","sources":["../../src/pipeline-core/interpret.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpret.js","sourceRoot":"","sources":["../../src/pipeline-core/interpret.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,5 @@
1
- /**
2
- * pipeline-core/kit/assertions.ts — readable assertions over validation + drive results.
3
- *
4
- * Mirrors the e2e kit's assertion style (`assertCompleted`, `assertEventsPresent`): each helper states
5
- * an intent in one call with a clear failure message, so the test body reads as a spec sentence.
6
- */
7
1
  import assert from 'node:assert/strict';
8
2
  import { validateTemplate } from '../validate.js';
9
- /** Assert the template has NO diagnostics (valid). On failure, prints the offending codes. */
10
3
  export function assertValid(template) {
11
4
  const diags = validateTemplate(template);
12
5
  const errors = diags.filter((d) => d.severity === 'error');
@@ -14,12 +7,6 @@ export function assertValid(template) {
14
7
  assert.equal(errors.length, 0, `expected a valid template, got: ${offending}`);
15
8
  return diags;
16
9
  }
17
- /**
18
- * Assert validation produces EXACTLY the expected ERROR codes (set equality, order-free). Advisory
19
- * WARNING codes (e.g. an unused domain label) are orthogonal to a rule violation and are ignored here
20
- * — assert those explicitly via {@link assertHasDiagnostic}. Use {@link assertHasDiagnostic} when a
21
- * fixture legitimately trips several error rules and you assert one.
22
- */
23
10
  export function assertDiagnostics(template, codes) {
24
11
  const diags = validateTemplate(template);
25
12
  const got = new Set(diags.filter((d) => d.severity === 'error').map((d) => d.code));
@@ -29,32 +16,26 @@ export function assertDiagnostics(template, codes) {
29
16
  assert.ok(missing.length === 0 && extra.length === 0, `diagnostic codes mismatch\n missing: [${missing.join(', ')}]\n extra: [${extra.join(', ')}]\n all: [${[...got].join(', ')}]`);
30
17
  return diags;
31
18
  }
32
- /** Assert at least one diagnostic with `code` was produced (the fixture may trip other rules too). */
33
19
  export function assertHasDiagnostic(template, code) {
34
20
  const diags = validateTemplate(template);
35
21
  const found = diags.find((d) => d.code === code);
36
22
  assert.ok(found, `expected diagnostic "${code}", got: [${diags.map((d) => d.code).join(', ')}]`);
37
23
  return found;
38
24
  }
39
- /** Assert NO diagnostic with `code` was produced. */
40
25
  export function assertNoDiagnostic(template, code) {
41
26
  const diags = validateTemplate(template);
42
27
  assert.ok(!diags.some((d) => d.code === code), `unexpected diagnostic "${code}"`);
43
28
  }
44
- /** Assert a drive reached a terminal with `status`. */
45
29
  export function assertReachesTerminal(result, status) {
46
30
  assert.equal(result.status, status, `expected terminal "${status}", got "${result.status}" via ${result.path.join(' → ')}`);
47
31
  }
48
- /** Assert the recorded path of emitted Decisions equals `expected` (node ids, in order). */
49
32
  export function assertPath(result, expected) {
50
33
  assert.deepEqual(result.path, expected, `path mismatch\n expected: ${expected.join(' → ')}\n actual: ${result.path.join(' → ')}`);
51
34
  }
52
- /** Assert a node appears in the path exactly `times` (e.g. a rework node hit at the loop cap). */
53
35
  export function assertVisitCount(result, nodeId, times) {
54
36
  const count = result.path.filter((id) => id === nodeId).length;
55
37
  assert.equal(count, times, `expected ${nodeId} visited ${times}×, got ${count} (path: ${result.path.join(' → ')})`);
56
38
  }
57
- /** Assert a scope's final counter value. */
58
39
  export function assertCounter(result, scope, value) {
59
40
  assert.equal(result.counters[scope] ?? 0, value, `expected counter ${scope}=${value}, got ${result.counters[scope] ?? 0}`);
60
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/assertions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/assertions.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,3 @@
1
- /**
2
- * pipeline-core/kit/builders.ts — fluent helpers for writing templates in tests.
3
- *
4
- * Mirrors the readability of the e2e kit: a test builds a `Template` declaratively instead of hand-
5
- * writing the verbose discriminated-union literals. Builders apply NO semantics — they only assemble
6
- * data; `validateTemplate` is the single source of truth. Intentionally permissive so INVALID
7
- * fixtures can be expressed (e.g. omit a default, point an edge nowhere).
8
- */
9
- // ─────────────────────────────────────────────────────────────────────────────
10
- // Condition shorthands — read like the spec (§3).
11
- // ─────────────────────────────────────────────────────────────────────────────
12
1
  export const verdictEq = (value) => ({ op: 'verdict.eq', value });
13
2
  export const verdictIn = (...value) => ({ op: 'verdict.in', value });
14
3
  export const counterLt = (scope, value) => ({ op: 'counter.lt', scope, value });
@@ -16,9 +5,6 @@ export const counterGte = (scope, value) => ({ op: 'counter.gte', scope, value }
16
5
  export const allOf = (...of) => ({ op: 'all', of });
17
6
  export const anyOf = (...of) => ({ op: 'any', of });
18
7
  export const notCond = (cond) => ({ op: 'not', cond });
19
- // ─────────────────────────────────────────────────────────────────────────────
20
- // Branch shorthands.
21
- // ─────────────────────────────────────────────────────────────────────────────
22
8
  export const on = (when, goto) => ({ when, goto });
23
9
  export const otherwise = (goto) => ({ default: goto });
24
10
  export const node = {
@@ -61,6 +47,7 @@ export const node = {
61
47
  joinMode,
62
48
  next,
63
49
  ...(opts.merge ? { merge: opts.merge } : {}),
50
+ ...(opts.verdictReducer ? { verdictReducer: opts.verdictReducer } : {}),
64
51
  ...(opts.displayName ? { displayName: opts.displayName } : {}),
65
52
  };
66
53
  },
@@ -83,15 +70,9 @@ function effect(opts) {
83
70
  ...(opts.consumes ? { consumes: opts.consumes } : {}),
84
71
  };
85
72
  }
86
- // ─────────────────────────────────────────────────────────────────────────────
87
- // Join-mode shorthands.
88
- // ─────────────────────────────────────────────────────────────────────────────
89
73
  export const joinAll = () => ({ kind: 'all' });
90
74
  export const joinAny = () => ({ kind: 'any' });
91
75
  export const joinQuorum = (count) => ({ kind: 'quorum', count });
92
- // ─────────────────────────────────────────────────────────────────────────────
93
- // Template builder — `template().entry(...).domain(...).scope(...).add(...).build()`.
94
- // ─────────────────────────────────────────────────────────────────────────────
95
76
  export class TemplateBuilder {
96
77
  t;
97
78
  constructor(pipelineId) {
@@ -128,7 +109,6 @@ export class TemplateBuilder {
128
109
  return this;
129
110
  }
130
111
  build() {
131
- // Return a deep-ish clone so a fixture can be mutated by a diff test without leaking.
132
112
  return structuredClone(this.t);
133
113
  }
134
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/builders.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,KAAe,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,KAAa,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7G,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAe,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAe,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAe,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAe,EAAE,IAAY,EAAU,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAavE,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,KAAK,CAAC,EAAU,EAAE,OAAe,EAAE,IAAY,EAAE,OAAmB,EAAE;QACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,EAAU,EAAE,SAAiB,EAAE,IAAY,EAAE,OAAmB,EAAE;QACvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE,CAAC;IACD,SAAS,CACP,EAAU,EACV,MAAc,EACd,QAAkB,EAClB,QAAkB,EAClB,OAMI,EAAE;QAEN,OAAO;YACL,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,QAAQ;YACR,QAAQ;YACR,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,EAAU,EAAE,QAAkB,EAAE,OAA+D,EAAE;QACtG,OAAO;YACL,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,QAAQ;YACR,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,QAA0B,EAAE,IAAY,EAAE,OAAiC,EAAE;QAChG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAClH,CAAC;IACD,IAAI,CACF,EAAU,EACV,QAAkB,EAClB,IAAY,EACZ,OAAyG,EAAE;QAE3G,OAAO;YACL,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,QAAQ;YACR,IAAI;YACJ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,EAAU,EAAE,QAAgB,EAAE,IAAY,EAAE,OAAiC,EAAE;QAClF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9G,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,MAAsB,EAAE,OAAiC,EAAE;QAC9E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1G,CAAC;CACF,CAAC;AAEF,SAAS,MAAM,CAAC,IAAgB;IAC9B,OAAO;QACL,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAEnF,MAAM,OAAO,eAAe;IACT,CAAC,CAAW;IAC7B,YAAY,UAAkB;QAC5B,IAAI,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC9F,CAAC;IACD,WAAW,CAAC,CAAS;QACnB,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,EAAU;QACd,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,GAAG,MAAgB;QACxB,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,MAAsB;QAC3B,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,EAAU,EAAE,KAAY;QAC5B,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,GAAG,CAAC,GAAG,KAAa;QAClB,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK;QACH,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,UAAkB;IACzC,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC"}
@@ -1,20 +1,5 @@
1
- /**
2
- * pipeline-core/kit/drive.ts — run `step()` to a terminal, feeding scripted results.
3
- *
4
- * The readability counterpart of the e2e `drive`: a test names the verdict each agent/gate produces
5
- * and `drive` walks the interpreter to completion, recording the visited path of effect/gate/terminal
6
- * nodes. This keeps interpreter tests declarative ("reviewer BLOCKER ×3 → blocked at the cap") instead
7
- * of hand-threading `step()` calls and `RunState`.
8
- *
9
- * Scripted results are keyed by NODE ID and consumed one-per-visit (arrays clamp to the last entry,
10
- * mirroring the e2e AgentSpec), so a node hit N times in a loop can yield a different verdict each pass.
11
- */
12
1
  import { initialState, step } from '../interpret.js';
13
- const MAX_STEPS = 1000; // a VALID template always terminates; this guards a test-authoring mistake.
14
- /**
15
- * Drive `template` from its initial state to a terminal, feeding each emitted Decision the scripted
16
- * result for its node. Throws if a non-terminal Decision has no script entry, or if it runs away.
17
- */
2
+ const MAX_STEPS = 1000;
18
3
  export function drive(template, script = {}) {
19
4
  const visits = new Map();
20
5
  const joinVisits = new Map();
@@ -26,8 +11,6 @@ export function drive(template, script = {}) {
26
11
  const out = step(template, state, lastResult);
27
12
  state = out.state;
28
13
  const decision = out.decision;
29
- // For `complete` the cursor sits on the node that completed (terminal, or an aborting effect);
30
- // every other Decision carries its own nodeId.
31
14
  const nodeId = decision.type === 'complete' ? soleActive(state) : decision.nodeId;
32
15
  trace.push({ nodeId, decision: decision.type });
33
16
  path.push(nodeId);
@@ -35,16 +18,11 @@ export function drive(template, script = {}) {
35
18
  return { status: decision.status, path, trace, counters: { ...state.scopedCounters } };
36
19
  }
37
20
  if (decision.type === 'fork') {
38
- // The adapter runs the branches concurrently and records arrivals (§4); the core never sees the
39
- // live race. We model that by jumping the cursor to the JOIN and feeding the arrivals scripted
40
- // on the join node, so the next step aggregates a recorded result. A missing join script with
41
- // mode `all` synthesizes one arrival per branch (verdict undefined) so the barrier is satisfied.
42
21
  const arrivals = joinArrivalsFor(script, decision.joinId, decision.branches.map((b) => b.id), joinVisits);
43
22
  state = { ...state, activeNodeIds: new Set([decision.joinId]) };
44
23
  lastResult = { joinArrivals: arrivals };
45
24
  continue;
46
25
  }
47
- // Resolve the scripted result for THIS node's effect and feed it as the next lastResult.
48
26
  lastResult = resultFor(script, nodeId, decision, visits);
49
27
  }
50
28
  throw new Error(`drive: ${template.pipelineId} did not terminate within ${MAX_STEPS} steps (script gap or loop)`);
@@ -52,11 +30,6 @@ export function drive(template, script = {}) {
52
30
  function soleActive(state) {
53
31
  return [...state.activeNodeIds][0] ?? '<none>';
54
32
  }
55
- /**
56
- * Recorded arrivals for a join: from the script entry on the join node, else one per branch. Like
57
- * `resultFor`, an ARRAY entry is consumed one-per-visit (clamped) so a join hit repeatedly in a loop can
58
- * yield a different recorded aggregation each pass; a single entry is reused every visit.
59
- */
60
33
  function joinArrivalsFor(script, joinId, branchIds, joinVisits) {
61
34
  const n = joinVisits.get(joinId) ?? 0;
62
35
  joinVisits.set(joinId, n + 1);
@@ -71,9 +44,6 @@ function resultFor(script, nodeId, _decision, visits) {
71
44
  visits.set(nodeId, n + 1);
72
45
  const entry = script[nodeId];
73
46
  if (entry === undefined) {
74
- // A gate/effect with no script: assume structural success with no domain verdict (e.g. a script
75
- // node that just proceeds). Tests that route on a verdict must script it. `_decision` is unused
76
- // here but kept in the signature so a future kind-specific default can branch on it.
77
47
  return {};
78
48
  }
79
49
  const picked = Array.isArray(entry) ? (entry[Math.min(n, entry.length - 1)] ?? {}) : entry;
@@ -1 +1 @@
1
- {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/drive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/drive.ts"],"names":[],"mappings":"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"}