@illuma-ai/agents 1.4.0-alpha.6 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (800) hide show
  1. package/README.md +62 -0
  2. package/dist/cjs/agents/AgentContext.cjs +274 -67
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/enum.cjs +44 -13
  5. package/dist/cjs/common/enum.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +182 -5
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  10. package/dist/cjs/hooks/HookRegistry.cjs +162 -0
  11. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
  12. package/dist/cjs/hooks/executeHooks.cjs +276 -0
  13. package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
  14. package/dist/cjs/hooks/matchers.cjs +256 -0
  15. package/dist/cjs/hooks/matchers.cjs.map +1 -0
  16. package/dist/cjs/hooks/types.cjs +27 -0
  17. package/dist/cjs/hooks/types.cjs.map +1 -0
  18. package/dist/cjs/langchain/google-common.cjs +3 -0
  19. package/dist/cjs/langchain/google-common.cjs.map +1 -0
  20. package/dist/cjs/langchain/index.cjs +86 -0
  21. package/dist/cjs/langchain/index.cjs.map +1 -0
  22. package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
  23. package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
  24. package/dist/cjs/langchain/messages/tool.cjs +3 -0
  25. package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
  26. package/dist/cjs/langchain/messages.cjs +51 -0
  27. package/dist/cjs/langchain/messages.cjs.map +1 -0
  28. package/dist/cjs/langchain/openai.cjs +3 -0
  29. package/dist/cjs/langchain/openai.cjs.map +1 -0
  30. package/dist/cjs/langchain/prompts.cjs +11 -0
  31. package/dist/cjs/langchain/prompts.cjs.map +1 -0
  32. package/dist/cjs/langchain/runnables.cjs +19 -0
  33. package/dist/cjs/langchain/runnables.cjs.map +1 -0
  34. package/dist/cjs/langchain/tools.cjs +23 -0
  35. package/dist/cjs/langchain/tools.cjs.map +1 -0
  36. package/dist/cjs/langchain/utils/env.cjs +11 -0
  37. package/dist/cjs/langchain/utils/env.cjs.map +1 -0
  38. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
  39. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  40. package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
  41. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
  42. package/dist/cjs/llm/bedrock/index.cjs +61 -33
  43. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  44. package/dist/cjs/llm/openai/index.cjs +0 -3
  45. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  46. package/dist/cjs/llm/openai/utils/index.cjs +27 -10
  47. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  48. package/dist/cjs/main.cjs +178 -127
  49. package/dist/cjs/main.cjs.map +1 -1
  50. package/dist/cjs/messages/cache.cjs +89 -0
  51. package/dist/cjs/messages/cache.cjs.map +1 -1
  52. package/dist/cjs/messages/contextPruning.cjs +156 -0
  53. package/dist/cjs/messages/contextPruning.cjs.map +1 -0
  54. package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
  55. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
  56. package/dist/cjs/messages/format.cjs +144 -20
  57. package/dist/cjs/messages/format.cjs.map +1 -1
  58. package/dist/cjs/messages/prune.cjs +505 -4
  59. package/dist/cjs/messages/prune.cjs.map +1 -1
  60. package/dist/cjs/run.cjs +141 -1
  61. package/dist/cjs/run.cjs.map +1 -1
  62. package/dist/cjs/tools/BashExecutor.cjs +235 -0
  63. package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
  64. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
  65. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
  66. package/dist/cjs/tools/CodeExecutor.cjs +44 -47
  67. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  68. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
  69. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  70. package/dist/cjs/tools/ReadFile.cjs +44 -0
  71. package/dist/cjs/tools/ReadFile.cjs.map +1 -0
  72. package/dist/cjs/tools/SkillTool.cjs +51 -0
  73. package/dist/cjs/tools/SkillTool.cjs.map +1 -0
  74. package/dist/cjs/tools/SubagentTool.cjs +93 -0
  75. package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
  76. package/dist/cjs/tools/ToolNode.cjs +450 -24
  77. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  78. package/dist/cjs/tools/search/search.cjs +11 -3
  79. package/dist/cjs/tools/search/search.cjs.map +1 -1
  80. package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
  81. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
  82. package/dist/cjs/tools/search/tavily-search.cjs +372 -0
  83. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
  84. package/dist/cjs/tools/search/tool.cjs +28 -4
  85. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  86. package/dist/cjs/tools/search/utils.cjs +10 -3
  87. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  88. package/dist/cjs/tools/skillCatalog.cjs +84 -0
  89. package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
  90. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
  91. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
  92. package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
  93. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
  94. package/dist/cjs/types/agent-cache.cjs +53 -0
  95. package/dist/cjs/types/agent-cache.cjs.map +1 -0
  96. package/dist/cjs/types/graph.cjs.map +1 -1
  97. package/dist/cjs/utils/truncation.cjs +135 -0
  98. package/dist/cjs/utils/truncation.cjs.map +1 -0
  99. package/dist/esm/agents/AgentContext.mjs +274 -67
  100. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  101. package/dist/esm/common/enum.mjs +44 -12
  102. package/dist/esm/common/enum.mjs.map +1 -1
  103. package/dist/esm/graphs/Graph.mjs +182 -5
  104. package/dist/esm/graphs/Graph.mjs.map +1 -1
  105. package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
  106. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  107. package/dist/esm/hooks/HookRegistry.mjs +160 -0
  108. package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
  109. package/dist/esm/hooks/executeHooks.mjs +273 -0
  110. package/dist/esm/hooks/executeHooks.mjs.map +1 -0
  111. package/dist/esm/hooks/matchers.mjs +251 -0
  112. package/dist/esm/hooks/matchers.mjs.map +1 -0
  113. package/dist/esm/hooks/types.mjs +25 -0
  114. package/dist/esm/hooks/types.mjs.map +1 -0
  115. package/dist/esm/langchain/google-common.mjs +2 -0
  116. package/dist/esm/langchain/google-common.mjs.map +1 -0
  117. package/dist/esm/langchain/index.mjs +5 -0
  118. package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
  119. package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
  120. package/dist/esm/langchain/messages/tool.mjs +2 -0
  121. package/dist/esm/langchain/messages/tool.mjs.map +1 -0
  122. package/dist/esm/langchain/messages.mjs +2 -0
  123. package/dist/esm/langchain/messages.mjs.map +1 -0
  124. package/dist/esm/langchain/openai.mjs +2 -0
  125. package/dist/esm/langchain/openai.mjs.map +1 -0
  126. package/dist/esm/langchain/prompts.mjs +2 -0
  127. package/dist/esm/langchain/prompts.mjs.map +1 -0
  128. package/dist/esm/langchain/runnables.mjs +2 -0
  129. package/dist/esm/langchain/runnables.mjs.map +1 -0
  130. package/dist/esm/langchain/tools.mjs +2 -0
  131. package/dist/esm/langchain/tools.mjs.map +1 -0
  132. package/dist/esm/langchain/utils/env.mjs +2 -0
  133. package/dist/esm/langchain/utils/env.mjs.map +1 -0
  134. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
  135. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  136. package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
  137. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
  138. package/dist/esm/llm/bedrock/index.mjs +61 -34
  139. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  140. package/dist/esm/llm/openai/index.mjs +0 -3
  141. package/dist/esm/llm/openai/index.mjs.map +1 -1
  142. package/dist/esm/llm/openai/utils/index.mjs +27 -10
  143. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  144. package/dist/esm/main.mjs +21 -27
  145. package/dist/esm/main.mjs.map +1 -1
  146. package/dist/esm/messages/cache.mjs +89 -0
  147. package/dist/esm/messages/cache.mjs.map +1 -1
  148. package/dist/esm/messages/contextPruning.mjs +154 -0
  149. package/dist/esm/messages/contextPruning.mjs.map +1 -0
  150. package/dist/esm/messages/contextPruningSettings.mjs +50 -0
  151. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
  152. package/dist/esm/messages/format.mjs +136 -12
  153. package/dist/esm/messages/format.mjs.map +1 -1
  154. package/dist/esm/messages/prune.mjs +504 -7
  155. package/dist/esm/messages/prune.mjs.map +1 -1
  156. package/dist/esm/run.mjs +141 -1
  157. package/dist/esm/run.mjs.map +1 -1
  158. package/dist/esm/tools/BashExecutor.mjs +227 -0
  159. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  160. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
  161. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  162. package/dist/esm/tools/CodeExecutor.mjs +44 -48
  163. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  164. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
  165. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  166. package/dist/esm/tools/ReadFile.mjs +39 -0
  167. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  168. package/dist/esm/tools/SkillTool.mjs +46 -0
  169. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  170. package/dist/esm/tools/SubagentTool.mjs +86 -0
  171. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  172. package/dist/esm/tools/ToolNode.mjs +452 -26
  173. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  174. package/dist/esm/tools/search/search.mjs +11 -3
  175. package/dist/esm/tools/search/search.mjs.map +1 -1
  176. package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
  177. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
  178. package/dist/esm/tools/search/tavily-search.mjs +370 -0
  179. package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
  180. package/dist/esm/tools/search/tool.mjs +28 -4
  181. package/dist/esm/tools/search/tool.mjs.map +1 -1
  182. package/dist/esm/tools/search/utils.mjs +10 -3
  183. package/dist/esm/tools/search/utils.mjs.map +1 -1
  184. package/dist/esm/tools/skillCatalog.mjs +82 -0
  185. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  186. package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
  187. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  188. package/dist/esm/tools/toolOutputReferences.mjs +662 -0
  189. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
  190. package/dist/esm/types/agent-cache.mjs +51 -0
  191. package/dist/esm/types/agent-cache.mjs.map +1 -0
  192. package/dist/esm/types/graph.mjs.map +1 -1
  193. package/dist/esm/utils/truncation.mjs +128 -0
  194. package/dist/esm/utils/truncation.mjs.map +1 -0
  195. package/dist/types/agents/AgentContext.d.ts +101 -8
  196. package/dist/types/common/enum.d.ts +39 -12
  197. package/dist/types/common/index.d.ts +0 -1
  198. package/dist/types/graphs/Graph.d.ts +43 -0
  199. package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
  200. package/dist/types/graphs/index.d.ts +0 -1
  201. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  202. package/dist/types/hooks/executeHooks.d.ts +79 -0
  203. package/dist/types/hooks/index.d.ts +6 -0
  204. package/dist/types/hooks/matchers.d.ts +95 -0
  205. package/dist/types/hooks/types.d.ts +320 -0
  206. package/dist/types/index.d.ts +9 -9
  207. package/dist/types/langchain/google-common.d.ts +1 -0
  208. package/dist/types/langchain/index.d.ts +8 -0
  209. package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
  210. package/dist/types/langchain/messages/tool.d.ts +1 -0
  211. package/dist/types/langchain/messages.d.ts +2 -0
  212. package/dist/types/langchain/openai.d.ts +1 -0
  213. package/dist/types/langchain/prompts.d.ts +1 -0
  214. package/dist/types/langchain/runnables.d.ts +2 -0
  215. package/dist/types/langchain/tools.d.ts +2 -0
  216. package/dist/types/langchain/utils/env.d.ts +1 -0
  217. package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
  218. package/dist/types/llm/bedrock/index.d.ts +54 -1
  219. package/dist/types/messages/contextPruning.d.ts +42 -0
  220. package/dist/types/messages/contextPruningSettings.d.ts +44 -0
  221. package/dist/types/messages/format.d.ts +9 -1
  222. package/dist/types/messages/index.d.ts +2 -0
  223. package/dist/types/messages/prune.d.ts +91 -1
  224. package/dist/types/run.d.ts +2 -0
  225. package/dist/types/tools/BashExecutor.d.ts +76 -0
  226. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  227. package/dist/types/tools/CodeExecutor.d.ts +8 -26
  228. package/dist/types/tools/ReadFile.d.ts +28 -0
  229. package/dist/types/tools/SkillTool.d.ts +40 -0
  230. package/dist/types/tools/SubagentTool.d.ts +36 -0
  231. package/dist/types/tools/ToolNode.d.ts +77 -5
  232. package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
  233. package/dist/types/tools/search/tavily-search.d.ts +4 -0
  234. package/dist/types/tools/search/types.d.ts +99 -5
  235. package/dist/types/tools/search/utils.d.ts +2 -2
  236. package/dist/types/tools/skillCatalog.d.ts +19 -0
  237. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  238. package/dist/types/tools/subagent/index.d.ts +2 -0
  239. package/dist/types/tools/subagent/types.d.ts +84 -0
  240. package/dist/types/tools/toolOutputReferences.d.ts +236 -0
  241. package/dist/types/types/agent-cache.d.ts +70 -0
  242. package/dist/types/types/graph.d.ts +162 -22
  243. package/dist/types/types/index.d.ts +3 -0
  244. package/dist/types/types/messages.d.ts +26 -0
  245. package/dist/types/types/run.d.ts +22 -0
  246. package/dist/types/types/skill.d.ts +9 -0
  247. package/dist/types/types/tools.d.ts +111 -0
  248. package/dist/types/utils/index.d.ts +1 -3
  249. package/dist/types/utils/truncation.d.ts +70 -0
  250. package/package.json +57 -17
  251. package/src/agents/AgentContext.js.map +1 -0
  252. package/src/agents/AgentContext.test.js.map +1 -0
  253. package/src/agents/AgentContext.ts +321 -78
  254. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
  255. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +264 -0
  256. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
  257. package/src/agents/__tests__/AgentContext.test.js.map +1 -0
  258. package/src/agents/__tests__/AgentContext.test.ts +632 -0
  259. package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
  260. package/src/common/__tests__/enum.test.ts +7 -17
  261. package/src/common/enum.js.map +1 -0
  262. package/src/common/enum.ts +43 -12
  263. package/src/common/index.js.map +1 -0
  264. package/src/common/index.ts +0 -1
  265. package/src/events.js.map +1 -0
  266. package/src/graphs/Graph.js.map +1 -0
  267. package/src/graphs/Graph.ts +222 -2
  268. package/src/graphs/MultiAgentGraph.js.map +1 -0
  269. package/src/graphs/MultiAgentGraph.ts +154 -1466
  270. package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
  271. package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
  272. package/src/graphs/__tests__/structured-output.test.js.map +1 -0
  273. package/src/graphs/contextManagement.e2e.test.js.map +1 -0
  274. package/src/graphs/contextManagement.test.js.map +1 -0
  275. package/src/graphs/handoffValidation.test.js.map +1 -0
  276. package/src/graphs/index.js.map +1 -0
  277. package/src/graphs/index.ts +0 -1
  278. package/src/hooks/HookRegistry.ts +208 -0
  279. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  280. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  281. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  282. package/src/hooks/__tests__/integration.test.ts +337 -0
  283. package/src/hooks/__tests__/matchers.test.ts +238 -0
  284. package/src/hooks/__tests__/toolHooks.test.ts +665 -0
  285. package/src/hooks/executeHooks.ts +375 -0
  286. package/src/hooks/index.ts +57 -0
  287. package/src/hooks/matchers.ts +280 -0
  288. package/src/hooks/types.ts +404 -0
  289. package/src/index.js.map +1 -0
  290. package/src/index.ts +15 -24
  291. package/src/instrumentation.js.map +1 -0
  292. package/src/langchain/google-common.ts +1 -0
  293. package/src/langchain/index.ts +8 -0
  294. package/src/langchain/language_models/chat_models.ts +1 -0
  295. package/src/langchain/messages/tool.ts +5 -0
  296. package/src/langchain/messages.ts +21 -0
  297. package/src/langchain/openai.ts +1 -0
  298. package/src/langchain/prompts.ts +1 -0
  299. package/src/langchain/runnables.ts +7 -0
  300. package/src/langchain/tools.ts +8 -0
  301. package/src/langchain/utils/env.ts +1 -0
  302. package/src/llm/anthropic/index.js.map +1 -0
  303. package/src/llm/anthropic/types.js.map +1 -0
  304. package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
  305. package/src/llm/anthropic/utils/message_inputs.ts +10 -1
  306. package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
  307. package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
  308. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
  309. package/src/llm/anthropic/utils/tools.js.map +1 -0
  310. package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
  311. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
  312. package/src/llm/bedrock/cacheSupport.test.ts +99 -0
  313. package/src/llm/bedrock/cacheSupport.ts +53 -0
  314. package/src/llm/bedrock/index.js.map +1 -0
  315. package/src/llm/bedrock/index.ts +116 -41
  316. package/src/llm/bedrock/types.js.map +1 -0
  317. package/src/llm/bedrock/utils/index.js.map +1 -0
  318. package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
  319. package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
  320. package/src/llm/fake.js.map +1 -0
  321. package/src/llm/google/index.js.map +1 -0
  322. package/src/llm/google/types.js.map +1 -0
  323. package/src/llm/google/utils/common.js.map +1 -0
  324. package/src/llm/google/utils/tools.js.map +1 -0
  325. package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
  326. package/src/llm/openai/index.js.map +1 -0
  327. package/src/llm/openai/types.js.map +1 -0
  328. package/src/llm/openai/utils/index.js.map +1 -0
  329. package/src/llm/openai/utils/index.ts +31 -14
  330. package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
  331. package/src/llm/openrouter/index.js.map +1 -0
  332. package/src/llm/openrouter/reasoning.test.js.map +1 -0
  333. package/src/llm/providers.js.map +1 -0
  334. package/src/llm/text.js.map +1 -0
  335. package/src/llm/vertexai/index.js.map +1 -0
  336. package/src/messages/__tests__/contextPruning.test.ts +228 -0
  337. package/src/messages/__tests__/tools.test.js.map +1 -0
  338. package/src/messages/cache.js.map +1 -0
  339. package/src/messages/cache.test.js.map +1 -0
  340. package/src/messages/cache.test.ts +62 -24
  341. package/src/messages/cache.ts +112 -0
  342. package/src/messages/content.js.map +1 -0
  343. package/src/messages/content.test.js.map +1 -0
  344. package/src/messages/contextPruning.ts +191 -0
  345. package/src/messages/contextPruningSettings.ts +90 -0
  346. package/src/messages/core.js.map +1 -0
  347. package/src/messages/ensureThinkingBlock.test.js.map +1 -0
  348. package/src/messages/format.js.map +1 -0
  349. package/src/messages/format.ts +164 -12
  350. package/src/messages/formatAgentMessages.skills.test.ts +413 -0
  351. package/src/messages/formatAgentMessages.test.js.map +1 -0
  352. package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
  353. package/src/messages/formatMessage.test.js.map +1 -0
  354. package/src/messages/ids.js.map +1 -0
  355. package/src/messages/index.js.map +1 -0
  356. package/src/messages/index.ts +2 -0
  357. package/src/messages/labelContentByAgent.test.js.map +1 -0
  358. package/src/messages/prune.js.map +1 -0
  359. package/src/messages/prune.ts +661 -4
  360. package/src/messages/reducer.js.map +1 -0
  361. package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
  362. package/src/messages/summarize.js.map +1 -0
  363. package/src/messages/summarize.test.js.map +1 -0
  364. package/src/messages/tools.js.map +1 -0
  365. package/src/mockStream.js.map +1 -0
  366. package/src/prompts/collab.js.map +1 -0
  367. package/src/prompts/index.js.map +1 -0
  368. package/src/prompts/taskmanager.js.map +1 -0
  369. package/src/run.js.map +1 -0
  370. package/src/run.ts +155 -1
  371. package/src/schemas/index.js.map +1 -0
  372. package/src/schemas/schema-preparation.test.js.map +1 -0
  373. package/src/schemas/validate.js.map +1 -0
  374. package/src/schemas/validate.test.js.map +1 -0
  375. package/src/scripts/abort.js.map +1 -0
  376. package/src/scripts/ant_web_search.js.map +1 -0
  377. package/src/scripts/ant_web_search_edge_case.js.map +1 -0
  378. package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
  379. package/src/scripts/args.js.map +1 -0
  380. package/src/scripts/bedrock-cache-debug.js.map +1 -0
  381. package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
  382. package/src/scripts/bedrock-merge-test.js.map +1 -0
  383. package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
  384. package/src/scripts/caching.js.map +1 -0
  385. package/src/scripts/cli.js.map +1 -0
  386. package/src/scripts/cli2.js.map +1 -0
  387. package/src/scripts/cli3.js.map +1 -0
  388. package/src/scripts/cli4.js.map +1 -0
  389. package/src/scripts/cli5.js.map +1 -0
  390. package/src/scripts/code_exec.js.map +1 -0
  391. package/src/scripts/code_exec_files.js.map +1 -0
  392. package/src/scripts/code_exec_multi_session.js.map +1 -0
  393. package/src/scripts/code_exec_ptc.js.map +1 -0
  394. package/src/scripts/code_exec_session.js.map +1 -0
  395. package/src/scripts/code_exec_simple.js.map +1 -0
  396. package/src/scripts/content.js.map +1 -0
  397. package/src/scripts/empty_input.js.map +1 -0
  398. package/src/scripts/handoff-test.js.map +1 -0
  399. package/src/scripts/image.js.map +1 -0
  400. package/src/scripts/memory.js.map +1 -0
  401. package/src/scripts/multi-agent-chain.js.map +1 -0
  402. package/src/scripts/multi-agent-chain.ts +2 -2
  403. package/src/scripts/multi-agent-conditional.js.map +1 -0
  404. package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
  405. package/src/scripts/multi-agent-document-review-chain.ts +2 -2
  406. package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
  407. package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
  408. package/src/scripts/multi-agent-parallel-start.js.map +1 -0
  409. package/src/scripts/multi-agent-parallel.js.map +1 -0
  410. package/src/scripts/multi-agent-parallel.ts +3 -3
  411. package/src/scripts/multi-agent-sequence.js.map +1 -0
  412. package/src/scripts/multi-agent-sequence.ts +3 -3
  413. package/src/scripts/multi-agent-subagent.ts +246 -0
  414. package/src/scripts/multi-agent-supervisor.js.map +1 -0
  415. package/src/scripts/multi-agent-supervisor.ts +5 -5
  416. package/src/scripts/multi-agent-test.js.map +1 -0
  417. package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
  418. package/src/scripts/parallel-full-metadata-test.js.map +1 -0
  419. package/src/scripts/parallel-tools-test.js.map +1 -0
  420. package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
  421. package/src/scripts/programmatic_exec.js.map +1 -0
  422. package/src/scripts/programmatic_exec_agent.js.map +1 -0
  423. package/src/scripts/search.js.map +1 -0
  424. package/src/scripts/sequential-full-metadata-test.js.map +1 -0
  425. package/src/scripts/sequential-full-metadata-test.ts +2 -2
  426. package/src/scripts/simple.js.map +1 -0
  427. package/src/scripts/single-agent-metadata-test.js.map +1 -0
  428. package/src/scripts/stream.js.map +1 -0
  429. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  430. package/src/scripts/subagent-tools-debug.ts +160 -0
  431. package/src/scripts/test-custom-prompt-key.js.map +1 -0
  432. package/src/scripts/test-custom-prompt-key.ts +3 -3
  433. package/src/scripts/test-handoff-input.js.map +1 -0
  434. package/src/scripts/test-handoff-input.ts +1 -1
  435. package/src/scripts/test-handoff-preamble.js.map +1 -0
  436. package/src/scripts/test-handoff-steering.js.map +1 -0
  437. package/src/scripts/test-handoff-steering.ts +3 -3
  438. package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
  439. package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
  440. package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
  441. package/src/scripts/test-parallel-agent-labeling.ts +3 -3
  442. package/src/scripts/test-parallel-handoffs.js.map +1 -0
  443. package/src/scripts/test-parallel-handoffs.ts +2 -2
  444. package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
  445. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
  446. package/src/scripts/test-thinking-handoff.js.map +1 -0
  447. package/src/scripts/test-thinking-handoff.ts +1 -1
  448. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
  449. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
  450. package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
  451. package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
  452. package/src/scripts/test-tools-before-handoff.js.map +1 -0
  453. package/src/scripts/test-tools-before-handoff.ts +1 -1
  454. package/src/scripts/test_code_api.js.map +1 -0
  455. package/src/scripts/thinking-bedrock.js.map +1 -0
  456. package/src/scripts/thinking-vertexai.js.map +1 -0
  457. package/src/scripts/thinking.js.map +1 -0
  458. package/src/scripts/tool_search.js.map +1 -0
  459. package/src/scripts/tools.js.map +1 -0
  460. package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
  461. package/src/specs/agent-handoffs.test.js.map +1 -0
  462. package/src/specs/agent-handoffs.test.ts +26 -483
  463. package/src/specs/anthropic.simple.test.js.map +1 -0
  464. package/src/specs/anthropic.simple.test.ts +61 -0
  465. package/src/specs/azure.simple.test.js.map +1 -0
  466. package/src/specs/cache.simple.test.js.map +1 -0
  467. package/src/specs/custom-event-await.test.js.map +1 -0
  468. package/src/specs/deepseek.simple.test.js.map +1 -0
  469. package/src/specs/emergency-prune.test.js.map +1 -0
  470. package/src/specs/moonshot.simple.test.js.map +1 -0
  471. package/src/specs/multi-agent-summarization.test.ts +396 -0
  472. package/src/specs/observability.integration.test.js.map +1 -0
  473. package/src/specs/openai.simple.test.js.map +1 -0
  474. package/src/specs/openrouter.simple.test.js.map +1 -0
  475. package/src/specs/prune.orphans.test.ts +248 -0
  476. package/src/specs/prune.test.js.map +1 -0
  477. package/src/specs/prune.test.ts +104 -16
  478. package/src/specs/reasoning.test.js.map +1 -0
  479. package/src/specs/spec.utils.js.map +1 -0
  480. package/src/specs/thinking-handoff.test.js.map +1 -0
  481. package/src/specs/thinking-handoff.test.ts +19 -19
  482. package/src/specs/thinking-prune.test.js.map +1 -0
  483. package/src/specs/token-distribution-edge-case.test.js.map +1 -0
  484. package/src/specs/token-memoization.test.js.map +1 -0
  485. package/src/specs/tokens.test.js.map +1 -0
  486. package/src/specs/tool-error.test.js.map +1 -0
  487. package/src/splitStream.js.map +1 -0
  488. package/src/splitStream.test.js.map +1 -0
  489. package/src/stream.js.map +1 -0
  490. package/src/stream.test.js.map +1 -0
  491. package/src/test/mockTools.js.map +1 -0
  492. package/src/tools/BashExecutor.ts +281 -0
  493. package/src/tools/BashProgrammaticToolCalling.ts +397 -0
  494. package/src/tools/BrowserTools.js.map +1 -0
  495. package/src/tools/Calculator.js.map +1 -0
  496. package/src/tools/Calculator.test.js.map +1 -0
  497. package/src/tools/CodeExecutor.js.map +1 -0
  498. package/src/tools/CodeExecutor.ts +62 -54
  499. package/src/tools/ProgrammaticToolCalling.js.map +1 -0
  500. package/src/tools/ProgrammaticToolCalling.ts +29 -14
  501. package/src/tools/ReadFile.ts +39 -0
  502. package/src/tools/SkillTool.ts +46 -0
  503. package/src/tools/StreamingToolCallBuffer.js.map +1 -0
  504. package/src/tools/SubagentTool.ts +100 -0
  505. package/src/tools/ToolNode.js.map +1 -0
  506. package/src/tools/ToolNode.ts +548 -26
  507. package/src/tools/ToolSearch.js.map +1 -0
  508. package/src/tools/__tests__/BashExecutor.test.ts +49 -0
  509. package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
  510. package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
  511. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
  512. package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
  513. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
  514. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  515. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  516. package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
  517. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  518. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  519. package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
  520. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
  521. package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
  522. package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
  523. package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
  524. package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
  525. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
  526. package/src/tools/__tests__/handlers.test.js.map +1 -0
  527. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  528. package/src/tools/__tests__/subagentHooks.test.ts +210 -0
  529. package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
  530. package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
  531. package/src/tools/handlers.js.map +1 -0
  532. package/src/tools/schema.js.map +1 -0
  533. package/src/tools/search/anthropic.js.map +1 -0
  534. package/src/tools/search/content.js.map +1 -0
  535. package/src/tools/search/content.test.js.map +1 -0
  536. package/src/tools/search/firecrawl.js.map +1 -0
  537. package/src/tools/search/format.js.map +1 -0
  538. package/src/tools/search/highlights.js.map +1 -0
  539. package/src/tools/search/index.js.map +1 -0
  540. package/src/tools/search/jina-reranker.test.js.map +1 -0
  541. package/src/tools/search/rerankers.js.map +1 -0
  542. package/src/tools/search/schema.js.map +1 -0
  543. package/src/tools/search/search.js.map +1 -0
  544. package/src/tools/search/search.ts +12 -2
  545. package/src/tools/search/serper-scraper.js.map +1 -0
  546. package/src/tools/search/tavily-scraper.ts +235 -0
  547. package/src/tools/search/tavily-search.ts +424 -0
  548. package/src/tools/search/tavily.test.ts +965 -0
  549. package/src/tools/search/test.js.map +1 -0
  550. package/src/tools/search/tool.js.map +1 -0
  551. package/src/tools/search/tool.ts +36 -2
  552. package/src/tools/search/types.js.map +1 -0
  553. package/src/tools/search/types.ts +133 -8
  554. package/src/tools/search/utils.js.map +1 -0
  555. package/src/tools/search/utils.ts +13 -5
  556. package/src/tools/skillCatalog.ts +126 -0
  557. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  558. package/src/tools/subagent/index.ts +13 -0
  559. package/src/tools/subagent/types.test.ts +70 -0
  560. package/src/tools/subagent/types.ts +115 -0
  561. package/src/tools/toolOutputReferences.ts +825 -0
  562. package/src/types/agent-cache.ts +73 -0
  563. package/src/types/graph.js.map +1 -0
  564. package/src/types/graph.test.js.map +1 -0
  565. package/src/types/graph.ts +171 -20
  566. package/src/types/index.js.map +1 -0
  567. package/src/types/index.ts +3 -0
  568. package/src/types/llm.js.map +1 -0
  569. package/src/types/messages.js.map +1 -0
  570. package/src/types/messages.ts +27 -0
  571. package/src/types/run.js.map +1 -0
  572. package/src/types/run.ts +22 -0
  573. package/src/types/skill.ts +11 -0
  574. package/src/types/stream.js.map +1 -0
  575. package/src/types/tools.js.map +1 -0
  576. package/src/types/tools.ts +118 -0
  577. package/src/utils/__tests__/truncation.test.ts +66 -0
  578. package/src/utils/contextAnalytics.js.map +1 -0
  579. package/src/utils/contextAnalytics.test.js.map +1 -0
  580. package/src/utils/events.js.map +1 -0
  581. package/src/utils/graph.js.map +1 -0
  582. package/src/utils/handlers.js.map +1 -0
  583. package/src/utils/index.js.map +1 -0
  584. package/src/utils/index.ts +1 -3
  585. package/src/utils/llm.js.map +1 -0
  586. package/src/utils/llmConfig.js.map +1 -0
  587. package/src/utils/logging.js.map +1 -0
  588. package/src/utils/misc.js.map +1 -0
  589. package/src/utils/run.js.map +1 -0
  590. package/src/utils/schema.js.map +1 -0
  591. package/src/utils/title.js.map +1 -0
  592. package/src/utils/tokens.js.map +1 -0
  593. package/src/utils/toonFormat.js.map +1 -0
  594. package/src/utils/truncation.ts +154 -0
  595. package/dist/cjs/common/spawnPath.cjs +0 -104
  596. package/dist/cjs/common/spawnPath.cjs.map +0 -1
  597. package/dist/cjs/content/ArtifactStore.cjs +0 -579
  598. package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
  599. package/dist/cjs/content/ContentStore.cjs +0 -638
  600. package/dist/cjs/content/ContentStore.cjs.map +0 -1
  601. package/dist/cjs/content/contentAnalyzer.cjs +0 -91
  602. package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
  603. package/dist/cjs/content/index.cjs +0 -20
  604. package/dist/cjs/content/index.cjs.map +0 -1
  605. package/dist/cjs/content/mcpAutoCache.cjs +0 -115
  606. package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
  607. package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
  608. package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
  609. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
  610. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
  611. package/dist/cjs/providers/a2a/client.cjs +0 -92
  612. package/dist/cjs/providers/a2a/client.cjs.map +0 -1
  613. package/dist/cjs/providers/a2a/config.cjs +0 -38
  614. package/dist/cjs/providers/a2a/config.cjs.map +0 -1
  615. package/dist/cjs/providers/capabilityNaming.cjs +0 -43
  616. package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
  617. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
  618. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
  619. package/dist/cjs/providers/mcp/config.cjs +0 -42
  620. package/dist/cjs/providers/mcp/config.cjs.map +0 -1
  621. package/dist/cjs/providers/mcp/transport.cjs +0 -65
  622. package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
  623. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
  624. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
  625. package/dist/cjs/providers/types.cjs +0 -51
  626. package/dist/cjs/providers/types.cjs.map +0 -1
  627. package/dist/cjs/tools/artifacts/schema.cjs +0 -86
  628. package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
  629. package/dist/cjs/tools/artifacts/tool.cjs +0 -219
  630. package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
  631. package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
  632. package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
  633. package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
  634. package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
  635. package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
  636. package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
  637. package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
  638. package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
  639. package/dist/cjs/tools/proxyTool.cjs +0 -102
  640. package/dist/cjs/tools/proxyTool.cjs.map +0 -1
  641. package/dist/cjs/utils/childAgentContext.cjs +0 -242
  642. package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
  643. package/dist/cjs/utils/credentials.cjs +0 -142
  644. package/dist/cjs/utils/credentials.cjs.map +0 -1
  645. package/dist/cjs/utils/httpClient.cjs +0 -74
  646. package/dist/cjs/utils/httpClient.cjs.map +0 -1
  647. package/dist/cjs/utils/toolManifest.cjs +0 -100
  648. package/dist/cjs/utils/toolManifest.cjs.map +0 -1
  649. package/dist/esm/common/spawnPath.mjs +0 -95
  650. package/dist/esm/common/spawnPath.mjs.map +0 -1
  651. package/dist/esm/content/ArtifactStore.mjs +0 -576
  652. package/dist/esm/content/ArtifactStore.mjs.map +0 -1
  653. package/dist/esm/content/ContentStore.mjs +0 -635
  654. package/dist/esm/content/ContentStore.mjs.map +0 -1
  655. package/dist/esm/content/contentAnalyzer.mjs +0 -87
  656. package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
  657. package/dist/esm/content/index.mjs +0 -5
  658. package/dist/esm/content/mcpAutoCache.mjs +0 -111
  659. package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
  660. package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
  661. package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
  662. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
  663. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
  664. package/dist/esm/providers/a2a/client.mjs +0 -88
  665. package/dist/esm/providers/a2a/client.mjs.map +0 -1
  666. package/dist/esm/providers/a2a/config.mjs +0 -35
  667. package/dist/esm/providers/a2a/config.mjs.map +0 -1
  668. package/dist/esm/providers/capabilityNaming.mjs +0 -39
  669. package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
  670. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
  671. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
  672. package/dist/esm/providers/mcp/config.mjs +0 -39
  673. package/dist/esm/providers/mcp/config.mjs.map +0 -1
  674. package/dist/esm/providers/mcp/transport.mjs +0 -63
  675. package/dist/esm/providers/mcp/transport.mjs.map +0 -1
  676. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
  677. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
  678. package/dist/esm/providers/types.mjs +0 -51
  679. package/dist/esm/providers/types.mjs.map +0 -1
  680. package/dist/esm/tools/artifacts/schema.mjs +0 -79
  681. package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
  682. package/dist/esm/tools/artifacts/tool.mjs +0 -213
  683. package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
  684. package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
  685. package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
  686. package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
  687. package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
  688. package/dist/esm/tools/fileSearch/schema.mjs +0 -15
  689. package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
  690. package/dist/esm/tools/fileSearch/tool.mjs +0 -152
  691. package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
  692. package/dist/esm/tools/proxyTool.mjs +0 -100
  693. package/dist/esm/tools/proxyTool.mjs.map +0 -1
  694. package/dist/esm/utils/childAgentContext.mjs +0 -237
  695. package/dist/esm/utils/childAgentContext.mjs.map +0 -1
  696. package/dist/esm/utils/credentials.mjs +0 -135
  697. package/dist/esm/utils/credentials.mjs.map +0 -1
  698. package/dist/esm/utils/httpClient.mjs +0 -70
  699. package/dist/esm/utils/httpClient.mjs.map +0 -1
  700. package/dist/esm/utils/toolManifest.mjs +0 -96
  701. package/dist/esm/utils/toolManifest.mjs.map +0 -1
  702. package/dist/types/common/spawnPath.d.ts +0 -59
  703. package/dist/types/content/ArtifactStore.d.ts +0 -223
  704. package/dist/types/content/ContentStore.d.ts +0 -140
  705. package/dist/types/content/contentAnalyzer.d.ts +0 -38
  706. package/dist/types/content/index.d.ts +0 -24
  707. package/dist/types/content/mcpAutoCache.d.ts +0 -89
  708. package/dist/types/content/types.d.ts +0 -75
  709. package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
  710. package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
  711. package/dist/types/providers/a2a/client.d.ts +0 -47
  712. package/dist/types/providers/a2a/config.d.ts +0 -18
  713. package/dist/types/providers/a2a/index.d.ts +0 -6
  714. package/dist/types/providers/a2a/types.d.ts +0 -173
  715. package/dist/types/providers/capabilityNaming.d.ts +0 -25
  716. package/dist/types/providers/index.d.ts +0 -12
  717. package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
  718. package/dist/types/providers/mcp/config.d.ts +0 -20
  719. package/dist/types/providers/mcp/index.d.ts +0 -5
  720. package/dist/types/providers/mcp/transport.d.ts +0 -18
  721. package/dist/types/providers/mcp/types.d.ts +0 -112
  722. package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
  723. package/dist/types/providers/tools-server/index.d.ts +0 -1
  724. package/dist/types/providers/types.d.ts +0 -184
  725. package/dist/types/tools/artifacts/index.d.ts +0 -3
  726. package/dist/types/tools/artifacts/schema.d.ts +0 -63
  727. package/dist/types/tools/artifacts/tool.d.ts +0 -16
  728. package/dist/types/tools/artifacts/types.d.ts +0 -127
  729. package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
  730. package/dist/types/tools/fileSearch/index.d.ts +0 -5
  731. package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
  732. package/dist/types/tools/fileSearch/schema.d.ts +0 -13
  733. package/dist/types/tools/fileSearch/tool.d.ts +0 -18
  734. package/dist/types/tools/fileSearch/types.d.ts +0 -139
  735. package/dist/types/tools/proxyTool.d.ts +0 -62
  736. package/dist/types/utils/childAgentContext.d.ts +0 -99
  737. package/dist/types/utils/credentials.d.ts +0 -77
  738. package/dist/types/utils/httpClient.d.ts +0 -46
  739. package/dist/types/utils/toolManifest.d.ts +0 -49
  740. package/src/common/__tests__/spawnPath.test.ts +0 -110
  741. package/src/common/spawnPath.ts +0 -101
  742. package/src/content/ArtifactStore.ts +0 -782
  743. package/src/content/ContentStore.ts +0 -753
  744. package/src/content/contentAnalyzer.ts +0 -105
  745. package/src/content/index.ts +0 -51
  746. package/src/content/mcpAutoCache.ts +0 -185
  747. package/src/content/types.ts +0 -82
  748. package/src/graphs/HandoffRegistry.ts +0 -199
  749. package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
  750. package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
  751. package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
  752. package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
  753. package/src/graphs/handoffValidation.test.ts +0 -353
  754. package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
  755. package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
  756. package/src/providers/__tests__/types.test.ts +0 -64
  757. package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
  758. package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
  759. package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
  760. package/src/providers/a2a/client.ts +0 -115
  761. package/src/providers/a2a/config.ts +0 -40
  762. package/src/providers/a2a/index.ts +0 -29
  763. package/src/providers/a2a/types.ts +0 -191
  764. package/src/providers/capabilityNaming.ts +0 -42
  765. package/src/providers/index.ts +0 -68
  766. package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
  767. package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
  768. package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
  769. package/src/providers/mcp/config.ts +0 -45
  770. package/src/providers/mcp/index.ts +0 -21
  771. package/src/providers/mcp/transport.ts +0 -76
  772. package/src/providers/mcp/types.ts +0 -139
  773. package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
  774. package/src/providers/tools-server/index.ts +0 -1
  775. package/src/providers/types.ts +0 -204
  776. package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
  777. package/src/scripts/test-handoff-preamble.ts +0 -278
  778. package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
  779. package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
  780. package/src/tools/artifacts/index.ts +0 -33
  781. package/src/tools/artifacts/schema.ts +0 -99
  782. package/src/tools/artifacts/tool.ts +0 -289
  783. package/src/tools/artifacts/types.ts +0 -162
  784. package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
  785. package/src/tools/fileSearch/formatter.ts +0 -129
  786. package/src/tools/fileSearch/index.ts +0 -23
  787. package/src/tools/fileSearch/ragClient.ts +0 -137
  788. package/src/tools/fileSearch/schema.ts +0 -19
  789. package/src/tools/fileSearch/tool.ts +0 -207
  790. package/src/tools/fileSearch/types.ts +0 -149
  791. package/src/tools/proxyTool.ts +0 -166
  792. package/src/utils/__tests__/childAgentContext.test.ts +0 -217
  793. package/src/utils/__tests__/credentials.test.ts +0 -130
  794. package/src/utils/__tests__/httpClient.test.ts +0 -75
  795. package/src/utils/__tests__/toolManifest.test.ts +0 -116
  796. package/src/utils/childAgentContext.ts +0 -259
  797. package/src/utils/credentials.ts +0 -157
  798. package/src/utils/httpClient.ts +0 -92
  799. package/src/utils/toolManifest.ts +0 -109
  800. /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
@@ -375,6 +375,638 @@ describe('AgentContext', () => {
375
375
 
376
376
  expect(ctx.instructionTokens).toBeGreaterThan(initialTokens);
377
377
  });
378
+
379
+ it('excludes deferred-undiscovered instance tools from token accounting', async () => {
380
+ /* Regression for upstream #122 / #121.
381
+ * `calculateInstructionTokens` previously summed every entry in
382
+ * `this.tools` regardless of whether `getToolsForBinding` would
383
+ * actually emit it. That over-reported tokens and triggered
384
+ * spurious empty_messages preflight rejections. */
385
+ const deferredTool = createMockTool('deferred_tool');
386
+ const directTool = createMockTool('direct_tool');
387
+ const toolRegistry: t.LCToolRegistry = new Map([
388
+ [
389
+ 'deferred_tool',
390
+ {
391
+ name: 'deferred_tool',
392
+ description: 'deferred',
393
+ defer_loading: true,
394
+ },
395
+ ],
396
+ [
397
+ 'direct_tool',
398
+ {
399
+ name: 'direct_tool',
400
+ description: 'direct',
401
+ },
402
+ ],
403
+ ]);
404
+
405
+ const ctxBase = createBasicContext({
406
+ agentConfig: {
407
+ instructions: 'Test',
408
+ tools: [directTool],
409
+ toolRegistry,
410
+ },
411
+ tokenCounter: mockTokenCounter,
412
+ });
413
+ await ctxBase.calculateInstructionTokens(mockTokenCounter);
414
+ const baseTokens = ctxBase.getContextBreakdown().tools;
415
+
416
+ const ctxWithDeferred = createBasicContext({
417
+ agentConfig: {
418
+ instructions: 'Test',
419
+ tools: [directTool, deferredTool],
420
+ toolRegistry,
421
+ },
422
+ tokenCounter: mockTokenCounter,
423
+ });
424
+ await ctxWithDeferred.calculateInstructionTokens(mockTokenCounter);
425
+ const withDeferredTokens = ctxWithDeferred.getContextBreakdown().tools;
426
+
427
+ /* The deferred tool is filtered out of the bound subset, so token
428
+ * accounting must match the direct-only baseline. */
429
+ expect(withDeferredTokens).toBe(baseTokens);
430
+ });
431
+
432
+ it('counts deferred instance tool after discovery', async () => {
433
+ const deferredTool = createMockTool('deferred_tool');
434
+ const toolRegistry: t.LCToolRegistry = new Map([
435
+ [
436
+ 'deferred_tool',
437
+ {
438
+ name: 'deferred_tool',
439
+ description: 'deferred',
440
+ defer_loading: true,
441
+ },
442
+ ],
443
+ ]);
444
+
445
+ const ctxUndiscovered = createBasicContext({
446
+ agentConfig: {
447
+ instructions: 'Test',
448
+ tools: [deferredTool],
449
+ toolRegistry,
450
+ },
451
+ tokenCounter: mockTokenCounter,
452
+ });
453
+ await ctxUndiscovered.calculateInstructionTokens(mockTokenCounter);
454
+ expect(ctxUndiscovered.getContextBreakdown().tools).toBe(0);
455
+
456
+ const ctxDiscovered = createBasicContext({
457
+ agentConfig: {
458
+ instructions: 'Test',
459
+ tools: [deferredTool],
460
+ toolRegistry,
461
+ },
462
+ tokenCounter: mockTokenCounter,
463
+ });
464
+ ctxDiscovered.markToolsAsDiscovered(['deferred_tool']);
465
+ await ctxDiscovered.calculateInstructionTokens(mockTokenCounter);
466
+ expect(ctxDiscovered.getContextBreakdown().tools).toBeGreaterThan(0);
467
+ });
468
+
469
+ it('excludes programmatic-only toolDefinitions from token accounting', async () => {
470
+ /* Programmatic-only tool definitions (allowed_callers: ['code_execution'])
471
+ * are never bound to the model — they were inflating toolSchemaTokens
472
+ * even though getEventDrivenToolsForBinding excludes them. */
473
+ const directDef: t.LCTool = {
474
+ name: 'direct_def',
475
+ description: 'direct schema',
476
+ parameters: { type: 'object', properties: {} },
477
+ allowed_callers: ['direct'],
478
+ };
479
+ const programmaticOnlyDef: t.LCTool = {
480
+ name: 'programmatic_only',
481
+ description: 'programmatic only schema',
482
+ parameters: { type: 'object', properties: {} },
483
+ allowed_callers: ['code_execution'],
484
+ };
485
+
486
+ const ctxBase = createBasicContext({
487
+ agentConfig: {
488
+ instructions: 'Test',
489
+ toolDefinitions: [directDef],
490
+ },
491
+ tokenCounter: mockTokenCounter,
492
+ });
493
+ await ctxBase.calculateInstructionTokens(mockTokenCounter);
494
+
495
+ const ctxWithProgrammatic = createBasicContext({
496
+ agentConfig: {
497
+ instructions: 'Test',
498
+ toolDefinitions: [directDef, programmaticOnlyDef],
499
+ },
500
+ tokenCounter: mockTokenCounter,
501
+ });
502
+ await ctxWithProgrammatic.calculateInstructionTokens(mockTokenCounter);
503
+
504
+ expect(ctxWithProgrammatic.getContextBreakdown().tools).toBe(
505
+ ctxBase.getContextBreakdown().tools
506
+ );
507
+ });
508
+ });
509
+
510
+ describe('System message prompt cache markers', () => {
511
+ /* These tests assert the contract that `buildSystemRunnable` (invoked
512
+ * lazily via `systemRunnable`) emits provider-specific cache markers
513
+ * inline in the system message. This is the cross-account / cross-user
514
+ * cache-hit foundation: a stable system prefix shared across all users
515
+ * invoking the same agent maps to the same cache entry on Anthropic
516
+ * (workspace-scoped) and Bedrock (account-scoped). */
517
+
518
+ const captureSystemMessage = async (ctx: AgentContext) => {
519
+ const runnable = ctx.systemRunnable;
520
+ if (!runnable) {
521
+ throw new Error('systemRunnable returned undefined');
522
+ }
523
+ // Invoke the prompt runnable with an empty conversation to extract
524
+ // the prefixed system message. RunnableLambda is async.
525
+ const out = (await runnable.invoke([])) as Array<{ content: unknown }>;
526
+ return out[0];
527
+ };
528
+
529
+ it('Anthropic + promptCache: stable text gets cache_control: ephemeral', async () => {
530
+ const ctx = AgentContext.fromConfig({
531
+ agentId: 'a1',
532
+ provider: Providers.ANTHROPIC,
533
+ instructions: 'Stable agent instructions',
534
+ clientOptions: { promptCache: true } as t.AnthropicClientOptions,
535
+ });
536
+
537
+ const sys = await captureSystemMessage(ctx);
538
+ const content = sys.content as Array<{
539
+ type: string;
540
+ text?: string;
541
+ cache_control?: { type: string };
542
+ }>;
543
+
544
+ expect(Array.isArray(content)).toBe(true);
545
+ expect(content).toHaveLength(1);
546
+ expect(content[0].type).toBe('text');
547
+ expect(content[0].text).toBe('Stable agent instructions');
548
+ expect(content[0].cache_control).toEqual({ type: 'ephemeral', ttl: '5m' });
549
+ });
550
+
551
+ it('Anthropic + promptCache: dynamic tail (additional_instructions) NOT marked', async () => {
552
+ const ctx = AgentContext.fromConfig({
553
+ agentId: 'a1',
554
+ provider: Providers.ANTHROPIC,
555
+ instructions: 'Stable agent instructions',
556
+ additional_instructions: 'Per-user dynamic context',
557
+ clientOptions: { promptCache: true } as t.AnthropicClientOptions,
558
+ });
559
+
560
+ const sys = await captureSystemMessage(ctx);
561
+ const content = sys.content as Array<{
562
+ type: string;
563
+ text?: string;
564
+ cache_control?: { type: string };
565
+ }>;
566
+
567
+ expect(content).toHaveLength(2);
568
+ expect(content[0].cache_control).toEqual({ type: 'ephemeral', ttl: '5m' });
569
+ expect(content[1].text).toBe('Per-user dynamic context');
570
+ expect(content[1].cache_control).toBeUndefined();
571
+ });
572
+
573
+ it('Bedrock Claude + promptCache: cachePoint inserted after stable text', async () => {
574
+ const ctx = AgentContext.fromConfig({
575
+ agentId: 'a1',
576
+ provider: Providers.BEDROCK,
577
+ instructions: 'Stable agent instructions',
578
+ clientOptions: {
579
+ promptCache: true,
580
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
581
+ } as t.BedrockAnthropicClientOptions,
582
+ });
583
+
584
+ const sys = await captureSystemMessage(ctx);
585
+ const content = sys.content as Array<
586
+ { type: string; text?: string } | { cachePoint: { type: string } }
587
+ >;
588
+
589
+ expect(content).toHaveLength(2);
590
+ expect(content[0]).toEqual({
591
+ type: 'text',
592
+ text: 'Stable agent instructions',
593
+ });
594
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
595
+ });
596
+
597
+ it('Bedrock Claude + promptCache + dynamic: cachePoint between stable and dynamic', async () => {
598
+ const ctx = AgentContext.fromConfig({
599
+ agentId: 'a1',
600
+ provider: Providers.BEDROCK,
601
+ instructions: 'Stable agent instructions',
602
+ additional_instructions: 'Per-user dynamic context',
603
+ clientOptions: {
604
+ promptCache: true,
605
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
606
+ } as t.BedrockAnthropicClientOptions,
607
+ });
608
+
609
+ const sys = await captureSystemMessage(ctx);
610
+ const content = sys.content as Array<
611
+ { type: string; text?: string } | { cachePoint: { type: string } }
612
+ >;
613
+
614
+ expect(content).toHaveLength(3);
615
+ expect((content[0] as { text: string }).text).toBe(
616
+ 'Stable agent instructions'
617
+ );
618
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
619
+ expect((content[2] as { text: string }).text).toBe(
620
+ 'Per-user dynamic context'
621
+ );
622
+ });
623
+
624
+ it('Bedrock Llama: NO cachePoint (model does not support it)', async () => {
625
+ const ctx = AgentContext.fromConfig({
626
+ agentId: 'a1',
627
+ provider: Providers.BEDROCK,
628
+ instructions: 'Stable agent instructions',
629
+ clientOptions: {
630
+ promptCache: true,
631
+ model: 'meta.llama3-1-405b-instruct-v1:0',
632
+ } as t.BedrockAnthropicClientOptions,
633
+ });
634
+
635
+ const sys = await captureSystemMessage(ctx);
636
+ // Falls through to plain string when neither Anthropic nor a
637
+ // cache-capable Bedrock model is configured.
638
+ expect(typeof sys.content).toBe('string');
639
+ expect(sys.content).toBe('Stable agent instructions');
640
+ });
641
+
642
+ it('Bedrock + promptCache=false: NO cachePoint', async () => {
643
+ const ctx = AgentContext.fromConfig({
644
+ agentId: 'a1',
645
+ provider: Providers.BEDROCK,
646
+ instructions: 'Stable agent instructions',
647
+ clientOptions: {
648
+ promptCache: false,
649
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
650
+ } as t.BedrockAnthropicClientOptions,
651
+ });
652
+
653
+ const sys = await captureSystemMessage(ctx);
654
+ expect(typeof sys.content).toBe('string');
655
+ });
656
+
657
+ it('Anthropic without promptCache: plain string system content', async () => {
658
+ const ctx = AgentContext.fromConfig({
659
+ agentId: 'a1',
660
+ provider: Providers.ANTHROPIC,
661
+ instructions: 'Stable agent instructions',
662
+ clientOptions: { promptCache: false } as t.AnthropicClientOptions,
663
+ });
664
+
665
+ const sys = await captureSystemMessage(ctx);
666
+ expect(typeof sys.content).toBe('string');
667
+ expect(sys.content).toBe('Stable agent instructions');
668
+ });
669
+
670
+ it('Cross-user cache stability: identical agent → identical cacheable system block', async () => {
671
+ /* This is the load-bearing test for the cross-user cost win.
672
+ * Two AgentContext instances with the same agent.instructions but
673
+ * DIFFERENT additional_instructions (per-user dynamic context) MUST
674
+ * produce a byte-identical FIRST content block — the cache prefix.
675
+ * Bedrock and Anthropic both key the cache off the stable prefix. */
676
+ const baseConfig = {
677
+ agentId: 'a1',
678
+ provider: Providers.ANTHROPIC,
679
+ instructions: 'Stable agent instructions for ALL users',
680
+ clientOptions: { promptCache: true } as t.AnthropicClientOptions,
681
+ };
682
+
683
+ const ctxAlice = AgentContext.fromConfig({
684
+ ...baseConfig,
685
+ additional_instructions: 'Hi Alice. Memory: A, B, C.',
686
+ });
687
+ const ctxBob = AgentContext.fromConfig({
688
+ ...baseConfig,
689
+ additional_instructions: 'Hi Bob. Memory: X, Y, Z.',
690
+ });
691
+
692
+ const sysAlice = await captureSystemMessage(ctxAlice);
693
+ const sysBob = await captureSystemMessage(ctxBob);
694
+
695
+ const contentAlice = sysAlice.content as Array<{
696
+ type: string;
697
+ text: string;
698
+ cache_control?: { type: string };
699
+ }>;
700
+ const contentBob = sysBob.content as Array<{
701
+ type: string;
702
+ text: string;
703
+ cache_control?: { type: string };
704
+ }>;
705
+
706
+ // Stable prefix is BYTE-IDENTICAL → same cache entry.
707
+ expect(contentAlice[0]).toEqual(contentBob[0]);
708
+
709
+ // Dynamic tail differs but is NOT cache-marked.
710
+ expect(contentAlice[1].text).not.toBe(contentBob[1].text);
711
+ expect(contentAlice[1].cache_control).toBeUndefined();
712
+ expect(contentBob[1].cache_control).toBeUndefined();
713
+ });
714
+ });
715
+
716
+ describe('System cache blocks (multi-cachePoint emission)', () => {
717
+ /* Verifies the generic multi-cachePoint primitive. Consumers compose
718
+ * cacheable blocks via `system_cache_blocks` and the library encodes
719
+ * provider-specific cache markers around each. See
720
+ * src/types/agent-cache.ts for the contract. */
721
+
722
+ const captureSystemMessage = async (ctx: AgentContext) => {
723
+ const runnable = ctx.systemRunnable;
724
+ if (!runnable) {
725
+ throw new Error('systemRunnable returned undefined');
726
+ }
727
+ const out = (await runnable.invoke([])) as Array<{ content: unknown }>;
728
+ return out[0];
729
+ };
730
+
731
+ it('Anthropic with one cache block + instructions + dynamic: emits 3 cache_control blocks', async () => {
732
+ const ctx = AgentContext.fromConfig({
733
+ agentId: 'a1',
734
+ provider: Providers.ANTHROPIC,
735
+ system_cache_blocks: [{ text: 'Outer cacheable prefix.' }],
736
+ instructions: 'Agent-specific stable.',
737
+ additional_instructions: 'Dynamic per-user.',
738
+ clientOptions: { promptCache: true } as t.AnthropicClientOptions,
739
+ });
740
+
741
+ const sys = await captureSystemMessage(ctx);
742
+ const content = sys.content as Array<{
743
+ type: string;
744
+ text: string;
745
+ cache_control?: { type: string; ttl?: string };
746
+ }>;
747
+
748
+ expect(content).toHaveLength(3);
749
+ expect(content[0].text).toBe('Outer cacheable prefix.');
750
+ expect(content[0].cache_control).toEqual({
751
+ type: 'ephemeral',
752
+ ttl: '5m',
753
+ });
754
+ expect(content[1].text).toBe('Agent-specific stable.');
755
+ expect(content[1].cache_control).toEqual({
756
+ type: 'ephemeral',
757
+ ttl: '5m',
758
+ });
759
+ expect(content[2].text).toBe('Dynamic per-user.');
760
+ expect(content[2].cache_control).toBeUndefined();
761
+ });
762
+
763
+ it('Bedrock with one cache block + instructions + dynamic: emits 5-element content array', async () => {
764
+ const ctx = AgentContext.fromConfig({
765
+ agentId: 'a1',
766
+ provider: Providers.BEDROCK,
767
+ system_cache_blocks: [{ text: 'Outer cacheable prefix.' }],
768
+ instructions: 'Agent-specific stable.',
769
+ additional_instructions: 'Dynamic per-user.',
770
+ clientOptions: {
771
+ promptCache: true,
772
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
773
+ } as t.BedrockAnthropicClientOptions,
774
+ });
775
+
776
+ const sys = await captureSystemMessage(ctx);
777
+ const content = sys.content as Array<
778
+ | { type: string; text: string }
779
+ | { cachePoint: { type: string; ttl?: string } }
780
+ >;
781
+
782
+ expect(content).toHaveLength(5);
783
+ expect((content[0] as { text: string }).text).toBe('Outer cacheable prefix.');
784
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
785
+ expect((content[2] as { text: string }).text).toBe(
786
+ 'Agent-specific stable.'
787
+ );
788
+ expect(content[3]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
789
+ expect((content[4] as { text: string }).text).toBe('Dynamic per-user.');
790
+ });
791
+
792
+ it('per-block TTL respected: prefix=5m, instructions=1h emits the right TTL on each cachePoint', async () => {
793
+ const ctx = AgentContext.fromConfig({
794
+ agentId: 'a1',
795
+ provider: Providers.BEDROCK,
796
+ system_cache_blocks: [{ text: 'Prefix.', ttl: '5m' }],
797
+ instructions: 'Agent.',
798
+ instructions_cache_ttl: '1h',
799
+ clientOptions: {
800
+ promptCache: true,
801
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
802
+ } as t.BedrockAnthropicClientOptions,
803
+ });
804
+
805
+ const sys = await captureSystemMessage(ctx);
806
+ const content = sys.content as Array<
807
+ | { type: string; text: string }
808
+ | { cachePoint: { type: string; ttl?: string } }
809
+ >;
810
+
811
+ expect(content).toHaveLength(4);
812
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
813
+ expect(content[3]).toEqual({ cachePoint: { type: 'default', ttl: '1h' } });
814
+ });
815
+
816
+ it('Cross-tenant cache stability: two consumers with shared cache block produce byte-identical prefix', async () => {
817
+ /* Load-bearing test: two distinct agents (different instructions)
818
+ * but the SAME outer cache block produce byte-identical first
819
+ * content entries, so Bedrock/Anthropic see the same cache key for
820
+ * the outer block. */
821
+ const sharedPrefix = 'Universal platform identity rules and tool routing.';
822
+
823
+ const customAgentA = AgentContext.fromConfig({
824
+ agentId: 'finance-helper',
825
+ name: 'Finance Helper',
826
+ provider: Providers.BEDROCK,
827
+ system_cache_blocks: [{ text: sharedPrefix }],
828
+ instructions: 'You are Finance Helper. Use SAP and Bloomberg.',
829
+ clientOptions: {
830
+ promptCache: true,
831
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
832
+ } as t.BedrockAnthropicClientOptions,
833
+ });
834
+
835
+ const customAgentB = AgentContext.fromConfig({
836
+ agentId: 'hr-helper',
837
+ name: 'HR Helper',
838
+ provider: Providers.BEDROCK,
839
+ system_cache_blocks: [{ text: sharedPrefix }],
840
+ instructions: 'You are HR Helper. Use Workday and Lever.',
841
+ clientOptions: {
842
+ promptCache: true,
843
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
844
+ } as t.BedrockAnthropicClientOptions,
845
+ });
846
+
847
+ const sysA = await captureSystemMessage(customAgentA);
848
+ const sysB = await captureSystemMessage(customAgentB);
849
+ const contentA = sysA.content as Array<unknown>;
850
+ const contentB = sysB.content as Array<unknown>;
851
+
852
+ // First TWO entries must match byte-for-byte: [prefix text, cachePoint]
853
+ expect(contentA[0]).toEqual(contentB[0]);
854
+ expect(contentA[1]).toEqual(contentB[1]);
855
+
856
+ // Third entry (agent-specific text) MUST differ — they are different agents.
857
+ expect(contentA[2]).not.toEqual(contentB[2]);
858
+ });
859
+
860
+ it('Empty system_cache_blocks: falls back to 2-tier (instructions + dynamic) shape', async () => {
861
+ /* Backwards-compat: consumers without the multi-cachePoint pattern
862
+ * get the legacy 2-tier shape — instructions + dynamic. */
863
+ const ctx = AgentContext.fromConfig({
864
+ agentId: 'a1',
865
+ provider: Providers.BEDROCK,
866
+ instructions: 'Agent-only stable.',
867
+ additional_instructions: 'Dynamic per-user.',
868
+ clientOptions: {
869
+ promptCache: true,
870
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
871
+ } as t.BedrockAnthropicClientOptions,
872
+ });
873
+
874
+ const sys = await captureSystemMessage(ctx);
875
+ const content = sys.content as Array<unknown>;
876
+
877
+ // [text, cachePoint, text] — exactly the 2-tier shape
878
+ expect(content).toHaveLength(3);
879
+ expect((content[0] as { text: string }).text).toBe('Agent-only stable.');
880
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
881
+ expect((content[2] as { text: string }).text).toBe('Dynamic per-user.');
882
+ });
883
+
884
+ it('Cache block only (no instructions): emits prefix tier + dynamic', async () => {
885
+ /* Edge case: only system_cache_blocks set, instructions empty.
886
+ * Useful for "global default" agents that rely entirely on the
887
+ * shared cacheable prefix. */
888
+ const ctx = AgentContext.fromConfig({
889
+ agentId: 'a1',
890
+ provider: Providers.BEDROCK,
891
+ system_cache_blocks: [{ text: 'Prefix only.' }],
892
+ additional_instructions: 'Dynamic.',
893
+ clientOptions: {
894
+ promptCache: true,
895
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
896
+ } as t.BedrockAnthropicClientOptions,
897
+ });
898
+
899
+ const sys = await captureSystemMessage(ctx);
900
+ const content = sys.content as Array<unknown>;
901
+
902
+ // [prefix text, cachePoint, dynamic text]
903
+ expect(content).toHaveLength(3);
904
+ expect((content[0] as { text: string }).text).toBe('Prefix only.');
905
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
906
+ expect((content[2] as { text: string }).text).toBe('Dynamic.');
907
+ });
908
+
909
+ it('two cache blocks: emits 2 cachePoints in order', async () => {
910
+ /* Composite case — N=2 entries. Each gets its own cachePoint, in
911
+ * declared order (outer first). This proves the array semantics. */
912
+ const ctx = AgentContext.fromConfig({
913
+ agentId: 'a1',
914
+ provider: Providers.BEDROCK,
915
+ system_cache_blocks: [
916
+ { text: 'Block A (outer).', ttl: '1h' },
917
+ { text: 'Block B (inner).', ttl: '5m' },
918
+ ],
919
+ instructions: 'Instructions.',
920
+ clientOptions: {
921
+ promptCache: true,
922
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
923
+ } as t.BedrockAnthropicClientOptions,
924
+ });
925
+
926
+ const sys = await captureSystemMessage(ctx);
927
+ const content = sys.content as Array<
928
+ | { type: string; text: string }
929
+ | { cachePoint: { type: string; ttl?: string } }
930
+ >;
931
+
932
+ // [A text, cp(1h), B text, cp(5m), instructions text, cp(5m)]
933
+ expect(content).toHaveLength(6);
934
+ expect((content[0] as { text: string }).text).toBe('Block A (outer).');
935
+ expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '1h' } });
936
+ expect((content[2] as { text: string }).text).toBe('Block B (inner).');
937
+ expect(content[3]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
938
+ expect((content[4] as { text: string }).text).toBe('Instructions.');
939
+ expect(content[5]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
940
+ });
941
+
942
+ it('throws when system_cache_blocks exceeds MAX_SYSTEM_CACHE_BLOCKS (cachePoint budget)', () => {
943
+ /* Bedrock supports 4 cachePoints/request total. The library uses up
944
+ * to 2 in the system message + 1 trailing for instructions, leaving
945
+ * 1 for the tools array. Allowing 3+ entries would silently exceed
946
+ * the budget — the library throws to surface the misuse early. */
947
+ expect(() => {
948
+ AgentContext.fromConfig({
949
+ agentId: 'a1',
950
+ provider: Providers.BEDROCK,
951
+ system_cache_blocks: [
952
+ { text: 'A' },
953
+ { text: 'B' },
954
+ { text: 'C' }, // ← over the cap
955
+ ],
956
+ instructions: 'X',
957
+ clientOptions: {
958
+ promptCache: true,
959
+ model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
960
+ } as t.BedrockAnthropicClientOptions,
961
+ });
962
+ }).toThrow(/system_cache_blocks supports at most 2 entries/);
963
+ });
964
+
965
+ it('Bedrock with non-cache-supported model (titan): NO cachePoint emitted', async () => {
966
+ /* The cacheSupport allowlist (cacheSupport.ts) rejects titan — we
967
+ * must NOT emit cachePoint markers there or Bedrock errors. */
968
+ const ctx = AgentContext.fromConfig({
969
+ agentId: 'a1',
970
+ provider: Providers.BEDROCK,
971
+ system_cache_blocks: [{ text: 'Prefix.' }],
972
+ instructions: 'Agent.',
973
+ clientOptions: {
974
+ promptCache: true,
975
+ model: 'amazon.titan-text-premier-v1:0',
976
+ } as t.BedrockAnthropicClientOptions,
977
+ });
978
+
979
+ const sys = await captureSystemMessage(ctx);
980
+ // Falls through to plain string concatenation when caching unsupported.
981
+ expect(typeof sys.content).toBe('string');
982
+ });
983
+
984
+ it('Bedrock with bedrockCacheModelPatterns extension: emits cachePoint for custom model', async () => {
985
+ /* Consumer extension: AWS adds a new model family before the
986
+ * library's allowlist updates. Consumer passes a regex; library
987
+ * treats the model as cache-supported. */
988
+ const ctx = AgentContext.fromConfig({
989
+ agentId: 'a1',
990
+ provider: Providers.BEDROCK,
991
+ system_cache_blocks: [{ text: 'Prefix.' }],
992
+ instructions: 'Agent.',
993
+ clientOptions: {
994
+ promptCache: true,
995
+ model: 'mycorp.future-model-v1:0',
996
+ bedrockCacheModelPatterns: [/^mycorp\.future-model-/i],
997
+ } as t.BedrockAnthropicClientOptions & {
998
+ bedrockCacheModelPatterns?: readonly RegExp[];
999
+ },
1000
+ });
1001
+
1002
+ const sys = await captureSystemMessage(ctx);
1003
+ const content = sys.content as Array<unknown>;
1004
+
1005
+ expect(Array.isArray(content)).toBe(true);
1006
+ expect(content).toContainEqual({
1007
+ cachePoint: { type: 'default', ttl: '5m' },
1008
+ });
1009
+ });
378
1010
  });
379
1011
 
380
1012
  describe('reset()', () => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveStructuredOutputMode.test.js","sourceRoot":"","sources":["resolveStructuredOutputMode.test.ts"],"names":[],"mappings":"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"}