@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
@@ -1,415 +0,0 @@
1
- /**
2
- * Integration test: Agent Handoff with Bedrock
3
- *
4
- * Verifies end-to-end that:
5
- * 1. Handoff tool descriptions are enriched with agent name + description
6
- * 2. The LLM (Bedrock Claude) can see and use these descriptions to route correctly
7
- * 3. The handoff actually transfers control to the correct agent
8
- *
9
- * Requires: BEDROCK_AWS_ACCESS_KEY_ID, BEDROCK_AWS_SECRET_ACCESS_KEY, BEDROCK_AWS_REGION
10
- */
11
- import { config } from 'dotenv';
12
- import { resolve } from 'path';
13
- // Load local .env first; optionally fall back to a host-provided env file
14
- // pointed at by AGENTS_TEST_ENV_PATH.
15
- config();
16
- if (process.env.AGENTS_TEST_ENV_PATH) {
17
- config({
18
- path: resolve(process.env.AGENTS_TEST_ENV_PATH),
19
- override: false,
20
- });
21
- }
22
-
23
- import { HumanMessage, ToolMessage } from '@langchain/core/messages';
24
- import type { RunnableConfig } from '@langchain/core/runnables';
25
- import type * as t from '@/types';
26
- import { Providers, Constants, GraphEvents, EdgeType } from '@/common';
27
- import { StandardGraph } from '@/graphs/Graph';
28
- import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
29
- import { ToolEndHandler, ModelEndHandler } from '@/events';
30
- import { Run } from '@/run';
31
-
32
- const bedrockRegion =
33
- process.env.BEDROCK_AWS_REGION != null &&
34
- process.env.BEDROCK_AWS_REGION !== ''
35
- ? process.env.BEDROCK_AWS_REGION
36
- : process.env.BEDROCK_AWS_DEFAULT_REGION;
37
- const hasBedrock =
38
- process.env.BEDROCK_AWS_ACCESS_KEY_ID != null &&
39
- process.env.BEDROCK_AWS_ACCESS_KEY_ID !== '' &&
40
- process.env.BEDROCK_AWS_SECRET_ACCESS_KEY != null &&
41
- process.env.BEDROCK_AWS_SECRET_ACCESS_KEY !== '' &&
42
- bedrockRegion != null &&
43
- bedrockRegion !== '';
44
-
45
- const describeIf = hasBedrock ? describe : describe.skip;
46
-
47
- /** Helper to safely get tool description from tool object */
48
- const getToolDescription = (tool: t.GraphTools[0]): string | undefined => {
49
- return (tool as { description?: string }).description;
50
- };
51
-
52
- /** Helper to safely get tool name from tool object */
53
- const getToolName = (tool: t.GraphTools[0]): string | undefined => {
54
- return (tool as { name?: string }).name;
55
- };
56
-
57
- /** Helper to find tool by name */
58
- const findToolByName = (
59
- tools: t.GraphTools | undefined,
60
- name: string
61
- ): t.GraphTools[0] | undefined => {
62
- return tools?.find((tool) => getToolName(tool) === name);
63
- };
64
-
65
- describeIf('Agent Handoff E2E with Bedrock', () => {
66
- jest.setTimeout(120000);
67
-
68
- const bedrockOptions = {
69
- model: 'us.anthropic.claude-3-5-haiku-20241022-v1:0',
70
- region:
71
- bedrockRegion != null && bedrockRegion !== ''
72
- ? bedrockRegion
73
- : 'us-east-1',
74
- credentials: {
75
- accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
76
- secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
77
- },
78
- };
79
-
80
- const createBedrockAgent = (
81
- agentId: string,
82
- name: string,
83
- description: string,
84
- instructions: string
85
- ): t.AgentInputs => ({
86
- agentId,
87
- name,
88
- description,
89
- provider: Providers.BEDROCK,
90
- clientOptions: bedrockOptions,
91
- instructions,
92
- maxContextTokens: 28000,
93
- });
94
-
95
- describe('Tool Description Enrichment (no edge.description)', () => {
96
- it('should generate tool descriptions from agent name + description when edge has no description', async () => {
97
- const agents: t.AgentInputs[] = [
98
- createBedrockAgent(
99
- 'supervisor_abc123',
100
- 'Supervisor',
101
- 'Routes requests to specialists',
102
- 'You are a supervisor. Route requests to the appropriate specialist.'
103
- ),
104
- createBedrockAgent(
105
- 'agent_W47hBnn2RoVZEOy5595GC',
106
- 'Sales Expert',
107
- 'Handles product pricing, quotes, and purchase orders for enterprise clients',
108
- 'You are a sales expert.'
109
- ),
110
- createBedrockAgent(
111
- 'agent_X92kLmn4TpQR8vw3221HD',
112
- 'Technical Support',
113
- 'Troubleshoots technical issues, resolves bugs, and handles escalations',
114
- 'You are a technical support agent.'
115
- ),
116
- ];
117
-
118
- // Edges WITHOUT explicit descriptions - simulates what happens in production
119
- // when users add handoffs through the UI without typing descriptions
120
- const edges: t.GraphEdge[] = [
121
- {
122
- from: 'supervisor_abc123',
123
- to: 'agent_W47hBnn2RoVZEOy5595GC',
124
- edgeType: EdgeType.TRANSFER,
125
- // No description - should auto-generate from agent name + description
126
- },
127
- {
128
- from: 'supervisor_abc123',
129
- to: 'agent_X92kLmn4TpQR8vw3221HD',
130
- edgeType: EdgeType.TRANSFER,
131
- // No description
132
- },
133
- ];
134
-
135
- const run = await Run.create({
136
- runId: `bedrock-handoff-desc-${Date.now()}`,
137
- graphConfig: {
138
- type: 'multi-agent',
139
- agents,
140
- edges,
141
- },
142
- returnContent: true,
143
- });
144
-
145
- const supervisorContext = (run.Graph as StandardGraph).agentContexts.get(
146
- 'supervisor_abc123'
147
- );
148
-
149
- // Verify the handoff tools have enriched descriptions
150
- const salesTool = findToolByName(
151
- supervisorContext?.graphTools,
152
- `${Constants.LC_TRANSFER_TO_}agent_W47hBnn2RoVZEOy5595GC`
153
- );
154
- const supportTool = findToolByName(
155
- supervisorContext?.graphTools,
156
- `${Constants.LC_TRANSFER_TO_}agent_X92kLmn4TpQR8vw3221HD`
157
- );
158
-
159
- expect(salesTool).toBeDefined();
160
- expect(supportTool).toBeDefined();
161
-
162
- const salesDesc = getToolDescription(salesTool!);
163
- const supportDesc = getToolDescription(supportTool!);
164
-
165
- // CRITICAL: Descriptions must NOT be just "Transfer control to agent 'agent_W47hBnn...'"
166
- // They must include the human-readable name and description
167
- expect(salesDesc).toContain('Sales Expert');
168
- expect(salesDesc).toContain('pricing');
169
- expect(salesDesc).not.toContain('agent_W47hBnn2RoVZEOy5595GC');
170
-
171
- expect(supportDesc).toContain('Technical Support');
172
- expect(supportDesc).toContain('Troubleshoots');
173
- expect(supportDesc).not.toContain('agent_X92kLmn4TpQR8vw3221HD');
174
-
175
- /* eslint-disable no-console */
176
- console.log('[PASS] Sales tool description:', salesDesc);
177
- console.log('[PASS] Support tool description:', supportDesc);
178
- /* eslint-enable no-console */
179
- });
180
- });
181
-
182
- describe('Live Bedrock Handoff Routing', () => {
183
- it('should route a sales question to the Sales Expert agent', async () => {
184
- const agents: t.AgentInputs[] = [
185
- createBedrockAgent(
186
- 'router',
187
- 'Router',
188
- 'Routes user requests to specialists',
189
- `You are a request router. You must analyze the user's message and transfer to the appropriate specialist.
190
-
191
- IMPORTANT: Do NOT answer the question yourself. You MUST use one of your transfer tools to hand off to a specialist.
192
- Pick the specialist whose description best matches the user's request.`
193
- ),
194
- createBedrockAgent(
195
- 'sales_agent',
196
- 'Sales Expert',
197
- 'Handles product pricing, quotes, and purchase orders',
198
- 'You are a sales expert. Answer questions about pricing and products. Be concise.'
199
- ),
200
- createBedrockAgent(
201
- 'support_agent',
202
- 'Technical Support',
203
- 'Troubleshoots technical issues and resolves bugs',
204
- 'You are technical support. Help with technical problems. Be concise.'
205
- ),
206
- ];
207
-
208
- const edges: t.GraphEdge[] = [
209
- { from: 'router', to: 'sales_agent', edgeType: EdgeType.TRANSFER },
210
- { from: 'router', to: 'support_agent', edgeType: EdgeType.TRANSFER },
211
- ];
212
-
213
- const { contentParts: _contentParts, aggregateContent } =
214
- createContentAggregator();
215
- const customHandlers = {
216
- [GraphEvents.TOOL_END]: new ToolEndHandler(),
217
- [GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
218
- [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
219
- [GraphEvents.ON_RUN_STEP]: {
220
- handle: (event: string, data: t.StreamEventData): void => {
221
- aggregateContent({
222
- event: event as GraphEvents,
223
- data: data as t.RunStep,
224
- });
225
- },
226
- },
227
- [GraphEvents.ON_RUN_STEP_COMPLETED]: {
228
- handle: (event: string, data: t.StreamEventData): void => {
229
- aggregateContent({
230
- event: event as GraphEvents,
231
- data: data as unknown as { result: t.ToolEndEvent },
232
- });
233
- },
234
- },
235
- [GraphEvents.ON_MESSAGE_DELTA]: {
236
- handle: (event: string, data: t.StreamEventData): void => {
237
- aggregateContent({
238
- event: event as GraphEvents,
239
- data: data as t.MessageDeltaEvent,
240
- });
241
- },
242
- },
243
- };
244
-
245
- const run = await Run.create({
246
- runId: `bedrock-live-handoff-${Date.now()}`,
247
- graphConfig: {
248
- type: 'multi-agent',
249
- agents,
250
- edges,
251
- },
252
- customHandlers,
253
- returnContent: true,
254
- });
255
-
256
- const config: Partial<RunnableConfig> & {
257
- version: 'v1' | 'v2';
258
- streamMode: string;
259
- } = {
260
- configurable: { thread_id: 'bedrock-handoff-test' },
261
- streamMode: 'values',
262
- version: 'v2',
263
- };
264
-
265
- // Send a sales-related question
266
- const messages = [
267
- new HumanMessage('What is the pricing for your enterprise plan?'),
268
- ];
269
-
270
- await run.processStream({ messages }, config);
271
-
272
- const finalMessages = run.getRunMessages();
273
- expect(finalMessages).toBeDefined();
274
- expect(finalMessages!.length).toBeGreaterThan(1);
275
-
276
- // Verify the handoff happened to the sales agent (not support)
277
- const toolMessages = finalMessages!.filter(
278
- (msg) => msg.getType() === 'tool'
279
- ) as ToolMessage[];
280
-
281
- const salesHandoff = toolMessages.find(
282
- (msg) => msg.name === `${Constants.LC_TRANSFER_TO_}sales_agent`
283
- );
284
- const supportHandoff = toolMessages.find(
285
- (msg) => msg.name === `${Constants.LC_TRANSFER_TO_}support_agent`
286
- );
287
-
288
- expect(salesHandoff).toBeDefined();
289
- expect(supportHandoff).toBeUndefined();
290
-
291
- /* eslint-disable no-console */
292
- console.log('[PASS] Router correctly handed off to Sales Expert');
293
- console.log('[PASS] Handoff tool message:', salesHandoff?.content);
294
- /* eslint-enable no-console */
295
-
296
- // Verify the sales agent actually responded
297
- const aiMessages = finalMessages!.filter((msg) => msg.getType() === 'ai');
298
- expect(aiMessages.length).toBeGreaterThanOrEqual(2); // Router + Sales responses
299
- });
300
-
301
- it('should route a technical question to the Support agent', async () => {
302
- const agents: t.AgentInputs[] = [
303
- createBedrockAgent(
304
- 'router',
305
- 'Router',
306
- 'Routes user requests to specialists',
307
- `You are a request router. You must analyze the user's message and transfer to the appropriate specialist.
308
-
309
- IMPORTANT: Do NOT answer the question yourself. You MUST use one of your transfer tools to hand off to a specialist.
310
- Pick the specialist whose description best matches the user's request.`
311
- ),
312
- createBedrockAgent(
313
- 'sales_agent',
314
- 'Sales Expert',
315
- 'Handles product pricing, quotes, and purchase orders',
316
- 'You are a sales expert. Answer questions about pricing. Be concise.'
317
- ),
318
- createBedrockAgent(
319
- 'support_agent',
320
- 'Technical Support',
321
- 'Troubleshoots technical issues, resolves bugs, and handles error messages',
322
- 'You are technical support. Help with technical problems. Be concise.'
323
- ),
324
- ];
325
-
326
- const edges: t.GraphEdge[] = [
327
- { from: 'router', to: 'sales_agent', edgeType: EdgeType.TRANSFER },
328
- { from: 'router', to: 'support_agent', edgeType: EdgeType.TRANSFER },
329
- ];
330
-
331
- const { contentParts: _contentParts, aggregateContent } =
332
- createContentAggregator();
333
- const customHandlers = {
334
- [GraphEvents.TOOL_END]: new ToolEndHandler(),
335
- [GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
336
- [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
337
- [GraphEvents.ON_RUN_STEP]: {
338
- handle: (event: string, data: t.StreamEventData): void => {
339
- aggregateContent({
340
- event: event as GraphEvents,
341
- data: data as t.RunStep,
342
- });
343
- },
344
- },
345
- [GraphEvents.ON_RUN_STEP_COMPLETED]: {
346
- handle: (event: string, data: t.StreamEventData): void => {
347
- aggregateContent({
348
- event: event as GraphEvents,
349
- data: data as unknown as { result: t.ToolEndEvent },
350
- });
351
- },
352
- },
353
- [GraphEvents.ON_MESSAGE_DELTA]: {
354
- handle: (event: string, data: t.StreamEventData): void => {
355
- aggregateContent({
356
- event: event as GraphEvents,
357
- data: data as t.MessageDeltaEvent,
358
- });
359
- },
360
- },
361
- };
362
-
363
- const run = await Run.create({
364
- runId: `bedrock-live-handoff-support-${Date.now()}`,
365
- graphConfig: {
366
- type: 'multi-agent',
367
- agents,
368
- edges,
369
- },
370
- customHandlers,
371
- returnContent: true,
372
- });
373
-
374
- const config: Partial<RunnableConfig> & {
375
- version: 'v1' | 'v2';
376
- streamMode: string;
377
- } = {
378
- configurable: { thread_id: 'bedrock-handoff-support-test' },
379
- streamMode: 'values',
380
- version: 'v2',
381
- };
382
-
383
- // Send a technical question
384
- const messages = [
385
- new HumanMessage(
386
- 'I am getting an error 500 when trying to login. The page crashes after entering my password.'
387
- ),
388
- ];
389
-
390
- await run.processStream({ messages }, config);
391
-
392
- const finalMessages = run.getRunMessages();
393
- expect(finalMessages).toBeDefined();
394
-
395
- const toolMessages = finalMessages!.filter(
396
- (msg) => msg.getType() === 'tool'
397
- ) as ToolMessage[];
398
-
399
- const supportHandoff = toolMessages.find(
400
- (msg) => msg.name === `${Constants.LC_TRANSFER_TO_}support_agent`
401
- );
402
- const salesHandoff = toolMessages.find(
403
- (msg) => msg.name === `${Constants.LC_TRANSFER_TO_}sales_agent`
404
- );
405
-
406
- expect(supportHandoff).toBeDefined();
407
- expect(salesHandoff).toBeUndefined();
408
-
409
- /* eslint-disable no-console */
410
- console.log('[PASS] Router correctly handed off to Technical Support');
411
- console.log('[PASS] Handoff tool message:', supportHandoff?.content);
412
- /* eslint-enable no-console */
413
- });
414
- });
415
- });
@@ -1,259 +0,0 @@
1
- /**
2
- * Unit tests for the artifact_tool + content_reader library factories.
3
- *
4
- * The factories are thin dispatchers — their job is:
5
- * 1. Resolve scope from runnableConfig (error if missing)
6
- * 2. Optionally self-heal content_id via the resolver
7
- * 3. Validate per-action required args
8
- * 4. Route to the runtime's handler, propagate errors
9
- *
10
- * We verify each of those paths here with mock handlers.
11
- */
12
-
13
- import { createArtifactTool, createContentReaderTool } from '../tool';
14
- import type {
15
- ArtifactWriteHandlers,
16
- ContentReadHandlers,
17
- ArtifactToolScope,
18
- ArtifactToolResult,
19
- ContentIdResolver,
20
- } from '../types';
21
-
22
- function makeScope(): ArtifactToolScope {
23
- return { conversationId: 'conv-1', userId: 'user-1' };
24
- }
25
-
26
- function makeWriteHandlers(): ArtifactWriteHandlers & {
27
- _calls: Array<{ action: string; args: unknown; scope: ArtifactToolScope }>;
28
- } {
29
- const calls: Array<{
30
- action: string;
31
- args: unknown;
32
- scope: ArtifactToolScope;
33
- }> = [];
34
- return {
35
- _calls: calls,
36
- write: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
37
- calls.push({ action: 'write', args, scope });
38
- return ['wrote it', { id: 'new-id' }];
39
- }),
40
- edit: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
41
- calls.push({ action: 'edit', args, scope });
42
- return ['edited', {}];
43
- }),
44
- verify: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
45
- calls.push({ action: 'verify', args, scope });
46
- return ['verified', {}];
47
- }),
48
- delete: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
49
- calls.push({ action: 'delete', args, scope });
50
- return ['deleted', {}];
51
- }),
52
- };
53
- }
54
-
55
- function makeReadHandlers(): ContentReadHandlers & {
56
- _calls: Array<{ action: string; args: unknown; scope: ArtifactToolScope }>;
57
- } {
58
- const calls: Array<{
59
- action: string;
60
- args: unknown;
61
- scope: ArtifactToolScope;
62
- }> = [];
63
- return {
64
- _calls: calls,
65
- read: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
66
- calls.push({ action: 'read', args, scope });
67
- return ['read-output', {}];
68
- }),
69
- search: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
70
- calls.push({ action: 'search', args, scope });
71
- return ['search-output', {}];
72
- }),
73
- list: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
74
- calls.push({ action: 'list', args, scope });
75
- return ['list-output', {}];
76
- }),
77
- info: jest.fn(async (args, scope): Promise<ArtifactToolResult> => {
78
- calls.push({ action: 'info', args, scope });
79
- return ['info-output', {}];
80
- }),
81
- };
82
- }
83
-
84
- describe('createArtifactTool', () => {
85
- it('returns a scope error when getScope returns null', async () => {
86
- const handlers = makeWriteHandlers();
87
- const t = createArtifactTool({
88
- handlers,
89
- getScope: () => null,
90
- });
91
- const result = await t.invoke({ action: 'write', content: 'x' });
92
- const text = Array.isArray(result) ? String(result[0]) : String(result);
93
- expect(text).toMatch(/no conversation context/i);
94
- });
95
-
96
- it('dispatches write to handlers.write with resolved args + scope', async () => {
97
- const handlers = makeWriteHandlers();
98
- const t = createArtifactTool({
99
- handlers,
100
- getScope: makeScope,
101
- });
102
- await t.invoke({ action: 'write', content: 'hello', name: 'doc.md' });
103
- expect(handlers.write).toHaveBeenCalledTimes(1);
104
- expect(handlers._calls[0].args).toEqual(
105
- expect.objectContaining({
106
- action: 'write',
107
- content: 'hello',
108
- name: 'doc.md',
109
- })
110
- );
111
- expect(handlers._calls[0].scope).toEqual(
112
- expect.objectContaining({ conversationId: 'conv-1' })
113
- );
114
- });
115
-
116
- it('rejects write without content', async () => {
117
- const handlers = makeWriteHandlers();
118
- const t = createArtifactTool({
119
- handlers,
120
- getScope: makeScope,
121
- });
122
- const result = await t.invoke({ action: 'write' });
123
- const text = Array.isArray(result) ? String(result[0]) : String(result);
124
- expect(text).toMatch(/write requires content/i);
125
- expect(handlers.write).not.toHaveBeenCalled();
126
- });
127
-
128
- it('rejects edit/verify/delete without content_id', async () => {
129
- const handlers = makeWriteHandlers();
130
- const t = createArtifactTool({
131
- handlers,
132
- getScope: makeScope,
133
- });
134
- const e = await t.invoke({ action: 'edit', old_str: 'a', new_str: 'b' });
135
- expect(String(Array.isArray(e) ? e[0] : e)).toMatch(
136
- /edit requires content_id/i
137
- );
138
- const v = await t.invoke({ action: 'verify' });
139
- expect(String(Array.isArray(v) ? v[0] : v)).toMatch(
140
- /verify requires content_id/i
141
- );
142
- const d = await t.invoke({ action: 'delete' });
143
- expect(String(Array.isArray(d) ? d[0] : d)).toMatch(
144
- /delete requires content_id/i
145
- );
146
- });
147
-
148
- it('applies the resolver before dispatching to handler', async () => {
149
- const handlers = makeWriteHandlers();
150
- const resolver: ContentIdResolver = {
151
- resolve: jest.fn(async (id) => ({
152
- resolvedId: `canonical:${id}`,
153
- resolvedName: 'X',
154
- })),
155
- };
156
- const t = createArtifactTool({
157
- handlers,
158
- getScope: makeScope,
159
- resolver,
160
- });
161
- await t.invoke({
162
- action: 'edit',
163
- content_id: 'nickname',
164
- old_str: 'a',
165
- new_str: 'b',
166
- });
167
- expect(handlers._calls[0].args).toEqual(
168
- expect.objectContaining({ content_id: 'canonical:nickname' })
169
- );
170
- });
171
-
172
- it('catches handler exceptions and returns them as tool errors', async () => {
173
- const handlers = makeWriteHandlers();
174
- handlers.write = jest.fn(async () => {
175
- throw new Error('s3 unavailable');
176
- });
177
- const t = createArtifactTool({
178
- handlers,
179
- getScope: makeScope,
180
- });
181
- const result = await t.invoke({ action: 'write', content: 'x' });
182
- const text = Array.isArray(result) ? String(result[0]) : String(result);
183
- expect(text).toMatch(/s3 unavailable/);
184
- });
185
-
186
- it('honors descriptionOverride for host-specific guidance', async () => {
187
- const handlers = makeWriteHandlers();
188
- const t = createArtifactTool({
189
- handlers,
190
- getScope: makeScope,
191
- descriptionOverride: 'HOST-BRAND-GUIDE',
192
- });
193
- expect(t.description).toBe('HOST-BRAND-GUIDE');
194
- });
195
- });
196
-
197
- describe('createContentReaderTool', () => {
198
- it('dispatches list with no content_id required', async () => {
199
- const handlers = makeReadHandlers();
200
- const t = createContentReaderTool({
201
- handlers,
202
- getScope: makeScope,
203
- });
204
- await t.invoke({ action: 'list' });
205
- expect(handlers.list).toHaveBeenCalledTimes(1);
206
- });
207
-
208
- it('rejects read/info/search without content_id', async () => {
209
- const handlers = makeReadHandlers();
210
- const t = createContentReaderTool({
211
- handlers,
212
- getScope: makeScope,
213
- });
214
- const r = await t.invoke({ action: 'read' });
215
- expect(String(Array.isArray(r) ? r[0] : r)).toMatch(
216
- /read requires content_id/i
217
- );
218
- const i = await t.invoke({ action: 'info' });
219
- expect(String(Array.isArray(i) ? i[0] : i)).toMatch(
220
- /info requires content_id/i
221
- );
222
- const s = await t.invoke({ action: 'search', pattern: 'p' });
223
- expect(String(Array.isArray(s) ? s[0] : s)).toMatch(
224
- /search requires content_id/i
225
- );
226
- });
227
-
228
- it('rejects search without pattern even when content_id is given', async () => {
229
- const handlers = makeReadHandlers();
230
- const t = createContentReaderTool({
231
- handlers,
232
- getScope: makeScope,
233
- });
234
- const result = await t.invoke({ action: 'search', content_id: 'x' });
235
- const text = Array.isArray(result) ? String(result[0]) : String(result);
236
- expect(text).toMatch(/search requires pattern/i);
237
- });
238
-
239
- it('passes read pagination args through to the handler', async () => {
240
- const handlers = makeReadHandlers();
241
- const t = createContentReaderTool({
242
- handlers,
243
- getScope: makeScope,
244
- });
245
- await t.invoke({
246
- action: 'read',
247
- content_id: 'c-1',
248
- start_line: 10,
249
- end_line: 50,
250
- });
251
- expect(handlers._calls[0].args).toEqual(
252
- expect.objectContaining({
253
- content_id: 'c-1',
254
- start_line: 10,
255
- end_line: 50,
256
- })
257
- );
258
- });
259
- });
@@ -1,33 +0,0 @@
1
- export {
2
- createArtifactTool,
3
- createContentReaderTool,
4
- ARTIFACT_TOOL_NAME,
5
- CONTENT_READER_NAME,
6
- ARTIFACT_WRITE_ACTIONS,
7
- CONTENT_READ_ACTIONS,
8
- } from './tool';
9
- export {
10
- artifactToolSchema,
11
- contentReaderSchema,
12
- type ArtifactToolInput,
13
- type ContentReaderInput,
14
- } from './schema';
15
- export type {
16
- ArtifactToolScope,
17
- ArtifactToolResult,
18
- ArtifactToolLogger,
19
- ArtifactToolBaseConfig,
20
- ArtifactToolConfig,
21
- ContentReaderToolConfig,
22
- ArtifactWriteHandlers,
23
- ContentReadHandlers,
24
- ContentIdResolver,
25
- WriteArgs,
26
- EditArgs,
27
- VerifyArgs,
28
- DeleteArgs,
29
- ReadArgs,
30
- SearchArgs,
31
- ListArgs,
32
- InfoArgs,
33
- } from './types';