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,122 @@
1
+ // src/main_collab_global_analysis.ts
2
+ import dotenv from 'dotenv';
3
+ import { HumanMessage } from '@langchain/core/messages';
4
+ import type * as t from '@/types';
5
+ import {
6
+ ChatModelStreamHandler,
7
+ LLMStreamHandler,
8
+ } from '@/stream';
9
+ import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
+ import { WeatherDataTool, TimeZoneTool, CurrencyConversionTool, IPGeolocationTool } from '@/tools/global_analysis_tools';
11
+ import { supervisorPrompt } from '@/prompts/collab';
12
+ import { GraphEvents, Providers } from '@/common';
13
+ import { setupLogging } from '@/utils/logging';
14
+
15
+ dotenv.config();
16
+
17
+ // Setup logging
18
+ setupLogging('global_analysis.log');
19
+
20
+ async function testCollaborativeGlobalAnalysis() {
21
+ const customHandlers = {
22
+ [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
23
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
24
+ [GraphEvents.LLM_START]: {
25
+ handle: (event: string, data: t.StreamEventData) => {
26
+ console.log('LLM Start:', event);
27
+ }
28
+ },
29
+ [GraphEvents.LLM_END]: {
30
+ handle: (event: string, data: t.StreamEventData) => {
31
+ console.log('LLM End:', event);
32
+ }
33
+ },
34
+ [GraphEvents.CHAT_MODEL_END]: {
35
+ handle: (event: string, data: t.StreamEventData) => {
36
+ console.log('Chat Model End:', event);
37
+ }
38
+ },
39
+ [GraphEvents.TOOL_END]: {
40
+ handle: (event: string, data: t.StreamEventData) => {
41
+ console.log('Tool End:', event);
42
+ console.dir(data, { depth: null });
43
+ }
44
+ },
45
+ };
46
+
47
+ // Define the collaborative members
48
+ const members: Member[] = [
49
+ {
50
+ name: 'weather_analyst',
51
+ systemPrompt: 'You are a weather analyst. Use the Weather Data tool to provide weather information for different cities.',
52
+ tools: [WeatherDataTool],
53
+ llmConfig: {
54
+ provider: Providers.OPENAI,
55
+ modelName: 'gpt-4o',
56
+ temperature: 0,
57
+ },
58
+ },
59
+ {
60
+ name: 'time_zone_expert',
61
+ systemPrompt: 'You are a time zone expert. Use the Time Zone tool to provide time information for different locations.',
62
+ tools: [TimeZoneTool],
63
+ llmConfig: {
64
+ provider: Providers.OPENAI,
65
+ modelName: 'gpt-4o',
66
+ temperature: 0.2,
67
+ },
68
+ },
69
+ {
70
+ name: 'currency_converter',
71
+ systemPrompt: 'You are a currency conversion expert. Use the Currency Conversion tool to convert between different currencies.',
72
+ tools: [CurrencyConversionTool],
73
+ llmConfig: {
74
+ provider: Providers.OPENAI,
75
+ modelName: 'gpt-4o',
76
+ temperature: 0.2,
77
+ },
78
+ },
79
+ {
80
+ name: 'ip_analyst',
81
+ systemPrompt: 'You analyze IP addresses. Use the IP Geolocation tool to provide information about IP addresses.',
82
+ tools: [IPGeolocationTool],
83
+ llmConfig: {
84
+ provider: Providers.OPENAI,
85
+ modelName: 'gpt-4o',
86
+ temperature: 0.2,
87
+ },
88
+ },
89
+ ];
90
+
91
+ const supervisorConfig = {
92
+ systemPrompt: supervisorPrompt,
93
+ llmConfig: {
94
+ provider: Providers.OPENAI,
95
+ modelName: 'gpt-4o',
96
+ temperature: 0,
97
+ },
98
+ };
99
+
100
+ const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
101
+ await collaborativeProcessor.initialize();
102
+
103
+ const config = {
104
+ configurable: { thread_id: 'collaborative-global-analysis-1' },
105
+ streamMode: 'events',
106
+ version: 'v2',
107
+ };
108
+
109
+ console.log('\nCollaborative Test: Perform global analysis');
110
+
111
+ const input = {
112
+ messages: [new HumanMessage('Analyze the weather in New York and Tokyo, compare their time zones, convert 3500 USD to EUR, and provide geolocation information for the IP address 8.8.8.8.')],
113
+ };
114
+
115
+ await collaborativeProcessor.processStream(input, config);
116
+ }
117
+
118
+ async function main() {
119
+ await testCollaborativeGlobalAnalysis();
120
+ }
121
+
122
+ main().catch(console.error);
@@ -0,0 +1,153 @@
1
+ // src/main_collab_hackathon_event.ts
2
+ import dotenv from 'dotenv';
3
+ import { HumanMessage } from '@langchain/core/messages';
4
+ import type * as t from '@/types';
5
+ import {
6
+ ChatModelStreamHandler,
7
+ LLMStreamHandler,
8
+ } from '@/stream';
9
+ import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
+ import { EmailNotifier, FileManager, UniqueIDGenerator, DatetimeFormatter } from '@/tools/hackathon_tools';
11
+ import { supervisorPrompt } from '@/prompts/collab';
12
+ import { GraphEvents, Providers } from '@/common';
13
+ import fs from 'fs';
14
+ import util from 'util';
15
+
16
+ dotenv.config();
17
+
18
+ // Create a write stream
19
+ const logFile = fs.createWriteStream('hackathon_event.log', { flags: 'a' });
20
+
21
+ // Redirect console.log and console.error
22
+ const originalConsoleLog = console.log;
23
+ const originalConsoleError = console.error;
24
+
25
+ console.log = function(...args) {
26
+ logFile.write(util.format.apply(null, args) + '\n');
27
+ originalConsoleLog.apply(console, args);
28
+ };
29
+
30
+ console.error = function(...args) {
31
+ logFile.write(util.format.apply(null, args) + '\n');
32
+ originalConsoleError.apply(console, args);
33
+ };
34
+
35
+ // Redirect process.stdout.write
36
+ const originalStdoutWrite = process.stdout.write;
37
+ process.stdout.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
38
+ logFile.write(chunk, encoding);
39
+ return originalStdoutWrite.apply(process.stdout, [chunk, encoding, callback]);
40
+ } as any;
41
+
42
+ // Redirect process.stderr.write
43
+ const originalStderrWrite = process.stderr.write;
44
+ process.stderr.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
45
+ logFile.write(chunk, encoding);
46
+ return originalStderrWrite.apply(process.stderr, [chunk, encoding, callback]);
47
+ } as any;
48
+
49
+ async function testCollaborativeHackathonEvent() {
50
+ const customHandlers = {
51
+ [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
52
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
53
+ [GraphEvents.LLM_START]: {
54
+ handle: (event: string, data: t.StreamEventData) => {
55
+ console.log('LLM Start:', event);
56
+ }
57
+ },
58
+ [GraphEvents.LLM_END]: {
59
+ handle: (event: string, data: t.streamEventData) => {
60
+ console.log('LLM End:', event);
61
+ }
62
+ },
63
+ [GraphEvents.CHAT_MODEL_END]: {
64
+ handle: (event: string, data: t.StreamEventData) => {
65
+ console.log('Chat Model End:', event);
66
+ }
67
+ },
68
+ [GraphEvents.TOOL_END]: {
69
+ handle: (event: string, data: t.StreamEventData) => {
70
+ console.log('Tool End:', event);
71
+ console.dir(data, { depth: null });
72
+ }
73
+ },
74
+ };
75
+
76
+ // Define the collaborative members
77
+ const members: Member[] = [
78
+ {
79
+ name: 'email_notifier',
80
+ systemPrompt: 'You are responsible for sending out email notifications regarding the hackathon event.',
81
+ tools: [EmailNotifier],
82
+ llmConfig: {
83
+ provider: Providers.OPENAI,
84
+ modelName: 'gpt-4o',
85
+ temperature: 0,
86
+ },
87
+ },
88
+ {
89
+ name: 'file_manager',
90
+ systemPrompt: 'You manage the file storage for hackathon materials. You can create, read, and delete files as needed.',
91
+ tools: [FileManager],
92
+ llmConfig: {
93
+ provider: Providers.OPENAI,
94
+ modelName: 'gpt-4o',
95
+ temperature: 0.2,
96
+ },
97
+ },
98
+ {
99
+ name: 'unique_id_generator',
100
+ systemPrompt: 'You generate unique IDs for participants and teams to ensure everyone has a unique identifier.',
101
+ tools: [UniqueIDGenerator],
102
+ llmConfig: {
103
+ provider: Providers.OPENAI,
104
+ modelName: 'gpt-4o',
105
+ temperature: 0.2,
106
+ },
107
+ },
108
+ {
109
+ name: 'datetime_formatter',
110
+ systemPrompt: 'You format and manipulate dates and times for scheduling purposes.',
111
+ tools: [DatetimeFormatter],
112
+ llmConfig: {
113
+ provider: Providers.OPENAI,
114
+ modelName: 'gpt-4o',
115
+ temperature: 0.2,
116
+ },
117
+ },
118
+ ];
119
+
120
+ const supervisorConfig = {
121
+ systemPrompt: supervisorPrompt,
122
+ llmConfig: {
123
+ provider: Providers.OPENAI,
124
+ modelName: 'gpt-4o',
125
+ temperature: 0,
126
+ },
127
+ };
128
+
129
+ const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
130
+ await collaborativeProcessor.initialize();
131
+
132
+ const config = {
133
+ configurable: { thread_id: 'collaborative-hackathon-planning-1' },
134
+ streamMode: 'events',
135
+ version: 'v2',
136
+ };
137
+
138
+ console.log('\nCollaborative Test: Plan a hackathon event');
139
+
140
+ const input = {
141
+ messages: [new HumanMessage('Organize a hackathon event including sending invitations, managing files, generating unique IDs, and scheduling sessions.')],
142
+ };
143
+
144
+ await collaborativeProcessor.processStream(input, config);
145
+ }
146
+
147
+ async function main() {
148
+ await testCollaborativeHackathonEvent();
149
+ }
150
+
151
+ main().catch(console.error).finally(() => {
152
+ logFile.end();
153
+ });
@@ -0,0 +1,153 @@
1
+ // src/main_collab_space_mission.ts
2
+ import dotenv from 'dotenv';
3
+ import { HumanMessage } from '@langchain/core/messages';
4
+ import type * as t from '@/types';
5
+ import {
6
+ ChatModelStreamHandler,
7
+ LLMStreamHandler,
8
+ } from '@/stream';
9
+ import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
+ import { NasaAPODTool, ISSLocationTool, LaunchScheduleTool, MissionIDGenerator } from '@/tools/space_mission_tools';
11
+ import { supervisorPrompt } from '@/prompts/collab';
12
+ import { GraphEvents, Providers } from '@/common';
13
+ import fs from 'fs';
14
+ import util from 'util';
15
+
16
+ dotenv.config();
17
+
18
+ // Create a write stream
19
+ const logFile = fs.createWriteStream('space_mission.log', { flags: 'a' });
20
+
21
+ // Redirect console.log and console.error
22
+ const originalConsoleLog = console.log;
23
+ const originalConsoleError = console.error;
24
+
25
+ console.log = function(...args) {
26
+ logFile.write(util.format.apply(null, args) + '\n');
27
+ originalConsoleLog.apply(console, args);
28
+ };
29
+
30
+ console.error = function(...args) {
31
+ logFile.write(util.format.apply(null, args) + '\n');
32
+ originalConsoleError.apply(console, args);
33
+ };
34
+
35
+ // Redirect process.stdout.write
36
+ const originalStdoutWrite = process.stdout.write;
37
+ process.stdout.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
38
+ logFile.write(chunk, encoding);
39
+ return originalStdoutWrite.apply(process.stdout, [chunk, encoding, callback]);
40
+ } as any;
41
+
42
+ // Redirect process.stderr.write
43
+ const originalStderrWrite = process.stderr.write;
44
+ process.stderr.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
45
+ logFile.write(chunk, encoding);
46
+ return originalStderrWrite.apply(process.stderr, [chunk, encoding, callback]);
47
+ } as any;
48
+
49
+ async function testCollaborativeSpaceMission() {
50
+ const customHandlers = {
51
+ [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
52
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
53
+ [GraphEvents.LLM_START]: {
54
+ handle: (event: string, data: t.StreamEventData) => {
55
+ console.log('LLM Start:', event);
56
+ }
57
+ },
58
+ [GraphEvents.LLM_END]: {
59
+ handle: (event: string, data: t.StreamEventData) => {
60
+ console.log('LLM End:', event);
61
+ }
62
+ },
63
+ [GraphEvents.CHAT_MODEL_END]: {
64
+ handle: (event: string, data: t.StreamEventData) => {
65
+ console.log('Chat Model End:', event);
66
+ }
67
+ },
68
+ [GraphEvents.TOOL_END]: {
69
+ handle: (event: string, data: t.StreamEventData) => {
70
+ console.log('Tool End:', event);
71
+ console.dir(data, { depth: null });
72
+ }
73
+ },
74
+ };
75
+
76
+ // Define the collaborative members
77
+ const members: Member[] = [
78
+ {
79
+ name: 'astronomy_expert',
80
+ systemPrompt: 'You are an astronomy expert. Use the NASA APOD tool to provide interesting astronomical information for the mission.',
81
+ tools: [NasaAPODTool],
82
+ llmConfig: {
83
+ provider: Providers.OPENAI,
84
+ modelName: 'gpt-4o',
85
+ temperature: 0,
86
+ },
87
+ },
88
+ {
89
+ name: 'iss_tracker',
90
+ systemPrompt: 'You track the International Space Station. Use the ISS Location tool to provide updates on its position.',
91
+ tools: [ISSLocationTool],
92
+ llmConfig: {
93
+ provider: Providers.OPENAI,
94
+ modelName: 'gpt-4o',
95
+ temperature: 0.2,
96
+ },
97
+ },
98
+ {
99
+ name: 'launch_coordinator',
100
+ systemPrompt: 'You coordinate space launches. Use the Launch Schedule tool to plan mission launches around other scheduled events.',
101
+ tools: [LaunchScheduleTool],
102
+ llmConfig: {
103
+ provider: Providers.OPENAI,
104
+ modelName: 'gpt-4o',
105
+ temperature: 0.2,
106
+ },
107
+ },
108
+ {
109
+ name: 'mission_id_assigner',
110
+ systemPrompt: 'You assign unique IDs to space missions. Use the Mission ID Generator to create identifiers for new missions.',
111
+ tools: [MissionIDGenerator],
112
+ llmConfig: {
113
+ provider: Providers.OPENAI,
114
+ modelName: 'gpt-4o',
115
+ temperature: 0.2,
116
+ },
117
+ },
118
+ ];
119
+
120
+ const supervisorConfig = {
121
+ systemPrompt: supervisorPrompt,
122
+ llmConfig: {
123
+ provider: Providers.OPENAI,
124
+ modelName: 'gpt-4o',
125
+ temperature: 0,
126
+ },
127
+ };
128
+
129
+ const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
130
+ await collaborativeProcessor.initialize();
131
+
132
+ const config = {
133
+ configurable: { thread_id: 'collaborative-space-mission-planning-1' },
134
+ streamMode: 'events',
135
+ version: 'v2',
136
+ };
137
+
138
+ console.log('\nCollaborative Test: Plan a space mission');
139
+
140
+ const input = {
141
+ messages: [new HumanMessage('Plan a space mission to observe a newly discovered exoplanet. Consider astronomical events, ISS positioning, launch schedules, and assign a unique mission ID.')],
142
+ };
143
+
144
+ await collaborativeProcessor.processStream(input, config);
145
+ }
146
+
147
+ async function main() {
148
+ await testCollaborativeSpaceMission();
149
+ }
150
+
151
+ main().catch(console.error).finally(() => {
152
+ logFile.end();
153
+ });
@@ -0,0 +1,210 @@
1
+ // src/main_philosophical_cafe.ts
2
+ import dotenv from 'dotenv';
3
+ import { HumanMessage } from '@langchain/core/messages';
4
+ import type * as t from '@/types';
5
+ import {
6
+ ChatModelStreamHandler,
7
+ LLMStreamHandler,
8
+ } from '@/stream';
9
+ import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
+ import { GraphEvents, Providers } from '@/common';
11
+ import fs from 'fs';
12
+ import util from 'util';
13
+ import { DynamicStructuredTool } from '@langchain/core/tools';
14
+ import { z } from 'zod';
15
+
16
+ dotenv.config();
17
+
18
+ // Create a write stream
19
+ const logFile = fs.createWriteStream('philosophical_cafe.log', { flags: 'a' });
20
+
21
+ // Redirect console.log and console.error
22
+ const originalConsoleLog = console.log;
23
+ const originalConsoleError = console.error;
24
+
25
+ console.log = function(...args) {
26
+ logFile.write(util.format.apply(null, args) + '\n');
27
+ originalConsoleLog.apply(console, args);
28
+ };
29
+
30
+ console.error = function(...args) {
31
+ logFile.write(util.format.apply(null, args) + '\n');
32
+ originalConsoleError.apply(console, args);
33
+ };
34
+
35
+ // Redirect process.stdout.write
36
+ const originalStdoutWrite = process.stdout.write;
37
+ process.stdout.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
38
+ logFile.write(chunk, encoding);
39
+ return originalStdoutWrite.apply(process.stdout, [chunk, encoding, callback]);
40
+ } as any;
41
+
42
+ // Redirect process.stderr.write
43
+ const originalStderrWrite = process.stderr.write;
44
+ process.stderr.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
45
+ logFile.write(chunk, encoding);
46
+ return originalStderrWrite.apply(process.stderr, [chunk, encoding, callback]);
47
+ } as any;
48
+
49
+ // Define tools for thinking and speaking
50
+ const ThinkTool = new DynamicStructuredTool({
51
+ name: 'think',
52
+ description: 'Think about the current topic or situation.',
53
+ schema: z.object({
54
+ thought: z.string().describe('The character\'s internal thought'),
55
+ }),
56
+ func: async ({ thought }) => {
57
+ return `[Thinking: ${thought}]`;
58
+ }
59
+ });
60
+
61
+ const SpeakTool = new DynamicStructuredTool({
62
+ name: 'speak',
63
+ description: 'Say something out loud in the conversation.',
64
+ schema: z.object({
65
+ speech: z.string().describe('What the character says out loud'),
66
+ }),
67
+ func: async ({ speech }) => {
68
+ return speech;
69
+ }
70
+ });
71
+
72
+ async function testPhilosophicalCafe() {
73
+ const customHandlers = {
74
+ [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
75
+ [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
76
+ [GraphEvents.LLM_START]: {
77
+ handle: (event: string, data: t.StreamEventData) => {
78
+ console.log('LLM Start:', event);
79
+ }
80
+ },
81
+ [GraphEvents.LLM_END]: {
82
+ handle: (event: string, data: t.StreamEventData) => {
83
+ console.log('LLM End:', event);
84
+ }
85
+ },
86
+ [GraphEvents.CHAT_MODEL_END]: {
87
+ handle: (event: string, data: t.StreamEventData) => {
88
+ console.log('Chat Model End:', event);
89
+ }
90
+ },
91
+ [GraphEvents.TOOL_END]: {
92
+ handle: (event: string, data: t.StreamEventData) => {
93
+ console.log('Tool End:', event);
94
+ console.dir(data, { depth: null });
95
+ }
96
+ },
97
+ };
98
+
99
+ // Define the fictional cafe patrons
100
+ const members: Member[] = [
101
+ {
102
+ name: 'Luna',
103
+ systemPrompt: 'You are Luna, a free-spirited artist with a penchant for existential questions. You often challenge conventional wisdom and believe in the power of individual expression. Speak casually and use artistic metaphors. Always either think or speak each turn, sometimes both.',
104
+ tools: [ThinkTool, SpeakTool],
105
+ llmConfig: {
106
+ provider: Providers.BEDROCK,
107
+ model: 'anthropic.claude-3-sonnet-20240229-v1:0',
108
+ region: process.env.BEDROCK_AWS_REGION,
109
+ credentials: {
110
+ accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
111
+ secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
112
+ },
113
+ },
114
+ },
115
+ {
116
+ name: 'Zephyr',
117
+ systemPrompt: 'You are Zephyr, a tech-savvy futurist who believes in the potential of technology to solve human problems. You\'re optimistic but also concerned about ethical implications. Use tech jargon and futuristic concepts in your speech. Always either think or speak each turn, sometimes both.',
118
+ tools: [ThinkTool, SpeakTool],
119
+ llmConfig: {
120
+ provider: Providers.BEDROCK,
121
+ model: 'anthropic.claude-3-sonnet-20240229-v1:0',
122
+ region: process.env.BEDROCK_AWS_REGION,
123
+ credentials: {
124
+ accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
125
+ secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
126
+ },
127
+ },
128
+ },
129
+ {
130
+ name: 'Sage',
131
+ systemPrompt: 'You are Sage, a retired professor with a dry sense of humor. You\'re skeptical of grand theories and prefer practical wisdom. Your speech is peppered with historical references and gentle sarcasm. Always either think or speak each turn, sometimes both.',
132
+ tools: [ThinkTool, SpeakTool],
133
+ llmConfig: {
134
+ provider: Providers.BEDROCK,
135
+ model: 'anthropic.claude-3-sonnet-20240229-v1:0',
136
+ region: process.env.BEDROCK_AWS_REGION,
137
+ credentials: {
138
+ accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
139
+ secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
140
+ },
141
+ },
142
+ },
143
+ {
144
+ name: 'Nova',
145
+ systemPrompt: 'You are Nova, an enthusiastic environmental activist with a background in quantum physics. You see interconnections everywhere and often draw parallels between natural systems and human behavior. Your speech is energetic and filled with scientific analogies. Always either think or speak each turn, sometimes both.',
146
+ tools: [ThinkTool, SpeakTool],
147
+ llmConfig: {
148
+ provider: Providers.BEDROCK,
149
+ model: 'anthropic.claude-3-sonnet-20240229-v1:0',
150
+ region: process.env.BEDROCK_AWS_REGION,
151
+ credentials: {
152
+ accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
153
+ secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
154
+ },
155
+ },
156
+ },
157
+ ];
158
+
159
+ const supervisorPrompt = `
160
+ You are the author orchestrating a casual, candid conversation between {members} at a local cafe. Your role is to guide the flow of the conversation.
161
+
162
+ Consider the following:
163
+ 1. Encourage natural, overlapping dialogue. Characters can interrupt or talk over each other.
164
+ 2. Ensure all characters are actively participating by either speaking or thinking in each turn.
165
+ 3. Introduce unexpected elements or topics to keep the conversation lively and unpredictable.
166
+ 4. Allow for moments of humor, disagreement, or sudden insights.
167
+ 5. Keep the tone casual and fitting for a cafe setting.
168
+ 6. Multiple tools can be run at once.
169
+
170
+ Remember, you're crafting a scene, not moderating a debate. Let the characters' personalities shine through their interactions.
171
+ `;
172
+
173
+ const supervisorConfig = {
174
+ systemPrompt: supervisorPrompt,
175
+ llmConfig: {
176
+ provider: Providers.BEDROCK,
177
+ model: 'anthropic.claude-3-sonnet-20240229-v1:0',
178
+ region: process.env.BEDROCK_AWS_REGION,
179
+ credentials: {
180
+ accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
181
+ secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
182
+ },
183
+ },
184
+ };
185
+
186
+ const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
187
+ await collaborativeProcessor.initialize();
188
+
189
+ const config = {
190
+ configurable: { thread_id: 'philosophical-cafe-1' },
191
+ streamMode: 'events',
192
+ version: 'v2',
193
+ };
194
+
195
+ console.log('\nCafe: A Chance Encounter');
196
+
197
+ const input = {
198
+ messages: [new HumanMessage('It\'s a rainy Tuesday afternoon at a Cafe. Luna, Zephyr, Sage, and Nova find themselves sharing a table due to the crowded conditions. The aroma of coffee fills the air as a heated debate about the nature of reality unfolds at a nearby table. What happens next?')],
199
+ };
200
+
201
+ await collaborativeProcessor.processStream(input, config);
202
+ }
203
+
204
+ async function main() {
205
+ await testPhilosophicalCafe();
206
+ }
207
+
208
+ main().catch(console.error).finally(() => {
209
+ logFile.end();
210
+ });