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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +62 -0
  2. package/dist/cjs/agents/AgentContext.cjs +274 -67
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/enum.cjs +44 -13
  5. package/dist/cjs/common/enum.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +182 -5
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  10. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs +1 -1
  11. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
  12. package/dist/cjs/hooks/HookRegistry.cjs +162 -0
  13. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
  14. package/dist/cjs/hooks/executeHooks.cjs +276 -0
  15. package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
  16. package/dist/cjs/hooks/matchers.cjs +256 -0
  17. package/dist/cjs/hooks/matchers.cjs.map +1 -0
  18. package/dist/cjs/hooks/types.cjs +27 -0
  19. package/dist/cjs/hooks/types.cjs.map +1 -0
  20. package/dist/cjs/langchain/google-common.cjs +3 -0
  21. package/dist/cjs/langchain/google-common.cjs.map +1 -0
  22. package/dist/cjs/langchain/index.cjs +86 -0
  23. package/dist/cjs/langchain/index.cjs.map +1 -0
  24. package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
  25. package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
  26. package/dist/cjs/langchain/messages/tool.cjs +3 -0
  27. package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
  28. package/dist/cjs/langchain/messages.cjs +51 -0
  29. package/dist/cjs/langchain/messages.cjs.map +1 -0
  30. package/dist/cjs/langchain/openai.cjs +3 -0
  31. package/dist/cjs/langchain/openai.cjs.map +1 -0
  32. package/dist/cjs/langchain/prompts.cjs +11 -0
  33. package/dist/cjs/langchain/prompts.cjs.map +1 -0
  34. package/dist/cjs/langchain/runnables.cjs +19 -0
  35. package/dist/cjs/langchain/runnables.cjs.map +1 -0
  36. package/dist/cjs/langchain/tools.cjs +23 -0
  37. package/dist/cjs/langchain/tools.cjs.map +1 -0
  38. package/dist/cjs/langchain/utils/env.cjs +11 -0
  39. package/dist/cjs/langchain/utils/env.cjs.map +1 -0
  40. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
  41. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  42. package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
  43. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
  44. package/dist/cjs/llm/bedrock/index.cjs +61 -33
  45. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  46. package/dist/cjs/llm/openai/index.cjs +1 -4
  47. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  48. package/dist/cjs/llm/openai/utils/index.cjs +27 -10
  49. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  50. package/dist/cjs/main.cjs +178 -127
  51. package/dist/cjs/main.cjs.map +1 -1
  52. package/dist/cjs/memory/citations.cjs +4 -4
  53. package/dist/cjs/memory/citations.cjs.map +1 -1
  54. package/dist/cjs/memory/constants.cjs +17 -17
  55. package/dist/cjs/memory/constants.cjs.map +1 -1
  56. package/dist/cjs/memory/mmr.cjs +1 -1
  57. package/dist/cjs/memory/mmr.cjs.map +1 -1
  58. package/dist/cjs/memory/paths.cjs +1 -1
  59. package/dist/cjs/memory/paths.cjs.map +1 -1
  60. package/dist/cjs/memory/recallTracking.cjs +3 -3
  61. package/dist/cjs/memory/recallTracking.cjs.map +1 -1
  62. package/dist/cjs/memory/temporalDecay.cjs +2 -2
  63. package/dist/cjs/memory/temporalDecay.cjs.map +1 -1
  64. package/dist/cjs/messages/cache.cjs +89 -0
  65. package/dist/cjs/messages/cache.cjs.map +1 -1
  66. package/dist/cjs/messages/contextPruning.cjs +156 -0
  67. package/dist/cjs/messages/contextPruning.cjs.map +1 -0
  68. package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
  69. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
  70. package/dist/cjs/messages/format.cjs +144 -20
  71. package/dist/cjs/messages/format.cjs.map +1 -1
  72. package/dist/cjs/messages/prune.cjs +505 -4
  73. package/dist/cjs/messages/prune.cjs.map +1 -1
  74. package/dist/cjs/run.cjs +141 -1
  75. package/dist/cjs/run.cjs.map +1 -1
  76. package/dist/cjs/tools/BashExecutor.cjs +235 -0
  77. package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
  78. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
  79. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
  80. package/dist/cjs/tools/CodeExecutor.cjs +45 -47
  81. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  82. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
  83. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  84. package/dist/cjs/tools/ReadFile.cjs +44 -0
  85. package/dist/cjs/tools/ReadFile.cjs.map +1 -0
  86. package/dist/cjs/tools/SkillTool.cjs +51 -0
  87. package/dist/cjs/tools/SkillTool.cjs.map +1 -0
  88. package/dist/cjs/tools/SubagentTool.cjs +93 -0
  89. package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
  90. package/dist/cjs/tools/ToolNode.cjs +450 -24
  91. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  92. package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
  93. package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
  94. package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
  95. package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
  96. package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
  97. package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
  98. package/dist/cjs/tools/memory/shared.cjs +1 -1
  99. package/dist/cjs/tools/memory/shared.cjs.map +1 -1
  100. package/dist/cjs/tools/search/search.cjs +11 -3
  101. package/dist/cjs/tools/search/search.cjs.map +1 -1
  102. package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
  103. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
  104. package/dist/cjs/tools/search/tavily-search.cjs +372 -0
  105. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
  106. package/dist/cjs/tools/search/tool.cjs +28 -4
  107. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  108. package/dist/cjs/tools/search/utils.cjs +10 -3
  109. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  110. package/dist/cjs/tools/skillCatalog.cjs +84 -0
  111. package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
  112. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
  113. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
  114. package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
  115. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
  116. package/dist/cjs/types/agent-cache.cjs +54 -0
  117. package/dist/cjs/types/agent-cache.cjs.map +1 -0
  118. package/dist/cjs/types/graph.cjs.map +1 -1
  119. package/dist/cjs/utils/truncation.cjs +135 -0
  120. package/dist/cjs/utils/truncation.cjs.map +1 -0
  121. package/dist/esm/agents/AgentContext.mjs +274 -67
  122. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  123. package/dist/esm/common/enum.mjs +44 -12
  124. package/dist/esm/common/enum.mjs.map +1 -1
  125. package/dist/esm/graphs/Graph.mjs +182 -5
  126. package/dist/esm/graphs/Graph.mjs.map +1 -1
  127. package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
  128. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  129. package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
  130. package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
  131. package/dist/esm/hooks/HookRegistry.mjs +160 -0
  132. package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
  133. package/dist/esm/hooks/executeHooks.mjs +273 -0
  134. package/dist/esm/hooks/executeHooks.mjs.map +1 -0
  135. package/dist/esm/hooks/matchers.mjs +251 -0
  136. package/dist/esm/hooks/matchers.mjs.map +1 -0
  137. package/dist/esm/hooks/types.mjs +25 -0
  138. package/dist/esm/hooks/types.mjs.map +1 -0
  139. package/dist/esm/langchain/google-common.mjs +2 -0
  140. package/dist/esm/langchain/google-common.mjs.map +1 -0
  141. package/dist/esm/langchain/index.mjs +5 -0
  142. package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
  143. package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
  144. package/dist/esm/langchain/messages/tool.mjs +2 -0
  145. package/dist/esm/langchain/messages/tool.mjs.map +1 -0
  146. package/dist/esm/langchain/messages.mjs +2 -0
  147. package/dist/esm/langchain/messages.mjs.map +1 -0
  148. package/dist/esm/langchain/openai.mjs +2 -0
  149. package/dist/esm/langchain/openai.mjs.map +1 -0
  150. package/dist/esm/langchain/prompts.mjs +2 -0
  151. package/dist/esm/langchain/prompts.mjs.map +1 -0
  152. package/dist/esm/langchain/runnables.mjs +2 -0
  153. package/dist/esm/langchain/runnables.mjs.map +1 -0
  154. package/dist/esm/langchain/tools.mjs +2 -0
  155. package/dist/esm/langchain/tools.mjs.map +1 -0
  156. package/dist/esm/langchain/utils/env.mjs +2 -0
  157. package/dist/esm/langchain/utils/env.mjs.map +1 -0
  158. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
  159. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  160. package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
  161. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
  162. package/dist/esm/llm/bedrock/index.mjs +61 -34
  163. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  164. package/dist/esm/llm/openai/index.mjs +1 -4
  165. package/dist/esm/llm/openai/index.mjs.map +1 -1
  166. package/dist/esm/llm/openai/utils/index.mjs +27 -10
  167. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  168. package/dist/esm/main.mjs +21 -27
  169. package/dist/esm/main.mjs.map +1 -1
  170. package/dist/esm/memory/citations.mjs +4 -4
  171. package/dist/esm/memory/citations.mjs.map +1 -1
  172. package/dist/esm/memory/constants.mjs +17 -17
  173. package/dist/esm/memory/constants.mjs.map +1 -1
  174. package/dist/esm/memory/mmr.mjs +1 -1
  175. package/dist/esm/memory/mmr.mjs.map +1 -1
  176. package/dist/esm/memory/paths.mjs +1 -1
  177. package/dist/esm/memory/paths.mjs.map +1 -1
  178. package/dist/esm/memory/recallTracking.mjs +3 -3
  179. package/dist/esm/memory/recallTracking.mjs.map +1 -1
  180. package/dist/esm/memory/temporalDecay.mjs +2 -2
  181. package/dist/esm/memory/temporalDecay.mjs.map +1 -1
  182. package/dist/esm/messages/cache.mjs +89 -0
  183. package/dist/esm/messages/cache.mjs.map +1 -1
  184. package/dist/esm/messages/contextPruning.mjs +154 -0
  185. package/dist/esm/messages/contextPruning.mjs.map +1 -0
  186. package/dist/esm/messages/contextPruningSettings.mjs +50 -0
  187. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
  188. package/dist/esm/messages/format.mjs +136 -12
  189. package/dist/esm/messages/format.mjs.map +1 -1
  190. package/dist/esm/messages/prune.mjs +504 -7
  191. package/dist/esm/messages/prune.mjs.map +1 -1
  192. package/dist/esm/run.mjs +141 -1
  193. package/dist/esm/run.mjs.map +1 -1
  194. package/dist/esm/tools/BashExecutor.mjs +227 -0
  195. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  196. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
  197. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  198. package/dist/esm/tools/CodeExecutor.mjs +45 -48
  199. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  200. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
  201. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  202. package/dist/esm/tools/ReadFile.mjs +39 -0
  203. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  204. package/dist/esm/tools/SkillTool.mjs +46 -0
  205. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  206. package/dist/esm/tools/SubagentTool.mjs +86 -0
  207. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  208. package/dist/esm/tools/ToolNode.mjs +452 -26
  209. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  210. package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
  211. package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
  212. package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
  213. package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
  214. package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
  215. package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
  216. package/dist/esm/tools/memory/shared.mjs +1 -1
  217. package/dist/esm/tools/memory/shared.mjs.map +1 -1
  218. package/dist/esm/tools/search/search.mjs +11 -3
  219. package/dist/esm/tools/search/search.mjs.map +1 -1
  220. package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
  221. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
  222. package/dist/esm/tools/search/tavily-search.mjs +370 -0
  223. package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
  224. package/dist/esm/tools/search/tool.mjs +28 -4
  225. package/dist/esm/tools/search/tool.mjs.map +1 -1
  226. package/dist/esm/tools/search/utils.mjs +10 -3
  227. package/dist/esm/tools/search/utils.mjs.map +1 -1
  228. package/dist/esm/tools/skillCatalog.mjs +82 -0
  229. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  230. package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
  231. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  232. package/dist/esm/tools/toolOutputReferences.mjs +662 -0
  233. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
  234. package/dist/esm/types/agent-cache.mjs +52 -0
  235. package/dist/esm/types/agent-cache.mjs.map +1 -0
  236. package/dist/esm/types/graph.mjs.map +1 -1
  237. package/dist/esm/utils/truncation.mjs +128 -0
  238. package/dist/esm/utils/truncation.mjs.map +1 -0
  239. package/dist/types/agents/AgentContext.d.ts +101 -8
  240. package/dist/types/common/enum.d.ts +39 -12
  241. package/dist/types/common/index.d.ts +0 -1
  242. package/dist/types/graphs/Graph.d.ts +43 -0
  243. package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
  244. package/dist/types/graphs/index.d.ts +0 -1
  245. package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
  246. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  247. package/dist/types/hooks/executeHooks.d.ts +79 -0
  248. package/dist/types/hooks/index.d.ts +6 -0
  249. package/dist/types/hooks/matchers.d.ts +95 -0
  250. package/dist/types/hooks/types.d.ts +320 -0
  251. package/dist/types/index.d.ts +9 -9
  252. package/dist/types/langchain/google-common.d.ts +1 -0
  253. package/dist/types/langchain/index.d.ts +8 -0
  254. package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
  255. package/dist/types/langchain/messages/tool.d.ts +1 -0
  256. package/dist/types/langchain/messages.d.ts +2 -0
  257. package/dist/types/langchain/openai.d.ts +1 -0
  258. package/dist/types/langchain/prompts.d.ts +1 -0
  259. package/dist/types/langchain/runnables.d.ts +2 -0
  260. package/dist/types/langchain/tools.d.ts +2 -0
  261. package/dist/types/langchain/utils/env.d.ts +1 -0
  262. package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
  263. package/dist/types/llm/bedrock/index.d.ts +54 -1
  264. package/dist/types/llm/openai/index.d.ts +1 -1
  265. package/dist/types/memory/citations.d.ts +4 -4
  266. package/dist/types/memory/constants.d.ts +17 -17
  267. package/dist/types/memory/mmr.d.ts +3 -3
  268. package/dist/types/memory/paths.d.ts +1 -1
  269. package/dist/types/memory/temporalDecay.d.ts +2 -2
  270. package/dist/types/memory/types.d.ts +3 -3
  271. package/dist/types/messages/contextPruning.d.ts +42 -0
  272. package/dist/types/messages/contextPruningSettings.d.ts +44 -0
  273. package/dist/types/messages/format.d.ts +9 -1
  274. package/dist/types/messages/index.d.ts +2 -0
  275. package/dist/types/messages/prune.d.ts +91 -1
  276. package/dist/types/run.d.ts +2 -0
  277. package/dist/types/tools/BashExecutor.d.ts +76 -0
  278. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  279. package/dist/types/tools/CodeExecutor.d.ts +8 -26
  280. package/dist/types/tools/ReadFile.d.ts +28 -0
  281. package/dist/types/tools/SkillTool.d.ts +40 -0
  282. package/dist/types/tools/SubagentTool.d.ts +36 -0
  283. package/dist/types/tools/ToolNode.d.ts +77 -5
  284. package/dist/types/tools/memory/shared.d.ts +1 -1
  285. package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
  286. package/dist/types/tools/search/tavily-search.d.ts +4 -0
  287. package/dist/types/tools/search/types.d.ts +99 -5
  288. package/dist/types/tools/search/utils.d.ts +2 -2
  289. package/dist/types/tools/skillCatalog.d.ts +19 -0
  290. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  291. package/dist/types/tools/subagent/index.d.ts +2 -0
  292. package/dist/types/tools/subagent/types.d.ts +84 -0
  293. package/dist/types/tools/toolOutputReferences.d.ts +236 -0
  294. package/dist/types/types/agent-cache.d.ts +71 -0
  295. package/dist/types/types/graph.d.ts +163 -22
  296. package/dist/types/types/index.d.ts +3 -0
  297. package/dist/types/types/messages.d.ts +26 -0
  298. package/dist/types/types/run.d.ts +22 -0
  299. package/dist/types/types/skill.d.ts +9 -0
  300. package/dist/types/types/tools.d.ts +111 -0
  301. package/dist/types/utils/index.d.ts +1 -3
  302. package/dist/types/utils/truncation.d.ts +70 -0
  303. package/package.json +57 -17
  304. package/src/agents/AgentContext.ts +321 -78
  305. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
  306. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +266 -0
  307. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
  308. package/src/agents/__tests__/AgentContext.test.ts +632 -0
  309. package/src/common/__tests__/enum.test.ts +7 -17
  310. package/src/common/enum.ts +43 -12
  311. package/src/common/index.ts +0 -1
  312. package/src/graphs/Graph.ts +222 -2
  313. package/src/graphs/MultiAgentGraph.ts +154 -1466
  314. package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
  315. package/src/graphs/gapFeatures.test.ts +1 -1
  316. package/src/graphs/index.ts +0 -1
  317. package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
  318. package/src/graphs/phases/memoryFlushPhase.ts +2 -2
  319. package/src/hooks/HookRegistry.ts +208 -0
  320. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  321. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  322. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  323. package/src/hooks/__tests__/integration.test.ts +337 -0
  324. package/src/hooks/__tests__/matchers.test.ts +238 -0
  325. package/src/hooks/__tests__/toolHooks.test.ts +665 -0
  326. package/src/hooks/executeHooks.ts +375 -0
  327. package/src/hooks/index.ts +57 -0
  328. package/src/hooks/matchers.ts +280 -0
  329. package/src/hooks/types.ts +404 -0
  330. package/src/index.ts +15 -24
  331. package/src/langchain/google-common.ts +1 -0
  332. package/src/langchain/index.ts +8 -0
  333. package/src/langchain/language_models/chat_models.ts +1 -0
  334. package/src/langchain/messages/tool.ts +5 -0
  335. package/src/langchain/messages.ts +21 -0
  336. package/src/langchain/openai.ts +1 -0
  337. package/src/langchain/prompts.ts +1 -0
  338. package/src/langchain/runnables.ts +7 -0
  339. package/src/langchain/tools.ts +8 -0
  340. package/src/langchain/utils/env.ts +1 -0
  341. package/src/llm/anthropic/utils/message_inputs.ts +10 -1
  342. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
  343. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
  344. package/src/llm/bedrock/cacheSupport.test.ts +99 -0
  345. package/src/llm/bedrock/cacheSupport.ts +53 -0
  346. package/src/llm/bedrock/index.ts +116 -41
  347. package/src/llm/openai/index.ts +2 -2
  348. package/src/llm/openai/utils/index.ts +31 -14
  349. package/src/memory/citations.ts +4 -4
  350. package/src/memory/constants.ts +17 -17
  351. package/src/memory/mmr.ts +3 -3
  352. package/src/memory/paths.ts +1 -1
  353. package/src/memory/recallTracking.ts +3 -3
  354. package/src/memory/temporalDecay.ts +2 -2
  355. package/src/memory/types.ts +3 -3
  356. package/src/messages/__tests__/contextPruning.test.ts +228 -0
  357. package/src/messages/cache.test.ts +62 -24
  358. package/src/messages/cache.ts +112 -0
  359. package/src/messages/contextPruning.ts +191 -0
  360. package/src/messages/contextPruningSettings.ts +90 -0
  361. package/src/messages/ensureThinkingBlock.test.ts +1 -1
  362. package/src/messages/format.ts +164 -12
  363. package/src/messages/formatAgentMessages.skills.test.ts +413 -0
  364. package/src/messages/formatAgentMessages.test.ts +1 -1
  365. package/src/messages/index.ts +2 -0
  366. package/src/messages/prune.ts +661 -4
  367. package/src/run.ts +155 -1
  368. package/src/scripts/multi-agent-chain.ts +2 -2
  369. package/src/scripts/multi-agent-document-review-chain.ts +2 -2
  370. package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
  371. package/src/scripts/multi-agent-parallel.ts +3 -3
  372. package/src/scripts/multi-agent-sequence.ts +3 -3
  373. package/src/scripts/multi-agent-subagent.ts +246 -0
  374. package/src/scripts/multi-agent-supervisor.ts +5 -5
  375. package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
  376. package/src/scripts/sequential-full-metadata-test.ts +2 -2
  377. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  378. package/src/scripts/subagent-tools-debug.ts +160 -0
  379. package/src/scripts/test-custom-prompt-key.ts +3 -3
  380. package/src/scripts/test-handoff-input.ts +1 -1
  381. package/src/scripts/test-handoff-steering.ts +3 -3
  382. package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
  383. package/src/scripts/test-parallel-agent-labeling.ts +3 -3
  384. package/src/scripts/test-parallel-handoffs.ts +2 -2
  385. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
  386. package/src/scripts/test-thinking-handoff.ts +1 -1
  387. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
  388. package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
  389. package/src/scripts/test-tools-before-handoff.ts +1 -1
  390. package/src/specs/agent-handoffs.test.ts +26 -483
  391. package/src/specs/anthropic.simple.test.ts +61 -0
  392. package/src/specs/multi-agent-summarization.test.ts +396 -0
  393. package/src/specs/prune.orphans.test.ts +248 -0
  394. package/src/specs/prune.test.ts +104 -16
  395. package/src/specs/thinking-handoff.test.ts +19 -19
  396. package/src/tools/BashExecutor.ts +281 -0
  397. package/src/tools/BashProgrammaticToolCalling.ts +397 -0
  398. package/src/tools/CodeExecutor.ts +63 -54
  399. package/src/tools/ProgrammaticToolCalling.ts +29 -14
  400. package/src/tools/ReadFile.ts +39 -0
  401. package/src/tools/SkillTool.ts +46 -0
  402. package/src/tools/SubagentTool.ts +100 -0
  403. package/src/tools/ToolNode.ts +548 -26
  404. package/src/tools/__tests__/BashExecutor.test.ts +49 -0
  405. package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
  406. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
  407. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  408. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  409. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  410. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  411. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
  412. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
  413. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  414. package/src/tools/__tests__/subagentHooks.test.ts +210 -0
  415. package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
  416. package/src/tools/memory/memoryAppendTool.ts +1 -1
  417. package/src/tools/memory/memoryGetTool.ts +2 -2
  418. package/src/tools/memory/memorySearchTool.ts +3 -3
  419. package/src/tools/memory/shared.ts +1 -1
  420. package/src/tools/search/search.ts +12 -2
  421. package/src/tools/search/tavily-scraper.ts +235 -0
  422. package/src/tools/search/tavily-search.ts +424 -0
  423. package/src/tools/search/tavily.test.ts +965 -0
  424. package/src/tools/search/tool.ts +36 -2
  425. package/src/tools/search/types.ts +133 -8
  426. package/src/tools/search/utils.ts +13 -5
  427. package/src/tools/skillCatalog.ts +126 -0
  428. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  429. package/src/tools/subagent/index.ts +13 -0
  430. package/src/tools/subagent/types.test.ts +70 -0
  431. package/src/tools/subagent/types.ts +115 -0
  432. package/src/tools/toolOutputReferences.ts +825 -0
  433. package/src/types/agent-cache.ts +74 -0
  434. package/src/types/graph.ts +172 -20
  435. package/src/types/index.ts +3 -0
  436. package/src/types/messages.ts +27 -0
  437. package/src/types/run.ts +22 -0
  438. package/src/types/skill.ts +11 -0
  439. package/src/types/tools.ts +118 -0
  440. package/src/utils/__tests__/truncation.test.ts +66 -0
  441. package/src/utils/index.ts +1 -3
  442. package/src/utils/truncation.ts +154 -0
  443. package/dist/cjs/common/spawnPath.cjs +0 -104
  444. package/dist/cjs/common/spawnPath.cjs.map +0 -1
  445. package/dist/cjs/content/ArtifactStore.cjs +0 -579
  446. package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
  447. package/dist/cjs/content/ContentStore.cjs +0 -638
  448. package/dist/cjs/content/ContentStore.cjs.map +0 -1
  449. package/dist/cjs/content/contentAnalyzer.cjs +0 -91
  450. package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
  451. package/dist/cjs/content/index.cjs +0 -20
  452. package/dist/cjs/content/index.cjs.map +0 -1
  453. package/dist/cjs/content/mcpAutoCache.cjs +0 -115
  454. package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
  455. package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
  456. package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
  457. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
  458. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
  459. package/dist/cjs/providers/a2a/client.cjs +0 -92
  460. package/dist/cjs/providers/a2a/client.cjs.map +0 -1
  461. package/dist/cjs/providers/a2a/config.cjs +0 -38
  462. package/dist/cjs/providers/a2a/config.cjs.map +0 -1
  463. package/dist/cjs/providers/capabilityNaming.cjs +0 -43
  464. package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
  465. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
  466. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
  467. package/dist/cjs/providers/mcp/config.cjs +0 -42
  468. package/dist/cjs/providers/mcp/config.cjs.map +0 -1
  469. package/dist/cjs/providers/mcp/transport.cjs +0 -65
  470. package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
  471. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
  472. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
  473. package/dist/cjs/providers/types.cjs +0 -51
  474. package/dist/cjs/providers/types.cjs.map +0 -1
  475. package/dist/cjs/tools/artifacts/schema.cjs +0 -86
  476. package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
  477. package/dist/cjs/tools/artifacts/tool.cjs +0 -219
  478. package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
  479. package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
  480. package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
  481. package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
  482. package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
  483. package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
  484. package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
  485. package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
  486. package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
  487. package/dist/cjs/tools/proxyTool.cjs +0 -102
  488. package/dist/cjs/tools/proxyTool.cjs.map +0 -1
  489. package/dist/cjs/utils/childAgentContext.cjs +0 -242
  490. package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
  491. package/dist/cjs/utils/credentials.cjs +0 -142
  492. package/dist/cjs/utils/credentials.cjs.map +0 -1
  493. package/dist/cjs/utils/httpClient.cjs +0 -74
  494. package/dist/cjs/utils/httpClient.cjs.map +0 -1
  495. package/dist/cjs/utils/toolManifest.cjs +0 -100
  496. package/dist/cjs/utils/toolManifest.cjs.map +0 -1
  497. package/dist/esm/common/spawnPath.mjs +0 -95
  498. package/dist/esm/common/spawnPath.mjs.map +0 -1
  499. package/dist/esm/content/ArtifactStore.mjs +0 -576
  500. package/dist/esm/content/ArtifactStore.mjs.map +0 -1
  501. package/dist/esm/content/ContentStore.mjs +0 -635
  502. package/dist/esm/content/ContentStore.mjs.map +0 -1
  503. package/dist/esm/content/contentAnalyzer.mjs +0 -87
  504. package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
  505. package/dist/esm/content/index.mjs +0 -5
  506. package/dist/esm/content/mcpAutoCache.mjs +0 -111
  507. package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
  508. package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
  509. package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
  510. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
  511. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
  512. package/dist/esm/providers/a2a/client.mjs +0 -88
  513. package/dist/esm/providers/a2a/client.mjs.map +0 -1
  514. package/dist/esm/providers/a2a/config.mjs +0 -35
  515. package/dist/esm/providers/a2a/config.mjs.map +0 -1
  516. package/dist/esm/providers/capabilityNaming.mjs +0 -39
  517. package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
  518. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
  519. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
  520. package/dist/esm/providers/mcp/config.mjs +0 -39
  521. package/dist/esm/providers/mcp/config.mjs.map +0 -1
  522. package/dist/esm/providers/mcp/transport.mjs +0 -63
  523. package/dist/esm/providers/mcp/transport.mjs.map +0 -1
  524. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
  525. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
  526. package/dist/esm/providers/types.mjs +0 -51
  527. package/dist/esm/providers/types.mjs.map +0 -1
  528. package/dist/esm/tools/artifacts/schema.mjs +0 -79
  529. package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
  530. package/dist/esm/tools/artifacts/tool.mjs +0 -213
  531. package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
  532. package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
  533. package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
  534. package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
  535. package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
  536. package/dist/esm/tools/fileSearch/schema.mjs +0 -15
  537. package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
  538. package/dist/esm/tools/fileSearch/tool.mjs +0 -152
  539. package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
  540. package/dist/esm/tools/proxyTool.mjs +0 -100
  541. package/dist/esm/tools/proxyTool.mjs.map +0 -1
  542. package/dist/esm/utils/childAgentContext.mjs +0 -237
  543. package/dist/esm/utils/childAgentContext.mjs.map +0 -1
  544. package/dist/esm/utils/credentials.mjs +0 -135
  545. package/dist/esm/utils/credentials.mjs.map +0 -1
  546. package/dist/esm/utils/httpClient.mjs +0 -70
  547. package/dist/esm/utils/httpClient.mjs.map +0 -1
  548. package/dist/esm/utils/toolManifest.mjs +0 -96
  549. package/dist/esm/utils/toolManifest.mjs.map +0 -1
  550. package/dist/types/common/spawnPath.d.ts +0 -59
  551. package/dist/types/content/ArtifactStore.d.ts +0 -223
  552. package/dist/types/content/ContentStore.d.ts +0 -140
  553. package/dist/types/content/contentAnalyzer.d.ts +0 -38
  554. package/dist/types/content/index.d.ts +0 -24
  555. package/dist/types/content/mcpAutoCache.d.ts +0 -89
  556. package/dist/types/content/types.d.ts +0 -75
  557. package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
  558. package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
  559. package/dist/types/providers/a2a/client.d.ts +0 -47
  560. package/dist/types/providers/a2a/config.d.ts +0 -18
  561. package/dist/types/providers/a2a/index.d.ts +0 -6
  562. package/dist/types/providers/a2a/types.d.ts +0 -173
  563. package/dist/types/providers/capabilityNaming.d.ts +0 -25
  564. package/dist/types/providers/index.d.ts +0 -12
  565. package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
  566. package/dist/types/providers/mcp/config.d.ts +0 -20
  567. package/dist/types/providers/mcp/index.d.ts +0 -5
  568. package/dist/types/providers/mcp/transport.d.ts +0 -18
  569. package/dist/types/providers/mcp/types.d.ts +0 -112
  570. package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
  571. package/dist/types/providers/tools-server/index.d.ts +0 -1
  572. package/dist/types/providers/types.d.ts +0 -184
  573. package/dist/types/tools/artifacts/index.d.ts +0 -3
  574. package/dist/types/tools/artifacts/schema.d.ts +0 -63
  575. package/dist/types/tools/artifacts/tool.d.ts +0 -16
  576. package/dist/types/tools/artifacts/types.d.ts +0 -127
  577. package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
  578. package/dist/types/tools/fileSearch/index.d.ts +0 -5
  579. package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
  580. package/dist/types/tools/fileSearch/schema.d.ts +0 -13
  581. package/dist/types/tools/fileSearch/tool.d.ts +0 -18
  582. package/dist/types/tools/fileSearch/types.d.ts +0 -139
  583. package/dist/types/tools/proxyTool.d.ts +0 -62
  584. package/dist/types/tools/search/test.d.ts +0 -1
  585. package/dist/types/utils/childAgentContext.d.ts +0 -99
  586. package/dist/types/utils/credentials.d.ts +0 -77
  587. package/dist/types/utils/httpClient.d.ts +0 -46
  588. package/dist/types/utils/toolManifest.d.ts +0 -49
  589. package/src/common/__tests__/spawnPath.test.ts +0 -110
  590. package/src/common/spawnPath.ts +0 -101
  591. package/src/content/ArtifactStore.ts +0 -782
  592. package/src/content/ContentStore.ts +0 -753
  593. package/src/content/contentAnalyzer.ts +0 -105
  594. package/src/content/index.ts +0 -51
  595. package/src/content/mcpAutoCache.ts +0 -185
  596. package/src/content/types.ts +0 -82
  597. package/src/graphs/HandoffRegistry.ts +0 -199
  598. package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
  599. package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
  600. package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
  601. package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
  602. package/src/graphs/handoffValidation.test.ts +0 -353
  603. package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
  604. package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
  605. package/src/providers/__tests__/types.test.ts +0 -64
  606. package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
  607. package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
  608. package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
  609. package/src/providers/a2a/client.ts +0 -115
  610. package/src/providers/a2a/config.ts +0 -40
  611. package/src/providers/a2a/index.ts +0 -29
  612. package/src/providers/a2a/types.ts +0 -191
  613. package/src/providers/capabilityNaming.ts +0 -42
  614. package/src/providers/index.ts +0 -68
  615. package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
  616. package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
  617. package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
  618. package/src/providers/mcp/config.ts +0 -45
  619. package/src/providers/mcp/index.ts +0 -21
  620. package/src/providers/mcp/transport.ts +0 -76
  621. package/src/providers/mcp/types.ts +0 -139
  622. package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
  623. package/src/providers/tools-server/index.ts +0 -1
  624. package/src/providers/types.ts +0 -204
  625. package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
  626. package/src/scripts/test-handoff-preamble.ts +0 -278
  627. package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
  628. package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
  629. package/src/tools/artifacts/index.ts +0 -33
  630. package/src/tools/artifacts/schema.ts +0 -99
  631. package/src/tools/artifacts/tool.ts +0 -289
  632. package/src/tools/artifacts/types.ts +0 -162
  633. package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
  634. package/src/tools/fileSearch/formatter.ts +0 -129
  635. package/src/tools/fileSearch/index.ts +0 -23
  636. package/src/tools/fileSearch/ragClient.ts +0 -137
  637. package/src/tools/fileSearch/schema.ts +0 -19
  638. package/src/tools/fileSearch/tool.ts +0 -207
  639. package/src/tools/fileSearch/types.ts +0 -149
  640. package/src/tools/proxyTool.ts +0 -166
  641. package/src/tools/search/output.md +0 -2775
  642. package/src/tools/search/test.html +0 -884
  643. package/src/tools/search/test.md +0 -643
  644. package/src/tools/search/test.ts +0 -159
  645. package/src/utils/__tests__/childAgentContext.test.ts +0 -217
  646. package/src/utils/__tests__/credentials.test.ts +0 -130
  647. package/src/utils/__tests__/httpClient.test.ts +0 -75
  648. package/src/utils/__tests__/toolManifest.test.ts +0 -116
  649. package/src/utils/childAgentContext.ts +0 -259
  650. package/src/utils/credentials.ts +0 -157
  651. package/src/utils/httpClient.ts +0 -92
  652. package/src/utils/toolManifest.ts +0 -109
  653. /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
@@ -0,0 +1,36 @@
1
+ import { Constants } from '@/common';
2
+ import type { SubagentConfig } from '@/types';
3
+ import type { JsonSchemaType, LCTool } from '@/types/tools';
4
+ export declare const SubagentToolName = Constants.SUBAGENT;
5
+ export declare const SubagentToolDescription = "Delegate a task to a specialized subagent that runs in an isolated context window. The subagent executes independently and returns only its final text result \u2014 all intermediate tool calls, reasoning, and context stay isolated.\n\nWHEN TO USE:\n- The task is self-contained and can be described in a single prompt.\n- You want to offload verbose or exploratory work without bloating your own context.\n- A specialized subagent is available for the task domain.\n\nWHAT HAPPENS:\n- A fresh agent is created with the task description as its only input.\n- The subagent runs to completion using its own tools and context.\n- Only the final text response is returned to you.\n\nCONSTRAINTS:\n- subagent_type must match one of the available types listed below.\n- The subagent cannot see your conversation history.";
6
+ export declare const SubagentToolSchema: {
7
+ readonly type: "object";
8
+ readonly properties: {
9
+ readonly description: {
10
+ readonly type: "string";
11
+ readonly description: "Complete task description for the subagent. This is the ONLY information it receives — include all necessary context, requirements, and constraints.";
12
+ };
13
+ readonly subagent_type: {
14
+ readonly type: "string";
15
+ readonly description: "Which subagent type to delegate to. Must be one of the available types.";
16
+ };
17
+ };
18
+ readonly required: string[];
19
+ };
20
+ export declare const SubagentToolDefinition: LCTool;
21
+ /**
22
+ * Build the name, schema, and description params for `tool()` from available configs.
23
+ * Used by `Graph.createAgentNode()` when constructing the runtime tool instance.
24
+ * Extends `SubagentToolSchema` by populating `subagent_type.enum` dynamically.
25
+ */
26
+ export declare function buildSubagentToolParams(configs: SubagentConfig[]): {
27
+ name: string;
28
+ schema: JsonSchemaType;
29
+ description: string;
30
+ };
31
+ /**
32
+ * Create a SubagentTool LCTool definition with dynamic enum and description
33
+ * populated from the available subagent configs.
34
+ * Used for the tool registry in event-driven mode.
35
+ */
36
+ export declare function createSubagentToolDefinition(configs: SubagentConfig[]): LCTool;
@@ -4,6 +4,23 @@ import type { RunnableConfig } from '@langchain/core/runnables';
4
4
  import type { BaseMessage } from '@langchain/core/messages';
5
5
  import type * as t from '@/types';
6
6
  import { RunnableCallable } from '@/utils';
7
+ import { ToolOutputReferenceRegistry } from '@/tools/toolOutputReferences';
8
+ import type { ResolvedArgsByCallId } from '@/tools/toolOutputReferences';
9
+ /**
10
+ * Per-call batch context for `runTool`. Bundles every optional batch-scoped
11
+ * value the method needs so the signature stays at three positional params
12
+ * even as new context fields are added. (PR #117).
13
+ */
14
+ type RunToolBatchContext = {
15
+ /** Position of this call within the parent ToolNode batch. */
16
+ batchIndex?: number;
17
+ /** Batch turn shared across every call in the batch. */
18
+ turn?: number;
19
+ /** Registry partition scope (run id or anonymous batch id). */
20
+ batchScopeId?: string;
21
+ /** Batch-local sink for post-substitution args. */
22
+ resolvedArgsByCallId?: ResolvedArgsByCallId;
23
+ };
7
24
  export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
8
25
  private toolMap;
9
26
  private loadRuntimeTools?;
@@ -30,7 +47,37 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
30
47
  private toolApprovalConfig?;
31
48
  /** Buffer for recovering truncated tool call arguments from streaming data */
32
49
  private streamingToolCallBuffer?;
33
- constructor({ tools, toolMap, name, tags, errorHandler, toolCallStepIds, handleToolErrors, loadRuntimeTools, toolRegistry, sessions, eventDrivenMode, agentId, directToolNames, streamingToolCallBuffer, toolApprovalConfig, }: t.ToolNodeConstructorParams);
50
+ /** Hook registry threaded down from Run for tool-lifecycle events. */
51
+ private hookRegistry?;
52
+ /**
53
+ * Tool output reference registry threaded down from Run / Graph
54
+ * (PR #114). When set, dispatchToolEvents resolves
55
+ * `{{tool<i>turn<n>}}` placeholders in args before invoking each tool
56
+ * and stores successful outputs under their stable reference keys for
57
+ * subsequent calls in the same run to pipe through.
58
+ */
59
+ private toolOutputRegistry?;
60
+ /**
61
+ * Per-batch turn counter for the registry. Increments once per
62
+ * `dispatchToolEvents` invocation so `tool<i>turn<n>` keys remain
63
+ * unique across overlapping batches in a single run.
64
+ */
65
+ private toolOutputTurn;
66
+ /**
67
+ * Counter for synthesising scope ids when `run()` is called without a
68
+ * `run_id` in config. Each anonymous batch gets a unique
69
+ * `\0anon-<n>` scope so concurrent invocations don't collide on the
70
+ * shared `toolOutputRegistry`.
71
+ */
72
+ private anonBatchCounter;
73
+ constructor({ tools, toolMap, name, tags, errorHandler, toolCallStepIds, handleToolErrors, loadRuntimeTools, toolRegistry, sessions, eventDrivenMode, agentId, directToolNames, streamingToolCallBuffer, toolApprovalConfig, hookRegistry, toolOutputRegistry, toolOutputReferences, maxToolResultChars: _maxToolResultChars, }: t.ToolNodeConstructorParams);
74
+ /**
75
+ * Test-observation accessor for the tool-output reference registry.
76
+ * @internal Exposed for test observation only. Host code should rely on
77
+ * `{{tool<i>turn<n>}}` substitution at tool-invocation time and not
78
+ * mutate the registry directly.
79
+ */
80
+ _unsafeGetToolOutputRegistry(): ToolOutputReferenceRegistry | undefined;
34
81
  /**
35
82
  * Returns cached programmatic tools, computing once on first access.
36
83
  * Single iteration builds both toolMap and toolDefs simultaneously.
@@ -63,9 +110,15 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
63
110
  */
64
111
  private requestApproval;
65
112
  /**
66
- * Runs a single tool call with error handling
113
+ * Runs a single tool call with error handling.
114
+ *
115
+ * @param batchContext Optional per-batch context (PR #117).
116
+ * Threaded from `run()` for tool output reference annotation. The
117
+ * `batchScopeId` field carries an anonymous synthetic scope when the
118
+ * caller has no `run_id`, so concurrent batches don't collide on the
119
+ * shared registry.
67
120
  */
68
- protected runTool(call: ToolCall, config: RunnableConfig): Promise<BaseMessage | Command>;
121
+ protected runTool(call: ToolCall, config: RunnableConfig, batchContext?: RunToolBatchContext): Promise<BaseMessage | Command>;
69
122
  /**
70
123
  * Recover truncated tool call arguments using the raw streaming buffer.
71
124
  *
@@ -89,6 +142,14 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
89
142
  * @returns The args with recovered fields merged in
90
143
  */
91
144
  private recoverTruncatedArgs;
145
+ /**
146
+ * Stores the raw, untruncated tool output in the registry under `refKey`
147
+ * (when registry + refKey are both present) and returns the metadata
148
+ * envelope to stamp on `ToolMessage.additional_kwargs`. The lazy
149
+ * annotation transform reads `_refKey` / `_refScope` / `_unresolvedRefs`
150
+ * at LLM request time to produce the transient annotated copy.
151
+ */
152
+ private recordOutputReference;
92
153
  /**
93
154
  * Builds code session context for injection into event-driven tool calls.
94
155
  * Mirrors the session injection logic in runTool() for direct execution.
@@ -110,8 +171,18 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
110
171
  */
111
172
  private handleRunToolCompletions;
112
173
  /**
113
- * Dispatches tool calls to the host via ON_TOOL_EXECUTE event and returns raw ToolMessages.
114
- * Core logic for event-driven execution, separated from output shaping.
174
+ * Converts InjectedMessage entries into LangChain HumanMessages.
175
+ * 'user' and 'system' both become HumanMessage to avoid provider rejections
176
+ * (Anthropic/Google reject non-leading SystemMessages); the original role
177
+ * and metadata are preserved in additional_kwargs for downstream consumers.
178
+ */
179
+ private convertInjectedMessages;
180
+ /**
181
+ * Dispatches tool calls to the host via ON_TOOL_EXECUTE event and returns
182
+ * the resulting ToolMessages along with any injected messages emitted by
183
+ * the host (e.g. SkillTool body injection). Injected messages must be
184
+ * placed AFTER the ToolMessages so the AIMessage tool_calls -> ToolMessage
185
+ * adjacency required by some providers is preserved.
115
186
  */
116
187
  private dispatchToolEvents;
117
188
  /**
@@ -124,3 +195,4 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
124
195
  private isMessagesState;
125
196
  }
126
197
  export declare function toolsCondition<T extends string>(state: BaseMessage[] | typeof MessagesAnnotation.State, toolNode: T, invokedToolIds?: Set<string>): T | typeof END;
198
+ export {};
@@ -67,7 +67,7 @@ export interface MemoryGetToolResult {
67
67
  export declare function buildMemorySearchUnavailableResult(error: string | undefined): MemorySearchToolResult;
68
68
  /**
69
69
  * Clamp a ranked result list to a total character budget.
70
- * Ported from upstream `tools.citations.ts::clampResultsByInjectedChars`.
70
+ * Ported from a reference implementation `tools.citations.ts::clampResultsByInjectedChars`.
71
71
  */
72
72
  export declare function clampResultsByInjectedChars<T extends {
73
73
  content: string;
@@ -0,0 +1,19 @@
1
+ import type * as t from './types';
2
+ export declare class TavilyScraper implements t.BaseScraper {
3
+ private apiKey;
4
+ private apiUrl;
5
+ private timeout;
6
+ private payloadTimeout;
7
+ private logger;
8
+ private extractDepth;
9
+ private includeImages;
10
+ private includeFavicon;
11
+ private format;
12
+ constructor(config?: t.TavilyScraperConfig);
13
+ scrapeUrl(url: string, options?: t.TavilyScrapeOptions): Promise<[string, t.TavilyScrapeResponse]>;
14
+ scrapeUrls(urls: string[], options?: t.TavilyScrapeOptions): Promise<Array<[string, t.TavilyScrapeResponse]>>;
15
+ private extractBatch;
16
+ extractContent(response: t.TavilyScrapeResponse): [string, undefined | t.References];
17
+ extractMetadata(response: t.TavilyScrapeResponse): t.GenericScrapeMetadata;
18
+ }
19
+ export declare const createTavilyScraper: (config?: t.TavilyScraperConfig) => TavilyScraper;
@@ -0,0 +1,4 @@
1
+ import type * as t from './types';
2
+ export declare const createTavilyAPI: (apiKey?: string, apiUrl?: string, options?: t.TavilySearchOptions) => {
3
+ getSources: (params: t.GetSourcesParams) => Promise<t.SearchResult>;
4
+ };
@@ -2,8 +2,8 @@ import type { Logger as WinstonLogger } from 'winston';
2
2
  import type { RunnableConfig } from '@langchain/core/runnables';
3
3
  import type { BaseReranker } from './rerankers';
4
4
  import { DATE_RANGE } from './schema';
5
- export type SearchProvider = 'serper' | 'searxng';
6
- export type ScraperProvider = 'firecrawl' | 'serper';
5
+ export type SearchProvider = 'serper' | 'searxng' | 'tavily';
6
+ export type ScraperProvider = 'firecrawl' | 'serper' | 'tavily';
7
7
  export type RerankerType = 'infinity' | 'jina' | 'cohere' | 'none';
8
8
  export interface Highlight {
9
9
  score: number;
@@ -56,11 +56,50 @@ export interface Source {
56
56
  snippet?: string;
57
57
  date?: string;
58
58
  }
59
+ export type TavilyTimeRange = 'day' | 'week' | 'month' | 'year';
60
+ export type TavilyTimeRangeInput = TavilyTimeRange | 'h' | 'd' | 'w' | 'm' | 'y';
61
+ export interface TavilySearchOptions {
62
+ searchDepth?: 'basic' | 'advanced' | 'fast' | 'ultra-fast';
63
+ maxResults?: number;
64
+ includeImages?: boolean;
65
+ includeAnswer?: boolean | 'basic' | 'advanced';
66
+ includeRawContent?: boolean | 'markdown' | 'text';
67
+ includeDomains?: string[];
68
+ excludeDomains?: string[];
69
+ topic?: 'general' | 'news' | 'finance';
70
+ timeRange?: TavilyTimeRangeInput;
71
+ includeImageDescriptions?: boolean;
72
+ includeFavicon?: boolean;
73
+ chunksPerSource?: number;
74
+ safeSearch?: boolean;
75
+ timeout?: number;
76
+ }
77
+ export interface TavilySearchPayload {
78
+ query: string;
79
+ search_depth: NonNullable<TavilySearchOptions['searchDepth']>;
80
+ topic: NonNullable<TavilySearchOptions['topic']>;
81
+ max_results: number;
82
+ safe_search?: boolean;
83
+ time_range?: TavilyTimeRange;
84
+ country?: string;
85
+ include_images?: boolean;
86
+ include_answer?: NonNullable<TavilySearchOptions['includeAnswer']>;
87
+ include_raw_content?: NonNullable<TavilySearchOptions['includeRawContent']>;
88
+ include_domains?: string[];
89
+ exclude_domains?: string[];
90
+ include_image_descriptions?: boolean;
91
+ include_favicon?: boolean;
92
+ chunks_per_source?: number;
93
+ }
59
94
  export interface SearchConfig {
60
95
  searchProvider?: SearchProvider;
61
96
  serperApiKey?: string;
62
97
  searxngInstanceUrl?: string;
63
98
  searxngApiKey?: string;
99
+ tavilyApiKey?: string;
100
+ tavilySearchUrl?: string;
101
+ tavilyExtractUrl?: string;
102
+ tavilySearchOptions?: TavilySearchOptions;
64
103
  /** Domains to exclude from search results (e.g., 'reddit.com', 'twitter.com').
65
104
  * Appended as -site: operators to the search query. */
66
105
  domainBlocklist?: string[];
@@ -101,6 +140,16 @@ export interface SerperScraperConfig {
101
140
  logger?: Logger;
102
141
  includeMarkdown?: boolean;
103
142
  }
143
+ export interface TavilyScraperConfig {
144
+ apiKey?: string;
145
+ apiUrl?: string;
146
+ timeout?: number;
147
+ logger?: Logger;
148
+ extractDepth?: 'basic' | 'advanced';
149
+ includeImages?: boolean;
150
+ includeFavicon?: boolean;
151
+ format?: 'markdown' | 'text';
152
+ }
104
153
  export interface ScraperContentResult {
105
154
  content: string;
106
155
  }
@@ -141,6 +190,7 @@ export interface CohereRerankerResponse {
141
190
  export type SafeSearchLevel = 0 | 1 | 2;
142
191
  export type Logger = WinstonLogger;
143
192
  export interface SearchToolConfig extends SearchConfig, ProcessSourcesConfig, FirecrawlConfig {
193
+ tavilyScraperOptions?: TavilyScraperConfig;
144
194
  logger?: Logger;
145
195
  safeSearch?: SafeSearchLevel;
146
196
  jinaApiKey?: string;
@@ -163,15 +213,27 @@ export type UsedReferences = {
163
213
  originalIndex: number;
164
214
  reference: MediaReference;
165
215
  }[];
216
+ export type AnyScraperResponse = FirecrawlScrapeResponse | SerperScrapeResponse | TavilyScrapeResponse;
166
217
  /** Base Scraper Interface */
167
218
  export interface BaseScraper {
168
- scrapeUrl(url: string, options?: unknown): Promise<[string, FirecrawlScrapeResponse | SerperScrapeResponse]>;
169
- extractContent(response: FirecrawlScrapeResponse | SerperScrapeResponse): [string, undefined | References];
170
- extractMetadata(response: FirecrawlScrapeResponse | SerperScrapeResponse): ScrapeMetadata | Record<string, string | number | boolean | null | undefined>;
219
+ scrapeUrl(url: string, options?: unknown): Promise<[string, AnyScraperResponse]>;
220
+ scrapeUrls?(urls: string[], options?: unknown): Promise<Array<[string, AnyScraperResponse]>>;
221
+ extractContent(response: AnyScraperResponse): [string, undefined | References];
222
+ extractMetadata(response: AnyScraperResponse): ScrapeMetadata | GenericScrapeMetadata;
171
223
  }
172
224
  /** Firecrawl */
173
225
  export type FirecrawlScrapeOptions = Omit<FirecrawlScraperConfig, 'apiKey' | 'apiUrl' | 'version' | 'logger'>;
174
226
  export type SerperScrapeOptions = Omit<SerperScraperConfig, 'apiKey' | 'apiUrl' | 'logger'>;
227
+ export type TavilyScrapeOptions = Omit<TavilyScraperConfig, 'apiKey' | 'apiUrl' | 'logger'>;
228
+ export interface TavilyExtractPayload {
229
+ urls: string[];
230
+ extract_depth: NonNullable<TavilyScraperConfig['extractDepth']>;
231
+ include_images: boolean;
232
+ include_favicon?: boolean;
233
+ format?: NonNullable<TavilyScraperConfig['format']>;
234
+ timeout?: number;
235
+ }
236
+ export type GenericScrapeMetadata = Record<string, string | number | boolean | null | undefined>;
175
237
  export interface ScrapeMetadata {
176
238
  sourceURL?: string;
177
239
  url?: string;
@@ -247,6 +309,38 @@ export interface SerperScrapeResponse {
247
309
  };
248
310
  error?: string;
249
311
  }
312
+ export interface TavilyScrapeResponse {
313
+ success: boolean;
314
+ data?: {
315
+ rawContent?: string;
316
+ images?: string[];
317
+ favicon?: string;
318
+ };
319
+ error?: string;
320
+ }
321
+ export interface TavilySearchResult {
322
+ title?: string;
323
+ url?: string;
324
+ content?: string;
325
+ score?: number;
326
+ published_date?: string;
327
+ }
328
+ export type TavilyImageResult = string | {
329
+ url?: string;
330
+ description?: string;
331
+ };
332
+ export interface TavilySearchResponse {
333
+ answer?: string;
334
+ images?: TavilyImageResult[];
335
+ results?: TavilySearchResult[];
336
+ }
337
+ export interface TavilyExtractResult {
338
+ url: string;
339
+ raw_content?: string;
340
+ images?: string[];
341
+ favicon?: string;
342
+ error?: string;
343
+ }
250
344
  export interface FirecrawlScraperConfig {
251
345
  apiKey?: string;
252
346
  apiUrl?: string;
@@ -6,5 +6,5 @@ import type * as t from './types';
6
6
  */
7
7
  export declare const createDefaultLogger: () => t.Logger;
8
8
  export declare const fileExtRegex: RegExp;
9
- export declare const getDomainName: (link: string, metadata?: t.ScrapeMetadata, logger?: t.Logger) => string | undefined;
10
- export declare function getAttribution(link: string, metadata?: t.ScrapeMetadata, logger?: t.Logger): string | undefined;
9
+ export declare const getDomainName: (link: string, metadata?: t.ScrapeMetadata | t.GenericScrapeMetadata, logger?: t.Logger) => string | undefined;
10
+ export declare function getAttribution(link: string, metadata?: t.ScrapeMetadata | t.GenericScrapeMetadata, logger?: t.Logger): string | undefined;
@@ -0,0 +1,19 @@
1
+ import type { SkillCatalogEntry } from '@/types';
2
+ export type SkillCatalogOptions = {
3
+ /** Total context window in tokens. Default: 200_000 */
4
+ contextWindowTokens?: number;
5
+ /** Fraction of context budget for catalog. Default: 0.01 (1%) */
6
+ budgetPercent?: number;
7
+ /** Max chars per entry description. Default: 250 */
8
+ maxEntryChars?: number;
9
+ /** Descriptions below this length trigger names-only fallback. Default: 20 */
10
+ minDescLength?: number;
11
+ /** Approximate chars per token for budget calculation. Default: 4 */
12
+ charsPerToken?: number;
13
+ };
14
+ /**
15
+ * Formats a skill catalog for injection into agent context.
16
+ * Uses a truncation ladder: full descriptions, proportional truncation, names-only.
17
+ * Returns empty string for empty input.
18
+ */
19
+ export declare function formatSkillCatalog(skills: SkillCatalogEntry[], opts?: SkillCatalogOptions): string;
@@ -0,0 +1,137 @@
1
+ import type { BaseMessage } from '@langchain/core/messages';
2
+ import type { AgentInputs, StandardGraphInput, ResolvedSubagentConfig, SubagentConfig, TokenCounter } from '@/types';
3
+ import type { HookRegistry } from '@/hooks';
4
+ import type { AgentContext } from '@/agents/AgentContext';
5
+ import type { StandardGraph } from '@/graphs/Graph';
6
+ import type { HandlerRegistry } from '@/events';
7
+ export type SubagentExecuteParams = {
8
+ description: string;
9
+ subagentType: string;
10
+ threadId?: string;
11
+ /**
12
+ * Parent-side `tool_call_id` of the `subagent` tool invocation that
13
+ * triggered this execution. Surfaced on {@link SubagentUpdateEvent} so
14
+ * hosts can correlate child updates back to the originating tool call
15
+ * without relying on event ordering heuristics.
16
+ */
17
+ parentToolCallId?: string;
18
+ };
19
+ export type SubagentExecuteResult = {
20
+ content: string;
21
+ messages: BaseMessage[];
22
+ };
23
+ /**
24
+ * Factory that constructs a child graph for subagent execution. Injected
25
+ * rather than imported so that `SubagentExecutor` does not have a runtime
26
+ * dependency on `StandardGraph` — this avoids a circular dependency between
27
+ * `src/graphs/Graph.ts` and `src/tools/subagent/` that would otherwise break
28
+ * Rollup's chunking under `preserveModules`.
29
+ */
30
+ export type ChildGraphFactory = (input: StandardGraphInput) => StandardGraph;
31
+ export type SubagentExecutorOptions = {
32
+ configs: Map<string, ResolvedSubagentConfig>;
33
+ parentSignal?: AbortSignal;
34
+ hookRegistry?: HookRegistry;
35
+ parentRunId: string;
36
+ parentAgentId?: string;
37
+ tokenCounter?: TokenCounter;
38
+ /** Remaining nesting budget. 0 or negative blocks execution. */
39
+ maxDepth?: number;
40
+ /**
41
+ * Factory for constructing the isolated child graph. Callers pass
42
+ * `(input) => new StandardGraph(input)` — injected to break a circular
43
+ * module dependency.
44
+ */
45
+ createChildGraph: ChildGraphFactory;
46
+ /**
47
+ * Parent's event handler registry. When provided, child-graph events are
48
+ * forwarded through this registry so hosts can:
49
+ * (a) execute event-driven tools (`ON_TOOL_EXECUTE` routed to parent's handler),
50
+ * (b) surface child activity to a UI via wrapped {@link GraphEvents.ON_SUBAGENT_UPDATE}.
51
+ * When omitted, the child runs fully isolated (legacy behavior).
52
+ *
53
+ * Can be a direct `HandlerRegistry` or a zero-arg getter — use the getter
54
+ * form when the registry is assigned to the graph AFTER the executor is
55
+ * constructed (the current `Run.create` flow sets `handlerRegistry`
56
+ * post-`createWorkflow`, so `createAgentNode` must capture lazily).
57
+ */
58
+ parentHandlerRegistry?: HandlerRegistry | (() => HandlerRegistry | undefined);
59
+ };
60
+ export declare class SubagentExecutor {
61
+ private readonly configs;
62
+ private readonly parentSignal?;
63
+ private readonly hookRegistry?;
64
+ private readonly parentRunId;
65
+ private readonly parentAgentId?;
66
+ private readonly tokenCounter?;
67
+ private readonly maxDepth;
68
+ private readonly createChildGraph;
69
+ private readonly resolveParentHandlerRegistry?;
70
+ constructor(options: SubagentExecutorOptions);
71
+ /** Snapshot of the parent's registry at the moment a subagent is dispatched. */
72
+ private getParentHandlerRegistry;
73
+ execute(params: SubagentExecuteParams): Promise<SubagentExecuteResult>;
74
+ /**
75
+ * Emits a single {@link GraphEvents.ON_SUBAGENT_UPDATE} envelope through the
76
+ * parent's handler registry. Silent no-op when no parent registry is set.
77
+ * Errors are swallowed — update events are observational.
78
+ */
79
+ private emitSubagentUpdate;
80
+ /**
81
+ * Builds a BaseCallbackHandler that intercepts the child graph's custom
82
+ * events. Routing rules:
83
+ * - `ON_TOOL_EXECUTE` → forwarded as-is to the parent's ON_TOOL_EXECUTE
84
+ * handler (so event-driven tools work identically for child and parent).
85
+ * - `ON_RUN_STEP` / `ON_RUN_STEP_DELTA` / `ON_RUN_STEP_COMPLETED` /
86
+ * `ON_MESSAGE_DELTA` / `ON_REASONING_DELTA` → wrapped in a
87
+ * {@link GraphEvents.ON_SUBAGENT_UPDATE} envelope with a human-readable
88
+ * label, delivered to the parent's subagent-update handler.
89
+ * - Everything else → ignored (keeps parent's UI scoped to the events it
90
+ * cares about; host apps can extend by registering more phases).
91
+ */
92
+ private createForwarderCallback;
93
+ }
94
+ /**
95
+ * Produces a short single-line label for an arbitrary forwarded child event.
96
+ * Used to populate {@link SubagentUpdateEvent.label} so the host UI can show
97
+ * a compact status ticker without parsing the raw payload.
98
+ */
99
+ export declare function summarizeEvent(eventName: string, data: unknown): string;
100
+ /**
101
+ * Walk messages from last to first, returning the text content of the most
102
+ * recent AIMessage that has any. Non-text blocks (tool_use, thinking,
103
+ * redacted_thinking, tool_result) are stripped. If the last AIMessage is
104
+ * pure tool_use (e.g. the subagent hit `maxTurns` mid-tool-call), the walk
105
+ * continues to earlier AIMessages so partial progress is salvaged — this
106
+ * matches Claude Code's behavior in `agentToolUtils.finalizeAgentTool`.
107
+ * Returns "Task completed" only when no AIMessage in the history contains
108
+ * any text.
109
+ */
110
+ export declare function filterSubagentResult(messages: BaseMessage[]): string;
111
+ /**
112
+ * Resolve self-spawn configs by filling in agentInputs from the parent context.
113
+ * Returns configs with agentInputs guaranteed present. Throws on duplicate
114
+ * `type` values to prevent silent config shadowing.
115
+ */
116
+ export declare function resolveSubagentConfigs(configs: SubagentConfig[], parentContext: AgentContext): ResolvedSubagentConfig[];
117
+ /**
118
+ * Build child AgentInputs from a resolved config, stripping nesting and
119
+ * (optionally) event-driven fields. When `allowNested: true`, the child's
120
+ * `maxSubagentDepth` is decremented so that depth is consumed as the call
121
+ * chain deepens across graph boundaries — the parent's executor-level check
122
+ * alone cannot see into the child graph's separate executor.
123
+ *
124
+ * When `keepToolDefinitions` is `true`, the child retains the parent's
125
+ * `toolDefinitions` so event-driven tools remain usable. This is only safe
126
+ * when the caller has wired a forwarder for `ON_TOOL_EXECUTE` to a
127
+ * registered handler — otherwise the child will hang on tool dispatch.
128
+ *
129
+ * @remarks Advanced utility: exported primarily for testing and by
130
+ * {@link SubagentExecutor}. Host applications configuring subagents should
131
+ * not need to call this directly — it is invoked internally when a subagent
132
+ * tool is dispatched. The depth-countdown contract (parent's `maxDepth` in,
133
+ * child's decremented `maxSubagentDepth` on the returned inputs) is the
134
+ * mechanism that bounds nesting across graph boundaries; callers must
135
+ * respect it.
136
+ */
137
+ export declare function buildChildInputs(config: ResolvedSubagentConfig, childAgentId: string, parentMaxDepth: number, keepToolDefinitions?: boolean): AgentInputs;
@@ -0,0 +1,2 @@
1
+ export { SubagentExecutor, filterSubagentResult, resolveSubagentConfigs, buildChildInputs, summarizeEvent, } from './SubagentExecutor';
2
+ export type { SubagentExecuteParams, SubagentExecuteResult, SubagentExecutorOptions, ChildGraphFactory, } from './SubagentExecutor';
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Shared types for the subagent file-passing pipeline.
3
+ *
4
+ * Single source of truth for:
5
+ * - the `file_ids` shape carried on the `subagent` tool's input schema
6
+ * - the manifest line format the host renders into the supervisor's
7
+ * trailing user-message channel (cache-stable, never the system block)
8
+ * - the resolver hook signature host applications implement to map
9
+ * parent-side `file_id`s into the child's `tool_resources` + first
10
+ * HumanMessage context blocks
11
+ *
12
+ * Keeping these in one place lets the lib, the host, and tests all
13
+ * reference the SAME constants — drift would silently break selective
14
+ * file passing (parent claims a file is available, child gets `null`).
15
+ */
16
+ /**
17
+ * One entry in the parent's file manifest. The host serializes an array of
18
+ * these into a short newline-delimited block that lives in the supervisor's
19
+ * trailing user-message channel — see `MANIFEST_PREFIX` /
20
+ * `formatFileManifest` for the canonical line format.
21
+ */
22
+ export interface SubagentFileManifestEntry {
23
+ /** Stable file ID. Parent's LLM passes this back via `subagent({ file_ids })`. */
24
+ file_id: string;
25
+ /** Display name, used in the manifest line. */
26
+ name: string;
27
+ /** MIME type. Optional — only included in the manifest when present. */
28
+ type?: string;
29
+ /** Size in bytes. Optional — formatted for human readability when present. */
30
+ size?: number;
31
+ }
32
+ /** Header line that begins every parent file manifest block. */
33
+ export declare const MANIFEST_PREFIX = "Files available for delegation:";
34
+ /**
35
+ * Format a single manifest entry as a `- key: value, key: value, ...` line.
36
+ * Pure function — keeps the format consistent across host injection paths
37
+ * and test assertions.
38
+ */
39
+ export declare function formatManifestEntry(entry: SubagentFileManifestEntry): string;
40
+ /**
41
+ * Format a full manifest block for injection below the cache breakpoint.
42
+ * Returns `null` for empty input so callers can `if (block) push(block)`.
43
+ */
44
+ export declare function formatFileManifest(entries: readonly SubagentFileManifestEntry[]): string | null;
45
+ /**
46
+ * Result of resolving parent-side `file_ids` for a child subagent invocation.
47
+ * Each field is shaped to slot directly into the child's runtime:
48
+ * - `toolResources` is merged into the child's `agentInputs.tool_resources`
49
+ * so file_search / execute_code tools see the file
50
+ * - `messageContextBlocks` is prepended to the child's first HumanMessage
51
+ * (alongside the supervisor's task description) so the child sees image
52
+ * blocks for vision models and a short text reference for everything else
53
+ */
54
+ export interface ResolvedSubagentFiles {
55
+ /**
56
+ * Augmented tool_resources object merged into the child's `agentInputs`.
57
+ * Shape matches `AgentToolResources` from the host (kept untyped here to
58
+ * avoid pulling host types into the lib).
59
+ */
60
+ toolResources?: Record<string, unknown>;
61
+ /**
62
+ * Files the resolver successfully looked up. Forwarded verbatim into the
63
+ * child's first message metadata for downstream attachment rendering.
64
+ */
65
+ attachments?: Array<Record<string, unknown>>;
66
+ /**
67
+ * LangChain `HumanMessage.content` blocks (text or image_url) that should
68
+ * be prepended to the child's first message. Empty array for the common
69
+ * case where files are referenced only via tool_resources.
70
+ */
71
+ messageContextBlocks?: Array<Record<string, unknown>>;
72
+ }
73
+ /**
74
+ * Hook the host injects to resolve parent-side `file_id`s into child runtime
75
+ * context. Called once per `subagent` tool invocation that includes
76
+ * `file_ids`. Must be cheap on the empty-array path — the lib calls it for
77
+ * every subagent dispatch.
78
+ *
79
+ * @param fileIds - ID strings the supervisor's LLM picked from the manifest.
80
+ * @param childAgentId - ID assigned to the child for this invocation.
81
+ * @returns Resolved file context for the child, or `undefined` when nothing
82
+ * could be resolved (treated as a soft no-op — the child still runs).
83
+ */
84
+ export type ResolveSubagentFiles = (fileIds: string[], childAgentId: string) => Promise<ResolvedSubagentFiles | undefined>;