@strands-agents/sdk 1.6.0 → 1.8.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 (708) hide show
  1. package/dist/src/agent/agent.d.ts +1 -1
  2. package/dist/src/agent/agent.d.ts.map +1 -1
  3. package/dist/src/agent/agent.js +1 -1
  4. package/dist/src/agent/agent.js.map +1 -1
  5. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +3 -3
  6. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts.map +1 -1
  7. package/dist/src/index.d.ts +1 -1
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +1 -1
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/index.node.d.ts.map +1 -1
  12. package/dist/src/index.node.js +3 -0
  13. package/dist/src/index.node.js.map +1 -1
  14. package/dist/src/interventions/actions.d.ts.map +1 -1
  15. package/dist/src/interventions/actions.js.map +1 -1
  16. package/dist/src/{mcp.d.ts → mcp/client.d.ts} +13 -4
  17. package/dist/src/mcp/client.d.ts.map +1 -0
  18. package/dist/src/{mcp.js → mcp/client.js} +15 -3
  19. package/dist/src/mcp/client.js.map +1 -0
  20. package/dist/src/mcp/config.d.ts +52 -0
  21. package/dist/src/mcp/config.d.ts.map +1 -0
  22. package/dist/src/mcp/config.js +12 -0
  23. package/dist/src/mcp/config.js.map +1 -0
  24. package/dist/src/mcp/config.node.d.ts +16 -0
  25. package/dist/src/mcp/config.node.d.ts.map +1 -0
  26. package/dist/src/mcp/config.node.js +145 -0
  27. package/dist/src/mcp/config.node.js.map +1 -0
  28. package/dist/src/mcp/index.d.ts +3 -0
  29. package/dist/src/mcp/index.d.ts.map +1 -0
  30. package/dist/src/mcp/index.js +2 -0
  31. package/dist/src/mcp/index.js.map +1 -0
  32. package/dist/src/memory/extraction/coordinator.d.ts +6 -1
  33. package/dist/src/memory/extraction/coordinator.d.ts.map +1 -1
  34. package/dist/src/memory/extraction/coordinator.js +48 -10
  35. package/dist/src/memory/extraction/coordinator.js.map +1 -1
  36. package/dist/src/memory/extraction/model-extractor.d.ts.map +1 -1
  37. package/dist/src/memory/extraction/model-extractor.js +30 -9
  38. package/dist/src/memory/extraction/model-extractor.js.map +1 -1
  39. package/dist/src/memory/extraction/types.d.ts +7 -0
  40. package/dist/src/memory/extraction/types.d.ts.map +1 -1
  41. package/dist/src/memory/extraction/types.js.map +1 -1
  42. package/dist/src/memory/memory-manager.d.ts +15 -2
  43. package/dist/src/memory/memory-manager.d.ts.map +1 -1
  44. package/dist/src/memory/memory-manager.js +123 -45
  45. package/dist/src/memory/memory-manager.js.map +1 -1
  46. package/dist/src/memory/types.d.ts +7 -0
  47. package/dist/src/memory/types.d.ts.map +1 -1
  48. package/dist/src/models/google/adapters.d.ts.map +1 -1
  49. package/dist/src/models/google/adapters.js +21 -3
  50. package/dist/src/models/google/adapters.js.map +1 -1
  51. package/dist/src/models/model.d.ts.map +1 -1
  52. package/dist/src/models/model.js +2 -1
  53. package/dist/src/models/model.js.map +1 -1
  54. package/dist/src/models/openai/errors.d.ts.map +1 -1
  55. package/dist/src/models/openai/errors.js +4 -1
  56. package/dist/src/models/openai/errors.js.map +1 -1
  57. package/dist/src/models/openai/responses-adapter.d.ts +1 -0
  58. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -1
  59. package/dist/src/models/openai/responses-adapter.js +24 -10
  60. package/dist/src/models/openai/responses-adapter.js.map +1 -1
  61. package/dist/src/multiagent/graph.d.ts +7 -0
  62. package/dist/src/multiagent/graph.d.ts.map +1 -1
  63. package/dist/src/multiagent/graph.js +26 -2
  64. package/dist/src/multiagent/graph.js.map +1 -1
  65. package/dist/src/multiagent/nodes.d.ts +5 -0
  66. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  67. package/dist/src/multiagent/nodes.js +15 -0
  68. package/dist/src/multiagent/nodes.js.map +1 -1
  69. package/dist/src/multiagent/state.d.ts.map +1 -1
  70. package/dist/src/multiagent/state.js.map +1 -1
  71. package/dist/src/telemetry/tracer.d.ts +82 -2
  72. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  73. package/dist/src/telemetry/tracer.js +242 -3
  74. package/dist/src/telemetry/tracer.js.map +1 -1
  75. package/dist/src/telemetry/types.d.ts +86 -1
  76. package/dist/src/telemetry/types.d.ts.map +1 -1
  77. package/dist/src/tools/function-tool.d.ts +1 -1
  78. package/dist/src/tools/function-tool.d.ts.map +1 -1
  79. package/dist/src/tools/function-tool.js +4 -12
  80. package/dist/src/tools/function-tool.js.map +1 -1
  81. package/dist/src/tools/mcp-tool.d.ts +2 -1
  82. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  83. package/dist/src/tools/mcp-tool.js +1 -0
  84. package/dist/src/tools/mcp-tool.js.map +1 -1
  85. package/dist/src/tools/tool-factory.d.ts +1 -1
  86. package/dist/src/tools/tool-factory.d.ts.map +1 -1
  87. package/dist/src/tools/types.d.ts +4 -0
  88. package/dist/src/tools/types.d.ts.map +1 -1
  89. package/dist/src/tools/zod-tool.d.ts +4 -2
  90. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  91. package/dist/src/tools/zod-tool.js.map +1 -1
  92. package/dist/src/tsconfig.tsbuildinfo +1 -1
  93. package/dist/src/types/json.js +2 -2
  94. package/dist/src/types/json.js.map +1 -1
  95. package/dist/src/types/media.d.ts.map +1 -1
  96. package/dist/src/types/media.js.map +1 -1
  97. package/dist/src/types/messages.d.ts.map +1 -1
  98. package/dist/src/types/messages.js.map +1 -1
  99. package/dist/src/vended-interventions/cedar/cedar.d.ts +12 -0
  100. package/dist/src/vended-interventions/cedar/cedar.d.ts.map +1 -1
  101. package/dist/src/vended-interventions/cedar/cedar.js +15 -4
  102. package/dist/src/vended-interventions/cedar/cedar.js.map +1 -1
  103. package/dist/src/vended-interventions/cedar/schema-generator.d.ts +1 -1
  104. package/dist/src/vended-interventions/cedar/schema-generator.d.ts.map +1 -1
  105. package/dist/src/vended-interventions/cedar/schema-generator.js +8 -3
  106. package/dist/src/vended-interventions/cedar/schema-generator.js.map +1 -1
  107. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts +1 -1
  108. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts.map +1 -1
  109. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js.map +1 -1
  110. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts +57 -0
  111. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts.map +1 -1
  112. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js +86 -11
  113. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js.map +1 -1
  114. package/dist/src/vended-memory-stores/local/index.d.ts +2 -0
  115. package/dist/src/vended-memory-stores/local/index.d.ts.map +1 -0
  116. package/dist/src/vended-memory-stores/local/index.js +2 -0
  117. package/dist/src/vended-memory-stores/local/index.js.map +1 -0
  118. package/dist/src/vended-memory-stores/local/store.d.ts +122 -0
  119. package/dist/src/vended-memory-stores/local/store.d.ts.map +1 -0
  120. package/dist/src/vended-memory-stores/local/store.js +281 -0
  121. package/dist/src/vended-memory-stores/local/store.js.map +1 -0
  122. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  123. package/dist/src/vended-plugins/context-offloader/search.js +4 -2
  124. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  125. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  126. package/dist/src/vended-plugins/context-offloader/storage.js +16 -3
  127. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  128. package/dist/src/vended-plugins/skills/skill.d.ts.map +1 -1
  129. package/dist/src/vended-plugins/skills/skill.js +4 -2
  130. package/dist/src/vended-plugins/skills/skill.js.map +1 -1
  131. package/dist/src/vended-tools/http-request/http-request.js +1 -1
  132. package/dist/src/vended-tools/http-request/http-request.js.map +1 -1
  133. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  134. package/package.json +46 -39
  135. package/dist/src/__fixtures__/agent-helpers.d.ts +0 -136
  136. package/dist/src/__fixtures__/agent-helpers.d.ts.map +0 -1
  137. package/dist/src/__fixtures__/agent-helpers.js +0 -156
  138. package/dist/src/__fixtures__/agent-helpers.js.map +0 -1
  139. package/dist/src/__fixtures__/environment.d.ts +0 -12
  140. package/dist/src/__fixtures__/environment.d.ts.map +0 -1
  141. package/dist/src/__fixtures__/environment.js +0 -12
  142. package/dist/src/__fixtures__/environment.js.map +0 -1
  143. package/dist/src/__fixtures__/metrics-helpers.d.ts +0 -55
  144. package/dist/src/__fixtures__/metrics-helpers.d.ts.map +0 -1
  145. package/dist/src/__fixtures__/metrics-helpers.js +0 -57
  146. package/dist/src/__fixtures__/metrics-helpers.js.map +0 -1
  147. package/dist/src/__fixtures__/mock-message-model.d.ts +0 -103
  148. package/dist/src/__fixtures__/mock-message-model.d.ts.map +0 -1
  149. package/dist/src/__fixtures__/mock-message-model.js +0 -245
  150. package/dist/src/__fixtures__/mock-message-model.js.map +0 -1
  151. package/dist/src/__fixtures__/mock-meter.d.ts +0 -32
  152. package/dist/src/__fixtures__/mock-meter.d.ts.map +0 -1
  153. package/dist/src/__fixtures__/mock-meter.js +0 -47
  154. package/dist/src/__fixtures__/mock-meter.js.map +0 -1
  155. package/dist/src/__fixtures__/mock-plugin.d.ts +0 -13
  156. package/dist/src/__fixtures__/mock-plugin.d.ts.map +0 -1
  157. package/dist/src/__fixtures__/mock-plugin.js +0 -35
  158. package/dist/src/__fixtures__/mock-plugin.js.map +0 -1
  159. package/dist/src/__fixtures__/mock-span.d.ts +0 -78
  160. package/dist/src/__fixtures__/mock-span.d.ts.map +0 -1
  161. package/dist/src/__fixtures__/mock-span.js +0 -93
  162. package/dist/src/__fixtures__/mock-span.js.map +0 -1
  163. package/dist/src/__fixtures__/mock-storage-provider.d.ts +0 -42
  164. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +0 -1
  165. package/dist/src/__fixtures__/mock-storage-provider.js +0 -122
  166. package/dist/src/__fixtures__/mock-storage-provider.js.map +0 -1
  167. package/dist/src/__fixtures__/model-test-helpers.d.ts +0 -56
  168. package/dist/src/__fixtures__/model-test-helpers.d.ts.map +0 -1
  169. package/dist/src/__fixtures__/model-test-helpers.js +0 -85
  170. package/dist/src/__fixtures__/model-test-helpers.js.map +0 -1
  171. package/dist/src/__fixtures__/register-node-defaults.d.ts +0 -2
  172. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +0 -1
  173. package/dist/src/__fixtures__/register-node-defaults.js +0 -6
  174. package/dist/src/__fixtures__/register-node-defaults.js.map +0 -1
  175. package/dist/src/__fixtures__/slim-types.d.ts +0 -51
  176. package/dist/src/__fixtures__/slim-types.d.ts.map +0 -1
  177. package/dist/src/__fixtures__/slim-types.js +0 -6
  178. package/dist/src/__fixtures__/slim-types.js.map +0 -1
  179. package/dist/src/__fixtures__/test-sandbox.node.d.ts +0 -15
  180. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +0 -1
  181. package/dist/src/__fixtures__/test-sandbox.node.js +0 -23
  182. package/dist/src/__fixtures__/test-sandbox.node.js.map +0 -1
  183. package/dist/src/__fixtures__/tool-helpers.d.ts +0 -45
  184. package/dist/src/__fixtures__/tool-helpers.d.ts.map +0 -1
  185. package/dist/src/__fixtures__/tool-helpers.js +0 -101
  186. package/dist/src/__fixtures__/tool-helpers.js.map +0 -1
  187. package/dist/src/__tests__/default-slot.test.d.ts +0 -2
  188. package/dist/src/__tests__/default-slot.test.d.ts.map +0 -1
  189. package/dist/src/__tests__/default-slot.test.js +0 -33
  190. package/dist/src/__tests__/default-slot.test.js.map +0 -1
  191. package/dist/src/__tests__/errors.test.d.ts +0 -2
  192. package/dist/src/__tests__/errors.test.d.ts.map +0 -1
  193. package/dist/src/__tests__/errors.test.js +0 -170
  194. package/dist/src/__tests__/errors.test.js.map +0 -1
  195. package/dist/src/__tests__/index.test.d.ts +0 -2
  196. package/dist/src/__tests__/index.test.d.ts.map +0 -1
  197. package/dist/src/__tests__/index.test.js +0 -48
  198. package/dist/src/__tests__/index.test.js.map +0 -1
  199. package/dist/src/__tests__/interrupt.test.d.ts +0 -2
  200. package/dist/src/__tests__/interrupt.test.d.ts.map +0 -1
  201. package/dist/src/__tests__/interrupt.test.js +0 -264
  202. package/dist/src/__tests__/interrupt.test.js.map +0 -1
  203. package/dist/src/__tests__/mcp.test.d.ts +0 -2
  204. package/dist/src/__tests__/mcp.test.d.ts.map +0 -1
  205. package/dist/src/__tests__/mcp.test.js +0 -1003
  206. package/dist/src/__tests__/mcp.test.js.map +0 -1
  207. package/dist/src/__tests__/mime.test.d.ts +0 -2
  208. package/dist/src/__tests__/mime.test.d.ts.map +0 -1
  209. package/dist/src/__tests__/mime.test.js +0 -83
  210. package/dist/src/__tests__/mime.test.js.map +0 -1
  211. package/dist/src/__tests__/state-store.test.d.ts +0 -2
  212. package/dist/src/__tests__/state-store.test.d.ts.map +0 -1
  213. package/dist/src/__tests__/state-store.test.js +0 -285
  214. package/dist/src/__tests__/state-store.test.js.map +0 -1
  215. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts +0 -2
  216. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts.map +0 -1
  217. package/dist/src/a2a/__tests__/a2a-agent.test.js +0 -383
  218. package/dist/src/a2a/__tests__/a2a-agent.test.js.map +0 -1
  219. package/dist/src/a2a/__tests__/adapters.test.d.ts +0 -2
  220. package/dist/src/a2a/__tests__/adapters.test.d.ts.map +0 -1
  221. package/dist/src/a2a/__tests__/adapters.test.js +0 -151
  222. package/dist/src/a2a/__tests__/adapters.test.js.map +0 -1
  223. package/dist/src/a2a/__tests__/async-lock.test.d.ts +0 -2
  224. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +0 -1
  225. package/dist/src/a2a/__tests__/async-lock.test.js +0 -137
  226. package/dist/src/a2a/__tests__/async-lock.test.js.map +0 -1
  227. package/dist/src/a2a/__tests__/events.test.d.ts +0 -2
  228. package/dist/src/a2a/__tests__/events.test.d.ts.map +0 -1
  229. package/dist/src/a2a/__tests__/events.test.js +0 -68
  230. package/dist/src/a2a/__tests__/events.test.js.map +0 -1
  231. package/dist/src/a2a/__tests__/executor.test.d.ts +0 -2
  232. package/dist/src/a2a/__tests__/executor.test.d.ts.map +0 -1
  233. package/dist/src/a2a/__tests__/executor.test.js +0 -345
  234. package/dist/src/a2a/__tests__/executor.test.js.map +0 -1
  235. package/dist/src/a2a/__tests__/server.test.d.ts +0 -2
  236. package/dist/src/a2a/__tests__/server.test.d.ts.map +0 -1
  237. package/dist/src/a2a/__tests__/server.test.js +0 -71
  238. package/dist/src/a2a/__tests__/server.test.js.map +0 -1
  239. package/dist/src/a2a/__tests__/server.test.node.d.ts +0 -2
  240. package/dist/src/a2a/__tests__/server.test.node.d.ts.map +0 -1
  241. package/dist/src/a2a/__tests__/server.test.node.js +0 -110
  242. package/dist/src/a2a/__tests__/server.test.node.js.map +0 -1
  243. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +0 -2
  244. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +0 -1
  245. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +0 -23
  246. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +0 -1
  247. package/dist/src/agent/__tests__/agent-as-tool.test.d.ts +0 -2
  248. package/dist/src/agent/__tests__/agent-as-tool.test.d.ts.map +0 -1
  249. package/dist/src/agent/__tests__/agent-as-tool.test.js +0 -347
  250. package/dist/src/agent/__tests__/agent-as-tool.test.js.map +0 -1
  251. package/dist/src/agent/__tests__/agent.cancel.test.d.ts +0 -2
  252. package/dist/src/agent/__tests__/agent.cancel.test.d.ts.map +0 -1
  253. package/dist/src/agent/__tests__/agent.cancel.test.js +0 -337
  254. package/dist/src/agent/__tests__/agent.cancel.test.js.map +0 -1
  255. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +0 -2
  256. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +0 -1
  257. package/dist/src/agent/__tests__/agent.concurrent.test.js +0 -488
  258. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +0 -1
  259. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +0 -2
  260. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +0 -1
  261. package/dist/src/agent/__tests__/agent.context-manager.test.js +0 -107
  262. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +0 -1
  263. package/dist/src/agent/__tests__/agent.hook.test.d.ts +0 -2
  264. package/dist/src/agent/__tests__/agent.hook.test.d.ts.map +0 -1
  265. package/dist/src/agent/__tests__/agent.hook.test.js +0 -1332
  266. package/dist/src/agent/__tests__/agent.hook.test.js.map +0 -1
  267. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +0 -2
  268. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +0 -1
  269. package/dist/src/agent/__tests__/agent.interrupt.test.js +0 -779
  270. package/dist/src/agent/__tests__/agent.interrupt.test.js.map +0 -1
  271. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +0 -2
  272. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +0 -1
  273. package/dist/src/agent/__tests__/agent.invocation-state.test.js +0 -219
  274. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +0 -1
  275. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +0 -2
  276. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +0 -1
  277. package/dist/src/agent/__tests__/agent.model-retry.test.js +0 -161
  278. package/dist/src/agent/__tests__/agent.model-retry.test.js.map +0 -1
  279. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +0 -2
  280. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +0 -1
  281. package/dist/src/agent/__tests__/agent.stateful-model.test.js +0 -169
  282. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +0 -1
  283. package/dist/src/agent/__tests__/agent.test.d.ts +0 -2
  284. package/dist/src/agent/__tests__/agent.test.d.ts.map +0 -1
  285. package/dist/src/agent/__tests__/agent.test.js +0 -1624
  286. package/dist/src/agent/__tests__/agent.test.js.map +0 -1
  287. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts +0 -2
  288. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts.map +0 -1
  289. package/dist/src/agent/__tests__/agent.tracer.test.node.js +0 -535
  290. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +0 -1
  291. package/dist/src/agent/__tests__/printer.test.d.ts +0 -2
  292. package/dist/src/agent/__tests__/printer.test.d.ts.map +0 -1
  293. package/dist/src/agent/__tests__/printer.test.js +0 -188
  294. package/dist/src/agent/__tests__/printer.test.js.map +0 -1
  295. package/dist/src/agent/__tests__/snapshot.test.d.ts +0 -2
  296. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +0 -1
  297. package/dist/src/agent/__tests__/snapshot.test.js +0 -442
  298. package/dist/src/agent/__tests__/snapshot.test.js.map +0 -1
  299. package/dist/src/agent/__tests__/tool-caller.test.d.ts +0 -2
  300. package/dist/src/agent/__tests__/tool-caller.test.d.ts.map +0 -1
  301. package/dist/src/agent/__tests__/tool-caller.test.js +0 -459
  302. package/dist/src/agent/__tests__/tool-caller.test.js.map +0 -1
  303. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts +0 -2
  304. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts.map +0 -1
  305. package/dist/src/conversation-manager/__tests__/agentic-context.test.js +0 -332
  306. package/dist/src/conversation-manager/__tests__/agentic-context.test.js.map +0 -1
  307. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts +0 -2
  308. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts.map +0 -1
  309. package/dist/src/conversation-manager/__tests__/context-compression.test.js +0 -176
  310. package/dist/src/conversation-manager/__tests__/context-compression.test.js.map +0 -1
  311. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +0 -2
  312. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +0 -1
  313. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +0 -321
  314. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +0 -1
  315. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts +0 -2
  316. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts.map +0 -1
  317. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +0 -64
  318. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +0 -1
  319. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +0 -2
  320. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +0 -1
  321. package/dist/src/conversation-manager/__tests__/pin.test.js +0 -119
  322. package/dist/src/conversation-manager/__tests__/pin.test.js.map +0 -1
  323. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts +0 -2
  324. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts.map +0 -1
  325. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +0 -1080
  326. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +0 -1
  327. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.d.ts +0 -2
  328. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.d.ts.map +0 -1
  329. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +0 -400
  330. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +0 -1
  331. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts +0 -2
  332. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts.map +0 -1
  333. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js +0 -138
  334. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js.map +0 -1
  335. package/dist/src/hooks/__tests__/events.test.d.ts +0 -2
  336. package/dist/src/hooks/__tests__/events.test.d.ts.map +0 -1
  337. package/dist/src/hooks/__tests__/events.test.js +0 -1060
  338. package/dist/src/hooks/__tests__/events.test.js.map +0 -1
  339. package/dist/src/hooks/__tests__/registry.test.d.ts +0 -2
  340. package/dist/src/hooks/__tests__/registry.test.d.ts.map +0 -1
  341. package/dist/src/hooks/__tests__/registry.test.js +0 -325
  342. package/dist/src/hooks/__tests__/registry.test.js.map +0 -1
  343. package/dist/src/injection/__tests__/message-injection.test.d.ts +0 -2
  344. package/dist/src/injection/__tests__/message-injection.test.d.ts.map +0 -1
  345. package/dist/src/injection/__tests__/message-injection.test.js +0 -200
  346. package/dist/src/injection/__tests__/message-injection.test.js.map +0 -1
  347. package/dist/src/interventions/__tests__/handler.test.d.ts +0 -2
  348. package/dist/src/interventions/__tests__/handler.test.d.ts.map +0 -1
  349. package/dist/src/interventions/__tests__/handler.test.js +0 -35
  350. package/dist/src/interventions/__tests__/handler.test.js.map +0 -1
  351. package/dist/src/interventions/__tests__/registry.test.d.ts +0 -2
  352. package/dist/src/interventions/__tests__/registry.test.d.ts.map +0 -1
  353. package/dist/src/interventions/__tests__/registry.test.js +0 -692
  354. package/dist/src/interventions/__tests__/registry.test.js.map +0 -1
  355. package/dist/src/logging/__tests__/logger.test.d.ts +0 -2
  356. package/dist/src/logging/__tests__/logger.test.d.ts.map +0 -1
  357. package/dist/src/logging/__tests__/logger.test.js +0 -70
  358. package/dist/src/logging/__tests__/logger.test.js.map +0 -1
  359. package/dist/src/logging/__tests__/warn-once.test.d.ts +0 -2
  360. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +0 -1
  361. package/dist/src/logging/__tests__/warn-once.test.js +0 -30
  362. package/dist/src/logging/__tests__/warn-once.test.js.map +0 -1
  363. package/dist/src/mcp.d.ts.map +0 -1
  364. package/dist/src/mcp.js.map +0 -1
  365. package/dist/src/memory/__tests__/memory-manager.test.d.ts +0 -2
  366. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +0 -1
  367. package/dist/src/memory/__tests__/memory-manager.test.js +0 -679
  368. package/dist/src/memory/__tests__/memory-manager.test.js.map +0 -1
  369. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +0 -2
  370. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +0 -1
  371. package/dist/src/memory/extraction/__tests__/extraction.test.js +0 -637
  372. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +0 -1
  373. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +0 -2
  374. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +0 -1
  375. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +0 -68
  376. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +0 -1
  377. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +0 -2
  378. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +0 -1
  379. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +0 -81
  380. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +0 -1
  381. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +0 -2
  382. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +0 -1
  383. package/dist/src/middleware/__tests__/agent-middleware.test.js +0 -1206
  384. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +0 -1
  385. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts +0 -2
  386. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts.map +0 -1
  387. package/dist/src/middleware/__tests__/copy-on-input.test.js +0 -379
  388. package/dist/src/middleware/__tests__/copy-on-input.test.js.map +0 -1
  389. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +0 -2
  390. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +0 -1
  391. package/dist/src/middleware/__tests__/custom-stages.test.js +0 -97
  392. package/dist/src/middleware/__tests__/custom-stages.test.js.map +0 -1
  393. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +0 -2
  394. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +0 -1
  395. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +0 -267
  396. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +0 -1
  397. package/dist/src/middleware/__tests__/registry.test.d.ts +0 -2
  398. package/dist/src/middleware/__tests__/registry.test.d.ts.map +0 -1
  399. package/dist/src/middleware/__tests__/registry.test.js +0 -525
  400. package/dist/src/middleware/__tests__/registry.test.js.map +0 -1
  401. package/dist/src/models/__tests__/anthropic.test.d.ts +0 -2
  402. package/dist/src/models/__tests__/anthropic.test.d.ts.map +0 -1
  403. package/dist/src/models/__tests__/anthropic.test.js +0 -793
  404. package/dist/src/models/__tests__/anthropic.test.js.map +0 -1
  405. package/dist/src/models/__tests__/bedrock.test.d.ts +0 -2
  406. package/dist/src/models/__tests__/bedrock.test.d.ts.map +0 -1
  407. package/dist/src/models/__tests__/bedrock.test.js +0 -3964
  408. package/dist/src/models/__tests__/bedrock.test.js.map +0 -1
  409. package/dist/src/models/__tests__/defaults.test.d.ts +0 -2
  410. package/dist/src/models/__tests__/defaults.test.d.ts.map +0 -1
  411. package/dist/src/models/__tests__/defaults.test.js +0 -36
  412. package/dist/src/models/__tests__/defaults.test.js.map +0 -1
  413. package/dist/src/models/__tests__/google.test.d.ts +0 -2
  414. package/dist/src/models/__tests__/google.test.d.ts.map +0 -1
  415. package/dist/src/models/__tests__/google.test.js +0 -1104
  416. package/dist/src/models/__tests__/google.test.js.map +0 -1
  417. package/dist/src/models/__tests__/model.test.d.ts +0 -2
  418. package/dist/src/models/__tests__/model.test.d.ts.map +0 -1
  419. package/dist/src/models/__tests__/model.test.js +0 -921
  420. package/dist/src/models/__tests__/model.test.js.map +0 -1
  421. package/dist/src/models/__tests__/streaming.test.d.ts +0 -2
  422. package/dist/src/models/__tests__/streaming.test.d.ts.map +0 -1
  423. package/dist/src/models/__tests__/streaming.test.js +0 -50
  424. package/dist/src/models/__tests__/streaming.test.js.map +0 -1
  425. package/dist/src/models/__tests__/test-utils.d.ts +0 -10
  426. package/dist/src/models/__tests__/test-utils.d.ts.map +0 -1
  427. package/dist/src/models/__tests__/test-utils.js +0 -17
  428. package/dist/src/models/__tests__/test-utils.js.map +0 -1
  429. package/dist/src/models/__tests__/vercel.test.d.ts +0 -2
  430. package/dist/src/models/__tests__/vercel.test.d.ts.map +0 -1
  431. package/dist/src/models/__tests__/vercel.test.js +0 -740
  432. package/dist/src/models/__tests__/vercel.test.js.map +0 -1
  433. package/dist/src/models/openai/__tests__/chat.test.d.ts +0 -2
  434. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +0 -1
  435. package/dist/src/models/openai/__tests__/chat.test.js +0 -1586
  436. package/dist/src/models/openai/__tests__/chat.test.js.map +0 -1
  437. package/dist/src/models/openai/__tests__/errors.test.d.ts +0 -2
  438. package/dist/src/models/openai/__tests__/errors.test.d.ts.map +0 -1
  439. package/dist/src/models/openai/__tests__/errors.test.js +0 -30
  440. package/dist/src/models/openai/__tests__/errors.test.js.map +0 -1
  441. package/dist/src/models/openai/__tests__/mantle.test.d.ts +0 -2
  442. package/dist/src/models/openai/__tests__/mantle.test.d.ts.map +0 -1
  443. package/dist/src/models/openai/__tests__/mantle.test.js +0 -189
  444. package/dist/src/models/openai/__tests__/mantle.test.js.map +0 -1
  445. package/dist/src/models/openai/__tests__/responses.test.d.ts +0 -2
  446. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +0 -1
  447. package/dist/src/models/openai/__tests__/responses.test.js +0 -662
  448. package/dist/src/models/openai/__tests__/responses.test.js.map +0 -1
  449. package/dist/src/multiagent/__tests__/events.test.d.ts +0 -2
  450. package/dist/src/multiagent/__tests__/events.test.d.ts.map +0 -1
  451. package/dist/src/multiagent/__tests__/events.test.js +0 -493
  452. package/dist/src/multiagent/__tests__/events.test.js.map +0 -1
  453. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +0 -2
  454. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +0 -1
  455. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +0 -95
  456. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +0 -1
  457. package/dist/src/multiagent/__tests__/graph.test.d.ts +0 -2
  458. package/dist/src/multiagent/__tests__/graph.test.d.ts.map +0 -1
  459. package/dist/src/multiagent/__tests__/graph.test.js +0 -677
  460. package/dist/src/multiagent/__tests__/graph.test.js.map +0 -1
  461. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts +0 -2
  462. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts.map +0 -1
  463. package/dist/src/multiagent/__tests__/graph.tracer.test.js +0 -218
  464. package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +0 -1
  465. package/dist/src/multiagent/__tests__/interrupts.test.d.ts +0 -2
  466. package/dist/src/multiagent/__tests__/interrupts.test.d.ts.map +0 -1
  467. package/dist/src/multiagent/__tests__/interrupts.test.js +0 -390
  468. package/dist/src/multiagent/__tests__/interrupts.test.js.map +0 -1
  469. package/dist/src/multiagent/__tests__/nodes.test.d.ts +0 -2
  470. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +0 -1
  471. package/dist/src/multiagent/__tests__/nodes.test.js +0 -321
  472. package/dist/src/multiagent/__tests__/nodes.test.js.map +0 -1
  473. package/dist/src/multiagent/__tests__/queue.test.d.ts +0 -2
  474. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +0 -1
  475. package/dist/src/multiagent/__tests__/queue.test.js +0 -118
  476. package/dist/src/multiagent/__tests__/queue.test.js.map +0 -1
  477. package/dist/src/multiagent/__tests__/snapshot.test.d.ts +0 -2
  478. package/dist/src/multiagent/__tests__/snapshot.test.d.ts.map +0 -1
  479. package/dist/src/multiagent/__tests__/snapshot.test.js +0 -161
  480. package/dist/src/multiagent/__tests__/snapshot.test.js.map +0 -1
  481. package/dist/src/multiagent/__tests__/state.test.d.ts +0 -2
  482. package/dist/src/multiagent/__tests__/state.test.d.ts.map +0 -1
  483. package/dist/src/multiagent/__tests__/state.test.js +0 -526
  484. package/dist/src/multiagent/__tests__/state.test.js.map +0 -1
  485. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +0 -2
  486. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +0 -1
  487. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +0 -56
  488. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +0 -1
  489. package/dist/src/multiagent/__tests__/swarm.test.d.ts +0 -2
  490. package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +0 -1
  491. package/dist/src/multiagent/__tests__/swarm.test.js +0 -477
  492. package/dist/src/multiagent/__tests__/swarm.test.js.map +0 -1
  493. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts +0 -2
  494. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts.map +0 -1
  495. package/dist/src/multiagent/__tests__/swarm.tracer.test.js +0 -235
  496. package/dist/src/multiagent/__tests__/swarm.tracer.test.js.map +0 -1
  497. package/dist/src/plugins/__tests__/plugin.test.d.ts +0 -2
  498. package/dist/src/plugins/__tests__/plugin.test.d.ts.map +0 -1
  499. package/dist/src/plugins/__tests__/plugin.test.js +0 -114
  500. package/dist/src/plugins/__tests__/plugin.test.js.map +0 -1
  501. package/dist/src/plugins/__tests__/registry.test.d.ts +0 -2
  502. package/dist/src/plugins/__tests__/registry.test.d.ts.map +0 -1
  503. package/dist/src/plugins/__tests__/registry.test.js +0 -147
  504. package/dist/src/plugins/__tests__/registry.test.js.map +0 -1
  505. package/dist/src/registry/__tests__/tool-registry.test.d.ts +0 -2
  506. package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +0 -1
  507. package/dist/src/registry/__tests__/tool-registry.test.js +0 -210
  508. package/dist/src/registry/__tests__/tool-registry.test.js.map +0 -1
  509. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +0 -2
  510. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +0 -1
  511. package/dist/src/retry/__tests__/backoff-strategy.test.js +0 -116
  512. package/dist/src/retry/__tests__/backoff-strategy.test.js.map +0 -1
  513. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +0 -2
  514. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +0 -1
  515. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +0 -225
  516. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +0 -1
  517. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +0 -2
  518. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +0 -1
  519. package/dist/src/sandbox/__tests__/default.test.browser.js +0 -11
  520. package/dist/src/sandbox/__tests__/default.test.browser.js.map +0 -1
  521. package/dist/src/sandbox/__tests__/default.test.node.d.ts +0 -2
  522. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +0 -1
  523. package/dist/src/sandbox/__tests__/default.test.node.js +0 -23
  524. package/dist/src/sandbox/__tests__/default.test.node.js.map +0 -1
  525. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +0 -2
  526. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +0 -1
  527. package/dist/src/sandbox/__tests__/docker.test.node.js +0 -89
  528. package/dist/src/sandbox/__tests__/docker.test.node.js.map +0 -1
  529. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +0 -2
  530. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +0 -1
  531. package/dist/src/sandbox/__tests__/errors.test.node.js +0 -33
  532. package/dist/src/sandbox/__tests__/errors.test.node.js.map +0 -1
  533. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +0 -2
  534. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +0 -1
  535. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +0 -124
  536. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +0 -1
  537. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts +0 -2
  538. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts.map +0 -1
  539. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +0 -298
  540. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +0 -1
  541. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +0 -2
  542. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +0 -1
  543. package/dist/src/sandbox/__tests__/ssh.test.node.js +0 -262
  544. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +0 -1
  545. package/dist/src/session/__tests__/file-storage.test.node.d.ts +0 -2
  546. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +0 -1
  547. package/dist/src/session/__tests__/file-storage.test.node.js +0 -278
  548. package/dist/src/session/__tests__/file-storage.test.node.js.map +0 -1
  549. package/dist/src/session/__tests__/s3-storage.test.d.ts +0 -2
  550. package/dist/src/session/__tests__/s3-storage.test.d.ts.map +0 -1
  551. package/dist/src/session/__tests__/s3-storage.test.js +0 -461
  552. package/dist/src/session/__tests__/s3-storage.test.js.map +0 -1
  553. package/dist/src/session/__tests__/session-manager.test.d.ts +0 -2
  554. package/dist/src/session/__tests__/session-manager.test.d.ts.map +0 -1
  555. package/dist/src/session/__tests__/session-manager.test.js +0 -832
  556. package/dist/src/session/__tests__/session-manager.test.js.map +0 -1
  557. package/dist/src/session/__tests__/validation.test.d.ts +0 -2
  558. package/dist/src/session/__tests__/validation.test.d.ts.map +0 -1
  559. package/dist/src/session/__tests__/validation.test.js +0 -47
  560. package/dist/src/session/__tests__/validation.test.js.map +0 -1
  561. package/dist/src/telemetry/__tests__/config.test.d.ts +0 -2
  562. package/dist/src/telemetry/__tests__/config.test.d.ts.map +0 -1
  563. package/dist/src/telemetry/__tests__/config.test.js +0 -64
  564. package/dist/src/telemetry/__tests__/config.test.js.map +0 -1
  565. package/dist/src/telemetry/__tests__/config.test.node.d.ts +0 -2
  566. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +0 -1
  567. package/dist/src/telemetry/__tests__/config.test.node.js +0 -164
  568. package/dist/src/telemetry/__tests__/config.test.node.js.map +0 -1
  569. package/dist/src/telemetry/__tests__/json.test.d.ts +0 -2
  570. package/dist/src/telemetry/__tests__/json.test.d.ts.map +0 -1
  571. package/dist/src/telemetry/__tests__/json.test.js +0 -89
  572. package/dist/src/telemetry/__tests__/json.test.js.map +0 -1
  573. package/dist/src/telemetry/__tests__/local-trace.test.d.ts +0 -2
  574. package/dist/src/telemetry/__tests__/local-trace.test.d.ts.map +0 -1
  575. package/dist/src/telemetry/__tests__/local-trace.test.js +0 -158
  576. package/dist/src/telemetry/__tests__/local-trace.test.js.map +0 -1
  577. package/dist/src/telemetry/__tests__/meter.test.d.ts +0 -2
  578. package/dist/src/telemetry/__tests__/meter.test.d.ts.map +0 -1
  579. package/dist/src/telemetry/__tests__/meter.test.js +0 -695
  580. package/dist/src/telemetry/__tests__/meter.test.js.map +0 -1
  581. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +0 -2
  582. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +0 -1
  583. package/dist/src/telemetry/__tests__/tracer.test.node.js +0 -760
  584. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +0 -1
  585. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts +0 -2
  586. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts.map +0 -1
  587. package/dist/src/tools/__tests__/structured-output-tool.test.js +0 -84
  588. package/dist/src/tools/__tests__/structured-output-tool.test.js.map +0 -1
  589. package/dist/src/tools/__tests__/tool-factory.test.d.ts +0 -2
  590. package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +0 -1
  591. package/dist/src/tools/__tests__/tool-factory.test.js +0 -98
  592. package/dist/src/tools/__tests__/tool-factory.test.js.map +0 -1
  593. package/dist/src/tools/__tests__/tool.test.d.ts +0 -2
  594. package/dist/src/tools/__tests__/tool.test.d.ts.map +0 -1
  595. package/dist/src/tools/__tests__/tool.test.js +0 -1043
  596. package/dist/src/tools/__tests__/tool.test.js.map +0 -1
  597. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts +0 -2
  598. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts.map +0 -1
  599. package/dist/src/tools/__tests__/zod-tool.test-d.js +0 -227
  600. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +0 -1
  601. package/dist/src/tools/__tests__/zod-tool.test.d.ts +0 -2
  602. package/dist/src/tools/__tests__/zod-tool.test.d.ts.map +0 -1
  603. package/dist/src/tools/__tests__/zod-tool.test.js +0 -563
  604. package/dist/src/tools/__tests__/zod-tool.test.js.map +0 -1
  605. package/dist/src/types/__tests__/agent.test.d.ts +0 -2
  606. package/dist/src/types/__tests__/agent.test.d.ts.map +0 -1
  607. package/dist/src/types/__tests__/agent.test.js +0 -476
  608. package/dist/src/types/__tests__/agent.test.js.map +0 -1
  609. package/dist/src/types/__tests__/citations.test.d.ts +0 -2
  610. package/dist/src/types/__tests__/citations.test.d.ts.map +0 -1
  611. package/dist/src/types/__tests__/citations.test.js +0 -104
  612. package/dist/src/types/__tests__/citations.test.js.map +0 -1
  613. package/dist/src/types/__tests__/json.test.d.ts +0 -2
  614. package/dist/src/types/__tests__/json.test.d.ts.map +0 -1
  615. package/dist/src/types/__tests__/json.test.js +0 -298
  616. package/dist/src/types/__tests__/json.test.js.map +0 -1
  617. package/dist/src/types/__tests__/media.test.d.ts +0 -2
  618. package/dist/src/types/__tests__/media.test.d.ts.map +0 -1
  619. package/dist/src/types/__tests__/media.test.js +0 -478
  620. package/dist/src/types/__tests__/media.test.js.map +0 -1
  621. package/dist/src/types/__tests__/messages.test.d.ts +0 -2
  622. package/dist/src/types/__tests__/messages.test.d.ts.map +0 -1
  623. package/dist/src/types/__tests__/messages.test.js +0 -681
  624. package/dist/src/types/__tests__/messages.test.js.map +0 -1
  625. package/dist/src/types/__tests__/validation.test.d.ts +0 -2
  626. package/dist/src/types/__tests__/validation.test.d.ts.map +0 -1
  627. package/dist/src/types/__tests__/validation.test.js +0 -30
  628. package/dist/src/types/__tests__/validation.test.js.map +0 -1
  629. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts +0 -2
  630. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts.map +0 -1
  631. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js +0 -675
  632. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js.map +0 -1
  633. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts +0 -2
  634. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts.map +0 -1
  635. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js +0 -358
  636. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js.map +0 -1
  637. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts +0 -2
  638. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts.map +0 -1
  639. package/dist/src/vended-interventions/steering/__tests__/handler.test.js +0 -163
  640. package/dist/src/vended-interventions/steering/__tests__/handler.test.js.map +0 -1
  641. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts +0 -2
  642. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts.map +0 -1
  643. package/dist/src/vended-interventions/steering/__tests__/llm.test.js +0 -60
  644. package/dist/src/vended-interventions/steering/__tests__/llm.test.js.map +0 -1
  645. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts +0 -2
  646. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts.map +0 -1
  647. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js +0 -94
  648. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js.map +0 -1
  649. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts +0 -2
  650. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts.map +0 -1
  651. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js +0 -611
  652. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js.map +0 -1
  653. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts +0 -2
  654. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts.map +0 -1
  655. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js +0 -96
  656. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js.map +0 -1
  657. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +0 -2
  658. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +0 -1
  659. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +0 -68
  660. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +0 -1
  661. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +0 -2
  662. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +0 -1
  663. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +0 -539
  664. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +0 -1
  665. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +0 -2
  666. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +0 -1
  667. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +0 -93
  668. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +0 -1
  669. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts +0 -2
  670. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts.map +0 -1
  671. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js +0 -149
  672. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js.map +0 -1
  673. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +0 -2
  674. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +0 -1
  675. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +0 -216
  676. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +0 -1
  677. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +0 -2
  678. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +0 -1
  679. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +0 -78
  680. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +0 -1
  681. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +0 -2
  682. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +0 -1
  683. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +0 -736
  684. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +0 -1
  685. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.d.ts +0 -2
  686. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.d.ts.map +0 -1
  687. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +0 -482
  688. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +0 -1
  689. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.d.ts +0 -2
  690. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.d.ts.map +0 -1
  691. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.js +0 -476
  692. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.js.map +0 -1
  693. package/dist/src/vended-tools/bash/__tests__/bash.test.node.d.ts +0 -2
  694. package/dist/src/vended-tools/bash/__tests__/bash.test.node.d.ts.map +0 -1
  695. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +0 -390
  696. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +0 -1
  697. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts +0 -2
  698. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts.map +0 -1
  699. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +0 -452
  700. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +0 -1
  701. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts +0 -2
  702. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts.map +0 -1
  703. package/dist/src/vended-tools/http-request/__tests__/http-request.test.js +0 -189
  704. package/dist/src/vended-tools/http-request/__tests__/http-request.test.js.map +0 -1
  705. package/dist/src/vended-tools/notebook/__tests__/notebook.test.d.ts +0 -2
  706. package/dist/src/vended-tools/notebook/__tests__/notebook.test.d.ts.map +0 -1
  707. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +0 -388
  708. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +0 -1
@@ -1,921 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { Message, TextBlock, ToolUseBlock, ToolResultBlock, ReasoningBlock, GuardContentBlock, } from '../../types/messages.js';
3
- import { CitationsBlock } from '../../types/citations.js';
4
- import { TestModelProvider, collectGenerator } from '../../__fixtures__/model-test-helpers.js';
5
- import { MaxTokensError, ModelError } from '../../errors.js';
6
- import { Model } from '../model.js';
7
- /**
8
- * Test model provider that throws an error from stream().
9
- */
10
- class ErrorThrowingModelProvider extends Model {
11
- config = { modelId: 'test-model' };
12
- errorToThrow;
13
- constructor(errorToThrow) {
14
- super();
15
- this.errorToThrow = errorToThrow;
16
- }
17
- updateConfig(modelConfig) {
18
- this.config = { ...this.config, ...modelConfig };
19
- }
20
- getConfig() {
21
- return this.config;
22
- }
23
- // eslint-disable-next-line require-yield
24
- async *stream(_messages, _options) {
25
- throw this.errorToThrow;
26
- }
27
- }
28
- describe('Model', () => {
29
- describe('streamAggregated', () => {
30
- describe('when streaming a simple text message', () => {
31
- it('yields original events plus aggregated content block and returns final message', async () => {
32
- const provider = new TestModelProvider(async function* () {
33
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
34
- yield { type: 'modelContentBlockStartEvent' };
35
- yield {
36
- type: 'modelContentBlockDeltaEvent',
37
- delta: { type: 'textDelta', text: 'Hello' },
38
- };
39
- yield { type: 'modelContentBlockStopEvent' };
40
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
41
- yield {
42
- type: 'modelMetadataEvent',
43
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
44
- };
45
- });
46
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
47
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
48
- // Verify all yielded items (events + aggregated content block + metadata)
49
- expect(items).toEqual([
50
- { type: 'modelMessageStartEvent', role: 'assistant' },
51
- { type: 'modelContentBlockStartEvent' },
52
- {
53
- type: 'modelContentBlockDeltaEvent',
54
- delta: { type: 'textDelta', text: 'Hello' },
55
- },
56
- { type: 'modelContentBlockStopEvent' },
57
- { type: 'textBlock', text: 'Hello' },
58
- { type: 'modelMessageStopEvent', stopReason: 'endTurn' },
59
- {
60
- type: 'modelMetadataEvent',
61
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
62
- },
63
- ]);
64
- // Verify the returned result includes metadata
65
- expect(result).toEqual({
66
- message: {
67
- type: 'message',
68
- role: 'assistant',
69
- content: [{ type: 'textBlock', text: 'Hello' }],
70
- metadata: {
71
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
72
- },
73
- },
74
- stopReason: 'endTurn',
75
- metadata: {
76
- type: 'modelMetadataEvent',
77
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
78
- },
79
- });
80
- });
81
- it('throws MaxTokenError when stopReason is MaxTokenError', async () => {
82
- const provider = new TestModelProvider(async function* () {
83
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
84
- yield { type: 'modelContentBlockStartEvent' };
85
- yield {
86
- type: 'modelContentBlockDeltaEvent',
87
- delta: { type: 'textDelta', text: 'Hello' },
88
- };
89
- yield { type: 'modelContentBlockStopEvent' };
90
- yield { type: 'modelMessageStopEvent', stopReason: 'maxTokens' };
91
- yield {
92
- type: 'modelMetadataEvent',
93
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
94
- };
95
- });
96
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
97
- await expect(async () => await collectGenerator(provider.streamAggregated(messages))).rejects.toThrow('Model reached maximum token limit. This is an unrecoverable state that requires intervention.');
98
- });
99
- });
100
- describe('when streaming multiple text blocks', () => {
101
- it('yields all blocks in order', async () => {
102
- const provider = new TestModelProvider(async function* () {
103
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
104
- yield { type: 'modelContentBlockStartEvent' };
105
- yield {
106
- type: 'modelContentBlockDeltaEvent',
107
- delta: { type: 'textDelta', text: 'First' },
108
- };
109
- yield { type: 'modelContentBlockStopEvent' };
110
- yield { type: 'modelContentBlockStartEvent' };
111
- yield {
112
- type: 'modelContentBlockDeltaEvent',
113
- delta: { type: 'textDelta', text: 'Second' },
114
- };
115
- yield { type: 'modelContentBlockStopEvent' };
116
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
117
- yield {
118
- type: 'modelMetadataEvent',
119
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
120
- };
121
- });
122
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
123
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
124
- expect(items).toContainEqual({ type: 'textBlock', text: 'First' });
125
- expect(items).toContainEqual({ type: 'textBlock', text: 'Second' });
126
- expect(items).toContainEqual({
127
- type: 'modelMetadataEvent',
128
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
129
- });
130
- expect(result).toEqual({
131
- message: {
132
- type: 'message',
133
- role: 'assistant',
134
- content: [
135
- { type: 'textBlock', text: 'First' },
136
- { type: 'textBlock', text: 'Second' },
137
- ],
138
- metadata: {
139
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
140
- },
141
- },
142
- stopReason: 'endTurn',
143
- metadata: {
144
- type: 'modelMetadataEvent',
145
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
146
- },
147
- });
148
- });
149
- });
150
- describe('when streaming tool use', () => {
151
- it('yields complete tool use block', async () => {
152
- const provider = new TestModelProvider(async function* () {
153
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
154
- yield {
155
- type: 'modelContentBlockStartEvent',
156
- start: { type: 'toolUseStart', toolUseId: 'tool1', name: 'get_weather' },
157
- };
158
- yield {
159
- type: 'modelContentBlockDeltaEvent',
160
- delta: { type: 'toolUseInputDelta', input: '{"location"' },
161
- };
162
- yield {
163
- type: 'modelContentBlockDeltaEvent',
164
- delta: { type: 'toolUseInputDelta', input: ': "Paris"}' },
165
- };
166
- yield { type: 'modelContentBlockStopEvent' };
167
- yield { type: 'modelMessageStopEvent', stopReason: 'toolUse' };
168
- yield {
169
- type: 'modelMetadataEvent',
170
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
171
- };
172
- });
173
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
174
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
175
- expect(items).toContainEqual({
176
- type: 'toolUseBlock',
177
- toolUseId: 'tool1',
178
- name: 'get_weather',
179
- input: { location: 'Paris' },
180
- });
181
- expect(items).toContainEqual({
182
- type: 'modelMetadataEvent',
183
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
184
- });
185
- expect(result).toEqual({
186
- message: {
187
- type: 'message',
188
- role: 'assistant',
189
- content: [
190
- {
191
- type: 'toolUseBlock',
192
- toolUseId: 'tool1',
193
- name: 'get_weather',
194
- input: { location: 'Paris' },
195
- },
196
- ],
197
- metadata: {
198
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
199
- },
200
- },
201
- stopReason: 'toolUse',
202
- metadata: {
203
- type: 'modelMetadataEvent',
204
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
205
- },
206
- });
207
- });
208
- it('yields complete tool use block with empty input', async () => {
209
- const provider = new TestModelProvider(async function* () {
210
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
211
- yield {
212
- type: 'modelContentBlockStartEvent',
213
- start: { type: 'toolUseStart', toolUseId: 'tool1', name: 'get_time' },
214
- };
215
- yield {
216
- type: 'modelContentBlockDeltaEvent',
217
- delta: { type: 'toolUseInputDelta', input: '' },
218
- };
219
- yield { type: 'modelContentBlockStopEvent' };
220
- yield { type: 'modelMessageStopEvent', stopReason: 'toolUse' };
221
- yield {
222
- type: 'modelMetadataEvent',
223
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
224
- };
225
- });
226
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
227
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
228
- expect(items).toContainEqual({
229
- type: 'toolUseBlock',
230
- toolUseId: 'tool1',
231
- name: 'get_time',
232
- input: {},
233
- });
234
- expect(items).toContainEqual({
235
- type: 'modelMetadataEvent',
236
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
237
- });
238
- expect(result).toEqual({
239
- message: {
240
- type: 'message',
241
- role: 'assistant',
242
- content: [
243
- {
244
- type: 'toolUseBlock',
245
- toolUseId: 'tool1',
246
- name: 'get_time',
247
- input: {},
248
- },
249
- ],
250
- metadata: {
251
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
252
- },
253
- },
254
- stopReason: 'toolUse',
255
- metadata: {
256
- type: 'modelMetadataEvent',
257
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
258
- },
259
- });
260
- });
261
- it('throws MaxTokenError when stopReason is MaxTokenError and toolUse is partial', async () => {
262
- const provider = new TestModelProvider(async function* () {
263
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
264
- yield {
265
- type: 'modelContentBlockStartEvent',
266
- start: { type: 'toolUseStart', toolUseId: 'tool1', name: 'get_weather' },
267
- };
268
- yield {
269
- type: 'modelContentBlockDeltaEvent',
270
- delta: { type: 'toolUseInputDelta', input: '{"location"' },
271
- };
272
- yield { type: 'modelMessageStopEvent', stopReason: 'maxTokens' };
273
- yield {
274
- type: 'modelMetadataEvent',
275
- usage: { inputTokens: 10, outputTokens: 8, totalTokens: 18 },
276
- };
277
- });
278
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
279
- await expect(async () => await collectGenerator(provider.streamAggregated(messages))).rejects.toThrow(MaxTokensError);
280
- });
281
- it('throws MaxTokensError when contentBlockStop arrives with truncated tool input JSON and stopReason is maxTokens', async () => {
282
- const provider = new TestModelProvider(async function* () {
283
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
284
- yield {
285
- type: 'modelContentBlockStartEvent',
286
- start: { type: 'toolUseStart', toolUseId: 't', name: 'tool' },
287
- };
288
- yield {
289
- type: 'modelContentBlockDeltaEvent',
290
- delta: { type: 'toolUseInputDelta', input: '{"field": "value"' },
291
- };
292
- yield { type: 'modelContentBlockStopEvent' };
293
- yield { type: 'modelMessageStopEvent', stopReason: 'maxTokens' };
294
- });
295
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
296
- await expect(async () => await collectGenerator(provider.streamAggregated(messages))).rejects.toThrow(MaxTokensError);
297
- });
298
- it('surfaces SyntaxError as cause when tool input JSON is malformed and stopReason is not maxTokens', async () => {
299
- const provider = new TestModelProvider(async function* () {
300
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
301
- yield {
302
- type: 'modelContentBlockStartEvent',
303
- start: { type: 'toolUseStart', toolUseId: 't', name: 'tool' },
304
- };
305
- yield {
306
- type: 'modelContentBlockDeltaEvent',
307
- delta: { type: 'toolUseInputDelta', input: '{invalid json' },
308
- };
309
- yield { type: 'modelContentBlockStopEvent' };
310
- yield { type: 'modelMessageStopEvent', stopReason: 'toolUse' };
311
- });
312
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
313
- try {
314
- await collectGenerator(provider.streamAggregated(messages));
315
- expect.fail('Expected error to be thrown');
316
- }
317
- catch (error) {
318
- expect(error).toBeInstanceOf(ModelError);
319
- expect(error).not.toBeInstanceOf(MaxTokensError);
320
- expect(error.message).toBe('unable to parse tool input JSON');
321
- expect(error.cause).toBeInstanceOf(SyntaxError);
322
- }
323
- });
324
- it('attaches SyntaxError as cause when stream ends without a stop event after malformed tool input', async () => {
325
- const provider = new TestModelProvider(async function* () {
326
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
327
- yield {
328
- type: 'modelContentBlockStartEvent',
329
- start: { type: 'toolUseStart', toolUseId: 't', name: 'tool' },
330
- };
331
- yield {
332
- type: 'modelContentBlockDeltaEvent',
333
- delta: { type: 'toolUseInputDelta', input: '{invalid json' },
334
- };
335
- yield { type: 'modelContentBlockStopEvent' };
336
- });
337
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
338
- try {
339
- await collectGenerator(provider.streamAggregated(messages));
340
- expect.fail('Expected error to be thrown');
341
- }
342
- catch (error) {
343
- expect(error).toBeInstanceOf(ModelError);
344
- expect(error).not.toBeInstanceOf(MaxTokensError);
345
- expect(error.message).toBe('Stream ended without completing a message');
346
- expect(error.cause).toBeInstanceOf(SyntaxError);
347
- }
348
- });
349
- });
350
- describe('when streaming reasoning content', () => {
351
- it('yields complete reasoning block', async () => {
352
- const provider = new TestModelProvider(async function* () {
353
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
354
- yield { type: 'modelContentBlockStartEvent' };
355
- yield {
356
- type: 'modelContentBlockDeltaEvent',
357
- delta: { type: 'reasoningContentDelta', text: 'Thinking about', signature: 'sig1' },
358
- };
359
- yield {
360
- type: 'modelContentBlockDeltaEvent',
361
- delta: { type: 'reasoningContentDelta', text: ' the problem' },
362
- };
363
- yield { type: 'modelContentBlockStopEvent' };
364
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
365
- yield {
366
- type: 'modelMetadataEvent',
367
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
368
- };
369
- });
370
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
371
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
372
- expect(items).toContainEqual({
373
- type: 'reasoningBlock',
374
- text: 'Thinking about the problem',
375
- signature: 'sig1',
376
- });
377
- expect(items).toContainEqual({
378
- type: 'modelMetadataEvent',
379
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
380
- });
381
- expect(result).toEqual({
382
- message: {
383
- type: 'message',
384
- role: 'assistant',
385
- content: [
386
- {
387
- type: 'reasoningBlock',
388
- text: 'Thinking about the problem',
389
- signature: 'sig1',
390
- },
391
- ],
392
- metadata: {
393
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
394
- },
395
- },
396
- stopReason: 'endTurn',
397
- metadata: {
398
- type: 'modelMetadataEvent',
399
- usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
400
- },
401
- });
402
- });
403
- it('yields redacted content reasoning block', async () => {
404
- const provider = new TestModelProvider(async function* () {
405
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
406
- yield { type: 'modelContentBlockStartEvent' };
407
- yield {
408
- type: 'modelContentBlockDeltaEvent',
409
- delta: { type: 'reasoningContentDelta', redactedContent: new Uint8Array(0) },
410
- };
411
- yield { type: 'modelContentBlockStopEvent' };
412
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
413
- yield {
414
- type: 'modelMetadataEvent',
415
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
416
- };
417
- });
418
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
419
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
420
- expect(items).toContainEqual({
421
- type: 'reasoningBlock',
422
- redactedContent: new Uint8Array(0),
423
- });
424
- expect(items).toContainEqual({
425
- type: 'modelMetadataEvent',
426
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
427
- });
428
- expect(result).toEqual({
429
- message: {
430
- type: 'message',
431
- role: 'assistant',
432
- content: [
433
- {
434
- type: 'reasoningBlock',
435
- redactedContent: new Uint8Array(0),
436
- },
437
- ],
438
- metadata: {
439
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
440
- },
441
- },
442
- stopReason: 'endTurn',
443
- metadata: {
444
- type: 'modelMetadataEvent',
445
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
446
- },
447
- });
448
- });
449
- it('omits signature if not present', async () => {
450
- const provider = new TestModelProvider(async function* () {
451
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
452
- yield { type: 'modelContentBlockStartEvent' };
453
- yield {
454
- type: 'modelContentBlockDeltaEvent',
455
- delta: { type: 'reasoningContentDelta', text: 'Thinking' },
456
- };
457
- yield { type: 'modelContentBlockStopEvent' };
458
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
459
- yield {
460
- type: 'modelMetadataEvent',
461
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
462
- };
463
- });
464
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
465
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
466
- expect(items).toContainEqual({
467
- type: 'reasoningBlock',
468
- text: 'Thinking',
469
- });
470
- expect(items).toContainEqual({
471
- type: 'modelMetadataEvent',
472
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
473
- });
474
- expect(result).toEqual({
475
- message: {
476
- type: 'message',
477
- role: 'assistant',
478
- content: [
479
- {
480
- type: 'reasoningBlock',
481
- text: 'Thinking',
482
- },
483
- ],
484
- metadata: {
485
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
486
- },
487
- },
488
- stopReason: 'endTurn',
489
- metadata: {
490
- type: 'modelMetadataEvent',
491
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
492
- },
493
- });
494
- });
495
- });
496
- describe('when streaming mixed content blocks', () => {
497
- it('yields all blocks in correct order', async () => {
498
- const provider = new TestModelProvider(async function* () {
499
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
500
- yield { type: 'modelContentBlockStartEvent' };
501
- yield {
502
- type: 'modelContentBlockDeltaEvent',
503
- delta: { type: 'textDelta', text: 'Hello' },
504
- };
505
- yield { type: 'modelContentBlockStopEvent' };
506
- yield {
507
- type: 'modelContentBlockStartEvent',
508
- start: { type: 'toolUseStart', toolUseId: 'tool1', name: 'get_weather' },
509
- };
510
- yield {
511
- type: 'modelContentBlockDeltaEvent',
512
- delta: { type: 'toolUseInputDelta', input: '{"city": "Paris"}' },
513
- };
514
- yield { type: 'modelContentBlockStopEvent' };
515
- yield { type: 'modelContentBlockStartEvent' };
516
- yield {
517
- type: 'modelContentBlockDeltaEvent',
518
- delta: { type: 'reasoningContentDelta', text: 'Reasoning', signature: 'sig1' },
519
- };
520
- yield { type: 'modelContentBlockStopEvent' };
521
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
522
- yield {
523
- type: 'modelMetadataEvent',
524
- usage: { inputTokens: 10, outputTokens: 15, totalTokens: 25 },
525
- };
526
- });
527
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
528
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
529
- expect(items).toContainEqual({ type: 'textBlock', text: 'Hello' });
530
- expect(items).toContainEqual({
531
- type: 'toolUseBlock',
532
- toolUseId: 'tool1',
533
- name: 'get_weather',
534
- input: { city: 'Paris' },
535
- });
536
- expect(items).toContainEqual({ type: 'reasoningBlock', text: 'Reasoning', signature: 'sig1' });
537
- expect(items).toContainEqual({
538
- type: 'modelMetadataEvent',
539
- usage: { inputTokens: 10, outputTokens: 15, totalTokens: 25 },
540
- });
541
- expect(result).toEqual({
542
- message: {
543
- type: 'message',
544
- role: 'assistant',
545
- content: [
546
- { type: 'textBlock', text: 'Hello' },
547
- { type: 'toolUseBlock', toolUseId: 'tool1', name: 'get_weather', input: { city: 'Paris' } },
548
- { type: 'reasoningBlock', text: 'Reasoning', signature: 'sig1' },
549
- ],
550
- metadata: {
551
- usage: { inputTokens: 10, outputTokens: 15, totalTokens: 25 },
552
- },
553
- },
554
- stopReason: 'endTurn',
555
- metadata: {
556
- type: 'modelMetadataEvent',
557
- usage: { inputTokens: 10, outputTokens: 15, totalTokens: 25 },
558
- },
559
- });
560
- });
561
- });
562
- describe('when multiple metadata events are emitted', () => {
563
- it('yields all metadata events but keeps only the last one in return value', async () => {
564
- const provider = new TestModelProvider(async function* () {
565
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
566
- yield { type: 'modelContentBlockStartEvent' };
567
- yield {
568
- type: 'modelContentBlockDeltaEvent',
569
- delta: { type: 'textDelta', text: 'Hello' },
570
- };
571
- yield { type: 'modelContentBlockStopEvent' };
572
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
573
- yield {
574
- type: 'modelMetadataEvent',
575
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
576
- };
577
- yield {
578
- type: 'modelMetadataEvent',
579
- usage: { inputTokens: 20, outputTokens: 10, totalTokens: 30 },
580
- metrics: { latencyMs: 100 },
581
- };
582
- });
583
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
584
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
585
- // Both metadata events should be yielded
586
- expect(items).toContainEqual({
587
- type: 'modelMetadataEvent',
588
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
589
- });
590
- expect(items).toContainEqual({
591
- type: 'modelMetadataEvent',
592
- usage: { inputTokens: 20, outputTokens: 10, totalTokens: 30 },
593
- metrics: { latencyMs: 100 },
594
- });
595
- // Only the last metadata should be in return value
596
- expect(result).toEqual({
597
- message: {
598
- type: 'message',
599
- role: 'assistant',
600
- content: [{ type: 'textBlock', text: 'Hello' }],
601
- metadata: {
602
- usage: { inputTokens: 20, outputTokens: 10, totalTokens: 30 },
603
- metrics: { latencyMs: 100 },
604
- },
605
- },
606
- stopReason: 'endTurn',
607
- metadata: {
608
- type: 'modelMetadataEvent',
609
- usage: { inputTokens: 20, outputTokens: 10, totalTokens: 30 },
610
- metrics: { latencyMs: 100 },
611
- },
612
- });
613
- });
614
- });
615
- describe('when no metadata events are emitted', () => {
616
- it('returns result with undefined metadata', async () => {
617
- const provider = new TestModelProvider(async function* () {
618
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
619
- yield { type: 'modelContentBlockStartEvent' };
620
- yield {
621
- type: 'modelContentBlockDeltaEvent',
622
- delta: { type: 'textDelta', text: 'Hello' },
623
- };
624
- yield { type: 'modelContentBlockStopEvent' };
625
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
626
- });
627
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
628
- const { items, result } = await collectGenerator(provider.streamAggregated(messages));
629
- // No metadata event should be in yielded items
630
- expect(items.filter((item) => item.type === 'modelMetadataEvent')).toHaveLength(0);
631
- // Metadata should be undefined in return value
632
- expect(result).toEqual({
633
- message: {
634
- type: 'message',
635
- role: 'assistant',
636
- content: [{ type: 'textBlock', text: 'Hello' }],
637
- },
638
- stopReason: 'endTurn',
639
- metadata: undefined,
640
- });
641
- });
642
- });
643
- describe('when stream() throws an error', () => {
644
- it('wraps non-ModelError errors in ModelError with original as cause', async () => {
645
- const originalError = new Error('API connection failed');
646
- const provider = new ErrorThrowingModelProvider(originalError);
647
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
648
- try {
649
- await collectGenerator(provider.streamAggregated(messages));
650
- expect.fail('Expected error to be thrown');
651
- }
652
- catch (error) {
653
- expect(error).toBeInstanceOf(ModelError);
654
- expect(error.message).toBe('API connection failed');
655
- expect(error.cause).toBe(originalError);
656
- }
657
- });
658
- });
659
- describe('when receiving redact content events', () => {
660
- it('returns redaction.userMessage when inputRedaction is present', async () => {
661
- const provider = new TestModelProvider(async function* () {
662
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
663
- yield { type: 'modelContentBlockStartEvent' };
664
- yield {
665
- type: 'modelContentBlockDeltaEvent',
666
- delta: { type: 'textDelta', text: 'Hello' },
667
- };
668
- yield { type: 'modelContentBlockStopEvent' };
669
- yield { type: 'modelMessageStopEvent', stopReason: 'guardrailIntervened' };
670
- yield {
671
- type: 'modelMetadataEvent',
672
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
673
- };
674
- yield {
675
- type: 'modelRedactionEvent',
676
- inputRedaction: { replaceContent: '[User input redacted.]' },
677
- };
678
- });
679
- const messages = [new Message({ role: 'user', content: [new TextBlock('Sensitive content')] })];
680
- const { result } = await collectGenerator(provider.streamAggregated(messages));
681
- // Verify redaction.userMessage is returned for agent to handle
682
- expect(result.redaction?.userMessage).toBe('[User input redacted.]');
683
- // Messages array should NOT be modified (agent handles this)
684
- expect(messages[0].content).toEqual([{ type: 'textBlock', text: 'Sensitive content' }]);
685
- });
686
- it('redacts assistant message directly when outputRedaction is present', async () => {
687
- const provider = new TestModelProvider(async function* () {
688
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
689
- yield { type: 'modelContentBlockStartEvent' };
690
- yield {
691
- type: 'modelContentBlockDeltaEvent',
692
- delta: { type: 'textDelta', text: 'Harmful content' },
693
- };
694
- yield { type: 'modelContentBlockStopEvent' };
695
- yield { type: 'modelMessageStopEvent', stopReason: 'guardrailIntervened' };
696
- yield {
697
- type: 'modelMetadataEvent',
698
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
699
- };
700
- yield {
701
- type: 'modelRedactionEvent',
702
- outputRedaction: { replaceContent: '[Assistant output redacted.]' },
703
- };
704
- });
705
- const messages = [new Message({ role: 'user', content: [new TextBlock('Tell me something')] })];
706
- const { result } = await collectGenerator(provider.streamAggregated(messages));
707
- // Assistant message is redacted directly by the model
708
- expect(result.message.role).toBe('assistant');
709
- expect(result.message.content).toEqual([{ type: 'textBlock', text: '[Assistant output redacted.]' }]);
710
- // No redaction.userMessage since assistant redaction is handled directly
711
- expect(result.redaction?.userMessage).toBeUndefined();
712
- });
713
- it('returns redactionMessage and redacts assistant when both are present', async () => {
714
- const provider = new TestModelProvider(async function* () {
715
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
716
- yield { type: 'modelContentBlockStartEvent' };
717
- yield {
718
- type: 'modelContentBlockDeltaEvent',
719
- delta: { type: 'textDelta', text: 'Response' },
720
- };
721
- yield { type: 'modelContentBlockStopEvent' };
722
- yield { type: 'modelMessageStopEvent', stopReason: 'guardrailIntervened' };
723
- yield {
724
- type: 'modelMetadataEvent',
725
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
726
- };
727
- yield {
728
- type: 'modelRedactionEvent',
729
- inputRedaction: { replaceContent: '[User input redacted.]' },
730
- };
731
- yield {
732
- type: 'modelRedactionEvent',
733
- outputRedaction: { replaceContent: '[Assistant output redacted.]' },
734
- };
735
- });
736
- const messages = [new Message({ role: 'user', content: [new TextBlock('Input')] })];
737
- const { result } = await collectGenerator(provider.streamAggregated(messages));
738
- // Verify redaction.userMessage is returned for agent to handle user redaction
739
- expect(result.redaction?.userMessage).toBe('[User input redacted.]');
740
- // Assistant message is redacted directly
741
- expect(result.message.role).toBe('assistant');
742
- expect(result.message.content).toEqual([{ type: 'textBlock', text: '[Assistant output redacted.]' }]);
743
- });
744
- it('does not include redaction when no redact events are received', async () => {
745
- const provider = new TestModelProvider(async function* () {
746
- yield { type: 'modelMessageStartEvent', role: 'assistant' };
747
- yield { type: 'modelContentBlockStartEvent' };
748
- yield {
749
- type: 'modelContentBlockDeltaEvent',
750
- delta: { type: 'textDelta', text: 'Hello' },
751
- };
752
- yield { type: 'modelContentBlockStopEvent' };
753
- yield { type: 'modelMessageStopEvent', stopReason: 'endTurn' };
754
- yield {
755
- type: 'modelMetadataEvent',
756
- usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
757
- };
758
- });
759
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hello')] })];
760
- const { result } = await collectGenerator(provider.streamAggregated(messages));
761
- // Verify redaction.userMessage is undefined
762
- expect(result.redaction?.userMessage).toBeUndefined();
763
- });
764
- });
765
- });
766
- });
767
- describe('Model.modelId', () => {
768
- it('returns modelId from model config', () => {
769
- const provider = new TestModelProvider();
770
- provider.updateConfig({ modelId: 'my-model' });
771
- expect(provider.modelId).toBe('my-model');
772
- });
773
- });
774
- describe('countTokens', () => {
775
- it('estimates text block tokens using chars/4 heuristic', async () => {
776
- const provider = new TestModelProvider();
777
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hello world')] })];
778
- const result = await provider.countTokens(messages);
779
- expect(result).toBe(3);
780
- });
781
- it('estimates toolUse block tokens (name + JSON input)', async () => {
782
- const provider = new TestModelProvider();
783
- const messages = [
784
- new Message({
785
- role: 'assistant',
786
- content: [new ToolUseBlock({ name: 'get_weather', toolUseId: 'id1', input: { city: 'Seattle' } })],
787
- }),
788
- ];
789
- const result = await provider.countTokens(messages);
790
- expect(result).toBe(3 + 9);
791
- });
792
- it('estimates toolResult block tokens (text items only)', async () => {
793
- const provider = new TestModelProvider();
794
- const messages = [
795
- new Message({
796
- role: 'user',
797
- content: [
798
- new ToolResultBlock({
799
- toolUseId: 'id1',
800
- status: 'success',
801
- content: [new TextBlock('72°F and sunny')],
802
- }),
803
- ],
804
- }),
805
- ];
806
- const result = await provider.countTokens(messages);
807
- expect(result).toBe(Math.ceil('72°F and sunny'.length / 4));
808
- });
809
- it('estimates reasoning block tokens', async () => {
810
- const provider = new TestModelProvider();
811
- const messages = [
812
- new Message({
813
- role: 'assistant',
814
- content: [new ReasoningBlock({ text: 'Let me think about this step by step' })],
815
- }),
816
- ];
817
- const result = await provider.countTokens(messages);
818
- expect(result).toBe(Math.ceil('Let me think about this step by step'.length / 4));
819
- });
820
- it('estimates guardContent block tokens', async () => {
821
- const provider = new TestModelProvider();
822
- const messages = [
823
- new Message({
824
- role: 'user',
825
- content: [
826
- new GuardContentBlock({
827
- text: { qualifiers: ['query'], text: 'Is this safe?' },
828
- }),
829
- ],
830
- }),
831
- ];
832
- const result = await provider.countTokens(messages);
833
- expect(result).toBe(Math.ceil('Is this safe?'.length / 4));
834
- });
835
- it('estimates citations block tokens', async () => {
836
- const provider = new TestModelProvider();
837
- const messages = [
838
- new Message({
839
- role: 'assistant',
840
- content: [
841
- new CitationsBlock({
842
- citations: [],
843
- content: [{ text: 'cited text here' }],
844
- }),
845
- ],
846
- }),
847
- ];
848
- const result = await provider.countTokens(messages);
849
- expect(result).toBe(Math.ceil('cited text here'.length / 4));
850
- });
851
- it('estimates string system prompt tokens', async () => {
852
- const provider = new TestModelProvider();
853
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
854
- const result = await provider.countTokens(messages, {
855
- systemPrompt: 'You are a helpful assistant',
856
- });
857
- expect(result).toBe(Math.ceil('You are a helpful assistant'.length / 4) + Math.ceil('Hi'.length / 4));
858
- });
859
- it('estimates array system prompt tokens', async () => {
860
- const provider = new TestModelProvider();
861
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
862
- const result = await provider.countTokens(messages, {
863
- systemPrompt: [new TextBlock('System instructions')],
864
- });
865
- expect(result).toBe(Math.ceil('System instructions'.length / 4) + Math.ceil('Hi'.length / 4));
866
- });
867
- it('estimates tool spec tokens', async () => {
868
- const provider = new TestModelProvider();
869
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
870
- const toolSpecs = [{ name: 'get_weather', description: 'Get weather for a city' }];
871
- const result = await provider.countTokens(messages, { toolSpecs });
872
- const specJson = JSON.stringify(toolSpecs[0]);
873
- expect(result).toBe(Math.ceil('Hi'.length / 4) + Math.ceil(specJson.length / 2));
874
- });
875
- it('returns 0 for empty messages', async () => {
876
- const provider = new TestModelProvider();
877
- const result = await provider.countTokens([]);
878
- expect(result).toBe(0);
879
- });
880
- it('skips reasoning blocks without text', async () => {
881
- const provider = new TestModelProvider();
882
- const messages = [
883
- new Message({
884
- role: 'assistant',
885
- content: [new ReasoningBlock({ signature: 'sig123' })],
886
- }),
887
- ];
888
- const result = await provider.countTokens(messages);
889
- expect(result).toBe(0);
890
- });
891
- it('estimates guardContent in array system prompt', async () => {
892
- const provider = new TestModelProvider();
893
- const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
894
- const result = await provider.countTokens(messages, {
895
- systemPrompt: [new GuardContentBlock({ text: { qualifiers: ['query'], text: 'Guard text here' } })],
896
- });
897
- expect(result).toBe(Math.ceil('Guard text here'.length / 4) + Math.ceil('Hi'.length / 4));
898
- });
899
- it('accumulates tokens across multiple messages with mixed content', async () => {
900
- const provider = new TestModelProvider();
901
- const messages = [
902
- new Message({ role: 'user', content: [new TextBlock('What is the weather?')] }),
903
- new Message({
904
- role: 'assistant',
905
- content: [new ToolUseBlock({ name: 'get_weather', toolUseId: 'id1', input: { city: 'Seattle' } })],
906
- }),
907
- new Message({
908
- role: 'user',
909
- content: [new ToolResultBlock({ toolUseId: 'id1', status: 'success', content: [new TextBlock('72F')] })],
910
- }),
911
- ];
912
- const result = await provider.countTokens(messages, { systemPrompt: 'You are helpful' });
913
- const expected = Math.ceil('You are helpful'.length / 4) +
914
- Math.ceil('What is the weather?'.length / 4) +
915
- Math.ceil('get_weather'.length / 4) +
916
- Math.ceil(JSON.stringify({ city: 'Seattle' }).length / 2) +
917
- Math.ceil('72F'.length / 4);
918
- expect(result).toBe(expected);
919
- });
920
- });
921
- //# sourceMappingURL=model.test.js.map