@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
@@ -1,45 +0,0 @@
1
- import type { AcpusIr } from "@acpus/core";
2
- import type { NodeExecutionState } from "./types.js";
3
- import { RunStore } from "./store.js";
4
- export type RunControlAbortState = "paused" | "cancelled";
5
- export declare const PAUSED_ABORT_ERROR = "Aborted: paused";
6
- export declare function abortedNodeError(state: RunControlAbortState): string;
7
- export declare function isPausedContinuationState(state: NodeExecutionState | undefined): boolean;
8
- export interface NodeRetryPreparation {
9
- state: NodeExecutionState;
10
- ir: AcpusIr;
11
- input: Record<string, unknown>;
12
- }
13
- export declare class RunControl {
14
- private readonly store;
15
- /** Active abort controllers keyed by "runId:nodeKey" for pause/cancel support. */
16
- private readonly abortControllers;
17
- /** Intent of an in-flight abort keyed by "runId:nodeKey" (pause vs cancel). */
18
- private readonly abortIntents;
19
- /** Per-run scheduling guards used to stop new work after pause/cancel. */
20
- private readonly schedulingPaused;
21
- private readonly schedulingCancelled;
22
- constructor(store: RunStore);
23
- registerAbortController(runId: string, nodeKey: string, controller: AbortController): void;
24
- clearInFlightNode(runId: string, nodeKey: string): void;
25
- clearSchedulingGuards(runId: string): void;
26
- recoverStaleNodes(runId: string): void;
27
- prepareNodeRetry(runId: string, nodeKey: string): NodeRetryPreparation;
28
- resetNodeForRetry(runId: string, state: NodeExecutionState): void;
29
- pauseRun(runId: string): void;
30
- cancelRun(runId: string): void;
31
- resumeRun(runId: string): void;
32
- retryRun(runId: string): void;
33
- applySchedulingGuard(runId: string, state: NodeExecutionState): RunControlAbortState | undefined;
34
- abortIntent(runId: string, nodeKey: string): RunControlAbortState;
35
- readAbortedStateOnDisk(runId: string, nodeKey: string): RunControlAbortState | undefined;
36
- isStaleAttemptOnDisk(runId: string, nodeKey: string, attempt: number, startedAt: string | undefined): boolean;
37
- syncInFrameAttemptFromDisk(runId: string, nodeKey: string, state: NodeExecutionState): void;
38
- cancelDescendantsInScope(runId: string, rootNodeKey: string): void;
39
- private pauseRunningNode;
40
- private cancelMaterializedNode;
41
- private descendantsInScope;
42
- private key;
43
- private clearAttemptFields;
44
- }
45
- //# sourceMappingURL=run-control.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-control.d.ts","sourceRoot":"","sources":["../src/run-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAa,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAYtC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE1D,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAEpE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAExF;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,qBAAa,UAAU;IAWT,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVlC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2C;IAE5E,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgD;IAE7E,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;IAElE,YAA6B,KAAK,EAAE,QAAQ,EAAI;IAEhD,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAEzF;IAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGtD;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGzC;IAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAUrC;IAED,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CA0BrE;IAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAIhE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAkB5B;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAsC7B;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAoB7B;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CA+B5B;IAED,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,SAAS,CAU/F;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAEhE;IAED,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAGvF;IAED,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG5G;IAED,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAK1F;IAED,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEjE;IAED,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,kBAAkB;CAW3B"}
@@ -1,255 +0,0 @@
1
- import { isNodeKeyBelowAnyAnchor } from "./keys.js";
2
- import { canTransition, cancelPendingForRunCancel, resetCancelledForRunRetry, resetAwaitingForCrashRecovery, resetFailedForRetry, resetPausedForRunResume, resetRunningForCrashRecovery, transition } from "./state-machine.js";
3
- export const PAUSED_ABORT_ERROR = "Aborted: paused";
4
- export function abortedNodeError(state) {
5
- return state === "paused" ? PAUSED_ABORT_ERROR : "Aborted: cancelled";
6
- }
7
- export function isPausedContinuationState(state) {
8
- return state?.state === "pending" && state.attempt > 0 && state.error === PAUSED_ABORT_ERROR;
9
- }
10
- export class RunControl {
11
- store;
12
- /** Active abort controllers keyed by "runId:nodeKey" for pause/cancel support. */
13
- abortControllers = new Map();
14
- /** Intent of an in-flight abort keyed by "runId:nodeKey" (pause vs cancel). */
15
- abortIntents = new Map();
16
- /** Per-run scheduling guards used to stop new work after pause/cancel. */
17
- schedulingPaused = new Map();
18
- schedulingCancelled = new Map();
19
- constructor(store) {
20
- this.store = store;
21
- }
22
- registerAbortController(runId, nodeKey, controller) {
23
- this.abortControllers.set(this.key(runId, nodeKey), controller);
24
- }
25
- clearInFlightNode(runId, nodeKey) {
26
- this.abortControllers.delete(this.key(runId, nodeKey));
27
- this.abortIntents.delete(this.key(runId, nodeKey));
28
- }
29
- clearSchedulingGuards(runId) {
30
- this.schedulingPaused.delete(runId);
31
- this.schedulingCancelled.delete(runId);
32
- }
33
- recoverStaleNodes(runId) {
34
- for (const nodeState of this.store.listNodeStates(runId)) {
35
- if (nodeState.state === "running") {
36
- nodeState.state = resetRunningForCrashRecovery(nodeState.state);
37
- this.store.writeNodeState(runId, nodeState);
38
- }
39
- else if (nodeState.state === "awaiting") {
40
- nodeState.state = resetAwaitingForCrashRecovery(nodeState.state);
41
- this.store.writeNodeState(runId, nodeState);
42
- }
43
- }
44
- }
45
- prepareNodeRetry(runId, nodeKey) {
46
- const state = this.store.readNodeState(runId, nodeKey);
47
- if (!state) {
48
- throw new Error(`Node ${nodeKey} not found in run ${runId}`);
49
- }
50
- if (state.state !== "failed") {
51
- throw new Error(`Cannot retry node ${nodeKey} in state '${state.state}': only failed executable nodes are retryable`);
52
- }
53
- if (state.kind !== "run.agent" && state.kind !== "run.program") {
54
- throw new Error(`Cannot retry node ${nodeKey}: only failed executable nodes are retryable`);
55
- }
56
- const meta = this.store.readRunMeta(runId);
57
- if (!meta)
58
- throw new Error(`Run ${runId} not found`);
59
- if (meta.status !== "failed") {
60
- throw new Error(`Cannot retry node ${nodeKey}: node retry is accepted only when the Run is failed`);
61
- }
62
- const ir = this.store.readIr(runId);
63
- const input = this.store.readInput(runId);
64
- if (!ir || !input) {
65
- throw new Error(`Cannot retry node ${nodeKey}: run ${runId} has no persisted IR or input`);
66
- }
67
- return { state, ir, input };
68
- }
69
- resetNodeForRetry(runId, state) {
70
- state.state = resetFailedForRetry(state.state);
71
- state.error = undefined;
72
- this.store.writeNodeState(runId, state);
73
- }
74
- pauseRun(runId) {
75
- const meta = this.store.readRunMeta(runId);
76
- if (!meta)
77
- throw new Error(`Run ${runId} not found`);
78
- if (meta.status !== "running") {
79
- throw new Error(`Cannot pause a run in state '${meta.status}'`);
80
- }
81
- this.schedulingPaused.set(runId, true);
82
- for (const nodeState of this.store.listNodeStates(runId)) {
83
- if (nodeState.state === "running") {
84
- this.pauseRunningNode(runId, nodeState.nodeKey);
85
- }
86
- }
87
- meta.status = "paused";
88
- meta.updatedAt = new Date().toISOString();
89
- this.store.writeRunMeta(runId, meta);
90
- }
91
- cancelRun(runId) {
92
- const meta = this.store.readRunMeta(runId);
93
- if (!meta)
94
- throw new Error(`Run ${runId} not found`);
95
- if (meta.status !== "running" && meta.status !== "paused") {
96
- throw new Error(`Cannot cancel a run in state '${meta.status}'`);
97
- }
98
- this.schedulingCancelled.set(runId, true);
99
- for (const [key, intent] of this.abortIntents) {
100
- if (key.startsWith(`${runId}:`) && intent === "paused") {
101
- this.abortIntents.set(key, "cancelled");
102
- }
103
- }
104
- for (const nodeState of this.store.listNodeStates(runId)) {
105
- if (nodeState.state === "running" || nodeState.state === "awaiting") {
106
- this.cancelMaterializedNode(runId, nodeState.nodeKey);
107
- }
108
- }
109
- for (const nodeState of this.store.listNodeStates(runId)) {
110
- if (nodeState.state === "paused" && canTransition(nodeState.state, "cancelled")) {
111
- nodeState.state = transition(nodeState.state, "cancelled");
112
- this.store.writeTerminalNodeState(runId, nodeState);
113
- }
114
- }
115
- for (const nodeState of this.store.listNodeStates(runId)) {
116
- if (nodeState.state === "pending") {
117
- nodeState.state = cancelPendingForRunCancel(nodeState.state);
118
- this.store.writeTerminalNodeState(runId, nodeState);
119
- }
120
- }
121
- meta.status = "cancelled";
122
- meta.updatedAt = new Date().toISOString();
123
- this.store.writeRunMeta(runId, meta);
124
- }
125
- resumeRun(runId) {
126
- const meta = this.store.readRunMeta(runId);
127
- if (!meta)
128
- throw new Error(`Run ${runId} not found`);
129
- if (meta.status !== "paused") {
130
- throw new Error(`Cannot resume a run in state '${meta.status}'`);
131
- }
132
- this.clearSchedulingGuards(runId);
133
- this.recoverStaleNodes(runId);
134
- for (const nodeState of this.store.listNodeStates(runId)) {
135
- if (nodeState.state === "paused") {
136
- nodeState.state = resetPausedForRunResume(nodeState.state);
137
- this.store.writeNodeState(runId, nodeState);
138
- }
139
- }
140
- meta.status = "running";
141
- meta.updatedAt = new Date().toISOString();
142
- this.store.writeRunMeta(runId, meta);
143
- }
144
- retryRun(runId) {
145
- const meta = this.store.readRunMeta(runId);
146
- if (!meta)
147
- throw new Error(`Run ${runId} not found`);
148
- if (meta.status !== "failed") {
149
- throw new Error(`Cannot retry a run in state '${meta.status}'`);
150
- }
151
- this.clearSchedulingGuards(runId);
152
- for (const nodeState of this.store.listNodeStates(runId)) {
153
- if (nodeState.state === "failed") {
154
- nodeState.state = resetFailedForRetry(nodeState.state);
155
- this.clearAttemptFields(nodeState);
156
- this.store.writeNodeState(runId, nodeState);
157
- }
158
- else if (nodeState.state === "paused") {
159
- nodeState.state = resetPausedForRunResume(nodeState.state);
160
- this.clearAttemptFields(nodeState);
161
- this.store.writeNodeState(runId, nodeState);
162
- }
163
- else if (nodeState.state === "cancelled") {
164
- nodeState.state = resetCancelledForRunRetry(nodeState.state);
165
- this.clearAttemptFields(nodeState);
166
- this.store.writeNodeState(runId, nodeState);
167
- }
168
- }
169
- meta.status = "running";
170
- meta.output = undefined;
171
- meta.error = undefined;
172
- meta.runAttempt++;
173
- meta.updatedAt = new Date().toISOString();
174
- this.store.writeRunMeta(runId, meta);
175
- }
176
- applySchedulingGuard(runId, state) {
177
- if (this.schedulingPaused.get(runId) && state.state === "pending") {
178
- return "paused";
179
- }
180
- if (this.schedulingCancelled.get(runId) && state.state === "pending") {
181
- state.state = cancelPendingForRunCancel(state.state);
182
- this.store.writeTerminalNodeState(runId, state);
183
- return "cancelled";
184
- }
185
- return undefined;
186
- }
187
- abortIntent(runId, nodeKey) {
188
- return this.abortIntents.get(this.key(runId, nodeKey)) ?? "paused";
189
- }
190
- readAbortedStateOnDisk(runId, nodeKey) {
191
- const state = this.store.readNodeState(runId, nodeKey)?.state;
192
- return state === "paused" || state === "cancelled" ? state : undefined;
193
- }
194
- isStaleAttemptOnDisk(runId, nodeKey, attempt, startedAt) {
195
- const current = this.store.readNodeState(runId, nodeKey);
196
- return current !== undefined && current.attempt > attempt && current.startedAt !== startedAt;
197
- }
198
- syncInFrameAttemptFromDisk(runId, nodeKey, state) {
199
- const current = this.store.readNodeState(runId, nodeKey);
200
- if (current !== undefined && current.startedAt === state.startedAt && current.attempt > state.attempt) {
201
- state.attempt = current.attempt;
202
- }
203
- }
204
- cancelDescendantsInScope(runId, rootNodeKey) {
205
- this.descendantsInScope(runId, rootNodeKey, (rid, key) => this.cancelMaterializedNode(rid, key));
206
- }
207
- pauseRunningNode(runId, nodeKey) {
208
- const state = this.store.readNodeState(runId, nodeKey);
209
- if (!state || !canTransition(state.state, "paused")) {
210
- return;
211
- }
212
- this.abortIntents.set(this.key(runId, nodeKey), "paused");
213
- this.abortControllers.get(this.key(runId, nodeKey))?.abort();
214
- state.state = transition(state.state, "paused");
215
- this.store.writeNodeState(runId, state);
216
- }
217
- cancelMaterializedNode(runId, nodeKey) {
218
- this.abortIntents.set(this.key(runId, nodeKey), "cancelled");
219
- this.abortControllers.get(this.key(runId, nodeKey))?.abort();
220
- const state = this.store.readNodeState(runId, nodeKey);
221
- if (state?.state === "pending") {
222
- state.state = cancelPendingForRunCancel(state.state);
223
- this.store.writeTerminalNodeState(runId, state);
224
- }
225
- else if (state && canTransition(state.state, "cancelled")) {
226
- state.state = transition(state.state, "cancelled");
227
- this.store.writeTerminalNodeState(runId, state);
228
- }
229
- }
230
- descendantsInScope(runId, rootNodeKey, action) {
231
- const states = this.store.listNodeStates(runId);
232
- for (const nodeState of states) {
233
- if (nodeState.state !== "running" && nodeState.state !== "awaiting" && nodeState.state !== "pending")
234
- continue;
235
- if (!isNodeKeyBelowAnyAnchor(nodeState.nodeKey, [rootNodeKey]))
236
- continue;
237
- action(runId, nodeState.nodeKey);
238
- }
239
- }
240
- key(runId, nodeKey) {
241
- return `${runId}:${nodeKey}`;
242
- }
243
- clearAttemptFields(state) {
244
- state.startedAt = undefined;
245
- state.completedAt = undefined;
246
- state.error = undefined;
247
- state.output = undefined;
248
- state.artifactRefs = undefined;
249
- state.dynamicContext = undefined;
250
- state.renderedPrompt = undefined;
251
- state.renderedSessionKey = undefined;
252
- state.agentTelemetry = undefined;
253
- }
254
- }
255
- //# sourceMappingURL=run-control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-control.js","sourceRoot":"","sources":["../src/run-control.ts"],"names":[],"mappings":"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"}
package/dist/run-id.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare function isUnsafeRunId(runId: string): boolean;
2
- export declare function validateRunId(runId: string): void;
3
- //# sourceMappingURL=run-id.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-id.d.ts","sourceRoot":"","sources":["../src/run-id.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD"}
package/dist/run-id.js DELETED
@@ -1,10 +0,0 @@
1
- const UNSAFE_RUN_ID = /(^|\/)\.\.?(\/|$)|[\\:\0]/;
2
- export function isUnsafeRunId(runId) {
3
- return !runId || runId.includes("/") || UNSAFE_RUN_ID.test(runId);
4
- }
5
- export function validateRunId(runId) {
6
- if (isUnsafeRunId(runId)) {
7
- throw new Error(`Invalid runId: '${runId}' contains unsafe path characters`);
8
- }
9
- }
10
- //# sourceMappingURL=run-id.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-id.js","sourceRoot":"","sources":["../src/run-id.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAElD,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,mCAAmC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
@@ -1,31 +0,0 @@
1
- import type { IrNodeKind } from "@acpus/core";
2
- import type { NodeExecutionState, NodeState } from "./types.js";
3
- /** Check if a transition from `from` to `to` is legal. */
4
- export declare function canTransition(from: NodeState, to: NodeState): boolean;
5
- /**
6
- * Transition a node state. Throws if the transition is illegal.
7
- * Returns the new state.
8
- */
9
- export declare function transition(from: NodeState, to: NodeState): NodeState;
10
- /** Check if a state is terminal (no further business-lifecycle transitions). */
11
- export declare function isTerminal(state: NodeState): boolean;
12
- /** Control-plane reset: operator retry of a failed node (failed → pending). */
13
- export declare function resetFailedForRetry(from: NodeState): NodeState;
14
- /** Control-plane reset: Run-level retry of a cancelled node in a failed Run (cancelled → pending). */
15
- export declare function resetCancelledForRunRetry(from: NodeState): NodeState;
16
- /** Control-plane reset: Run-level resume of a paused node (paused → pending). */
17
- export declare function resetPausedForRunResume(from: NodeState): NodeState;
18
- /** Control-plane reset: crash recovery of a stale running node (running → pending). */
19
- export declare function resetRunningForCrashRecovery(from: NodeState): NodeState;
20
- /**
21
- * Control-plane reset: crash recovery of a stale awaiting node (awaiting → pending).
22
- * The in-memory signal resolver does not survive a supervisor restart, so a node
23
- * left in `awaiting` must be re-executed from scratch to re-register its resolver and
24
- * wait for a fresh external decision.
25
- */
26
- export declare function resetAwaitingForCrashRecovery(from: NodeState): NodeState;
27
- /** Control-plane cancellation: Run-level cancel of a materialized pending node (pending → cancelled). */
28
- export declare function cancelPendingForRunCancel(from: NodeState): NodeState;
29
- /** Create the initial NodeExecutionState for a node. */
30
- export declare function createInitialNodeState(nodeKey: string, nodeId: string, kind: IrNodeKind, definitionHash?: string): NodeExecutionState;
31
- //# sourceMappingURL=state-machine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-machine.d.ts","sourceRoot":"","sources":["../src/state-machine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAwBhE,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,SAAS,CAKpE;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEpD;AAQD,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAK9D;AAED,sGAAsG;AACtG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKpE;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKlE;AAED,uFAAuF;AACvF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKvE;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKxE;AAED,yGAAyG;AACzG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKpE;AAED,wDAAwD;AACxD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,kBAAkB,CASpB"}
@@ -1,102 +0,0 @@
1
- // ─── Legal transitions ───────────────────────────────────────────
2
- //
3
- // This table models only the *business lifecycle* of a Node. Control-plane
4
- // resets (operator retry, crash recovery) are NOT transitions here — they are
5
- // reset operations exposed via dedicated helpers below, so that no generic
6
- // `canTransition(x, "pending")` call can accidentally gain retry/reset rights.
7
- const TRANSITIONS = {
8
- pending: new Set(["running"]),
9
- running: new Set(["awaiting", "completed", "failed", "paused", "cancelled"]),
10
- // `awaiting` is an external-decision wait (e.g. a Signal Node blocked on an
11
- // operator/system signal). It is distinct from `paused` (an operator-initiated
12
- // pause): a signal resolves it to `completed`, a cancel to `cancelled`.
13
- awaiting: new Set(["completed", "cancelled"]),
14
- // A paused Node is resumed by a Run-level control-plane reset back to
15
- // `pending`, not by a direct lifecycle transition to `running`.
16
- paused: new Set(["cancelled"]),
17
- completed: new Set(),
18
- failed: new Set(),
19
- cancelled: new Set()
20
- };
21
- /** Check if a transition from `from` to `to` is legal. */
22
- export function canTransition(from, to) {
23
- return TRANSITIONS[from].has(to);
24
- }
25
- /**
26
- * Transition a node state. Throws if the transition is illegal.
27
- * Returns the new state.
28
- */
29
- export function transition(from, to) {
30
- if (!canTransition(from, to)) {
31
- throw new Error(`Illegal state transition: ${from} → ${to}`);
32
- }
33
- return to;
34
- }
35
- /** Check if a state is terminal (no further business-lifecycle transitions). */
36
- export function isTerminal(state) {
37
- return TRANSITIONS[state].size === 0;
38
- }
39
- // ─── Control-plane resets ────────────────────────────────────────
40
- //
41
- // These are NOT business-lifecycle transitions. They are explicit reset
42
- // operations invoked only from dedicated control entry points, so the
43
- // generic state machine never exposes a path back to `pending`.
44
- /** Control-plane reset: operator retry of a failed node (failed → pending). */
45
- export function resetFailedForRetry(from) {
46
- if (from !== "failed") {
47
- throw new Error(`Cannot retry node in state '${from}': only failed nodes are retryable`);
48
- }
49
- return "pending";
50
- }
51
- /** Control-plane reset: Run-level retry of a cancelled node in a failed Run (cancelled → pending). */
52
- export function resetCancelledForRunRetry(from) {
53
- if (from !== "cancelled") {
54
- throw new Error(`Cannot retry cancelled node from state '${from}': only cancelled nodes use Run-level cancelled reset`);
55
- }
56
- return "pending";
57
- }
58
- /** Control-plane reset: Run-level resume of a paused node (paused → pending). */
59
- export function resetPausedForRunResume(from) {
60
- if (from !== "paused") {
61
- throw new Error(`Cannot reset node in state '${from}': only paused nodes can be reset`);
62
- }
63
- return "pending";
64
- }
65
- /** Control-plane reset: crash recovery of a stale running node (running → pending). */
66
- export function resetRunningForCrashRecovery(from) {
67
- if (from !== "running") {
68
- throw new Error(`Cannot recover stale node in state '${from}': only running nodes can be reset`);
69
- }
70
- return "pending";
71
- }
72
- /**
73
- * Control-plane reset: crash recovery of a stale awaiting node (awaiting → pending).
74
- * The in-memory signal resolver does not survive a supervisor restart, so a node
75
- * left in `awaiting` must be re-executed from scratch to re-register its resolver and
76
- * wait for a fresh external decision.
77
- */
78
- export function resetAwaitingForCrashRecovery(from) {
79
- if (from !== "awaiting") {
80
- throw new Error(`Cannot recover stale node in state '${from}': only awaiting nodes can be reset`);
81
- }
82
- return "pending";
83
- }
84
- /** Control-plane cancellation: Run-level cancel of a materialized pending node (pending → cancelled). */
85
- export function cancelPendingForRunCancel(from) {
86
- if (from !== "pending") {
87
- throw new Error(`Cannot cancel pending node from state '${from}': only pending nodes use Run-level pending cancel`);
88
- }
89
- return "cancelled";
90
- }
91
- /** Create the initial NodeExecutionState for a node. */
92
- export function createInitialNodeState(nodeKey, nodeId, kind, definitionHash) {
93
- return {
94
- nodeKey,
95
- nodeId,
96
- kind,
97
- definitionHash,
98
- state: "pending",
99
- attempt: 0
100
- };
101
- }
102
- //# sourceMappingURL=state-machine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../src/state-machine.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts DELETED
@@ -1,92 +0,0 @@
1
- import type { AcpusIr, AgentOverrideWarning, AgentOverrides, HookConfigSnapshot } from "@acpus/core";
2
- import type { NodeExecutionState, RunCheckpoint, RunCleanResult, RunState } from "./types.js";
3
- export declare class RunStore {
4
- private readonly baseDir;
5
- private readonly indexedRunIds;
6
- constructor(baseDir?: string);
7
- /** Create a new run directory and write IR + input snapshots. */
8
- initRun(runId: string, ir: AcpusIr, input: Record<string, unknown>, source?: {
9
- workflowRef?: string;
10
- workflowSourcePath?: string;
11
- lineage?: import("./types.js").RunLineage;
12
- agentOverrides?: AgentOverrides;
13
- submissionWarnings?: AgentOverrideWarning[];
14
- skipHooks?: boolean;
15
- }): RunState;
16
- /** Read the frozen IR snapshot for a run. */
17
- readIr(runId: string): AcpusIr | undefined;
18
- /** Read the resolved input for a run. */
19
- readInput(runId: string): Record<string, unknown> | undefined;
20
- /** Write the frozen merged hook configuration snapshot (once, on first run). */
21
- writeHookConfig(runId: string, snapshot: HookConfigSnapshot): void;
22
- /** Read the frozen hook configuration snapshot. Undefined when no hooks apply. */
23
- readHookConfig(runId: string): HookConfigSnapshot | undefined;
24
- /** True when this Run has a frozen hook configuration on disk. */
25
- hasHookConfig(runId: string): boolean;
26
- writeRunMeta(runId: string, meta: RunState): void;
27
- readRunMeta(runId: string): RunState | undefined;
28
- /** Atomically write node execution state without recording a Run Checkpoint. */
29
- writeNodeState(runId: string, state: NodeExecutionState): void;
30
- /** Atomically write a terminal node state and record its Run Checkpoint when checkpointable. */
31
- writeTerminalNodeState(runId: string, state: NodeExecutionState): void;
32
- /** Read node execution state. Returns undefined if not found. */
33
- readNodeState(runId: string, nodeKey: string): NodeExecutionState | undefined;
34
- /** List all node states for a run. */
35
- listNodeStates(runId: string): NodeExecutionState[];
36
- /** List all run IDs on disk. */
37
- listRunIds(): string[];
38
- /** Get the artifacts directory for a node. */
39
- artifactsDir(runId: string, nodeKey: string): string;
40
- /** Check if a run exists on disk. */
41
- hasRun(runId: string): boolean;
42
- /**
43
- * Read the ordered Run Checkpoints for a Run. Returns an empty array when
44
- * the run was created before checkpoints existed (in which case the Run is
45
- * not forkable — callers MUST treat absence as ineligible for fork).
46
- */
47
- readCheckpoints(runId: string): RunCheckpoint[];
48
- /** True when this Run has a checkpoint index file (regardless of size). */
49
- hasCheckpointIndex(runId: string): boolean;
50
- /**
51
- * Copy a Node's persisted state and artifact directory from a prior Run into
52
- * a Forked Run, used when applying a fork plan. Replaces any existing entry
53
- * and copies the artifact directory recursively.
54
- */
55
- inheritNodeFromRun(targetRunId: string, sourceRunId: string, nodeKey: string): void;
56
- cleanTerminalRuns(options?: {
57
- dryRun?: boolean;
58
- }): RunCleanResult;
59
- /** Get the base directory. */
60
- getBaseDir(): string;
61
- /**
62
- * Resolve an `artifact://runs/<runId>/nodes/<encodedNodeKey>/<filename>` URI to its
63
- * absolute filesystem path. Pure (no mkdir). Returns undefined for malformed
64
- * URIs. Mirrors ArtifactStore's layout: <baseDir>/<runId>/artifacts/<storageKey>/<filename>.
65
- */
66
- resolveArtifactPath(uri: string): string | undefined;
67
- private runDir;
68
- private checkpointsIndexPath;
69
- private hookConfigPath;
70
- private nodeIndexPath;
71
- private nodeStateFilename;
72
- private nodeArtifactDir;
73
- private upsertNodeIndex;
74
- private readNodeIndex;
75
- private rebuildNodeIndexEntries;
76
- private nodeIndexEntry;
77
- /**
78
- * Record a Run Checkpoint for a Node that has just reached a terminal state.
79
- * Idempotent on `nodeKey`: if a checkpoint for this Node Key already exists,
80
- * its entry is replaced in-place to reflect the latest terminal outcome
81
- * (e.g., a Node Retry that flips failed -> completed). Sequence numbers
82
- * remain monotonic for new entries.
83
- */
84
- private recordNodeCheckpoint;
85
- /** Write JSON via temp file + atomic rename for crash safety. */
86
- private atomicWriteJson;
87
- /** Write text via temp file + atomic rename for crash safety. */
88
- private atomicWriteText;
89
- /** Read and parse a JSON file. Returns undefined if missing or invalid. */
90
- private readJson;
91
- }
92
- //# sourceMappingURL=store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}