@revisium/orchestrator 0.1.0-alpha.9 → 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.
- package/README.md +210 -146
- package/control-plane/bootstrap.config.json +43 -1
- package/control-plane/default-playbook/catalog/pipelines.json +1157 -10
- package/control-plane/default-playbook/catalog/roles.json +54 -0
- package/control-plane/default-playbook/package.json +1 -1
- package/control-plane/default-playbook/prompts/developer.md +1 -0
- package/control-plane/default-playbook/prompts/triager.md +3 -0
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js +0 -1
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +0 -1
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +0 -1
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js +26 -0
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
- package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
- package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
- package/dist/api/graphql-api/runs/model/run.model.js +6 -0
- package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
- package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
- package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
- package/dist/cli/commands/doctor-report.js +0 -18
- package/dist/cli/commands/doctor-report.js.map +1 -1
- package/dist/cli/commands/lifecycle.js +3 -71
- package/dist/cli/commands/lifecycle.js.map +1 -1
- package/dist/cli/commands/mcp.js +0 -14
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/process-tree.js +4 -26
- package/dist/cli/commands/process-tree.js.map +1 -1
- package/dist/cli/commands/revisium-helpers.js +0 -6
- package/dist/cli/commands/revisium-helpers.js.map +1 -1
- package/dist/cli/commands/rogue-reaper.js +0 -34
- package/dist/cli/commands/rogue-reaper.js.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.js +0 -5
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +0 -25
- package/dist/config.js.map +1 -1
- package/dist/control-plane/bootstrap.js +12 -27
- package/dist/control-plane/bootstrap.js.map +1 -1
- package/dist/control-plane/change-notifications.js +0 -1
- package/dist/control-plane/change-notifications.js.map +1 -1
- package/dist/control-plane/client-transport.js +1 -12
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/default-playbook-policy.js +593 -0
- package/dist/control-plane/default-playbook-policy.js.map +1 -0
- package/dist/control-plane/definitions.js +8 -17
- package/dist/control-plane/definitions.js.map +1 -1
- package/dist/control-plane/inbox.js +2 -120
- package/dist/control-plane/inbox.js.map +1 -1
- package/dist/control-plane/resolve-cwd.js +0 -61
- package/dist/control-plane/resolve-cwd.js.map +1 -1
- package/dist/control-plane/schema-migration.js +0 -9
- package/dist/control-plane/schema-migration.js.map +1 -1
- package/dist/control-plane/seed-default-playbook.js +50 -46
- package/dist/control-plane/seed-default-playbook.js.map +1 -1
- package/dist/control-plane/steps.js +0 -15
- package/dist/control-plane/steps.js.map +1 -1
- package/dist/e2e/kit/agents.js +15 -21
- package/dist/e2e/kit/agents.js.map +1 -1
- package/dist/e2e/kit/assertions.js +12 -8
- package/dist/e2e/kit/assertions.js.map +1 -1
- package/dist/e2e/kit/fake-integrator.js +11 -2
- package/dist/e2e/kit/fake-integrator.js.map +1 -1
- package/dist/e2e/kit/git-target-repo.js +1 -1
- package/dist/engine/dbos.service.js +12 -179
- package/dist/engine/dbos.service.js.map +1 -1
- package/dist/engine/ensure-postgres.js +0 -48
- package/dist/engine/ensure-postgres.js.map +1 -1
- package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
- package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
- package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
- package/dist/host/daemon.js +2 -21
- package/dist/host/daemon.js.map +1 -1
- package/dist/host/dbos-identity.js +0 -31
- package/dist/host/dbos-identity.js.map +1 -1
- package/dist/host/ensure-host.js +1 -37
- package/dist/host/ensure-host.js.map +1 -1
- package/dist/host/ensure-revisium.js +1 -135
- package/dist/host/ensure-revisium.js.map +1 -1
- package/dist/host/host-runtime.js +0 -28
- package/dist/host/host-runtime.js.map +1 -1
- package/dist/host/host.lifecycle.js +0 -27
- package/dist/host/host.lifecycle.js.map +1 -1
- package/dist/host/queue-ownership.js +0 -42
- package/dist/host/queue-ownership.js.map +1 -1
- package/dist/host/queue-poller-census.js +1 -28
- package/dist/host/queue-poller-census.js.map +1 -1
- package/dist/http/graphql-host.module.js +0 -3
- package/dist/http/graphql-host.module.js.map +1 -1
- package/dist/mcp/mcp-capabilities.js +23 -5
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +335 -22
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-http.service.js +0 -18
- package/dist/mcp/mcp-http.service.js.map +1 -1
- package/dist/mcp/mcp-tools.js +41 -36
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/observability/activity-signal.js +103 -0
- package/dist/observability/activity-signal.js.map +1 -0
- package/dist/observability/agent-activity-reporter.js +0 -4
- package/dist/observability/agent-activity-reporter.js.map +1 -1
- package/dist/observability/index.js +1 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/await-human.js +0 -40
- package/dist/pipeline/await-human.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +563 -251
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
- package/dist/pipeline/data-driven-template.js +0 -25
- package/dist/pipeline/data-driven-template.js.map +1 -1
- package/dist/pipeline/pipeline.module.js +0 -12
- package/dist/pipeline/pipeline.module.js.map +1 -1
- package/dist/pipeline/pipeline.service.js +194 -189
- package/dist/pipeline/pipeline.service.js.map +1 -1
- package/dist/pipeline/route-contract.js +4 -3
- package/dist/pipeline/route-contract.js.map +1 -1
- package/dist/pipeline-core/index.js +1 -13
- package/dist/pipeline-core/index.js.map +1 -1
- package/dist/pipeline-core/interpret.js +21 -94
- package/dist/pipeline-core/interpret.js.map +1 -1
- package/dist/pipeline-core/kit/assertions.js +0 -19
- package/dist/pipeline-core/kit/assertions.js.map +1 -1
- package/dist/pipeline-core/kit/builders.js +1 -21
- package/dist/pipeline-core/kit/builders.js.map +1 -1
- package/dist/pipeline-core/kit/drive.js +1 -31
- package/dist/pipeline-core/kit/drive.js.map +1 -1
- package/dist/pipeline-core/kit/fixtures.js +78 -101
- package/dist/pipeline-core/kit/fixtures.js.map +1 -1
- package/dist/pipeline-core/kit/index.js +0 -8
- package/dist/pipeline-core/kit/index.js.map +1 -1
- package/dist/pipeline-core/types.js +13 -52
- package/dist/pipeline-core/types.js.map +1 -1
- package/dist/pipeline-core/validate-capability.js +0 -3
- package/dist/pipeline-core/validate-capability.js.map +1 -1
- package/dist/pipeline-core/validate-conflicts.js +0 -9
- package/dist/pipeline-core/validate-conflicts.js.map +1 -1
- package/dist/pipeline-core/validate-dataflow.js +0 -17
- package/dist/pipeline-core/validate-dataflow.js.map +1 -1
- package/dist/pipeline-core/validate-diff.js +3 -36
- package/dist/pipeline-core/validate-diff.js.map +1 -1
- package/dist/pipeline-core/validate-edges.js +0 -6
- package/dist/pipeline-core/validate-edges.js.map +1 -1
- package/dist/pipeline-core/validate-graph.js +0 -11
- package/dist/pipeline-core/validate-graph.js.map +1 -1
- package/dist/pipeline-core/validate-loops.js +37 -44
- package/dist/pipeline-core/validate-loops.js.map +1 -1
- package/dist/pipeline-core/validate-parallel.js +9 -15
- package/dist/pipeline-core/validate-parallel.js.map +1 -1
- package/dist/pipeline-core/validate-sink.js +0 -7
- package/dist/pipeline-core/validate-sink.js.map +1 -1
- package/dist/pipeline-core/validate-topology.js +1 -20
- package/dist/pipeline-core/validate-topology.js.map +1 -1
- package/dist/pipeline-core/validate-verdict.js +52 -7
- package/dist/pipeline-core/validate-verdict.js.map +1 -1
- package/dist/pipeline-core/validate.js +5 -29
- package/dist/pipeline-core/validate.js.map +1 -1
- package/dist/playbook/catalog-loader.js +8 -3
- package/dist/playbook/catalog-loader.js.map +1 -1
- package/dist/playbook/import-mapper.js +4 -5
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/poller/pr-readiness-core.js +226 -29
- package/dist/poller/pr-readiness-core.js.map +1 -1
- package/dist/revisium/inbox.service.js +0 -24
- package/dist/revisium/inbox.service.js.map +1 -1
- package/dist/revisium/playbooks.service.js +15 -2
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/revisium.module.js +0 -12
- package/dist/revisium/revisium.module.js.map +1 -1
- package/dist/revisium/roles.service.js +0 -6
- package/dist/revisium/roles.service.js.map +1 -1
- package/dist/revisium/run.service.js +2 -75
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/revisium/tokens.js +0 -4
- package/dist/revisium/tokens.js.map +1 -1
- package/dist/run/append-event.js +6 -37
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/block-run.js.map +1 -1
- package/dist/run/cancel-run.js +0 -33
- package/dist/run/cancel-run.js.map +1 -1
- package/dist/run/complete-run.js.map +1 -1
- package/dist/run/create-run.js +5 -8
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/fail-run.js +0 -3
- package/dist/run/fail-run.js.map +1 -1
- package/dist/run/inspect-run.js +10 -29
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/issue-ref.js +88 -0
- package/dist/run/issue-ref.js.map +1 -0
- package/dist/run/run-outputs.js +0 -19
- package/dist/run/run-outputs.js.map +1 -1
- package/dist/run/terminal-run-status.js +0 -12
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +2 -13
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/codex.service.js +2 -11
- package/dist/runners/codex.service.js.map +1 -1
- package/dist/runners/gh-identity.js +0 -52
- package/dist/runners/gh-identity.js.map +1 -1
- package/dist/runners/integrator-branch-naming.js +16 -19
- package/dist/runners/integrator-branch-naming.js.map +1 -1
- package/dist/runners/integrator-git.js +0 -25
- package/dist/runners/integrator-git.js.map +1 -1
- package/dist/runners/integrator-remote.js +0 -2
- package/dist/runners/integrator-remote.js.map +1 -1
- package/dist/runners/integrator-types.js +0 -7
- package/dist/runners/integrator-types.js.map +1 -1
- package/dist/runners/integrator.js +231 -230
- package/dist/runners/integrator.js.map +1 -1
- package/dist/runners/runner.module.js +0 -6
- package/dist/runners/runner.module.js.map +1 -1
- package/dist/runners/tokens.js +0 -4
- package/dist/runners/tokens.js.map +1 -1
- package/dist/runners/worktree.service.js +3 -19
- package/dist/runners/worktree.service.js.map +1 -1
- package/dist/task-control-plane/pr-readiness.service.js +15 -13
- package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
- package/dist/task-control-plane/run-watch.service.js +170 -63
- package/dist/task-control-plane/run-watch.service.js.map +1 -1
- package/dist/task-control-plane/task-control-plane-api.service.js +285 -40
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/worker/artifact-store.js +21 -3
- package/dist/worker/artifact-store.js.map +1 -1
- package/dist/worker/build-context.js +10 -10
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +76 -48
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/codex-runner.js +128 -35
- package/dist/worker/codex-runner.js.map +1 -1
- package/dist/worker/git-worktree-manager.js +20 -67
- package/dist/worker/git-worktree-manager.js.map +1 -1
- package/dist/worker/process-executor.js +144 -27
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/result-envelope.js +33 -49
- package/dist/worker/result-envelope.js.map +1 -1
- package/dist/worker/runner-common.js +29 -0
- package/dist/worker/runner-common.js.map +1 -1
- package/dist/worker/runner-dispatch.js +0 -3
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js +16 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +0 -7
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline-core/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline-core/index.ts"],"names":[],"mappings":"AAWA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -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
|
|
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;
|
|
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 =
|
|
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);
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAeH,uGAAuG;AACvG,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,kBAAkB,GAAsC;IAC5D,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,IAAU;IAC1B,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,QAAQ;QACtB,IAAI,CAAC,IAAI,KAAK,WAAW;QACzB,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,IAAI,CAAC,IAAI,KAAK,UAAU;QACxB,IAAI,CAAC,IAAI,KAAK,UAAU,CACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtF,OAAO,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACzF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAClB,QAAkB,EAClB,KAAe,EACf,UAAkC;IAElC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,qGAAqG;IACrG,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,wEAAwE;IACxE,OAAO,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,gFAAgF;AAChF,uFAAuF;AACvF,gFAAgF;AAEhF,SAAS,SAAS,CAChB,QAAkB,EAClB,IAAU,EACV,KAAe,EACf,UAAkC;IAElC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,4FAA4F;YAC5F,yFAAyF;YACzF,4CAA4C;YAC5C,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/F,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACpD,CAAC;QAEJ,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAExD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,qFAAqF;YACrF,IAAI,UAAU,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,cAAc,CAAC,QAAQ,IAAI,CAAC,EAAE,8CAA8C,CAAC,CAAC;gBAC1F,CAAC;gBACD,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/E,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/E,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAEtD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,UAAU,EAAE,YAAY,IAAI,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACxF,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,UAAU;YACb,yFAAyF;YACzF,iFAAiF;YACjF,MAAM,IAAI,cAAc,CAAC,gCAAgC,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,SAAS,WAAW,CAClB,QAAkB,EAClB,IAAiD,EACjD,KAAe,EACf,UAAkC;IAElC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,CAAC;IAEpC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,+FAA+F;IAC/F,MAAM,IAAI,GAAG,UAAU,EAAE,SAAS,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,IAAI,OAAO;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC;IACzC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,6FAA6F;QAC7F,OAAO;YACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;YACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;SACjD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,cAAc,CAAC,QAAQ,IAAI,CAAC,EAAE,sDAAsD,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IACD,oGAAoG;IACpG,MAAM,IAAI,cAAc,CACtB,QAAQ,IAAI,CAAC,EAAE,yCAAyC,IAAI,IAAI,WAAW,YAAY,CACxF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CACZ,QAAkB,EAClB,MAAc,EACd,KAAe,EACf,QAAgC;IAEhC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxG,MAAM,OAAO,GAAa,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAEzF,IAAI,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,2EAA2E;IAC3E,OAAO,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,8FAA8F;AAC9F,SAAS,IAAI,CACX,QAAkB,EAClB,IAAU,EACV,KAAe;IAEf,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC;gBAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;aACpF,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC;gBAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;aAC1F,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC;gBAChD,QAAQ,EAAE;oBACR,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D;aACF,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC;gBAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;aAC3E,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;gBACjG,QAAQ,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;iBACtC;aACF,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/F,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACpD,CAAC;QACJ;YACE,yEAAyE;YACzE,MAAM,IAAI,cAAc,CAAC,wCAAwC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAe,EAAE,MAAc,EAAE,MAAiB;IAClE,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAChE,CAAC;AAED,sGAAsG;AACtG,SAAS,YAAY,CAAC,UAAkC;IACtD,OAAO,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;AACzF,CAAC;AAED,gFAAgF;AAChF,qEAAqE;AACrE,gFAAgF;AAEhF,SAAS,YAAY,CACnB,QAAkB,EAClB,MAAc,EACd,QAAiE,EACjE,KAAe,EACf,UAAkC;IAElC,IAAI,QAA4B,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAChG,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,cAAc,CAAC,QAAQ,MAAM,2CAA2C,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAe,EACf,KAAe,EACf,UAAkC;IAElC,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,UAAU,EAAE,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACtF,KAAK,YAAY;YACf,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QACvD,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACnE,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAClE,KAAK,KAAK;YACR,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,KAAa;IAClD,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,OAAyC,EACzC,UAA6B;IAE7B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACnD,MAAM,IAAI,GAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,IAAI,UAAU,KAAK,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC7E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uFAAuF;AACvF,SAAS,iBAAiB,CACxB,MAAiD,EACjD,SAAiB,EACjB,QAAgB;IAEhB,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,KAAK,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,iEAAiE;QAC9F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU;IACrC,OAAO,mBAAmB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,gFAAgF;AAChF,oEAAoE;AACpE,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAc,EACd,QAAgC,EAChC,MAAc;IAEd,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,cAAc,CACtB,QAAQ,MAAM,iBAAiB,IAAI,CAAC,KAAK,SAAS,OAAO,CAAC,MAAM,oBAAoB,CACrF,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;AACjC,CAAC;AAED,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS;IAC/B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,QAAkB,EAAE,MAAc;IACpD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,cAAc,CAAC,eAAe,MAAM,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,SAAS,WAAW,CAAC,QAAkB,EAAE,EAAU;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,cAAc,CACtB,+CAA+C,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC"}
|
|
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":"
|
|
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":"
|
|
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;
|
|
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":"
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../../src/pipeline-core/kit/drive.ts"],"names":[],"mappings":"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"}
|