@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
@@ -0,0 +1,59 @@
1
+ import type { AgentNodeIR, SignalNodeIR, TaskNodeIR, WorkflowIR } from "@acpus/core/ir";
2
+ import type { JsonValue } from "@acpus/expression/ir";
3
+ import { type EvaluationScope } from "../evaluation/evaluator.js";
4
+ export type NonAgentExecutionResult = {
5
+ status: "completed";
6
+ output: Record<string, unknown>;
7
+ nodes: Record<string, {
8
+ status: "completed";
9
+ output: unknown;
10
+ }>;
11
+ executedNodes: Record<string, {
12
+ status: "completed";
13
+ output: unknown;
14
+ }>;
15
+ };
16
+ export type RuntimeExecutionOptions = {
17
+ taskExecutor?: (node: TaskNodeIR, scope: EvaluationScope) => Promise<unknown>;
18
+ agentExecutor?: (node: AgentNodeIR, scope: EvaluationScope) => Promise<unknown>;
19
+ signalPayloads?: Record<string, unknown>;
20
+ completedNodes?: Record<string, unknown>;
21
+ meta?: Record<string, unknown>;
22
+ };
23
+ export declare class ExecutorRequiredError extends Error {
24
+ readonly nodeId: string;
25
+ readonly nodeKind: "task" | "agent" | "signal";
26
+ readonly executedNodes: Record<string, {
27
+ status: "completed";
28
+ output: unknown;
29
+ }>;
30
+ constructor(nodeId: string, nodeKind: "task" | "agent" | "signal", executedNodes?: Record<string, {
31
+ status: "completed";
32
+ output: unknown;
33
+ }>, message?: string);
34
+ }
35
+ export declare class RuntimeNodeError extends Error {
36
+ readonly nodeId: string;
37
+ readonly executedNodes: Record<string, {
38
+ status: "completed";
39
+ output: unknown;
40
+ }>;
41
+ constructor(nodeId: string, message: string, executedNodes?: Record<string, {
42
+ status: "completed";
43
+ output: unknown;
44
+ }>);
45
+ }
46
+ export declare class SignalAwaitingError extends Error {
47
+ readonly nodeId: string;
48
+ readonly node: SignalNodeIR;
49
+ readonly executedNodes: Record<string, {
50
+ status: "completed";
51
+ output: unknown;
52
+ }>;
53
+ constructor(nodeId: string, node: SignalNodeIR, executedNodes: Record<string, {
54
+ status: "completed";
55
+ output: unknown;
56
+ }>);
57
+ }
58
+ export declare function executeWorkflow(ir: WorkflowIR, input: JsonValue, options?: RuntimeExecutionOptions): Promise<NonAgentExecutionResult>;
59
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/execution/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAgC,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIhG,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACzE,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,KAAK;IAE5C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;gBAFvE,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,EACrC,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAM,EACrF,OAAO,CAAC,EAAE,MAAM;CAInB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAEvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;gBAFvE,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACN,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAM;CAIxF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;gBAFvE,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAInF;AAaD,wBAAsB,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAgB/I"}
@@ -0,0 +1,306 @@
1
+ import { assertWorkflowData } from "../evaluation/admissible.js";
2
+ import { evaluateExpr, renderTemplate } from "../evaluation/evaluator.js";
3
+ import { evaluateLoopMaxIterations } from "../evaluation/loop-limit.js";
4
+ import { normalizeValue } from "../evaluation/schema.js";
5
+ export class ExecutorRequiredError extends Error {
6
+ nodeId;
7
+ nodeKind;
8
+ executedNodes;
9
+ constructor(nodeId, nodeKind, executedNodes = {}, message) {
10
+ super(message ?? `Executable node '${nodeId}' (${nodeKind}) requires a node executor.`);
11
+ this.nodeId = nodeId;
12
+ this.nodeKind = nodeKind;
13
+ this.executedNodes = executedNodes;
14
+ }
15
+ }
16
+ export class RuntimeNodeError extends Error {
17
+ nodeId;
18
+ executedNodes;
19
+ constructor(nodeId, message, executedNodes = {}) {
20
+ super(message);
21
+ this.nodeId = nodeId;
22
+ this.executedNodes = executedNodes;
23
+ }
24
+ }
25
+ export class SignalAwaitingError extends Error {
26
+ nodeId;
27
+ node;
28
+ executedNodes;
29
+ constructor(nodeId, node, executedNodes) {
30
+ super(`Signal node '${nodeId}' is awaiting payload.`);
31
+ this.nodeId = nodeId;
32
+ this.node = node;
33
+ this.executedNodes = executedNodes;
34
+ }
35
+ }
36
+ export async function executeWorkflow(ir, input, options = {}) {
37
+ const scope = createRootScope(input, options.meta ?? {});
38
+ for (const [nodeId, output] of Object.entries(options.completedNodes ?? {})) {
39
+ assertWorkflowData(output, `Completed node '${nodeId}' output`);
40
+ const state = { status: "completed", output };
41
+ scope.nodes[nodeId] = state;
42
+ scope.executedNodes[nodeId] = state;
43
+ }
44
+ const scopeResult = await executeScopeAsync(ir.root, scope, options);
45
+ const rootOutput = evaluateOutputs(ir.outputs, scope);
46
+ return {
47
+ status: "completed",
48
+ output: Object.keys(ir.outputs).length === 0 ? scopeResult.output : rootOutput,
49
+ nodes: scope.nodes,
50
+ executedNodes: scope.executedNodes,
51
+ };
52
+ }
53
+ async function executeScopeAsync(scopeIr, scope, options) {
54
+ for (const node of scopeIr.nodes)
55
+ await executeNodeAsync(node, scope, options);
56
+ return {
57
+ output: evaluateOutputs(scopeIr.outputs ?? {}, scope),
58
+ scope,
59
+ };
60
+ }
61
+ async function executeNodeAsync(node, scope, options) {
62
+ if (scope.nodes[node.id])
63
+ return;
64
+ if (node.kind === "task") {
65
+ if (!options.taskExecutor)
66
+ throw new ExecutorRequiredError(node.id, node.kind, scope.executedNodes);
67
+ try {
68
+ completeNode(scope, node.id, validateNodeOutput(node, await options.taskExecutor(node, scope)));
69
+ }
70
+ catch (error) {
71
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
72
+ }
73
+ return;
74
+ }
75
+ if (node.kind === "signal") {
76
+ if (!options.signalPayloads || !(node.id in options.signalPayloads))
77
+ throw new SignalAwaitingError(node.id, node, scope.executedNodes);
78
+ completeNode(scope, node.id, validateSignalOutput(node, options.signalPayloads[node.id]));
79
+ return;
80
+ }
81
+ if (node.kind === "agent") {
82
+ if (!options.agentExecutor)
83
+ throw new ExecutorRequiredError(node.id, node.kind, scope.executedNodes);
84
+ try {
85
+ completeNode(scope, node.id, validateNodeOutput(node, await options.agentExecutor(node, scope)));
86
+ }
87
+ catch (error) {
88
+ if (error instanceof ExecutorRequiredError)
89
+ throw error;
90
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
91
+ }
92
+ return;
93
+ }
94
+ if (node.kind === "assert") {
95
+ if (evaluateBoolean(node.condition, scope, node.id)) {
96
+ completeNode(scope, node.id, {});
97
+ return;
98
+ }
99
+ throw new RuntimeNodeError(node.id, renderAssertFailure(node, scope), scope.executedNodes);
100
+ }
101
+ if (node.kind === "if") {
102
+ try {
103
+ const output = (await executeScopeAsync(evaluateBoolean(node.condition, scope, node.id) ? node.then : node.else, createChildScope(scope), options)).output;
104
+ completeNode(scope, node.id, validateNodeOutput(node, output));
105
+ }
106
+ catch (error) {
107
+ if (error instanceof ExecutorRequiredError || error instanceof SignalAwaitingError || error instanceof RuntimeNodeError)
108
+ throw error;
109
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
110
+ }
111
+ return;
112
+ }
113
+ if (node.kind === "switch") {
114
+ try {
115
+ const selected = node.cases.find(c => evaluateBoolean(c.when, scope, node.id))?.then ?? node.default;
116
+ completeNode(scope, node.id, validateNodeOutput(node, (await executeScopeAsync(selected, createChildScope(scope), options)).output));
117
+ }
118
+ catch (error) {
119
+ if (error instanceof ExecutorRequiredError || error instanceof SignalAwaitingError || error instanceof RuntimeNodeError)
120
+ throw error;
121
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
122
+ }
123
+ return;
124
+ }
125
+ if (node.kind === "parallel") {
126
+ try {
127
+ if (node.strategy === "race") {
128
+ const failures = [];
129
+ for (const [key, branch] of Object.entries(node.branches)) {
130
+ const executable = scopeHasExecutableNode(branch.scope);
131
+ try {
132
+ const branchExecuted = {};
133
+ const result = (await executeScopeAsync(branch.scope, createChildScope(scope, {}, branchExecuted), options)).output;
134
+ Object.assign(scope.executedNodes, branchExecuted);
135
+ completeNode(scope, node.id, { winner: key, result });
136
+ return;
137
+ }
138
+ catch (error) {
139
+ if (error instanceof ExecutorRequiredError || error instanceof SignalAwaitingError)
140
+ throw error;
141
+ if (executable)
142
+ throw error;
143
+ failures.push(`${key}: ${error instanceof Error ? error.message : String(error)}`);
144
+ }
145
+ }
146
+ throw new Error(`Parallel race node '${node.id}' had no successful branches.${failures.length ? ` ${failures.join("; ")}` : ""}`);
147
+ }
148
+ const entries = await Promise.all(Object.entries(node.branches).map(async ([key, branch]) => [
149
+ key,
150
+ (await executeScopeAsync(branch.scope, createChildScope(scope), options)).output,
151
+ ]));
152
+ completeNode(scope, node.id, Object.fromEntries(entries));
153
+ }
154
+ catch (error) {
155
+ if (error instanceof ExecutorRequiredError || error instanceof SignalAwaitingError || error instanceof RuntimeNodeError)
156
+ throw error;
157
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
158
+ }
159
+ return;
160
+ }
161
+ if (node.kind === "fanout") {
162
+ try {
163
+ const items = evaluateExpr(node.over, scope);
164
+ if (!Array.isArray(items))
165
+ throw new Error(`Fanout node '${node.id}' expected array input.`);
166
+ if (node.strategy === "quorum") {
167
+ const completed = [];
168
+ await Promise.all(items.map((item, itemIndex) => executeScopeAsync(node.do, createFanoutItemScope(scope, node.id, item, itemIndex), options).then(result => {
169
+ completed.push(result.output);
170
+ })));
171
+ if (completed.length < node.count)
172
+ throw new Error(`Fanout quorum node '${node.id}' accepted ${completed.length} items, below required count ${node.count}.`);
173
+ completeNode(scope, node.id, completed.slice(0, node.count));
174
+ return;
175
+ }
176
+ const completed = await Promise.all(items.map(async (item, itemIndex) => (await executeScopeAsync(node.do, createFanoutItemScope(scope, node.id, item, itemIndex), options)).output));
177
+ completeNode(scope, node.id, completed);
178
+ }
179
+ catch (error) {
180
+ if (error instanceof ExecutorRequiredError || error instanceof SignalAwaitingError || error instanceof RuntimeNodeError)
181
+ throw error;
182
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
183
+ }
184
+ return;
185
+ }
186
+ if (node.kind === "loop") {
187
+ try {
188
+ let result = evaluateExpr(node.initial, scope);
189
+ const maxIterations = evaluateLoopMaxIterations(node.maxIterations, scope, node.id);
190
+ for (let iter = 0; iter < maxIterations; iter += 1) {
191
+ scope.loop = {
192
+ ...scope.loop,
193
+ [node.id]: { iter, previous: result, result },
194
+ };
195
+ if (evaluateBoolean(node.stopWhen, scope, node.id)) {
196
+ completeNode(scope, node.id, validateNodeOutput(node, result));
197
+ return;
198
+ }
199
+ const loopScope = createChildScope(scope, {
200
+ loop: {
201
+ ...scope.loop,
202
+ [node.id]: { iter, previous: result },
203
+ },
204
+ });
205
+ result = (await executeScopeAsync(node.do, loopScope, options)).output;
206
+ scope.loop = {
207
+ ...scope.loop,
208
+ [node.id]: { iter, previous: result, result },
209
+ };
210
+ }
211
+ const iter = maxIterations;
212
+ scope.loop = {
213
+ ...scope.loop,
214
+ [node.id]: { iter, previous: result, result },
215
+ };
216
+ if (evaluateBoolean(node.stopWhen, scope, node.id) || node.onExhausted === "returnLast") {
217
+ completeNode(scope, node.id, validateNodeOutput(node, result));
218
+ return;
219
+ }
220
+ throw new Error(`Loop node '${node.id}' exhausted after ${maxIterations} iterations.`);
221
+ }
222
+ catch (error) {
223
+ if (error instanceof ExecutorRequiredError || error instanceof SignalAwaitingError || error instanceof RuntimeNodeError)
224
+ throw error;
225
+ throw new RuntimeNodeError(node.id, error instanceof Error ? error.message : String(error), scope.executedNodes);
226
+ }
227
+ }
228
+ }
229
+ function evaluateOutputs(outputs, scope) {
230
+ return Object.fromEntries(Object.entries(outputs).map(([key, expr]) => [key, evaluateExpr(expr, scope)]));
231
+ }
232
+ function evaluateBoolean(expr, scope, nodeId) {
233
+ const value = evaluateExpr(expr, scope);
234
+ if (typeof value !== "boolean")
235
+ throw new Error(`Node '${nodeId}' condition must evaluate to boolean.`);
236
+ return value;
237
+ }
238
+ function completeNode(scope, id, output) {
239
+ const state = { status: "completed", output };
240
+ scope.nodes = {
241
+ ...scope.nodes,
242
+ [id]: state,
243
+ };
244
+ scope.executedNodes[id] = state;
245
+ }
246
+ function validateNodeOutput(node, output) {
247
+ const normalized = (node.kind === "agent" || node.kind === "signal") && node.outputSchema
248
+ ? normalizeValue(node.outputSchema, output, `Node '${node.id}' output`)
249
+ : output;
250
+ assertWorkflowData(normalized, `Node '${node.id}' output`);
251
+ return normalized;
252
+ }
253
+ function validateSignalOutput(node, output) {
254
+ if (!node.outputSchema && typeof output !== "string")
255
+ throw new Error(`Signal node '${node.id}' payload must be a string.`);
256
+ return validateNodeOutput(node, output);
257
+ }
258
+ function createRootScope(input, meta) {
259
+ return {
260
+ input,
261
+ nodes: {},
262
+ executedNodes: {},
263
+ meta,
264
+ fanout: {},
265
+ loop: {},
266
+ };
267
+ }
268
+ function createChildScope(parent, overrides = {}, executedNodes = parent.executedNodes) {
269
+ return {
270
+ input: parent.input,
271
+ nodes: { ...parent.nodes },
272
+ executedNodes,
273
+ meta: overrides.meta ?? { ...parent.meta },
274
+ fanout: overrides.fanout ?? { ...parent.fanout },
275
+ loop: overrides.loop ?? { ...parent.loop },
276
+ };
277
+ }
278
+ function createFanoutItemScope(parent, nodeId, item, itemIndex) {
279
+ return createChildScope(parent, {
280
+ fanout: {
281
+ ...parent.fanout,
282
+ [nodeId]: { item, itemIndex },
283
+ },
284
+ });
285
+ }
286
+ function scopeHasExecutableNode(scope) {
287
+ return scope.nodes.some(node => {
288
+ if (node.kind === "task" || node.kind === "agent" || node.kind === "signal")
289
+ return true;
290
+ if (node.kind === "if")
291
+ return scopeHasExecutableNode(node.then) || Boolean(node.else && scopeHasExecutableNode(node.else));
292
+ if (node.kind === "switch")
293
+ return node.cases.some(c => scopeHasExecutableNode(c.then)) || Boolean(node.default && scopeHasExecutableNode(node.default));
294
+ if (node.kind === "parallel")
295
+ return Object.values(node.branches).some(branch => scopeHasExecutableNode(branch.scope));
296
+ if (node.kind === "fanout" || node.kind === "loop")
297
+ return scopeHasExecutableNode(node.do);
298
+ return false;
299
+ });
300
+ }
301
+ function renderAssertFailure(node, scope) {
302
+ if (!node.message)
303
+ return `Assert node '${node.id}' failed.`;
304
+ return `Assert node '${node.id}' failed: ${renderTemplate(node.message, scope)}`;
305
+ }
306
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/execution/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { TaskNodeIR } from "@acpus/core/ir";
2
+ import { type EvaluationScope } from "../evaluation/evaluator.js";
3
+ import type { RuntimeStore } from "../store/store.js";
4
+ export type TaskExecutorOptions = {
5
+ cwd: string;
6
+ runId: string;
7
+ store: RuntimeStore;
8
+ nodeKey?: string;
9
+ attemptId?: string;
10
+ attemptNo?: number;
11
+ signal?: AbortSignal;
12
+ };
13
+ export declare function executeTaskNode(node: TaskNodeIR, scope: EvaluationScope, options: TaskExecutorOptions): Promise<unknown>;
14
+ //# sourceMappingURL=task-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/execution/task-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CA8D9H"}
@@ -0,0 +1,186 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { basename, join } from "node:path";
4
+ import { pathToFileURL } from "node:url";
5
+ import { importAuthoringModule } from "@acpus/loader";
6
+ import { task } from "@acpus/core";
7
+ import { createDollar } from "@acpus/core/runtime";
8
+ import { evaluateExpr } from "../evaluation/evaluator.js";
9
+ import { parseDurationMs } from "./duration.js";
10
+ export async function executeTaskNode(node, scope, options) {
11
+ const runDir = options.store.getRunDir(options.runId);
12
+ if (!runDir)
13
+ throw new Error(`Run '${options.runId}' has no run directory.`);
14
+ const absoluteRunDir = join(options.cwd, runDir);
15
+ const fn = await loadTaskFunction(node.run.target, options.cwd);
16
+ const input = Object.fromEntries(Object.entries(node.run.input).map(([key, expr]) => [key, evaluateExpr(expr, scope)]));
17
+ const nodeKey = options.nodeKey ?? node.id;
18
+ const cwd = node.run.cwd ? stringValue(evaluateExpr(node.run.cwd, scope), `Task node '${node.id}' cwd`) : options.cwd;
19
+ const env = evaluateEnv(node.run.env, scope);
20
+ const visibleAttempt = options.attemptNo ?? 1;
21
+ options.store.writeExecutionMetadata({
22
+ runId: options.runId,
23
+ ...(options.attemptId ? { attemptId: options.attemptId } : {}),
24
+ kind: "task_attempt",
25
+ metadata: {
26
+ nodeId: node.id,
27
+ nodeKey,
28
+ attemptNo: visibleAttempt,
29
+ input: input,
30
+ cwd,
31
+ },
32
+ });
33
+ const attemptDir = `attempt-${visibleAttempt}`;
34
+ const outputDir = join(absoluteRunDir, "outputs", nodeKey, attemptDir);
35
+ const workDir = join(absoluteRunDir, "work", nodeKey, attemptDir);
36
+ await mkdir(outputDir, { recursive: true });
37
+ await mkdir(workDir, { recursive: true });
38
+ const controller = new AbortController();
39
+ const abortFromScheduler = () => controller.abort();
40
+ options.signal?.addEventListener("abort", abortFromScheduler, { once: true });
41
+ if (options.signal?.aborted)
42
+ controller.abort();
43
+ let timeout;
44
+ try {
45
+ const task = fn({
46
+ input,
47
+ $: createTaskDollar({ cwd, env }, node, controller.signal),
48
+ artifact: createArtifactApi({
49
+ runId: options.runId,
50
+ nodeKey,
51
+ runDir: absoluteRunDir,
52
+ store: options.store,
53
+ attempt: visibleAttempt,
54
+ signal: controller.signal,
55
+ }),
56
+ env,
57
+ abortSignal: controller.signal,
58
+ });
59
+ if (node.timeout === undefined)
60
+ return await task;
61
+ const timeoutMs = parseDurationMs(node.timeout);
62
+ const timeoutPromise = new Promise((_, reject) => {
63
+ timeout = setTimeout(() => {
64
+ controller.abort();
65
+ reject(new Error(`Task node '${node.id}' timed out after ${node.timeout}.`));
66
+ }, timeoutMs);
67
+ });
68
+ return await Promise.race([task, timeoutPromise]);
69
+ }
70
+ catch (error) {
71
+ throw controller.signal.aborted && !options.signal?.aborted ? new Error(`Task node '${node.id}' timed out after ${node.timeout}.`) : error;
72
+ }
73
+ finally {
74
+ if (timeout)
75
+ clearTimeout(timeout);
76
+ options.signal?.removeEventListener("abort", abortFromScheduler);
77
+ }
78
+ }
79
+ async function loadTaskFunction(target, workspaceDir) {
80
+ if (target.kind === "inline") {
81
+ const mod = await import(`data:text/javascript,${encodeURIComponent(`const __name = (target, _name) => target;\nexport default ${target.source};`)}`);
82
+ const fn = mod.default;
83
+ if (typeof fn !== "function")
84
+ throw new Error("Inline task source did not evaluate to a function.");
85
+ return fn;
86
+ }
87
+ const parentURL = pathToFileURL(join(workspaceDir, target.referrer.path)).href;
88
+ const mod = await importAuthoringModule(target.specifier, { parentURL });
89
+ const token = mod[target.exportName];
90
+ if (!task.isToken(token)) {
91
+ throw new Error(`Reusable task module '${target.specifier}' export '${target.exportName}' is not an Acpus task.`);
92
+ }
93
+ return token.fn;
94
+ }
95
+ function evaluateEnv(env, scope) {
96
+ if (!env)
97
+ return {};
98
+ return Object.fromEntries(Object.entries(env).map(([key, value]) => {
99
+ if ("kind" in value && value.kind === "secret")
100
+ throw new Error(`Task env '${key}' references an unresolved secret.`);
101
+ return [key, stringValue(evaluateExpr(value, scope), `Task env '${key}'`)];
102
+ }));
103
+ }
104
+ function createTaskDollar(options, node, signal) {
105
+ validateExecutionOptions(node);
106
+ const timeout = node.run.execution?.defaultCommandTimeout;
107
+ const dollar = timeout
108
+ ? createDollar(options, { timeout: timeout })
109
+ : createDollar(options);
110
+ return wrapDollar(dollar, signal);
111
+ }
112
+ function wrapDollar(dollar, signal) {
113
+ return ((arg, ...values) => {
114
+ const result = dollar(arg, ...values);
115
+ if (!Array.isArray(arg))
116
+ return wrapDollar(result, signal);
117
+ const command = result;
118
+ if (signal.aborted)
119
+ command.timeout(1, "SIGTERM");
120
+ signal.addEventListener("abort", () => command.timeout(1, "SIGTERM"), { once: true });
121
+ return command;
122
+ });
123
+ }
124
+ function validateExecutionOptions(node) {
125
+ if (node.run.execution?.shell && node.run.execution.shell !== "bash")
126
+ throw new Error(`Task node '${node.id}' execution shell '${node.run.execution.shell}' is not supported yet.`);
127
+ if (node.run.execution?.commandRunner && node.run.execution.commandRunner !== "acpus-zx-core")
128
+ throw new Error(`Task node '${node.id}' execution commandRunner '${node.run.execution.commandRunner}' is not supported yet.`);
129
+ }
130
+ function stringValue(value, label) {
131
+ if (typeof value === "string")
132
+ return value;
133
+ throw new Error(`${label} must evaluate to string.`);
134
+ }
135
+ function createArtifactApi(args) {
136
+ async function writeArtifact(name, bytes, mediaType) {
137
+ if (args.signal.aborted)
138
+ throw new Error(`Task node '${args.nodeKey}' attempt ${args.attempt} is aborted.`);
139
+ const safeName = safeArtifactName(name);
140
+ const id = `artifact_${randomUUID()}`;
141
+ const attemptDir = `attempt-${args.attempt}`;
142
+ const relativePath = join("artifacts", args.nodeKey, attemptDir, `${id}-${safeName}`);
143
+ const absolutePath = join(args.runDir, relativePath);
144
+ await mkdir(join(args.runDir, "artifacts", args.nodeKey, attemptDir), { recursive: true });
145
+ await writeFile(absolutePath, bytes);
146
+ if (args.signal.aborted) {
147
+ await rm(absolutePath, { force: true });
148
+ throw new Error(`Task node '${args.nodeKey}' attempt ${args.attempt} is aborted.`);
149
+ }
150
+ args.store.registerArtifact({
151
+ id,
152
+ runId: args.runId,
153
+ nodeKey: args.nodeKey,
154
+ attempt: args.attempt,
155
+ ...(mediaType ? { mediaType } : {}),
156
+ digest: digest(bytes),
157
+ size: bytes.byteLength,
158
+ relativePath,
159
+ });
160
+ return mediaType === undefined
161
+ ? { kind: "artifact", uri: `artifact://${args.runId}/${id}` }
162
+ : { kind: "artifact", uri: `artifact://${args.runId}/${id}`, mediaType };
163
+ }
164
+ return {
165
+ writeText(name, content, options) {
166
+ return writeArtifact(name, Buffer.from(content, "utf8"), options?.mediaType ?? "text/plain");
167
+ },
168
+ writeJson(name, value) {
169
+ return writeArtifact(name, Buffer.from(`${JSON.stringify(value, null, 2)}\n`, "utf8"), "application/json");
170
+ },
171
+ writeBytes(name, value, options) {
172
+ return writeArtifact(name, value, options?.mediaType);
173
+ },
174
+ async fromFile(path, options) {
175
+ const bytes = await readFile(path);
176
+ return writeArtifact(options?.name ?? basename(path), bytes, options?.mediaType);
177
+ },
178
+ };
179
+ }
180
+ function safeArtifactName(name) {
181
+ return name.replaceAll(/[^A-Za-z0-9._-]/g, "_").slice(0, 120) || "artifact";
182
+ }
183
+ function digest(bytes) {
184
+ return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
185
+ }
186
+ //# sourceMappingURL=task-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/execution/task-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type Result } from "neverthrow";
2
+ export declare const hookEvents: readonly ["run.started", "run.completed", "run.failed", "run.canceled", "run.awaiting", "node.started", "node.completed", "node.failed"];
3
+ export type HookEvent = (typeof hookEvents)[number];
4
+ export type HookSource = "project" | "global";
5
+ export type HookMatch = {
6
+ workflow?: string;
7
+ nodeId?: string;
8
+ nodeKey?: string;
9
+ kind?: string;
10
+ };
11
+ export type HookConfig = {
12
+ id?: string;
13
+ match?: HookMatch;
14
+ command: string;
15
+ timeout?: string;
16
+ };
17
+ export type HooksFile = Partial<Record<HookEvent, HookConfig[]>>;
18
+ export type LoadedHookConfig = HookConfig & {
19
+ event: HookEvent;
20
+ source: HookSource;
21
+ sourcePath: string;
22
+ definitionIndex: number;
23
+ definitionHash: string;
24
+ effectiveId: string;
25
+ };
26
+ export type HookValidationError = {
27
+ path: string;
28
+ message: string;
29
+ };
30
+ export declare function isHookEvent(value: string): value is HookEvent;
31
+ export declare function validateHooksFile(config: unknown): Result<HooksFile, HookValidationError[]>;
32
+ //# sourceMappingURL=config.d.ts.map