@langchain/core 1.0.0-alpha.2 → 1.0.0-alpha.4

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 (595) hide show
  1. package/README.md +3 -19
  2. package/dist/agents.d.ts.map +1 -1
  3. package/dist/caches/base.cjs +5 -18
  4. package/dist/caches/base.cjs.map +1 -1
  5. package/dist/caches/base.d.cts +4 -20
  6. package/dist/caches/base.d.cts.map +1 -1
  7. package/dist/caches/base.d.ts +4 -20
  8. package/dist/caches/base.d.ts.map +1 -1
  9. package/dist/caches/base.js +5 -18
  10. package/dist/caches/base.js.map +1 -1
  11. package/dist/callbacks/base.d.cts +3 -2
  12. package/dist/callbacks/base.d.cts.map +1 -1
  13. package/dist/callbacks/base.d.ts +3 -2
  14. package/dist/callbacks/base.d.ts.map +1 -1
  15. package/dist/callbacks/manager.d.cts +1 -1
  16. package/dist/callbacks/manager.d.ts +1 -1
  17. package/dist/document_loaders/langsmith.cjs +1 -1
  18. package/dist/document_loaders/langsmith.cjs.map +1 -1
  19. package/dist/document_loaders/langsmith.js +1 -1
  20. package/dist/document_loaders/langsmith.js.map +1 -1
  21. package/dist/embeddings.cjs.map +1 -1
  22. package/dist/embeddings.d.cts +6 -6
  23. package/dist/embeddings.d.cts.map +1 -1
  24. package/dist/embeddings.d.ts +6 -6
  25. package/dist/embeddings.d.ts.map +1 -1
  26. package/dist/embeddings.js.map +1 -1
  27. package/dist/errors/index.cjs.map +1 -1
  28. package/dist/errors/index.js.map +1 -1
  29. package/dist/indexing/base.cjs +2 -2
  30. package/dist/indexing/base.cjs.map +1 -1
  31. package/dist/indexing/base.d.cts +0 -3
  32. package/dist/indexing/base.d.cts.map +1 -1
  33. package/dist/indexing/base.d.ts +0 -3
  34. package/dist/indexing/base.d.ts.map +1 -1
  35. package/dist/indexing/base.js +2 -2
  36. package/dist/indexing/base.js.map +1 -1
  37. package/dist/language_models/base.cjs +1 -1
  38. package/dist/language_models/base.cjs.map +1 -1
  39. package/dist/language_models/base.d.cts +4 -4
  40. package/dist/language_models/base.d.cts.map +1 -1
  41. package/dist/language_models/base.d.ts +4 -4
  42. package/dist/language_models/base.d.ts.map +1 -1
  43. package/dist/language_models/base.js +1 -1
  44. package/dist/language_models/base.js.map +1 -1
  45. package/dist/language_models/chat_models.cjs +1 -0
  46. package/dist/language_models/chat_models.cjs.map +1 -1
  47. package/dist/language_models/chat_models.d.cts +2 -1
  48. package/dist/language_models/chat_models.d.cts.map +1 -1
  49. package/dist/language_models/chat_models.d.ts +2 -1
  50. package/dist/language_models/chat_models.d.ts.map +1 -1
  51. package/dist/language_models/chat_models.js +2 -1
  52. package/dist/language_models/chat_models.js.map +1 -1
  53. package/dist/language_models/llms.cjs.map +1 -1
  54. package/dist/language_models/llms.js.map +1 -1
  55. package/dist/load/import_map.cjs +1 -5
  56. package/dist/load/import_map.cjs.map +1 -1
  57. package/dist/load/import_map.js +3 -7
  58. package/dist/load/import_map.js.map +1 -1
  59. package/dist/load/index.cjs.map +1 -1
  60. package/dist/load/index.js.map +1 -1
  61. package/dist/load/serializable.cjs.map +1 -1
  62. package/dist/load/serializable.d.cts +1 -3
  63. package/dist/load/serializable.d.cts.map +1 -1
  64. package/dist/load/serializable.d.ts +1 -3
  65. package/dist/load/serializable.d.ts.map +1 -1
  66. package/dist/load/serializable.js.map +1 -1
  67. package/dist/messages/ai.cjs +34 -62
  68. package/dist/messages/ai.cjs.map +1 -1
  69. package/dist/messages/ai.d.cts +26 -119
  70. package/dist/messages/ai.d.cts.map +1 -1
  71. package/dist/messages/ai.d.ts +26 -119
  72. package/dist/messages/ai.d.ts.map +1 -1
  73. package/dist/messages/ai.js +34 -62
  74. package/dist/messages/ai.js.map +1 -1
  75. package/dist/messages/base.cjs +53 -33
  76. package/dist/messages/base.cjs.map +1 -1
  77. package/dist/messages/base.d.cts +38 -41
  78. package/dist/messages/base.d.cts.map +1 -1
  79. package/dist/messages/base.d.ts +38 -41
  80. package/dist/messages/base.d.ts.map +1 -1
  81. package/dist/messages/base.js +53 -33
  82. package/dist/messages/base.js.map +1 -1
  83. package/dist/messages/block_translators/utils.cjs +1 -1
  84. package/dist/messages/block_translators/utils.cjs.map +1 -1
  85. package/dist/messages/block_translators/utils.js +1 -1
  86. package/dist/messages/block_translators/utils.js.map +1 -1
  87. package/dist/messages/chat.cjs +18 -12
  88. package/dist/messages/chat.cjs.map +1 -1
  89. package/dist/messages/chat.d.cts +21 -13
  90. package/dist/messages/chat.d.cts.map +1 -1
  91. package/dist/messages/chat.d.ts +21 -13
  92. package/dist/messages/chat.d.ts.map +1 -1
  93. package/dist/messages/chat.js +18 -12
  94. package/dist/messages/chat.js.map +1 -1
  95. package/dist/messages/content/index.cjs.map +1 -1
  96. package/dist/messages/content/index.d.cts +1 -1
  97. package/dist/messages/content/index.d.cts.map +1 -1
  98. package/dist/messages/content/index.d.ts +1 -1
  99. package/dist/messages/content/index.d.ts.map +1 -1
  100. package/dist/messages/content/index.js.map +1 -1
  101. package/dist/messages/function.cjs +8 -13
  102. package/dist/messages/function.cjs.map +1 -1
  103. package/dist/messages/function.d.cts +11 -11
  104. package/dist/messages/function.d.cts.map +1 -1
  105. package/dist/messages/function.d.ts +11 -11
  106. package/dist/messages/function.d.ts.map +1 -1
  107. package/dist/messages/function.js +8 -13
  108. package/dist/messages/function.js.map +1 -1
  109. package/dist/messages/human.cjs +20 -11
  110. package/dist/messages/human.cjs.map +1 -1
  111. package/dist/messages/human.d.cts +20 -15
  112. package/dist/messages/human.d.cts.map +1 -1
  113. package/dist/messages/human.d.ts +20 -15
  114. package/dist/messages/human.d.ts.map +1 -1
  115. package/dist/messages/human.js +20 -11
  116. package/dist/messages/human.js.map +1 -1
  117. package/dist/messages/index.cjs +11 -1
  118. package/dist/messages/index.cjs.map +1 -1
  119. package/dist/messages/index.d.cts +9 -7
  120. package/dist/messages/index.d.ts +9 -7
  121. package/dist/messages/index.js +8 -2
  122. package/dist/messages/index.js.map +1 -1
  123. package/dist/messages/message.cjs +15 -0
  124. package/dist/messages/message.cjs.map +1 -0
  125. package/dist/messages/message.d.cts +598 -0
  126. package/dist/messages/message.d.cts.map +1 -0
  127. package/dist/messages/message.d.ts +598 -0
  128. package/dist/messages/message.d.ts.map +1 -0
  129. package/dist/messages/message.js +14 -0
  130. package/dist/messages/message.js.map +1 -0
  131. package/dist/messages/metadata.cjs +41 -0
  132. package/dist/messages/metadata.cjs.map +1 -0
  133. package/dist/messages/metadata.d.cts +98 -0
  134. package/dist/messages/metadata.d.cts.map +1 -0
  135. package/dist/messages/metadata.d.ts +98 -0
  136. package/dist/messages/metadata.d.ts.map +1 -0
  137. package/dist/messages/metadata.js +40 -0
  138. package/dist/messages/metadata.js.map +1 -0
  139. package/dist/messages/modifier.cjs +5 -4
  140. package/dist/messages/modifier.cjs.map +1 -1
  141. package/dist/messages/modifier.d.cts +7 -5
  142. package/dist/messages/modifier.d.cts.map +1 -1
  143. package/dist/messages/modifier.d.ts +7 -5
  144. package/dist/messages/modifier.d.ts.map +1 -1
  145. package/dist/messages/modifier.js +5 -4
  146. package/dist/messages/modifier.js.map +1 -1
  147. package/dist/messages/system.cjs +20 -11
  148. package/dist/messages/system.cjs.map +1 -1
  149. package/dist/messages/system.d.cts +20 -15
  150. package/dist/messages/system.d.cts.map +1 -1
  151. package/dist/messages/system.d.ts +20 -15
  152. package/dist/messages/system.d.ts.map +1 -1
  153. package/dist/messages/system.js +20 -11
  154. package/dist/messages/system.js.map +1 -1
  155. package/dist/messages/tool.cjs +21 -19
  156. package/dist/messages/tool.cjs.map +1 -1
  157. package/dist/messages/tool.d.cts +72 -46
  158. package/dist/messages/tool.d.cts.map +1 -1
  159. package/dist/messages/tool.d.ts +72 -46
  160. package/dist/messages/tool.d.ts.map +1 -1
  161. package/dist/messages/tool.js +21 -19
  162. package/dist/messages/tool.js.map +1 -1
  163. package/dist/messages/transformers.cjs +2 -2
  164. package/dist/messages/transformers.cjs.map +1 -1
  165. package/dist/messages/transformers.d.cts +2 -1
  166. package/dist/messages/transformers.d.cts.map +1 -1
  167. package/dist/messages/transformers.d.ts +2 -1
  168. package/dist/messages/transformers.d.ts.map +1 -1
  169. package/dist/messages/transformers.js +2 -2
  170. package/dist/messages/transformers.js.map +1 -1
  171. package/dist/messages/utils.cjs +13 -1
  172. package/dist/messages/utils.cjs.map +1 -1
  173. package/dist/messages/utils.d.cts +83 -3
  174. package/dist/messages/utils.d.cts.map +1 -1
  175. package/dist/messages/utils.d.ts +83 -3
  176. package/dist/messages/utils.d.ts.map +1 -1
  177. package/dist/messages/utils.js +13 -2
  178. package/dist/messages/utils.js.map +1 -1
  179. package/dist/output_parsers/list.cjs +1 -1
  180. package/dist/output_parsers/list.cjs.map +1 -1
  181. package/dist/output_parsers/list.js +1 -1
  182. package/dist/output_parsers/list.js.map +1 -1
  183. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts +1 -1
  184. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
  185. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs +1 -1
  186. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  187. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts +1 -1
  188. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts +1 -1
  189. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js +1 -1
  190. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  191. package/dist/output_parsers/structured.cjs +2 -1
  192. package/dist/output_parsers/structured.cjs.map +1 -1
  193. package/dist/output_parsers/structured.js +2 -1
  194. package/dist/output_parsers/structured.js.map +1 -1
  195. package/dist/prompt_values.d.cts +4 -3
  196. package/dist/prompt_values.d.cts.map +1 -1
  197. package/dist/prompt_values.d.ts +4 -3
  198. package/dist/prompt_values.d.ts.map +1 -1
  199. package/dist/prompts/chat.cjs +3 -1
  200. package/dist/prompts/chat.cjs.map +1 -1
  201. package/dist/prompts/chat.d.cts +7 -15
  202. package/dist/prompts/chat.d.cts.map +1 -1
  203. package/dist/prompts/chat.d.ts +7 -15
  204. package/dist/prompts/chat.d.ts.map +1 -1
  205. package/dist/prompts/chat.js +3 -1
  206. package/dist/prompts/chat.js.map +1 -1
  207. package/dist/prompts/few_shot.d.cts +1 -1
  208. package/dist/prompts/few_shot.d.ts +1 -1
  209. package/dist/prompts/image.cjs.map +1 -1
  210. package/dist/prompts/image.d.cts +1 -3
  211. package/dist/prompts/image.d.cts.map +1 -1
  212. package/dist/prompts/image.d.ts +1 -3
  213. package/dist/prompts/image.d.ts.map +1 -1
  214. package/dist/prompts/image.js.map +1 -1
  215. package/dist/prompts/pipeline.cjs.map +1 -1
  216. package/dist/prompts/pipeline.js.map +1 -1
  217. package/dist/prompts/prompt.cjs.map +1 -1
  218. package/dist/prompts/prompt.d.cts +5 -17
  219. package/dist/prompts/prompt.d.cts.map +1 -1
  220. package/dist/prompts/prompt.d.ts +5 -17
  221. package/dist/prompts/prompt.d.ts.map +1 -1
  222. package/dist/prompts/prompt.js.map +1 -1
  223. package/dist/prompts/structured.cjs.map +1 -1
  224. package/dist/prompts/structured.js.map +1 -1
  225. package/dist/prompts/template.cjs +4 -2
  226. package/dist/prompts/template.cjs.map +1 -1
  227. package/dist/prompts/template.d.cts +1 -1
  228. package/dist/prompts/template.d.ts +1 -1
  229. package/dist/prompts/template.js +4 -2
  230. package/dist/prompts/template.js.map +1 -1
  231. package/dist/runnables/base.cjs +6 -6
  232. package/dist/runnables/base.cjs.map +1 -1
  233. package/dist/runnables/base.d.cts +1 -4
  234. package/dist/runnables/base.d.cts.map +1 -1
  235. package/dist/runnables/base.d.ts +1 -4
  236. package/dist/runnables/base.d.ts.map +1 -1
  237. package/dist/runnables/base.js +6 -6
  238. package/dist/runnables/base.js.map +1 -1
  239. package/dist/runnables/branch.cjs +2 -2
  240. package/dist/runnables/branch.cjs.map +1 -1
  241. package/dist/runnables/branch.js +2 -2
  242. package/dist/runnables/branch.js.map +1 -1
  243. package/dist/runnables/config.cjs.map +1 -1
  244. package/dist/runnables/config.js.map +1 -1
  245. package/dist/runnables/graph.cjs +1 -1
  246. package/dist/runnables/graph.cjs.map +1 -1
  247. package/dist/runnables/graph.js +1 -1
  248. package/dist/runnables/graph.js.map +1 -1
  249. package/dist/runnables/graph_mermaid.cjs +26 -3
  250. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  251. package/dist/runnables/graph_mermaid.js +26 -3
  252. package/dist/runnables/graph_mermaid.js.map +1 -1
  253. package/dist/runnables/remote.cjs.map +1 -1
  254. package/dist/runnables/remote.js.map +1 -1
  255. package/dist/runnables/types.d.cts +0 -1
  256. package/dist/runnables/types.d.cts.map +1 -1
  257. package/dist/runnables/types.d.ts +0 -1
  258. package/dist/runnables/types.d.ts.map +1 -1
  259. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  260. package/dist/singletons/async_local_storage/context.d.cts +0 -1
  261. package/dist/singletons/async_local_storage/context.d.cts.map +1 -1
  262. package/dist/singletons/async_local_storage/context.d.ts +0 -1
  263. package/dist/singletons/async_local_storage/context.d.ts.map +1 -1
  264. package/dist/singletons/async_local_storage/context.js.map +1 -1
  265. package/dist/singletons/callbacks.cjs.map +1 -1
  266. package/dist/singletons/callbacks.js.map +1 -1
  267. package/dist/tools/index.cjs.map +1 -1
  268. package/dist/tools/index.d.cts +3 -3
  269. package/dist/tools/index.d.cts.map +1 -1
  270. package/dist/tools/index.d.ts +3 -3
  271. package/dist/tools/index.d.ts.map +1 -1
  272. package/dist/tools/index.js.map +1 -1
  273. package/dist/tools/types.d.cts +6 -6
  274. package/dist/tools/types.d.cts.map +1 -1
  275. package/dist/tools/types.d.ts +6 -6
  276. package/dist/tools/types.d.ts.map +1 -1
  277. package/dist/tracers/base.cjs.map +1 -1
  278. package/dist/tracers/base.d.cts +1 -1
  279. package/dist/tracers/base.d.ts +1 -1
  280. package/dist/tracers/base.js.map +1 -1
  281. package/dist/tracers/console.cjs +1 -1
  282. package/dist/tracers/console.cjs.map +1 -1
  283. package/dist/tracers/console.js +1 -1
  284. package/dist/tracers/console.js.map +1 -1
  285. package/dist/tracers/event_stream.cjs +1 -1
  286. package/dist/tracers/event_stream.cjs.map +1 -1
  287. package/dist/tracers/event_stream.d.cts +0 -1
  288. package/dist/tracers/event_stream.d.cts.map +1 -1
  289. package/dist/tracers/event_stream.d.ts +0 -1
  290. package/dist/tracers/event_stream.d.ts.map +1 -1
  291. package/dist/tracers/event_stream.js +1 -1
  292. package/dist/tracers/event_stream.js.map +1 -1
  293. package/dist/tracers/log_stream.cjs.map +1 -1
  294. package/dist/tracers/log_stream.js.map +1 -1
  295. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  296. package/dist/tracers/tracer_langchain.js.map +1 -1
  297. package/dist/tracers/tracer_langchain_v1.d.cts +1 -1
  298. package/dist/tracers/tracer_langchain_v1.d.ts +1 -1
  299. package/dist/utils/chunk_array.cjs.map +1 -1
  300. package/dist/utils/chunk_array.js.map +1 -1
  301. package/dist/utils/env.cjs +1 -1
  302. package/dist/utils/env.cjs.map +1 -1
  303. package/dist/utils/env.js +1 -1
  304. package/dist/utils/env.js.map +1 -1
  305. package/dist/utils/event_source_parse.cjs.map +1 -1
  306. package/dist/utils/event_source_parse.d.cts.map +1 -1
  307. package/dist/utils/event_source_parse.d.ts.map +1 -1
  308. package/dist/utils/event_source_parse.js.map +1 -1
  309. package/dist/utils/hash.cjs +3 -8
  310. package/dist/utils/hash.cjs.map +1 -1
  311. package/dist/utils/hash.d.cts +1 -2
  312. package/dist/utils/hash.d.cts.map +1 -1
  313. package/dist/utils/hash.d.ts +1 -2
  314. package/dist/utils/hash.d.ts.map +1 -1
  315. package/dist/utils/hash.js +2 -6
  316. package/dist/utils/hash.js.map +1 -1
  317. package/dist/utils/js-sha256/hash.cjs +0 -9
  318. package/dist/utils/js-sha256/hash.cjs.map +1 -1
  319. package/dist/utils/js-sha256/hash.js +1 -5
  320. package/dist/utils/js-sha256/hash.js.map +1 -1
  321. package/dist/utils/json.cjs +2 -2
  322. package/dist/utils/json.cjs.map +1 -1
  323. package/dist/utils/json.js +2 -2
  324. package/dist/utils/json.js.map +1 -1
  325. package/dist/utils/json_schema.cjs +3 -2
  326. package/dist/utils/json_schema.cjs.map +1 -1
  327. package/dist/utils/json_schema.d.cts +8 -4
  328. package/dist/utils/json_schema.d.cts.map +1 -1
  329. package/dist/utils/json_schema.d.ts +8 -4
  330. package/dist/utils/json_schema.d.ts.map +1 -1
  331. package/dist/utils/json_schema.js +2 -1
  332. package/dist/utils/json_schema.js.map +1 -1
  333. package/dist/utils/stream.cjs.map +1 -1
  334. package/dist/utils/stream.js.map +1 -1
  335. package/dist/utils/testing/index.cjs.map +1 -1
  336. package/dist/utils/testing/index.d.cts +8 -12
  337. package/dist/utils/testing/index.d.cts.map +1 -1
  338. package/dist/utils/testing/index.d.ts +8 -12
  339. package/dist/utils/testing/index.d.ts.map +1 -1
  340. package/dist/utils/testing/index.js.map +1 -1
  341. package/dist/utils/zod-to-json-schema/Options.cjs +40 -0
  342. package/dist/utils/zod-to-json-schema/Options.cjs.map +1 -0
  343. package/dist/utils/zod-to-json-schema/Options.js +37 -0
  344. package/dist/utils/zod-to-json-schema/Options.js.map +1 -0
  345. package/dist/utils/zod-to-json-schema/Refs.cjs +30 -0
  346. package/dist/utils/zod-to-json-schema/Refs.cjs.map +1 -0
  347. package/dist/utils/zod-to-json-schema/Refs.js +30 -0
  348. package/dist/utils/zod-to-json-schema/Refs.js.map +1 -0
  349. package/dist/utils/zod-to-json-schema/errorMessages.cjs +18 -0
  350. package/dist/utils/zod-to-json-schema/errorMessages.cjs.map +1 -0
  351. package/dist/utils/zod-to-json-schema/errorMessages.d.cts +11 -0
  352. package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +1 -0
  353. package/dist/utils/zod-to-json-schema/errorMessages.d.ts +11 -0
  354. package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +1 -0
  355. package/dist/utils/zod-to-json-schema/errorMessages.js +16 -0
  356. package/dist/utils/zod-to-json-schema/errorMessages.js.map +1 -0
  357. package/dist/utils/zod-to-json-schema/getRelativePath.cjs +11 -0
  358. package/dist/utils/zod-to-json-schema/getRelativePath.cjs.map +1 -0
  359. package/dist/utils/zod-to-json-schema/getRelativePath.js +10 -0
  360. package/dist/utils/zod-to-json-schema/getRelativePath.js.map +1 -0
  361. package/dist/utils/zod-to-json-schema/index.cjs +37 -0
  362. package/dist/utils/zod-to-json-schema/index.js +37 -0
  363. package/dist/utils/zod-to-json-schema/parseDef.cjs +57 -0
  364. package/dist/utils/zod-to-json-schema/parseDef.cjs.map +1 -0
  365. package/dist/utils/zod-to-json-schema/parseDef.js +57 -0
  366. package/dist/utils/zod-to-json-schema/parseDef.js.map +1 -0
  367. package/dist/utils/zod-to-json-schema/parseTypes.d.cts +38 -0
  368. package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +1 -0
  369. package/dist/utils/zod-to-json-schema/parseTypes.d.ts +38 -0
  370. package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +1 -0
  371. package/dist/utils/zod-to-json-schema/parsers/any.cjs +17 -0
  372. package/dist/utils/zod-to-json-schema/parsers/any.cjs.map +1 -0
  373. package/dist/utils/zod-to-json-schema/parsers/any.d.cts +7 -0
  374. package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +1 -0
  375. package/dist/utils/zod-to-json-schema/parsers/any.d.ts +7 -0
  376. package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +1 -0
  377. package/dist/utils/zod-to-json-schema/parsers/any.js +17 -0
  378. package/dist/utils/zod-to-json-schema/parsers/any.js.map +1 -0
  379. package/dist/utils/zod-to-json-schema/parsers/array.cjs +24 -0
  380. package/dist/utils/zod-to-json-schema/parsers/array.cjs.map +1 -0
  381. package/dist/utils/zod-to-json-schema/parsers/array.d.cts +14 -0
  382. package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +1 -0
  383. package/dist/utils/zod-to-json-schema/parsers/array.d.ts +15 -0
  384. package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +1 -0
  385. package/dist/utils/zod-to-json-schema/parsers/array.js +23 -0
  386. package/dist/utils/zod-to-json-schema/parsers/array.js.map +1 -0
  387. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs +36 -0
  388. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -0
  389. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts +16 -0
  390. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +1 -0
  391. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +17 -0
  392. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +1 -0
  393. package/dist/utils/zod-to-json-schema/parsers/bigint.js +36 -0
  394. package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -0
  395. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs +9 -0
  396. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs.map +1 -0
  397. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts +7 -0
  398. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +1 -0
  399. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts +7 -0
  400. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +1 -0
  401. package/dist/utils/zod-to-json-schema/parsers/boolean.js +8 -0
  402. package/dist/utils/zod-to-json-schema/parsers/boolean.js.map +1 -0
  403. package/dist/utils/zod-to-json-schema/parsers/branded.cjs +10 -0
  404. package/dist/utils/zod-to-json-schema/parsers/branded.cjs.map +1 -0
  405. package/dist/utils/zod-to-json-schema/parsers/branded.js +10 -0
  406. package/dist/utils/zod-to-json-schema/parsers/branded.js.map +1 -0
  407. package/dist/utils/zod-to-json-schema/parsers/catch.cjs +10 -0
  408. package/dist/utils/zod-to-json-schema/parsers/catch.cjs.map +1 -0
  409. package/dist/utils/zod-to-json-schema/parsers/catch.js +10 -0
  410. package/dist/utils/zod-to-json-schema/parsers/catch.js.map +1 -0
  411. package/dist/utils/zod-to-json-schema/parsers/date.cjs +39 -0
  412. package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -0
  413. package/dist/utils/zod-to-json-schema/parsers/date.d.cts +17 -0
  414. package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +1 -0
  415. package/dist/utils/zod-to-json-schema/parsers/date.d.ts +17 -0
  416. package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +1 -0
  417. package/dist/utils/zod-to-json-schema/parsers/date.js +39 -0
  418. package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -0
  419. package/dist/utils/zod-to-json-schema/parsers/default.cjs +13 -0
  420. package/dist/utils/zod-to-json-schema/parsers/default.cjs.map +1 -0
  421. package/dist/utils/zod-to-json-schema/parsers/default.js +13 -0
  422. package/dist/utils/zod-to-json-schema/parsers/default.js.map +1 -0
  423. package/dist/utils/zod-to-json-schema/parsers/effects.cjs +11 -0
  424. package/dist/utils/zod-to-json-schema/parsers/effects.cjs.map +1 -0
  425. package/dist/utils/zod-to-json-schema/parsers/effects.js +11 -0
  426. package/dist/utils/zod-to-json-schema/parsers/effects.js.map +1 -0
  427. package/dist/utils/zod-to-json-schema/parsers/enum.cjs +12 -0
  428. package/dist/utils/zod-to-json-schema/parsers/enum.cjs.map +1 -0
  429. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts +8 -0
  430. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +1 -0
  431. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts +10 -0
  432. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +1 -0
  433. package/dist/utils/zod-to-json-schema/parsers/enum.js +11 -0
  434. package/dist/utils/zod-to-json-schema/parsers/enum.js.map +1 -0
  435. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs +47 -0
  436. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs.map +1 -0
  437. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts +10 -0
  438. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +1 -0
  439. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +11 -0
  440. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +1 -0
  441. package/dist/utils/zod-to-json-schema/parsers/intersection.js +47 -0
  442. package/dist/utils/zod-to-json-schema/parsers/intersection.js.map +1 -0
  443. package/dist/utils/zod-to-json-schema/parsers/literal.cjs +18 -0
  444. package/dist/utils/zod-to-json-schema/parsers/literal.cjs.map +1 -0
  445. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts +11 -0
  446. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +1 -0
  447. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +12 -0
  448. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +1 -0
  449. package/dist/utils/zod-to-json-schema/parsers/literal.js +17 -0
  450. package/dist/utils/zod-to-json-schema/parsers/literal.js.map +1 -0
  451. package/dist/utils/zod-to-json-schema/parsers/map.cjs +40 -0
  452. package/dist/utils/zod-to-json-schema/parsers/map.cjs.map +1 -0
  453. package/dist/utils/zod-to-json-schema/parsers/map.d.cts +17 -0
  454. package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +1 -0
  455. package/dist/utils/zod-to-json-schema/parsers/map.d.ts +17 -0
  456. package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +1 -0
  457. package/dist/utils/zod-to-json-schema/parsers/map.js +40 -0
  458. package/dist/utils/zod-to-json-schema/parsers/map.js.map +1 -0
  459. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs +18 -0
  460. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -0
  461. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts +8 -0
  462. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +1 -0
  463. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts +10 -0
  464. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -0
  465. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js +17 -0
  466. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -0
  467. package/dist/utils/zod-to-json-schema/parsers/never.cjs +13 -0
  468. package/dist/utils/zod-to-json-schema/parsers/never.cjs.map +1 -0
  469. package/dist/utils/zod-to-json-schema/parsers/never.d.cts +9 -0
  470. package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +1 -0
  471. package/dist/utils/zod-to-json-schema/parsers/never.d.ts +9 -0
  472. package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +1 -0
  473. package/dist/utils/zod-to-json-schema/parsers/never.js +13 -0
  474. package/dist/utils/zod-to-json-schema/parsers/never.js.map +1 -0
  475. package/dist/utils/zod-to-json-schema/parsers/null.cjs +12 -0
  476. package/dist/utils/zod-to-json-schema/parsers/null.cjs.map +1 -0
  477. package/dist/utils/zod-to-json-schema/parsers/null.d.cts +7 -0
  478. package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +1 -0
  479. package/dist/utils/zod-to-json-schema/parsers/null.d.ts +7 -0
  480. package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +1 -0
  481. package/dist/utils/zod-to-json-schema/parsers/null.js +11 -0
  482. package/dist/utils/zod-to-json-schema/parsers/null.js.map +1 -0
  483. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs +46 -0
  484. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs.map +1 -0
  485. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts +12 -0
  486. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +1 -0
  487. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +13 -0
  488. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +1 -0
  489. package/dist/utils/zod-to-json-schema/parsers/nullable.js +46 -0
  490. package/dist/utils/zod-to-json-schema/parsers/nullable.js.map +1 -0
  491. package/dist/utils/zod-to-json-schema/parsers/number.cjs +37 -0
  492. package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -0
  493. package/dist/utils/zod-to-json-schema/parsers/number.d.cts +15 -0
  494. package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +1 -0
  495. package/dist/utils/zod-to-json-schema/parsers/number.d.ts +16 -0
  496. package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +1 -0
  497. package/dist/utils/zod-to-json-schema/parsers/number.js +37 -0
  498. package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -0
  499. package/dist/utils/zod-to-json-schema/parsers/object.cjs +64 -0
  500. package/dist/utils/zod-to-json-schema/parsers/object.cjs.map +1 -0
  501. package/dist/utils/zod-to-json-schema/parsers/object.d.cts +12 -0
  502. package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +1 -0
  503. package/dist/utils/zod-to-json-schema/parsers/object.d.ts +13 -0
  504. package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +1 -0
  505. package/dist/utils/zod-to-json-schema/parsers/object.js +64 -0
  506. package/dist/utils/zod-to-json-schema/parsers/object.js.map +1 -0
  507. package/dist/utils/zod-to-json-schema/parsers/optional.cjs +20 -0
  508. package/dist/utils/zod-to-json-schema/parsers/optional.cjs.map +1 -0
  509. package/dist/utils/zod-to-json-schema/parsers/optional.js +20 -0
  510. package/dist/utils/zod-to-json-schema/parsers/optional.js.map +1 -0
  511. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs +28 -0
  512. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -0
  513. package/dist/utils/zod-to-json-schema/parsers/pipeline.js +28 -0
  514. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -0
  515. package/dist/utils/zod-to-json-schema/parsers/promise.cjs +10 -0
  516. package/dist/utils/zod-to-json-schema/parsers/promise.cjs.map +1 -0
  517. package/dist/utils/zod-to-json-schema/parsers/promise.js +10 -0
  518. package/dist/utils/zod-to-json-schema/parsers/promise.js.map +1 -0
  519. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs +10 -0
  520. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs.map +1 -0
  521. package/dist/utils/zod-to-json-schema/parsers/readonly.js +10 -0
  522. package/dist/utils/zod-to-json-schema/parsers/readonly.js.map +1 -0
  523. package/dist/utils/zod-to-json-schema/parsers/record.cjs +57 -0
  524. package/dist/utils/zod-to-json-schema/parsers/record.cjs.map +1 -0
  525. package/dist/utils/zod-to-json-schema/parsers/record.d.cts +14 -0
  526. package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +1 -0
  527. package/dist/utils/zod-to-json-schema/parsers/record.d.ts +15 -0
  528. package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +1 -0
  529. package/dist/utils/zod-to-json-schema/parsers/record.js +56 -0
  530. package/dist/utils/zod-to-json-schema/parsers/record.js.map +1 -0
  531. package/dist/utils/zod-to-json-schema/parsers/set.cjs +22 -0
  532. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -0
  533. package/dist/utils/zod-to-json-schema/parsers/set.d.cts +15 -0
  534. package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +1 -0
  535. package/dist/utils/zod-to-json-schema/parsers/set.d.ts +16 -0
  536. package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +1 -0
  537. package/dist/utils/zod-to-json-schema/parsers/set.js +22 -0
  538. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -0
  539. package/dist/utils/zod-to-json-schema/parsers/string.cjs +255 -0
  540. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -0
  541. package/dist/utils/zod-to-json-schema/parsers/string.d.cts +28 -0
  542. package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +1 -0
  543. package/dist/utils/zod-to-json-schema/parsers/string.d.ts +29 -0
  544. package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +1 -0
  545. package/dist/utils/zod-to-json-schema/parsers/string.js +254 -0
  546. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -0
  547. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs +38 -0
  548. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs.map +1 -0
  549. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts +15 -0
  550. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +1 -0
  551. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +16 -0
  552. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +1 -0
  553. package/dist/utils/zod-to-json-schema/parsers/tuple.js +38 -0
  554. package/dist/utils/zod-to-json-schema/parsers/tuple.js.map +1 -0
  555. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs +10 -0
  556. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs.map +1 -0
  557. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts +9 -0
  558. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +1 -0
  559. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +9 -0
  560. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +1 -0
  561. package/dist/utils/zod-to-json-schema/parsers/undefined.js +10 -0
  562. package/dist/utils/zod-to-json-schema/parsers/undefined.js.map +1 -0
  563. package/dist/utils/zod-to-json-schema/parsers/union.cjs +67 -0
  564. package/dist/utils/zod-to-json-schema/parsers/union.cjs.map +1 -0
  565. package/dist/utils/zod-to-json-schema/parsers/union.d.cts +24 -0
  566. package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +1 -0
  567. package/dist/utils/zod-to-json-schema/parsers/union.d.ts +25 -0
  568. package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +1 -0
  569. package/dist/utils/zod-to-json-schema/parsers/union.js +66 -0
  570. package/dist/utils/zod-to-json-schema/parsers/union.js.map +1 -0
  571. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs +10 -0
  572. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs.map +1 -0
  573. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts +7 -0
  574. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +1 -0
  575. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +7 -0
  576. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +1 -0
  577. package/dist/utils/zod-to-json-schema/parsers/unknown.js +10 -0
  578. package/dist/utils/zod-to-json-schema/parsers/unknown.js.map +1 -0
  579. package/dist/utils/zod-to-json-schema/selectParser.cjs +81 -0
  580. package/dist/utils/zod-to-json-schema/selectParser.cjs.map +1 -0
  581. package/dist/utils/zod-to-json-schema/selectParser.js +80 -0
  582. package/dist/utils/zod-to-json-schema/selectParser.js.map +1 -0
  583. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs +70 -0
  584. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs.map +1 -0
  585. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js +70 -0
  586. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js.map +1 -0
  587. package/package.json +7 -36
  588. package/dist/utils/js-sha1/hash.cjs +0 -291
  589. package/dist/utils/js-sha1/hash.cjs.map +0 -1
  590. package/dist/utils/js-sha1/hash.d.cts +0 -9
  591. package/dist/utils/js-sha1/hash.d.cts.map +0 -1
  592. package/dist/utils/js-sha1/hash.d.ts +0 -9
  593. package/dist/utils/js-sha1/hash.d.ts.map +0 -1
  594. package/dist/utils/js-sha1/hash.js +0 -284
  595. package/dist/utils/js-sha1/hash.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"base.cjs","names":["runTree?: RunTree","run?: Run","parentRun?: Run","RunTree","getRuntimeEnvironmentSync","value: any","defaultKey: string","x: BaseCallbackHandler","BaseCallbackHandler","_fields?: BaseCallbackHandlerInput","runId?: string","error: unknown","parentRun: Run","childRun: Run","run: Run","parentRunId: string | undefined","llm: Serialized","prompts: string[]","runId: string","parentRunId?: string","extraParams?: KVMap","tags?: string[]","metadata?: KVMap","name?: string","messages: BaseMessage[][]","output: LLMResult","_parentRunId?: string","_tags?: string[]","extraParams?: Record<string, unknown>","chain: Serialized","inputs: ChainValues","runType?: string","outputs: ChainValues","kwargs?: { inputs?: Record<string, unknown> }","tool: Serialized","input: string","output: any","action: AgentAction","action: AgentFinish","retriever: Serialized","query: string","documents: Document<Record<string, unknown>>[]","text: string","token: string","idx: NewTokenIndices","fields?: HandleLLMNewTokenCallbackFields"],"sources":["../../src/tracers/base.ts"],"sourcesContent":["import { KVMap, BaseRun } from \"langsmith/schemas\";\nimport { RunTree, convertToDottedOrderFormat } from \"langsmith/run_trees\";\n\nimport type { ChainValues } from \"../utils/types/index.js\";\nimport type { AgentAction, AgentFinish } from \"../agents.js\";\nimport type { LLMResult } from \"../outputs.js\";\nimport type { BaseMessage } from \"../messages/base.js\";\nimport { Serialized } from \"../load/serializable.js\";\nimport {\n BaseCallbackHandler,\n BaseCallbackHandlerInput,\n HandleLLMNewTokenCallbackFields,\n NewTokenIndices,\n} from \"../callbacks/base.js\";\nimport type { Document } from \"../documents/document.js\";\nimport { getRuntimeEnvironmentSync } from \"../utils/env.js\";\n\nexport type RunType = string;\n\n// TODO: Remove this type and just use the base LangSmith Run type.\nexport interface Run extends BaseRun {\n // some optional fields are always present here\n id: string;\n start_time: number;\n end_time?: number;\n execution_order: number;\n // some additional fields that don't exist in sdk runs\n child_runs: this[];\n child_execution_order: number;\n events: Array<{\n name: string;\n time: string;\n kwargs?: Record<string, unknown>;\n }>;\n trace_id?: string;\n dotted_order?: string;\n /** @internal */\n _serialized_start_time?: string;\n}\n\n// TODO: Remove and just use base LangSmith Run type\nconst convertRunTreeToRun = (runTree?: RunTree): Run | undefined => {\n if (!runTree) {\n return undefined;\n }\n // Important that we return the raw run tree object since the reference\n // is mutated in other places.\n // TODO: Remove places where this is being done.\n\n // eslint-disable-next-line no-param-reassign\n runTree.events = runTree.events ?? [];\n // eslint-disable-next-line no-param-reassign\n runTree.child_runs = runTree.child_runs ?? [];\n // TODO: Remove this cast and just use the LangSmith RunTree type.\n return runTree as unknown as Run;\n};\n\nfunction convertRunToRunTree(run?: Run, parentRun?: Run): RunTree | undefined {\n if (!run) {\n return undefined;\n }\n return new RunTree({\n ...run,\n start_time: run._serialized_start_time ?? run.start_time,\n parent_run: convertRunToRunTree(parentRun),\n child_runs: run.child_runs\n .map((r) => convertRunToRunTree(r))\n .filter((r): r is RunTree => r !== undefined),\n extra: {\n ...run.extra,\n runtime: getRuntimeEnvironmentSync(),\n },\n tracingEnabled: false,\n });\n}\n\nexport interface AgentRun extends Run {\n actions: AgentAction[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _coerceToDict(value: any, defaultKey: string) {\n return value && !Array.isArray(value) && typeof value === \"object\"\n ? value\n : { [defaultKey]: value };\n}\n\nexport function isBaseTracer(x: BaseCallbackHandler): x is BaseTracer {\n return typeof (x as BaseTracer)._addRunToRunMap === \"function\";\n}\n\nexport abstract class BaseTracer extends BaseCallbackHandler {\n /** @deprecated Use `runTreeMap` instead. */\n protected runMap: Map<string, Run> = new Map();\n\n protected runTreeMap: Map<string, RunTree> = new Map();\n\n protected usesRunTreeMap = false;\n\n constructor(_fields?: BaseCallbackHandlerInput) {\n super(...arguments);\n }\n\n copy(): this {\n return this;\n }\n\n protected getRunById(runId?: string): Run | undefined {\n if (runId === undefined) {\n return undefined;\n }\n return this.usesRunTreeMap\n ? convertRunTreeToRun(this.runTreeMap.get(runId))\n : this.runMap.get(runId);\n }\n\n protected stringifyError(error: unknown) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof Error) {\n return error.message + (error?.stack ? `\\n\\n${error.stack}` : \"\");\n }\n\n if (typeof error === \"string\") {\n return error;\n }\n\n return `${error}`;\n }\n\n protected abstract persistRun(run: Run): Promise<void>;\n\n protected _addChildRun(parentRun: Run, childRun: Run) {\n parentRun.child_runs.push(childRun);\n }\n\n _addRunToRunMap(run: Run) {\n const { dottedOrder: currentDottedOrder, microsecondPrecisionDatestring } =\n convertToDottedOrderFormat(\n new Date(run.start_time).getTime(),\n run.id,\n run.execution_order\n );\n const storedRun = { ...run };\n const parentRun = this.getRunById(storedRun.parent_run_id);\n if (storedRun.parent_run_id !== undefined) {\n if (parentRun) {\n this._addChildRun(parentRun, storedRun);\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n storedRun.child_execution_order\n );\n storedRun.trace_id = parentRun.trace_id;\n if (parentRun.dotted_order !== undefined) {\n storedRun.dotted_order = [\n parentRun.dotted_order,\n currentDottedOrder,\n ].join(\".\");\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(`Parent run with UUID ${storedRun.parent_run_id} has no dotted order.`);\n }\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(\n // `Parent run with UUID ${storedRun.parent_run_id} not found.`\n // );\n }\n } else {\n storedRun.trace_id = storedRun.id;\n storedRun.dotted_order = currentDottedOrder;\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n }\n if (this.usesRunTreeMap) {\n const runTree = convertRunToRunTree(storedRun, parentRun);\n if (runTree !== undefined) {\n this.runTreeMap.set(storedRun.id, runTree);\n }\n } else {\n this.runMap.set(storedRun.id, storedRun);\n }\n return storedRun;\n }\n\n protected async _endTrace(run: Run): Promise<void> {\n const parentRun =\n run.parent_run_id !== undefined && this.getRunById(run.parent_run_id);\n if (parentRun) {\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n run.child_execution_order\n );\n } else {\n await this.persistRun(run);\n }\n await this.onRunUpdate?.(run);\n if (this.usesRunTreeMap) {\n this.runTreeMap.delete(run.id);\n } else {\n this.runMap.delete(run.id);\n }\n }\n\n protected _getExecutionOrder(parentRunId: string | undefined): number {\n const parentRun = parentRunId !== undefined && this.getRunById(parentRunId);\n // If a run has no parent then execution order is 1\n if (!parentRun) {\n return 1;\n }\n\n return parentRun.child_execution_order + 1;\n }\n\n /**\n * Create and add a run to the run map for LLM start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { prompts },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForLLMStart(\n llm,\n prompts,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chat model start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { messages },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChatModelStart(\n llm,\n messages,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n async handleLLMEnd(\n output: LLMResult,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = output;\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleLLMError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chain start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? chain.id[chain.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: chain,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs,\n execution_order,\n child_execution_order: execution_order,\n run_type: runType ?? \"chain\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChainStart(\n chain,\n inputs,\n runId,\n parentRunId,\n tags,\n metadata,\n runType,\n name\n );\n await this.onRunCreate?.(run);\n await this.onChainStart?.(run);\n return run;\n }\n\n async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = _coerceToDict(outputs, \"output\");\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleChainError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for tool start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? tool.id[tool.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: tool,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { input },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"tool\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForToolStart(\n tool,\n input,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onToolStart?.(run);\n return run;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async handleToolEnd(output: any, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { output };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleToolError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleAgentAction(action: AgentAction, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n const agentRun = run as AgentRun;\n agentRun.actions = agentRun.actions || [];\n agentRun.actions.push(action);\n agentRun.events.push({\n name: \"agent_action\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentAction?.(run as AgentRun);\n }\n\n async handleAgentEnd(action: AgentFinish, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"agent_end\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentEnd?.(run);\n }\n\n /**\n * Create and add a run to the run map for retriever start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? retriever.id[retriever.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: retriever,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { query },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"retriever\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForRetrieverStart(\n retriever,\n query,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onRetrieverStart?.(run);\n return run;\n }\n\n async handleRetrieverEnd(\n documents: Document<Record<string, unknown>>[],\n runId: string\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { documents };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleRetrieverError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleText(text: string, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"text\",\n time: new Date().toISOString(),\n kwargs: { text },\n });\n await this.onText?.(run);\n }\n\n async handleLLMNewToken(\n token: string,\n idx: NewTokenIndices,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n fields?: HandleLLMNewTokenCallbackFields\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\n `Invalid \"runId\" provided to \"handleLLMNewToken\" callback.`\n );\n }\n run.events.push({\n name: \"new_token\",\n time: new Date().toISOString(),\n kwargs: { token, idx, chunk: fields?.chunk },\n });\n await this.onLLMNewToken?.(run, token, { chunk: fields?.chunk });\n return run;\n }\n\n // custom event handlers\n\n onRunCreate?(run: Run): void | Promise<void>;\n\n onRunUpdate?(run: Run): void | Promise<void>;\n\n onLLMStart?(run: Run): void | Promise<void>;\n\n onLLMEnd?(run: Run): void | Promise<void>;\n\n onLLMError?(run: Run): void | Promise<void>;\n\n onChainStart?(run: Run): void | Promise<void>;\n\n onChainEnd?(run: Run): void | Promise<void>;\n\n onChainError?(run: Run): void | Promise<void>;\n\n onToolStart?(run: Run): void | Promise<void>;\n\n onToolEnd?(run: Run): void | Promise<void>;\n\n onToolError?(run: Run): void | Promise<void>;\n\n onAgentAction?(run: Run): void | Promise<void>;\n\n onAgentEnd?(run: Run): void | Promise<void>;\n\n onRetrieverStart?(run: Run): void | Promise<void>;\n\n onRetrieverEnd?(run: Run): void | Promise<void>;\n\n onRetrieverError?(run: Run): void | Promise<void>;\n\n onText?(run: Run): void | Promise<void>;\n\n onLLMNewToken?(\n run: Run,\n token: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs?: { chunk: any }\n ): void | Promise<void>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.cjs","names":["runTree?: RunTree","run?: Run","parentRun?: Run","RunTree","getRuntimeEnvironmentSync","value: any","defaultKey: string","x: BaseCallbackHandler","BaseCallbackHandler","_fields?: BaseCallbackHandlerInput","runId?: string","error: unknown","parentRun: Run","childRun: Run","run: Run","parentRunId: string | undefined","llm: Serialized","prompts: string[]","runId: string","parentRunId?: string","extraParams?: KVMap","tags?: string[]","metadata?: KVMap","name?: string","messages: BaseMessage[][]","output: LLMResult","_parentRunId?: string","_tags?: string[]","extraParams?: Record<string, unknown>","chain: Serialized","inputs: ChainValues","runType?: string","outputs: ChainValues","kwargs?: { inputs?: Record<string, unknown> }","tool: Serialized","input: string","output: any","action: AgentAction","action: AgentFinish","retriever: Serialized","query: string","documents: Document<Record<string, unknown>>[]","text: string","token: string","idx: NewTokenIndices","fields?: HandleLLMNewTokenCallbackFields"],"sources":["../../src/tracers/base.ts"],"sourcesContent":["import { KVMap, BaseRun } from \"langsmith/schemas\";\nimport { RunTree, convertToDottedOrderFormat } from \"langsmith/run_trees\";\n\nimport type { ChainValues } from \"../utils/types/index.js\";\nimport type { AgentAction, AgentFinish } from \"../agents.js\";\nimport type { LLMResult } from \"../outputs.js\";\nimport type { BaseMessage } from \"../messages/base.js\";\nimport { Serialized } from \"../load/serializable.js\";\nimport {\n BaseCallbackHandler,\n BaseCallbackHandlerInput,\n HandleLLMNewTokenCallbackFields,\n NewTokenIndices,\n} from \"../callbacks/base.js\";\nimport type { Document } from \"../documents/document.js\";\nimport { getRuntimeEnvironmentSync } from \"../utils/env.js\";\n\nexport type RunType = string;\n\n// TODO: Remove this type and just use the base LangSmith Run type.\nexport interface Run extends BaseRun {\n // some optional fields are always present here\n id: string;\n start_time: number;\n end_time?: number;\n execution_order: number;\n // some additional fields that don't exist in sdk runs\n child_runs: this[];\n child_execution_order: number;\n events: Array<{\n name: string;\n time: string;\n kwargs?: Record<string, unknown>;\n }>;\n trace_id?: string;\n dotted_order?: string;\n /** @internal */\n _serialized_start_time?: string;\n}\n\n// TODO: Remove and just use base LangSmith Run type\nconst convertRunTreeToRun = (runTree?: RunTree): Run | undefined => {\n if (!runTree) {\n return undefined;\n }\n // Important that we return the raw run tree object since the reference\n // is mutated in other places.\n // TODO: Remove places where this is being done.\n\n runTree.events = runTree.events ?? [];\n runTree.child_runs = runTree.child_runs ?? [];\n // TODO: Remove this cast and just use the LangSmith RunTree type.\n return runTree as unknown as Run;\n};\n\nfunction convertRunToRunTree(run?: Run, parentRun?: Run): RunTree | undefined {\n if (!run) {\n return undefined;\n }\n return new RunTree({\n ...run,\n start_time: run._serialized_start_time ?? run.start_time,\n parent_run: convertRunToRunTree(parentRun),\n child_runs: run.child_runs\n .map((r) => convertRunToRunTree(r))\n .filter((r): r is RunTree => r !== undefined),\n extra: {\n ...run.extra,\n runtime: getRuntimeEnvironmentSync(),\n },\n tracingEnabled: false,\n });\n}\n\nexport interface AgentRun extends Run {\n actions: AgentAction[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _coerceToDict(value: any, defaultKey: string) {\n return value && !Array.isArray(value) && typeof value === \"object\"\n ? value\n : { [defaultKey]: value };\n}\n\nexport function isBaseTracer(x: BaseCallbackHandler): x is BaseTracer {\n return typeof (x as BaseTracer)._addRunToRunMap === \"function\";\n}\n\nexport abstract class BaseTracer extends BaseCallbackHandler {\n /** @deprecated Use `runTreeMap` instead. */\n protected runMap: Map<string, Run> = new Map();\n\n protected runTreeMap: Map<string, RunTree> = new Map();\n\n protected usesRunTreeMap = false;\n\n constructor(_fields?: BaseCallbackHandlerInput) {\n super(...arguments);\n }\n\n copy(): this {\n return this;\n }\n\n protected getRunById(runId?: string): Run | undefined {\n if (runId === undefined) {\n return undefined;\n }\n return this.usesRunTreeMap\n ? convertRunTreeToRun(this.runTreeMap.get(runId))\n : this.runMap.get(runId);\n }\n\n protected stringifyError(error: unknown) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof Error) {\n return error.message + (error?.stack ? `\\n\\n${error.stack}` : \"\");\n }\n\n if (typeof error === \"string\") {\n return error;\n }\n\n return `${error}`;\n }\n\n protected abstract persistRun(run: Run): Promise<void>;\n\n protected _addChildRun(parentRun: Run, childRun: Run) {\n parentRun.child_runs.push(childRun);\n }\n\n _addRunToRunMap(run: Run) {\n const { dottedOrder: currentDottedOrder, microsecondPrecisionDatestring } =\n convertToDottedOrderFormat(\n new Date(run.start_time).getTime(),\n run.id,\n run.execution_order\n );\n const storedRun = { ...run };\n const parentRun = this.getRunById(storedRun.parent_run_id);\n if (storedRun.parent_run_id !== undefined) {\n if (parentRun) {\n this._addChildRun(parentRun, storedRun);\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n storedRun.child_execution_order\n );\n storedRun.trace_id = parentRun.trace_id;\n if (parentRun.dotted_order !== undefined) {\n storedRun.dotted_order = [\n parentRun.dotted_order,\n currentDottedOrder,\n ].join(\".\");\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(`Parent run with UUID ${storedRun.parent_run_id} has no dotted order.`);\n }\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(\n // `Parent run with UUID ${storedRun.parent_run_id} not found.`\n // );\n }\n } else {\n storedRun.trace_id = storedRun.id;\n storedRun.dotted_order = currentDottedOrder;\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n }\n if (this.usesRunTreeMap) {\n const runTree = convertRunToRunTree(storedRun, parentRun);\n if (runTree !== undefined) {\n this.runTreeMap.set(storedRun.id, runTree);\n }\n } else {\n this.runMap.set(storedRun.id, storedRun);\n }\n return storedRun;\n }\n\n protected async _endTrace(run: Run): Promise<void> {\n const parentRun =\n run.parent_run_id !== undefined && this.getRunById(run.parent_run_id);\n if (parentRun) {\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n run.child_execution_order\n );\n } else {\n await this.persistRun(run);\n }\n await this.onRunUpdate?.(run);\n if (this.usesRunTreeMap) {\n this.runTreeMap.delete(run.id);\n } else {\n this.runMap.delete(run.id);\n }\n }\n\n protected _getExecutionOrder(parentRunId: string | undefined): number {\n const parentRun = parentRunId !== undefined && this.getRunById(parentRunId);\n // If a run has no parent then execution order is 1\n if (!parentRun) {\n return 1;\n }\n\n return parentRun.child_execution_order + 1;\n }\n\n /**\n * Create and add a run to the run map for LLM start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { prompts },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForLLMStart(\n llm,\n prompts,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chat model start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { messages },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChatModelStart(\n llm,\n messages,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n async handleLLMEnd(\n output: LLMResult,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = output;\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleLLMError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chain start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? chain.id[chain.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: chain,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs,\n execution_order,\n child_execution_order: execution_order,\n run_type: runType ?? \"chain\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChainStart(\n chain,\n inputs,\n runId,\n parentRunId,\n tags,\n metadata,\n runType,\n name\n );\n await this.onRunCreate?.(run);\n await this.onChainStart?.(run);\n return run;\n }\n\n async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = _coerceToDict(outputs, \"output\");\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleChainError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for tool start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? tool.id[tool.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: tool,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { input },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"tool\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForToolStart(\n tool,\n input,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onToolStart?.(run);\n return run;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async handleToolEnd(output: any, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { output };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleToolError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleAgentAction(action: AgentAction, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n const agentRun = run as AgentRun;\n agentRun.actions = agentRun.actions || [];\n agentRun.actions.push(action);\n agentRun.events.push({\n name: \"agent_action\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentAction?.(run as AgentRun);\n }\n\n async handleAgentEnd(action: AgentFinish, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"agent_end\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentEnd?.(run);\n }\n\n /**\n * Create and add a run to the run map for retriever start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? retriever.id[retriever.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: retriever,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { query },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"retriever\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForRetrieverStart(\n retriever,\n query,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onRetrieverStart?.(run);\n return run;\n }\n\n async handleRetrieverEnd(\n documents: Document<Record<string, unknown>>[],\n runId: string\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { documents };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleRetrieverError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleText(text: string, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"text\",\n time: new Date().toISOString(),\n kwargs: { text },\n });\n await this.onText?.(run);\n }\n\n async handleLLMNewToken(\n token: string,\n idx: NewTokenIndices,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n fields?: HandleLLMNewTokenCallbackFields\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\n `Invalid \"runId\" provided to \"handleLLMNewToken\" callback.`\n );\n }\n run.events.push({\n name: \"new_token\",\n time: new Date().toISOString(),\n kwargs: { token, idx, chunk: fields?.chunk },\n });\n await this.onLLMNewToken?.(run, token, { chunk: fields?.chunk });\n return run;\n }\n\n // custom event handlers\n\n onRunCreate?(run: Run): void | Promise<void>;\n\n onRunUpdate?(run: Run): void | Promise<void>;\n\n onLLMStart?(run: Run): void | Promise<void>;\n\n onLLMEnd?(run: Run): void | Promise<void>;\n\n onLLMError?(run: Run): void | Promise<void>;\n\n onChainStart?(run: Run): void | Promise<void>;\n\n onChainEnd?(run: Run): void | Promise<void>;\n\n onChainError?(run: Run): void | Promise<void>;\n\n onToolStart?(run: Run): void | Promise<void>;\n\n onToolEnd?(run: Run): void | Promise<void>;\n\n onToolError?(run: Run): void | Promise<void>;\n\n onAgentAction?(run: Run): void | Promise<void>;\n\n onAgentEnd?(run: Run): void | Promise<void>;\n\n onRetrieverStart?(run: Run): void | Promise<void>;\n\n onRetrieverEnd?(run: Run): void | Promise<void>;\n\n onRetrieverError?(run: Run): void | Promise<void>;\n\n onText?(run: Run): void | Promise<void>;\n\n onLLMNewToken?(\n run: Run,\n token: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs?: { chunk: any }\n ): void | Promise<void>;\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { AgentAction, AgentFinish } from "../agents.cjs";
2
2
  import { Serialized } from "../load/serializable.cjs";
3
- import { ChainValues } from "../utils/types/index.cjs";
4
3
  import { BaseMessage } from "../messages/base.cjs";
5
4
  import { LLMResult } from "../outputs.cjs";
5
+ import { ChainValues } from "../utils/types/index.cjs";
6
6
  import { Document } from "../documents/document.cjs";
7
7
  import { BaseCallbackHandler, BaseCallbackHandlerInput, HandleLLMNewTokenCallbackFields, NewTokenIndices } from "../callbacks/base.cjs";
8
8
  import { RunTree } from "langsmith/run_trees";
@@ -1,8 +1,8 @@
1
1
  import { AgentAction, AgentFinish } from "../agents.js";
2
2
  import { Serialized } from "../load/serializable.js";
3
- import { ChainValues } from "../utils/types/index.js";
4
3
  import { BaseMessage } from "../messages/base.js";
5
4
  import { LLMResult } from "../outputs.js";
5
+ import { ChainValues } from "../utils/types/index.js";
6
6
  import { Document } from "../documents/document.js";
7
7
  import { BaseCallbackHandler, BaseCallbackHandlerInput, HandleLLMNewTokenCallbackFields, NewTokenIndices } from "../callbacks/base.js";
8
8
  import { RunTree } from "langsmith/run_trees";
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":["runTree?: RunTree","run?: Run","parentRun?: Run","value: any","defaultKey: string","x: BaseCallbackHandler","_fields?: BaseCallbackHandlerInput","runId?: string","error: unknown","parentRun: Run","childRun: Run","run: Run","parentRunId: string | undefined","llm: Serialized","prompts: string[]","runId: string","parentRunId?: string","extraParams?: KVMap","tags?: string[]","metadata?: KVMap","name?: string","messages: BaseMessage[][]","output: LLMResult","_parentRunId?: string","_tags?: string[]","extraParams?: Record<string, unknown>","chain: Serialized","inputs: ChainValues","runType?: string","outputs: ChainValues","kwargs?: { inputs?: Record<string, unknown> }","tool: Serialized","input: string","output: any","action: AgentAction","action: AgentFinish","retriever: Serialized","query: string","documents: Document<Record<string, unknown>>[]","text: string","token: string","idx: NewTokenIndices","fields?: HandleLLMNewTokenCallbackFields"],"sources":["../../src/tracers/base.ts"],"sourcesContent":["import { KVMap, BaseRun } from \"langsmith/schemas\";\nimport { RunTree, convertToDottedOrderFormat } from \"langsmith/run_trees\";\n\nimport type { ChainValues } from \"../utils/types/index.js\";\nimport type { AgentAction, AgentFinish } from \"../agents.js\";\nimport type { LLMResult } from \"../outputs.js\";\nimport type { BaseMessage } from \"../messages/base.js\";\nimport { Serialized } from \"../load/serializable.js\";\nimport {\n BaseCallbackHandler,\n BaseCallbackHandlerInput,\n HandleLLMNewTokenCallbackFields,\n NewTokenIndices,\n} from \"../callbacks/base.js\";\nimport type { Document } from \"../documents/document.js\";\nimport { getRuntimeEnvironmentSync } from \"../utils/env.js\";\n\nexport type RunType = string;\n\n// TODO: Remove this type and just use the base LangSmith Run type.\nexport interface Run extends BaseRun {\n // some optional fields are always present here\n id: string;\n start_time: number;\n end_time?: number;\n execution_order: number;\n // some additional fields that don't exist in sdk runs\n child_runs: this[];\n child_execution_order: number;\n events: Array<{\n name: string;\n time: string;\n kwargs?: Record<string, unknown>;\n }>;\n trace_id?: string;\n dotted_order?: string;\n /** @internal */\n _serialized_start_time?: string;\n}\n\n// TODO: Remove and just use base LangSmith Run type\nconst convertRunTreeToRun = (runTree?: RunTree): Run | undefined => {\n if (!runTree) {\n return undefined;\n }\n // Important that we return the raw run tree object since the reference\n // is mutated in other places.\n // TODO: Remove places where this is being done.\n\n // eslint-disable-next-line no-param-reassign\n runTree.events = runTree.events ?? [];\n // eslint-disable-next-line no-param-reassign\n runTree.child_runs = runTree.child_runs ?? [];\n // TODO: Remove this cast and just use the LangSmith RunTree type.\n return runTree as unknown as Run;\n};\n\nfunction convertRunToRunTree(run?: Run, parentRun?: Run): RunTree | undefined {\n if (!run) {\n return undefined;\n }\n return new RunTree({\n ...run,\n start_time: run._serialized_start_time ?? run.start_time,\n parent_run: convertRunToRunTree(parentRun),\n child_runs: run.child_runs\n .map((r) => convertRunToRunTree(r))\n .filter((r): r is RunTree => r !== undefined),\n extra: {\n ...run.extra,\n runtime: getRuntimeEnvironmentSync(),\n },\n tracingEnabled: false,\n });\n}\n\nexport interface AgentRun extends Run {\n actions: AgentAction[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _coerceToDict(value: any, defaultKey: string) {\n return value && !Array.isArray(value) && typeof value === \"object\"\n ? value\n : { [defaultKey]: value };\n}\n\nexport function isBaseTracer(x: BaseCallbackHandler): x is BaseTracer {\n return typeof (x as BaseTracer)._addRunToRunMap === \"function\";\n}\n\nexport abstract class BaseTracer extends BaseCallbackHandler {\n /** @deprecated Use `runTreeMap` instead. */\n protected runMap: Map<string, Run> = new Map();\n\n protected runTreeMap: Map<string, RunTree> = new Map();\n\n protected usesRunTreeMap = false;\n\n constructor(_fields?: BaseCallbackHandlerInput) {\n super(...arguments);\n }\n\n copy(): this {\n return this;\n }\n\n protected getRunById(runId?: string): Run | undefined {\n if (runId === undefined) {\n return undefined;\n }\n return this.usesRunTreeMap\n ? convertRunTreeToRun(this.runTreeMap.get(runId))\n : this.runMap.get(runId);\n }\n\n protected stringifyError(error: unknown) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof Error) {\n return error.message + (error?.stack ? `\\n\\n${error.stack}` : \"\");\n }\n\n if (typeof error === \"string\") {\n return error;\n }\n\n return `${error}`;\n }\n\n protected abstract persistRun(run: Run): Promise<void>;\n\n protected _addChildRun(parentRun: Run, childRun: Run) {\n parentRun.child_runs.push(childRun);\n }\n\n _addRunToRunMap(run: Run) {\n const { dottedOrder: currentDottedOrder, microsecondPrecisionDatestring } =\n convertToDottedOrderFormat(\n new Date(run.start_time).getTime(),\n run.id,\n run.execution_order\n );\n const storedRun = { ...run };\n const parentRun = this.getRunById(storedRun.parent_run_id);\n if (storedRun.parent_run_id !== undefined) {\n if (parentRun) {\n this._addChildRun(parentRun, storedRun);\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n storedRun.child_execution_order\n );\n storedRun.trace_id = parentRun.trace_id;\n if (parentRun.dotted_order !== undefined) {\n storedRun.dotted_order = [\n parentRun.dotted_order,\n currentDottedOrder,\n ].join(\".\");\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(`Parent run with UUID ${storedRun.parent_run_id} has no dotted order.`);\n }\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(\n // `Parent run with UUID ${storedRun.parent_run_id} not found.`\n // );\n }\n } else {\n storedRun.trace_id = storedRun.id;\n storedRun.dotted_order = currentDottedOrder;\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n }\n if (this.usesRunTreeMap) {\n const runTree = convertRunToRunTree(storedRun, parentRun);\n if (runTree !== undefined) {\n this.runTreeMap.set(storedRun.id, runTree);\n }\n } else {\n this.runMap.set(storedRun.id, storedRun);\n }\n return storedRun;\n }\n\n protected async _endTrace(run: Run): Promise<void> {\n const parentRun =\n run.parent_run_id !== undefined && this.getRunById(run.parent_run_id);\n if (parentRun) {\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n run.child_execution_order\n );\n } else {\n await this.persistRun(run);\n }\n await this.onRunUpdate?.(run);\n if (this.usesRunTreeMap) {\n this.runTreeMap.delete(run.id);\n } else {\n this.runMap.delete(run.id);\n }\n }\n\n protected _getExecutionOrder(parentRunId: string | undefined): number {\n const parentRun = parentRunId !== undefined && this.getRunById(parentRunId);\n // If a run has no parent then execution order is 1\n if (!parentRun) {\n return 1;\n }\n\n return parentRun.child_execution_order + 1;\n }\n\n /**\n * Create and add a run to the run map for LLM start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { prompts },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForLLMStart(\n llm,\n prompts,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chat model start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { messages },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChatModelStart(\n llm,\n messages,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n async handleLLMEnd(\n output: LLMResult,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = output;\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleLLMError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chain start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? chain.id[chain.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: chain,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs,\n execution_order,\n child_execution_order: execution_order,\n run_type: runType ?? \"chain\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChainStart(\n chain,\n inputs,\n runId,\n parentRunId,\n tags,\n metadata,\n runType,\n name\n );\n await this.onRunCreate?.(run);\n await this.onChainStart?.(run);\n return run;\n }\n\n async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = _coerceToDict(outputs, \"output\");\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleChainError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for tool start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? tool.id[tool.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: tool,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { input },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"tool\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForToolStart(\n tool,\n input,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onToolStart?.(run);\n return run;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async handleToolEnd(output: any, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { output };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleToolError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleAgentAction(action: AgentAction, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n const agentRun = run as AgentRun;\n agentRun.actions = agentRun.actions || [];\n agentRun.actions.push(action);\n agentRun.events.push({\n name: \"agent_action\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentAction?.(run as AgentRun);\n }\n\n async handleAgentEnd(action: AgentFinish, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"agent_end\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentEnd?.(run);\n }\n\n /**\n * Create and add a run to the run map for retriever start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? retriever.id[retriever.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: retriever,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { query },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"retriever\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForRetrieverStart(\n retriever,\n query,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onRetrieverStart?.(run);\n return run;\n }\n\n async handleRetrieverEnd(\n documents: Document<Record<string, unknown>>[],\n runId: string\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { documents };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleRetrieverError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleText(text: string, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"text\",\n time: new Date().toISOString(),\n kwargs: { text },\n });\n await this.onText?.(run);\n }\n\n async handleLLMNewToken(\n token: string,\n idx: NewTokenIndices,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n fields?: HandleLLMNewTokenCallbackFields\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\n `Invalid \"runId\" provided to \"handleLLMNewToken\" callback.`\n );\n }\n run.events.push({\n name: \"new_token\",\n time: new Date().toISOString(),\n kwargs: { token, idx, chunk: fields?.chunk },\n });\n await this.onLLMNewToken?.(run, token, { chunk: fields?.chunk });\n return run;\n }\n\n // custom event handlers\n\n onRunCreate?(run: Run): void | Promise<void>;\n\n onRunUpdate?(run: Run): void | Promise<void>;\n\n onLLMStart?(run: Run): void | Promise<void>;\n\n onLLMEnd?(run: Run): void | Promise<void>;\n\n onLLMError?(run: Run): void | Promise<void>;\n\n onChainStart?(run: Run): void | Promise<void>;\n\n onChainEnd?(run: Run): void | Promise<void>;\n\n onChainError?(run: Run): void | Promise<void>;\n\n onToolStart?(run: Run): void | Promise<void>;\n\n onToolEnd?(run: Run): void | Promise<void>;\n\n onToolError?(run: Run): void | Promise<void>;\n\n onAgentAction?(run: Run): void | Promise<void>;\n\n onAgentEnd?(run: Run): void | Promise<void>;\n\n onRetrieverStart?(run: Run): void | Promise<void>;\n\n onRetrieverEnd?(run: Run): void | Promise<void>;\n\n onRetrieverError?(run: Run): void | Promise<void>;\n\n onText?(run: Run): void | Promise<void>;\n\n onLLMNewToken?(\n run: Run,\n token: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs?: { chunk: any }\n ): void | Promise<void>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.js","names":["runTree?: RunTree","run?: Run","parentRun?: Run","value: any","defaultKey: string","x: BaseCallbackHandler","_fields?: BaseCallbackHandlerInput","runId?: string","error: unknown","parentRun: Run","childRun: Run","run: Run","parentRunId: string | undefined","llm: Serialized","prompts: string[]","runId: string","parentRunId?: string","extraParams?: KVMap","tags?: string[]","metadata?: KVMap","name?: string","messages: BaseMessage[][]","output: LLMResult","_parentRunId?: string","_tags?: string[]","extraParams?: Record<string, unknown>","chain: Serialized","inputs: ChainValues","runType?: string","outputs: ChainValues","kwargs?: { inputs?: Record<string, unknown> }","tool: Serialized","input: string","output: any","action: AgentAction","action: AgentFinish","retriever: Serialized","query: string","documents: Document<Record<string, unknown>>[]","text: string","token: string","idx: NewTokenIndices","fields?: HandleLLMNewTokenCallbackFields"],"sources":["../../src/tracers/base.ts"],"sourcesContent":["import { KVMap, BaseRun } from \"langsmith/schemas\";\nimport { RunTree, convertToDottedOrderFormat } from \"langsmith/run_trees\";\n\nimport type { ChainValues } from \"../utils/types/index.js\";\nimport type { AgentAction, AgentFinish } from \"../agents.js\";\nimport type { LLMResult } from \"../outputs.js\";\nimport type { BaseMessage } from \"../messages/base.js\";\nimport { Serialized } from \"../load/serializable.js\";\nimport {\n BaseCallbackHandler,\n BaseCallbackHandlerInput,\n HandleLLMNewTokenCallbackFields,\n NewTokenIndices,\n} from \"../callbacks/base.js\";\nimport type { Document } from \"../documents/document.js\";\nimport { getRuntimeEnvironmentSync } from \"../utils/env.js\";\n\nexport type RunType = string;\n\n// TODO: Remove this type and just use the base LangSmith Run type.\nexport interface Run extends BaseRun {\n // some optional fields are always present here\n id: string;\n start_time: number;\n end_time?: number;\n execution_order: number;\n // some additional fields that don't exist in sdk runs\n child_runs: this[];\n child_execution_order: number;\n events: Array<{\n name: string;\n time: string;\n kwargs?: Record<string, unknown>;\n }>;\n trace_id?: string;\n dotted_order?: string;\n /** @internal */\n _serialized_start_time?: string;\n}\n\n// TODO: Remove and just use base LangSmith Run type\nconst convertRunTreeToRun = (runTree?: RunTree): Run | undefined => {\n if (!runTree) {\n return undefined;\n }\n // Important that we return the raw run tree object since the reference\n // is mutated in other places.\n // TODO: Remove places where this is being done.\n\n runTree.events = runTree.events ?? [];\n runTree.child_runs = runTree.child_runs ?? [];\n // TODO: Remove this cast and just use the LangSmith RunTree type.\n return runTree as unknown as Run;\n};\n\nfunction convertRunToRunTree(run?: Run, parentRun?: Run): RunTree | undefined {\n if (!run) {\n return undefined;\n }\n return new RunTree({\n ...run,\n start_time: run._serialized_start_time ?? run.start_time,\n parent_run: convertRunToRunTree(parentRun),\n child_runs: run.child_runs\n .map((r) => convertRunToRunTree(r))\n .filter((r): r is RunTree => r !== undefined),\n extra: {\n ...run.extra,\n runtime: getRuntimeEnvironmentSync(),\n },\n tracingEnabled: false,\n });\n}\n\nexport interface AgentRun extends Run {\n actions: AgentAction[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _coerceToDict(value: any, defaultKey: string) {\n return value && !Array.isArray(value) && typeof value === \"object\"\n ? value\n : { [defaultKey]: value };\n}\n\nexport function isBaseTracer(x: BaseCallbackHandler): x is BaseTracer {\n return typeof (x as BaseTracer)._addRunToRunMap === \"function\";\n}\n\nexport abstract class BaseTracer extends BaseCallbackHandler {\n /** @deprecated Use `runTreeMap` instead. */\n protected runMap: Map<string, Run> = new Map();\n\n protected runTreeMap: Map<string, RunTree> = new Map();\n\n protected usesRunTreeMap = false;\n\n constructor(_fields?: BaseCallbackHandlerInput) {\n super(...arguments);\n }\n\n copy(): this {\n return this;\n }\n\n protected getRunById(runId?: string): Run | undefined {\n if (runId === undefined) {\n return undefined;\n }\n return this.usesRunTreeMap\n ? convertRunTreeToRun(this.runTreeMap.get(runId))\n : this.runMap.get(runId);\n }\n\n protected stringifyError(error: unknown) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof Error) {\n return error.message + (error?.stack ? `\\n\\n${error.stack}` : \"\");\n }\n\n if (typeof error === \"string\") {\n return error;\n }\n\n return `${error}`;\n }\n\n protected abstract persistRun(run: Run): Promise<void>;\n\n protected _addChildRun(parentRun: Run, childRun: Run) {\n parentRun.child_runs.push(childRun);\n }\n\n _addRunToRunMap(run: Run) {\n const { dottedOrder: currentDottedOrder, microsecondPrecisionDatestring } =\n convertToDottedOrderFormat(\n new Date(run.start_time).getTime(),\n run.id,\n run.execution_order\n );\n const storedRun = { ...run };\n const parentRun = this.getRunById(storedRun.parent_run_id);\n if (storedRun.parent_run_id !== undefined) {\n if (parentRun) {\n this._addChildRun(parentRun, storedRun);\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n storedRun.child_execution_order\n );\n storedRun.trace_id = parentRun.trace_id;\n if (parentRun.dotted_order !== undefined) {\n storedRun.dotted_order = [\n parentRun.dotted_order,\n currentDottedOrder,\n ].join(\".\");\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(`Parent run with UUID ${storedRun.parent_run_id} has no dotted order.`);\n }\n } else {\n // This can happen naturally for callbacks added within a run\n // console.debug(\n // `Parent run with UUID ${storedRun.parent_run_id} not found.`\n // );\n }\n } else {\n storedRun.trace_id = storedRun.id;\n storedRun.dotted_order = currentDottedOrder;\n storedRun._serialized_start_time = microsecondPrecisionDatestring;\n }\n if (this.usesRunTreeMap) {\n const runTree = convertRunToRunTree(storedRun, parentRun);\n if (runTree !== undefined) {\n this.runTreeMap.set(storedRun.id, runTree);\n }\n } else {\n this.runMap.set(storedRun.id, storedRun);\n }\n return storedRun;\n }\n\n protected async _endTrace(run: Run): Promise<void> {\n const parentRun =\n run.parent_run_id !== undefined && this.getRunById(run.parent_run_id);\n if (parentRun) {\n parentRun.child_execution_order = Math.max(\n parentRun.child_execution_order,\n run.child_execution_order\n );\n } else {\n await this.persistRun(run);\n }\n await this.onRunUpdate?.(run);\n if (this.usesRunTreeMap) {\n this.runTreeMap.delete(run.id);\n } else {\n this.runMap.delete(run.id);\n }\n }\n\n protected _getExecutionOrder(parentRunId: string | undefined): number {\n const parentRun = parentRunId !== undefined && this.getRunById(parentRunId);\n // If a run has no parent then execution order is 1\n if (!parentRun) {\n return 1;\n }\n\n return parentRun.child_execution_order + 1;\n }\n\n /**\n * Create and add a run to the run map for LLM start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { prompts },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForLLMStart(\n llm,\n prompts,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chat model start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const finalExtraParams = metadata\n ? { ...extraParams, metadata }\n : extraParams;\n const run: Run = {\n id: runId,\n name: name ?? llm.id[llm.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: llm,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { messages },\n execution_order,\n child_runs: [],\n child_execution_order: execution_order,\n run_type: \"llm\",\n extra: finalExtraParams ?? {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChatModelStart(\n llm: Serialized,\n messages: BaseMessage[][],\n runId: string,\n parentRunId?: string,\n extraParams?: KVMap,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChatModelStart(\n llm,\n messages,\n runId,\n parentRunId,\n extraParams,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onLLMStart?.(run);\n return run;\n }\n\n async handleLLMEnd(\n output: LLMResult,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = output;\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleLLMError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n extraParams?: Record<string, unknown>\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\"No LLM run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n run.extra = { ...run.extra, ...extraParams };\n await this.onLLMError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for chain start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? chain.id[chain.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: chain,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs,\n execution_order,\n child_execution_order: execution_order,\n run_type: runType ?? \"chain\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n runType?: string,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForChainStart(\n chain,\n inputs,\n runId,\n parentRunId,\n tags,\n metadata,\n runType,\n name\n );\n await this.onRunCreate?.(run);\n await this.onChainStart?.(run);\n return run;\n }\n\n async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.outputs = _coerceToDict(outputs, \"output\");\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleChainError(\n error: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n kwargs?: { inputs?: Record<string, unknown> }\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run) {\n throw new Error(\"No chain run to end.\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n if (kwargs?.inputs !== undefined) {\n run.inputs = _coerceToDict(kwargs.inputs, \"input\");\n }\n await this.onChainError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n /**\n * Create and add a run to the run map for tool start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? tool.id[tool.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: tool,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { input },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"tool\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForToolStart(\n tool,\n input,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onToolStart?.(run);\n return run;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async handleToolEnd(output: any, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { output };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleToolError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"tool\") {\n throw new Error(\"No tool run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onToolError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleAgentAction(action: AgentAction, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n const agentRun = run as AgentRun;\n agentRun.actions = agentRun.actions || [];\n agentRun.actions.push(action);\n agentRun.events.push({\n name: \"agent_action\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentAction?.(run as AgentRun);\n }\n\n async handleAgentEnd(action: AgentFinish, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"agent_end\",\n time: new Date().toISOString(),\n kwargs: { action },\n });\n await this.onAgentEnd?.(run);\n }\n\n /**\n * Create and add a run to the run map for retriever start events.\n * This must sometimes be done synchronously to avoid race conditions\n * when callbacks are backgrounded, so we expose it as a separate method here.\n */\n _createRunForRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ) {\n const execution_order = this._getExecutionOrder(parentRunId);\n const start_time = Date.now();\n const run: Run = {\n id: runId,\n name: name ?? retriever.id[retriever.id.length - 1],\n parent_run_id: parentRunId,\n start_time,\n serialized: retriever,\n events: [\n {\n name: \"start\",\n time: new Date(start_time).toISOString(),\n },\n ],\n inputs: { query },\n execution_order,\n child_execution_order: execution_order,\n run_type: \"retriever\",\n child_runs: [],\n extra: metadata ? { metadata } : {},\n tags: tags || [],\n };\n return this._addRunToRunMap(run);\n }\n\n async handleRetrieverStart(\n retriever: Serialized,\n query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: KVMap,\n name?: string\n ): Promise<Run> {\n const run =\n this.getRunById(runId) ??\n this._createRunForRetrieverStart(\n retriever,\n query,\n runId,\n parentRunId,\n tags,\n metadata,\n name\n );\n await this.onRunCreate?.(run);\n await this.onRetrieverStart?.(run);\n return run;\n }\n\n async handleRetrieverEnd(\n documents: Document<Record<string, unknown>>[],\n runId: string\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.outputs = { documents };\n run.events.push({\n name: \"end\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverEnd?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleRetrieverError(error: unknown, runId: string): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"retriever\") {\n throw new Error(\"No retriever run to end\");\n }\n run.end_time = Date.now();\n run.error = this.stringifyError(error);\n run.events.push({\n name: \"error\",\n time: new Date(run.end_time).toISOString(),\n });\n await this.onRetrieverError?.(run);\n await this._endTrace(run);\n return run;\n }\n\n async handleText(text: string, runId: string): Promise<void> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"chain\") {\n return;\n }\n run.events.push({\n name: \"text\",\n time: new Date().toISOString(),\n kwargs: { text },\n });\n await this.onText?.(run);\n }\n\n async handleLLMNewToken(\n token: string,\n idx: NewTokenIndices,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n fields?: HandleLLMNewTokenCallbackFields\n ): Promise<Run> {\n const run = this.getRunById(runId);\n if (!run || run?.run_type !== \"llm\") {\n throw new Error(\n `Invalid \"runId\" provided to \"handleLLMNewToken\" callback.`\n );\n }\n run.events.push({\n name: \"new_token\",\n time: new Date().toISOString(),\n kwargs: { token, idx, chunk: fields?.chunk },\n });\n await this.onLLMNewToken?.(run, token, { chunk: fields?.chunk });\n return run;\n }\n\n // custom event handlers\n\n onRunCreate?(run: Run): void | Promise<void>;\n\n onRunUpdate?(run: Run): void | Promise<void>;\n\n onLLMStart?(run: Run): void | Promise<void>;\n\n onLLMEnd?(run: Run): void | Promise<void>;\n\n onLLMError?(run: Run): void | Promise<void>;\n\n onChainStart?(run: Run): void | Promise<void>;\n\n onChainEnd?(run: Run): void | Promise<void>;\n\n onChainError?(run: Run): void | Promise<void>;\n\n onToolStart?(run: Run): void | Promise<void>;\n\n onToolEnd?(run: Run): void | Promise<void>;\n\n onToolError?(run: Run): void | Promise<void>;\n\n onAgentAction?(run: Run): void | Promise<void>;\n\n onAgentEnd?(run: Run): void | Promise<void>;\n\n onRetrieverStart?(run: Run): void | Promise<void>;\n\n onRetrieverEnd?(run: Run): void | Promise<void>;\n\n onRetrieverError?(run: Run): void | Promise<void>;\n\n onText?(run: Run): void | Promise<void>;\n\n onLLMNewToken?(\n run: Run,\n token: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs?: { chunk: any }\n ): void | Promise<void>;\n}\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ function wrap(style, text) {
11
11
  function tryJsonStringify(obj, fallback) {
12
12
  try {
13
13
  return JSON.stringify(obj, null, 2);
14
- } catch (err) {
14
+ } catch {
15
15
  return fallback;
16
16
  }
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"console.cjs","names":["style: CSPair","text: string","obj: unknown","fallback: string","value: unknown","run: Run","elapsed","styles","BaseTracer","_run: Run","parents: Run[]"],"sources":["../../src/tracers/console.ts"],"sourcesContent":["import type { CSPair } from \"ansi-styles\";\nimport styles from \"ansi-styles\";\nimport { BaseTracer, type AgentRun, type Run } from \"./base.js\";\n\nfunction wrap(style: CSPair, text: string) {\n return `${style.open}${text}${style.close}`;\n}\n\nfunction tryJsonStringify(obj: unknown, fallback: string) {\n try {\n return JSON.stringify(obj, null, 2);\n } catch (err) {\n return fallback;\n }\n}\n\nfunction formatKVMapItem(value: unknown) {\n if (typeof value === \"string\") {\n return value.trim();\n }\n\n if (value === null || value === undefined) {\n return value;\n }\n\n return tryJsonStringify(value, value.toString());\n}\n\nfunction elapsed(run: Run): string {\n if (!run.end_time) return \"\";\n const elapsed = run.end_time - run.start_time;\n if (elapsed < 1000) {\n return `${elapsed}ms`;\n }\n return `${(elapsed / 1000).toFixed(2)}s`;\n}\n\nconst { color } = styles;\n\n/**\n * A tracer that logs all events to the console. It extends from the\n * `BaseTracer` class and overrides its methods to provide custom logging\n * functionality.\n * @example\n * ```typescript\n *\n * const llm = new ChatAnthropic({\n * temperature: 0,\n * tags: [\"example\", \"callbacks\", \"constructor\"],\n * callbacks: [new ConsoleCallbackHandler()],\n * });\n *\n * ```\n */\nexport class ConsoleCallbackHandler extends BaseTracer {\n name = \"console_callback_handler\" as const;\n\n /**\n * Method used to persist the run. In this case, it simply returns a\n * resolved promise as there's no persistence logic.\n * @param _run The run to persist.\n * @returns A resolved promise.\n */\n protected persistRun(_run: Run) {\n return Promise.resolve();\n }\n\n // utility methods\n\n /**\n * Method used to get all the parent runs of a given run.\n * @param run The run whose parents are to be retrieved.\n * @returns An array of parent runs.\n */\n getParents(run: Run) {\n const parents: Run[] = [];\n let currentRun = run;\n while (currentRun.parent_run_id) {\n const parent = this.runMap.get(currentRun.parent_run_id);\n if (parent) {\n parents.push(parent);\n currentRun = parent;\n } else {\n break;\n }\n }\n return parents;\n }\n\n /**\n * Method used to get a string representation of the run's lineage, which\n * is used in logging.\n * @param run The run whose lineage is to be retrieved.\n * @returns A string representation of the run's lineage.\n */\n getBreadcrumbs(run: Run) {\n const parents = this.getParents(run).reverse();\n const string = [...parents, run]\n .map((parent, i, arr) => {\n const name = `${parent.execution_order}:${parent.run_type}:${parent.name}`;\n return i === arr.length - 1 ? wrap(styles.bold, name) : name;\n })\n .join(\" > \");\n return wrap(color.grey, string);\n }\n\n // logging methods\n\n /**\n * Method used to log the start of a chain run.\n * @param run The chain run that has started.\n * @returns void\n */\n onChainStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[chain/start]\"\n )} [${crumbs}] Entering Chain run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a chain run.\n * @param run The chain run that has ended.\n * @returns void\n */\n onChainEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[chain/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Chain run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a chain run.\n * @param run The chain run that has errored.\n * @returns void\n */\n onChainError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[chain/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Chain run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of an LLM run.\n * @param run The LLM run that has started.\n * @returns void\n */\n onLLMStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n const inputs =\n \"prompts\" in run.inputs\n ? { prompts: (run.inputs.prompts as string[]).map((p) => p.trim()) }\n : run.inputs;\n console.log(\n `${wrap(\n color.green,\n \"[llm/start]\"\n )} [${crumbs}] Entering LLM run with input: ${tryJsonStringify(\n inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of an LLM run.\n * @param run The LLM run that has ended.\n * @returns void\n */\n onLLMEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[llm/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting LLM run with output: ${tryJsonStringify(\n run.outputs,\n \"[response]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of an LLM run.\n * @param run The LLM run that has errored.\n * @returns void\n */\n onLLMError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[llm/error]\")} [${crumbs}] [${elapsed(\n run\n )}] LLM run errored with error: ${tryJsonStringify(run.error, \"[error]\")}`\n );\n }\n\n /**\n * Method used to log the start of a tool run.\n * @param run The tool run that has started.\n * @returns void\n */\n onToolStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[tool/start]\"\n )} [${crumbs}] Entering Tool run with input: \"${formatKVMapItem(\n run.inputs.input\n )}\"`\n );\n }\n\n /**\n * Method used to log the end of a tool run.\n * @param run The tool run that has ended.\n * @returns void\n */\n onToolEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n\n console.log(\n `${wrap(color.cyan, \"[tool/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Tool run with output: \"${formatKVMapItem(\n run.outputs?.output\n )}\"`\n );\n }\n\n /**\n * Method used to log any errors of a tool run.\n * @param run The tool run that has errored.\n * @returns void\n */\n onToolError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[tool/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Tool run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of a retriever run.\n * @param run The retriever run that has started.\n * @returns void\n */\n onRetrieverStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[retriever/start]\"\n )} [${crumbs}] Entering Retriever run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a retriever run.\n * @param run The retriever run that has ended.\n * @returns void\n */\n onRetrieverEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[retriever/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Retriever run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a retriever run.\n * @param run The retriever run that has errored.\n * @returns void\n */\n onRetrieverError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[retriever/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Retriever run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the action selected by the agent.\n * @param run The run in which the agent action occurred.\n * @returns void\n */\n onAgentAction(run: Run) {\n const agentRun = run as AgentRun;\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.blue,\n \"[agent/action]\"\n )} [${crumbs}] Agent selected action: ${tryJsonStringify(\n agentRun.actions[agentRun.actions.length - 1],\n \"[action]\"\n )}`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"console.cjs","names":["style: CSPair","text: string","obj: unknown","fallback: string","value: unknown","run: Run","elapsed","styles","BaseTracer","_run: Run","parents: Run[]"],"sources":["../../src/tracers/console.ts"],"sourcesContent":["import type { CSPair } from \"ansi-styles\";\nimport styles from \"ansi-styles\";\nimport { BaseTracer, type AgentRun, type Run } from \"./base.js\";\n\nfunction wrap(style: CSPair, text: string) {\n return `${style.open}${text}${style.close}`;\n}\n\nfunction tryJsonStringify(obj: unknown, fallback: string) {\n try {\n return JSON.stringify(obj, null, 2);\n } catch {\n return fallback;\n }\n}\n\nfunction formatKVMapItem(value: unknown) {\n if (typeof value === \"string\") {\n return value.trim();\n }\n\n if (value === null || value === undefined) {\n return value;\n }\n\n return tryJsonStringify(value, value.toString());\n}\n\nfunction elapsed(run: Run): string {\n if (!run.end_time) return \"\";\n const elapsed = run.end_time - run.start_time;\n if (elapsed < 1000) {\n return `${elapsed}ms`;\n }\n return `${(elapsed / 1000).toFixed(2)}s`;\n}\n\nconst { color } = styles;\n\n/**\n * A tracer that logs all events to the console. It extends from the\n * `BaseTracer` class and overrides its methods to provide custom logging\n * functionality.\n * @example\n * ```typescript\n *\n * const llm = new ChatAnthropic({\n * temperature: 0,\n * tags: [\"example\", \"callbacks\", \"constructor\"],\n * callbacks: [new ConsoleCallbackHandler()],\n * });\n *\n * ```\n */\nexport class ConsoleCallbackHandler extends BaseTracer {\n name = \"console_callback_handler\" as const;\n\n /**\n * Method used to persist the run. In this case, it simply returns a\n * resolved promise as there's no persistence logic.\n * @param _run The run to persist.\n * @returns A resolved promise.\n */\n protected persistRun(_run: Run) {\n return Promise.resolve();\n }\n\n // utility methods\n\n /**\n * Method used to get all the parent runs of a given run.\n * @param run The run whose parents are to be retrieved.\n * @returns An array of parent runs.\n */\n getParents(run: Run) {\n const parents: Run[] = [];\n let currentRun = run;\n while (currentRun.parent_run_id) {\n const parent = this.runMap.get(currentRun.parent_run_id);\n if (parent) {\n parents.push(parent);\n currentRun = parent;\n } else {\n break;\n }\n }\n return parents;\n }\n\n /**\n * Method used to get a string representation of the run's lineage, which\n * is used in logging.\n * @param run The run whose lineage is to be retrieved.\n * @returns A string representation of the run's lineage.\n */\n getBreadcrumbs(run: Run) {\n const parents = this.getParents(run).reverse();\n const string = [...parents, run]\n .map((parent, i, arr) => {\n const name = `${parent.execution_order}:${parent.run_type}:${parent.name}`;\n return i === arr.length - 1 ? wrap(styles.bold, name) : name;\n })\n .join(\" > \");\n return wrap(color.grey, string);\n }\n\n // logging methods\n\n /**\n * Method used to log the start of a chain run.\n * @param run The chain run that has started.\n * @returns void\n */\n onChainStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[chain/start]\"\n )} [${crumbs}] Entering Chain run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a chain run.\n * @param run The chain run that has ended.\n * @returns void\n */\n onChainEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[chain/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Chain run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a chain run.\n * @param run The chain run that has errored.\n * @returns void\n */\n onChainError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[chain/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Chain run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of an LLM run.\n * @param run The LLM run that has started.\n * @returns void\n */\n onLLMStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n const inputs =\n \"prompts\" in run.inputs\n ? { prompts: (run.inputs.prompts as string[]).map((p) => p.trim()) }\n : run.inputs;\n console.log(\n `${wrap(\n color.green,\n \"[llm/start]\"\n )} [${crumbs}] Entering LLM run with input: ${tryJsonStringify(\n inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of an LLM run.\n * @param run The LLM run that has ended.\n * @returns void\n */\n onLLMEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[llm/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting LLM run with output: ${tryJsonStringify(\n run.outputs,\n \"[response]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of an LLM run.\n * @param run The LLM run that has errored.\n * @returns void\n */\n onLLMError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[llm/error]\")} [${crumbs}] [${elapsed(\n run\n )}] LLM run errored with error: ${tryJsonStringify(run.error, \"[error]\")}`\n );\n }\n\n /**\n * Method used to log the start of a tool run.\n * @param run The tool run that has started.\n * @returns void\n */\n onToolStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[tool/start]\"\n )} [${crumbs}] Entering Tool run with input: \"${formatKVMapItem(\n run.inputs.input\n )}\"`\n );\n }\n\n /**\n * Method used to log the end of a tool run.\n * @param run The tool run that has ended.\n * @returns void\n */\n onToolEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n\n console.log(\n `${wrap(color.cyan, \"[tool/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Tool run with output: \"${formatKVMapItem(\n run.outputs?.output\n )}\"`\n );\n }\n\n /**\n * Method used to log any errors of a tool run.\n * @param run The tool run that has errored.\n * @returns void\n */\n onToolError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[tool/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Tool run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of a retriever run.\n * @param run The retriever run that has started.\n * @returns void\n */\n onRetrieverStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[retriever/start]\"\n )} [${crumbs}] Entering Retriever run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a retriever run.\n * @param run The retriever run that has ended.\n * @returns void\n */\n onRetrieverEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[retriever/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Retriever run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a retriever run.\n * @param run The retriever run that has errored.\n * @returns void\n */\n onRetrieverError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[retriever/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Retriever run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the action selected by the agent.\n * @param run The run in which the agent action occurred.\n * @returns void\n */\n onAgentAction(run: Run) {\n const agentRun = run as AgentRun;\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.blue,\n \"[agent/action]\"\n )} [${crumbs}] Agent selected action: ${tryJsonStringify(\n agentRun.actions[agentRun.actions.length - 1],\n \"[action]\"\n )}`\n );\n }\n}\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ function wrap(style, text) {
11
11
  function tryJsonStringify(obj, fallback) {
12
12
  try {
13
13
  return JSON.stringify(obj, null, 2);
14
- } catch (err) {
14
+ } catch {
15
15
  return fallback;
16
16
  }
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","names":["style: CSPair","text: string","obj: unknown","fallback: string","value: unknown","run: Run","elapsed","_run: Run","parents: Run[]"],"sources":["../../src/tracers/console.ts"],"sourcesContent":["import type { CSPair } from \"ansi-styles\";\nimport styles from \"ansi-styles\";\nimport { BaseTracer, type AgentRun, type Run } from \"./base.js\";\n\nfunction wrap(style: CSPair, text: string) {\n return `${style.open}${text}${style.close}`;\n}\n\nfunction tryJsonStringify(obj: unknown, fallback: string) {\n try {\n return JSON.stringify(obj, null, 2);\n } catch (err) {\n return fallback;\n }\n}\n\nfunction formatKVMapItem(value: unknown) {\n if (typeof value === \"string\") {\n return value.trim();\n }\n\n if (value === null || value === undefined) {\n return value;\n }\n\n return tryJsonStringify(value, value.toString());\n}\n\nfunction elapsed(run: Run): string {\n if (!run.end_time) return \"\";\n const elapsed = run.end_time - run.start_time;\n if (elapsed < 1000) {\n return `${elapsed}ms`;\n }\n return `${(elapsed / 1000).toFixed(2)}s`;\n}\n\nconst { color } = styles;\n\n/**\n * A tracer that logs all events to the console. It extends from the\n * `BaseTracer` class and overrides its methods to provide custom logging\n * functionality.\n * @example\n * ```typescript\n *\n * const llm = new ChatAnthropic({\n * temperature: 0,\n * tags: [\"example\", \"callbacks\", \"constructor\"],\n * callbacks: [new ConsoleCallbackHandler()],\n * });\n *\n * ```\n */\nexport class ConsoleCallbackHandler extends BaseTracer {\n name = \"console_callback_handler\" as const;\n\n /**\n * Method used to persist the run. In this case, it simply returns a\n * resolved promise as there's no persistence logic.\n * @param _run The run to persist.\n * @returns A resolved promise.\n */\n protected persistRun(_run: Run) {\n return Promise.resolve();\n }\n\n // utility methods\n\n /**\n * Method used to get all the parent runs of a given run.\n * @param run The run whose parents are to be retrieved.\n * @returns An array of parent runs.\n */\n getParents(run: Run) {\n const parents: Run[] = [];\n let currentRun = run;\n while (currentRun.parent_run_id) {\n const parent = this.runMap.get(currentRun.parent_run_id);\n if (parent) {\n parents.push(parent);\n currentRun = parent;\n } else {\n break;\n }\n }\n return parents;\n }\n\n /**\n * Method used to get a string representation of the run's lineage, which\n * is used in logging.\n * @param run The run whose lineage is to be retrieved.\n * @returns A string representation of the run's lineage.\n */\n getBreadcrumbs(run: Run) {\n const parents = this.getParents(run).reverse();\n const string = [...parents, run]\n .map((parent, i, arr) => {\n const name = `${parent.execution_order}:${parent.run_type}:${parent.name}`;\n return i === arr.length - 1 ? wrap(styles.bold, name) : name;\n })\n .join(\" > \");\n return wrap(color.grey, string);\n }\n\n // logging methods\n\n /**\n * Method used to log the start of a chain run.\n * @param run The chain run that has started.\n * @returns void\n */\n onChainStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[chain/start]\"\n )} [${crumbs}] Entering Chain run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a chain run.\n * @param run The chain run that has ended.\n * @returns void\n */\n onChainEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[chain/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Chain run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a chain run.\n * @param run The chain run that has errored.\n * @returns void\n */\n onChainError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[chain/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Chain run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of an LLM run.\n * @param run The LLM run that has started.\n * @returns void\n */\n onLLMStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n const inputs =\n \"prompts\" in run.inputs\n ? { prompts: (run.inputs.prompts as string[]).map((p) => p.trim()) }\n : run.inputs;\n console.log(\n `${wrap(\n color.green,\n \"[llm/start]\"\n )} [${crumbs}] Entering LLM run with input: ${tryJsonStringify(\n inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of an LLM run.\n * @param run The LLM run that has ended.\n * @returns void\n */\n onLLMEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[llm/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting LLM run with output: ${tryJsonStringify(\n run.outputs,\n \"[response]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of an LLM run.\n * @param run The LLM run that has errored.\n * @returns void\n */\n onLLMError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[llm/error]\")} [${crumbs}] [${elapsed(\n run\n )}] LLM run errored with error: ${tryJsonStringify(run.error, \"[error]\")}`\n );\n }\n\n /**\n * Method used to log the start of a tool run.\n * @param run The tool run that has started.\n * @returns void\n */\n onToolStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[tool/start]\"\n )} [${crumbs}] Entering Tool run with input: \"${formatKVMapItem(\n run.inputs.input\n )}\"`\n );\n }\n\n /**\n * Method used to log the end of a tool run.\n * @param run The tool run that has ended.\n * @returns void\n */\n onToolEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n\n console.log(\n `${wrap(color.cyan, \"[tool/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Tool run with output: \"${formatKVMapItem(\n run.outputs?.output\n )}\"`\n );\n }\n\n /**\n * Method used to log any errors of a tool run.\n * @param run The tool run that has errored.\n * @returns void\n */\n onToolError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[tool/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Tool run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of a retriever run.\n * @param run The retriever run that has started.\n * @returns void\n */\n onRetrieverStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[retriever/start]\"\n )} [${crumbs}] Entering Retriever run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a retriever run.\n * @param run The retriever run that has ended.\n * @returns void\n */\n onRetrieverEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[retriever/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Retriever run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a retriever run.\n * @param run The retriever run that has errored.\n * @returns void\n */\n onRetrieverError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[retriever/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Retriever run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the action selected by the agent.\n * @param run The run in which the agent action occurred.\n * @returns void\n */\n onAgentAction(run: Run) {\n const agentRun = run as AgentRun;\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.blue,\n \"[agent/action]\"\n )} [${crumbs}] Agent selected action: ${tryJsonStringify(\n agentRun.actions[agentRun.actions.length - 1],\n \"[action]\"\n )}`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"console.js","names":["style: CSPair","text: string","obj: unknown","fallback: string","value: unknown","run: Run","elapsed","_run: Run","parents: Run[]"],"sources":["../../src/tracers/console.ts"],"sourcesContent":["import type { CSPair } from \"ansi-styles\";\nimport styles from \"ansi-styles\";\nimport { BaseTracer, type AgentRun, type Run } from \"./base.js\";\n\nfunction wrap(style: CSPair, text: string) {\n return `${style.open}${text}${style.close}`;\n}\n\nfunction tryJsonStringify(obj: unknown, fallback: string) {\n try {\n return JSON.stringify(obj, null, 2);\n } catch {\n return fallback;\n }\n}\n\nfunction formatKVMapItem(value: unknown) {\n if (typeof value === \"string\") {\n return value.trim();\n }\n\n if (value === null || value === undefined) {\n return value;\n }\n\n return tryJsonStringify(value, value.toString());\n}\n\nfunction elapsed(run: Run): string {\n if (!run.end_time) return \"\";\n const elapsed = run.end_time - run.start_time;\n if (elapsed < 1000) {\n return `${elapsed}ms`;\n }\n return `${(elapsed / 1000).toFixed(2)}s`;\n}\n\nconst { color } = styles;\n\n/**\n * A tracer that logs all events to the console. It extends from the\n * `BaseTracer` class and overrides its methods to provide custom logging\n * functionality.\n * @example\n * ```typescript\n *\n * const llm = new ChatAnthropic({\n * temperature: 0,\n * tags: [\"example\", \"callbacks\", \"constructor\"],\n * callbacks: [new ConsoleCallbackHandler()],\n * });\n *\n * ```\n */\nexport class ConsoleCallbackHandler extends BaseTracer {\n name = \"console_callback_handler\" as const;\n\n /**\n * Method used to persist the run. In this case, it simply returns a\n * resolved promise as there's no persistence logic.\n * @param _run The run to persist.\n * @returns A resolved promise.\n */\n protected persistRun(_run: Run) {\n return Promise.resolve();\n }\n\n // utility methods\n\n /**\n * Method used to get all the parent runs of a given run.\n * @param run The run whose parents are to be retrieved.\n * @returns An array of parent runs.\n */\n getParents(run: Run) {\n const parents: Run[] = [];\n let currentRun = run;\n while (currentRun.parent_run_id) {\n const parent = this.runMap.get(currentRun.parent_run_id);\n if (parent) {\n parents.push(parent);\n currentRun = parent;\n } else {\n break;\n }\n }\n return parents;\n }\n\n /**\n * Method used to get a string representation of the run's lineage, which\n * is used in logging.\n * @param run The run whose lineage is to be retrieved.\n * @returns A string representation of the run's lineage.\n */\n getBreadcrumbs(run: Run) {\n const parents = this.getParents(run).reverse();\n const string = [...parents, run]\n .map((parent, i, arr) => {\n const name = `${parent.execution_order}:${parent.run_type}:${parent.name}`;\n return i === arr.length - 1 ? wrap(styles.bold, name) : name;\n })\n .join(\" > \");\n return wrap(color.grey, string);\n }\n\n // logging methods\n\n /**\n * Method used to log the start of a chain run.\n * @param run The chain run that has started.\n * @returns void\n */\n onChainStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[chain/start]\"\n )} [${crumbs}] Entering Chain run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a chain run.\n * @param run The chain run that has ended.\n * @returns void\n */\n onChainEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[chain/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Chain run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a chain run.\n * @param run The chain run that has errored.\n * @returns void\n */\n onChainError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[chain/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Chain run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of an LLM run.\n * @param run The LLM run that has started.\n * @returns void\n */\n onLLMStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n const inputs =\n \"prompts\" in run.inputs\n ? { prompts: (run.inputs.prompts as string[]).map((p) => p.trim()) }\n : run.inputs;\n console.log(\n `${wrap(\n color.green,\n \"[llm/start]\"\n )} [${crumbs}] Entering LLM run with input: ${tryJsonStringify(\n inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of an LLM run.\n * @param run The LLM run that has ended.\n * @returns void\n */\n onLLMEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[llm/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting LLM run with output: ${tryJsonStringify(\n run.outputs,\n \"[response]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of an LLM run.\n * @param run The LLM run that has errored.\n * @returns void\n */\n onLLMError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[llm/error]\")} [${crumbs}] [${elapsed(\n run\n )}] LLM run errored with error: ${tryJsonStringify(run.error, \"[error]\")}`\n );\n }\n\n /**\n * Method used to log the start of a tool run.\n * @param run The tool run that has started.\n * @returns void\n */\n onToolStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[tool/start]\"\n )} [${crumbs}] Entering Tool run with input: \"${formatKVMapItem(\n run.inputs.input\n )}\"`\n );\n }\n\n /**\n * Method used to log the end of a tool run.\n * @param run The tool run that has ended.\n * @returns void\n */\n onToolEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n\n console.log(\n `${wrap(color.cyan, \"[tool/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Tool run with output: \"${formatKVMapItem(\n run.outputs?.output\n )}\"`\n );\n }\n\n /**\n * Method used to log any errors of a tool run.\n * @param run The tool run that has errored.\n * @returns void\n */\n onToolError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[tool/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Tool run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the start of a retriever run.\n * @param run The retriever run that has started.\n * @returns void\n */\n onRetrieverStart(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.green,\n \"[retriever/start]\"\n )} [${crumbs}] Entering Retriever run with input: ${tryJsonStringify(\n run.inputs,\n \"[inputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log the end of a retriever run.\n * @param run The retriever run that has ended.\n * @returns void\n */\n onRetrieverEnd(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.cyan, \"[retriever/end]\")} [${crumbs}] [${elapsed(\n run\n )}] Exiting Retriever run with output: ${tryJsonStringify(\n run.outputs,\n \"[outputs]\"\n )}`\n );\n }\n\n /**\n * Method used to log any errors of a retriever run.\n * @param run The retriever run that has errored.\n * @returns void\n */\n onRetrieverError(run: Run) {\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(color.red, \"[retriever/error]\")} [${crumbs}] [${elapsed(\n run\n )}] Retriever run errored with error: ${tryJsonStringify(\n run.error,\n \"[error]\"\n )}`\n );\n }\n\n /**\n * Method used to log the action selected by the agent.\n * @param run The run in which the agent action occurred.\n * @returns void\n */\n onAgentAction(run: Run) {\n const agentRun = run as AgentRun;\n const crumbs = this.getBreadcrumbs(run);\n console.log(\n `${wrap(\n color.blue,\n \"[agent/action]\"\n )} [${crumbs}] Agent selected action: ${tryJsonStringify(\n agentRun.actions[agentRun.actions.length - 1],\n \"[action]\"\n )}`\n );\n }\n}\n"],"mappings":"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"}
@@ -104,7 +104,7 @@ var EventStreamCallbackHandler = class extends require_tracers_base.BaseTracer {
104
104
  yield chunk;
105
105
  }
106
106
  } finally {
107
- tappedPromiseResolver();
107
+ tappedPromiseResolver?.();
108
108
  }
109
109
  } else {
110
110
  yield firstChunk.value;