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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (800) hide show
  1. package/README.md +62 -0
  2. package/dist/cjs/agents/AgentContext.cjs +274 -67
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/enum.cjs +44 -13
  5. package/dist/cjs/common/enum.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +182 -5
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  10. package/dist/cjs/hooks/HookRegistry.cjs +162 -0
  11. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
  12. package/dist/cjs/hooks/executeHooks.cjs +276 -0
  13. package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
  14. package/dist/cjs/hooks/matchers.cjs +256 -0
  15. package/dist/cjs/hooks/matchers.cjs.map +1 -0
  16. package/dist/cjs/hooks/types.cjs +27 -0
  17. package/dist/cjs/hooks/types.cjs.map +1 -0
  18. package/dist/cjs/langchain/google-common.cjs +3 -0
  19. package/dist/cjs/langchain/google-common.cjs.map +1 -0
  20. package/dist/cjs/langchain/index.cjs +86 -0
  21. package/dist/cjs/langchain/index.cjs.map +1 -0
  22. package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
  23. package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
  24. package/dist/cjs/langchain/messages/tool.cjs +3 -0
  25. package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
  26. package/dist/cjs/langchain/messages.cjs +51 -0
  27. package/dist/cjs/langchain/messages.cjs.map +1 -0
  28. package/dist/cjs/langchain/openai.cjs +3 -0
  29. package/dist/cjs/langchain/openai.cjs.map +1 -0
  30. package/dist/cjs/langchain/prompts.cjs +11 -0
  31. package/dist/cjs/langchain/prompts.cjs.map +1 -0
  32. package/dist/cjs/langchain/runnables.cjs +19 -0
  33. package/dist/cjs/langchain/runnables.cjs.map +1 -0
  34. package/dist/cjs/langchain/tools.cjs +23 -0
  35. package/dist/cjs/langchain/tools.cjs.map +1 -0
  36. package/dist/cjs/langchain/utils/env.cjs +11 -0
  37. package/dist/cjs/langchain/utils/env.cjs.map +1 -0
  38. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
  39. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  40. package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
  41. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
  42. package/dist/cjs/llm/bedrock/index.cjs +61 -33
  43. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  44. package/dist/cjs/llm/openai/index.cjs +0 -3
  45. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  46. package/dist/cjs/llm/openai/utils/index.cjs +27 -10
  47. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  48. package/dist/cjs/main.cjs +178 -127
  49. package/dist/cjs/main.cjs.map +1 -1
  50. package/dist/cjs/messages/cache.cjs +89 -0
  51. package/dist/cjs/messages/cache.cjs.map +1 -1
  52. package/dist/cjs/messages/contextPruning.cjs +156 -0
  53. package/dist/cjs/messages/contextPruning.cjs.map +1 -0
  54. package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
  55. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
  56. package/dist/cjs/messages/format.cjs +144 -20
  57. package/dist/cjs/messages/format.cjs.map +1 -1
  58. package/dist/cjs/messages/prune.cjs +505 -4
  59. package/dist/cjs/messages/prune.cjs.map +1 -1
  60. package/dist/cjs/run.cjs +141 -1
  61. package/dist/cjs/run.cjs.map +1 -1
  62. package/dist/cjs/tools/BashExecutor.cjs +235 -0
  63. package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
  64. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
  65. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
  66. package/dist/cjs/tools/CodeExecutor.cjs +44 -47
  67. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  68. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
  69. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  70. package/dist/cjs/tools/ReadFile.cjs +44 -0
  71. package/dist/cjs/tools/ReadFile.cjs.map +1 -0
  72. package/dist/cjs/tools/SkillTool.cjs +51 -0
  73. package/dist/cjs/tools/SkillTool.cjs.map +1 -0
  74. package/dist/cjs/tools/SubagentTool.cjs +93 -0
  75. package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
  76. package/dist/cjs/tools/ToolNode.cjs +450 -24
  77. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  78. package/dist/cjs/tools/search/search.cjs +11 -3
  79. package/dist/cjs/tools/search/search.cjs.map +1 -1
  80. package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
  81. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
  82. package/dist/cjs/tools/search/tavily-search.cjs +372 -0
  83. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
  84. package/dist/cjs/tools/search/tool.cjs +28 -4
  85. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  86. package/dist/cjs/tools/search/utils.cjs +10 -3
  87. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  88. package/dist/cjs/tools/skillCatalog.cjs +84 -0
  89. package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
  90. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
  91. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
  92. package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
  93. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
  94. package/dist/cjs/types/agent-cache.cjs +53 -0
  95. package/dist/cjs/types/agent-cache.cjs.map +1 -0
  96. package/dist/cjs/types/graph.cjs.map +1 -1
  97. package/dist/cjs/utils/truncation.cjs +135 -0
  98. package/dist/cjs/utils/truncation.cjs.map +1 -0
  99. package/dist/esm/agents/AgentContext.mjs +274 -67
  100. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  101. package/dist/esm/common/enum.mjs +44 -12
  102. package/dist/esm/common/enum.mjs.map +1 -1
  103. package/dist/esm/graphs/Graph.mjs +182 -5
  104. package/dist/esm/graphs/Graph.mjs.map +1 -1
  105. package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
  106. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  107. package/dist/esm/hooks/HookRegistry.mjs +160 -0
  108. package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
  109. package/dist/esm/hooks/executeHooks.mjs +273 -0
  110. package/dist/esm/hooks/executeHooks.mjs.map +1 -0
  111. package/dist/esm/hooks/matchers.mjs +251 -0
  112. package/dist/esm/hooks/matchers.mjs.map +1 -0
  113. package/dist/esm/hooks/types.mjs +25 -0
  114. package/dist/esm/hooks/types.mjs.map +1 -0
  115. package/dist/esm/langchain/google-common.mjs +2 -0
  116. package/dist/esm/langchain/google-common.mjs.map +1 -0
  117. package/dist/esm/langchain/index.mjs +5 -0
  118. package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
  119. package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
  120. package/dist/esm/langchain/messages/tool.mjs +2 -0
  121. package/dist/esm/langchain/messages/tool.mjs.map +1 -0
  122. package/dist/esm/langchain/messages.mjs +2 -0
  123. package/dist/esm/langchain/messages.mjs.map +1 -0
  124. package/dist/esm/langchain/openai.mjs +2 -0
  125. package/dist/esm/langchain/openai.mjs.map +1 -0
  126. package/dist/esm/langchain/prompts.mjs +2 -0
  127. package/dist/esm/langchain/prompts.mjs.map +1 -0
  128. package/dist/esm/langchain/runnables.mjs +2 -0
  129. package/dist/esm/langchain/runnables.mjs.map +1 -0
  130. package/dist/esm/langchain/tools.mjs +2 -0
  131. package/dist/esm/langchain/tools.mjs.map +1 -0
  132. package/dist/esm/langchain/utils/env.mjs +2 -0
  133. package/dist/esm/langchain/utils/env.mjs.map +1 -0
  134. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
  135. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  136. package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
  137. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
  138. package/dist/esm/llm/bedrock/index.mjs +61 -34
  139. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  140. package/dist/esm/llm/openai/index.mjs +0 -3
  141. package/dist/esm/llm/openai/index.mjs.map +1 -1
  142. package/dist/esm/llm/openai/utils/index.mjs +27 -10
  143. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  144. package/dist/esm/main.mjs +21 -27
  145. package/dist/esm/main.mjs.map +1 -1
  146. package/dist/esm/messages/cache.mjs +89 -0
  147. package/dist/esm/messages/cache.mjs.map +1 -1
  148. package/dist/esm/messages/contextPruning.mjs +154 -0
  149. package/dist/esm/messages/contextPruning.mjs.map +1 -0
  150. package/dist/esm/messages/contextPruningSettings.mjs +50 -0
  151. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
  152. package/dist/esm/messages/format.mjs +136 -12
  153. package/dist/esm/messages/format.mjs.map +1 -1
  154. package/dist/esm/messages/prune.mjs +504 -7
  155. package/dist/esm/messages/prune.mjs.map +1 -1
  156. package/dist/esm/run.mjs +141 -1
  157. package/dist/esm/run.mjs.map +1 -1
  158. package/dist/esm/tools/BashExecutor.mjs +227 -0
  159. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  160. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
  161. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  162. package/dist/esm/tools/CodeExecutor.mjs +44 -48
  163. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  164. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
  165. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  166. package/dist/esm/tools/ReadFile.mjs +39 -0
  167. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  168. package/dist/esm/tools/SkillTool.mjs +46 -0
  169. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  170. package/dist/esm/tools/SubagentTool.mjs +86 -0
  171. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  172. package/dist/esm/tools/ToolNode.mjs +452 -26
  173. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  174. package/dist/esm/tools/search/search.mjs +11 -3
  175. package/dist/esm/tools/search/search.mjs.map +1 -1
  176. package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
  177. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
  178. package/dist/esm/tools/search/tavily-search.mjs +370 -0
  179. package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
  180. package/dist/esm/tools/search/tool.mjs +28 -4
  181. package/dist/esm/tools/search/tool.mjs.map +1 -1
  182. package/dist/esm/tools/search/utils.mjs +10 -3
  183. package/dist/esm/tools/search/utils.mjs.map +1 -1
  184. package/dist/esm/tools/skillCatalog.mjs +82 -0
  185. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  186. package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
  187. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  188. package/dist/esm/tools/toolOutputReferences.mjs +662 -0
  189. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
  190. package/dist/esm/types/agent-cache.mjs +51 -0
  191. package/dist/esm/types/agent-cache.mjs.map +1 -0
  192. package/dist/esm/types/graph.mjs.map +1 -1
  193. package/dist/esm/utils/truncation.mjs +128 -0
  194. package/dist/esm/utils/truncation.mjs.map +1 -0
  195. package/dist/types/agents/AgentContext.d.ts +101 -8
  196. package/dist/types/common/enum.d.ts +39 -12
  197. package/dist/types/common/index.d.ts +0 -1
  198. package/dist/types/graphs/Graph.d.ts +43 -0
  199. package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
  200. package/dist/types/graphs/index.d.ts +0 -1
  201. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  202. package/dist/types/hooks/executeHooks.d.ts +79 -0
  203. package/dist/types/hooks/index.d.ts +6 -0
  204. package/dist/types/hooks/matchers.d.ts +95 -0
  205. package/dist/types/hooks/types.d.ts +320 -0
  206. package/dist/types/index.d.ts +9 -9
  207. package/dist/types/langchain/google-common.d.ts +1 -0
  208. package/dist/types/langchain/index.d.ts +8 -0
  209. package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
  210. package/dist/types/langchain/messages/tool.d.ts +1 -0
  211. package/dist/types/langchain/messages.d.ts +2 -0
  212. package/dist/types/langchain/openai.d.ts +1 -0
  213. package/dist/types/langchain/prompts.d.ts +1 -0
  214. package/dist/types/langchain/runnables.d.ts +2 -0
  215. package/dist/types/langchain/tools.d.ts +2 -0
  216. package/dist/types/langchain/utils/env.d.ts +1 -0
  217. package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
  218. package/dist/types/llm/bedrock/index.d.ts +54 -1
  219. package/dist/types/messages/contextPruning.d.ts +42 -0
  220. package/dist/types/messages/contextPruningSettings.d.ts +44 -0
  221. package/dist/types/messages/format.d.ts +9 -1
  222. package/dist/types/messages/index.d.ts +2 -0
  223. package/dist/types/messages/prune.d.ts +91 -1
  224. package/dist/types/run.d.ts +2 -0
  225. package/dist/types/tools/BashExecutor.d.ts +76 -0
  226. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  227. package/dist/types/tools/CodeExecutor.d.ts +8 -26
  228. package/dist/types/tools/ReadFile.d.ts +28 -0
  229. package/dist/types/tools/SkillTool.d.ts +40 -0
  230. package/dist/types/tools/SubagentTool.d.ts +36 -0
  231. package/dist/types/tools/ToolNode.d.ts +77 -5
  232. package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
  233. package/dist/types/tools/search/tavily-search.d.ts +4 -0
  234. package/dist/types/tools/search/types.d.ts +99 -5
  235. package/dist/types/tools/search/utils.d.ts +2 -2
  236. package/dist/types/tools/skillCatalog.d.ts +19 -0
  237. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  238. package/dist/types/tools/subagent/index.d.ts +2 -0
  239. package/dist/types/tools/subagent/types.d.ts +84 -0
  240. package/dist/types/tools/toolOutputReferences.d.ts +236 -0
  241. package/dist/types/types/agent-cache.d.ts +70 -0
  242. package/dist/types/types/graph.d.ts +162 -22
  243. package/dist/types/types/index.d.ts +3 -0
  244. package/dist/types/types/messages.d.ts +26 -0
  245. package/dist/types/types/run.d.ts +22 -0
  246. package/dist/types/types/skill.d.ts +9 -0
  247. package/dist/types/types/tools.d.ts +111 -0
  248. package/dist/types/utils/index.d.ts +1 -3
  249. package/dist/types/utils/truncation.d.ts +70 -0
  250. package/package.json +57 -17
  251. package/src/agents/AgentContext.js.map +1 -0
  252. package/src/agents/AgentContext.test.js.map +1 -0
  253. package/src/agents/AgentContext.ts +321 -78
  254. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
  255. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +264 -0
  256. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
  257. package/src/agents/__tests__/AgentContext.test.js.map +1 -0
  258. package/src/agents/__tests__/AgentContext.test.ts +632 -0
  259. package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
  260. package/src/common/__tests__/enum.test.ts +7 -17
  261. package/src/common/enum.js.map +1 -0
  262. package/src/common/enum.ts +43 -12
  263. package/src/common/index.js.map +1 -0
  264. package/src/common/index.ts +0 -1
  265. package/src/events.js.map +1 -0
  266. package/src/graphs/Graph.js.map +1 -0
  267. package/src/graphs/Graph.ts +222 -2
  268. package/src/graphs/MultiAgentGraph.js.map +1 -0
  269. package/src/graphs/MultiAgentGraph.ts +154 -1466
  270. package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
  271. package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
  272. package/src/graphs/__tests__/structured-output.test.js.map +1 -0
  273. package/src/graphs/contextManagement.e2e.test.js.map +1 -0
  274. package/src/graphs/contextManagement.test.js.map +1 -0
  275. package/src/graphs/handoffValidation.test.js.map +1 -0
  276. package/src/graphs/index.js.map +1 -0
  277. package/src/graphs/index.ts +0 -1
  278. package/src/hooks/HookRegistry.ts +208 -0
  279. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  280. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  281. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  282. package/src/hooks/__tests__/integration.test.ts +337 -0
  283. package/src/hooks/__tests__/matchers.test.ts +238 -0
  284. package/src/hooks/__tests__/toolHooks.test.ts +665 -0
  285. package/src/hooks/executeHooks.ts +375 -0
  286. package/src/hooks/index.ts +57 -0
  287. package/src/hooks/matchers.ts +280 -0
  288. package/src/hooks/types.ts +404 -0
  289. package/src/index.js.map +1 -0
  290. package/src/index.ts +15 -24
  291. package/src/instrumentation.js.map +1 -0
  292. package/src/langchain/google-common.ts +1 -0
  293. package/src/langchain/index.ts +8 -0
  294. package/src/langchain/language_models/chat_models.ts +1 -0
  295. package/src/langchain/messages/tool.ts +5 -0
  296. package/src/langchain/messages.ts +21 -0
  297. package/src/langchain/openai.ts +1 -0
  298. package/src/langchain/prompts.ts +1 -0
  299. package/src/langchain/runnables.ts +7 -0
  300. package/src/langchain/tools.ts +8 -0
  301. package/src/langchain/utils/env.ts +1 -0
  302. package/src/llm/anthropic/index.js.map +1 -0
  303. package/src/llm/anthropic/types.js.map +1 -0
  304. package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
  305. package/src/llm/anthropic/utils/message_inputs.ts +10 -1
  306. package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
  307. package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
  308. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
  309. package/src/llm/anthropic/utils/tools.js.map +1 -0
  310. package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
  311. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
  312. package/src/llm/bedrock/cacheSupport.test.ts +99 -0
  313. package/src/llm/bedrock/cacheSupport.ts +53 -0
  314. package/src/llm/bedrock/index.js.map +1 -0
  315. package/src/llm/bedrock/index.ts +116 -41
  316. package/src/llm/bedrock/types.js.map +1 -0
  317. package/src/llm/bedrock/utils/index.js.map +1 -0
  318. package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
  319. package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
  320. package/src/llm/fake.js.map +1 -0
  321. package/src/llm/google/index.js.map +1 -0
  322. package/src/llm/google/types.js.map +1 -0
  323. package/src/llm/google/utils/common.js.map +1 -0
  324. package/src/llm/google/utils/tools.js.map +1 -0
  325. package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
  326. package/src/llm/openai/index.js.map +1 -0
  327. package/src/llm/openai/types.js.map +1 -0
  328. package/src/llm/openai/utils/index.js.map +1 -0
  329. package/src/llm/openai/utils/index.ts +31 -14
  330. package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
  331. package/src/llm/openrouter/index.js.map +1 -0
  332. package/src/llm/openrouter/reasoning.test.js.map +1 -0
  333. package/src/llm/providers.js.map +1 -0
  334. package/src/llm/text.js.map +1 -0
  335. package/src/llm/vertexai/index.js.map +1 -0
  336. package/src/messages/__tests__/contextPruning.test.ts +228 -0
  337. package/src/messages/__tests__/tools.test.js.map +1 -0
  338. package/src/messages/cache.js.map +1 -0
  339. package/src/messages/cache.test.js.map +1 -0
  340. package/src/messages/cache.test.ts +62 -24
  341. package/src/messages/cache.ts +112 -0
  342. package/src/messages/content.js.map +1 -0
  343. package/src/messages/content.test.js.map +1 -0
  344. package/src/messages/contextPruning.ts +191 -0
  345. package/src/messages/contextPruningSettings.ts +90 -0
  346. package/src/messages/core.js.map +1 -0
  347. package/src/messages/ensureThinkingBlock.test.js.map +1 -0
  348. package/src/messages/format.js.map +1 -0
  349. package/src/messages/format.ts +164 -12
  350. package/src/messages/formatAgentMessages.skills.test.ts +413 -0
  351. package/src/messages/formatAgentMessages.test.js.map +1 -0
  352. package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
  353. package/src/messages/formatMessage.test.js.map +1 -0
  354. package/src/messages/ids.js.map +1 -0
  355. package/src/messages/index.js.map +1 -0
  356. package/src/messages/index.ts +2 -0
  357. package/src/messages/labelContentByAgent.test.js.map +1 -0
  358. package/src/messages/prune.js.map +1 -0
  359. package/src/messages/prune.ts +661 -4
  360. package/src/messages/reducer.js.map +1 -0
  361. package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
  362. package/src/messages/summarize.js.map +1 -0
  363. package/src/messages/summarize.test.js.map +1 -0
  364. package/src/messages/tools.js.map +1 -0
  365. package/src/mockStream.js.map +1 -0
  366. package/src/prompts/collab.js.map +1 -0
  367. package/src/prompts/index.js.map +1 -0
  368. package/src/prompts/taskmanager.js.map +1 -0
  369. package/src/run.js.map +1 -0
  370. package/src/run.ts +155 -1
  371. package/src/schemas/index.js.map +1 -0
  372. package/src/schemas/schema-preparation.test.js.map +1 -0
  373. package/src/schemas/validate.js.map +1 -0
  374. package/src/schemas/validate.test.js.map +1 -0
  375. package/src/scripts/abort.js.map +1 -0
  376. package/src/scripts/ant_web_search.js.map +1 -0
  377. package/src/scripts/ant_web_search_edge_case.js.map +1 -0
  378. package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
  379. package/src/scripts/args.js.map +1 -0
  380. package/src/scripts/bedrock-cache-debug.js.map +1 -0
  381. package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
  382. package/src/scripts/bedrock-merge-test.js.map +1 -0
  383. package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
  384. package/src/scripts/caching.js.map +1 -0
  385. package/src/scripts/cli.js.map +1 -0
  386. package/src/scripts/cli2.js.map +1 -0
  387. package/src/scripts/cli3.js.map +1 -0
  388. package/src/scripts/cli4.js.map +1 -0
  389. package/src/scripts/cli5.js.map +1 -0
  390. package/src/scripts/code_exec.js.map +1 -0
  391. package/src/scripts/code_exec_files.js.map +1 -0
  392. package/src/scripts/code_exec_multi_session.js.map +1 -0
  393. package/src/scripts/code_exec_ptc.js.map +1 -0
  394. package/src/scripts/code_exec_session.js.map +1 -0
  395. package/src/scripts/code_exec_simple.js.map +1 -0
  396. package/src/scripts/content.js.map +1 -0
  397. package/src/scripts/empty_input.js.map +1 -0
  398. package/src/scripts/handoff-test.js.map +1 -0
  399. package/src/scripts/image.js.map +1 -0
  400. package/src/scripts/memory.js.map +1 -0
  401. package/src/scripts/multi-agent-chain.js.map +1 -0
  402. package/src/scripts/multi-agent-chain.ts +2 -2
  403. package/src/scripts/multi-agent-conditional.js.map +1 -0
  404. package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
  405. package/src/scripts/multi-agent-document-review-chain.ts +2 -2
  406. package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
  407. package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
  408. package/src/scripts/multi-agent-parallel-start.js.map +1 -0
  409. package/src/scripts/multi-agent-parallel.js.map +1 -0
  410. package/src/scripts/multi-agent-parallel.ts +3 -3
  411. package/src/scripts/multi-agent-sequence.js.map +1 -0
  412. package/src/scripts/multi-agent-sequence.ts +3 -3
  413. package/src/scripts/multi-agent-subagent.ts +246 -0
  414. package/src/scripts/multi-agent-supervisor.js.map +1 -0
  415. package/src/scripts/multi-agent-supervisor.ts +5 -5
  416. package/src/scripts/multi-agent-test.js.map +1 -0
  417. package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
  418. package/src/scripts/parallel-full-metadata-test.js.map +1 -0
  419. package/src/scripts/parallel-tools-test.js.map +1 -0
  420. package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
  421. package/src/scripts/programmatic_exec.js.map +1 -0
  422. package/src/scripts/programmatic_exec_agent.js.map +1 -0
  423. package/src/scripts/search.js.map +1 -0
  424. package/src/scripts/sequential-full-metadata-test.js.map +1 -0
  425. package/src/scripts/sequential-full-metadata-test.ts +2 -2
  426. package/src/scripts/simple.js.map +1 -0
  427. package/src/scripts/single-agent-metadata-test.js.map +1 -0
  428. package/src/scripts/stream.js.map +1 -0
  429. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  430. package/src/scripts/subagent-tools-debug.ts +160 -0
  431. package/src/scripts/test-custom-prompt-key.js.map +1 -0
  432. package/src/scripts/test-custom-prompt-key.ts +3 -3
  433. package/src/scripts/test-handoff-input.js.map +1 -0
  434. package/src/scripts/test-handoff-input.ts +1 -1
  435. package/src/scripts/test-handoff-preamble.js.map +1 -0
  436. package/src/scripts/test-handoff-steering.js.map +1 -0
  437. package/src/scripts/test-handoff-steering.ts +3 -3
  438. package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
  439. package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
  440. package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
  441. package/src/scripts/test-parallel-agent-labeling.ts +3 -3
  442. package/src/scripts/test-parallel-handoffs.js.map +1 -0
  443. package/src/scripts/test-parallel-handoffs.ts +2 -2
  444. package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
  445. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
  446. package/src/scripts/test-thinking-handoff.js.map +1 -0
  447. package/src/scripts/test-thinking-handoff.ts +1 -1
  448. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
  449. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
  450. package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
  451. package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
  452. package/src/scripts/test-tools-before-handoff.js.map +1 -0
  453. package/src/scripts/test-tools-before-handoff.ts +1 -1
  454. package/src/scripts/test_code_api.js.map +1 -0
  455. package/src/scripts/thinking-bedrock.js.map +1 -0
  456. package/src/scripts/thinking-vertexai.js.map +1 -0
  457. package/src/scripts/thinking.js.map +1 -0
  458. package/src/scripts/tool_search.js.map +1 -0
  459. package/src/scripts/tools.js.map +1 -0
  460. package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
  461. package/src/specs/agent-handoffs.test.js.map +1 -0
  462. package/src/specs/agent-handoffs.test.ts +26 -483
  463. package/src/specs/anthropic.simple.test.js.map +1 -0
  464. package/src/specs/anthropic.simple.test.ts +61 -0
  465. package/src/specs/azure.simple.test.js.map +1 -0
  466. package/src/specs/cache.simple.test.js.map +1 -0
  467. package/src/specs/custom-event-await.test.js.map +1 -0
  468. package/src/specs/deepseek.simple.test.js.map +1 -0
  469. package/src/specs/emergency-prune.test.js.map +1 -0
  470. package/src/specs/moonshot.simple.test.js.map +1 -0
  471. package/src/specs/multi-agent-summarization.test.ts +396 -0
  472. package/src/specs/observability.integration.test.js.map +1 -0
  473. package/src/specs/openai.simple.test.js.map +1 -0
  474. package/src/specs/openrouter.simple.test.js.map +1 -0
  475. package/src/specs/prune.orphans.test.ts +248 -0
  476. package/src/specs/prune.test.js.map +1 -0
  477. package/src/specs/prune.test.ts +104 -16
  478. package/src/specs/reasoning.test.js.map +1 -0
  479. package/src/specs/spec.utils.js.map +1 -0
  480. package/src/specs/thinking-handoff.test.js.map +1 -0
  481. package/src/specs/thinking-handoff.test.ts +19 -19
  482. package/src/specs/thinking-prune.test.js.map +1 -0
  483. package/src/specs/token-distribution-edge-case.test.js.map +1 -0
  484. package/src/specs/token-memoization.test.js.map +1 -0
  485. package/src/specs/tokens.test.js.map +1 -0
  486. package/src/specs/tool-error.test.js.map +1 -0
  487. package/src/splitStream.js.map +1 -0
  488. package/src/splitStream.test.js.map +1 -0
  489. package/src/stream.js.map +1 -0
  490. package/src/stream.test.js.map +1 -0
  491. package/src/test/mockTools.js.map +1 -0
  492. package/src/tools/BashExecutor.ts +281 -0
  493. package/src/tools/BashProgrammaticToolCalling.ts +397 -0
  494. package/src/tools/BrowserTools.js.map +1 -0
  495. package/src/tools/Calculator.js.map +1 -0
  496. package/src/tools/Calculator.test.js.map +1 -0
  497. package/src/tools/CodeExecutor.js.map +1 -0
  498. package/src/tools/CodeExecutor.ts +62 -54
  499. package/src/tools/ProgrammaticToolCalling.js.map +1 -0
  500. package/src/tools/ProgrammaticToolCalling.ts +29 -14
  501. package/src/tools/ReadFile.ts +39 -0
  502. package/src/tools/SkillTool.ts +46 -0
  503. package/src/tools/StreamingToolCallBuffer.js.map +1 -0
  504. package/src/tools/SubagentTool.ts +100 -0
  505. package/src/tools/ToolNode.js.map +1 -0
  506. package/src/tools/ToolNode.ts +548 -26
  507. package/src/tools/ToolSearch.js.map +1 -0
  508. package/src/tools/__tests__/BashExecutor.test.ts +49 -0
  509. package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
  510. package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
  511. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
  512. package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
  513. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
  514. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  515. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  516. package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
  517. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  518. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  519. package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
  520. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
  521. package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
  522. package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
  523. package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
  524. package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
  525. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
  526. package/src/tools/__tests__/handlers.test.js.map +1 -0
  527. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  528. package/src/tools/__tests__/subagentHooks.test.ts +210 -0
  529. package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
  530. package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
  531. package/src/tools/handlers.js.map +1 -0
  532. package/src/tools/schema.js.map +1 -0
  533. package/src/tools/search/anthropic.js.map +1 -0
  534. package/src/tools/search/content.js.map +1 -0
  535. package/src/tools/search/content.test.js.map +1 -0
  536. package/src/tools/search/firecrawl.js.map +1 -0
  537. package/src/tools/search/format.js.map +1 -0
  538. package/src/tools/search/highlights.js.map +1 -0
  539. package/src/tools/search/index.js.map +1 -0
  540. package/src/tools/search/jina-reranker.test.js.map +1 -0
  541. package/src/tools/search/rerankers.js.map +1 -0
  542. package/src/tools/search/schema.js.map +1 -0
  543. package/src/tools/search/search.js.map +1 -0
  544. package/src/tools/search/search.ts +12 -2
  545. package/src/tools/search/serper-scraper.js.map +1 -0
  546. package/src/tools/search/tavily-scraper.ts +235 -0
  547. package/src/tools/search/tavily-search.ts +424 -0
  548. package/src/tools/search/tavily.test.ts +965 -0
  549. package/src/tools/search/test.js.map +1 -0
  550. package/src/tools/search/tool.js.map +1 -0
  551. package/src/tools/search/tool.ts +36 -2
  552. package/src/tools/search/types.js.map +1 -0
  553. package/src/tools/search/types.ts +133 -8
  554. package/src/tools/search/utils.js.map +1 -0
  555. package/src/tools/search/utils.ts +13 -5
  556. package/src/tools/skillCatalog.ts +126 -0
  557. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  558. package/src/tools/subagent/index.ts +13 -0
  559. package/src/tools/subagent/types.test.ts +70 -0
  560. package/src/tools/subagent/types.ts +115 -0
  561. package/src/tools/toolOutputReferences.ts +825 -0
  562. package/src/types/agent-cache.ts +73 -0
  563. package/src/types/graph.js.map +1 -0
  564. package/src/types/graph.test.js.map +1 -0
  565. package/src/types/graph.ts +171 -20
  566. package/src/types/index.js.map +1 -0
  567. package/src/types/index.ts +3 -0
  568. package/src/types/llm.js.map +1 -0
  569. package/src/types/messages.js.map +1 -0
  570. package/src/types/messages.ts +27 -0
  571. package/src/types/run.js.map +1 -0
  572. package/src/types/run.ts +22 -0
  573. package/src/types/skill.ts +11 -0
  574. package/src/types/stream.js.map +1 -0
  575. package/src/types/tools.js.map +1 -0
  576. package/src/types/tools.ts +118 -0
  577. package/src/utils/__tests__/truncation.test.ts +66 -0
  578. package/src/utils/contextAnalytics.js.map +1 -0
  579. package/src/utils/contextAnalytics.test.js.map +1 -0
  580. package/src/utils/events.js.map +1 -0
  581. package/src/utils/graph.js.map +1 -0
  582. package/src/utils/handlers.js.map +1 -0
  583. package/src/utils/index.js.map +1 -0
  584. package/src/utils/index.ts +1 -3
  585. package/src/utils/llm.js.map +1 -0
  586. package/src/utils/llmConfig.js.map +1 -0
  587. package/src/utils/logging.js.map +1 -0
  588. package/src/utils/misc.js.map +1 -0
  589. package/src/utils/run.js.map +1 -0
  590. package/src/utils/schema.js.map +1 -0
  591. package/src/utils/title.js.map +1 -0
  592. package/src/utils/tokens.js.map +1 -0
  593. package/src/utils/toonFormat.js.map +1 -0
  594. package/src/utils/truncation.ts +154 -0
  595. package/dist/cjs/common/spawnPath.cjs +0 -104
  596. package/dist/cjs/common/spawnPath.cjs.map +0 -1
  597. package/dist/cjs/content/ArtifactStore.cjs +0 -579
  598. package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
  599. package/dist/cjs/content/ContentStore.cjs +0 -638
  600. package/dist/cjs/content/ContentStore.cjs.map +0 -1
  601. package/dist/cjs/content/contentAnalyzer.cjs +0 -91
  602. package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
  603. package/dist/cjs/content/index.cjs +0 -20
  604. package/dist/cjs/content/index.cjs.map +0 -1
  605. package/dist/cjs/content/mcpAutoCache.cjs +0 -115
  606. package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
  607. package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
  608. package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
  609. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
  610. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
  611. package/dist/cjs/providers/a2a/client.cjs +0 -92
  612. package/dist/cjs/providers/a2a/client.cjs.map +0 -1
  613. package/dist/cjs/providers/a2a/config.cjs +0 -38
  614. package/dist/cjs/providers/a2a/config.cjs.map +0 -1
  615. package/dist/cjs/providers/capabilityNaming.cjs +0 -43
  616. package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
  617. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
  618. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
  619. package/dist/cjs/providers/mcp/config.cjs +0 -42
  620. package/dist/cjs/providers/mcp/config.cjs.map +0 -1
  621. package/dist/cjs/providers/mcp/transport.cjs +0 -65
  622. package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
  623. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
  624. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
  625. package/dist/cjs/providers/types.cjs +0 -51
  626. package/dist/cjs/providers/types.cjs.map +0 -1
  627. package/dist/cjs/tools/artifacts/schema.cjs +0 -86
  628. package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
  629. package/dist/cjs/tools/artifacts/tool.cjs +0 -219
  630. package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
  631. package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
  632. package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
  633. package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
  634. package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
  635. package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
  636. package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
  637. package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
  638. package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
  639. package/dist/cjs/tools/proxyTool.cjs +0 -102
  640. package/dist/cjs/tools/proxyTool.cjs.map +0 -1
  641. package/dist/cjs/utils/childAgentContext.cjs +0 -242
  642. package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
  643. package/dist/cjs/utils/credentials.cjs +0 -142
  644. package/dist/cjs/utils/credentials.cjs.map +0 -1
  645. package/dist/cjs/utils/httpClient.cjs +0 -74
  646. package/dist/cjs/utils/httpClient.cjs.map +0 -1
  647. package/dist/cjs/utils/toolManifest.cjs +0 -100
  648. package/dist/cjs/utils/toolManifest.cjs.map +0 -1
  649. package/dist/esm/common/spawnPath.mjs +0 -95
  650. package/dist/esm/common/spawnPath.mjs.map +0 -1
  651. package/dist/esm/content/ArtifactStore.mjs +0 -576
  652. package/dist/esm/content/ArtifactStore.mjs.map +0 -1
  653. package/dist/esm/content/ContentStore.mjs +0 -635
  654. package/dist/esm/content/ContentStore.mjs.map +0 -1
  655. package/dist/esm/content/contentAnalyzer.mjs +0 -87
  656. package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
  657. package/dist/esm/content/index.mjs +0 -5
  658. package/dist/esm/content/mcpAutoCache.mjs +0 -111
  659. package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
  660. package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
  661. package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
  662. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
  663. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
  664. package/dist/esm/providers/a2a/client.mjs +0 -88
  665. package/dist/esm/providers/a2a/client.mjs.map +0 -1
  666. package/dist/esm/providers/a2a/config.mjs +0 -35
  667. package/dist/esm/providers/a2a/config.mjs.map +0 -1
  668. package/dist/esm/providers/capabilityNaming.mjs +0 -39
  669. package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
  670. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
  671. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
  672. package/dist/esm/providers/mcp/config.mjs +0 -39
  673. package/dist/esm/providers/mcp/config.mjs.map +0 -1
  674. package/dist/esm/providers/mcp/transport.mjs +0 -63
  675. package/dist/esm/providers/mcp/transport.mjs.map +0 -1
  676. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
  677. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
  678. package/dist/esm/providers/types.mjs +0 -51
  679. package/dist/esm/providers/types.mjs.map +0 -1
  680. package/dist/esm/tools/artifacts/schema.mjs +0 -79
  681. package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
  682. package/dist/esm/tools/artifacts/tool.mjs +0 -213
  683. package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
  684. package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
  685. package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
  686. package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
  687. package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
  688. package/dist/esm/tools/fileSearch/schema.mjs +0 -15
  689. package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
  690. package/dist/esm/tools/fileSearch/tool.mjs +0 -152
  691. package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
  692. package/dist/esm/tools/proxyTool.mjs +0 -100
  693. package/dist/esm/tools/proxyTool.mjs.map +0 -1
  694. package/dist/esm/utils/childAgentContext.mjs +0 -237
  695. package/dist/esm/utils/childAgentContext.mjs.map +0 -1
  696. package/dist/esm/utils/credentials.mjs +0 -135
  697. package/dist/esm/utils/credentials.mjs.map +0 -1
  698. package/dist/esm/utils/httpClient.mjs +0 -70
  699. package/dist/esm/utils/httpClient.mjs.map +0 -1
  700. package/dist/esm/utils/toolManifest.mjs +0 -96
  701. package/dist/esm/utils/toolManifest.mjs.map +0 -1
  702. package/dist/types/common/spawnPath.d.ts +0 -59
  703. package/dist/types/content/ArtifactStore.d.ts +0 -223
  704. package/dist/types/content/ContentStore.d.ts +0 -140
  705. package/dist/types/content/contentAnalyzer.d.ts +0 -38
  706. package/dist/types/content/index.d.ts +0 -24
  707. package/dist/types/content/mcpAutoCache.d.ts +0 -89
  708. package/dist/types/content/types.d.ts +0 -75
  709. package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
  710. package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
  711. package/dist/types/providers/a2a/client.d.ts +0 -47
  712. package/dist/types/providers/a2a/config.d.ts +0 -18
  713. package/dist/types/providers/a2a/index.d.ts +0 -6
  714. package/dist/types/providers/a2a/types.d.ts +0 -173
  715. package/dist/types/providers/capabilityNaming.d.ts +0 -25
  716. package/dist/types/providers/index.d.ts +0 -12
  717. package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
  718. package/dist/types/providers/mcp/config.d.ts +0 -20
  719. package/dist/types/providers/mcp/index.d.ts +0 -5
  720. package/dist/types/providers/mcp/transport.d.ts +0 -18
  721. package/dist/types/providers/mcp/types.d.ts +0 -112
  722. package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
  723. package/dist/types/providers/tools-server/index.d.ts +0 -1
  724. package/dist/types/providers/types.d.ts +0 -184
  725. package/dist/types/tools/artifacts/index.d.ts +0 -3
  726. package/dist/types/tools/artifacts/schema.d.ts +0 -63
  727. package/dist/types/tools/artifacts/tool.d.ts +0 -16
  728. package/dist/types/tools/artifacts/types.d.ts +0 -127
  729. package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
  730. package/dist/types/tools/fileSearch/index.d.ts +0 -5
  731. package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
  732. package/dist/types/tools/fileSearch/schema.d.ts +0 -13
  733. package/dist/types/tools/fileSearch/tool.d.ts +0 -18
  734. package/dist/types/tools/fileSearch/types.d.ts +0 -139
  735. package/dist/types/tools/proxyTool.d.ts +0 -62
  736. package/dist/types/utils/childAgentContext.d.ts +0 -99
  737. package/dist/types/utils/credentials.d.ts +0 -77
  738. package/dist/types/utils/httpClient.d.ts +0 -46
  739. package/dist/types/utils/toolManifest.d.ts +0 -49
  740. package/src/common/__tests__/spawnPath.test.ts +0 -110
  741. package/src/common/spawnPath.ts +0 -101
  742. package/src/content/ArtifactStore.ts +0 -782
  743. package/src/content/ContentStore.ts +0 -753
  744. package/src/content/contentAnalyzer.ts +0 -105
  745. package/src/content/index.ts +0 -51
  746. package/src/content/mcpAutoCache.ts +0 -185
  747. package/src/content/types.ts +0 -82
  748. package/src/graphs/HandoffRegistry.ts +0 -199
  749. package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
  750. package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
  751. package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
  752. package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
  753. package/src/graphs/handoffValidation.test.ts +0 -353
  754. package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
  755. package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
  756. package/src/providers/__tests__/types.test.ts +0 -64
  757. package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
  758. package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
  759. package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
  760. package/src/providers/a2a/client.ts +0 -115
  761. package/src/providers/a2a/config.ts +0 -40
  762. package/src/providers/a2a/index.ts +0 -29
  763. package/src/providers/a2a/types.ts +0 -191
  764. package/src/providers/capabilityNaming.ts +0 -42
  765. package/src/providers/index.ts +0 -68
  766. package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
  767. package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
  768. package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
  769. package/src/providers/mcp/config.ts +0 -45
  770. package/src/providers/mcp/index.ts +0 -21
  771. package/src/providers/mcp/transport.ts +0 -76
  772. package/src/providers/mcp/types.ts +0 -139
  773. package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
  774. package/src/providers/tools-server/index.ts +0 -1
  775. package/src/providers/types.ts +0 -204
  776. package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
  777. package/src/scripts/test-handoff-preamble.ts +0 -278
  778. package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
  779. package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
  780. package/src/tools/artifacts/index.ts +0 -33
  781. package/src/tools/artifacts/schema.ts +0 -99
  782. package/src/tools/artifacts/tool.ts +0 -289
  783. package/src/tools/artifacts/types.ts +0 -162
  784. package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
  785. package/src/tools/fileSearch/formatter.ts +0 -129
  786. package/src/tools/fileSearch/index.ts +0 -23
  787. package/src/tools/fileSearch/ragClient.ts +0 -137
  788. package/src/tools/fileSearch/schema.ts +0 -19
  789. package/src/tools/fileSearch/tool.ts +0 -207
  790. package/src/tools/fileSearch/types.ts +0 -149
  791. package/src/tools/proxyTool.ts +0 -166
  792. package/src/utils/__tests__/childAgentContext.test.ts +0 -217
  793. package/src/utils/__tests__/credentials.test.ts +0 -130
  794. package/src/utils/__tests__/httpClient.test.ts +0 -75
  795. package/src/utils/__tests__/toolManifest.test.ts +0 -116
  796. package/src/utils/childAgentContext.ts +0 -259
  797. package/src/utils/credentials.ts +0 -157
  798. package/src/utils/httpClient.ts +0 -92
  799. package/src/utils/toolManifest.ts +0 -109
  800. /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
@@ -1,244 +0,0 @@
1
- 'use strict';
2
-
3
- var tools = require('@langchain/core/tools');
4
- var index_js = require('@modelcontextprotocol/sdk/client/index.js');
5
- var types = require('../types.cjs');
6
- var capabilityNaming = require('../capabilityNaming.cjs');
7
- var transport = require('./transport.cjs');
8
- var config = require('./config.cjs');
9
-
10
- /**
11
- * MCPCapabilityProvider — connects to MCP servers via the official MCP SDK
12
- * and exposes their tools as `Capability` / `StructuredToolInterface`.
13
- *
14
- * Mirrors the pattern of `ToolsServerCapabilityProvider`: thin adapter,
15
- * protocol-specific transport, stateless as far as tokens/OAuth are
16
- * concerned (all auth is host-resolved and forwarded via `getAuthHeaders`).
17
- *
18
- * What the host supplies:
19
- * - `servers`: unified spec map (normalized from whatever source:
20
- * programmatic, YAML, DB, marketplace catalog).
21
- * - `getAuthHeaders?`: per-server header resolver. Called at connect
22
- * time. OAuth orchestration / token refresh happens in the host.
23
- *
24
- * What the library does:
25
- * - Picks the right SDK transport per spec.
26
- * - Connects, calls `listTools()`, wraps each tool as a `Capability`.
27
- * - `createRunnables()` returns `StructuredTool`s that invoke the
28
- * server's tools on demand, streaming the string result back to the
29
- * agent.
30
- * - Caches open connections per-instance so repeated `fetchManifest` /
31
- * `createRunnables` calls reuse them.
32
- */
33
- class MCPCapabilityProvider {
34
- providerId;
35
- config;
36
- logger;
37
- connections = new Map();
38
- constructor(config$1) {
39
- if (!config$1.servers || Object.keys(config$1.servers).length === 0) {
40
- throw new Error('MCPCapabilityProvider: at least one server is required');
41
- }
42
- const env = config.getMCPEnvDefaults();
43
- this.config = {
44
- servers: config$1.servers,
45
- getAuthHeaders: config$1.getAuthHeaders,
46
- clientInfo: config$1.clientInfo ?? {
47
- name: env.clientName,
48
- version: env.clientVersion,
49
- },
50
- connectTimeoutMs: config$1.connectTimeoutMs ?? env.connectTimeoutMs,
51
- requestTimeoutMs: config$1.requestTimeoutMs ?? env.requestTimeoutMs,
52
- };
53
- this.logger = config$1.logger ?? config.consoleLogger;
54
- const names = Object.keys(config$1.servers).sort().join(',');
55
- this.providerId = `mcp:${names}`;
56
- }
57
- async fetchManifest(filter) {
58
- // MCP only emits kind='mcp' — short-circuit if filter excludes us.
59
- if (filter?.kind && filter.kind !== types.CapabilityKind.MCP)
60
- return [];
61
- const capabilities = [];
62
- for (const serverName of Object.keys(this.config.servers)) {
63
- try {
64
- const conn = await this.ensureConnection(serverName);
65
- for (const toolDesc of conn.tools) {
66
- const cap = this.toolToCapability(serverName, toolDesc);
67
- if (this.capabilityMatchesFilter(cap, filter)) {
68
- capabilities.push(cap);
69
- }
70
- }
71
- }
72
- catch (err) {
73
- // One server failing should not block the others — log and continue.
74
- this.logger.warn(`[mcp] failed to fetch manifest for server "${serverName}":`, err instanceof Error ? err.message : err);
75
- }
76
- }
77
- this.logger.debug(`[mcp] manifest assembled — ${capabilities.length} capabilities across ${this.connections.size}/${Object.keys(this.config.servers).length} connected servers`);
78
- return capabilities;
79
- }
80
- async createRunnables(capabilities, _credentials) {
81
- const runnables = [];
82
- for (const cap of capabilities) {
83
- if (cap.kind !== types.CapabilityKind.MCP)
84
- continue;
85
- const parsed = capabilityNaming.parseCapabilityName(cap.name);
86
- const serverName = parsed?.sourceName;
87
- const toolName = parsed?.itemName;
88
- if (!serverName || !toolName) {
89
- this.logger.warn(`[mcp] skipping capability "${cap.name}" — unparseable`);
90
- continue;
91
- }
92
- const runnable = this.buildProxyTool(serverName, toolName, cap);
93
- runnables.push(runnable);
94
- }
95
- return runnables;
96
- }
97
- /**
98
- * Disconnect all open MCP client connections. Callers should invoke this
99
- * on shutdown to release transports and child processes (for stdio).
100
- */
101
- async close() {
102
- for (const [serverName, conn] of this.connections.entries()) {
103
- try {
104
- await conn.client.close();
105
- }
106
- catch (err) {
107
- this.logger.warn(`[mcp] error closing connection to "${serverName}":`, err instanceof Error ? err.message : err);
108
- }
109
- }
110
- this.connections.clear();
111
- }
112
- // --- internals ---------------------------------------------------------
113
- async ensureConnection(serverName) {
114
- const existing = this.connections.get(serverName);
115
- if (existing)
116
- return existing;
117
- const spec = this.config.servers[serverName];
118
- if (!spec) {
119
- throw new Error(`[mcp] server "${serverName}" not in config`);
120
- }
121
- const authHeaders = await this.resolveAuthHeaders(serverName);
122
- const transport$1 = transport.createTransport(spec, authHeaders);
123
- const client = new index_js.Client(this.config.clientInfo, {
124
- capabilities: {},
125
- });
126
- this.logger.debug(`[mcp] connecting to "${serverName}" (${spec.type})`);
127
- await client.connect(transport$1);
128
- const { tools } = await client.listTools();
129
- this.logger.debug(`[mcp] connected to "${serverName}" — ${tools.length} tools discovered`);
130
- const conn = {
131
- serverName,
132
- spec,
133
- client,
134
- transport: transport$1,
135
- tools: tools,
136
- };
137
- this.connections.set(serverName, conn);
138
- return conn;
139
- }
140
- async resolveAuthHeaders(serverName) {
141
- if (!this.config.getAuthHeaders)
142
- return undefined;
143
- try {
144
- return await this.config.getAuthHeaders(serverName);
145
- }
146
- catch (err) {
147
- this.logger.warn(`[mcp] getAuthHeaders("${serverName}") threw:`, err instanceof Error ? err.message : err);
148
- return undefined;
149
- }
150
- }
151
- toolToCapability(serverName, toolDesc) {
152
- return {
153
- kind: types.CapabilityKind.MCP,
154
- name: capabilityNaming.formatCapabilityName(serverName, toolDesc.name),
155
- description: toolDesc.description ?? `${toolDesc.name} (via ${serverName})`,
156
- schema: toolDesc.inputSchema ?? {
157
- type: 'object',
158
- properties: {},
159
- },
160
- authConfig: [],
161
- metadata: {
162
- category: 'mcp',
163
- tags: [serverName],
164
- },
165
- };
166
- }
167
- capabilityMatchesFilter(cap, filter) {
168
- if (!filter)
169
- return true;
170
- if (filter.kind && cap.kind !== filter.kind)
171
- return false;
172
- if (filter.names && !filter.names.includes(cap.name))
173
- return false;
174
- if (filter.tags?.length) {
175
- const capTags = new Set(cap.metadata.tags ?? []);
176
- if (!filter.tags.some((t) => capTags.has(t)))
177
- return false;
178
- }
179
- return true;
180
- }
181
- buildProxyTool(serverName, toolName, cap) {
182
- // Arrow-function closures would capture `this` correctly but LangChain's
183
- // `tool()` helper expects a plain async function; bind the methods we
184
- // need up-front so the closure body stays clean and strict-lint-friendly.
185
- const logger = this.logger;
186
- const ensureConnection = this.ensureConnection.bind(this);
187
- return tools.tool(async (input) => {
188
- // DEBUG: log tool invocation (remove after POC stabilizes)
189
- logger.debug(`[mcp] invoking ${serverName}:${toolName}`, input && typeof input === 'object'
190
- ? `inputKeys=${Object.keys(input).length}`
191
- : '');
192
- const conn = await ensureConnection(serverName);
193
- const response = await conn.client.callTool({
194
- name: toolName,
195
- arguments: input ?? {},
196
- });
197
- const result = flattenToolCallResponse(response);
198
- if (result.isError) {
199
- throw new Error(`MCP tool "${serverName}:${toolName}" failed: ${result.text}`);
200
- }
201
- return result.text;
202
- }, {
203
- name: cap.name,
204
- description: cap.description,
205
- schema: cap.schema ?? { type: 'object', properties: {} },
206
- responseFormat: 'content',
207
- });
208
- }
209
- }
210
- /**
211
- * Flatten the MCP SDK's callTool response into a plain text + error flag.
212
- * Concatenates any `text`-type content parts; non-text parts are
213
- * JSON-stringified so the LLM sees something rather than silently
214
- * dropping output.
215
- */
216
- function flattenToolCallResponse(response) {
217
- const resp = response;
218
- const rawContent = resp?.content ?? [];
219
- const isError = resp?.isError === true;
220
- if (!Array.isArray(rawContent) || rawContent.length === 0) {
221
- return {
222
- text: isError ? '(error with no content)' : '(empty response)',
223
- rawContent,
224
- isError,
225
- };
226
- }
227
- const parts = rawContent.map((item) => {
228
- if (item.type === 'text' && typeof item.text === 'string')
229
- return item.text;
230
- try {
231
- return JSON.stringify(item);
232
- }
233
- catch {
234
- return '[unserializable content part]';
235
- }
236
- });
237
- return { text: parts.join('\n\n'), rawContent, isError };
238
- }
239
-
240
- exports.CAPABILITY_NAME_SEPARATOR = capabilityNaming.CAPABILITY_NAME_SEPARATOR;
241
- exports.formatCapabilityName = capabilityNaming.formatCapabilityName;
242
- exports.MCPCapabilityProvider = MCPCapabilityProvider;
243
- exports.flattenToolCallResponse = flattenToolCallResponse;
244
- //# sourceMappingURL=MCPCapabilityProvider.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MCPCapabilityProvider.cjs","sources":["../../../../src/providers/mcp/MCPCapabilityProvider.ts"],"sourcesContent":["/**\n * MCPCapabilityProvider — connects to MCP servers via the official MCP SDK\n * and exposes their tools as `Capability` / `StructuredToolInterface`.\n *\n * Mirrors the pattern of `ToolsServerCapabilityProvider`: thin adapter,\n * protocol-specific transport, stateless as far as tokens/OAuth are\n * concerned (all auth is host-resolved and forwarded via `getAuthHeaders`).\n *\n * What the host supplies:\n * - `servers`: unified spec map (normalized from whatever source:\n * programmatic, YAML, DB, marketplace catalog).\n * - `getAuthHeaders?`: per-server header resolver. Called at connect\n * time. OAuth orchestration / token refresh happens in the host.\n *\n * What the library does:\n * - Picks the right SDK transport per spec.\n * - Connects, calls `listTools()`, wraps each tool as a `Capability`.\n * - `createRunnables()` returns `StructuredTool`s that invoke the\n * server's tools on demand, streaming the string result back to the\n * agent.\n * - Caches open connections per-instance so repeated `fetchManifest` /\n * `createRunnables` calls reuse them.\n */\n\nimport { tool, type StructuredToolInterface } from '@langchain/core/tools';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\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,\n} from '@/providers/capabilityNaming';\nimport { createTransport } from './transport';\nimport { consoleLogger, getMCPEnvDefaults } from './config';\nimport type {\n MCPLogger,\n MCPProviderConfig,\n MCPServerSpec,\n MCPToolCallResult,\n MCPToolDescriptor,\n} from './types';\n\n/**\n * Per-server connection state kept inside the provider. Reused across\n * manifest fetches and tool invocations.\n */\ninterface ServerConnection {\n serverName: string;\n spec: MCPServerSpec;\n client: Client;\n transport: Transport;\n tools: MCPToolDescriptor[];\n}\n\nexport class MCPCapabilityProvider implements CapabilityProvider {\n readonly providerId: string;\n private readonly config: Required<\n Pick<\n MCPProviderConfig,\n 'connectTimeoutMs' | 'requestTimeoutMs' | 'clientInfo'\n >\n > &\n Pick<MCPProviderConfig, 'servers' | 'getAuthHeaders'>;\n private readonly logger: MCPLogger;\n private readonly connections = new Map<string, ServerConnection>();\n\n constructor(config: MCPProviderConfig) {\n if (!config.servers || Object.keys(config.servers).length === 0) {\n throw new Error('MCPCapabilityProvider: at least one server is required');\n }\n const env = getMCPEnvDefaults();\n this.config = {\n servers: config.servers,\n getAuthHeaders: config.getAuthHeaders,\n clientInfo: config.clientInfo ?? {\n name: env.clientName,\n version: env.clientVersion,\n },\n connectTimeoutMs: config.connectTimeoutMs ?? env.connectTimeoutMs,\n requestTimeoutMs: config.requestTimeoutMs ?? env.requestTimeoutMs,\n };\n this.logger = config.logger ?? consoleLogger;\n const names = Object.keys(config.servers).sort().join(',');\n this.providerId = `mcp:${names}`;\n }\n\n async fetchManifest(filter?: CapabilityFilter): Promise<Capability[]> {\n // MCP only emits kind='mcp' — short-circuit if filter excludes us.\n if (filter?.kind && filter.kind !== CapabilityKind.MCP) return [];\n\n const capabilities: Capability[] = [];\n\n for (const serverName of Object.keys(this.config.servers)) {\n try {\n const conn = await this.ensureConnection(serverName);\n for (const toolDesc of conn.tools) {\n const cap = this.toolToCapability(serverName, toolDesc);\n if (this.capabilityMatchesFilter(cap, filter)) {\n capabilities.push(cap);\n }\n }\n } catch (err) {\n // One server failing should not block the others — log and continue.\n this.logger.warn(\n `[mcp] failed to fetch manifest for server \"${serverName}\":`,\n err instanceof Error ? err.message : err\n );\n }\n }\n\n this.logger.debug(\n `[mcp] manifest assembled — ${capabilities.length} capabilities across ${this.connections.size}/${Object.keys(this.config.servers).length} connected servers`\n );\n\n return capabilities;\n }\n\n async createRunnables(\n capabilities: Capability[],\n _credentials: CredentialMap\n ): Promise<StructuredToolInterface[]> {\n const runnables: StructuredToolInterface[] = [];\n\n for (const cap of capabilities) {\n if (cap.kind !== CapabilityKind.MCP) continue;\n\n const parsed = parseCapabilityName(cap.name);\n const serverName = parsed?.sourceName;\n const toolName = parsed?.itemName;\n if (!serverName || !toolName) {\n this.logger.warn(\n `[mcp] skipping capability \"${cap.name}\" — unparseable`\n );\n continue;\n }\n\n const runnable = this.buildProxyTool(serverName, toolName, cap);\n runnables.push(runnable);\n }\n\n return runnables;\n }\n\n /**\n * Disconnect all open MCP client connections. Callers should invoke this\n * on shutdown to release transports and child processes (for stdio).\n */\n async close(): Promise<void> {\n for (const [serverName, conn] of this.connections.entries()) {\n try {\n await conn.client.close();\n } catch (err) {\n this.logger.warn(\n `[mcp] error closing connection to \"${serverName}\":`,\n err instanceof Error ? err.message : err\n );\n }\n }\n this.connections.clear();\n }\n\n // --- internals ---------------------------------------------------------\n\n private async ensureConnection(\n serverName: string\n ): Promise<ServerConnection> {\n const existing = this.connections.get(serverName);\n if (existing) return existing;\n\n const spec = this.config.servers[serverName];\n if (!spec) {\n throw new Error(`[mcp] server \"${serverName}\" not in config`);\n }\n\n const authHeaders = await this.resolveAuthHeaders(serverName);\n const transport = createTransport(spec, authHeaders);\n const client = new Client(this.config.clientInfo, {\n capabilities: {},\n });\n\n this.logger.debug(`[mcp] connecting to \"${serverName}\" (${spec.type})`);\n await client.connect(transport);\n\n const { tools } = await client.listTools();\n this.logger.debug(\n `[mcp] connected to \"${serverName}\" — ${tools.length} tools discovered`\n );\n\n const conn: ServerConnection = {\n serverName,\n spec,\n client,\n transport,\n tools: tools as MCPToolDescriptor[],\n };\n this.connections.set(serverName, conn);\n return conn;\n }\n\n private async resolveAuthHeaders(\n serverName: string\n ): Promise<Record<string, string> | undefined> {\n if (!this.config.getAuthHeaders) return undefined;\n try {\n return await this.config.getAuthHeaders(serverName);\n } catch (err) {\n this.logger.warn(\n `[mcp] getAuthHeaders(\"${serverName}\") threw:`,\n err instanceof Error ? err.message : err\n );\n return undefined;\n }\n }\n\n private toolToCapability(\n serverName: string,\n toolDesc: MCPToolDescriptor\n ): Capability {\n return {\n kind: CapabilityKind.MCP,\n name: formatCapabilityName(serverName, toolDesc.name),\n description:\n toolDesc.description ?? `${toolDesc.name} (via ${serverName})`,\n schema: toolDesc.inputSchema ?? {\n type: 'object',\n properties: {},\n },\n authConfig: [],\n metadata: {\n category: 'mcp',\n tags: [serverName],\n },\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 serverName: string,\n toolName: string,\n cap: Capability\n ): StructuredToolInterface {\n // Arrow-function closures would capture `this` correctly but LangChain's\n // `tool()` helper expects a plain async function; bind the methods we\n // need up-front so the closure body stays clean and strict-lint-friendly.\n const logger = this.logger;\n const ensureConnection = this.ensureConnection.bind(this);\n return tool(\n async (input: unknown): Promise<string> => {\n // DEBUG: log tool invocation (remove after POC stabilizes)\n logger.debug(\n `[mcp] invoking ${serverName}:${toolName}`,\n input && typeof input === 'object'\n ? `inputKeys=${Object.keys(input as object).length}`\n : ''\n );\n\n const conn = await ensureConnection(serverName);\n const response = await conn.client.callTool({\n name: toolName,\n arguments: (input as Record<string, unknown>) ?? {},\n });\n\n const result = flattenToolCallResponse(response);\n if (result.isError) {\n throw new Error(\n `MCP tool \"${serverName}:${toolName}\" failed: ${result.text}`\n );\n }\n return result.text;\n },\n {\n name: cap.name,\n description: cap.description,\n schema: (cap.schema as object) ?? { type: 'object', properties: {} },\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 MCP and A2A providers stay in\n// lockstep on name encoding. Re-exported here for callers that already\n// import from the MCP barrel.\nexport { CAPABILITY_NAME_SEPARATOR, formatCapabilityName };\n\n/**\n * Flatten the MCP SDK's callTool response into a plain text + error flag.\n * Concatenates any `text`-type content parts; non-text parts are\n * JSON-stringified so the LLM sees something rather than silently\n * dropping output.\n */\nexport function flattenToolCallResponse(response: unknown): MCPToolCallResult {\n const resp = response as {\n content?: Array<{ type?: string; text?: string; [k: string]: unknown }>;\n isError?: boolean;\n } | null;\n\n const rawContent = resp?.content ?? [];\n const isError = resp?.isError === true;\n\n if (!Array.isArray(rawContent) || rawContent.length === 0) {\n return {\n text: isError ? '(error with no content)' : '(empty response)',\n rawContent,\n isError,\n };\n }\n\n const parts = rawContent.map((item) => {\n if (item.type === 'text' && typeof item.text === 'string') return item.text;\n try {\n return JSON.stringify(item);\n } catch {\n return '[unserializable content part]';\n }\n });\n\n return { text: parts.join('\\n\\n'), rawContent, isError };\n}\n"],"names":["config","getMCPEnvDefaults","consoleLogger","CapabilityKind","parseCapabilityName","transport","createTransport","Client","formatCapabilityName","tool"],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * Environment-driven configuration defaults for the MCP capability provider.
5
- *
6
- * Hosts can override any of these via the provider config object. Env vars
7
- * exist so deployments can brand or tune the library without code changes.
8
- */
9
- /**
10
- * Read env values with fallbacks. Kept as a function (not a constant) so
11
- * tests and hosts that mutate process.env after import get the current
12
- * value on each call.
13
- */
14
- function getMCPEnvDefaults() {
15
- return {
16
- /**
17
- * Identity sent to MCP servers on handshake. Precedence:
18
- * 1. explicit `clientInfo.name` on the provider config
19
- * 2. `MCP_CLIENT_NAME` env var
20
- * 3. library fallback identity
21
- */
22
- clientName: process.env.MCP_CLIENT_NAME ?? 'illuma-agents',
23
- clientVersion: process.env.MCP_CLIENT_VERSION ?? '1.0.0',
24
- connectTimeoutMs: Number(process.env.MCP_CONNECT_TIMEOUT_MS ?? 30_000),
25
- requestTimeoutMs: Number(process.env.MCP_REQUEST_TIMEOUT_MS ?? 30_000),
26
- };
27
- }
28
- /** Console-routed default logger. */
29
- const consoleLogger = {
30
- // eslint-disable-next-line no-console
31
- debug: (...args) => console.debug('[mcp]', ...args),
32
- // eslint-disable-next-line no-console
33
- info: (...args) => console.info('[mcp]', ...args),
34
- // eslint-disable-next-line no-console
35
- warn: (...args) => console.warn('[mcp]', ...args),
36
- // eslint-disable-next-line no-console
37
- error: (...args) => console.error('[mcp]', ...args),
38
- };
39
-
40
- exports.consoleLogger = consoleLogger;
41
- exports.getMCPEnvDefaults = getMCPEnvDefaults;
42
- //# sourceMappingURL=config.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.cjs","sources":["../../../../src/providers/mcp/config.ts"],"sourcesContent":["/**\n * Environment-driven configuration defaults for the MCP capability provider.\n *\n * Hosts can override any of these via the provider config object. Env vars\n * exist so deployments can brand or tune the library without code changes.\n */\n\nimport type { MCPLogger } from './types';\n\n/**\n * Read env values with fallbacks. Kept as a function (not a constant) so\n * tests and hosts that mutate process.env after import get the current\n * value on each call.\n */\nexport function getMCPEnvDefaults(): {\n clientName: string;\n clientVersion: string;\n connectTimeoutMs: number;\n requestTimeoutMs: number;\n} {\n return {\n /**\n * Identity sent to MCP servers on handshake. Precedence:\n * 1. explicit `clientInfo.name` on the provider config\n * 2. `MCP_CLIENT_NAME` env var\n * 3. library fallback identity\n */\n clientName: process.env.MCP_CLIENT_NAME ?? 'illuma-agents',\n clientVersion: process.env.MCP_CLIENT_VERSION ?? '1.0.0',\n connectTimeoutMs: Number(process.env.MCP_CONNECT_TIMEOUT_MS ?? 30_000),\n requestTimeoutMs: Number(process.env.MCP_REQUEST_TIMEOUT_MS ?? 30_000),\n };\n}\n\n/** Console-routed default logger. */\nexport const consoleLogger: MCPLogger = {\n // eslint-disable-next-line no-console\n debug: (...args) => console.debug('[mcp]', ...args),\n // eslint-disable-next-line no-console\n info: (...args) => console.info('[mcp]', ...args),\n // eslint-disable-next-line no-console\n warn: (...args) => console.warn('[mcp]', ...args),\n // eslint-disable-next-line no-console\n error: (...args) => console.error('[mcp]', ...args),\n};\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;;;;AAIG;SACa,iBAAiB,GAAA;IAM/B,OAAO;AACL;;;;;AAKG;AACH,QAAA,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe;AAC1D,QAAA,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO;QACxD,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC;QACtE,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC;KACvE;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,65 +0,0 @@
1
- 'use strict';
2
-
3
- var stdio_js = require('@modelcontextprotocol/sdk/client/stdio.js');
4
- var sse_js = require('@modelcontextprotocol/sdk/client/sse.js');
5
- var streamableHttp_js = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
6
- var websocket_js = require('@modelcontextprotocol/sdk/client/websocket.js');
7
-
8
- /**
9
- * Transport factory — turns an `MCPServerSpec` into a configured
10
- * MCP SDK transport. One switch statement per kind.
11
- *
12
- * Each transport is constructed with the merged header map (spec headers
13
- * plus any `getAuthHeaders`-resolved additions) for HTTP-based kinds.
14
- * Stdio uses `env` + `command` + `args` directly.
15
- */
16
- /**
17
- * Build a Transport from a spec + resolved auth headers.
18
- *
19
- * @param spec - the server spec (one of stdio / sse / streamable-http / websocket)
20
- * @param authHeaders - headers merged over `spec.headers` at connect time
21
- * @returns a configured Transport ready to be passed to `Client.connect()`
22
- */
23
- function createTransport(spec, authHeaders) {
24
- switch (spec.type) {
25
- case 'stdio':
26
- return new stdio_js.StdioClientTransport({
27
- command: spec.command,
28
- args: spec.args,
29
- env: spec.env,
30
- cwd: spec.cwd,
31
- });
32
- case 'sse': {
33
- const headers = mergeHeaders(spec.headers, authHeaders);
34
- return new sse_js.SSEClientTransport(new URL(spec.url), {
35
- requestInit: headers ? { headers } : undefined,
36
- });
37
- }
38
- case 'streamable-http': {
39
- const headers = mergeHeaders(spec.headers, authHeaders);
40
- return new streamableHttp_js.StreamableHTTPClientTransport(new URL(spec.url), {
41
- requestInit: headers ? { headers } : undefined,
42
- });
43
- }
44
- case 'websocket':
45
- // Node's WebSocket doesn't natively accept arbitrary headers; the MCP
46
- // SDK's transport ignores them. We keep the param for future support
47
- // but log a warning elsewhere if headers are provided with websocket.
48
- return new websocket_js.WebSocketClientTransport(new URL(spec.url));
49
- default: {
50
- // Exhaustiveness check — TypeScript errors here if a new spec kind
51
- // is added without being handled in the switch.
52
- const _exhaustive = spec;
53
- throw new Error(`Unknown MCP transport spec: ${JSON.stringify(_exhaustive)}`);
54
- }
55
- }
56
- }
57
- /** Merge headers from two sources, with the second taking precedence. */
58
- function mergeHeaders(base, overrides) {
59
- if (!base && !overrides)
60
- return undefined;
61
- return { ...(base ?? {}), ...(overrides ?? {}) };
62
- }
63
-
64
- exports.createTransport = createTransport;
65
- //# sourceMappingURL=transport.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.cjs","sources":["../../../../src/providers/mcp/transport.ts"],"sourcesContent":["/**\n * Transport factory — turns an `MCPServerSpec` into a configured\n * MCP SDK transport. One switch statement per kind.\n *\n * Each transport is constructed with the merged header map (spec headers\n * plus any `getAuthHeaders`-resolved additions) for HTTP-based kinds.\n * Stdio uses `env` + `command` + `args` directly.\n */\n\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';\nimport { WebSocketClientTransport } from '@modelcontextprotocol/sdk/client/websocket.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\n\nimport type { MCPServerSpec } from './types';\n\n/**\n * Build a Transport from a spec + resolved auth headers.\n *\n * @param spec - the server spec (one of stdio / sse / streamable-http / websocket)\n * @param authHeaders - headers merged over `spec.headers` at connect time\n * @returns a configured Transport ready to be passed to `Client.connect()`\n */\nexport function createTransport(\n spec: MCPServerSpec,\n authHeaders?: Record<string, string>\n): Transport {\n switch (spec.type) {\n case 'stdio':\n return new StdioClientTransport({\n command: spec.command,\n args: spec.args,\n env: spec.env,\n cwd: spec.cwd,\n });\n\n case 'sse': {\n const headers = mergeHeaders(spec.headers, authHeaders);\n return new SSEClientTransport(new URL(spec.url), {\n requestInit: headers ? { headers } : undefined,\n });\n }\n\n case 'streamable-http': {\n const headers = mergeHeaders(spec.headers, authHeaders);\n return new StreamableHTTPClientTransport(new URL(spec.url), {\n requestInit: headers ? { headers } : undefined,\n });\n }\n\n case 'websocket':\n // Node's WebSocket doesn't natively accept arbitrary headers; the MCP\n // SDK's transport ignores them. We keep the param for future support\n // but log a warning elsewhere if headers are provided with websocket.\n return new WebSocketClientTransport(new URL(spec.url));\n\n default: {\n // Exhaustiveness check — TypeScript errors here if a new spec kind\n // is added without being handled in the switch.\n const _exhaustive: never = spec;\n throw new Error(\n `Unknown MCP transport spec: ${JSON.stringify(_exhaustive)}`\n );\n }\n }\n}\n\n/** Merge headers from two sources, with the second taking precedence. */\nfunction mergeHeaders(\n base: Record<string, string> | undefined,\n overrides: Record<string, string> | undefined\n): Record<string, string> | undefined {\n if (!base && !overrides) return undefined;\n return { ...(base ?? {}), ...(overrides ?? {}) };\n}\n"],"names":["StdioClientTransport","SSEClientTransport","StreamableHTTPClientTransport","WebSocketClientTransport"],"mappings":";;;;;;;AAAA;;;;;;;AAOG;AAUH;;;;;;AAMG;AACG,SAAU,eAAe,CAC7B,IAAmB,EACnB,WAAoC,EAAA;AAEpC,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,OAAO;YACV,OAAO,IAAIA,6BAAoB,CAAC;gBAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,EAAE,IAAI,CAAC,GAAG;AACd,aAAA,CAAC;QAEJ,KAAK,KAAK,EAAE;YACV,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YACvD,OAAO,IAAIC,yBAAkB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC/C,WAAW,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS;AAC/C,aAAA,CAAC;QACJ;QAEA,KAAK,iBAAiB,EAAE;YACtB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YACvD,OAAO,IAAIC,+CAA6B,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC1D,WAAW,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS;AAC/C,aAAA,CAAC;QACJ;AAEA,QAAA,KAAK,WAAW;;;;YAId,OAAO,IAAIC,qCAAwB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExD,SAAS;;;YAGP,MAAM,WAAW,GAAU,IAAI;AAC/B,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,4BAAA,EAA+B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA,CAAE,CAC7D;QACH;;AAEJ;AAEA;AACA,SAAS,YAAY,CACnB,IAAwC,EACxC,SAA6C,EAAA;AAE7C,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,SAAS;AACzC,IAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,SAAS,IAAI,EAAE,CAAC,EAAE;AAClD;;;;"}
@@ -1,128 +0,0 @@
1
- 'use strict';
2
-
3
- var types = require('../types.cjs');
4
- var httpClient = require('../../utils/httpClient.cjs');
5
- var toolManifest = require('../../utils/toolManifest.cjs');
6
- var proxyTool = require('../../tools/proxyTool.cjs');
7
-
8
- /**
9
- * ToolsServerCapabilityProvider — capabilities sourced from a tools-server
10
- * HTTP endpoint.
11
- *
12
- * Fetches the manifest via GET /manifest, builds proxy StructuredTools via
13
- * POST /execute/:tool. Manifest is cached (TTL-configurable) so repeated
14
- * init cycles don't refetch.
15
- *
16
- * See docs/architecture-capability-layer.md for the design rationale.
17
- */
18
- class ToolsServerCapabilityProvider {
19
- config;
20
- providerId;
21
- client;
22
- manifestPath;
23
- executePath;
24
- cache;
25
- getExecuteAuthHeaders;
26
- constructor(config) {
27
- this.config = config;
28
- const { baseUrl, apiKey, manifestPath = '/manifest', executePath = '/execute/:name', timeoutMs = 30_000, manifestTtlMs = 60_000, client, proxy, getExecuteAuthHeaders, } = config;
29
- if (!baseUrl) {
30
- throw new Error('ToolsServerCapabilityProvider: baseUrl is required');
31
- }
32
- if (!apiKey) {
33
- throw new Error('ToolsServerCapabilityProvider: apiKey is required');
34
- }
35
- this.providerId = `tools-server:${baseUrl}`;
36
- this.manifestPath = manifestPath;
37
- this.executePath = executePath;
38
- this.cache = new toolManifest.ManifestCache({ ttlMs: manifestTtlMs });
39
- this.getExecuteAuthHeaders = getExecuteAuthHeaders;
40
- if (client) {
41
- this.client = client;
42
- }
43
- else {
44
- const httpConfig = {
45
- baseURL: baseUrl,
46
- apiKey,
47
- timeoutMs,
48
- proxy,
49
- };
50
- this.client = httpClient.createHttpClient(httpConfig);
51
- }
52
- }
53
- async fetchManifest(filter) {
54
- const cacheKey = toolManifest.filterToCacheKey(filter);
55
- const cached = this.cache.get(cacheKey);
56
- if (cached) {
57
- // DEBUG: cache hit (remove after stabilization)
58
- // eslint-disable-next-line no-console
59
- console.debug(`[${this.providerId}] manifest cache hit — ${cached.length} caps`);
60
- return cached;
61
- }
62
- // DEBUG
63
- // eslint-disable-next-line no-console
64
- console.debug(`[${this.providerId}] fetching manifest from ${this.manifestPath}`);
65
- const res = await this.client.get(this.manifestPath);
66
- httpClient.assertOk(res.status, this.manifestPath, res.data);
67
- const entries = Array.isArray(res.data) ? res.data : [];
68
- const capabilities = entries.map((entry) => normalizeEntry(entry));
69
- // Apply filter before caching the full list separately so unfiltered
70
- // refetches don't re-hit the network.
71
- const fullCacheKey = toolManifest.filterToCacheKey();
72
- this.cache.set(fullCacheKey, capabilities);
73
- const filtered = toolManifest.applyFilter(capabilities, filter);
74
- if (cacheKey !== fullCacheKey) {
75
- this.cache.set(cacheKey, filtered);
76
- }
77
- // DEBUG
78
- // eslint-disable-next-line no-console
79
- console.debug(`[${this.providerId}] manifest loaded — ${capabilities.length} caps, ${filtered.length} after filter`);
80
- return filtered;
81
- }
82
- async createRunnables(capabilities, credentials) {
83
- return capabilities.map((cap) => proxyTool.buildProxyTool(cap, credentials, {
84
- client: this.client,
85
- executePath: this.executePath,
86
- getAuthHeaders: this.getExecuteAuthHeaders,
87
- }));
88
- }
89
- /** Force a manifest refresh on next fetchManifest call. */
90
- invalidateCache() {
91
- this.cache.clear();
92
- }
93
- }
94
- /**
95
- * Translate a raw tools-server manifest entry into a typed Capability.
96
- * Defensive — tools-server may add fields; we pull only what we need.
97
- */
98
- function normalizeEntry(entry) {
99
- return {
100
- kind: types.CapabilityKind.TOOL,
101
- name: entry.pluginKey,
102
- description: entry.description ?? '',
103
- schema: entry.schema ?? entry.jsonSchema,
104
- authConfig: (entry.authConfig ?? []).map((ac) => ({
105
- authField: ac.authField,
106
- label: ac.label,
107
- description: ac.description,
108
- required: ac.required,
109
- prod: ac.prod,
110
- admin: ac.admin,
111
- hide: ac.hide,
112
- // Source is a string in wire format; downstream consumers coerce to AuthSource.
113
- source: ac.source,
114
- })),
115
- metadata: {
116
- icon: entry.icon,
117
- category: entry.category,
118
- tags: entry.tags,
119
- // Governance — hosts use these to gate UI/role/environment.
120
- hidden: entry.hidden,
121
- admin: entry.admin,
122
- env: entry.env,
123
- },
124
- };
125
- }
126
-
127
- exports.ToolsServerCapabilityProvider = ToolsServerCapabilityProvider;
128
- //# sourceMappingURL=ToolsServerCapabilityProvider.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolsServerCapabilityProvider.cjs","sources":["../../../../src/providers/tools-server/ToolsServerCapabilityProvider.ts"],"sourcesContent":["/**\n * ToolsServerCapabilityProvider — capabilities sourced from a tools-server\n * HTTP endpoint.\n *\n * Fetches the manifest via GET /manifest, builds proxy StructuredTools via\n * POST /execute/:tool. Manifest is cached (TTL-configurable) so repeated\n * init cycles don't refetch.\n *\n * See docs/architecture-capability-layer.md for the design rationale.\n */\n\nimport type { AxiosInstance } from 'axios';\nimport type { StructuredToolInterface } from '@langchain/core/tools';\nimport {\n CapabilityKind,\n type Capability,\n type CapabilityFilter,\n type CapabilityProvider,\n type CredentialMap,\n} from '@/providers/types';\nimport {\n createHttpClient,\n type HttpClientConfig,\n assertOk,\n} from '@/utils/httpClient';\nimport {\n ManifestCache,\n filterToCacheKey,\n applyFilter,\n} from '@/utils/toolManifest';\nimport { buildProxyTool } from '@/tools/proxyTool';\n\n/** Configuration for ToolsServerCapabilityProvider. */\nexport interface ToolsServerConfig {\n /** Tools-server base URL (e.g., https://tools.illuma.ai or http://localhost:3500). */\n baseUrl: string;\n /** API key sent as x-api-key header on all requests. Required. */\n apiKey: string;\n /** Optional override for manifest path. Defaults to `/manifest`. */\n manifestPath?: string;\n /** Optional override for execute path template. Defaults to `/execute/:name`. */\n executePath?: string;\n /** Request timeout in ms. Defaults to 30_000. */\n timeoutMs?: number;\n /** Manifest cache TTL in ms. 0 disables. Defaults to 60_000 (1 min). */\n manifestTtlMs?: number;\n /** Optional pre-built axios instance (for testing). */\n client?: AxiosInstance;\n /** Optional proxy override (defaults to process.env.PROXY). */\n proxy?: string | null;\n /**\n * Optional per-request auth header builder — invoked on every tool\n * invocation (NOT on the manifest fetch, which is service-to-service).\n * When provided, the returned headers are merged into the `/execute`\n * request so the host can pass user-scoped identity (e.g.,\n * `Authorization: Bearer <jwt>`) that tools-server verifies for\n * admin-gated tools.\n *\n * Typical host wiring: mint a short-lived JWT per call carrying the\n * authenticated user's `{ userId, role }` claims; tools-server's\n * `TOOLS_SERVER_JWT_SECRET` validates.\n */\n getExecuteAuthHeaders?: () =>\n | Record<string, string>\n | Promise<Record<string, string>>;\n}\n\n/**\n * Shape of a single entry from tools-server's /manifest response.\n *\n * Matches the tools-server ManifestToolEntry type. We define our own here\n * to avoid cross-package coupling — the shape is a stable HTTP contract.\n */\ninterface ToolsServerManifestEntry {\n pluginKey: string;\n name: string;\n description: string;\n icon?: string;\n authConfig?: Array<{\n authField: string;\n label?: string;\n description?: string;\n source?: string;\n required?: boolean;\n prod?: boolean;\n admin?: boolean;\n hide?: boolean;\n }>;\n /** Input schema as JSON Schema (tools-server emits `schema`). */\n schema?: unknown;\n /** Legacy alias accepted for backwards compatibility. */\n jsonSchema?: unknown;\n category?: string;\n tags?: string[];\n toolkit?: string;\n endpoint?: string;\n /** Governance flags forwarded by tools-server getManifest(). */\n hidden?: boolean;\n admin?: boolean;\n env?: Array<'development' | 'production' | 'test' | 'staging'>;\n}\n\nexport class ToolsServerCapabilityProvider implements CapabilityProvider {\n readonly providerId: string;\n private readonly client: AxiosInstance;\n private readonly manifestPath: string;\n private readonly executePath: string;\n private readonly cache: ManifestCache;\n private readonly getExecuteAuthHeaders?: () =>\n | Record<string, string>\n | Promise<Record<string, string>>;\n\n constructor(private readonly config: ToolsServerConfig) {\n const {\n baseUrl,\n apiKey,\n manifestPath = '/manifest',\n executePath = '/execute/:name',\n timeoutMs = 30_000,\n manifestTtlMs = 60_000,\n client,\n proxy,\n getExecuteAuthHeaders,\n } = config;\n\n if (!baseUrl) {\n throw new Error('ToolsServerCapabilityProvider: baseUrl is required');\n }\n if (!apiKey) {\n throw new Error('ToolsServerCapabilityProvider: apiKey is required');\n }\n\n this.providerId = `tools-server:${baseUrl}`;\n this.manifestPath = manifestPath;\n this.executePath = executePath;\n this.cache = new ManifestCache({ ttlMs: manifestTtlMs });\n this.getExecuteAuthHeaders = getExecuteAuthHeaders;\n\n if (client) {\n this.client = client;\n } else {\n const httpConfig: HttpClientConfig = {\n baseURL: baseUrl,\n apiKey,\n timeoutMs,\n proxy,\n };\n this.client = createHttpClient(httpConfig);\n }\n }\n\n async fetchManifest(filter?: CapabilityFilter): Promise<Capability[]> {\n const cacheKey = filterToCacheKey(filter);\n const cached = this.cache.get(cacheKey);\n if (cached) {\n // DEBUG: cache hit (remove after stabilization)\n // eslint-disable-next-line no-console\n console.debug(\n `[${this.providerId}] manifest cache hit — ${cached.length} caps`\n );\n return cached;\n }\n\n // DEBUG\n // eslint-disable-next-line no-console\n console.debug(\n `[${this.providerId}] fetching manifest from ${this.manifestPath}`\n );\n\n const res = await this.client.get<ToolsServerManifestEntry[]>(\n this.manifestPath\n );\n assertOk(res.status, this.manifestPath, res.data);\n\n const entries = Array.isArray(res.data) ? res.data : [];\n const capabilities: Capability[] = entries.map((entry) =>\n normalizeEntry(entry)\n );\n\n // Apply filter before caching the full list separately so unfiltered\n // refetches don't re-hit the network.\n const fullCacheKey = filterToCacheKey();\n this.cache.set(fullCacheKey, capabilities);\n\n const filtered = applyFilter(capabilities, filter);\n if (cacheKey !== fullCacheKey) {\n this.cache.set(cacheKey, filtered);\n }\n\n // DEBUG\n // eslint-disable-next-line no-console\n console.debug(\n `[${this.providerId}] manifest loaded — ${capabilities.length} caps, ${filtered.length} after filter`\n );\n\n return filtered;\n }\n\n async createRunnables(\n capabilities: Capability[],\n credentials: CredentialMap\n ): Promise<StructuredToolInterface[]> {\n return capabilities.map((cap) =>\n buildProxyTool(cap, credentials, {\n client: this.client,\n executePath: this.executePath,\n getAuthHeaders: this.getExecuteAuthHeaders,\n })\n );\n }\n\n /** Force a manifest refresh on next fetchManifest call. */\n invalidateCache(): void {\n this.cache.clear();\n }\n}\n\n/**\n * Translate a raw tools-server manifest entry into a typed Capability.\n * Defensive — tools-server may add fields; we pull only what we need.\n */\nfunction normalizeEntry(entry: ToolsServerManifestEntry): Capability {\n return {\n kind: CapabilityKind.TOOL,\n name: entry.pluginKey,\n description: entry.description ?? '',\n schema: entry.schema ?? entry.jsonSchema,\n authConfig: (entry.authConfig ?? []).map((ac) => ({\n authField: ac.authField,\n label: ac.label,\n description: ac.description,\n required: ac.required,\n prod: ac.prod,\n admin: ac.admin,\n hide: ac.hide,\n // Source is a string in wire format; downstream consumers coerce to AuthSource.\n source: ac.source as Capability['authConfig'][number]['source'],\n })),\n metadata: {\n icon: entry.icon,\n category: entry.category,\n tags: entry.tags,\n // Governance — hosts use these to gate UI/role/environment.\n hidden: entry.hidden,\n admin: entry.admin,\n env: entry.env,\n },\n };\n}\n"],"names":["ManifestCache","createHttpClient","filterToCacheKey","assertOk","applyFilter","buildProxyTool","CapabilityKind"],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * CapabilityProvider types — the abstraction that lets agents consume tools,
5
- * skills, and MCP-backed capabilities through a single interface regardless
6
- * of where they come from.
7
- *
8
- * Design principles:
9
- * 1. Source-agnostic — providers are distinguished by WHERE they come from
10
- * (tools-server, skill store, MCP server), not by the backend service
11
- * any individual tool calls.
12
- * 2. Credential-agnostic — providers receive a flat credentialMap from the
13
- * host; they don't know about user settings, databases, OAuth flows.
14
- * 3. Extension-ready — the shape reserves slots for upcoming patterns
15
- * (skills injectedMessages, ToolCall.auth/expires_at, skill sessions)
16
- * so when those land we don't refactor the core.
17
- */
18
- /**
19
- * Kind of capability. Today only TOOL is implemented; SKILL and MCP are
20
- * reserved — SkillCapabilityProvider + MCPCapabilityProvider will populate
21
- * them in later phases. Keeping the enum from day one prevents a breaking
22
- * change when those ship.
23
- */
24
- exports.CapabilityKind = void 0;
25
- (function (CapabilityKind) {
26
- CapabilityKind["TOOL"] = "tool";
27
- CapabilityKind["SKILL"] = "skill";
28
- CapabilityKind["MCP"] = "mcp";
29
- /**
30
- * Remote agent reachable over the A2A (Agent-to-Agent) protocol.
31
- * The library's `A2ACapabilityProvider` is a client for this kind —
32
- * invoking an A2A capability sends a JSON-RPC `tasks/send` to the
33
- * remote agent's endpoint.
34
- */
35
- CapabilityKind["A2A"] = "a2a";
36
- })(exports.CapabilityKind || (exports.CapabilityKind = {}));
37
- /**
38
- * Where an auth credential comes from. Used by hosts to decide whether to
39
- * forward the credential per-request or let the capability provider resolve
40
- * it from its own environment.
41
- */
42
- exports.AuthSource = void 0;
43
- (function (AuthSource) {
44
- /** Resolved by the capability provider itself from its environment. Host never sends. */
45
- AuthSource["SERVER"] = "server";
46
- /** User-configured value stored in the host's credential store. Host forwards per-request. */
47
- AuthSource["USER"] = "user";
48
- /** Active OAuth/session token. Host forwards per-request from active session. */
49
- AuthSource["FORWARDED"] = "forwarded";
50
- })(exports.AuthSource || (exports.AuthSource = {}));
51
- //# sourceMappingURL=types.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.cjs","sources":["../../../src/providers/types.ts"],"sourcesContent":["/**\n * CapabilityProvider types — the abstraction that lets agents consume tools,\n * skills, and MCP-backed capabilities through a single interface regardless\n * of where they come from.\n *\n * Design principles:\n * 1. Source-agnostic — providers are distinguished by WHERE they come from\n * (tools-server, skill store, MCP server), not by the backend service\n * any individual tool calls.\n * 2. Credential-agnostic — providers receive a flat credentialMap from the\n * host; they don't know about user settings, databases, OAuth flows.\n * 3. Extension-ready — the shape reserves slots for upcoming patterns\n * (skills injectedMessages, ToolCall.auth/expires_at, skill sessions)\n * so when those land we don't refactor the core.\n */\n\nimport type { StructuredToolInterface } from '@langchain/core/tools';\n\n/**\n * Kind of capability. Today only TOOL is implemented; SKILL and MCP are\n * reserved — SkillCapabilityProvider + MCPCapabilityProvider will populate\n * them in later phases. Keeping the enum from day one prevents a breaking\n * change when those ship.\n */\nexport enum CapabilityKind {\n TOOL = 'tool',\n SKILL = 'skill',\n MCP = 'mcp',\n /**\n * Remote agent reachable over the A2A (Agent-to-Agent) protocol.\n * The library's `A2ACapabilityProvider` is a client for this kind —\n * invoking an A2A capability sends a JSON-RPC `tasks/send` to the\n * remote agent's endpoint.\n */\n A2A = 'a2a',\n}\n\n/**\n * Where an auth credential comes from. Used by hosts to decide whether to\n * forward the credential per-request or let the capability provider resolve\n * it from its own environment.\n */\nexport enum AuthSource {\n /** Resolved by the capability provider itself from its environment. Host never sends. */\n SERVER = 'server',\n /** User-configured value stored in the host's credential store. Host forwards per-request. */\n USER = 'user',\n /** Active OAuth/session token. Host forwards per-request from active session. */\n FORWARDED = 'forwarded',\n}\n\n/**\n * One entry in a capability's auth config. Describes a single credential\n * the capability needs. The `source` field tells the host how to resolve\n * the value; the `prod`/`admin`/`hide` flags control UI visibility.\n */\nexport interface AuthConfigEntry {\n /** Environment-variable-style name (e.g., \"OPENAI_API_KEY\"). Stable identifier. */\n authField: string;\n /** Human-readable label for UI. */\n label?: string;\n /** Optional description of how to obtain the credential. */\n description?: string;\n /** Where the value comes from. Defaults to USER if unspecified. */\n source?: AuthSource;\n /** True if the credential is required for the capability to function. */\n required?: boolean;\n /** Platform-managed in production — never prompt user. */\n prod?: boolean;\n /** Only admins can configure. */\n admin?: boolean;\n /** Never show in any UI (used when source === SERVER). */\n hide?: boolean;\n}\n\n/**\n * Arbitrary metadata attached to a capability. Extension point.\n *\n * Fields prefixed with \"Reserved for\" are not populated today but exist in\n * the type so upstream patterns (skills, auth expiration, sessions) can\n * drop in without a schema migration.\n */\nexport interface CapabilityMetadata {\n /** Icon URL or path relative to the provider's static asset root. */\n icon?: string;\n /** Category for UI grouping (e.g., \"search\", \"image\", \"finance\"). */\n category?: string;\n /** Free-form tags for filtering / search. */\n tags?: string[];\n\n // --- Governance flags ------------------------------------------------\n\n /**\n * When true, hosts omit this capability from user-facing pickers\n * (Agent Builder, tool dropdown). Still invokable when a saved agent\n * references it by name.\n */\n hidden?: boolean;\n /** When true, only admin-role users can enable or invoke this capability. */\n admin?: boolean;\n /**\n * Deployment-stage restriction. When set, hosts whose deployment stage\n * isn't in the array should hide the capability (e.g., a prod host\n * shouldn't surface a tool with `env: ['development']`).\n */\n env?: Array<'development' | 'production' | 'test' | 'staging'>;\n\n // --- Reserved for upstream patterns (not populated today) ---\n\n /** Reserved for upstream `fix/auth-events` — auth mode declared by tool. */\n auth?: string;\n /** Reserved for upstream `fix/auth-events` — Unix timestamp for token expiration. */\n expires_at?: number;\n /** Reserved for upstream skills — capability returns injected messages on execute. */\n injectedMessages?: boolean;\n /** Reserved for upstream skills — capability consumes ToolSessionMap state. */\n sessionAware?: boolean;\n}\n\n/**\n * A single capability — a tool, skill, or MCP-backed operation that an agent\n * can invoke. The shape mirrors common plugin-manifest conventions so the\n * same entry can round-trip between an upstream catalog and a host registry.\n */\nexport interface Capability {\n /** What kind of capability this is. Controls how it's invoked downstream. */\n kind: CapabilityKind;\n /**\n * Stable unique identifier. For tools this is the pluginKey\n * (e.g., \"dalle\", \"wikipedia\"). For skills this is the skill's `name`.\n * Used everywhere the capability is referenced.\n */\n name: string;\n /** Human-readable description for the LLM and UI. */\n description: string;\n /**\n * Input schema as JSON Schema. For tools this comes from the Zod schema\n * passed through `zodToJsonSchema`. Optional for capabilities with no\n * input (e.g., parameter-less skills).\n */\n schema?: unknown;\n /** Credential requirements. */\n authConfig: AuthConfigEntry[];\n /** Extension metadata. See CapabilityMetadata. */\n metadata: CapabilityMetadata;\n}\n\n/** Filter for fetchManifest. All fields optional; missing = no filter. */\nexport interface CapabilityFilter {\n kind?: CapabilityKind;\n tags?: string[];\n /** Restrict to capabilities whose `name` is in this list. */\n names?: string[];\n}\n\n/**\n * A flat credential map: authField → value.\n *\n * The host is responsible for resolving values (from env vars, user\n * settings, OAuth sessions, etc.) before passing to the provider. The\n * provider does not inspect the origin — it just forwards to the tool.\n */\nexport type CredentialMap = Record<string, string>;\n\n/**\n * The core interface. All concrete providers implement this.\n *\n * Providers are identified by `providerId` for logging/debug. They fetch\n * their own manifest and build LangChain-compatible runnables from it.\n *\n * Lifetime: a provider may be instantiated once at startup (e.g., tools-\n * server pointing at a stable URL) or per-user (e.g., MCP with per-user\n * OAuth). The interface is agnostic.\n */\nexport interface CapabilityProvider {\n /** Stable identifier for this provider instance (e.g., \"tools-server:https://...\"). */\n readonly providerId: string;\n\n /**\n * Return the list of capabilities this provider exposes.\n *\n * Implementations may cache the manifest — the contract is that the\n * returned list reflects the provider's current view of available\n * capabilities.\n *\n * @param filter optional filter to scope the result\n */\n fetchManifest(filter?: CapabilityFilter): Promise<Capability[]>;\n\n /**\n * Build LangChain StructuredTools from a set of capabilities using the\n * caller-supplied credentials.\n *\n * Called at agent init. The returned tools are bound to the LLM and\n * invoked during the graph's tool-calling loop.\n *\n * @param capabilities the subset of capabilities the agent wants to use\n * @param credentials credential values keyed by authField\n */\n createRunnables(\n capabilities: Capability[],\n credentials: CredentialMap\n ): Promise<StructuredToolInterface[]>;\n}\n"],"names":["CapabilityKind","AuthSource"],"mappings":";;AAAA;;;;;;;;;;;;;;AAcG;AAIH;;;;;AAKG;AACSA;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX;;;;;AAKG;AACH,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAXWA,sBAAc,KAAdA,sBAAc,GAAA,EAAA,CAAA,CAAA;AAa1B;;;;AAIG;AACSC;AAAZ,CAAA,UAAY,UAAU,EAAA;;AAEpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;;AAEjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;;AAEb,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EAPWA,kBAAU,KAAVA,kBAAU,GAAA,EAAA,CAAA,CAAA;;"}