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 @@
1
+ {"version":3,"file":"Graph.cjs","sources":["../../../src/graphs/Graph.ts"],"sourcesContent":["/* eslint-disable no-console */\r\n// src/graphs/Graph.ts\r\nimport { nanoid } from 'nanoid';\r\nimport { concat } from '@langchain/core/utils/stream';\r\nimport { ToolNode } from '@langchain/langgraph/prebuilt';\r\nimport { ChatVertexAI } from '@langchain/google-vertexai';\r\nimport { START, END, StateGraph } from '@langchain/langgraph';\r\nimport { Runnable, RunnableConfig } from '@langchain/core/runnables';\r\nimport { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';\r\nimport {\r\n AIMessageChunk,\r\n ToolMessage,\r\n SystemMessage,\r\n} from '@langchain/core/messages';\r\nimport type {\r\n BaseMessage,\r\n BaseMessageFields,\r\n UsageMetadata,\r\n} from '@langchain/core/messages';\r\nimport type * as t from '@/types';\r\nimport {\r\n Providers,\r\n GraphEvents,\r\n GraphNodeKeys,\r\n StepTypes,\r\n Callback,\r\n ContentTypes,\r\n} from '@/common';\r\nimport type { ToolCall } from '@langchain/core/messages/tool';\r\nimport { getChatModelClass, manualToolStreamProviders } from '@/llm/providers';\r\nimport { ToolNode as CustomToolNode, toolsCondition } from '@/tools/ToolNode';\r\nimport {\r\n createPruneMessages,\r\n modifyDeltaProperties,\r\n formatArtifactPayload,\r\n convertMessagesToContent,\r\n formatAnthropicArtifactContent,\r\n} from '@/messages';\r\nimport {\r\n resetIfNotEmpty,\r\n isOpenAILike,\r\n isGoogleLike,\r\n joinKeys,\r\n sleep,\r\n} from '@/utils';\r\nimport { ChatOpenAI, AzureChatOpenAI } from '@/llm/openai';\r\nimport { createFakeStreamingLLM } from '@/llm/fake';\r\nimport { HandlerRegistry } from '@/events';\r\n\r\nconst { AGENT, TOOLS } = GraphNodeKeys;\r\nexport type GraphNode = GraphNodeKeys | typeof START;\r\nexport type ClientCallback<T extends unknown[]> = (\r\n graph: StandardGraph,\r\n ...args: T\r\n) => void;\r\nexport type ClientCallbacks = {\r\n [Callback.TOOL_ERROR]?: ClientCallback<[Error, string]>;\r\n [Callback.TOOL_START]?: ClientCallback<unknown[]>;\r\n [Callback.TOOL_END]?: ClientCallback<unknown[]>;\r\n};\r\nexport type SystemCallbacks = {\r\n [K in keyof ClientCallbacks]: ClientCallbacks[K] extends ClientCallback<\r\n infer Args\r\n >\r\n ? (...args: Args) => void\r\n : never;\r\n};\r\n\r\nexport abstract class Graph<\r\n T extends t.BaseGraphState = t.BaseGraphState,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n TNodeName extends string = string,\r\n> {\r\n abstract resetValues(): void;\r\n abstract createGraphState(): t.GraphStateChannels<T>;\r\n abstract initializeTools(): CustomToolNode<T> | ToolNode<T>;\r\n abstract initializeModel(): Runnable;\r\n abstract getRunMessages(): BaseMessage[] | undefined;\r\n abstract getContentParts(): t.MessageContentComplex[] | undefined;\r\n abstract generateStepId(stepKey: string): [string, number];\r\n abstract getKeyList(\r\n metadata: Record<string, unknown> | undefined\r\n ): (string | number | undefined)[];\r\n abstract getStepKey(metadata: Record<string, unknown> | undefined): string;\r\n abstract checkKeyList(keyList: (string | number | undefined)[]): boolean;\r\n abstract getStepIdByKey(stepKey: string, index?: number): string;\r\n abstract getRunStep(stepId: string): t.RunStep | undefined;\r\n abstract dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): string;\r\n abstract dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void;\r\n abstract dispatchMessageDelta(id: string, delta: t.MessageDelta): void;\r\n abstract dispatchReasoningDelta(\r\n stepId: string,\r\n delta: t.ReasoningDelta\r\n ): void;\r\n abstract handleToolCallCompleted(\r\n data: t.ToolEndData,\r\n metadata?: Record<string, unknown>,\r\n omitOutput?: boolean\r\n ): void;\r\n\r\n abstract createCallModel(): (\r\n state: T,\r\n config?: RunnableConfig\r\n ) => Promise<Partial<T>>;\r\n abstract createWorkflow(): t.CompiledWorkflow<T>;\r\n lastToken?: string;\r\n tokenTypeSwitch?: 'reasoning' | 'content';\r\n reasoningKey: 'reasoning_content' | 'reasoning' = 'reasoning_content';\r\n currentTokenType: ContentTypes.TEXT | ContentTypes.THINK | 'think_and_text' =\r\n ContentTypes.TEXT;\r\n messageStepHasToolCalls: Map<string, boolean> = new Map();\r\n messageIdsByStepKey: Map<string, string> = new Map();\r\n prelimMessageIdsByStepKey: Map<string, string> = new Map();\r\n config: RunnableConfig | undefined;\r\n contentData: t.RunStep[] = [];\r\n stepKeyIds: Map<string, string[]> = new Map<string, string[]>();\r\n contentIndexMap: Map<string, number> = new Map();\r\n toolCallStepIds: Map<string, string> = new Map();\r\n currentUsage: Partial<UsageMetadata> | undefined;\r\n indexTokenCountMap: Record<string, number | undefined> = {};\r\n maxContextTokens: number | undefined;\r\n pruneMessages?: ReturnType<typeof createPruneMessages>;\r\n /** The amount of time that should pass before another consecutive API call */\r\n streamBuffer: number | undefined;\r\n tokenCounter?: t.TokenCounter;\r\n signal?: AbortSignal;\r\n /** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */\r\n invokedToolIds?: Set<string>;\r\n handlerRegistry: HandlerRegistry | undefined;\r\n}\r\n\r\nexport class StandardGraph extends Graph<t.BaseGraphState, GraphNode> {\r\n private graphState: t.GraphStateChannels<t.BaseGraphState>;\r\n clientOptions: t.ClientOptions;\r\n boundModel?: Runnable;\r\n /** The last recorded timestamp that a stream API call was invoked */\r\n lastStreamCall: number | undefined;\r\n systemMessage: SystemMessage | undefined;\r\n messages: BaseMessage[] = [];\r\n runId: string | undefined;\r\n tools?: t.GraphTools;\r\n toolMap?: t.ToolMap;\r\n startIndex: number = 0;\r\n provider: Providers;\r\n toolEnd: boolean;\r\n signal?: AbortSignal;\r\n\r\n constructor({\r\n runId,\r\n tools,\r\n signal,\r\n toolMap,\r\n provider,\r\n streamBuffer,\r\n instructions,\r\n reasoningKey,\r\n clientOptions,\r\n toolEnd = false,\r\n additional_instructions = '',\r\n }: t.StandardGraphInput) {\r\n super();\r\n this.runId = runId;\r\n this.tools = tools;\r\n this.signal = signal;\r\n this.toolEnd = toolEnd;\r\n this.toolMap = toolMap;\r\n this.provider = provider;\r\n this.streamBuffer = streamBuffer;\r\n this.clientOptions = clientOptions;\r\n this.graphState = this.createGraphState();\r\n this.boundModel = this.initializeModel();\r\n if (reasoningKey) {\r\n this.reasoningKey = reasoningKey;\r\n }\r\n\r\n let finalInstructions: string | BaseMessageFields | undefined =\r\n instructions;\r\n if (additional_instructions) {\r\n finalInstructions =\r\n finalInstructions != null && finalInstructions\r\n ? `${finalInstructions}\\n\\n${additional_instructions}`\r\n : additional_instructions;\r\n }\r\n\r\n if (\r\n finalInstructions != null &&\r\n finalInstructions &&\r\n provider === Providers.ANTHROPIC &&\r\n ((\r\n (clientOptions as t.AnthropicClientOptions).clientOptions\r\n ?.defaultHeaders as Record<string, string> | undefined\r\n )?.['anthropic-beta']?.includes('prompt-caching') ??\r\n false)\r\n ) {\r\n finalInstructions = {\r\n content: [\r\n {\r\n type: 'text',\r\n text: instructions,\r\n cache_control: { type: 'ephemeral' },\r\n },\r\n ],\r\n };\r\n }\r\n\r\n if (finalInstructions != null && finalInstructions !== '') {\r\n this.systemMessage = new SystemMessage(finalInstructions);\r\n }\r\n }\r\n\r\n /* Init */\r\n\r\n resetValues(keepContent?: boolean): void {\r\n this.messages = [];\r\n this.config = resetIfNotEmpty(this.config, undefined);\r\n if (keepContent !== true) {\r\n this.contentData = resetIfNotEmpty(this.contentData, []);\r\n this.contentIndexMap = resetIfNotEmpty(this.contentIndexMap, new Map());\r\n }\r\n this.stepKeyIds = resetIfNotEmpty(this.stepKeyIds, new Map());\r\n this.toolCallStepIds = resetIfNotEmpty(this.toolCallStepIds, new Map());\r\n this.messageIdsByStepKey = resetIfNotEmpty(\r\n this.messageIdsByStepKey,\r\n new Map()\r\n );\r\n this.messageStepHasToolCalls = resetIfNotEmpty(\r\n this.prelimMessageIdsByStepKey,\r\n new Map()\r\n );\r\n this.prelimMessageIdsByStepKey = resetIfNotEmpty(\r\n this.prelimMessageIdsByStepKey,\r\n new Map()\r\n );\r\n this.currentTokenType = resetIfNotEmpty(\r\n this.currentTokenType,\r\n ContentTypes.TEXT\r\n );\r\n this.lastToken = resetIfNotEmpty(this.lastToken, undefined);\r\n this.tokenTypeSwitch = resetIfNotEmpty(this.tokenTypeSwitch, undefined);\r\n this.indexTokenCountMap = resetIfNotEmpty(this.indexTokenCountMap, {});\r\n this.currentUsage = resetIfNotEmpty(this.currentUsage, undefined);\r\n this.tokenCounter = resetIfNotEmpty(this.tokenCounter, undefined);\r\n this.maxContextTokens = resetIfNotEmpty(this.maxContextTokens, undefined);\r\n this.invokedToolIds = resetIfNotEmpty(this.invokedToolIds, undefined);\r\n }\r\n\r\n /* Run Step Processing */\r\n\r\n getRunStep(stepId: string): t.RunStep | undefined {\r\n const index = this.contentIndexMap.get(stepId);\r\n if (index !== undefined) {\r\n return this.contentData[index];\r\n }\r\n return undefined;\r\n }\r\n\r\n getStepKey(metadata: Record<string, unknown> | undefined): string {\r\n if (!metadata) return '';\r\n\r\n const keyList = this.getKeyList(metadata);\r\n if (this.checkKeyList(keyList)) {\r\n throw new Error('Missing metadata');\r\n }\r\n\r\n return joinKeys(keyList);\r\n }\r\n\r\n getStepIdByKey(stepKey: string, index?: number): string {\r\n const stepIds = this.stepKeyIds.get(stepKey);\r\n if (!stepIds) {\r\n throw new Error(`No step IDs found for stepKey ${stepKey}`);\r\n }\r\n\r\n if (index === undefined) {\r\n return stepIds[stepIds.length - 1];\r\n }\r\n\r\n return stepIds[index];\r\n }\r\n\r\n generateStepId(stepKey: string): [string, number] {\r\n const stepIds = this.stepKeyIds.get(stepKey);\r\n let newStepId: string | undefined;\r\n let stepIndex = 0;\r\n if (stepIds) {\r\n stepIndex = stepIds.length;\r\n newStepId = `step_${nanoid()}`;\r\n stepIds.push(newStepId);\r\n this.stepKeyIds.set(stepKey, stepIds);\r\n } else {\r\n newStepId = `step_${nanoid()}`;\r\n this.stepKeyIds.set(stepKey, [newStepId]);\r\n }\r\n\r\n return [newStepId, stepIndex];\r\n }\r\n\r\n getKeyList(\r\n metadata: Record<string, unknown> | undefined\r\n ): (string | number | undefined)[] {\r\n if (!metadata) return [];\r\n\r\n const keyList = [\r\n metadata.run_id as string,\r\n metadata.thread_id as string,\r\n metadata.langgraph_node as string,\r\n metadata.langgraph_step as number,\r\n metadata.checkpoint_ns as string,\r\n ];\r\n if (\r\n this.currentTokenType === ContentTypes.THINK ||\r\n this.currentTokenType === 'think_and_text'\r\n ) {\r\n keyList.push('reasoning');\r\n } else if (this.tokenTypeSwitch === 'content') {\r\n keyList.push('post-reasoning');\r\n }\r\n\r\n if (this.invokedToolIds != null && this.invokedToolIds.size > 0) {\r\n keyList.push(this.invokedToolIds.size + '');\r\n }\r\n\r\n return keyList;\r\n }\r\n\r\n checkKeyList(keyList: (string | number | undefined)[]): boolean {\r\n return keyList.some((key) => key === undefined);\r\n }\r\n\r\n /* Misc.*/\r\n\r\n getRunMessages(): BaseMessage[] | undefined {\r\n return this.messages.slice(this.startIndex);\r\n }\r\n\r\n getContentParts(): t.MessageContentComplex[] | undefined {\r\n return convertMessagesToContent(this.messages.slice(this.startIndex));\r\n }\r\n\r\n /* Graph */\r\n\r\n createGraphState(): t.GraphStateChannels<t.BaseGraphState> {\r\n return {\r\n messages: {\r\n value: (x: BaseMessage[], y: BaseMessage[]): BaseMessage[] => {\r\n if (!x.length) {\r\n if (this.systemMessage) {\r\n x.push(this.systemMessage);\r\n }\r\n\r\n this.startIndex = x.length + y.length;\r\n }\r\n const current = x.concat(y);\r\n this.messages = current;\r\n return current;\r\n },\r\n default: () => [],\r\n },\r\n };\r\n }\r\n\r\n initializeTools():\r\n | CustomToolNode<t.BaseGraphState>\r\n | ToolNode<t.BaseGraphState> {\r\n // return new ToolNode<t.BaseGraphState>(this.tools);\r\n return new CustomToolNode<t.BaseGraphState>({\r\n tools: (this.tools as t.GenericTool[] | undefined) || [],\r\n toolMap: this.toolMap,\r\n toolCallStepIds: this.toolCallStepIds,\r\n errorHandler: (data, metadata) =>\r\n StandardGraph.handleToolCallErrorStatic(this, data, metadata),\r\n });\r\n }\r\n\r\n initializeModel(): Runnable {\r\n const ChatModelClass = getChatModelClass(this.provider);\r\n const model = new ChatModelClass(this.clientOptions);\r\n\r\n if (\r\n isOpenAILike(this.provider) &&\r\n (model instanceof ChatOpenAI || model instanceof AzureChatOpenAI)\r\n ) {\r\n model.temperature = (this.clientOptions as t.OpenAIClientOptions)\r\n .temperature as number;\r\n model.topP = (this.clientOptions as t.OpenAIClientOptions).topP as number;\r\n model.frequencyPenalty = (this.clientOptions as t.OpenAIClientOptions)\r\n .frequencyPenalty as number;\r\n model.presencePenalty = (this.clientOptions as t.OpenAIClientOptions)\r\n .presencePenalty as number;\r\n model.n = (this.clientOptions as t.OpenAIClientOptions).n as number;\r\n } else if (\r\n this.provider === Providers.VERTEXAI &&\r\n model instanceof ChatVertexAI\r\n ) {\r\n model.temperature = (this.clientOptions as t.VertexAIClientOptions)\r\n .temperature as number;\r\n model.topP = (this.clientOptions as t.VertexAIClientOptions)\r\n .topP as number;\r\n model.topK = (this.clientOptions as t.VertexAIClientOptions)\r\n .topK as number;\r\n model.topLogprobs = (this.clientOptions as t.VertexAIClientOptions)\r\n .topLogprobs as number;\r\n model.frequencyPenalty = (this.clientOptions as t.VertexAIClientOptions)\r\n .frequencyPenalty as number;\r\n model.presencePenalty = (this.clientOptions as t.VertexAIClientOptions)\r\n .presencePenalty as number;\r\n model.maxOutputTokens = (this.clientOptions as t.VertexAIClientOptions)\r\n .maxOutputTokens as number;\r\n }\r\n\r\n if (!this.tools || this.tools.length === 0) {\r\n return model as unknown as Runnable;\r\n }\r\n\r\n return (model as t.ModelWithTools).bindTools(this.tools);\r\n }\r\n overrideTestModel(\r\n responses: string[],\r\n sleep?: number,\r\n toolCalls?: ToolCall[]\r\n ): void {\r\n this.boundModel = createFakeStreamingLLM({\r\n responses,\r\n sleep,\r\n toolCalls,\r\n });\r\n }\r\n\r\n getNewModel({\r\n provider,\r\n clientOptions,\r\n omitOptions,\r\n }: {\r\n provider: Providers;\r\n clientOptions?: t.ClientOptions;\r\n omitOptions?: Set<string>;\r\n }): t.ChatModelInstance {\r\n const ChatModelClass = getChatModelClass(provider);\r\n const options =\r\n omitOptions && clientOptions == null\r\n ? Object.assign(\r\n Object.fromEntries(\r\n Object.entries(this.clientOptions).filter(\r\n ([key]) => !omitOptions.has(key)\r\n )\r\n ),\r\n clientOptions\r\n )\r\n : (clientOptions ?? this.clientOptions);\r\n return new ChatModelClass(options);\r\n }\r\n\r\n storeUsageMetadata(finalMessage?: BaseMessage): void {\r\n if (\r\n finalMessage &&\r\n 'usage_metadata' in finalMessage &&\r\n finalMessage.usage_metadata != null\r\n ) {\r\n this.currentUsage = finalMessage.usage_metadata as Partial<UsageMetadata>;\r\n }\r\n }\r\n\r\n cleanupSignalListener(): void {\r\n if (!this.signal) {\r\n return;\r\n }\r\n if (!this.boundModel) {\r\n return;\r\n }\r\n const client = (this.boundModel as ChatOpenAI | undefined)?.exposedClient;\r\n if (!client?.abortHandler) {\r\n return;\r\n }\r\n this.signal.removeEventListener('abort', client.abortHandler);\r\n client.abortHandler = undefined;\r\n }\r\n\r\n createCallModel() {\r\n return async (\r\n state: t.BaseGraphState,\r\n config?: RunnableConfig\r\n ): Promise<Partial<t.BaseGraphState>> => {\r\n const { provider = '' } =\r\n (config?.configurable as t.GraphConfig | undefined) ?? {};\r\n if (this.boundModel == null) {\r\n throw new Error('No Graph model found');\r\n }\r\n if (!config || !provider) {\r\n throw new Error(`No ${config ? 'provider' : 'config'} provided`);\r\n }\r\n if (!config.signal) {\r\n config.signal = this.signal;\r\n }\r\n this.config = config;\r\n const { messages } = state;\r\n\r\n let messagesToUse = messages;\r\n if (\r\n !this.pruneMessages &&\r\n this.tokenCounter &&\r\n this.maxContextTokens != null &&\r\n this.indexTokenCountMap[0] != null\r\n ) {\r\n const isAnthropicWithThinking =\r\n (this.provider === Providers.ANTHROPIC &&\r\n (this.clientOptions as t.AnthropicClientOptions).thinking !=\r\n null) ||\r\n (this.provider === Providers.BEDROCK &&\r\n (this.clientOptions as t.BedrockAnthropicInput)\r\n .additionalModelRequestFields?.['thinking'] != null) ||\r\n (this.provider === Providers.OPENAI &&\r\n (\r\n (this.clientOptions as t.OpenAIClientOptions).modelKwargs\r\n ?.thinking as t.AnthropicClientOptions['thinking']\r\n )?.type === 'enabled');\r\n\r\n this.pruneMessages = createPruneMessages({\r\n provider: this.provider,\r\n indexTokenCountMap: this.indexTokenCountMap,\r\n maxTokens: this.maxContextTokens,\r\n tokenCounter: this.tokenCounter,\r\n startIndex: this.startIndex,\r\n thinkingEnabled: isAnthropicWithThinking,\r\n });\r\n }\r\n if (this.pruneMessages) {\r\n const { context, indexTokenCountMap } = this.pruneMessages({\r\n messages,\r\n usageMetadata: this.currentUsage,\r\n // startOnMessageType: 'human',\r\n });\r\n this.indexTokenCountMap = indexTokenCountMap;\r\n messagesToUse = context;\r\n }\r\n\r\n const finalMessages = messagesToUse;\r\n const lastMessageX =\r\n finalMessages.length >= 2\r\n ? finalMessages[finalMessages.length - 2]\r\n : null;\r\n const lastMessageY =\r\n finalMessages.length >= 1\r\n ? finalMessages[finalMessages.length - 1]\r\n : null;\r\n\r\n if (\r\n provider === Providers.BEDROCK &&\r\n lastMessageX instanceof AIMessageChunk &&\r\n lastMessageY instanceof ToolMessage &&\r\n typeof lastMessageX.content === 'string'\r\n ) {\r\n finalMessages[finalMessages.length - 2].content = '';\r\n }\r\n\r\n const isLatestToolMessage = lastMessageY instanceof ToolMessage;\r\n\r\n if (isLatestToolMessage && provider === Providers.ANTHROPIC) {\r\n formatAnthropicArtifactContent(finalMessages);\r\n } else if (\r\n isLatestToolMessage &&\r\n (isOpenAILike(provider) || isGoogleLike(provider))\r\n ) {\r\n formatArtifactPayload(finalMessages);\r\n }\r\n\r\n if (this.lastStreamCall != null && this.streamBuffer != null) {\r\n const timeSinceLastCall = Date.now() - this.lastStreamCall;\r\n if (timeSinceLastCall < this.streamBuffer) {\r\n const timeToWait =\r\n Math.ceil((this.streamBuffer - timeSinceLastCall) / 1000) * 1000;\r\n await sleep(timeToWait);\r\n }\r\n }\r\n\r\n this.lastStreamCall = Date.now();\r\n\r\n let result: Partial<t.BaseGraphState>;\r\n if (\r\n (this.tools?.length ?? 0) > 0 &&\r\n manualToolStreamProviders.has(provider)\r\n ) {\r\n const stream = await this.boundModel.stream(finalMessages, config);\r\n let finalChunk: AIMessageChunk | undefined;\r\n for await (const chunk of stream) {\r\n dispatchCustomEvent(GraphEvents.CHAT_MODEL_STREAM, { chunk }, config);\r\n if (!finalChunk) {\r\n finalChunk = chunk;\r\n } else {\r\n finalChunk = concat(finalChunk, chunk);\r\n }\r\n }\r\n\r\n finalChunk = modifyDeltaProperties(this.provider, finalChunk);\r\n result = { messages: [finalChunk as AIMessageChunk] };\r\n } else {\r\n const finalMessage = (await this.boundModel.invoke(\r\n finalMessages,\r\n config\r\n )) as AIMessageChunk;\r\n if ((finalMessage.tool_calls?.length ?? 0) > 0) {\r\n finalMessage.tool_calls = finalMessage.tool_calls?.filter(\r\n (tool_call) => {\r\n if (!tool_call.name) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n );\r\n }\r\n result = { messages: [finalMessage] };\r\n }\r\n\r\n this.storeUsageMetadata(result.messages?.[0]);\r\n this.cleanupSignalListener();\r\n return result;\r\n };\r\n }\r\n\r\n createWorkflow(): t.CompiledWorkflow<t.BaseGraphState> {\r\n const routeMessage = (\r\n state: t.BaseGraphState,\r\n config?: RunnableConfig\r\n ): string => {\r\n this.config = config;\r\n return toolsCondition(state, this.invokedToolIds);\r\n };\r\n\r\n const workflow = new StateGraph<t.BaseGraphState>({\r\n channels: this.graphState,\r\n })\r\n .addNode(AGENT, this.createCallModel())\r\n .addNode(TOOLS, this.initializeTools())\r\n .addEdge(START, AGENT)\r\n .addConditionalEdges(AGENT, routeMessage)\r\n .addEdge(TOOLS, this.toolEnd ? END : AGENT);\r\n\r\n return workflow.compile();\r\n }\r\n\r\n /* Dispatchers */\r\n\r\n /**\r\n * Dispatches a run step to the client, returns the step ID\r\n */\r\n dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): string {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n\r\n const [stepId, stepIndex] = this.generateStepId(stepKey);\r\n if (stepDetails.type === StepTypes.TOOL_CALLS && stepDetails.tool_calls) {\r\n for (const tool_call of stepDetails.tool_calls) {\r\n const toolCallId = tool_call.id ?? '';\r\n if (!toolCallId || this.toolCallStepIds.has(toolCallId)) {\r\n continue;\r\n }\r\n this.toolCallStepIds.set(toolCallId, stepId);\r\n }\r\n }\r\n\r\n const runStep: t.RunStep = {\r\n stepIndex,\r\n id: stepId,\r\n type: stepDetails.type,\r\n index: this.contentData.length,\r\n stepDetails,\r\n usage: null,\r\n };\r\n\r\n const runId = this.runId ?? '';\r\n if (runId) {\r\n runStep.runId = runId;\r\n }\r\n\r\n this.contentData.push(runStep);\r\n this.contentIndexMap.set(stepId, runStep.index);\r\n dispatchCustomEvent(GraphEvents.ON_RUN_STEP, runStep, this.config);\r\n return stepId;\r\n }\r\n\r\n handleToolCallCompleted(\r\n data: t.ToolEndData,\r\n metadata?: Record<string, unknown>,\r\n omitOutput?: boolean\r\n ): void {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n\r\n if (!data.output) {\r\n return;\r\n }\r\n\r\n const { input, output } = data;\r\n const { tool_call_id } = output;\r\n const stepId = this.toolCallStepIds.get(tool_call_id) ?? '';\r\n if (!stepId) {\r\n throw new Error(`No stepId found for tool_call_id ${tool_call_id}`);\r\n }\r\n\r\n const runStep = this.getRunStep(stepId);\r\n if (!runStep) {\r\n throw new Error(`No run step found for stepId ${stepId}`);\r\n }\r\n\r\n const dispatchedOutput =\r\n typeof output.content === 'string'\r\n ? output.content\r\n : JSON.stringify(output.content);\r\n\r\n const args = typeof input === 'string' ? input : input.input;\r\n const tool_call = {\r\n args: typeof args === 'string' ? args : JSON.stringify(args),\r\n name: output.name ?? '',\r\n id: output.tool_call_id,\r\n output: omitOutput === true ? '' : dispatchedOutput,\r\n progress: 1,\r\n };\r\n\r\n this.handlerRegistry?.getHandler(GraphEvents.ON_RUN_STEP_COMPLETED)?.handle(\r\n GraphEvents.ON_RUN_STEP_COMPLETED,\r\n {\r\n result: {\r\n id: stepId,\r\n index: runStep.index,\r\n type: 'tool_call',\r\n tool_call,\r\n } as t.ToolCompleteEvent,\r\n },\r\n metadata,\r\n this\r\n );\r\n }\r\n /**\r\n * Static version of handleToolCallError to avoid creating strong references\r\n * that prevent garbage collection\r\n */\r\n static handleToolCallErrorStatic(\r\n graph: StandardGraph,\r\n data: t.ToolErrorData,\r\n metadata?: Record<string, unknown>\r\n ): void {\r\n if (!graph.config) {\r\n throw new Error('No config provided');\r\n }\r\n\r\n if (!data.id) {\r\n console.warn('No Tool ID provided for Tool Error');\r\n return;\r\n }\r\n\r\n const stepId = graph.toolCallStepIds.get(data.id) ?? '';\r\n if (!stepId) {\r\n throw new Error(`No stepId found for tool_call_id ${data.id}`);\r\n }\r\n\r\n const { name, input: args, error } = data;\r\n\r\n const runStep = graph.getRunStep(stepId);\r\n if (!runStep) {\r\n throw new Error(`No run step found for stepId ${stepId}`);\r\n }\r\n\r\n const tool_call: t.ProcessedToolCall = {\r\n id: data.id,\r\n name: name || '',\r\n args: typeof args === 'string' ? args : JSON.stringify(args),\r\n output: `Error processing tool${error?.message != null ? `: ${error.message}` : ''}`,\r\n progress: 1,\r\n };\r\n\r\n graph.handlerRegistry\r\n ?.getHandler(GraphEvents.ON_RUN_STEP_COMPLETED)\r\n ?.handle(\r\n GraphEvents.ON_RUN_STEP_COMPLETED,\r\n {\r\n result: {\r\n id: stepId,\r\n index: runStep.index,\r\n type: 'tool_call',\r\n tool_call,\r\n } as t.ToolCompleteEvent,\r\n },\r\n metadata,\r\n graph\r\n );\r\n }\r\n\r\n /**\r\n * Instance method that delegates to the static method\r\n * Kept for backward compatibility\r\n */\r\n handleToolCallError(\r\n data: t.ToolErrorData,\r\n metadata?: Record<string, unknown>\r\n ): void {\r\n StandardGraph.handleToolCallErrorStatic(this, data, metadata);\r\n }\r\n\r\n dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n } else if (!id) {\r\n throw new Error('No step ID found');\r\n }\r\n const runStepDelta: t.RunStepDeltaEvent = {\r\n id,\r\n delta,\r\n };\r\n dispatchCustomEvent(\r\n GraphEvents.ON_RUN_STEP_DELTA,\r\n runStepDelta,\r\n this.config\r\n );\r\n }\r\n\r\n dispatchMessageDelta(id: string, delta: t.MessageDelta): void {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n const messageDelta: t.MessageDeltaEvent = {\r\n id,\r\n delta,\r\n };\r\n dispatchCustomEvent(\r\n GraphEvents.ON_MESSAGE_DELTA,\r\n messageDelta,\r\n this.config\r\n );\r\n }\r\n\r\n dispatchReasoningDelta = (stepId: string, delta: t.ReasoningDelta): void => {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n const reasoningDelta: t.ReasoningDeltaEvent = {\r\n id: stepId,\r\n delta,\r\n };\r\n dispatchCustomEvent(\r\n GraphEvents.ON_REASONING_DELTA,\r\n reasoningDelta,\r\n this.config\r\n );\r\n };\r\n}\r\n"],"names":["GraphNodeKeys","ContentTypes","Providers","SystemMessage","resetIfNotEmpty","joinKeys","nanoid","convertMessagesToContent","CustomToolNode","getChatModelClass","isOpenAILike","ChatOpenAI","AzureChatOpenAI","ChatVertexAI","createFakeStreamingLLM","messages","createPruneMessages","AIMessageChunk","ToolMessage","formatAnthropicArtifactContent","isGoogleLike","formatArtifactPayload","sleep","manualToolStreamProviders","stream","dispatchCustomEvent","GraphEvents","concat","modifyDeltaProperties","toolsCondition","StateGraph","START","END","StepTypes"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var sdkNode = require('@opentelemetry/sdk-node');
4
+ var otel = require('@langfuse/otel');
5
+ var misc = require('./utils/misc.cjs');
6
+
7
+ if (misc.isPresent(process.env.LANGFUSE_SECRET_KEY) &&
8
+ misc.isPresent(process.env.LANGFUSE_PUBLIC_KEY) &&
9
+ misc.isPresent(process.env.LANGFUSE_BASE_URL)) {
10
+ const langfuseSpanProcessor = new otel.LangfuseSpanProcessor({
11
+ publicKey: process.env.LANGFUSE_PUBLIC_KEY,
12
+ secretKey: process.env.LANGFUSE_SECRET_KEY,
13
+ baseUrl: process.env.LANGFUSE_BASE_URL,
14
+ environment: process.env.NODE_ENV ?? 'development',
15
+ });
16
+ const sdk = new sdkNode.NodeSDK({
17
+ spanProcessors: [langfuseSpanProcessor],
18
+ });
19
+ sdk.start();
20
+ }
21
+ //# sourceMappingURL=instrumentation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.cjs","sources":["../../src/instrumentation.ts"],"sourcesContent":["import { NodeSDK } from '@opentelemetry/sdk-node';\r\nimport { LangfuseSpanProcessor } from '@langfuse/otel';\r\nimport { isPresent } from '@/utils/misc';\r\n\r\nif (\r\n isPresent(process.env.LANGFUSE_SECRET_KEY) &&\r\n isPresent(process.env.LANGFUSE_PUBLIC_KEY) &&\r\n isPresent(process.env.LANGFUSE_BASE_URL)\r\n) {\r\n const langfuseSpanProcessor = new LangfuseSpanProcessor({\r\n publicKey: process.env.LANGFUSE_PUBLIC_KEY,\r\n secretKey: process.env.LANGFUSE_SECRET_KEY,\r\n baseUrl: process.env.LANGFUSE_BASE_URL,\r\n environment: process.env.NODE_ENV ?? 'development',\r\n });\r\n\r\n const sdk = new NodeSDK({\r\n spanProcessors: [langfuseSpanProcessor],\r\n });\r\n\r\n sdk.start();\r\n}\r\n"],"names":["isPresent","LangfuseSpanProcessor","NodeSDK"],"mappings":";;;;;;AAIA,IACEA,cAAS,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC1C,IAAAA,cAAS,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC1CA,cAAS,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EACxC;AACA,IAAA,MAAM,qBAAqB,GAAG,IAAIC,0BAAqB,CAAC;AACtD,QAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;AAC1C,QAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;AAC1C,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;AACtC,QAAA,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;AACnD,KAAA,CAAC;AAEF,IAAA,MAAM,GAAG,GAAG,IAAIC,eAAO,CAAC;QACtB,cAAc,EAAE,CAAC,qBAAqB,CAAC;AACxC,KAAA,CAAC;IAEF,GAAG,CAAC,KAAK,EAAE;AACb;;"}
@@ -0,0 +1,292 @@
1
+ 'use strict';
2
+
3
+ var messages = require('@langchain/core/messages');
4
+ var anthropic = require('@langchain/anthropic');
5
+ var outputs = require('@langchain/core/outputs');
6
+ var message_outputs = require('./utils/message_outputs.cjs');
7
+ var message_inputs = require('./utils/message_inputs.cjs');
8
+ var tools = require('./utils/tools.cjs');
9
+ var text = require('../text.cjs');
10
+
11
+ function _toolsInParams(params) {
12
+ return !!(params.tools && params.tools.length > 0);
13
+ }
14
+ function _documentsInParams(params) {
15
+ for (const message of params.messages ?? []) {
16
+ if (typeof message.content === 'string') {
17
+ continue;
18
+ }
19
+ for (const block of message.content ?? []) {
20
+ if (typeof block === 'object' &&
21
+ block != null &&
22
+ block.type === 'document' &&
23
+ typeof block.citations === 'object' &&
24
+ block.citations.enabled) {
25
+ return true;
26
+ }
27
+ }
28
+ }
29
+ return false;
30
+ }
31
+ function _thinkingInParams(params) {
32
+ return !!(params.thinking && params.thinking.type === 'enabled');
33
+ }
34
+ function extractToken(chunk) {
35
+ if (typeof chunk.content === 'string') {
36
+ return [chunk.content, 'string'];
37
+ }
38
+ else if (Array.isArray(chunk.content) &&
39
+ chunk.content.length >= 1 &&
40
+ 'input' in chunk.content[0]) {
41
+ return typeof chunk.content[0].input === 'string'
42
+ ? [chunk.content[0].input, 'input']
43
+ : [JSON.stringify(chunk.content[0].input), 'input'];
44
+ }
45
+ else if (Array.isArray(chunk.content) &&
46
+ chunk.content.length >= 1 &&
47
+ 'text' in chunk.content[0]) {
48
+ return [chunk.content[0].text, 'content'];
49
+ }
50
+ else if (Array.isArray(chunk.content) &&
51
+ chunk.content.length >= 1 &&
52
+ 'thinking' in chunk.content[0]) {
53
+ return [chunk.content[0].thinking, 'content'];
54
+ }
55
+ return [undefined];
56
+ }
57
+ function cloneChunk(text, tokenType, chunk) {
58
+ if (tokenType === 'string') {
59
+ return new messages.AIMessageChunk(Object.assign({}, chunk, { content: text }));
60
+ }
61
+ else if (tokenType === 'input') {
62
+ return chunk;
63
+ }
64
+ const content = chunk.content[0];
65
+ if (tokenType === 'content' && content.type === 'text') {
66
+ return new messages.AIMessageChunk(Object.assign({}, chunk, {
67
+ content: [Object.assign({}, content, { text })],
68
+ }));
69
+ }
70
+ else if (tokenType === 'content' && content.type === 'text_delta') {
71
+ return new messages.AIMessageChunk(Object.assign({}, chunk, {
72
+ content: [Object.assign({}, content, { text })],
73
+ }));
74
+ }
75
+ else if (tokenType === 'content' && content.type?.startsWith('thinking')) {
76
+ return new messages.AIMessageChunk(Object.assign({}, chunk, {
77
+ content: [Object.assign({}, content, { thinking: text })],
78
+ }));
79
+ }
80
+ return chunk;
81
+ }
82
+ class CustomAnthropic extends anthropic.ChatAnthropicMessages {
83
+ _lc_stream_delay;
84
+ message_start;
85
+ message_delta;
86
+ tools_in_params;
87
+ emitted_usage;
88
+ top_k;
89
+ constructor(fields) {
90
+ super(fields);
91
+ this.resetTokenEvents();
92
+ this.setDirectFields(fields);
93
+ this._lc_stream_delay = fields?._lc_stream_delay ?? 25;
94
+ }
95
+ static lc_name() {
96
+ return 'IllumaAnthropic';
97
+ }
98
+ /**
99
+ * Get the parameters used to invoke the model
100
+ */
101
+ invocationParams(options) {
102
+ const tool_choice = tools.handleToolChoice(options?.tool_choice);
103
+ if (this.thinking.type === 'enabled') {
104
+ if (this.top_k !== -1 && this.top_k != null) {
105
+ throw new Error('topK is not supported when thinking is enabled');
106
+ }
107
+ if (this.topP !== -1 && this.topP != null) {
108
+ throw new Error('topP is not supported when thinking is enabled');
109
+ }
110
+ if (this.temperature !== 1 &&
111
+ this.temperature != null) {
112
+ throw new Error('temperature is not supported when thinking is enabled');
113
+ }
114
+ return {
115
+ model: this.model,
116
+ stop_sequences: options?.stop ?? this.stopSequences,
117
+ stream: this.streaming,
118
+ max_tokens: this.maxTokens,
119
+ tools: this.formatStructuredToolToAnthropic(options?.tools),
120
+ tool_choice,
121
+ thinking: this.thinking,
122
+ ...this.invocationKwargs,
123
+ };
124
+ }
125
+ return {
126
+ model: this.model,
127
+ temperature: this.temperature,
128
+ top_k: this.top_k,
129
+ top_p: this.topP,
130
+ stop_sequences: options?.stop ?? this.stopSequences,
131
+ stream: this.streaming,
132
+ max_tokens: this.maxTokens,
133
+ tools: this.formatStructuredToolToAnthropic(options?.tools),
134
+ tool_choice,
135
+ thinking: this.thinking,
136
+ ...this.invocationKwargs,
137
+ };
138
+ }
139
+ /**
140
+ * Get stream usage as returned by this client's API response.
141
+ * @returns The stream usage object.
142
+ */
143
+ getStreamUsage() {
144
+ if (this.emitted_usage === true) {
145
+ return;
146
+ }
147
+ const inputUsage = this.message_start?.message.usage;
148
+ const outputUsage = this.message_delta?.usage;
149
+ if (!outputUsage) {
150
+ return;
151
+ }
152
+ const totalUsage = {
153
+ input_tokens: inputUsage?.input_tokens ?? 0,
154
+ output_tokens: outputUsage.output_tokens ?? 0,
155
+ total_tokens: (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),
156
+ };
157
+ if (inputUsage?.cache_creation_input_tokens != null ||
158
+ inputUsage?.cache_read_input_tokens != null) {
159
+ totalUsage.input_token_details = {
160
+ cache_creation: inputUsage.cache_creation_input_tokens ?? 0,
161
+ cache_read: inputUsage.cache_read_input_tokens ?? 0,
162
+ };
163
+ }
164
+ this.emitted_usage = true;
165
+ return totalUsage;
166
+ }
167
+ resetTokenEvents() {
168
+ this.message_start = undefined;
169
+ this.message_delta = undefined;
170
+ this.emitted_usage = undefined;
171
+ this.tools_in_params = undefined;
172
+ }
173
+ setDirectFields(fields) {
174
+ this.temperature = fields?.temperature ?? undefined;
175
+ this.topP = fields?.topP ?? undefined;
176
+ this.top_k = fields?.topK;
177
+ if (this.temperature === -1 || this.temperature === 1) {
178
+ this.temperature = undefined;
179
+ }
180
+ if (this.topP === -1) {
181
+ this.topP = undefined;
182
+ }
183
+ if (this.top_k === -1) {
184
+ this.top_k = undefined;
185
+ }
186
+ }
187
+ createGenerationChunk({ token, chunk, usageMetadata, shouldStreamUsage, }) {
188
+ const usage_metadata = shouldStreamUsage
189
+ ? (usageMetadata ?? chunk.usage_metadata)
190
+ : undefined;
191
+ return new outputs.ChatGenerationChunk({
192
+ message: new messages.AIMessageChunk({
193
+ // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().
194
+ content: chunk.content,
195
+ additional_kwargs: chunk.additional_kwargs,
196
+ tool_call_chunks: chunk.tool_call_chunks,
197
+ response_metadata: chunk.response_metadata,
198
+ usage_metadata,
199
+ id: chunk.id,
200
+ }),
201
+ text: token ?? '',
202
+ });
203
+ }
204
+ async *_streamResponseChunks(messages, options, runManager) {
205
+ this.resetTokenEvents();
206
+ const params = this.invocationParams(options);
207
+ const formattedMessages = message_inputs._convertMessagesToAnthropicPayload(messages);
208
+ const payload = {
209
+ ...params,
210
+ ...formattedMessages,
211
+ stream: true,
212
+ };
213
+ const coerceContentToString = !_toolsInParams(payload) &&
214
+ !_documentsInParams(payload) &&
215
+ !_thinkingInParams(payload);
216
+ const stream = await this.createStreamWithRetry(payload, {
217
+ headers: options.headers,
218
+ });
219
+ const shouldStreamUsage = this.streamUsage ?? options.streamUsage;
220
+ for await (const data of stream) {
221
+ if (options.signal?.aborted === true) {
222
+ stream.controller.abort();
223
+ throw new Error('AbortError: User aborted the request.');
224
+ }
225
+ if (data.type === 'message_start') {
226
+ this.message_start = data;
227
+ }
228
+ else if (data.type === 'message_delta') {
229
+ this.message_delta = data;
230
+ }
231
+ let usageMetadata;
232
+ if (this.tools_in_params !== true && this.emitted_usage !== true) {
233
+ usageMetadata = this.getStreamUsage();
234
+ }
235
+ const result = message_outputs._makeMessageChunkFromAnthropicEvent(data, {
236
+ streamUsage: shouldStreamUsage,
237
+ coerceContentToString,
238
+ });
239
+ if (!result)
240
+ continue;
241
+ const { chunk } = result;
242
+ const [token = '', tokenType] = extractToken(chunk);
243
+ if (!tokenType ||
244
+ tokenType === 'input' ||
245
+ (token === '' && (usageMetadata != null || chunk.id != null))) {
246
+ const generationChunk = this.createGenerationChunk({
247
+ token,
248
+ chunk,
249
+ usageMetadata,
250
+ shouldStreamUsage,
251
+ });
252
+ yield generationChunk;
253
+ await runManager?.handleLLMNewToken(token, undefined, undefined, undefined, undefined, { chunk: generationChunk });
254
+ continue;
255
+ }
256
+ const textStream = new text.TextStream(token, {
257
+ delay: this._lc_stream_delay,
258
+ firstWordChunk: true,
259
+ minChunkSize: 4,
260
+ maxChunkSize: 8,
261
+ });
262
+ const generator = textStream.generateText(options.signal);
263
+ try {
264
+ let emittedUsage = false;
265
+ for await (const currentToken of generator) {
266
+ if (options.signal?.aborted === true) {
267
+ break;
268
+ }
269
+ const newChunk = cloneChunk(currentToken, tokenType, chunk);
270
+ const generationChunk = this.createGenerationChunk({
271
+ token: currentToken,
272
+ chunk: newChunk,
273
+ usageMetadata: emittedUsage ? undefined : usageMetadata,
274
+ shouldStreamUsage,
275
+ });
276
+ if (usageMetadata && !emittedUsage) {
277
+ emittedUsage = true;
278
+ }
279
+ yield generationChunk;
280
+ await runManager?.handleLLMNewToken(currentToken, undefined, undefined, undefined, undefined, { chunk: generationChunk });
281
+ }
282
+ }
283
+ finally {
284
+ await generator.return();
285
+ }
286
+ }
287
+ this.resetTokenEvents();
288
+ }
289
+ }
290
+
291
+ exports.CustomAnthropic = CustomAnthropic;
292
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/llm/anthropic/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\r\nimport { ChatAnthropicMessages } from '@langchain/anthropic';\r\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\r\nimport type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';\r\nimport type {\r\n BaseMessage,\r\n UsageMetadata,\r\n MessageContentComplex,\r\n} from '@langchain/core/messages';\r\nimport type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\r\nimport type { AnthropicInput } from '@langchain/anthropic';\r\nimport type { Anthropic } from '@anthropic-ai/sdk';\r\nimport type {\r\n AnthropicMessageCreateParams,\r\n AnthropicStreamingMessageCreateParams,\r\n AnthropicStreamUsage,\r\n AnthropicMessageStartEvent,\r\n AnthropicMessageDeltaEvent,\r\n} from '@/llm/anthropic/types';\r\nimport { _makeMessageChunkFromAnthropicEvent } from './utils/message_outputs';\r\nimport { _convertMessagesToAnthropicPayload } from './utils/message_inputs';\r\nimport { handleToolChoice } from './utils/tools';\r\nimport { TextStream } from '@/llm/text';\r\n\r\nfunction _toolsInParams(\r\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\r\n): boolean {\r\n return !!(params.tools && params.tools.length > 0);\r\n}\r\nfunction _documentsInParams(\r\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\r\n): boolean {\r\n for (const message of params.messages ?? []) {\r\n if (typeof message.content === 'string') {\r\n continue;\r\n }\r\n for (const block of message.content ?? []) {\r\n if (\r\n typeof block === 'object' &&\r\n block != null &&\r\n block.type === 'document' &&\r\n typeof block.citations === 'object' &&\r\n block.citations.enabled\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction _thinkingInParams(\r\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\r\n): boolean {\r\n return !!(params.thinking && params.thinking.type === 'enabled');\r\n}\r\n\r\nfunction extractToken(\r\n chunk: AIMessageChunk\r\n): [string, 'string' | 'input' | 'content'] | [undefined] {\r\n if (typeof chunk.content === 'string') {\r\n return [chunk.content, 'string'];\r\n } else if (\r\n Array.isArray(chunk.content) &&\r\n chunk.content.length >= 1 &&\r\n 'input' in chunk.content[0]\r\n ) {\r\n return typeof chunk.content[0].input === 'string'\r\n ? [chunk.content[0].input, 'input']\r\n : [JSON.stringify(chunk.content[0].input), 'input'];\r\n } else if (\r\n Array.isArray(chunk.content) &&\r\n chunk.content.length >= 1 &&\r\n 'text' in chunk.content[0]\r\n ) {\r\n return [chunk.content[0].text, 'content'];\r\n } else if (\r\n Array.isArray(chunk.content) &&\r\n chunk.content.length >= 1 &&\r\n 'thinking' in chunk.content[0]\r\n ) {\r\n return [chunk.content[0].thinking, 'content'];\r\n }\r\n return [undefined];\r\n}\r\n\r\nfunction cloneChunk(\r\n text: string,\r\n tokenType: string,\r\n chunk: AIMessageChunk\r\n): AIMessageChunk {\r\n if (tokenType === 'string') {\r\n return new AIMessageChunk(Object.assign({}, chunk, { content: text }));\r\n } else if (tokenType === 'input') {\r\n return chunk;\r\n }\r\n const content = chunk.content[0] as MessageContentComplex;\r\n if (tokenType === 'content' && content.type === 'text') {\r\n return new AIMessageChunk(\r\n Object.assign({}, chunk, {\r\n content: [Object.assign({}, content, { text })],\r\n })\r\n );\r\n } else if (tokenType === 'content' && content.type === 'text_delta') {\r\n return new AIMessageChunk(\r\n Object.assign({}, chunk, {\r\n content: [Object.assign({}, content, { text })],\r\n })\r\n );\r\n } else if (tokenType === 'content' && content.type?.startsWith('thinking')) {\r\n return new AIMessageChunk(\r\n Object.assign({}, chunk, {\r\n content: [Object.assign({}, content, { thinking: text })],\r\n })\r\n );\r\n }\r\n\r\n return chunk;\r\n}\r\n\r\nexport type CustomAnthropicInput = AnthropicInput & {\r\n _lc_stream_delay?: number;\r\n} & BaseChatModelParams;\r\n\r\n/**\r\n * A type representing additional parameters that can be passed to the\r\n * Anthropic API.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype Kwargs = Record<string, any>;\r\n\r\nexport class CustomAnthropic extends ChatAnthropicMessages {\r\n _lc_stream_delay: number;\r\n private message_start: AnthropicMessageStartEvent | undefined;\r\n private message_delta: AnthropicMessageDeltaEvent | undefined;\r\n private tools_in_params?: boolean;\r\n private emitted_usage?: boolean;\r\n top_k: number | undefined;\r\n constructor(fields?: CustomAnthropicInput) {\r\n super(fields);\r\n this.resetTokenEvents();\r\n this.setDirectFields(fields);\r\n this._lc_stream_delay = fields?._lc_stream_delay ?? 25;\r\n }\r\n\r\n static lc_name(): 'IllumaAnthropic' {\r\n return 'IllumaAnthropic';\r\n }\r\n\r\n /**\r\n * Get the parameters used to invoke the model\r\n */\r\n override invocationParams(\r\n options?: this['ParsedCallOptions']\r\n ): Omit<\r\n AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams,\r\n 'messages'\r\n > &\r\n Kwargs {\r\n const tool_choice:\r\n | Anthropic.Messages.ToolChoiceAuto\r\n | Anthropic.Messages.ToolChoiceAny\r\n | Anthropic.Messages.ToolChoiceTool\r\n | undefined = handleToolChoice(options?.tool_choice);\r\n\r\n if (this.thinking.type === 'enabled') {\r\n if (this.top_k !== -1 && (this.top_k as number | undefined) != null) {\r\n throw new Error('topK is not supported when thinking is enabled');\r\n }\r\n if (this.topP !== -1 && (this.topP as number | undefined) != null) {\r\n throw new Error('topP is not supported when thinking is enabled');\r\n }\r\n if (\r\n this.temperature !== 1 &&\r\n (this.temperature as number | undefined) != null\r\n ) {\r\n throw new Error(\r\n 'temperature is not supported when thinking is enabled'\r\n );\r\n }\r\n\r\n return {\r\n model: this.model,\r\n stop_sequences: options?.stop ?? this.stopSequences,\r\n stream: this.streaming,\r\n max_tokens: this.maxTokens,\r\n tools: this.formatStructuredToolToAnthropic(options?.tools),\r\n tool_choice,\r\n thinking: this.thinking,\r\n ...this.invocationKwargs,\r\n };\r\n }\r\n return {\r\n model: this.model,\r\n temperature: this.temperature,\r\n top_k: this.top_k,\r\n top_p: this.topP,\r\n stop_sequences: options?.stop ?? this.stopSequences,\r\n stream: this.streaming,\r\n max_tokens: this.maxTokens,\r\n tools: this.formatStructuredToolToAnthropic(options?.tools),\r\n tool_choice,\r\n thinking: this.thinking,\r\n ...this.invocationKwargs,\r\n };\r\n }\r\n\r\n /**\r\n * Get stream usage as returned by this client's API response.\r\n * @returns The stream usage object.\r\n */\r\n getStreamUsage(): UsageMetadata | undefined {\r\n if (this.emitted_usage === true) {\r\n return;\r\n }\r\n const inputUsage = this.message_start?.message.usage as\r\n | undefined\r\n | AnthropicStreamUsage;\r\n const outputUsage = this.message_delta?.usage as\r\n | undefined\r\n | Partial<AnthropicStreamUsage>;\r\n if (!outputUsage) {\r\n return;\r\n }\r\n const totalUsage: UsageMetadata = {\r\n input_tokens: inputUsage?.input_tokens ?? 0,\r\n output_tokens: outputUsage.output_tokens ?? 0,\r\n total_tokens:\r\n (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),\r\n };\r\n\r\n if (\r\n inputUsage?.cache_creation_input_tokens != null ||\r\n inputUsage?.cache_read_input_tokens != null\r\n ) {\r\n totalUsage.input_token_details = {\r\n cache_creation: inputUsage.cache_creation_input_tokens ?? 0,\r\n cache_read: inputUsage.cache_read_input_tokens ?? 0,\r\n };\r\n }\r\n\r\n this.emitted_usage = true;\r\n return totalUsage;\r\n }\r\n\r\n resetTokenEvents(): void {\r\n this.message_start = undefined;\r\n this.message_delta = undefined;\r\n this.emitted_usage = undefined;\r\n this.tools_in_params = undefined;\r\n }\r\n\r\n setDirectFields(fields?: CustomAnthropicInput): void {\r\n this.temperature = fields?.temperature ?? undefined;\r\n this.topP = fields?.topP ?? undefined;\r\n this.top_k = fields?.topK;\r\n if (this.temperature === -1 || this.temperature === 1) {\r\n this.temperature = undefined;\r\n }\r\n if (this.topP === -1) {\r\n this.topP = undefined;\r\n }\r\n if (this.top_k === -1) {\r\n this.top_k = undefined;\r\n }\r\n }\r\n\r\n private createGenerationChunk({\r\n token,\r\n chunk,\r\n usageMetadata,\r\n shouldStreamUsage,\r\n }: {\r\n token?: string;\r\n chunk: AIMessageChunk;\r\n shouldStreamUsage: boolean;\r\n usageMetadata?: UsageMetadata;\r\n }): ChatGenerationChunk {\r\n const usage_metadata = shouldStreamUsage\r\n ? (usageMetadata ?? chunk.usage_metadata)\r\n : undefined;\r\n return new ChatGenerationChunk({\r\n message: new AIMessageChunk({\r\n // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().\r\n content: chunk.content,\r\n additional_kwargs: chunk.additional_kwargs,\r\n tool_call_chunks: chunk.tool_call_chunks,\r\n response_metadata: chunk.response_metadata,\r\n usage_metadata,\r\n id: chunk.id,\r\n }),\r\n text: token ?? '',\r\n });\r\n }\r\n\r\n async *_streamResponseChunks(\r\n messages: BaseMessage[],\r\n options: this['ParsedCallOptions'],\r\n runManager?: CallbackManagerForLLMRun\r\n ): AsyncGenerator<ChatGenerationChunk> {\r\n this.resetTokenEvents();\r\n const params = this.invocationParams(options);\r\n const formattedMessages = _convertMessagesToAnthropicPayload(messages);\r\n const payload = {\r\n ...params,\r\n ...formattedMessages,\r\n stream: true,\r\n } as const;\r\n const coerceContentToString =\r\n !_toolsInParams(payload) &&\r\n !_documentsInParams(payload) &&\r\n !_thinkingInParams(payload);\r\n\r\n const stream = await this.createStreamWithRetry(payload, {\r\n headers: options.headers,\r\n });\r\n\r\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\r\n\r\n for await (const data of stream) {\r\n if (options.signal?.aborted === true) {\r\n stream.controller.abort();\r\n throw new Error('AbortError: User aborted the request.');\r\n }\r\n\r\n if (data.type === 'message_start') {\r\n this.message_start = data as AnthropicMessageStartEvent;\r\n } else if (data.type === 'message_delta') {\r\n this.message_delta = data as AnthropicMessageDeltaEvent;\r\n }\r\n\r\n let usageMetadata: UsageMetadata | undefined;\r\n if (this.tools_in_params !== true && this.emitted_usage !== true) {\r\n usageMetadata = this.getStreamUsage();\r\n }\r\n\r\n const result = _makeMessageChunkFromAnthropicEvent(data, {\r\n streamUsage: shouldStreamUsage,\r\n coerceContentToString,\r\n });\r\n if (!result) continue;\r\n\r\n const { chunk } = result;\r\n const [token = '', tokenType] = extractToken(chunk);\r\n\r\n if (\r\n !tokenType ||\r\n tokenType === 'input' ||\r\n (token === '' && (usageMetadata != null || chunk.id != null))\r\n ) {\r\n const generationChunk = this.createGenerationChunk({\r\n token,\r\n chunk,\r\n usageMetadata,\r\n shouldStreamUsage,\r\n });\r\n yield generationChunk;\r\n await runManager?.handleLLMNewToken(\r\n token,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n { chunk: generationChunk }\r\n );\r\n continue;\r\n }\r\n\r\n const textStream = new TextStream(token, {\r\n delay: this._lc_stream_delay,\r\n firstWordChunk: true,\r\n minChunkSize: 4,\r\n maxChunkSize: 8,\r\n });\r\n\r\n const generator = textStream.generateText(options.signal);\r\n try {\r\n let emittedUsage = false;\r\n for await (const currentToken of generator) {\r\n if ((options.signal as AbortSignal | undefined)?.aborted === true) {\r\n break;\r\n }\r\n const newChunk = cloneChunk(currentToken, tokenType, chunk);\r\n\r\n const generationChunk = this.createGenerationChunk({\r\n token: currentToken,\r\n chunk: newChunk,\r\n usageMetadata: emittedUsage ? undefined : usageMetadata,\r\n shouldStreamUsage,\r\n });\r\n\r\n if (usageMetadata && !emittedUsage) {\r\n emittedUsage = true;\r\n }\r\n yield generationChunk;\r\n\r\n await runManager?.handleLLMNewToken(\r\n currentToken,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n { chunk: generationChunk }\r\n );\r\n }\r\n } finally {\r\n await generator.return();\r\n }\r\n }\r\n\r\n this.resetTokenEvents();\r\n }\r\n}\r\n"],"names":["AIMessageChunk","ChatAnthropicMessages","handleToolChoice","ChatGenerationChunk","_convertMessagesToAnthropicPayload","_makeMessageChunkFromAnthropicEvent","TextStream"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ function isAnthropicImageBlockParam(block) {
4
+ if (block == null) {
5
+ return false;
6
+ }
7
+ if (typeof block !== 'object') {
8
+ return false;
9
+ }
10
+ if (!('type' in block) || block.type !== 'image') {
11
+ return false;
12
+ }
13
+ if (!('source' in block) || typeof block.source !== 'object') {
14
+ return false;
15
+ }
16
+ if (block.source == null) {
17
+ return false;
18
+ }
19
+ if (!('type' in block.source)) {
20
+ return false;
21
+ }
22
+ if (block.source.type === 'base64') {
23
+ if (!('media_type' in block.source)) {
24
+ return false;
25
+ }
26
+ if (typeof block.source.media_type !== 'string') {
27
+ return false;
28
+ }
29
+ if (!('data' in block.source)) {
30
+ return false;
31
+ }
32
+ if (typeof block.source.data !== 'string') {
33
+ return false;
34
+ }
35
+ return true;
36
+ }
37
+ if (block.source.type === 'url') {
38
+ if (!('url' in block.source)) {
39
+ return false;
40
+ }
41
+ if (typeof block.source.url !== 'string') {
42
+ return false;
43
+ }
44
+ return true;
45
+ }
46
+ return false;
47
+ }
48
+
49
+ exports.isAnthropicImageBlockParam = isAnthropicImageBlockParam;
50
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sources":["../../../../src/llm/anthropic/types.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\r\nimport { BindToolsInput } from '@langchain/core/language_models/chat_models';\r\n\r\nexport type AnthropicStreamUsage = Anthropic.Usage;\r\nexport type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;\r\nexport type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;\r\n\r\nexport type AnthropicToolResponse = {\r\n type: 'tool_use';\r\n id: string;\r\n name: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n input: Record<string, any>;\r\n};\r\n\r\nexport type AnthropicMessageParam = Anthropic.MessageParam;\r\nexport type AnthropicMessageResponse =\r\n | Anthropic.ContentBlock\r\n | AnthropicToolResponse;\r\nexport type AnthropicMessageCreateParams =\r\n Anthropic.MessageCreateParamsNonStreaming;\r\nexport type AnthropicStreamingMessageCreateParams =\r\n Anthropic.MessageCreateParamsStreaming;\r\nexport type AnthropicThinkingConfigParam = Anthropic.ThinkingConfigParam;\r\nexport type AnthropicMessageStreamEvent = Anthropic.MessageStreamEvent;\r\nexport type AnthropicRequestOptions = Anthropic.RequestOptions;\r\nexport type AnthropicToolChoice =\r\n | {\r\n type: 'tool';\r\n name: string;\r\n }\r\n | 'any'\r\n | 'auto'\r\n | 'none'\r\n | string;\r\nexport type ChatAnthropicToolType = Anthropic.Messages.Tool | BindToolsInput;\r\nexport type AnthropicTextBlockParam = Anthropic.Messages.TextBlockParam;\r\nexport type AnthropicImageBlockParam = Anthropic.Messages.ImageBlockParam;\r\nexport type AnthropicToolUseBlockParam = Anthropic.Messages.ToolUseBlockParam;\r\nexport type AnthropicToolResultBlockParam =\r\n Anthropic.Messages.ToolResultBlockParam;\r\nexport type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;\r\nexport type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;\r\nexport type AnthropicRedactedThinkingBlockParam =\r\n Anthropic.Messages.RedactedThinkingBlockParam;\r\nexport type AnthropicServerToolUseBlockParam =\r\n Anthropic.Messages.ServerToolUseBlockParam;\r\nexport type AnthropicWebSearchToolResultBlockParam =\r\n Anthropic.Messages.WebSearchToolResultBlockParam;\r\nexport type AnthropicWebSearchResultBlockParam =\r\n Anthropic.Messages.WebSearchResultBlockParam;\r\nexport type AnthropicSearchResultBlockParam =\r\n Anthropic.Beta.BetaSearchResultBlockParam;\r\n\r\n// Union of all possible content block types including server tool use\r\nexport type AnthropicContentBlock =\r\n | AnthropicTextBlockParam\r\n | AnthropicImageBlockParam\r\n | AnthropicToolUseBlockParam\r\n | AnthropicToolResultBlockParam\r\n | AnthropicDocumentBlockParam\r\n | AnthropicThinkingBlockParam\r\n | AnthropicRedactedThinkingBlockParam\r\n | AnthropicServerToolUseBlockParam\r\n | AnthropicWebSearchToolResultBlockParam\r\n | AnthropicWebSearchResultBlockParam;\r\n\r\n// Union of all possible content block types including server tool use\r\nexport type ChatAnthropicContentBlock =\r\n | AnthropicTextBlockParam\r\n | AnthropicImageBlockParam\r\n | AnthropicToolUseBlockParam\r\n | AnthropicToolResultBlockParam\r\n | AnthropicDocumentBlockParam\r\n | AnthropicThinkingBlockParam\r\n | AnthropicRedactedThinkingBlockParam\r\n | AnthropicServerToolUseBlockParam\r\n | AnthropicWebSearchToolResultBlockParam\r\n | AnthropicWebSearchResultBlockParam\r\n | AnthropicSearchResultBlockParam;\r\n\r\nexport function isAnthropicImageBlockParam(\r\n block: unknown\r\n): block is AnthropicImageBlockParam {\r\n if (block == null) {\r\n return false;\r\n }\r\n if (typeof block !== 'object') {\r\n return false;\r\n }\r\n if (!('type' in block) || block.type !== 'image') {\r\n return false;\r\n }\r\n\r\n if (!('source' in block) || typeof block.source !== 'object') {\r\n return false;\r\n }\r\n\r\n if (block.source == null) {\r\n return false;\r\n }\r\n\r\n if (!('type' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (block.source.type === 'base64') {\r\n if (!('media_type' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (typeof block.source.media_type !== 'string') {\r\n return false;\r\n }\r\n\r\n if (!('data' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (typeof block.source.data !== 'string') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (block.source.type === 'url') {\r\n if (!('url' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (typeof block.source.url !== 'string') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n"],"names":[],"mappings":";;AAiFM,SAAU,0BAA0B,CACxC,KAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;;AAEd,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;;AAEd,IAAA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChD,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5D,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,KAAK;;IAGd,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK;;IAGd,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAClC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;;QAGd,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,KAAK;;QAGd,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK;;QAGd,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;IAGb,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QAC/B,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,KAAK;;QAGd,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,KAAK;AACd;;;;"}