@strands-agents/sdk 0.5.0 → 0.6.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/src/__fixtures__/metrics-helpers.d.ts +25 -0
- package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -0
- package/dist/src/__fixtures__/metrics-helpers.js +34 -0
- package/dist/src/__fixtures__/metrics-helpers.js.map +1 -0
- package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-message-model.js +12 -0
- package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
- package/dist/src/__fixtures__/mock-storage-provider.d.ts +5 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-storage-provider.js +23 -6
- package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -1
- package/dist/src/__fixtures__/slim-types.d.ts +2 -1
- package/dist/src/__fixtures__/slim-types.d.ts.map +1 -1
- package/dist/src/__tests__/mcp.test.js +45 -15
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.test.js +90 -92
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/agent.d.ts +35 -18
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +115 -57
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +9 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +2 -0
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +16 -0
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -1
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/index.d.ts +21 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp.d.ts +38 -0
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +23 -6
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +688 -0
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +106 -0
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/__tests__/streaming.test.d.ts +2 -0
- package/dist/src/models/__tests__/streaming.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/streaming.test.js +50 -0
- package/dist/src/models/__tests__/streaming.test.js.map +1 -0
- package/dist/src/models/bedrock.d.ts +80 -1
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +214 -5
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/model.d.ts +6 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +52 -2
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/streaming.d.ts +83 -2
- package/dist/src/models/streaming.d.ts.map +1 -1
- package/dist/src/models/streaming.js +26 -0
- package/dist/src/models/streaming.js.map +1 -1
- package/dist/src/multiagent/__tests__/events.test.js +18 -2
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/graph.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/graph.test.js +438 -0
- package/dist/src/multiagent/__tests__/graph.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +8 -8
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/queue.test.js +22 -0
- package/dist/src/multiagent/__tests__/queue.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.test.js +241 -0
- package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -0
- package/dist/src/multiagent/edge.d.ts +9 -2
- package/dist/src/multiagent/edge.d.ts.map +1 -1
- package/dist/src/multiagent/events.d.ts +15 -1
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +17 -0
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +125 -0
- package/dist/src/multiagent/graph.d.ts.map +1 -0
- package/dist/src/multiagent/graph.js +394 -0
- package/dist/src/multiagent/graph.js.map +1 -0
- package/dist/src/multiagent/index.d.ts +5 -1
- package/dist/src/multiagent/index.d.ts.map +1 -1
- package/dist/src/multiagent/index.js +3 -1
- package/dist/src/multiagent/index.js.map +1 -1
- package/dist/src/multiagent/nodes.d.ts +8 -6
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +16 -5
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/multiagent/queue.d.ts +6 -0
- package/dist/src/multiagent/queue.d.ts.map +1 -1
- package/dist/src/multiagent/queue.js +13 -0
- package/dist/src/multiagent/queue.js.map +1 -1
- package/dist/src/multiagent/state.d.ts +2 -0
- package/dist/src/multiagent/state.d.ts.map +1 -1
- package/dist/src/multiagent/state.js +3 -0
- package/dist/src/multiagent/state.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +102 -0
- package/dist/src/multiagent/swarm.d.ts.map +1 -0
- package/dist/src/multiagent/swarm.js +238 -0
- package/dist/src/multiagent/swarm.js.map +1 -0
- package/dist/src/registry/__tests__/tool-registry.test.d.ts +2 -0
- package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +1 -0
- package/dist/src/registry/__tests__/tool-registry.test.js +124 -0
- package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -0
- package/dist/src/registry/tool-registry.d.ts +32 -20
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +60 -158
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/session/__tests__/file-storage.test.node.js +75 -15
- package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -1
- package/dist/src/session/__tests__/s3-storage.test.d.ts +2 -0
- package/dist/src/session/__tests__/s3-storage.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/{s3-storage.test.node.js → s3-storage.test.js} +161 -75
- package/dist/src/session/__tests__/s3-storage.test.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.d.ts +2 -0
- package/dist/src/session/__tests__/session-manager.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +461 -0
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -0
- package/dist/src/session/__tests__/validation.test.js +28 -1
- package/dist/src/session/__tests__/validation.test.js.map +1 -1
- package/dist/src/session/file-storage.d.ts +53 -27
- package/dist/src/session/file-storage.d.ts.map +1 -1
- package/dist/src/session/file-storage.js +103 -52
- package/dist/src/session/file-storage.js.map +1 -1
- package/dist/src/session/index.d.ts +6 -13
- package/dist/src/session/index.d.ts.map +1 -1
- package/dist/src/session/index.js +4 -12
- package/dist/src/session/index.js.map +1 -1
- package/dist/src/session/s3-storage.d.ts +49 -20
- package/dist/src/session/s3-storage.d.ts.map +1 -1
- package/dist/src/session/s3-storage.js +120 -35
- package/dist/src/session/s3-storage.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +83 -0
- package/dist/src/session/session-manager.d.ts.map +1 -0
- package/dist/src/session/session-manager.js +122 -0
- package/dist/src/session/session-manager.js.map +1 -0
- package/dist/src/session/storage.d.ts +19 -11
- package/dist/src/session/storage.d.ts.map +1 -1
- package/dist/src/session/types.d.ts +6 -18
- package/dist/src/session/types.d.ts.map +1 -1
- package/dist/src/session/validation.d.ts +7 -0
- package/dist/src/session/validation.d.ts.map +1 -1
- package/dist/src/session/validation.js +12 -0
- package/dist/src/session/validation.js.map +1 -1
- package/dist/src/structured-output/__tests__/context.test.js +13 -13
- package/dist/src/structured-output/__tests__/context.test.js.map +1 -1
- package/dist/src/structured-output/context.js +1 -1
- package/dist/src/structured-output/context.js.map +1 -1
- package/dist/src/telemetry/__tests__/config.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/config.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.js +40 -0
- package/dist/src/telemetry/__tests__/config.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.node.js +10 -36
- package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
- package/dist/src/telemetry/__tests__/meter.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/meter.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/meter.test.js +457 -0
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -0
- package/dist/src/telemetry/config.d.ts +40 -19
- package/dist/src/telemetry/config.d.ts.map +1 -1
- package/dist/src/telemetry/config.js +63 -31
- package/dist/src/telemetry/config.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +1 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/meter.d.ts +277 -0
- package/dist/src/telemetry/meter.d.ts.map +1 -0
- package/dist/src/telemetry/meter.js +292 -0
- package/dist/src/telemetry/meter.js.map +1 -0
- package/dist/src/telemetry/tracer.js +2 -2
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/tools/__tests__/tool-factory.test.d.ts +2 -0
- package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +1 -0
- package/dist/src/tools/__tests__/tool-factory.test.js +98 -0
- package/dist/src/tools/__tests__/tool-factory.test.js.map +1 -0
- package/dist/src/tools/__tests__/zod-tool.test-d.js +1 -1
- package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -1
- package/dist/src/tools/__tests__/zod-tool.test.js +3 -4
- package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts +15 -2
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +24 -0
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/tool-factory.d.ts +22 -0
- package/dist/src/tools/tool-factory.d.ts.map +1 -0
- package/dist/src/tools/tool-factory.js +55 -0
- package/dist/src/tools/tool-factory.js.map +1 -0
- package/dist/src/tools/zod-tool.d.ts +55 -52
- package/dist/src/tools/zod-tool.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.js +7 -61
- package/dist/src/tools/zod-tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +11 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/__tests__/citations.test.d.ts +2 -0
- package/dist/src/types/__tests__/citations.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/citations.test.js +104 -0
- package/dist/src/types/__tests__/citations.test.js.map +1 -0
- package/dist/src/types/__tests__/messages.test.js +26 -0
- package/dist/src/types/__tests__/messages.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +7 -0
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +9 -0
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/citations.d.ts +180 -0
- package/dist/src/types/citations.d.ts.map +1 -0
- package/dist/src/types/citations.js +45 -0
- package/dist/src/types/citations.js.map +1 -0
- package/dist/src/types/messages.d.ts +5 -1
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +4 -0
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
- package/dist/src/vended-tools/bash/bash.js +1 -2
- package/dist/src/vended-tools/bash/bash.js.map +1 -1
- package/dist/src/vended-tools/file_editor/file-editor.js +1 -1
- package/dist/src/vended-tools/file_editor/file-editor.js.map +1 -1
- package/dist/src/vended-tools/http_request/http-request.d.ts.map +1 -1
- package/dist/src/vended-tools/http_request/http-request.js +1 -2
- package/dist/src/vended-tools/http_request/http-request.js.map +1 -1
- package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
- package/package.json +15 -3
- package/dist/src/registry/registry.d.ts +0 -117
- package/dist/src/registry/registry.d.ts.map +0 -1
- package/dist/src/registry/registry.js +0 -298
- package/dist/src/registry/registry.js.map +0 -1
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts +0 -2
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +0 -1
- package/dist/src/session/__tests__/s3-storage.test.node.js.map +0 -1
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { Agent } from '../agent/agent.js';
|
|
2
|
+
import { TextBlock } from '../types/messages.js';
|
|
3
|
+
import { HookableEvent } from '../hooks/events.js';
|
|
4
|
+
import { HookRegistryImplementation } from '../hooks/registry.js';
|
|
5
|
+
import { AgentNode, MultiAgentNode, Node } from './nodes.js';
|
|
6
|
+
import { MultiAgentState, MultiAgentResult, NodeResult, Status } from './state.js';
|
|
7
|
+
import { AfterMultiAgentInvocationEvent, AfterNodeCallEvent, BeforeMultiAgentInvocationEvent, BeforeNodeCallEvent, MultiAgentHandoffEvent, MultiAgentInitializedEvent, MultiAgentResultEvent, NodeCancelEvent, } from './events.js';
|
|
8
|
+
import { Edge } from './edge.js';
|
|
9
|
+
import { Queue } from './queue.js';
|
|
10
|
+
/**
|
|
11
|
+
* Directed graph orchestration pattern.
|
|
12
|
+
*
|
|
13
|
+
* Agents execute as nodes in a dependency graph, with edges defining execution order
|
|
14
|
+
* and optional conditions controlling routing. Source nodes (those with no incoming edges)
|
|
15
|
+
* run first, and downstream nodes execute once all their dependencies complete. Parallel
|
|
16
|
+
* execution is supported up to a configurable concurrency limit.
|
|
17
|
+
*
|
|
18
|
+
* Key design choices vs the Python SDK:
|
|
19
|
+
* - Construction uses a declarative options object rather than a mutable GraphBuilder.
|
|
20
|
+
* Nodes and edges are passed directly to the constructor.
|
|
21
|
+
* - Dependency resolution uses AND semantics: a node runs only when all incoming edges
|
|
22
|
+
* are satisfied. Python uses OR semantics, firing a node when any single incoming
|
|
23
|
+
* edge from the completed batch is satisfied.
|
|
24
|
+
* - Nodes are launched individually as they become ready (up to maxConcurrency). Python
|
|
25
|
+
* executes in discrete batches, waiting for the entire batch to complete before
|
|
26
|
+
* scheduling the next set of nodes.
|
|
27
|
+
* - Agent nodes are stateless by default (snapshot/restore on each execution). Python
|
|
28
|
+
* accumulates agent state across executions unless `reset_on_revisit` is enabled.
|
|
29
|
+
* - Node failures produce a FAILED result, allowing parallel paths to continue.
|
|
30
|
+
* Orchestrator-level limits (maxSteps) throw exceptions. Python does the inverse:
|
|
31
|
+
* node failures throw exceptions (fail-fast), while limit violations return a
|
|
32
|
+
* FAILED result.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const graph = new Graph({
|
|
37
|
+
* nodes: [researcher, writer],
|
|
38
|
+
* edges: [['researcher', 'writer']],
|
|
39
|
+
* })
|
|
40
|
+
*
|
|
41
|
+
* const result = await graph.invoke('Explain quantum computing')
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export class Graph {
|
|
45
|
+
id;
|
|
46
|
+
nodes;
|
|
47
|
+
edges;
|
|
48
|
+
config;
|
|
49
|
+
hooks;
|
|
50
|
+
_sources;
|
|
51
|
+
_initialized;
|
|
52
|
+
constructor(options) {
|
|
53
|
+
const { id, nodes, edges, sources, hooks, ...config } = options;
|
|
54
|
+
this.id = id ?? 'graph';
|
|
55
|
+
this.config = {
|
|
56
|
+
maxConcurrency: config.maxConcurrency ?? Infinity,
|
|
57
|
+
maxSteps: config.maxSteps ?? Infinity,
|
|
58
|
+
};
|
|
59
|
+
this._validateConfig();
|
|
60
|
+
this.nodes = this._resolveNodes(nodes);
|
|
61
|
+
this.edges = this._resolveEdges(edges);
|
|
62
|
+
this._sources = this._resolveSources(sources);
|
|
63
|
+
this._validateSources();
|
|
64
|
+
this.hooks = new HookRegistryImplementation();
|
|
65
|
+
this.hooks.addAllHooks(hooks ?? []);
|
|
66
|
+
this._initialized = false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Initialize the graph. Invokes the {@link MultiAgentInitializedEvent} callback.
|
|
70
|
+
* Called automatically on first invocation.
|
|
71
|
+
*/
|
|
72
|
+
async initialize() {
|
|
73
|
+
if (this._initialized)
|
|
74
|
+
return;
|
|
75
|
+
await this.hooks.invokeCallbacks(new MultiAgentInitializedEvent({ orchestrator: this }));
|
|
76
|
+
this._initialized = true;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Invoke graph and return final result (consumes stream).
|
|
80
|
+
*
|
|
81
|
+
* @param input - The input to pass to entry point nodes
|
|
82
|
+
* @returns Promise resolving to the final MultiAgentResult
|
|
83
|
+
*/
|
|
84
|
+
async invoke(input) {
|
|
85
|
+
const gen = this.stream(input);
|
|
86
|
+
let next = await gen.next();
|
|
87
|
+
while (!next.done) {
|
|
88
|
+
next = await gen.next();
|
|
89
|
+
}
|
|
90
|
+
return next.value;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Stream graph execution, yielding events as nodes execute.
|
|
94
|
+
* Invokes hook callbacks for each event before yielding.
|
|
95
|
+
*
|
|
96
|
+
* @param input - The input to pass to entry nodes
|
|
97
|
+
* @returns Async generator yielding streaming events and returning a MultiAgentResult
|
|
98
|
+
*/
|
|
99
|
+
async *stream(input) {
|
|
100
|
+
await this.initialize();
|
|
101
|
+
const gen = this._stream(input);
|
|
102
|
+
try {
|
|
103
|
+
let next = await gen.next();
|
|
104
|
+
while (!next.done) {
|
|
105
|
+
if (next.value instanceof HookableEvent) {
|
|
106
|
+
await this.hooks.invokeCallbacks(next.value);
|
|
107
|
+
}
|
|
108
|
+
yield next.value;
|
|
109
|
+
next = await gen.next();
|
|
110
|
+
}
|
|
111
|
+
return next.value;
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
await gen.return(undefined);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async *_stream(input) {
|
|
118
|
+
const state = new MultiAgentState({ nodeIds: [...this.nodes.keys()] });
|
|
119
|
+
const queue = new Queue();
|
|
120
|
+
const targets = [...this._sources];
|
|
121
|
+
const streams = new Map();
|
|
122
|
+
yield new BeforeMultiAgentInvocationEvent({ orchestrator: this, state });
|
|
123
|
+
try {
|
|
124
|
+
while (targets.length > 0 || streams.size > 0) {
|
|
125
|
+
while (targets.length > 0 && streams.size < this.config.maxConcurrency) {
|
|
126
|
+
const node = targets.shift();
|
|
127
|
+
this._checkSteps(state);
|
|
128
|
+
state.steps++;
|
|
129
|
+
streams.set(node.id, this._streamNode(node, input, state, queue));
|
|
130
|
+
}
|
|
131
|
+
await queue.wait();
|
|
132
|
+
while (queue.size > 0) {
|
|
133
|
+
const { data, ack } = queue.shift();
|
|
134
|
+
if (data.type === 'event') {
|
|
135
|
+
yield data.event;
|
|
136
|
+
ack();
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (data.type === 'error') {
|
|
140
|
+
streams.delete(data.node.id);
|
|
141
|
+
ack();
|
|
142
|
+
throw data.error;
|
|
143
|
+
}
|
|
144
|
+
const { node, result } = data;
|
|
145
|
+
streams.delete(node.id);
|
|
146
|
+
ack();
|
|
147
|
+
state.results.push(result);
|
|
148
|
+
const ready = await this._findReady(node, state, streams, targets);
|
|
149
|
+
if (ready.length > 0) {
|
|
150
|
+
yield new MultiAgentHandoffEvent({
|
|
151
|
+
source: node.id,
|
|
152
|
+
targets: ready.map((n) => n.id),
|
|
153
|
+
});
|
|
154
|
+
targets.push(...ready);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
queue.dispose();
|
|
161
|
+
await Promise.allSettled(streams.values());
|
|
162
|
+
yield new AfterMultiAgentInvocationEvent({ orchestrator: this, state });
|
|
163
|
+
}
|
|
164
|
+
const result = new MultiAgentResult({
|
|
165
|
+
results: state.results,
|
|
166
|
+
content: this._resolveContent(state),
|
|
167
|
+
duration: Date.now() - state.startTime,
|
|
168
|
+
});
|
|
169
|
+
yield new MultiAgentResultEvent({ result });
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Executes a single node, pushing streaming events to the shared queue in real-time.
|
|
174
|
+
*/
|
|
175
|
+
async _streamNode(node, input, state, queue) {
|
|
176
|
+
const nodeState = state.node(node.id);
|
|
177
|
+
const beforeEvent = new BeforeNodeCallEvent({ orchestrator: this, state, nodeId: node.id });
|
|
178
|
+
await queue.send({ type: 'event', node, event: beforeEvent });
|
|
179
|
+
if (beforeEvent.cancel) {
|
|
180
|
+
const message = typeof beforeEvent.cancel === 'string' ? beforeEvent.cancel : 'node cancelled by hook';
|
|
181
|
+
const result = new NodeResult({ nodeId: node.id, status: Status.CANCELLED, duration: 0 });
|
|
182
|
+
nodeState.status = Status.CANCELLED;
|
|
183
|
+
nodeState.results.push(result);
|
|
184
|
+
await queue.send({
|
|
185
|
+
type: 'event',
|
|
186
|
+
node,
|
|
187
|
+
event: new NodeCancelEvent({ nodeId: node.id, message }),
|
|
188
|
+
});
|
|
189
|
+
await queue.send({
|
|
190
|
+
type: 'event',
|
|
191
|
+
node,
|
|
192
|
+
event: new AfterNodeCallEvent({ orchestrator: this, state, nodeId: node.id }),
|
|
193
|
+
});
|
|
194
|
+
queue.push({ type: 'result', node, result });
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const nodeInput = this._resolveNodeInput(node, input, state);
|
|
199
|
+
const gen = node.stream(nodeInput, state);
|
|
200
|
+
let next = await gen.next();
|
|
201
|
+
while (!next.done) {
|
|
202
|
+
await queue.send({ type: 'event', node, event: next.value });
|
|
203
|
+
next = await gen.next();
|
|
204
|
+
}
|
|
205
|
+
queue.push({ type: 'result', node, result: next.value });
|
|
206
|
+
await queue.send({
|
|
207
|
+
type: 'event',
|
|
208
|
+
node,
|
|
209
|
+
event: new AfterNodeCallEvent({ orchestrator: this, state, nodeId: node.id }),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
await queue.send({
|
|
214
|
+
type: 'event',
|
|
215
|
+
node,
|
|
216
|
+
event: new AfterNodeCallEvent({
|
|
217
|
+
orchestrator: this,
|
|
218
|
+
state,
|
|
219
|
+
nodeId: node.id,
|
|
220
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
221
|
+
}),
|
|
222
|
+
});
|
|
223
|
+
queue.push({
|
|
224
|
+
type: 'error',
|
|
225
|
+
node,
|
|
226
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
_validateConfig() {
|
|
231
|
+
if (this.config.maxConcurrency < 1) {
|
|
232
|
+
throw new Error(`max_concurrency=<${this.config.maxConcurrency}> | must be at least 1`);
|
|
233
|
+
}
|
|
234
|
+
if (this.config.maxSteps < 1) {
|
|
235
|
+
throw new Error(`max_steps=<${this.config.maxSteps}> | must be at least 1`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
_validateSources() {
|
|
239
|
+
if (this._sources.length === 0) {
|
|
240
|
+
throw new Error('graph has no source nodes');
|
|
241
|
+
}
|
|
242
|
+
const visited = new Set();
|
|
243
|
+
const adjacency = new Map();
|
|
244
|
+
for (const edge of this.edges) {
|
|
245
|
+
const targets = adjacency.get(edge.source.id) ?? [];
|
|
246
|
+
targets.push(edge.target.id);
|
|
247
|
+
adjacency.set(edge.source.id, targets);
|
|
248
|
+
}
|
|
249
|
+
const queue = this._sources.map((n) => n.id);
|
|
250
|
+
while (queue.length > 0) {
|
|
251
|
+
const id = queue.shift();
|
|
252
|
+
if (visited.has(id))
|
|
253
|
+
continue;
|
|
254
|
+
visited.add(id);
|
|
255
|
+
for (const target of adjacency.get(id) ?? []) {
|
|
256
|
+
queue.push(target);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
for (const id of this.nodes.keys()) {
|
|
260
|
+
if (!visited.has(id)) {
|
|
261
|
+
throw new Error(`node_id=<${id}> | unreachable from any source node`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
_resolveNodes(definitions) {
|
|
266
|
+
const nodes = new Map();
|
|
267
|
+
for (const definition of definitions) {
|
|
268
|
+
let node;
|
|
269
|
+
if (definition instanceof Node) {
|
|
270
|
+
node = definition;
|
|
271
|
+
}
|
|
272
|
+
else if ('type' in definition) {
|
|
273
|
+
switch (definition.type) {
|
|
274
|
+
case 'agent': {
|
|
275
|
+
const { type: _, ...options } = definition;
|
|
276
|
+
node = new AgentNode(options);
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
case 'multiAgent': {
|
|
280
|
+
const { type: _, ...options } = definition;
|
|
281
|
+
node = new MultiAgentNode(options);
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
default:
|
|
285
|
+
throw new Error('unknown node definition type');
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else if (definition instanceof Agent) {
|
|
289
|
+
node = new AgentNode({ agent: definition });
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
node = new MultiAgentNode({ orchestrator: definition });
|
|
293
|
+
}
|
|
294
|
+
if (nodes.has(node.id)) {
|
|
295
|
+
throw new Error(`node_id=<${node.id}> | duplicate node id`);
|
|
296
|
+
}
|
|
297
|
+
nodes.set(node.id, node);
|
|
298
|
+
}
|
|
299
|
+
return nodes;
|
|
300
|
+
}
|
|
301
|
+
_resolveEdges(definitions) {
|
|
302
|
+
const edges = [];
|
|
303
|
+
for (const definition of definitions) {
|
|
304
|
+
const [sourceId, targetId, handler] = Array.isArray(definition)
|
|
305
|
+
? [definition[0], definition[1], undefined]
|
|
306
|
+
: [definition.source, definition.target, definition.handler];
|
|
307
|
+
const source = this.nodes.get(sourceId);
|
|
308
|
+
const target = this.nodes.get(targetId);
|
|
309
|
+
if (!source) {
|
|
310
|
+
throw new Error(`source=<${sourceId}> | edge references unknown source node`);
|
|
311
|
+
}
|
|
312
|
+
if (!target) {
|
|
313
|
+
throw new Error(`target=<${targetId}> | edge references unknown target node`);
|
|
314
|
+
}
|
|
315
|
+
edges.push(new Edge({ source, target, ...(handler && { handler }) }));
|
|
316
|
+
}
|
|
317
|
+
return edges;
|
|
318
|
+
}
|
|
319
|
+
_resolveSources(sourceIds) {
|
|
320
|
+
if (sourceIds) {
|
|
321
|
+
const sources = [];
|
|
322
|
+
for (const id of sourceIds) {
|
|
323
|
+
const node = this.nodes.get(id);
|
|
324
|
+
if (!node) {
|
|
325
|
+
throw new Error(`source=<${id}> | source references unknown node`);
|
|
326
|
+
}
|
|
327
|
+
sources.push(node);
|
|
328
|
+
}
|
|
329
|
+
return sources;
|
|
330
|
+
}
|
|
331
|
+
const targetIds = new Set(this.edges.map((e) => e.target.id));
|
|
332
|
+
return [...this.nodes.values()].filter((node) => !targetIds.has(node.id));
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Identifies terminus nodes and returns their combined content.
|
|
336
|
+
* A terminus node is where an execution path ended: completed with no
|
|
337
|
+
* downstream progress, or failed/cancelled.
|
|
338
|
+
*/
|
|
339
|
+
_resolveContent(state) {
|
|
340
|
+
for (const [id, ns] of state.nodes.entries()) {
|
|
341
|
+
if (ns.status === Status.FAILED || ns.status === Status.CANCELLED) {
|
|
342
|
+
ns.terminus = true;
|
|
343
|
+
}
|
|
344
|
+
else if (ns.status === Status.COMPLETED) {
|
|
345
|
+
ns.terminus = !this.edges
|
|
346
|
+
.filter((e) => e.source.id === id)
|
|
347
|
+
.some((e) => state.node(e.target.id)?.status !== Status.PENDING);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return [...state.nodes.values()].filter((ns) => ns.terminus).flatMap((ns) => ns.content);
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Builds the input for a node by combining the original task with dependency outputs.
|
|
354
|
+
*/
|
|
355
|
+
_resolveNodeInput(node, input, state) {
|
|
356
|
+
const deps = [];
|
|
357
|
+
for (const edge of this.edges.filter((e) => e.target.id === node.id)) {
|
|
358
|
+
const ns = state.node(edge.source.id);
|
|
359
|
+
if (ns.content.length > 0) {
|
|
360
|
+
deps.push(new TextBlock(`[node: ${edge.source.id}]`), ...ns.content);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
if (deps.length === 0)
|
|
364
|
+
return input;
|
|
365
|
+
const blocks = typeof input === 'string' ? [new TextBlock(input)] : input;
|
|
366
|
+
return [...blocks, ...deps];
|
|
367
|
+
}
|
|
368
|
+
_checkSteps(state) {
|
|
369
|
+
if (state.steps >= this.config.maxSteps) {
|
|
370
|
+
throw new Error(`steps=<${state.steps}> | max steps reached`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Finds downstream nodes that are ready to execute after a node completes.
|
|
375
|
+
* A target is ready when all its incoming edge sources are COMPLETED.
|
|
376
|
+
*/
|
|
377
|
+
async _findReady(node, state, streams, targets) {
|
|
378
|
+
if (state.node(node.id)?.status !== Status.COMPLETED)
|
|
379
|
+
return [];
|
|
380
|
+
const ready = [];
|
|
381
|
+
for (const edge of this.edges.filter((e) => e.source.id === node.id)) {
|
|
382
|
+
if (!(await edge.handler(state)))
|
|
383
|
+
continue;
|
|
384
|
+
if (streams.has(edge.target.id) || targets.some((n) => n.id === edge.target.id))
|
|
385
|
+
continue;
|
|
386
|
+
const deps = this.edges.filter((e) => e.target.id === edge.target.id);
|
|
387
|
+
if (deps.every((e) => state.node(e.source.id)?.status === Status.COMPLETED)) {
|
|
388
|
+
ready.push(edge.target);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return ready;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/multiagent/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAGjE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGlF,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,+BAA+B,EAC/B,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AA4BlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,OAAO,KAAK;IACP,EAAE,CAAQ;IACV,KAAK,CAA2B;IAChC,KAAK,CAAiB;IACtB,MAAM,CAAuB;IAC7B,KAAK,CAA4B;IACzB,QAAQ,CAAQ;IACzB,YAAY,CAAS;IAE7B,YAAY,OAAqB;QAC/B,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAA;QAE/D,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,OAAO,CAAA;QAEvB,IAAI,CAAC,MAAM,GAAG;YACZ,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,QAAQ;YACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ;SACtC,CAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEvB,IAAI,CAAC,KAAK,GAAG,IAAI,0BAA0B,EAAE,CAAA;QAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,YAAY;YAAE,OAAM;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,0BAA0B,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACxF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAiB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,KAAiB;QAC7B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,KAAK,YAAY,aAAa,EAAE,CAAC;oBACxC,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC9C,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAA;gBAChB,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YACzB,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAA;QACnB,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,MAAM,CAAC,SAAkB,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,CAAC,OAAO,CAAC,KAAiB;QACtC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QAEtE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;QACzB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAA;QAEhD,MAAM,IAAI,+BAA+B,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAExE,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC9C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBACvE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAG,CAAA;oBAE7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;oBACvB,KAAK,CAAC,KAAK,EAAE,CAAA;oBAEb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;gBACnE,CAAC;gBAED,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;gBAClB,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;oBAEpC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC1B,MAAM,IAAI,CAAC,KAAK,CAAA;wBAChB,GAAG,EAAE,CAAA;wBACL,SAAQ;oBACV,CAAC;oBAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBAC5B,GAAG,EAAE,CAAA;wBACL,MAAM,IAAI,CAAC,KAAK,CAAA;oBAClB,CAAC;oBAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;oBAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACvB,GAAG,EAAE,CAAA;oBAEL,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAE1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;oBAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,IAAI,sBAAsB,CAAC;4BAC/B,MAAM,EAAE,IAAI,CAAC,EAAE;4BACf,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAChC,CAAC,CAAA;wBACF,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YAC1C,MAAM,IAAI,8BAA8B,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACzE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS;SACvC,CAAC,CAAA;QACF,MAAM,IAAI,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3C,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,IAAU,EAAE,KAAiB,EAAE,KAAsB,EAAE,KAAY;QAC3F,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CAAA;QAEtC,MAAM,WAAW,GAAG,IAAI,mBAAmB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3F,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;QAE7D,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,OAAO,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAA;YACtG,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;YACzF,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAA;YACnC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAE9B,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,KAAK,EAAE,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;aACzD,CAAC,CAAA;YACF,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,KAAK,EAAE,IAAI,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aAC9E,CAAC,CAAA;YACF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAE5D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACzC,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC5D,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YACzB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YAExD,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,KAAK,EAAE,IAAI,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aAC9E,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,KAAK,EAAE,IAAI,kBAAkB,CAAC;oBAC5B,YAAY,EAAE,IAAI;oBAClB,KAAK;oBACL,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjE,CAAC;aACH,CAAC,CAAA;YACF,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACjE,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,cAAc,wBAAwB,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,QAAQ,wBAAwB,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;QACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;QAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC5B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAQ;YAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,WAA6B;QACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAA;QAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,IAAU,CAAA;YAEd,IAAI,UAAU,YAAY,IAAI,EAAE,CAAC;gBAC/B,IAAI,GAAG,UAAU,CAAA;YACnB,CAAC;iBAAM,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,KAAK,OAAO,CAAC,CAAC,CAAC;wBACb,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,CAAA;wBAC1C,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;wBAC7B,MAAK;oBACP,CAAC;oBACD,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,CAAA;wBAC1C,IAAI,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;wBAClC,MAAK;oBACP,CAAC;oBACD;wBACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;gBACnD,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU,YAAY,KAAK,EAAE,CAAC;gBACvC,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,cAAc,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAA;YACzD,CAAC;YAED,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAA;YAC7D,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC1B,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,aAAa,CAAC,WAA6B;QACjD,MAAM,KAAK,GAAW,EAAE,CAAA;QACxB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7D,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC3C,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;YAE9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,yCAAyC,CAAC,CAAA;YAC/E,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,yCAAyC,CAAC,CAAA;YAC/E,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,eAAe,CAAC,SAAoB;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,OAAO,GAAW,EAAE,CAAA;YAC1B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAA;gBACpE,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpB,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,KAAsB;QAC5C,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBAClE,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAA;YACpB,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1C,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK;qBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;qBACjC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC1F,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAU,EAAE,KAAiB,EAAE,KAAsB;QAC7E,MAAM,IAAI,GAAmB,EAAE,CAAA;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAE,CAAA;YACtC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAEnC,MAAM,MAAM,GAAmB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,KAAwB,CAAA;QAC7G,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAC7B,CAAC;IAEO,WAAW,CAAC,KAAsB;QACxC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,KAAK,uBAAuB,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,UAAU,CACtB,IAAU,EACV,KAAsB,EACtB,OAA2C,EAC3C,OAAwB;QAExB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,SAAS;YAAE,OAAO,EAAE,CAAA;QAE/D,MAAM,KAAK,GAAW,EAAE,CAAA;QAExB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAE,SAAQ;YAE1C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,SAAQ;YAEzF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACrE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
|
|
@@ -6,8 +6,12 @@ export type { NodeResultUpdate, ResultStatus } from './state.js';
|
|
|
6
6
|
export { Node, AgentNode, MultiAgentNode } from './nodes.js';
|
|
7
7
|
export type { NodeConfig, AgentNodeOptions, MultiAgentNodeOptions, NodeDefinition, NodeType } from './nodes.js';
|
|
8
8
|
export type { MultiAgentBase } from './base.js';
|
|
9
|
-
export { MultiAgentInitializedEvent, BeforeMultiAgentInvocationEvent, AfterMultiAgentInvocationEvent, BeforeNodeCallEvent, AfterNodeCallEvent, NodeStreamUpdateEvent, NodeResultEvent, MultiAgentHandoffEvent, MultiAgentResultEvent, } from './events.js';
|
|
9
|
+
export { MultiAgentInitializedEvent, BeforeMultiAgentInvocationEvent, AfterMultiAgentInvocationEvent, BeforeNodeCallEvent, AfterNodeCallEvent, NodeStreamUpdateEvent, NodeResultEvent, NodeCancelEvent, MultiAgentHandoffEvent, MultiAgentResultEvent, } from './events.js';
|
|
10
10
|
export type { MultiAgentStreamEvent } from './events.js';
|
|
11
11
|
export { Edge } from './edge.js';
|
|
12
12
|
export type { EdgeHandler, EdgeDefinition } from './edge.js';
|
|
13
|
+
export { Graph } from './graph.js';
|
|
14
|
+
export type { GraphConfig, GraphOptions } from './graph.js';
|
|
15
|
+
export { Swarm } from './swarm.js';
|
|
16
|
+
export type { SwarmConfig, SwarmNodeDefinition, SwarmOptions } from './swarm.js';
|
|
13
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/multiagent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7F,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC5D,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE/G,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC9B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/multiagent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7F,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC5D,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE/G,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC9B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { MultiAgentState, NodeState, Status, NodeResult, MultiAgentResult } from './state.js';
|
|
5
5
|
export { Node, AgentNode, MultiAgentNode } from './nodes.js';
|
|
6
|
-
export { MultiAgentInitializedEvent, BeforeMultiAgentInvocationEvent, AfterMultiAgentInvocationEvent, BeforeNodeCallEvent, AfterNodeCallEvent, NodeStreamUpdateEvent, NodeResultEvent, MultiAgentHandoffEvent, MultiAgentResultEvent, } from './events.js';
|
|
6
|
+
export { MultiAgentInitializedEvent, BeforeMultiAgentInvocationEvent, AfterMultiAgentInvocationEvent, BeforeNodeCallEvent, AfterNodeCallEvent, NodeStreamUpdateEvent, NodeResultEvent, NodeCancelEvent, MultiAgentHandoffEvent, MultiAgentResultEvent, } from './events.js';
|
|
7
7
|
export { Edge } from './edge.js';
|
|
8
|
+
export { Graph } from './graph.js';
|
|
9
|
+
export { Swarm } from './swarm.js';
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/multiagent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAK5D,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC9B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/multiagent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAK5D,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC9B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -12,9 +12,9 @@ export type NodeType = 'agentNode' | 'multiAgentNode' | (string & {});
|
|
|
12
12
|
*/
|
|
13
13
|
export interface NodeConfig {
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Optional description of what this node does.
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
description?: string;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Abstract base class for all multi-agent orchestration nodes.
|
|
@@ -55,9 +55,7 @@ export declare abstract class Node {
|
|
|
55
55
|
/**
|
|
56
56
|
* Options for creating an {@link AgentNode}.
|
|
57
57
|
*/
|
|
58
|
-
export interface AgentNodeOptions
|
|
59
|
-
/** Unique node identifier. */
|
|
60
|
-
id: string;
|
|
58
|
+
export interface AgentNodeOptions {
|
|
61
59
|
/** The agent to wrap as a node. */
|
|
62
60
|
agent: Agent;
|
|
63
61
|
}
|
|
@@ -114,8 +112,12 @@ export declare class MultiAgentNode extends Node {
|
|
|
114
112
|
}
|
|
115
113
|
/**
|
|
116
114
|
* A node definition accepted by orchestration constructors.
|
|
115
|
+
*
|
|
116
|
+
* Pass an {@link Agent} or {@link MultiAgentBase} directly for the simple case,
|
|
117
|
+
* use typed options objects for per-node configuration, or provide pre-built
|
|
118
|
+
* {@link Node} instances for full control.
|
|
117
119
|
*/
|
|
118
|
-
export type NodeDefinition = Node | (AgentNodeOptions & {
|
|
120
|
+
export type NodeDefinition = Agent | MultiAgentBase | Node | (AgentNodeOptions & {
|
|
119
121
|
type: 'agent';
|
|
120
122
|
}) | (MultiAgentNodeOptions & {
|
|
121
123
|
type: 'multiAgent';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAA;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,UAAU,EAAU,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAA;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,UAAU,EAAU,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG/C;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,8BAAsB,IAAI;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAE3B;;;OAGG;gBACS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAK1C;;;;;;;OAOG;IACI,MAAM,CACX,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,eAAe,GACrB,cAAc,CAAC,qBAAqB,EAAE,UAAU,EAAE,SAAS,CAAC;IAgC/D;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CACb,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,eAAe,GACrB,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC;CACtE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,KAAK,EAAE,KAAK,CAAA;CACb;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,IAAI;IACjC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;gBAElB,OAAO,EAAE,gBAAgB;IAWrC,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED;;;;;;;OAOG;IACI,MAAM,CACX,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,eAAe,GACrB,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC;CAsBtE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,0CAA0C;IAC1C,YAAY,EAAE,cAAc,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,IAAI;IACtC,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,OAAO,EAAE,qBAAqB;IAM1C,IAAI,YAAY,IAAI,cAAc,CAEjC;IAED;;;;;;;;OAQG;IACI,MAAM,CACX,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC;CActE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,cAAc,GACd,IAAI,GACJ,CAAC,gBAAgB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GACtC,CAAC,qBAAqB,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { takeSnapshot, loadSnapshot } from '../agent/snapshot.js';
|
|
2
2
|
import { NodeStreamUpdateEvent, NodeResultEvent } from './events.js';
|
|
3
3
|
import { NodeResult, Status } from './state.js';
|
|
4
|
+
import { logger } from '../logging/logger.js';
|
|
4
5
|
/**
|
|
5
6
|
* Abstract base class for all multi-agent orchestration nodes.
|
|
6
7
|
*
|
|
@@ -31,14 +32,16 @@ export class Node {
|
|
|
31
32
|
* @returns Async generator yielding streaming events and returning a NodeResult
|
|
32
33
|
*/
|
|
33
34
|
async *stream(args, state) {
|
|
34
|
-
const
|
|
35
|
+
const nodeState = state.node(this.id);
|
|
36
|
+
nodeState.status = Status.EXECUTING;
|
|
37
|
+
nodeState.startTime = Date.now();
|
|
35
38
|
let result;
|
|
36
39
|
try {
|
|
37
40
|
const update = yield* this.handle(args, state);
|
|
38
41
|
result = new NodeResult({
|
|
39
42
|
nodeId: this.id,
|
|
40
43
|
status: Status.COMPLETED,
|
|
41
|
-
duration: Date.now() - startTime,
|
|
44
|
+
duration: Date.now() - nodeState.startTime,
|
|
42
45
|
content: [],
|
|
43
46
|
...update,
|
|
44
47
|
});
|
|
@@ -47,9 +50,14 @@ export class Node {
|
|
|
47
50
|
result = new NodeResult({
|
|
48
51
|
nodeId: this.id,
|
|
49
52
|
status: Status.FAILED,
|
|
50
|
-
duration: Date.now() - startTime,
|
|
53
|
+
duration: Date.now() - nodeState.startTime,
|
|
51
54
|
error: error instanceof Error ? error : new Error(String(error)),
|
|
52
55
|
});
|
|
56
|
+
logger.warn(`node_id=<${this.id}>, error=<${result.error?.message}> | node execution failed`);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
nodeState.status = result.status;
|
|
60
|
+
nodeState.results.push(result);
|
|
53
61
|
}
|
|
54
62
|
yield new NodeResultEvent({ nodeId: this.id, nodeType: this.type, result });
|
|
55
63
|
return result;
|
|
@@ -65,8 +73,11 @@ export class AgentNode extends Node {
|
|
|
65
73
|
type = 'agentNode';
|
|
66
74
|
_agent;
|
|
67
75
|
constructor(options) {
|
|
68
|
-
const {
|
|
69
|
-
super(
|
|
76
|
+
const { agent, ...config } = options;
|
|
77
|
+
super(agent.agentId, {
|
|
78
|
+
...config,
|
|
79
|
+
...(agent.description !== undefined && { description: agent.description }),
|
|
80
|
+
});
|
|
70
81
|
this._agent = agent;
|
|
71
82
|
}
|
|
72
83
|
get agent() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ export declare class Queue {
|
|
|
38
38
|
private readonly _entries;
|
|
39
39
|
/** Resolve function for the pending wait() promise, if any. */
|
|
40
40
|
private _notify?;
|
|
41
|
+
private _disposed;
|
|
41
42
|
/**
|
|
42
43
|
* Push data to the queue, waking any waiting consumer.
|
|
43
44
|
*/
|
|
@@ -59,6 +60,11 @@ export declare class Queue {
|
|
|
59
60
|
* Remove and return the next entry, or undefined if empty.
|
|
60
61
|
*/
|
|
61
62
|
shift(): QueueEntry | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Dispose the queue by resolving all pending acks and draining entries.
|
|
65
|
+
* Future {@link send} calls resolve immediately.
|
|
66
|
+
*/
|
|
67
|
+
dispose(): void;
|
|
62
68
|
/**
|
|
63
69
|
* Number of entries in the queue.
|
|
64
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/multiagent/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAE/C;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,IAAI,CAAA;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,+DAA+D;IAC/D,OAAO,CAAC,OAAO,CAAC,CAA0B;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/multiagent/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAE/C;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,IAAI,CAAA;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,+DAA+D;IAC/D,OAAO,CAAC,OAAO,CAAC,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAM3B;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpC;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB;;OAEG;IACH,KAAK,IAAI,UAAU,GAAG,SAAS;IAI/B;;;OAGG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -10,6 +10,7 @@ export class Queue {
|
|
|
10
10
|
_entries = [];
|
|
11
11
|
/** Resolve function for the pending wait() promise, if any. */
|
|
12
12
|
_notify;
|
|
13
|
+
_disposed = false;
|
|
13
14
|
/**
|
|
14
15
|
* Push data to the queue, waking any waiting consumer.
|
|
15
16
|
*/
|
|
@@ -27,6 +28,8 @@ export class Queue {
|
|
|
27
28
|
* @returns Promise that resolves when the consumer calls {@link QueueEntry.ack}
|
|
28
29
|
*/
|
|
29
30
|
send(data) {
|
|
31
|
+
if (this._disposed)
|
|
32
|
+
return Promise.resolve();
|
|
30
33
|
return new Promise((resolve) => {
|
|
31
34
|
this._entries.push({ data, ack: resolve });
|
|
32
35
|
this._notify?.();
|
|
@@ -49,6 +52,16 @@ export class Queue {
|
|
|
49
52
|
shift() {
|
|
50
53
|
return this._entries.shift();
|
|
51
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Dispose the queue by resolving all pending acks and draining entries.
|
|
57
|
+
* Future {@link send} calls resolve immediately.
|
|
58
|
+
*/
|
|
59
|
+
dispose() {
|
|
60
|
+
this._disposed = true;
|
|
61
|
+
while (this._entries.length > 0) {
|
|
62
|
+
this._entries.shift().ack();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
52
65
|
/**
|
|
53
66
|
* Number of entries in the queue.
|
|
54
67
|
*/
|