@strands-agents/sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/src/__fixtures__/agent-helpers.d.ts +10 -1
  2. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  3. package/dist/src/__fixtures__/agent-helpers.js +13 -2
  4. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  5. package/dist/src/__fixtures__/mock-span.d.ts +78 -0
  6. package/dist/src/__fixtures__/mock-span.d.ts.map +1 -0
  7. package/dist/src/__fixtures__/mock-span.js +93 -0
  8. package/dist/src/__fixtures__/mock-span.js.map +1 -0
  9. package/dist/src/__fixtures__/tool-helpers.d.ts +2 -2
  10. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  11. package/dist/src/__fixtures__/tool-helpers.js +4 -4
  12. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  13. package/dist/src/__tests__/app-state.test.d.ts +2 -0
  14. package/dist/src/__tests__/app-state.test.d.ts.map +1 -0
  15. package/dist/src/{agent/__tests__/state.test.js → __tests__/app-state.test.js} +46 -46
  16. package/dist/src/__tests__/app-state.test.js.map +1 -0
  17. package/dist/src/__tests__/mcp.test.js +96 -15
  18. package/dist/src/__tests__/mcp.test.js.map +1 -1
  19. package/dist/src/agent/__tests__/agent.test.js +110 -0
  20. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  21. package/dist/src/agent/__tests__/agent.tracer.test.d.ts +2 -0
  22. package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +1 -0
  23. package/dist/src/agent/__tests__/agent.tracer.test.js +470 -0
  24. package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -0
  25. package/dist/src/agent/agent.d.ts +59 -6
  26. package/dist/src/agent/agent.d.ts.map +1 -1
  27. package/dist/src/agent/agent.js +187 -60
  28. package/dist/src/agent/agent.js.map +1 -1
  29. package/dist/src/{agent/state.d.ts → app-state.d.ts} +7 -7
  30. package/dist/src/app-state.d.ts.map +1 -0
  31. package/dist/src/{agent/state.js → app-state.js} +6 -6
  32. package/dist/src/app-state.js.map +1 -0
  33. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +1 -1
  34. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +1 -1
  35. package/dist/src/index.d.ts +2 -1
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/index.js +4 -0
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/mcp.d.ts +3 -0
  40. package/dist/src/mcp.d.ts.map +1 -1
  41. package/dist/src/mcp.js +38 -1
  42. package/dist/src/mcp.js.map +1 -1
  43. package/dist/src/models/__tests__/model.test.js +7 -0
  44. package/dist/src/models/__tests__/model.test.js.map +1 -1
  45. package/dist/src/models/model.d.ts +4 -0
  46. package/dist/src/models/model.d.ts.map +1 -1
  47. package/dist/src/models/model.js +6 -0
  48. package/dist/src/models/model.js.map +1 -1
  49. package/dist/src/models/streaming.d.ts +1 -1
  50. package/dist/src/multiagent/__tests__/events.test.d.ts +2 -0
  51. package/dist/src/multiagent/__tests__/events.test.d.ts.map +1 -0
  52. package/dist/src/multiagent/__tests__/events.test.js +189 -0
  53. package/dist/src/multiagent/__tests__/events.test.js.map +1 -0
  54. package/dist/src/multiagent/__tests__/nodes.test.js +102 -6
  55. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  56. package/dist/src/multiagent/__tests__/queue.test.d.ts +2 -0
  57. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +1 -0
  58. package/dist/src/multiagent/__tests__/queue.test.js +96 -0
  59. package/dist/src/multiagent/__tests__/queue.test.js.map +1 -0
  60. package/dist/src/multiagent/base.d.ts +25 -0
  61. package/dist/src/multiagent/base.d.ts.map +1 -0
  62. package/dist/src/multiagent/base.js +2 -0
  63. package/dist/src/multiagent/base.js.map +1 -0
  64. package/dist/src/multiagent/edge.d.ts +29 -0
  65. package/dist/src/multiagent/edge.d.ts.map +1 -0
  66. package/dist/src/multiagent/edge.js +15 -0
  67. package/dist/src/multiagent/edge.js.map +1 -0
  68. package/dist/src/multiagent/events.d.ts +115 -4
  69. package/dist/src/multiagent/events.d.ts.map +1 -1
  70. package/dist/src/multiagent/events.js +123 -2
  71. package/dist/src/multiagent/events.js.map +1 -1
  72. package/dist/src/multiagent/index.d.ts +8 -6
  73. package/dist/src/multiagent/index.d.ts.map +1 -1
  74. package/dist/src/multiagent/index.js +4 -3
  75. package/dist/src/multiagent/index.js.map +1 -1
  76. package/dist/src/multiagent/nodes.d.ts +62 -14
  77. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  78. package/dist/src/multiagent/nodes.js +67 -20
  79. package/dist/src/multiagent/nodes.js.map +1 -1
  80. package/dist/src/multiagent/queue.d.ts +67 -0
  81. package/dist/src/multiagent/queue.d.ts.map +1 -0
  82. package/dist/src/multiagent/queue.js +59 -0
  83. package/dist/src/multiagent/queue.js.map +1 -0
  84. package/dist/src/multiagent/state.d.ts +77 -10
  85. package/dist/src/multiagent/state.d.ts.map +1 -1
  86. package/dist/src/multiagent/state.js +98 -9
  87. package/dist/src/multiagent/state.js.map +1 -1
  88. package/dist/src/telemetry/__tests__/config.test.node.d.ts +2 -0
  89. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +1 -0
  90. package/dist/src/telemetry/__tests__/config.test.node.js +129 -0
  91. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -0
  92. package/dist/src/telemetry/__tests__/json.test.d.ts +2 -0
  93. package/dist/src/telemetry/__tests__/json.test.d.ts.map +1 -0
  94. package/dist/src/telemetry/__tests__/json.test.js +89 -0
  95. package/dist/src/telemetry/__tests__/json.test.js.map +1 -0
  96. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +2 -0
  97. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +1 -0
  98. package/dist/src/telemetry/__tests__/tracer.test.node.js +611 -0
  99. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -0
  100. package/dist/src/telemetry/config.d.ts +61 -0
  101. package/dist/src/telemetry/config.d.ts.map +1 -0
  102. package/dist/src/telemetry/config.js +101 -0
  103. package/dist/src/telemetry/config.js.map +1 -0
  104. package/dist/src/telemetry/index.d.ts +34 -0
  105. package/dist/src/telemetry/index.d.ts.map +1 -0
  106. package/dist/src/telemetry/index.js +33 -0
  107. package/dist/src/telemetry/index.js.map +1 -0
  108. package/dist/src/telemetry/json.d.ts +11 -0
  109. package/dist/src/telemetry/json.d.ts.map +1 -0
  110. package/dist/src/telemetry/json.js +25 -0
  111. package/dist/src/telemetry/json.js.map +1 -0
  112. package/dist/src/telemetry/tracer.d.ts +219 -0
  113. package/dist/src/telemetry/tracer.d.ts.map +1 -0
  114. package/dist/src/telemetry/tracer.js +610 -0
  115. package/dist/src/telemetry/tracer.js.map +1 -0
  116. package/dist/src/telemetry/types.d.ts +101 -0
  117. package/dist/src/telemetry/types.d.ts.map +1 -0
  118. package/dist/src/telemetry/types.js +5 -0
  119. package/dist/src/{multiagent → telemetry}/types.js.map +1 -1
  120. package/dist/src/tools/tool.d.ts +1 -1
  121. package/dist/src/tools/tool.js +1 -1
  122. package/dist/src/tsconfig.tsbuildinfo +1 -1
  123. package/dist/src/types/agent.d.ts +3 -3
  124. package/dist/src/types/agent.d.ts.map +1 -1
  125. package/dist/src/types/messages.d.ts +4 -4
  126. package/dist/src/types/messages.js +1 -1
  127. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +2 -2
  128. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  129. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js +4 -4
  130. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +1 -1
  131. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +2 -2
  132. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  133. package/package.json +11 -2
  134. package/dist/src/agent/__tests__/state.test.d.ts +0 -2
  135. package/dist/src/agent/__tests__/state.test.d.ts.map +0 -1
  136. package/dist/src/agent/__tests__/state.test.js.map +0 -1
  137. package/dist/src/agent/state.d.ts.map +0 -1
  138. package/dist/src/agent/state.js.map +0 -1
  139. package/dist/src/multiagent/types.d.ts +0 -5
  140. package/dist/src/multiagent/types.d.ts.map +0 -1
  141. package/dist/src/multiagent/types.js +0 -2
@@ -1,12 +1,85 @@
1
- import { StreamEvent } from '../hooks/events.js';
1
+ import { HookableEvent } from '../hooks/events.js';
2
2
  import type { AgentStreamEvent } from '../types/agent.js';
3
- import type { NodeType } from './types.js';
3
+ import type { MultiAgentResult, MultiAgentState, NodeResult } from './state.js';
4
+ import type { MultiAgentBase } from './base.js';
5
+ import type { NodeType } from './nodes.js';
6
+ /**
7
+ * Event triggered when a multi-agent orchestrator has finished initialization.
8
+ */
9
+ export declare class MultiAgentInitializedEvent extends HookableEvent {
10
+ readonly type: "multiAgentInitializedEvent";
11
+ readonly orchestrator: MultiAgentBase;
12
+ constructor(data: {
13
+ orchestrator: MultiAgentBase;
14
+ });
15
+ }
16
+ /**
17
+ * Event triggered before orchestrator execution starts.
18
+ */
19
+ export declare class BeforeMultiAgentInvocationEvent extends HookableEvent {
20
+ readonly type: "beforeMultiAgentInvocationEvent";
21
+ readonly orchestrator: MultiAgentBase;
22
+ readonly state: MultiAgentState;
23
+ constructor(data: {
24
+ orchestrator: MultiAgentBase;
25
+ state: MultiAgentState;
26
+ });
27
+ }
28
+ /**
29
+ * Event triggered after orchestrator execution completes.
30
+ */
31
+ export declare class AfterMultiAgentInvocationEvent extends HookableEvent {
32
+ readonly type: "afterMultiAgentInvocationEvent";
33
+ readonly orchestrator: MultiAgentBase;
34
+ readonly state: MultiAgentState;
35
+ constructor(data: {
36
+ orchestrator: MultiAgentBase;
37
+ state: MultiAgentState;
38
+ });
39
+ _shouldReverseCallbacks(): boolean;
40
+ }
41
+ /**
42
+ * Event triggered before a node begins execution.
43
+ * Hook callbacks can set {@link cancel} to prevent the node from executing.
44
+ */
45
+ export declare class BeforeNodeCallEvent extends HookableEvent {
46
+ readonly type: "beforeNodeCallEvent";
47
+ readonly orchestrator: MultiAgentBase;
48
+ readonly state: MultiAgentState;
49
+ readonly nodeId: string;
50
+ /**
51
+ * Set by hook callbacks to cancel node execution.
52
+ * When set to `true`, a default cancel message is used.
53
+ * When set to a string, that string is used as the cancel message.
54
+ */
55
+ cancel: boolean | string;
56
+ constructor(data: {
57
+ orchestrator: MultiAgentBase;
58
+ state: MultiAgentState;
59
+ nodeId: string;
60
+ });
61
+ }
62
+ /**
63
+ * Event triggered after a node completes execution.
64
+ */
65
+ export declare class AfterNodeCallEvent extends HookableEvent {
66
+ readonly type: "afterNodeCallEvent";
67
+ readonly orchestrator: MultiAgentBase;
68
+ readonly state: MultiAgentState;
69
+ readonly nodeId: string;
70
+ constructor(data: {
71
+ orchestrator: MultiAgentBase;
72
+ state: MultiAgentState;
73
+ nodeId: string;
74
+ });
75
+ _shouldReverseCallbacks(): boolean;
76
+ }
4
77
  /**
5
78
  * Wraps an inner streaming event from a node with the node's identity.
6
79
  * Emitted during node execution to propagate agent-level or nested
7
80
  * multi-agent events up to the orchestration layer.
8
81
  */
9
- export declare class NodeStreamUpdateEvent extends StreamEvent {
82
+ export declare class NodeStreamUpdateEvent extends HookableEvent {
10
83
  readonly type: "nodeStreamUpdateEvent";
11
84
  readonly nodeId: string;
12
85
  readonly nodeType: NodeType;
@@ -17,8 +90,46 @@ export declare class NodeStreamUpdateEvent extends StreamEvent {
17
90
  event: AgentStreamEvent | Exclude<MultiAgentStreamEvent, NodeStreamUpdateEvent>;
18
91
  });
19
92
  }
93
+ /**
94
+ * Event triggered when a node finishes execution.
95
+ * Wraps the {@link NodeResult} for the completed node.
96
+ */
97
+ export declare class NodeResultEvent extends HookableEvent {
98
+ readonly type: "nodeResultEvent";
99
+ readonly nodeId: string;
100
+ readonly nodeType: NodeType;
101
+ readonly result: NodeResult;
102
+ constructor(data: {
103
+ nodeId: string;
104
+ nodeType: NodeType;
105
+ result: NodeResult;
106
+ });
107
+ }
108
+ /**
109
+ * Event triggered when execution transitions between nodes.
110
+ */
111
+ export declare class MultiAgentHandoffEvent extends HookableEvent {
112
+ readonly type: "multiAgentHandoffEvent";
113
+ readonly source: string;
114
+ readonly targets: string[];
115
+ constructor(data: {
116
+ source: string;
117
+ targets: string[];
118
+ });
119
+ }
120
+ /**
121
+ * Event triggered as the final event in the multi-agent stream.
122
+ * Wraps the {@link MultiAgentResult} containing the aggregate outcome.
123
+ */
124
+ export declare class MultiAgentResultEvent extends HookableEvent {
125
+ readonly type: "multiAgentResultEvent";
126
+ readonly result: MultiAgentResult;
127
+ constructor(data: {
128
+ result: MultiAgentResult;
129
+ });
130
+ }
20
131
  /**
21
132
  * Union of all multi-agent streaming events.
22
133
  */
23
- export type MultiAgentStreamEvent = NodeStreamUpdateEvent;
134
+ export type MultiAgentStreamEvent = BeforeMultiAgentInvocationEvent | AfterMultiAgentInvocationEvent | BeforeNodeCallEvent | AfterNodeCallEvent | NodeStreamUpdateEvent | NodeResultEvent | MultiAgentHandoffEvent | MultiAgentResultEvent;
24
135
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/multiagent/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAG,uBAAuB,CAAS;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAA;gBAE5E,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,QAAQ,CAAA;QAClB,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAA;KAChF;CAMF;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,CAAA"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/multiagent/events.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,90 @@
1
- import { StreamEvent } from '../hooks/events.js';
1
+ import { HookableEvent } from '../hooks/events.js';
2
+ /**
3
+ * Event triggered when a multi-agent orchestrator has finished initialization.
4
+ */
5
+ export class MultiAgentInitializedEvent extends HookableEvent {
6
+ type = 'multiAgentInitializedEvent';
7
+ orchestrator;
8
+ constructor(data) {
9
+ super();
10
+ this.orchestrator = data.orchestrator;
11
+ }
12
+ }
13
+ /**
14
+ * Event triggered before orchestrator execution starts.
15
+ */
16
+ export class BeforeMultiAgentInvocationEvent extends HookableEvent {
17
+ type = 'beforeMultiAgentInvocationEvent';
18
+ orchestrator;
19
+ state;
20
+ constructor(data) {
21
+ super();
22
+ this.orchestrator = data.orchestrator;
23
+ this.state = data.state;
24
+ }
25
+ }
26
+ /**
27
+ * Event triggered after orchestrator execution completes.
28
+ */
29
+ export class AfterMultiAgentInvocationEvent extends HookableEvent {
30
+ type = 'afterMultiAgentInvocationEvent';
31
+ orchestrator;
32
+ state;
33
+ constructor(data) {
34
+ super();
35
+ this.orchestrator = data.orchestrator;
36
+ this.state = data.state;
37
+ }
38
+ _shouldReverseCallbacks() {
39
+ return true;
40
+ }
41
+ }
42
+ /**
43
+ * Event triggered before a node begins execution.
44
+ * Hook callbacks can set {@link cancel} to prevent the node from executing.
45
+ */
46
+ export class BeforeNodeCallEvent extends HookableEvent {
47
+ type = 'beforeNodeCallEvent';
48
+ orchestrator;
49
+ state;
50
+ nodeId;
51
+ /**
52
+ * Set by hook callbacks to cancel node execution.
53
+ * When set to `true`, a default cancel message is used.
54
+ * When set to a string, that string is used as the cancel message.
55
+ */
56
+ cancel = false;
57
+ constructor(data) {
58
+ super();
59
+ this.orchestrator = data.orchestrator;
60
+ this.state = data.state;
61
+ this.nodeId = data.nodeId;
62
+ }
63
+ }
64
+ /**
65
+ * Event triggered after a node completes execution.
66
+ */
67
+ export class AfterNodeCallEvent extends HookableEvent {
68
+ type = 'afterNodeCallEvent';
69
+ orchestrator;
70
+ state;
71
+ nodeId;
72
+ constructor(data) {
73
+ super();
74
+ this.orchestrator = data.orchestrator;
75
+ this.state = data.state;
76
+ this.nodeId = data.nodeId;
77
+ }
78
+ _shouldReverseCallbacks() {
79
+ return true;
80
+ }
81
+ }
2
82
  /**
3
83
  * Wraps an inner streaming event from a node with the node's identity.
4
84
  * Emitted during node execution to propagate agent-level or nested
5
85
  * multi-agent events up to the orchestration layer.
6
86
  */
7
- export class NodeStreamUpdateEvent extends StreamEvent {
87
+ export class NodeStreamUpdateEvent extends HookableEvent {
8
88
  type = 'nodeStreamUpdateEvent';
9
89
  nodeId;
10
90
  nodeType;
@@ -16,4 +96,45 @@ export class NodeStreamUpdateEvent extends StreamEvent {
16
96
  this.event = data.event;
17
97
  }
18
98
  }
99
+ /**
100
+ * Event triggered when a node finishes execution.
101
+ * Wraps the {@link NodeResult} for the completed node.
102
+ */
103
+ export class NodeResultEvent extends HookableEvent {
104
+ type = 'nodeResultEvent';
105
+ nodeId;
106
+ nodeType;
107
+ result;
108
+ constructor(data) {
109
+ super();
110
+ this.nodeId = data.nodeId;
111
+ this.nodeType = data.nodeType;
112
+ this.result = data.result;
113
+ }
114
+ }
115
+ /**
116
+ * Event triggered when execution transitions between nodes.
117
+ */
118
+ export class MultiAgentHandoffEvent extends HookableEvent {
119
+ type = 'multiAgentHandoffEvent';
120
+ source;
121
+ targets;
122
+ constructor(data) {
123
+ super();
124
+ this.source = data.source;
125
+ this.targets = data.targets;
126
+ }
127
+ }
128
+ /**
129
+ * Event triggered as the final event in the multi-agent stream.
130
+ * Wraps the {@link MultiAgentResult} containing the aggregate outcome.
131
+ */
132
+ export class MultiAgentResultEvent extends HookableEvent {
133
+ type = 'multiAgentResultEvent';
134
+ result;
135
+ constructor(data) {
136
+ super();
137
+ this.result = data.result;
138
+ }
139
+ }
19
140
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/multiagent/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAIhD;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IAC3C,IAAI,GAAG,uBAAgC,CAAA;IACvC,MAAM,CAAQ;IACd,QAAQ,CAAU;IAClB,KAAK,CAA0E;IAExF,YAAY,IAIX;QACC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/multiagent/events.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Multi-agent orchestration module.
3
3
  */
4
- export { MultiAgentState, Status, NodeResult } from './state.js';
5
- export type { NodeResultUpdate } from './state.js';
6
- export { Node, AgentNode } from './nodes.js';
7
- export type { NodeConfig } from './nodes.js';
8
- export { NodeStreamUpdateEvent } from './events.js';
4
+ export { MultiAgentState, NodeState, Status, NodeResult, MultiAgentResult } from './state.js';
5
+ export type { NodeResultUpdate, ResultStatus } from './state.js';
6
+ export { Node, AgentNode, MultiAgentNode } from './nodes.js';
7
+ export type { NodeConfig, AgentNodeOptions, MultiAgentNodeOptions, NodeDefinition, NodeType } from './nodes.js';
8
+ export type { MultiAgentBase } from './base.js';
9
+ export { MultiAgentInitializedEvent, BeforeMultiAgentInvocationEvent, AfterMultiAgentInvocationEvent, BeforeNodeCallEvent, AfterNodeCallEvent, NodeStreamUpdateEvent, NodeResultEvent, MultiAgentHandoffEvent, MultiAgentResultEvent, } from './events.js';
9
10
  export type { MultiAgentStreamEvent } from './events.js';
10
- export type { NodeType } from './types.js';
11
+ export { Edge } from './edge.js';
12
+ export type { EdgeHandler, EdgeDefinition } from './edge.js';
11
13
  //# 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,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,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,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,7 +1,8 @@
1
1
  /**
2
2
  * Multi-agent orchestration module.
3
3
  */
4
- export { MultiAgentState, Status, NodeResult } from './state.js';
5
- export { Node, AgentNode } from './nodes.js';
6
- export { NodeStreamUpdateEvent } from './events.js';
4
+ export { MultiAgentState, NodeState, Status, NodeResult, MultiAgentResult } from './state.js';
5
+ export { Node, AgentNode, MultiAgentNode } from './nodes.js';
6
+ export { MultiAgentInitializedEvent, BeforeMultiAgentInvocationEvent, AfterMultiAgentInvocationEvent, BeforeNodeCallEvent, AfterNodeCallEvent, NodeStreamUpdateEvent, NodeResultEvent, MultiAgentHandoffEvent, MultiAgentResultEvent, } from './events.js';
7
+ export { Edge } from './edge.js';
7
8
  //# 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,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGhE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,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,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA"}
@@ -1,7 +1,12 @@
1
1
  import type { Agent, InvokeArgs } from '../agent/agent.js';
2
2
  import type { MultiAgentStreamEvent } from './events.js';
3
- import { MultiAgentState, NodeResult } from './state.js';
4
- import type { NodeResultUpdate } from './state.js';
3
+ import { NodeResult } from './state.js';
4
+ import type { MultiAgentState, NodeResultUpdate } from './state.js';
5
+ import type { MultiAgentBase } from './base.js';
6
+ /**
7
+ * Known node type identifiers with extensibility for custom nodes.
8
+ */
9
+ export type NodeType = 'agentNode' | 'multiAgentNode' | (string & {});
5
10
  /**
6
11
  * Configuration for a node execution.
7
12
  */
@@ -19,15 +24,16 @@ export interface NodeConfig {
19
24
  * delegates to {@link handle} for node-specific execution logic.
20
25
  */
21
26
  export declare abstract class Node {
27
+ readonly type: string;
22
28
  /** Unique identifier for this node within the orchestration. */
23
29
  readonly id: string;
24
- /** Optional per-node configuration. */
25
- readonly config?: NodeConfig;
30
+ /** Per-node configuration. */
31
+ readonly config: NodeConfig;
26
32
  /**
27
33
  * @param id - Unique identifier for this node within the orchestration
28
- * @param config - Optional per-node configuration
34
+ * @param config - Per-node configuration
29
35
  */
30
- constructor(id: string, config?: NodeConfig);
36
+ constructor(id: string, config: NodeConfig);
31
37
  /**
32
38
  * Execute the node. Handles duration measurement, error capture,
33
39
  * and delegates to handle() for node-specific logic.
@@ -46,6 +52,15 @@ export declare abstract class Node {
46
52
  */
47
53
  abstract handle(args: InvokeArgs, state: MultiAgentState): AsyncGenerator<MultiAgentStreamEvent, NodeResultUpdate, undefined>;
48
54
  }
55
+ /**
56
+ * Options for creating an {@link AgentNode}.
57
+ */
58
+ export interface AgentNodeOptions extends NodeConfig {
59
+ /** Unique node identifier. */
60
+ id: string;
61
+ /** The agent to wrap as a node. */
62
+ agent: Agent;
63
+ }
49
64
  /**
50
65
  * Node that wraps an Agent instance for multi-agent orchestration.
51
66
  *
@@ -55,21 +70,54 @@ export declare abstract class Node {
55
70
  export declare class AgentNode extends Node {
56
71
  readonly type: "agentNode";
57
72
  private readonly _agent;
58
- /**
59
- * @param id - Unique identifier for this node within the orchestration
60
- * @param agent - The Agent instance to wrap
61
- * @param config - Optional per-node configuration
62
- */
63
- constructor(id: string, agent: Agent, config?: NodeConfig);
73
+ constructor(options: AgentNodeOptions);
64
74
  get agent(): Agent;
65
75
  /**
66
76
  * Executes the wrapped agent, yielding each agent streaming event
67
- * wrapped in a {@link MultiAgentNodeStreamEvent}.
77
+ * wrapped in a {@link NodeStreamUpdateEvent}.
68
78
  *
69
79
  * @param args - Input to pass to the agent
70
- * @param state - The current multi-agent state (unused by AgentNode)
80
+ * @param state - The current multi-agent state
71
81
  * @returns Async generator yielding streaming events and returning the agent's content blocks
72
82
  */
83
+ handle(args: InvokeArgs, state: MultiAgentState): AsyncGenerator<MultiAgentStreamEvent, NodeResultUpdate, undefined>;
84
+ }
85
+ /**
86
+ * Options for creating a {@link MultiAgentNode}.
87
+ */
88
+ export interface MultiAgentNodeOptions extends NodeConfig {
89
+ /** The orchestrator to wrap as a node. */
90
+ orchestrator: MultiAgentBase;
91
+ }
92
+ /**
93
+ * Node that wraps a multi-agent orchestrator (e.g. Graph) for nested composition.
94
+ *
95
+ * Inner {@link NodeStreamUpdateEvent}s pass through to preserve the original
96
+ * node's identity. All other events are wrapped in a new {@link NodeStreamUpdateEvent}
97
+ * tagged with this node's identity.
98
+ */
99
+ export declare class MultiAgentNode extends Node {
100
+ readonly type: "multiAgentNode";
101
+ private readonly _orchestrator;
102
+ constructor(options: MultiAgentNodeOptions);
103
+ get orchestrator(): MultiAgentBase;
104
+ /**
105
+ * Executes the wrapped orchestrator. Inner {@link NodeStreamUpdateEvent}s
106
+ * pass through as-is; all other events are wrapped in a new
107
+ * {@link NodeStreamUpdateEvent} tagged with this node's identity.
108
+ *
109
+ * @param args - Input to pass to the orchestrator
110
+ * @param _state - The current multi-agent state (unused)
111
+ * @returns Async generator yielding streaming events and returning the orchestrator's content
112
+ */
73
113
  handle(args: InvokeArgs, _state: MultiAgentState): AsyncGenerator<MultiAgentStreamEvent, NodeResultUpdate, undefined>;
74
114
  }
115
+ /**
116
+ * A node definition accepted by orchestration constructors.
117
+ */
118
+ export type NodeDefinition = Node | (AgentNodeOptions & {
119
+ type: 'agent';
120
+ }) | (MultiAgentNodeOptions & {
121
+ type: 'multiAgent';
122
+ });
75
123
  //# sourceMappingURL=nodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAU,MAAM,YAAY,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;GAMG;AACH,8BAAsB,IAAI;IACxB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,uCAAuC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAE5B;;;OAGG;gBACS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;IAK3C;;;;;;;OAOG;IACI,MAAM,CACX,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,eAAe,GACrB,cAAc,CAAC,qBAAqB,EAAE,UAAU,EAAE,SAAS,CAAC;IAsB/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;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,IAAI;IACjC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU;IAKzD,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED;;;;;;;OAOG;IACI,MAAM,CACX,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC;CActE"}
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;AAE/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,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;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;IA0B/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,gBAAiB,SAAQ,UAAU;IAClD,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,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;IAMrC,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;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,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,6 @@
1
1
  import { takeSnapshot, loadSnapshot } from '../agent/snapshot.js';
2
- import { NodeStreamUpdateEvent } from './events.js';
3
- import { MultiAgentState, NodeResult, Status } from './state.js';
2
+ import { NodeStreamUpdateEvent, NodeResultEvent } from './events.js';
3
+ import { NodeResult, Status } from './state.js';
4
4
  /**
5
5
  * Abstract base class for all multi-agent orchestration nodes.
6
6
  *
@@ -9,18 +9,18 @@ import { MultiAgentState, NodeResult, Status } from './state.js';
9
9
  * delegates to {@link handle} for node-specific execution logic.
10
10
  */
11
11
  export class Node {
12
+ type = 'node';
12
13
  /** Unique identifier for this node within the orchestration. */
13
14
  id;
14
- /** Optional per-node configuration. */
15
+ /** Per-node configuration. */
15
16
  config;
16
17
  /**
17
18
  * @param id - Unique identifier for this node within the orchestration
18
- * @param config - Optional per-node configuration
19
+ * @param config - Per-node configuration
19
20
  */
20
21
  constructor(id, config) {
21
22
  this.id = id;
22
- if (config)
23
- this.config = config;
23
+ this.config = config;
24
24
  }
25
25
  /**
26
26
  * Execute the node. Handles duration measurement, error capture,
@@ -32,9 +32,10 @@ export class Node {
32
32
  */
33
33
  async *stream(args, state) {
34
34
  const startTime = Date.now();
35
+ let result;
35
36
  try {
36
37
  const update = yield* this.handle(args, state);
37
- return new NodeResult({
38
+ result = new NodeResult({
38
39
  nodeId: this.id,
39
40
  status: Status.COMPLETED,
40
41
  duration: Date.now() - startTime,
@@ -43,14 +44,15 @@ export class Node {
43
44
  });
44
45
  }
45
46
  catch (error) {
46
- return new NodeResult({
47
+ result = new NodeResult({
47
48
  nodeId: this.id,
48
49
  status: Status.FAILED,
49
50
  duration: Date.now() - startTime,
50
51
  error: error instanceof Error ? error : new Error(String(error)),
51
- content: [],
52
52
  });
53
53
  }
54
+ yield new NodeResultEvent({ nodeId: this.id, nodeType: this.type, result });
55
+ return result;
54
56
  }
55
57
  }
56
58
  /**
@@ -62,12 +64,8 @@ export class Node {
62
64
  export class AgentNode extends Node {
63
65
  type = 'agentNode';
64
66
  _agent;
65
- /**
66
- * @param id - Unique identifier for this node within the orchestration
67
- * @param agent - The Agent instance to wrap
68
- * @param config - Optional per-node configuration
69
- */
70
- constructor(id, agent, config) {
67
+ constructor(options) {
68
+ const { id, agent, ...config } = options;
71
69
  super(id, config);
72
70
  this._agent = agent;
73
71
  }
@@ -76,26 +74,75 @@ export class AgentNode extends Node {
76
74
  }
77
75
  /**
78
76
  * Executes the wrapped agent, yielding each agent streaming event
79
- * wrapped in a {@link MultiAgentNodeStreamEvent}.
77
+ * wrapped in a {@link NodeStreamUpdateEvent}.
80
78
  *
81
79
  * @param args - Input to pass to the agent
82
- * @param state - The current multi-agent state (unused by AgentNode)
80
+ * @param state - The current multi-agent state
83
81
  * @returns Async generator yielding streaming events and returning the agent's content blocks
84
82
  */
85
- async *handle(args, _state) {
83
+ async *handle(args, state) {
86
84
  const snapshot = takeSnapshot(this._agent, { include: ['messages', 'state'] });
87
85
  try {
88
- const gen = this._agent.stream(args);
86
+ const options = {
87
+ ...(state.structuredOutputSchema && { structuredOutputSchema: state.structuredOutputSchema }),
88
+ };
89
+ const gen = this._agent.stream(args, options);
89
90
  let next = await gen.next();
90
91
  while (!next.done) {
91
92
  yield new NodeStreamUpdateEvent({ nodeId: this.id, nodeType: this.type, event: next.value });
92
93
  next = await gen.next();
93
94
  }
94
- return { content: next.value.lastMessage.content };
95
+ return {
96
+ content: next.value.lastMessage.content,
97
+ ...('structuredOutput' in next.value && { structuredOutput: next.value.structuredOutput }),
98
+ };
95
99
  }
96
100
  finally {
97
101
  loadSnapshot(this._agent, snapshot);
98
102
  }
99
103
  }
100
104
  }
105
+ /**
106
+ * Node that wraps a multi-agent orchestrator (e.g. Graph) for nested composition.
107
+ *
108
+ * Inner {@link NodeStreamUpdateEvent}s pass through to preserve the original
109
+ * node's identity. All other events are wrapped in a new {@link NodeStreamUpdateEvent}
110
+ * tagged with this node's identity.
111
+ */
112
+ export class MultiAgentNode extends Node {
113
+ type = 'multiAgentNode';
114
+ _orchestrator;
115
+ constructor(options) {
116
+ const { orchestrator, ...config } = options;
117
+ super(orchestrator.id, config);
118
+ this._orchestrator = orchestrator;
119
+ }
120
+ get orchestrator() {
121
+ return this._orchestrator;
122
+ }
123
+ /**
124
+ * Executes the wrapped orchestrator. Inner {@link NodeStreamUpdateEvent}s
125
+ * pass through as-is; all other events are wrapped in a new
126
+ * {@link NodeStreamUpdateEvent} tagged with this node's identity.
127
+ *
128
+ * @param args - Input to pass to the orchestrator
129
+ * @param _state - The current multi-agent state (unused)
130
+ * @returns Async generator yielding streaming events and returning the orchestrator's content
131
+ */
132
+ async *handle(args, _state) {
133
+ const gen = this._orchestrator.stream(args);
134
+ let next = await gen.next();
135
+ while (!next.done) {
136
+ const event = next.value;
137
+ if (event.type === 'nodeStreamUpdateEvent') {
138
+ yield event;
139
+ }
140
+ else {
141
+ yield new NodeStreamUpdateEvent({ nodeId: this.id, nodeType: this.type, event });
142
+ }
143
+ next = await gen.next();
144
+ }
145
+ return { content: next.value.content };
146
+ }
147
+ }
101
148
  //# sourceMappingURL=nodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"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"}