@strands-agents/sdk 1.0.0-rc.4 → 1.0.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 (265) hide show
  1. package/README.md +8 -15
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +6 -0
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +3 -1
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
  7. package/dist/src/__fixtures__/mock-plugin.js +3 -1
  8. package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
  9. package/dist/src/__fixtures__/tool-helpers.d.ts +3 -1
  10. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  11. package/dist/src/__fixtures__/tool-helpers.js +3 -1
  12. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  13. package/dist/src/__tests__/mcp.test.js +274 -1
  14. package/dist/src/__tests__/mcp.test.js.map +1 -1
  15. package/dist/src/a2a/__tests__/events.test.js +2 -0
  16. package/dist/src/a2a/__tests__/events.test.js.map +1 -1
  17. package/dist/src/a2a/__tests__/executor.test.js +16 -5
  18. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  19. package/dist/src/a2a/a2a-agent.d.ts +8 -3
  20. package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
  21. package/dist/src/a2a/a2a-agent.js +12 -6
  22. package/dist/src/a2a/a2a-agent.js.map +1 -1
  23. package/dist/src/a2a/executor.d.ts +13 -0
  24. package/dist/src/a2a/executor.d.ts.map +1 -1
  25. package/dist/src/a2a/executor.js +19 -1
  26. package/dist/src/a2a/executor.js.map +1 -1
  27. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +2 -0
  28. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +1 -0
  29. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +23 -0
  30. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +1 -0
  31. package/dist/src/agent/__tests__/agent.cancel.test.js +1 -1
  32. package/dist/src/agent/__tests__/agent.cancel.test.js.map +1 -1
  33. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +2 -0
  34. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +1 -0
  35. package/dist/src/agent/__tests__/agent.concurrent.test.js +488 -0
  36. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +1 -0
  37. package/dist/src/agent/__tests__/agent.hook.test.js +174 -12
  38. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  39. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +2 -0
  40. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +1 -0
  41. package/dist/src/agent/__tests__/agent.invocation-state.test.js +219 -0
  42. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +1 -0
  43. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +2 -0
  44. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +1 -0
  45. package/dist/src/agent/__tests__/agent.stateful-model.test.js +169 -0
  46. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -0
  47. package/dist/src/agent/__tests__/agent.test.js +99 -2
  48. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  49. package/dist/src/agent/__tests__/agent.tracer.test.node.js +39 -0
  50. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  51. package/dist/src/agent/__tests__/snapshot.test.js +5 -4
  52. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  53. package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
  54. package/dist/src/agent/agent-as-tool.js +4 -2
  55. package/dist/src/agent/agent-as-tool.js.map +1 -1
  56. package/dist/src/agent/agent.d.ts +75 -1
  57. package/dist/src/agent/agent.d.ts.map +1 -1
  58. package/dist/src/agent/agent.js +323 -83
  59. package/dist/src/agent/agent.js.map +1 -1
  60. package/dist/src/agent/snapshot.d.ts +2 -2
  61. package/dist/src/agent/snapshot.d.ts.map +1 -1
  62. package/dist/src/agent/snapshot.js +8 -2
  63. package/dist/src/agent/snapshot.js.map +1 -1
  64. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +4 -4
  65. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
  66. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +2 -2
  67. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  68. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +8 -3
  69. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  70. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +1 -0
  71. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  72. package/dist/src/errors.d.ts +11 -0
  73. package/dist/src/errors.d.ts.map +1 -1
  74. package/dist/src/errors.js +12 -0
  75. package/dist/src/errors.js.map +1 -1
  76. package/dist/src/hooks/__tests__/events.test.js +177 -70
  77. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  78. package/dist/src/hooks/__tests__/registry.test.js +16 -16
  79. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  80. package/dist/src/hooks/events.d.ts +95 -25
  81. package/dist/src/hooks/events.d.ts.map +1 -1
  82. package/dist/src/hooks/events.js +98 -23
  83. package/dist/src/hooks/events.js.map +1 -1
  84. package/dist/src/index.d.ts +6 -5
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/logging/__tests__/warn-once.test.d.ts +2 -0
  88. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +1 -0
  89. package/dist/src/logging/__tests__/warn-once.test.js +30 -0
  90. package/dist/src/logging/__tests__/warn-once.test.js.map +1 -0
  91. package/dist/src/logging/warn-once.d.ts +13 -0
  92. package/dist/src/logging/warn-once.d.ts.map +1 -0
  93. package/dist/src/logging/warn-once.js +18 -0
  94. package/dist/src/logging/warn-once.js.map +1 -0
  95. package/dist/src/mcp.d.ts +20 -1
  96. package/dist/src/mcp.d.ts.map +1 -1
  97. package/dist/src/mcp.js +10 -1
  98. package/dist/src/mcp.js.map +1 -1
  99. package/dist/src/mime.d.ts +2 -1
  100. package/dist/src/mime.d.ts.map +1 -1
  101. package/dist/src/mime.js +1 -0
  102. package/dist/src/mime.js.map +1 -1
  103. package/dist/src/models/__tests__/anthropic.test.js +99 -1
  104. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  105. package/dist/src/models/__tests__/bedrock.test.js +123 -2
  106. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  107. package/dist/src/models/__tests__/google.test.js +88 -0
  108. package/dist/src/models/__tests__/google.test.js.map +1 -1
  109. package/dist/src/models/__tests__/model.test.js +149 -1
  110. package/dist/src/models/__tests__/model.test.js.map +1 -1
  111. package/dist/src/models/anthropic.d.ts +18 -1
  112. package/dist/src/models/anthropic.d.ts.map +1 -1
  113. package/dist/src/models/anthropic.js +40 -6
  114. package/dist/src/models/anthropic.js.map +1 -1
  115. package/dist/src/models/bedrock.d.ts +12 -1
  116. package/dist/src/models/bedrock.d.ts.map +1 -1
  117. package/dist/src/models/bedrock.js +45 -11
  118. package/dist/src/models/bedrock.js.map +1 -1
  119. package/dist/src/models/defaults.d.ts +37 -0
  120. package/dist/src/models/defaults.d.ts.map +1 -0
  121. package/dist/src/models/defaults.js +41 -0
  122. package/dist/src/models/defaults.js.map +1 -0
  123. package/dist/src/models/google/model.d.ts +14 -1
  124. package/dist/src/models/google/model.d.ts.map +1 -1
  125. package/dist/src/models/google/model.js +50 -6
  126. package/dist/src/models/google/model.js.map +1 -1
  127. package/dist/src/models/model.d.ts +56 -0
  128. package/dist/src/models/model.d.ts.map +1 -1
  129. package/dist/src/models/model.js +120 -0
  130. package/dist/src/models/model.js.map +1 -1
  131. package/dist/src/models/openai/__tests__/chat.test.d.ts +2 -0
  132. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +1 -0
  133. package/dist/src/models/{__tests__/openai.test.js → openai/__tests__/chat.test.js} +84 -7
  134. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -0
  135. package/dist/src/models/openai/__tests__/responses.test.d.ts +2 -0
  136. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +1 -0
  137. package/dist/src/models/openai/__tests__/responses.test.js +668 -0
  138. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -0
  139. package/dist/src/models/openai/chat-adapter.d.ts +33 -0
  140. package/dist/src/models/openai/chat-adapter.d.ts.map +1 -0
  141. package/dist/src/models/openai/chat-adapter.js +383 -0
  142. package/dist/src/models/openai/chat-adapter.js.map +1 -0
  143. package/dist/src/models/openai/errors.d.ts +16 -0
  144. package/dist/src/models/openai/errors.d.ts.map +1 -0
  145. package/dist/src/models/openai/errors.js +40 -0
  146. package/dist/src/models/openai/errors.js.map +1 -0
  147. package/dist/src/models/openai/formatting.d.ts +18 -0
  148. package/dist/src/models/openai/formatting.d.ts.map +1 -0
  149. package/dist/src/models/openai/formatting.js +38 -0
  150. package/dist/src/models/openai/formatting.js.map +1 -0
  151. package/dist/src/models/openai/index.d.ts +19 -0
  152. package/dist/src/models/openai/index.d.ts.map +1 -0
  153. package/dist/src/models/openai/index.js +18 -0
  154. package/dist/src/models/openai/index.js.map +1 -0
  155. package/dist/src/models/openai/model.d.ts +77 -0
  156. package/dist/src/models/openai/model.d.ts.map +1 -0
  157. package/dist/src/models/openai/model.js +211 -0
  158. package/dist/src/models/openai/model.js.map +1 -0
  159. package/dist/src/models/openai/responses-adapter.d.ts +78 -0
  160. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -0
  161. package/dist/src/models/openai/responses-adapter.js +467 -0
  162. package/dist/src/models/openai/responses-adapter.js.map +1 -0
  163. package/dist/src/models/openai/types.d.ts +131 -0
  164. package/dist/src/models/openai/types.d.ts.map +1 -0
  165. package/dist/src/models/openai/types.js +5 -0
  166. package/dist/src/models/openai/types.js.map +1 -0
  167. package/dist/src/multiagent/__tests__/events.test.js +122 -28
  168. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  169. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +2 -0
  170. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +1 -0
  171. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +95 -0
  172. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +1 -0
  173. package/dist/src/multiagent/__tests__/nodes.test.js +5 -2
  174. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  175. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +2 -0
  176. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +1 -0
  177. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +56 -0
  178. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +1 -0
  179. package/dist/src/multiagent/events.d.ts +19 -1
  180. package/dist/src/multiagent/events.d.ts.map +1 -1
  181. package/dist/src/multiagent/events.js +18 -0
  182. package/dist/src/multiagent/events.js.map +1 -1
  183. package/dist/src/multiagent/graph.d.ts +5 -3
  184. package/dist/src/multiagent/graph.d.ts.map +1 -1
  185. package/dist/src/multiagent/graph.js +22 -15
  186. package/dist/src/multiagent/graph.js.map +1 -1
  187. package/dist/src/multiagent/index.d.ts +1 -1
  188. package/dist/src/multiagent/index.d.ts.map +1 -1
  189. package/dist/src/multiagent/multiagent.d.ts +16 -3
  190. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  191. package/dist/src/multiagent/nodes.d.ts +10 -3
  192. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  193. package/dist/src/multiagent/nodes.js +28 -6
  194. package/dist/src/multiagent/nodes.js.map +1 -1
  195. package/dist/src/multiagent/swarm.d.ts +5 -3
  196. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  197. package/dist/src/multiagent/swarm.js +22 -16
  198. package/dist/src/multiagent/swarm.js.map +1 -1
  199. package/dist/src/plugins/__tests__/registry.test.js +1 -1
  200. package/dist/src/plugins/__tests__/registry.test.js.map +1 -1
  201. package/dist/src/plugins/model-plugin.d.ts +20 -0
  202. package/dist/src/plugins/model-plugin.d.ts.map +1 -0
  203. package/dist/src/plugins/model-plugin.js +29 -0
  204. package/dist/src/plugins/model-plugin.js.map +1 -0
  205. package/dist/src/session/__tests__/session-manager.test.js +13 -11
  206. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  207. package/dist/src/session/session-manager.d.ts.map +1 -1
  208. package/dist/src/session/session-manager.js +9 -0
  209. package/dist/src/session/session-manager.js.map +1 -1
  210. package/dist/src/telemetry/__tests__/config.test.js +6 -6
  211. package/dist/src/telemetry/__tests__/config.test.js.map +1 -1
  212. package/dist/src/telemetry/__tests__/config.test.node.js +16 -11
  213. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
  214. package/dist/src/telemetry/__tests__/meter.test.js +23 -0
  215. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  216. package/dist/src/telemetry/config.d.ts +9 -3
  217. package/dist/src/telemetry/config.d.ts.map +1 -1
  218. package/dist/src/telemetry/config.js +44 -69
  219. package/dist/src/telemetry/config.js.map +1 -1
  220. package/dist/src/telemetry/meter.d.ts +15 -0
  221. package/dist/src/telemetry/meter.d.ts.map +1 -1
  222. package/dist/src/telemetry/meter.js +14 -0
  223. package/dist/src/telemetry/meter.js.map +1 -1
  224. package/dist/src/tools/mcp-tool.d.ts +24 -3
  225. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  226. package/dist/src/tools/mcp-tool.js +105 -14
  227. package/dist/src/tools/mcp-tool.js.map +1 -1
  228. package/dist/src/tools/tool.d.ts +11 -1
  229. package/dist/src/tools/tool.d.ts.map +1 -1
  230. package/dist/src/tools/tool.js.map +1 -1
  231. package/dist/src/tsconfig.tsbuildinfo +1 -1
  232. package/dist/src/types/__tests__/agent.test.js +48 -0
  233. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  234. package/dist/src/types/agent.d.ts +55 -6
  235. package/dist/src/types/agent.d.ts.map +1 -1
  236. package/dist/src/types/agent.js +22 -6
  237. package/dist/src/types/agent.js.map +1 -1
  238. package/dist/src/types/elicitation.d.ts +15 -0
  239. package/dist/src/types/elicitation.d.ts.map +1 -0
  240. package/dist/src/types/elicitation.js +2 -0
  241. package/dist/src/types/elicitation.js.map +1 -0
  242. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +37 -33
  243. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  244. package/dist/src/vended-plugins/skills/agent-skills.d.ts +8 -8
  245. package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
  246. package/dist/src/vended-plugins/skills/agent-skills.js +5 -5
  247. package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
  248. package/dist/src/vended-plugins/skills/index.d.ts +5 -5
  249. package/dist/src/vended-plugins/skills/index.d.ts.map +1 -1
  250. package/dist/src/vended-plugins/skills/index.js +4 -4
  251. package/dist/src/vended-plugins/skills/index.js.map +1 -1
  252. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +1 -0
  253. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  254. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +1 -0
  255. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  256. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +1 -0
  257. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  258. package/package.json +28 -26
  259. package/dist/src/models/__tests__/openai.test.d.ts +0 -2
  260. package/dist/src/models/__tests__/openai.test.d.ts.map +0 -1
  261. package/dist/src/models/__tests__/openai.test.js.map +0 -1
  262. package/dist/src/models/openai.d.ts +0 -312
  263. package/dist/src/models/openai.d.ts.map +0 -1
  264. package/dist/src/models/openai.js +0 -789
  265. package/dist/src/models/openai.js.map +0 -1
@@ -24,6 +24,20 @@ import type { AttributeValue } from '@opentelemetry/api';
24
24
  * `.asTool()` explicitly.
25
25
  */
26
26
  export type ToolList = (Tool | McpClient | Agent | ToolList)[];
27
+ /**
28
+ * Strategy for executing tool calls that the model emits in a single assistant turn.
29
+ *
30
+ * - `'concurrent'` (default) — runs all tool calls from a single turn in parallel. Per-tool event
31
+ * order (`BeforeToolCallEvent` → `ToolStreamUpdateEvent*` → `AfterToolCallEvent` →
32
+ * `ToolResultEvent`) is preserved, while cross-tool events may interleave.
33
+ * - `'sequential'` — runs tool calls one at a time
34
+ *
35
+ * Cancellation works identically in both modes: {@link Agent.cancel} flips
36
+ * {@link Agent.cancelSignal} and tools must observe it cooperatively to stop early.
37
+ * In concurrent mode, prompt batch-wide cancellation requires every in-flight tool
38
+ * to honor the signal.
39
+ */
40
+ export type ToolExecutorStrategy = 'sequential' | 'concurrent';
27
41
  /**
28
42
  * Configuration object for creating a new Agent.
29
43
  */
@@ -65,6 +79,11 @@ export type AgentConfig = {
65
79
  systemPrompt?: SystemPrompt | SystemPromptData;
66
80
  /** Optional initial state values for the agent. */
67
81
  appState?: Record<string, JSONValue>;
82
+ /**
83
+ * Optional initial model-provider state (e.g., restoring `responseId` from a
84
+ * prior session). Typically only set when hydrating from a snapshot.
85
+ */
86
+ modelState?: Record<string, JSONValue>;
68
87
  /**
69
88
  * Enable automatic printing of agent output to console.
70
89
  * When true, prints text generation, reasoning, and tool usage as they occur.
@@ -106,6 +125,11 @@ export type AgentConfig = {
106
125
  * Optional unique identifier for the agent. Defaults to "agent".
107
126
  */
108
127
  id?: string;
128
+ /**
129
+ * Strategy for executing tool calls from a single assistant turn.
130
+ * Defaults to `'concurrent'`. See {@link ToolExecutorStrategy} for details.
131
+ */
132
+ toolExecutor?: ToolExecutorStrategy;
109
133
  };
110
134
  /**
111
135
  * Orchestrates the interaction between a model, a set of tools, and MCP clients.
@@ -124,6 +148,12 @@ export declare class Agent implements LocalAgent, InvokableAgent {
124
148
  * State is not passed to the model during inference.
125
149
  */
126
150
  readonly appState: StateStore;
151
+ /**
152
+ * Runtime state for the model provider. Used by stateful models to persist
153
+ * provider-specific data (e.g., response IDs for conversation chaining)
154
+ * across invocations.
155
+ */
156
+ readonly modelState: StateStore;
127
157
  private readonly _conversationManager;
128
158
  /**
129
159
  * The model provider used by the agent for inference.
@@ -163,6 +193,8 @@ export declare class Agent implements LocalAgent, InvokableAgent {
163
193
  private _tracer;
164
194
  /** Meter instance for accumulating loop metrics during invocation. */
165
195
  private _meter;
196
+ /** Strategy for executing tool calls from a single assistant turn. */
197
+ private readonly _toolExecutor;
166
198
  /**
167
199
  * Creates an instance of the Agent.
168
200
  * @param config - The configuration for the agent.
@@ -381,13 +413,43 @@ export declare class Agent implements LocalAgent, InvokableAgent {
381
413
  */
382
414
  private _streamFromModel;
383
415
  /**
384
- * Executes tools sequentially and streams all tool events.
416
+ * Emits `BeforeToolsEvent`, handles the pre-launch cancel paths, then
417
+ * delegates per-tool execution to the configured {@link ToolExecutorStrategy}.
418
+ * Always pairs `BeforeToolsEvent` with a terminal `AfterToolsEvent`, even on
419
+ * the invariant-violation throw path.
385
420
  *
386
421
  * @param assistantMessage - The assistant message containing tool use blocks
387
422
  * @param toolRegistry - Registry containing available tools
388
423
  * @returns User message containing tool results
389
424
  */
390
425
  private executeTools;
426
+ /**
427
+ * Emits a `ToolResultEvent` for every block plus an `AfterToolsEvent`, and
428
+ * returns the resulting tool-result message. Used by the pre-launch cancel
429
+ * paths shared across executors.
430
+ */
431
+ private _yieldCancelledToolResults;
432
+ /**
433
+ * Executes tools one at a time, honoring `agent.cancelSignal` between
434
+ * iterations to short-circuit not-yet-started tools.
435
+ */
436
+ private _executeToolsSequential;
437
+ /**
438
+ * Produces one error ToolResultBlock per tool use block, each carrying
439
+ * `message` as its error text. Shared by pre-launch cancel paths.
440
+ */
441
+ private _cancelAllAsResults;
442
+ /**
443
+ * Executes tools concurrently by merging N per-tool {@link executeTool}
444
+ * async generators via `Promise.race`. Per-tool event order is preserved
445
+ * (because each generator is iterated serially); cross-tool events may
446
+ * interleave at race resolution boundaries.
447
+ *
448
+ * Per-tool retry (`AfterToolCallEvent.retry`) is isolated — it lives inside
449
+ * `executeTool`'s own `while(true)` loop, so one tool retrying does not
450
+ * disturb its siblings.
451
+ */
452
+ private _executeToolsConcurrent;
391
453
  /**
392
454
  * Executes a single tool and returns the result.
393
455
  * If the tool is not found or fails to return a result, returns an error ToolResult
@@ -412,6 +474,18 @@ export declare class Agent implements LocalAgent, InvokableAgent {
412
474
  * @param redactMessage - The redaction message to replace the content with
413
475
  */
414
476
  private _redactLastMessage;
477
+ /**
478
+ * Estimate the input token count for the next model call.
479
+ *
480
+ * Uses the token counting strategy: reads inputTokens + outputTokens
481
+ * from the last assistant message's metadata as a known baseline, then estimates
482
+ * only new messages added after it. Falls back to full estimation when no metadata
483
+ * is available (cold start or first call).
484
+ *
485
+ * @param streamOptions - The stream options containing system prompt and tool specs
486
+ * @returns Estimated input token count
487
+ */
488
+ private _estimateInputTokens;
415
489
  /**
416
490
  * Appends a message to the conversation history and returns the event for yielding.
417
491
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}