@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.
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/store.js DELETED
@@ -1,420 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { cpSync, existsSync, mkdirSync, rmSync, readdirSync, readFileSync, renameSync, lstatSync, writeFileSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- import { nodeKeyToStorageKey } from "./keys.js";
5
- import { ArtifactReferences } from "./artifacts.js";
6
- import { isUnsafeRunId, validateRunId } from "./run-id.js";
7
- import { isRunTerminal } from "./types.js";
8
- export class RunStore {
9
- baseDir;
10
- indexedRunIds = new Set();
11
- constructor(baseDir) {
12
- this.baseDir = baseDir ?? join(process.cwd(), ".acpus", "state", "runs");
13
- }
14
- // ─── Run lifecycle ─────────────────────────────────────────────
15
- /** Create a new run directory and write IR + input snapshots. */
16
- initRun(runId, ir, input, source) {
17
- validateRunId(runId);
18
- const runDir = this.runDir(runId);
19
- mkdirSync(join(runDir, "nodes"), { recursive: true });
20
- mkdirSync(join(runDir, "artifacts"), { recursive: true });
21
- const irJson = JSON.stringify(ir, null, 2);
22
- const inputJson = JSON.stringify(input, null, 2);
23
- const irDigest = sha256(irJson);
24
- const inputDigest = sha256(inputJson);
25
- writeFileSync(join(runDir, "ir.json"), irJson, "utf8");
26
- writeFileSync(join(runDir, "input.json"), inputJson, "utf8");
27
- const now = new Date().toISOString();
28
- const meta = {
29
- runId,
30
- workflowName: ir.name,
31
- workflowRef: source?.workflowRef,
32
- workflowSourcePath: source?.workflowSourcePath ?? ir.source.path,
33
- status: "running",
34
- irDigest,
35
- inputDigest,
36
- createdAt: now,
37
- updatedAt: now,
38
- runAttempt: 1,
39
- lineage: source?.lineage,
40
- agentOverrides: source?.agentOverrides,
41
- submissionWarnings: source?.submissionWarnings,
42
- skipHooks: source?.skipHooks
43
- };
44
- this.writeRunMeta(runId, meta);
45
- // Empty checkpoints index — appended to as Nodes reach terminal state.
46
- this.atomicWriteJson(this.checkpointsIndexPath(runId), []);
47
- return meta;
48
- }
49
- /** Read the frozen IR snapshot for a run. */
50
- readIr(runId) {
51
- validateRunId(runId);
52
- return this.readJson(join(this.runDir(runId), "ir.json"));
53
- }
54
- /** Read the resolved input for a run. */
55
- readInput(runId) {
56
- validateRunId(runId);
57
- return this.readJson(join(this.runDir(runId), "input.json"));
58
- }
59
- // ─── Hook configuration snapshot ───────────────────────────────
60
- /** Write the frozen merged hook configuration snapshot (once, on first run). */
61
- writeHookConfig(runId, snapshot) {
62
- validateRunId(runId);
63
- this.atomicWriteJson(this.hookConfigPath(runId), snapshot);
64
- }
65
- /** Read the frozen hook configuration snapshot. Undefined when no hooks apply. */
66
- readHookConfig(runId) {
67
- validateRunId(runId);
68
- return this.readJson(this.hookConfigPath(runId));
69
- }
70
- /** True when this Run has a frozen hook configuration on disk. */
71
- hasHookConfig(runId) {
72
- validateRunId(runId);
73
- return existsSync(this.hookConfigPath(runId));
74
- }
75
- // ─── Run metadata ──────────────────────────────────────────────
76
- writeRunMeta(runId, meta) {
77
- validateRunId(runId);
78
- this.atomicWriteJson(join(this.runDir(runId), "run-meta.json"), meta);
79
- }
80
- readRunMeta(runId) {
81
- validateRunId(runId);
82
- return this.readJson(join(this.runDir(runId), "run-meta.json"));
83
- }
84
- // ─── Node state ────────────────────────────────────────────────
85
- /** Atomically write node execution state without recording a Run Checkpoint. */
86
- writeNodeState(runId, state) {
87
- validateRunId(runId);
88
- const filename = this.nodeStateFilename(state.nodeKey);
89
- this.atomicWriteJson(join(this.runDir(runId), "nodes", filename), state);
90
- this.upsertNodeIndex(runId, state);
91
- }
92
- /** Atomically write a terminal node state and record its Run Checkpoint when checkpointable. */
93
- writeTerminalNodeState(runId, state) {
94
- if (!isTerminal(state.state)) {
95
- throw new Error(`Cannot write terminal node state for ${state.nodeKey}: state '${state.state}' is not terminal`);
96
- }
97
- this.writeNodeState(runId, state);
98
- if (state.definitionHash && isCheckpointableKind(state.kind)) {
99
- this.recordNodeCheckpoint(runId, {
100
- nodeKey: state.nodeKey,
101
- state: state.state,
102
- definitionHash: state.definitionHash,
103
- completedAt: state.completedAt
104
- });
105
- }
106
- }
107
- /** Read node execution state. Returns undefined if not found. */
108
- readNodeState(runId, nodeKey) {
109
- validateRunId(runId);
110
- const filename = this.nodeStateFilename(nodeKey);
111
- return this.readJson(join(this.runDir(runId), "nodes", filename));
112
- }
113
- /** List all node states for a run. */
114
- listNodeStates(runId) {
115
- validateRunId(runId);
116
- const nodesDir = join(this.runDir(runId), "nodes");
117
- if (!existsSync(nodesDir))
118
- return [];
119
- const files = readdirSync(nodesDir).filter((f) => f.endsWith(".json"));
120
- return files
121
- .map((f) => this.readJson(join(nodesDir, f)))
122
- .filter((s) => s !== undefined);
123
- }
124
- // ─── Run discovery ─────────────────────────────────────────────
125
- /** List all run IDs on disk. */
126
- listRunIds() {
127
- if (!existsSync(this.baseDir))
128
- return [];
129
- return readdirSync(this.baseDir, { withFileTypes: true })
130
- .filter((d) => d.isDirectory())
131
- .map((d) => d.name);
132
- }
133
- /** Get the artifacts directory for a node. */
134
- artifactsDir(runId, nodeKey) {
135
- validateRunId(runId);
136
- const dir = join(this.runDir(runId), this.nodeArtifactDir(nodeKey));
137
- mkdirSync(dir, { recursive: true });
138
- return dir;
139
- }
140
- /** Check if a run exists on disk. */
141
- hasRun(runId) {
142
- validateRunId(runId);
143
- return existsSync(this.runDir(runId));
144
- }
145
- // ─── Checkpoints ───────────────────────────────────────────────
146
- /**
147
- * Read the ordered Run Checkpoints for a Run. Returns an empty array when
148
- * the run was created before checkpoints existed (in which case the Run is
149
- * not forkable — callers MUST treat absence as ineligible for fork).
150
- */
151
- readCheckpoints(runId) {
152
- validateRunId(runId);
153
- const entries = this.readJson(this.checkpointsIndexPath(runId));
154
- if (!entries)
155
- return [];
156
- return [...entries].sort((a, b) => a.sequence - b.sequence);
157
- }
158
- /** True when this Run has a checkpoint index file (regardless of size). */
159
- hasCheckpointIndex(runId) {
160
- validateRunId(runId);
161
- return existsSync(this.checkpointsIndexPath(runId));
162
- }
163
- /**
164
- * Copy a Node's persisted state and artifact directory from a prior Run into
165
- * a Forked Run, used when applying a fork plan. Replaces any existing entry
166
- * and copies the artifact directory recursively.
167
- */
168
- inheritNodeFromRun(targetRunId, sourceRunId, nodeKey) {
169
- validateRunId(targetRunId);
170
- validateRunId(sourceRunId);
171
- const sourceState = this.readNodeState(sourceRunId, nodeKey);
172
- if (!sourceState) {
173
- throw new Error(`Cannot inherit node ${nodeKey}: no persisted state in source run ${sourceRunId}`);
174
- }
175
- // Rewrite artifact URIs from <sourceRunId> → <targetRunId>.
176
- const inheritedRefs = sourceState.artifactRefs?.map((uri) => ArtifactReferences.rewriteRunId(uri, sourceRunId, targetRunId));
177
- const targetState = {
178
- ...sourceState,
179
- artifactRefs: inheritedRefs,
180
- agentTelemetry: rewriteAgentTelemetryArtifactRefs(sourceState.agentTelemetry, sourceRunId, targetRunId)
181
- };
182
- // Copy the artifact directory FIRST so a crash before the Node-state
183
- // write does not leave dangling artifactRefs URIs on disk. cpSync is
184
- // recursive and creates the destination; the source dir may legitimately
185
- // not exist for Nodes that produced no artifacts.
186
- const sourceDir = join(this.runDir(sourceRunId), this.nodeArtifactDir(nodeKey));
187
- const targetDir = join(this.runDir(targetRunId), this.nodeArtifactDir(nodeKey));
188
- if (existsSync(sourceDir)) {
189
- mkdirSync(dirname(targetDir), { recursive: true });
190
- cpSync(sourceDir, targetDir, { recursive: true });
191
- }
192
- // Persist Node state last, then record the checkpoint, so observers never
193
- // see a checkpoint before its artifacts exist.
194
- this.writeTerminalNodeState(targetRunId, targetState);
195
- }
196
- cleanTerminalRuns(options = {}) {
197
- const dryRun = Boolean(options.dryRun);
198
- const deleted = [];
199
- const skipped = [];
200
- for (const runId of this.listRunIds()) {
201
- const runDir = this.runDir(runId);
202
- const meta = this.readRunMeta(runId);
203
- const bytes = directorySize(runDir);
204
- if (!meta) {
205
- skipped.push({ runId, bytes, reason: "corrupt-metadata" });
206
- continue;
207
- }
208
- if (!isRunTerminal(meta.status)) {
209
- skipped.push({ runId, status: meta.status, bytes, reason: "not-terminal" });
210
- continue;
211
- }
212
- let deleteStatus = meta.status;
213
- if (!dryRun) {
214
- const latest = this.readRunMeta(runId);
215
- if (!latest) {
216
- skipped.push({ runId, bytes, reason: "corrupt-metadata" });
217
- continue;
218
- }
219
- if (!isRunTerminal(latest.status)) {
220
- skipped.push({ runId, status: latest.status, bytes, reason: "not-terminal" });
221
- continue;
222
- }
223
- deleteStatus = latest.status;
224
- }
225
- deleted.push({ runId, status: deleteStatus, bytes });
226
- if (!dryRun) {
227
- try {
228
- rmSync(runDir, { recursive: true });
229
- }
230
- catch {
231
- deleted.pop();
232
- skipped.push({ runId, status: meta.status, bytes, reason: "delete-failed" });
233
- }
234
- }
235
- }
236
- return {
237
- dryRun,
238
- deletedCount: deleted.length,
239
- skippedCount: skipped.length,
240
- bytesReclaimed: deleted.reduce((sum, item) => sum + item.bytes, 0),
241
- deleted,
242
- skipped
243
- };
244
- }
245
- /** Get the base directory. */
246
- getBaseDir() {
247
- return this.baseDir;
248
- }
249
- /**
250
- * Resolve an `artifact://runs/<runId>/nodes/<encodedNodeKey>/<filename>` URI to its
251
- * absolute filesystem path. Pure (no mkdir). Returns undefined for malformed
252
- * URIs. Mirrors ArtifactStore's layout: <baseDir>/<runId>/artifacts/<storageKey>/<filename>.
253
- */
254
- resolveArtifactPath(uri) {
255
- return ArtifactReferences.resolvePath(this.baseDir, uri, isUnsafeRunId);
256
- }
257
- // ─── Internal helpers ──────────────────────────────────────────
258
- runDir(runId) {
259
- return join(this.baseDir, runId);
260
- }
261
- checkpointsIndexPath(runId) {
262
- return join(this.runDir(runId), "checkpoints.index.json");
263
- }
264
- hookConfigPath(runId) {
265
- return join(this.runDir(runId), "hook-config.json");
266
- }
267
- nodeIndexPath(runId) {
268
- return join(this.runDir(runId), "node-index.jsonl");
269
- }
270
- nodeStateFilename(nodeKey) {
271
- return `${nodeKeyToStorageKey(nodeKey)}.json`;
272
- }
273
- nodeArtifactDir(nodeKey) {
274
- return join("artifacts", nodeKeyToStorageKey(nodeKey));
275
- }
276
- upsertNodeIndex(runId, state) {
277
- const entries = this.readNodeIndex(runId) ?? this.rebuildNodeIndexEntries(runId);
278
- const entry = this.nodeIndexEntry(state);
279
- const existing = entries.findIndex((item) => item.nodeKey === state.nodeKey);
280
- if (existing >= 0) {
281
- entries[existing] = entry;
282
- }
283
- else {
284
- entries.push(entry);
285
- }
286
- entries.sort((a, b) => a.nodeKey.localeCompare(b.nodeKey));
287
- this.atomicWriteText(this.nodeIndexPath(runId), `${entries.map((item) => JSON.stringify(item)).join("\n")}\n`);
288
- this.indexedRunIds.add(runId);
289
- }
290
- readNodeIndex(runId) {
291
- if (!this.indexedRunIds.has(runId))
292
- return undefined;
293
- const path = this.nodeIndexPath(runId);
294
- if (!existsSync(path))
295
- return undefined;
296
- try {
297
- return readFileSync(path, "utf8")
298
- .split(/\r?\n/u)
299
- .filter(Boolean)
300
- .map((line) => JSON.parse(line));
301
- }
302
- catch {
303
- return undefined;
304
- }
305
- }
306
- rebuildNodeIndexEntries(runId) {
307
- return this.listNodeStates(runId).map((state) => this.nodeIndexEntry(state));
308
- }
309
- nodeIndexEntry(state) {
310
- const storageKey = nodeKeyToStorageKey(state.nodeKey);
311
- return {
312
- nodeKey: state.nodeKey,
313
- storageKey,
314
- nodeId: state.nodeId,
315
- kind: state.kind,
316
- state: state.state,
317
- statePath: `nodes/${storageKey}.json`,
318
- artifactDir: `artifacts/${storageKey}`
319
- };
320
- }
321
- /**
322
- * Record a Run Checkpoint for a Node that has just reached a terminal state.
323
- * Idempotent on `nodeKey`: if a checkpoint for this Node Key already exists,
324
- * its entry is replaced in-place to reflect the latest terminal outcome
325
- * (e.g., a Node Retry that flips failed -> completed). Sequence numbers
326
- * remain monotonic for new entries.
327
- */
328
- recordNodeCheckpoint(runId, checkpoint) {
329
- validateRunId(runId);
330
- const path = this.checkpointsIndexPath(runId);
331
- const entries = this.readJson(path) ?? [];
332
- const existing = entries.findIndex((entry) => entry.nodeKey === checkpoint.nodeKey);
333
- if (existing >= 0) {
334
- entries[existing] = { ...checkpoint, sequence: entries[existing].sequence };
335
- }
336
- else {
337
- const nextSequence = entries.reduce((max, entry) => Math.max(max, entry.sequence), 0) + 1;
338
- entries.push({ ...checkpoint, sequence: nextSequence });
339
- }
340
- this.atomicWriteJson(path, entries);
341
- }
342
- /** Write JSON via temp file + atomic rename for crash safety. */
343
- atomicWriteJson(filePath, data) {
344
- this.atomicWriteText(filePath, JSON.stringify(data, null, 2));
345
- }
346
- /** Write text via temp file + atomic rename for crash safety. */
347
- atomicWriteText(filePath, content) {
348
- const dir = dirname(filePath);
349
- mkdirSync(dir, { recursive: true });
350
- const tmpPath = filePath + ".tmp";
351
- writeFileSync(tmpPath, content, "utf8");
352
- renameSync(tmpPath, filePath);
353
- }
354
- /** Read and parse a JSON file. Returns undefined if missing or invalid. */
355
- readJson(filePath) {
356
- if (!existsSync(filePath))
357
- return undefined;
358
- try {
359
- return JSON.parse(readFileSync(filePath, "utf8"));
360
- }
361
- catch {
362
- return undefined;
363
- }
364
- }
365
- }
366
- /** SHA-256 digest of a string. */
367
- function sha256(content) {
368
- return `sha256:${createHash("sha256").update(content).digest("hex")}`;
369
- }
370
- function isTerminal(state) {
371
- return state === "completed" || state === "failed" || state === "cancelled";
372
- }
373
- /**
374
- * Whether a Node Kind should produce a Run Checkpoint when reaching a terminal
375
- * state. Composite container Nodes (pipeline, parallel, fanout, if, switch, loop,
376
- * subworkflow) record an aggregate outcome whose meaning depends on their
377
- * children; inheriting them in a Forked Run would short-circuit the container
378
- * body wholesale (the interpreter treats any persisted completed as done).
379
- * Only leaves and the deterministic Guard / Signal nodes produce checkpoints,
380
- * so a Forked Run inherits leaf outputs and re-derives container control flow
381
- * against the new IR.
382
- */
383
- function isCheckpointableKind(kind) {
384
- return kind === "run.agent" || kind === "run.program" || kind === "guard" || kind === "run.signal";
385
- }
386
- function rewriteAgentTelemetryArtifactRefs(telemetry, sourceRunId, targetRunId) {
387
- if (!telemetry)
388
- return undefined;
389
- return {
390
- ...telemetry,
391
- attempts: telemetry.attempts.map((attempt) => ({
392
- ...attempt,
393
- input: attempt.input
394
- ? { ...attempt.input, artifactRef: rewriteOptionalArtifactRef(attempt.input.artifactRef, sourceRunId, targetRunId) }
395
- : undefined,
396
- output: attempt.output
397
- ? { ...attempt.output, artifactRef: rewriteOptionalArtifactRef(attempt.output.artifactRef, sourceRunId, targetRunId) }
398
- : undefined
399
- }))
400
- };
401
- }
402
- function rewriteOptionalArtifactRef(value, sourceRunId, targetRunId) {
403
- return value === undefined ? undefined : ArtifactReferences.rewriteRunId(value, sourceRunId, targetRunId);
404
- }
405
- function directorySize(path) {
406
- try {
407
- const stat = lstatSync(path);
408
- if (!stat.isDirectory())
409
- return stat.size;
410
- let total = 0;
411
- for (const entry of readdirSync(path, { withFileTypes: true })) {
412
- total += directorySize(join(path, entry.name));
413
- }
414
- return total;
415
- }
416
- catch {
417
- return 0;
418
- }
419
- }
420
- //# sourceMappingURL=store.js.map
package/dist/store.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { Hono } from "hono";
2
- import type { RunStore } from "./store.js";
3
- import type { AgentExecutionRequest, ExecutorAdapter, ProgramExecutionRequest } from "./executors/types.js";
4
- import type { SupervisorConfig } from "./types.js";
5
- /**
6
- * Creates a Hono HTTP app for the acpus Run Supervisor.
7
- *
8
- * Note: Node keys contain "/" characters (e.g. "workflow/step-a"), which are
9
- * incompatible with URL path segments. Node-addressed routes accept the nodeKey
10
- * as a query parameter instead.
11
- *
12
- * Returns the Hono app plus control handles for the runner to query
13
- * idle-shutdown state and inject health-overrides after listen.
14
- */
15
- export declare function createSupervisorApp(config: SupervisorConfig, store: RunStore, agentExecutor: ExecutorAdapter<AgentExecutionRequest>, programExecutor: ExecutorAdapter<ProgramExecutionRequest>): {
16
- app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
17
- /** Expose for the runner to read idle-shutdown state. */
18
- getLastActiveAt: () => number;
19
- /** Expose for the runner to check how many Runs are still active. */
20
- runningCount: () => number;
21
- /** Expose for the runner to write the startedAt and endpoint after listen. */
22
- setHealthOverrides: (overrides: {
23
- startedAt?: string;
24
- endpoint?: string;
25
- }) => void;
26
- };
27
- //# sourceMappingURL=supervisor-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"supervisor-app.d.ts","sourceRoot":"","sources":["../src/supervisor-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,KAAK,EAAE,gBAAgB,EAAgC,MAAM,YAAY,CAAC;AAsBjF;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,QAAQ,EACf,aAAa,EAAE,eAAe,CAAC,qBAAqB,CAAC,EACrD,eAAe,EAAE,eAAe,CAAC,uBAAuB,CAAC;;IA2sBvD,yDAAyD;;IAEzD,qEAAqE;;IAErE,8EAA8E;oCAC9C;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;EAK5E"}