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

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 (653) 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/graphs/phases/memoryFlushPhase.cjs +1 -1
  11. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
  12. package/dist/cjs/hooks/HookRegistry.cjs +162 -0
  13. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
  14. package/dist/cjs/hooks/executeHooks.cjs +276 -0
  15. package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
  16. package/dist/cjs/hooks/matchers.cjs +256 -0
  17. package/dist/cjs/hooks/matchers.cjs.map +1 -0
  18. package/dist/cjs/hooks/types.cjs +27 -0
  19. package/dist/cjs/hooks/types.cjs.map +1 -0
  20. package/dist/cjs/langchain/google-common.cjs +3 -0
  21. package/dist/cjs/langchain/google-common.cjs.map +1 -0
  22. package/dist/cjs/langchain/index.cjs +86 -0
  23. package/dist/cjs/langchain/index.cjs.map +1 -0
  24. package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
  25. package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
  26. package/dist/cjs/langchain/messages/tool.cjs +3 -0
  27. package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
  28. package/dist/cjs/langchain/messages.cjs +51 -0
  29. package/dist/cjs/langchain/messages.cjs.map +1 -0
  30. package/dist/cjs/langchain/openai.cjs +3 -0
  31. package/dist/cjs/langchain/openai.cjs.map +1 -0
  32. package/dist/cjs/langchain/prompts.cjs +11 -0
  33. package/dist/cjs/langchain/prompts.cjs.map +1 -0
  34. package/dist/cjs/langchain/runnables.cjs +19 -0
  35. package/dist/cjs/langchain/runnables.cjs.map +1 -0
  36. package/dist/cjs/langchain/tools.cjs +23 -0
  37. package/dist/cjs/langchain/tools.cjs.map +1 -0
  38. package/dist/cjs/langchain/utils/env.cjs +11 -0
  39. package/dist/cjs/langchain/utils/env.cjs.map +1 -0
  40. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
  41. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  42. package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
  43. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
  44. package/dist/cjs/llm/bedrock/index.cjs +61 -33
  45. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  46. package/dist/cjs/llm/openai/index.cjs +1 -4
  47. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  48. package/dist/cjs/llm/openai/utils/index.cjs +27 -10
  49. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  50. package/dist/cjs/main.cjs +178 -127
  51. package/dist/cjs/main.cjs.map +1 -1
  52. package/dist/cjs/memory/citations.cjs +4 -4
  53. package/dist/cjs/memory/citations.cjs.map +1 -1
  54. package/dist/cjs/memory/constants.cjs +17 -17
  55. package/dist/cjs/memory/constants.cjs.map +1 -1
  56. package/dist/cjs/memory/mmr.cjs +1 -1
  57. package/dist/cjs/memory/mmr.cjs.map +1 -1
  58. package/dist/cjs/memory/paths.cjs +1 -1
  59. package/dist/cjs/memory/paths.cjs.map +1 -1
  60. package/dist/cjs/memory/recallTracking.cjs +3 -3
  61. package/dist/cjs/memory/recallTracking.cjs.map +1 -1
  62. package/dist/cjs/memory/temporalDecay.cjs +2 -2
  63. package/dist/cjs/memory/temporalDecay.cjs.map +1 -1
  64. package/dist/cjs/messages/cache.cjs +89 -0
  65. package/dist/cjs/messages/cache.cjs.map +1 -1
  66. package/dist/cjs/messages/contextPruning.cjs +156 -0
  67. package/dist/cjs/messages/contextPruning.cjs.map +1 -0
  68. package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
  69. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
  70. package/dist/cjs/messages/format.cjs +144 -20
  71. package/dist/cjs/messages/format.cjs.map +1 -1
  72. package/dist/cjs/messages/prune.cjs +505 -4
  73. package/dist/cjs/messages/prune.cjs.map +1 -1
  74. package/dist/cjs/run.cjs +141 -1
  75. package/dist/cjs/run.cjs.map +1 -1
  76. package/dist/cjs/tools/BashExecutor.cjs +235 -0
  77. package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
  78. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
  79. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
  80. package/dist/cjs/tools/CodeExecutor.cjs +45 -47
  81. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  82. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
  83. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  84. package/dist/cjs/tools/ReadFile.cjs +44 -0
  85. package/dist/cjs/tools/ReadFile.cjs.map +1 -0
  86. package/dist/cjs/tools/SkillTool.cjs +51 -0
  87. package/dist/cjs/tools/SkillTool.cjs.map +1 -0
  88. package/dist/cjs/tools/SubagentTool.cjs +93 -0
  89. package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
  90. package/dist/cjs/tools/ToolNode.cjs +450 -24
  91. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  92. package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
  93. package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
  94. package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
  95. package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
  96. package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
  97. package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
  98. package/dist/cjs/tools/memory/shared.cjs +1 -1
  99. package/dist/cjs/tools/memory/shared.cjs.map +1 -1
  100. package/dist/cjs/tools/search/search.cjs +11 -3
  101. package/dist/cjs/tools/search/search.cjs.map +1 -1
  102. package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
  103. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
  104. package/dist/cjs/tools/search/tavily-search.cjs +372 -0
  105. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
  106. package/dist/cjs/tools/search/tool.cjs +28 -4
  107. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  108. package/dist/cjs/tools/search/utils.cjs +10 -3
  109. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  110. package/dist/cjs/tools/skillCatalog.cjs +84 -0
  111. package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
  112. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
  113. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
  114. package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
  115. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
  116. package/dist/cjs/types/agent-cache.cjs +54 -0
  117. package/dist/cjs/types/agent-cache.cjs.map +1 -0
  118. package/dist/cjs/types/graph.cjs.map +1 -1
  119. package/dist/cjs/utils/truncation.cjs +135 -0
  120. package/dist/cjs/utils/truncation.cjs.map +1 -0
  121. package/dist/esm/agents/AgentContext.mjs +274 -67
  122. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  123. package/dist/esm/common/enum.mjs +44 -12
  124. package/dist/esm/common/enum.mjs.map +1 -1
  125. package/dist/esm/graphs/Graph.mjs +182 -5
  126. package/dist/esm/graphs/Graph.mjs.map +1 -1
  127. package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
  128. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  129. package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
  130. package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
  131. package/dist/esm/hooks/HookRegistry.mjs +160 -0
  132. package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
  133. package/dist/esm/hooks/executeHooks.mjs +273 -0
  134. package/dist/esm/hooks/executeHooks.mjs.map +1 -0
  135. package/dist/esm/hooks/matchers.mjs +251 -0
  136. package/dist/esm/hooks/matchers.mjs.map +1 -0
  137. package/dist/esm/hooks/types.mjs +25 -0
  138. package/dist/esm/hooks/types.mjs.map +1 -0
  139. package/dist/esm/langchain/google-common.mjs +2 -0
  140. package/dist/esm/langchain/google-common.mjs.map +1 -0
  141. package/dist/esm/langchain/index.mjs +5 -0
  142. package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
  143. package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
  144. package/dist/esm/langchain/messages/tool.mjs +2 -0
  145. package/dist/esm/langchain/messages/tool.mjs.map +1 -0
  146. package/dist/esm/langchain/messages.mjs +2 -0
  147. package/dist/esm/langchain/messages.mjs.map +1 -0
  148. package/dist/esm/langchain/openai.mjs +2 -0
  149. package/dist/esm/langchain/openai.mjs.map +1 -0
  150. package/dist/esm/langchain/prompts.mjs +2 -0
  151. package/dist/esm/langchain/prompts.mjs.map +1 -0
  152. package/dist/esm/langchain/runnables.mjs +2 -0
  153. package/dist/esm/langchain/runnables.mjs.map +1 -0
  154. package/dist/esm/langchain/tools.mjs +2 -0
  155. package/dist/esm/langchain/tools.mjs.map +1 -0
  156. package/dist/esm/langchain/utils/env.mjs +2 -0
  157. package/dist/esm/langchain/utils/env.mjs.map +1 -0
  158. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
  159. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  160. package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
  161. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
  162. package/dist/esm/llm/bedrock/index.mjs +61 -34
  163. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  164. package/dist/esm/llm/openai/index.mjs +1 -4
  165. package/dist/esm/llm/openai/index.mjs.map +1 -1
  166. package/dist/esm/llm/openai/utils/index.mjs +27 -10
  167. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  168. package/dist/esm/main.mjs +21 -27
  169. package/dist/esm/main.mjs.map +1 -1
  170. package/dist/esm/memory/citations.mjs +4 -4
  171. package/dist/esm/memory/citations.mjs.map +1 -1
  172. package/dist/esm/memory/constants.mjs +17 -17
  173. package/dist/esm/memory/constants.mjs.map +1 -1
  174. package/dist/esm/memory/mmr.mjs +1 -1
  175. package/dist/esm/memory/mmr.mjs.map +1 -1
  176. package/dist/esm/memory/paths.mjs +1 -1
  177. package/dist/esm/memory/paths.mjs.map +1 -1
  178. package/dist/esm/memory/recallTracking.mjs +3 -3
  179. package/dist/esm/memory/recallTracking.mjs.map +1 -1
  180. package/dist/esm/memory/temporalDecay.mjs +2 -2
  181. package/dist/esm/memory/temporalDecay.mjs.map +1 -1
  182. package/dist/esm/messages/cache.mjs +89 -0
  183. package/dist/esm/messages/cache.mjs.map +1 -1
  184. package/dist/esm/messages/contextPruning.mjs +154 -0
  185. package/dist/esm/messages/contextPruning.mjs.map +1 -0
  186. package/dist/esm/messages/contextPruningSettings.mjs +50 -0
  187. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
  188. package/dist/esm/messages/format.mjs +136 -12
  189. package/dist/esm/messages/format.mjs.map +1 -1
  190. package/dist/esm/messages/prune.mjs +504 -7
  191. package/dist/esm/messages/prune.mjs.map +1 -1
  192. package/dist/esm/run.mjs +141 -1
  193. package/dist/esm/run.mjs.map +1 -1
  194. package/dist/esm/tools/BashExecutor.mjs +227 -0
  195. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  196. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
  197. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  198. package/dist/esm/tools/CodeExecutor.mjs +45 -48
  199. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  200. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
  201. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  202. package/dist/esm/tools/ReadFile.mjs +39 -0
  203. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  204. package/dist/esm/tools/SkillTool.mjs +46 -0
  205. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  206. package/dist/esm/tools/SubagentTool.mjs +86 -0
  207. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  208. package/dist/esm/tools/ToolNode.mjs +452 -26
  209. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  210. package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
  211. package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
  212. package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
  213. package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
  214. package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
  215. package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
  216. package/dist/esm/tools/memory/shared.mjs +1 -1
  217. package/dist/esm/tools/memory/shared.mjs.map +1 -1
  218. package/dist/esm/tools/search/search.mjs +11 -3
  219. package/dist/esm/tools/search/search.mjs.map +1 -1
  220. package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
  221. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
  222. package/dist/esm/tools/search/tavily-search.mjs +370 -0
  223. package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
  224. package/dist/esm/tools/search/tool.mjs +28 -4
  225. package/dist/esm/tools/search/tool.mjs.map +1 -1
  226. package/dist/esm/tools/search/utils.mjs +10 -3
  227. package/dist/esm/tools/search/utils.mjs.map +1 -1
  228. package/dist/esm/tools/skillCatalog.mjs +82 -0
  229. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  230. package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
  231. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  232. package/dist/esm/tools/toolOutputReferences.mjs +662 -0
  233. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
  234. package/dist/esm/types/agent-cache.mjs +52 -0
  235. package/dist/esm/types/agent-cache.mjs.map +1 -0
  236. package/dist/esm/types/graph.mjs.map +1 -1
  237. package/dist/esm/utils/truncation.mjs +128 -0
  238. package/dist/esm/utils/truncation.mjs.map +1 -0
  239. package/dist/types/agents/AgentContext.d.ts +101 -8
  240. package/dist/types/common/enum.d.ts +39 -12
  241. package/dist/types/common/index.d.ts +0 -1
  242. package/dist/types/graphs/Graph.d.ts +43 -0
  243. package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
  244. package/dist/types/graphs/index.d.ts +0 -1
  245. package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
  246. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  247. package/dist/types/hooks/executeHooks.d.ts +79 -0
  248. package/dist/types/hooks/index.d.ts +6 -0
  249. package/dist/types/hooks/matchers.d.ts +95 -0
  250. package/dist/types/hooks/types.d.ts +320 -0
  251. package/dist/types/index.d.ts +9 -9
  252. package/dist/types/langchain/google-common.d.ts +1 -0
  253. package/dist/types/langchain/index.d.ts +8 -0
  254. package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
  255. package/dist/types/langchain/messages/tool.d.ts +1 -0
  256. package/dist/types/langchain/messages.d.ts +2 -0
  257. package/dist/types/langchain/openai.d.ts +1 -0
  258. package/dist/types/langchain/prompts.d.ts +1 -0
  259. package/dist/types/langchain/runnables.d.ts +2 -0
  260. package/dist/types/langchain/tools.d.ts +2 -0
  261. package/dist/types/langchain/utils/env.d.ts +1 -0
  262. package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
  263. package/dist/types/llm/bedrock/index.d.ts +54 -1
  264. package/dist/types/llm/openai/index.d.ts +1 -1
  265. package/dist/types/memory/citations.d.ts +4 -4
  266. package/dist/types/memory/constants.d.ts +17 -17
  267. package/dist/types/memory/mmr.d.ts +3 -3
  268. package/dist/types/memory/paths.d.ts +1 -1
  269. package/dist/types/memory/temporalDecay.d.ts +2 -2
  270. package/dist/types/memory/types.d.ts +3 -3
  271. package/dist/types/messages/contextPruning.d.ts +42 -0
  272. package/dist/types/messages/contextPruningSettings.d.ts +44 -0
  273. package/dist/types/messages/format.d.ts +9 -1
  274. package/dist/types/messages/index.d.ts +2 -0
  275. package/dist/types/messages/prune.d.ts +91 -1
  276. package/dist/types/run.d.ts +2 -0
  277. package/dist/types/tools/BashExecutor.d.ts +76 -0
  278. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  279. package/dist/types/tools/CodeExecutor.d.ts +8 -26
  280. package/dist/types/tools/ReadFile.d.ts +28 -0
  281. package/dist/types/tools/SkillTool.d.ts +40 -0
  282. package/dist/types/tools/SubagentTool.d.ts +36 -0
  283. package/dist/types/tools/ToolNode.d.ts +77 -5
  284. package/dist/types/tools/memory/shared.d.ts +1 -1
  285. package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
  286. package/dist/types/tools/search/tavily-search.d.ts +4 -0
  287. package/dist/types/tools/search/types.d.ts +99 -5
  288. package/dist/types/tools/search/utils.d.ts +2 -2
  289. package/dist/types/tools/skillCatalog.d.ts +19 -0
  290. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  291. package/dist/types/tools/subagent/index.d.ts +2 -0
  292. package/dist/types/tools/subagent/types.d.ts +84 -0
  293. package/dist/types/tools/toolOutputReferences.d.ts +236 -0
  294. package/dist/types/types/agent-cache.d.ts +71 -0
  295. package/dist/types/types/graph.d.ts +163 -22
  296. package/dist/types/types/index.d.ts +3 -0
  297. package/dist/types/types/messages.d.ts +26 -0
  298. package/dist/types/types/run.d.ts +22 -0
  299. package/dist/types/types/skill.d.ts +9 -0
  300. package/dist/types/types/tools.d.ts +111 -0
  301. package/dist/types/utils/index.d.ts +1 -3
  302. package/dist/types/utils/truncation.d.ts +70 -0
  303. package/package.json +57 -17
  304. package/src/agents/AgentContext.ts +321 -78
  305. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
  306. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +266 -0
  307. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
  308. package/src/agents/__tests__/AgentContext.test.ts +632 -0
  309. package/src/common/__tests__/enum.test.ts +7 -17
  310. package/src/common/enum.ts +43 -12
  311. package/src/common/index.ts +0 -1
  312. package/src/graphs/Graph.ts +222 -2
  313. package/src/graphs/MultiAgentGraph.ts +154 -1466
  314. package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
  315. package/src/graphs/gapFeatures.test.ts +1 -1
  316. package/src/graphs/index.ts +0 -1
  317. package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
  318. package/src/graphs/phases/memoryFlushPhase.ts +2 -2
  319. package/src/hooks/HookRegistry.ts +208 -0
  320. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  321. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  322. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  323. package/src/hooks/__tests__/integration.test.ts +337 -0
  324. package/src/hooks/__tests__/matchers.test.ts +238 -0
  325. package/src/hooks/__tests__/toolHooks.test.ts +665 -0
  326. package/src/hooks/executeHooks.ts +375 -0
  327. package/src/hooks/index.ts +57 -0
  328. package/src/hooks/matchers.ts +280 -0
  329. package/src/hooks/types.ts +404 -0
  330. package/src/index.ts +15 -24
  331. package/src/langchain/google-common.ts +1 -0
  332. package/src/langchain/index.ts +8 -0
  333. package/src/langchain/language_models/chat_models.ts +1 -0
  334. package/src/langchain/messages/tool.ts +5 -0
  335. package/src/langchain/messages.ts +21 -0
  336. package/src/langchain/openai.ts +1 -0
  337. package/src/langchain/prompts.ts +1 -0
  338. package/src/langchain/runnables.ts +7 -0
  339. package/src/langchain/tools.ts +8 -0
  340. package/src/langchain/utils/env.ts +1 -0
  341. package/src/llm/anthropic/utils/message_inputs.ts +10 -1
  342. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
  343. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
  344. package/src/llm/bedrock/cacheSupport.test.ts +99 -0
  345. package/src/llm/bedrock/cacheSupport.ts +53 -0
  346. package/src/llm/bedrock/index.ts +116 -41
  347. package/src/llm/openai/index.ts +2 -2
  348. package/src/llm/openai/utils/index.ts +31 -14
  349. package/src/memory/citations.ts +4 -4
  350. package/src/memory/constants.ts +17 -17
  351. package/src/memory/mmr.ts +3 -3
  352. package/src/memory/paths.ts +1 -1
  353. package/src/memory/recallTracking.ts +3 -3
  354. package/src/memory/temporalDecay.ts +2 -2
  355. package/src/memory/types.ts +3 -3
  356. package/src/messages/__tests__/contextPruning.test.ts +228 -0
  357. package/src/messages/cache.test.ts +62 -24
  358. package/src/messages/cache.ts +112 -0
  359. package/src/messages/contextPruning.ts +191 -0
  360. package/src/messages/contextPruningSettings.ts +90 -0
  361. package/src/messages/ensureThinkingBlock.test.ts +1 -1
  362. package/src/messages/format.ts +164 -12
  363. package/src/messages/formatAgentMessages.skills.test.ts +413 -0
  364. package/src/messages/formatAgentMessages.test.ts +1 -1
  365. package/src/messages/index.ts +2 -0
  366. package/src/messages/prune.ts +661 -4
  367. package/src/run.ts +155 -1
  368. package/src/scripts/multi-agent-chain.ts +2 -2
  369. package/src/scripts/multi-agent-document-review-chain.ts +2 -2
  370. package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
  371. package/src/scripts/multi-agent-parallel.ts +3 -3
  372. package/src/scripts/multi-agent-sequence.ts +3 -3
  373. package/src/scripts/multi-agent-subagent.ts +246 -0
  374. package/src/scripts/multi-agent-supervisor.ts +5 -5
  375. package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
  376. package/src/scripts/sequential-full-metadata-test.ts +2 -2
  377. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  378. package/src/scripts/subagent-tools-debug.ts +160 -0
  379. package/src/scripts/test-custom-prompt-key.ts +3 -3
  380. package/src/scripts/test-handoff-input.ts +1 -1
  381. package/src/scripts/test-handoff-steering.ts +3 -3
  382. package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
  383. package/src/scripts/test-parallel-agent-labeling.ts +3 -3
  384. package/src/scripts/test-parallel-handoffs.ts +2 -2
  385. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
  386. package/src/scripts/test-thinking-handoff.ts +1 -1
  387. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
  388. package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
  389. package/src/scripts/test-tools-before-handoff.ts +1 -1
  390. package/src/specs/agent-handoffs.test.ts +26 -483
  391. package/src/specs/anthropic.simple.test.ts +61 -0
  392. package/src/specs/multi-agent-summarization.test.ts +396 -0
  393. package/src/specs/prune.orphans.test.ts +248 -0
  394. package/src/specs/prune.test.ts +104 -16
  395. package/src/specs/thinking-handoff.test.ts +19 -19
  396. package/src/tools/BashExecutor.ts +281 -0
  397. package/src/tools/BashProgrammaticToolCalling.ts +397 -0
  398. package/src/tools/CodeExecutor.ts +63 -54
  399. package/src/tools/ProgrammaticToolCalling.ts +29 -14
  400. package/src/tools/ReadFile.ts +39 -0
  401. package/src/tools/SkillTool.ts +46 -0
  402. package/src/tools/SubagentTool.ts +100 -0
  403. package/src/tools/ToolNode.ts +548 -26
  404. package/src/tools/__tests__/BashExecutor.test.ts +49 -0
  405. package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
  406. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
  407. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  408. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  409. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  410. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  411. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
  412. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
  413. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  414. package/src/tools/__tests__/subagentHooks.test.ts +210 -0
  415. package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
  416. package/src/tools/memory/memoryAppendTool.ts +1 -1
  417. package/src/tools/memory/memoryGetTool.ts +2 -2
  418. package/src/tools/memory/memorySearchTool.ts +3 -3
  419. package/src/tools/memory/shared.ts +1 -1
  420. package/src/tools/search/search.ts +12 -2
  421. package/src/tools/search/tavily-scraper.ts +235 -0
  422. package/src/tools/search/tavily-search.ts +424 -0
  423. package/src/tools/search/tavily.test.ts +965 -0
  424. package/src/tools/search/tool.ts +36 -2
  425. package/src/tools/search/types.ts +133 -8
  426. package/src/tools/search/utils.ts +13 -5
  427. package/src/tools/skillCatalog.ts +126 -0
  428. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  429. package/src/tools/subagent/index.ts +13 -0
  430. package/src/tools/subagent/types.test.ts +70 -0
  431. package/src/tools/subagent/types.ts +115 -0
  432. package/src/tools/toolOutputReferences.ts +825 -0
  433. package/src/types/agent-cache.ts +74 -0
  434. package/src/types/graph.ts +172 -20
  435. package/src/types/index.ts +3 -0
  436. package/src/types/messages.ts +27 -0
  437. package/src/types/run.ts +22 -0
  438. package/src/types/skill.ts +11 -0
  439. package/src/types/tools.ts +118 -0
  440. package/src/utils/__tests__/truncation.test.ts +66 -0
  441. package/src/utils/index.ts +1 -3
  442. package/src/utils/truncation.ts +154 -0
  443. package/dist/cjs/common/spawnPath.cjs +0 -104
  444. package/dist/cjs/common/spawnPath.cjs.map +0 -1
  445. package/dist/cjs/content/ArtifactStore.cjs +0 -579
  446. package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
  447. package/dist/cjs/content/ContentStore.cjs +0 -638
  448. package/dist/cjs/content/ContentStore.cjs.map +0 -1
  449. package/dist/cjs/content/contentAnalyzer.cjs +0 -91
  450. package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
  451. package/dist/cjs/content/index.cjs +0 -20
  452. package/dist/cjs/content/index.cjs.map +0 -1
  453. package/dist/cjs/content/mcpAutoCache.cjs +0 -115
  454. package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
  455. package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
  456. package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
  457. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
  458. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
  459. package/dist/cjs/providers/a2a/client.cjs +0 -92
  460. package/dist/cjs/providers/a2a/client.cjs.map +0 -1
  461. package/dist/cjs/providers/a2a/config.cjs +0 -38
  462. package/dist/cjs/providers/a2a/config.cjs.map +0 -1
  463. package/dist/cjs/providers/capabilityNaming.cjs +0 -43
  464. package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
  465. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
  466. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
  467. package/dist/cjs/providers/mcp/config.cjs +0 -42
  468. package/dist/cjs/providers/mcp/config.cjs.map +0 -1
  469. package/dist/cjs/providers/mcp/transport.cjs +0 -65
  470. package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
  471. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
  472. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
  473. package/dist/cjs/providers/types.cjs +0 -51
  474. package/dist/cjs/providers/types.cjs.map +0 -1
  475. package/dist/cjs/tools/artifacts/schema.cjs +0 -86
  476. package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
  477. package/dist/cjs/tools/artifacts/tool.cjs +0 -219
  478. package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
  479. package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
  480. package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
  481. package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
  482. package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
  483. package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
  484. package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
  485. package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
  486. package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
  487. package/dist/cjs/tools/proxyTool.cjs +0 -102
  488. package/dist/cjs/tools/proxyTool.cjs.map +0 -1
  489. package/dist/cjs/utils/childAgentContext.cjs +0 -242
  490. package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
  491. package/dist/cjs/utils/credentials.cjs +0 -142
  492. package/dist/cjs/utils/credentials.cjs.map +0 -1
  493. package/dist/cjs/utils/httpClient.cjs +0 -74
  494. package/dist/cjs/utils/httpClient.cjs.map +0 -1
  495. package/dist/cjs/utils/toolManifest.cjs +0 -100
  496. package/dist/cjs/utils/toolManifest.cjs.map +0 -1
  497. package/dist/esm/common/spawnPath.mjs +0 -95
  498. package/dist/esm/common/spawnPath.mjs.map +0 -1
  499. package/dist/esm/content/ArtifactStore.mjs +0 -576
  500. package/dist/esm/content/ArtifactStore.mjs.map +0 -1
  501. package/dist/esm/content/ContentStore.mjs +0 -635
  502. package/dist/esm/content/ContentStore.mjs.map +0 -1
  503. package/dist/esm/content/contentAnalyzer.mjs +0 -87
  504. package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
  505. package/dist/esm/content/index.mjs +0 -5
  506. package/dist/esm/content/mcpAutoCache.mjs +0 -111
  507. package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
  508. package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
  509. package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
  510. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
  511. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
  512. package/dist/esm/providers/a2a/client.mjs +0 -88
  513. package/dist/esm/providers/a2a/client.mjs.map +0 -1
  514. package/dist/esm/providers/a2a/config.mjs +0 -35
  515. package/dist/esm/providers/a2a/config.mjs.map +0 -1
  516. package/dist/esm/providers/capabilityNaming.mjs +0 -39
  517. package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
  518. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
  519. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
  520. package/dist/esm/providers/mcp/config.mjs +0 -39
  521. package/dist/esm/providers/mcp/config.mjs.map +0 -1
  522. package/dist/esm/providers/mcp/transport.mjs +0 -63
  523. package/dist/esm/providers/mcp/transport.mjs.map +0 -1
  524. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
  525. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
  526. package/dist/esm/providers/types.mjs +0 -51
  527. package/dist/esm/providers/types.mjs.map +0 -1
  528. package/dist/esm/tools/artifacts/schema.mjs +0 -79
  529. package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
  530. package/dist/esm/tools/artifacts/tool.mjs +0 -213
  531. package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
  532. package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
  533. package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
  534. package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
  535. package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
  536. package/dist/esm/tools/fileSearch/schema.mjs +0 -15
  537. package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
  538. package/dist/esm/tools/fileSearch/tool.mjs +0 -152
  539. package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
  540. package/dist/esm/tools/proxyTool.mjs +0 -100
  541. package/dist/esm/tools/proxyTool.mjs.map +0 -1
  542. package/dist/esm/utils/childAgentContext.mjs +0 -237
  543. package/dist/esm/utils/childAgentContext.mjs.map +0 -1
  544. package/dist/esm/utils/credentials.mjs +0 -135
  545. package/dist/esm/utils/credentials.mjs.map +0 -1
  546. package/dist/esm/utils/httpClient.mjs +0 -70
  547. package/dist/esm/utils/httpClient.mjs.map +0 -1
  548. package/dist/esm/utils/toolManifest.mjs +0 -96
  549. package/dist/esm/utils/toolManifest.mjs.map +0 -1
  550. package/dist/types/common/spawnPath.d.ts +0 -59
  551. package/dist/types/content/ArtifactStore.d.ts +0 -223
  552. package/dist/types/content/ContentStore.d.ts +0 -140
  553. package/dist/types/content/contentAnalyzer.d.ts +0 -38
  554. package/dist/types/content/index.d.ts +0 -24
  555. package/dist/types/content/mcpAutoCache.d.ts +0 -89
  556. package/dist/types/content/types.d.ts +0 -75
  557. package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
  558. package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
  559. package/dist/types/providers/a2a/client.d.ts +0 -47
  560. package/dist/types/providers/a2a/config.d.ts +0 -18
  561. package/dist/types/providers/a2a/index.d.ts +0 -6
  562. package/dist/types/providers/a2a/types.d.ts +0 -173
  563. package/dist/types/providers/capabilityNaming.d.ts +0 -25
  564. package/dist/types/providers/index.d.ts +0 -12
  565. package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
  566. package/dist/types/providers/mcp/config.d.ts +0 -20
  567. package/dist/types/providers/mcp/index.d.ts +0 -5
  568. package/dist/types/providers/mcp/transport.d.ts +0 -18
  569. package/dist/types/providers/mcp/types.d.ts +0 -112
  570. package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
  571. package/dist/types/providers/tools-server/index.d.ts +0 -1
  572. package/dist/types/providers/types.d.ts +0 -184
  573. package/dist/types/tools/artifacts/index.d.ts +0 -3
  574. package/dist/types/tools/artifacts/schema.d.ts +0 -63
  575. package/dist/types/tools/artifacts/tool.d.ts +0 -16
  576. package/dist/types/tools/artifacts/types.d.ts +0 -127
  577. package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
  578. package/dist/types/tools/fileSearch/index.d.ts +0 -5
  579. package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
  580. package/dist/types/tools/fileSearch/schema.d.ts +0 -13
  581. package/dist/types/tools/fileSearch/tool.d.ts +0 -18
  582. package/dist/types/tools/fileSearch/types.d.ts +0 -139
  583. package/dist/types/tools/proxyTool.d.ts +0 -62
  584. package/dist/types/tools/search/test.d.ts +0 -1
  585. package/dist/types/utils/childAgentContext.d.ts +0 -99
  586. package/dist/types/utils/credentials.d.ts +0 -77
  587. package/dist/types/utils/httpClient.d.ts +0 -46
  588. package/dist/types/utils/toolManifest.d.ts +0 -49
  589. package/src/common/__tests__/spawnPath.test.ts +0 -110
  590. package/src/common/spawnPath.ts +0 -101
  591. package/src/content/ArtifactStore.ts +0 -782
  592. package/src/content/ContentStore.ts +0 -753
  593. package/src/content/contentAnalyzer.ts +0 -105
  594. package/src/content/index.ts +0 -51
  595. package/src/content/mcpAutoCache.ts +0 -185
  596. package/src/content/types.ts +0 -82
  597. package/src/graphs/HandoffRegistry.ts +0 -199
  598. package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
  599. package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
  600. package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
  601. package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
  602. package/src/graphs/handoffValidation.test.ts +0 -353
  603. package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
  604. package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
  605. package/src/providers/__tests__/types.test.ts +0 -64
  606. package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
  607. package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
  608. package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
  609. package/src/providers/a2a/client.ts +0 -115
  610. package/src/providers/a2a/config.ts +0 -40
  611. package/src/providers/a2a/index.ts +0 -29
  612. package/src/providers/a2a/types.ts +0 -191
  613. package/src/providers/capabilityNaming.ts +0 -42
  614. package/src/providers/index.ts +0 -68
  615. package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
  616. package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
  617. package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
  618. package/src/providers/mcp/config.ts +0 -45
  619. package/src/providers/mcp/index.ts +0 -21
  620. package/src/providers/mcp/transport.ts +0 -76
  621. package/src/providers/mcp/types.ts +0 -139
  622. package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
  623. package/src/providers/tools-server/index.ts +0 -1
  624. package/src/providers/types.ts +0 -204
  625. package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
  626. package/src/scripts/test-handoff-preamble.ts +0 -278
  627. package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
  628. package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
  629. package/src/tools/artifacts/index.ts +0 -33
  630. package/src/tools/artifacts/schema.ts +0 -99
  631. package/src/tools/artifacts/tool.ts +0 -289
  632. package/src/tools/artifacts/types.ts +0 -162
  633. package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
  634. package/src/tools/fileSearch/formatter.ts +0 -129
  635. package/src/tools/fileSearch/index.ts +0 -23
  636. package/src/tools/fileSearch/ragClient.ts +0 -137
  637. package/src/tools/fileSearch/schema.ts +0 -19
  638. package/src/tools/fileSearch/tool.ts +0 -207
  639. package/src/tools/fileSearch/types.ts +0 -149
  640. package/src/tools/proxyTool.ts +0 -166
  641. package/src/tools/search/output.md +0 -2775
  642. package/src/tools/search/test.html +0 -884
  643. package/src/tools/search/test.md +0 -643
  644. package/src/tools/search/test.ts +0 -159
  645. package/src/utils/__tests__/childAgentContext.test.ts +0 -217
  646. package/src/utils/__tests__/credentials.test.ts +0 -130
  647. package/src/utils/__tests__/httpClient.test.ts +0 -75
  648. package/src/utils/__tests__/toolManifest.test.ts +0 -116
  649. package/src/utils/childAgentContext.ts +0 -259
  650. package/src/utils/credentials.ts +0 -157
  651. package/src/utils/httpClient.ts +0 -92
  652. package/src/utils/toolManifest.ts +0 -109
  653. /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
@@ -1,281 +0,0 @@
1
- import { tool } from '@langchain/core/tools';
2
- import { CapabilityKind } from '../types.mjs';
3
- import { formatCapabilityName, parseCapabilityName as parseCapabilityName$1 } from '../capabilityNaming.mjs';
4
- export { CAPABILITY_NAME_SEPARATOR } from '../capabilityNaming.mjs';
5
- import { A2AClient, generateRpcId, extractTaskText } from './client.mjs';
6
- import { getA2AEnvDefaults, consoleLogger } from './config.mjs';
7
-
8
- /**
9
- * A2ACapabilityProvider — client-side adapter for consuming A2A-served
10
- * remote agents as capabilities.
11
- *
12
- * Same pattern as `MCPCapabilityProvider`: take a unified spec map,
13
- * speak the protocol (A2A JSON-RPC over HTTP), expose each skill as a
14
- * `Capability` / `StructuredTool`.
15
- *
16
- * Design:
17
- * - One `A2AClient` per remote spec, cached after first use.
18
- * - `fetchManifest()`:
19
- * for each remote, GET /.well-known/agent.json → emit one
20
- * Capability per advertised skill (or one per remote when
21
- * `flattenAsSingleTool` is set).
22
- * - `createRunnables()`:
23
- * each Capability becomes a StructuredTool whose invoke sends a
24
- * JSON-RPC `tasks/send` to the remote and returns the final
25
- * artifact's text.
26
- *
27
- * What the host supplies:
28
- * - `remotes`: unified spec map (normalized from whatever source).
29
- * - `getAuthHeaders?`: per-remote header resolver. Called at connect
30
- * time. OAuth / token refresh stays in the host.
31
- */
32
- class A2ACapabilityProvider {
33
- providerId;
34
- config;
35
- logger;
36
- connections = new Map();
37
- constructor(config) {
38
- if (!config.remotes || Object.keys(config.remotes).length === 0) {
39
- throw new Error('A2ACapabilityProvider: at least one remote is required');
40
- }
41
- const env = getA2AEnvDefaults();
42
- this.config = {
43
- remotes: config.remotes,
44
- getAuthHeaders: config.getAuthHeaders,
45
- clientInfo: config.clientInfo ?? {
46
- name: env.clientName,
47
- version: env.clientVersion,
48
- },
49
- timeoutMs: config.timeoutMs ?? env.timeoutMs,
50
- };
51
- this.logger = config.logger ?? consoleLogger;
52
- const names = Object.keys(config.remotes).sort().join(',');
53
- this.providerId = `a2a:${names}`;
54
- }
55
- async fetchManifest(filter) {
56
- if (filter?.kind && filter.kind !== CapabilityKind.A2A)
57
- return [];
58
- const capabilities = [];
59
- for (const remoteName of Object.keys(this.config.remotes)) {
60
- try {
61
- const conn = await this.ensureConnection(remoteName);
62
- const caps = this.cardToCapabilities(remoteName, conn.card, conn.spec);
63
- for (const cap of caps) {
64
- if (this.capabilityMatchesFilter(cap, filter))
65
- capabilities.push(cap);
66
- }
67
- }
68
- catch (err) {
69
- // One remote failing must not block others — log and continue.
70
- this.logger.warn(`[a2a] failed to fetch manifest for remote "${remoteName}":`, err instanceof Error ? err.message : err);
71
- }
72
- }
73
- this.logger.debug(`[a2a] manifest assembled — ${capabilities.length} capabilities across ${this.connections.size}/${Object.keys(this.config.remotes).length} connected remotes`);
74
- return capabilities;
75
- }
76
- async createRunnables(capabilities, _credentials) {
77
- const runnables = [];
78
- for (const cap of capabilities) {
79
- if (cap.kind !== CapabilityKind.A2A)
80
- continue;
81
- const parsed = parseCapabilityName(cap.name);
82
- if (!parsed) {
83
- this.logger.warn(`[a2a] skipping capability "${cap.name}" — unparseable`);
84
- continue;
85
- }
86
- runnables.push(this.buildProxyTool(parsed.remoteName, parsed.skillId, cap));
87
- }
88
- return runnables;
89
- }
90
- /** Disconnect any cached clients. A2A is stateless over HTTP so this
91
- * is effectively a cache clear — no sockets to close. */
92
- async close() {
93
- this.connections.clear();
94
- }
95
- // --- internals ---------------------------------------------------------
96
- async ensureConnection(remoteName) {
97
- const existing = this.connections.get(remoteName);
98
- if (existing)
99
- return existing;
100
- const spec = this.config.remotes[remoteName];
101
- if (!spec) {
102
- throw new Error(`[a2a] remote "${remoteName}" not in config`);
103
- }
104
- const authHeaders = await this.resolveAuthHeaders(remoteName);
105
- const headers = {
106
- ...(spec.headers ?? {}),
107
- ...(authHeaders ?? {}),
108
- 'user-agent': `${this.config.clientInfo.name}/${this.config.clientInfo.version}`,
109
- };
110
- const client = new A2AClient({
111
- baseUrl: spec.url,
112
- headers,
113
- timeoutMs: this.config.timeoutMs,
114
- cardPath: spec.cardPath,
115
- rpcPath: spec.rpcPath,
116
- });
117
- this.logger.debug(`[a2a] fetching card from "${remoteName}" at ${spec.url}`);
118
- const card = await client.fetchAgentCard();
119
- this.logger.debug(`[a2a] connected to "${remoteName}" — ${card.skills.length ?? 0} skills discovered`);
120
- const conn = { remoteName, spec, client, card };
121
- this.connections.set(remoteName, conn);
122
- return conn;
123
- }
124
- async resolveAuthHeaders(remoteName) {
125
- if (!this.config.getAuthHeaders)
126
- return undefined;
127
- try {
128
- return await this.config.getAuthHeaders(remoteName);
129
- }
130
- catch (err) {
131
- this.logger.warn(`[a2a] getAuthHeaders("${remoteName}") threw:`, err instanceof Error ? err.message : err);
132
- return undefined;
133
- }
134
- }
135
- cardToCapabilities(remoteName, card, spec) {
136
- if (spec.flattenAsSingleTool) {
137
- // One capability per remote, named after the remote. Useful when
138
- // the card has no skills listed or you want coarse routing.
139
- return [
140
- {
141
- kind: CapabilityKind.A2A,
142
- name: formatCapabilityName(remoteName),
143
- description: card.description ?? card.name,
144
- schema: MESSAGE_INPUT_SCHEMA,
145
- authConfig: [],
146
- metadata: {
147
- category: 'a2a',
148
- tags: [remoteName, ...(card.skills.map((s) => s.id) ?? [])],
149
- },
150
- },
151
- ];
152
- }
153
- if (!card.skills || card.skills.length === 0) {
154
- // No skills advertised — expose a single message endpoint so the
155
- // agent can still invoke the remote with free-form text.
156
- return [
157
- {
158
- kind: CapabilityKind.A2A,
159
- name: formatCapabilityName(remoteName),
160
- description: card.description ?? `Delegate to remote agent "${card.name}".`,
161
- schema: MESSAGE_INPUT_SCHEMA,
162
- authConfig: [],
163
- metadata: { category: 'a2a', tags: [remoteName] },
164
- },
165
- ];
166
- }
167
- return card.skills.map((skill) => skillToCapability(remoteName, skill));
168
- }
169
- capabilityMatchesFilter(cap, filter) {
170
- if (!filter)
171
- return true;
172
- if (filter.kind && cap.kind !== filter.kind)
173
- return false;
174
- if (filter.names && !filter.names.includes(cap.name))
175
- return false;
176
- if (filter.tags?.length) {
177
- const capTags = new Set(cap.metadata.tags ?? []);
178
- if (!filter.tags.some((t) => capTags.has(t)))
179
- return false;
180
- }
181
- return true;
182
- }
183
- buildProxyTool(remoteName, skillId, cap) {
184
- const logger = this.logger;
185
- const ensureConnection = this.ensureConnection.bind(this);
186
- return tool(async (input) => {
187
- // DEBUG: log tool invocation (remove after POC stabilizes)
188
- logger.debug(`[a2a] invoking ${remoteName}${skillId ? `:${skillId}` : ''}`);
189
- const message = coerceInputToA2AMessage(input, skillId);
190
- const conn = await ensureConnection(remoteName);
191
- const task = await conn.client.sendTask({
192
- id: generateRpcId(),
193
- message,
194
- });
195
- try {
196
- return extractTaskText(task);
197
- }
198
- catch (err) {
199
- throw new Error(`A2A ${remoteName}${skillId ? `:${skillId}` : ''} failed: ${err instanceof Error ? err.message : String(err)}`);
200
- }
201
- }, {
202
- name: cap.name,
203
- description: cap.description,
204
- schema: cap.schema ?? MESSAGE_INPUT_SCHEMA,
205
- responseFormat: 'content',
206
- });
207
- }
208
- }
209
- /**
210
- * Parse a capability name produced by this provider, returning A2A-specific
211
- * field names (`remoteName` / `skillId`). Thin adapter over the shared
212
- * `parseCapabilityName` — kept local so callers see the A2A vocabulary.
213
- */
214
- function parseCapabilityName(name) {
215
- const parsed = parseCapabilityName$1(name);
216
- if (!parsed)
217
- return null;
218
- return {
219
- remoteName: parsed.sourceName,
220
- skillId: parsed.itemName,
221
- };
222
- }
223
- /** Derive a Capability from a skill entry on the agent card. */
224
- function skillToCapability(remoteName, skill) {
225
- return {
226
- kind: CapabilityKind.A2A,
227
- name: formatCapabilityName(remoteName, skill.id),
228
- description: skill.description || skill.name || skill.id,
229
- schema: MESSAGE_INPUT_SCHEMA,
230
- authConfig: [],
231
- metadata: {
232
- category: 'a2a',
233
- tags: [remoteName, ...(skill.tags ?? [])],
234
- },
235
- };
236
- }
237
- /**
238
- * Default input schema for A2A capabilities. Every invocation is a text
239
- * message — we don't try to infer a per-skill input shape because the
240
- * A2A spec's skill entries don't include a parameter schema.
241
- */
242
- const MESSAGE_INPUT_SCHEMA = {
243
- type: 'object',
244
- properties: {
245
- message: {
246
- type: 'string',
247
- description: 'Instruction or question to send to the remote agent as a user message.',
248
- },
249
- },
250
- required: ['message'],
251
- };
252
- /**
253
- * Coerce arbitrary LLM-supplied input into a valid A2A message. If the
254
- * input is a string, wraps it directly. If it's `{ message: "..." }`,
255
- * uses `message`. Otherwise JSON-stringifies so the agent receives
256
- * something it can try to interpret.
257
- *
258
- * When a skill id is known, it's prepended to the message text so the
259
- * remote agent can route — some A2A implementations use this, others
260
- * ignore it, it's best-effort.
261
- */
262
- function coerceInputToA2AMessage(input, skillId) {
263
- let text;
264
- if (typeof input === 'string') {
265
- text = input;
266
- }
267
- else if (input && typeof input === 'object' && 'message' in input) {
268
- const val = input.message;
269
- text = typeof val === 'string' ? val : JSON.stringify(val);
270
- }
271
- else {
272
- text = JSON.stringify(input);
273
- }
274
- if (skillId) {
275
- text = `[skill: ${skillId}]\n${text}`;
276
- }
277
- return { role: 'user', parts: [{ type: 'text', text }] };
278
- }
279
-
280
- export { A2ACapabilityProvider, MESSAGE_INPUT_SCHEMA, coerceInputToA2AMessage, formatCapabilityName, parseCapabilityName, skillToCapability };
281
- //# sourceMappingURL=A2ACapabilityProvider.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"A2ACapabilityProvider.mjs","sources":["../../../../src/providers/a2a/A2ACapabilityProvider.ts"],"sourcesContent":["/**\n * A2ACapabilityProvider — client-side adapter for consuming A2A-served\n * remote agents as capabilities.\n *\n * Same pattern as `MCPCapabilityProvider`: take a unified spec map,\n * speak the protocol (A2A JSON-RPC over HTTP), expose each skill as a\n * `Capability` / `StructuredTool`.\n *\n * Design:\n * - One `A2AClient` per remote spec, cached after first use.\n * - `fetchManifest()`:\n * for each remote, GET /.well-known/agent.json → emit one\n * Capability per advertised skill (or one per remote when\n * `flattenAsSingleTool` is set).\n * - `createRunnables()`:\n * each Capability becomes a StructuredTool whose invoke sends a\n * JSON-RPC `tasks/send` to the remote and returns the final\n * artifact's text.\n *\n * What the host supplies:\n * - `remotes`: unified spec map (normalized from whatever source).\n * - `getAuthHeaders?`: per-remote header resolver. Called at connect\n * time. OAuth / token refresh stays in the host.\n */\n\nimport { tool, type StructuredToolInterface } from '@langchain/core/tools';\n\nimport {\n CapabilityKind,\n type Capability,\n type CapabilityFilter,\n type CapabilityProvider,\n type CredentialMap,\n} from '@/providers/types';\nimport {\n CAPABILITY_NAME_SEPARATOR,\n formatCapabilityName,\n parseCapabilityName as parseSharedName,\n} from '@/providers/capabilityNaming';\nimport { A2AClient, extractTaskText, generateRpcId } from './client';\nimport { consoleLogger, getA2AEnvDefaults } from './config';\nimport type {\n A2AAgentCard,\n A2ALogger,\n A2AProviderConfig,\n A2ARemoteSpec,\n A2ASkill,\n} from './types';\n\n/**\n * Per-remote cached state. The agent card is fetched lazily and reused.\n */\ninterface RemoteConnection {\n remoteName: string;\n spec: A2ARemoteSpec;\n client: A2AClient;\n card: A2AAgentCard;\n}\n\nexport class A2ACapabilityProvider implements CapabilityProvider {\n readonly providerId: string;\n private readonly config: Required<\n Pick<A2AProviderConfig, 'clientInfo' | 'timeoutMs'>\n > &\n Pick<A2AProviderConfig, 'remotes' | 'getAuthHeaders'>;\n private readonly logger: A2ALogger;\n private readonly connections = new Map<string, RemoteConnection>();\n\n constructor(config: A2AProviderConfig) {\n if (!config.remotes || Object.keys(config.remotes).length === 0) {\n throw new Error('A2ACapabilityProvider: at least one remote is required');\n }\n const env = getA2AEnvDefaults();\n this.config = {\n remotes: config.remotes,\n getAuthHeaders: config.getAuthHeaders,\n clientInfo: config.clientInfo ?? {\n name: env.clientName,\n version: env.clientVersion,\n },\n timeoutMs: config.timeoutMs ?? env.timeoutMs,\n };\n this.logger = config.logger ?? consoleLogger;\n const names = Object.keys(config.remotes).sort().join(',');\n this.providerId = `a2a:${names}`;\n }\n\n async fetchManifest(filter?: CapabilityFilter): Promise<Capability[]> {\n if (filter?.kind && filter.kind !== CapabilityKind.A2A) return [];\n\n const capabilities: Capability[] = [];\n for (const remoteName of Object.keys(this.config.remotes)) {\n try {\n const conn = await this.ensureConnection(remoteName);\n const caps = this.cardToCapabilities(remoteName, conn.card, conn.spec);\n for (const cap of caps) {\n if (this.capabilityMatchesFilter(cap, filter)) capabilities.push(cap);\n }\n } catch (err) {\n // One remote failing must not block others — log and continue.\n this.logger.warn(\n `[a2a] failed to fetch manifest for remote \"${remoteName}\":`,\n err instanceof Error ? err.message : err\n );\n }\n }\n\n this.logger.debug(\n `[a2a] manifest assembled — ${capabilities.length} capabilities across ${this.connections.size}/${Object.keys(this.config.remotes).length} connected remotes`\n );\n\n return capabilities;\n }\n\n async createRunnables(\n capabilities: Capability[],\n _credentials: CredentialMap\n ): Promise<StructuredToolInterface[]> {\n const runnables: StructuredToolInterface[] = [];\n for (const cap of capabilities) {\n if (cap.kind !== CapabilityKind.A2A) continue;\n const parsed = parseCapabilityName(cap.name);\n if (!parsed) {\n this.logger.warn(\n `[a2a] skipping capability \"${cap.name}\" — unparseable`\n );\n continue;\n }\n runnables.push(\n this.buildProxyTool(parsed.remoteName, parsed.skillId, cap)\n );\n }\n return runnables;\n }\n\n /** Disconnect any cached clients. A2A is stateless over HTTP so this\n * is effectively a cache clear — no sockets to close. */\n async close(): Promise<void> {\n this.connections.clear();\n }\n\n // --- internals ---------------------------------------------------------\n\n private async ensureConnection(\n remoteName: string\n ): Promise<RemoteConnection> {\n const existing = this.connections.get(remoteName);\n if (existing) return existing;\n\n const spec = this.config.remotes[remoteName];\n if (!spec) {\n throw new Error(`[a2a] remote \"${remoteName}\" not in config`);\n }\n\n const authHeaders = await this.resolveAuthHeaders(remoteName);\n const headers = {\n ...(spec.headers ?? {}),\n ...(authHeaders ?? {}),\n 'user-agent': `${this.config.clientInfo.name}/${this.config.clientInfo.version}`,\n };\n\n const client = new A2AClient({\n baseUrl: spec.url,\n headers,\n timeoutMs: this.config.timeoutMs,\n cardPath: spec.cardPath,\n rpcPath: spec.rpcPath,\n });\n\n this.logger.debug(\n `[a2a] fetching card from \"${remoteName}\" at ${spec.url}`\n );\n const card = await client.fetchAgentCard();\n this.logger.debug(\n `[a2a] connected to \"${remoteName}\" — ${card.skills.length ?? 0} skills discovered`\n );\n\n const conn: RemoteConnection = { remoteName, spec, client, card };\n this.connections.set(remoteName, conn);\n return conn;\n }\n\n private async resolveAuthHeaders(\n remoteName: string\n ): Promise<Record<string, string> | undefined> {\n if (!this.config.getAuthHeaders) return undefined;\n try {\n return await this.config.getAuthHeaders(remoteName);\n } catch (err) {\n this.logger.warn(\n `[a2a] getAuthHeaders(\"${remoteName}\") threw:`,\n err instanceof Error ? err.message : err\n );\n return undefined;\n }\n }\n\n private cardToCapabilities(\n remoteName: string,\n card: A2AAgentCard,\n spec: A2ARemoteSpec\n ): Capability[] {\n if (spec.flattenAsSingleTool) {\n // One capability per remote, named after the remote. Useful when\n // the card has no skills listed or you want coarse routing.\n return [\n {\n kind: CapabilityKind.A2A,\n name: formatCapabilityName(remoteName),\n description: card.description ?? card.name,\n schema: MESSAGE_INPUT_SCHEMA,\n authConfig: [],\n metadata: {\n category: 'a2a',\n tags: [remoteName, ...(card.skills.map((s) => s.id) ?? [])],\n },\n },\n ];\n }\n\n if (!card.skills || card.skills.length === 0) {\n // No skills advertised — expose a single message endpoint so the\n // agent can still invoke the remote with free-form text.\n return [\n {\n kind: CapabilityKind.A2A,\n name: formatCapabilityName(remoteName),\n description:\n card.description ?? `Delegate to remote agent \"${card.name}\".`,\n schema: MESSAGE_INPUT_SCHEMA,\n authConfig: [],\n metadata: { category: 'a2a', tags: [remoteName] },\n },\n ];\n }\n\n return card.skills.map(\n (skill): Capability => skillToCapability(remoteName, skill)\n );\n }\n\n private capabilityMatchesFilter(\n cap: Capability,\n filter?: CapabilityFilter\n ): boolean {\n if (!filter) return true;\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 if (!filter.tags.some((t) => capTags.has(t))) return false;\n }\n return true;\n }\n\n private buildProxyTool(\n remoteName: string,\n skillId: string | undefined,\n cap: Capability\n ): StructuredToolInterface {\n const logger = this.logger;\n const ensureConnection = this.ensureConnection.bind(this);\n\n return tool(\n async (input: unknown): Promise<string> => {\n // DEBUG: log tool invocation (remove after POC stabilizes)\n logger.debug(\n `[a2a] invoking ${remoteName}${skillId ? `:${skillId}` : ''}`\n );\n\n const message = coerceInputToA2AMessage(input, skillId);\n const conn = await ensureConnection(remoteName);\n const task = await conn.client.sendTask({\n id: generateRpcId(),\n message,\n });\n\n try {\n return extractTaskText(task);\n } catch (err) {\n throw new Error(\n `A2A ${remoteName}${skillId ? `:${skillId}` : ''} failed: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n },\n {\n name: cap.name,\n description: cap.description,\n schema: (cap.schema as object) ?? MESSAGE_INPUT_SCHEMA,\n responseFormat: 'content',\n }\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers exported for testing\n// ---------------------------------------------------------------------------\n\n// CAPABILITY_NAME_SEPARATOR + formatCapabilityName live in the shared\n// `@/providers/capabilityNaming` module so every provider uses the same\n// encoding. Re-exported here for backward-compatible imports from the\n// A2A barrel.\nexport { CAPABILITY_NAME_SEPARATOR, formatCapabilityName };\n\n/**\n * Parse a capability name produced by this provider, returning A2A-specific\n * field names (`remoteName` / `skillId`). Thin adapter over the shared\n * `parseCapabilityName` — kept local so callers see the A2A vocabulary.\n */\nexport function parseCapabilityName(\n name: string\n): { remoteName: string; skillId?: string } | null {\n const parsed = parseSharedName(name);\n if (!parsed) return null;\n return {\n remoteName: parsed.sourceName,\n skillId: parsed.itemName,\n };\n}\n\n/** Derive a Capability from a skill entry on the agent card. */\nexport function skillToCapability(\n remoteName: string,\n skill: A2ASkill\n): Capability {\n return {\n kind: CapabilityKind.A2A,\n name: formatCapabilityName(remoteName, skill.id),\n description: skill.description || skill.name || skill.id,\n schema: MESSAGE_INPUT_SCHEMA,\n authConfig: [],\n metadata: {\n category: 'a2a',\n tags: [remoteName, ...(skill.tags ?? [])],\n },\n };\n}\n\n/**\n * Default input schema for A2A capabilities. Every invocation is a text\n * message — we don't try to infer a per-skill input shape because the\n * A2A spec's skill entries don't include a parameter schema.\n */\nexport const MESSAGE_INPUT_SCHEMA = {\n type: 'object',\n properties: {\n message: {\n type: 'string',\n description:\n 'Instruction or question to send to the remote agent as a user message.',\n },\n },\n required: ['message'],\n} as const;\n\n/**\n * Coerce arbitrary LLM-supplied input into a valid A2A message. If the\n * input is a string, wraps it directly. If it's `{ message: \"...\" }`,\n * uses `message`. Otherwise JSON-stringifies so the agent receives\n * something it can try to interpret.\n *\n * When a skill id is known, it's prepended to the message text so the\n * remote agent can route — some A2A implementations use this, others\n * ignore it, it's best-effort.\n */\nexport function coerceInputToA2AMessage(\n input: unknown,\n skillId?: string\n): { role: 'user'; parts: Array<{ type: 'text'; text: string }> } {\n let text: string;\n if (typeof input === 'string') {\n text = input;\n } else if (input && typeof input === 'object' && 'message' in input) {\n const val = (input as { message: unknown }).message;\n text = typeof val === 'string' ? val : JSON.stringify(val);\n } else {\n text = JSON.stringify(input);\n }\n if (skillId) {\n text = `[skill: ${skillId}]\\n${text}`;\n }\n return { role: 'user', parts: [{ type: 'text', text }] };\n}\n"],"names":["parseSharedName"],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- import { createHttpClient, assertOk } from '../../utils/httpClient.mjs';
2
-
3
- /**
4
- * A2A HTTP client — thin wrappers for the two operations the provider
5
- * needs: fetching the agent card and sending JSON-RPC task requests.
6
- *
7
- * Uses axios (already in deps) via the shared httpClient utility so
8
- * proxy config + headers work consistently with the tools-server provider.
9
- */
10
- const DEFAULT_CARD_PATH = '/.well-known/agent.json';
11
- const DEFAULT_RPC_PATH = '/';
12
- const JSON_RPC_VERSION = '2.0';
13
- /**
14
- * Lightweight single-remote A2A client. One instance per remote; the
15
- * provider builds one per spec entry and caches them.
16
- */
17
- class A2AClient {
18
- http;
19
- cardPath;
20
- rpcPath;
21
- constructor(opts) {
22
- this.http = createHttpClient({
23
- baseURL: opts.baseUrl,
24
- headers: opts.headers,
25
- timeoutMs: opts.timeoutMs,
26
- });
27
- this.cardPath = opts.cardPath ?? DEFAULT_CARD_PATH;
28
- this.rpcPath = opts.rpcPath ?? DEFAULT_RPC_PATH;
29
- }
30
- /** GET /.well-known/agent.json (or the configured override). */
31
- async fetchAgentCard() {
32
- const res = await this.http.get(this.cardPath);
33
- assertOk(res.status, this.cardPath, res.data);
34
- return res.data;
35
- }
36
- /**
37
- * POST a JSON-RPC `tasks/send` request and return the resulting Task.
38
- * The caller supplies the params (id, sessionId, message); this helper
39
- * wraps it in the JSON-RPC envelope, dispatches, and unwraps.
40
- */
41
- async sendTask(params) {
42
- const result = await this.rpc('tasks/send', params);
43
- return result;
44
- }
45
- /** Low-level JSON-RPC dispatcher — exposed for tests / advanced callers. */
46
- async rpc(method, params) {
47
- const body = {
48
- jsonrpc: JSON_RPC_VERSION,
49
- id: generateRpcId(),
50
- method,
51
- params,
52
- };
53
- const res = await this.http.post(this.rpcPath, body);
54
- assertOk(res.status, this.rpcPath, res.data);
55
- const data = res.data;
56
- if (data && 'error' in data && data.error) {
57
- throw new Error(`A2A ${method} error: ${data.error.message} (code ${data.error.code})`);
58
- }
59
- if (data && 'result' in data)
60
- return data.result;
61
- throw new Error(`A2A ${method}: malformed response (no result)`);
62
- }
63
- }
64
- /**
65
- * Generate a short opaque id for JSON-RPC requests. Not cryptographic —
66
- * just unique enough to pair request/response in logs.
67
- */
68
- function generateRpcId() {
69
- return `a2a-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
70
- }
71
- /**
72
- * Extract the plain-text output from a completed Task's artifacts. If
73
- * the task isn't `completed`, throws. If there are no text parts, returns
74
- * an empty string rather than null so callers always get a string.
75
- */
76
- function extractTaskText(task) {
77
- if (task.status.state === 'failed') {
78
- throw new Error(`A2A task ${task.id} failed: ${task.error?.message ?? 'unknown error'}`);
79
- }
80
- if (task.status.state !== 'completed') {
81
- throw new Error(`A2A task ${task.id} not completed (state=${task.status.state})`);
82
- }
83
- const parts = task.artifacts?.flatMap((a) => a.parts) ?? [];
84
- return parts.map((p) => p.text ?? '').join('\n\n');
85
- }
86
-
87
- export { A2AClient, extractTaskText, generateRpcId };
88
- //# sourceMappingURL=client.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.mjs","sources":["../../../../src/providers/a2a/client.ts"],"sourcesContent":["/**\n * A2A HTTP client — thin wrappers for the two operations the provider\n * needs: fetching the agent card and sending JSON-RPC task requests.\n *\n * Uses axios (already in deps) via the shared httpClient utility so\n * proxy config + headers work consistently with the tools-server provider.\n */\n\nimport { createHttpClient, assertOk } from '@/utils/httpClient';\nimport type {\n A2AAgentCard,\n A2ATask,\n A2ATaskParams,\n JsonRpcRequest,\n JsonRpcResponse,\n} from './types';\n\nconst DEFAULT_CARD_PATH = '/.well-known/agent.json';\nconst DEFAULT_RPC_PATH = '/';\nconst JSON_RPC_VERSION = '2.0';\n\n/** Options for constructing a single-remote A2A client. */\nexport interface A2AClientOptions {\n baseUrl: string;\n headers?: Record<string, string>;\n timeoutMs?: number;\n cardPath?: string;\n rpcPath?: string;\n}\n\n/**\n * Lightweight single-remote A2A client. One instance per remote; the\n * provider builds one per spec entry and caches them.\n */\nexport class A2AClient {\n private readonly http: ReturnType<typeof createHttpClient>;\n private readonly cardPath: string;\n private readonly rpcPath: string;\n\n constructor(opts: A2AClientOptions) {\n this.http = createHttpClient({\n baseURL: opts.baseUrl,\n headers: opts.headers,\n timeoutMs: opts.timeoutMs,\n });\n this.cardPath = opts.cardPath ?? DEFAULT_CARD_PATH;\n this.rpcPath = opts.rpcPath ?? DEFAULT_RPC_PATH;\n }\n\n /** GET /.well-known/agent.json (or the configured override). */\n async fetchAgentCard(): Promise<A2AAgentCard> {\n const res = await this.http.get<A2AAgentCard>(this.cardPath);\n assertOk(res.status, this.cardPath, res.data);\n return res.data;\n }\n\n /**\n * POST a JSON-RPC `tasks/send` request and return the resulting Task.\n * The caller supplies the params (id, sessionId, message); this helper\n * wraps it in the JSON-RPC envelope, dispatches, and unwraps.\n */\n async sendTask(params: A2ATaskParams): Promise<A2ATask> {\n const result = await this.rpc<A2ATaskParams, A2ATask>('tasks/send', params);\n return result;\n }\n\n /** Low-level JSON-RPC dispatcher — exposed for tests / advanced callers. */\n async rpc<P, R>(method: string, params: P): Promise<R> {\n const body: JsonRpcRequest<P> = {\n jsonrpc: JSON_RPC_VERSION,\n id: generateRpcId(),\n method,\n params,\n };\n const res = await this.http.post<JsonRpcResponse<R>>(this.rpcPath, body);\n assertOk(res.status, this.rpcPath, res.data);\n\n const data = res.data;\n if (data && 'error' in data && data.error) {\n throw new Error(\n `A2A ${method} error: ${data.error.message} (code ${data.error.code})`\n );\n }\n if (data && 'result' in data) return data.result;\n throw new Error(`A2A ${method}: malformed response (no result)`);\n }\n}\n\n/**\n * Generate a short opaque id for JSON-RPC requests. Not cryptographic —\n * just unique enough to pair request/response in logs.\n */\nexport function generateRpcId(): string {\n return `a2a-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\n/**\n * Extract the plain-text output from a completed Task's artifacts. If\n * the task isn't `completed`, throws. If there are no text parts, returns\n * an empty string rather than null so callers always get a string.\n */\nexport function extractTaskText(task: A2ATask): string {\n if (task.status.state === 'failed') {\n throw new Error(\n `A2A task ${task.id} failed: ${task.error?.message ?? 'unknown error'}`\n );\n }\n if (task.status.state !== 'completed') {\n throw new Error(\n `A2A task ${task.id} not completed (state=${task.status.state})`\n );\n }\n const parts = task.artifacts?.flatMap((a) => a.parts) ?? [];\n return parts.map((p) => p.text ?? '').join('\\n\\n');\n}\n"],"names":[],"mappings":"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"}
@@ -1,35 +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
- /**
8
- * Read env values with fallbacks. Evaluated lazily so tests that mutate
9
- * process.env get the current value.
10
- */
11
- function getA2AEnvDefaults() {
12
- return {
13
- /**
14
- * Identity sent to A2A-served remotes in user-agent / request headers.
15
- * Precedence: constructor config → env var → library default.
16
- */
17
- clientName: process.env.A2A_CLIENT_NAME ?? 'illuma-agents',
18
- clientVersion: process.env.A2A_CLIENT_VERSION ?? '1.0.0',
19
- timeoutMs: Number(process.env.A2A_REQUEST_TIMEOUT_MS ?? 30_000),
20
- };
21
- }
22
- /** Console-routed default logger. */
23
- const consoleLogger = {
24
- // eslint-disable-next-line no-console
25
- debug: (...args) => console.debug('[a2a]', ...args),
26
- // eslint-disable-next-line no-console
27
- info: (...args) => console.info('[a2a]', ...args),
28
- // eslint-disable-next-line no-console
29
- warn: (...args) => console.warn('[a2a]', ...args),
30
- // eslint-disable-next-line no-console
31
- error: (...args) => console.error('[a2a]', ...args),
32
- };
33
-
34
- export { consoleLogger, getA2AEnvDefaults };
35
- //# sourceMappingURL=config.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.mjs","sources":["../../../../src/providers/a2a/config.ts"],"sourcesContent":["/**\n * Environment-driven defaults + default logger for the A2A provider.\n *\n * Mirrors the MCP provider's config.ts so the two providers have the same\n * override story for hosts.\n */\n\nimport type { A2ALogger } from './types';\n\n/**\n * Read env values with fallbacks. Evaluated lazily so tests that mutate\n * process.env get the current value.\n */\nexport function getA2AEnvDefaults(): {\n clientName: string;\n clientVersion: string;\n timeoutMs: number;\n} {\n return {\n /**\n * Identity sent to A2A-served remotes in user-agent / request headers.\n * Precedence: constructor config → env var → library default.\n */\n clientName: process.env.A2A_CLIENT_NAME ?? 'illuma-agents',\n clientVersion: process.env.A2A_CLIENT_VERSION ?? '1.0.0',\n timeoutMs: Number(process.env.A2A_REQUEST_TIMEOUT_MS ?? 30_000),\n };\n}\n\n/** Console-routed default logger. */\nexport const consoleLogger: A2ALogger = {\n // eslint-disable-next-line no-console\n debug: (...args) => console.debug('[a2a]', ...args),\n // eslint-disable-next-line no-console\n info: (...args) => console.info('[a2a]', ...args),\n // eslint-disable-next-line no-console\n warn: (...args) => console.warn('[a2a]', ...args),\n // eslint-disable-next-line no-console\n error: (...args) => console.error('[a2a]', ...args),\n};\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAIH;;;AAGG;SACa,iBAAiB,GAAA;IAK/B,OAAO;AACL;;;AAGG;AACH,QAAA,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe;AAC1D,QAAA,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO;QACxD,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC;KAChE;AACH;AAEA;AACO,MAAM,aAAa,GAAc;;AAEtC,IAAA,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;;AAEnD,IAAA,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;;AAEjD,IAAA,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;;AAEjD,IAAA,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;;;;;"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Shared capability-name encoding used by source-specific providers
3
- * (MCP, A2A, and future providers that expose multi-level namespaces).
4
- *
5
- * A capability name encodes `<sourceName>__<itemName>` where:
6
- * - `sourceName` is the provider-level identifier (MCP server name,
7
- * A2A remote name, etc.)
8
- * - `itemName` is the per-source sub-unit (MCP tool name, A2A skill id)
9
- *
10
- * Centralizing the separator + parsing here keeps both providers in lockstep
11
- * and prevents collisions when re-exported from the provider barrel.
12
- */
13
- /** Separator between source and item in an encoded capability name. */
14
- const CAPABILITY_NAME_SEPARATOR = '__';
15
- /** Compose a capability name. If `itemName` is omitted, returns just `sourceName`. */
16
- function formatCapabilityName(sourceName, itemName) {
17
- return itemName
18
- ? `${sourceName}${CAPABILITY_NAME_SEPARATOR}${itemName}`
19
- : sourceName;
20
- }
21
- /**
22
- * Parse a capability name into its components. Returns `null` when `name`
23
- * is empty. When the name has no separator, `itemName` is undefined
24
- * (the caller can treat that as a whole-source invocation).
25
- */
26
- function parseCapabilityName(name) {
27
- if (!name)
28
- return null;
29
- const sepIdx = name.indexOf(CAPABILITY_NAME_SEPARATOR);
30
- if (sepIdx < 0)
31
- return { sourceName: name };
32
- return {
33
- sourceName: name.slice(0, sepIdx),
34
- itemName: name.slice(sepIdx + CAPABILITY_NAME_SEPARATOR.length),
35
- };
36
- }
37
-
38
- export { CAPABILITY_NAME_SEPARATOR, formatCapabilityName, parseCapabilityName };
39
- //# sourceMappingURL=capabilityNaming.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capabilityNaming.mjs","sources":["../../../src/providers/capabilityNaming.ts"],"sourcesContent":["/**\n * Shared capability-name encoding used by source-specific providers\n * (MCP, A2A, and future providers that expose multi-level namespaces).\n *\n * A capability name encodes `<sourceName>__<itemName>` where:\n * - `sourceName` is the provider-level identifier (MCP server name,\n * A2A remote name, etc.)\n * - `itemName` is the per-source sub-unit (MCP tool name, A2A skill id)\n *\n * Centralizing the separator + parsing here keeps both providers in lockstep\n * and prevents collisions when re-exported from the provider barrel.\n */\n\n/** Separator between source and item in an encoded capability name. */\nexport const CAPABILITY_NAME_SEPARATOR = '__';\n\n/** Compose a capability name. If `itemName` is omitted, returns just `sourceName`. */\nexport function formatCapabilityName(\n sourceName: string,\n itemName?: string\n): string {\n return itemName\n ? `${sourceName}${CAPABILITY_NAME_SEPARATOR}${itemName}`\n : sourceName;\n}\n\n/**\n * Parse a capability name into its components. Returns `null` when `name`\n * is empty. When the name has no separator, `itemName` is undefined\n * (the caller can treat that as a whole-source invocation).\n */\nexport function parseCapabilityName(\n name: string\n): { sourceName: string; itemName?: string } | null {\n if (!name) return null;\n const sepIdx = name.indexOf(CAPABILITY_NAME_SEPARATOR);\n if (sepIdx < 0) return { sourceName: name };\n return {\n sourceName: name.slice(0, sepIdx),\n itemName: name.slice(sepIdx + CAPABILITY_NAME_SEPARATOR.length),\n };\n}\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;AAWG;AAEH;AACO,MAAM,yBAAyB,GAAG;AAEzC;AACM,SAAU,oBAAoB,CAClC,UAAkB,EAClB,QAAiB,EAAA;AAEjB,IAAA,OAAO;AACL,UAAE,CAAA,EAAG,UAAU,GAAG,yBAAyB,CAAA,EAAG,QAAQ,CAAA;UACpD,UAAU;AAChB;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CACjC,IAAY,EAAA;AAEZ,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACtD,IAAI,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;IAC3C,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC;KAChE;AACH;;;;"}