@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.
- package/dist/checkpointers/postgres.d.ts.map +1 -1
- package/dist/checkpointers/postgres.js +2 -1
- package/dist/checkpointers/postgres.js.map +1 -1
- package/dist/cli/inspect.d.ts.map +1 -1
- package/dist/cli/inspect.js +4 -2
- package/dist/cli/inspect.js.map +1 -1
- package/dist/coordination/request-reply.d.ts +11 -2
- package/dist/coordination/request-reply.d.ts.map +1 -1
- package/dist/coordination/request-reply.js.map +1 -1
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/bus.js +1 -0
- package/dist/events/bus.js.map +1 -1
- package/dist/graph.d.ts +11 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +4 -2
- package/dist/graph.js.map +1 -1
- package/dist/harness/agent-loop.d.ts +1 -7
- package/dist/harness/agent-loop.d.ts.map +1 -1
- package/dist/harness/agent-loop.js +2 -642
- package/dist/harness/agent-loop.js.map +1 -1
- package/dist/harness/loop/hooks.d.ts +7 -0
- package/dist/harness/loop/hooks.d.ts.map +1 -0
- package/dist/harness/loop/hooks.js +46 -0
- package/dist/harness/loop/hooks.js.map +1 -0
- package/dist/harness/loop/index.d.ts +8 -0
- package/dist/harness/loop/index.d.ts.map +1 -0
- package/dist/harness/loop/index.js +257 -0
- package/dist/harness/loop/index.js.map +1 -0
- package/dist/harness/loop/inference.d.ts +19 -0
- package/dist/harness/loop/inference.d.ts.map +1 -0
- package/dist/harness/loop/inference.js +121 -0
- package/dist/harness/loop/inference.js.map +1 -0
- package/dist/harness/loop/memory.d.ts +22 -0
- package/dist/harness/loop/memory.d.ts.map +1 -0
- package/dist/harness/loop/memory.js +73 -0
- package/dist/harness/loop/memory.js.map +1 -0
- package/dist/harness/loop/safety.d.ts +8 -0
- package/dist/harness/loop/safety.d.ts.map +1 -0
- package/dist/harness/loop/safety.js +21 -0
- package/dist/harness/loop/safety.js.map +1 -0
- package/dist/harness/loop/tools.d.ts +24 -0
- package/dist/harness/loop/tools.d.ts.map +1 -0
- package/dist/harness/loop/tools.js +184 -0
- package/dist/harness/loop/tools.js.map +1 -0
- package/dist/harness/loop/types.d.ts +7 -0
- package/dist/harness/loop/types.d.ts.map +1 -0
- package/dist/harness/loop/types.js +9 -0
- package/dist/harness/loop/types.js.map +1 -0
- package/dist/harness/memory/fs-compat.d.ts +3 -0
- package/dist/harness/memory/fs-compat.d.ts.map +1 -0
- package/dist/harness/memory/fs-compat.js +26 -0
- package/dist/harness/memory/fs-compat.js.map +1 -0
- package/dist/harness/memory/index.d.ts +105 -0
- package/dist/harness/memory/index.d.ts.map +1 -0
- package/dist/harness/memory/index.js +491 -0
- package/dist/harness/memory/index.js.map +1 -0
- package/dist/harness/memory/prompter.d.ts +7 -0
- package/dist/harness/memory/prompter.d.ts.map +1 -0
- package/dist/harness/memory/prompter.js +24 -0
- package/dist/harness/memory/prompter.js.map +1 -0
- package/dist/harness/memory/ranker.d.ts +15 -0
- package/dist/harness/memory/ranker.d.ts.map +1 -0
- package/dist/harness/memory/ranker.js +72 -0
- package/dist/harness/memory/ranker.js.map +1 -0
- package/dist/harness/memory/scanner.d.ts +26 -0
- package/dist/harness/memory/scanner.d.ts.map +1 -0
- package/dist/harness/memory/scanner.js +187 -0
- package/dist/harness/memory/scanner.js.map +1 -0
- package/dist/harness/memory/types.d.ts +50 -0
- package/dist/harness/memory/types.d.ts.map +1 -0
- package/dist/harness/memory/types.js +7 -0
- package/dist/harness/memory/types.js.map +1 -0
- package/dist/harness/memory-loader.d.ts +2 -149
- package/dist/harness/memory-loader.d.ts.map +1 -1
- package/dist/harness/memory-loader.js +1 -713
- package/dist/harness/memory-loader.js.map +1 -1
- package/dist/hitl/interrupt.d.ts.map +1 -1
- package/dist/hitl/interrupt.js +2 -1
- package/dist/hitl/interrupt.js.map +1 -1
- package/dist/prebuilt/react-agent.d.ts.map +1 -1
- package/dist/prebuilt/react-agent.js +6 -2
- package/dist/prebuilt/react-agent.js.map +1 -1
- package/dist/pregel/checkpointing.d.ts +12 -0
- package/dist/pregel/checkpointing.d.ts.map +1 -0
- package/dist/pregel/checkpointing.js +60 -0
- package/dist/pregel/checkpointing.js.map +1 -0
- package/dist/pregel/execution.d.ts +7 -0
- package/dist/pregel/execution.d.ts.map +1 -0
- package/dist/pregel/execution.js +178 -0
- package/dist/pregel/execution.js.map +1 -0
- package/dist/pregel/index.d.ts +61 -0
- package/dist/pregel/index.d.ts.map +1 -0
- package/dist/pregel/index.js +154 -0
- package/dist/pregel/index.js.map +1 -0
- package/dist/pregel/interrupts.d.ts +3 -0
- package/dist/pregel/interrupts.d.ts.map +1 -0
- package/dist/pregel/interrupts.js +7 -0
- package/dist/pregel/interrupts.js.map +1 -0
- package/dist/pregel/state-helpers.d.ts +12 -0
- package/dist/pregel/state-helpers.d.ts.map +1 -0
- package/dist/pregel/state-helpers.js +71 -0
- package/dist/pregel/state-helpers.js.map +1 -0
- package/dist/pregel/streaming.d.ts +5 -0
- package/dist/pregel/streaming.d.ts.map +1 -0
- package/dist/pregel/streaming.js +462 -0
- package/dist/pregel/streaming.js.map +1 -0
- package/dist/pregel/types.d.ts +48 -0
- package/dist/pregel/types.d.ts.map +1 -0
- package/dist/pregel/types.js +5 -0
- package/dist/pregel/types.js.map +1 -0
- package/dist/pregel.d.ts +1 -66
- package/dist/pregel.d.ts.map +1 -1
- package/dist/pregel.js +2 -854
- package/dist/pregel.js.map +1 -1
- package/dist/swarm/agent-node.d.ts +11 -0
- package/dist/swarm/agent-node.d.ts.map +1 -0
- package/dist/swarm/agent-node.js +156 -0
- package/dist/swarm/agent-node.js.map +1 -0
- package/dist/swarm/compile-ext.d.ts +5 -0
- package/dist/swarm/compile-ext.d.ts.map +1 -0
- package/dist/swarm/compile-ext.js +126 -0
- package/dist/swarm/compile-ext.js.map +1 -0
- package/dist/swarm/config.d.ts +147 -0
- package/dist/swarm/config.d.ts.map +1 -0
- package/dist/swarm/config.js +17 -0
- package/dist/swarm/config.js.map +1 -0
- package/dist/swarm/factories.d.ts +37 -0
- package/dist/swarm/factories.d.ts.map +1 -0
- package/dist/swarm/factories.js +703 -0
- package/dist/swarm/factories.js.map +1 -0
- package/dist/swarm/graph.d.ts +14 -147
- package/dist/swarm/graph.d.ts.map +1 -1
- package/dist/swarm/graph.js +30 -917
- package/dist/swarm/graph.js.map +1 -1
- package/dist/swarm/pool.js.map +1 -1
- package/dist/swarm/supervisor.js.map +1 -1
- package/dist/testing/index.d.ts +2 -2
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -2
- package/dist/testing/index.js.map +1 -1
- package/dist/tools/define.d.ts +2 -1
- package/dist/tools/define.d.ts.map +1 -1
- package/dist/tools/define.js +3 -1
- package/dist/tools/define.js.map +1 -1
- package/dist/tools/types.d.ts.map +1 -1
- 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 @@
|
|
|
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"}
|