@acpus/runtime 0.8.0 → 0.9.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/dist/.tsbuildinfo +1 -0
- package/dist/admission/input.d.ts +5 -0
- package/dist/admission/input.d.ts.map +1 -0
- package/dist/admission/input.js +17 -0
- package/dist/admission/input.js.map +1 -0
- package/dist/artifacts/rewrite.d.ts +7 -0
- package/dist/artifacts/rewrite.d.ts.map +1 -0
- package/dist/artifacts/rewrite.js +28 -0
- package/dist/artifacts/rewrite.js.map +1 -0
- package/dist/control/agent-overrides.d.ts +4 -0
- package/dist/control/agent-overrides.d.ts.map +1 -0
- package/dist/control/agent-overrides.js +40 -0
- package/dist/control/agent-overrides.js.map +1 -0
- package/dist/daemon/loop.d.ts +16 -0
- package/dist/daemon/loop.d.ts.map +1 -0
- package/dist/daemon/loop.js +191 -0
- package/dist/daemon/loop.js.map +1 -0
- package/dist/daemon/sessions.d.ts +23 -0
- package/dist/daemon/sessions.d.ts.map +1 -0
- package/dist/daemon/sessions.js +190 -0
- package/dist/daemon/sessions.js.map +1 -0
- package/dist/daemon/socket.d.ts +82 -0
- package/dist/daemon/socket.d.ts.map +1 -0
- package/dist/daemon/socket.js +341 -0
- package/dist/daemon/socket.js.map +1 -0
- package/dist/daemon/tick.d.ts +9 -0
- package/dist/daemon/tick.d.ts.map +1 -0
- package/dist/daemon/tick.js +18 -0
- package/dist/daemon/tick.js.map +1 -0
- package/dist/evaluation/admissible.d.ts +2 -0
- package/dist/evaluation/admissible.d.ts.map +1 -0
- package/dist/evaluation/admissible.js +50 -0
- package/dist/evaluation/admissible.js.map +1 -0
- package/dist/evaluation/evaluator.d.ts +14 -0
- package/dist/evaluation/evaluator.d.ts.map +1 -0
- package/dist/evaluation/evaluator.js +34 -0
- package/dist/evaluation/evaluator.js.map +1 -0
- package/dist/evaluation/loop-limit.d.ts +4 -0
- package/dist/evaluation/loop-limit.d.ts.map +1 -0
- package/dist/evaluation/loop-limit.js +9 -0
- package/dist/evaluation/loop-limit.js.map +1 -0
- package/dist/evaluation/schema.d.ts +4 -0
- package/dist/evaluation/schema.d.ts.map +1 -0
- package/dist/evaluation/schema.js +92 -0
- package/dist/evaluation/schema.js.map +1 -0
- package/dist/execution/advance.d.ts +18 -0
- package/dist/execution/advance.d.ts.map +1 -0
- package/dist/execution/advance.js +57 -0
- package/dist/execution/advance.js.map +1 -0
- package/dist/execution/agent-node.d.ts +23 -0
- package/dist/execution/agent-node.d.ts.map +1 -0
- package/dist/execution/agent-node.js +512 -0
- package/dist/execution/agent-node.js.map +1 -0
- package/dist/execution/duration.d.ts +2 -0
- package/dist/execution/duration.d.ts.map +1 -0
- package/dist/execution/duration.js +15 -0
- package/dist/execution/duration.js.map +1 -0
- package/dist/execution/ir.d.ts +3 -0
- package/dist/execution/ir.d.ts.map +1 -0
- package/dist/execution/ir.js +46 -0
- package/dist/execution/ir.js.map +1 -0
- package/dist/execution/scheduler.d.ts +59 -0
- package/dist/execution/scheduler.d.ts.map +1 -0
- package/dist/execution/scheduler.js +306 -0
- package/dist/execution/scheduler.js.map +1 -0
- package/dist/execution/task-executor.d.ts +14 -0
- package/dist/execution/task-executor.d.ts.map +1 -0
- package/dist/execution/task-executor.js +186 -0
- package/dist/execution/task-executor.js.map +1 -0
- package/dist/hooks/config.d.ts +32 -0
- package/dist/hooks/config.d.ts.map +1 -0
- package/dist/hooks/config.js +112 -0
- package/dist/hooks/config.js.map +1 -0
- package/dist/hooks/context.d.ts +50 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +116 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/events.d.ts +22 -0
- package/dist/hooks/events.d.ts.map +1 -0
- package/dist/hooks/events.js +41 -0
- package/dist/hooks/events.js.map +1 -0
- package/dist/hooks/journal.d.ts +21 -19
- package/dist/hooks/journal.d.ts.map +1 -1
- package/dist/hooks/journal.js +1 -48
- package/dist/hooks/journal.js.map +1 -1
- package/dist/hooks/loader.d.ts +33 -39
- package/dist/hooks/loader.d.ts.map +1 -1
- package/dist/hooks/loader.js +79 -95
- package/dist/hooks/loader.js.map +1 -1
- package/dist/hooks/runner.d.ts +14 -41
- package/dist/hooks/runner.d.ts.map +1 -1
- package/dist/hooks/runner.js +177 -145
- package/dist/hooks/runner.js.map +1 -1
- package/dist/index.d.ts +13 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -33
- package/dist/index.js.map +1 -1
- package/dist/runs/advance-runtime.d.ts +50 -0
- package/dist/runs/advance-runtime.d.ts.map +1 -0
- package/dist/runs/advance-runtime.js +82 -0
- package/dist/runs/advance-runtime.js.map +1 -0
- package/dist/runs/use-cases.d.ts +111 -0
- package/dist/runs/use-cases.d.ts.map +1 -0
- package/dist/runs/use-cases.js +539 -0
- package/dist/runs/use-cases.js.map +1 -0
- package/dist/scheduler/advance.d.ts +65 -0
- package/dist/scheduler/advance.d.ts.map +1 -0
- package/dist/scheduler/advance.js +435 -0
- package/dist/scheduler/advance.js.map +1 -0
- package/dist/scheduler/control.d.ts +49 -0
- package/dist/scheduler/control.d.ts.map +1 -0
- package/dist/scheduler/control.js +212 -0
- package/dist/scheduler/control.js.map +1 -0
- package/dist/scheduler/event-codec.d.ts +4 -0
- package/dist/scheduler/event-codec.d.ts.map +1 -0
- package/dist/scheduler/event-codec.js +57 -0
- package/dist/scheduler/event-codec.js.map +1 -0
- package/dist/scheduler/events.d.ts +193 -0
- package/dist/scheduler/events.d.ts.map +1 -0
- package/dist/scheduler/events.js +13 -0
- package/dist/scheduler/events.js.map +1 -0
- package/dist/scheduler/fork-seed.d.ts +38 -0
- package/dist/scheduler/fork-seed.d.ts.map +1 -0
- package/dist/scheduler/fork-seed.js +590 -0
- package/dist/scheduler/fork-seed.js.map +1 -0
- package/dist/scheduler/identity.d.ts +8 -0
- package/dist/scheduler/identity.d.ts.map +1 -0
- package/dist/scheduler/identity.js +49 -0
- package/dist/scheduler/identity.js.map +1 -0
- package/dist/scheduler/ir-walk.d.ts +3 -0
- package/dist/scheduler/ir-walk.d.ts.map +1 -0
- package/dist/scheduler/ir-walk.js +25 -0
- package/dist/scheduler/ir-walk.js.map +1 -0
- package/dist/scheduler/limiter.d.ts +7 -0
- package/dist/scheduler/limiter.d.ts.map +1 -0
- package/dist/scheduler/limiter.js +10 -0
- package/dist/scheduler/limiter.js.map +1 -0
- package/dist/scheduler/materialize.d.ts +7 -0
- package/dist/scheduler/materialize.d.ts.map +1 -0
- package/dist/scheduler/materialize.js +756 -0
- package/dist/scheduler/materialize.js.map +1 -0
- package/dist/scheduler/membership.d.ts +12 -0
- package/dist/scheduler/membership.d.ts.map +1 -0
- package/dist/scheduler/membership.js +74 -0
- package/dist/scheduler/membership.js.map +1 -0
- package/dist/scheduler/node-executor.d.ts +15 -0
- package/dist/scheduler/node-executor.d.ts.map +1 -0
- package/dist/scheduler/node-executor.js +69 -0
- package/dist/scheduler/node-executor.js.map +1 -0
- package/dist/scheduler/runtime-runner.d.ts +44 -0
- package/dist/scheduler/runtime-runner.d.ts.map +1 -0
- package/dist/scheduler/runtime-runner.js +155 -0
- package/dist/scheduler/runtime-runner.js.map +1 -0
- package/dist/scheduler/scope.d.ts +6 -0
- package/dist/scheduler/scope.d.ts.map +1 -0
- package/dist/scheduler/scope.js +56 -0
- package/dist/scheduler/scope.js.map +1 -0
- package/dist/scheduler/store-port.d.ts +211 -0
- package/dist/scheduler/store-port.d.ts.map +1 -0
- package/dist/scheduler/store-port.js +28 -0
- package/dist/scheduler/store-port.js.map +1 -0
- package/dist/scheduler/transitions.d.ts +89 -0
- package/dist/scheduler/transitions.d.ts.map +1 -0
- package/dist/scheduler/transitions.js +967 -0
- package/dist/scheduler/transitions.js.map +1 -0
- package/dist/scheduler/types.d.ts +146 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/{executors → scheduler}/types.js.map +1 -1
- package/dist/store/store.d.ts +390 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +3053 -0
- package/dist/store/store.js.map +1 -0
- package/dist/visualization/overlay.d.ts +86 -0
- package/dist/visualization/overlay.d.ts.map +1 -0
- package/dist/visualization/overlay.js +161 -0
- package/dist/visualization/overlay.js.map +1 -0
- package/package.json +19 -37
- package/README.md +0 -7
- package/dist/agent-telemetry.d.ts +0 -56
- package/dist/agent-telemetry.d.ts.map +0 -1
- package/dist/agent-telemetry.js +0 -304
- package/dist/agent-telemetry.js.map +0 -1
- package/dist/artifacts.d.ts +0 -45
- package/dist/artifacts.d.ts.map +0 -1
- package/dist/artifacts.js +0 -163
- package/dist/artifacts.js.map +0 -1
- package/dist/attempt-artifacts.d.ts +0 -35
- package/dist/attempt-artifacts.d.ts.map +0 -1
- package/dist/attempt-artifacts.js +0 -90
- package/dist/attempt-artifacts.js.map +0 -1
- package/dist/client.d.ts +0 -82
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -200
- package/dist/client.js.map +0 -1
- package/dist/evaluator.d.ts +0 -36
- package/dist/evaluator.d.ts.map +0 -1
- package/dist/evaluator.js +0 -101
- package/dist/evaluator.js.map +0 -1
- package/dist/executors/agent.d.ts +0 -103
- package/dist/executors/agent.d.ts.map +0 -1
- package/dist/executors/agent.js +0 -516
- package/dist/executors/agent.js.map +0 -1
- package/dist/executors/mock-program.d.ts +0 -26
- package/dist/executors/mock-program.d.ts.map +0 -1
- package/dist/executors/mock-program.js +0 -100
- package/dist/executors/mock-program.js.map +0 -1
- package/dist/executors/output-preview.d.ts +0 -2
- package/dist/executors/output-preview.d.ts.map +0 -1
- package/dist/executors/output-preview.js +0 -20
- package/dist/executors/output-preview.js.map +0 -1
- package/dist/executors/program.d.ts +0 -30
- package/dist/executors/program.d.ts.map +0 -1
- package/dist/executors/program.js +0 -230
- package/dist/executors/program.js.map +0 -1
- package/dist/executors/types.d.ts +0 -32
- package/dist/executors/types.d.ts.map +0 -1
- package/dist/fork.d.ts +0 -74
- package/dist/fork.d.ts.map +0 -1
- package/dist/fork.js +0 -278
- package/dist/fork.js.map +0 -1
- package/dist/hooks/payload.d.ts +0 -17
- package/dist/hooks/payload.d.ts.map +0 -1
- package/dist/hooks/payload.js +0 -45
- package/dist/hooks/payload.js.map +0 -1
- package/dist/interpreter.d.ts +0 -168
- package/dist/interpreter.d.ts.map +0 -1
- package/dist/interpreter.js +0 -1747
- package/dist/interpreter.js.map +0 -1
- package/dist/keys.d.ts +0 -77
- package/dist/keys.d.ts.map +0 -1
- package/dist/keys.js +0 -382
- package/dist/keys.js.map +0 -1
- package/dist/run-control.d.ts +0 -45
- package/dist/run-control.d.ts.map +0 -1
- package/dist/run-control.js +0 -255
- package/dist/run-control.js.map +0 -1
- package/dist/run-id.d.ts +0 -3
- package/dist/run-id.d.ts.map +0 -1
- package/dist/run-id.js +0 -10
- package/dist/run-id.js.map +0 -1
- package/dist/state-machine.d.ts +0 -31
- package/dist/state-machine.d.ts.map +0 -1
- package/dist/state-machine.js +0 -102
- package/dist/state-machine.js.map +0 -1
- package/dist/store.d.ts +0 -92
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -420
- package/dist/store.js.map +0 -1
- package/dist/supervisor-app.d.ts +0 -27
- package/dist/supervisor-app.d.ts.map +0 -1
- package/dist/supervisor-app.js +0 -694
- package/dist/supervisor-app.js.map +0 -1
- package/dist/supervisor-discovery.d.ts +0 -18
- package/dist/supervisor-discovery.d.ts.map +0 -1
- package/dist/supervisor-discovery.js +0 -180
- package/dist/supervisor-discovery.js.map +0 -1
- package/dist/supervisor-entry.d.ts +0 -11
- package/dist/supervisor-entry.d.ts.map +0 -1
- package/dist/supervisor-entry.js +0 -50
- package/dist/supervisor-entry.js.map +0 -1
- package/dist/supervisor-lock.d.ts +0 -26
- package/dist/supervisor-lock.d.ts.map +0 -1
- package/dist/supervisor-lock.js +0 -49
- package/dist/supervisor-lock.js.map +0 -1
- package/dist/supervisor-runner.d.ts +0 -11
- package/dist/supervisor-runner.d.ts.map +0 -1
- package/dist/supervisor-runner.js +0 -128
- package/dist/supervisor-runner.js.map +0 -1
- package/dist/types.d.ts +0 -375
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -7
- package/dist/types.js.map +0 -1
- package/dist/validate-input.d.ts +0 -27
- package/dist/validate-input.d.ts.map +0 -1
- package/dist/validate-input.js +0 -56
- package/dist/validate-input.js.map +0 -1
- package/dist/validate-signal.d.ts +0 -14
- package/dist/validate-signal.d.ts.map +0 -1
- package/dist/validate-signal.js +0 -31
- package/dist/validate-signal.js.map +0 -1
- package/dist/workflow-context.d.ts +0 -4
- package/dist/workflow-context.d.ts.map +0 -1
- package/dist/workflow-context.js +0 -11
- package/dist/workflow-context.js.map +0 -1
- package/dist/workflow-outputs.d.ts +0 -9
- package/dist/workflow-outputs.d.ts.map +0 -1
- package/dist/workflow-outputs.js +0 -60
- package/dist/workflow-outputs.js.map +0 -1
- /package/dist/{executors → scheduler}/types.js +0 -0
package/dist/fork.js
DELETED
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
import { hashIrNode } from "@acpus/core";
|
|
2
|
-
import { isRunTerminal } from "./types.js";
|
|
3
|
-
import { isNodeKeyAtOrBelow, staticNodePathFromKey } from "./keys.js";
|
|
4
|
-
import { validateInput } from "./validate-input.js";
|
|
5
|
-
import { buildWorkflowExpressionContext } from "./workflow-context.js";
|
|
6
|
-
/**
|
|
7
|
-
* Walk a checkpoint Node Key up its static ancestor chain until the ancestor
|
|
8
|
-
* is a top-level Node (parent is the workflow root pipeline) or the workflow
|
|
9
|
-
* root itself. Used so the default Fork Origin never points inside a
|
|
10
|
-
* Composite's body, mirroring the constraint enforced on operator overrides
|
|
11
|
-
* (see ADR-0007 / CONTEXT.md `Fork Origin`).
|
|
12
|
-
*
|
|
13
|
-
* Lifts ONLY when the checkpoint's static path resolves to a Node nested
|
|
14
|
-
* inside a Composite body (`parallel`, `fanout`, `if`, `loop`, `switch`,
|
|
15
|
-
* `subworkflow`). Top-level Nodes and Composite Nodes themselves are returned
|
|
16
|
-
* as-is. Unknown Node Keys (boundary "missing-in-new-spec") fall back to the
|
|
17
|
-
* checkpoint key — those will be re-resolved by the operator anyway.
|
|
18
|
-
*/
|
|
19
|
-
function liftOutOfComposite(nodeKey, irIndex) {
|
|
20
|
-
const staticPath = staticNodePathFromKey(nodeKey);
|
|
21
|
-
const segments = staticPath.split("/");
|
|
22
|
-
let sawGenerated = false;
|
|
23
|
-
for (let i = segments.length; i >= 1; i--) {
|
|
24
|
-
const candidatePath = segments.slice(0, i).join("/");
|
|
25
|
-
const entry = irIndex.get(candidatePath);
|
|
26
|
-
if (!entry)
|
|
27
|
-
continue;
|
|
28
|
-
if (entry.node.metadata.generated === true) {
|
|
29
|
-
sawGenerated = true;
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
if (!entry.parentKind) {
|
|
33
|
-
return candidatePath;
|
|
34
|
-
}
|
|
35
|
-
if (entry.parentKind === "pipeline" && entry.parentGenerated !== true && (!sawGenerated || isCompositeKind(entry.node.kind))) {
|
|
36
|
-
return candidatePath;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return nodeKey;
|
|
40
|
-
}
|
|
41
|
-
function isCompositeKind(kind) {
|
|
42
|
-
return kind === "pipeline" || kind === "parallel" || kind === "fanout" || kind === "if" || kind === "switch" || kind === "loop" || kind === "subworkflow";
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Walk the IR collecting one entry per static Node, keyed by its joined
|
|
46
|
-
* `nodePath`. Composite container Nodes are themselves indexed (so they can
|
|
47
|
-
* appear in the "valid Fork Origin" set when their parent is a pipeline);
|
|
48
|
-
* Nodes nested inside Composite bodies (parallel/fanout/if/loop/switch) are also
|
|
49
|
-
* indexed but flagged as not eligible for Fork Origin via parentKind.
|
|
50
|
-
*/
|
|
51
|
-
function indexIrNodes(ir) {
|
|
52
|
-
const out = new Map();
|
|
53
|
-
const visit = (node, parentKind, parentGenerated) => {
|
|
54
|
-
out.set(node.nodePath.join("/"), { node, parentKind, parentGenerated });
|
|
55
|
-
for (const child of node.children ?? []) {
|
|
56
|
-
visit(child, node.kind, node.metadata.generated === true);
|
|
57
|
-
}
|
|
58
|
-
for (const branch of node.branches ?? []) {
|
|
59
|
-
visit(branch.child, node.kind, node.metadata.generated === true);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
visit(ir.root);
|
|
63
|
-
return out;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Compute the fork plan. Pure: never mutates state and never creates Runs.
|
|
67
|
-
*
|
|
68
|
-
* @param prior prior Run metadata (must be in a terminal state)
|
|
69
|
-
* @param checkpoints prior Run's ordered Run Checkpoints
|
|
70
|
-
* @param priorNodeStates source Run node states, used for control-flow ancestor hashes
|
|
71
|
-
* @param newIr compiled IR of the new (possibly modified) Workflow Spec
|
|
72
|
-
* @param overrideOriginNodeKey optional operator-specified Fork Origin
|
|
73
|
-
*/
|
|
74
|
-
function computeForkPlan(prior, checkpoints, priorNodeStates, newIr, overrideOriginNodeKey) {
|
|
75
|
-
if (!isRunTerminal(prior.status)) {
|
|
76
|
-
throw new ForkError(`Cannot fork run ${prior.runId}: source Run is in non-terminal state '${prior.status}'`);
|
|
77
|
-
}
|
|
78
|
-
const irIndex = indexIrNodes(newIr);
|
|
79
|
-
const inheritedNodeKeys = [];
|
|
80
|
-
let defaultOrigin;
|
|
81
|
-
let boundaryReason = "all-completed";
|
|
82
|
-
for (const checkpoint of checkpoints) {
|
|
83
|
-
const staticPath = staticNodePathFromKey(checkpoint.nodeKey);
|
|
84
|
-
const irEntry = irIndex.get(staticPath);
|
|
85
|
-
if (!irEntry) {
|
|
86
|
-
defaultOrigin = liftOutOfComposite(checkpoint.nodeKey, irIndex);
|
|
87
|
-
boundaryReason = "missing-in-new-spec";
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
const changedBranchingAncestor = changedBranchingAncestorNodeKey(checkpoint.nodeKey, irIndex, priorNodeStates, newIr);
|
|
91
|
-
if (changedBranchingAncestor) {
|
|
92
|
-
defaultOrigin = liftOutOfComposite(changedBranchingAncestor, irIndex);
|
|
93
|
-
boundaryReason = "hash-mismatch";
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
if (checkpoint.state !== "completed") {
|
|
97
|
-
defaultOrigin = liftOutOfComposite(checkpoint.nodeKey, irIndex);
|
|
98
|
-
boundaryReason = "non-completed";
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
const newHash = hashIrNode(irEntry.node, { workflow: buildWorkflowExpressionContext(newIr) });
|
|
102
|
-
if (newHash !== checkpoint.definitionHash) {
|
|
103
|
-
defaultOrigin = liftOutOfComposite(checkpoint.nodeKey, irIndex);
|
|
104
|
-
boundaryReason = "hash-mismatch";
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
inheritedNodeKeys.push(checkpoint.nodeKey);
|
|
108
|
-
}
|
|
109
|
-
if (!defaultOrigin) {
|
|
110
|
-
// Every checkpoint inherited. The fork origin is the first Node not yet
|
|
111
|
-
// covered by checkpoints — i.e. the next not-yet-inherited Node in the new
|
|
112
|
-
// IR. We can't pinpoint that statically (the schedule depends on dynamic
|
|
113
|
-
// context), so use the workflow root as the fallback origin: applyFork
|
|
114
|
-
// simply does not pre-mark any further inheritance, and the interpreter
|
|
115
|
-
// proceeds with normal Node-by-Node execution which short-circuits on the
|
|
116
|
-
// already-inherited completed nodes.
|
|
117
|
-
defaultOrigin = newIr.root.nodePath.join("/");
|
|
118
|
-
}
|
|
119
|
-
const defaultForkOriginNodeKey = defaultOrigin;
|
|
120
|
-
const forkOriginNodeKey = overrideOriginNodeKey ?? defaultForkOriginNodeKey;
|
|
121
|
-
const reason = overrideOriginNodeKey ? "operator-override" : boundaryReason;
|
|
122
|
-
// Validate operator override: it MUST address a Node that exists in the new
|
|
123
|
-
// IR and whose parent is a pipeline (top-level or directly under a
|
|
124
|
-
// pipeline-kind container). Composite-body Nodes are forbidden.
|
|
125
|
-
if (overrideOriginNodeKey) {
|
|
126
|
-
const overrideStatic = staticNodePathFromKey(overrideOriginNodeKey);
|
|
127
|
-
const overrideEntry = irIndex.get(overrideStatic);
|
|
128
|
-
if (!overrideEntry) {
|
|
129
|
-
throw new ForkError(`Fork origin override '${overrideOriginNodeKey}' has no matching Node in the new Workflow Spec`);
|
|
130
|
-
}
|
|
131
|
-
if (overrideEntry.parentKind && overrideEntry.parentKind !== "pipeline") {
|
|
132
|
-
throw new ForkError(`Fork origin override '${overrideOriginNodeKey}' is inside a Composite '${overrideEntry.parentKind}' body; choose the surrounding Composite or an ancestor instead`);
|
|
133
|
-
}
|
|
134
|
-
// Drop every inherited Node from the first occurrence of the override (or
|
|
135
|
-
// any descendant of it) onward. Because checkpoints are monotone in
|
|
136
|
-
// completion time, anything appearing later in the inherited list may
|
|
137
|
-
// have consumed state produced at or below the override and MUST be
|
|
138
|
-
// re-executed. Independent siblings that happened to complete before the
|
|
139
|
-
// override remain inherited.
|
|
140
|
-
const overrideIndex = inheritedNodeKeys.findIndex((key) => {
|
|
141
|
-
return isNodeKeyAtOrBelow(key, overrideStatic);
|
|
142
|
-
});
|
|
143
|
-
if (overrideIndex >= 0) {
|
|
144
|
-
inheritedNodeKeys.splice(overrideIndex);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return {
|
|
148
|
-
sourceRunId: prior.runId,
|
|
149
|
-
inheritedNodeKeys,
|
|
150
|
-
defaultForkOriginNodeKey,
|
|
151
|
-
forkOriginNodeKey,
|
|
152
|
-
boundaryReason: reason
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
export function planForkedRun(store, options) {
|
|
156
|
-
const source = readForkSource(store, options.sourceRunId);
|
|
157
|
-
return computeForkPlan(source.prior, source.checkpoints, source.nodeStates, options.ir, options.overrideOriginNodeKey);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Materialize a Forked Run on disk. The caller is expected to have already
|
|
161
|
-
* computed or accepted a Fork Plan. This routine copies the inherited Node
|
|
162
|
-
* states and artifacts from the source Run into the new Run, and registers
|
|
163
|
-
* each as a Run Checkpoint in the new Run's index.
|
|
164
|
-
*/
|
|
165
|
-
function applyFork(store, forkRunId, plan) {
|
|
166
|
-
for (const nodeKey of plan.inheritedNodeKeys) {
|
|
167
|
-
store.inheritNodeFromRun(forkRunId, plan.sourceRunId, nodeKey);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Materialize a Forked Run on disk from a previously computed Fork Plan.
|
|
172
|
-
*
|
|
173
|
-
* This is the stateful counterpart to {@link planForkedRun}: it creates the
|
|
174
|
-
* new Run, inherits the source input unless the operator supplied an override,
|
|
175
|
-
* copies inherited Node states and artifacts through RunStore, and persists
|
|
176
|
-
* immediate prior lineage on the new Run.
|
|
177
|
-
*/
|
|
178
|
-
export function materializeForkedRun(store, options) {
|
|
179
|
-
const plan = options.plan ?? planForkedRun(store, {
|
|
180
|
-
sourceRunId: options.sourceRunId,
|
|
181
|
-
ir: options.ir,
|
|
182
|
-
overrideOriginNodeKey: options.overrideOriginNodeKey
|
|
183
|
-
});
|
|
184
|
-
if (plan.sourceRunId !== options.sourceRunId) {
|
|
185
|
-
throw new ForkError(`Fork Plan source Run '${plan.sourceRunId}' does not match requested source Run '${options.sourceRunId}'`);
|
|
186
|
-
}
|
|
187
|
-
const sourceInput = store.readInput(plan.sourceRunId) ?? {};
|
|
188
|
-
const input = validateInput(options.ir.input, options.input ?? sourceInput);
|
|
189
|
-
const run = store.initRun(options.forkRunId, options.ir, input, {
|
|
190
|
-
workflowRef: options.workflowRef,
|
|
191
|
-
workflowSourcePath: options.workflowSourcePath,
|
|
192
|
-
agentOverrides: options.agentOverrides,
|
|
193
|
-
submissionWarnings: options.submissionWarnings,
|
|
194
|
-
skipHooks: options.skipHooks
|
|
195
|
-
});
|
|
196
|
-
try {
|
|
197
|
-
applyFork(store, options.forkRunId, plan);
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
200
|
-
const meta = store.readRunMeta(options.forkRunId);
|
|
201
|
-
if (meta) {
|
|
202
|
-
meta.status = "cancelled";
|
|
203
|
-
meta.updatedAt = new Date().toISOString();
|
|
204
|
-
meta.lineage = {
|
|
205
|
-
sourceRunId: plan.sourceRunId,
|
|
206
|
-
forkOriginNodeKey: plan.forkOriginNodeKey,
|
|
207
|
-
inheritedNodeCount: 0
|
|
208
|
-
};
|
|
209
|
-
store.writeRunMeta(options.forkRunId, meta);
|
|
210
|
-
}
|
|
211
|
-
throw error;
|
|
212
|
-
}
|
|
213
|
-
const meta = store.readRunMeta(options.forkRunId);
|
|
214
|
-
if (meta) {
|
|
215
|
-
meta.lineage = {
|
|
216
|
-
sourceRunId: plan.sourceRunId,
|
|
217
|
-
forkOriginNodeKey: plan.forkOriginNodeKey,
|
|
218
|
-
inheritedNodeCount: plan.inheritedNodeKeys.length
|
|
219
|
-
};
|
|
220
|
-
// Inherit the source Run's frozen hook configuration so the Forked Run
|
|
221
|
-
// observes and injects under the same hooks as its origin.
|
|
222
|
-
const hookSnapshot = store.readHookConfig(plan.sourceRunId);
|
|
223
|
-
if (hookSnapshot) {
|
|
224
|
-
store.writeHookConfig(options.forkRunId, hookSnapshot);
|
|
225
|
-
meta.hookConfigHash = hookSnapshot.hash;
|
|
226
|
-
}
|
|
227
|
-
store.writeRunMeta(options.forkRunId, meta);
|
|
228
|
-
}
|
|
229
|
-
// Re-read the run meta after writing lineage so the returned object
|
|
230
|
-
// includes the lineage (M5 fix).
|
|
231
|
-
const updatedMeta = store.readRunMeta(options.forkRunId);
|
|
232
|
-
return { run: updatedMeta ?? run, plan, input };
|
|
233
|
-
}
|
|
234
|
-
function readForkSource(store, sourceRunId) {
|
|
235
|
-
const prior = store.readRunMeta(sourceRunId);
|
|
236
|
-
if (!prior) {
|
|
237
|
-
throw new ForkError(`Run not found: ${sourceRunId}`);
|
|
238
|
-
}
|
|
239
|
-
if (!isRunTerminal(prior.status)) {
|
|
240
|
-
throw new ForkError(`Cannot fork run ${prior.runId}: source Run is in non-terminal state '${prior.status}'`);
|
|
241
|
-
}
|
|
242
|
-
if (!store.hasCheckpointIndex(sourceRunId)) {
|
|
243
|
-
throw new ForkError("Run has no checkpoint index");
|
|
244
|
-
}
|
|
245
|
-
return {
|
|
246
|
-
prior,
|
|
247
|
-
checkpoints: store.readCheckpoints(sourceRunId),
|
|
248
|
-
nodeStates: new Map(store.listNodeStates(sourceRunId).map((state) => [state.nodeKey, state]))
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
function changedBranchingAncestorNodeKey(nodeKey, irIndex, priorNodeStates, newIr) {
|
|
252
|
-
const workflow = buildWorkflowExpressionContext(newIr);
|
|
253
|
-
const staticPath = staticNodePathFromKey(nodeKey);
|
|
254
|
-
const segments = staticPath.split("/");
|
|
255
|
-
for (let i = 1; i < segments.length; i++) {
|
|
256
|
-
const ancestorStaticPath = segments.slice(0, i).join("/");
|
|
257
|
-
const ancestor = irIndex.get(ancestorStaticPath)?.node;
|
|
258
|
-
if (ancestor?.kind !== "if" && ancestor?.kind !== "switch")
|
|
259
|
-
continue;
|
|
260
|
-
const ancestorNodeKey = nodeKeyWithSameDynamics(nodeKey, ancestorStaticPath);
|
|
261
|
-
const priorState = priorNodeStates.get(ancestorNodeKey);
|
|
262
|
-
if (priorState?.definitionHash && priorState.definitionHash !== hashIrNode(ancestor, { workflow })) {
|
|
263
|
-
return ancestorNodeKey;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return undefined;
|
|
267
|
-
}
|
|
268
|
-
function nodeKeyWithSameDynamics(nodeKey, staticPath) {
|
|
269
|
-
const dynamicSegments = nodeKey.split("/").filter((segment) => /^(item|lane|round|branch):/u.test(segment));
|
|
270
|
-
return [staticPath, ...dynamicSegments].join("/");
|
|
271
|
-
}
|
|
272
|
-
export class ForkError extends Error {
|
|
273
|
-
constructor(message) {
|
|
274
|
-
super(message);
|
|
275
|
-
this.name = "ForkError";
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
//# sourceMappingURL=fork.js.map
|
package/dist/fork.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/payload.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { AcpusIr, HookPayload, IrNode } from "@acpus/core";
|
|
2
|
-
import type { ExpressionContext, NodeExecutionState, NodeKeyDynamic, RunState } from "../types.js";
|
|
3
|
-
/** Run-scoped fields shared by every payload built during a Run. */
|
|
4
|
-
export interface RunScope {
|
|
5
|
-
runId: string;
|
|
6
|
-
workflowName: string;
|
|
7
|
-
workflowSourcePath: string;
|
|
8
|
-
workflowSourceDir: string;
|
|
9
|
-
cwd: string;
|
|
10
|
-
}
|
|
11
|
-
/** Derive the run scope once per Run from the frozen IR and metadata. */
|
|
12
|
-
export declare function runScope(ir: AcpusIr, meta: RunState): RunScope;
|
|
13
|
-
/** Base payload carrying the common fields for any hook event/injector. */
|
|
14
|
-
export declare function basePayload(scope: RunScope, hookEventName: string): HookPayload;
|
|
15
|
-
/** Attach node-level identity and dynamic-context fields to a payload. */
|
|
16
|
-
export declare function withNodeFields(payload: HookPayload, node: IrNode, nodeKey: string, state: NodeExecutionState | undefined, dynamic: NodeKeyDynamic, ctx?: ExpressionContext): HookPayload;
|
|
17
|
-
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/hooks/payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnG,oEAAoE;AACpE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAS9D;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CAU/E;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,OAAO,EAAE,cAAc,EACvB,GAAG,CAAC,EAAE,iBAAiB,GACtB,WAAW,CAUb"}
|
package/dist/hooks/payload.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/** Derive the run scope once per Run from the frozen IR and metadata. */
|
|
2
|
-
export function runScope(ir, meta) {
|
|
3
|
-
const sourcePath = meta.workflowSourcePath ?? ir.source.path ?? "";
|
|
4
|
-
return {
|
|
5
|
-
runId: meta.runId,
|
|
6
|
-
workflowName: meta.workflowName,
|
|
7
|
-
workflowSourcePath: sourcePath,
|
|
8
|
-
workflowSourceDir: sourcePath ? dirnameOf(sourcePath) : "",
|
|
9
|
-
cwd: process.cwd()
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
/** Base payload carrying the common fields for any hook event/injector. */
|
|
13
|
-
export function basePayload(scope, hookEventName) {
|
|
14
|
-
return {
|
|
15
|
-
hook_event_name: hookEventName,
|
|
16
|
-
run_id: scope.runId,
|
|
17
|
-
workflow_name: scope.workflowName,
|
|
18
|
-
workflow_source_path: scope.workflowSourcePath,
|
|
19
|
-
workflow_source_dir: scope.workflowSourceDir,
|
|
20
|
-
cwd: scope.cwd,
|
|
21
|
-
timestamp: new Date().toISOString()
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
/** Attach node-level identity and dynamic-context fields to a payload. */
|
|
25
|
-
export function withNodeFields(payload, node, nodeKey, state, dynamic, ctx) {
|
|
26
|
-
payload.node_key = nodeKey;
|
|
27
|
-
payload.node_id = node.id;
|
|
28
|
-
payload.node_kind = node.kind;
|
|
29
|
-
if (state?.attempt !== undefined)
|
|
30
|
-
payload.node_attempt = state.attempt;
|
|
31
|
-
if (dynamic.loopRound !== undefined)
|
|
32
|
-
payload.loop_round = dynamic.loopRound;
|
|
33
|
-
if (dynamic.fanoutItemId !== undefined)
|
|
34
|
-
payload.fanout_item_id = dynamic.fanoutItemId;
|
|
35
|
-
if (dynamic.laneId !== undefined)
|
|
36
|
-
payload.parallel_lane_id = dynamic.laneId;
|
|
37
|
-
if (ctx?.item_index !== undefined)
|
|
38
|
-
payload.fanout_item_index = ctx.item_index;
|
|
39
|
-
return payload;
|
|
40
|
-
}
|
|
41
|
-
function dirnameOf(p) {
|
|
42
|
-
const idx = p.lastIndexOf("/");
|
|
43
|
-
return idx > 0 ? p.slice(0, idx) : idx === 0 ? "/" : "";
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=payload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/hooks/payload.ts"],"names":[],"mappings":"AAYA,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,EAAW,EAAE,IAAc;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACnE,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,kBAAkB,EAAE,UAAU;QAC9B,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,aAAqB;IAChE,OAAO;QACL,eAAe,EAAE,aAAa;QAC9B,MAAM,EAAE,KAAK,CAAC,KAAK;QACnB,aAAa,EAAE,KAAK,CAAC,YAAY;QACjC,oBAAoB,EAAE,KAAK,CAAC,kBAAkB;QAC9C,mBAAmB,EAAE,KAAK,CAAC,iBAAiB;QAC5C,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAC5B,OAAoB,EACpB,IAAY,EACZ,OAAe,EACf,KAAqC,EACrC,OAAuB,EACvB,GAAuB;IAEvB,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC3B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,KAAK,EAAE,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;IACvE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5E,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IACtF,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5E,IAAI,GAAG,EAAE,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,CAAC;IAC9E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
package/dist/interpreter.d.ts
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import type { AcpusIr } from "@acpus/core";
|
|
2
|
-
import type { InterpreterOptions, RunOptions } from "./types.js";
|
|
3
|
-
import { RunStore } from "./store.js";
|
|
4
|
-
import type { AgentExecutionRequest, ExecutorAdapter, ProgramExecutionRequest } from "./executors/types.js";
|
|
5
|
-
import type { ReplayResult } from "./types.js";
|
|
6
|
-
/**
|
|
7
|
-
* The core IR interpreter that drives state transitions, orchestrates
|
|
8
|
-
* execution, and persists state.
|
|
9
|
-
*/
|
|
10
|
-
export declare class WorkflowInterpreter {
|
|
11
|
-
private readonly store;
|
|
12
|
-
private readonly evaluator;
|
|
13
|
-
private readonly agentExecutor;
|
|
14
|
-
private readonly programExecutor;
|
|
15
|
-
private readonly artifactStore;
|
|
16
|
-
private readonly attemptArtifacts;
|
|
17
|
-
private readonly runControl;
|
|
18
|
-
private readonly maxConcurrency;
|
|
19
|
-
private readonly sleep;
|
|
20
|
-
/** Frozen hook runner for this Run; undefined disables all hook machinery. */
|
|
21
|
-
private readonly hookRunner?;
|
|
22
|
-
/** Lazily-created per-Run injector journal (only when injectors fire). */
|
|
23
|
-
private hookJournal?;
|
|
24
|
-
/**
|
|
25
|
-
* Per-node leaf execution metadata for hook onNodeComplete/Error payloads,
|
|
26
|
-
* keyed by node key. Populated by executeProgram/executeAgent and deleted by
|
|
27
|
-
* executeNode once the node's terminal lifecycle events have fired, so the map
|
|
28
|
-
* never accumulates across a long-lived Run.
|
|
29
|
-
*/
|
|
30
|
-
private readonly leafMeta;
|
|
31
|
-
/** Pending external-decision resolvers for Signal Nodes awaiting a payload,
|
|
32
|
-
* keyed by "runId:nodeKey". An entry exists only while a node is `awaiting`.
|
|
33
|
-
* The resolver validates the payload against the node's output schema and
|
|
34
|
-
* throws on mismatch, leaving the node `awaiting`. */
|
|
35
|
-
private readonly signalResolvers;
|
|
36
|
-
constructor(store: RunStore, agentExecutor: ExecutorAdapter<AgentExecutionRequest>, programExecutor: ExecutorAdapter<ProgramExecutionRequest>, options?: InterpreterOptions);
|
|
37
|
-
/**
|
|
38
|
-
* Start a new workflow run to completion (init + execute). Convenience for
|
|
39
|
-
* callers that want to await the terminal state.
|
|
40
|
-
*/
|
|
41
|
-
start(ir: AcpusIr, opts: RunOptions): Promise<import("./types.js").RunState>;
|
|
42
|
-
/**
|
|
43
|
-
* Initialize a run (freeze IR + input, write running meta) and return the
|
|
44
|
-
* initial running state synchronously, without executing nodes.
|
|
45
|
-
*/
|
|
46
|
-
initRun(ir: AcpusIr, opts: RunOptions): import("./types.js").RunState;
|
|
47
|
-
/**
|
|
48
|
-
* Execute a previously-initialized run to its terminal state.
|
|
49
|
-
*/
|
|
50
|
-
runToCompletion(ir: AcpusIr, opts: RunOptions, runId: string): Promise<import("./types.js").RunState>;
|
|
51
|
-
/**
|
|
52
|
-
* Reset any nodes persisted as `running` (or `awaiting`) back to `pending`
|
|
53
|
-
* (crash recovery). Safe to call when adopting a Run after a supervisor
|
|
54
|
-
* restart: in-memory abort controllers and signal resolvers are gone, so a
|
|
55
|
-
* node marked `running`/`awaiting` on disk has no live execution and must be
|
|
56
|
-
* re-runnable. An `awaiting` Signal Node re-registers its resolver and waits
|
|
57
|
-
* for a fresh external decision on re-execution.
|
|
58
|
-
*/
|
|
59
|
-
recoverStaleNodes(runId: string): void;
|
|
60
|
-
/**
|
|
61
|
-
* Deterministically replay a persisted Run and verify its reconstructed
|
|
62
|
-
* Node topology.
|
|
63
|
-
*
|
|
64
|
-
* Re-walks the frozen IR snapshot (never the mutable YAML), feeding recorded
|
|
65
|
-
* per-node outputs back into the expression context so control-flow decisions
|
|
66
|
-
* (switch branches, loop rounds, fanout lanes) are re-derived. No agents or
|
|
67
|
-
* programs are executed, no disk writes occur, and the walk is pinned to the
|
|
68
|
-
* recorded runId + a frozen clock for self-determinism. The set of node keys
|
|
69
|
-
* the re-walk reaches is compared against what was persisted; per-node
|
|
70
|
-
* terminal-state and output equivalence are out of scope for this milestone.
|
|
71
|
-
*/
|
|
72
|
-
replay(runId: string): ReplayResult;
|
|
73
|
-
/**
|
|
74
|
-
* Read-only re-walk used by {@link replay}. Mirrors the control-flow dispatch
|
|
75
|
-
* of executeNode but never executes leaves: it replays recorded outputs into
|
|
76
|
-
* the context and records the reconstructed node key → state. Concurrent
|
|
77
|
-
* containers (parallel/fanout) descend only into the lanes/branches that were
|
|
78
|
-
* actually recorded (racy joins do not run every branch).
|
|
79
|
-
*/
|
|
80
|
-
private replayNode;
|
|
81
|
-
/**
|
|
82
|
-
* Retry a failed executable Node. This is a local repair operation for the
|
|
83
|
-
* target executable only; Run-level retry remains the operation that restores
|
|
84
|
-
* Workflow progress from failed composite ancestors.
|
|
85
|
-
*/
|
|
86
|
-
retryNode(runId: string, nodeKey: string): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Pause an entire Run. Validates Run is `running`, sets scheduling guard,
|
|
89
|
-
* pauses all running nodes, and updates Run metadata to `paused`.
|
|
90
|
-
*/
|
|
91
|
-
pauseRun(runId: string): void;
|
|
92
|
-
/**
|
|
93
|
-
* Cancel an entire Run. Validates Run is `running` or `paused`, sets
|
|
94
|
-
* scheduling guard, cancels running nodes, marks pending nodes as cancelled,
|
|
95
|
-
* and updates Run metadata to `cancelled`.
|
|
96
|
-
*/
|
|
97
|
-
cancelRun(runId: string): void;
|
|
98
|
-
/**
|
|
99
|
-
* Resume an entire paused Run. Validates Run is `paused`, clears scheduling
|
|
100
|
-
* guards, recovers stale nodes, and re-executes from root.
|
|
101
|
-
*/
|
|
102
|
-
resumeRun(runId: string): Promise<void>;
|
|
103
|
-
/**
|
|
104
|
-
* Retry a failed Run. Validates Run is `failed`, resets failed materialized
|
|
105
|
-
* nodes to pending (preserving completed), clears scheduling guards, and
|
|
106
|
-
* re-executes from root. Same Run ID, no new Run.
|
|
107
|
-
*/
|
|
108
|
-
retryRun(runId: string): void;
|
|
109
|
-
private executeNode;
|
|
110
|
-
private executePipeline;
|
|
111
|
-
private executeAgent;
|
|
112
|
-
private executeProgram;
|
|
113
|
-
private publishRunningAgentAttempt;
|
|
114
|
-
private publishRenderedAgentSessionKey;
|
|
115
|
-
private publishRenderedPrompt;
|
|
116
|
-
private publishAgentTelemetry;
|
|
117
|
-
private syncAgentTelemetryFromDisk;
|
|
118
|
-
private executeParallel;
|
|
119
|
-
private executeFanout;
|
|
120
|
-
private waitForFanout;
|
|
121
|
-
private materializePendingNode;
|
|
122
|
-
private executeSwitch;
|
|
123
|
-
private executeIf;
|
|
124
|
-
private executeLoop;
|
|
125
|
-
private executeGuard;
|
|
126
|
-
private executeSignal;
|
|
127
|
-
/**
|
|
128
|
-
* Submit an external decision payload to a Signal Node that is currently
|
|
129
|
-
* `awaiting`. Validates the payload against the node's output schema (when
|
|
130
|
-
* declared) and resolves the in-memory promise registered by executeSignal,
|
|
131
|
-
* which lets executeNode transition the node `awaiting → completed` with the
|
|
132
|
-
* payload as output. Throws if the node is not awaiting (no live resolver) or
|
|
133
|
-
* if the payload fails schema validation (the node stays `awaiting`).
|
|
134
|
-
*/
|
|
135
|
-
submitSignal(runId: string, nodeKey: string, payload: unknown): void;
|
|
136
|
-
private executeSubworkflow;
|
|
137
|
-
private resolveExistingSourcePath;
|
|
138
|
-
private withExecutionContext;
|
|
139
|
-
private buildContext;
|
|
140
|
-
private hydrateContextForNodeRetry;
|
|
141
|
-
/** Extract the parent dynamic value-context (fanout item / loop round) from a context, if any. */
|
|
142
|
-
private captureDynamicContext;
|
|
143
|
-
/** Merge a persisted dynamic value-context back into a rebuilt context (retry/continuation). */
|
|
144
|
-
private restoreDynamicContext;
|
|
145
|
-
private findNodeByKey;
|
|
146
|
-
private findNodeByPath;
|
|
147
|
-
private extractItemId;
|
|
148
|
-
/** Run scope for the active Run, derived from the frozen IR + metadata. */
|
|
149
|
-
private resolveRunScope;
|
|
150
|
-
/** Lazily create the per-Run injector journal. */
|
|
151
|
-
private journalFor;
|
|
152
|
-
private runInjector;
|
|
153
|
-
private emitNodeLifecycle;
|
|
154
|
-
private emitRunEvent;
|
|
155
|
-
/** Recover the dynamic key dimensions from an expression context. */
|
|
156
|
-
private dynamicFromCtx;
|
|
157
|
-
/**
|
|
158
|
-
* Populate parent_node_key/parent_node_kind from the Run's frozen IR. The
|
|
159
|
-
* parent's resolved key shares this node's dynamic prefix, so we map the
|
|
160
|
-
* static parent path onto the dynamic portion of the child key.
|
|
161
|
-
*/
|
|
162
|
-
private fillParentFields;
|
|
163
|
-
/** Drop per-node leaf metadata once its terminal events have fired. */
|
|
164
|
-
private clearLeafMeta;
|
|
165
|
-
}
|
|
166
|
-
/** Generate a locally sortable run ID: yyyyMMddHHmmss + 20 uppercase hex chars. */
|
|
167
|
-
export declare function generateRunId(now?: Date): string;
|
|
168
|
-
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
|