@strands-agents/sdk 0.3.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 (302) hide show
  1. package/README.md +43 -0
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +10 -1
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +13 -2
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-hook-provider.d.ts +3 -7
  7. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/mock-hook-provider.js +3 -9
  9. package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -1
  10. package/dist/src/__fixtures__/mock-message-model.d.ts +8 -2
  11. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  12. package/dist/src/__fixtures__/mock-message-model.js +1 -0
  13. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  14. package/dist/src/__fixtures__/mock-span.d.ts +78 -0
  15. package/dist/src/__fixtures__/mock-span.d.ts.map +1 -0
  16. package/dist/src/__fixtures__/mock-span.js +93 -0
  17. package/dist/src/__fixtures__/mock-span.js.map +1 -0
  18. package/dist/src/__fixtures__/mock-storage-provider.d.ts +37 -0
  19. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -0
  20. package/dist/src/__fixtures__/mock-storage-provider.js +105 -0
  21. package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -0
  22. package/dist/src/__fixtures__/slim-types.d.ts +50 -0
  23. package/dist/src/__fixtures__/slim-types.d.ts.map +1 -0
  24. package/dist/src/__fixtures__/slim-types.js +6 -0
  25. package/dist/src/__fixtures__/slim-types.js.map +1 -0
  26. package/dist/src/__fixtures__/tool-helpers.d.ts +10 -5
  27. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  28. package/dist/src/__fixtures__/tool-helpers.js +5 -5
  29. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  30. package/dist/src/__tests__/app-state.test.d.ts +2 -0
  31. package/dist/src/__tests__/app-state.test.d.ts.map +1 -0
  32. package/dist/src/{agent/__tests__/state.test.js → __tests__/app-state.test.js} +62 -43
  33. package/dist/src/__tests__/app-state.test.js.map +1 -0
  34. package/dist/src/__tests__/mcp.test.js +96 -15
  35. package/dist/src/__tests__/mcp.test.js.map +1 -1
  36. package/dist/src/agent/__tests__/agent.hook.test.js +18 -18
  37. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  38. package/dist/src/agent/__tests__/agent.test.js +234 -8
  39. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  40. package/dist/src/agent/__tests__/agent.tracer.test.d.ts +2 -0
  41. package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +1 -0
  42. package/dist/src/agent/__tests__/agent.tracer.test.js +470 -0
  43. package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -0
  44. package/dist/src/agent/__tests__/printer.test.js +5 -9
  45. package/dist/src/agent/__tests__/printer.test.js.map +1 -1
  46. package/dist/src/agent/__tests__/snapshot.test.d.ts +2 -0
  47. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +1 -0
  48. package/dist/src/agent/__tests__/snapshot.test.js +249 -0
  49. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -0
  50. package/dist/src/agent/agent.d.ts +78 -10
  51. package/dist/src/agent/agent.d.ts.map +1 -1
  52. package/dist/src/agent/agent.js +252 -55
  53. package/dist/src/agent/agent.js.map +1 -1
  54. package/dist/src/agent/printer.d.ts +4 -0
  55. package/dist/src/agent/printer.d.ts.map +1 -1
  56. package/dist/src/agent/printer.js +18 -6
  57. package/dist/src/agent/printer.js.map +1 -1
  58. package/dist/src/agent/snapshot.d.ts +132 -0
  59. package/dist/src/agent/snapshot.d.ts.map +1 -0
  60. package/dist/src/agent/snapshot.js +151 -0
  61. package/dist/src/agent/snapshot.js.map +1 -0
  62. package/dist/src/{agent/state.d.ts → app-state.d.ts} +19 -6
  63. package/dist/src/app-state.d.ts.map +1 -0
  64. package/dist/src/{agent/state.js → app-state.js} +27 -6
  65. package/dist/src/app-state.js.map +1 -0
  66. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +1 -1
  67. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +1 -1
  68. package/dist/src/errors.d.ts +15 -0
  69. package/dist/src/errors.d.ts.map +1 -1
  70. package/dist/src/errors.js +18 -0
  71. package/dist/src/errors.js.map +1 -1
  72. package/dist/src/hooks/__tests__/events.test.js +102 -21
  73. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  74. package/dist/src/hooks/events.d.ts +156 -22
  75. package/dist/src/hooks/events.d.ts.map +1 -1
  76. package/dist/src/hooks/events.js +158 -18
  77. package/dist/src/hooks/events.js.map +1 -1
  78. package/dist/src/hooks/index.d.ts +12 -4
  79. package/dist/src/hooks/index.d.ts.map +1 -1
  80. package/dist/src/hooks/index.js +11 -3
  81. package/dist/src/hooks/index.js.map +1 -1
  82. package/dist/src/hooks/registry.d.ts +5 -5
  83. package/dist/src/hooks/registry.d.ts.map +1 -1
  84. package/dist/src/hooks/registry.js.map +1 -1
  85. package/dist/src/hooks/types.d.ts +5 -5
  86. package/dist/src/hooks/types.d.ts.map +1 -1
  87. package/dist/src/index.d.ts +6 -3
  88. package/dist/src/index.d.ts.map +1 -1
  89. package/dist/src/index.js +8 -3
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/mcp.d.ts +3 -0
  92. package/dist/src/mcp.d.ts.map +1 -1
  93. package/dist/src/mcp.js +38 -1
  94. package/dist/src/mcp.js.map +1 -1
  95. package/dist/src/models/__tests__/anthropic.test.js +31 -42
  96. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  97. package/dist/src/models/__tests__/bedrock.test.js +70 -107
  98. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  99. package/dist/src/models/__tests__/gemini.test.js +18 -18
  100. package/dist/src/models/__tests__/gemini.test.js.map +1 -1
  101. package/dist/src/models/__tests__/model.test.js +21 -13
  102. package/dist/src/models/__tests__/model.test.js.map +1 -1
  103. package/dist/src/models/__tests__/openai.test.js +73 -83
  104. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  105. package/dist/src/models/model.d.ts +4 -0
  106. package/dist/src/models/model.d.ts.map +1 -1
  107. package/dist/src/models/model.js +6 -0
  108. package/dist/src/models/model.js.map +1 -1
  109. package/dist/src/models/streaming.d.ts +9 -1
  110. package/dist/src/models/streaming.d.ts.map +1 -1
  111. package/dist/src/models/streaming.js +17 -0
  112. package/dist/src/models/streaming.js.map +1 -1
  113. package/dist/src/multiagent/__tests__/events.test.d.ts +2 -0
  114. package/dist/src/multiagent/__tests__/events.test.d.ts.map +1 -0
  115. package/dist/src/multiagent/__tests__/events.test.js +189 -0
  116. package/dist/src/multiagent/__tests__/events.test.js.map +1 -0
  117. package/dist/src/multiagent/__tests__/nodes.test.d.ts +2 -0
  118. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +1 -0
  119. package/dist/src/multiagent/__tests__/nodes.test.js +194 -0
  120. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -0
  121. package/dist/src/multiagent/__tests__/queue.test.d.ts +2 -0
  122. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +1 -0
  123. package/dist/src/multiagent/__tests__/queue.test.js +96 -0
  124. package/dist/src/multiagent/__tests__/queue.test.js.map +1 -0
  125. package/dist/src/multiagent/base.d.ts +25 -0
  126. package/dist/src/multiagent/base.d.ts.map +1 -0
  127. package/dist/src/multiagent/base.js +2 -0
  128. package/dist/src/multiagent/base.js.map +1 -0
  129. package/dist/src/multiagent/edge.d.ts +29 -0
  130. package/dist/src/multiagent/edge.d.ts.map +1 -0
  131. package/dist/src/multiagent/edge.js +15 -0
  132. package/dist/src/multiagent/edge.js.map +1 -0
  133. package/dist/src/multiagent/events.d.ts +135 -0
  134. package/dist/src/multiagent/events.d.ts.map +1 -0
  135. package/dist/src/multiagent/events.js +140 -0
  136. package/dist/src/multiagent/events.js.map +1 -0
  137. package/dist/src/multiagent/index.d.ts +13 -0
  138. package/dist/src/multiagent/index.d.ts.map +1 -0
  139. package/dist/src/multiagent/index.js +8 -0
  140. package/dist/src/multiagent/index.js.map +1 -0
  141. package/dist/src/multiagent/nodes.d.ts +123 -0
  142. package/dist/src/multiagent/nodes.d.ts.map +1 -0
  143. package/dist/src/multiagent/nodes.js +148 -0
  144. package/dist/src/multiagent/nodes.js.map +1 -0
  145. package/dist/src/multiagent/queue.d.ts +67 -0
  146. package/dist/src/multiagent/queue.d.ts.map +1 -0
  147. package/dist/src/multiagent/queue.js +59 -0
  148. package/dist/src/multiagent/queue.js.map +1 -0
  149. package/dist/src/multiagent/state.d.ts +122 -0
  150. package/dist/src/multiagent/state.d.ts.map +1 -0
  151. package/dist/src/multiagent/state.js +132 -0
  152. package/dist/src/multiagent/state.js.map +1 -0
  153. package/dist/src/registry/tool-registry.d.ts +2 -1
  154. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  155. package/dist/src/registry/tool-registry.js +4 -2
  156. package/dist/src/registry/tool-registry.js.map +1 -1
  157. package/dist/src/session/__tests__/file-storage.test.node.d.ts +2 -0
  158. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +1 -0
  159. package/dist/src/session/__tests__/file-storage.test.node.js +218 -0
  160. package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -0
  161. package/dist/src/session/__tests__/s3-storage.test.node.d.ts +2 -0
  162. package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +1 -0
  163. package/dist/src/session/__tests__/s3-storage.test.node.js +375 -0
  164. package/dist/src/session/__tests__/s3-storage.test.node.js.map +1 -0
  165. package/dist/src/session/__tests__/validation.test.d.ts +2 -0
  166. package/dist/src/session/__tests__/validation.test.d.ts.map +1 -0
  167. package/dist/src/session/__tests__/validation.test.js +20 -0
  168. package/dist/src/session/__tests__/validation.test.js.map +1 -0
  169. package/dist/src/session/file-storage.d.ts +79 -0
  170. package/dist/src/session/file-storage.d.ts.map +1 -0
  171. package/dist/src/session/file-storage.js +144 -0
  172. package/dist/src/session/file-storage.js.map +1 -0
  173. package/dist/src/session/index.d.ts +19 -0
  174. package/dist/src/session/index.d.ts.map +1 -0
  175. package/dist/src/session/index.js +18 -0
  176. package/dist/src/session/index.js.map +1 -0
  177. package/dist/src/session/s3-storage.d.ts +93 -0
  178. package/dist/src/session/s3-storage.d.ts.map +1 -0
  179. package/dist/src/session/s3-storage.js +150 -0
  180. package/dist/src/session/s3-storage.js.map +1 -0
  181. package/dist/src/session/storage.d.ts +91 -0
  182. package/dist/src/session/storage.d.ts.map +1 -0
  183. package/dist/src/session/storage.js +2 -0
  184. package/dist/src/session/storage.js.map +1 -0
  185. package/dist/src/session/types.d.ts +49 -0
  186. package/dist/src/session/types.d.ts.map +1 -0
  187. package/dist/src/session/types.js +2 -0
  188. package/dist/src/session/types.js.map +1 -0
  189. package/dist/src/session/validation.d.ts +10 -0
  190. package/dist/src/session/validation.d.ts.map +1 -0
  191. package/dist/src/session/validation.js +16 -0
  192. package/dist/src/session/validation.js.map +1 -0
  193. package/dist/src/structured-output/__tests__/context.test.d.ts +2 -0
  194. package/dist/src/structured-output/__tests__/context.test.d.ts.map +1 -0
  195. package/dist/src/structured-output/__tests__/context.test.js +201 -0
  196. package/dist/src/structured-output/__tests__/context.test.js.map +1 -0
  197. package/dist/src/structured-output/__tests__/exceptions.test.d.ts +2 -0
  198. package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +1 -0
  199. package/dist/src/structured-output/__tests__/exceptions.test.js +103 -0
  200. package/dist/src/structured-output/__tests__/exceptions.test.js.map +1 -0
  201. package/dist/src/structured-output/__tests__/tool.test.d.ts +2 -0
  202. package/dist/src/structured-output/__tests__/tool.test.d.ts.map +1 -0
  203. package/dist/src/structured-output/__tests__/tool.test.js +256 -0
  204. package/dist/src/structured-output/__tests__/tool.test.js.map +1 -0
  205. package/dist/src/structured-output/__tests__/utils.test.d.ts +2 -0
  206. package/dist/src/structured-output/__tests__/utils.test.d.ts.map +1 -0
  207. package/dist/src/structured-output/__tests__/utils.test.js +183 -0
  208. package/dist/src/structured-output/__tests__/utils.test.js.map +1 -0
  209. package/dist/src/structured-output/context.d.ts +91 -0
  210. package/dist/src/structured-output/context.d.ts.map +1 -0
  211. package/dist/src/structured-output/context.js +112 -0
  212. package/dist/src/structured-output/context.js.map +1 -0
  213. package/dist/src/structured-output/exceptions.d.ts +18 -0
  214. package/dist/src/structured-output/exceptions.d.ts.map +1 -0
  215. package/dist/src/structured-output/exceptions.js +28 -0
  216. package/dist/src/structured-output/exceptions.js.map +1 -0
  217. package/dist/src/structured-output/tool.d.ts +33 -0
  218. package/dist/src/structured-output/tool.d.ts.map +1 -0
  219. package/dist/src/structured-output/tool.js +73 -0
  220. package/dist/src/structured-output/tool.js.map +1 -0
  221. package/dist/src/structured-output/utils.d.ts +23 -0
  222. package/dist/src/structured-output/utils.d.ts.map +1 -0
  223. package/dist/src/structured-output/utils.js +104 -0
  224. package/dist/src/structured-output/utils.js.map +1 -0
  225. package/dist/src/telemetry/__tests__/config.test.node.d.ts +2 -0
  226. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +1 -0
  227. package/dist/src/telemetry/__tests__/config.test.node.js +129 -0
  228. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -0
  229. package/dist/src/telemetry/__tests__/json.test.d.ts +2 -0
  230. package/dist/src/telemetry/__tests__/json.test.d.ts.map +1 -0
  231. package/dist/src/telemetry/__tests__/json.test.js +89 -0
  232. package/dist/src/telemetry/__tests__/json.test.js.map +1 -0
  233. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +2 -0
  234. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +1 -0
  235. package/dist/src/telemetry/__tests__/tracer.test.node.js +611 -0
  236. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -0
  237. package/dist/src/telemetry/config.d.ts +61 -0
  238. package/dist/src/telemetry/config.d.ts.map +1 -0
  239. package/dist/src/telemetry/config.js +101 -0
  240. package/dist/src/telemetry/config.js.map +1 -0
  241. package/dist/src/telemetry/index.d.ts +34 -0
  242. package/dist/src/telemetry/index.d.ts.map +1 -0
  243. package/dist/src/telemetry/index.js +33 -0
  244. package/dist/src/telemetry/index.js.map +1 -0
  245. package/dist/src/telemetry/json.d.ts +11 -0
  246. package/dist/src/telemetry/json.d.ts.map +1 -0
  247. package/dist/src/telemetry/json.js +25 -0
  248. package/dist/src/telemetry/json.js.map +1 -0
  249. package/dist/src/telemetry/tracer.d.ts +219 -0
  250. package/dist/src/telemetry/tracer.d.ts.map +1 -0
  251. package/dist/src/telemetry/tracer.js +610 -0
  252. package/dist/src/telemetry/tracer.js.map +1 -0
  253. package/dist/src/telemetry/types.d.ts +101 -0
  254. package/dist/src/telemetry/types.d.ts.map +1 -0
  255. package/dist/src/telemetry/types.js +5 -0
  256. package/dist/src/telemetry/types.js.map +1 -0
  257. package/dist/src/tools/tool.d.ts +1 -1
  258. package/dist/src/tools/tool.js +1 -1
  259. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  260. package/dist/src/tools/zod-tool.js +2 -5
  261. package/dist/src/tools/zod-tool.js.map +1 -1
  262. package/dist/src/tsconfig.tsbuildinfo +1 -1
  263. package/dist/src/types/__tests__/media.test.js +216 -1
  264. package/dist/src/types/__tests__/media.test.js.map +1 -1
  265. package/dist/src/types/__tests__/messages.test.js +193 -4
  266. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  267. package/dist/src/types/agent.d.ts +16 -10
  268. package/dist/src/types/agent.d.ts.map +1 -1
  269. package/dist/src/types/agent.js +8 -1
  270. package/dist/src/types/agent.js.map +1 -1
  271. package/dist/src/types/json.d.ts +61 -0
  272. package/dist/src/types/json.d.ts.map +1 -1
  273. package/dist/src/types/json.js +24 -0
  274. package/dist/src/types/json.js.map +1 -1
  275. package/dist/src/types/media.d.ts +84 -4
  276. package/dist/src/types/media.d.ts.map +1 -1
  277. package/dist/src/types/media.js +194 -0
  278. package/dist/src/types/media.js.map +1 -1
  279. package/dist/src/types/messages.d.ts +152 -13
  280. package/dist/src/types/messages.d.ts.map +1 -1
  281. package/dist/src/types/messages.js +235 -8
  282. package/dist/src/types/messages.js.map +1 -1
  283. package/dist/src/types/serializable.d.ts +31 -0
  284. package/dist/src/types/serializable.d.ts.map +1 -0
  285. package/dist/src/types/serializable.js +19 -0
  286. package/dist/src/types/serializable.js.map +1 -0
  287. package/dist/src/utils/zod.d.ts +11 -0
  288. package/dist/src/utils/zod.d.ts.map +1 -0
  289. package/dist/src/utils/zod.js +14 -0
  290. package/dist/src/utils/zod.js.map +1 -0
  291. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +2 -2
  292. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  293. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js +4 -4
  294. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +1 -1
  295. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +2 -2
  296. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  297. package/package.json +17 -3
  298. package/dist/src/agent/__tests__/state.test.d.ts +0 -2
  299. package/dist/src/agent/__tests__/state.test.d.ts.map +0 -1
  300. package/dist/src/agent/__tests__/state.test.js.map +0 -1
  301. package/dist/src/agent/state.d.ts.map +0 -1
  302. package/dist/src/agent/state.js.map +0 -1
@@ -0,0 +1,140 @@
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
+ }
82
+ /**
83
+ * Wraps an inner streaming event from a node with the node's identity.
84
+ * Emitted during node execution to propagate agent-level or nested
85
+ * multi-agent events up to the orchestration layer.
86
+ */
87
+ export class NodeStreamUpdateEvent extends HookableEvent {
88
+ type = 'nodeStreamUpdateEvent';
89
+ nodeId;
90
+ nodeType;
91
+ event;
92
+ constructor(data) {
93
+ super();
94
+ this.nodeId = data.nodeId;
95
+ this.nodeType = data.nodeType;
96
+ this.event = data.event;
97
+ }
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
+ }
140
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/multiagent/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Multi-agent orchestration module.
3
+ */
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';
10
+ export type { MultiAgentStreamEvent } from './events.js';
11
+ export { Edge } from './edge.js';
12
+ export type { EdgeHandler, EdgeDefinition } from './edge.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Multi-agent orchestration module.
3
+ */
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';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,123 @@
1
+ import type { Agent, InvokeArgs } from '../agent/agent.js';
2
+ import type { MultiAgentStreamEvent } from './events.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 & {});
10
+ /**
11
+ * Configuration for a node execution.
12
+ */
13
+ export interface NodeConfig {
14
+ /**
15
+ * Maximum execution time for this node in milliseconds.
16
+ */
17
+ timeout?: number;
18
+ }
19
+ /**
20
+ * Abstract base class for all multi-agent orchestration nodes.
21
+ *
22
+ * Uses the template method pattern: {@link stream} handles orchestration
23
+ * boilerplate (duration measurement, status tracking, error capture) and
24
+ * delegates to {@link handle} for node-specific execution logic.
25
+ */
26
+ export declare abstract class Node {
27
+ readonly type: string;
28
+ /** Unique identifier for this node within the orchestration. */
29
+ readonly id: string;
30
+ /** Per-node configuration. */
31
+ readonly config: NodeConfig;
32
+ /**
33
+ * @param id - Unique identifier for this node within the orchestration
34
+ * @param config - Per-node configuration
35
+ */
36
+ constructor(id: string, config: NodeConfig);
37
+ /**
38
+ * Execute the node. Handles duration measurement, error capture,
39
+ * and delegates to handle() for node-specific logic.
40
+ *
41
+ * @param args - Input to pass to the node (string, content blocks, or messages)
42
+ * @param state - The current multi-agent state
43
+ * @returns Async generator yielding streaming events and returning a NodeResult
44
+ */
45
+ stream(args: InvokeArgs, state: MultiAgentState): AsyncGenerator<MultiAgentStreamEvent, NodeResult, undefined>;
46
+ /**
47
+ * Node-specific execution logic implemented by subclasses.
48
+ *
49
+ * @param args - Input to process (string, content blocks, or messages)
50
+ * @param state - The current multi-agent state
51
+ * @returns Async generator yielding streaming events and returning a partial result
52
+ */
53
+ abstract handle(args: InvokeArgs, state: MultiAgentState): AsyncGenerator<MultiAgentStreamEvent, NodeResultUpdate, undefined>;
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
+ }
64
+ /**
65
+ * Node that wraps an Agent instance for multi-agent orchestration.
66
+ *
67
+ * Each execution is isolated — the wrapped agent's internal state
68
+ * is unchanged after the node completes.
69
+ */
70
+ export declare class AgentNode extends Node {
71
+ readonly type: "agentNode";
72
+ private readonly _agent;
73
+ constructor(options: AgentNodeOptions);
74
+ get agent(): Agent;
75
+ /**
76
+ * Executes the wrapped agent, yielding each agent streaming event
77
+ * wrapped in a {@link NodeStreamUpdateEvent}.
78
+ *
79
+ * @param args - Input to pass to the agent
80
+ * @param state - The current multi-agent state
81
+ * @returns Async generator yielding streaming events and returning the agent's content blocks
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
+ */
113
+ handle(args: InvokeArgs, _state: MultiAgentState): AsyncGenerator<MultiAgentStreamEvent, NodeResultUpdate, undefined>;
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
+ });
123
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +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;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"}
@@ -0,0 +1,148 @@
1
+ import { takeSnapshot, loadSnapshot } from '../agent/snapshot.js';
2
+ import { NodeStreamUpdateEvent, NodeResultEvent } from './events.js';
3
+ import { NodeResult, Status } from './state.js';
4
+ /**
5
+ * Abstract base class for all multi-agent orchestration nodes.
6
+ *
7
+ * Uses the template method pattern: {@link stream} handles orchestration
8
+ * boilerplate (duration measurement, status tracking, error capture) and
9
+ * delegates to {@link handle} for node-specific execution logic.
10
+ */
11
+ export class Node {
12
+ type = 'node';
13
+ /** Unique identifier for this node within the orchestration. */
14
+ id;
15
+ /** Per-node configuration. */
16
+ config;
17
+ /**
18
+ * @param id - Unique identifier for this node within the orchestration
19
+ * @param config - Per-node configuration
20
+ */
21
+ constructor(id, config) {
22
+ this.id = id;
23
+ this.config = config;
24
+ }
25
+ /**
26
+ * Execute the node. Handles duration measurement, error capture,
27
+ * and delegates to handle() for node-specific logic.
28
+ *
29
+ * @param args - Input to pass to the node (string, content blocks, or messages)
30
+ * @param state - The current multi-agent state
31
+ * @returns Async generator yielding streaming events and returning a NodeResult
32
+ */
33
+ async *stream(args, state) {
34
+ const startTime = Date.now();
35
+ let result;
36
+ try {
37
+ const update = yield* this.handle(args, state);
38
+ result = new NodeResult({
39
+ nodeId: this.id,
40
+ status: Status.COMPLETED,
41
+ duration: Date.now() - startTime,
42
+ content: [],
43
+ ...update,
44
+ });
45
+ }
46
+ catch (error) {
47
+ result = new NodeResult({
48
+ nodeId: this.id,
49
+ status: Status.FAILED,
50
+ duration: Date.now() - startTime,
51
+ error: error instanceof Error ? error : new Error(String(error)),
52
+ });
53
+ }
54
+ yield new NodeResultEvent({ nodeId: this.id, nodeType: this.type, result });
55
+ return result;
56
+ }
57
+ }
58
+ /**
59
+ * Node that wraps an Agent instance for multi-agent orchestration.
60
+ *
61
+ * Each execution is isolated — the wrapped agent's internal state
62
+ * is unchanged after the node completes.
63
+ */
64
+ export class AgentNode extends Node {
65
+ type = 'agentNode';
66
+ _agent;
67
+ constructor(options) {
68
+ const { id, agent, ...config } = options;
69
+ super(id, config);
70
+ this._agent = agent;
71
+ }
72
+ get agent() {
73
+ return this._agent;
74
+ }
75
+ /**
76
+ * Executes the wrapped agent, yielding each agent streaming event
77
+ * wrapped in a {@link NodeStreamUpdateEvent}.
78
+ *
79
+ * @param args - Input to pass to the agent
80
+ * @param state - The current multi-agent state
81
+ * @returns Async generator yielding streaming events and returning the agent's content blocks
82
+ */
83
+ async *handle(args, state) {
84
+ const snapshot = takeSnapshot(this._agent, { include: ['messages', 'state'] });
85
+ try {
86
+ const options = {
87
+ ...(state.structuredOutputSchema && { structuredOutputSchema: state.structuredOutputSchema }),
88
+ };
89
+ const gen = this._agent.stream(args, options);
90
+ let next = await gen.next();
91
+ while (!next.done) {
92
+ yield new NodeStreamUpdateEvent({ nodeId: this.id, nodeType: this.type, event: next.value });
93
+ next = await gen.next();
94
+ }
95
+ return {
96
+ content: next.value.lastMessage.content,
97
+ ...('structuredOutput' in next.value && { structuredOutput: next.value.structuredOutput }),
98
+ };
99
+ }
100
+ finally {
101
+ loadSnapshot(this._agent, snapshot);
102
+ }
103
+ }
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
+ }
148
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Node } from './nodes.js';
2
+ import type { MultiAgentStreamEvent } from './events.js';
3
+ import type { NodeResult } from './state.js';
4
+ /**
5
+ * Data produced by a running node: a streaming event, a completion signal, or an error.
6
+ */
7
+ export type QueueData = {
8
+ type: 'event';
9
+ node: Node;
10
+ event: MultiAgentStreamEvent;
11
+ } | {
12
+ type: 'result';
13
+ node: Node;
14
+ result: NodeResult;
15
+ } | {
16
+ type: 'error';
17
+ node: Node;
18
+ error: Error;
19
+ };
20
+ /**
21
+ * Queue data paired with an acknowledgement callback.
22
+ * The consumer must call {@link ack} after fully processing the data
23
+ * to unblock any producer waiting via {@link Queue.send}.
24
+ */
25
+ export interface QueueEntry {
26
+ data: QueueData;
27
+ ack: () => void;
28
+ }
29
+ /**
30
+ * Async queue with promise-based notification and optional back-pressure.
31
+ *
32
+ * Producers use {@link push} for fire-and-forget or {@link send} to
33
+ * block until the consumer has fully processed the data. The consumer calls
34
+ * {@link shift} to dequeue, then {@link QueueEntry.ack} after
35
+ * processing to unblock the producer.
36
+ */
37
+ export declare class Queue {
38
+ private readonly _entries;
39
+ /** Resolve function for the pending wait() promise, if any. */
40
+ private _notify?;
41
+ /**
42
+ * Push data to the queue, waking any waiting consumer.
43
+ */
44
+ push(data: QueueData): void;
45
+ /**
46
+ * Push data and wait until the consumer has fully processed it.
47
+ * Provides back-pressure so the producer pauses until the event
48
+ * has been yielded and hook callbacks have been invoked.
49
+ *
50
+ * @param data - The queue data to push
51
+ * @returns Promise that resolves when the consumer calls {@link QueueEntry.ack}
52
+ */
53
+ send(data: QueueData): Promise<void>;
54
+ /**
55
+ * Wait until at least one entry is available.
56
+ */
57
+ wait(): Promise<void>;
58
+ /**
59
+ * Remove and return the next entry, or undefined if empty.
60
+ */
61
+ shift(): QueueEntry | undefined;
62
+ /**
63
+ * Number of entries in the queue.
64
+ */
65
+ get size(): number;
66
+ }
67
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +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;IAE1C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAM3B;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpC;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB;;OAEG;IACH,KAAK,IAAI,UAAU,GAAG,SAAS;IAI/B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Async queue with promise-based notification and optional back-pressure.
3
+ *
4
+ * Producers use {@link push} for fire-and-forget or {@link send} to
5
+ * block until the consumer has fully processed the data. The consumer calls
6
+ * {@link shift} to dequeue, then {@link QueueEntry.ack} after
7
+ * processing to unblock the producer.
8
+ */
9
+ export class Queue {
10
+ _entries = [];
11
+ /** Resolve function for the pending wait() promise, if any. */
12
+ _notify;
13
+ /**
14
+ * Push data to the queue, waking any waiting consumer.
15
+ */
16
+ push(data) {
17
+ this._entries.push({ data, ack: () => { } });
18
+ this._notify?.();
19
+ this._notify = undefined;
20
+ }
21
+ /**
22
+ * Push data and wait until the consumer has fully processed it.
23
+ * Provides back-pressure so the producer pauses until the event
24
+ * has been yielded and hook callbacks have been invoked.
25
+ *
26
+ * @param data - The queue data to push
27
+ * @returns Promise that resolves when the consumer calls {@link QueueEntry.ack}
28
+ */
29
+ send(data) {
30
+ return new Promise((resolve) => {
31
+ this._entries.push({ data, ack: resolve });
32
+ this._notify?.();
33
+ this._notify = undefined;
34
+ });
35
+ }
36
+ /**
37
+ * Wait until at least one entry is available.
38
+ */
39
+ wait() {
40
+ if (this._entries.length > 0)
41
+ return Promise.resolve();
42
+ return new Promise((resolve) => {
43
+ this._notify = resolve;
44
+ });
45
+ }
46
+ /**
47
+ * Remove and return the next entry, or undefined if empty.
48
+ */
49
+ shift() {
50
+ return this._entries.shift();
51
+ }
52
+ /**
53
+ * Number of entries in the queue.
54
+ */
55
+ get size() {
56
+ return this._entries.length;
57
+ }
58
+ }
59
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/multiagent/queue.ts"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH,MAAM,OAAO,KAAK;IACC,QAAQ,GAAiB,EAAE,CAAA;IAC5C,+DAA+D;IACvD,OAAO,CAA2B;IAE1C;;OAEG;IACH,IAAI,CAAC,IAAe;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,IAAe;QAClB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;YAC1C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;YAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;IAC7B,CAAC;CACF"}