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,184 @@
1
+ /* eslint-disable no-console */
2
+ // src/scripts/cli.ts
3
+ import { config } from 'dotenv';
4
+ config();
5
+ import { HumanMessage, BaseMessage } from '@langchain/core/messages';
6
+ import { TavilySearchResults } from '@langchain/community/tools/tavily_search';
7
+ import type * as t from '@/types';
8
+ import { ModelEndHandler, ToolEndHandler } from '@/events';
9
+ import { ChatModelStreamHandler } from '@/stream';
10
+
11
+
12
+ import { getArgs } from '@/scripts/args';
13
+ import { Run } from '@/run';
14
+ import { GraphEvents, Callback, Providers } from '@/common';
15
+ import { getLLMConfig } from '@/utils/llmConfig';
16
+
17
+ const conversationHistory: BaseMessage[] = [];
18
+ async function testStandardStreaming(): Promise<void> {
19
+ const { userName, location, provider, currentDate } = await getArgs();
20
+ const customHandlers = {
21
+ [GraphEvents.TOOL_END]: new ToolEndHandler(),
22
+ [GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
23
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
24
+ [GraphEvents.ON_RUN_STEP_COMPLETED]: {
25
+ handle: (_event: string, data: t.StreamEventData): void => {
26
+ console.log('====== ON_RUN_STEP_COMPLETED ======');
27
+ console.dir(data, { depth: null });
28
+ }
29
+ },
30
+ [GraphEvents.ON_RUN_STEP]: {
31
+ handle: (_event: string, data: t.StreamEventData): void => {
32
+ console.log('====== ON_RUN_STEP ======');
33
+ console.dir(data, { depth: null });
34
+ }
35
+ },
36
+ [GraphEvents.ON_RUN_STEP_DELTA]: {
37
+ handle: (_event: string, data: t.StreamEventData): void => {
38
+ console.log('====== ON_RUN_STEP_DELTA ======');
39
+ console.dir(data, { depth: null });
40
+ }
41
+ },
42
+ [GraphEvents.ON_MESSAGE_DELTA]: {
43
+ handle: (_event: string, data: t.StreamEventData): void => {
44
+ console.log('====== ON_MESSAGE_DELTA ======');
45
+ console.dir(data, { depth: null });
46
+ }
47
+ },
48
+ [GraphEvents.TOOL_START]: {
49
+ handle: (_event: string, data: t.StreamEventData, metadata?: Record<string, unknown>): void => {
50
+ console.log('====== TOOL_START ======');
51
+ console.dir(data, { depth: null });
52
+ }
53
+ },
54
+ // [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
55
+ // [GraphEvents.LLM_START]: {
56
+ // handle: (_event: string, data: t.StreamEventData): void => {
57
+ // console.log('====== LLM_START ======');
58
+ // console.dir(data, { depth: null });
59
+ // }
60
+ // },
61
+ // [GraphEvents.LLM_END]: {
62
+ // handle: (_event: string, data: t.StreamEventData): void => {
63
+ // console.log('====== LLM_END ======');
64
+ // console.dir(data, { depth: null });
65
+ // }
66
+ // },
67
+ /*
68
+ [GraphEvents.CHAIN_START]: {
69
+ handle: (_event: string, data: t.StreamEventData): void => {
70
+ console.log('====== CHAIN_START ======');
71
+ // console.dir(data, { depth: null });
72
+ }
73
+ },
74
+ [GraphEvents.CHAIN_END]: {
75
+ handle: (_event: string, data: t.StreamEventData): void => {
76
+ console.log('====== CHAIN_END ======');
77
+ // console.dir(data, { depth: null });
78
+ }
79
+ },
80
+ */
81
+ // [GraphEvents.CHAT_MODEL_START]: {
82
+ // handle: (_event: string, _data: t.StreamEventData): void => {
83
+ // console.log('====== CHAT_MODEL_START ======');
84
+ // console.dir(_data, { depth: null });
85
+ // // Intentionally left empty
86
+ // }
87
+ // },
88
+ };
89
+
90
+ // const llmConfig = getLLMConfig(provider);
91
+ let llmConfig = getLLMConfig(Providers.OPENAI);
92
+
93
+ const graphConfig: t.StandardGraphConfig = {
94
+ type: 'standard',
95
+ llmConfig,
96
+ tools: [new TavilySearchResults()],
97
+ instructions: 'You are a friendly AI assistant. Always address the user by their name.',
98
+ additional_instructions: `The user's name is ${userName} and they are located in ${location}.`,
99
+ };
100
+
101
+ let run = await Run.create<t.IState>({
102
+ runId: 'test-run-id',
103
+ graphConfig,
104
+ customHandlers,
105
+ });
106
+
107
+ const config = {
108
+ configurable: {
109
+ provider,
110
+ thread_id: 'conversation-num-1',
111
+ },
112
+ streamMode: 'values',
113
+ version: 'v2' as const,
114
+ };
115
+
116
+ console.log(' Test 1: OpenAI Tool Usage');
117
+
118
+ // conversationHistory.push(new HumanMessage(`Hi I'm ${userName}.`));
119
+ conversationHistory.push(new HumanMessage(`search for good sunrise hikes near ${location}
120
+ then search weather in ${location} for today which is ${currentDate}`));
121
+ let inputs = {
122
+ messages: conversationHistory,
123
+ };
124
+ const contentParts = await run.processStream(inputs, config,
125
+ // {
126
+ // [Callback.TOOL_START]: (graph, ...args) => {
127
+ // console.log('TOOL_START callback');
128
+ // },
129
+ // [Callback.TOOL_END]: (graph, ...args) => {
130
+ // console.log('TOOL_END callback');
131
+ // },
132
+ // }
133
+ );
134
+ const finalMessages = run.getRunMessages();
135
+ if (finalMessages) {
136
+ conversationHistory.push(...finalMessages);
137
+ }
138
+
139
+ console.log(' Test 2: Anthropic Follow-up Response');
140
+
141
+ // const userMessage = `
142
+ // Make a search for the weather in ${location} today, which is ${currentDate}.
143
+ // Make sure to always refer to me by name.
144
+ // After giving me a thorough summary, tell me a joke about the weather forecast we went over.
145
+ // `;
146
+ const userMessage = `Thanks!`;
147
+
148
+ conversationHistory.push(new HumanMessage(userMessage));
149
+
150
+ inputs = {
151
+ messages: conversationHistory,
152
+ };
153
+
154
+ llmConfig = getLLMConfig(Providers.ANTHROPIC);
155
+ graphConfig.llmConfig = llmConfig;
156
+ config.configurable.provider = Providers.ANTHROPIC;
157
+
158
+ run = await Run.create<t.IState>({
159
+ runId: 'test-run-id',
160
+ graphConfig,
161
+ customHandlers,
162
+ });
163
+
164
+ const contentParts2 = await run.processStream(inputs, config);
165
+ const finalMessages2 = run.getRunMessages();
166
+ if (finalMessages2) {
167
+ conversationHistory.push(...finalMessages2);
168
+ // console.dir(conversationHistory, { depth: null });
169
+ }
170
+ }
171
+
172
+ process.on('unhandledRejection', (reason, promise) => {
173
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
174
+ console.log('Conversation history:');
175
+ console.dir(conversationHistory, { depth: null });
176
+ process.exit(1);
177
+ });
178
+
179
+ testStandardStreaming().catch((err) => {
180
+ console.error(err);
181
+ console.log('Conversation history:');
182
+ console.dir(conversationHistory, { depth: null });
183
+ process.exit(1);
184
+ });
@@ -0,0 +1,184 @@
1
+ /* eslint-disable no-console */
2
+ // src/scripts/cli.ts
3
+ import { config } from 'dotenv';
4
+ config();
5
+ import { HumanMessage, BaseMessage } from '@langchain/core/messages';
6
+ import { TavilySearchResults } from '@langchain/community/tools/tavily_search';
7
+ import type * as t from '@/types';
8
+ import { ModelEndHandler, ToolEndHandler } from '@/events';
9
+ import { ChatModelStreamHandler } from '@/stream';
10
+
11
+
12
+ import { getArgs } from '@/scripts/args';
13
+ import { Run } from '@/run';
14
+ import { GraphEvents, Callback, Providers } from '@/common';
15
+ import { getLLMConfig } from '@/utils/llmConfig';
16
+
17
+ const conversationHistory: BaseMessage[] = [];
18
+ async function testStandardStreaming(): Promise<void> {
19
+ const { userName, location, provider, currentDate } = await getArgs();
20
+ const customHandlers = {
21
+ [GraphEvents.TOOL_END]: new ToolEndHandler(),
22
+ [GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
23
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
24
+ [GraphEvents.ON_RUN_STEP_COMPLETED]: {
25
+ handle: (_event: string, data: t.StreamEventData): void => {
26
+ console.log('====== ON_RUN_STEP_COMPLETED ======');
27
+ console.dir(data, { depth: null });
28
+ }
29
+ },
30
+ [GraphEvents.ON_RUN_STEP]: {
31
+ handle: (_event: string, data: t.StreamEventData): void => {
32
+ console.log('====== ON_RUN_STEP ======');
33
+ console.dir(data, { depth: null });
34
+ }
35
+ },
36
+ [GraphEvents.ON_RUN_STEP_DELTA]: {
37
+ handle: (_event: string, data: t.StreamEventData): void => {
38
+ console.log('====== ON_RUN_STEP_DELTA ======');
39
+ console.dir(data, { depth: null });
40
+ }
41
+ },
42
+ [GraphEvents.ON_MESSAGE_DELTA]: {
43
+ handle: (_event: string, data: t.StreamEventData): void => {
44
+ console.log('====== ON_MESSAGE_DELTA ======');
45
+ console.dir(data, { depth: null });
46
+ }
47
+ },
48
+ [GraphEvents.TOOL_START]: {
49
+ handle: (_event: string, data: t.StreamEventData, metadata?: Record<string, unknown>): void => {
50
+ console.log('====== TOOL_START ======');
51
+ console.dir(data, { depth: null });
52
+ }
53
+ },
54
+ // [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
55
+ // [GraphEvents.LLM_START]: {
56
+ // handle: (_event: string, data: t.StreamEventData): void => {
57
+ // console.log('====== LLM_START ======');
58
+ // console.dir(data, { depth: null });
59
+ // }
60
+ // },
61
+ // [GraphEvents.LLM_END]: {
62
+ // handle: (_event: string, data: t.StreamEventData): void => {
63
+ // console.log('====== LLM_END ======');
64
+ // console.dir(data, { depth: null });
65
+ // }
66
+ // },
67
+ /*
68
+ [GraphEvents.CHAIN_START]: {
69
+ handle: (_event: string, data: t.StreamEventData): void => {
70
+ console.log('====== CHAIN_START ======');
71
+ // console.dir(data, { depth: null });
72
+ }
73
+ },
74
+ [GraphEvents.CHAIN_END]: {
75
+ handle: (_event: string, data: t.StreamEventData): void => {
76
+ console.log('====== CHAIN_END ======');
77
+ // console.dir(data, { depth: null });
78
+ }
79
+ },
80
+ */
81
+ // [GraphEvents.CHAT_MODEL_START]: {
82
+ // handle: (_event: string, _data: t.StreamEventData): void => {
83
+ // console.log('====== CHAT_MODEL_START ======');
84
+ // console.dir(_data, { depth: null });
85
+ // // Intentionally left empty
86
+ // }
87
+ // },
88
+ };
89
+
90
+ // const llmConfig = getLLMConfig(provider);
91
+ let llmConfig = getLLMConfig(Providers.ANTHROPIC);
92
+
93
+ const graphConfig: t.StandardGraphConfig = {
94
+ type: 'standard',
95
+ llmConfig,
96
+ tools: [new TavilySearchResults()],
97
+ instructions: 'You are a friendly AI assistant. Always address the user by their name.',
98
+ additional_instructions: `The user's name is ${userName} and they are located in ${location}.`,
99
+ };
100
+
101
+ let run = await Run.create<t.IState>({
102
+ runId: 'test-run-id',
103
+ graphConfig,
104
+ customHandlers,
105
+ });
106
+
107
+ const config = {
108
+ configurable: {
109
+ provider: Providers.ANTHROPIC,
110
+ thread_id: 'conversation-num-1',
111
+ },
112
+ streamMode: 'values',
113
+ version: 'v2' as const,
114
+ };
115
+
116
+ console.log(' Test 1: Anthropic Tool Usage');
117
+
118
+ // conversationHistory.push(new HumanMessage(`Hi I'm ${userName}.`));
119
+ conversationHistory.push(new HumanMessage(`search for good sunrise hikes near ${location}
120
+ then search weather in ${location} for today which is ${currentDate}`));
121
+ let inputs = {
122
+ messages: conversationHistory,
123
+ };
124
+ const contentParts = await run.processStream(inputs, config,
125
+ // {
126
+ // [Callback.TOOL_START]: (graph, ...args) => {
127
+ // console.log('TOOL_START callback');
128
+ // },
129
+ // [Callback.TOOL_END]: (graph, ...args) => {
130
+ // console.log('TOOL_END callback');
131
+ // },
132
+ // }
133
+ );
134
+ const finalMessages = run.getRunMessages();
135
+ if (finalMessages) {
136
+ conversationHistory.push(...finalMessages);
137
+ }
138
+
139
+ console.log(' Test 2: OpenAI Follow-up Response');
140
+
141
+ // const userMessage = `
142
+ // Make a search for the weather in ${location} today, which is ${currentDate}.
143
+ // Make sure to always refer to me by name.
144
+ // After giving me a thorough summary, tell me a joke about the weather forecast we went over.
145
+ // `;
146
+ const userMessage = `Thanks!`;
147
+
148
+ conversationHistory.push(new HumanMessage(userMessage));
149
+
150
+ inputs = {
151
+ messages: conversationHistory,
152
+ };
153
+
154
+ llmConfig = getLLMConfig(Providers.OPENAI);
155
+ graphConfig.llmConfig = llmConfig;
156
+ config.configurable.provider = Providers.OPENAI;
157
+
158
+ run = await Run.create<t.IState>({
159
+ runId: 'test-run-id',
160
+ graphConfig,
161
+ customHandlers,
162
+ });
163
+
164
+ const contentParts2 = await run.processStream(inputs, config);
165
+ const finalMessages2 = run.getRunMessages();
166
+ if (finalMessages2) {
167
+ conversationHistory.push(...finalMessages2);
168
+ // console.dir(conversationHistory, { depth: null });
169
+ }
170
+ }
171
+
172
+ process.on('unhandledRejection', (reason, promise) => {
173
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
174
+ console.log('Conversation history:');
175
+ console.dir(conversationHistory, { depth: null });
176
+ process.exit(1);
177
+ });
178
+
179
+ testStandardStreaming().catch((err) => {
180
+ console.error(err);
181
+ console.log('Conversation history:');
182
+ console.dir(conversationHistory, { depth: null });
183
+ process.exit(1);
184
+ });
@@ -0,0 +1,214 @@
1
+ // src/scripts/cli.ts
2
+ import { config } from 'dotenv';
3
+ config();
4
+ import { HumanMessage, AIMessage, BaseMessage } from '@langchain/core/messages';
5
+ import { TavilySearchResults } from '@langchain/community/tools/tavily_search';
6
+ import type { RunnableConfig } from '@langchain/core/runnables';
7
+ import type * as t from '@/types';
8
+ import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
9
+ import {
10
+ ToolEndHandler,
11
+ ModelEndHandler,
12
+ createMetadataAggregator,
13
+ } from '@/events';
14
+ import { getLLMConfig } from '@/utils/llmConfig';
15
+ import { getArgs } from '@/scripts/args';
16
+ import { GraphEvents } from '@/common';
17
+ import { Run } from '@/run';
18
+ import { createCodeExecutionTool } from '@/tools/CodeExecutor';
19
+
20
+ const conversationHistory: BaseMessage[] = [];
21
+
22
+ async function testCodeExecution(): Promise<void> {
23
+ const { userName, location, provider, currentDate } = await getArgs();
24
+ const { contentParts, aggregateContent } = createContentAggregator();
25
+ const customHandlers = {
26
+ [GraphEvents.TOOL_END]: new ToolEndHandler(),
27
+ [GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
28
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
29
+ [GraphEvents.ON_RUN_STEP_COMPLETED]: {
30
+ handle: (
31
+ event: GraphEvents.ON_RUN_STEP_COMPLETED,
32
+ data: t.StreamEventData
33
+ ): void => {
34
+ console.log('====== ON_RUN_STEP_COMPLETED ======');
35
+ console.dir(data, { depth: null });
36
+ aggregateContent({
37
+ event,
38
+ data: data as unknown as { result: t.ToolEndEvent },
39
+ });
40
+ },
41
+ },
42
+ [GraphEvents.ON_RUN_STEP]: {
43
+ handle: (
44
+ event: GraphEvents.ON_RUN_STEP,
45
+ data: t.StreamEventData
46
+ ): void => {
47
+ console.log('====== ON_RUN_STEP ======');
48
+ console.dir(data, { depth: null });
49
+ aggregateContent({ event, data: data as t.RunStep });
50
+ },
51
+ },
52
+ [GraphEvents.ON_RUN_STEP_DELTA]: {
53
+ handle: (
54
+ event: GraphEvents.ON_RUN_STEP_DELTA,
55
+ data: t.StreamEventData
56
+ ): void => {
57
+ console.log('====== ON_RUN_STEP_DELTA ======');
58
+ console.dir(data, { depth: null });
59
+ aggregateContent({ event, data: data as t.RunStepDeltaEvent });
60
+ },
61
+ },
62
+ [GraphEvents.ON_MESSAGE_DELTA]: {
63
+ handle: (
64
+ event: GraphEvents.ON_MESSAGE_DELTA,
65
+ data: t.StreamEventData
66
+ ): void => {
67
+ console.log('====== ON_MESSAGE_DELTA ======');
68
+ console.dir(data, { depth: null });
69
+ aggregateContent({ event, data: data as t.MessageDeltaEvent });
70
+ },
71
+ },
72
+ [GraphEvents.TOOL_START]: {
73
+ handle: (
74
+ _event: string,
75
+ data: t.StreamEventData,
76
+ metadata?: Record<string, unknown>
77
+ ): void => {
78
+ console.log('====== TOOL_START ======');
79
+ console.dir(data, { depth: null });
80
+ },
81
+ },
82
+ };
83
+
84
+ const llmConfig = getLLMConfig(provider);
85
+
86
+ const run = await Run.create<t.IState>({
87
+ runId: 'message-num-1',
88
+ graphConfig: {
89
+ type: 'standard',
90
+ llmConfig,
91
+ tools: [new TavilySearchResults(), createCodeExecutionTool()],
92
+ instructions:
93
+ 'You are a friendly AI assistant with coding capabilities. Always address the user by their name.',
94
+ additional_instructions: `The user's name is ${userName} and they are located in ${location}.`,
95
+ },
96
+ returnContent: true,
97
+ customHandlers,
98
+ });
99
+
100
+ const config: Partial<RunnableConfig> & {
101
+ version: 'v1' | 'v2';
102
+ run_id?: string;
103
+ streamMode: string;
104
+ } = {
105
+ configurable: {
106
+ provider,
107
+ thread_id: 'conversation-num-1',
108
+ },
109
+ streamMode: 'values',
110
+ version: 'v2' as const,
111
+ // recursionLimit: 3,
112
+ };
113
+
114
+ console.log('Test 1: Sorting Algorithm Comparison');
115
+
116
+ const userMessage1 = `
117
+ Hi ${userName} here. I need a Python script that compares different sorting algorithms. Can you write a script that:
118
+ 1. Implements three sorting algorithms: Bubble Sort, Insertion Sort, and Merge Sort
119
+ 2. Generates three random lists of integers:
120
+ - A small list (20 elements)
121
+ - A medium list (100 elements)
122
+ - A large list (1000 elements)
123
+ 3. Applies each sorting algorithm to each list and measures the execution time
124
+ 4. Prints a comparison table showing the time taken by each algorithm for each list size
125
+ 5. Determines and announces the fastest algorithm for each list size
126
+ Please write the script and then execute it to show the results.
127
+ `;
128
+
129
+ conversationHistory.push(new HumanMessage(userMessage1));
130
+
131
+ let inputs = {
132
+ messages: conversationHistory,
133
+ };
134
+ const finalContentParts1 = await run.processStream(inputs, config);
135
+ const finalMessages1 = run.getRunMessages();
136
+ if (finalMessages1) {
137
+ conversationHistory.push(...finalMessages1);
138
+ }
139
+ console.log('\n\n====================\n\n');
140
+ console.dir(contentParts, { depth: null });
141
+
142
+ console.log('Test 2: Text File Analysis and Processing');
143
+
144
+ const userMessage2 = `
145
+ Great job on the sorting algorithms! Now, let's solve a popular LeetCode problem using the Merge Sort algorithm we implemented. The problem is "Merge Intervals". Here's what I need:
146
+
147
+ 1. Implement a solution to the Merge Intervals problem:
148
+ - Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals.
149
+ - Return an array of the non-overlapping intervals that cover all the intervals in the input.
150
+
151
+ 2. Use the Merge Sort algorithm as part of the solution to sort the intervals based on their start times.
152
+
153
+ 3. Implement a function to generate a random list of intervals for testing.
154
+
155
+ 4. Create test cases:
156
+ - A small case with 5 intervals
157
+ - A medium case with 20 intervals
158
+ - A large case with 100 intervals
159
+
160
+ 5. Apply your solution to each test case and print:
161
+ - The original intervals
162
+ - The merged intervals
163
+ - The time taken to solve each case
164
+
165
+ Please write the script and execute it to demonstrate the results for all three test cases.
166
+ `;
167
+
168
+ conversationHistory.push(new HumanMessage(userMessage2));
169
+
170
+ inputs = {
171
+ messages: conversationHistory,
172
+ };
173
+ const finalContentParts2 = await run.processStream(inputs, config);
174
+ const finalMessages2 = run.getRunMessages();
175
+ if (finalMessages2) {
176
+ conversationHistory.push(...finalMessages2);
177
+ }
178
+ console.log('\n\n====================\n\n');
179
+ console.dir(contentParts, { depth: null });
180
+
181
+ const { handleLLMEnd, collected } = createMetadataAggregator();
182
+ const titleResult = await run.generateTitle({
183
+ provider,
184
+ inputText: userMessage2,
185
+ contentParts,
186
+ chainOptions: {
187
+ callbacks: [
188
+ {
189
+ handleLLMEnd,
190
+ },
191
+ ],
192
+ },
193
+ });
194
+ console.log('Generated Title:', titleResult);
195
+ console.log('Collected metadata:', collected);
196
+ }
197
+
198
+ process.on('unhandledRejection', (reason, promise) => {
199
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
200
+ console.log('Conversation history:');
201
+ console.dir(conversationHistory, { depth: null });
202
+ process.exit(1);
203
+ });
204
+
205
+ process.on('uncaughtException', (err) => {
206
+ console.error('Uncaught Exception:', err);
207
+ });
208
+
209
+ testCodeExecution().catch((err) => {
210
+ console.error(err);
211
+ console.log('Conversation history:');
212
+ console.dir(conversationHistory, { depth: null });
213
+ process.exit(1);
214
+ });