@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,470 @@
1
+ import { describe, expect, it, vi, beforeEach } from 'vitest';
2
+ import { Agent } from '../agent.js';
3
+ import { MockMessageModel } from '../../__fixtures__/mock-message-model.js';
4
+ import { createMockTool } from '../../__fixtures__/tool-helpers.js';
5
+ import { TextBlock, ToolUseBlock, ToolResultBlock, MaxTokensError, StructuredOutputException } from '../../index.js';
6
+ import { Tracer } from '../../telemetry/tracer.js';
7
+ import { z } from 'zod';
8
+ vi.mock('../../telemetry/tracer.js', () => ({
9
+ Tracer: vi.fn(function () {
10
+ return {
11
+ startAgentSpan: vi.fn().mockReturnValue({ mock: 'agentSpan' }),
12
+ endAgentSpan: vi.fn(),
13
+ startAgentLoopSpan: vi.fn().mockReturnValue({ mock: 'loopSpan' }),
14
+ endAgentLoopSpan: vi.fn(),
15
+ startModelInvokeSpan: vi.fn().mockReturnValue({ mock: 'modelSpan' }),
16
+ endModelInvokeSpan: vi.fn(),
17
+ startToolCallSpan: vi.fn().mockReturnValue({ mock: 'toolSpan' }),
18
+ endToolCallSpan: vi.fn(),
19
+ withSpanContext: vi.fn((_span, fn) => fn()),
20
+ };
21
+ }),
22
+ }));
23
+ function getLatestTracer() {
24
+ return vi.mocked(Tracer).mock.results.at(-1).value;
25
+ }
26
+ describe('Agent tracer integration', () => {
27
+ beforeEach(() => {
28
+ vi.clearAllMocks();
29
+ });
30
+ describe('constructor', () => {
31
+ it('initializes Tracer with traceAttributes from config', () => {
32
+ const traceAttributes = { 'custom.attr': 'value' };
33
+ new Agent({ traceAttributes });
34
+ expect(Tracer).toHaveBeenCalledWith(traceAttributes);
35
+ });
36
+ it('initializes Tracer without traceAttributes when not provided', () => {
37
+ new Agent();
38
+ expect(Tracer).toHaveBeenCalledWith(undefined);
39
+ });
40
+ });
41
+ describe('name and agentId', () => {
42
+ it('defaults name to "Strands Agent"', () => {
43
+ const agent = new Agent();
44
+ expect(agent.name).toBe('Strands Agent');
45
+ });
46
+ it('uses provided name', () => {
47
+ const agent = new Agent({ name: 'My Agent' });
48
+ expect(agent.name).toBe('My Agent');
49
+ });
50
+ it('defaults agentId to "default"', () => {
51
+ const agent = new Agent();
52
+ expect(agent.agentId).toBe('default');
53
+ });
54
+ it('uses provided agentId', () => {
55
+ const agent = new Agent({ agentId: 'custom-id-123' });
56
+ expect(agent.agentId).toBe('custom-id-123');
57
+ });
58
+ });
59
+ describe('agent span lifecycle', () => {
60
+ it('starts and ends agent span on successful invocation', async () => {
61
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
62
+ const agent = new Agent({ model, name: 'TestAgent', agentId: 'test-id' });
63
+ const tracer = getLatestTracer();
64
+ await agent.invoke('Hi');
65
+ expect(tracer.startAgentSpan).toHaveBeenCalledTimes(1);
66
+ expect(tracer.startAgentSpan).toHaveBeenCalledWith(expect.objectContaining({
67
+ agentName: 'TestAgent',
68
+ agentId: 'test-id',
69
+ modelId: 'test-model',
70
+ }));
71
+ expect(tracer.endAgentSpan).toHaveBeenCalledTimes(1);
72
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith({ mock: 'agentSpan' }, expect.objectContaining({
73
+ response: expect.objectContaining({ role: 'assistant' }),
74
+ stopReason: 'endTurn',
75
+ }));
76
+ });
77
+ it('ends agent span with error when invocation fails', async () => {
78
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Partial' }, 'maxTokens');
79
+ const agent = new Agent({ model });
80
+ const tracer = getLatestTracer();
81
+ await expect(agent.invoke('Hi')).rejects.toThrow(MaxTokensError);
82
+ expect(tracer.startAgentSpan).toHaveBeenCalledTimes(1);
83
+ expect(tracer.endAgentSpan).toHaveBeenCalledTimes(1);
84
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith({ mock: 'agentSpan' }, expect.objectContaining({
85
+ error: expect.any(MaxTokensError),
86
+ }));
87
+ });
88
+ it('includes systemPrompt in agent span when configured', async () => {
89
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
90
+ const agent = new Agent({ model, systemPrompt: 'Be helpful' });
91
+ const tracer = getLatestTracer();
92
+ await agent.invoke('Hi');
93
+ expect(tracer.startAgentSpan).toHaveBeenCalledWith(expect.objectContaining({
94
+ systemPrompt: 'Be helpful',
95
+ }));
96
+ });
97
+ it('includes tools in agent span', async () => {
98
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
99
+ const tool = createMockTool('myTool', () => new ToolResultBlock({
100
+ toolUseId: 'id',
101
+ status: 'success',
102
+ content: [],
103
+ }));
104
+ const agent = new Agent({ model, tools: [tool] });
105
+ const tracer = getLatestTracer();
106
+ await agent.invoke('Hi');
107
+ expect(tracer.startAgentSpan).toHaveBeenCalledWith(expect.objectContaining({
108
+ tools: expect.arrayContaining([expect.objectContaining({ name: 'myTool' })]),
109
+ }));
110
+ });
111
+ });
112
+ describe('agent loop span lifecycle', () => {
113
+ it('starts and ends loop span for each cycle', async () => {
114
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Done' });
115
+ const agent = new Agent({ model });
116
+ const tracer = getLatestTracer();
117
+ await agent.invoke('Hi');
118
+ expect(tracer.startAgentLoopSpan).toHaveBeenCalledTimes(1);
119
+ expect(tracer.startAgentLoopSpan).toHaveBeenCalledWith(expect.objectContaining({ cycleId: 'cycle-1' }));
120
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledTimes(1);
121
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledWith({ mock: 'loopSpan' });
122
+ });
123
+ it('creates multiple loop spans for multi-cycle invocations', async () => {
124
+ const model = new MockMessageModel()
125
+ .addTurn({ type: 'toolUseBlock', name: 'testTool', toolUseId: 'tool-1', input: {} })
126
+ .addTurn({ type: 'textBlock', text: 'Done' });
127
+ const tool = createMockTool('testTool', () => new ToolResultBlock({
128
+ toolUseId: 'tool-1',
129
+ status: 'success',
130
+ content: [new TextBlock('Result')],
131
+ }));
132
+ const agent = new Agent({ model, tools: [tool] });
133
+ const tracer = getLatestTracer();
134
+ await agent.invoke('Use tool');
135
+ expect(tracer.startAgentLoopSpan).toHaveBeenCalledTimes(2);
136
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(1, expect.objectContaining({ cycleId: 'cycle-1' }));
137
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(2, expect.objectContaining({ cycleId: 'cycle-2' }));
138
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledTimes(2);
139
+ });
140
+ it('ends loop span with error when cycle fails', async () => {
141
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Partial' }, 'maxTokens');
142
+ const agent = new Agent({ model });
143
+ const tracer = getLatestTracer();
144
+ await expect(agent.invoke('Hi')).rejects.toThrow(MaxTokensError);
145
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledWith({ mock: 'loopSpan' }, expect.objectContaining({ error: expect.any(MaxTokensError) }));
146
+ });
147
+ it('ends loop span for cycles where structured output forces tool choice via continue', async () => {
148
+ const schema = z.object({ value: z.number() });
149
+ // Turn 1: model returns text (no tool use) → triggers forced tool choice continue
150
+ // Turn 2: model uses the structured output tool → tool execution cycle
151
+ // Turn 3: model returns text (endTurn) → final cycle with result
152
+ const model = new MockMessageModel()
153
+ .addTurn({ type: 'textBlock', text: 'First response' })
154
+ .addTurn({ type: 'toolUseBlock', name: 'strands_structured_output', toolUseId: 'tool-1', input: { value: 42 } })
155
+ .addTurn({ type: 'textBlock', text: 'Done' });
156
+ const agent = new Agent({ model, structuredOutputSchema: schema });
157
+ const tracer = getLatestTracer();
158
+ await agent.invoke('Test');
159
+ // Every started loop span must be ended — including the cycle that hit continue
160
+ expect(tracer.startAgentLoopSpan).toHaveBeenCalledTimes(3);
161
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(1, expect.objectContaining({ cycleId: 'cycle-1' }));
162
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(2, expect.objectContaining({ cycleId: 'cycle-2' }));
163
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(3, expect.objectContaining({ cycleId: 'cycle-3' }));
164
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledTimes(3);
165
+ // All three cycles end without error (continue cycle, tool use cycle, final cycle)
166
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(1, { mock: 'loopSpan' });
167
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(2, { mock: 'loopSpan' });
168
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(3, { mock: 'loopSpan' });
169
+ });
170
+ });
171
+ describe('model invoke span lifecycle', () => {
172
+ it('starts and ends model span on successful model call', async () => {
173
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
174
+ const agent = new Agent({ model });
175
+ const tracer = getLatestTracer();
176
+ await agent.invoke('Hi');
177
+ expect(tracer.startModelInvokeSpan).toHaveBeenCalledTimes(1);
178
+ expect(tracer.startModelInvokeSpan).toHaveBeenCalledWith(expect.objectContaining({ modelId: 'test-model' }));
179
+ expect(tracer.endModelInvokeSpan).toHaveBeenCalledTimes(1);
180
+ expect(tracer.endModelInvokeSpan).toHaveBeenCalledWith({ mock: 'modelSpan' }, expect.objectContaining({
181
+ output: expect.objectContaining({ role: 'assistant' }),
182
+ stopReason: 'endTurn',
183
+ }));
184
+ });
185
+ it('ends model span with error when model call fails', async () => {
186
+ const model = new MockMessageModel().addTurn(new Error('Model failed'));
187
+ const agent = new Agent({ model });
188
+ const tracer = getLatestTracer();
189
+ await expect(agent.invoke('Hi')).rejects.toThrow();
190
+ expect(tracer.endModelInvokeSpan).toHaveBeenCalledWith({ mock: 'modelSpan' }, expect.objectContaining({ error: expect.any(Error) }));
191
+ });
192
+ it('creates model span for each model call in multi-cycle invocation', async () => {
193
+ const model = new MockMessageModel()
194
+ .addTurn({ type: 'toolUseBlock', name: 'testTool', toolUseId: 'tool-1', input: {} })
195
+ .addTurn({ type: 'textBlock', text: 'Done' });
196
+ const tool = createMockTool('testTool', () => new ToolResultBlock({
197
+ toolUseId: 'tool-1',
198
+ status: 'success',
199
+ content: [new TextBlock('Result')],
200
+ }));
201
+ const agent = new Agent({ model, tools: [tool] });
202
+ const tracer = getLatestTracer();
203
+ await agent.invoke('Use tool');
204
+ expect(tracer.startModelInvokeSpan).toHaveBeenCalledTimes(2);
205
+ expect(tracer.endModelInvokeSpan).toHaveBeenCalledTimes(2);
206
+ });
207
+ });
208
+ describe('tool call span lifecycle', () => {
209
+ it('starts and ends tool span for each tool execution', async () => {
210
+ const model = new MockMessageModel()
211
+ .addTurn({ type: 'toolUseBlock', name: 'testTool', toolUseId: 'tool-1', input: { key: 'val' } })
212
+ .addTurn({ type: 'textBlock', text: 'Done' });
213
+ const tool = createMockTool('testTool', () => new ToolResultBlock({
214
+ toolUseId: 'tool-1',
215
+ status: 'success',
216
+ content: [new TextBlock('Result')],
217
+ }));
218
+ const agent = new Agent({ model, tools: [tool] });
219
+ const tracer = getLatestTracer();
220
+ await agent.invoke('Use tool');
221
+ expect(tracer.startToolCallSpan).toHaveBeenCalledTimes(1);
222
+ expect(tracer.startToolCallSpan).toHaveBeenCalledWith({
223
+ tool: expect.objectContaining({
224
+ name: 'testTool',
225
+ toolUseId: 'tool-1',
226
+ input: { key: 'val' },
227
+ }),
228
+ });
229
+ expect(tracer.endToolCallSpan).toHaveBeenCalledTimes(1);
230
+ expect(tracer.endToolCallSpan).toHaveBeenCalledWith({ mock: 'toolSpan' }, expect.objectContaining({
231
+ toolResult: expect.objectContaining({ toolUseId: 'tool-1', status: 'success' }),
232
+ }));
233
+ });
234
+ it('ends tool span with error when tool is not found', async () => {
235
+ const model = new MockMessageModel()
236
+ .addTurn({ type: 'toolUseBlock', name: 'missingTool', toolUseId: 'tool-1', input: {} })
237
+ .addTurn({ type: 'textBlock', text: 'Done' });
238
+ const agent = new Agent({ model });
239
+ const tracer = getLatestTracer();
240
+ await agent.invoke('Use tool');
241
+ expect(tracer.endToolCallSpan).toHaveBeenCalledWith({ mock: 'toolSpan' }, expect.objectContaining({
242
+ toolResult: expect.objectContaining({ status: 'error' }),
243
+ }));
244
+ });
245
+ it('ends tool span with error when tool throws', async () => {
246
+ const model = new MockMessageModel()
247
+ .addTurn({ type: 'toolUseBlock', name: 'failTool', toolUseId: 'tool-1', input: {} })
248
+ .addTurn({ type: 'textBlock', text: 'Done' });
249
+ const tool = createMockTool('failTool', () => {
250
+ throw new Error('Tool exploded');
251
+ });
252
+ const agent = new Agent({ model, tools: [tool] });
253
+ const tracer = getLatestTracer();
254
+ await agent.invoke('Use tool');
255
+ expect(tracer.endToolCallSpan).toHaveBeenCalledWith({ mock: 'toolSpan' }, expect.objectContaining({
256
+ error: expect.any(Error),
257
+ toolResult: expect.objectContaining({ status: 'error' }),
258
+ }));
259
+ });
260
+ it('creates spans for multiple tool calls in a single turn', async () => {
261
+ const model = new MockMessageModel()
262
+ .addTurn([
263
+ new ToolUseBlock({ name: 'tool1', toolUseId: 'id-1', input: {} }),
264
+ new ToolUseBlock({ name: 'tool2', toolUseId: 'id-2', input: {} }),
265
+ ])
266
+ .addTurn({ type: 'textBlock', text: 'Done' });
267
+ const tool1 = createMockTool('tool1', () => new ToolResultBlock({
268
+ toolUseId: 'id-1',
269
+ status: 'success',
270
+ content: [new TextBlock('R1')],
271
+ }));
272
+ const tool2 = createMockTool('tool2', () => new ToolResultBlock({
273
+ toolUseId: 'id-2',
274
+ status: 'success',
275
+ content: [new TextBlock('R2')],
276
+ }));
277
+ const agent = new Agent({ model, tools: [tool1, tool2] });
278
+ const tracer = getLatestTracer();
279
+ await agent.invoke('Use tools');
280
+ expect(tracer.startToolCallSpan).toHaveBeenCalledTimes(2);
281
+ expect(tracer.endToolCallSpan).toHaveBeenCalledTimes(2);
282
+ });
283
+ });
284
+ describe('token usage accumulation', () => {
285
+ it('passes accumulated usage to endAgentSpan', async () => {
286
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
287
+ const agent = new Agent({ model });
288
+ const tracer = getLatestTracer();
289
+ await agent.invoke('Hi');
290
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith({ mock: 'agentSpan' }, expect.objectContaining({
291
+ accumulatedUsage: expect.objectContaining({
292
+ inputTokens: expect.any(Number),
293
+ outputTokens: expect.any(Number),
294
+ totalTokens: expect.any(Number),
295
+ }),
296
+ }));
297
+ });
298
+ });
299
+ describe('null span handling', () => {
300
+ it('completes successfully when startAgentSpan returns null', async () => {
301
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
302
+ const agent = new Agent({ model });
303
+ const tracer = getLatestTracer();
304
+ tracer.startAgentSpan.mockReturnValue(null);
305
+ const result = await agent.invoke('Hi');
306
+ expect(result.stopReason).toBe('endTurn');
307
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith(null, expect.any(Object));
308
+ });
309
+ it('completes successfully when startAgentLoopSpan returns null', async () => {
310
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
311
+ const agent = new Agent({ model });
312
+ const tracer = getLatestTracer();
313
+ tracer.startAgentLoopSpan.mockReturnValue(null);
314
+ const result = await agent.invoke('Hi');
315
+ expect(result.stopReason).toBe('endTurn');
316
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledWith(null);
317
+ });
318
+ it('completes successfully when startModelInvokeSpan returns null', async () => {
319
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
320
+ const agent = new Agent({ model });
321
+ const tracer = getLatestTracer();
322
+ tracer.startModelInvokeSpan.mockReturnValue(null);
323
+ const result = await agent.invoke('Hi');
324
+ expect(result.stopReason).toBe('endTurn');
325
+ });
326
+ it('completes successfully when startToolCallSpan returns null', async () => {
327
+ const model = new MockMessageModel()
328
+ .addTurn({ type: 'toolUseBlock', name: 'testTool', toolUseId: 'tool-1', input: {} })
329
+ .addTurn({ type: 'textBlock', text: 'Done' });
330
+ const tool = createMockTool('testTool', () => new ToolResultBlock({
331
+ toolUseId: 'tool-1',
332
+ status: 'success',
333
+ content: [new TextBlock('Result')],
334
+ }));
335
+ const agent = new Agent({ model, tools: [tool] });
336
+ const tracer = getLatestTracer();
337
+ tracer.startToolCallSpan.mockReturnValue(null);
338
+ const result = await agent.invoke('Use tool');
339
+ expect(result.stopReason).toBe('endTurn');
340
+ expect(tracer.endToolCallSpan).toHaveBeenCalledWith(null, expect.any(Object));
341
+ });
342
+ });
343
+ describe('span context hierarchy', () => {
344
+ it('resets accumulated usage on each invocation', async () => {
345
+ const model = new MockMessageModel()
346
+ .addTurn({ type: 'textBlock', text: 'First' })
347
+ .addTurn({ type: 'textBlock', text: 'Second' });
348
+ const agent = new Agent({ model });
349
+ const tracer = getLatestTracer();
350
+ await agent.invoke('First');
351
+ await agent.invoke('Second');
352
+ expect(tracer.startAgentSpan).toHaveBeenCalledTimes(2);
353
+ expect(tracer.endAgentSpan).toHaveBeenCalledTimes(2);
354
+ });
355
+ });
356
+ describe('structured output and telemetry interaction', () => {
357
+ it('creates tool span for structured output tool execution', async () => {
358
+ const schema = z.object({ value: z.number() });
359
+ const model = new MockMessageModel()
360
+ .addTurn({ type: 'toolUseBlock', name: 'strands_structured_output', toolUseId: 'tool-1', input: { value: 42 } })
361
+ .addTurn({ type: 'textBlock', text: 'Done' });
362
+ const agent = new Agent({ model, structuredOutputSchema: schema });
363
+ const tracer = getLatestTracer();
364
+ await agent.invoke('Test');
365
+ expect(tracer.startToolCallSpan).toHaveBeenCalledWith({
366
+ tool: expect.objectContaining({ name: 'strands_structured_output' }),
367
+ });
368
+ expect(tracer.endToolCallSpan).toHaveBeenCalledWith({ mock: 'toolSpan' }, expect.objectContaining({
369
+ toolResult: expect.objectContaining({ status: 'success' }),
370
+ }));
371
+ });
372
+ it('ends agent span with error when model refuses structured output tool after forcing', async () => {
373
+ const schema = z.object({ value: z.number() });
374
+ // Single-turn model always returns text — first normally, then when forced
375
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'I refuse' });
376
+ const agent = new Agent({ model, structuredOutputSchema: schema });
377
+ const tracer = getLatestTracer();
378
+ await expect(agent.invoke('Test')).rejects.toThrow(StructuredOutputException);
379
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith({ mock: 'agentSpan' }, expect.objectContaining({ error: expect.any(StructuredOutputException) }));
380
+ });
381
+ it('ends cycle span with error on StructuredOutputException', async () => {
382
+ const schema = z.object({ value: z.number() });
383
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'I refuse' });
384
+ const agent = new Agent({ model, structuredOutputSchema: schema });
385
+ const tracer = getLatestTracer();
386
+ await expect(agent.invoke('Test')).rejects.toThrow(StructuredOutputException);
387
+ // Cycle 1: text response → continue (span ended normally)
388
+ // Cycle 2: text response again with forced tool → StructuredOutputException (span ended with error)
389
+ expect(tracer.startAgentLoopSpan).toHaveBeenCalledTimes(2);
390
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledTimes(2);
391
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(1, { mock: 'loopSpan' });
392
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(2, { mock: 'loopSpan' }, expect.objectContaining({ error: expect.any(StructuredOutputException) }));
393
+ });
394
+ it('ends agent span with result on successful structured output', async () => {
395
+ const schema = z.object({ value: z.number() });
396
+ const model = new MockMessageModel()
397
+ .addTurn({ type: 'toolUseBlock', name: 'strands_structured_output', toolUseId: 'tool-1', input: { value: 42 } })
398
+ .addTurn({ type: 'textBlock', text: 'Done' });
399
+ const agent = new Agent({ model, structuredOutputSchema: schema });
400
+ const tracer = getLatestTracer();
401
+ await agent.invoke('Test');
402
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith({ mock: 'agentSpan' }, expect.objectContaining({
403
+ response: expect.objectContaining({ role: 'assistant' }),
404
+ stopReason: 'endTurn',
405
+ }));
406
+ });
407
+ it('creates correct spans for validation retry cycle', async () => {
408
+ const schema = z.object({ name: z.string(), age: z.number() });
409
+ // Turn 1: invalid input → tool returns error
410
+ // Turn 2: valid input → tool succeeds
411
+ // Turn 3: model finishes
412
+ const model = new MockMessageModel()
413
+ .addTurn({
414
+ type: 'toolUseBlock',
415
+ name: 'strands_structured_output',
416
+ toolUseId: 'tool-1',
417
+ input: { name: 'John', age: 'not-a-number' },
418
+ })
419
+ .addTurn({
420
+ type: 'toolUseBlock',
421
+ name: 'strands_structured_output',
422
+ toolUseId: 'tool-2',
423
+ input: { name: 'John', age: 30 },
424
+ })
425
+ .addTurn({ type: 'textBlock', text: 'Done' });
426
+ const agent = new Agent({ model, structuredOutputSchema: schema });
427
+ const tracer = getLatestTracer();
428
+ await agent.invoke('Test');
429
+ // 3 cycles: invalid tool use, valid tool use, final text — all end without error
430
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(1, expect.objectContaining({ cycleId: 'cycle-1' }));
431
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(2, expect.objectContaining({ cycleId: 'cycle-2' }));
432
+ expect(tracer.startAgentLoopSpan).toHaveBeenNthCalledWith(3, expect.objectContaining({ cycleId: 'cycle-3' }));
433
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledTimes(3);
434
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(1, { mock: 'loopSpan' });
435
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(2, { mock: 'loopSpan' });
436
+ expect(tracer.endAgentLoopSpan).toHaveBeenNthCalledWith(3, { mock: 'loopSpan' });
437
+ // 3 model calls, one per cycle — all end without error
438
+ expect(tracer.startModelInvokeSpan).toHaveBeenCalledTimes(3);
439
+ expect(tracer.endModelInvokeSpan).toHaveBeenCalledTimes(3);
440
+ for (let i = 1; i <= 3; i++) {
441
+ expect(tracer.endModelInvokeSpan).toHaveBeenNthCalledWith(i, { mock: 'modelSpan' }, expect.objectContaining({ output: expect.objectContaining({ role: 'assistant' }) }));
442
+ }
443
+ // 2 tool calls: first with validation error, second succeeds
444
+ expect(tracer.startToolCallSpan).toHaveBeenCalledTimes(2);
445
+ expect(tracer.startToolCallSpan).toHaveBeenNthCalledWith(1, {
446
+ tool: expect.objectContaining({ name: 'strands_structured_output', toolUseId: 'tool-1' }),
447
+ });
448
+ expect(tracer.startToolCallSpan).toHaveBeenNthCalledWith(2, {
449
+ tool: expect.objectContaining({ name: 'strands_structured_output', toolUseId: 'tool-2' }),
450
+ });
451
+ expect(tracer.endToolCallSpan).toHaveBeenCalledTimes(2);
452
+ expect(tracer.endToolCallSpan).toHaveBeenNthCalledWith(1, { mock: 'toolSpan' }, expect.objectContaining({
453
+ toolResult: expect.objectContaining({ toolUseId: 'tool-1', status: 'error' }),
454
+ }));
455
+ expect(tracer.endToolCallSpan).toHaveBeenNthCalledWith(2, { mock: 'toolSpan' }, expect.objectContaining({
456
+ toolResult: expect.objectContaining({ toolUseId: 'tool-2', status: 'success' }),
457
+ }));
458
+ });
459
+ it('ends agent span with error on maxTokens with structured output schema', async () => {
460
+ const schema = z.object({ value: z.number() });
461
+ const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Partial' }, 'maxTokens');
462
+ const agent = new Agent({ model, structuredOutputSchema: schema });
463
+ const tracer = getLatestTracer();
464
+ await expect(agent.invoke('Test')).rejects.toThrow(MaxTokensError);
465
+ expect(tracer.endAgentSpan).toHaveBeenCalledWith({ mock: 'agentSpan' }, expect.objectContaining({ error: expect.any(MaxTokensError) }));
466
+ expect(tracer.endAgentLoopSpan).toHaveBeenCalledWith({ mock: 'loopSpan' }, expect.objectContaining({ error: expect.any(MaxTokensError) }));
467
+ });
468
+ });
469
+ });
470
+ //# sourceMappingURL=agent.tracer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.tracer.test.js","sourceRoot":"","sources":["../../../../src/agent/__tests__/agent.tracer.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Agent } from '../agent.js';
4
4
  import { MockMessageModel } from '../../__fixtures__/mock-message-model.js';
5
5
  import { collectGenerator } from '../../__fixtures__/model-test-helpers.js';
6
6
  import { createMockTool } from '../../__fixtures__/tool-helpers.js';
7
- import { TextBlock } from '../../types/messages.js';
7
+ import { TextBlock, ToolResultBlock } from '../../types/messages.js';
8
8
  describe('AgentPrinter', () => {
9
9
  describe('end-to-end scenarios', () => {
10
10
  it('prints simple text output', async () => {
@@ -63,8 +63,7 @@ describe('AgentPrinter', () => {
63
63
  const model = new MockMessageModel()
64
64
  .addTurn({ type: 'toolUseBlock', name: 'calc', toolUseId: 'tool-1', input: {} })
65
65
  .addTurn({ type: 'textBlock', text: 'Result: 4' });
66
- const tool = createMockTool('calc', () => ({
67
- type: 'toolResultBlock',
66
+ const tool = createMockTool('calc', () => new ToolResultBlock({
68
67
  toolUseId: 'tool-1',
69
68
  status: 'success',
70
69
  content: [new TextBlock('4')],
@@ -81,8 +80,7 @@ describe('AgentPrinter', () => {
81
80
  const model = new MockMessageModel()
82
81
  .addTurn({ type: 'toolUseBlock', name: 'bad_tool', toolUseId: 'tool-1', input: {} })
83
82
  .addTurn({ type: 'textBlock', text: 'Error handled' });
84
- const tool = createMockTool('bad_tool', () => ({
85
- type: 'toolResultBlock',
83
+ const tool = createMockTool('bad_tool', () => new ToolResultBlock({
86
84
  toolUseId: 'tool-1',
87
85
  status: 'error',
88
86
  content: [new TextBlock('Failed')],
@@ -111,14 +109,12 @@ describe('AgentPrinter', () => {
111
109
  { type: 'textBlock', text: 'All done. ' },
112
110
  { type: 'reasoningBlock', text: 'Task completed successfully' },
113
111
  ]);
114
- const calcTool = createMockTool('calculator', () => ({
115
- type: 'toolResultBlock',
112
+ const calcTool = createMockTool('calculator', () => new ToolResultBlock({
116
113
  toolUseId: 'tool-1',
117
114
  status: 'success',
118
115
  content: [new TextBlock('4')],
119
116
  }));
120
- const validatorTool = createMockTool('validator', () => ({
121
- type: 'toolResultBlock',
117
+ const validatorTool = createMockTool('validator', () => new ToolResultBlock({
122
118
  toolUseId: 'tool-2',
123
119
  status: 'error',
124
120
  content: [new TextBlock('Validation failed')],
@@ -1 +1 @@
1
- {"version":3,"file":"printer.test.js","sourceRoot":"","sources":["../../../../src/agent/__tests__/printer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"printer.test.js","sourceRoot":"","sources":["../../../../src/agent/__tests__/printer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=snapshot.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.test.d.ts","sourceRoot":"","sources":["../../../../src/agent/__tests__/snapshot.test.ts"],"names":[],"mappings":""}