illuma-agents 1.0.2

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 (437) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/common/enum.cjs +163 -0
  3. package/dist/cjs/common/enum.cjs.map +1 -0
  4. package/dist/cjs/events.cjs +143 -0
  5. package/dist/cjs/events.cjs.map +1 -0
  6. package/dist/cjs/graphs/Graph.cjs +581 -0
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -0
  8. package/dist/cjs/instrumentation.cjs +21 -0
  9. package/dist/cjs/instrumentation.cjs.map +1 -0
  10. package/dist/cjs/llm/anthropic/index.cjs +292 -0
  11. package/dist/cjs/llm/anthropic/index.cjs.map +1 -0
  12. package/dist/cjs/llm/anthropic/types.cjs +50 -0
  13. package/dist/cjs/llm/anthropic/types.cjs.map +1 -0
  14. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +553 -0
  15. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -0
  16. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +218 -0
  17. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -0
  18. package/dist/cjs/llm/anthropic/utils/tools.cjs +29 -0
  19. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -0
  20. package/dist/cjs/llm/fake.cjs +97 -0
  21. package/dist/cjs/llm/fake.cjs.map +1 -0
  22. package/dist/cjs/llm/google/index.cjs +147 -0
  23. package/dist/cjs/llm/google/index.cjs.map +1 -0
  24. package/dist/cjs/llm/google/utils/common.cjs +490 -0
  25. package/dist/cjs/llm/google/utils/common.cjs.map +1 -0
  26. package/dist/cjs/llm/ollama/index.cjs +70 -0
  27. package/dist/cjs/llm/ollama/index.cjs.map +1 -0
  28. package/dist/cjs/llm/ollama/utils.cjs +158 -0
  29. package/dist/cjs/llm/ollama/utils.cjs.map +1 -0
  30. package/dist/cjs/llm/openai/index.cjs +613 -0
  31. package/dist/cjs/llm/openai/index.cjs.map +1 -0
  32. package/dist/cjs/llm/openai/utils/index.cjs +677 -0
  33. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -0
  34. package/dist/cjs/llm/openrouter/index.cjs +29 -0
  35. package/dist/cjs/llm/openrouter/index.cjs.map +1 -0
  36. package/dist/cjs/llm/providers.cjs +47 -0
  37. package/dist/cjs/llm/providers.cjs.map +1 -0
  38. package/dist/cjs/llm/text.cjs +69 -0
  39. package/dist/cjs/llm/text.cjs.map +1 -0
  40. package/dist/cjs/llm/vertexai/index.cjs +330 -0
  41. package/dist/cjs/llm/vertexai/index.cjs.map +1 -0
  42. package/dist/cjs/main.cjs +127 -0
  43. package/dist/cjs/main.cjs.map +1 -0
  44. package/dist/cjs/messages/core.cjs +359 -0
  45. package/dist/cjs/messages/core.cjs.map +1 -0
  46. package/dist/cjs/messages/format.cjs +455 -0
  47. package/dist/cjs/messages/format.cjs.map +1 -0
  48. package/dist/cjs/messages/ids.cjs +23 -0
  49. package/dist/cjs/messages/ids.cjs.map +1 -0
  50. package/dist/cjs/messages/prune.cjs +398 -0
  51. package/dist/cjs/messages/prune.cjs.map +1 -0
  52. package/dist/cjs/run.cjs +264 -0
  53. package/dist/cjs/run.cjs.map +1 -0
  54. package/dist/cjs/splitStream.cjs +210 -0
  55. package/dist/cjs/splitStream.cjs.map +1 -0
  56. package/dist/cjs/stream.cjs +504 -0
  57. package/dist/cjs/stream.cjs.map +1 -0
  58. package/dist/cjs/tools/CodeExecutor.cjs +192 -0
  59. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -0
  60. package/dist/cjs/tools/ToolNode.cjs +125 -0
  61. package/dist/cjs/tools/ToolNode.cjs.map +1 -0
  62. package/dist/cjs/tools/handlers.cjs +250 -0
  63. package/dist/cjs/tools/handlers.cjs.map +1 -0
  64. package/dist/cjs/tools/search/anthropic.cjs +40 -0
  65. package/dist/cjs/tools/search/anthropic.cjs.map +1 -0
  66. package/dist/cjs/tools/search/content.cjs +140 -0
  67. package/dist/cjs/tools/search/content.cjs.map +1 -0
  68. package/dist/cjs/tools/search/firecrawl.cjs +179 -0
  69. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -0
  70. package/dist/cjs/tools/search/format.cjs +203 -0
  71. package/dist/cjs/tools/search/format.cjs.map +1 -0
  72. package/dist/cjs/tools/search/highlights.cjs +245 -0
  73. package/dist/cjs/tools/search/highlights.cjs.map +1 -0
  74. package/dist/cjs/tools/search/rerankers.cjs +174 -0
  75. package/dist/cjs/tools/search/rerankers.cjs.map +1 -0
  76. package/dist/cjs/tools/search/schema.cjs +70 -0
  77. package/dist/cjs/tools/search/schema.cjs.map +1 -0
  78. package/dist/cjs/tools/search/search.cjs +561 -0
  79. package/dist/cjs/tools/search/search.cjs.map +1 -0
  80. package/dist/cjs/tools/search/serper-scraper.cjs +132 -0
  81. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -0
  82. package/dist/cjs/tools/search/tool.cjs +331 -0
  83. package/dist/cjs/tools/search/tool.cjs.map +1 -0
  84. package/dist/cjs/tools/search/utils.cjs +66 -0
  85. package/dist/cjs/tools/search/utils.cjs.map +1 -0
  86. package/dist/cjs/utils/graph.cjs +16 -0
  87. package/dist/cjs/utils/graph.cjs.map +1 -0
  88. package/dist/cjs/utils/llm.cjs +28 -0
  89. package/dist/cjs/utils/llm.cjs.map +1 -0
  90. package/dist/cjs/utils/misc.cjs +56 -0
  91. package/dist/cjs/utils/misc.cjs.map +1 -0
  92. package/dist/cjs/utils/run.cjs +69 -0
  93. package/dist/cjs/utils/run.cjs.map +1 -0
  94. package/dist/cjs/utils/title.cjs +111 -0
  95. package/dist/cjs/utils/title.cjs.map +1 -0
  96. package/dist/cjs/utils/tokens.cjs +65 -0
  97. package/dist/cjs/utils/tokens.cjs.map +1 -0
  98. package/dist/esm/common/enum.mjs +163 -0
  99. package/dist/esm/common/enum.mjs.map +1 -0
  100. package/dist/esm/events.mjs +135 -0
  101. package/dist/esm/events.mjs.map +1 -0
  102. package/dist/esm/graphs/Graph.mjs +578 -0
  103. package/dist/esm/graphs/Graph.mjs.map +1 -0
  104. package/dist/esm/instrumentation.mjs +19 -0
  105. package/dist/esm/instrumentation.mjs.map +1 -0
  106. package/dist/esm/llm/anthropic/index.mjs +290 -0
  107. package/dist/esm/llm/anthropic/index.mjs.map +1 -0
  108. package/dist/esm/llm/anthropic/types.mjs +48 -0
  109. package/dist/esm/llm/anthropic/types.mjs.map +1 -0
  110. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +550 -0
  111. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -0
  112. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +216 -0
  113. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -0
  114. package/dist/esm/llm/anthropic/utils/tools.mjs +27 -0
  115. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -0
  116. package/dist/esm/llm/fake.mjs +94 -0
  117. package/dist/esm/llm/fake.mjs.map +1 -0
  118. package/dist/esm/llm/google/index.mjs +145 -0
  119. package/dist/esm/llm/google/index.mjs.map +1 -0
  120. package/dist/esm/llm/google/utils/common.mjs +484 -0
  121. package/dist/esm/llm/google/utils/common.mjs.map +1 -0
  122. package/dist/esm/llm/ollama/index.mjs +68 -0
  123. package/dist/esm/llm/ollama/index.mjs.map +1 -0
  124. package/dist/esm/llm/ollama/utils.mjs +155 -0
  125. package/dist/esm/llm/ollama/utils.mjs.map +1 -0
  126. package/dist/esm/llm/openai/index.mjs +604 -0
  127. package/dist/esm/llm/openai/index.mjs.map +1 -0
  128. package/dist/esm/llm/openai/utils/index.mjs +671 -0
  129. package/dist/esm/llm/openai/utils/index.mjs.map +1 -0
  130. package/dist/esm/llm/openrouter/index.mjs +27 -0
  131. package/dist/esm/llm/openrouter/index.mjs.map +1 -0
  132. package/dist/esm/llm/providers.mjs +43 -0
  133. package/dist/esm/llm/providers.mjs.map +1 -0
  134. package/dist/esm/llm/text.mjs +67 -0
  135. package/dist/esm/llm/text.mjs.map +1 -0
  136. package/dist/esm/llm/vertexai/index.mjs +328 -0
  137. package/dist/esm/llm/vertexai/index.mjs.map +1 -0
  138. package/dist/esm/main.mjs +20 -0
  139. package/dist/esm/main.mjs.map +1 -0
  140. package/dist/esm/messages/core.mjs +351 -0
  141. package/dist/esm/messages/core.mjs.map +1 -0
  142. package/dist/esm/messages/format.mjs +447 -0
  143. package/dist/esm/messages/format.mjs.map +1 -0
  144. package/dist/esm/messages/ids.mjs +21 -0
  145. package/dist/esm/messages/ids.mjs.map +1 -0
  146. package/dist/esm/messages/prune.mjs +393 -0
  147. package/dist/esm/messages/prune.mjs.map +1 -0
  148. package/dist/esm/run.mjs +261 -0
  149. package/dist/esm/run.mjs.map +1 -0
  150. package/dist/esm/splitStream.mjs +207 -0
  151. package/dist/esm/splitStream.mjs.map +1 -0
  152. package/dist/esm/stream.mjs +500 -0
  153. package/dist/esm/stream.mjs.map +1 -0
  154. package/dist/esm/tools/CodeExecutor.mjs +188 -0
  155. package/dist/esm/tools/CodeExecutor.mjs.map +1 -0
  156. package/dist/esm/tools/ToolNode.mjs +122 -0
  157. package/dist/esm/tools/ToolNode.mjs.map +1 -0
  158. package/dist/esm/tools/handlers.mjs +245 -0
  159. package/dist/esm/tools/handlers.mjs.map +1 -0
  160. package/dist/esm/tools/search/anthropic.mjs +37 -0
  161. package/dist/esm/tools/search/anthropic.mjs.map +1 -0
  162. package/dist/esm/tools/search/content.mjs +119 -0
  163. package/dist/esm/tools/search/content.mjs.map +1 -0
  164. package/dist/esm/tools/search/firecrawl.mjs +176 -0
  165. package/dist/esm/tools/search/firecrawl.mjs.map +1 -0
  166. package/dist/esm/tools/search/format.mjs +201 -0
  167. package/dist/esm/tools/search/format.mjs.map +1 -0
  168. package/dist/esm/tools/search/highlights.mjs +243 -0
  169. package/dist/esm/tools/search/highlights.mjs.map +1 -0
  170. package/dist/esm/tools/search/rerankers.mjs +168 -0
  171. package/dist/esm/tools/search/rerankers.mjs.map +1 -0
  172. package/dist/esm/tools/search/schema.mjs +61 -0
  173. package/dist/esm/tools/search/schema.mjs.map +1 -0
  174. package/dist/esm/tools/search/search.mjs +558 -0
  175. package/dist/esm/tools/search/search.mjs.map +1 -0
  176. package/dist/esm/tools/search/serper-scraper.mjs +129 -0
  177. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -0
  178. package/dist/esm/tools/search/tool.mjs +329 -0
  179. package/dist/esm/tools/search/tool.mjs.map +1 -0
  180. package/dist/esm/tools/search/utils.mjs +61 -0
  181. package/dist/esm/tools/search/utils.mjs.map +1 -0
  182. package/dist/esm/utils/graph.mjs +13 -0
  183. package/dist/esm/utils/graph.mjs.map +1 -0
  184. package/dist/esm/utils/llm.mjs +25 -0
  185. package/dist/esm/utils/llm.mjs.map +1 -0
  186. package/dist/esm/utils/misc.mjs +53 -0
  187. package/dist/esm/utils/misc.mjs.map +1 -0
  188. package/dist/esm/utils/run.mjs +66 -0
  189. package/dist/esm/utils/run.mjs.map +1 -0
  190. package/dist/esm/utils/title.mjs +108 -0
  191. package/dist/esm/utils/title.mjs.map +1 -0
  192. package/dist/esm/utils/tokens.mjs +62 -0
  193. package/dist/esm/utils/tokens.mjs.map +1 -0
  194. package/dist/types/common/enum.d.ts +128 -0
  195. package/dist/types/common/index.d.ts +1 -0
  196. package/dist/types/events.d.ts +29 -0
  197. package/dist/types/graphs/Graph.d.ts +122 -0
  198. package/dist/types/graphs/index.d.ts +1 -0
  199. package/dist/types/index.d.ts +13 -0
  200. package/dist/types/instrumentation.d.ts +1 -0
  201. package/dist/types/llm/anthropic/index.d.ts +39 -0
  202. package/dist/types/llm/anthropic/types.d.ts +37 -0
  203. package/dist/types/llm/anthropic/utils/message_inputs.d.ts +14 -0
  204. package/dist/types/llm/anthropic/utils/message_outputs.d.ts +14 -0
  205. package/dist/types/llm/anthropic/utils/output_parsers.d.ts +22 -0
  206. package/dist/types/llm/anthropic/utils/tools.d.ts +3 -0
  207. package/dist/types/llm/fake.d.ts +31 -0
  208. package/dist/types/llm/google/index.d.ts +14 -0
  209. package/dist/types/llm/google/types.d.ts +32 -0
  210. package/dist/types/llm/google/utils/common.d.ts +19 -0
  211. package/dist/types/llm/google/utils/tools.d.ts +10 -0
  212. package/dist/types/llm/google/utils/zod_to_genai_parameters.d.ts +14 -0
  213. package/dist/types/llm/ollama/index.d.ts +8 -0
  214. package/dist/types/llm/ollama/utils.d.ts +7 -0
  215. package/dist/types/llm/openai/index.d.ts +103 -0
  216. package/dist/types/llm/openai/types.d.ts +10 -0
  217. package/dist/types/llm/openai/utils/index.d.ts +20 -0
  218. package/dist/types/llm/openrouter/index.d.ts +12 -0
  219. package/dist/types/llm/providers.d.ts +5 -0
  220. package/dist/types/llm/text.d.ts +21 -0
  221. package/dist/types/llm/vertexai/index.d.ts +293 -0
  222. package/dist/types/messages/core.d.ts +14 -0
  223. package/dist/types/messages/format.d.ts +113 -0
  224. package/dist/types/messages/ids.d.ts +3 -0
  225. package/dist/types/messages/index.d.ts +4 -0
  226. package/dist/types/messages/prune.d.ts +51 -0
  227. package/dist/types/mockStream.d.ts +32 -0
  228. package/dist/types/prompts/collab.d.ts +1 -0
  229. package/dist/types/prompts/index.d.ts +2 -0
  230. package/dist/types/prompts/taskmanager.d.ts +41 -0
  231. package/dist/types/run.d.ts +30 -0
  232. package/dist/types/scripts/abort.d.ts +1 -0
  233. package/dist/types/scripts/ant_web_search.d.ts +1 -0
  234. package/dist/types/scripts/args.d.ts +7 -0
  235. package/dist/types/scripts/caching.d.ts +1 -0
  236. package/dist/types/scripts/cli.d.ts +1 -0
  237. package/dist/types/scripts/cli2.d.ts +1 -0
  238. package/dist/types/scripts/cli3.d.ts +1 -0
  239. package/dist/types/scripts/cli4.d.ts +1 -0
  240. package/dist/types/scripts/cli5.d.ts +1 -0
  241. package/dist/types/scripts/code_exec.d.ts +1 -0
  242. package/dist/types/scripts/code_exec_files.d.ts +1 -0
  243. package/dist/types/scripts/code_exec_simple.d.ts +1 -0
  244. package/dist/types/scripts/content.d.ts +1 -0
  245. package/dist/types/scripts/empty_input.d.ts +1 -0
  246. package/dist/types/scripts/image.d.ts +1 -0
  247. package/dist/types/scripts/memory.d.ts +1 -0
  248. package/dist/types/scripts/search.d.ts +1 -0
  249. package/dist/types/scripts/simple.d.ts +1 -0
  250. package/dist/types/scripts/stream.d.ts +1 -0
  251. package/dist/types/scripts/thinking.d.ts +1 -0
  252. package/dist/types/scripts/tools.d.ts +1 -0
  253. package/dist/types/specs/spec.utils.d.ts +1 -0
  254. package/dist/types/splitStream.d.ts +37 -0
  255. package/dist/types/stream.d.ts +14 -0
  256. package/dist/types/tools/CodeExecutor.d.ts +23 -0
  257. package/dist/types/tools/ToolNode.d.ts +22 -0
  258. package/dist/types/tools/example.d.ts +78 -0
  259. package/dist/types/tools/handlers.d.ts +19 -0
  260. package/dist/types/tools/search/anthropic.d.ts +16 -0
  261. package/dist/types/tools/search/content.d.ts +4 -0
  262. package/dist/types/tools/search/firecrawl.d.ts +54 -0
  263. package/dist/types/tools/search/format.d.ts +5 -0
  264. package/dist/types/tools/search/highlights.d.ts +13 -0
  265. package/dist/types/tools/search/index.d.ts +2 -0
  266. package/dist/types/tools/search/rerankers.d.ts +38 -0
  267. package/dist/types/tools/search/schema.d.ts +16 -0
  268. package/dist/types/tools/search/search.d.ts +8 -0
  269. package/dist/types/tools/search/serper-scraper.d.ts +59 -0
  270. package/dist/types/tools/search/test.d.ts +1 -0
  271. package/dist/types/tools/search/tool.d.ts +54 -0
  272. package/dist/types/tools/search/types.d.ts +591 -0
  273. package/dist/types/tools/search/utils.d.ts +10 -0
  274. package/dist/types/types/graph.d.ts +138 -0
  275. package/dist/types/types/index.d.ts +5 -0
  276. package/dist/types/types/llm.d.ts +102 -0
  277. package/dist/types/types/run.d.ts +74 -0
  278. package/dist/types/types/stream.d.ts +293 -0
  279. package/dist/types/types/tools.d.ts +61 -0
  280. package/dist/types/utils/graph.d.ts +2 -0
  281. package/dist/types/utils/index.d.ts +5 -0
  282. package/dist/types/utils/llm.d.ts +3 -0
  283. package/dist/types/utils/llmConfig.d.ts +3 -0
  284. package/dist/types/utils/logging.d.ts +1 -0
  285. package/dist/types/utils/misc.d.ts +7 -0
  286. package/dist/types/utils/run.d.ts +27 -0
  287. package/dist/types/utils/title.d.ts +4 -0
  288. package/dist/types/utils/tokens.d.ts +3 -0
  289. package/package.json +145 -0
  290. package/src/common/enum.ts +176 -0
  291. package/src/common/index.ts +2 -0
  292. package/src/events.ts +191 -0
  293. package/src/graphs/Graph.ts +846 -0
  294. package/src/graphs/index.ts +1 -0
  295. package/src/index.ts +24 -0
  296. package/src/instrumentation.ts +22 -0
  297. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  298. package/src/llm/anthropic/index.ts +413 -0
  299. package/src/llm/anthropic/llm.spec.ts +1442 -0
  300. package/src/llm/anthropic/types.ts +140 -0
  301. package/src/llm/anthropic/utils/message_inputs.ts +660 -0
  302. package/src/llm/anthropic/utils/message_outputs.ts +289 -0
  303. package/src/llm/anthropic/utils/output_parsers.ts +133 -0
  304. package/src/llm/anthropic/utils/tools.ts +29 -0
  305. package/src/llm/fake.ts +133 -0
  306. package/src/llm/google/index.ts +222 -0
  307. package/src/llm/google/types.ts +43 -0
  308. package/src/llm/google/utils/common.ts +660 -0
  309. package/src/llm/google/utils/tools.ts +160 -0
  310. package/src/llm/google/utils/zod_to_genai_parameters.ts +88 -0
  311. package/src/llm/ollama/index.ts +92 -0
  312. package/src/llm/ollama/utils.ts +193 -0
  313. package/src/llm/openai/index.ts +853 -0
  314. package/src/llm/openai/types.ts +24 -0
  315. package/src/llm/openai/utils/index.ts +918 -0
  316. package/src/llm/openai/utils/isReasoningModel.test.ts +90 -0
  317. package/src/llm/openrouter/index.ts +60 -0
  318. package/src/llm/providers.ts +57 -0
  319. package/src/llm/text.ts +94 -0
  320. package/src/llm/vertexai/index.ts +360 -0
  321. package/src/messages/core.ts +463 -0
  322. package/src/messages/format.ts +625 -0
  323. package/src/messages/formatAgentMessages.test.ts +917 -0
  324. package/src/messages/formatAgentMessages.tools.test.ts +400 -0
  325. package/src/messages/formatMessage.test.ts +693 -0
  326. package/src/messages/ids.ts +26 -0
  327. package/src/messages/index.ts +4 -0
  328. package/src/messages/prune.ts +567 -0
  329. package/src/messages/shiftIndexTokenCountMap.test.ts +81 -0
  330. package/src/mockStream.ts +99 -0
  331. package/src/prompts/collab.ts +6 -0
  332. package/src/prompts/index.ts +2 -0
  333. package/src/prompts/taskmanager.ts +61 -0
  334. package/src/proto/CollabGraph.ts +269 -0
  335. package/src/proto/TaskManager.ts +243 -0
  336. package/src/proto/collab.ts +200 -0
  337. package/src/proto/collab_design.ts +184 -0
  338. package/src/proto/collab_design_v2.ts +224 -0
  339. package/src/proto/collab_design_v3.ts +255 -0
  340. package/src/proto/collab_design_v4.ts +220 -0
  341. package/src/proto/collab_design_v5.ts +251 -0
  342. package/src/proto/collab_graph.ts +181 -0
  343. package/src/proto/collab_original.ts +123 -0
  344. package/src/proto/example.ts +93 -0
  345. package/src/proto/example_new.ts +68 -0
  346. package/src/proto/example_old.ts +201 -0
  347. package/src/proto/example_test.ts +152 -0
  348. package/src/proto/example_test_anthropic.ts +100 -0
  349. package/src/proto/log_stream.ts +202 -0
  350. package/src/proto/main_collab_community_event.ts +133 -0
  351. package/src/proto/main_collab_design_v2.ts +96 -0
  352. package/src/proto/main_collab_design_v4.ts +100 -0
  353. package/src/proto/main_collab_design_v5.ts +135 -0
  354. package/src/proto/main_collab_global_analysis.ts +122 -0
  355. package/src/proto/main_collab_hackathon_event.ts +153 -0
  356. package/src/proto/main_collab_space_mission.ts +153 -0
  357. package/src/proto/main_philosophy.ts +210 -0
  358. package/src/proto/original_script.ts +126 -0
  359. package/src/proto/standard.ts +100 -0
  360. package/src/proto/stream.ts +56 -0
  361. package/src/proto/tasks.ts +118 -0
  362. package/src/proto/tools/global_analysis_tools.ts +86 -0
  363. package/src/proto/tools/space_mission_tools.ts +60 -0
  364. package/src/proto/vertexai.ts +54 -0
  365. package/src/run.ts +381 -0
  366. package/src/scripts/abort.ts +138 -0
  367. package/src/scripts/ant_web_search.ts +158 -0
  368. package/src/scripts/args.ts +48 -0
  369. package/src/scripts/caching.ts +124 -0
  370. package/src/scripts/cli.ts +167 -0
  371. package/src/scripts/cli2.ts +125 -0
  372. package/src/scripts/cli3.ts +178 -0
  373. package/src/scripts/cli4.ts +184 -0
  374. package/src/scripts/cli5.ts +184 -0
  375. package/src/scripts/code_exec.ts +214 -0
  376. package/src/scripts/code_exec_files.ts +193 -0
  377. package/src/scripts/code_exec_simple.ts +129 -0
  378. package/src/scripts/content.ts +120 -0
  379. package/src/scripts/empty_input.ts +137 -0
  380. package/src/scripts/image.ts +178 -0
  381. package/src/scripts/memory.ts +97 -0
  382. package/src/scripts/search.ts +150 -0
  383. package/src/scripts/simple.ts +225 -0
  384. package/src/scripts/stream.ts +122 -0
  385. package/src/scripts/thinking.ts +150 -0
  386. package/src/scripts/tools.ts +155 -0
  387. package/src/specs/anthropic.simple.test.ts +317 -0
  388. package/src/specs/azure.simple.test.ts +316 -0
  389. package/src/specs/openai.simple.test.ts +316 -0
  390. package/src/specs/prune.test.ts +763 -0
  391. package/src/specs/reasoning.test.ts +165 -0
  392. package/src/specs/spec.utils.ts +3 -0
  393. package/src/specs/thinking-prune.test.ts +703 -0
  394. package/src/specs/token-distribution-edge-case.test.ts +316 -0
  395. package/src/specs/tool-error.test.ts +193 -0
  396. package/src/splitStream.test.ts +691 -0
  397. package/src/splitStream.ts +234 -0
  398. package/src/stream.test.ts +94 -0
  399. package/src/stream.ts +651 -0
  400. package/src/tools/CodeExecutor.ts +220 -0
  401. package/src/tools/ToolNode.ts +170 -0
  402. package/src/tools/example.ts +129 -0
  403. package/src/tools/handlers.ts +336 -0
  404. package/src/tools/search/anthropic.ts +51 -0
  405. package/src/tools/search/content.test.ts +173 -0
  406. package/src/tools/search/content.ts +147 -0
  407. package/src/tools/search/firecrawl.ts +210 -0
  408. package/src/tools/search/format.ts +250 -0
  409. package/src/tools/search/highlights.ts +320 -0
  410. package/src/tools/search/index.ts +2 -0
  411. package/src/tools/search/jina-reranker.test.ts +126 -0
  412. package/src/tools/search/output.md +2775 -0
  413. package/src/tools/search/rerankers.ts +242 -0
  414. package/src/tools/search/schema.ts +63 -0
  415. package/src/tools/search/search.ts +759 -0
  416. package/src/tools/search/serper-scraper.ts +155 -0
  417. package/src/tools/search/test.html +884 -0
  418. package/src/tools/search/test.md +643 -0
  419. package/src/tools/search/test.ts +159 -0
  420. package/src/tools/search/tool.ts +471 -0
  421. package/src/tools/search/types.ts +687 -0
  422. package/src/tools/search/utils.ts +79 -0
  423. package/src/types/graph.ts +185 -0
  424. package/src/types/index.ts +6 -0
  425. package/src/types/llm.ts +140 -0
  426. package/src/types/run.ts +89 -0
  427. package/src/types/stream.ts +400 -0
  428. package/src/types/tools.ts +80 -0
  429. package/src/utils/graph.ts +11 -0
  430. package/src/utils/index.ts +5 -0
  431. package/src/utils/llm.ts +27 -0
  432. package/src/utils/llmConfig.ts +183 -0
  433. package/src/utils/logging.ts +48 -0
  434. package/src/utils/misc.ts +57 -0
  435. package/src/utils/run.ts +101 -0
  436. package/src/utils/title.ts +165 -0
  437. package/src/utils/tokens.ts +70 -0
@@ -0,0 +1,400 @@
1
+ // src/types/stream.ts
2
+ import type OpenAITypes from 'openai';
3
+ import type {
4
+ MessageContentImageUrl,
5
+ MessageContentText,
6
+ ToolMessage,
7
+ BaseMessage,
8
+ } from '@langchain/core/messages';
9
+ import type { ToolCall, ToolCallChunk } from '@langchain/core/messages/tool';
10
+ import type { LLMResult, Generation } from '@langchain/core/outputs';
11
+ import type { AnthropicContentBlock } from '@/llm/anthropic/types';
12
+ import type { ToolEndEvent } from '@/types/tools';
13
+ import { StepTypes, ContentTypes, GraphEvents } from '@/common/enum';
14
+
15
+ export type HandleLLMEnd = (
16
+ output: LLMResult,
17
+ runId: string,
18
+ parentRunId?: string,
19
+ tags?: string[]
20
+ ) => void;
21
+
22
+ export type MetadataAggregatorResult = {
23
+ handleLLMEnd: HandleLLMEnd;
24
+ collected: Record<string, unknown>[];
25
+ };
26
+
27
+ export type StreamGeneration = Generation & {
28
+ text?: string;
29
+ message?: BaseMessage;
30
+ };
31
+
32
+ /** Event names are of the format: on_[runnable_type]_(start|stream|end).
33
+
34
+ Runnable types are one of:
35
+
36
+ llm - used by non chat models
37
+ chat_model - used by chat models
38
+ prompt -- e.g., ChatPromptTemplate
39
+ tool -- LangChain tools
40
+ chain - most Runnables are of this type
41
+ Further, the events are categorized as one of:
42
+
43
+ start - when the runnable starts
44
+ stream - when the runnable is streaming
45
+ end - when the runnable ends
46
+ start, stream and end are associated with slightly different data payload.
47
+
48
+ Please see the documentation for EventData for more details. */
49
+ export type EventName = string;
50
+
51
+ export type RunStep = {
52
+ // id: string;
53
+ // object: 'thread.run.step'; // Updated from 'run.step' # missing
54
+ // created_at: number;
55
+ // run_id: string;
56
+ // assistant_id: string;
57
+ // thread_id: string;
58
+ type: StepTypes;
59
+ // status: 'in_progress' | 'completed' | 'failed' | 'cancelled'; // Add other possible status values if needed
60
+ // cancelled_at: number | null;
61
+ // completed_at: number | null;
62
+ // expires_at: number;
63
+ // failed_at: number | null;
64
+ // last_error: string | null;
65
+ id: string; // #new
66
+ runId?: string; // #new
67
+ index: number; // #new
68
+ stepIndex?: number; // #new
69
+ stepDetails: StepDetails;
70
+ usage?: null | object;
71
+ // {
72
+ // Define usage structure if it's ever non-null
73
+ // prompt_tokens: number; // #new
74
+ // completion_tokens: number; // #new
75
+ // total_tokens: number; // #new
76
+ // };
77
+ };
78
+
79
+ /**
80
+ * Represents a run step delta i.e. any changed fields on a run step during
81
+ * streaming.
82
+ */
83
+ export interface RunStepDeltaEvent {
84
+ /**
85
+ * The identifier of the run step, which can be referenced in API endpoints.
86
+ */
87
+ id: string;
88
+ /**
89
+ * The delta containing the fields that have changed on the run step.
90
+ */
91
+ delta: ToolCallDelta;
92
+ }
93
+
94
+ export type StepDetails = MessageCreationDetails | ToolCallsDetails;
95
+
96
+ export type StepCompleted = ToolCallCompleted;
97
+
98
+ export type MessageCreationDetails = {
99
+ type: StepTypes.MESSAGE_CREATION;
100
+ message_creation: {
101
+ message_id: string;
102
+ };
103
+ };
104
+
105
+ export type ToolEndData = {
106
+ input: string | Record<string, unknown>;
107
+ output?: ToolMessage;
108
+ };
109
+ export type ToolErrorData = {
110
+ id: string;
111
+ name: string;
112
+ error?: Error;
113
+ } & Pick<ToolEndData, 'input'>;
114
+ export type ToolEndCallback = (
115
+ data: ToolEndData,
116
+ metadata?: Record<string, unknown>
117
+ ) => void;
118
+
119
+ export type ProcessedToolCall = {
120
+ name: string;
121
+ args: string | Record<string, unknown>;
122
+ id: string;
123
+ output: string;
124
+ progress: number;
125
+ };
126
+
127
+ export type ProcessedContent = {
128
+ type: ContentType;
129
+ text?: string;
130
+ tool_call?: ProcessedToolCall;
131
+ };
132
+
133
+ export type ToolCallCompleted = {
134
+ type: 'tool_call';
135
+ tool_call: ProcessedToolCall;
136
+ };
137
+
138
+ export type ToolCompleteEvent = ToolCallCompleted & {
139
+ /** The Step Id of the Tool Call */
140
+ id: string;
141
+ /** The content index of the tool call */
142
+ index: number;
143
+ type: 'tool_call';
144
+ };
145
+
146
+ export type ToolCallsDetails = {
147
+ type: StepTypes.TOOL_CALLS;
148
+ tool_calls?: AgentToolCall[]; // #new
149
+ };
150
+
151
+ export type ToolCallDelta = {
152
+ type: StepTypes;
153
+ tool_calls?: ToolCallChunk[]; // #new
154
+ };
155
+
156
+ export type AgentToolCall =
157
+ | {
158
+ id: string; // #new
159
+ type: 'function'; // #new
160
+ function: {
161
+ name: string; // #new
162
+ arguments: string | object; // JSON string // #new
163
+ };
164
+ }
165
+ | ToolCall;
166
+
167
+ export interface ExtendedMessageContent {
168
+ type?: string;
169
+ text?: string;
170
+ input?: string;
171
+ index?: number;
172
+ id?: string;
173
+ name?: string;
174
+ }
175
+
176
+ export type AgentUpdate = {
177
+ type: ContentTypes.AGENT_UPDATE;
178
+ agent_update: {
179
+ index: number;
180
+ runId: string;
181
+ agentId: string;
182
+ };
183
+ };
184
+
185
+ /**
186
+ * Represents a message delta i.e. any changed fields on a message during
187
+ * streaming.
188
+ */
189
+ export interface MessageDeltaEvent {
190
+ /**
191
+ * The identifier of the message, which can be referenced in API endpoints.
192
+ */
193
+ id: string;
194
+
195
+ /**
196
+ * The delta containing the fields that have changed on the Message.
197
+ */
198
+ delta: MessageDelta;
199
+ }
200
+
201
+ /**
202
+ * The delta containing the fields that have changed on the Message.
203
+ */
204
+ export interface MessageDelta {
205
+ /**
206
+ * The content of the message in array of text and/or images.
207
+ */
208
+ content?: MessageContentComplex[];
209
+ /**
210
+ * The tool call ids associated with the message.
211
+ */
212
+ tool_call_ids?: string[];
213
+ }
214
+
215
+ /**
216
+ * Represents a reasoning delta i.e. any changed fields on a message during
217
+ * streaming.
218
+ */
219
+ export interface ReasoningDeltaEvent {
220
+ /**
221
+ * The identifier of the message, which can be referenced in API endpoints.
222
+ */
223
+ id: string;
224
+
225
+ /**
226
+ * The delta containing the fields that have changed.
227
+ */
228
+ delta: ReasoningDelta;
229
+ }
230
+
231
+ /**
232
+ * The reasoning delta containing the fields that have changed on the Message.
233
+ */
234
+ export interface ReasoningDelta {
235
+ /**
236
+ * The content of the message in array of text and/or images.
237
+ */
238
+ content?: MessageContentComplex[];
239
+ }
240
+
241
+ export type MessageDeltaUpdate = {
242
+ type: ContentTypes.TEXT;
243
+ text: string;
244
+ tool_call_ids?: string[];
245
+ };
246
+ export type ReasoningDeltaUpdate = { type: ContentTypes.THINK; think: string };
247
+
248
+ export type ContentType = 'text' | 'image_url' | 'tool_call' | 'think' | string;
249
+
250
+ export type ReasoningContentText = {
251
+ type: ContentTypes.THINK;
252
+ think: string;
253
+ };
254
+
255
+ /** Vertex AI / Google Common - Reasoning Content Block Format */
256
+ export type GoogleReasoningContentText = {
257
+ type: ContentTypes.REASONING;
258
+ reasoning: string;
259
+ };
260
+
261
+ /** Anthropic's Reasoning Content Block Format */
262
+ export type ThinkingContentText = {
263
+ type: ContentTypes.THINKING;
264
+ index?: number;
265
+ signature?: string;
266
+ thinking?: string;
267
+ };
268
+
269
+ /** Bedrock's Reasoning Content Block Format */
270
+ export type BedrockReasoningContentText = {
271
+ type: ContentTypes.REASONING_CONTENT;
272
+ index?: number;
273
+ reasoningText: { text?: string; signature?: string };
274
+ };
275
+
276
+ /**
277
+ * A call to a tool.
278
+ */
279
+ export type ToolCallPart = {
280
+ /** Type ("tool_call") according to Assistants Tool Call Structure */
281
+ type: ContentTypes.TOOL_CALL;
282
+ /** The name of the tool to be called */
283
+ name: string;
284
+ /** The arguments to the tool call */
285
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
286
+ args?: string | Record<string, any>;
287
+
288
+ /** If provided, an identifier associated with the tool call */
289
+ id?: string;
290
+ /** If provided, the output of the tool call */
291
+ output?: string;
292
+ /** Auth URL */
293
+ auth?: string;
294
+ /** Expiration time */
295
+ expires_at?: number;
296
+ };
297
+
298
+ export type ToolCallContent = {
299
+ type: ContentTypes.TOOL_CALL;
300
+ tool_call?: ToolCallPart;
301
+ };
302
+
303
+ export type ToolResultContent = {
304
+ content:
305
+ | string
306
+ | Record<string, unknown>
307
+ | Array<string | Record<string, unknown>>
308
+ | AnthropicContentBlock[];
309
+ type: 'tool_result' | 'web_search_result' | 'web_search_tool_result';
310
+ tool_use_id?: string;
311
+ input?: string | Record<string, unknown>;
312
+ index?: number;
313
+ };
314
+
315
+ export type MessageContentComplex = (
316
+ | ToolResultContent
317
+ | ThinkingContentText
318
+ | AgentUpdate
319
+ | ToolCallContent
320
+ | ReasoningContentText
321
+ | MessageContentText
322
+ | MessageContentImageUrl
323
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
324
+ | (Record<string, any> & {
325
+ type?: 'text' | 'image_url' | 'think' | 'thinking' | string;
326
+ })
327
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
328
+ | (Record<string, any> & {
329
+ type?: never;
330
+ })
331
+ ) & {
332
+ tool_call_ids?: string[];
333
+ };
334
+
335
+ export interface TMessage {
336
+ role?: string;
337
+ content?: MessageContentComplex[] | string;
338
+ [key: string]: unknown;
339
+ }
340
+
341
+ export type TPayload = Array<Partial<TMessage>>;
342
+
343
+ export type CustomChunkDelta =
344
+ | null
345
+ | undefined
346
+ | (Partial<OpenAITypes.Chat.Completions.ChatCompletionChunk.Choice.Delta> & {
347
+ reasoning?: string | null;
348
+ reasoning_content?: string | null;
349
+ });
350
+ export type CustomChunkChoice = Partial<
351
+ Omit<OpenAITypes.Chat.Completions.ChatCompletionChunk.Choice, 'delta'> & {
352
+ delta?: CustomChunkDelta;
353
+ }
354
+ >;
355
+ export type CustomChunk = Partial<OpenAITypes.ChatCompletionChunk> & {
356
+ choices?: Partial<Array<CustomChunkChoice>>;
357
+ };
358
+
359
+ export type SplitStreamHandlers = Partial<{
360
+ [GraphEvents.ON_RUN_STEP]: ({
361
+ event,
362
+ data,
363
+ }: {
364
+ event: GraphEvents;
365
+ data: RunStep;
366
+ }) => void;
367
+ [GraphEvents.ON_MESSAGE_DELTA]: ({
368
+ event,
369
+ data,
370
+ }: {
371
+ event: GraphEvents;
372
+ data: MessageDeltaEvent;
373
+ }) => void;
374
+ [GraphEvents.ON_REASONING_DELTA]: ({
375
+ event,
376
+ data,
377
+ }: {
378
+ event: GraphEvents;
379
+ data: ReasoningDeltaEvent;
380
+ }) => void;
381
+ }>;
382
+
383
+ export type ContentAggregator = ({
384
+ event,
385
+ data,
386
+ }: {
387
+ event: GraphEvents;
388
+ data:
389
+ | RunStep
390
+ | MessageDeltaEvent
391
+ | RunStepDeltaEvent
392
+ | {
393
+ result: ToolEndEvent;
394
+ };
395
+ }) => void;
396
+ export type ContentAggregatorResult = {
397
+ stepMap: Map<string, RunStep | undefined>;
398
+ contentParts: Array<MessageContentComplex | undefined>;
399
+ aggregateContent: ContentAggregator;
400
+ };
@@ -0,0 +1,80 @@
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
+
20
+ export type ToolMap = Map<string, GenericTool>;
21
+ export type ToolRefs = {
22
+ tools: GenericTool[];
23
+ toolMap?: ToolMap;
24
+ };
25
+
26
+ export type ToolRefGenerator = (tool_calls: ToolCall[]) => ToolRefs;
27
+
28
+ export type ToolNodeOptions = {
29
+ name?: string;
30
+ tags?: string[];
31
+ handleToolErrors?: boolean;
32
+ loadRuntimeTools?: ToolRefGenerator;
33
+ toolCallStepIds?: Map<string, string>;
34
+ errorHandler?: (
35
+ data: ToolErrorData,
36
+ metadata?: Record<string, unknown>
37
+ ) => void;
38
+ };
39
+
40
+ export type ToolNodeConstructorParams = ToolRefs & ToolNodeOptions;
41
+
42
+ export type ToolEndEvent = {
43
+ /** The Step Id of the Tool Call */
44
+ id: string;
45
+ /** The Completed Tool Call */
46
+ tool_call: ToolCall;
47
+ /** The content index of the tool call */
48
+ index: number;
49
+ };
50
+
51
+ export type CodeEnvFile = {
52
+ id: string;
53
+ name: string;
54
+ session_id: string;
55
+ };
56
+
57
+ export type CodeExecutionToolParams =
58
+ | undefined
59
+ | {
60
+ session_id?: string;
61
+ user_id?: string;
62
+ apiKey?: string;
63
+ files?: CodeEnvFile[];
64
+ [EnvVar.CODE_API_KEY]?: string;
65
+ };
66
+
67
+ export type FileRef = {
68
+ id: string;
69
+ name: string;
70
+ path?: string;
71
+ };
72
+
73
+ export type FileRefs = FileRef[];
74
+
75
+ export type ExecuteResult = {
76
+ session_id: string;
77
+ stdout: string;
78
+ stderr: string;
79
+ files?: FileRefs;
80
+ };
@@ -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,5 @@
1
+ export * from './graph';
2
+ export * from './llm';
3
+ export * from './misc';
4
+ export * from './run';
5
+ export * from './tokens';
@@ -0,0 +1,27 @@
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
+ Providers.OLLAMA,
16
+ ] as string[]
17
+ ).includes(provider);
18
+ }
19
+
20
+ export function isGoogleLike(provider?: string | Providers): boolean {
21
+ if (provider == null) {
22
+ return false;
23
+ }
24
+ return ([Providers.GOOGLE, Providers.VERTEXAI] as string[]).includes(
25
+ provider
26
+ );
27
+ }
@@ -0,0 +1,183 @@
1
+ // src/utils/llmConfig.ts
2
+ import { Providers } from '@/common';
3
+ import type * as or from '@/llm/openrouter';
4
+ import type * as t from '@/types';
5
+
6
+ export const llmConfigs: Record<string, t.LLMConfig | undefined> = {
7
+ [Providers.OPENAI]: {
8
+ provider: Providers.OPENAI,
9
+ model: 'gpt-4.1',
10
+ temperature: 0.7,
11
+ streaming: true,
12
+ streamUsage: true,
13
+ // disableStreaming: true,
14
+ },
15
+ anthropicLITELLM: {
16
+ provider: Providers.OPENAI,
17
+ streaming: true,
18
+ streamUsage: false,
19
+ apiKey: 'sk-1234',
20
+ model: 'claude-sonnet-4',
21
+ maxTokens: 8192,
22
+ modelKwargs: {
23
+ metadata: {
24
+ user_id: 'some_user_id',
25
+ },
26
+ thinking: {
27
+ type: 'enabled',
28
+ budget_tokens: 2000,
29
+ },
30
+ },
31
+ configuration: {
32
+ baseURL: 'http://host.docker.internal:4000/v1',
33
+ defaultHeaders: {
34
+ 'anthropic-beta': 'prompt-caching-2024-07-31,context-1m-2025-08-07',
35
+ },
36
+ },
37
+ // disableStreaming: true,
38
+ },
39
+ [Providers.XAI]: {
40
+ provider: Providers.XAI,
41
+ model: 'grok-2-latest',
42
+ streaming: true,
43
+ streamUsage: true,
44
+ },
45
+ alibaba: {
46
+ provider: Providers.OPENAI,
47
+ streaming: true,
48
+ streamUsage: true,
49
+ model: 'qwen-max',
50
+ openAIApiKey: process.env.ALIBABA_API_KEY,
51
+ configuration: {
52
+ baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
53
+ },
54
+ },
55
+ [Providers.OPENROUTER]: {
56
+ provider: Providers.OPENROUTER,
57
+ streaming: true,
58
+ streamUsage: true,
59
+ model: 'deepseek/deepseek-r1',
60
+ openAIApiKey: process.env.OPENROUTER_API_KEY,
61
+ configuration: {
62
+ baseURL: process.env.OPENROUTER_BASE_URL,
63
+ defaultHeaders: {
64
+ 'HTTP-Referer': 'https://gaavi.ai',
65
+ 'X-Title': 'Illuma',
66
+ },
67
+ },
68
+ include_reasoning: true,
69
+ } as or.ChatOpenRouterCallOptions & t.LLMConfig,
70
+ [Providers.AZURE]: {
71
+ provider: Providers.AZURE,
72
+ temperature: 0.7,
73
+ streaming: true,
74
+ streamUsage: true,
75
+ azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
76
+ azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE,
77
+ azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT,
78
+ azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION,
79
+ model: process.env.AZURE_MODEL_NAME ?? 'gpt-4o',
80
+ },
81
+ [Providers.OLLAMA]: {
82
+ provider: Providers.OLLAMA,
83
+ model: 'gpt-oss:20b',
84
+ streaming: true,
85
+ streamUsage: true,
86
+ baseUrl: 'http://localhost:11434',
87
+ },
88
+ lmstudio: {
89
+ provider: Providers.OPENAI,
90
+ model: 'gpt-oss-20b',
91
+ streaming: true,
92
+ streamUsage: true,
93
+ configuration: {
94
+ baseURL: 'http://192.168.254.183:1233/v1',
95
+ },
96
+ },
97
+ zhipu: {
98
+ provider: Providers.OPENAI,
99
+ streaming: true,
100
+ streamUsage: false,
101
+ model: 'glm-4.5-air',
102
+ apiKey: process.env.ZHIPU_API_KEY,
103
+ configuration: {
104
+ baseURL: 'https://open.bigmodel.cn/api/paas/v4',
105
+ },
106
+ },
107
+ [Providers.DEEPSEEK]: {
108
+ provider: Providers.DEEPSEEK,
109
+ model: 'deepseek-reasoner',
110
+ streaming: true,
111
+ streamUsage: true,
112
+ },
113
+ [Providers.ANTHROPIC]: {
114
+ provider: Providers.ANTHROPIC,
115
+ model: 'claude-sonnet-4-5',
116
+ streaming: true,
117
+ streamUsage: true,
118
+ },
119
+ // [Providers.MISTRALAI]: {
120
+ // provider: Providers.MISTRALAI,
121
+ // model: 'mistral-large-latest',
122
+ // streaming: true,
123
+ // streamUsage: true,
124
+ // },
125
+ [Providers.MISTRAL]: {
126
+ provider: Providers.OPENAI,
127
+ streaming: true,
128
+ streamUsage: false,
129
+ // model: 'codestral-latest',
130
+ model: 'mistral-large-latest',
131
+ openAIApiKey: process.env.MISTRAL_API_KEY,
132
+ configuration: {
133
+ baseURL: 'https://api.mistral.ai/v1',
134
+ defaultHeaders: {},
135
+ },
136
+ },
137
+ [Providers.VERTEXAI]: {
138
+ provider: Providers.VERTEXAI,
139
+ model: 'gemini-2.5-flash',
140
+ streaming: true,
141
+ streamUsage: true,
142
+ keyFile: process.env.VERTEXAI_KEY_FILE,
143
+ } as t.VertexAIClientOptions & t.LLMConfig,
144
+ [Providers.GOOGLE]: {
145
+ provider: Providers.GOOGLE,
146
+ model: 'gemini-2.5-flash',
147
+ streaming: true,
148
+ streamUsage: true,
149
+ },
150
+ [Providers.BEDROCK]: {
151
+ provider: Providers.BEDROCK,
152
+ // model: 'anthropic.claude-3-sonnet-20240229-v1:0',
153
+ // model: 'us.anthropic.claude-3-5-sonnet-20241022-v2:0',
154
+ // model: 'us.amazon.nova-pro-v1:0',
155
+ model: 'us.anthropic.claude-sonnet-4-20250514-v1:0',
156
+ // additionalModelRequestFields: { thinking: { type: 'enabled', budget_tokens: 2000 } },
157
+ region: process.env.BEDROCK_AWS_REGION,
158
+ credentials: {
159
+ accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
160
+ secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
161
+ },
162
+ streaming: true,
163
+ streamUsage: true,
164
+ },
165
+ perplexity: {
166
+ provider: Providers.OPENAI,
167
+ model: 'llama-3.1-sonar-small-128k-online',
168
+ streaming: true,
169
+ streamUsage: true,
170
+ apiKey: process.env.PERPLEXITY_API_KEY,
171
+ configuration: {
172
+ baseURL: 'https://api.perplexity.ai/',
173
+ },
174
+ },
175
+ };
176
+
177
+ export function getLLMConfig(provider: string): t.LLMConfig {
178
+ const config = llmConfigs[provider];
179
+ if (config === undefined) {
180
+ throw new Error(`Unsupported provider: ${provider}`);
181
+ }
182
+ return config;
183
+ }