@illuma-ai/agents 1.0.81

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 (558) hide show
  1. package/README.md +485 -0
  2. package/dist/cjs/agents/AgentContext.cjs +734 -0
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -0
  4. package/dist/cjs/common/enum.cjs +190 -0
  5. package/dist/cjs/common/enum.cjs.map +1 -0
  6. package/dist/cjs/events.cjs +172 -0
  7. package/dist/cjs/events.cjs.map +1 -0
  8. package/dist/cjs/graphs/Graph.cjs +1615 -0
  9. package/dist/cjs/graphs/Graph.cjs.map +1 -0
  10. package/dist/cjs/graphs/MultiAgentGraph.cjs +890 -0
  11. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -0
  12. package/dist/cjs/instrumentation.cjs +21 -0
  13. package/dist/cjs/instrumentation.cjs.map +1 -0
  14. package/dist/cjs/llm/anthropic/index.cjs +292 -0
  15. package/dist/cjs/llm/anthropic/index.cjs.map +1 -0
  16. package/dist/cjs/llm/anthropic/types.cjs +50 -0
  17. package/dist/cjs/llm/anthropic/types.cjs.map +1 -0
  18. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +630 -0
  19. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -0
  20. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +218 -0
  21. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -0
  22. package/dist/cjs/llm/anthropic/utils/tools.cjs +29 -0
  23. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -0
  24. package/dist/cjs/llm/bedrock/index.cjs +282 -0
  25. package/dist/cjs/llm/bedrock/index.cjs.map +1 -0
  26. package/dist/cjs/llm/fake.cjs +97 -0
  27. package/dist/cjs/llm/fake.cjs.map +1 -0
  28. package/dist/cjs/llm/google/index.cjs +216 -0
  29. package/dist/cjs/llm/google/index.cjs.map +1 -0
  30. package/dist/cjs/llm/google/utils/common.cjs +647 -0
  31. package/dist/cjs/llm/google/utils/common.cjs.map +1 -0
  32. package/dist/cjs/llm/openai/index.cjs +1028 -0
  33. package/dist/cjs/llm/openai/index.cjs.map +1 -0
  34. package/dist/cjs/llm/openai/utils/index.cjs +765 -0
  35. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -0
  36. package/dist/cjs/llm/openrouter/index.cjs +212 -0
  37. package/dist/cjs/llm/openrouter/index.cjs.map +1 -0
  38. package/dist/cjs/llm/providers.cjs +43 -0
  39. package/dist/cjs/llm/providers.cjs.map +1 -0
  40. package/dist/cjs/llm/text.cjs +69 -0
  41. package/dist/cjs/llm/text.cjs.map +1 -0
  42. package/dist/cjs/llm/vertexai/index.cjs +329 -0
  43. package/dist/cjs/llm/vertexai/index.cjs.map +1 -0
  44. package/dist/cjs/main.cjs +240 -0
  45. package/dist/cjs/main.cjs.map +1 -0
  46. package/dist/cjs/messages/cache.cjs +387 -0
  47. package/dist/cjs/messages/cache.cjs.map +1 -0
  48. package/dist/cjs/messages/content.cjs +53 -0
  49. package/dist/cjs/messages/content.cjs.map +1 -0
  50. package/dist/cjs/messages/core.cjs +367 -0
  51. package/dist/cjs/messages/core.cjs.map +1 -0
  52. package/dist/cjs/messages/format.cjs +761 -0
  53. package/dist/cjs/messages/format.cjs.map +1 -0
  54. package/dist/cjs/messages/ids.cjs +23 -0
  55. package/dist/cjs/messages/ids.cjs.map +1 -0
  56. package/dist/cjs/messages/prune.cjs +398 -0
  57. package/dist/cjs/messages/prune.cjs.map +1 -0
  58. package/dist/cjs/messages/tools.cjs +96 -0
  59. package/dist/cjs/messages/tools.cjs.map +1 -0
  60. package/dist/cjs/run.cjs +328 -0
  61. package/dist/cjs/run.cjs.map +1 -0
  62. package/dist/cjs/schemas/validate.cjs +324 -0
  63. package/dist/cjs/schemas/validate.cjs.map +1 -0
  64. package/dist/cjs/splitStream.cjs +210 -0
  65. package/dist/cjs/splitStream.cjs.map +1 -0
  66. package/dist/cjs/stream.cjs +620 -0
  67. package/dist/cjs/stream.cjs.map +1 -0
  68. package/dist/cjs/tools/BrowserTools.cjs +248 -0
  69. package/dist/cjs/tools/BrowserTools.cjs.map +1 -0
  70. package/dist/cjs/tools/Calculator.cjs +66 -0
  71. package/dist/cjs/tools/Calculator.cjs.map +1 -0
  72. package/dist/cjs/tools/CodeExecutor.cjs +234 -0
  73. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -0
  74. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +636 -0
  75. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -0
  76. package/dist/cjs/tools/ToolNode.cjs +548 -0
  77. package/dist/cjs/tools/ToolNode.cjs.map +1 -0
  78. package/dist/cjs/tools/ToolSearch.cjs +909 -0
  79. package/dist/cjs/tools/ToolSearch.cjs.map +1 -0
  80. package/dist/cjs/tools/handlers.cjs +255 -0
  81. package/dist/cjs/tools/handlers.cjs.map +1 -0
  82. package/dist/cjs/tools/schema.cjs +31 -0
  83. package/dist/cjs/tools/schema.cjs.map +1 -0
  84. package/dist/cjs/tools/search/anthropic.cjs +40 -0
  85. package/dist/cjs/tools/search/anthropic.cjs.map +1 -0
  86. package/dist/cjs/tools/search/content.cjs +140 -0
  87. package/dist/cjs/tools/search/content.cjs.map +1 -0
  88. package/dist/cjs/tools/search/firecrawl.cjs +179 -0
  89. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -0
  90. package/dist/cjs/tools/search/format.cjs +203 -0
  91. package/dist/cjs/tools/search/format.cjs.map +1 -0
  92. package/dist/cjs/tools/search/highlights.cjs +245 -0
  93. package/dist/cjs/tools/search/highlights.cjs.map +1 -0
  94. package/dist/cjs/tools/search/rerankers.cjs +174 -0
  95. package/dist/cjs/tools/search/rerankers.cjs.map +1 -0
  96. package/dist/cjs/tools/search/schema.cjs +117 -0
  97. package/dist/cjs/tools/search/schema.cjs.map +1 -0
  98. package/dist/cjs/tools/search/search.cjs +566 -0
  99. package/dist/cjs/tools/search/search.cjs.map +1 -0
  100. package/dist/cjs/tools/search/serper-scraper.cjs +132 -0
  101. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -0
  102. package/dist/cjs/tools/search/tool.cjs +456 -0
  103. package/dist/cjs/tools/search/tool.cjs.map +1 -0
  104. package/dist/cjs/tools/search/utils.cjs +66 -0
  105. package/dist/cjs/tools/search/utils.cjs.map +1 -0
  106. package/dist/cjs/types/graph.cjs +29 -0
  107. package/dist/cjs/types/graph.cjs.map +1 -0
  108. package/dist/cjs/utils/contextAnalytics.cjs +66 -0
  109. package/dist/cjs/utils/contextAnalytics.cjs.map +1 -0
  110. package/dist/cjs/utils/events.cjs +31 -0
  111. package/dist/cjs/utils/events.cjs.map +1 -0
  112. package/dist/cjs/utils/graph.cjs +16 -0
  113. package/dist/cjs/utils/graph.cjs.map +1 -0
  114. package/dist/cjs/utils/handlers.cjs +70 -0
  115. package/dist/cjs/utils/handlers.cjs.map +1 -0
  116. package/dist/cjs/utils/llm.cjs +27 -0
  117. package/dist/cjs/utils/llm.cjs.map +1 -0
  118. package/dist/cjs/utils/misc.cjs +56 -0
  119. package/dist/cjs/utils/misc.cjs.map +1 -0
  120. package/dist/cjs/utils/run.cjs +73 -0
  121. package/dist/cjs/utils/run.cjs.map +1 -0
  122. package/dist/cjs/utils/schema.cjs +27 -0
  123. package/dist/cjs/utils/schema.cjs.map +1 -0
  124. package/dist/cjs/utils/title.cjs +125 -0
  125. package/dist/cjs/utils/title.cjs.map +1 -0
  126. package/dist/cjs/utils/tokens.cjs +125 -0
  127. package/dist/cjs/utils/tokens.cjs.map +1 -0
  128. package/dist/cjs/utils/toonFormat.cjs +388 -0
  129. package/dist/cjs/utils/toonFormat.cjs.map +1 -0
  130. package/dist/esm/agents/AgentContext.mjs +732 -0
  131. package/dist/esm/agents/AgentContext.mjs.map +1 -0
  132. package/dist/esm/common/enum.mjs +190 -0
  133. package/dist/esm/common/enum.mjs.map +1 -0
  134. package/dist/esm/events.mjs +164 -0
  135. package/dist/esm/events.mjs.map +1 -0
  136. package/dist/esm/graphs/Graph.mjs +1612 -0
  137. package/dist/esm/graphs/Graph.mjs.map +1 -0
  138. package/dist/esm/graphs/MultiAgentGraph.mjs +888 -0
  139. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -0
  140. package/dist/esm/instrumentation.mjs +19 -0
  141. package/dist/esm/instrumentation.mjs.map +1 -0
  142. package/dist/esm/llm/anthropic/index.mjs +290 -0
  143. package/dist/esm/llm/anthropic/index.mjs.map +1 -0
  144. package/dist/esm/llm/anthropic/types.mjs +48 -0
  145. package/dist/esm/llm/anthropic/types.mjs.map +1 -0
  146. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +627 -0
  147. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -0
  148. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +216 -0
  149. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -0
  150. package/dist/esm/llm/anthropic/utils/tools.mjs +27 -0
  151. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -0
  152. package/dist/esm/llm/bedrock/index.mjs +280 -0
  153. package/dist/esm/llm/bedrock/index.mjs.map +1 -0
  154. package/dist/esm/llm/fake.mjs +94 -0
  155. package/dist/esm/llm/fake.mjs.map +1 -0
  156. package/dist/esm/llm/google/index.mjs +214 -0
  157. package/dist/esm/llm/google/index.mjs.map +1 -0
  158. package/dist/esm/llm/google/utils/common.mjs +638 -0
  159. package/dist/esm/llm/google/utils/common.mjs.map +1 -0
  160. package/dist/esm/llm/openai/index.mjs +1018 -0
  161. package/dist/esm/llm/openai/index.mjs.map +1 -0
  162. package/dist/esm/llm/openai/utils/index.mjs +759 -0
  163. package/dist/esm/llm/openai/utils/index.mjs.map +1 -0
  164. package/dist/esm/llm/openrouter/index.mjs +210 -0
  165. package/dist/esm/llm/openrouter/index.mjs.map +1 -0
  166. package/dist/esm/llm/providers.mjs +39 -0
  167. package/dist/esm/llm/providers.mjs.map +1 -0
  168. package/dist/esm/llm/text.mjs +67 -0
  169. package/dist/esm/llm/text.mjs.map +1 -0
  170. package/dist/esm/llm/vertexai/index.mjs +327 -0
  171. package/dist/esm/llm/vertexai/index.mjs.map +1 -0
  172. package/dist/esm/main.mjs +37 -0
  173. package/dist/esm/main.mjs.map +1 -0
  174. package/dist/esm/messages/cache.mjs +382 -0
  175. package/dist/esm/messages/cache.mjs.map +1 -0
  176. package/dist/esm/messages/content.mjs +51 -0
  177. package/dist/esm/messages/content.mjs.map +1 -0
  178. package/dist/esm/messages/core.mjs +359 -0
  179. package/dist/esm/messages/core.mjs.map +1 -0
  180. package/dist/esm/messages/format.mjs +752 -0
  181. package/dist/esm/messages/format.mjs.map +1 -0
  182. package/dist/esm/messages/ids.mjs +21 -0
  183. package/dist/esm/messages/ids.mjs.map +1 -0
  184. package/dist/esm/messages/prune.mjs +393 -0
  185. package/dist/esm/messages/prune.mjs.map +1 -0
  186. package/dist/esm/messages/tools.mjs +93 -0
  187. package/dist/esm/messages/tools.mjs.map +1 -0
  188. package/dist/esm/run.mjs +325 -0
  189. package/dist/esm/run.mjs.map +1 -0
  190. package/dist/esm/schemas/validate.mjs +317 -0
  191. package/dist/esm/schemas/validate.mjs.map +1 -0
  192. package/dist/esm/splitStream.mjs +207 -0
  193. package/dist/esm/splitStream.mjs.map +1 -0
  194. package/dist/esm/stream.mjs +616 -0
  195. package/dist/esm/stream.mjs.map +1 -0
  196. package/dist/esm/tools/BrowserTools.mjs +244 -0
  197. package/dist/esm/tools/BrowserTools.mjs.map +1 -0
  198. package/dist/esm/tools/Calculator.mjs +41 -0
  199. package/dist/esm/tools/Calculator.mjs.map +1 -0
  200. package/dist/esm/tools/CodeExecutor.mjs +226 -0
  201. package/dist/esm/tools/CodeExecutor.mjs.map +1 -0
  202. package/dist/esm/tools/ProgrammaticToolCalling.mjs +622 -0
  203. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -0
  204. package/dist/esm/tools/ToolNode.mjs +545 -0
  205. package/dist/esm/tools/ToolNode.mjs.map +1 -0
  206. package/dist/esm/tools/ToolSearch.mjs +870 -0
  207. package/dist/esm/tools/ToolSearch.mjs.map +1 -0
  208. package/dist/esm/tools/handlers.mjs +250 -0
  209. package/dist/esm/tools/handlers.mjs.map +1 -0
  210. package/dist/esm/tools/schema.mjs +28 -0
  211. package/dist/esm/tools/schema.mjs.map +1 -0
  212. package/dist/esm/tools/search/anthropic.mjs +37 -0
  213. package/dist/esm/tools/search/anthropic.mjs.map +1 -0
  214. package/dist/esm/tools/search/content.mjs +119 -0
  215. package/dist/esm/tools/search/content.mjs.map +1 -0
  216. package/dist/esm/tools/search/firecrawl.mjs +176 -0
  217. package/dist/esm/tools/search/firecrawl.mjs.map +1 -0
  218. package/dist/esm/tools/search/format.mjs +201 -0
  219. package/dist/esm/tools/search/format.mjs.map +1 -0
  220. package/dist/esm/tools/search/highlights.mjs +243 -0
  221. package/dist/esm/tools/search/highlights.mjs.map +1 -0
  222. package/dist/esm/tools/search/rerankers.mjs +168 -0
  223. package/dist/esm/tools/search/rerankers.mjs.map +1 -0
  224. package/dist/esm/tools/search/schema.mjs +104 -0
  225. package/dist/esm/tools/search/schema.mjs.map +1 -0
  226. package/dist/esm/tools/search/search.mjs +563 -0
  227. package/dist/esm/tools/search/search.mjs.map +1 -0
  228. package/dist/esm/tools/search/serper-scraper.mjs +129 -0
  229. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -0
  230. package/dist/esm/tools/search/tool.mjs +454 -0
  231. package/dist/esm/tools/search/tool.mjs.map +1 -0
  232. package/dist/esm/tools/search/utils.mjs +61 -0
  233. package/dist/esm/tools/search/utils.mjs.map +1 -0
  234. package/dist/esm/types/graph.mjs +26 -0
  235. package/dist/esm/types/graph.mjs.map +1 -0
  236. package/dist/esm/utils/contextAnalytics.mjs +64 -0
  237. package/dist/esm/utils/contextAnalytics.mjs.map +1 -0
  238. package/dist/esm/utils/events.mjs +29 -0
  239. package/dist/esm/utils/events.mjs.map +1 -0
  240. package/dist/esm/utils/graph.mjs +13 -0
  241. package/dist/esm/utils/graph.mjs.map +1 -0
  242. package/dist/esm/utils/handlers.mjs +68 -0
  243. package/dist/esm/utils/handlers.mjs.map +1 -0
  244. package/dist/esm/utils/llm.mjs +24 -0
  245. package/dist/esm/utils/llm.mjs.map +1 -0
  246. package/dist/esm/utils/misc.mjs +53 -0
  247. package/dist/esm/utils/misc.mjs.map +1 -0
  248. package/dist/esm/utils/run.mjs +70 -0
  249. package/dist/esm/utils/run.mjs.map +1 -0
  250. package/dist/esm/utils/schema.mjs +24 -0
  251. package/dist/esm/utils/schema.mjs.map +1 -0
  252. package/dist/esm/utils/title.mjs +122 -0
  253. package/dist/esm/utils/title.mjs.map +1 -0
  254. package/dist/esm/utils/tokens.mjs +121 -0
  255. package/dist/esm/utils/tokens.mjs.map +1 -0
  256. package/dist/esm/utils/toonFormat.mjs +381 -0
  257. package/dist/esm/utils/toonFormat.mjs.map +1 -0
  258. package/dist/types/agents/AgentContext.d.ts +293 -0
  259. package/dist/types/common/enum.d.ts +155 -0
  260. package/dist/types/common/index.d.ts +1 -0
  261. package/dist/types/events.d.ts +31 -0
  262. package/dist/types/graphs/Graph.d.ts +216 -0
  263. package/dist/types/graphs/MultiAgentGraph.d.ts +104 -0
  264. package/dist/types/graphs/index.d.ts +2 -0
  265. package/dist/types/index.d.ts +21 -0
  266. package/dist/types/instrumentation.d.ts +1 -0
  267. package/dist/types/llm/anthropic/index.d.ts +39 -0
  268. package/dist/types/llm/anthropic/types.d.ts +37 -0
  269. package/dist/types/llm/anthropic/utils/message_inputs.d.ts +14 -0
  270. package/dist/types/llm/anthropic/utils/message_outputs.d.ts +14 -0
  271. package/dist/types/llm/anthropic/utils/output_parsers.d.ts +22 -0
  272. package/dist/types/llm/anthropic/utils/tools.d.ts +3 -0
  273. package/dist/types/llm/bedrock/index.d.ts +141 -0
  274. package/dist/types/llm/bedrock/types.d.ts +27 -0
  275. package/dist/types/llm/bedrock/utils/index.d.ts +5 -0
  276. package/dist/types/llm/bedrock/utils/message_inputs.d.ts +31 -0
  277. package/dist/types/llm/bedrock/utils/message_outputs.d.ts +33 -0
  278. package/dist/types/llm/fake.d.ts +31 -0
  279. package/dist/types/llm/google/index.d.ts +24 -0
  280. package/dist/types/llm/google/types.d.ts +42 -0
  281. package/dist/types/llm/google/utils/common.d.ts +34 -0
  282. package/dist/types/llm/google/utils/tools.d.ts +10 -0
  283. package/dist/types/llm/google/utils/zod_to_genai_parameters.d.ts +14 -0
  284. package/dist/types/llm/openai/index.d.ts +127 -0
  285. package/dist/types/llm/openai/types.d.ts +10 -0
  286. package/dist/types/llm/openai/utils/index.d.ts +29 -0
  287. package/dist/types/llm/openrouter/index.d.ts +15 -0
  288. package/dist/types/llm/providers.d.ts +5 -0
  289. package/dist/types/llm/text.d.ts +21 -0
  290. package/dist/types/llm/vertexai/index.d.ts +293 -0
  291. package/dist/types/messages/cache.d.ts +54 -0
  292. package/dist/types/messages/content.d.ts +7 -0
  293. package/dist/types/messages/core.d.ts +14 -0
  294. package/dist/types/messages/format.d.ts +137 -0
  295. package/dist/types/messages/ids.d.ts +3 -0
  296. package/dist/types/messages/index.d.ts +7 -0
  297. package/dist/types/messages/prune.d.ts +52 -0
  298. package/dist/types/messages/reducer.d.ts +9 -0
  299. package/dist/types/messages/tools.d.ts +17 -0
  300. package/dist/types/mockStream.d.ts +32 -0
  301. package/dist/types/prompts/collab.d.ts +1 -0
  302. package/dist/types/prompts/index.d.ts +2 -0
  303. package/dist/types/prompts/taskmanager.d.ts +41 -0
  304. package/dist/types/run.d.ts +41 -0
  305. package/dist/types/schemas/index.d.ts +1 -0
  306. package/dist/types/schemas/validate.d.ts +59 -0
  307. package/dist/types/splitStream.d.ts +37 -0
  308. package/dist/types/stream.d.ts +15 -0
  309. package/dist/types/test/mockTools.d.ts +28 -0
  310. package/dist/types/tools/BrowserTools.d.ts +87 -0
  311. package/dist/types/tools/Calculator.d.ts +34 -0
  312. package/dist/types/tools/CodeExecutor.d.ts +57 -0
  313. package/dist/types/tools/ProgrammaticToolCalling.d.ts +138 -0
  314. package/dist/types/tools/ToolNode.d.ts +51 -0
  315. package/dist/types/tools/ToolSearch.d.ts +219 -0
  316. package/dist/types/tools/handlers.d.ts +22 -0
  317. package/dist/types/tools/schema.d.ts +12 -0
  318. package/dist/types/tools/search/anthropic.d.ts +16 -0
  319. package/dist/types/tools/search/content.d.ts +4 -0
  320. package/dist/types/tools/search/firecrawl.d.ts +54 -0
  321. package/dist/types/tools/search/format.d.ts +5 -0
  322. package/dist/types/tools/search/highlights.d.ts +13 -0
  323. package/dist/types/tools/search/index.d.ts +3 -0
  324. package/dist/types/tools/search/rerankers.d.ts +38 -0
  325. package/dist/types/tools/search/schema.d.ts +103 -0
  326. package/dist/types/tools/search/search.d.ts +8 -0
  327. package/dist/types/tools/search/serper-scraper.d.ts +59 -0
  328. package/dist/types/tools/search/test.d.ts +1 -0
  329. package/dist/types/tools/search/tool.d.ts +3 -0
  330. package/dist/types/tools/search/types.d.ts +575 -0
  331. package/dist/types/tools/search/utils.d.ts +10 -0
  332. package/dist/types/types/graph.d.ts +399 -0
  333. package/dist/types/types/index.d.ts +5 -0
  334. package/dist/types/types/llm.d.ts +105 -0
  335. package/dist/types/types/messages.d.ts +4 -0
  336. package/dist/types/types/run.d.ts +112 -0
  337. package/dist/types/types/stream.d.ts +308 -0
  338. package/dist/types/types/tools.d.ts +296 -0
  339. package/dist/types/utils/contextAnalytics.d.ts +37 -0
  340. package/dist/types/utils/events.d.ts +6 -0
  341. package/dist/types/utils/graph.d.ts +2 -0
  342. package/dist/types/utils/handlers.d.ts +34 -0
  343. package/dist/types/utils/index.d.ts +9 -0
  344. package/dist/types/utils/llm.d.ts +3 -0
  345. package/dist/types/utils/llmConfig.d.ts +3 -0
  346. package/dist/types/utils/logging.d.ts +1 -0
  347. package/dist/types/utils/misc.d.ts +7 -0
  348. package/dist/types/utils/run.d.ts +27 -0
  349. package/dist/types/utils/schema.d.ts +8 -0
  350. package/dist/types/utils/title.d.ts +4 -0
  351. package/dist/types/utils/tokens.d.ts +28 -0
  352. package/dist/types/utils/toonFormat.d.ts +111 -0
  353. package/package.json +190 -0
  354. package/src/agents/AgentContext.test.ts +458 -0
  355. package/src/agents/AgentContext.ts +972 -0
  356. package/src/agents/__tests__/AgentContext.test.ts +805 -0
  357. package/src/agents/__tests__/resolveStructuredOutputMode.test.ts +137 -0
  358. package/src/common/enum.ts +203 -0
  359. package/src/common/index.ts +2 -0
  360. package/src/events.ts +223 -0
  361. package/src/graphs/Graph.ts +2228 -0
  362. package/src/graphs/MultiAgentGraph.ts +1063 -0
  363. package/src/graphs/__tests__/structured-output.integration.test.ts +809 -0
  364. package/src/graphs/__tests__/structured-output.test.ts +183 -0
  365. package/src/graphs/index.ts +2 -0
  366. package/src/index.ts +34 -0
  367. package/src/instrumentation.ts +22 -0
  368. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  369. package/src/llm/anthropic/index.ts +413 -0
  370. package/src/llm/anthropic/llm.spec.ts +1442 -0
  371. package/src/llm/anthropic/types.ts +140 -0
  372. package/src/llm/anthropic/utils/message_inputs.ts +757 -0
  373. package/src/llm/anthropic/utils/message_outputs.ts +289 -0
  374. package/src/llm/anthropic/utils/output_parsers.ts +133 -0
  375. package/src/llm/anthropic/utils/tools.ts +29 -0
  376. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +495 -0
  377. package/src/llm/bedrock/index.ts +411 -0
  378. package/src/llm/bedrock/llm.spec.ts +616 -0
  379. package/src/llm/bedrock/types.ts +51 -0
  380. package/src/llm/bedrock/utils/index.ts +18 -0
  381. package/src/llm/bedrock/utils/message_inputs.ts +563 -0
  382. package/src/llm/bedrock/utils/message_outputs.ts +310 -0
  383. package/src/llm/fake.ts +133 -0
  384. package/src/llm/google/data/gettysburg10.wav +0 -0
  385. package/src/llm/google/data/hotdog.jpg +0 -0
  386. package/src/llm/google/index.ts +337 -0
  387. package/src/llm/google/llm.spec.ts +934 -0
  388. package/src/llm/google/types.ts +56 -0
  389. package/src/llm/google/utils/common.ts +873 -0
  390. package/src/llm/google/utils/tools.ts +160 -0
  391. package/src/llm/google/utils/zod_to_genai_parameters.ts +86 -0
  392. package/src/llm/openai/index.ts +1366 -0
  393. package/src/llm/openai/types.ts +24 -0
  394. package/src/llm/openai/utils/index.ts +1035 -0
  395. package/src/llm/openai/utils/isReasoningModel.test.ts +90 -0
  396. package/src/llm/openrouter/index.ts +291 -0
  397. package/src/llm/providers.ts +52 -0
  398. package/src/llm/text.ts +94 -0
  399. package/src/llm/vertexai/index.ts +359 -0
  400. package/src/messages/__tests__/tools.test.ts +473 -0
  401. package/src/messages/cache.test.ts +1261 -0
  402. package/src/messages/cache.ts +518 -0
  403. package/src/messages/content.test.ts +362 -0
  404. package/src/messages/content.ts +63 -0
  405. package/src/messages/core.ts +473 -0
  406. package/src/messages/ensureThinkingBlock.test.ts +468 -0
  407. package/src/messages/format.ts +1029 -0
  408. package/src/messages/formatAgentMessages.test.ts +1513 -0
  409. package/src/messages/formatAgentMessages.tools.test.ts +419 -0
  410. package/src/messages/formatMessage.test.ts +693 -0
  411. package/src/messages/ids.ts +26 -0
  412. package/src/messages/index.ts +7 -0
  413. package/src/messages/labelContentByAgent.test.ts +887 -0
  414. package/src/messages/prune.ts +568 -0
  415. package/src/messages/reducer.ts +80 -0
  416. package/src/messages/shiftIndexTokenCountMap.test.ts +81 -0
  417. package/src/messages/tools.ts +108 -0
  418. package/src/mockStream.ts +99 -0
  419. package/src/prompts/collab.ts +6 -0
  420. package/src/prompts/index.ts +2 -0
  421. package/src/prompts/taskmanager.ts +61 -0
  422. package/src/run.ts +467 -0
  423. package/src/schemas/index.ts +2 -0
  424. package/src/schemas/schema-preparation.test.ts +500 -0
  425. package/src/schemas/validate.test.ts +358 -0
  426. package/src/schemas/validate.ts +454 -0
  427. package/src/scripts/abort.ts +157 -0
  428. package/src/scripts/ant_web_search.ts +158 -0
  429. package/src/scripts/ant_web_search_edge_case.ts +162 -0
  430. package/src/scripts/ant_web_search_error_edge_case.ts +148 -0
  431. package/src/scripts/args.ts +48 -0
  432. package/src/scripts/caching.ts +132 -0
  433. package/src/scripts/cli.ts +172 -0
  434. package/src/scripts/cli2.ts +133 -0
  435. package/src/scripts/cli3.ts +184 -0
  436. package/src/scripts/cli4.ts +191 -0
  437. package/src/scripts/cli5.ts +191 -0
  438. package/src/scripts/code_exec.ts +213 -0
  439. package/src/scripts/code_exec_files.ts +236 -0
  440. package/src/scripts/code_exec_multi_session.ts +241 -0
  441. package/src/scripts/code_exec_ptc.ts +334 -0
  442. package/src/scripts/code_exec_session.ts +282 -0
  443. package/src/scripts/code_exec_simple.ts +147 -0
  444. package/src/scripts/content.ts +138 -0
  445. package/src/scripts/empty_input.ts +137 -0
  446. package/src/scripts/handoff-test.ts +135 -0
  447. package/src/scripts/image.ts +178 -0
  448. package/src/scripts/memory.ts +97 -0
  449. package/src/scripts/multi-agent-chain.ts +331 -0
  450. package/src/scripts/multi-agent-conditional.ts +221 -0
  451. package/src/scripts/multi-agent-document-review-chain.ts +197 -0
  452. package/src/scripts/multi-agent-hybrid-flow.ts +310 -0
  453. package/src/scripts/multi-agent-parallel-start.ts +265 -0
  454. package/src/scripts/multi-agent-parallel.ts +394 -0
  455. package/src/scripts/multi-agent-sequence.ts +217 -0
  456. package/src/scripts/multi-agent-supervisor.ts +365 -0
  457. package/src/scripts/multi-agent-test.ts +186 -0
  458. package/src/scripts/parallel-asymmetric-tools-test.ts +274 -0
  459. package/src/scripts/parallel-full-metadata-test.ts +240 -0
  460. package/src/scripts/parallel-tools-test.ts +340 -0
  461. package/src/scripts/programmatic_exec.ts +396 -0
  462. package/src/scripts/programmatic_exec_agent.ts +231 -0
  463. package/src/scripts/search.ts +146 -0
  464. package/src/scripts/sequential-full-metadata-test.ts +197 -0
  465. package/src/scripts/simple.ts +225 -0
  466. package/src/scripts/single-agent-metadata-test.ts +198 -0
  467. package/src/scripts/stream.ts +140 -0
  468. package/src/scripts/test-custom-prompt-key.ts +145 -0
  469. package/src/scripts/test-handoff-input.ts +170 -0
  470. package/src/scripts/test-handoff-preamble.ts +277 -0
  471. package/src/scripts/test-multi-agent-list-handoff.ts +417 -0
  472. package/src/scripts/test-parallel-agent-labeling.ts +325 -0
  473. package/src/scripts/test-parallel-handoffs.ts +291 -0
  474. package/src/scripts/test-thinking-handoff-bedrock.ts +153 -0
  475. package/src/scripts/test-thinking-handoff.ts +155 -0
  476. package/src/scripts/test-tools-before-handoff.ts +226 -0
  477. package/src/scripts/test_code_api.ts +361 -0
  478. package/src/scripts/thinking-bedrock.ts +159 -0
  479. package/src/scripts/thinking.ts +171 -0
  480. package/src/scripts/tool_search.ts +162 -0
  481. package/src/scripts/tools.ts +177 -0
  482. package/src/specs/agent-handoffs.test.ts +888 -0
  483. package/src/specs/anthropic.simple.test.ts +387 -0
  484. package/src/specs/azure.simple.test.ts +364 -0
  485. package/src/specs/cache.simple.test.ts +396 -0
  486. package/src/specs/deepseek.simple.test.ts +283 -0
  487. package/src/specs/emergency-prune.test.ts +407 -0
  488. package/src/specs/moonshot.simple.test.ts +358 -0
  489. package/src/specs/openai.simple.test.ts +311 -0
  490. package/src/specs/openrouter.simple.test.ts +107 -0
  491. package/src/specs/prune.test.ts +901 -0
  492. package/src/specs/reasoning.test.ts +201 -0
  493. package/src/specs/spec.utils.ts +3 -0
  494. package/src/specs/thinking-handoff.test.ts +620 -0
  495. package/src/specs/thinking-prune.test.ts +703 -0
  496. package/src/specs/token-distribution-edge-case.test.ts +316 -0
  497. package/src/specs/token-memoization.test.ts +32 -0
  498. package/src/specs/tool-error.test.ts +198 -0
  499. package/src/splitStream.test.ts +691 -0
  500. package/src/splitStream.ts +234 -0
  501. package/src/stream.test.ts +94 -0
  502. package/src/stream.ts +801 -0
  503. package/src/test/mockTools.ts +386 -0
  504. package/src/tools/BrowserTools.ts +393 -0
  505. package/src/tools/Calculator.test.ts +278 -0
  506. package/src/tools/Calculator.ts +46 -0
  507. package/src/tools/CodeExecutor.ts +270 -0
  508. package/src/tools/ProgrammaticToolCalling.ts +785 -0
  509. package/src/tools/ToolNode.ts +674 -0
  510. package/src/tools/ToolSearch.ts +1095 -0
  511. package/src/tools/__tests__/BrowserTools.test.ts +265 -0
  512. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +319 -0
  513. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +1006 -0
  514. package/src/tools/__tests__/ToolSearch.integration.test.ts +162 -0
  515. package/src/tools/__tests__/ToolSearch.test.ts +1003 -0
  516. package/src/tools/handlers.ts +363 -0
  517. package/src/tools/schema.ts +37 -0
  518. package/src/tools/search/anthropic.ts +51 -0
  519. package/src/tools/search/content.test.ts +173 -0
  520. package/src/tools/search/content.ts +147 -0
  521. package/src/tools/search/firecrawl.ts +210 -0
  522. package/src/tools/search/format.ts +250 -0
  523. package/src/tools/search/highlights.ts +320 -0
  524. package/src/tools/search/index.ts +3 -0
  525. package/src/tools/search/jina-reranker.test.ts +130 -0
  526. package/src/tools/search/output.md +2775 -0
  527. package/src/tools/search/rerankers.ts +242 -0
  528. package/src/tools/search/schema.ts +113 -0
  529. package/src/tools/search/search.ts +768 -0
  530. package/src/tools/search/serper-scraper.ts +155 -0
  531. package/src/tools/search/test.html +884 -0
  532. package/src/tools/search/test.md +643 -0
  533. package/src/tools/search/test.ts +159 -0
  534. package/src/tools/search/tool.ts +657 -0
  535. package/src/tools/search/types.ts +665 -0
  536. package/src/tools/search/utils.ts +79 -0
  537. package/src/types/graph.test.ts +218 -0
  538. package/src/types/graph.ts +533 -0
  539. package/src/types/index.ts +6 -0
  540. package/src/types/llm.ts +140 -0
  541. package/src/types/messages.ts +4 -0
  542. package/src/types/run.ts +128 -0
  543. package/src/types/stream.ts +417 -0
  544. package/src/types/tools.ts +355 -0
  545. package/src/utils/contextAnalytics.ts +103 -0
  546. package/src/utils/events.ts +32 -0
  547. package/src/utils/graph.ts +11 -0
  548. package/src/utils/handlers.ts +107 -0
  549. package/src/utils/index.ts +9 -0
  550. package/src/utils/llm.ts +26 -0
  551. package/src/utils/llmConfig.ts +208 -0
  552. package/src/utils/logging.ts +48 -0
  553. package/src/utils/misc.ts +57 -0
  554. package/src/utils/run.ts +106 -0
  555. package/src/utils/schema.ts +35 -0
  556. package/src/utils/title.ts +177 -0
  557. package/src/utils/tokens.ts +142 -0
  558. package/src/utils/toonFormat.ts +475 -0
@@ -0,0 +1,41 @@
1
+ export declare const taskManagerPrompt = "You are a Task Manager responsible for efficiently coordinating a team of specialized workers: {members}. Your PRIMARY and SOLE OBJECTIVE is to fulfill the user's specific request as quickly and effectively as possible.\n\nCRITICAL GUIDELINES:\n1. The user's request is your CHIEF CONCERN. Every action must directly contribute to fulfilling this request.\n2. Aim to complete the entire task in NO MORE THAN 2-3 TURNS, unless explicitly instructed otherwise.\n3. Eliminate all superfluous activity. Each task must be essential to achieving the user's goal.\n4. Assign no more than 5 tasks per turn, and only if absolutely necessary.\n5. Be concise and direct in your task assignments.\n6. End the process IMMEDIATELY once the user's request is fulfilled by setting 'end' to true and assigning no new tasks.\n\nYour responsibilities:\n1. Analyze the user's request and break it down into the minimum necessary subtasks.\n2. Assign these essential tasks to the most appropriate team members based on their skills and tools.\n3. Prioritize tasks to ensure the most efficient path to completion.\n4. Continuously evaluate if the user's request has been fully addressed.\n5. End the process IMMEDIATELY once the user's request is fulfilled.\n\nTask Assignment Guidelines:\n- Assign only the most crucial tasks required to meet the user's needs.\n- Multiple tasks can be assigned to the same team member if it improves efficiency.\n- Always specify the tool to use if applicable.\n- Consider task dependencies to minimize the number of turns.\n\nAfter each round:\n- Critically assess if the user's request has been fully addressed.\n- If more work is genuinely needed, assign only the most essential remaining tasks.\n- If the user's request has been fulfilled or can be fulfilled with the results at hand, set 'end' to true and assign no new tasks.\n\nREMEMBER: Your success is measured by how quickly and effectively you fulfill the user's request, not by the number of tasks assigned or turns taken. Excessive deliberation or unnecessary tasks are counterproductive. Focus solely on the user's needs and conclude the process as soon as those needs are met.";
2
+ export declare const assignTasksFunctionDescription = "Assign the minimum necessary tasks to team members to fulfill the user's request as quickly as possible. Assign up to 5 tasks maximum per turn, only if absolutely necessary. Each task must specify the team member, a concise description, and the tool to use if applicable.";
3
+ export declare const assignTasksFunctionParameters: {
4
+ type: string;
5
+ properties: {
6
+ tasks: {
7
+ type: string;
8
+ items: {
9
+ type: string;
10
+ properties: {
11
+ member: {
12
+ type: string;
13
+ description: string;
14
+ };
15
+ description: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ tool: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ };
24
+ required: string[];
25
+ };
26
+ description: string;
27
+ };
28
+ };
29
+ required: string[];
30
+ };
31
+ export declare const endProcessFunctionDescription = "End the process when the user's request has been fulfilled.";
32
+ export declare const endProcessFunctionParameters: {
33
+ type: string;
34
+ properties: {
35
+ reason: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ };
40
+ required: string[];
41
+ };
@@ -0,0 +1,41 @@
1
+ import './instrumentation';
2
+ import type { MessageContentComplex, BaseMessage } from '@langchain/core/messages';
3
+ import type { RunnableConfig } from '@langchain/core/runnables';
4
+ import type * as t from '@/types';
5
+ import { MultiAgentGraph } from '@/graphs/MultiAgentGraph';
6
+ import { StandardGraph } from '@/graphs/Graph';
7
+ export declare const defaultOmitOptions: Set<string>;
8
+ export declare class Run<_T extends t.BaseGraphState> {
9
+ id: string;
10
+ private tokenCounter?;
11
+ private handlerRegistry?;
12
+ private indexTokenCountMap?;
13
+ graphRunnable?: t.CompiledStateWorkflow;
14
+ Graph: StandardGraph | MultiAgentGraph | undefined;
15
+ returnContent: boolean;
16
+ private constructor();
17
+ private createLegacyGraph;
18
+ private createMultiAgentGraph;
19
+ static create<T extends t.BaseGraphState>(config: t.RunConfig): Promise<Run<T>>;
20
+ getRunMessages(): BaseMessage[] | undefined;
21
+ /**
22
+ * Returns the normalized finish/stop reason from the last LLM invocation.
23
+ * Delegates to the underlying Graph instance.
24
+ */
25
+ getLastFinishReason(): string | undefined;
26
+ /**
27
+ * Creates a custom event callback handler that intercepts custom events
28
+ * and processes them through our handler registry instead of EventStreamCallbackHandler
29
+ */
30
+ private createCustomEventCallback;
31
+ processStream(inputs: t.IState, config: Partial<RunnableConfig> & {
32
+ version: 'v1' | 'v2';
33
+ run_id?: string;
34
+ }, streamOptions?: t.EventStreamOptions): Promise<MessageContentComplex[] | undefined>;
35
+ private createSystemCallback;
36
+ getCallbacks(clientCallbacks: t.ClientCallbacks): t.SystemCallbacks;
37
+ generateTitle({ provider, inputText, contentParts, titlePrompt, clientOptions, chainOptions, skipLanguage, titleMethod, titlePromptTemplate, }: t.RunTitleOptions): Promise<{
38
+ language?: string;
39
+ title?: string;
40
+ }>;
41
+ }
@@ -0,0 +1 @@
1
+ export * from './validate';
@@ -0,0 +1,59 @@
1
+ import { z } from 'zod';
2
+ import type * as t from '@/types';
3
+ import { Providers } from '@/common';
4
+ /**
5
+ * Validation result from structured output
6
+ */
7
+ export interface ValidationResult<T = Record<string, unknown>> {
8
+ success: boolean;
9
+ data?: T;
10
+ error?: string;
11
+ raw?: unknown;
12
+ }
13
+ /**
14
+ * Validates structured output against a JSON Schema.
15
+ *
16
+ * @param output - The output to validate
17
+ * @param schema - JSON Schema to validate against
18
+ * @returns Validation result with success flag and data or error
19
+ */
20
+ export declare function validateStructuredOutput(output: unknown, schema: Record<string, unknown>): ValidationResult;
21
+ /**
22
+ * Converts a Zod schema to JSON Schema format.
23
+ * This is a simplified converter for common types.
24
+ */
25
+ export declare function zodToJsonSchema(zodSchema: z.ZodType): Record<string, unknown>;
26
+ /**
27
+ * Creates a structured output error message for retry.
28
+ */
29
+ export declare function createValidationErrorMessage(result: ValidationResult, customMessage?: string): string;
30
+ /**
31
+ * Checks if a value is a valid JSON Schema object.
32
+ */
33
+ export declare function isValidJsonSchema(value: unknown): value is Record<string, unknown>;
34
+ /**
35
+ * Normalizes a JSON Schema by adding defaults and cleaning up.
36
+ */
37
+ export declare function normalizeJsonSchema(schema: Record<string, unknown>, config?: t.StructuredOutputConfig): Record<string, unknown>;
38
+ /**
39
+ * Result from schema preparation, includes the prepared schema and any warnings.
40
+ */
41
+ export interface SchemaPreparationResult {
42
+ schema: Record<string, unknown>;
43
+ warnings: string[];
44
+ }
45
+ /**
46
+ * Prepares a JSON Schema for a specific provider's native structured output API.
47
+ *
48
+ * This function normalizes the schema to comply with provider-specific requirements:
49
+ * - Adds `additionalProperties: false` recursively to all objects (required by all providers in strict mode)
50
+ * - Ensures all properties are listed in `required` (required by OpenAI and Anthropic)
51
+ * - Strips unsupported constraint keywords (minimum, maxLength, etc.) and moves them to description
52
+ * - Returns warnings for any modifications made
53
+ *
54
+ * @param schema - The original JSON Schema
55
+ * @param provider - The LLM provider
56
+ * @param strict - Whether strict mode is enabled (default: true)
57
+ * @returns The prepared schema and any warnings
58
+ */
59
+ export declare function prepareSchemaForProvider(schema: Record<string, unknown>, provider: Providers | string, strict?: boolean): SchemaPreparationResult;
@@ -0,0 +1,37 @@
1
+ import type * as t from '@/types';
2
+ import { ContentTypes } from '@/common';
3
+ export declare const SEPARATORS: string[];
4
+ export declare class SplitStreamHandler {
5
+ private inCodeBlock;
6
+ private inThinkBlock;
7
+ private accumulate;
8
+ tokens: string[];
9
+ lastToken: string;
10
+ reasoningTokens: string[];
11
+ currentStepId?: string;
12
+ currentMessageId?: string;
13
+ currentType?: ContentTypes.TEXT | ContentTypes.THINK;
14
+ currentLength: number;
15
+ reasoningKey: 'reasoning_content' | 'reasoning';
16
+ currentIndex: number;
17
+ blockThreshold: number;
18
+ /** The run ID AKA the Message ID associated with the complete generation */
19
+ runId: string;
20
+ handlers?: t.SplitStreamHandlers;
21
+ constructor({ runId, handlers, accumulate, reasoningKey, blockThreshold, }: {
22
+ runId: string;
23
+ accumulate?: boolean;
24
+ handlers: t.SplitStreamHandlers;
25
+ blockThreshold?: number;
26
+ reasoningKey?: 'reasoning_content' | 'reasoning';
27
+ });
28
+ getMessageId: () => string | undefined;
29
+ createMessageStep: (type?: ContentTypes.TEXT | ContentTypes.THINK) => [string, string];
30
+ dispatchRunStep: (stepId: string, stepDetails: t.StepDetails) => void;
31
+ dispatchMessageDelta: (stepId: string, delta: t.MessageDelta) => void;
32
+ dispatchReasoningDelta: (stepId: string, delta: t.ReasoningDelta) => void;
33
+ handleContent: (content: string, _type: ContentTypes.TEXT | ContentTypes.THINK) => void;
34
+ getDeltaContent(chunk?: t.CustomChunk): string;
35
+ getReasoningDelta(chunk?: t.CustomChunk): string;
36
+ handle(chunk?: t.CustomChunk): void;
37
+ }
@@ -0,0 +1,15 @@
1
+ import type { AIMessageChunk } from '@langchain/core/messages';
2
+ import type { AgentContext } from '@/agents/AgentContext';
3
+ import type { StandardGraph } from '@/graphs';
4
+ import type * as t from '@/types';
5
+ import { Providers } from '@/common';
6
+ export declare function getChunkContent({ chunk, provider, reasoningKey, }: {
7
+ chunk?: Partial<AIMessageChunk>;
8
+ provider?: Providers;
9
+ reasoningKey: 'reasoning_content' | 'reasoning';
10
+ }): string | t.MessageContentComplex[] | undefined;
11
+ export declare class ChatModelStreamHandler implements t.EventHandler {
12
+ handle(event: string, data: t.StreamEventData, metadata?: Record<string, unknown>, graph?: StandardGraph): Promise<void>;
13
+ handleReasoning(chunk: Partial<AIMessageChunk>, agentContext: AgentContext): void;
14
+ }
15
+ export declare function createContentAggregator(): t.ContentAggregatorResult;
@@ -0,0 +1,28 @@
1
+ import type { StructuredToolInterface } from '@langchain/core/tools';
2
+ import type { LCToolRegistry } from '@/types';
3
+ /**
4
+ * Mock get_team_members tool - returns list of team members
5
+ */
6
+ export declare function createGetTeamMembersTool(): StructuredToolInterface;
7
+ /**
8
+ * Mock get_expenses tool - returns expense records for a user
9
+ */
10
+ export declare function createGetExpensesTool(): StructuredToolInterface;
11
+ /**
12
+ * Mock get_weather tool - returns weather data for a city
13
+ */
14
+ export declare function createGetWeatherTool(): StructuredToolInterface;
15
+ /**
16
+ * Mock calculator tool - evaluates mathematical expressions
17
+ */
18
+ export declare function createCalculatorTool(): StructuredToolInterface;
19
+ /**
20
+ * Creates a tool registry for programmatic tool calling tests.
21
+ * Tools are configured with allowed_callers to demonstrate classification.
22
+ */
23
+ export declare function createProgrammaticToolRegistry(): LCToolRegistry;
24
+ /**
25
+ * Creates a sample tool registry for tool search tests.
26
+ * Includes mix of deferred and non-deferred tools.
27
+ */
28
+ export declare function createToolSearchToolRegistry(): LCToolRegistry;
@@ -0,0 +1,87 @@
1
+ import { DynamicStructuredTool } from '@langchain/core/tools';
2
+ /**
3
+ * Browser tool names - keep in sync with ranger-browser extension
4
+ * These tools execute locally in the browser extension, NOT on the server
5
+ */
6
+ export declare const EBrowserTools: {
7
+ readonly CLICK: "browser_click";
8
+ readonly TYPE: "browser_type";
9
+ readonly NAVIGATE: "browser_navigate";
10
+ readonly SCROLL: "browser_scroll";
11
+ readonly EXTRACT: "browser_extract";
12
+ readonly HOVER: "browser_hover";
13
+ readonly WAIT: "browser_wait";
14
+ readonly BACK: "browser_back";
15
+ readonly SCREENSHOT: "browser_screenshot";
16
+ readonly GET_PAGE_STATE: "browser_get_page_state";
17
+ readonly KEYPRESS: "browser_keypress";
18
+ readonly SWITCH_TAB: "browser_switch_tab";
19
+ };
20
+ export type BrowserToolName = (typeof EBrowserTools)[keyof typeof EBrowserTools];
21
+ /**
22
+ * Callback function type for waiting on browser action results
23
+ * This allows the server (Ranger) to provide a callback that waits for the extension
24
+ * to POST results back to the server before returning to the LLM.
25
+ *
26
+ * @param action - The browser action (click, type, navigate, etc.)
27
+ * @param args - Arguments for the action
28
+ * @param toolCallId - Unique ID for this tool call (from config.toolCall.id)
29
+ * @returns Promise that resolves with the actual browser result (page state, etc.)
30
+ */
31
+ export type BrowserToolCallback = (action: string, args: Record<string, unknown>, toolCallId: string) => Promise<BrowserActionResult>;
32
+ /**
33
+ * Result returned from browser action execution
34
+ */
35
+ export interface BrowserActionResult {
36
+ success: boolean;
37
+ url?: string;
38
+ title?: string;
39
+ elementList?: string;
40
+ error?: string;
41
+ screenshot?: string;
42
+ }
43
+ /**
44
+ * Check if browser capability is available based on request headers or context
45
+ * The browser extension sets these headers when connected:
46
+ * - X-Ranger-Browser-Extension: true
47
+ * - X-Ranger-Browser-Capable: true
48
+ */
49
+ export declare function hasBrowserCapability(req?: {
50
+ headers?: Record<string, string | string[] | undefined>;
51
+ }): boolean;
52
+ /**
53
+ * Browser tool response interface
54
+ * This is what the extension returns after executing the action
55
+ */
56
+ export interface BrowserToolResponse {
57
+ requiresBrowserExecution: true;
58
+ action: string;
59
+ args: Record<string, unknown>;
60
+ toolCallId?: string;
61
+ }
62
+ /**
63
+ * Options for creating browser tools
64
+ */
65
+ export interface CreateBrowserToolsOptions {
66
+ /**
67
+ * Optional callback that waits for browser action results.
68
+ * When provided, tools will await this callback to get actual results from the extension.
69
+ * When not provided, tools return markers immediately (for non-server contexts).
70
+ */
71
+ waitForResult?: BrowserToolCallback;
72
+ }
73
+ /**
74
+ * Create browser tools with optional callback for waiting on results
75
+ *
76
+ * When waitForResult callback is provided:
77
+ * 1. Tool returns marker that triggers extension
78
+ * 2. Tool then awaits callback to get actual results
79
+ * 3. Returns real page state to LLM
80
+ *
81
+ * When no callback:
82
+ * 1. Tool returns marker only (for non-server contexts)
83
+ *
84
+ * NOTE: These tools use TEXT-BASED element lists, NOT screenshots
85
+ * Screenshots would be 100K+ tokens each - element lists are ~100 tokens
86
+ */
87
+ export declare function createBrowserTools(options?: CreateBrowserToolsOptions): DynamicStructuredTool[];
@@ -0,0 +1,34 @@
1
+ import { Tool } from '@langchain/core/tools';
2
+ export declare const CalculatorToolName = "calculator";
3
+ export declare const CalculatorToolDescription = "Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.";
4
+ export declare const CalculatorSchema: {
5
+ readonly type: "object";
6
+ readonly properties: {
7
+ readonly input: {
8
+ readonly type: "string";
9
+ readonly description: "A valid mathematical expression to evaluate";
10
+ };
11
+ };
12
+ readonly required: readonly ["input"];
13
+ };
14
+ export declare const CalculatorToolDefinition: {
15
+ readonly name: "calculator";
16
+ readonly description: "Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.";
17
+ readonly schema: {
18
+ readonly type: "object";
19
+ readonly properties: {
20
+ readonly input: {
21
+ readonly type: "string";
22
+ readonly description: "A valid mathematical expression to evaluate";
23
+ };
24
+ };
25
+ readonly required: readonly ["input"];
26
+ };
27
+ };
28
+ export declare class Calculator extends Tool {
29
+ static lc_name(): string;
30
+ get lc_namespace(): string[];
31
+ name: string;
32
+ _call(input: string): Promise<string>;
33
+ description: string;
34
+ }
@@ -0,0 +1,57 @@
1
+ import { DynamicStructuredTool } from '@langchain/core/tools';
2
+ import type * as t from '@/types';
3
+ import { Constants } from '@/common';
4
+ export declare const imageExtRegex: RegExp;
5
+ export declare const getCodeBaseURL: () => string;
6
+ export declare const CodeExecutionToolSchema: {
7
+ readonly type: "object";
8
+ readonly properties: {
9
+ readonly lang: {
10
+ readonly type: "string";
11
+ readonly enum: readonly ["py", "js", "ts", "c", "cpp", "java", "php", "rs", "go", "d", "f90", "r"];
12
+ readonly description: "The programming language or runtime to execute the code in.";
13
+ };
14
+ readonly code: {
15
+ readonly type: "string";
16
+ readonly description: "The complete, self-contained code to execute, without any truncation or minimization.\n- The environment is stateless; variables and imports don't persist between executions.\n- Generated files from previous executions are automatically available in \"/mnt/data/\".\n- Files from previous executions are automatically available and can be modified in place.\n- Input code **IS ALREADY** displayed to the user, so **DO NOT** repeat it in your response unless asked.\n- Output code **IS NOT** displayed to the user, so **DO** write all desired output explicitly.\n- IMPORTANT: You MUST explicitly print/output ALL results you want the user to see.\n- py: This is not a Jupyter notebook environment. Use `print()` for all outputs.\n- py: Matplotlib: Use `plt.savefig()` to save plots as files.\n- js: use the `console` or `process` methods for all outputs.\n- r: IMPORTANT: No X11 display available. ALL graphics MUST use Cairo library (library(Cairo)).\n- Other languages: use appropriate output functions.";
17
+ };
18
+ readonly args: {
19
+ readonly type: "array";
20
+ readonly items: {
21
+ readonly type: "string";
22
+ };
23
+ readonly description: "Additional arguments to execute the code with. This should only be used if the input code requires additional arguments to run.";
24
+ };
25
+ };
26
+ readonly required: readonly ["lang", "code"];
27
+ };
28
+ export declare const CodeExecutionToolDescription: string;
29
+ export declare const CodeExecutionToolName = Constants.EXECUTE_CODE;
30
+ export declare const CodeExecutionToolDefinition: {
31
+ readonly name: Constants.EXECUTE_CODE;
32
+ readonly description: string;
33
+ readonly schema: {
34
+ readonly type: "object";
35
+ readonly properties: {
36
+ readonly lang: {
37
+ readonly type: "string";
38
+ readonly enum: readonly ["py", "js", "ts", "c", "cpp", "java", "php", "rs", "go", "d", "f90", "r"];
39
+ readonly description: "The programming language or runtime to execute the code in.";
40
+ };
41
+ readonly code: {
42
+ readonly type: "string";
43
+ readonly description: "The complete, self-contained code to execute, without any truncation or minimization.\n- The environment is stateless; variables and imports don't persist between executions.\n- Generated files from previous executions are automatically available in \"/mnt/data/\".\n- Files from previous executions are automatically available and can be modified in place.\n- Input code **IS ALREADY** displayed to the user, so **DO NOT** repeat it in your response unless asked.\n- Output code **IS NOT** displayed to the user, so **DO** write all desired output explicitly.\n- IMPORTANT: You MUST explicitly print/output ALL results you want the user to see.\n- py: This is not a Jupyter notebook environment. Use `print()` for all outputs.\n- py: Matplotlib: Use `plt.savefig()` to save plots as files.\n- js: use the `console` or `process` methods for all outputs.\n- r: IMPORTANT: No X11 display available. ALL graphics MUST use Cairo library (library(Cairo)).\n- Other languages: use appropriate output functions.";
44
+ };
45
+ readonly args: {
46
+ readonly type: "array";
47
+ readonly items: {
48
+ readonly type: "string";
49
+ };
50
+ readonly description: "Additional arguments to execute the code with. This should only be used if the input code requires additional arguments to run.";
51
+ };
52
+ };
53
+ readonly required: readonly ["lang", "code"];
54
+ };
55
+ };
56
+ declare function createCodeExecutionTool(params?: t.CodeExecutionToolParams): DynamicStructuredTool;
57
+ export { createCodeExecutionTool };
@@ -0,0 +1,138 @@
1
+ import { DynamicStructuredTool } from '@langchain/core/tools';
2
+ import type * as t from '@/types';
3
+ import { Constants } from '@/common';
4
+ export declare const ProgrammaticToolCallingSchema: {
5
+ readonly type: "object";
6
+ readonly properties: {
7
+ readonly code: {
8
+ readonly type: "string";
9
+ readonly minLength: 1;
10
+ readonly description: "Python code that calls tools programmatically. Tools are available as async functions.\n\nCRITICAL - STATELESS EXECUTION:\nEach call is a fresh Python interpreter. Variables, imports, and data do NOT persist between calls.\nYou MUST complete your entire workflow in ONE code block: query → process → output.\nDO NOT split work across multiple calls expecting to reuse variables.\n\nYour code is auto-wrapped in async context. Just write logic with await—no boilerplate needed.\n\nExample (Complete workflow in one call):\n # Query data\n data = await query_database(sql=\"SELECT * FROM users\")\n # Process it\n df = pd.DataFrame(data)\n summary = df.groupby('region').sum()\n # Output results\n await write_to_sheet(spreadsheet_id=sid, data=summary.to_dict())\n print(f\"Wrote {len(summary)} rows\")\n\nExample (Parallel calls):\n sf, ny = await asyncio.gather(get_weather(city=\"SF\"), get_weather(city=\"NY\"))\n print(f\"SF: {sf}, NY: {ny}\")\n\nRules:\n- EVERYTHING in one call—no state persists between executions\n- Just write code with await—auto-wrapped in async context\n- DO NOT define async def main() or call asyncio.run()\n- Tools are pre-defined—DO NOT write function definitions\n- Only print() output returns to the model";
11
+ };
12
+ readonly timeout: {
13
+ readonly type: "integer";
14
+ readonly minimum: 1000;
15
+ readonly maximum: 300000;
16
+ readonly default: 60000;
17
+ readonly description: "Maximum execution time in milliseconds. Default: 60 seconds. Max: 5 minutes.";
18
+ };
19
+ };
20
+ readonly required: readonly ["code"];
21
+ };
22
+ export declare const ProgrammaticToolCallingName = Constants.PROGRAMMATIC_TOOL_CALLING;
23
+ export declare const ProgrammaticToolCallingDescription: string;
24
+ export declare const ProgrammaticToolCallingDefinition: {
25
+ readonly name: Constants.PROGRAMMATIC_TOOL_CALLING;
26
+ readonly description: string;
27
+ readonly schema: {
28
+ readonly type: "object";
29
+ readonly properties: {
30
+ readonly code: {
31
+ readonly type: "string";
32
+ readonly minLength: 1;
33
+ readonly description: "Python code that calls tools programmatically. Tools are available as async functions.\n\nCRITICAL - STATELESS EXECUTION:\nEach call is a fresh Python interpreter. Variables, imports, and data do NOT persist between calls.\nYou MUST complete your entire workflow in ONE code block: query → process → output.\nDO NOT split work across multiple calls expecting to reuse variables.\n\nYour code is auto-wrapped in async context. Just write logic with await—no boilerplate needed.\n\nExample (Complete workflow in one call):\n # Query data\n data = await query_database(sql=\"SELECT * FROM users\")\n # Process it\n df = pd.DataFrame(data)\n summary = df.groupby('region').sum()\n # Output results\n await write_to_sheet(spreadsheet_id=sid, data=summary.to_dict())\n print(f\"Wrote {len(summary)} rows\")\n\nExample (Parallel calls):\n sf, ny = await asyncio.gather(get_weather(city=\"SF\"), get_weather(city=\"NY\"))\n print(f\"SF: {sf}, NY: {ny}\")\n\nRules:\n- EVERYTHING in one call—no state persists between executions\n- Just write code with await—auto-wrapped in async context\n- DO NOT define async def main() or call asyncio.run()\n- Tools are pre-defined—DO NOT write function definitions\n- Only print() output returns to the model";
34
+ };
35
+ readonly timeout: {
36
+ readonly type: "integer";
37
+ readonly minimum: 1000;
38
+ readonly maximum: 300000;
39
+ readonly default: 60000;
40
+ readonly description: "Maximum execution time in milliseconds. Default: 60 seconds. Max: 5 minutes.";
41
+ };
42
+ };
43
+ readonly required: readonly ["code"];
44
+ };
45
+ };
46
+ /**
47
+ * Normalizes a tool name to Python identifier format.
48
+ * Must match the Code API's `normalizePythonFunctionName` exactly:
49
+ * 1. Replace hyphens and spaces with underscores
50
+ * 2. Remove any other invalid characters
51
+ * 3. Prefix with underscore if starts with number
52
+ * 4. Append `_tool` if it's a Python keyword
53
+ * @param name - The tool name to normalize
54
+ * @returns Normalized Python-safe identifier
55
+ */
56
+ export declare function normalizeToPythonIdentifier(name: string): string;
57
+ /**
58
+ * Extracts tool names that are actually called in the Python code.
59
+ * Handles hyphen/underscore conversion since Python identifiers use underscores.
60
+ * @param code - The Python code to analyze
61
+ * @param toolNameMap - Map from normalized Python name to original tool name
62
+ * @returns Set of original tool names found in the code
63
+ */
64
+ export declare function extractUsedToolNames(code: string, toolNameMap: Map<string, string>): Set<string>;
65
+ /**
66
+ * Filters tool definitions to only include tools actually used in the code.
67
+ * Handles the hyphen-to-underscore conversion for Python compatibility.
68
+ * @param toolDefs - All available tool definitions
69
+ * @param code - The Python code to analyze
70
+ * @param debug - Enable debug logging
71
+ * @returns Filtered array of tool definitions
72
+ */
73
+ export declare function filterToolsByUsage(toolDefs: t.LCTool[], code: string, debug?: boolean): t.LCTool[];
74
+ /**
75
+ * Fetches files from a previous session to make them available for the current execution.
76
+ * Files are returned as CodeEnvFile references to be included in the request.
77
+ * @param baseUrl - The base URL for the Code API
78
+ * @param apiKey - The API key for authentication
79
+ * @param sessionId - The session ID to fetch files from
80
+ * @param proxy - Optional HTTP proxy URL
81
+ * @returns Array of CodeEnvFile references, or empty array if fetch fails
82
+ */
83
+ export declare function fetchSessionFiles(baseUrl: string, apiKey: string, sessionId: string, proxy?: string): Promise<t.CodeEnvFile[]>;
84
+ /**
85
+ * Makes an HTTP request to the Code API.
86
+ * @param endpoint - The API endpoint URL
87
+ * @param apiKey - The API key for authentication
88
+ * @param body - The request body
89
+ * @param proxy - Optional HTTP proxy URL
90
+ * @returns The parsed API response
91
+ */
92
+ export declare function makeRequest(endpoint: string, apiKey: string, body: Record<string, unknown>, proxy?: string): Promise<t.ProgrammaticExecutionResponse>;
93
+ /**
94
+ * Unwraps tool responses that may be formatted as tuples or content blocks.
95
+ * MCP tools return [content, artifacts], we need to extract the raw data.
96
+ * @param result - The raw result from tool.invoke()
97
+ * @param isMCPTool - Whether this is an MCP tool (has mcp property)
98
+ * @returns Unwrapped raw data (string, object, or parsed JSON)
99
+ */
100
+ export declare function unwrapToolResponse(result: unknown, isMCPTool: boolean): unknown;
101
+ /**
102
+ * Executes tools in parallel when requested by the API.
103
+ * Uses Promise.all for parallel execution, catching individual errors.
104
+ * Unwraps formatted responses (e.g., MCP tool tuples) to raw data.
105
+ * @param toolCalls - Array of tool calls from the API
106
+ * @param toolMap - Map of tool names to executable tools
107
+ * @returns Array of tool results
108
+ */
109
+ export declare function executeTools(toolCalls: t.PTCToolCall[], toolMap: t.ToolMap): Promise<t.PTCToolResult[]>;
110
+ /**
111
+ * Formats the completed response for the agent.
112
+ * @param response - The completed API response
113
+ * @returns Tuple of [formatted string, artifact]
114
+ */
115
+ export declare function formatCompletedResponse(response: t.ProgrammaticExecutionResponse): [string, t.ProgrammaticExecutionArtifact];
116
+ /**
117
+ * Creates a Programmatic Tool Calling tool for complex multi-tool workflows.
118
+ *
119
+ * This tool enables AI agents to write Python code that orchestrates multiple
120
+ * tool calls programmatically, reducing LLM round-trips and token usage.
121
+ *
122
+ * The tool map must be provided at runtime via config.configurable.toolMap.
123
+ *
124
+ * @param params - Configuration parameters (apiKey, baseUrl, maxRoundTrips, proxy)
125
+ * @returns A LangChain DynamicStructuredTool for programmatic tool calling
126
+ *
127
+ * @example
128
+ * const ptcTool = createProgrammaticToolCallingTool({
129
+ * apiKey: process.env.CODE_API_KEY,
130
+ * maxRoundTrips: 20
131
+ * });
132
+ *
133
+ * const [output, artifact] = await ptcTool.invoke(
134
+ * { code, tools },
135
+ * { configurable: { toolMap } }
136
+ * );
137
+ */
138
+ export declare function createProgrammaticToolCallingTool(initParams?: t.ProgrammaticToolCallingParams): DynamicStructuredTool;
@@ -0,0 +1,51 @@
1
+ import { ToolCall } from '@langchain/core/messages/tool';
2
+ import { END, Command, MessagesAnnotation } from '@langchain/langgraph';
3
+ import type { RunnableConfig } from '@langchain/core/runnables';
4
+ import type { BaseMessage } from '@langchain/core/messages';
5
+ import type * as t from '@/types';
6
+ import { RunnableCallable } from '@/utils';
7
+ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
8
+ private toolMap;
9
+ private loadRuntimeTools?;
10
+ handleToolErrors: boolean;
11
+ trace: boolean;
12
+ toolCallStepIds?: Map<string, string>;
13
+ errorHandler?: t.ToolNodeConstructorParams['errorHandler'];
14
+ private toolUsageCount;
15
+ /** Tool registry for filtering (lazy computation of programmatic maps) */
16
+ private toolRegistry?;
17
+ /** Cached programmatic tools (computed once on first PTC call) */
18
+ private programmaticCache?;
19
+ /** Reference to Graph's sessions map for automatic session injection */
20
+ private sessions?;
21
+ /** When true, dispatches ON_TOOL_EXECUTE events instead of invoking tools directly */
22
+ private eventDrivenMode;
23
+ /** Tool definitions for event-driven mode */
24
+ private toolDefinitions?;
25
+ /** Agent ID for event-driven mode */
26
+ private agentId?;
27
+ constructor({ tools, toolMap, name, tags, errorHandler, toolCallStepIds, handleToolErrors, loadRuntimeTools, toolRegistry, sessions, eventDrivenMode, toolDefinitions, agentId, }: t.ToolNodeConstructorParams);
28
+ /**
29
+ * Returns cached programmatic tools, computing once on first access.
30
+ * Single iteration builds both toolMap and toolDefs simultaneously.
31
+ */
32
+ private getProgrammaticTools;
33
+ /**
34
+ * Returns a snapshot of the current tool usage counts.
35
+ * @returns A ReadonlyMap where keys are tool names and values are their usage counts.
36
+ */
37
+ getToolUsageCounts(): ReadonlyMap<string, number>;
38
+ /**
39
+ * Runs a single tool call with error handling
40
+ */
41
+ protected runTool(call: ToolCall, config: RunnableConfig): Promise<BaseMessage | Command>;
42
+ /**
43
+ * Execute all tool calls via ON_TOOL_EXECUTE event dispatch.
44
+ * Used in event-driven mode where the host handles actual tool execution.
45
+ */
46
+ private executeViaEvent;
47
+ protected run(input: any, config: RunnableConfig): Promise<T>;
48
+ private isSendInput;
49
+ private isMessagesState;
50
+ }
51
+ export declare function toolsCondition<T extends string>(state: BaseMessage[] | typeof MessagesAnnotation.State, toolNode: T, invokedToolIds?: Set<string>): T | typeof END;