@acpus/runtime 0.8.0 → 0.9.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/admission/input.d.ts +5 -0
  3. package/dist/admission/input.d.ts.map +1 -0
  4. package/dist/admission/input.js +17 -0
  5. package/dist/admission/input.js.map +1 -0
  6. package/dist/artifacts/rewrite.d.ts +7 -0
  7. package/dist/artifacts/rewrite.d.ts.map +1 -0
  8. package/dist/artifacts/rewrite.js +28 -0
  9. package/dist/artifacts/rewrite.js.map +1 -0
  10. package/dist/control/agent-overrides.d.ts +4 -0
  11. package/dist/control/agent-overrides.d.ts.map +1 -0
  12. package/dist/control/agent-overrides.js +40 -0
  13. package/dist/control/agent-overrides.js.map +1 -0
  14. package/dist/daemon/loop.d.ts +16 -0
  15. package/dist/daemon/loop.d.ts.map +1 -0
  16. package/dist/daemon/loop.js +191 -0
  17. package/dist/daemon/loop.js.map +1 -0
  18. package/dist/daemon/sessions.d.ts +23 -0
  19. package/dist/daemon/sessions.d.ts.map +1 -0
  20. package/dist/daemon/sessions.js +190 -0
  21. package/dist/daemon/sessions.js.map +1 -0
  22. package/dist/daemon/socket.d.ts +82 -0
  23. package/dist/daemon/socket.d.ts.map +1 -0
  24. package/dist/daemon/socket.js +341 -0
  25. package/dist/daemon/socket.js.map +1 -0
  26. package/dist/daemon/tick.d.ts +9 -0
  27. package/dist/daemon/tick.d.ts.map +1 -0
  28. package/dist/daemon/tick.js +18 -0
  29. package/dist/daemon/tick.js.map +1 -0
  30. package/dist/evaluation/admissible.d.ts +2 -0
  31. package/dist/evaluation/admissible.d.ts.map +1 -0
  32. package/dist/evaluation/admissible.js +50 -0
  33. package/dist/evaluation/admissible.js.map +1 -0
  34. package/dist/evaluation/evaluator.d.ts +14 -0
  35. package/dist/evaluation/evaluator.d.ts.map +1 -0
  36. package/dist/evaluation/evaluator.js +34 -0
  37. package/dist/evaluation/evaluator.js.map +1 -0
  38. package/dist/evaluation/loop-limit.d.ts +4 -0
  39. package/dist/evaluation/loop-limit.d.ts.map +1 -0
  40. package/dist/evaluation/loop-limit.js +9 -0
  41. package/dist/evaluation/loop-limit.js.map +1 -0
  42. package/dist/evaluation/schema.d.ts +4 -0
  43. package/dist/evaluation/schema.d.ts.map +1 -0
  44. package/dist/evaluation/schema.js +92 -0
  45. package/dist/evaluation/schema.js.map +1 -0
  46. package/dist/execution/advance.d.ts +18 -0
  47. package/dist/execution/advance.d.ts.map +1 -0
  48. package/dist/execution/advance.js +57 -0
  49. package/dist/execution/advance.js.map +1 -0
  50. package/dist/execution/agent-node.d.ts +23 -0
  51. package/dist/execution/agent-node.d.ts.map +1 -0
  52. package/dist/execution/agent-node.js +512 -0
  53. package/dist/execution/agent-node.js.map +1 -0
  54. package/dist/execution/duration.d.ts +2 -0
  55. package/dist/execution/duration.d.ts.map +1 -0
  56. package/dist/execution/duration.js +15 -0
  57. package/dist/execution/duration.js.map +1 -0
  58. package/dist/execution/ir.d.ts +3 -0
  59. package/dist/execution/ir.d.ts.map +1 -0
  60. package/dist/execution/ir.js +46 -0
  61. package/dist/execution/ir.js.map +1 -0
  62. package/dist/execution/scheduler.d.ts +59 -0
  63. package/dist/execution/scheduler.d.ts.map +1 -0
  64. package/dist/execution/scheduler.js +306 -0
  65. package/dist/execution/scheduler.js.map +1 -0
  66. package/dist/execution/task-executor.d.ts +14 -0
  67. package/dist/execution/task-executor.d.ts.map +1 -0
  68. package/dist/execution/task-executor.js +186 -0
  69. package/dist/execution/task-executor.js.map +1 -0
  70. package/dist/hooks/config.d.ts +32 -0
  71. package/dist/hooks/config.d.ts.map +1 -0
  72. package/dist/hooks/config.js +112 -0
  73. package/dist/hooks/config.js.map +1 -0
  74. package/dist/hooks/context.d.ts +50 -0
  75. package/dist/hooks/context.d.ts.map +1 -0
  76. package/dist/hooks/context.js +116 -0
  77. package/dist/hooks/context.js.map +1 -0
  78. package/dist/hooks/events.d.ts +22 -0
  79. package/dist/hooks/events.d.ts.map +1 -0
  80. package/dist/hooks/events.js +41 -0
  81. package/dist/hooks/events.js.map +1 -0
  82. package/dist/hooks/journal.d.ts +21 -19
  83. package/dist/hooks/journal.d.ts.map +1 -1
  84. package/dist/hooks/journal.js +1 -48
  85. package/dist/hooks/journal.js.map +1 -1
  86. package/dist/hooks/loader.d.ts +33 -39
  87. package/dist/hooks/loader.d.ts.map +1 -1
  88. package/dist/hooks/loader.js +79 -95
  89. package/dist/hooks/loader.js.map +1 -1
  90. package/dist/hooks/runner.d.ts +14 -41
  91. package/dist/hooks/runner.d.ts.map +1 -1
  92. package/dist/hooks/runner.js +177 -145
  93. package/dist/hooks/runner.js.map +1 -1
  94. package/dist/index.d.ts +13 -28
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +13 -33
  97. package/dist/index.js.map +1 -1
  98. package/dist/runs/advance-runtime.d.ts +50 -0
  99. package/dist/runs/advance-runtime.d.ts.map +1 -0
  100. package/dist/runs/advance-runtime.js +82 -0
  101. package/dist/runs/advance-runtime.js.map +1 -0
  102. package/dist/runs/use-cases.d.ts +111 -0
  103. package/dist/runs/use-cases.d.ts.map +1 -0
  104. package/dist/runs/use-cases.js +539 -0
  105. package/dist/runs/use-cases.js.map +1 -0
  106. package/dist/scheduler/advance.d.ts +65 -0
  107. package/dist/scheduler/advance.d.ts.map +1 -0
  108. package/dist/scheduler/advance.js +435 -0
  109. package/dist/scheduler/advance.js.map +1 -0
  110. package/dist/scheduler/control.d.ts +49 -0
  111. package/dist/scheduler/control.d.ts.map +1 -0
  112. package/dist/scheduler/control.js +212 -0
  113. package/dist/scheduler/control.js.map +1 -0
  114. package/dist/scheduler/event-codec.d.ts +4 -0
  115. package/dist/scheduler/event-codec.d.ts.map +1 -0
  116. package/dist/scheduler/event-codec.js +57 -0
  117. package/dist/scheduler/event-codec.js.map +1 -0
  118. package/dist/scheduler/events.d.ts +193 -0
  119. package/dist/scheduler/events.d.ts.map +1 -0
  120. package/dist/scheduler/events.js +13 -0
  121. package/dist/scheduler/events.js.map +1 -0
  122. package/dist/scheduler/fork-seed.d.ts +38 -0
  123. package/dist/scheduler/fork-seed.d.ts.map +1 -0
  124. package/dist/scheduler/fork-seed.js +590 -0
  125. package/dist/scheduler/fork-seed.js.map +1 -0
  126. package/dist/scheduler/identity.d.ts +8 -0
  127. package/dist/scheduler/identity.d.ts.map +1 -0
  128. package/dist/scheduler/identity.js +49 -0
  129. package/dist/scheduler/identity.js.map +1 -0
  130. package/dist/scheduler/ir-walk.d.ts +3 -0
  131. package/dist/scheduler/ir-walk.d.ts.map +1 -0
  132. package/dist/scheduler/ir-walk.js +25 -0
  133. package/dist/scheduler/ir-walk.js.map +1 -0
  134. package/dist/scheduler/limiter.d.ts +7 -0
  135. package/dist/scheduler/limiter.d.ts.map +1 -0
  136. package/dist/scheduler/limiter.js +10 -0
  137. package/dist/scheduler/limiter.js.map +1 -0
  138. package/dist/scheduler/materialize.d.ts +7 -0
  139. package/dist/scheduler/materialize.d.ts.map +1 -0
  140. package/dist/scheduler/materialize.js +756 -0
  141. package/dist/scheduler/materialize.js.map +1 -0
  142. package/dist/scheduler/membership.d.ts +12 -0
  143. package/dist/scheduler/membership.d.ts.map +1 -0
  144. package/dist/scheduler/membership.js +74 -0
  145. package/dist/scheduler/membership.js.map +1 -0
  146. package/dist/scheduler/node-executor.d.ts +15 -0
  147. package/dist/scheduler/node-executor.d.ts.map +1 -0
  148. package/dist/scheduler/node-executor.js +69 -0
  149. package/dist/scheduler/node-executor.js.map +1 -0
  150. package/dist/scheduler/runtime-runner.d.ts +44 -0
  151. package/dist/scheduler/runtime-runner.d.ts.map +1 -0
  152. package/dist/scheduler/runtime-runner.js +155 -0
  153. package/dist/scheduler/runtime-runner.js.map +1 -0
  154. package/dist/scheduler/scope.d.ts +6 -0
  155. package/dist/scheduler/scope.d.ts.map +1 -0
  156. package/dist/scheduler/scope.js +56 -0
  157. package/dist/scheduler/scope.js.map +1 -0
  158. package/dist/scheduler/store-port.d.ts +211 -0
  159. package/dist/scheduler/store-port.d.ts.map +1 -0
  160. package/dist/scheduler/store-port.js +28 -0
  161. package/dist/scheduler/store-port.js.map +1 -0
  162. package/dist/scheduler/transitions.d.ts +89 -0
  163. package/dist/scheduler/transitions.d.ts.map +1 -0
  164. package/dist/scheduler/transitions.js +967 -0
  165. package/dist/scheduler/transitions.js.map +1 -0
  166. package/dist/scheduler/types.d.ts +146 -0
  167. package/dist/scheduler/types.d.ts.map +1 -0
  168. package/dist/{executors → scheduler}/types.js.map +1 -1
  169. package/dist/store/store.d.ts +390 -0
  170. package/dist/store/store.d.ts.map +1 -0
  171. package/dist/store/store.js +3053 -0
  172. package/dist/store/store.js.map +1 -0
  173. package/dist/visualization/overlay.d.ts +86 -0
  174. package/dist/visualization/overlay.d.ts.map +1 -0
  175. package/dist/visualization/overlay.js +161 -0
  176. package/dist/visualization/overlay.js.map +1 -0
  177. package/package.json +19 -37
  178. package/README.md +0 -7
  179. package/dist/agent-telemetry.d.ts +0 -56
  180. package/dist/agent-telemetry.d.ts.map +0 -1
  181. package/dist/agent-telemetry.js +0 -304
  182. package/dist/agent-telemetry.js.map +0 -1
  183. package/dist/artifacts.d.ts +0 -45
  184. package/dist/artifacts.d.ts.map +0 -1
  185. package/dist/artifacts.js +0 -163
  186. package/dist/artifacts.js.map +0 -1
  187. package/dist/attempt-artifacts.d.ts +0 -35
  188. package/dist/attempt-artifacts.d.ts.map +0 -1
  189. package/dist/attempt-artifacts.js +0 -90
  190. package/dist/attempt-artifacts.js.map +0 -1
  191. package/dist/client.d.ts +0 -82
  192. package/dist/client.d.ts.map +0 -1
  193. package/dist/client.js +0 -200
  194. package/dist/client.js.map +0 -1
  195. package/dist/evaluator.d.ts +0 -36
  196. package/dist/evaluator.d.ts.map +0 -1
  197. package/dist/evaluator.js +0 -101
  198. package/dist/evaluator.js.map +0 -1
  199. package/dist/executors/agent.d.ts +0 -103
  200. package/dist/executors/agent.d.ts.map +0 -1
  201. package/dist/executors/agent.js +0 -516
  202. package/dist/executors/agent.js.map +0 -1
  203. package/dist/executors/mock-program.d.ts +0 -26
  204. package/dist/executors/mock-program.d.ts.map +0 -1
  205. package/dist/executors/mock-program.js +0 -100
  206. package/dist/executors/mock-program.js.map +0 -1
  207. package/dist/executors/output-preview.d.ts +0 -2
  208. package/dist/executors/output-preview.d.ts.map +0 -1
  209. package/dist/executors/output-preview.js +0 -20
  210. package/dist/executors/output-preview.js.map +0 -1
  211. package/dist/executors/program.d.ts +0 -30
  212. package/dist/executors/program.d.ts.map +0 -1
  213. package/dist/executors/program.js +0 -230
  214. package/dist/executors/program.js.map +0 -1
  215. package/dist/executors/types.d.ts +0 -32
  216. package/dist/executors/types.d.ts.map +0 -1
  217. package/dist/fork.d.ts +0 -74
  218. package/dist/fork.d.ts.map +0 -1
  219. package/dist/fork.js +0 -278
  220. package/dist/fork.js.map +0 -1
  221. package/dist/hooks/payload.d.ts +0 -17
  222. package/dist/hooks/payload.d.ts.map +0 -1
  223. package/dist/hooks/payload.js +0 -45
  224. package/dist/hooks/payload.js.map +0 -1
  225. package/dist/interpreter.d.ts +0 -168
  226. package/dist/interpreter.d.ts.map +0 -1
  227. package/dist/interpreter.js +0 -1747
  228. package/dist/interpreter.js.map +0 -1
  229. package/dist/keys.d.ts +0 -77
  230. package/dist/keys.d.ts.map +0 -1
  231. package/dist/keys.js +0 -382
  232. package/dist/keys.js.map +0 -1
  233. package/dist/run-control.d.ts +0 -45
  234. package/dist/run-control.d.ts.map +0 -1
  235. package/dist/run-control.js +0 -255
  236. package/dist/run-control.js.map +0 -1
  237. package/dist/run-id.d.ts +0 -3
  238. package/dist/run-id.d.ts.map +0 -1
  239. package/dist/run-id.js +0 -10
  240. package/dist/run-id.js.map +0 -1
  241. package/dist/state-machine.d.ts +0 -31
  242. package/dist/state-machine.d.ts.map +0 -1
  243. package/dist/state-machine.js +0 -102
  244. package/dist/state-machine.js.map +0 -1
  245. package/dist/store.d.ts +0 -92
  246. package/dist/store.d.ts.map +0 -1
  247. package/dist/store.js +0 -420
  248. package/dist/store.js.map +0 -1
  249. package/dist/supervisor-app.d.ts +0 -27
  250. package/dist/supervisor-app.d.ts.map +0 -1
  251. package/dist/supervisor-app.js +0 -694
  252. package/dist/supervisor-app.js.map +0 -1
  253. package/dist/supervisor-discovery.d.ts +0 -18
  254. package/dist/supervisor-discovery.d.ts.map +0 -1
  255. package/dist/supervisor-discovery.js +0 -180
  256. package/dist/supervisor-discovery.js.map +0 -1
  257. package/dist/supervisor-entry.d.ts +0 -11
  258. package/dist/supervisor-entry.d.ts.map +0 -1
  259. package/dist/supervisor-entry.js +0 -50
  260. package/dist/supervisor-entry.js.map +0 -1
  261. package/dist/supervisor-lock.d.ts +0 -26
  262. package/dist/supervisor-lock.d.ts.map +0 -1
  263. package/dist/supervisor-lock.js +0 -49
  264. package/dist/supervisor-lock.js.map +0 -1
  265. package/dist/supervisor-runner.d.ts +0 -11
  266. package/dist/supervisor-runner.d.ts.map +0 -1
  267. package/dist/supervisor-runner.js +0 -128
  268. package/dist/supervisor-runner.js.map +0 -1
  269. package/dist/types.d.ts +0 -375
  270. package/dist/types.d.ts.map +0 -1
  271. package/dist/types.js +0 -7
  272. package/dist/types.js.map +0 -1
  273. package/dist/validate-input.d.ts +0 -27
  274. package/dist/validate-input.d.ts.map +0 -1
  275. package/dist/validate-input.js +0 -56
  276. package/dist/validate-input.js.map +0 -1
  277. package/dist/validate-signal.d.ts +0 -14
  278. package/dist/validate-signal.d.ts.map +0 -1
  279. package/dist/validate-signal.js +0 -31
  280. package/dist/validate-signal.js.map +0 -1
  281. package/dist/workflow-context.d.ts +0 -4
  282. package/dist/workflow-context.d.ts.map +0 -1
  283. package/dist/workflow-context.js +0 -11
  284. package/dist/workflow-context.js.map +0 -1
  285. package/dist/workflow-outputs.d.ts +0 -9
  286. package/dist/workflow-outputs.d.ts.map +0 -1
  287. package/dist/workflow-outputs.js +0 -60
  288. package/dist/workflow-outputs.js.map +0 -1
  289. /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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"}
@@ -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"}
@@ -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"}
@@ -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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"}