@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,355 @@
1
+ // src/types/tools.ts
2
+ import type { StructuredToolInterface } from '@langchain/core/tools';
3
+ import type { RunnableToolLike } from '@langchain/core/runnables';
4
+ import type { ToolCall } from '@langchain/core/messages/tool';
5
+ import type { ToolErrorData } from './stream';
6
+ import { EnvVar } from '@/common';
7
+
8
+ /** Replacement type for `import type { ToolCall } from '@langchain/core/messages/tool'` in order to have stringified args typed */
9
+ export type CustomToolCall = {
10
+ name: string;
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ args: string | Record<string, any>;
13
+ id?: string;
14
+ type?: 'tool_call';
15
+ output?: string;
16
+ };
17
+
18
+ export type GenericTool = (StructuredToolInterface | RunnableToolLike) & {
19
+ mcp?: boolean;
20
+ };
21
+
22
+ export type ToolMap = Map<string, GenericTool>;
23
+ export type ToolRefs = {
24
+ tools: GenericTool[];
25
+ toolMap?: ToolMap;
26
+ };
27
+
28
+ export type ToolRefGenerator = (tool_calls: ToolCall[]) => ToolRefs;
29
+
30
+ export type ToolNodeOptions = {
31
+ name?: string;
32
+ tags?: string[];
33
+ handleToolErrors?: boolean;
34
+ loadRuntimeTools?: ToolRefGenerator;
35
+ toolCallStepIds?: Map<string, string>;
36
+ errorHandler?: (
37
+ data: ToolErrorData,
38
+ metadata?: Record<string, unknown>
39
+ ) => Promise<void>;
40
+ /** Tool registry for lazy computation of programmatic tools and tool search */
41
+ toolRegistry?: LCToolRegistry;
42
+ /** Reference to Graph's sessions map for automatic session injection */
43
+ sessions?: ToolSessionMap;
44
+ /** When true, dispatches ON_TOOL_EXECUTE events instead of invoking tools directly */
45
+ eventDrivenMode?: boolean;
46
+ /** Tool definitions for event-driven mode (used for context, not invocation) */
47
+ toolDefinitions?: Map<string, LCTool>;
48
+ /** Agent ID for event-driven mode (used to identify which agent's context to use) */
49
+ agentId?: string;
50
+ };
51
+
52
+ export type ToolNodeConstructorParams = ToolRefs & ToolNodeOptions;
53
+
54
+ export type ToolEndEvent = {
55
+ /** The Step Id of the Tool Call */
56
+ id: string;
57
+ /** The Completed Tool Call */
58
+ tool_call: ToolCall;
59
+ /** The content index of the tool call */
60
+ index: number;
61
+ };
62
+
63
+ export type CodeEnvFile = {
64
+ id: string;
65
+ name: string;
66
+ session_id: string;
67
+ };
68
+
69
+ export type CodeExecutionToolParams =
70
+ | undefined
71
+ | {
72
+ session_id?: string;
73
+ user_id?: string;
74
+ apiKey?: string;
75
+ files?: CodeEnvFile[];
76
+ [EnvVar.CODE_API_KEY]?: string;
77
+ };
78
+
79
+ export type FileRef = {
80
+ id: string;
81
+ name: string;
82
+ path?: string;
83
+ /** Session ID this file belongs to (for multi-session file tracking) */
84
+ session_id?: string;
85
+ };
86
+
87
+ export type FileRefs = FileRef[];
88
+
89
+ export type ExecuteResult = {
90
+ session_id: string;
91
+ stdout: string;
92
+ stderr: string;
93
+ files?: FileRefs;
94
+ };
95
+
96
+ /** JSON Schema type definition for tool parameters */
97
+ export type JsonSchemaType = {
98
+ type:
99
+ | 'string'
100
+ | 'number'
101
+ | 'integer'
102
+ | 'float'
103
+ | 'boolean'
104
+ | 'array'
105
+ | 'object';
106
+ enum?: string[];
107
+ items?: JsonSchemaType;
108
+ properties?: Record<string, JsonSchemaType>;
109
+ required?: string[];
110
+ description?: string;
111
+ additionalProperties?: boolean | JsonSchemaType;
112
+ };
113
+
114
+ /**
115
+ * Specifies which contexts can invoke a tool (inspired by Anthropic's allowed_callers)
116
+ * - 'direct': Only callable directly by the LLM (default if omitted)
117
+ * - 'code_execution': Only callable from within programmatic code execution
118
+ */
119
+ export type AllowedCaller = 'direct' | 'code_execution';
120
+
121
+ /** Tool definition with optional deferred loading and caller restrictions */
122
+ export type LCTool = {
123
+ name: string;
124
+ description?: string;
125
+ parameters?: JsonSchemaType;
126
+ /** When true, tool is not loaded into context initially (for tool search) */
127
+ defer_loading?: boolean;
128
+ /**
129
+ * Which contexts can invoke this tool.
130
+ * Default: ['direct'] (only callable directly by LLM)
131
+ * Options: 'direct', 'code_execution'
132
+ */
133
+ allowed_callers?: AllowedCaller[];
134
+ /** Response format for the tool output */
135
+ responseFormat?: 'content' | 'content_and_artifact';
136
+ /** Server name for MCP tools */
137
+ serverName?: string;
138
+ /** Tool type classification */
139
+ toolType?: 'builtin' | 'mcp' | 'action';
140
+ };
141
+
142
+ /** Single tool call within a batch request for event-driven execution */
143
+ export type ToolCallRequest = {
144
+ /** Tool call ID from the LLM */
145
+ id: string;
146
+ /** Tool name */
147
+ name: string;
148
+ /** Tool arguments */
149
+ args: Record<string, unknown>;
150
+ /** Step ID for tracking */
151
+ stepId?: string;
152
+ /** Usage turn count for this tool */
153
+ turn?: number;
154
+ };
155
+
156
+ /** Batch request containing ALL tool calls for a graph step */
157
+ export type ToolExecuteBatchRequest = {
158
+ /** All tool calls from the AIMessage */
159
+ toolCalls: ToolCallRequest[];
160
+ /** User ID for context */
161
+ userId?: string;
162
+ /** Agent ID for context */
163
+ agentId?: string;
164
+ /** Runtime configurable from RunnableConfig (includes user, userMCPAuthMap, etc.) */
165
+ configurable?: Record<string, unknown>;
166
+ /** Runtime metadata from RunnableConfig (includes thread_id, run_id, provider, etc.) */
167
+ metadata?: Record<string, unknown>;
168
+ /** Promise resolver - handler calls this with ALL results */
169
+ resolve: (results: ToolExecuteResult[]) => void;
170
+ /** Promise rejector - handler calls this on fatal error */
171
+ reject: (error: Error) => void;
172
+ };
173
+
174
+ /** Result for a single tool call in event-driven execution */
175
+ export type ToolExecuteResult = {
176
+ /** Matches ToolCallRequest.id */
177
+ toolCallId: string;
178
+ /** Tool output content */
179
+ content: string | unknown[];
180
+ /** Optional artifact (for content_and_artifact format) */
181
+ artifact?: unknown;
182
+ /** Execution status */
183
+ status: 'success' | 'error';
184
+ /** Error message if status is 'error' */
185
+ errorMessage?: string;
186
+ };
187
+
188
+ /** Map of tool names to tool definitions */
189
+ export type LCToolRegistry = Map<string, LCTool>;
190
+
191
+ export type ProgrammaticCache = { toolMap: ToolMap; toolDefs: LCTool[] };
192
+
193
+ /** Search mode: code_interpreter uses external sandbox, local uses safe substring matching */
194
+ export type ToolSearchMode = 'code_interpreter' | 'local';
195
+
196
+ /** Parameters for creating a Tool Search tool */
197
+ export type ToolSearchParams = {
198
+ apiKey?: string;
199
+ toolRegistry?: LCToolRegistry;
200
+ onlyDeferred?: boolean;
201
+ baseUrl?: string;
202
+ /** Search mode: 'code_interpreter' (default) uses sandbox for regex, 'local' uses safe substring matching */
203
+ mode?: ToolSearchMode;
204
+ /** Filter tools to only those from specific MCP server(s). Can be a single name or array of names. */
205
+ mcpServer?: string | string[];
206
+ [key: string]: unknown;
207
+ };
208
+
209
+ /** Simplified tool metadata for search purposes */
210
+ export type ToolMetadata = {
211
+ name: string;
212
+ description: string;
213
+ parameters?: JsonSchemaType;
214
+ };
215
+
216
+ /** Individual search result for a matching tool */
217
+ export type ToolSearchResult = {
218
+ tool_name: string;
219
+ match_score: number;
220
+ matched_field: string;
221
+ snippet: string;
222
+ };
223
+
224
+ /** Response from the tool search operation */
225
+ export type ToolSearchResponse = {
226
+ tool_references: ToolSearchResult[];
227
+ total_tools_searched: number;
228
+ pattern_used: string;
229
+ };
230
+
231
+ /** Artifact returned alongside the formatted search results */
232
+ export type ToolSearchArtifact = {
233
+ tool_references: ToolSearchResult[];
234
+ metadata: {
235
+ total_searched: number;
236
+ pattern: string;
237
+ error?: string;
238
+ };
239
+ };
240
+
241
+ // ============================================================================
242
+ // Programmatic Tool Calling Types
243
+ // ============================================================================
244
+
245
+ /**
246
+ * Tool call requested by the Code API during programmatic execution
247
+ */
248
+ export type PTCToolCall = {
249
+ /** Unique ID like "call_001" */
250
+ id: string;
251
+ /** Tool name */
252
+ name: string;
253
+ /** Input parameters */
254
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
255
+ input: Record<string, any>;
256
+ };
257
+
258
+ /**
259
+ * Tool result sent back to the Code API
260
+ */
261
+ export type PTCToolResult = {
262
+ /** Matches PTCToolCall.id */
263
+ call_id: string;
264
+ /** Tool execution result (any JSON-serializable value) */
265
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
266
+ result: any;
267
+ /** Whether tool execution failed */
268
+ is_error: boolean;
269
+ /** Error details if is_error=true */
270
+ error_message?: string;
271
+ };
272
+
273
+ /**
274
+ * Response from the Code API for programmatic execution
275
+ */
276
+ export type ProgrammaticExecutionResponse = {
277
+ status: 'tool_call_required' | 'completed' | 'error' | unknown;
278
+ session_id?: string;
279
+
280
+ /** Present when status='tool_call_required' */
281
+ continuation_token?: string;
282
+ tool_calls?: PTCToolCall[];
283
+
284
+ /** Present when status='completed' */
285
+ stdout?: string;
286
+ stderr?: string;
287
+ files?: FileRefs;
288
+
289
+ /** Present when status='error' */
290
+ error?: string;
291
+ };
292
+
293
+ /**
294
+ * Artifact returned by the PTC tool
295
+ */
296
+ export type ProgrammaticExecutionArtifact = {
297
+ session_id?: string;
298
+ files?: FileRefs;
299
+ };
300
+
301
+ /**
302
+ * Initialization parameters for the PTC tool
303
+ */
304
+ export type ProgrammaticToolCallingParams = {
305
+ /** Code API key (or use CODE_API_KEY env var) */
306
+ apiKey?: string;
307
+ /** Code API base URL (or use CODE_BASEURL env var) */
308
+ baseUrl?: string;
309
+ /** Safety limit for round-trips (default: 20) */
310
+ maxRoundTrips?: number;
311
+ /** HTTP proxy URL */
312
+ proxy?: string;
313
+ /** Enable debug logging (or set PTC_DEBUG=true env var) */
314
+ debug?: boolean;
315
+ /** Environment variable key for API key */
316
+ [key: string]: unknown;
317
+ };
318
+
319
+ // ============================================================================
320
+ // Tool Session Context Types
321
+ // ============================================================================
322
+
323
+ /**
324
+ * Tracks code execution session state for automatic file persistence.
325
+ * Stored in Graph.sessions and injected into subsequent tool invocations.
326
+ */
327
+ export type CodeSessionContext = {
328
+ /** Session ID from the code execution environment */
329
+ session_id: string;
330
+ /** Files generated in this session (for context/tracking) */
331
+ files: FileRefs;
332
+ /** Timestamp of last update */
333
+ lastUpdated: number;
334
+ };
335
+
336
+ /**
337
+ * Artifact structure returned by code execution tools (CodeExecutor, PTC).
338
+ * Used to extract session context after tool completion.
339
+ */
340
+ export type CodeExecutionArtifact = {
341
+ session_id?: string;
342
+ files?: FileRefs;
343
+ };
344
+
345
+ /**
346
+ * Generic session context union type for different tool types.
347
+ * Extend this as new tool session types are added.
348
+ */
349
+ export type ToolSessionContext = CodeSessionContext;
350
+
351
+ /**
352
+ * Map of tool names to their session contexts.
353
+ * Keys are tool constants (e.g., Constants.EXECUTE_CODE, Constants.PROGRAMMATIC_TOOL_CALLING).
354
+ */
355
+ export type ToolSessionMap = Map<string, ToolSessionContext>;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Context Analytics Utility
3
+ *
4
+ * Provides context analytics data for observability/traces.
5
+ * No console logging - just data structures for event emission.
6
+ */
7
+
8
+ import type { BaseMessage } from '@langchain/core/messages';
9
+ import type { TokenCounter } from '@/types/run';
10
+
11
+ /**
12
+ * Context analytics data for traces
13
+ */
14
+ export interface ContextAnalytics {
15
+ /** Total messages in context */
16
+ messageCount: number;
17
+ /** Total tokens in context */
18
+ totalTokens: number;
19
+ /** Maximum allowed context tokens */
20
+ maxContextTokens?: number;
21
+ /** Instruction/system tokens */
22
+ instructionTokens?: number;
23
+ /** Context utilization percentage (0-100) */
24
+ utilizationPercent?: number;
25
+ /** Breakdown by message type */
26
+ breakdown?: Record<string, { tokens: number; percent: number }>;
27
+ }
28
+
29
+ /**
30
+ * Build context analytics for traces (no logging)
31
+ */
32
+ export function buildContextAnalytics(
33
+ messages: BaseMessage[],
34
+ options: {
35
+ tokenCounter?: TokenCounter;
36
+ maxContextTokens?: number;
37
+ instructionTokens?: number;
38
+ indexTokenCountMap?: Record<string, number | undefined>;
39
+ }
40
+ ): ContextAnalytics {
41
+ const {
42
+ tokenCounter,
43
+ maxContextTokens,
44
+ instructionTokens,
45
+ indexTokenCountMap,
46
+ } = options;
47
+
48
+ // Calculate total tokens
49
+ let totalTokens = 0;
50
+ const breakdown: Record<string, { tokens: number; percent: number }> = {};
51
+
52
+ for (let i = 0; i < messages.length; i++) {
53
+ const msg = messages[i];
54
+ const type = msg.getType();
55
+
56
+ let tokens = 0;
57
+ if (indexTokenCountMap && indexTokenCountMap[i] != null) {
58
+ tokens = indexTokenCountMap[i]!;
59
+ } else if (tokenCounter) {
60
+ try {
61
+ tokens = tokenCounter(msg);
62
+ } catch {
63
+ // Estimate from content length
64
+ const content =
65
+ typeof msg.content === 'string'
66
+ ? msg.content
67
+ : JSON.stringify(msg.content);
68
+ tokens = Math.ceil(content.length / 4);
69
+ }
70
+ }
71
+
72
+ totalTokens += tokens;
73
+
74
+ if (!breakdown[type]) {
75
+ breakdown[type] = { tokens: 0, percent: 0 };
76
+ }
77
+ breakdown[type].tokens += tokens;
78
+ }
79
+
80
+ // Calculate percentages
81
+ for (const type of Object.keys(breakdown)) {
82
+ breakdown[type].percent =
83
+ totalTokens > 0
84
+ ? Math.round((breakdown[type].tokens / totalTokens) * 1000) / 10
85
+ : 0;
86
+ }
87
+
88
+ // Calculate utilization
89
+ let utilizationPercent: number | undefined;
90
+ if (maxContextTokens && maxContextTokens > 0) {
91
+ utilizationPercent =
92
+ Math.round((totalTokens / maxContextTokens) * 1000) / 10;
93
+ }
94
+
95
+ return {
96
+ messageCount: messages.length,
97
+ totalTokens,
98
+ maxContextTokens,
99
+ instructionTokens,
100
+ utilizationPercent,
101
+ breakdown,
102
+ };
103
+ }
@@ -0,0 +1,32 @@
1
+ /* eslint-disable no-console */
2
+ // src/utils/events.ts
3
+ import { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';
4
+ import type { RunnableConfig } from '@langchain/core/runnables';
5
+
6
+ /**
7
+ * Safely dispatches a custom event and properly awaits it to avoid
8
+ * race conditions where events are dispatched after run cleanup.
9
+ */
10
+ export async function safeDispatchCustomEvent(
11
+ event: string,
12
+ payload: unknown,
13
+ config?: RunnableConfig
14
+ ): Promise<void> {
15
+ try {
16
+ await dispatchCustomEvent(event, payload, config);
17
+ } catch (e) {
18
+ // Check if this is the known EventStreamCallbackHandler error
19
+ if (
20
+ e instanceof Error &&
21
+ e.message.includes('handleCustomEvent: Run ID') &&
22
+ e.message.includes('not found in run map')
23
+ ) {
24
+ // Suppress this specific error - it's expected during parallel execution
25
+ // when EventStreamCallbackHandler loses track of run IDs
26
+ // console.debug('Suppressed error dispatching custom event:', e);
27
+ return;
28
+ }
29
+ // Log other errors
30
+ console.error('Error dispatching custom event:', e);
31
+ }
32
+ }
@@ -0,0 +1,11 @@
1
+ export const resetIfNotEmpty = <T>(value: T, resetValue: T): T => {
2
+ if (Array.isArray(value)) {
3
+ return value.length > 0 ? resetValue : value;
4
+ }
5
+ if (value instanceof Set || value instanceof Map) {
6
+ return value.size > 0 ? resetValue : value;
7
+ }
8
+ return value !== undefined ? resetValue : value;
9
+ };
10
+
11
+ export const joinKeys = (args: (string | number | undefined)[]): string => args.join('_');
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Multi-Agent Handler Utilities
3
+ *
4
+ * Provides a simple helper to create handlers with content aggregation for multi-agent scripts.
5
+ *
6
+ * Usage:
7
+ * ```typescript
8
+ * const { contentParts, aggregateContent, handlers } = createHandlers();
9
+ *
10
+ * // With callbacks
11
+ * const { contentParts, aggregateContent, handlers } = createHandlers({
12
+ * onRunStep: (event, data) => console.log('Step:', data),
13
+ * onRunStepCompleted: (event, data) => console.log('Completed:', data)
14
+ * });
15
+ * ```
16
+ */
17
+
18
+ import { GraphEvents } from '@/common';
19
+ import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
20
+ import { ToolEndHandler, ModelEndHandler } from '@/events';
21
+ import type * as t from '@/types';
22
+
23
+ interface HandlerCallbacks {
24
+ onRunStep?: (event: GraphEvents.ON_RUN_STEP, data: t.StreamEventData) => void;
25
+ onRunStepCompleted?: (
26
+ event: GraphEvents.ON_RUN_STEP_COMPLETED,
27
+ data: t.StreamEventData
28
+ ) => void;
29
+ onRunStepDelta?: (
30
+ event: GraphEvents.ON_RUN_STEP_DELTA,
31
+ data: t.StreamEventData
32
+ ) => void;
33
+ onMessageDelta?: (
34
+ event: GraphEvents.ON_MESSAGE_DELTA,
35
+ data: t.StreamEventData
36
+ ) => void;
37
+ }
38
+
39
+ /**
40
+ * Creates handlers with content aggregation for multi-agent scripts
41
+ */
42
+ export function createHandlers(callbacks?: HandlerCallbacks): {
43
+ contentParts: Array<t.MessageContentComplex | undefined>;
44
+ aggregateContent: ReturnType<
45
+ typeof createContentAggregator
46
+ >['aggregateContent'];
47
+ handlers: Record<string, t.EventHandler>;
48
+ } {
49
+ // Set up content aggregator
50
+ const { contentParts, aggregateContent } = createContentAggregator();
51
+
52
+ // Create the handlers object
53
+ const handlers = {
54
+ [GraphEvents.TOOL_END]: new ToolEndHandler(),
55
+ [GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
56
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
57
+
58
+ [GraphEvents.ON_RUN_STEP]: {
59
+ handle: (
60
+ event: GraphEvents.ON_RUN_STEP,
61
+ data: t.StreamEventData
62
+ ): void => {
63
+ aggregateContent({ event, data: data as t.RunStep });
64
+ callbacks?.onRunStep?.(event, data);
65
+ },
66
+ },
67
+
68
+ [GraphEvents.ON_RUN_STEP_COMPLETED]: {
69
+ handle: (
70
+ event: GraphEvents.ON_RUN_STEP_COMPLETED,
71
+ data: t.StreamEventData
72
+ ): void => {
73
+ aggregateContent({
74
+ event,
75
+ data: data as unknown as { result: t.ToolEndEvent },
76
+ });
77
+ callbacks?.onRunStepCompleted?.(event, data);
78
+ },
79
+ },
80
+
81
+ [GraphEvents.ON_RUN_STEP_DELTA]: {
82
+ handle: (
83
+ event: GraphEvents.ON_RUN_STEP_DELTA,
84
+ data: t.StreamEventData
85
+ ): void => {
86
+ aggregateContent({ event, data: data as t.RunStepDeltaEvent });
87
+ callbacks?.onRunStepDelta?.(event, data);
88
+ },
89
+ },
90
+
91
+ [GraphEvents.ON_MESSAGE_DELTA]: {
92
+ handle: (
93
+ event: GraphEvents.ON_MESSAGE_DELTA,
94
+ data: t.StreamEventData
95
+ ): void => {
96
+ aggregateContent({ event, data: data as t.MessageDeltaEvent });
97
+ callbacks?.onMessageDelta?.(event, data);
98
+ },
99
+ },
100
+ };
101
+
102
+ return {
103
+ contentParts,
104
+ aggregateContent,
105
+ handlers,
106
+ };
107
+ }
@@ -0,0 +1,9 @@
1
+ export * from './graph';
2
+ export * from './llm';
3
+ export * from './misc';
4
+ export * from './handlers';
5
+ export * from './run';
6
+ export * from './tokens';
7
+ export * from './toonFormat';
8
+ export * from './contextAnalytics';
9
+ export * from './schema';
@@ -0,0 +1,26 @@
1
+ // src/utils/llm.ts
2
+ import { Providers } from '@/common';
3
+
4
+ export function isOpenAILike(provider?: string | Providers): boolean {
5
+ if (provider == null) {
6
+ return false;
7
+ }
8
+ return (
9
+ [
10
+ Providers.OPENAI,
11
+ Providers.AZURE,
12
+ Providers.OPENROUTER,
13
+ Providers.XAI,
14
+ Providers.DEEPSEEK,
15
+ ] as string[]
16
+ ).includes(provider);
17
+ }
18
+
19
+ export function isGoogleLike(provider?: string | Providers): boolean {
20
+ if (provider == null) {
21
+ return false;
22
+ }
23
+ return ([Providers.GOOGLE, Providers.VERTEXAI] as string[]).includes(
24
+ provider
25
+ );
26
+ }