@oni.bot/core 0.6.1

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 (234) hide show
  1. package/README.md +308 -0
  2. package/dist/agents/context.d.ts +24 -0
  3. package/dist/agents/context.d.ts.map +1 -0
  4. package/dist/agents/context.js +93 -0
  5. package/dist/agents/context.js.map +1 -0
  6. package/dist/agents/define-agent.d.ts +10 -0
  7. package/dist/agents/define-agent.d.ts.map +1 -0
  8. package/dist/agents/define-agent.js +121 -0
  9. package/dist/agents/define-agent.js.map +1 -0
  10. package/dist/agents/functional-agent.d.ts +12 -0
  11. package/dist/agents/functional-agent.d.ts.map +1 -0
  12. package/dist/agents/functional-agent.js +115 -0
  13. package/dist/agents/functional-agent.js.map +1 -0
  14. package/dist/agents/index.d.ts +6 -0
  15. package/dist/agents/index.d.ts.map +1 -0
  16. package/dist/agents/index.js +7 -0
  17. package/dist/agents/index.js.map +1 -0
  18. package/dist/agents/types.d.ts +62 -0
  19. package/dist/agents/types.d.ts.map +1 -0
  20. package/dist/agents/types.js +8 -0
  21. package/dist/agents/types.js.map +1 -0
  22. package/dist/checkpoint.d.ts +27 -0
  23. package/dist/checkpoint.d.ts.map +1 -0
  24. package/dist/checkpoint.js +91 -0
  25. package/dist/checkpoint.js.map +1 -0
  26. package/dist/checkpointers/index.d.ts +4 -0
  27. package/dist/checkpointers/index.d.ts.map +1 -0
  28. package/dist/checkpointers/index.js +5 -0
  29. package/dist/checkpointers/index.js.map +1 -0
  30. package/dist/checkpointers/namespaced.d.ts +12 -0
  31. package/dist/checkpointers/namespaced.d.ts.map +1 -0
  32. package/dist/checkpointers/namespaced.js +37 -0
  33. package/dist/checkpointers/namespaced.js.map +1 -0
  34. package/dist/checkpointers/postgres.d.ts +13 -0
  35. package/dist/checkpointers/postgres.d.ts.map +1 -0
  36. package/dist/checkpointers/postgres.js +100 -0
  37. package/dist/checkpointers/postgres.js.map +1 -0
  38. package/dist/checkpointers/sqlite.d.ts +14 -0
  39. package/dist/checkpointers/sqlite.d.ts.map +1 -0
  40. package/dist/checkpointers/sqlite.js +98 -0
  41. package/dist/checkpointers/sqlite.js.map +1 -0
  42. package/dist/context.d.ts +24 -0
  43. package/dist/context.d.ts.map +1 -0
  44. package/dist/context.js +47 -0
  45. package/dist/context.js.map +1 -0
  46. package/dist/coordination/index.d.ts +3 -0
  47. package/dist/coordination/index.d.ts.map +1 -0
  48. package/dist/coordination/index.js +3 -0
  49. package/dist/coordination/index.js.map +1 -0
  50. package/dist/coordination/pubsub.d.ts +38 -0
  51. package/dist/coordination/pubsub.d.ts.map +1 -0
  52. package/dist/coordination/pubsub.js +73 -0
  53. package/dist/coordination/pubsub.js.map +1 -0
  54. package/dist/coordination/request-reply.d.ts +40 -0
  55. package/dist/coordination/request-reply.d.ts.map +1 -0
  56. package/dist/coordination/request-reply.js +77 -0
  57. package/dist/coordination/request-reply.js.map +1 -0
  58. package/dist/errors.d.ts +27 -0
  59. package/dist/errors.d.ts.map +1 -0
  60. package/dist/errors.js +41 -0
  61. package/dist/errors.js.map +1 -0
  62. package/dist/events/bus.d.ts +13 -0
  63. package/dist/events/bus.d.ts.map +1 -0
  64. package/dist/events/bus.js +52 -0
  65. package/dist/events/bus.js.map +1 -0
  66. package/dist/events/index.d.ts +3 -0
  67. package/dist/events/index.d.ts.map +1 -0
  68. package/dist/events/index.js +3 -0
  69. package/dist/events/index.js.map +1 -0
  70. package/dist/events/types.d.ts +87 -0
  71. package/dist/events/types.d.ts.map +1 -0
  72. package/dist/events/types.js +2 -0
  73. package/dist/events/types.js.map +1 -0
  74. package/dist/functional.d.ts +36 -0
  75. package/dist/functional.d.ts.map +1 -0
  76. package/dist/functional.js +103 -0
  77. package/dist/functional.js.map +1 -0
  78. package/dist/graph.d.ts +74 -0
  79. package/dist/graph.d.ts.map +1 -0
  80. package/dist/graph.js +119 -0
  81. package/dist/graph.js.map +1 -0
  82. package/dist/guardrails/audit.d.ts +13 -0
  83. package/dist/guardrails/audit.d.ts.map +1 -0
  84. package/dist/guardrails/audit.js +31 -0
  85. package/dist/guardrails/audit.js.map +1 -0
  86. package/dist/guardrails/budget.d.ts +30 -0
  87. package/dist/guardrails/budget.d.ts.map +1 -0
  88. package/dist/guardrails/budget.js +154 -0
  89. package/dist/guardrails/budget.js.map +1 -0
  90. package/dist/guardrails/filters.d.ts +24 -0
  91. package/dist/guardrails/filters.d.ts.map +1 -0
  92. package/dist/guardrails/filters.js +87 -0
  93. package/dist/guardrails/filters.js.map +1 -0
  94. package/dist/guardrails/index.d.ts +8 -0
  95. package/dist/guardrails/index.d.ts.map +1 -0
  96. package/dist/guardrails/index.js +9 -0
  97. package/dist/guardrails/index.js.map +1 -0
  98. package/dist/guardrails/permissions.d.ts +9 -0
  99. package/dist/guardrails/permissions.d.ts.map +1 -0
  100. package/dist/guardrails/permissions.js +29 -0
  101. package/dist/guardrails/permissions.js.map +1 -0
  102. package/dist/guardrails/types.d.ts +30 -0
  103. package/dist/guardrails/types.d.ts.map +1 -0
  104. package/dist/guardrails/types.js +2 -0
  105. package/dist/guardrails/types.js.map +1 -0
  106. package/dist/hitl/index.d.ts +5 -0
  107. package/dist/hitl/index.d.ts.map +1 -0
  108. package/dist/hitl/index.js +3 -0
  109. package/dist/hitl/index.js.map +1 -0
  110. package/dist/hitl/interrupt.d.ts +81 -0
  111. package/dist/hitl/interrupt.d.ts.map +1 -0
  112. package/dist/hitl/interrupt.js +116 -0
  113. package/dist/hitl/interrupt.js.map +1 -0
  114. package/dist/hitl/resume.d.ts +33 -0
  115. package/dist/hitl/resume.d.ts.map +1 -0
  116. package/dist/hitl/resume.js +72 -0
  117. package/dist/hitl/resume.js.map +1 -0
  118. package/dist/index.d.ts +57 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +58 -0
  121. package/dist/index.js.map +1 -0
  122. package/dist/injected.d.ts +26 -0
  123. package/dist/injected.d.ts.map +1 -0
  124. package/dist/injected.js +25 -0
  125. package/dist/injected.js.map +1 -0
  126. package/dist/inspect.d.ts +31 -0
  127. package/dist/inspect.d.ts.map +1 -0
  128. package/dist/inspect.js +139 -0
  129. package/dist/inspect.js.map +1 -0
  130. package/dist/messages/index.d.ts +66 -0
  131. package/dist/messages/index.d.ts.map +1 -0
  132. package/dist/messages/index.js +123 -0
  133. package/dist/messages/index.js.map +1 -0
  134. package/dist/models/anthropic.d.ts +6 -0
  135. package/dist/models/anthropic.d.ts.map +1 -0
  136. package/dist/models/anthropic.js +317 -0
  137. package/dist/models/anthropic.js.map +1 -0
  138. package/dist/models/google.d.ts +3 -0
  139. package/dist/models/google.d.ts.map +1 -0
  140. package/dist/models/google.js +310 -0
  141. package/dist/models/google.js.map +1 -0
  142. package/dist/models/index.d.ts +6 -0
  143. package/dist/models/index.d.ts.map +1 -0
  144. package/dist/models/index.js +5 -0
  145. package/dist/models/index.js.map +1 -0
  146. package/dist/models/ollama.d.ts +7 -0
  147. package/dist/models/ollama.d.ts.map +1 -0
  148. package/dist/models/ollama.js +205 -0
  149. package/dist/models/ollama.js.map +1 -0
  150. package/dist/models/openai.d.ts +3 -0
  151. package/dist/models/openai.d.ts.map +1 -0
  152. package/dist/models/openai.js +331 -0
  153. package/dist/models/openai.js.map +1 -0
  154. package/dist/models/types.d.ts +77 -0
  155. package/dist/models/types.d.ts.map +1 -0
  156. package/dist/models/types.js +2 -0
  157. package/dist/models/types.js.map +1 -0
  158. package/dist/prebuilt/index.d.ts +5 -0
  159. package/dist/prebuilt/index.d.ts.map +1 -0
  160. package/dist/prebuilt/index.js +4 -0
  161. package/dist/prebuilt/index.js.map +1 -0
  162. package/dist/prebuilt/react-agent.d.ts +35 -0
  163. package/dist/prebuilt/react-agent.d.ts.map +1 -0
  164. package/dist/prebuilt/react-agent.js +55 -0
  165. package/dist/prebuilt/react-agent.js.map +1 -0
  166. package/dist/prebuilt/tool-node.d.ts +15 -0
  167. package/dist/prebuilt/tool-node.d.ts.map +1 -0
  168. package/dist/prebuilt/tool-node.js +61 -0
  169. package/dist/prebuilt/tool-node.js.map +1 -0
  170. package/dist/pregel.d.ts +48 -0
  171. package/dist/pregel.d.ts.map +1 -0
  172. package/dist/pregel.js +583 -0
  173. package/dist/pregel.js.map +1 -0
  174. package/dist/retry.d.ts +3 -0
  175. package/dist/retry.d.ts.map +1 -0
  176. package/dist/retry.js +40 -0
  177. package/dist/retry.js.map +1 -0
  178. package/dist/store/index.d.ts +90 -0
  179. package/dist/store/index.d.ts.map +1 -0
  180. package/dist/store/index.js +214 -0
  181. package/dist/store/index.js.map +1 -0
  182. package/dist/stream-events.d.ts +15 -0
  183. package/dist/stream-events.d.ts.map +1 -0
  184. package/dist/stream-events.js +53 -0
  185. package/dist/stream-events.js.map +1 -0
  186. package/dist/streaming.d.ts +56 -0
  187. package/dist/streaming.d.ts.map +1 -0
  188. package/dist/streaming.js +143 -0
  189. package/dist/streaming.js.map +1 -0
  190. package/dist/swarm/graph.d.ts +184 -0
  191. package/dist/swarm/graph.d.ts.map +1 -0
  192. package/dist/swarm/graph.js +534 -0
  193. package/dist/swarm/graph.js.map +1 -0
  194. package/dist/swarm/index.d.ts +11 -0
  195. package/dist/swarm/index.d.ts.map +1 -0
  196. package/dist/swarm/index.js +10 -0
  197. package/dist/swarm/index.js.map +1 -0
  198. package/dist/swarm/mailbox.d.ts +12 -0
  199. package/dist/swarm/mailbox.d.ts.map +1 -0
  200. package/dist/swarm/mailbox.js +36 -0
  201. package/dist/swarm/mailbox.js.map +1 -0
  202. package/dist/swarm/pool.d.ts +27 -0
  203. package/dist/swarm/pool.d.ts.map +1 -0
  204. package/dist/swarm/pool.js +87 -0
  205. package/dist/swarm/pool.js.map +1 -0
  206. package/dist/swarm/registry.d.ts +37 -0
  207. package/dist/swarm/registry.d.ts.map +1 -0
  208. package/dist/swarm/registry.js +115 -0
  209. package/dist/swarm/registry.js.map +1 -0
  210. package/dist/swarm/supervisor.d.ts +18 -0
  211. package/dist/swarm/supervisor.d.ts.map +1 -0
  212. package/dist/swarm/supervisor.js +117 -0
  213. package/dist/swarm/supervisor.js.map +1 -0
  214. package/dist/swarm/types.d.ts +111 -0
  215. package/dist/swarm/types.d.ts.map +1 -0
  216. package/dist/swarm/types.js +16 -0
  217. package/dist/swarm/types.js.map +1 -0
  218. package/dist/tools/define.d.ts +14 -0
  219. package/dist/tools/define.d.ts.map +1 -0
  220. package/dist/tools/define.js +39 -0
  221. package/dist/tools/define.js.map +1 -0
  222. package/dist/tools/index.d.ts +3 -0
  223. package/dist/tools/index.d.ts.map +1 -0
  224. package/dist/tools/index.js +2 -0
  225. package/dist/tools/index.js.map +1 -0
  226. package/dist/tools/types.d.ts +23 -0
  227. package/dist/tools/types.d.ts.map +1 -0
  228. package/dist/tools/types.js +2 -0
  229. package/dist/tools/types.js.map +1 -0
  230. package/dist/types.d.ts +204 -0
  231. package/dist/types.d.ts.map +1 -0
  232. package/dist/types.js +45 -0
  233. package/dist/types.js.map +1 -0
  234. package/package.json +108 -0
@@ -0,0 +1,143 @@
1
+ // ============================================================
2
+ // @oni.bot/core — Token Streaming
3
+ // ============================================================
4
+ // Enables token-level streaming from LLM calls inside nodes.
5
+ // Nodes call streamTokens() to register a token emitter.
6
+ // The Pregel runner pipes tokens through as "token" stream events.
7
+ // ============================================================
8
+ let _tokenHandler = null;
9
+ export function _installTokenHandler(handler) {
10
+ _tokenHandler = handler;
11
+ }
12
+ export function _clearTokenHandler() {
13
+ _tokenHandler = null;
14
+ }
15
+ /**
16
+ * Emit a token from inside a node. Call this for each token
17
+ * received from your streaming LLM SDK.
18
+ *
19
+ * @example
20
+ * addNode("agent", async (state) => {
21
+ * let fullText = "";
22
+ * for await (const chunk of llm.stream(messages)) {
23
+ * emitToken(chunk.delta);
24
+ * fullText += chunk.delta;
25
+ * }
26
+ * return { messages: [aiMessage(fullText)] };
27
+ * });
28
+ */
29
+ export function emitToken(token) {
30
+ if (_tokenHandler)
31
+ _tokenHandler(token);
32
+ }
33
+ // ----------------------------------------------------------------
34
+ // StreamWriter — async generator bridge for token streaming
35
+ // Lets callers consume tokens as they arrive without blocking
36
+ // ----------------------------------------------------------------
37
+ export class TokenStreamWriter {
38
+ queue = [];
39
+ waiters = [];
40
+ done = false;
41
+ push(token) {
42
+ if (this.waiters.length > 0) {
43
+ this.waiters.shift()(token);
44
+ }
45
+ else {
46
+ this.queue.push(token);
47
+ }
48
+ }
49
+ end() {
50
+ this.done = true;
51
+ for (const waiter of this.waiters)
52
+ waiter(null);
53
+ this.waiters = [];
54
+ }
55
+ async *[Symbol.asyncIterator]() {
56
+ while (true) {
57
+ if (this.queue.length > 0) {
58
+ yield this.queue.shift();
59
+ }
60
+ else if (this.done) {
61
+ return;
62
+ }
63
+ else {
64
+ const token = await new Promise((resolve) => {
65
+ this.waiters.push(resolve);
66
+ });
67
+ if (token === null)
68
+ return;
69
+ yield token;
70
+ }
71
+ }
72
+ }
73
+ }
74
+ // ----------------------------------------------------------------
75
+ // StreamWriterImpl — node-scoped writer for custom + token events
76
+ // ----------------------------------------------------------------
77
+ export class StreamWriterImpl {
78
+ onCustom;
79
+ onToken;
80
+ onMessage;
81
+ node;
82
+ step;
83
+ messageId;
84
+ agentId;
85
+ _accumulated = "";
86
+ constructor(onCustom, onToken, onMessage, node, step, messageId, agentId) {
87
+ this.onCustom = onCustom;
88
+ this.onToken = onToken;
89
+ this.onMessage = onMessage;
90
+ this.node = node;
91
+ this.step = step;
92
+ this.messageId = messageId;
93
+ this.agentId = agentId;
94
+ }
95
+ emit(name, data) {
96
+ this.onCustom({
97
+ event: "custom",
98
+ node: this.node,
99
+ name,
100
+ data,
101
+ step: this.step,
102
+ timestamp: Date.now(),
103
+ agentId: this.agentId,
104
+ });
105
+ }
106
+ token(token) {
107
+ this.onToken(token);
108
+ this._accumulated += token;
109
+ this.onMessage({
110
+ event: "messages",
111
+ node: this.node,
112
+ data: {
113
+ chunk: token,
114
+ content: this._accumulated,
115
+ role: "assistant",
116
+ id: this.messageId,
117
+ },
118
+ step: this.step,
119
+ timestamp: Date.now(),
120
+ agentId: this.agentId,
121
+ });
122
+ }
123
+ /** Called by Pregel after node completes to emit the complete message */
124
+ _complete() {
125
+ if (this._accumulated.length === 0)
126
+ return null;
127
+ return {
128
+ event: "messages/complete",
129
+ node: this.node,
130
+ data: {
131
+ chunk: "",
132
+ content: this._accumulated,
133
+ role: "assistant",
134
+ id: this.messageId,
135
+ },
136
+ step: this.step,
137
+ timestamp: Date.now(),
138
+ agentId: this.agentId,
139
+ };
140
+ }
141
+ get accumulated() { return this._accumulated; }
142
+ }
143
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ import { END } from "../types.js";
2
+ import type { ONISkeleton, ONICheckpointer, ChannelSchema } from "../types.js";
3
+ import type { ONIModel } from "../models/types.js";
4
+ import type { SwarmAgentDef, SupervisorConfig, HandoffRecord, SwarmMessage } from "./types.js";
5
+ import { AgentRegistry } from "./registry.js";
6
+ export type BaseSwarmState = {
7
+ task: string;
8
+ context: Record<string, unknown>;
9
+ agentResults: Record<string, unknown>;
10
+ messages: Array<{
11
+ role: string;
12
+ content: string;
13
+ }>;
14
+ swarmMessages: SwarmMessage[];
15
+ supervisorRound: number;
16
+ currentAgent: string | null;
17
+ done: boolean;
18
+ handoffHistory: HandoffRecord[];
19
+ [key: string]: unknown;
20
+ };
21
+ export declare const baseSwarmChannels: {
22
+ task: import("../types.js").Channel<string>;
23
+ context: import("../types.js").Channel<{}>;
24
+ agentResults: import("../types.js").Channel<{}>;
25
+ messages: import("../types.js").Channel<{
26
+ role: string;
27
+ content: string;
28
+ }[]>;
29
+ swarmMessages: import("../types.js").Channel<SwarmMessage[]>;
30
+ supervisorRound: import("../types.js").Channel<number>;
31
+ currentAgent: import("../types.js").Channel<string | null>;
32
+ done: import("../types.js").Channel<boolean>;
33
+ handoffHistory: import("../types.js").Channel<HandoffRecord[]>;
34
+ };
35
+ export interface HierarchicalConfig<S extends BaseSwarmState> {
36
+ supervisor: {
37
+ model?: ONIModel;
38
+ strategy: "llm" | "rule" | "round-robin";
39
+ rules?: Array<{
40
+ condition: (task: string, context: Record<string, unknown>) => boolean;
41
+ agentId: string;
42
+ }>;
43
+ systemPrompt?: string;
44
+ maxRounds?: number;
45
+ };
46
+ agents: SwarmAgentDef<S>[];
47
+ channels?: Partial<ChannelSchema<S>>;
48
+ onError?: "fallback" | "throw";
49
+ }
50
+ export interface FanOutConfig<S extends BaseSwarmState> {
51
+ agents: SwarmAgentDef<S>[];
52
+ reducer: (agentResults: Record<string, unknown>) => Partial<S>;
53
+ channels?: Partial<ChannelSchema<S>>;
54
+ }
55
+ export interface PipelineConfig<S extends BaseSwarmState> {
56
+ stages: SwarmAgentDef<S>[];
57
+ transitions?: Record<string, (state: S) => string | typeof END>;
58
+ channels?: Partial<ChannelSchema<S>>;
59
+ }
60
+ export interface PeerNetworkConfig<S extends BaseSwarmState> {
61
+ agents: SwarmAgentDef<S>[];
62
+ entrypoint: string;
63
+ handoffs: Record<string, (state: S) => string | typeof END>;
64
+ channels?: Partial<ChannelSchema<S>>;
65
+ }
66
+ export interface MapReduceConfig<S extends BaseSwarmState> {
67
+ mapper: SwarmAgentDef<S>;
68
+ poolSize?: number;
69
+ poolStrategy?: "round-robin" | "least-busy" | "random";
70
+ inputField: keyof S;
71
+ reducer: (agentResults: Record<string, unknown>) => Partial<S>;
72
+ channels?: Partial<ChannelSchema<S>>;
73
+ }
74
+ export interface DebateConfig<S extends BaseSwarmState> {
75
+ debaters: SwarmAgentDef<S>[];
76
+ judge: {
77
+ model: ONIModel;
78
+ systemPrompt?: string;
79
+ maxRounds: number;
80
+ consensusKeyword?: string;
81
+ };
82
+ topic: keyof S;
83
+ channels?: Partial<ChannelSchema<S>>;
84
+ }
85
+ export interface HierarchicalMeshConfig<S extends BaseSwarmState> {
86
+ coordinator: {
87
+ model: ONIModel;
88
+ strategy: "llm" | "rule" | "round-robin";
89
+ rules?: Array<{
90
+ condition: (task: string, context: Record<string, unknown>) => boolean;
91
+ agentId: string;
92
+ }>;
93
+ systemPrompt?: string;
94
+ maxRounds?: number;
95
+ };
96
+ teams: Record<string, {
97
+ topology: "pipeline" | "peerNetwork";
98
+ agents: SwarmAgentDef<S>[];
99
+ handoffs?: Record<string, (state: S) => string | typeof END>;
100
+ }>;
101
+ channels?: Partial<ChannelSchema<S>>;
102
+ }
103
+ export declare class SwarmGraph<S extends BaseSwarmState> {
104
+ private inner;
105
+ private registry;
106
+ private channels;
107
+ private agentIds;
108
+ private supervisorNodeName;
109
+ private hasSupervisor;
110
+ private _broker?;
111
+ private _pubsub?;
112
+ private get broker();
113
+ private get pubsub();
114
+ constructor(channels?: Partial<ChannelSchema<S>>);
115
+ /**
116
+ * Create a complete supervisor-workers swarm from a config object.
117
+ * Registers all agents, wires a supervisor node, and returns the
118
+ * ready-to-compile SwarmGraph.
119
+ */
120
+ static hierarchical<S extends BaseSwarmState>(config: HierarchicalConfig<S>): SwarmGraph<S>;
121
+ /**
122
+ * Create a fan-out swarm that runs all agents in parallel via Send
123
+ * and collects results through a reducer node.
124
+ */
125
+ static fanOut<S extends BaseSwarmState>(config: FanOutConfig<S>): SwarmGraph<S>;
126
+ /**
127
+ * Create a linear agent pipeline: stage1 → stage2 → … → END.
128
+ * Optionally override any stage's outgoing edge with a conditional
129
+ * transition (e.g. loop back for review cycles).
130
+ */
131
+ static pipeline<S extends BaseSwarmState>(config: PipelineConfig<S>): SwarmGraph<S>;
132
+ /**
133
+ * Create a decentralized peer network: agents route to each other
134
+ * via conditional handoffs, with no supervisor.
135
+ */
136
+ static peerNetwork<S extends BaseSwarmState>(config: PeerNetworkConfig<S>): SwarmGraph<S>;
137
+ /**
138
+ * Distribute N inputs across poolSize copies of a mapper agent,
139
+ * fan-out via Send, and collect results through a reducer node.
140
+ */
141
+ static mapReduce<S extends BaseSwarmState>(config: MapReduceConfig<S>): SwarmGraph<S>;
142
+ /**
143
+ * Create a multi-round parallel debate with judge termination.
144
+ * All debaters argue in parallel each round; a judge evaluates
145
+ * and decides whether consensus has been reached.
146
+ */
147
+ static debate<S extends BaseSwarmState>(config: DebateConfig<S>): SwarmGraph<S>;
148
+ /**
149
+ * Create a hierarchical mesh with a coordinator routing to team
150
+ * sub-graphs. Each team is built using pipeline() or peerNetwork()
151
+ * and compiled into a single node in the outer graph.
152
+ */
153
+ static hierarchicalMesh<S extends BaseSwarmState>(config: HierarchicalMeshConfig<S>): SwarmGraph<S>;
154
+ addAgent(def: SwarmAgentDef<S>): this;
155
+ addSupervisor(config: SupervisorConfig<S>, nodeName?: string): this;
156
+ /**
157
+ * Wire two agents to hand off directly to each other.
158
+ * The "from" agent's node will inspect its output for a Handoff
159
+ * and route accordingly.
160
+ */
161
+ addHandoffEdge(fromAgentId: string, toAgentId: string): this;
162
+ /**
163
+ * Add a conditional handoff: fromAgent routes to different agents
164
+ * based on state.
165
+ */
166
+ addConditionalHandoff(fromAgentId: string, condition: (state: S) => string | typeof END): this;
167
+ addEdge(from: string, to: string): this;
168
+ /**
169
+ * Wire agents as a linear pipeline: A → B → C → END
170
+ */
171
+ pipeline(...agentIds: string[]): this;
172
+ compile(opts?: SwarmCompileOpts<S>): ONISkeleton<S> & SwarmExtensions<S>;
173
+ }
174
+ export interface SwarmCompileOpts<S> {
175
+ checkpointer?: ONICheckpointer<S>;
176
+ interruptBefore?: string[];
177
+ interruptAfter?: string[];
178
+ }
179
+ export interface SwarmExtensions<S extends Record<string, unknown>> {
180
+ registry: AgentRegistry<S>;
181
+ agentStats: () => ReturnType<AgentRegistry<S>["stats"]>;
182
+ toMermaid: () => string;
183
+ }
184
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/swarm/graph.ts"],"names":[],"mappings":"AAWA,OAAO,EAAS,GAAG,EAAsC,MAAM,aAAa,CAAC;AAE7E,OAAO,KAAK,EACS,WAAW,EAAE,eAAe,EAAE,aAAa,EAC/D,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EACV,aAAa,EAAE,gBAAgB,EAAa,aAAa,EAAE,YAAY,EACxE,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAU9C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAa,MAAM,CAAC;IACxB,OAAO,EAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,YAAY,EAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAS,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,aAAa,EAAI,YAAY,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAK,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAa,OAAO,CAAC;IACzB,cAAc,EAAG,aAAa,EAAE,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAK,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;cAI0B,MAAM;iBAAW,MAAM;;;;;;;CAM9E,CAAC;AAMF,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc;IAC1D,UAAU,EAAE;QACV,KAAK,CAAC,EAAE,QAAQ,CAAC;QACjB,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,CAAC;QACzC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;CAChC;AAMD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,cAAc;IACpD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;AAMD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,cAAc;IACtD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;AAMD,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,cAAc;IACzD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;AAMD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,cAAc;IACvD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;AAMD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,cAAc;IACpD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,KAAK,EAAE;QACL,KAAK,EAAE,QAAQ,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;AAMD,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,cAAc;IAC9D,WAAW,EAAE;QACX,KAAK,EAAE,QAAQ,CAAC;QAChB,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,CAAC;QACzC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,UAAU,GAAG,aAAa,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;KAC9D,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;AAMD,qBAAa,UAAU,CAAC,CAAC,SAAS,cAAc;IAC9C,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,OAAO,CAAC,CAAqB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,MAAM,GAEjB;gBAEW,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAYhD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,cAAc,EAC1C,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC5B,UAAU,CAAC,CAAC,CAAC;IAsBhB;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,cAAc,EACpC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,UAAU,CAAC,CAAC,CAAC;IAwChB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,cAAc,EACtC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GACxB,UAAU,CAAC,CAAC,CAAC;IAkChB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,cAAc,EACzC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,UAAU,CAAC,CAAC,CAAC;IAoBhB;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,cAAc,EACvC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GACzB,UAAU,CAAC,CAAC,CAAC;IAsDhB;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,cAAc,EACpC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,UAAU,CAAC,CAAC,CAAC;IA6EhB;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,cAAc,EAC9C,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAChC,UAAU,CAAC,CAAC,CAAC;IAqGhB,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IA4GrC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,SAA0B,GAAG,IAAI;IA4BpF;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK5D;;;OAGG;IACH,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,GAAG,GAC7C,IAAI;IAOP,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOvC;;OAEG;IACH,QAAQ,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAYrC,OAAO,CAAC,IAAI,GAAE,gBAAgB,CAAC,CAAC,CAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAgB7E;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,YAAY,CAAC,EAAK,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAG,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,QAAQ,EAAI,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,SAAS,EAAG,MAAM,MAAM,CAAC;CAC1B"}