@oni.bot/core 1.0.2 → 1.1.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 (293) hide show
  1. package/CHANGELOG.md +146 -146
  2. package/dist/agents/define-agent.d.ts.map +1 -1
  3. package/dist/agents/define-agent.js +7 -2
  4. package/dist/agents/define-agent.js.map +1 -1
  5. package/dist/checkpoint.d.ts.map +1 -1
  6. package/dist/checkpoint.js +7 -2
  7. package/dist/checkpoint.js.map +1 -1
  8. package/dist/checkpointers/postgres.d.ts.map +1 -1
  9. package/dist/checkpointers/postgres.js +45 -28
  10. package/dist/checkpointers/postgres.js.map +1 -1
  11. package/dist/circuit-breaker.d.ts +1 -0
  12. package/dist/circuit-breaker.d.ts.map +1 -1
  13. package/dist/circuit-breaker.js +13 -0
  14. package/dist/circuit-breaker.js.map +1 -1
  15. package/dist/cli/dev.d.ts.map +1 -1
  16. package/dist/cli/dev.js +0 -1
  17. package/dist/cli/dev.js.map +1 -1
  18. package/dist/cli/inspect.d.ts.map +1 -1
  19. package/dist/cli/inspect.js +4 -2
  20. package/dist/cli/inspect.js.map +1 -1
  21. package/dist/cli/run.d.ts.map +1 -1
  22. package/dist/cli/run.js +0 -1
  23. package/dist/cli/run.js.map +1 -1
  24. package/dist/config/loader.d.ts +1 -1
  25. package/dist/config/loader.js +12 -4
  26. package/dist/config/loader.js.map +1 -1
  27. package/dist/coordination/pubsub.d.ts +1 -0
  28. package/dist/coordination/pubsub.d.ts.map +1 -1
  29. package/dist/coordination/pubsub.js +31 -16
  30. package/dist/coordination/pubsub.js.map +1 -1
  31. package/dist/coordination/request-reply.d.ts +17 -2
  32. package/dist/coordination/request-reply.d.ts.map +1 -1
  33. package/dist/coordination/request-reply.js +56 -14
  34. package/dist/coordination/request-reply.js.map +1 -1
  35. package/dist/events/bus.d.ts +1 -0
  36. package/dist/events/bus.d.ts.map +1 -1
  37. package/dist/events/bus.js +17 -10
  38. package/dist/events/bus.js.map +1 -1
  39. package/dist/functional.d.ts.map +1 -1
  40. package/dist/functional.js +3 -0
  41. package/dist/functional.js.map +1 -1
  42. package/dist/graph.d.ts +11 -1
  43. package/dist/graph.d.ts.map +1 -1
  44. package/dist/graph.js +9 -4
  45. package/dist/graph.js.map +1 -1
  46. package/dist/guardrails/audit.d.ts +4 -1
  47. package/dist/guardrails/audit.d.ts.map +1 -1
  48. package/dist/guardrails/audit.js +18 -1
  49. package/dist/guardrails/audit.js.map +1 -1
  50. package/dist/harness/agent-loop.d.ts +1 -7
  51. package/dist/harness/agent-loop.d.ts.map +1 -1
  52. package/dist/harness/agent-loop.js +2 -523
  53. package/dist/harness/agent-loop.js.map +1 -1
  54. package/dist/harness/context-compactor.d.ts +1 -0
  55. package/dist/harness/context-compactor.d.ts.map +1 -1
  56. package/dist/harness/context-compactor.js +43 -1
  57. package/dist/harness/context-compactor.js.map +1 -1
  58. package/dist/harness/harness.d.ts +6 -0
  59. package/dist/harness/harness.d.ts.map +1 -1
  60. package/dist/harness/harness.js +32 -5
  61. package/dist/harness/harness.js.map +1 -1
  62. package/dist/harness/hooks-engine.d.ts.map +1 -1
  63. package/dist/harness/hooks-engine.js +12 -10
  64. package/dist/harness/hooks-engine.js.map +1 -1
  65. package/dist/harness/index.d.ts +3 -1
  66. package/dist/harness/index.d.ts.map +1 -1
  67. package/dist/harness/index.js +2 -0
  68. package/dist/harness/index.js.map +1 -1
  69. package/dist/harness/loop/hooks.d.ts +7 -0
  70. package/dist/harness/loop/hooks.d.ts.map +1 -0
  71. package/dist/harness/loop/hooks.js +46 -0
  72. package/dist/harness/loop/hooks.js.map +1 -0
  73. package/dist/harness/loop/index.d.ts +8 -0
  74. package/dist/harness/loop/index.d.ts.map +1 -0
  75. package/dist/harness/loop/index.js +257 -0
  76. package/dist/harness/loop/index.js.map +1 -0
  77. package/dist/harness/loop/inference.d.ts +19 -0
  78. package/dist/harness/loop/inference.d.ts.map +1 -0
  79. package/dist/harness/loop/inference.js +121 -0
  80. package/dist/harness/loop/inference.js.map +1 -0
  81. package/dist/harness/loop/memory.d.ts +22 -0
  82. package/dist/harness/loop/memory.d.ts.map +1 -0
  83. package/dist/harness/loop/memory.js +73 -0
  84. package/dist/harness/loop/memory.js.map +1 -0
  85. package/dist/harness/loop/safety.d.ts +8 -0
  86. package/dist/harness/loop/safety.d.ts.map +1 -0
  87. package/dist/harness/loop/safety.js +21 -0
  88. package/dist/harness/loop/safety.js.map +1 -0
  89. package/dist/harness/loop/tools.d.ts +24 -0
  90. package/dist/harness/loop/tools.d.ts.map +1 -0
  91. package/dist/harness/loop/tools.js +184 -0
  92. package/dist/harness/loop/tools.js.map +1 -0
  93. package/dist/harness/loop/types.d.ts +7 -0
  94. package/dist/harness/loop/types.d.ts.map +1 -0
  95. package/dist/harness/loop/types.js +9 -0
  96. package/dist/harness/loop/types.js.map +1 -0
  97. package/dist/harness/memory/fs-compat.d.ts +3 -0
  98. package/dist/harness/memory/fs-compat.d.ts.map +1 -0
  99. package/dist/harness/memory/fs-compat.js +26 -0
  100. package/dist/harness/memory/fs-compat.js.map +1 -0
  101. package/dist/harness/memory/index.d.ts +105 -0
  102. package/dist/harness/memory/index.d.ts.map +1 -0
  103. package/dist/harness/memory/index.js +491 -0
  104. package/dist/harness/memory/index.js.map +1 -0
  105. package/dist/harness/memory/prompter.d.ts +7 -0
  106. package/dist/harness/memory/prompter.d.ts.map +1 -0
  107. package/dist/harness/memory/prompter.js +24 -0
  108. package/dist/harness/memory/prompter.js.map +1 -0
  109. package/dist/harness/memory/ranker.d.ts +15 -0
  110. package/dist/harness/memory/ranker.d.ts.map +1 -0
  111. package/dist/harness/memory/ranker.js +72 -0
  112. package/dist/harness/memory/ranker.js.map +1 -0
  113. package/dist/harness/memory/scanner.d.ts +26 -0
  114. package/dist/harness/memory/scanner.d.ts.map +1 -0
  115. package/dist/harness/memory/scanner.js +187 -0
  116. package/dist/harness/memory/scanner.js.map +1 -0
  117. package/dist/harness/memory/types.d.ts +50 -0
  118. package/dist/harness/memory/types.d.ts.map +1 -0
  119. package/dist/harness/memory/types.js +7 -0
  120. package/dist/harness/memory/types.js.map +1 -0
  121. package/dist/harness/memory-loader.d.ts +3 -0
  122. package/dist/harness/memory-loader.d.ts.map +1 -0
  123. package/dist/harness/memory-loader.js +2 -0
  124. package/dist/harness/memory-loader.js.map +1 -0
  125. package/dist/harness/safety-gate.d.ts.map +1 -1
  126. package/dist/harness/safety-gate.js +47 -26
  127. package/dist/harness/safety-gate.js.map +1 -1
  128. package/dist/harness/skill-loader.d.ts +7 -0
  129. package/dist/harness/skill-loader.d.ts.map +1 -1
  130. package/dist/harness/skill-loader.js +24 -8
  131. package/dist/harness/skill-loader.js.map +1 -1
  132. package/dist/harness/todo-module.d.ts.map +1 -1
  133. package/dist/harness/todo-module.js +13 -6
  134. package/dist/harness/todo-module.js.map +1 -1
  135. package/dist/harness/types.d.ts +7 -0
  136. package/dist/harness/types.d.ts.map +1 -1
  137. package/dist/harness/types.js.map +1 -1
  138. package/dist/harness/validate-args.js +18 -3
  139. package/dist/harness/validate-args.js.map +1 -1
  140. package/dist/hitl/interrupt.d.ts +2 -2
  141. package/dist/hitl/interrupt.d.ts.map +1 -1
  142. package/dist/hitl/interrupt.js +8 -5
  143. package/dist/hitl/interrupt.js.map +1 -1
  144. package/dist/hitl/resume.d.ts +10 -0
  145. package/dist/hitl/resume.d.ts.map +1 -1
  146. package/dist/hitl/resume.js +31 -0
  147. package/dist/hitl/resume.js.map +1 -1
  148. package/dist/injected.d.ts.map +1 -1
  149. package/dist/injected.js.map +1 -1
  150. package/dist/inspect.d.ts.map +1 -1
  151. package/dist/inspect.js +28 -8
  152. package/dist/inspect.js.map +1 -1
  153. package/dist/lsp/client.d.ts +2 -0
  154. package/dist/lsp/client.d.ts.map +1 -1
  155. package/dist/lsp/client.js +62 -17
  156. package/dist/lsp/client.js.map +1 -1
  157. package/dist/lsp/index.d.ts.map +1 -1
  158. package/dist/lsp/index.js.map +1 -1
  159. package/dist/mcp/client.d.ts +2 -0
  160. package/dist/mcp/client.d.ts.map +1 -1
  161. package/dist/mcp/client.js +44 -13
  162. package/dist/mcp/client.js.map +1 -1
  163. package/dist/mcp/convert.js +1 -1
  164. package/dist/mcp/convert.js.map +1 -1
  165. package/dist/mcp/transport.d.ts +2 -0
  166. package/dist/mcp/transport.d.ts.map +1 -1
  167. package/dist/mcp/transport.js +33 -8
  168. package/dist/mcp/transport.js.map +1 -1
  169. package/dist/messages/index.d.ts.map +1 -1
  170. package/dist/messages/index.js +7 -1
  171. package/dist/messages/index.js.map +1 -1
  172. package/dist/models/anthropic.d.ts.map +1 -1
  173. package/dist/models/anthropic.js +25 -15
  174. package/dist/models/anthropic.js.map +1 -1
  175. package/dist/models/google.d.ts.map +1 -1
  176. package/dist/models/google.js +23 -7
  177. package/dist/models/google.js.map +1 -1
  178. package/dist/models/ollama.d.ts.map +1 -1
  179. package/dist/models/ollama.js +11 -1
  180. package/dist/models/ollama.js.map +1 -1
  181. package/dist/models/openai.d.ts.map +1 -1
  182. package/dist/models/openai.js +15 -3
  183. package/dist/models/openai.js.map +1 -1
  184. package/dist/models/openrouter.d.ts.map +1 -1
  185. package/dist/models/openrouter.js +14 -3
  186. package/dist/models/openrouter.js.map +1 -1
  187. package/dist/prebuilt/react-agent.d.ts.map +1 -1
  188. package/dist/prebuilt/react-agent.js +7 -2
  189. package/dist/prebuilt/react-agent.js.map +1 -1
  190. package/dist/pregel/checkpointing.d.ts +12 -0
  191. package/dist/pregel/checkpointing.d.ts.map +1 -0
  192. package/dist/pregel/checkpointing.js +60 -0
  193. package/dist/pregel/checkpointing.js.map +1 -0
  194. package/dist/pregel/execution.d.ts +7 -0
  195. package/dist/pregel/execution.d.ts.map +1 -0
  196. package/dist/pregel/execution.js +178 -0
  197. package/dist/pregel/execution.js.map +1 -0
  198. package/dist/pregel/index.d.ts +61 -0
  199. package/dist/pregel/index.d.ts.map +1 -0
  200. package/dist/pregel/index.js +154 -0
  201. package/dist/pregel/index.js.map +1 -0
  202. package/dist/pregel/interrupts.d.ts +3 -0
  203. package/dist/pregel/interrupts.d.ts.map +1 -0
  204. package/dist/pregel/interrupts.js +7 -0
  205. package/dist/pregel/interrupts.js.map +1 -0
  206. package/dist/pregel/state-helpers.d.ts +12 -0
  207. package/dist/pregel/state-helpers.d.ts.map +1 -0
  208. package/dist/pregel/state-helpers.js +71 -0
  209. package/dist/pregel/state-helpers.js.map +1 -0
  210. package/dist/pregel/streaming.d.ts +5 -0
  211. package/dist/pregel/streaming.d.ts.map +1 -0
  212. package/dist/pregel/streaming.js +462 -0
  213. package/dist/pregel/streaming.js.map +1 -0
  214. package/dist/pregel/types.d.ts +48 -0
  215. package/dist/pregel/types.d.ts.map +1 -0
  216. package/dist/pregel/types.js +5 -0
  217. package/dist/pregel/types.js.map +1 -0
  218. package/dist/pregel.d.ts +1 -63
  219. package/dist/pregel.d.ts.map +1 -1
  220. package/dist/pregel.js +2 -804
  221. package/dist/pregel.js.map +1 -1
  222. package/dist/retry.d.ts.map +1 -1
  223. package/dist/retry.js +7 -6
  224. package/dist/retry.js.map +1 -1
  225. package/dist/store/index.d.ts.map +1 -1
  226. package/dist/store/index.js +36 -9
  227. package/dist/store/index.js.map +1 -1
  228. package/dist/stream-events.d.ts.map +1 -1
  229. package/dist/stream-events.js +3 -9
  230. package/dist/stream-events.js.map +1 -1
  231. package/dist/swarm/agent-node.d.ts +11 -0
  232. package/dist/swarm/agent-node.d.ts.map +1 -0
  233. package/dist/swarm/agent-node.js +156 -0
  234. package/dist/swarm/agent-node.js.map +1 -0
  235. package/dist/swarm/compile-ext.d.ts +5 -0
  236. package/dist/swarm/compile-ext.d.ts.map +1 -0
  237. package/dist/swarm/compile-ext.js +126 -0
  238. package/dist/swarm/compile-ext.js.map +1 -0
  239. package/dist/swarm/config.d.ts +147 -0
  240. package/dist/swarm/config.d.ts.map +1 -0
  241. package/dist/swarm/config.js +17 -0
  242. package/dist/swarm/config.js.map +1 -0
  243. package/dist/swarm/factories.d.ts +37 -0
  244. package/dist/swarm/factories.d.ts.map +1 -0
  245. package/dist/swarm/factories.js +703 -0
  246. package/dist/swarm/factories.js.map +1 -0
  247. package/dist/swarm/graph.d.ts +16 -136
  248. package/dist/swarm/graph.d.ts.map +1 -1
  249. package/dist/swarm/graph.js +39 -897
  250. package/dist/swarm/graph.js.map +1 -1
  251. package/dist/swarm/index.d.ts +2 -1
  252. package/dist/swarm/index.d.ts.map +1 -1
  253. package/dist/swarm/index.js.map +1 -1
  254. package/dist/swarm/mailbox.d.ts.map +1 -1
  255. package/dist/swarm/mailbox.js +3 -1
  256. package/dist/swarm/mailbox.js.map +1 -1
  257. package/dist/swarm/mermaid.d.ts +2 -1
  258. package/dist/swarm/mermaid.d.ts.map +1 -1
  259. package/dist/swarm/mermaid.js +6 -3
  260. package/dist/swarm/mermaid.js.map +1 -1
  261. package/dist/swarm/pool.d.ts.map +1 -1
  262. package/dist/swarm/pool.js +18 -1
  263. package/dist/swarm/pool.js.map +1 -1
  264. package/dist/swarm/registry.d.ts.map +1 -1
  265. package/dist/swarm/registry.js +7 -0
  266. package/dist/swarm/registry.js.map +1 -1
  267. package/dist/swarm/scaling.d.ts +10 -1
  268. package/dist/swarm/scaling.d.ts.map +1 -1
  269. package/dist/swarm/scaling.js +85 -14
  270. package/dist/swarm/scaling.js.map +1 -1
  271. package/dist/swarm/snapshot.d.ts.map +1 -1
  272. package/dist/swarm/snapshot.js +10 -1
  273. package/dist/swarm/snapshot.js.map +1 -1
  274. package/dist/swarm/supervisor.js +20 -12
  275. package/dist/swarm/supervisor.js.map +1 -1
  276. package/dist/swarm/tracer.d.ts +3 -1
  277. package/dist/swarm/tracer.d.ts.map +1 -1
  278. package/dist/swarm/tracer.js +66 -15
  279. package/dist/swarm/tracer.js.map +1 -1
  280. package/dist/swarm/types.d.ts +1 -6
  281. package/dist/swarm/types.d.ts.map +1 -1
  282. package/dist/testing/index.d.ts +4 -4
  283. package/dist/testing/index.d.ts.map +1 -1
  284. package/dist/testing/index.js +3 -2
  285. package/dist/testing/index.js.map +1 -1
  286. package/dist/tools/define.d.ts +2 -1
  287. package/dist/tools/define.d.ts.map +1 -1
  288. package/dist/tools/define.js +3 -1
  289. package/dist/tools/define.js.map +1 -1
  290. package/dist/tools/types.d.ts.map +1 -1
  291. package/dist/types.d.ts +3 -1
  292. package/dist/types.d.ts.map +1 -1
  293. package/package.json +1 -1
@@ -0,0 +1,60 @@
1
+ // ============================================================
2
+ // src/pregel/checkpointing.ts — Checkpoint persistence helpers
3
+ // ============================================================
4
+ import { applyUpdate } from "./state-helpers.js";
5
+ export async function saveCheckpoint(ctx, threadId, step, state, nextNodes, pendingSends, agentId, metadata, pendingWrites) {
6
+ const cp = (ctx._perInvocationCheckpointer.get(threadId) ?? ctx.checkpointer);
7
+ if (!cp)
8
+ return;
9
+ const cpSpan = ctx.tracer.startCheckpointSpan("put", { threadId });
10
+ try {
11
+ await cp.put({
12
+ threadId, step, state, agentId, metadata, pendingWrites,
13
+ nextNodes: nextNodes.map(String),
14
+ pendingSends: pendingSends,
15
+ timestamp: Date.now(),
16
+ });
17
+ }
18
+ finally {
19
+ ctx.tracer.endSpan(cpSpan);
20
+ }
21
+ }
22
+ export async function getState(checkpointer, threadId) {
23
+ if (!checkpointer)
24
+ return null;
25
+ return (await checkpointer.get(threadId))?.state ?? null;
26
+ }
27
+ export async function updateState(checkpointer, channels, threadId, update) {
28
+ if (!checkpointer)
29
+ return;
30
+ const cp = await checkpointer.get(threadId);
31
+ if (!cp)
32
+ return;
33
+ await checkpointer.put({ ...cp, state: applyUpdate(channels, cp.state, update), timestamp: Date.now() });
34
+ }
35
+ export async function getStateAt(checkpointer, threadId, step) {
36
+ if (!checkpointer)
37
+ return null;
38
+ const history = await checkpointer.list(threadId);
39
+ return history.find((c) => c.step === step)?.state ?? null;
40
+ }
41
+ export async function getHistory(checkpointer, threadId) {
42
+ if (!checkpointer)
43
+ return [];
44
+ return checkpointer.list(threadId);
45
+ }
46
+ export async function forkFrom(checkpointer, threadId, step, newThreadId) {
47
+ if (!checkpointer)
48
+ return;
49
+ const cp = checkpointer;
50
+ if (typeof cp.fork === "function") {
51
+ await cp.fork(threadId, step, newThreadId);
52
+ }
53
+ else {
54
+ const history = await checkpointer.list(threadId);
55
+ for (const c of history.filter((x) => x.step <= step)) {
56
+ await checkpointer.put({ ...c, threadId: newThreadId });
57
+ }
58
+ }
59
+ }
60
+ //# sourceMappingURL=checkpointing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpointing.js","sourceRoot":"","sources":["../../src/pregel/checkpointing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type NodeDefinition, type ONIConfig, type NodeReturn } from "../types.js";
2
+ import { CircuitBreaker } from "../circuit-breaker.js";
3
+ import { type StreamWriter } from "../context.js";
4
+ import type { PregelContext } from "./types.js";
5
+ export declare function getCircuitBreaker<S extends Record<string, unknown>>(nodeDef: NodeDefinition<S>, circuitBreakers: Map<string, CircuitBreaker>): CircuitBreaker | null;
6
+ export declare function executeNode<S extends Record<string, unknown>>(ctx: PregelContext<S>, nodeDef: NodeDefinition<S>, state: S, config?: ONIConfig, resumeValue?: unknown, hasResume?: boolean, writer?: StreamWriter | null, step?: number, recursionLimit?: number): Promise<NodeReturn<S>>;
7
+ //# sourceMappingURL=execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/pregel/execution.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,cAAc,EAAE,KAAK,SAAS,EAAoB,KAAK,UAAU,EACvE,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAOpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAC3C,cAAc,GAAG,IAAI,CAWvB;AAED,wBAAsB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,SAAS,EAClB,WAAW,CAAC,EAAE,OAAO,EACrB,SAAS,CAAC,EAAE,OAAO,EACnB,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,EAC5B,IAAI,CAAC,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAoJxB"}
@@ -0,0 +1,178 @@
1
+ // ============================================================
2
+ // src/pregel/execution.ts — Node execution with retry/timeout/CB
3
+ // ============================================================
4
+ import { ONIError, NodeTimeoutError, NodeExecutionError, CircuitBreakerOpenError } from "../errors.js";
5
+ import { CircuitBreaker } from "../circuit-breaker.js";
6
+ import { withRetry } from "../retry.js";
7
+ import { _runWithContext } from "../context.js";
8
+ import { NodeInterruptSignal, _installInterruptContext, _clearInterruptContext, } from "../hitl/index.js";
9
+ import { runFilters } from "../guardrails/filters.js";
10
+ const DEFAULT_RECURSION_LIMIT = 25;
11
+ /** Maximum entries in the node result cache — oldest entries evicted FIFO when full. */
12
+ const NODE_CACHE_MAX_SIZE = 256;
13
+ export function getCircuitBreaker(nodeDef, circuitBreakers) {
14
+ if (!nodeDef.circuitBreaker)
15
+ return null;
16
+ let cb = circuitBreakers.get(nodeDef.name);
17
+ if (!cb) {
18
+ cb = new CircuitBreaker({
19
+ threshold: nodeDef.circuitBreaker.threshold,
20
+ resetAfter: nodeDef.circuitBreaker.resetAfter,
21
+ }, nodeDef.name);
22
+ circuitBreakers.set(nodeDef.name, cb);
23
+ }
24
+ return cb;
25
+ }
26
+ export async function executeNode(ctx, nodeDef, state, config, resumeValue, hasResume, writer, step, recursionLimit) {
27
+ // Check cache (compute key once, reuse for both lookup and store)
28
+ let cacheKey;
29
+ if (nodeDef.cache) {
30
+ const policy = typeof nodeDef.cache === "object" ? nodeDef.cache : {};
31
+ const keyFn = policy.key ?? ((s) => JSON.stringify(s));
32
+ cacheKey = `${nodeDef.name}::${keyFn(state)}`;
33
+ const cached = ctx.nodeCache.get(cacheKey);
34
+ if (cached) {
35
+ const ttl = policy.ttl ?? Infinity;
36
+ if (Date.now() - cached.timestamp < ttl) {
37
+ return cached.result;
38
+ }
39
+ ctx.nodeCache.delete(cacheKey);
40
+ }
41
+ }
42
+ const _tid = config?.threadId ?? "unknown";
43
+ const runCtx = {
44
+ config: config ?? {},
45
+ store: ctx.store,
46
+ writer: writer ?? null,
47
+ state: state,
48
+ parentGraph: null,
49
+ parentUpdates: [],
50
+ step: step ?? 0,
51
+ recursionLimit: recursionLimit ?? DEFAULT_RECURSION_LIMIT,
52
+ toolPermissions: ctx.toolPermissions,
53
+ _recordUsage: (agentName, modelId, usage) => {
54
+ if (!ctx.budgetTracker)
55
+ return;
56
+ const entries = ctx.budgetTracker.record(agentName, modelId, usage);
57
+ for (const e of entries)
58
+ ctx.auditLog?.record(_tid, e);
59
+ },
60
+ _emitEvent: (event) => ctx.eventBus.emit(event),
61
+ _auditRecord: (entry) => ctx.auditLog?.record(_tid, entry),
62
+ };
63
+ return _runWithContext(runCtx, async () => {
64
+ _installInterruptContext({
65
+ nodeName: nodeDef.name,
66
+ resumeValues: hasResume ? [resumeValue] : [],
67
+ });
68
+ try {
69
+ // Content filter — input direction
70
+ if (ctx.contentFilters.length > 0) {
71
+ const inputStr = JSON.stringify(state);
72
+ const inputCheck = runFilters(ctx.contentFilters, inputStr, "input");
73
+ if (!inputCheck.passed) {
74
+ const threadId = config?.threadId ?? "unknown";
75
+ ctx.eventBus.emit({ type: "filter.blocked", filter: inputCheck.blockedBy, agent: nodeDef.name, direction: "input", reason: inputCheck.reason, timestamp: Date.now() });
76
+ ctx.auditLog?.record(threadId, { timestamp: Date.now(), agent: nodeDef.name, action: "filter.blocked", data: { filter: inputCheck.blockedBy, direction: "input", reason: inputCheck.reason } });
77
+ throw new Error(`Content blocked by filter "${inputCheck.blockedBy}" on input to node "${nodeDef.name}": ${inputCheck.reason}`);
78
+ }
79
+ // Apply redaction if content was rewritten by a redacting filter
80
+ if (inputCheck.content !== inputStr) {
81
+ try {
82
+ state = JSON.parse(inputCheck.content);
83
+ }
84
+ catch { /* leave state unchanged on parse failure */ }
85
+ }
86
+ }
87
+ const run = () => Promise.resolve(nodeDef.fn(state, config));
88
+ // Core execute call: retry-aware
89
+ const executeCall = async () => {
90
+ if (nodeDef.retry)
91
+ return withRetry(run, nodeDef.name, nodeDef.retry);
92
+ return run();
93
+ };
94
+ // Wrap with timeout if configured (per-node > global default > none)
95
+ const timeoutMs = nodeDef.timeout ?? ctx.defaults?.nodeTimeout;
96
+ const executeWithTimeout = async () => {
97
+ if (timeoutMs != null && timeoutMs > 0) {
98
+ const ac = new AbortController();
99
+ const timer = setTimeout(() => ac.abort(), timeoutMs);
100
+ try {
101
+ return await Promise.race([
102
+ executeCall(),
103
+ new Promise((_, reject) => {
104
+ ac.signal.addEventListener("abort", () => {
105
+ reject(new NodeTimeoutError(nodeDef.name, timeoutMs));
106
+ });
107
+ }),
108
+ ]);
109
+ }
110
+ finally {
111
+ clearTimeout(timer);
112
+ }
113
+ }
114
+ return executeCall();
115
+ };
116
+ // Wrap with circuit breaker if configured
117
+ const cb = getCircuitBreaker(nodeDef, ctx.circuitBreakers);
118
+ let result;
119
+ try {
120
+ if (cb) {
121
+ result = await cb.execute(executeWithTimeout);
122
+ }
123
+ else {
124
+ result = await executeWithTimeout();
125
+ }
126
+ }
127
+ catch (err) {
128
+ // Pass through interrupt signals (thrown by interrupt() inside nodes)
129
+ if (err instanceof NodeInterruptSignal)
130
+ throw err;
131
+ // Circuit breaker open — invoke user fallback with real state + error
132
+ if (err instanceof CircuitBreakerOpenError && nodeDef.circuitBreaker?.fallback) {
133
+ result = nodeDef.circuitBreaker.fallback(state, err);
134
+ }
135
+ else {
136
+ // Pass through structured ONI errors (NodeExecutionError from retry, NodeTimeoutError, etc.)
137
+ if (err instanceof ONIError)
138
+ throw err;
139
+ // Wrap raw errors and non-Error throws in NodeExecutionError
140
+ const cause = err instanceof Error ? err : new Error(String(err));
141
+ throw new NodeExecutionError(nodeDef.name, cause);
142
+ }
143
+ }
144
+ // Content filter — output direction
145
+ if (ctx.contentFilters.length > 0 && result != null) {
146
+ const outputStr = JSON.stringify(result);
147
+ const outputCheck = runFilters(ctx.contentFilters, outputStr, "output");
148
+ if (!outputCheck.passed) {
149
+ const threadId = config?.threadId ?? "unknown";
150
+ ctx.eventBus.emit({ type: "filter.blocked", filter: outputCheck.blockedBy, agent: nodeDef.name, direction: "output", reason: outputCheck.reason, timestamp: Date.now() });
151
+ ctx.auditLog?.record(threadId, { timestamp: Date.now(), agent: nodeDef.name, action: "filter.blocked", data: { filter: outputCheck.blockedBy, direction: "output", reason: outputCheck.reason } });
152
+ throw new Error(`Content blocked by filter "${outputCheck.blockedBy}" on output of node "${nodeDef.name}": ${outputCheck.reason}`);
153
+ }
154
+ // Apply redaction if content was rewritten by a redacting filter
155
+ if (outputCheck.content !== outputStr) {
156
+ try {
157
+ result = JSON.parse(outputCheck.content);
158
+ }
159
+ catch { /* leave result unchanged on parse failure */ }
160
+ }
161
+ }
162
+ // Store in cache (reuse key computed above); evict oldest entry when full
163
+ if (nodeDef.cache && cacheKey) {
164
+ if (ctx.nodeCache.size >= NODE_CACHE_MAX_SIZE) {
165
+ const oldest = ctx.nodeCache.keys().next().value;
166
+ if (oldest !== undefined)
167
+ ctx.nodeCache.delete(oldest);
168
+ }
169
+ ctx.nodeCache.set(cacheKey, { result, timestamp: Date.now() });
170
+ }
171
+ return result;
172
+ }
173
+ finally {
174
+ _clearInterruptContext();
175
+ }
176
+ });
177
+ }
178
+ //# sourceMappingURL=execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/pregel/execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { type NodeDefinition, type Edge, type ChannelSchema, type ONIConfig, type ONIStreamEvent, type StreamMode, type InterruptConfig, type ONICheckpointer, type ONICheckpoint } from "../types.js";
2
+ import { DeadLetterQueue, type DeadLetter } from "../dlq.js";
3
+ import type { BaseStore } from "../store/index.js";
4
+ import { HITLSessionStore } from "../hitl/index.js";
5
+ import { EventBus } from "../events/bus.js";
6
+ import type { GuardrailsConfig } from "../guardrails/types.js";
7
+ import type { EventListeners } from "../events/types.js";
8
+ import { AuditLog } from "../guardrails/audit.js";
9
+ import { BudgetTracker } from "../guardrails/budget.js";
10
+ import { ONITracer, type TracerLike } from "../telemetry.js";
11
+ import type { CustomStreamEvent, MessageStreamEvent } from "../types.js";
12
+ export declare class ONIPregelRunner<S extends Record<string, unknown>> {
13
+ private readonly nodes;
14
+ private readonly edges;
15
+ private readonly channels;
16
+ private readonly interruptConfig;
17
+ private readonly checkpointer;
18
+ private readonly store;
19
+ private readonly defaults?;
20
+ private readonly dlq;
21
+ private hitlStore;
22
+ private nodeCache;
23
+ private circuitBreakers;
24
+ /** Count of concurrent subgraph invocations active on this runner. >0 means running as subgraph. */
25
+ _subgraphRef: {
26
+ count: number;
27
+ };
28
+ /** Per-invocation parent updates from Command.PARENT, keyed by parent threadId. */
29
+ readonly _perInvocationParentUpdates: Map<string, Partial<unknown>[]>;
30
+ /** Per-invocation checkpointer override for subgraph isolation, keyed by threadId. */
31
+ readonly _perInvocationCheckpointer: Map<string, unknown>;
32
+ readonly eventBus: EventBus;
33
+ readonly auditLog: AuditLog | null;
34
+ readonly budgetTracker: BudgetTracker | null;
35
+ private readonly contentFilters;
36
+ private readonly toolPermissions;
37
+ readonly tracer: ONITracer;
38
+ /** Pre-indexed edges by source node — O(1) lookup instead of O(n) filter */
39
+ private readonly _edgesBySource;
40
+ /** Pre-computed ephemeral channel keys — avoids iterating all channels */
41
+ private readonly _ephemeralKeys;
42
+ constructor(nodes: Map<string, NodeDefinition<S>>, edges: Edge<S>[], channels: ChannelSchema<S>, interruptConfig?: InterruptConfig, checkpointer?: ONICheckpointer<S> | null, store?: BaseStore | null, guardrails?: GuardrailsConfig, listeners?: EventListeners, defaults?: {
43
+ nodeTimeout?: number;
44
+ } | undefined, dlq?: DeadLetterQueue | null, tracer?: TracerLike | null);
45
+ private get _ctx();
46
+ _stream(input: Partial<S>, config?: ONIConfig, streamMode?: StreamMode | StreamMode[]): AsyncGenerator<ONIStreamEvent<S> | CustomStreamEvent | MessageStreamEvent>;
47
+ invoke(input: Partial<S>, config?: ONIConfig): Promise<S>;
48
+ stream(input: Partial<S>, config?: ONIConfig & {
49
+ streamMode?: StreamMode | StreamMode[];
50
+ }): AsyncGenerator<ONIStreamEvent<S> | CustomStreamEvent | MessageStreamEvent>;
51
+ batch(inputs: Partial<S>[], config?: ONIConfig): Promise<S[]>;
52
+ getState(threadId: string): Promise<S | null>;
53
+ updateState(threadId: string, update: Partial<S>): Promise<void>;
54
+ getStateAt(threadId: string, step: number): Promise<S | null>;
55
+ getHistory(threadId: string): Promise<ONICheckpoint<S>[]>;
56
+ forkFrom(threadId: string, step: number, newThreadId: string): Promise<void>;
57
+ getPendingInterrupts(threadId: string): import("../hitl/resume.js").HITLSession<S>[];
58
+ hitlSessionStore(): HITLSessionStore<S>;
59
+ getDeadLetters(threadId: string): DeadLetter[];
60
+ }
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pregel/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ // ============================================================
2
+ // @oni.bot/core — Pregel Execution Engine v3
3
+ // New: interrupt() context management, HITL resume, token streaming
4
+ // ============================================================
5
+ import { HITLSessionStore } from "../hitl/index.js";
6
+ import { EventBus } from "../events/bus.js";
7
+ import { AuditLog } from "../guardrails/audit.js";
8
+ import { BudgetTracker } from "../guardrails/budget.js";
9
+ import { ONITracer } from "../telemetry.js";
10
+ import { streamSupersteps } from "./streaming.js";
11
+ import { getState, updateState, getStateAt, getHistory, forkFrom, } from "./checkpointing.js";
12
+ import { getPendingInterrupts } from "./interrupts.js";
13
+ export class ONIPregelRunner {
14
+ nodes;
15
+ edges;
16
+ channels;
17
+ interruptConfig;
18
+ checkpointer;
19
+ store;
20
+ defaults;
21
+ dlq;
22
+ hitlStore = new HITLSessionStore();
23
+ nodeCache = new Map();
24
+ circuitBreakers = new Map();
25
+ /** Count of concurrent subgraph invocations active on this runner. >0 means running as subgraph. */
26
+ _subgraphRef = { count: 0 };
27
+ /** Per-invocation parent updates from Command.PARENT, keyed by parent threadId. */
28
+ _perInvocationParentUpdates = new Map();
29
+ /** Per-invocation checkpointer override for subgraph isolation, keyed by threadId. */
30
+ _perInvocationCheckpointer = new Map();
31
+ eventBus;
32
+ auditLog;
33
+ budgetTracker;
34
+ contentFilters;
35
+ toolPermissions;
36
+ tracer;
37
+ /** Pre-indexed edges by source node — O(1) lookup instead of O(n) filter */
38
+ _edgesBySource;
39
+ /** Pre-computed ephemeral channel keys — avoids iterating all channels */
40
+ _ephemeralKeys;
41
+ constructor(nodes, edges, channels, interruptConfig = {}, checkpointer = null, store = null, guardrails, listeners, defaults, dlq = null, tracer) {
42
+ this.nodes = nodes;
43
+ this.edges = edges;
44
+ this.channels = channels;
45
+ this.interruptConfig = interruptConfig;
46
+ this.checkpointer = checkpointer;
47
+ this.store = store;
48
+ this.defaults = defaults;
49
+ this.dlq = dlq;
50
+ this.eventBus = new EventBus(listeners);
51
+ this.auditLog = guardrails?.audit ? new AuditLog() : null;
52
+ this.budgetTracker = guardrails?.budget ? new BudgetTracker(guardrails.budget) : null;
53
+ this.contentFilters = guardrails?.filters ?? [];
54
+ this.toolPermissions = guardrails?.toolPermissions;
55
+ this.tracer = new ONITracer(tracer ?? null);
56
+ // Pre-index edges by source for O(1) lookups in getNextNodes
57
+ this._edgesBySource = new Map();
58
+ for (const edge of edges) {
59
+ const from = edge.from;
60
+ let list = this._edgesBySource.get(from);
61
+ if (!list) {
62
+ list = [];
63
+ this._edgesBySource.set(from, list);
64
+ }
65
+ list.push(edge);
66
+ }
67
+ // Pre-compute ephemeral keys to avoid scanning all channels per superstep
68
+ this._ephemeralKeys = Object.keys(channels).filter((k) => channels[k].ephemeral);
69
+ }
70
+ // ----------------------------------------------------------------
71
+ // Build PregelContext for extracted functions
72
+ // ----------------------------------------------------------------
73
+ get _ctx() {
74
+ return {
75
+ nodes: this.nodes,
76
+ edges: this.edges,
77
+ channels: this.channels,
78
+ interruptConfig: this.interruptConfig,
79
+ checkpointer: this.checkpointer,
80
+ store: this.store,
81
+ circuitBreakers: this.circuitBreakers,
82
+ tracer: this.tracer,
83
+ eventBus: this.eventBus,
84
+ auditLog: this.auditLog,
85
+ budgetTracker: this.budgetTracker,
86
+ contentFilters: this.contentFilters,
87
+ toolPermissions: this.toolPermissions,
88
+ dlq: this.dlq,
89
+ hitlStore: this.hitlStore,
90
+ defaults: this.defaults,
91
+ nodeCache: this.nodeCache,
92
+ _subgraphRef: this._subgraphRef,
93
+ _perInvocationParentUpdates: this._perInvocationParentUpdates,
94
+ _perInvocationCheckpointer: this._perInvocationCheckpointer,
95
+ _edgesBySource: this._edgesBySource,
96
+ _ephemeralKeys: this._ephemeralKeys,
97
+ };
98
+ }
99
+ // ----------------------------------------------------------------
100
+ // Core stream generator (delegates to streaming module)
101
+ // ----------------------------------------------------------------
102
+ async *_stream(input, config, streamMode = "updates") {
103
+ yield* streamSupersteps(this._ctx, input, config, streamMode);
104
+ }
105
+ // ----------------------------------------------------------------
106
+ // Public API
107
+ // ----------------------------------------------------------------
108
+ async invoke(input, config) {
109
+ let finalState;
110
+ for await (const evt of this._stream(input, config, "values")) {
111
+ if (evt.event === "state_update")
112
+ finalState = evt.data;
113
+ }
114
+ return finalState;
115
+ }
116
+ async *stream(input, config) {
117
+ yield* this._stream(input, config, config?.streamMode ?? "updates");
118
+ }
119
+ async batch(inputs, config) {
120
+ return Promise.all(inputs.map((inp, i) => this.invoke(inp, {
121
+ ...config,
122
+ threadId: config?.threadId ? `${config.threadId}-${i}` : undefined,
123
+ })));
124
+ }
125
+ // ---- State ----
126
+ async getState(threadId) {
127
+ return getState(this.checkpointer, threadId);
128
+ }
129
+ async updateState(threadId, update) {
130
+ return updateState(this.checkpointer, this.channels, threadId, update);
131
+ }
132
+ // ---- Time-travel ----
133
+ async getStateAt(threadId, step) {
134
+ return getStateAt(this.checkpointer, threadId, step);
135
+ }
136
+ async getHistory(threadId) {
137
+ return getHistory(this.checkpointer, threadId);
138
+ }
139
+ async forkFrom(threadId, step, newThreadId) {
140
+ return forkFrom(this.checkpointer, threadId, step, newThreadId);
141
+ }
142
+ // ---- HITL ----
143
+ getPendingInterrupts(threadId) {
144
+ return getPendingInterrupts(this.hitlStore, threadId);
145
+ }
146
+ hitlSessionStore() {
147
+ return this.hitlStore;
148
+ }
149
+ // ---- Dead Letter Queue ----
150
+ getDeadLetters(threadId) {
151
+ return this.dlq?.getAll(threadId) ?? [];
152
+ }
153
+ }
154
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pregel/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { HITLSessionStore } from "../hitl/index.js";
2
+ export declare function getPendingInterrupts<S extends Record<string, unknown>>(hitlStore: HITLSessionStore<S>, threadId: string): import("../hitl/resume.js").HITLSession<S>[];
3
+ //# sourceMappingURL=interrupts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupts.d.ts","sourceRoot":"","sources":["../../src/pregel/interrupts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,gDAGjB"}
@@ -0,0 +1,7 @@
1
+ // ============================================================
2
+ // src/pregel/interrupts.ts — HITL interrupt helpers
3
+ // ============================================================
4
+ export function getPendingInterrupts(hitlStore, threadId) {
5
+ return hitlStore.getByThread(threadId);
6
+ }
7
+ //# sourceMappingURL=interrupts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupts.js","sourceRoot":"","sources":["../../src/pregel/interrupts.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,oDAAoD;AACpD,+DAA+D;AAI/D,MAAM,UAAU,oBAAoB,CAClC,SAA8B,EAC9B,QAAgB;IAEhB,OAAO,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type NodeName, type Edge, type ChannelSchema, type ONIConfig, type ONIStreamEvent } from "../types.js";
2
+ import type { PendingSend } from "./types.js";
3
+ export declare function buildInitialState<S extends Record<string, unknown>>(channels: ChannelSchema<S>): S;
4
+ export declare function applyUpdate<S extends Record<string, unknown>>(channels: ChannelSchema<S>, current: S, update: Partial<S>): S;
5
+ export declare function resetEphemeral<S extends Record<string, unknown>>(state: S, ephemeralKeys: (keyof S)[], channels: ChannelSchema<S>): S;
6
+ export declare function getNextNodes<S extends Record<string, unknown>>(fromNode: NodeName, state: S, edgesBySource: Map<string, Edge<S>[]>, config?: ONIConfig): {
7
+ nodes: NodeName[];
8
+ sends: PendingSend[];
9
+ };
10
+ export declare function checkDynamicInterrupt<S extends Record<string, unknown>>(node: string, timing: "before" | "after", state: S, config?: ONIConfig): void;
11
+ export declare function evt<S extends Record<string, unknown>>(event: ONIStreamEvent<S>["event"], data: Partial<S> | S, step: number, agentId?: string, node?: string): ONIStreamEvent<S>;
12
+ //# sourceMappingURL=state-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-helpers.d.ts","sourceRoot":"","sources":["../../src/pregel/state-helpers.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,aAAa,EAC5C,KAAK,SAAS,EAAE,KAAK,cAAc,EACpC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,CAAC,CAMH;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAaH;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,KAAK,EAAE,CAAC,EACR,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,CAAC,CAOH;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,CAAC,EACR,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EACrC,MAAM,CAAC,EAAE,SAAS,GACjB;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,CAkB7C;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,GAAG,OAAO,EAC1B,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,SAAS,GACjB,IAAI,CAQN;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnD,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EACjC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,cAAc,CAAC,CAAC,CAAC,CAEnB"}
@@ -0,0 +1,71 @@
1
+ // ============================================================
2
+ // src/pregel/state-helpers.ts — Pure state helper functions
3
+ // ============================================================
4
+ import { Send, } from "../types.js";
5
+ import { ONIInterrupt } from "../errors.js";
6
+ export function buildInitialState(channels) {
7
+ const state = {};
8
+ for (const key of Object.keys(channels)) {
9
+ state[key] = channels[key].default();
10
+ }
11
+ return state;
12
+ }
13
+ export function applyUpdate(channels, current, update) {
14
+ const keys = Object.keys(update);
15
+ if (keys.length === 0)
16
+ return current;
17
+ const next = { ...current };
18
+ for (const key of keys) {
19
+ if (update[key] !== undefined) {
20
+ const ch = channels[key];
21
+ next[key] = ch
22
+ ? ch.reducer(current[key], update[key])
23
+ : update[key];
24
+ }
25
+ }
26
+ return next;
27
+ }
28
+ export function resetEphemeral(state, ephemeralKeys, channels) {
29
+ if (ephemeralKeys.length === 0)
30
+ return state;
31
+ const next = { ...state };
32
+ for (const key of ephemeralKeys) {
33
+ next[key] = channels[key].default();
34
+ }
35
+ return next;
36
+ }
37
+ export function getNextNodes(fromNode, state, edgesBySource, config) {
38
+ const outgoing = edgesBySource.get(fromNode) ?? [];
39
+ const nodes = [];
40
+ const sends = [];
41
+ for (const edge of outgoing) {
42
+ if (edge.type === "static") {
43
+ nodes.push(edge.to);
44
+ }
45
+ else {
46
+ const result = edge.condition(state, config);
47
+ const resolved = Array.isArray(result) ? result : [result];
48
+ for (const r of resolved) {
49
+ if (r instanceof Send)
50
+ sends.push({ node: r.node, args: r.args });
51
+ else
52
+ nodes.push(edge.pathMap?.[r] ?? r);
53
+ }
54
+ }
55
+ }
56
+ return { nodes, sends };
57
+ }
58
+ export function checkDynamicInterrupt(node, timing, state, config) {
59
+ const dynamics = config?.dynamicInterrupts;
60
+ if (!dynamics)
61
+ return;
62
+ for (const di of dynamics) {
63
+ if (di.node === node && di.timing === timing && di.condition(state)) {
64
+ throw new ONIInterrupt(node, timing, state);
65
+ }
66
+ }
67
+ }
68
+ export function evt(event, data, step, agentId, node) {
69
+ return { event, data, step, timestamp: Date.now(), agentId, node };
70
+ }
71
+ //# sourceMappingURL=state-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-helpers.js","sourceRoot":"","sources":["../../src/pregel/state-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ONIConfig, type ONIStreamEvent, type StreamMode } from "../types.js";
2
+ import type { CustomStreamEvent, MessageStreamEvent } from "../types.js";
3
+ import type { PregelContext } from "./types.js";
4
+ export declare function streamSupersteps<S extends Record<string, unknown>>(ctx: PregelContext<S>, input: Partial<S>, config: ONIConfig | undefined, streamMode?: StreamMode | StreamMode[]): AsyncGenerator<ONIStreamEvent<S> | CustomStreamEvent | MessageStreamEvent>;
5
+ //# sourceMappingURL=streaming.d.ts.map