@illuma-ai/agents 1.4.0-alpha.5 → 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 (769) 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 -117
  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/index.mjs.map +1 -0
  119. package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
  120. package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
  121. package/dist/esm/langchain/messages/tool.mjs +2 -0
  122. package/dist/esm/langchain/messages/tool.mjs.map +1 -0
  123. package/dist/esm/langchain/messages.mjs +2 -0
  124. package/dist/esm/langchain/messages.mjs.map +1 -0
  125. package/dist/esm/langchain/openai.mjs +2 -0
  126. package/dist/esm/langchain/openai.mjs.map +1 -0
  127. package/dist/esm/langchain/prompts.mjs +2 -0
  128. package/dist/esm/langchain/prompts.mjs.map +1 -0
  129. package/dist/esm/langchain/runnables.mjs +2 -0
  130. package/dist/esm/langchain/runnables.mjs.map +1 -0
  131. package/dist/esm/langchain/tools.mjs +2 -0
  132. package/dist/esm/langchain/tools.mjs.map +1 -0
  133. package/dist/esm/langchain/utils/env.mjs +2 -0
  134. package/dist/esm/langchain/utils/env.mjs.map +1 -0
  135. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
  136. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  137. package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
  138. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
  139. package/dist/esm/llm/bedrock/index.mjs +61 -34
  140. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  141. package/dist/esm/llm/openai/index.mjs +0 -3
  142. package/dist/esm/llm/openai/index.mjs.map +1 -1
  143. package/dist/esm/llm/openai/utils/index.mjs +27 -10
  144. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  145. package/dist/esm/main.mjs +21 -24
  146. package/dist/esm/main.mjs.map +1 -1
  147. package/dist/esm/messages/cache.mjs +89 -0
  148. package/dist/esm/messages/cache.mjs.map +1 -1
  149. package/dist/esm/messages/contextPruning.mjs +154 -0
  150. package/dist/esm/messages/contextPruning.mjs.map +1 -0
  151. package/dist/esm/messages/contextPruningSettings.mjs +50 -0
  152. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
  153. package/dist/esm/messages/format.mjs +136 -12
  154. package/dist/esm/messages/format.mjs.map +1 -1
  155. package/dist/esm/messages/prune.mjs +504 -7
  156. package/dist/esm/messages/prune.mjs.map +1 -1
  157. package/dist/esm/run.mjs +141 -1
  158. package/dist/esm/run.mjs.map +1 -1
  159. package/dist/esm/tools/BashExecutor.mjs +227 -0
  160. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  161. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
  162. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  163. package/dist/esm/tools/CodeExecutor.mjs +44 -48
  164. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  165. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
  166. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  167. package/dist/esm/tools/ReadFile.mjs +39 -0
  168. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  169. package/dist/esm/tools/SkillTool.mjs +46 -0
  170. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  171. package/dist/esm/tools/SubagentTool.mjs +86 -0
  172. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  173. package/dist/esm/tools/ToolNode.mjs +452 -26
  174. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  175. package/dist/esm/tools/search/search.mjs +11 -3
  176. package/dist/esm/tools/search/search.mjs.map +1 -1
  177. package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
  178. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
  179. package/dist/esm/tools/search/tavily-search.mjs +370 -0
  180. package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
  181. package/dist/esm/tools/search/tool.mjs +28 -4
  182. package/dist/esm/tools/search/tool.mjs.map +1 -1
  183. package/dist/esm/tools/search/utils.mjs +10 -3
  184. package/dist/esm/tools/search/utils.mjs.map +1 -1
  185. package/dist/esm/tools/skillCatalog.mjs +82 -0
  186. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  187. package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
  188. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  189. package/dist/esm/tools/toolOutputReferences.mjs +662 -0
  190. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
  191. package/dist/esm/types/agent-cache.mjs +51 -0
  192. package/dist/esm/types/agent-cache.mjs.map +1 -0
  193. package/dist/esm/types/graph.mjs.map +1 -1
  194. package/dist/esm/utils/truncation.mjs +128 -0
  195. package/dist/esm/utils/truncation.mjs.map +1 -0
  196. package/dist/types/agents/AgentContext.d.ts +101 -8
  197. package/dist/types/common/enum.d.ts +39 -12
  198. package/dist/types/common/index.d.ts +0 -1
  199. package/dist/types/graphs/Graph.d.ts +43 -0
  200. package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
  201. package/dist/types/graphs/index.d.ts +0 -1
  202. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  203. package/dist/types/hooks/executeHooks.d.ts +79 -0
  204. package/dist/types/hooks/index.d.ts +6 -0
  205. package/dist/types/hooks/matchers.d.ts +95 -0
  206. package/dist/types/hooks/types.d.ts +320 -0
  207. package/dist/types/index.d.ts +9 -4
  208. package/dist/types/langchain/google-common.d.ts +1 -0
  209. package/dist/types/langchain/index.d.ts +8 -0
  210. package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
  211. package/dist/types/langchain/messages/tool.d.ts +1 -0
  212. package/dist/types/langchain/messages.d.ts +2 -0
  213. package/dist/types/langchain/openai.d.ts +1 -0
  214. package/dist/types/langchain/prompts.d.ts +1 -0
  215. package/dist/types/langchain/runnables.d.ts +2 -0
  216. package/dist/types/langchain/tools.d.ts +2 -0
  217. package/dist/types/langchain/utils/env.d.ts +1 -0
  218. package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
  219. package/dist/types/llm/bedrock/index.d.ts +54 -1
  220. package/dist/types/messages/contextPruning.d.ts +42 -0
  221. package/dist/types/messages/contextPruningSettings.d.ts +44 -0
  222. package/dist/types/messages/format.d.ts +9 -1
  223. package/dist/types/messages/index.d.ts +2 -0
  224. package/dist/types/messages/prune.d.ts +91 -1
  225. package/dist/types/run.d.ts +2 -0
  226. package/dist/types/tools/BashExecutor.d.ts +76 -0
  227. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  228. package/dist/types/tools/CodeExecutor.d.ts +8 -26
  229. package/dist/types/tools/ReadFile.d.ts +28 -0
  230. package/dist/types/tools/SkillTool.d.ts +40 -0
  231. package/dist/types/tools/SubagentTool.d.ts +36 -0
  232. package/dist/types/tools/ToolNode.d.ts +77 -5
  233. package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
  234. package/dist/types/tools/search/tavily-search.d.ts +4 -0
  235. package/dist/types/tools/search/types.d.ts +99 -5
  236. package/dist/types/tools/search/utils.d.ts +2 -2
  237. package/dist/types/tools/skillCatalog.d.ts +19 -0
  238. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  239. package/dist/types/tools/subagent/index.d.ts +2 -0
  240. package/dist/types/tools/subagent/types.d.ts +84 -0
  241. package/dist/types/tools/toolOutputReferences.d.ts +236 -0
  242. package/dist/types/types/agent-cache.d.ts +70 -0
  243. package/dist/types/types/graph.d.ts +162 -22
  244. package/dist/types/types/index.d.ts +3 -0
  245. package/dist/types/types/messages.d.ts +26 -0
  246. package/dist/types/types/run.d.ts +22 -0
  247. package/dist/types/types/skill.d.ts +9 -0
  248. package/dist/types/types/tools.d.ts +111 -0
  249. package/dist/types/utils/index.d.ts +1 -3
  250. package/dist/types/utils/truncation.d.ts +70 -0
  251. package/package.json +58 -13
  252. package/src/agents/AgentContext.js.map +1 -0
  253. package/src/agents/AgentContext.test.js.map +1 -0
  254. package/src/agents/AgentContext.ts +321 -78
  255. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
  256. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +264 -0
  257. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
  258. package/src/agents/__tests__/AgentContext.test.js.map +1 -0
  259. package/src/agents/__tests__/AgentContext.test.ts +632 -0
  260. package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
  261. package/src/common/__tests__/enum.test.ts +7 -17
  262. package/src/common/enum.js.map +1 -0
  263. package/src/common/enum.ts +43 -12
  264. package/src/common/index.js.map +1 -0
  265. package/src/common/index.ts +0 -1
  266. package/src/events.js.map +1 -0
  267. package/src/graphs/Graph.js.map +1 -0
  268. package/src/graphs/Graph.ts +222 -2
  269. package/src/graphs/MultiAgentGraph.js.map +1 -0
  270. package/src/graphs/MultiAgentGraph.ts +154 -1466
  271. package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
  272. package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
  273. package/src/graphs/__tests__/structured-output.test.js.map +1 -0
  274. package/src/graphs/contextManagement.e2e.test.js.map +1 -0
  275. package/src/graphs/contextManagement.test.js.map +1 -0
  276. package/src/graphs/handoffValidation.test.js.map +1 -0
  277. package/src/graphs/index.js.map +1 -0
  278. package/src/graphs/index.ts +0 -1
  279. package/src/hooks/HookRegistry.ts +208 -0
  280. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  281. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  282. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  283. package/src/hooks/__tests__/integration.test.ts +337 -0
  284. package/src/hooks/__tests__/matchers.test.ts +238 -0
  285. package/src/hooks/__tests__/toolHooks.test.ts +665 -0
  286. package/src/hooks/executeHooks.ts +375 -0
  287. package/src/hooks/index.ts +57 -0
  288. package/src/hooks/matchers.ts +280 -0
  289. package/src/hooks/types.ts +404 -0
  290. package/src/index.js.map +1 -0
  291. package/src/index.ts +15 -5
  292. package/src/instrumentation.js.map +1 -0
  293. package/src/langchain/google-common.ts +1 -0
  294. package/src/langchain/index.ts +8 -0
  295. package/src/langchain/language_models/chat_models.ts +1 -0
  296. package/src/langchain/messages/tool.ts +5 -0
  297. package/src/langchain/messages.ts +21 -0
  298. package/src/langchain/openai.ts +1 -0
  299. package/src/langchain/prompts.ts +1 -0
  300. package/src/langchain/runnables.ts +7 -0
  301. package/src/langchain/tools.ts +8 -0
  302. package/src/langchain/utils/env.ts +1 -0
  303. package/src/llm/anthropic/index.js.map +1 -0
  304. package/src/llm/anthropic/types.js.map +1 -0
  305. package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
  306. package/src/llm/anthropic/utils/message_inputs.ts +10 -1
  307. package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
  308. package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
  309. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
  310. package/src/llm/anthropic/utils/tools.js.map +1 -0
  311. package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
  312. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
  313. package/src/llm/bedrock/cacheSupport.test.ts +99 -0
  314. package/src/llm/bedrock/cacheSupport.ts +53 -0
  315. package/src/llm/bedrock/index.js.map +1 -0
  316. package/src/llm/bedrock/index.ts +116 -41
  317. package/src/llm/bedrock/types.js.map +1 -0
  318. package/src/llm/bedrock/utils/index.js.map +1 -0
  319. package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
  320. package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
  321. package/src/llm/fake.js.map +1 -0
  322. package/src/llm/google/index.js.map +1 -0
  323. package/src/llm/google/types.js.map +1 -0
  324. package/src/llm/google/utils/common.js.map +1 -0
  325. package/src/llm/google/utils/tools.js.map +1 -0
  326. package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
  327. package/src/llm/openai/index.js.map +1 -0
  328. package/src/llm/openai/types.js.map +1 -0
  329. package/src/llm/openai/utils/index.js.map +1 -0
  330. package/src/llm/openai/utils/index.ts +31 -14
  331. package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
  332. package/src/llm/openrouter/index.js.map +1 -0
  333. package/src/llm/openrouter/reasoning.test.js.map +1 -0
  334. package/src/llm/providers.js.map +1 -0
  335. package/src/llm/text.js.map +1 -0
  336. package/src/llm/vertexai/index.js.map +1 -0
  337. package/src/messages/__tests__/contextPruning.test.ts +228 -0
  338. package/src/messages/__tests__/tools.test.js.map +1 -0
  339. package/src/messages/cache.js.map +1 -0
  340. package/src/messages/cache.test.js.map +1 -0
  341. package/src/messages/cache.test.ts +62 -24
  342. package/src/messages/cache.ts +112 -0
  343. package/src/messages/content.js.map +1 -0
  344. package/src/messages/content.test.js.map +1 -0
  345. package/src/messages/contextPruning.ts +191 -0
  346. package/src/messages/contextPruningSettings.ts +90 -0
  347. package/src/messages/core.js.map +1 -0
  348. package/src/messages/ensureThinkingBlock.test.js.map +1 -0
  349. package/src/messages/format.js.map +1 -0
  350. package/src/messages/format.ts +164 -12
  351. package/src/messages/formatAgentMessages.skills.test.ts +413 -0
  352. package/src/messages/formatAgentMessages.test.js.map +1 -0
  353. package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
  354. package/src/messages/formatMessage.test.js.map +1 -0
  355. package/src/messages/ids.js.map +1 -0
  356. package/src/messages/index.js.map +1 -0
  357. package/src/messages/index.ts +2 -0
  358. package/src/messages/labelContentByAgent.test.js.map +1 -0
  359. package/src/messages/prune.js.map +1 -0
  360. package/src/messages/prune.ts +661 -4
  361. package/src/messages/reducer.js.map +1 -0
  362. package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
  363. package/src/messages/summarize.js.map +1 -0
  364. package/src/messages/summarize.test.js.map +1 -0
  365. package/src/messages/tools.js.map +1 -0
  366. package/src/mockStream.js.map +1 -0
  367. package/src/prompts/collab.js.map +1 -0
  368. package/src/prompts/index.js.map +1 -0
  369. package/src/prompts/taskmanager.js.map +1 -0
  370. package/src/run.js.map +1 -0
  371. package/src/run.ts +155 -1
  372. package/src/schemas/index.js.map +1 -0
  373. package/src/schemas/schema-preparation.test.js.map +1 -0
  374. package/src/schemas/validate.js.map +1 -0
  375. package/src/schemas/validate.test.js.map +1 -0
  376. package/src/scripts/abort.js.map +1 -0
  377. package/src/scripts/ant_web_search.js.map +1 -0
  378. package/src/scripts/ant_web_search_edge_case.js.map +1 -0
  379. package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
  380. package/src/scripts/args.js.map +1 -0
  381. package/src/scripts/bedrock-cache-debug.js.map +1 -0
  382. package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
  383. package/src/scripts/bedrock-merge-test.js.map +1 -0
  384. package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
  385. package/src/scripts/caching.js.map +1 -0
  386. package/src/scripts/cli.js.map +1 -0
  387. package/src/scripts/cli2.js.map +1 -0
  388. package/src/scripts/cli3.js.map +1 -0
  389. package/src/scripts/cli4.js.map +1 -0
  390. package/src/scripts/cli5.js.map +1 -0
  391. package/src/scripts/code_exec.js.map +1 -0
  392. package/src/scripts/code_exec_files.js.map +1 -0
  393. package/src/scripts/code_exec_multi_session.js.map +1 -0
  394. package/src/scripts/code_exec_ptc.js.map +1 -0
  395. package/src/scripts/code_exec_session.js.map +1 -0
  396. package/src/scripts/code_exec_simple.js.map +1 -0
  397. package/src/scripts/content.js.map +1 -0
  398. package/src/scripts/empty_input.js.map +1 -0
  399. package/src/scripts/handoff-test.js.map +1 -0
  400. package/src/scripts/image.js.map +1 -0
  401. package/src/scripts/memory.js.map +1 -0
  402. package/src/scripts/multi-agent-chain.js.map +1 -0
  403. package/src/scripts/multi-agent-chain.ts +2 -2
  404. package/src/scripts/multi-agent-conditional.js.map +1 -0
  405. package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
  406. package/src/scripts/multi-agent-document-review-chain.ts +2 -2
  407. package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
  408. package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
  409. package/src/scripts/multi-agent-parallel-start.js.map +1 -0
  410. package/src/scripts/multi-agent-parallel.js.map +1 -0
  411. package/src/scripts/multi-agent-parallel.ts +3 -3
  412. package/src/scripts/multi-agent-sequence.js.map +1 -0
  413. package/src/scripts/multi-agent-sequence.ts +3 -3
  414. package/src/scripts/multi-agent-subagent.ts +246 -0
  415. package/src/scripts/multi-agent-supervisor.js.map +1 -0
  416. package/src/scripts/multi-agent-supervisor.ts +5 -5
  417. package/src/scripts/multi-agent-test.js.map +1 -0
  418. package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
  419. package/src/scripts/parallel-full-metadata-test.js.map +1 -0
  420. package/src/scripts/parallel-tools-test.js.map +1 -0
  421. package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
  422. package/src/scripts/programmatic_exec.js.map +1 -0
  423. package/src/scripts/programmatic_exec_agent.js.map +1 -0
  424. package/src/scripts/search.js.map +1 -0
  425. package/src/scripts/sequential-full-metadata-test.js.map +1 -0
  426. package/src/scripts/sequential-full-metadata-test.ts +2 -2
  427. package/src/scripts/simple.js.map +1 -0
  428. package/src/scripts/single-agent-metadata-test.js.map +1 -0
  429. package/src/scripts/stream.js.map +1 -0
  430. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  431. package/src/scripts/subagent-tools-debug.ts +160 -0
  432. package/src/scripts/test-custom-prompt-key.js.map +1 -0
  433. package/src/scripts/test-custom-prompt-key.ts +3 -3
  434. package/src/scripts/test-handoff-input.js.map +1 -0
  435. package/src/scripts/test-handoff-input.ts +1 -1
  436. package/src/scripts/test-handoff-preamble.js.map +1 -0
  437. package/src/scripts/test-handoff-steering.js.map +1 -0
  438. package/src/scripts/test-handoff-steering.ts +3 -3
  439. package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
  440. package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
  441. package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
  442. package/src/scripts/test-parallel-agent-labeling.ts +3 -3
  443. package/src/scripts/test-parallel-handoffs.js.map +1 -0
  444. package/src/scripts/test-parallel-handoffs.ts +2 -2
  445. package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
  446. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
  447. package/src/scripts/test-thinking-handoff.js.map +1 -0
  448. package/src/scripts/test-thinking-handoff.ts +1 -1
  449. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
  450. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
  451. package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
  452. package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
  453. package/src/scripts/test-tools-before-handoff.js.map +1 -0
  454. package/src/scripts/test-tools-before-handoff.ts +1 -1
  455. package/src/scripts/test_code_api.js.map +1 -0
  456. package/src/scripts/thinking-bedrock.js.map +1 -0
  457. package/src/scripts/thinking-vertexai.js.map +1 -0
  458. package/src/scripts/thinking.js.map +1 -0
  459. package/src/scripts/tool_search.js.map +1 -0
  460. package/src/scripts/tools.js.map +1 -0
  461. package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
  462. package/src/specs/agent-handoffs.test.js.map +1 -0
  463. package/src/specs/agent-handoffs.test.ts +26 -483
  464. package/src/specs/anthropic.simple.test.js.map +1 -0
  465. package/src/specs/anthropic.simple.test.ts +61 -0
  466. package/src/specs/azure.simple.test.js.map +1 -0
  467. package/src/specs/cache.simple.test.js.map +1 -0
  468. package/src/specs/custom-event-await.test.js.map +1 -0
  469. package/src/specs/deepseek.simple.test.js.map +1 -0
  470. package/src/specs/emergency-prune.test.js.map +1 -0
  471. package/src/specs/moonshot.simple.test.js.map +1 -0
  472. package/src/specs/multi-agent-summarization.test.ts +396 -0
  473. package/src/specs/observability.integration.test.js.map +1 -0
  474. package/src/specs/openai.simple.test.js.map +1 -0
  475. package/src/specs/openrouter.simple.test.js.map +1 -0
  476. package/src/specs/prune.orphans.test.ts +248 -0
  477. package/src/specs/prune.test.js.map +1 -0
  478. package/src/specs/prune.test.ts +104 -16
  479. package/src/specs/reasoning.test.js.map +1 -0
  480. package/src/specs/spec.utils.js.map +1 -0
  481. package/src/specs/thinking-handoff.test.js.map +1 -0
  482. package/src/specs/thinking-handoff.test.ts +19 -19
  483. package/src/specs/thinking-prune.test.js.map +1 -0
  484. package/src/specs/token-distribution-edge-case.test.js.map +1 -0
  485. package/src/specs/token-memoization.test.js.map +1 -0
  486. package/src/specs/tokens.test.js.map +1 -0
  487. package/src/specs/tool-error.test.js.map +1 -0
  488. package/src/splitStream.js.map +1 -0
  489. package/src/splitStream.test.js.map +1 -0
  490. package/src/stream.js.map +1 -0
  491. package/src/stream.test.js.map +1 -0
  492. package/src/test/mockTools.js.map +1 -0
  493. package/src/tools/BashExecutor.ts +281 -0
  494. package/src/tools/BashProgrammaticToolCalling.ts +397 -0
  495. package/src/tools/BrowserTools.js.map +1 -0
  496. package/src/tools/Calculator.js.map +1 -0
  497. package/src/tools/Calculator.test.js.map +1 -0
  498. package/src/tools/CodeExecutor.js.map +1 -0
  499. package/src/tools/CodeExecutor.ts +62 -54
  500. package/src/tools/ProgrammaticToolCalling.js.map +1 -0
  501. package/src/tools/ProgrammaticToolCalling.ts +29 -14
  502. package/src/tools/ReadFile.ts +39 -0
  503. package/src/tools/SkillTool.ts +46 -0
  504. package/src/tools/StreamingToolCallBuffer.js.map +1 -0
  505. package/src/tools/SubagentTool.ts +100 -0
  506. package/src/tools/ToolNode.js.map +1 -0
  507. package/src/tools/ToolNode.ts +548 -26
  508. package/src/tools/ToolSearch.js.map +1 -0
  509. package/src/tools/__tests__/BashExecutor.test.ts +49 -0
  510. package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
  511. package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
  512. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
  513. package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
  514. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
  515. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  516. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  517. package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
  518. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  519. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  520. package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
  521. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
  522. package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
  523. package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
  524. package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
  525. package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
  526. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
  527. package/src/tools/__tests__/handlers.test.js.map +1 -0
  528. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  529. package/src/tools/__tests__/subagentHooks.test.ts +210 -0
  530. package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
  531. package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
  532. package/src/tools/handlers.js.map +1 -0
  533. package/src/tools/schema.js.map +1 -0
  534. package/src/tools/search/anthropic.js.map +1 -0
  535. package/src/tools/search/content.js.map +1 -0
  536. package/src/tools/search/content.test.js.map +1 -0
  537. package/src/tools/search/firecrawl.js.map +1 -0
  538. package/src/tools/search/format.js.map +1 -0
  539. package/src/tools/search/highlights.js.map +1 -0
  540. package/src/tools/search/index.js.map +1 -0
  541. package/src/tools/search/jina-reranker.test.js.map +1 -0
  542. package/src/tools/search/rerankers.js.map +1 -0
  543. package/src/tools/search/schema.js.map +1 -0
  544. package/src/tools/search/search.js.map +1 -0
  545. package/src/tools/search/search.ts +12 -2
  546. package/src/tools/search/serper-scraper.js.map +1 -0
  547. package/src/tools/search/tavily-scraper.ts +235 -0
  548. package/src/tools/search/tavily-search.ts +424 -0
  549. package/src/tools/search/tavily.test.ts +965 -0
  550. package/src/tools/search/test.js.map +1 -0
  551. package/src/tools/search/tool.js.map +1 -0
  552. package/src/tools/search/tool.ts +36 -2
  553. package/src/tools/search/types.js.map +1 -0
  554. package/src/tools/search/types.ts +133 -8
  555. package/src/tools/search/utils.js.map +1 -0
  556. package/src/tools/search/utils.ts +13 -5
  557. package/src/tools/skillCatalog.ts +126 -0
  558. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  559. package/src/tools/subagent/index.ts +13 -0
  560. package/src/tools/subagent/types.test.ts +70 -0
  561. package/src/tools/subagent/types.ts +115 -0
  562. package/src/tools/toolOutputReferences.ts +825 -0
  563. package/src/types/agent-cache.ts +73 -0
  564. package/src/types/graph.js.map +1 -0
  565. package/src/types/graph.test.js.map +1 -0
  566. package/src/types/graph.ts +171 -20
  567. package/src/types/index.js.map +1 -0
  568. package/src/types/index.ts +3 -0
  569. package/src/types/llm.js.map +1 -0
  570. package/src/types/messages.js.map +1 -0
  571. package/src/types/messages.ts +27 -0
  572. package/src/types/run.js.map +1 -0
  573. package/src/types/run.ts +22 -0
  574. package/src/types/skill.ts +11 -0
  575. package/src/types/stream.js.map +1 -0
  576. package/src/types/tools.js.map +1 -0
  577. package/src/types/tools.ts +118 -0
  578. package/src/utils/__tests__/truncation.test.ts +66 -0
  579. package/src/utils/contextAnalytics.js.map +1 -0
  580. package/src/utils/contextAnalytics.test.js.map +1 -0
  581. package/src/utils/events.js.map +1 -0
  582. package/src/utils/graph.js.map +1 -0
  583. package/src/utils/handlers.js.map +1 -0
  584. package/src/utils/index.js.map +1 -0
  585. package/src/utils/index.ts +1 -3
  586. package/src/utils/llm.js.map +1 -0
  587. package/src/utils/llmConfig.js.map +1 -0
  588. package/src/utils/logging.js.map +1 -0
  589. package/src/utils/misc.js.map +1 -0
  590. package/src/utils/run.js.map +1 -0
  591. package/src/utils/schema.js.map +1 -0
  592. package/src/utils/title.js.map +1 -0
  593. package/src/utils/tokens.js.map +1 -0
  594. package/src/utils/toonFormat.js.map +1 -0
  595. package/src/utils/truncation.ts +154 -0
  596. package/dist/cjs/common/spawnPath.cjs +0 -104
  597. package/dist/cjs/common/spawnPath.cjs.map +0 -1
  598. package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
  599. package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
  600. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
  601. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
  602. package/dist/cjs/providers/a2a/client.cjs +0 -92
  603. package/dist/cjs/providers/a2a/client.cjs.map +0 -1
  604. package/dist/cjs/providers/a2a/config.cjs +0 -38
  605. package/dist/cjs/providers/a2a/config.cjs.map +0 -1
  606. package/dist/cjs/providers/capabilityNaming.cjs +0 -43
  607. package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
  608. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
  609. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
  610. package/dist/cjs/providers/mcp/config.cjs +0 -42
  611. package/dist/cjs/providers/mcp/config.cjs.map +0 -1
  612. package/dist/cjs/providers/mcp/transport.cjs +0 -65
  613. package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
  614. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
  615. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
  616. package/dist/cjs/providers/types.cjs +0 -51
  617. package/dist/cjs/providers/types.cjs.map +0 -1
  618. package/dist/cjs/tools/artifacts/schema.cjs +0 -86
  619. package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
  620. package/dist/cjs/tools/artifacts/tool.cjs +0 -219
  621. package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
  622. package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
  623. package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
  624. package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
  625. package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
  626. package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
  627. package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
  628. package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
  629. package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
  630. package/dist/cjs/tools/proxyTool.cjs +0 -102
  631. package/dist/cjs/tools/proxyTool.cjs.map +0 -1
  632. package/dist/cjs/utils/childAgentContext.cjs +0 -242
  633. package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
  634. package/dist/cjs/utils/credentials.cjs +0 -142
  635. package/dist/cjs/utils/credentials.cjs.map +0 -1
  636. package/dist/cjs/utils/httpClient.cjs +0 -74
  637. package/dist/cjs/utils/httpClient.cjs.map +0 -1
  638. package/dist/cjs/utils/toolManifest.cjs +0 -100
  639. package/dist/cjs/utils/toolManifest.cjs.map +0 -1
  640. package/dist/esm/common/spawnPath.mjs +0 -95
  641. package/dist/esm/common/spawnPath.mjs.map +0 -1
  642. package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
  643. package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
  644. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
  645. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
  646. package/dist/esm/providers/a2a/client.mjs +0 -88
  647. package/dist/esm/providers/a2a/client.mjs.map +0 -1
  648. package/dist/esm/providers/a2a/config.mjs +0 -35
  649. package/dist/esm/providers/a2a/config.mjs.map +0 -1
  650. package/dist/esm/providers/capabilityNaming.mjs +0 -39
  651. package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
  652. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
  653. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
  654. package/dist/esm/providers/mcp/config.mjs +0 -39
  655. package/dist/esm/providers/mcp/config.mjs.map +0 -1
  656. package/dist/esm/providers/mcp/transport.mjs +0 -63
  657. package/dist/esm/providers/mcp/transport.mjs.map +0 -1
  658. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
  659. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
  660. package/dist/esm/providers/types.mjs +0 -51
  661. package/dist/esm/providers/types.mjs.map +0 -1
  662. package/dist/esm/tools/artifacts/schema.mjs +0 -79
  663. package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
  664. package/dist/esm/tools/artifacts/tool.mjs +0 -213
  665. package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
  666. package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
  667. package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
  668. package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
  669. package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
  670. package/dist/esm/tools/fileSearch/schema.mjs +0 -15
  671. package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
  672. package/dist/esm/tools/fileSearch/tool.mjs +0 -152
  673. package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
  674. package/dist/esm/tools/proxyTool.mjs +0 -100
  675. package/dist/esm/tools/proxyTool.mjs.map +0 -1
  676. package/dist/esm/utils/childAgentContext.mjs +0 -237
  677. package/dist/esm/utils/childAgentContext.mjs.map +0 -1
  678. package/dist/esm/utils/credentials.mjs +0 -135
  679. package/dist/esm/utils/credentials.mjs.map +0 -1
  680. package/dist/esm/utils/httpClient.mjs +0 -70
  681. package/dist/esm/utils/httpClient.mjs.map +0 -1
  682. package/dist/esm/utils/toolManifest.mjs +0 -96
  683. package/dist/esm/utils/toolManifest.mjs.map +0 -1
  684. package/dist/types/common/spawnPath.d.ts +0 -59
  685. package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
  686. package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
  687. package/dist/types/providers/a2a/client.d.ts +0 -47
  688. package/dist/types/providers/a2a/config.d.ts +0 -18
  689. package/dist/types/providers/a2a/index.d.ts +0 -6
  690. package/dist/types/providers/a2a/types.d.ts +0 -173
  691. package/dist/types/providers/capabilityNaming.d.ts +0 -25
  692. package/dist/types/providers/index.d.ts +0 -12
  693. package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
  694. package/dist/types/providers/mcp/config.d.ts +0 -20
  695. package/dist/types/providers/mcp/index.d.ts +0 -5
  696. package/dist/types/providers/mcp/transport.d.ts +0 -18
  697. package/dist/types/providers/mcp/types.d.ts +0 -112
  698. package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
  699. package/dist/types/providers/tools-server/index.d.ts +0 -1
  700. package/dist/types/providers/types.d.ts +0 -184
  701. package/dist/types/tools/artifacts/index.d.ts +0 -3
  702. package/dist/types/tools/artifacts/schema.d.ts +0 -63
  703. package/dist/types/tools/artifacts/tool.d.ts +0 -16
  704. package/dist/types/tools/artifacts/types.d.ts +0 -127
  705. package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
  706. package/dist/types/tools/fileSearch/index.d.ts +0 -5
  707. package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
  708. package/dist/types/tools/fileSearch/schema.d.ts +0 -13
  709. package/dist/types/tools/fileSearch/tool.d.ts +0 -18
  710. package/dist/types/tools/fileSearch/types.d.ts +0 -139
  711. package/dist/types/tools/proxyTool.d.ts +0 -62
  712. package/dist/types/utils/childAgentContext.d.ts +0 -99
  713. package/dist/types/utils/credentials.d.ts +0 -77
  714. package/dist/types/utils/httpClient.d.ts +0 -46
  715. package/dist/types/utils/toolManifest.d.ts +0 -49
  716. package/src/common/__tests__/spawnPath.test.ts +0 -110
  717. package/src/common/spawnPath.ts +0 -101
  718. package/src/graphs/HandoffRegistry.ts +0 -199
  719. package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
  720. package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
  721. package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
  722. package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
  723. package/src/graphs/handoffValidation.test.ts +0 -353
  724. package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
  725. package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -269
  726. package/src/providers/__tests__/types.test.ts +0 -64
  727. package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
  728. package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
  729. package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
  730. package/src/providers/a2a/client.ts +0 -115
  731. package/src/providers/a2a/config.ts +0 -40
  732. package/src/providers/a2a/index.ts +0 -29
  733. package/src/providers/a2a/types.ts +0 -191
  734. package/src/providers/capabilityNaming.ts +0 -42
  735. package/src/providers/index.ts +0 -68
  736. package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
  737. package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
  738. package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
  739. package/src/providers/mcp/config.ts +0 -45
  740. package/src/providers/mcp/index.ts +0 -21
  741. package/src/providers/mcp/transport.ts +0 -76
  742. package/src/providers/mcp/types.ts +0 -139
  743. package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -248
  744. package/src/providers/tools-server/index.ts +0 -1
  745. package/src/providers/types.ts +0 -204
  746. package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
  747. package/src/scripts/test-handoff-preamble.ts +0 -278
  748. package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
  749. package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
  750. package/src/tools/artifacts/index.ts +0 -33
  751. package/src/tools/artifacts/schema.ts +0 -99
  752. package/src/tools/artifacts/tool.ts +0 -289
  753. package/src/tools/artifacts/types.ts +0 -162
  754. package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
  755. package/src/tools/fileSearch/formatter.ts +0 -129
  756. package/src/tools/fileSearch/index.ts +0 -23
  757. package/src/tools/fileSearch/ragClient.ts +0 -137
  758. package/src/tools/fileSearch/schema.ts +0 -19
  759. package/src/tools/fileSearch/tool.ts +0 -207
  760. package/src/tools/fileSearch/types.ts +0 -149
  761. package/src/tools/proxyTool.ts +0 -166
  762. package/src/utils/__tests__/childAgentContext.test.ts +0 -217
  763. package/src/utils/__tests__/credentials.test.ts +0 -130
  764. package/src/utils/__tests__/httpClient.test.ts +0 -75
  765. package/src/utils/__tests__/toolManifest.test.ts +0 -116
  766. package/src/utils/childAgentContext.ts +0 -259
  767. package/src/utils/credentials.ts +0 -157
  768. package/src/utils/httpClient.ts +0 -92
  769. package/src/utils/toolManifest.ts +0 -109
@@ -1,135 +0,0 @@
1
- import { AuthSource } from '../providers/types.mjs';
2
-
3
- /**
4
- * Credential merging utility for capability providers.
5
- *
6
- * The host is the source of truth for credential values. It resolves them
7
- * from env vars, user settings, or active OAuth sessions, then passes a
8
- * flat CredentialMap to the provider.
9
- *
10
- * This utility helps hosts build that map from multiple sources with clear
11
- * precedence rules. Providers themselves do NOT use this — they just receive
12
- * the finished map.
13
- */
14
- /**
15
- * Source of a credential value in the merged result. Useful for logging
16
- * and debugging which layer won a given authField.
17
- */
18
- var CredentialOrigin;
19
- (function (CredentialOrigin) {
20
- /** From the caller's process env (typically the CLI). */
21
- CredentialOrigin["ENV"] = "env";
22
- /** From the agent definition's tool_credentials block. */
23
- CredentialOrigin["AGENT"] = "agent";
24
- /** From the user's stored credentials in the host's credential store. */
25
- CredentialOrigin["USER"] = "user";
26
- /** From an active OAuth session forwarded by the host. */
27
- CredentialOrigin["SESSION"] = "session";
28
- /** Injected by the host at runtime for another reason. */
29
- CredentialOrigin["RUNTIME"] = "runtime";
30
- })(CredentialOrigin || (CredentialOrigin = {}));
31
- /**
32
- * Merge credential layers with earlier layers overriding later ones.
33
- *
34
- * Typical host flow (in order of precedence):
35
- * 1. runtime overrides (e.g., test injection) → RUNTIME
36
- * 2. active OAuth session tokens → SESSION
37
- * 3. agent-defined tool_credentials → AGENT
38
- * 4. user's stored credentials → USER
39
- * 5. process env → ENV
40
- *
41
- * Caller passes layers in precedence order (highest first).
42
- */
43
- function mergeCredentials(...layers) {
44
- const merged = {};
45
- // Iterate reverse so first-declared layer wins on collision.
46
- for (let i = layers.length - 1; i >= 0; i--) {
47
- const layer = layers[i];
48
- for (const [key, value] of Object.entries(layer.values)) {
49
- if (value !== undefined && value !== null && value !== '') {
50
- merged[key] = value;
51
- }
52
- }
53
- }
54
- return merged;
55
- }
56
- /**
57
- * Given a set of capabilities, return the union of authField names they
58
- * require. Useful for hosts that want to pre-resolve credentials before
59
- * calling createRunnables.
60
- */
61
- function collectRequiredAuthFields(capabilities) {
62
- const fields = new Set();
63
- for (const cap of capabilities) {
64
- for (const entry of cap.authConfig) {
65
- fields.add(entry.authField);
66
- }
67
- }
68
- return Array.from(fields);
69
- }
70
- /**
71
- * Filter out credentials that the provider is expected to resolve itself
72
- * (source === SERVER). Hosts call this before forwarding — these values
73
- * live in the provider's own environment and shouldn't be sent.
74
- *
75
- * Precedence: entries without `source` default to USER (must be forwarded).
76
- */
77
- function filterForwardableCredentials(credentials, capabilities) {
78
- const serverManagedFields = new Set();
79
- for (const cap of capabilities) {
80
- for (const entry of cap.authConfig) {
81
- if (entry.source === AuthSource.SERVER) {
82
- serverManagedFields.add(entry.authField);
83
- }
84
- }
85
- }
86
- const forwardable = {};
87
- for (const [key, value] of Object.entries(credentials)) {
88
- if (!serverManagedFields.has(key)) {
89
- forwardable[key] = value;
90
- }
91
- }
92
- return forwardable;
93
- }
94
- /**
95
- * Validate that all required credentials for a capability are present in
96
- * the provided map. Returns the list of missing authFields (empty array
97
- * if all satisfied). Credentials with `source === SERVER` are excluded
98
- * from the check since the provider resolves them.
99
- */
100
- function findMissingCredentials(capability, credentials) {
101
- const missing = [];
102
- for (const entry of capability.authConfig) {
103
- if (entry.source === AuthSource.SERVER)
104
- continue;
105
- if (!entry.required)
106
- continue;
107
- if (!credentials[entry.authField]) {
108
- missing.push(entry.authField);
109
- }
110
- }
111
- return missing;
112
- }
113
- /**
114
- * Build a CredentialLayer from process env given a list of authField names.
115
- * Values that aren't set in env are omitted (not set to empty string).
116
- */
117
- function credentialsFromEnv(authFields, env = process.env) {
118
- const values = {};
119
- for (const field of authFields) {
120
- const value = env[field];
121
- if (value)
122
- values[field] = value;
123
- }
124
- return { origin: CredentialOrigin.ENV, values };
125
- }
126
- /**
127
- * Type guard: check whether an auth config entry should be forwarded by
128
- * the host (vs resolved by the provider itself).
129
- */
130
- function isForwardable(entry) {
131
- return entry.source !== AuthSource.SERVER;
132
- }
133
-
134
- export { CredentialOrigin, collectRequiredAuthFields, credentialsFromEnv, filterForwardableCredentials, findMissingCredentials, isForwardable, mergeCredentials };
135
- //# sourceMappingURL=credentials.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.mjs","sources":["../../../src/utils/credentials.ts"],"sourcesContent":["/**\n * Credential merging utility for capability providers.\n *\n * The host is the source of truth for credential values. It resolves them\n * from env vars, user settings, or active OAuth sessions, then passes a\n * flat CredentialMap to the provider.\n *\n * This utility helps hosts build that map from multiple sources with clear\n * precedence rules. Providers themselves do NOT use this — they just receive\n * the finished map.\n */\n\nimport type {\n AuthConfigEntry,\n Capability,\n CredentialMap,\n} from '@/providers/types';\nimport { AuthSource } from '@/providers/types';\n\n/**\n * Source of a credential value in the merged result. Useful for logging\n * and debugging which layer won a given authField.\n */\nexport enum CredentialOrigin {\n /** From the caller's process env (typically the CLI). */\n ENV = 'env',\n /** From the agent definition's tool_credentials block. */\n AGENT = 'agent',\n /** From the user's stored credentials in the host's credential store. */\n USER = 'user',\n /** From an active OAuth session forwarded by the host. */\n SESSION = 'session',\n /** Injected by the host at runtime for another reason. */\n RUNTIME = 'runtime',\n}\n\n/** One layer of credentials with its origin. */\nexport interface CredentialLayer {\n origin: CredentialOrigin;\n values: CredentialMap;\n}\n\n/**\n * Merge credential layers with earlier layers overriding later ones.\n *\n * Typical host flow (in order of precedence):\n * 1. runtime overrides (e.g., test injection) → RUNTIME\n * 2. active OAuth session tokens → SESSION\n * 3. agent-defined tool_credentials → AGENT\n * 4. user's stored credentials → USER\n * 5. process env → ENV\n *\n * Caller passes layers in precedence order (highest first).\n */\nexport function mergeCredentials(...layers: CredentialLayer[]): CredentialMap {\n const merged: CredentialMap = {};\n // Iterate reverse so first-declared layer wins on collision.\n for (let i = layers.length - 1; i >= 0; i--) {\n const layer = layers[i];\n for (const [key, value] of Object.entries(layer.values)) {\n if (value !== undefined && value !== null && value !== '') {\n merged[key] = value;\n }\n }\n }\n return merged;\n}\n\n/**\n * Given a set of capabilities, return the union of authField names they\n * require. Useful for hosts that want to pre-resolve credentials before\n * calling createRunnables.\n */\nexport function collectRequiredAuthFields(\n capabilities: Capability[]\n): string[] {\n const fields = new Set<string>();\n for (const cap of capabilities) {\n for (const entry of cap.authConfig) {\n fields.add(entry.authField);\n }\n }\n return Array.from(fields);\n}\n\n/**\n * Filter out credentials that the provider is expected to resolve itself\n * (source === SERVER). Hosts call this before forwarding — these values\n * live in the provider's own environment and shouldn't be sent.\n *\n * Precedence: entries without `source` default to USER (must be forwarded).\n */\nexport function filterForwardableCredentials(\n credentials: CredentialMap,\n capabilities: Capability[]\n): CredentialMap {\n const serverManagedFields = new Set<string>();\n for (const cap of capabilities) {\n for (const entry of cap.authConfig) {\n if (entry.source === AuthSource.SERVER) {\n serverManagedFields.add(entry.authField);\n }\n }\n }\n const forwardable: CredentialMap = {};\n for (const [key, value] of Object.entries(credentials)) {\n if (!serverManagedFields.has(key)) {\n forwardable[key] = value;\n }\n }\n return forwardable;\n}\n\n/**\n * Validate that all required credentials for a capability are present in\n * the provided map. Returns the list of missing authFields (empty array\n * if all satisfied). Credentials with `source === SERVER` are excluded\n * from the check since the provider resolves them.\n */\nexport function findMissingCredentials(\n capability: Capability,\n credentials: CredentialMap\n): string[] {\n const missing: string[] = [];\n for (const entry of capability.authConfig) {\n if (entry.source === AuthSource.SERVER) continue;\n if (!entry.required) continue;\n if (!credentials[entry.authField]) {\n missing.push(entry.authField);\n }\n }\n return missing;\n}\n\n/**\n * Build a CredentialLayer from process env given a list of authField names.\n * Values that aren't set in env are omitted (not set to empty string).\n */\nexport function credentialsFromEnv(\n authFields: readonly string[],\n env: NodeJS.ProcessEnv = process.env\n): CredentialLayer {\n const values: CredentialMap = {};\n for (const field of authFields) {\n const value = env[field];\n if (value) values[field] = value;\n }\n return { origin: CredentialOrigin.ENV, values };\n}\n\n/**\n * Type guard: check whether an auth config entry should be forwarded by\n * the host (vs resolved by the provider itself).\n */\nexport function isForwardable(entry: AuthConfigEntry): boolean {\n return entry.source !== AuthSource.SERVER;\n}\n"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import axios from 'axios';
2
- import { HttpsProxyAgent } from 'https-proxy-agent';
3
-
4
- /**
5
- * HTTP client utility for capability providers.
6
- *
7
- * Wraps axios with proxy support, default headers, and consistent retry
8
- * behavior so every provider doesn't reinvent the wheel. Used by
9
- * ToolsServerCapabilityProvider and (future) any HTTP-backed provider.
10
- *
11
- * Proxy resolution follows the existing pattern in this codebase:
12
- * the PROXY env var is read and an HttpsProxyAgent is attached if present.
13
- */
14
- /**
15
- * Build an axios instance configured per HttpClientConfig.
16
- *
17
- * The returned instance should be retained (not recreated per request) so
18
- * keepalive connections can be reused.
19
- */
20
- function createHttpClient(config) {
21
- const { baseURL, apiKey, headers = {}, timeoutMs = 30_000, proxy } = config;
22
- const resolvedProxy = proxy === undefined ? process.env.PROXY : proxy;
23
- const defaultHeaders = {
24
- 'content-type': 'application/json',
25
- ...headers,
26
- };
27
- if (apiKey) {
28
- defaultHeaders['x-api-key'] = apiKey;
29
- }
30
- const axiosConfig = {
31
- baseURL,
32
- timeout: timeoutMs,
33
- headers: defaultHeaders,
34
- // Don't throw on non-2xx — callers handle status codes explicitly.
35
- validateStatus: () => true,
36
- };
37
- if (resolvedProxy) {
38
- // axios respects `httpsAgent` for outbound proxying
39
- axiosConfig.httpsAgent = new HttpsProxyAgent(resolvedProxy);
40
- axiosConfig.httpAgent = new HttpsProxyAgent(resolvedProxy);
41
- // Disable axios's built-in proxy logic in favor of the agent.
42
- axiosConfig.proxy = false;
43
- }
44
- return axios.create(axiosConfig);
45
- }
46
- /**
47
- * Thin wrapper around an axios response that throws with a structured error
48
- * on non-2xx status codes. Providers use this to get uniform error surface.
49
- */
50
- class HttpError extends Error {
51
- status;
52
- body;
53
- url;
54
- constructor(status, url, body) {
55
- super(`HTTP ${status} on ${url}`);
56
- this.name = 'HttpError';
57
- this.status = status;
58
- this.url = url;
59
- this.body = body;
60
- }
61
- }
62
- /** Assert that an axios response is a 2xx; throw HttpError otherwise. */
63
- function assertOk(status, url, body) {
64
- if (status < 200 || status >= 300) {
65
- throw new HttpError(status, url, body);
66
- }
67
- }
68
-
69
- export { HttpError, assertOk, createHttpClient };
70
- //# sourceMappingURL=httpClient.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"httpClient.mjs","sources":["../../../src/utils/httpClient.ts"],"sourcesContent":["/**\n * HTTP client utility for capability providers.\n *\n * Wraps axios with proxy support, default headers, and consistent retry\n * behavior so every provider doesn't reinvent the wheel. Used by\n * ToolsServerCapabilityProvider and (future) any HTTP-backed provider.\n *\n * Proxy resolution follows the existing pattern in this codebase:\n * the PROXY env var is read and an HttpsProxyAgent is attached if present.\n */\n\nimport axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios';\nimport { HttpsProxyAgent } from 'https-proxy-agent';\n\n/** Configuration for creating an HTTP client. */\nexport interface HttpClientConfig {\n /** Base URL prepended to all requests. */\n baseURL: string;\n /** Optional API key — if present, sent as `x-api-key` header. */\n apiKey?: string;\n /** Custom header map merged into every request. */\n headers?: Record<string, string>;\n /** Request timeout in milliseconds. Defaults to 30_000. */\n timeoutMs?: number;\n /**\n * Override for the PROXY env var. Useful for tests. If undefined,\n * falls back to process.env.PROXY.\n */\n proxy?: string | null;\n}\n\n/**\n * Build an axios instance configured per HttpClientConfig.\n *\n * The returned instance should be retained (not recreated per request) so\n * keepalive connections can be reused.\n */\nexport function createHttpClient(config: HttpClientConfig): AxiosInstance {\n const { baseURL, apiKey, headers = {}, timeoutMs = 30_000, proxy } = config;\n\n const resolvedProxy = proxy === undefined ? process.env.PROXY : proxy;\n\n const defaultHeaders: Record<string, string> = {\n 'content-type': 'application/json',\n ...headers,\n };\n if (apiKey) {\n defaultHeaders['x-api-key'] = apiKey;\n }\n\n const axiosConfig: AxiosRequestConfig = {\n baseURL,\n timeout: timeoutMs,\n headers: defaultHeaders,\n // Don't throw on non-2xx — callers handle status codes explicitly.\n validateStatus: () => true,\n };\n\n if (resolvedProxy) {\n // axios respects `httpsAgent` for outbound proxying\n axiosConfig.httpsAgent = new HttpsProxyAgent(resolvedProxy);\n axiosConfig.httpAgent = new HttpsProxyAgent(resolvedProxy);\n // Disable axios's built-in proxy logic in favor of the agent.\n axiosConfig.proxy = false;\n }\n\n return axios.create(axiosConfig);\n}\n\n/**\n * Thin wrapper around an axios response that throws with a structured error\n * on non-2xx status codes. Providers use this to get uniform error surface.\n */\nexport class HttpError extends Error {\n readonly status: number;\n readonly body: unknown;\n readonly url: string;\n constructor(status: number, url: string, body: unknown) {\n super(`HTTP ${status} on ${url}`);\n this.name = 'HttpError';\n this.status = status;\n this.url = url;\n this.body = body;\n }\n}\n\n/** Assert that an axios response is a 2xx; throw HttpError otherwise. */\nexport function assertOk(status: number, url: string, body: unknown): void {\n if (status < 200 || status >= 300) {\n throw new HttpError(status, url, body);\n }\n}\n"],"names":[],"mappings":";;;AAAA;;;;;;;;;AASG;AAsBH;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,MAAwB,EAAA;AACvD,IAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAE3E,IAAA,MAAM,aAAa,GAAG,KAAK,KAAK,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK;AAErE,IAAA,MAAM,cAAc,GAA2B;AAC7C,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,GAAG,OAAO;KACX;IACD,IAAI,MAAM,EAAE;AACV,QAAA,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM;IACtC;AAEA,IAAA,MAAM,WAAW,GAAuB;QACtC,OAAO;AACP,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,cAAc;;AAEvB,QAAA,cAAc,EAAE,MAAM,IAAI;KAC3B;IAED,IAAI,aAAa,EAAE;;QAEjB,WAAW,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC;QAC3D,WAAW,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC;;AAE1D,QAAA,WAAW,CAAC,KAAK,GAAG,KAAK;IAC3B;AAEA,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;AAClC;AAEA;;;AAGG;AACG,MAAO,SAAU,SAAQ,KAAK,CAAA;AACzB,IAAA,MAAM;AACN,IAAA,IAAI;AACJ,IAAA,GAAG;AACZ,IAAA,WAAA,CAAY,MAAc,EAAE,GAAW,EAAE,IAAa,EAAA;AACpD,QAAA,KAAK,CAAC,CAAA,KAAA,EAAQ,MAAM,OAAO,GAAG,CAAA,CAAE,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AACD;AAED;SACgB,QAAQ,CAAC,MAAc,EAAE,GAAW,EAAE,IAAa,EAAA;IACjE,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,EAAE;QACjC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IACxC;AACF;;;;"}
@@ -1,96 +0,0 @@
1
- /**
2
- * Tool manifest cache.
3
- *
4
- * Providers fetch a manifest at init and potentially on refresh. This
5
- * utility provides a minimal TTL cache so repeated fetchManifest() calls
6
- * don't hammer the backing server.
7
- *
8
- * Caching is opt-in — providers that want fresh data every time (e.g.,
9
- * MCP with dynamic tool lists) can skip this entirely.
10
- */
11
- /**
12
- * Simple in-memory TTL cache for manifests, keyed by a caller-supplied
13
- * cache key (e.g., the filter hash or a fixed constant for unfiltered).
14
- *
15
- * Thread-safety: the cache uses a plain Map. Node's single-threaded event
16
- * loop makes this safe for typical use. Not safe across workers — each
17
- * worker keeps its own cache (fine, since manifests are small).
18
- */
19
- class ManifestCache {
20
- ttlMs;
21
- store = new Map();
22
- constructor(config = {}) {
23
- this.ttlMs = config.ttlMs ?? 60_000;
24
- }
25
- /** Retrieve cached capabilities, or undefined on miss / expiry. */
26
- get(key) {
27
- const entry = this.store.get(key);
28
- if (!entry)
29
- return undefined;
30
- if (entry.expiresAt < Date.now()) {
31
- this.store.delete(key);
32
- return undefined;
33
- }
34
- return entry.capabilities;
35
- }
36
- /** Insert or replace cached capabilities for the given key. */
37
- set(key, capabilities) {
38
- if (this.ttlMs <= 0)
39
- return;
40
- this.store.set(key, {
41
- expiresAt: Date.now() + this.ttlMs,
42
- capabilities,
43
- });
44
- }
45
- /** Remove all cached entries. */
46
- clear() {
47
- this.store.clear();
48
- }
49
- /** For tests / diagnostics. */
50
- get size() {
51
- return this.store.size;
52
- }
53
- }
54
- /**
55
- * Build a deterministic cache key from a CapabilityFilter.
56
- *
57
- * Two identical filters always produce the same key. Providers use this
58
- * so `fetchManifest(filter)` and `fetchManifest(sameFilter)` hit the
59
- * same cache entry.
60
- */
61
- function filterToCacheKey(filter) {
62
- if (!filter)
63
- return '__all__';
64
- const parts = [];
65
- if (filter.kind)
66
- parts.push(`kind=${filter.kind}`);
67
- if (filter.tags?.length)
68
- parts.push(`tags=${[...filter.tags].sort().join(',')}`);
69
- if (filter.names?.length)
70
- parts.push(`names=${[...filter.names].sort().join(',')}`);
71
- return parts.length ? parts.join('|') : '__all__';
72
- }
73
- /**
74
- * Apply a CapabilityFilter to a pre-fetched manifest. Used by providers
75
- * that fetch the full manifest once and filter in memory.
76
- */
77
- function applyFilter(capabilities, filter) {
78
- if (!filter)
79
- return capabilities;
80
- return capabilities.filter((cap) => {
81
- if (filter.kind && cap.kind !== filter.kind)
82
- return false;
83
- if (filter.names && !filter.names.includes(cap.name))
84
- return false;
85
- if (filter.tags?.length) {
86
- const capTags = new Set(cap.metadata.tags ?? []);
87
- const anyMatch = filter.tags.some((t) => capTags.has(t));
88
- if (!anyMatch)
89
- return false;
90
- }
91
- return true;
92
- });
93
- }
94
-
95
- export { ManifestCache, applyFilter, filterToCacheKey };
96
- //# sourceMappingURL=toolManifest.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolManifest.mjs","sources":["../../../src/utils/toolManifest.ts"],"sourcesContent":["/**\n * Tool manifest cache.\n *\n * Providers fetch a manifest at init and potentially on refresh. This\n * utility provides a minimal TTL cache so repeated fetchManifest() calls\n * don't hammer the backing server.\n *\n * Caching is opt-in — providers that want fresh data every time (e.g.,\n * MCP with dynamic tool lists) can skip this entirely.\n */\n\nimport type { Capability, CapabilityFilter } from '@/providers/types';\n\n/** Entry in the manifest cache. */\ninterface CacheEntry {\n expiresAt: number;\n capabilities: Capability[];\n}\n\nexport interface ManifestCacheConfig {\n /** Time-to-live in milliseconds. 0 disables caching. Defaults to 60_000 (1 min). */\n ttlMs?: number;\n}\n\n/**\n * Simple in-memory TTL cache for manifests, keyed by a caller-supplied\n * cache key (e.g., the filter hash or a fixed constant for unfiltered).\n *\n * Thread-safety: the cache uses a plain Map. Node's single-threaded event\n * loop makes this safe for typical use. Not safe across workers — each\n * worker keeps its own cache (fine, since manifests are small).\n */\nexport class ManifestCache {\n private readonly ttlMs: number;\n private readonly store = new Map<string, CacheEntry>();\n\n constructor(config: ManifestCacheConfig = {}) {\n this.ttlMs = config.ttlMs ?? 60_000;\n }\n\n /** Retrieve cached capabilities, or undefined on miss / expiry. */\n get(key: string): Capability[] | undefined {\n const entry = this.store.get(key);\n if (!entry) return undefined;\n if (entry.expiresAt < Date.now()) {\n this.store.delete(key);\n return undefined;\n }\n return entry.capabilities;\n }\n\n /** Insert or replace cached capabilities for the given key. */\n set(key: string, capabilities: Capability[]): void {\n if (this.ttlMs <= 0) return;\n this.store.set(key, {\n expiresAt: Date.now() + this.ttlMs,\n capabilities,\n });\n }\n\n /** Remove all cached entries. */\n clear(): void {\n this.store.clear();\n }\n\n /** For tests / diagnostics. */\n get size(): number {\n return this.store.size;\n }\n}\n\n/**\n * Build a deterministic cache key from a CapabilityFilter.\n *\n * Two identical filters always produce the same key. Providers use this\n * so `fetchManifest(filter)` and `fetchManifest(sameFilter)` hit the\n * same cache entry.\n */\nexport function filterToCacheKey(filter?: CapabilityFilter): string {\n if (!filter) return '__all__';\n const parts: string[] = [];\n if (filter.kind) parts.push(`kind=${filter.kind}`);\n if (filter.tags?.length)\n parts.push(`tags=${[...filter.tags].sort().join(',')}`);\n if (filter.names?.length)\n parts.push(`names=${[...filter.names].sort().join(',')}`);\n return parts.length ? parts.join('|') : '__all__';\n}\n\n/**\n * Apply a CapabilityFilter to a pre-fetched manifest. Used by providers\n * that fetch the full manifest once and filter in memory.\n */\nexport function applyFilter(\n capabilities: Capability[],\n filter?: CapabilityFilter\n): Capability[] {\n if (!filter) return capabilities;\n return capabilities.filter((cap) => {\n if (filter.kind && cap.kind !== filter.kind) return false;\n if (filter.names && !filter.names.includes(cap.name)) return false;\n if (filter.tags?.length) {\n const capTags = new Set(cap.metadata.tags ?? []);\n const anyMatch = filter.tags.some((t) => capTags.has(t));\n if (!anyMatch) return false;\n }\n return true;\n });\n}\n"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- /**
2
- * spawnPath — hierarchical invocation identity for nested multi-agent orchestration.
3
- *
4
- * A spawnPath is a slash-separated chain of spawnKeys from the root of the current
5
- * agent invocation to the current spawn. The root agent has an empty spawnPath;
6
- * each handoff/transfer/sequence that spawns a new subgraph appends a new spawnKey.
7
- *
8
- * Examples:
9
- * "" → primary agent (no spawn)
10
- * "call_abc" → first-level handoff child
11
- * "call_abc/call_def" → grandchild (depth 2)
12
- * "call_abc/call_def/call_ghi" → depth 3
13
- *
14
- * These utilities are the single source of truth for path manipulation across:
15
- * - @illuma-ai/agents (MultiAgentGraph, HandoffRegistry, callbacks)
16
- * - host api (initialize.js, callbacks.js, ExecutionTrace writes)
17
- * - host client (subagent store, sidebar rendering)
18
- *
19
- * See docs/multi-agent-nesting-architecture.md for the full design.
20
- */
21
- /** Separator between spawnKeys in a spawnPath. Chosen so that the path looks
22
- * like a filesystem/URL path, which makes it easy to read in logs and traces. */
23
- export declare const SPAWN_PATH_SEP = "/";
24
- /** Hard cap on nested multi-agent invocations. Prevents runaway recursion.
25
- * Can be overridden at the host api layer via MULTI_AGENT_MAX_NESTING_DEPTH. */
26
- export declare const MAX_NESTING_DEPTH = 5;
27
- /**
28
- * Append a spawnKey to a parent spawnPath.
29
- *
30
- * @param parent - Parent spawnPath (may be undefined/null/empty for root)
31
- * @param key - spawnKey to append
32
- * @returns New spawnPath string
33
- */
34
- export declare function buildSpawnPath(parent: string | undefined | null, key: string): string;
35
- /**
36
- * Compute the depth of a spawnPath.
37
- * Root (empty) → 0; single-segment → 1; etc.
38
- */
39
- export declare function spawnPathDepth(path: string | undefined | null): number;
40
- /**
41
- * Return the parent spawnPath, or null if the input is already root.
42
- *
43
- * - parentSpawnPath("a/b/c") === "a/b"
44
- * - parentSpawnPath("a") === ""
45
- * - parentSpawnPath("") === null
46
- */
47
- export declare function parentSpawnPath(path: string | undefined | null): string | null;
48
- /** Split a spawnPath into its constituent spawnKey segments. */
49
- export declare function spawnPathParts(path: string | undefined | null): string[];
50
- /**
51
- * Return the last spawnKey in a spawnPath (the "current" spawn).
52
- * Returns null for root.
53
- */
54
- export declare function leafSpawnKey(path: string | undefined | null): string | null;
55
- /**
56
- * True if `ancestor` is a strict ancestor of `descendant`. Root ("") is
57
- * ancestor of everything except itself.
58
- */
59
- export declare function isAncestorSpawnPath(ancestor: string | undefined | null, descendant: string | undefined | null): boolean;
@@ -1,97 +0,0 @@
1
- import type { BaseMessage } from '@langchain/core/messages';
2
- import type * as t from '@/types';
3
- /**
4
- * Tracks the lifecycle of a spawned handoff child agent.
5
- */
6
- export type HandoffRecord = {
7
- /** Agent identity (destination agentId) — stable across multiple spawns of the same agent */
8
- id: string;
9
- /** Unique internal key for this specific spawn (agentId + monotonic counter) */
10
- spawnKey: string;
11
- /** Display name of the child agent */
12
- name: string;
13
- /** Task description / instructions passed to child */
14
- task: string;
15
- /** When the handoff was spawned */
16
- spawnedAt: number;
17
- /** Current status */
18
- status: 'pending' | 'running' | 'completed' | 'failed';
19
- /** The background promise executing the child subgraph */
20
- promise: Promise<t.BaseGraphState>;
21
- /** Resolved result text (populated on completion) */
22
- resultText?: string;
23
- /** Error message (populated on failure) */
24
- error?: string;
25
- /** Duration in ms (populated on completion/failure) */
26
- durationMs?: number;
27
- /** Number of messages in child's output */
28
- resultMessageCount?: number;
29
- };
30
- /**
31
- * Registry for async handoff execution.
32
- *
33
- * Enables the autonomous orchestration pattern:
34
- * 1. Orchestrator spawns children (non-blocking)
35
- * 2. Orchestrator stays alive to reason, spawn more, or check status
36
- * 3. Orchestrator collects results when ready
37
- *
38
- * Scoped per MultiAgentGraph instance — each orchestrator graph gets its own registry.
39
- */
40
- export declare class HandoffRegistry {
41
- private records;
42
- /** Monotonically increasing counter for unique spawn IDs */
43
- private spawnCounter;
44
- /**
45
- * Register a spawned handoff child.
46
- * The promise runs in the background — not awaited here.
47
- * Uses a unique key per spawn so the same agent can be spawned multiple times
48
- * across rounds without overwriting prior records.
49
- */
50
- spawn(params: {
51
- id: string;
52
- name: string;
53
- task: string;
54
- promise: Promise<t.BaseGraphState>;
55
- extractResult: (messages: BaseMessage[], agentId: string) => string;
56
- truncateResult: (text: string, maxChars: number) => string;
57
- maxResultChars: number;
58
- /** Callback when child completes (for SSE events) */
59
- onComplete?: (record: HandoffRecord) => void;
60
- }): void;
61
- /** List all pending (running) handoffs */
62
- listPending(): HandoffRecord[];
63
- /** List all completed handoffs (not yet collected) */
64
- listCompleted(): HandoffRecord[];
65
- /** List all handoffs regardless of status */
66
- listAll(): HandoffRecord[];
67
- /**
68
- * Get a handoff record by either its unique spawnKey or by agentId.
69
- * - Exact spawnKey match wins (O(1)).
70
- * - Falls back to the most recently spawned record for that agentId — matching
71
- * lookups by callers that only know the agent identity, not the spawn round.
72
- */
73
- get(idOrSpawnKey: string): HandoffRecord | undefined;
74
- /** Check if any handoffs are still running */
75
- hasPending(): boolean;
76
- /**
77
- * Wait for ALL pending handoffs to complete and return all records.
78
- * Records are NOT auto-cleared — caller removes collected records via remove().
79
- */
80
- waitForAll(): Promise<HandoffRecord[]>;
81
- /**
82
- * Wait for ANY pending handoff to complete.
83
- * Returns the newly completed record(s).
84
- */
85
- waitForAny(): Promise<HandoffRecord[]>;
86
- /**
87
- * Remove record(s) by spawnKey or agentId.
88
- * - Exact spawnKey match removes only that record.
89
- * - agentId match removes ALL records for that agent (covers callers that
90
- * want to forget everything tied to a given agent).
91
- */
92
- remove(idOrSpawnKey: string): void;
93
- /** Clear all records (for cleanup between graph invocations) */
94
- clear(): void;
95
- /** Number of total tracked handoffs */
96
- get size(): number;
97
- }
@@ -1,89 +0,0 @@
1
- /**
2
- * A2ACapabilityProvider — client-side adapter for consuming A2A-served
3
- * remote agents as capabilities.
4
- *
5
- * Same pattern as `MCPCapabilityProvider`: take a unified spec map,
6
- * speak the protocol (A2A JSON-RPC over HTTP), expose each skill as a
7
- * `Capability` / `StructuredTool`.
8
- *
9
- * Design:
10
- * - One `A2AClient` per remote spec, cached after first use.
11
- * - `fetchManifest()`:
12
- * for each remote, GET /.well-known/agent.json → emit one
13
- * Capability per advertised skill (or one per remote when
14
- * `flattenAsSingleTool` is set).
15
- * - `createRunnables()`:
16
- * each Capability becomes a StructuredTool whose invoke sends a
17
- * JSON-RPC `tasks/send` to the remote and returns the final
18
- * artifact's text.
19
- *
20
- * What the host supplies:
21
- * - `remotes`: unified spec map (normalized from whatever source).
22
- * - `getAuthHeaders?`: per-remote header resolver. Called at connect
23
- * time. OAuth / token refresh stays in the host.
24
- */
25
- import { type StructuredToolInterface } from '@langchain/core/tools';
26
- import { type Capability, type CapabilityFilter, type CapabilityProvider, type CredentialMap } from '@/providers/types';
27
- import { CAPABILITY_NAME_SEPARATOR, formatCapabilityName } from '@/providers/capabilityNaming';
28
- import type { A2AProviderConfig, A2ASkill } from './types';
29
- export declare class A2ACapabilityProvider implements CapabilityProvider {
30
- readonly providerId: string;
31
- private readonly config;
32
- private readonly logger;
33
- private readonly connections;
34
- constructor(config: A2AProviderConfig);
35
- fetchManifest(filter?: CapabilityFilter): Promise<Capability[]>;
36
- createRunnables(capabilities: Capability[], _credentials: CredentialMap): Promise<StructuredToolInterface[]>;
37
- /** Disconnect any cached clients. A2A is stateless over HTTP so this
38
- * is effectively a cache clear — no sockets to close. */
39
- close(): Promise<void>;
40
- private ensureConnection;
41
- private resolveAuthHeaders;
42
- private cardToCapabilities;
43
- private capabilityMatchesFilter;
44
- private buildProxyTool;
45
- }
46
- export { CAPABILITY_NAME_SEPARATOR, formatCapabilityName };
47
- /**
48
- * Parse a capability name produced by this provider, returning A2A-specific
49
- * field names (`remoteName` / `skillId`). Thin adapter over the shared
50
- * `parseCapabilityName` — kept local so callers see the A2A vocabulary.
51
- */
52
- export declare function parseCapabilityName(name: string): {
53
- remoteName: string;
54
- skillId?: string;
55
- } | null;
56
- /** Derive a Capability from a skill entry on the agent card. */
57
- export declare function skillToCapability(remoteName: string, skill: A2ASkill): Capability;
58
- /**
59
- * Default input schema for A2A capabilities. Every invocation is a text
60
- * message — we don't try to infer a per-skill input shape because the
61
- * A2A spec's skill entries don't include a parameter schema.
62
- */
63
- export declare const MESSAGE_INPUT_SCHEMA: {
64
- readonly type: "object";
65
- readonly properties: {
66
- readonly message: {
67
- readonly type: "string";
68
- readonly description: "Instruction or question to send to the remote agent as a user message.";
69
- };
70
- };
71
- readonly required: readonly ["message"];
72
- };
73
- /**
74
- * Coerce arbitrary LLM-supplied input into a valid A2A message. If the
75
- * input is a string, wraps it directly. If it's `{ message: "..." }`,
76
- * uses `message`. Otherwise JSON-stringifies so the agent receives
77
- * something it can try to interpret.
78
- *
79
- * When a skill id is known, it's prepended to the message text so the
80
- * remote agent can route — some A2A implementations use this, others
81
- * ignore it, it's best-effort.
82
- */
83
- export declare function coerceInputToA2AMessage(input: unknown, skillId?: string): {
84
- role: 'user';
85
- parts: Array<{
86
- type: 'text';
87
- text: string;
88
- }>;
89
- };
@@ -1,47 +0,0 @@
1
- /**
2
- * A2A HTTP client — thin wrappers for the two operations the provider
3
- * needs: fetching the agent card and sending JSON-RPC task requests.
4
- *
5
- * Uses axios (already in deps) via the shared httpClient utility so
6
- * proxy config + headers work consistently with the tools-server provider.
7
- */
8
- import type { A2AAgentCard, A2ATask, A2ATaskParams } from './types';
9
- /** Options for constructing a single-remote A2A client. */
10
- export interface A2AClientOptions {
11
- baseUrl: string;
12
- headers?: Record<string, string>;
13
- timeoutMs?: number;
14
- cardPath?: string;
15
- rpcPath?: string;
16
- }
17
- /**
18
- * Lightweight single-remote A2A client. One instance per remote; the
19
- * provider builds one per spec entry and caches them.
20
- */
21
- export declare class A2AClient {
22
- private readonly http;
23
- private readonly cardPath;
24
- private readonly rpcPath;
25
- constructor(opts: A2AClientOptions);
26
- /** GET /.well-known/agent.json (or the configured override). */
27
- fetchAgentCard(): Promise<A2AAgentCard>;
28
- /**
29
- * POST a JSON-RPC `tasks/send` request and return the resulting Task.
30
- * The caller supplies the params (id, sessionId, message); this helper
31
- * wraps it in the JSON-RPC envelope, dispatches, and unwraps.
32
- */
33
- sendTask(params: A2ATaskParams): Promise<A2ATask>;
34
- /** Low-level JSON-RPC dispatcher — exposed for tests / advanced callers. */
35
- rpc<P, R>(method: string, params: P): Promise<R>;
36
- }
37
- /**
38
- * Generate a short opaque id for JSON-RPC requests. Not cryptographic —
39
- * just unique enough to pair request/response in logs.
40
- */
41
- export declare function generateRpcId(): string;
42
- /**
43
- * Extract the plain-text output from a completed Task's artifacts. If
44
- * the task isn't `completed`, throws. If there are no text parts, returns
45
- * an empty string rather than null so callers always get a string.
46
- */
47
- export declare function extractTaskText(task: A2ATask): string;
@@ -1,18 +0,0 @@
1
- /**
2
- * Environment-driven defaults + default logger for the A2A provider.
3
- *
4
- * Mirrors the MCP provider's config.ts so the two providers have the same
5
- * override story for hosts.
6
- */
7
- import type { A2ALogger } from './types';
8
- /**
9
- * Read env values with fallbacks. Evaluated lazily so tests that mutate
10
- * process.env get the current value.
11
- */
12
- export declare function getA2AEnvDefaults(): {
13
- clientName: string;
14
- clientVersion: string;
15
- timeoutMs: number;
16
- };
17
- /** Console-routed default logger. */
18
- export declare const consoleLogger: A2ALogger;
@@ -1,6 +0,0 @@
1
- export { A2ACapabilityProvider } from './A2ACapabilityProvider';
2
- export { CAPABILITY_NAME_SEPARATOR, formatCapabilityName, parseCapabilityName, skillToCapability, coerceInputToA2AMessage, MESSAGE_INPUT_SCHEMA, } from './A2ACapabilityProvider';
3
- export { A2AClient, extractTaskText, generateRpcId } from './client';
4
- export type { A2AClientOptions } from './client';
5
- export { consoleLogger as a2aConsoleLogger, getA2AEnvDefaults } from './config';
6
- export type { A2AAgentCard, A2ACardCapabilities, A2ALogger, A2AMessage, A2AProviderConfig, A2ARemoteSpec, A2ASkill, A2ATask, A2ATaskParams, A2ATaskState, A2ATaskStatus, JsonRpcRequest, JsonRpcResponse, JsonRpcSuccess, JsonRpcErrorResponse, } from './types';