@illuma-ai/agents 1.0.89 → 1.0.93

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 (838) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +98 -49
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/common/constants.cjs +25 -0
  4. package/dist/cjs/common/constants.cjs.map +1 -0
  5. package/dist/cjs/common/enum.cjs +30 -0
  6. package/dist/cjs/common/enum.cjs.map +1 -1
  7. package/dist/cjs/events.cjs +9 -4
  8. package/dist/cjs/events.cjs.map +1 -1
  9. package/dist/cjs/graphs/Graph.cjs +397 -92
  10. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  11. package/dist/cjs/graphs/MultiAgentGraph.cjs +223 -92
  12. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  13. package/dist/cjs/instrumentation.cjs +30 -14
  14. package/dist/cjs/instrumentation.cjs.map +1 -1
  15. package/dist/cjs/llm/anthropic/index.cjs +43 -11
  16. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  17. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  18. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +10 -7
  19. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  20. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +32 -0
  21. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  22. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  23. package/dist/cjs/llm/bedrock/index.cjs +129 -101
  24. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  25. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +489 -0
  26. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -0
  27. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +176 -0
  28. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -0
  29. package/dist/cjs/llm/fake.cjs.map +1 -1
  30. package/dist/cjs/llm/google/index.cjs.map +1 -1
  31. package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
  32. package/dist/cjs/llm/openai/index.cjs +1 -1
  33. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  34. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  35. package/dist/cjs/llm/openrouter/index.cjs +59 -5
  36. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  37. package/dist/cjs/llm/providers.cjs.map +1 -1
  38. package/dist/cjs/llm/text.cjs.map +1 -1
  39. package/dist/cjs/llm/vertexai/index.cjs +80 -2
  40. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  41. package/dist/cjs/main.cjs +60 -27
  42. package/dist/cjs/main.cjs.map +1 -1
  43. package/dist/cjs/messages/cache.cjs +131 -108
  44. package/dist/cjs/messages/cache.cjs.map +1 -1
  45. package/dist/cjs/messages/content.cjs.map +1 -1
  46. package/dist/cjs/messages/core.cjs +3 -0
  47. package/dist/cjs/messages/core.cjs.map +1 -1
  48. package/dist/cjs/messages/format.cjs +265 -47
  49. package/dist/cjs/messages/format.cjs.map +1 -1
  50. package/dist/cjs/messages/ids.cjs.map +1 -1
  51. package/dist/cjs/messages/prune.cjs +55 -2
  52. package/dist/cjs/messages/prune.cjs.map +1 -1
  53. package/dist/cjs/messages/summarize.cjs +170 -0
  54. package/dist/cjs/messages/summarize.cjs.map +1 -0
  55. package/dist/cjs/messages/tools.cjs.map +1 -1
  56. package/dist/cjs/run.cjs +87 -30
  57. package/dist/cjs/run.cjs.map +1 -1
  58. package/dist/cjs/schemas/validate.cjs.map +1 -1
  59. package/dist/cjs/splitStream.cjs.map +1 -1
  60. package/dist/cjs/stream.cjs +59 -25
  61. package/dist/cjs/stream.cjs.map +1 -1
  62. package/dist/cjs/tools/AskUser.cjs +131 -0
  63. package/dist/cjs/tools/AskUser.cjs.map +1 -0
  64. package/dist/cjs/tools/BrowserTools.cjs +11 -7
  65. package/dist/cjs/tools/BrowserTools.cjs.map +1 -1
  66. package/dist/cjs/tools/Calculator.cjs.map +1 -1
  67. package/dist/cjs/tools/CodeExecutor.cjs +46 -4
  68. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  69. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +36 -53
  70. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  71. package/dist/cjs/tools/StreamingToolCallBuffer.cjs +208 -0
  72. package/dist/cjs/tools/StreamingToolCallBuffer.cjs.map +1 -0
  73. package/dist/cjs/tools/ToolNode.cjs +333 -30
  74. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  75. package/dist/cjs/tools/ToolSearch.cjs +66 -30
  76. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  77. package/dist/cjs/tools/handlers.cjs +94 -8
  78. package/dist/cjs/tools/handlers.cjs.map +1 -1
  79. package/dist/cjs/tools/schema.cjs.map +1 -1
  80. package/dist/cjs/tools/search/content.cjs.map +1 -1
  81. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  82. package/dist/cjs/tools/search/format.cjs.map +1 -1
  83. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  84. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  85. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  86. package/dist/cjs/tools/search/search.cjs +1 -0
  87. package/dist/cjs/tools/search/search.cjs.map +1 -1
  88. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  89. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  90. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  91. package/dist/cjs/types/graph.cjs +1 -1
  92. package/dist/cjs/types/graph.cjs.map +1 -1
  93. package/dist/cjs/utils/contextAnalytics.cjs +23 -6
  94. package/dist/cjs/utils/contextAnalytics.cjs.map +1 -1
  95. package/dist/cjs/utils/events.cjs.map +1 -1
  96. package/dist/cjs/utils/graph.cjs.map +1 -1
  97. package/dist/cjs/utils/handlers.cjs.map +1 -1
  98. package/dist/cjs/utils/llm.cjs.map +1 -1
  99. package/dist/cjs/utils/misc.cjs.map +1 -1
  100. package/dist/cjs/utils/run.cjs +3 -1
  101. package/dist/cjs/utils/run.cjs.map +1 -1
  102. package/dist/cjs/utils/schema.cjs.map +1 -1
  103. package/dist/cjs/utils/title.cjs.map +1 -1
  104. package/dist/cjs/utils/tokens.cjs +33 -58
  105. package/dist/cjs/utils/tokens.cjs.map +1 -1
  106. package/dist/cjs/utils/toolCallContinuation.cjs +55 -0
  107. package/dist/cjs/utils/toolCallContinuation.cjs.map +1 -0
  108. package/dist/cjs/utils/toonFormat.cjs.map +1 -1
  109. package/dist/esm/agents/AgentContext.mjs +98 -49
  110. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  111. package/dist/esm/common/constants.mjs +22 -0
  112. package/dist/esm/common/constants.mjs.map +1 -0
  113. package/dist/esm/common/enum.mjs +31 -1
  114. package/dist/esm/common/enum.mjs.map +1 -1
  115. package/dist/esm/events.mjs +9 -4
  116. package/dist/esm/events.mjs.map +1 -1
  117. package/dist/esm/graphs/Graph.mjs +393 -88
  118. package/dist/esm/graphs/Graph.mjs.map +1 -1
  119. package/dist/esm/graphs/MultiAgentGraph.mjs +224 -93
  120. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  121. package/dist/esm/instrumentation.mjs +30 -14
  122. package/dist/esm/instrumentation.mjs.map +1 -1
  123. package/dist/esm/llm/anthropic/index.mjs +43 -11
  124. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  125. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  126. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +10 -7
  127. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  128. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +32 -0
  129. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  130. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  131. package/dist/esm/llm/bedrock/index.mjs +128 -101
  132. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  133. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +484 -0
  134. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -0
  135. package/dist/esm/llm/bedrock/utils/message_outputs.mjs +171 -0
  136. package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -0
  137. package/dist/esm/llm/fake.mjs.map +1 -1
  138. package/dist/esm/llm/google/index.mjs.map +1 -1
  139. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  140. package/dist/esm/llm/openai/index.mjs +1 -1
  141. package/dist/esm/llm/openai/index.mjs.map +1 -1
  142. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  143. package/dist/esm/llm/openrouter/index.mjs +59 -5
  144. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  145. package/dist/esm/llm/providers.mjs.map +1 -1
  146. package/dist/esm/llm/text.mjs.map +1 -1
  147. package/dist/esm/llm/vertexai/index.mjs +80 -2
  148. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  149. package/dist/esm/main.mjs +8 -3
  150. package/dist/esm/main.mjs.map +1 -1
  151. package/dist/esm/messages/cache.mjs +131 -108
  152. package/dist/esm/messages/cache.mjs.map +1 -1
  153. package/dist/esm/messages/content.mjs.map +1 -1
  154. package/dist/esm/messages/core.mjs +4 -1
  155. package/dist/esm/messages/core.mjs.map +1 -1
  156. package/dist/esm/messages/format.mjs +267 -49
  157. package/dist/esm/messages/format.mjs.map +1 -1
  158. package/dist/esm/messages/ids.mjs.map +1 -1
  159. package/dist/esm/messages/prune.mjs +56 -4
  160. package/dist/esm/messages/prune.mjs.map +1 -1
  161. package/dist/esm/messages/summarize.mjs +161 -0
  162. package/dist/esm/messages/summarize.mjs.map +1 -0
  163. package/dist/esm/messages/tools.mjs.map +1 -1
  164. package/dist/esm/run.mjs +88 -31
  165. package/dist/esm/run.mjs.map +1 -1
  166. package/dist/esm/schemas/validate.mjs.map +1 -1
  167. package/dist/esm/splitStream.mjs.map +1 -1
  168. package/dist/esm/stream.mjs +60 -26
  169. package/dist/esm/stream.mjs.map +1 -1
  170. package/dist/esm/tools/AskUser.mjs +125 -0
  171. package/dist/esm/tools/AskUser.mjs.map +1 -0
  172. package/dist/esm/tools/BrowserTools.mjs +11 -7
  173. package/dist/esm/tools/BrowserTools.mjs.map +1 -1
  174. package/dist/esm/tools/Calculator.mjs.map +1 -1
  175. package/dist/esm/tools/CodeExecutor.mjs +46 -4
  176. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  177. package/dist/esm/tools/ProgrammaticToolCalling.mjs +37 -54
  178. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  179. package/dist/esm/tools/StreamingToolCallBuffer.mjs +206 -0
  180. package/dist/esm/tools/StreamingToolCallBuffer.mjs.map +1 -0
  181. package/dist/esm/tools/ToolNode.mjs +333 -30
  182. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  183. package/dist/esm/tools/ToolSearch.mjs +66 -30
  184. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  185. package/dist/esm/tools/handlers.mjs +95 -9
  186. package/dist/esm/tools/handlers.mjs.map +1 -1
  187. package/dist/esm/tools/schema.mjs.map +1 -1
  188. package/dist/esm/tools/search/content.mjs.map +1 -1
  189. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  190. package/dist/esm/tools/search/format.mjs.map +1 -1
  191. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  192. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  193. package/dist/esm/tools/search/schema.mjs.map +1 -1
  194. package/dist/esm/tools/search/search.mjs +1 -0
  195. package/dist/esm/tools/search/search.mjs.map +1 -1
  196. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  197. package/dist/esm/tools/search/tool.mjs.map +1 -1
  198. package/dist/esm/tools/search/utils.mjs.map +1 -1
  199. package/dist/esm/types/graph.mjs +1 -1
  200. package/dist/esm/types/graph.mjs.map +1 -1
  201. package/dist/esm/utils/contextAnalytics.mjs +23 -6
  202. package/dist/esm/utils/contextAnalytics.mjs.map +1 -1
  203. package/dist/esm/utils/events.mjs.map +1 -1
  204. package/dist/esm/utils/graph.mjs.map +1 -1
  205. package/dist/esm/utils/handlers.mjs.map +1 -1
  206. package/dist/esm/utils/llm.mjs.map +1 -1
  207. package/dist/esm/utils/misc.mjs.map +1 -1
  208. package/dist/esm/utils/run.mjs +3 -1
  209. package/dist/esm/utils/run.mjs.map +1 -1
  210. package/dist/esm/utils/schema.mjs.map +1 -1
  211. package/dist/esm/utils/title.mjs.map +1 -1
  212. package/dist/esm/utils/tokens.mjs +33 -59
  213. package/dist/esm/utils/tokens.mjs.map +1 -1
  214. package/dist/esm/utils/toolCallContinuation.mjs +52 -0
  215. package/dist/esm/utils/toolCallContinuation.mjs.map +1 -0
  216. package/dist/esm/utils/toonFormat.mjs.map +1 -1
  217. package/dist/types/agents/AgentContext.d.ts +14 -7
  218. package/dist/types/common/constants.d.ts +18 -0
  219. package/dist/types/common/enum.d.ts +28 -0
  220. package/dist/types/common/index.d.ts +1 -0
  221. package/dist/types/events.d.ts +10 -3
  222. package/dist/types/graphs/Graph.d.ts +37 -0
  223. package/dist/types/index.d.ts +4 -0
  224. package/dist/types/llm/anthropic/index.d.ts +7 -1
  225. package/dist/types/llm/anthropic/types.d.ts +5 -2
  226. package/dist/types/llm/anthropic/utils/message_outputs.d.ts +1 -1
  227. package/dist/types/llm/bedrock/index.d.ts +40 -33
  228. package/dist/types/llm/bedrock/utils/message_outputs.d.ts +1 -1
  229. package/dist/types/llm/google/index.d.ts +2 -3
  230. package/dist/types/llm/openrouter/index.d.ts +21 -1
  231. package/dist/types/llm/vertexai/index.d.ts +3 -2
  232. package/dist/types/messages/cache.d.ts +1 -1
  233. package/dist/types/messages/index.d.ts +1 -0
  234. package/dist/types/messages/prune.d.ts +2 -7
  235. package/dist/types/messages/summarize.d.ts +33 -0
  236. package/dist/types/run.d.ts +6 -0
  237. package/dist/types/tools/AskUser.d.ts +408 -0
  238. package/dist/types/tools/BrowserTools.d.ts +2 -2
  239. package/dist/types/tools/CodeExecutor.d.ts +2 -2
  240. package/dist/types/tools/StreamingToolCallBuffer.d.ts +106 -0
  241. package/dist/types/tools/ToolNode.d.ts +55 -3
  242. package/dist/types/tools/ToolSearch.d.ts +9 -5
  243. package/dist/types/tools/handlers.d.ts +2 -2
  244. package/dist/types/types/graph.d.ts +9 -2
  245. package/dist/types/types/llm.d.ts +8 -3
  246. package/dist/types/types/run.d.ts +2 -0
  247. package/dist/types/types/tools.d.ts +20 -2
  248. package/dist/types/utils/contextAnalytics.d.ts +5 -4
  249. package/dist/types/utils/index.d.ts +1 -0
  250. package/dist/types/utils/tokens.d.ts +6 -19
  251. package/dist/types/utils/toolCallContinuation.d.ts +30 -0
  252. package/package.json +15 -8
  253. package/src/agents/AgentContext.js +782 -0
  254. package/src/agents/AgentContext.js.map +1 -0
  255. package/src/agents/AgentContext.test.js +421 -0
  256. package/src/agents/AgentContext.test.js.map +1 -0
  257. package/src/agents/AgentContext.ts +132 -64
  258. package/src/agents/__tests__/AgentContext.test.js +678 -0
  259. package/src/agents/__tests__/AgentContext.test.js.map +1 -0
  260. package/src/agents/__tests__/AgentContext.test.ts +25 -4
  261. package/src/agents/__tests__/resolveStructuredOutputMode.test.js +117 -0
  262. package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
  263. package/src/common/__tests__/enum.test.ts +135 -0
  264. package/src/common/constants.ts +21 -0
  265. package/src/common/enum.js +192 -0
  266. package/src/common/enum.js.map +1 -0
  267. package/src/common/enum.ts +30 -0
  268. package/src/common/index.js +3 -0
  269. package/src/common/index.js.map +1 -0
  270. package/src/common/index.ts +2 -1
  271. package/src/events.js +166 -0
  272. package/src/events.js.map +1 -0
  273. package/src/events.ts +11 -14
  274. package/src/graphs/Graph.js +1857 -0
  275. package/src/graphs/Graph.js.map +1 -0
  276. package/src/graphs/Graph.ts +580 -162
  277. package/src/graphs/MultiAgentGraph.js +1092 -0
  278. package/src/graphs/MultiAgentGraph.js.map +1 -0
  279. package/src/graphs/MultiAgentGraph.ts +331 -112
  280. package/src/graphs/__tests__/adaptive-thinking.test.ts +369 -0
  281. package/src/graphs/__tests__/graph-direct-tool-names.test.ts +210 -0
  282. package/src/graphs/__tests__/multi-agent-edges.test.ts +237 -0
  283. package/src/graphs/__tests__/structured-output.integration.test.js +624 -0
  284. package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
  285. package/src/graphs/__tests__/structured-output.test.js +144 -0
  286. package/src/graphs/__tests__/structured-output.test.js.map +1 -0
  287. package/src/graphs/contextManagement.e2e.test.js +718 -0
  288. package/src/graphs/contextManagement.e2e.test.js.map +1 -0
  289. package/src/graphs/contextManagement.e2e.test.ts +990 -0
  290. package/src/graphs/contextManagement.test.js +485 -0
  291. package/src/graphs/contextManagement.test.js.map +1 -0
  292. package/src/graphs/contextManagement.test.ts +625 -0
  293. package/src/graphs/handoffValidation.test.js +276 -0
  294. package/src/graphs/handoffValidation.test.js.map +1 -0
  295. package/src/graphs/handoffValidation.test.ts +353 -0
  296. package/src/graphs/index.js +3 -0
  297. package/src/graphs/index.js.map +1 -0
  298. package/src/index.js +28 -0
  299. package/src/index.js.map +1 -0
  300. package/src/index.ts +13 -0
  301. package/src/instrumentation.js +21 -0
  302. package/src/instrumentation.js.map +1 -0
  303. package/src/instrumentation.ts +38 -17
  304. package/src/llm/anthropic/index.js +319 -0
  305. package/src/llm/anthropic/index.js.map +1 -0
  306. package/src/llm/anthropic/index.ts +68 -15
  307. package/src/llm/anthropic/llm.spec.ts +402 -0
  308. package/src/llm/anthropic/types.js +46 -0
  309. package/src/llm/anthropic/types.js.map +1 -0
  310. package/src/llm/anthropic/types.ts +8 -2
  311. package/src/llm/anthropic/utils/message_inputs.js +627 -0
  312. package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
  313. package/src/llm/anthropic/utils/message_inputs.ts +16 -33
  314. package/src/llm/anthropic/utils/message_outputs.js +290 -0
  315. package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
  316. package/src/llm/anthropic/utils/message_outputs.ts +40 -1
  317. package/src/llm/anthropic/utils/output_parsers.js +89 -0
  318. package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
  319. package/src/llm/anthropic/utils/tools.js +25 -0
  320. package/src/llm/anthropic/utils/tools.js.map +1 -0
  321. package/src/llm/bedrock/__tests__/bedrock-caching.test.js +392 -0
  322. package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
  323. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +24 -40
  324. package/src/llm/bedrock/index.js +303 -0
  325. package/src/llm/bedrock/index.js.map +1 -0
  326. package/src/llm/bedrock/index.ts +171 -134
  327. package/src/llm/bedrock/llm.spec.ts +395 -52
  328. package/src/llm/bedrock/types.js +2 -0
  329. package/src/llm/bedrock/types.js.map +1 -0
  330. package/src/llm/bedrock/utils/index.js +6 -0
  331. package/src/llm/bedrock/utils/index.js.map +1 -0
  332. package/src/llm/bedrock/utils/message_inputs.js +463 -0
  333. package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
  334. package/src/llm/bedrock/utils/message_inputs.ts +30 -5
  335. package/src/llm/bedrock/utils/message_outputs.js +269 -0
  336. package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
  337. package/src/llm/bedrock/utils/message_outputs.ts +70 -22
  338. package/src/llm/fake.js +92 -0
  339. package/src/llm/fake.js.map +1 -0
  340. package/src/llm/google/index.js +215 -0
  341. package/src/llm/google/index.js.map +1 -0
  342. package/src/llm/google/index.ts +2 -3
  343. package/src/llm/google/types.js +12 -0
  344. package/src/llm/google/types.js.map +1 -0
  345. package/src/llm/google/utils/common.js +670 -0
  346. package/src/llm/google/utils/common.js.map +1 -0
  347. package/src/llm/google/utils/tools.js +111 -0
  348. package/src/llm/google/utils/tools.js.map +1 -0
  349. package/src/llm/google/utils/zod_to_genai_parameters.js +47 -0
  350. package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
  351. package/src/llm/openai/index.js +1033 -0
  352. package/src/llm/openai/index.js.map +1 -0
  353. package/src/llm/openai/types.js +2 -0
  354. package/src/llm/openai/types.js.map +1 -0
  355. package/src/llm/openai/utils/index.js +756 -0
  356. package/src/llm/openai/utils/index.js.map +1 -0
  357. package/src/llm/openai/utils/isReasoningModel.test.js +79 -0
  358. package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
  359. package/src/llm/openrouter/index.js +261 -0
  360. package/src/llm/openrouter/index.js.map +1 -0
  361. package/src/llm/openrouter/index.ts +117 -6
  362. package/src/llm/openrouter/reasoning.test.js +181 -0
  363. package/src/llm/openrouter/reasoning.test.js.map +1 -0
  364. package/src/llm/openrouter/reasoning.test.ts +207 -0
  365. package/src/llm/providers.js +36 -0
  366. package/src/llm/providers.js.map +1 -0
  367. package/src/llm/text.js +65 -0
  368. package/src/llm/text.js.map +1 -0
  369. package/src/llm/vertexai/index.js +402 -0
  370. package/src/llm/vertexai/index.js.map +1 -0
  371. package/src/llm/vertexai/index.ts +115 -5
  372. package/src/llm/vertexai/llm.spec.ts +114 -0
  373. package/src/messages/__tests__/tools.test.js +392 -0
  374. package/src/messages/__tests__/tools.test.js.map +1 -0
  375. package/src/messages/cache.js +404 -0
  376. package/src/messages/cache.js.map +1 -0
  377. package/src/messages/cache.test.js +1167 -0
  378. package/src/messages/cache.test.js.map +1 -0
  379. package/src/messages/cache.test.ts +178 -16
  380. package/src/messages/cache.ts +152 -147
  381. package/src/messages/content.js +48 -0
  382. package/src/messages/content.js.map +1 -0
  383. package/src/messages/content.test.js +314 -0
  384. package/src/messages/content.test.js.map +1 -0
  385. package/src/messages/core.js +359 -0
  386. package/src/messages/core.js.map +1 -0
  387. package/src/messages/core.ts +5 -0
  388. package/src/messages/ensureThinkingBlock.test.js +997 -0
  389. package/src/messages/ensureThinkingBlock.test.js.map +1 -0
  390. package/src/messages/ensureThinkingBlock.test.ts +751 -10
  391. package/src/messages/format.js +973 -0
  392. package/src/messages/format.js.map +1 -0
  393. package/src/messages/format.ts +334 -57
  394. package/src/messages/formatAgentMessages.test.js +2278 -0
  395. package/src/messages/formatAgentMessages.test.js.map +1 -0
  396. package/src/messages/formatAgentMessages.test.ts +1175 -1
  397. package/src/messages/formatAgentMessages.tools.test.js +362 -0
  398. package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
  399. package/src/messages/formatMessage.test.js +608 -0
  400. package/src/messages/formatMessage.test.js.map +1 -0
  401. package/src/messages/ids.js +18 -0
  402. package/src/messages/ids.js.map +1 -0
  403. package/src/messages/index.js +9 -0
  404. package/src/messages/index.js.map +1 -0
  405. package/src/messages/index.ts +1 -0
  406. package/src/messages/labelContentByAgent.test.js +725 -0
  407. package/src/messages/labelContentByAgent.test.js.map +1 -0
  408. package/src/messages/prune.js +438 -0
  409. package/src/messages/prune.js.map +1 -0
  410. package/src/messages/prune.ts +87 -25
  411. package/src/messages/reducer.js +60 -0
  412. package/src/messages/reducer.js.map +1 -0
  413. package/src/messages/shiftIndexTokenCountMap.test.js +63 -0
  414. package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
  415. package/src/messages/summarize.js +146 -0
  416. package/src/messages/summarize.js.map +1 -0
  417. package/src/messages/summarize.test.js +332 -0
  418. package/src/messages/summarize.test.js.map +1 -0
  419. package/src/messages/summarize.test.ts +466 -0
  420. package/src/messages/summarize.ts +222 -0
  421. package/src/messages/tools.js +90 -0
  422. package/src/messages/tools.js.map +1 -0
  423. package/src/mockStream.js +81 -0
  424. package/src/mockStream.js.map +1 -0
  425. package/src/prompts/collab.js +7 -0
  426. package/src/prompts/collab.js.map +1 -0
  427. package/src/prompts/index.js +3 -0
  428. package/src/prompts/index.js.map +1 -0
  429. package/src/prompts/taskmanager.js +58 -0
  430. package/src/prompts/taskmanager.js.map +1 -0
  431. package/src/run.js +427 -0
  432. package/src/run.js.map +1 -0
  433. package/src/run.ts +101 -33
  434. package/src/schemas/index.js +3 -0
  435. package/src/schemas/index.js.map +1 -0
  436. package/src/schemas/schema-preparation.test.js +370 -0
  437. package/src/schemas/schema-preparation.test.js.map +1 -0
  438. package/src/schemas/validate.js +314 -0
  439. package/src/schemas/validate.js.map +1 -0
  440. package/src/schemas/validate.test.js +264 -0
  441. package/src/schemas/validate.test.js.map +1 -0
  442. package/src/scripts/abort.js +127 -0
  443. package/src/scripts/abort.js.map +1 -0
  444. package/src/scripts/ant_web_search.js +130 -0
  445. package/src/scripts/ant_web_search.js.map +1 -0
  446. package/src/scripts/ant_web_search.ts +1 -0
  447. package/src/scripts/ant_web_search_edge_case.js +133 -0
  448. package/src/scripts/ant_web_search_edge_case.js.map +1 -0
  449. package/src/scripts/ant_web_search_edge_case.ts +1 -0
  450. package/src/scripts/ant_web_search_error_edge_case.js +119 -0
  451. package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
  452. package/src/scripts/ant_web_search_error_edge_case.ts +1 -0
  453. package/src/scripts/args.js +41 -0
  454. package/src/scripts/args.js.map +1 -0
  455. package/src/scripts/bedrock-cache-debug.js +186 -0
  456. package/src/scripts/bedrock-cache-debug.js.map +1 -0
  457. package/src/scripts/bedrock-cache-debug.ts +250 -0
  458. package/src/scripts/bedrock-content-aggregation-test.js +195 -0
  459. package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
  460. package/src/scripts/bedrock-content-aggregation-test.ts +266 -0
  461. package/src/scripts/bedrock-merge-test.js +80 -0
  462. package/src/scripts/bedrock-merge-test.js.map +1 -0
  463. package/src/scripts/bedrock-merge-test.ts +107 -0
  464. package/src/scripts/bedrock-parallel-tools-test.js +150 -0
  465. package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
  466. package/src/scripts/bedrock-parallel-tools-test.ts +204 -0
  467. package/src/scripts/caching.js +106 -0
  468. package/src/scripts/caching.js.map +1 -0
  469. package/src/scripts/caching.ts +1 -0
  470. package/src/scripts/cli.js +152 -0
  471. package/src/scripts/cli.js.map +1 -0
  472. package/src/scripts/cli2.js +119 -0
  473. package/src/scripts/cli2.js.map +1 -0
  474. package/src/scripts/cli3.js +163 -0
  475. package/src/scripts/cli3.js.map +1 -0
  476. package/src/scripts/cli4.js +165 -0
  477. package/src/scripts/cli4.js.map +1 -0
  478. package/src/scripts/cli5.js +165 -0
  479. package/src/scripts/cli5.js.map +1 -0
  480. package/src/scripts/code_exec.js +171 -0
  481. package/src/scripts/code_exec.js.map +1 -0
  482. package/src/scripts/code_exec.ts +1 -0
  483. package/src/scripts/code_exec_files.js +180 -0
  484. package/src/scripts/code_exec_files.js.map +1 -0
  485. package/src/scripts/code_exec_files.ts +1 -0
  486. package/src/scripts/code_exec_multi_session.js +185 -0
  487. package/src/scripts/code_exec_multi_session.js.map +1 -0
  488. package/src/scripts/code_exec_multi_session.ts +9 -13
  489. package/src/scripts/code_exec_ptc.js +265 -0
  490. package/src/scripts/code_exec_ptc.js.map +1 -0
  491. package/src/scripts/code_exec_ptc.ts +1 -0
  492. package/src/scripts/code_exec_session.js +217 -0
  493. package/src/scripts/code_exec_session.js.map +1 -0
  494. package/src/scripts/code_exec_session.ts +1 -0
  495. package/src/scripts/code_exec_simple.js +120 -0
  496. package/src/scripts/code_exec_simple.js.map +1 -0
  497. package/src/scripts/code_exec_simple.ts +1 -0
  498. package/src/scripts/content.js +111 -0
  499. package/src/scripts/content.js.map +1 -0
  500. package/src/scripts/content.ts +1 -0
  501. package/src/scripts/empty_input.js +125 -0
  502. package/src/scripts/empty_input.js.map +1 -0
  503. package/src/scripts/handoff-test.js +96 -0
  504. package/src/scripts/handoff-test.js.map +1 -0
  505. package/src/scripts/image.js +138 -0
  506. package/src/scripts/image.js.map +1 -0
  507. package/src/scripts/image.ts +3 -1
  508. package/src/scripts/memory.js +83 -0
  509. package/src/scripts/memory.js.map +1 -0
  510. package/src/scripts/memory.ts +16 -6
  511. package/src/scripts/multi-agent-chain.js +271 -0
  512. package/src/scripts/multi-agent-chain.js.map +1 -0
  513. package/src/scripts/multi-agent-chain.ts +1 -0
  514. package/src/scripts/multi-agent-conditional.js +185 -0
  515. package/src/scripts/multi-agent-conditional.js.map +1 -0
  516. package/src/scripts/multi-agent-conditional.ts +1 -0
  517. package/src/scripts/multi-agent-document-review-chain.js +171 -0
  518. package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
  519. package/src/scripts/multi-agent-document-review-chain.ts +1 -0
  520. package/src/scripts/multi-agent-hybrid-flow.js +264 -0
  521. package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
  522. package/src/scripts/multi-agent-hybrid-flow.ts +1 -0
  523. package/src/scripts/multi-agent-parallel-start.js +214 -0
  524. package/src/scripts/multi-agent-parallel-start.js.map +1 -0
  525. package/src/scripts/multi-agent-parallel-start.ts +4 -4
  526. package/src/scripts/multi-agent-parallel.js +346 -0
  527. package/src/scripts/multi-agent-parallel.js.map +1 -0
  528. package/src/scripts/multi-agent-parallel.ts +1 -0
  529. package/src/scripts/multi-agent-sequence.js +184 -0
  530. package/src/scripts/multi-agent-sequence.js.map +1 -0
  531. package/src/scripts/multi-agent-sequence.ts +4 -4
  532. package/src/scripts/multi-agent-supervisor.js +324 -0
  533. package/src/scripts/multi-agent-supervisor.js.map +1 -0
  534. package/src/scripts/multi-agent-supervisor.ts +1 -0
  535. package/src/scripts/multi-agent-test.js +147 -0
  536. package/src/scripts/multi-agent-test.js.map +1 -0
  537. package/src/scripts/multi-agent-test.ts +1 -0
  538. package/src/scripts/parallel-asymmetric-tools-test.js +202 -0
  539. package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
  540. package/src/scripts/parallel-asymmetric-tools-test.ts +1 -0
  541. package/src/scripts/parallel-full-metadata-test.js +176 -0
  542. package/src/scripts/parallel-full-metadata-test.js.map +1 -0
  543. package/src/scripts/parallel-full-metadata-test.ts +1 -0
  544. package/src/scripts/parallel-tools-test.js +256 -0
  545. package/src/scripts/parallel-tools-test.js.map +1 -0
  546. package/src/scripts/parallel-tools-test.ts +1 -0
  547. package/src/scripts/poc-multi-agent-comprehensive.ts +1222 -0
  548. package/src/scripts/programmatic_exec.js +277 -0
  549. package/src/scripts/programmatic_exec.js.map +1 -0
  550. package/src/scripts/programmatic_exec_agent.js +168 -0
  551. package/src/scripts/programmatic_exec_agent.js.map +1 -0
  552. package/src/scripts/programmatic_exec_agent.ts +1 -0
  553. package/src/scripts/search.js +118 -0
  554. package/src/scripts/search.js.map +1 -0
  555. package/src/scripts/search.ts +1 -0
  556. package/src/scripts/sequential-full-metadata-test.js +143 -0
  557. package/src/scripts/sequential-full-metadata-test.js.map +1 -0
  558. package/src/scripts/sequential-full-metadata-test.ts +1 -0
  559. package/src/scripts/simple.js +174 -0
  560. package/src/scripts/simple.js.map +1 -0
  561. package/src/scripts/simple.ts +2 -1
  562. package/src/scripts/single-agent-metadata-test.js +152 -0
  563. package/src/scripts/single-agent-metadata-test.js.map +1 -0
  564. package/src/scripts/single-agent-metadata-test.ts +4 -6
  565. package/src/scripts/stream.js +113 -0
  566. package/src/scripts/stream.js.map +1 -0
  567. package/src/scripts/stream.ts +1 -0
  568. package/src/scripts/test-custom-prompt-key.js +132 -0
  569. package/src/scripts/test-custom-prompt-key.js.map +1 -0
  570. package/src/scripts/test-handoff-input.js +143 -0
  571. package/src/scripts/test-handoff-input.js.map +1 -0
  572. package/src/scripts/test-handoff-preamble.js +227 -0
  573. package/src/scripts/test-handoff-preamble.js.map +1 -0
  574. package/src/scripts/test-handoff-preamble.ts +1 -0
  575. package/src/scripts/test-handoff-steering.js +353 -0
  576. package/src/scripts/test-handoff-steering.js.map +1 -0
  577. package/src/scripts/test-handoff-steering.ts +430 -0
  578. package/src/scripts/test-multi-agent-list-handoff.js +318 -0
  579. package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
  580. package/src/scripts/test-multi-agent-list-handoff.ts +1 -0
  581. package/src/scripts/test-parallel-agent-labeling.js +253 -0
  582. package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
  583. package/src/scripts/test-parallel-agent-labeling.ts +2 -0
  584. package/src/scripts/test-parallel-handoffs.js +229 -0
  585. package/src/scripts/test-parallel-handoffs.js.map +1 -0
  586. package/src/scripts/test-parallel-handoffs.ts +1 -0
  587. package/src/scripts/test-thinking-handoff-bedrock.js +132 -0
  588. package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
  589. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -0
  590. package/src/scripts/test-thinking-handoff.js +132 -0
  591. package/src/scripts/test-thinking-handoff.js.map +1 -0
  592. package/src/scripts/test-thinking-handoff.ts +1 -0
  593. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js +140 -0
  594. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
  595. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +166 -0
  596. package/src/scripts/test-tool-before-handoff-role-order.js +223 -0
  597. package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
  598. package/src/scripts/test-tool-before-handoff-role-order.ts +276 -0
  599. package/src/scripts/test-tools-before-handoff.js +187 -0
  600. package/src/scripts/test-tools-before-handoff.js.map +1 -0
  601. package/src/scripts/test-tools-before-handoff.ts +4 -8
  602. package/src/scripts/test_code_api.js +263 -0
  603. package/src/scripts/test_code_api.js.map +1 -0
  604. package/src/scripts/thinking-bedrock.js +128 -0
  605. package/src/scripts/thinking-bedrock.js.map +1 -0
  606. package/src/scripts/thinking-bedrock.ts +1 -0
  607. package/src/scripts/thinking-vertexai.js +130 -0
  608. package/src/scripts/thinking-vertexai.js.map +1 -0
  609. package/src/scripts/thinking-vertexai.ts +168 -0
  610. package/src/scripts/thinking.js +134 -0
  611. package/src/scripts/thinking.js.map +1 -0
  612. package/src/scripts/thinking.ts +1 -0
  613. package/src/scripts/tool_search.js +114 -0
  614. package/src/scripts/tool_search.js.map +1 -0
  615. package/src/scripts/tools.js +125 -0
  616. package/src/scripts/tools.js.map +1 -0
  617. package/src/scripts/tools.ts +5 -19
  618. package/src/specs/agent-handoffs-bedrock.integration.test.js +280 -0
  619. package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
  620. package/src/specs/agent-handoffs-bedrock.integration.test.ts +412 -375
  621. package/src/specs/agent-handoffs.test.js +924 -0
  622. package/src/specs/agent-handoffs.test.js.map +1 -0
  623. package/src/specs/agent-handoffs.test.ts +152 -39
  624. package/src/specs/anthropic.simple.test.js +287 -0
  625. package/src/specs/anthropic.simple.test.js.map +1 -0
  626. package/src/specs/anthropic.simple.test.ts +7 -4
  627. package/src/specs/azure.simple.test.js +381 -0
  628. package/src/specs/azure.simple.test.js.map +1 -0
  629. package/src/specs/azure.simple.test.ts +143 -5
  630. package/src/specs/cache.simple.test.js +282 -0
  631. package/src/specs/cache.simple.test.js.map +1 -0
  632. package/src/specs/cache.simple.test.ts +9 -2
  633. package/src/specs/custom-event-await.test.js +148 -0
  634. package/src/specs/custom-event-await.test.js.map +1 -0
  635. package/src/specs/custom-event-await.test.ts +215 -0
  636. package/src/specs/deepseek.simple.test.js +189 -0
  637. package/src/specs/deepseek.simple.test.js.map +1 -0
  638. package/src/specs/deepseek.simple.test.ts +4 -2
  639. package/src/specs/emergency-prune.test.js +308 -0
  640. package/src/specs/emergency-prune.test.js.map +1 -0
  641. package/src/specs/moonshot.simple.test.js +237 -0
  642. package/src/specs/moonshot.simple.test.js.map +1 -0
  643. package/src/specs/moonshot.simple.test.ts +6 -2
  644. package/src/specs/observability.integration.test.js +1337 -0
  645. package/src/specs/observability.integration.test.js.map +1 -0
  646. package/src/specs/observability.integration.test.ts +2223 -0
  647. package/src/specs/openai.simple.test.js +233 -0
  648. package/src/specs/openai.simple.test.js.map +1 -0
  649. package/src/specs/openai.simple.test.ts +4 -2
  650. package/src/specs/openrouter.simple.test.js +202 -0
  651. package/src/specs/openrouter.simple.test.js.map +1 -0
  652. package/src/specs/openrouter.simple.test.ts +165 -4
  653. package/src/specs/prune.test.js +733 -0
  654. package/src/specs/prune.test.js.map +1 -0
  655. package/src/specs/prune.test.ts +1 -0
  656. package/src/specs/reasoning.test.js +144 -0
  657. package/src/specs/reasoning.test.js.map +1 -0
  658. package/src/specs/reasoning.test.ts +2 -2
  659. package/src/specs/spec.utils.js +4 -0
  660. package/src/specs/spec.utils.js.map +1 -0
  661. package/src/specs/thinking-handoff.test.js +486 -0
  662. package/src/specs/thinking-handoff.test.js.map +1 -0
  663. package/src/specs/thinking-handoff.test.ts +3 -2
  664. package/src/specs/thinking-prune.test.js +600 -0
  665. package/src/specs/thinking-prune.test.js.map +1 -0
  666. package/src/specs/token-distribution-edge-case.test.js +246 -0
  667. package/src/specs/token-distribution-edge-case.test.js.map +1 -0
  668. package/src/specs/token-memoization.test.js +32 -0
  669. package/src/specs/token-memoization.test.js.map +1 -0
  670. package/src/specs/token-memoization.test.ts +14 -5
  671. package/src/specs/tokens.test.js +49 -0
  672. package/src/specs/tokens.test.js.map +1 -0
  673. package/src/specs/tokens.test.ts +64 -0
  674. package/src/specs/tool-error.test.js +139 -0
  675. package/src/specs/tool-error.test.js.map +1 -0
  676. package/src/specs/tool-error.test.ts +2 -2
  677. package/src/splitStream.js +204 -0
  678. package/src/splitStream.js.map +1 -0
  679. package/src/splitStream.test.js +504 -0
  680. package/src/splitStream.test.js.map +1 -0
  681. package/src/stream.js +650 -0
  682. package/src/stream.js.map +1 -0
  683. package/src/stream.test.js +225 -0
  684. package/src/stream.test.js.map +1 -0
  685. package/src/stream.test.ts +25 -15
  686. package/src/stream.ts +82 -32
  687. package/src/test/mockTools.js +340 -0
  688. package/src/test/mockTools.js.map +1 -0
  689. package/src/tools/AskUser.ts +159 -0
  690. package/src/tools/BrowserTools.js +245 -0
  691. package/src/tools/BrowserTools.js.map +1 -0
  692. package/src/tools/BrowserTools.ts +12 -8
  693. package/src/tools/Calculator.js +38 -0
  694. package/src/tools/Calculator.js.map +1 -0
  695. package/src/tools/Calculator.test.js +225 -0
  696. package/src/tools/Calculator.test.js.map +1 -0
  697. package/src/tools/CodeExecutor.js +233 -0
  698. package/src/tools/CodeExecutor.js.map +1 -0
  699. package/src/tools/CodeExecutor.selfhealing.test.ts +435 -0
  700. package/src/tools/CodeExecutor.ts +62 -4
  701. package/src/tools/ProgrammaticToolCalling.js +602 -0
  702. package/src/tools/ProgrammaticToolCalling.js.map +1 -0
  703. package/src/tools/ProgrammaticToolCalling.ts +40 -52
  704. package/src/tools/StreamingToolCallBuffer.js +179 -0
  705. package/src/tools/StreamingToolCallBuffer.js.map +1 -0
  706. package/src/tools/StreamingToolCallBuffer.ts +218 -0
  707. package/src/tools/ToolNode.js +930 -0
  708. package/src/tools/ToolNode.js.map +1 -0
  709. package/src/tools/ToolNode.ts +454 -41
  710. package/src/tools/ToolSearch.js +904 -0
  711. package/src/tools/ToolSearch.js.map +1 -0
  712. package/src/tools/ToolSearch.ts +84 -33
  713. package/src/tools/__tests__/AskUser.test.ts +537 -0
  714. package/src/tools/__tests__/BrowserTools.test.js +306 -0
  715. package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
  716. package/src/tools/__tests__/BrowserTools.test.ts +131 -6
  717. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js +276 -0
  718. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
  719. package/src/tools/__tests__/ProgrammaticToolCalling.test.js +807 -0
  720. package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
  721. package/src/tools/__tests__/StreamingToolCallBuffer.test.js +175 -0
  722. package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
  723. package/src/tools/__tests__/StreamingToolCallBuffer.test.ts +263 -0
  724. package/src/tools/__tests__/ToolApproval.test.js +675 -0
  725. package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
  726. package/src/tools/__tests__/ToolApproval.test.ts +194 -20
  727. package/src/tools/__tests__/ToolNode.hitl.test.ts +267 -0
  728. package/src/tools/__tests__/ToolNode.recovery.test.js +200 -0
  729. package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
  730. package/src/tools/__tests__/ToolNode.recovery.test.ts +276 -0
  731. package/src/tools/__tests__/ToolNode.session.test.js +319 -0
  732. package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
  733. package/src/tools/__tests__/ToolNode.session.test.ts +465 -0
  734. package/src/tools/__tests__/ToolSearch.integration.test.js +125 -0
  735. package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
  736. package/src/tools/__tests__/ToolSearch.test.js +812 -0
  737. package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
  738. package/src/tools/__tests__/ToolSearch.test.ts +78 -5
  739. package/src/tools/__tests__/handlers.test.js +799 -0
  740. package/src/tools/__tests__/handlers.test.js.map +1 -0
  741. package/src/tools/__tests__/handlers.test.ts +1100 -0
  742. package/src/tools/__tests__/truncation-recovery.integration.test.js +362 -0
  743. package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
  744. package/src/tools/__tests__/truncation-recovery.integration.test.ts +560 -0
  745. package/src/tools/handlers.js +306 -0
  746. package/src/tools/handlers.js.map +1 -0
  747. package/src/tools/handlers.ts +119 -16
  748. package/src/tools/schema.js +25 -0
  749. package/src/tools/schema.js.map +1 -0
  750. package/src/tools/search/anthropic.js +34 -0
  751. package/src/tools/search/anthropic.js.map +1 -0
  752. package/src/tools/search/content.js +116 -0
  753. package/src/tools/search/content.js.map +1 -0
  754. package/src/tools/search/content.test.js +133 -0
  755. package/src/tools/search/content.test.js.map +1 -0
  756. package/src/tools/search/firecrawl.js +173 -0
  757. package/src/tools/search/firecrawl.js.map +1 -0
  758. package/src/tools/search/format.js +198 -0
  759. package/src/tools/search/format.js.map +1 -0
  760. package/src/tools/search/highlights.js +241 -0
  761. package/src/tools/search/highlights.js.map +1 -0
  762. package/src/tools/search/index.js +3 -0
  763. package/src/tools/search/index.js.map +1 -0
  764. package/src/tools/search/jina-reranker.test.js +106 -0
  765. package/src/tools/search/jina-reranker.test.js.map +1 -0
  766. package/src/tools/search/rerankers.js +165 -0
  767. package/src/tools/search/rerankers.js.map +1 -0
  768. package/src/tools/search/schema.js +102 -0
  769. package/src/tools/search/schema.js.map +1 -0
  770. package/src/tools/search/search.js +561 -0
  771. package/src/tools/search/search.js.map +1 -0
  772. package/src/tools/search/serper-scraper.js +126 -0
  773. package/src/tools/search/serper-scraper.js.map +1 -0
  774. package/src/tools/search/test.js +129 -0
  775. package/src/tools/search/test.js.map +1 -0
  776. package/src/tools/search/tool.js +453 -0
  777. package/src/tools/search/tool.js.map +1 -0
  778. package/src/tools/search/types.js +2 -0
  779. package/src/tools/search/types.js.map +1 -0
  780. package/src/tools/search/utils.js +59 -0
  781. package/src/tools/search/utils.js.map +1 -0
  782. package/src/types/graph.js +24 -0
  783. package/src/types/graph.js.map +1 -0
  784. package/src/types/graph.test.js +192 -0
  785. package/src/types/graph.test.js.map +1 -0
  786. package/src/types/graph.ts +26 -6
  787. package/src/types/index.js +7 -0
  788. package/src/types/index.js.map +1 -0
  789. package/src/types/llm.js +2 -0
  790. package/src/types/llm.js.map +1 -0
  791. package/src/types/llm.ts +8 -3
  792. package/src/types/messages.js +2 -0
  793. package/src/types/messages.js.map +1 -0
  794. package/src/types/run.js +2 -0
  795. package/src/types/run.js.map +1 -0
  796. package/src/types/run.ts +2 -0
  797. package/src/types/stream.js +2 -0
  798. package/src/types/stream.js.map +1 -0
  799. package/src/types/tools.js +2 -0
  800. package/src/types/tools.js.map +1 -0
  801. package/src/types/tools.ts +21 -2
  802. package/src/utils/contextAnalytics.js +79 -0
  803. package/src/utils/contextAnalytics.js.map +1 -0
  804. package/src/utils/contextAnalytics.test.js +166 -0
  805. package/src/utils/contextAnalytics.test.js.map +1 -0
  806. package/src/utils/contextAnalytics.test.ts +222 -0
  807. package/src/utils/contextAnalytics.ts +27 -9
  808. package/src/utils/events.js +26 -0
  809. package/src/utils/events.js.map +1 -0
  810. package/src/utils/graph.js +11 -0
  811. package/src/utils/graph.js.map +1 -0
  812. package/src/utils/handlers.js +65 -0
  813. package/src/utils/handlers.js.map +1 -0
  814. package/src/utils/index.js +10 -0
  815. package/src/utils/index.js.map +1 -0
  816. package/src/utils/index.ts +1 -0
  817. package/src/utils/llm.js +21 -0
  818. package/src/utils/llm.js.map +1 -0
  819. package/src/utils/llmConfig.js +205 -0
  820. package/src/utils/llmConfig.js.map +1 -0
  821. package/src/utils/llmConfig.ts +5 -5
  822. package/src/utils/logging.js +37 -0
  823. package/src/utils/logging.js.map +1 -0
  824. package/src/utils/misc.js +51 -0
  825. package/src/utils/misc.js.map +1 -0
  826. package/src/utils/run.js +69 -0
  827. package/src/utils/run.js.map +1 -0
  828. package/src/utils/run.ts +108 -106
  829. package/src/utils/schema.js +21 -0
  830. package/src/utils/schema.js.map +1 -0
  831. package/src/utils/title.js +119 -0
  832. package/src/utils/title.js.map +1 -0
  833. package/src/utils/tokens.js +92 -0
  834. package/src/utils/tokens.js.map +1 -0
  835. package/src/utils/tokens.ts +118 -142
  836. package/src/utils/toolCallContinuation.ts +55 -0
  837. package/src/utils/toonFormat.js +379 -0
  838. package/src/utils/toonFormat.js.map +1 -0
@@ -0,0 +1,392 @@
1
+ /**
2
+ * Unit tests for Bedrock Prompt Caching functionality
3
+ *
4
+ * Tests cover:
5
+ * 1. CustomChatBedrockConverse - Tool caching with cachePoint via invocationParams
6
+ * 2. AgentContext - System message format per provider:
7
+ * - Bedrock: plain string (cachePoint is added at the tool level by invocationParams)
8
+ * - Anthropic: cache_control added inline by AgentContext
9
+ * - OpenAI: plain string (no caching)
10
+ */
11
+ import { CustomChatBedrockConverse } from '../index';
12
+ import { AgentContext } from '@/agents/AgentContext';
13
+ import { Providers } from '@/common';
14
+ describe('Bedrock Prompt Caching', () => {
15
+ describe('CustomChatBedrockConverse - Tool Caching', () => {
16
+ describe('invocationParams with promptCache enabled', () => {
17
+ it('should add cachePoint to tools array when promptCache is true', () => {
18
+ const model = new CustomChatBedrockConverse({
19
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
20
+ region: 'us-east-1',
21
+ promptCache: true,
22
+ });
23
+ const mockTools = [
24
+ {
25
+ toolSpec: {
26
+ name: 'get_weather',
27
+ description: 'Get weather for a location',
28
+ inputSchema: { json: { type: 'object', properties: {} } },
29
+ },
30
+ },
31
+ {
32
+ toolSpec: {
33
+ name: 'search_web',
34
+ description: 'Search the web',
35
+ inputSchema: { json: { type: 'object', properties: {} } },
36
+ },
37
+ },
38
+ ];
39
+ const params = model.invocationParams({
40
+ tools: mockTools,
41
+ });
42
+ // Should have tools + cachePoint
43
+ expect(params.toolConfig?.tools).toHaveLength(3);
44
+ expect(params.toolConfig?.tools?.[2]).toEqual({
45
+ cachePoint: { type: 'default' },
46
+ });
47
+ });
48
+ it('should NOT add cachePoint when promptCache is false', () => {
49
+ const model = new CustomChatBedrockConverse({
50
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
51
+ region: 'us-east-1',
52
+ promptCache: false,
53
+ });
54
+ const mockTools = [
55
+ {
56
+ toolSpec: {
57
+ name: 'get_weather',
58
+ description: 'Get weather',
59
+ inputSchema: { json: { type: 'object', properties: {} } },
60
+ },
61
+ },
62
+ ];
63
+ const params = model.invocationParams({
64
+ tools: mockTools,
65
+ });
66
+ // Should only have original tools, no cachePoint
67
+ expect(params.toolConfig?.tools).toHaveLength(1);
68
+ expect(params.toolConfig?.tools?.[0]).toEqual(mockTools[0]);
69
+ });
70
+ it('should NOT add cachePoint when promptCache is undefined (default)', () => {
71
+ const model = new CustomChatBedrockConverse({
72
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
73
+ region: 'us-east-1',
74
+ });
75
+ const mockTools = [
76
+ {
77
+ toolSpec: {
78
+ name: 'get_weather',
79
+ description: 'Get weather',
80
+ inputSchema: { json: { type: 'object', properties: {} } },
81
+ },
82
+ },
83
+ ];
84
+ const params = model.invocationParams({
85
+ tools: mockTools,
86
+ });
87
+ // Should only have original tools
88
+ expect(params.toolConfig?.tools).toHaveLength(1);
89
+ });
90
+ it('should NOT add cachePoint when no tools are provided', () => {
91
+ const model = new CustomChatBedrockConverse({
92
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
93
+ region: 'us-east-1',
94
+ promptCache: true,
95
+ });
96
+ const params = model.invocationParams({});
97
+ // toolConfig should be undefined or have no tools
98
+ expect(params.toolConfig?.tools).toBeUndefined();
99
+ });
100
+ it('should NOT add cachePoint when tools array is empty', () => {
101
+ const model = new CustomChatBedrockConverse({
102
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
103
+ region: 'us-east-1',
104
+ promptCache: true,
105
+ });
106
+ const params = model.invocationParams({
107
+ tools: [],
108
+ });
109
+ // Empty tools array results in undefined toolConfig
110
+ expect(params.toolConfig).toBeUndefined();
111
+ });
112
+ it('should preserve other invocationParams properties', () => {
113
+ const model = new CustomChatBedrockConverse({
114
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
115
+ region: 'us-east-1',
116
+ promptCache: true,
117
+ temperature: 0.7,
118
+ maxTokens: 1000,
119
+ });
120
+ const mockTools = [
121
+ {
122
+ toolSpec: {
123
+ name: 'test_tool',
124
+ description: 'Test',
125
+ inputSchema: { json: { type: 'object', properties: {} } },
126
+ },
127
+ },
128
+ ];
129
+ const params = model.invocationParams({
130
+ tools: mockTools,
131
+ });
132
+ // Check that other params are preserved
133
+ expect(params.inferenceConfig?.temperature).toBe(0.7);
134
+ expect(params.inferenceConfig?.maxTokens).toBe(1000);
135
+ // And cachePoint is still added
136
+ expect(params.toolConfig?.tools).toHaveLength(2);
137
+ });
138
+ });
139
+ describe('promptCache property', () => {
140
+ it('should store promptCache value from constructor', () => {
141
+ const modelWithCache = new CustomChatBedrockConverse({
142
+ model: 'test-model',
143
+ region: 'us-east-1',
144
+ promptCache: true,
145
+ });
146
+ const modelWithoutCache = new CustomChatBedrockConverse({
147
+ model: 'test-model',
148
+ region: 'us-east-1',
149
+ promptCache: false,
150
+ });
151
+ expect(modelWithCache.promptCache).toBe(true);
152
+ expect(modelWithoutCache.promptCache).toBe(false);
153
+ });
154
+ it('should default promptCache to false when not provided', () => {
155
+ const model = new CustomChatBedrockConverse({
156
+ model: 'test-model',
157
+ region: 'us-east-1',
158
+ });
159
+ expect(model.promptCache).toBe(false);
160
+ });
161
+ });
162
+ });
163
+ describe('AgentContext - System Message Caching', () => {
164
+ const createBedrockContext = (options) => {
165
+ const clientOptions = {
166
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
167
+ region: 'us-east-1',
168
+ promptCache: options.promptCache,
169
+ };
170
+ return AgentContext.fromConfig({
171
+ agentId: 'test-bedrock-agent',
172
+ provider: Providers.BEDROCK,
173
+ instructions: options.instructions,
174
+ additional_instructions: options.additionalInstructions,
175
+ clientOptions,
176
+ });
177
+ };
178
+ const createAnthropicContext = (options) => {
179
+ const clientOptions = {
180
+ promptCache: options.promptCachingEnabled,
181
+ };
182
+ return AgentContext.fromConfig({
183
+ agentId: 'test-anthropic-agent',
184
+ provider: Providers.ANTHROPIC,
185
+ instructions: options.instructions,
186
+ clientOptions,
187
+ });
188
+ };
189
+ describe('Bedrock system message with promptCache: true', () => {
190
+ it('should produce plain string system message (cachePoint is handled at tool level)', async () => {
191
+ const ctx = createBedrockContext({
192
+ instructions: 'You are a helpful assistant.',
193
+ promptCache: true,
194
+ });
195
+ const systemRunnable = ctx.systemRunnable;
196
+ expect(systemRunnable).toBeDefined();
197
+ // Invoke the runnable to get the messages
198
+ const result = await systemRunnable.invoke([]);
199
+ const systemMessage = result[0];
200
+ // Bedrock system messages are plain strings — cachePoint is added
201
+ // at the tool level by IllumaBedrockConverse.invocationParams()
202
+ expect(typeof systemMessage.content).toBe('string');
203
+ expect(systemMessage.content).toBe('You are a helpful assistant.');
204
+ });
205
+ it('should include combined instructions and additional_instructions as plain string', async () => {
206
+ const ctx = createBedrockContext({
207
+ instructions: 'Base instructions.',
208
+ additionalInstructions: 'Additional context.',
209
+ promptCache: true,
210
+ });
211
+ const result = await ctx.systemRunnable.invoke([]);
212
+ const systemMessage = result[0];
213
+ // Bedrock system messages are plain strings even with promptCache
214
+ expect(typeof systemMessage.content).toBe('string');
215
+ expect(systemMessage.content).toContain('Base instructions.');
216
+ expect(systemMessage.content).toContain('Additional context.');
217
+ });
218
+ });
219
+ describe('Bedrock system message with promptCache: false', () => {
220
+ it('should NOT add cachePoint when promptCache is false', async () => {
221
+ const ctx = createBedrockContext({
222
+ instructions: 'You are a helpful assistant.',
223
+ promptCache: false,
224
+ });
225
+ const result = await ctx.systemRunnable.invoke([]);
226
+ const systemMessage = result[0];
227
+ // Content should be plain string, not array with cachePoint
228
+ expect(typeof systemMessage.content).toBe('string');
229
+ expect(systemMessage.content).toBe('You are a helpful assistant.');
230
+ });
231
+ it('should NOT add cachePoint when promptCache is undefined', async () => {
232
+ const ctx = createBedrockContext({
233
+ instructions: 'You are a helpful assistant.',
234
+ promptCache: undefined,
235
+ });
236
+ const result = await ctx.systemRunnable.invoke([]);
237
+ const systemMessage = result[0];
238
+ expect(typeof systemMessage.content).toBe('string');
239
+ });
240
+ });
241
+ describe('Anthropic system message caching (for comparison)', () => {
242
+ it('should add cache_control for Anthropic with prompt-caching beta', async () => {
243
+ const ctx = createAnthropicContext({
244
+ instructions: 'You are a helpful assistant.',
245
+ promptCachingEnabled: true,
246
+ });
247
+ const result = await ctx.systemRunnable.invoke([]);
248
+ const systemMessage = result[0];
249
+ const content = systemMessage.content;
250
+ expect(content).toHaveLength(1);
251
+ expect(content[0]).toEqual({
252
+ type: 'text',
253
+ text: 'You are a helpful assistant.',
254
+ cache_control: { type: 'ephemeral' },
255
+ });
256
+ });
257
+ it('should NOT add cache_control for Anthropic without beta header', async () => {
258
+ const ctx = createAnthropicContext({
259
+ instructions: 'You are a helpful assistant.',
260
+ promptCachingEnabled: false,
261
+ });
262
+ const result = await ctx.systemRunnable.invoke([]);
263
+ const systemMessage = result[0];
264
+ expect(typeof systemMessage.content).toBe('string');
265
+ });
266
+ });
267
+ describe('Provider-specific caching behavior', () => {
268
+ it('should produce plain string for Bedrock (cachePoint handled at tool level)', async () => {
269
+ const bedrockCtx = createBedrockContext({
270
+ instructions: 'Test',
271
+ promptCache: true,
272
+ });
273
+ const result = await bedrockCtx.systemRunnable.invoke([]);
274
+ // Bedrock system messages are plain strings — cachePoint is added
275
+ // at the tool level by IllumaBedrockConverse.invocationParams(),
276
+ // not inline in the system message content
277
+ expect(typeof result[0].content).toBe('string');
278
+ expect(result[0].content).toBe('Test');
279
+ });
280
+ it('should use cache_control format for Anthropic, not cachePoint', async () => {
281
+ const anthropicCtx = createAnthropicContext({
282
+ instructions: 'Test',
283
+ promptCachingEnabled: true,
284
+ });
285
+ const result = await anthropicCtx.systemRunnable.invoke([]);
286
+ const content = result[0].content;
287
+ // Anthropic uses cache_control inline in system message content
288
+ expect(content.some((c) => 'cache_control' in c)).toBe(true);
289
+ expect(content.some((c) => 'cachePoint' in c)).toBe(false);
290
+ });
291
+ it('should not add any caching for OpenAI provider', async () => {
292
+ const openaiCtx = AgentContext.fromConfig({
293
+ agentId: 'test-openai-agent',
294
+ provider: Providers.OPENAI,
295
+ instructions: 'Test instructions',
296
+ });
297
+ const result = await openaiCtx.systemRunnable.invoke([]);
298
+ const systemMessage = result[0];
299
+ // OpenAI should have plain string content
300
+ expect(typeof systemMessage.content).toBe('string');
301
+ expect(systemMessage.content).toBe('Test instructions');
302
+ });
303
+ });
304
+ });
305
+ describe('Integration scenarios', () => {
306
+ it('should handle multi-turn caching scenario', async () => {
307
+ // Simulate: Query 1 with tools → Query 2 with same tools
308
+ // Both should have cachePoint, enabling cache reuse
309
+ const model = new CustomChatBedrockConverse({
310
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
311
+ region: 'us-east-1',
312
+ promptCache: true,
313
+ });
314
+ const tools = [
315
+ {
316
+ toolSpec: {
317
+ name: 'execute_code',
318
+ description: 'Execute Python code',
319
+ inputSchema: { json: { type: 'object', properties: {} } },
320
+ },
321
+ },
322
+ {
323
+ toolSpec: {
324
+ name: 'file_search',
325
+ description: 'Search files',
326
+ inputSchema: { json: { type: 'object', properties: {} } },
327
+ },
328
+ },
329
+ ];
330
+ // Query 1
331
+ const params1 = model.invocationParams({
332
+ tools,
333
+ });
334
+ // Query 2 (same tools)
335
+ const params2 = model.invocationParams({
336
+ tools,
337
+ });
338
+ // Both should have identical tool configs with cachePoint
339
+ expect(params1.toolConfig?.tools).toEqual(params2.toolConfig?.tools);
340
+ expect(params1.toolConfig?.tools).toHaveLength(3); // 2 tools + cachePoint
341
+ });
342
+ it('should handle dynamic tool selection scenario', async () => {
343
+ // Simulate: Query 1 with [A, B] → Query 2 with [A, B, C]
344
+ // Tool set changed, so cache won't match (expected behavior)
345
+ const model = new CustomChatBedrockConverse({
346
+ model: 'anthropic.claude-3-haiku-20240307-v1:0',
347
+ region: 'us-east-1',
348
+ promptCache: true,
349
+ });
350
+ const toolA = {
351
+ toolSpec: {
352
+ name: 'tool_a',
353
+ description: 'Tool A',
354
+ inputSchema: { json: { type: 'object', properties: {} } },
355
+ },
356
+ };
357
+ const toolB = {
358
+ toolSpec: {
359
+ name: 'tool_b',
360
+ description: 'Tool B',
361
+ inputSchema: { json: { type: 'object', properties: {} } },
362
+ },
363
+ };
364
+ const toolC = {
365
+ toolSpec: {
366
+ name: 'tool_c',
367
+ description: 'Tool C',
368
+ inputSchema: { json: { type: 'object', properties: {} } },
369
+ },
370
+ };
371
+ // Query 1: [A, B]
372
+ const params1 = model.invocationParams({
373
+ tools: [toolA, toolB],
374
+ });
375
+ // Query 2: [A, B, C] - different tool set
376
+ const params2 = model.invocationParams({
377
+ tools: [toolA, toolB, toolC],
378
+ });
379
+ // Different lengths (cache prefix won't match beyond common prefix)
380
+ expect(params1.toolConfig?.tools).toHaveLength(3); // 2 tools + cachePoint
381
+ expect(params2.toolConfig?.tools).toHaveLength(4); // 3 tools + cachePoint
382
+ // But both have cachePoint at the end
383
+ expect(params1.toolConfig?.tools?.[2]).toEqual({
384
+ cachePoint: { type: 'default' },
385
+ });
386
+ expect(params2.toolConfig?.tools?.[3]).toEqual({
387
+ cachePoint: { type: 'default' },
388
+ });
389
+ });
390
+ });
391
+ });
392
+ //# sourceMappingURL=bedrock-caching.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock-caching.test.js","sourceRoot":"","sources":["bedrock-caching.test.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,11 @@
2
2
  * Unit tests for Bedrock Prompt Caching functionality
3
3
  *
4
4
  * Tests cover:
5
- * 1. CustomChatBedrockConverse - Tool caching with cachePoint
6
- * 2. AgentContext - System message caching with cachePoint for Bedrock
5
+ * 1. CustomChatBedrockConverse - Tool caching with cachePoint via invocationParams
6
+ * 2. AgentContext - System message format per provider:
7
+ * - Bedrock: plain string (cachePoint is added at the tool level by invocationParams)
8
+ * - Anthropic: cache_control added inline by AgentContext
9
+ * - OpenAI: plain string (no caching)
7
10
  */
8
11
 
9
12
  import { CustomChatBedrockConverse } from '../index';
@@ -12,7 +15,7 @@ import { Providers } from '@/common';
12
15
  import type * as t from '@/types';
13
16
 
14
17
  type InvocationParamsOptions = Parameters<
15
- CustomChatBedrockConverse['invocationParams']
18
+ InstanceType<typeof CustomChatBedrockConverse>['invocationParams']
16
19
  >[0];
17
20
 
18
21
  describe('Bedrock Prompt Caching', () => {
@@ -219,12 +222,7 @@ describe('Bedrock Prompt Caching', () => {
219
222
  promptCachingEnabled?: boolean;
220
223
  }): AgentContext => {
221
224
  const clientOptions: t.AnthropicClientOptions = {
222
- clientOptions: {
223
- defaultHeaders:
224
- options.promptCachingEnabled === true
225
- ? { 'anthropic-beta': 'prompt-caching-2024-07-31' }
226
- : undefined,
227
- },
225
+ promptCache: options.promptCachingEnabled,
228
226
  };
229
227
  return AgentContext.fromConfig({
230
228
  agentId: 'test-anthropic-agent',
@@ -235,7 +233,7 @@ describe('Bedrock Prompt Caching', () => {
235
233
  };
236
234
 
237
235
  describe('Bedrock system message with promptCache: true', () => {
238
- it('should add cachePoint to system message content', async () => {
236
+ it('should produce plain string system message (cachePoint is handled at tool level)', async () => {
239
237
  const ctx = createBedrockContext({
240
238
  instructions: 'You are a helpful assistant.',
241
239
  promptCache: true,
@@ -248,21 +246,13 @@ describe('Bedrock Prompt Caching', () => {
248
246
  const result = await systemRunnable!.invoke([]);
249
247
  const systemMessage = result[0];
250
248
 
251
- // Check content structure has cachePoint
252
- expect(systemMessage.content).toBeInstanceOf(Array);
253
- const content = systemMessage.content as Array<Record<string, unknown>>;
254
-
255
- expect(content).toHaveLength(2);
256
- expect(content[0]).toEqual({
257
- type: 'text',
258
- text: 'You are a helpful assistant.',
259
- });
260
- expect(content[1]).toEqual({
261
- cachePoint: { type: 'default' },
262
- });
249
+ // Bedrock system messages are plain strings — cachePoint is added
250
+ // at the tool level by IllumaBedrockConverse.invocationParams()
251
+ expect(typeof systemMessage.content).toBe('string');
252
+ expect(systemMessage.content).toBe('You are a helpful assistant.');
263
253
  });
264
254
 
265
- it('should include combined instructions and additional_instructions with cachePoint', async () => {
255
+ it('should include combined instructions and additional_instructions as plain string', async () => {
266
256
  const ctx = createBedrockContext({
267
257
  instructions: 'Base instructions.',
268
258
  additionalInstructions: 'Additional context.',
@@ -271,18 +261,11 @@ describe('Bedrock Prompt Caching', () => {
271
261
 
272
262
  const result = await ctx.systemRunnable!.invoke([]);
273
263
  const systemMessage = result[0];
274
- const content = systemMessage.content as Array<Record<string, unknown>>;
275
264
 
276
- expect(content).toHaveLength(2);
277
- expect((content[0] as { text: string }).text).toContain(
278
- 'Base instructions.'
279
- );
280
- expect((content[0] as { text: string }).text).toContain(
281
- 'Additional context.'
282
- );
283
- expect(content[1]).toEqual({
284
- cachePoint: { type: 'default' },
285
- });
265
+ // Bedrock system messages are plain strings even with promptCache
266
+ expect(typeof systemMessage.content).toBe('string');
267
+ expect(systemMessage.content).toContain('Base instructions.');
268
+ expect(systemMessage.content).toContain('Additional context.');
286
269
  });
287
270
  });
288
271
 
@@ -347,18 +330,19 @@ describe('Bedrock Prompt Caching', () => {
347
330
  });
348
331
 
349
332
  describe('Provider-specific caching behavior', () => {
350
- it('should use cachePoint format for Bedrock, not cache_control', async () => {
333
+ it('should produce plain string for Bedrock (cachePoint handled at tool level)', async () => {
351
334
  const bedrockCtx = createBedrockContext({
352
335
  instructions: 'Test',
353
336
  promptCache: true,
354
337
  });
355
338
 
356
339
  const result = await bedrockCtx.systemRunnable!.invoke([]);
357
- const content = result[0].content as Array<Record<string, unknown>>;
358
340
 
359
- // Bedrock uses cachePoint, NOT cache_control
360
- expect(content.some((c) => 'cachePoint' in c)).toBe(true);
361
- expect(content.some((c) => 'cache_control' in c)).toBe(false);
341
+ // Bedrock system messages are plain strings — cachePoint is added
342
+ // at the tool level by IllumaBedrockConverse.invocationParams(),
343
+ // not inline in the system message content
344
+ expect(typeof result[0].content).toBe('string');
345
+ expect(result[0].content).toBe('Test');
362
346
  });
363
347
 
364
348
  it('should use cache_control format for Anthropic, not cachePoint', async () => {
@@ -370,7 +354,7 @@ describe('Bedrock Prompt Caching', () => {
370
354
  const result = await anthropicCtx.systemRunnable!.invoke([]);
371
355
  const content = result[0].content as Array<Record<string, unknown>>;
372
356
 
373
- // Anthropic uses cache_control, NOT cachePoint
357
+ // Anthropic uses cache_control inline in system message content
374
358
  expect(content.some((c) => 'cache_control' in c)).toBe(true);
375
359
  expect(content.some((c) => 'cachePoint' in c)).toBe(false);
376
360
  });