@oni.bot/core 1.0.3 → 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 (146) hide show
  1. package/dist/checkpointers/postgres.d.ts.map +1 -1
  2. package/dist/checkpointers/postgres.js +2 -1
  3. package/dist/checkpointers/postgres.js.map +1 -1
  4. package/dist/cli/inspect.d.ts.map +1 -1
  5. package/dist/cli/inspect.js +4 -2
  6. package/dist/cli/inspect.js.map +1 -1
  7. package/dist/coordination/request-reply.d.ts +11 -2
  8. package/dist/coordination/request-reply.d.ts.map +1 -1
  9. package/dist/coordination/request-reply.js.map +1 -1
  10. package/dist/events/bus.d.ts.map +1 -1
  11. package/dist/events/bus.js +1 -0
  12. package/dist/events/bus.js.map +1 -1
  13. package/dist/graph.d.ts +11 -1
  14. package/dist/graph.d.ts.map +1 -1
  15. package/dist/graph.js +4 -2
  16. package/dist/graph.js.map +1 -1
  17. package/dist/harness/agent-loop.d.ts +1 -7
  18. package/dist/harness/agent-loop.d.ts.map +1 -1
  19. package/dist/harness/agent-loop.js +2 -642
  20. package/dist/harness/agent-loop.js.map +1 -1
  21. package/dist/harness/loop/hooks.d.ts +7 -0
  22. package/dist/harness/loop/hooks.d.ts.map +1 -0
  23. package/dist/harness/loop/hooks.js +46 -0
  24. package/dist/harness/loop/hooks.js.map +1 -0
  25. package/dist/harness/loop/index.d.ts +8 -0
  26. package/dist/harness/loop/index.d.ts.map +1 -0
  27. package/dist/harness/loop/index.js +257 -0
  28. package/dist/harness/loop/index.js.map +1 -0
  29. package/dist/harness/loop/inference.d.ts +19 -0
  30. package/dist/harness/loop/inference.d.ts.map +1 -0
  31. package/dist/harness/loop/inference.js +121 -0
  32. package/dist/harness/loop/inference.js.map +1 -0
  33. package/dist/harness/loop/memory.d.ts +22 -0
  34. package/dist/harness/loop/memory.d.ts.map +1 -0
  35. package/dist/harness/loop/memory.js +73 -0
  36. package/dist/harness/loop/memory.js.map +1 -0
  37. package/dist/harness/loop/safety.d.ts +8 -0
  38. package/dist/harness/loop/safety.d.ts.map +1 -0
  39. package/dist/harness/loop/safety.js +21 -0
  40. package/dist/harness/loop/safety.js.map +1 -0
  41. package/dist/harness/loop/tools.d.ts +24 -0
  42. package/dist/harness/loop/tools.d.ts.map +1 -0
  43. package/dist/harness/loop/tools.js +184 -0
  44. package/dist/harness/loop/tools.js.map +1 -0
  45. package/dist/harness/loop/types.d.ts +7 -0
  46. package/dist/harness/loop/types.d.ts.map +1 -0
  47. package/dist/harness/loop/types.js +9 -0
  48. package/dist/harness/loop/types.js.map +1 -0
  49. package/dist/harness/memory/fs-compat.d.ts +3 -0
  50. package/dist/harness/memory/fs-compat.d.ts.map +1 -0
  51. package/dist/harness/memory/fs-compat.js +26 -0
  52. package/dist/harness/memory/fs-compat.js.map +1 -0
  53. package/dist/harness/memory/index.d.ts +105 -0
  54. package/dist/harness/memory/index.d.ts.map +1 -0
  55. package/dist/harness/memory/index.js +491 -0
  56. package/dist/harness/memory/index.js.map +1 -0
  57. package/dist/harness/memory/prompter.d.ts +7 -0
  58. package/dist/harness/memory/prompter.d.ts.map +1 -0
  59. package/dist/harness/memory/prompter.js +24 -0
  60. package/dist/harness/memory/prompter.js.map +1 -0
  61. package/dist/harness/memory/ranker.d.ts +15 -0
  62. package/dist/harness/memory/ranker.d.ts.map +1 -0
  63. package/dist/harness/memory/ranker.js +72 -0
  64. package/dist/harness/memory/ranker.js.map +1 -0
  65. package/dist/harness/memory/scanner.d.ts +26 -0
  66. package/dist/harness/memory/scanner.d.ts.map +1 -0
  67. package/dist/harness/memory/scanner.js +187 -0
  68. package/dist/harness/memory/scanner.js.map +1 -0
  69. package/dist/harness/memory/types.d.ts +50 -0
  70. package/dist/harness/memory/types.d.ts.map +1 -0
  71. package/dist/harness/memory/types.js +7 -0
  72. package/dist/harness/memory/types.js.map +1 -0
  73. package/dist/harness/memory-loader.d.ts +2 -149
  74. package/dist/harness/memory-loader.d.ts.map +1 -1
  75. package/dist/harness/memory-loader.js +1 -713
  76. package/dist/harness/memory-loader.js.map +1 -1
  77. package/dist/hitl/interrupt.d.ts.map +1 -1
  78. package/dist/hitl/interrupt.js +2 -1
  79. package/dist/hitl/interrupt.js.map +1 -1
  80. package/dist/prebuilt/react-agent.d.ts.map +1 -1
  81. package/dist/prebuilt/react-agent.js +6 -2
  82. package/dist/prebuilt/react-agent.js.map +1 -1
  83. package/dist/pregel/checkpointing.d.ts +12 -0
  84. package/dist/pregel/checkpointing.d.ts.map +1 -0
  85. package/dist/pregel/checkpointing.js +60 -0
  86. package/dist/pregel/checkpointing.js.map +1 -0
  87. package/dist/pregel/execution.d.ts +7 -0
  88. package/dist/pregel/execution.d.ts.map +1 -0
  89. package/dist/pregel/execution.js +178 -0
  90. package/dist/pregel/execution.js.map +1 -0
  91. package/dist/pregel/index.d.ts +61 -0
  92. package/dist/pregel/index.d.ts.map +1 -0
  93. package/dist/pregel/index.js +154 -0
  94. package/dist/pregel/index.js.map +1 -0
  95. package/dist/pregel/interrupts.d.ts +3 -0
  96. package/dist/pregel/interrupts.d.ts.map +1 -0
  97. package/dist/pregel/interrupts.js +7 -0
  98. package/dist/pregel/interrupts.js.map +1 -0
  99. package/dist/pregel/state-helpers.d.ts +12 -0
  100. package/dist/pregel/state-helpers.d.ts.map +1 -0
  101. package/dist/pregel/state-helpers.js +71 -0
  102. package/dist/pregel/state-helpers.js.map +1 -0
  103. package/dist/pregel/streaming.d.ts +5 -0
  104. package/dist/pregel/streaming.d.ts.map +1 -0
  105. package/dist/pregel/streaming.js +462 -0
  106. package/dist/pregel/streaming.js.map +1 -0
  107. package/dist/pregel/types.d.ts +48 -0
  108. package/dist/pregel/types.d.ts.map +1 -0
  109. package/dist/pregel/types.js +5 -0
  110. package/dist/pregel/types.js.map +1 -0
  111. package/dist/pregel.d.ts +1 -66
  112. package/dist/pregel.d.ts.map +1 -1
  113. package/dist/pregel.js +2 -854
  114. package/dist/pregel.js.map +1 -1
  115. package/dist/swarm/agent-node.d.ts +11 -0
  116. package/dist/swarm/agent-node.d.ts.map +1 -0
  117. package/dist/swarm/agent-node.js +156 -0
  118. package/dist/swarm/agent-node.js.map +1 -0
  119. package/dist/swarm/compile-ext.d.ts +5 -0
  120. package/dist/swarm/compile-ext.d.ts.map +1 -0
  121. package/dist/swarm/compile-ext.js +126 -0
  122. package/dist/swarm/compile-ext.js.map +1 -0
  123. package/dist/swarm/config.d.ts +147 -0
  124. package/dist/swarm/config.d.ts.map +1 -0
  125. package/dist/swarm/config.js +17 -0
  126. package/dist/swarm/config.js.map +1 -0
  127. package/dist/swarm/factories.d.ts +37 -0
  128. package/dist/swarm/factories.d.ts.map +1 -0
  129. package/dist/swarm/factories.js +703 -0
  130. package/dist/swarm/factories.js.map +1 -0
  131. package/dist/swarm/graph.d.ts +14 -147
  132. package/dist/swarm/graph.d.ts.map +1 -1
  133. package/dist/swarm/graph.js +30 -917
  134. package/dist/swarm/graph.js.map +1 -1
  135. package/dist/swarm/pool.js.map +1 -1
  136. package/dist/swarm/supervisor.js.map +1 -1
  137. package/dist/testing/index.d.ts +2 -2
  138. package/dist/testing/index.d.ts.map +1 -1
  139. package/dist/testing/index.js +3 -2
  140. package/dist/testing/index.js.map +1 -1
  141. package/dist/tools/define.d.ts +2 -1
  142. package/dist/tools/define.d.ts.map +1 -1
  143. package/dist/tools/define.js +3 -1
  144. package/dist/tools/define.js.map +1 -1
  145. package/dist/tools/types.d.ts.map +1 -1
  146. package/package.json +1 -1
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/pregel/streaming.ts"],"names":[],"mappings":"AAQA,OAAO,EAEU,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAEpE,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAY7D,wBAAuB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,UAAU,GAAE,UAAU,GAAG,UAAU,EAAc,GAChD,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,CAyd5E"}