@strands-agents/sdk 1.0.0 → 1.2.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 (284) hide show
  1. package/README.md +6 -0
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +16 -1
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +42 -0
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/tool-helpers.d.ts +2 -1
  7. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/tool-helpers.js +20 -3
  9. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  10. package/dist/src/__tests__/interrupt.test.d.ts +2 -0
  11. package/dist/src/__tests__/interrupt.test.d.ts.map +1 -0
  12. package/dist/src/__tests__/interrupt.test.js +264 -0
  13. package/dist/src/__tests__/interrupt.test.js.map +1 -0
  14. package/dist/src/__tests__/mcp.test.js +447 -7
  15. package/dist/src/__tests__/mcp.test.js.map +1 -1
  16. package/dist/src/agent/__tests__/agent.hook.test.js +551 -1
  17. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  18. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +2 -0
  19. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +1 -0
  20. package/dist/src/agent/__tests__/agent.interrupt.test.js +779 -0
  21. package/dist/src/agent/__tests__/agent.interrupt.test.js.map +1 -0
  22. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +2 -0
  23. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +1 -0
  24. package/dist/src/agent/__tests__/agent.model-retry.test.js +161 -0
  25. package/dist/src/agent/__tests__/agent.model-retry.test.js.map +1 -0
  26. package/dist/src/agent/__tests__/agent.test.js +174 -0
  27. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  28. package/dist/src/agent/__tests__/snapshot.test.js +148 -4
  29. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  30. package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
  31. package/dist/src/agent/agent-as-tool.js +2 -3
  32. package/dist/src/agent/agent-as-tool.js.map +1 -1
  33. package/dist/src/agent/agent.d.ts +94 -4
  34. package/dist/src/agent/agent.d.ts.map +1 -1
  35. package/dist/src/agent/agent.js +625 -223
  36. package/dist/src/agent/agent.js.map +1 -1
  37. package/dist/src/agent/snapshot.d.ts +11 -19
  38. package/dist/src/agent/snapshot.d.ts.map +1 -1
  39. package/dist/src/agent/snapshot.js +23 -19
  40. package/dist/src/agent/snapshot.js.map +1 -1
  41. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +230 -9
  42. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
  43. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +19 -6
  44. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  45. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +422 -41
  46. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  47. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +75 -1
  48. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  49. package/dist/src/conversation-manager/conversation-manager.d.ts +67 -22
  50. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
  51. package/dist/src/conversation-manager/conversation-manager.js +65 -13
  52. package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
  53. package/dist/src/conversation-manager/index.d.ts +1 -1
  54. package/dist/src/conversation-manager/index.d.ts.map +1 -1
  55. package/dist/src/conversation-manager/index.js +1 -1
  56. package/dist/src/conversation-manager/index.js.map +1 -1
  57. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +43 -10
  58. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  59. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +202 -45
  60. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  61. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +23 -1
  62. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  63. package/dist/src/conversation-manager/summarizing-conversation-manager.js +39 -17
  64. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  65. package/dist/src/hooks/__tests__/events.test.js +99 -12
  66. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  67. package/dist/src/hooks/__tests__/registry.test.js +166 -2
  68. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  69. package/dist/src/hooks/events.d.ts +125 -32
  70. package/dist/src/hooks/events.d.ts.map +1 -1
  71. package/dist/src/hooks/events.js +111 -8
  72. package/dist/src/hooks/events.js.map +1 -1
  73. package/dist/src/hooks/index.d.ts +4 -3
  74. package/dist/src/hooks/index.d.ts.map +1 -1
  75. package/dist/src/hooks/index.js +2 -1
  76. package/dist/src/hooks/index.js.map +1 -1
  77. package/dist/src/hooks/registry.d.ts +12 -12
  78. package/dist/src/hooks/registry.d.ts.map +1 -1
  79. package/dist/src/hooks/registry.js +55 -15
  80. package/dist/src/hooks/registry.js.map +1 -1
  81. package/dist/src/hooks/types.d.ts +23 -0
  82. package/dist/src/hooks/types.d.ts.map +1 -1
  83. package/dist/src/hooks/types.js +17 -1
  84. package/dist/src/hooks/types.js.map +1 -1
  85. package/dist/src/index.d.ts +12 -6
  86. package/dist/src/index.d.ts.map +1 -1
  87. package/dist/src/index.js +7 -2
  88. package/dist/src/index.js.map +1 -1
  89. package/dist/src/interrupt.d.ts +247 -0
  90. package/dist/src/interrupt.d.ts.map +1 -0
  91. package/dist/src/interrupt.js +316 -0
  92. package/dist/src/interrupt.js.map +1 -0
  93. package/dist/src/mcp.d.ts +61 -4
  94. package/dist/src/mcp.d.ts.map +1 -1
  95. package/dist/src/mcp.js +161 -25
  96. package/dist/src/mcp.js.map +1 -1
  97. package/dist/src/models/__tests__/anthropic.test.js +78 -8
  98. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  99. package/dist/src/models/__tests__/bedrock.test.js +156 -18
  100. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  101. package/dist/src/models/__tests__/defaults.test.d.ts +2 -0
  102. package/dist/src/models/__tests__/defaults.test.d.ts.map +1 -0
  103. package/dist/src/models/__tests__/defaults.test.js +36 -0
  104. package/dist/src/models/__tests__/defaults.test.js.map +1 -0
  105. package/dist/src/models/__tests__/google.test.js +72 -6
  106. package/dist/src/models/__tests__/google.test.js.map +1 -1
  107. package/dist/src/models/anthropic.d.ts +10 -0
  108. package/dist/src/models/anthropic.d.ts.map +1 -1
  109. package/dist/src/models/anthropic.js +14 -4
  110. package/dist/src/models/anthropic.js.map +1 -1
  111. package/dist/src/models/bedrock.d.ts +17 -3
  112. package/dist/src/models/bedrock.d.ts.map +1 -1
  113. package/dist/src/models/bedrock.js +80 -13
  114. package/dist/src/models/bedrock.js.map +1 -1
  115. package/dist/src/models/defaults.d.ts +10 -0
  116. package/dist/src/models/defaults.d.ts.map +1 -1
  117. package/dist/src/models/defaults.js +129 -0
  118. package/dist/src/models/defaults.js.map +1 -1
  119. package/dist/src/models/google/model.d.ts.map +1 -1
  120. package/dist/src/models/google/model.js +4 -2
  121. package/dist/src/models/google/model.js.map +1 -1
  122. package/dist/src/models/google/types.d.ts +10 -0
  123. package/dist/src/models/google/types.d.ts.map +1 -1
  124. package/dist/src/models/model.d.ts +15 -0
  125. package/dist/src/models/model.d.ts.map +1 -1
  126. package/dist/src/models/model.js +18 -0
  127. package/dist/src/models/model.js.map +1 -1
  128. package/dist/src/models/openai/__tests__/chat.test.js +55 -2
  129. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -1
  130. package/dist/src/models/openai/__tests__/responses.test.js +19 -0
  131. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  132. package/dist/src/models/openai/errors.d.ts.map +1 -1
  133. package/dist/src/models/openai/errors.js +7 -4
  134. package/dist/src/models/openai/errors.js.map +1 -1
  135. package/dist/src/models/openai/model.d.ts.map +1 -1
  136. package/dist/src/models/openai/model.js +2 -2
  137. package/dist/src/models/openai/model.js.map +1 -1
  138. package/dist/src/multiagent/__tests__/graph.test.js +69 -0
  139. package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
  140. package/dist/src/multiagent/__tests__/graph.tracer.test.js +14 -0
  141. package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +1 -1
  142. package/dist/src/multiagent/__tests__/interrupts.test.d.ts +2 -0
  143. package/dist/src/multiagent/__tests__/interrupts.test.d.ts.map +1 -0
  144. package/dist/src/multiagent/__tests__/interrupts.test.js +390 -0
  145. package/dist/src/multiagent/__tests__/interrupts.test.js.map +1 -0
  146. package/dist/src/multiagent/__tests__/nodes.test.js +13 -0
  147. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  148. package/dist/src/multiagent/__tests__/state.test.js +139 -1
  149. package/dist/src/multiagent/__tests__/state.test.js.map +1 -1
  150. package/dist/src/multiagent/__tests__/swarm.test.js +77 -0
  151. package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
  152. package/dist/src/multiagent/events.d.ts +15 -1
  153. package/dist/src/multiagent/events.d.ts.map +1 -1
  154. package/dist/src/multiagent/events.js +18 -0
  155. package/dist/src/multiagent/events.js.map +1 -1
  156. package/dist/src/multiagent/graph.d.ts +59 -3
  157. package/dist/src/multiagent/graph.d.ts.map +1 -1
  158. package/dist/src/multiagent/graph.js +201 -34
  159. package/dist/src/multiagent/graph.js.map +1 -1
  160. package/dist/src/multiagent/multiagent.d.ts +77 -3
  161. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  162. package/dist/src/multiagent/multiagent.js +115 -1
  163. package/dist/src/multiagent/multiagent.js.map +1 -1
  164. package/dist/src/multiagent/nodes.d.ts +18 -0
  165. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  166. package/dist/src/multiagent/nodes.js +69 -22
  167. package/dist/src/multiagent/nodes.js.map +1 -1
  168. package/dist/src/multiagent/state.d.ts +39 -3
  169. package/dist/src/multiagent/state.d.ts.map +1 -1
  170. package/dist/src/multiagent/state.js +80 -1
  171. package/dist/src/multiagent/state.js.map +1 -1
  172. package/dist/src/multiagent/swarm.d.ts +30 -1
  173. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  174. package/dist/src/multiagent/swarm.js +166 -33
  175. package/dist/src/multiagent/swarm.js.map +1 -1
  176. package/dist/src/registry/__tests__/tool-registry.test.js +37 -0
  177. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
  178. package/dist/src/registry/tool-registry.d.ts +13 -7
  179. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  180. package/dist/src/registry/tool-registry.js +35 -10
  181. package/dist/src/registry/tool-registry.js.map +1 -1
  182. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +2 -0
  183. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +1 -0
  184. package/dist/src/retry/__tests__/backoff-strategy.test.js +116 -0
  185. package/dist/src/retry/__tests__/backoff-strategy.test.js.map +1 -0
  186. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +2 -0
  187. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +1 -0
  188. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +225 -0
  189. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +1 -0
  190. package/dist/src/retry/backoff-strategy.d.ts +108 -0
  191. package/dist/src/retry/backoff-strategy.d.ts.map +1 -0
  192. package/dist/src/retry/backoff-strategy.js +86 -0
  193. package/dist/src/retry/backoff-strategy.js.map +1 -0
  194. package/dist/src/retry/default-model-retry-strategy.d.ts +76 -0
  195. package/dist/src/retry/default-model-retry-strategy.d.ts.map +1 -0
  196. package/dist/src/retry/default-model-retry-strategy.js +104 -0
  197. package/dist/src/retry/default-model-retry-strategy.js.map +1 -0
  198. package/dist/src/retry/index.d.ts +8 -0
  199. package/dist/src/retry/index.d.ts.map +1 -0
  200. package/dist/src/retry/index.js +7 -0
  201. package/dist/src/retry/index.js.map +1 -0
  202. package/dist/src/retry/model-retry-strategy.d.ts +80 -0
  203. package/dist/src/retry/model-retry-strategy.d.ts.map +1 -0
  204. package/dist/src/retry/model-retry-strategy.js +85 -0
  205. package/dist/src/retry/model-retry-strategy.js.map +1 -0
  206. package/dist/src/retry/retry-strategy.d.ts +34 -0
  207. package/dist/src/retry/retry-strategy.d.ts.map +1 -0
  208. package/dist/src/retry/retry-strategy.js +25 -0
  209. package/dist/src/retry/retry-strategy.js.map +1 -0
  210. package/dist/src/session/__tests__/session-manager.test.js +84 -3
  211. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  212. package/dist/src/session/session-manager.d.ts +11 -2
  213. package/dist/src/session/session-manager.d.ts.map +1 -1
  214. package/dist/src/session/session-manager.js +17 -6
  215. package/dist/src/session/session-manager.js.map +1 -1
  216. package/dist/src/telemetry/__tests__/meter.test.js +5 -27
  217. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  218. package/dist/src/telemetry/meter.d.ts +12 -4
  219. package/dist/src/telemetry/meter.d.ts.map +1 -1
  220. package/dist/src/telemetry/meter.js +13 -8
  221. package/dist/src/telemetry/meter.js.map +1 -1
  222. package/dist/src/tools/__tests__/tool.test.js +24 -1
  223. package/dist/src/tools/__tests__/tool.test.js.map +1 -1
  224. package/dist/src/tools/function-tool.d.ts.map +1 -1
  225. package/dist/src/tools/function-tool.js +6 -1
  226. package/dist/src/tools/function-tool.js.map +1 -1
  227. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  228. package/dist/src/tools/mcp-tool.js +3 -2
  229. package/dist/src/tools/mcp-tool.js.map +1 -1
  230. package/dist/src/tools/tool.d.ts +10 -1
  231. package/dist/src/tools/tool.d.ts.map +1 -1
  232. package/dist/src/tools/tool.js +12 -0
  233. package/dist/src/tools/tool.js.map +1 -1
  234. package/dist/src/tsconfig.tsbuildinfo +1 -1
  235. package/dist/src/types/__tests__/agent.test.js +97 -0
  236. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  237. package/dist/src/types/agent.d.ts +48 -8
  238. package/dist/src/types/agent.d.ts.map +1 -1
  239. package/dist/src/types/agent.js +28 -3
  240. package/dist/src/types/agent.js.map +1 -1
  241. package/dist/src/types/interrupt.d.ts +103 -0
  242. package/dist/src/types/interrupt.d.ts.map +1 -0
  243. package/dist/src/types/interrupt.js +63 -0
  244. package/dist/src/types/interrupt.js.map +1 -0
  245. package/dist/src/types/messages.d.ts +2 -1
  246. package/dist/src/types/messages.d.ts.map +1 -1
  247. package/dist/src/types/messages.js.map +1 -1
  248. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +2 -0
  249. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +1 -0
  250. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +292 -0
  251. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -0
  252. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +2 -0
  253. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +1 -0
  254. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +148 -0
  255. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -0
  256. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +2 -0
  257. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +1 -0
  258. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +78 -0
  259. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +1 -0
  260. package/dist/src/vended-plugins/context-offloader/index.d.ts +23 -0
  261. package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -0
  262. package/dist/src/vended-plugins/context-offloader/index.js +21 -0
  263. package/dist/src/vended-plugins/context-offloader/index.js.map +1 -0
  264. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +48 -0
  265. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -0
  266. package/dist/src/vended-plugins/context-offloader/plugin.js +244 -0
  267. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -0
  268. package/dist/src/vended-plugins/context-offloader/storage.d.ts +114 -0
  269. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -0
  270. package/dist/src/vended-plugins/context-offloader/storage.js +204 -0
  271. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -0
  272. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +12 -0
  273. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  274. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +3 -0
  275. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  276. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  277. package/dist/src/vended-tools/bash/bash.js +0 -3
  278. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  279. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +3 -0
  280. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  281. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +3 -0
  282. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  283. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  284. package/package.json +9 -5
@@ -2,13 +2,30 @@ import type { InvocationState, InvokeArgs } from '../types/agent.js';
2
2
  import type { Message, MessageData } from '../types/messages.js';
3
3
  import type { HookableEvent } from '../hooks/events.js';
4
4
  import type { HookCallback, HookableEventConstructor, HookCleanup } from '../hooks/types.js';
5
+ import type { InterruptResponseContentData } from '../types/interrupt.js';
6
+ import { InterruptResponseContent } from '../types/interrupt.js';
5
7
  import type { MultiAgentStreamEvent } from './events.js';
6
- import type { MultiAgentResult } from './state.js';
8
+ import { NodeResult } from './state.js';
9
+ import type { MultiAgentResult, MultiAgentState, NodeState } from './state.js';
7
10
  /**
8
- * Input type for multi-agent orchestrators. Excludes `Message[]` and `MessageData[]`
9
- * from {@link InvokeArgs} since orchestrators route content blocks between nodes.
11
+ * Input type for multi-agent orchestrators. Excludes `Message[]` / `MessageData[]`
12
+ * since orchestrators route content blocks between nodes rather than replaying raw
13
+ * conversation history.
14
+ *
15
+ * Accepts `InterruptResponseContent[]` / `InterruptResponseContentData[]` for resuming
16
+ * from an interrupted run — orchestrators detect resume input at the entry point and
17
+ * route responses to the interrupted nodes rather than flowing through dependency
18
+ * resolution.
10
19
  */
11
20
  export type MultiAgentInput = Exclude<InvokeArgs, Message[] | MessageData[]>;
21
+ /**
22
+ * The non-resume subset of {@link MultiAgentInput}. Internal orchestrator helpers that
23
+ * participate in dependency resolution / handoff routing accept this narrower type so
24
+ * they don't need to re-check for {@link InterruptResponseContent} entries at each call.
25
+ *
26
+ * @internal
27
+ */
28
+ export type MultiAgentContentInput = Exclude<MultiAgentInput, InterruptResponseContent[] | InterruptResponseContentData[]>;
12
29
  /**
13
30
  * Options for a single multi-agent orchestrator invocation.
14
31
  */
@@ -19,6 +36,18 @@ export interface MultiAgentInvokeOptions {
19
36
  * {@link InvocationState} for details. Defaults to `{}` when omitted.
20
37
  */
21
38
  invocationState?: InvocationState;
39
+ /**
40
+ * Cancellation signal forwarded to every node (and into any nested orchestrators
41
+ * via `MultiAgentNode`). Composed with the orchestrator's own timeout and
42
+ * short-circuit signals, matching {@link InvokeOptions.cancelSignal} on the
43
+ * single-agent path. Cooperative — honored by nodes that forward it to their
44
+ * underlying agents/tools.
45
+ *
46
+ * When this signal aborts, the orchestrator throws rather than returning a clean
47
+ * result. This matches single-agent behavior: external cancellation is treated as
48
+ * an exceptional exit, not a normal terminal state.
49
+ */
50
+ cancelSignal?: AbortSignal;
22
51
  }
23
52
  /**
24
53
  * Interface for any multi-agent orchestrator that can stream execution.
@@ -51,4 +80,49 @@ export interface MultiAgent {
51
80
  */
52
81
  addHook<T extends HookableEvent>(eventType: HookableEventConstructor<T>, callback: HookCallback<T>): HookCleanup;
53
82
  }
83
+ /**
84
+ * Detects whether a {@link MultiAgentInput} is a resume from an interrupted run and
85
+ * normalizes its entries to {@link InterruptResponseContent} instances.
86
+ *
87
+ * Returns `undefined` for fresh input (string / content blocks / empty array).
88
+ */
89
+ export declare function extractResumeResponses(input: MultiAgentInput): InterruptResponseContent[] | undefined;
90
+ /**
91
+ * Groups a flat list of interrupt responses by the node that raised each interrupt.
92
+ *
93
+ * For each response, finds the node whose `NodeState.interrupts` contains an entry
94
+ * with a matching id. Ids are globally unique (derived from model-assigned
95
+ * `toolUseId`s) so each response maps to exactly one node. Nested orchestrators
96
+ * carry their subtree's interrupts on the wrapping `MultiAgentNode`'s state, so a
97
+ * matching response is forwarded as-is to the nested orchestrator, which does its
98
+ * own grouping recursively.
99
+ *
100
+ * @throws Error if any response's interrupt id does not match any tracked node
101
+ */
102
+ export declare function groupInterruptResponsesByNode(responses: InterruptResponseContent[], state: MultiAgentState): Map<string, InterruptResponseContent[]>;
103
+ /**
104
+ * Removes a stale INTERRUPTED result for the given node from both per-node history
105
+ * and the orchestrator-level aggregate so a fresh result (from resume or cancel)
106
+ * replaces it cleanly. No-op if the node isn't in an INTERRUPTED state.
107
+ */
108
+ export declare function dropStaleInterruptedResult(nodeId: string, nodeState: NodeState, state: MultiAgentState): void;
109
+ /**
110
+ * Records a hook-raised interrupt on a node that hadn't started executing: builds
111
+ * the INTERRUPTED {@link NodeResult}, transitions `nodeState.status`, and appends
112
+ * the result to `nodeState.results`. Returns the result so callers can route it
113
+ * into their own queue/lifecycle machinery.
114
+ *
115
+ * Shared between Graph and Swarm so their hook-interrupt branches don't drift.
116
+ */
117
+ export declare function recordHookInterrupt(nodeId: string, nodeState: NodeState): NodeResult;
118
+ /**
119
+ * Applies interrupt responses to a node's own orchestrator-level interrupts and
120
+ * returns the remaining responses — those bound for the child agent's interrupts.
121
+ *
122
+ * Orchestrator hooks (source `'multiagent-hook'`) store their interrupts on
123
+ * `NodeState.interrupts` directly; the hook re-runs on resume and reads the stored
124
+ * response. Agent-level interrupts aren't answerable here — they flow to the child
125
+ * agent as resume input and are applied by the agent's own interrupt machinery.
126
+ */
127
+ export declare function applyOrchestratorHookResponses(nodeState: NodeState, responses: InterruptResponseContent[]): InterruptResponseContent[];
54
128
  //# sourceMappingURL=multiagent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiagent.d.ts","sourceRoot":"","sources":["../../../src/multiagent/multiagent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE5F;;;;;OAKG;IACH,MAAM,CACJ,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,uBAAuB,GAChC,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAErE;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;CACjH"}
1
+ {"version":3,"file":"multiagent.d.ts","sourceRoot":"","sources":["../../../src/multiagent/multiagent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAA8B,MAAM,uBAAuB,CAAA;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,UAAU,EAAU,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE9E;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC,CAAA;AAE5E;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,eAAe,EACf,wBAAwB,EAAE,GAAG,4BAA4B,EAAE,CAC5D,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE5F;;;;;OAKG;IACH,MAAM,CACJ,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,uBAAuB,GAChC,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAErE;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;CACjH;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,wBAAwB,EAAE,GAAG,SAAS,CAerG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,wBAAwB,EAAE,EACrC,KAAK,EAAE,eAAe,GACrB,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAmBzC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAO7G;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAUpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,wBAAwB,EAAE,GACpC,wBAAwB,EAAE,CAa5B"}
@@ -1,2 +1,116 @@
1
- export {};
1
+ import { InterruptResponseContent, isInterruptResponseContent } from '../types/interrupt.js';
2
+ import { NodeResult, Status } from './state.js';
3
+ /**
4
+ * Detects whether a {@link MultiAgentInput} is a resume from an interrupted run and
5
+ * normalizes its entries to {@link InterruptResponseContent} instances.
6
+ *
7
+ * Returns `undefined` for fresh input (string / content blocks / empty array).
8
+ */
9
+ export function extractResumeResponses(input) {
10
+ if (!Array.isArray(input) || input.length === 0)
11
+ return undefined;
12
+ if (!isInterruptResponseContent(input[0]))
13
+ return undefined;
14
+ const responses = [];
15
+ for (const entry of input) {
16
+ if (entry instanceof InterruptResponseContent) {
17
+ responses.push(entry);
18
+ }
19
+ else if (isInterruptResponseContent(entry)) {
20
+ responses.push(InterruptResponseContent.fromJSON(entry));
21
+ }
22
+ else {
23
+ throw new TypeError('Must resume from interrupt with a list of interruptResponse content blocks only');
24
+ }
25
+ }
26
+ return responses;
27
+ }
28
+ /**
29
+ * Groups a flat list of interrupt responses by the node that raised each interrupt.
30
+ *
31
+ * For each response, finds the node whose `NodeState.interrupts` contains an entry
32
+ * with a matching id. Ids are globally unique (derived from model-assigned
33
+ * `toolUseId`s) so each response maps to exactly one node. Nested orchestrators
34
+ * carry their subtree's interrupts on the wrapping `MultiAgentNode`'s state, so a
35
+ * matching response is forwarded as-is to the nested orchestrator, which does its
36
+ * own grouping recursively.
37
+ *
38
+ * @throws Error if any response's interrupt id does not match any tracked node
39
+ */
40
+ export function groupInterruptResponsesByNode(responses, state) {
41
+ const grouped = new Map();
42
+ for (const response of responses) {
43
+ const id = response.interruptResponse.interruptId;
44
+ let target;
45
+ for (const [nodeId, nodeState] of state.nodes) {
46
+ if (nodeState.interrupts.some((i) => i.id === id)) {
47
+ target = nodeId;
48
+ break;
49
+ }
50
+ }
51
+ if (!target) {
52
+ throw new Error(`interrupt_id=<${id}> | no node found with matching interrupt`);
53
+ }
54
+ const bucket = grouped.get(target) ?? [];
55
+ bucket.push(response);
56
+ grouped.set(target, bucket);
57
+ }
58
+ return grouped;
59
+ }
60
+ /**
61
+ * Removes a stale INTERRUPTED result for the given node from both per-node history
62
+ * and the orchestrator-level aggregate so a fresh result (from resume or cancel)
63
+ * replaces it cleanly. No-op if the node isn't in an INTERRUPTED state.
64
+ */
65
+ export function dropStaleInterruptedResult(nodeId, nodeState, state) {
66
+ if (nodeState.status !== Status.INTERRUPTED)
67
+ return;
68
+ if (nodeState.results[nodeState.results.length - 1]?.status === Status.INTERRUPTED) {
69
+ nodeState.results.pop();
70
+ }
71
+ const idx = state.results.findIndex((r) => r.nodeId === nodeId && r.status === Status.INTERRUPTED);
72
+ if (idx >= 0)
73
+ state.results.splice(idx, 1);
74
+ }
75
+ /**
76
+ * Records a hook-raised interrupt on a node that hadn't started executing: builds
77
+ * the INTERRUPTED {@link NodeResult}, transitions `nodeState.status`, and appends
78
+ * the result to `nodeState.results`. Returns the result so callers can route it
79
+ * into their own queue/lifecycle machinery.
80
+ *
81
+ * Shared between Graph and Swarm so their hook-interrupt branches don't drift.
82
+ */
83
+ export function recordHookInterrupt(nodeId, nodeState) {
84
+ const result = new NodeResult({
85
+ nodeId,
86
+ status: Status.INTERRUPTED,
87
+ duration: Date.now() - nodeState.startTime,
88
+ interrupts: nodeState.interrupts,
89
+ });
90
+ nodeState.status = Status.INTERRUPTED;
91
+ nodeState.results.push(result);
92
+ return result;
93
+ }
94
+ /**
95
+ * Applies interrupt responses to a node's own orchestrator-level interrupts and
96
+ * returns the remaining responses — those bound for the child agent's interrupts.
97
+ *
98
+ * Orchestrator hooks (source `'multiagent-hook'`) store their interrupts on
99
+ * `NodeState.interrupts` directly; the hook re-runs on resume and reads the stored
100
+ * response. Agent-level interrupts aren't answerable here — they flow to the child
101
+ * agent as resume input and are applied by the agent's own interrupt machinery.
102
+ */
103
+ export function applyOrchestratorHookResponses(nodeState, responses) {
104
+ const forwarded = [];
105
+ for (const response of responses) {
106
+ const local = nodeState.interrupts.find((i) => i.id === response.interruptResponse.interruptId && i.source === 'multiagent-hook');
107
+ if (local) {
108
+ local.response = response.interruptResponse.response;
109
+ }
110
+ else {
111
+ forwarded.push(response);
112
+ }
113
+ }
114
+ return forwarded;
115
+ }
2
116
  //# sourceMappingURL=multiagent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiagent.js","sourceRoot":"","sources":["../../../src/multiagent/multiagent.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"multiagent.js","sourceRoot":"","sources":["../../../src/multiagent/multiagent.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,11 @@ export interface NodeInputOptions {
32
32
  * hooks/tools can read state written by a previous node.
33
33
  */
34
34
  invocationState?: InvocationState;
35
+ /**
36
+ * Cancellation signal forwarded to the node's underlying agent. Used by
37
+ * orchestrators to enforce per-node timeouts or propagate external cancellation.
38
+ */
39
+ cancelSignal?: AbortSignal;
35
40
  }
36
41
  /**
37
42
  * Abstract base class for all multi-agent orchestration nodes.
@@ -77,6 +82,13 @@ export declare abstract class Node {
77
82
  export interface AgentNodeOptions {
78
83
  /** The agent to wrap as a node. */
79
84
  agent: InvokableAgent;
85
+ /**
86
+ * Per-node wall-clock ceiling in milliseconds. Overrides the orchestrator's
87
+ * default node timeout. Cancellation is cooperative — a tool that neither
88
+ * polls its cancel signal nor forwards it to a cancellable API can run past
89
+ * this deadline.
90
+ */
91
+ timeout?: number;
80
92
  }
81
93
  /**
82
94
  * Node that wraps an {@link InvokableAgent} instance for multi-agent orchestration.
@@ -87,6 +99,12 @@ export interface AgentNodeOptions {
87
99
  export declare class AgentNode extends Node {
88
100
  readonly type: "agentNode";
89
101
  private readonly _agent;
102
+ /**
103
+ * Per-node wall-clock ceiling in milliseconds. When set, overrides the orchestrator's
104
+ * `nodeTimeout` for this node. Undefined means "fall back to the orchestrator's setting."
105
+ * See {@link AgentNodeOptions.timeout}.
106
+ */
107
+ readonly timeout?: number;
90
108
  constructor(options: AgentNodeOptions);
91
109
  get agent(): InvokableAgent;
92
110
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/multiagent/nodes.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { Agent } from '../agent/agent.js';
2
- import { takeSnapshot, loadSnapshot } from '../agent/snapshot.js';
2
+ import { dropStaleInterruptedResult } from './multiagent.js';
3
3
  import { NodeStreamUpdateEvent, NodeResultEvent } from './events.js';
4
4
  import { NodeResult, Status } from './state.js';
5
5
  import { logger } from '../logging/logger.js';
6
6
  import { normalizeError } from '../errors.js';
7
+ import { omitUndefined } from '../types/json.js';
7
8
  /**
8
9
  * Abstract base class for all multi-agent orchestration nodes.
9
10
  *
@@ -36,6 +37,8 @@ export class Node {
36
37
  */
37
38
  async *stream(input, state, options) {
38
39
  const nodeState = state.node(this.id);
40
+ // Resuming from INTERRUPTED: drop the stale result so the fresh one replaces it.
41
+ dropStaleInterruptedResult(this.id, nodeState, state);
39
42
  nodeState.status = Status.EXECUTING;
40
43
  nodeState.startTime = Date.now();
41
44
  // Resolve invocationState once — the same reference is threaded into handle()
@@ -45,26 +48,38 @@ export class Node {
45
48
  let result;
46
49
  try {
47
50
  const update = yield* this.handle(input, state, resolvedOptions);
51
+ const defaultStatus = update.interrupts && update.interrupts.length > 0 ? Status.INTERRUPTED : Status.COMPLETED;
48
52
  result = new NodeResult({
49
53
  nodeId: this.id,
50
- status: Status.COMPLETED,
54
+ status: defaultStatus,
51
55
  duration: Date.now() - nodeState.startTime,
52
56
  content: [],
53
57
  ...update,
54
58
  });
55
59
  }
56
60
  catch (error) {
61
+ // Orchestrator cancellation (short-circuit or external) maps thrown errors to
62
+ // CANCELLED — node was stopped, not broken.
63
+ const status = options?.cancelSignal?.aborted ? Status.CANCELLED : Status.FAILED;
57
64
  result = new NodeResult({
58
65
  nodeId: this.id,
59
- status: Status.FAILED,
66
+ status,
60
67
  duration: Date.now() - nodeState.startTime,
61
68
  error: normalizeError(error),
62
69
  });
63
- logger.warn(`node_id=<${this.id}>, error=<${result.error?.message}> | node execution failed`);
70
+ if (status === Status.FAILED) {
71
+ logger.warn(`node_id=<${this.id}>, error=<${result.error?.message}> | node execution failed`);
72
+ }
64
73
  }
65
74
  finally {
66
75
  nodeState.status = result.status;
67
76
  nodeState.results.push(result);
77
+ nodeState.interrupts = result.interrupts ?? [];
78
+ // Clear the stored snapshot on non-INTERRUPTED terminal states; `handle()`
79
+ // repopulates it above if this run itself interrupted.
80
+ if (result.status !== Status.INTERRUPTED) {
81
+ delete nodeState.interruptedSnapshot;
82
+ }
68
83
  }
69
84
  yield new NodeResultEvent({
70
85
  nodeId: this.id,
@@ -85,13 +100,25 @@ export class Node {
85
100
  export class AgentNode extends Node {
86
101
  type = 'agentNode';
87
102
  _agent;
103
+ /**
104
+ * Per-node wall-clock ceiling in milliseconds. When set, overrides the orchestrator's
105
+ * `nodeTimeout` for this node. Undefined means "fall back to the orchestrator's setting."
106
+ * See {@link AgentNodeOptions.timeout}.
107
+ */
108
+ timeout;
88
109
  constructor(options) {
89
- const { agent, ...config } = options;
110
+ const { agent, timeout, ...config } = options;
90
111
  super(agent.id, {
91
112
  ...config,
92
113
  ...(agent.description !== undefined && { description: agent.description }),
93
114
  });
94
115
  this._agent = agent;
116
+ if (timeout !== undefined) {
117
+ if (timeout < 1) {
118
+ throw new Error(`timeout=<${timeout}>, node_id=<${agent.id}> | must be at least 1`);
119
+ }
120
+ this.timeout = timeout;
121
+ }
95
122
  }
96
123
  get agent() {
97
124
  return this._agent;
@@ -109,13 +136,18 @@ export class AgentNode extends Node {
109
136
  // Resolve once per handle() call — Node.stream() normally supplies this;
110
137
  // handle() is public API, so direct callers get per-call state.
111
138
  const invocationState = options?.invocationState ?? {};
112
- // Only Agent instances support snapshot/restore for state isolation
113
- const snapshot = this._agent instanceof Agent
114
- ? takeSnapshot(this._agent, { include: ['messages', 'state', 'modelState'] })
115
- : undefined;
139
+ // Only Agent instances support snapshot/restore for state isolation.
140
+ const isAgent = this._agent instanceof Agent;
141
+ const preRunSnapshot = isAgent ? this._agent.takeSnapshot({ preset: 'session' }) : undefined;
142
+ // Rehydrate agent state from a prior INTERRUPTED run (messages + interrupt state).
143
+ const nodeState = state.node(this.id);
144
+ if (isAgent && nodeState?.interruptedSnapshot) {
145
+ this._agent.loadSnapshot(nodeState.interruptedSnapshot);
146
+ }
116
147
  try {
117
148
  const invokeOptions = {
118
149
  ...(options?.structuredOutputSchema && { structuredOutputSchema: options.structuredOutputSchema }),
150
+ ...(options?.cancelSignal && { cancelSignal: options.cancelSignal }),
119
151
  invocationState,
120
152
  };
121
153
  const gen = this._agent.stream(input, invokeOptions);
@@ -125,22 +157,32 @@ export class AgentNode extends Node {
125
157
  nodeId: this.id,
126
158
  nodeType: this.type,
127
159
  state,
128
- inner: this._agent instanceof Agent
160
+ inner: isAgent
129
161
  ? { source: 'agent', event: next.value }
130
162
  : { source: 'custom', event: next.value },
131
163
  invocationState,
132
164
  });
133
165
  next = await gen.next();
134
166
  }
135
- return {
136
- content: next.value.lastMessage.content,
137
- ...('structuredOutput' in next.value && { structuredOutput: next.value.structuredOutput }),
138
- ...(next.value.metrics?.accumulatedUsage && { usage: next.value.metrics.accumulatedUsage }),
139
- };
167
+ const agentResult = next.value;
168
+ const interrupted = agentResult.stopReason === 'interrupt' && agentResult.interrupts && agentResult.interrupts.length > 0;
169
+ // Capture post-interrupt state for the next resume cycle. Only Agent instances
170
+ // are snapshottable.
171
+ if (interrupted && isAgent && nodeState) {
172
+ nodeState.interruptedSnapshot = this._agent.takeSnapshot({ preset: 'session' });
173
+ }
174
+ return omitUndefined({
175
+ content: agentResult.lastMessage.content,
176
+ structuredOutput: 'structuredOutput' in agentResult ? agentResult.structuredOutput : undefined,
177
+ usage: agentResult.metrics?.accumulatedUsage,
178
+ interrupts: interrupted ? agentResult.interrupts : undefined,
179
+ });
140
180
  }
141
181
  finally {
142
- if (snapshot) {
143
- loadSnapshot(this._agent, snapshot);
182
+ // Restore pre-run state — keeps the agent observably unchanged across runs.
183
+ if (preRunSnapshot) {
184
+ ;
185
+ this._agent.loadSnapshot(preRunSnapshot);
144
186
  }
145
187
  }
146
188
  }
@@ -178,7 +220,10 @@ export class MultiAgentNode extends Node {
178
220
  // Resolve once per handle() call — Node.stream() normally supplies this;
179
221
  // handle() is public API, so direct callers get per-call state.
180
222
  const invocationState = options?.invocationState ?? {};
181
- const gen = this._orchestrator.stream(input, { invocationState });
223
+ const gen = this._orchestrator.stream(input, {
224
+ invocationState,
225
+ ...(options?.cancelSignal && { cancelSignal: options.cancelSignal }),
226
+ });
182
227
  let next = await gen.next();
183
228
  while (!next.done) {
184
229
  const event = next.value;
@@ -197,12 +242,14 @@ export class MultiAgentNode extends Node {
197
242
  next = await gen.next();
198
243
  }
199
244
  const innerResult = next.value;
200
- return {
245
+ const interrupted = innerResult.interrupts && innerResult.interrupts.length > 0;
246
+ return omitUndefined({
201
247
  content: innerResult.content,
202
248
  usage: innerResult.usage,
203
- ...(innerResult.status !== Status.COMPLETED && { status: innerResult.status }),
204
- ...(innerResult.error && { error: innerResult.error }),
205
- };
249
+ status: innerResult.status !== Status.COMPLETED ? innerResult.status : undefined,
250
+ error: innerResult.error,
251
+ interrupts: interrupted ? innerResult.interrupts : undefined,
252
+ });
206
253
  }
207
254
  }
208
255
  //# 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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"}
@@ -3,6 +3,9 @@ import { type ContentBlock } from '../types/messages.js';
3
3
  import type { Usage } from '../models/streaming.js';
4
4
  import type { z } from 'zod';
5
5
  import type { JSONValue } from '../types/json.js';
6
+ import { Interrupt } from '../interrupt.js';
7
+ import type { MultiAgentInput } from './multiagent.js';
8
+ import type { Snapshot } from '../types/snapshot.js';
6
9
  import { loadStateFromJSONSymbol, stateToJSONSymbol, type StateSerializable } from '../types/serializable.js';
7
10
  /**
8
11
  * Execution lifecycle status shared across all multi-agent patterns.
@@ -18,15 +21,17 @@ export declare const Status: {
18
21
  readonly FAILED: "FAILED";
19
22
  /** Execution was cancelled before or during processing. */
20
23
  readonly CANCELLED: "CANCELLED";
24
+ /** Execution paused awaiting an interrupt response; can be resumed. */
25
+ readonly INTERRUPTED: "INTERRUPTED";
21
26
  };
22
27
  /**
23
28
  * Union of all valid status values.
24
29
  */
25
30
  export type Status = (typeof Status)[keyof typeof Status];
26
31
  /**
27
- * Subset of {@link Status} representing terminal outcomes.
32
+ * Subset of {@link Status} valid for a {@link NodeResult}.
28
33
  */
29
- export type ResultStatus = typeof Status.COMPLETED | typeof Status.FAILED | typeof Status.CANCELLED;
34
+ export type ResultStatus = typeof Status.COMPLETED | typeof Status.FAILED | typeof Status.CANCELLED | typeof Status.INTERRUPTED;
30
35
  /**
31
36
  * Result of executing a single node.
32
37
  */
@@ -42,6 +47,8 @@ export declare class NodeResult {
42
47
  readonly structuredOutput?: z.output<z.ZodType>;
43
48
  /** Token usage from the node execution. */
44
49
  readonly usage?: Usage;
50
+ /** Interrupts raised by the underlying agent/orchestrator. Present iff `status === 'INTERRUPTED'`. */
51
+ readonly interrupts?: Interrupt[];
45
52
  constructor(data: {
46
53
  nodeId: string;
47
54
  status: ResultStatus;
@@ -50,6 +57,7 @@ export declare class NodeResult {
50
57
  error?: Error;
51
58
  structuredOutput?: z.output<z.ZodType>;
52
59
  usage?: Usage;
60
+ interrupts?: Interrupt[];
53
61
  });
54
62
  /** Serializes this result to a JSON-compatible value. */
55
63
  toJSON(): JSONValue;
@@ -75,6 +83,15 @@ export declare class NodeState implements StateSerializable {
75
83
  /** Node execution start time in milliseconds since epoch. */
76
84
  startTime: number;
77
85
  readonly results: NodeResult[];
86
+ /** Unanswered interrupts raised during this node's most recent run. Populated when `status === 'INTERRUPTED'`. */
87
+ interrupts: Interrupt[];
88
+ /**
89
+ * Snapshot of the node's underlying runnable (Agent or nested orchestrator) captured
90
+ * when the node returned INTERRUPTED. Loaded back into the runnable on resume so it
91
+ * can pick up mid-execution without losing its interrupt bookkeeping. Cleared when
92
+ * the node completes.
93
+ */
94
+ interruptedSnapshot?: Snapshot;
78
95
  constructor();
79
96
  /** Content from the most recent result, or empty array if none. */
80
97
  get content(): readonly ContentBlock[];
@@ -96,18 +113,28 @@ export declare class MultiAgentResult {
96
113
  readonly error?: Error;
97
114
  /** Aggregated token usage across all node results. */
98
115
  readonly usage: Usage;
116
+ /** Interrupts aggregated across all node results. Present when any node ended INTERRUPTED. */
117
+ readonly interrupts?: Interrupt[];
99
118
  constructor(data: {
100
119
  status?: ResultStatus;
101
120
  results: NodeResult[];
102
121
  content?: ContentBlock[];
103
122
  duration: number;
104
123
  error?: Error;
124
+ interrupts?: Interrupt[];
105
125
  });
106
126
  /** Serializes this result to a JSON-compatible value. */
107
127
  toJSON(): JSONValue;
108
128
  /** Creates a MultiAgentResult from a previously serialized JSON value. */
109
129
  static fromJSON(data: JSONValue): MultiAgentResult;
110
- /** Derives the aggregate status from individual node results. */
130
+ /**
131
+ * Derives the aggregate status from individual node results.
132
+ *
133
+ * Precedence: FAILED \> INTERRUPTED \> CANCELLED \> COMPLETED. INTERRUPTED outranks
134
+ * CANCELLED because parallel-graph short-circuit aborts siblings as CANCELLED when
135
+ * one node interrupts — the actionable "resume me" signal should surface over the
136
+ * collateral cancellations.
137
+ */
111
138
  private _resolveStatus;
112
139
  /** Sums token usage across all node results. */
113
140
  private _aggregateNodeUsage;
@@ -124,6 +151,15 @@ export declare class MultiAgentState implements StateSerializable {
124
151
  readonly results: NodeResult[];
125
152
  /** App-level key-value state accessible from hooks, edge handlers, and custom nodes. */
126
153
  readonly app: StateStore;
154
+ /**
155
+ * The invocation's input, carried through an interrupt pause so that resuming a
156
+ * run (on the same instance, or via a SessionManager) can re-enter nodes that
157
+ * never ran (hook-gated source/start nodes) with the original content. Cleared
158
+ * when the invocation terminates in any non-INTERRUPTED state.
159
+ *
160
+ * @internal — not part of the public state shape; orchestrator-owned.
161
+ */
162
+ _pendingInput?: MultiAgentInput;
127
163
  private readonly _nodes;
128
164
  constructor(data?: {
129
165
  nodeIds?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/multiagent/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/multiagent/state.ts"],"names":[],"mappings":"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"}