@langchain/core 1.0.0-alpha.6 → 1.0.0

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 (245) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/LICENSE +6 -6
  3. package/README.md +2 -23
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/caches/base.d.cts.map +1 -1
  6. package/dist/callbacks/base.d.cts.map +1 -1
  7. package/dist/callbacks/base.d.ts.map +1 -1
  8. package/dist/callbacks/manager.cjs +9 -64
  9. package/dist/callbacks/manager.cjs.map +1 -1
  10. package/dist/callbacks/manager.d.cts +1 -23
  11. package/dist/callbacks/manager.d.cts.map +1 -1
  12. package/dist/callbacks/manager.d.ts +1 -23
  13. package/dist/callbacks/manager.d.ts.map +1 -1
  14. package/dist/callbacks/manager.js +10 -63
  15. package/dist/callbacks/manager.js.map +1 -1
  16. package/dist/chat_history.cjs +0 -4
  17. package/dist/chat_history.cjs.map +1 -1
  18. package/dist/chat_history.d.cts +1 -3
  19. package/dist/chat_history.d.cts.map +1 -1
  20. package/dist/chat_history.d.ts +1 -3
  21. package/dist/chat_history.d.ts.map +1 -1
  22. package/dist/chat_history.js +0 -4
  23. package/dist/chat_history.js.map +1 -1
  24. package/dist/document_loaders/base.cjs +1 -13
  25. package/dist/document_loaders/base.cjs.map +1 -1
  26. package/dist/document_loaders/base.d.cts +0 -9
  27. package/dist/document_loaders/base.d.cts.map +1 -1
  28. package/dist/document_loaders/base.d.ts +0 -9
  29. package/dist/document_loaders/base.d.ts.map +1 -1
  30. package/dist/document_loaders/base.js +1 -13
  31. package/dist/document_loaders/base.js.map +1 -1
  32. package/dist/document_loaders/langsmith.d.cts +1 -1
  33. package/dist/language_models/base.cjs.map +1 -1
  34. package/dist/language_models/base.d.cts +0 -16
  35. package/dist/language_models/base.d.cts.map +1 -1
  36. package/dist/language_models/base.d.ts +0 -16
  37. package/dist/language_models/base.d.ts.map +1 -1
  38. package/dist/language_models/base.js.map +1 -1
  39. package/dist/language_models/chat_models.cjs +10 -83
  40. package/dist/language_models/chat_models.cjs.map +1 -1
  41. package/dist/language_models/chat_models.d.cts +21 -55
  42. package/dist/language_models/chat_models.d.cts.map +1 -1
  43. package/dist/language_models/chat_models.d.ts +21 -55
  44. package/dist/language_models/chat_models.d.ts.map +1 -1
  45. package/dist/language_models/chat_models.js +11 -83
  46. package/dist/language_models/chat_models.js.map +1 -1
  47. package/dist/language_models/llms.cjs +0 -56
  48. package/dist/language_models/llms.cjs.map +1 -1
  49. package/dist/language_models/llms.d.cts +1 -43
  50. package/dist/language_models/llms.d.cts.map +1 -1
  51. package/dist/language_models/llms.d.ts +1 -43
  52. package/dist/language_models/llms.d.ts.map +1 -1
  53. package/dist/language_models/llms.js +0 -56
  54. package/dist/language_models/llms.js.map +1 -1
  55. package/dist/load/import_map.cjs +1 -7
  56. package/dist/load/import_map.cjs.map +1 -1
  57. package/dist/load/import_map.js +1 -7
  58. package/dist/load/import_map.js.map +1 -1
  59. package/dist/messages/ai.cjs +4 -0
  60. package/dist/messages/ai.cjs.map +1 -1
  61. package/dist/messages/ai.js +4 -0
  62. package/dist/messages/ai.js.map +1 -1
  63. package/dist/messages/block_translators/anthropic.cjs +191 -144
  64. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  65. package/dist/messages/block_translators/anthropic.js +191 -144
  66. package/dist/messages/block_translators/anthropic.js.map +1 -1
  67. package/dist/messages/block_translators/index.cjs +2 -2
  68. package/dist/messages/block_translators/index.cjs.map +1 -1
  69. package/dist/messages/block_translators/index.js +4 -4
  70. package/dist/messages/block_translators/index.js.map +1 -1
  71. package/dist/messages/block_translators/openai.cjs +78 -22
  72. package/dist/messages/block_translators/openai.cjs.map +1 -1
  73. package/dist/messages/block_translators/openai.js +78 -22
  74. package/dist/messages/block_translators/openai.js.map +1 -1
  75. package/dist/messages/content/tools.cjs +1 -5
  76. package/dist/messages/content/tools.cjs.map +1 -1
  77. package/dist/messages/content/tools.d.cts +1 -85
  78. package/dist/messages/content/tools.d.cts.map +1 -1
  79. package/dist/messages/content/tools.d.ts +1 -85
  80. package/dist/messages/content/tools.d.ts.map +1 -1
  81. package/dist/messages/content/tools.js +1 -5
  82. package/dist/messages/content/tools.js.map +1 -1
  83. package/dist/messages/metadata.cjs.map +1 -1
  84. package/dist/messages/metadata.d.cts +3 -0
  85. package/dist/messages/metadata.d.cts.map +1 -1
  86. package/dist/messages/metadata.d.ts +3 -0
  87. package/dist/messages/metadata.d.ts.map +1 -1
  88. package/dist/messages/metadata.js.map +1 -1
  89. package/dist/messages/tool.cjs +2 -0
  90. package/dist/messages/tool.cjs.map +1 -1
  91. package/dist/messages/tool.d.cts +2 -0
  92. package/dist/messages/tool.d.cts.map +1 -1
  93. package/dist/messages/tool.d.ts +2 -0
  94. package/dist/messages/tool.d.ts.map +1 -1
  95. package/dist/messages/tool.js +2 -0
  96. package/dist/messages/tool.js.map +1 -1
  97. package/dist/output_parsers/json.cjs +5 -0
  98. package/dist/output_parsers/json.cjs.map +1 -1
  99. package/dist/output_parsers/json.d.cts +2 -0
  100. package/dist/output_parsers/json.d.cts.map +1 -1
  101. package/dist/output_parsers/json.d.ts +2 -0
  102. package/dist/output_parsers/json.d.ts.map +1 -1
  103. package/dist/output_parsers/json.js +5 -0
  104. package/dist/output_parsers/json.js.map +1 -1
  105. package/dist/prompts/base.cjs +0 -36
  106. package/dist/prompts/base.cjs.map +1 -1
  107. package/dist/prompts/base.d.cts +0 -16
  108. package/dist/prompts/base.d.cts.map +1 -1
  109. package/dist/prompts/base.d.ts +0 -16
  110. package/dist/prompts/base.d.ts.map +1 -1
  111. package/dist/prompts/base.js +0 -36
  112. package/dist/prompts/base.js.map +1 -1
  113. package/dist/prompts/chat.cjs +1 -5
  114. package/dist/prompts/chat.cjs.map +1 -1
  115. package/dist/prompts/chat.d.cts +1 -4
  116. package/dist/prompts/chat.d.cts.map +1 -1
  117. package/dist/prompts/chat.d.ts +1 -4
  118. package/dist/prompts/chat.d.ts.map +1 -1
  119. package/dist/prompts/chat.js +1 -5
  120. package/dist/prompts/chat.js.map +1 -1
  121. package/dist/prompts/dict.d.cts +1 -1
  122. package/dist/prompts/dict.d.ts +1 -1
  123. package/dist/prompts/few_shot.d.cts +2 -2
  124. package/dist/prompts/few_shot.d.ts +2 -2
  125. package/dist/prompts/image.d.cts +1 -1
  126. package/dist/prompts/image.d.ts +1 -1
  127. package/dist/prompts/index.d.cts +2 -2
  128. package/dist/prompts/index.d.ts +2 -2
  129. package/dist/prompts/pipeline.d.cts +1 -1
  130. package/dist/prompts/pipeline.d.ts +1 -1
  131. package/dist/prompts/prompt.d.cts +2 -2
  132. package/dist/prompts/prompt.d.ts +2 -2
  133. package/dist/retrievers/index.cjs +3 -18
  134. package/dist/retrievers/index.cjs.map +1 -1
  135. package/dist/retrievers/index.d.cts +2 -27
  136. package/dist/retrievers/index.d.cts.map +1 -1
  137. package/dist/retrievers/index.d.ts +2 -27
  138. package/dist/retrievers/index.d.ts.map +1 -1
  139. package/dist/retrievers/index.js +3 -18
  140. package/dist/retrievers/index.js.map +1 -1
  141. package/dist/runnables/base.cjs +24 -63
  142. package/dist/runnables/base.cjs.map +1 -1
  143. package/dist/runnables/base.d.cts +10 -39
  144. package/dist/runnables/base.d.cts.map +1 -1
  145. package/dist/runnables/base.d.ts +10 -39
  146. package/dist/runnables/base.d.ts.map +1 -1
  147. package/dist/runnables/base.js +24 -63
  148. package/dist/runnables/base.js.map +1 -1
  149. package/dist/runnables/graph.cjs +1 -1
  150. package/dist/runnables/graph.cjs.map +1 -1
  151. package/dist/runnables/graph.js +2 -2
  152. package/dist/runnables/graph.js.map +1 -1
  153. package/dist/runnables/graph_mermaid.cjs +1 -10
  154. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  155. package/dist/runnables/graph_mermaid.js +1 -10
  156. package/dist/runnables/graph_mermaid.js.map +1 -1
  157. package/dist/runnables/history.cjs +1 -1
  158. package/dist/runnables/history.cjs.map +1 -1
  159. package/dist/runnables/history.d.cts +2 -2
  160. package/dist/runnables/history.d.cts.map +1 -1
  161. package/dist/runnables/history.d.ts +2 -2
  162. package/dist/runnables/history.d.ts.map +1 -1
  163. package/dist/runnables/history.js +1 -1
  164. package/dist/runnables/history.js.map +1 -1
  165. package/dist/stores.cjs.map +1 -1
  166. package/dist/stores.d.cts +3 -29
  167. package/dist/stores.d.cts.map +1 -1
  168. package/dist/stores.d.ts +3 -29
  169. package/dist/stores.d.ts.map +1 -1
  170. package/dist/stores.js.map +1 -1
  171. package/dist/tools/index.cjs +12 -4
  172. package/dist/tools/index.cjs.map +1 -1
  173. package/dist/tools/index.js +12 -4
  174. package/dist/tools/index.js.map +1 -1
  175. package/dist/tools/types.cjs.map +1 -1
  176. package/dist/tools/types.d.cts +4 -0
  177. package/dist/tools/types.d.cts.map +1 -1
  178. package/dist/tools/types.d.ts +4 -0
  179. package/dist/tools/types.d.ts.map +1 -1
  180. package/dist/tools/types.js.map +1 -1
  181. package/dist/tracers/base.cjs +1 -1
  182. package/dist/tracers/base.cjs.map +1 -1
  183. package/dist/tracers/base.d.cts +1 -1
  184. package/dist/tracers/base.js +2 -2
  185. package/dist/tracers/base.js.map +1 -1
  186. package/dist/tracers/log_stream.d.cts +1 -1
  187. package/dist/tracers/log_stream.d.ts +1 -1
  188. package/dist/tracers/tracer_langchain.cjs +1 -0
  189. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  190. package/dist/tracers/tracer_langchain.d.cts +2 -2
  191. package/dist/tracers/tracer_langchain.js +1 -0
  192. package/dist/tracers/tracer_langchain.js.map +1 -1
  193. package/dist/utils/env.cjs +1 -9
  194. package/dist/utils/env.cjs.map +1 -1
  195. package/dist/utils/env.d.cts +2 -6
  196. package/dist/utils/env.d.cts.map +1 -1
  197. package/dist/utils/env.d.ts +2 -6
  198. package/dist/utils/env.d.ts.map +1 -1
  199. package/dist/utils/env.js +2 -9
  200. package/dist/utils/env.js.map +1 -1
  201. package/dist/utils/testing/message_history.cjs +1 -1
  202. package/dist/utils/testing/message_history.cjs.map +1 -1
  203. package/dist/utils/testing/message_history.d.cts +1 -1
  204. package/dist/utils/testing/message_history.d.cts.map +1 -1
  205. package/dist/utils/testing/message_history.d.ts +1 -1
  206. package/dist/utils/testing/message_history.d.ts.map +1 -1
  207. package/dist/utils/testing/message_history.js +1 -1
  208. package/dist/utils/testing/message_history.js.map +1 -1
  209. package/dist/utils/types/index.cjs +6 -0
  210. package/dist/utils/types/index.d.cts +2 -2
  211. package/dist/utils/types/index.d.ts +2 -2
  212. package/dist/utils/types/index.js +5 -2
  213. package/dist/utils/types/zod.cjs +23 -0
  214. package/dist/utils/types/zod.cjs.map +1 -1
  215. package/dist/utils/types/zod.d.cts +11 -1
  216. package/dist/utils/types/zod.d.cts.map +1 -1
  217. package/dist/utils/types/zod.d.ts +11 -1
  218. package/dist/utils/types/zod.d.ts.map +1 -1
  219. package/dist/utils/types/zod.js +21 -1
  220. package/dist/utils/types/zod.js.map +1 -1
  221. package/package.json +121 -154
  222. package/dist/runnables/remote.cjs +0 -399
  223. package/dist/runnables/remote.cjs.map +0 -1
  224. package/dist/runnables/remote.d.cts +0 -73
  225. package/dist/runnables/remote.d.cts.map +0 -1
  226. package/dist/runnables/remote.d.ts +0 -73
  227. package/dist/runnables/remote.d.ts.map +0 -1
  228. package/dist/runnables/remote.js +0 -393
  229. package/dist/runnables/remote.js.map +0 -1
  230. package/dist/tracers/initialize.cjs +0 -46
  231. package/dist/tracers/initialize.cjs.map +0 -1
  232. package/dist/tracers/initialize.d.cts +0 -26
  233. package/dist/tracers/initialize.d.cts.map +0 -1
  234. package/dist/tracers/initialize.d.ts +0 -26
  235. package/dist/tracers/initialize.d.ts.map +0 -1
  236. package/dist/tracers/initialize.js +0 -39
  237. package/dist/tracers/initialize.js.map +0 -1
  238. package/dist/tracers/tracer_langchain_v1.cjs +0 -168
  239. package/dist/tracers/tracer_langchain_v1.cjs.map +0 -1
  240. package/dist/tracers/tracer_langchain_v1.d.cts +0 -64
  241. package/dist/tracers/tracer_langchain_v1.d.cts.map +0 -1
  242. package/dist/tracers/tracer_langchain_v1.d.ts +0 -64
  243. package/dist/tracers/tracer_langchain_v1.d.ts.map +0 -1
  244. package/dist/tracers/tracer_langchain_v1.js +0 -162
  245. package/dist/tracers/tracer_langchain_v1.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 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":";;;;;;;;;;;AAyCA,MAAM,sBAAsB,CAACA,YAAuC;AAClE,KAAI,CAAC,QACH,QAAO;CAMT,QAAQ,SAAS,QAAQ,UAAU,CAAE;CACrC,QAAQ,aAAa,QAAQ,cAAc,CAAE;AAE7C,QAAO;AACR;AAED,SAAS,oBAAoBC,KAAWC,WAAsC;AAC5E,KAAI,CAAC,IACH,QAAO;AAET,QAAO,IAAIC,4BAAQ;EACjB,GAAG;EACH,YAAY,IAAI,0BAA0B,IAAI;EAC9C,YAAY,oBAAoB,UAAU;EAC1C,YAAY,IAAI,WACb,IAAI,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAClC,OAAO,CAAC,MAAoB,MAAM,OAAU;EAC/C,OAAO;GACL,GAAG,IAAI;GACP,SAASC,6CAA2B;EACrC;EACD,gBAAgB;CACjB;AACF;AAOD,SAAS,cAAcC,OAAYC,YAAoB;AACrD,QAAO,SAAS,CAAC,MAAM,QAAQ,MAAM,IAAI,OAAO,UAAU,WACtD,QACA,GAAG,aAAa,MAAO;AAC5B;AAED,SAAgB,aAAaC,GAAyC;AACpE,QAAO,OAAQ,EAAiB,oBAAoB;AACrD;AAED,IAAsB,aAAtB,cAAyCC,2CAAoB;;CAE3D,AAAU,yBAA2B,IAAI;CAEzC,AAAU,6BAAmC,IAAI;CAEjD,AAAU,iBAAiB;CAE3B,YAAYC,SAAoC;EAC9C,MAAM,GAAG,UAAU;CACpB;CAED,OAAa;AACX,SAAO;CACR;CAED,AAAU,WAAWC,OAAiC;AACpD,MAAI,UAAU,OACZ,QAAO;AAET,SAAO,KAAK,iBACR,oBAAoB,KAAK,WAAW,IAAI,MAAM,CAAC,GAC/C,KAAK,OAAO,IAAI,MAAM;CAC3B;CAED,AAAU,eAAeC,OAAgB;AAEvC,MAAI,iBAAiB,MACnB,QAAO,MAAM,WAAW,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG;AAGhE,MAAI,OAAO,UAAU,SACnB,QAAO;AAGT,SAAO,GAAG,OAAO;CAClB;CAID,AAAU,aAAaC,WAAgBC,UAAe;EACpD,UAAU,WAAW,KAAK,SAAS;CACpC;CAED,gBAAgBC,KAAU;EACxB,MAAM,EAAE,aAAa,oBAAoB,gCAAgC,uDAErE,IAAI,KAAK,IAAI,YAAY,SAAS,EAClC,IAAI,IACJ,IAAI,gBACL;EACH,MAAM,YAAY,EAAE,GAAG,IAAK;EAC5B,MAAM,YAAY,KAAK,WAAW,UAAU,cAAc;AAC1D,MAAI,UAAU,kBAAkB,QAC9B;OAAI,WAAW;IACb,KAAK,aAAa,WAAW,UAAU;IACvC,UAAU,wBAAwB,KAAK,IACrC,UAAU,uBACV,UAAU,sBACX;IACD,UAAU,WAAW,UAAU;AAC/B,QAAI,UAAU,iBAAiB,QAAW;KACxC,UAAU,eAAe,CACvB,UAAU,cACV,kBACD,EAAC,KAAK,IAAI;KACX,UAAU,yBAAyB;IACpC;GAIF;EAKA,OACI;GACL,UAAU,WAAW,UAAU;GAC/B,UAAU,eAAe;GACzB,UAAU,yBAAyB;EACpC;AACD,MAAI,KAAK,gBAAgB;GACvB,MAAM,UAAU,oBAAoB,WAAW,UAAU;AACzD,OAAI,YAAY,QACd,KAAK,WAAW,IAAI,UAAU,IAAI,QAAQ;EAE7C,OACC,KAAK,OAAO,IAAI,UAAU,IAAI,UAAU;AAE1C,SAAO;CACR;CAED,MAAgB,UAAUA,KAAyB;EACjD,MAAM,YACJ,IAAI,kBAAkB,UAAa,KAAK,WAAW,IAAI,cAAc;AACvE,MAAI,WACF,UAAU,wBAAwB,KAAK,IACrC,UAAU,uBACV,IAAI,sBACL;OAED,MAAM,KAAK,WAAW,IAAI;EAE5B,MAAM,KAAK,cAAc,IAAI;AAC7B,MAAI,KAAK,gBACP,KAAK,WAAW,OAAO,IAAI,GAAG;OAE9B,KAAK,OAAO,OAAO,IAAI,GAAG;CAE7B;CAED,AAAU,mBAAmBC,aAAyC;EACpE,MAAM,YAAY,gBAAgB,UAAa,KAAK,WAAW,YAAY;AAE3E,MAAI,CAAC,UACH,QAAO;AAGT,SAAO,UAAU,wBAAwB;CAC1C;;;;;;CAOD,sBACEC,KACAC,SACAC,OACAC,aACAC,aACAC,MACAC,UACAC,MACA;EACA,MAAM,kBAAkB,KAAK,mBAAmB,YAAY;EAC5D,MAAM,aAAa,KAAK,KAAK;EAC7B,MAAM,mBAAmB,WACrB;GAAE,GAAG;GAAa;EAAU,IAC5B;EACJ,MAAMT,MAAW;GACf,IAAI;GACJ,MAAM,QAAQ,IAAI,GAAG,IAAI,GAAG,SAAS;GACrC,eAAe;GACf;GACA,YAAY;GACZ,QAAQ,CACN;IACE,MAAM;IACN,MAAM,IAAI,KAAK,YAAY,aAAa;GACzC,CACF;GACD,QAAQ,EAAE,QAAS;GACnB;GACA,YAAY,CAAE;GACd,uBAAuB;GACvB,UAAU;GACV,OAAO,oBAAoB,CAAE;GAC7B,MAAM,QAAQ,CAAE;EACjB;AACD,SAAO,KAAK,gBAAgB,IAAI;CACjC;CAED,MAAM,eACJE,KACAC,SACAC,OACAC,aACAC,aACAC,MACAC,UACAC,MACc;EACd,MAAM,MACJ,KAAK,WAAW,MAAM,IACtB,KAAK,sBACH,KACA,SACA,OACA,aACA,aACA,MACA,UACA,KACD;EACH,MAAM,KAAK,cAAc,IAAI;EAC7B,MAAM,KAAK,aAAa,IAAI;AAC5B,SAAO;CACR;;;;;;CAOD,4BACEP,KACAQ,UACAN,OACAC,aACAC,aACAC,MACAC,UACAC,MACA;EACA,MAAM,kBAAkB,KAAK,mBAAmB,YAAY;EAC5D,MAAM,aAAa,KAAK,KAAK;EAC7B,MAAM,mBAAmB,WACrB;GAAE,GAAG;GAAa;EAAU,IAC5B;EACJ,MAAMT,MAAW;GACf,IAAI;GACJ,MAAM,QAAQ,IAAI,GAAG,IAAI,GAAG,SAAS;GACrC,eAAe;GACf;GACA,YAAY;GACZ,QAAQ,CACN;IACE,MAAM;IACN,MAAM,IAAI,KAAK,YAAY,aAAa;GACzC,CACF;GACD,QAAQ,EAAE,SAAU;GACpB;GACA,YAAY,CAAE;GACd,uBAAuB;GACvB,UAAU;GACV,OAAO,oBAAoB,CAAE;GAC7B,MAAM,QAAQ,CAAE;EACjB;AACD,SAAO,KAAK,gBAAgB,IAAI;CACjC;CAED,MAAM,qBACJE,KACAQ,UACAN,OACAC,aACAC,aACAC,MACAC,UACAC,MACc;EACd,MAAM,MACJ,KAAK,WAAW,MAAM,IACtB,KAAK,4BACH,KACA,UACA,OACA,aACA,aACA,MACA,UACA,KACD;EACH,MAAM,KAAK,cAAc,IAAI;EAC7B,MAAM,KAAK,aAAa,IAAI;AAC5B,SAAO;CACR;CAED,MAAM,aACJE,QACAP,OACAQ,cACAC,OACAC,aACc;EACd,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,MAC5B,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,UAAU;EACd,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;EACF,IAAI,QAAQ;GAAE,GAAG,IAAI;GAAO,GAAG;EAAa;EAC5C,MAAM,KAAK,WAAW,IAAI;EAC1B,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;CAED,MAAM,eACJjB,OACAO,OACAQ,cACAC,OACAC,aACc;EACd,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,MAC5B,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,QAAQ,KAAK,eAAe,MAAM;EACtC,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;EACF,IAAI,QAAQ;GAAE,GAAG,IAAI;GAAO,GAAG;EAAa;EAC5C,MAAM,KAAK,aAAa,IAAI;EAC5B,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;;;;;;CAOD,wBACEC,OACAC,QACAZ,OACAC,aACAE,MACAC,UACAS,SACAR,MACA;EACA,MAAM,kBAAkB,KAAK,mBAAmB,YAAY;EAC5D,MAAM,aAAa,KAAK,KAAK;EAC7B,MAAMT,MAAW;GACf,IAAI;GACJ,MAAM,QAAQ,MAAM,GAAG,MAAM,GAAG,SAAS;GACzC,eAAe;GACf;GACA,YAAY;GACZ,QAAQ,CACN;IACE,MAAM;IACN,MAAM,IAAI,KAAK,YAAY,aAAa;GACzC,CACF;GACD;GACA;GACA,uBAAuB;GACvB,UAAU,WAAW;GACrB,YAAY,CAAE;GACd,OAAO,WAAW,EAAE,SAAU,IAAG,CAAE;GACnC,MAAM,QAAQ,CAAE;EACjB;AACD,SAAO,KAAK,gBAAgB,IAAI;CACjC;CAED,MAAM,iBACJe,OACAC,QACAZ,OACAC,aACAE,MACAC,UACAS,SACAR,MACc;EACd,MAAM,MACJ,KAAK,WAAW,MAAM,IACtB,KAAK,wBACH,OACA,QACA,OACA,aACA,MACA,UACA,SACA,KACD;EACH,MAAM,KAAK,cAAc,IAAI;EAC7B,MAAM,KAAK,eAAe,IAAI;AAC9B,SAAO;CACR;CAED,MAAM,eACJS,SACAd,OACAQ,cACAC,OACAM,QACc;EACd,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,IACH,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,UAAU,cAAc,SAAS,SAAS;EAC9C,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;AACF,MAAI,QAAQ,WAAW,QACrB,IAAI,SAAS,cAAc,OAAO,QAAQ,QAAQ;EAEpD,MAAM,KAAK,aAAa,IAAI;EAC5B,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;CAED,MAAM,iBACJtB,OACAO,OACAQ,cACAC,OACAM,QACc;EACd,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,IACH,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,QAAQ,KAAK,eAAe,MAAM;EACtC,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;AACF,MAAI,QAAQ,WAAW,QACrB,IAAI,SAAS,cAAc,OAAO,QAAQ,QAAQ;EAEpD,MAAM,KAAK,eAAe,IAAI;EAC9B,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;;;;;;CAOD,uBACEC,MACAC,OACAjB,OACAC,aACAE,MACAC,UACAC,MACA;EACA,MAAM,kBAAkB,KAAK,mBAAmB,YAAY;EAC5D,MAAM,aAAa,KAAK,KAAK;EAC7B,MAAMT,MAAW;GACf,IAAI;GACJ,MAAM,QAAQ,KAAK,GAAG,KAAK,GAAG,SAAS;GACvC,eAAe;GACf;GACA,YAAY;GACZ,QAAQ,CACN;IACE,MAAM;IACN,MAAM,IAAI,KAAK,YAAY,aAAa;GACzC,CACF;GACD,QAAQ,EAAE,MAAO;GACjB;GACA,uBAAuB;GACvB,UAAU;GACV,YAAY,CAAE;GACd,OAAO,WAAW,EAAE,SAAU,IAAG,CAAE;GACnC,MAAM,QAAQ,CAAE;EACjB;AACD,SAAO,KAAK,gBAAgB,IAAI;CACjC;CAED,MAAM,gBACJoB,MACAC,OACAjB,OACAC,aACAE,MACAC,UACAC,MACc;EACd,MAAM,MACJ,KAAK,WAAW,MAAM,IACtB,KAAK,uBACH,MACA,OACA,OACA,aACA,MACA,UACA,KACD;EACH,MAAM,KAAK,cAAc,IAAI;EAC7B,MAAM,KAAK,cAAc,IAAI;AAC7B,SAAO;CACR;CAGD,MAAM,cAAca,QAAalB,OAA6B;EAC5D,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,OAC5B,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,UAAU,EAAE,OAAQ;EACxB,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;EACF,MAAM,KAAK,YAAY,IAAI;EAC3B,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;CAED,MAAM,gBAAgBP,OAAgBO,OAA6B;EACjE,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,OAC5B,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,QAAQ,KAAK,eAAe,MAAM;EACtC,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;EACF,MAAM,KAAK,cAAc,IAAI;EAC7B,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;CAED,MAAM,kBAAkBmB,QAAqBnB,OAA8B;EACzE,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,QAC5B;EAEF,MAAM,WAAW;EACjB,SAAS,UAAU,SAAS,WAAW,CAAE;EACzC,SAAS,QAAQ,KAAK,OAAO;EAC7B,SAAS,OAAO,KAAK;GACnB,MAAM;GACN,uBAAM,IAAI,QAAO,aAAa;GAC9B,QAAQ,EAAE,OAAQ;EACnB,EAAC;EACF,MAAM,KAAK,gBAAgB,IAAgB;CAC5C;CAED,MAAM,eAAeoB,QAAqBpB,OAA8B;EACtE,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,QAC5B;EAEF,IAAI,OAAO,KAAK;GACd,MAAM;GACN,uBAAM,IAAI,QAAO,aAAa;GAC9B,QAAQ,EAAE,OAAQ;EACnB,EAAC;EACF,MAAM,KAAK,aAAa,IAAI;CAC7B;;;;;;CAOD,4BACEqB,WACAC,OACAtB,OACAC,aACAE,MACAC,UACAC,MACA;EACA,MAAM,kBAAkB,KAAK,mBAAmB,YAAY;EAC5D,MAAM,aAAa,KAAK,KAAK;EAC7B,MAAMT,MAAW;GACf,IAAI;GACJ,MAAM,QAAQ,UAAU,GAAG,UAAU,GAAG,SAAS;GACjD,eAAe;GACf;GACA,YAAY;GACZ,QAAQ,CACN;IACE,MAAM;IACN,MAAM,IAAI,KAAK,YAAY,aAAa;GACzC,CACF;GACD,QAAQ,EAAE,MAAO;GACjB;GACA,uBAAuB;GACvB,UAAU;GACV,YAAY,CAAE;GACd,OAAO,WAAW,EAAE,SAAU,IAAG,CAAE;GACnC,MAAM,QAAQ,CAAE;EACjB;AACD,SAAO,KAAK,gBAAgB,IAAI;CACjC;CAED,MAAM,qBACJyB,WACAC,OACAtB,OACAC,aACAE,MACAC,UACAC,MACc;EACd,MAAM,MACJ,KAAK,WAAW,MAAM,IACtB,KAAK,4BACH,WACA,OACA,OACA,aACA,MACA,UACA,KACD;EACH,MAAM,KAAK,cAAc,IAAI;EAC7B,MAAM,KAAK,mBAAmB,IAAI;AAClC,SAAO;CACR;CAED,MAAM,mBACJkB,WACAvB,OACc;EACd,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,YAC5B,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,UAAU,EAAE,UAAW;EAC3B,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;EACF,MAAM,KAAK,iBAAiB,IAAI;EAChC,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;CAED,MAAM,qBAAqBP,OAAgBO,OAA6B;EACtE,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,YAC5B,OAAM,IAAI,MAAM;EAElB,IAAI,WAAW,KAAK,KAAK;EACzB,IAAI,QAAQ,KAAK,eAAe,MAAM;EACtC,IAAI,OAAO,KAAK;GACd,MAAM;GACN,MAAM,IAAI,KAAK,IAAI,UAAU,aAAa;EAC3C,EAAC;EACF,MAAM,KAAK,mBAAmB,IAAI;EAClC,MAAM,KAAK,UAAU,IAAI;AACzB,SAAO;CACR;CAED,MAAM,WAAWwB,MAAcxB,OAA8B;EAC3D,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,QAC5B;EAEF,IAAI,OAAO,KAAK;GACd,MAAM;GACN,uBAAM,IAAI,QAAO,aAAa;GAC9B,QAAQ,EAAE,KAAM;EACjB,EAAC;EACF,MAAM,KAAK,SAAS,IAAI;CACzB;CAED,MAAM,kBACJyB,OACAC,KACA1B,OACAQ,cACAC,OACAkB,QACc;EACd,MAAM,MAAM,KAAK,WAAW,MAAM;AAClC,MAAI,CAAC,OAAO,KAAK,aAAa,MAC5B,OAAM,IAAI,MACR,CAAC,yDAAyD,CAAC;EAG/D,IAAI,OAAO,KAAK;GACd,MAAM;GACN,uBAAM,IAAI,QAAO,aAAa;GAC9B,QAAQ;IAAE;IAAO;IAAK,OAAO,QAAQ;GAAO;EAC7C,EAAC;EACF,MAAM,KAAK,gBAAgB,KAAK,OAAO,EAAE,OAAO,QAAQ,MAAO,EAAC;AAChE,SAAO;CACR;AA4CF"}
1
+ {"version":3,"file":"base.cjs","names":["runTree?: RunTree","run?: Run","parentRun?: Run","RunTree","getRuntimeEnvironment","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 { getRuntimeEnvironment } 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: getRuntimeEnvironment(),\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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"}
@@ -5,9 +5,9 @@ import { LLMResult } from "../outputs.cjs";
5
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
- import { RunTree } from "langsmith/run_trees";
9
8
  import * as langsmith_schemas0 from "langsmith/schemas";
10
9
  import { BaseRun, KVMap } from "langsmith/schemas";
10
+ import { RunTree } from "langsmith/run_trees";
11
11
 
12
12
  //#region src/tracers/base.d.ts
13
13
  type RunType = string;
@@ -1,5 +1,5 @@
1
1
  import { __export } from "../_virtual/rolldown_runtime.js";
2
- import { getRuntimeEnvironmentSync } from "../utils/env.js";
2
+ import { getRuntimeEnvironment } from "../utils/env.js";
3
3
  import { BaseCallbackHandler } from "../callbacks/base.js";
4
4
  import { RunTree, convertToDottedOrderFormat } from "langsmith/run_trees";
5
5
 
@@ -24,7 +24,7 @@ function convertRunToRunTree(run, parentRun) {
24
24
  child_runs: run.child_runs.map((r) => convertRunToRunTree(r)).filter((r) => r !== void 0),
25
25
  extra: {
26
26
  ...run.extra,
27
- runtime: getRuntimeEnvironmentSync()
27
+ runtime: getRuntimeEnvironment()
28
28
  },
29
29
  tracingEnabled: false
30
30
  });
@@ -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 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
+ {"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 { getRuntimeEnvironment } 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: getRuntimeEnvironment(),\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,6 +1,6 @@
1
1
  import { BaseCallbackHandler, BaseCallbackHandlerInput, CallbackHandlerPrefersStreaming, HandleLLMNewTokenCallbackFields } from "../callbacks/base.cjs";
2
- import { BaseTracer, Run } from "./base.cjs";
3
2
  import { Operation } from "../utils/fast-json-patch/src/core.cjs";
3
+ import { BaseTracer, Run } from "./base.cjs";
4
4
  import { IterableReadableStream } from "../utils/stream.cjs";
5
5
  import { StreamEvent, StreamEventData } from "./event_stream.cjs";
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { BaseCallbackHandler, BaseCallbackHandlerInput, CallbackHandlerPrefersStreaming, HandleLLMNewTokenCallbackFields } from "../callbacks/base.js";
2
- import { BaseTracer, Run } from "./base.js";
3
2
  import { Operation } from "../utils/fast-json-patch/src/core.js";
3
+ import { BaseTracer, Run } from "./base.js";
4
4
  import { IterableReadableStream } from "../utils/stream.js";
5
5
  import { StreamEvent, StreamEventData } from "./event_stream.js";
6
6
 
@@ -38,6 +38,7 @@ var LangChainTracer = class LangChainTracer extends require_tracers_base.BaseTra
38
38
  return this.runTreeMap.get(id);
39
39
  }
40
40
  updateFromRunTree(runTree) {
41
+ this.runTreeMap.set(runTree.id, runTree);
41
42
  let rootRun = runTree;
42
43
  const visited = /* @__PURE__ */ new Set();
43
44
  while (rootRun.parent_run) {
@@ -1 +1 @@
1
- {"version":3,"file":"tracer_langchain.cjs","names":["BaseTracer","fields: LangChainTracerFields","getDefaultLangChainClientSingleton","_run: Run","run: Run","id: string","runTree: RunTree","rootRun: RunTree","RunTree"],"sources":["../../src/tracers/tracer_langchain.ts"],"sourcesContent":["import {\n type Client,\n type LangSmithTracingClientInterface,\n getDefaultProjectName,\n} from \"langsmith\";\nimport { RunTree, type RunTreeConfig } from \"langsmith/run_trees\";\nimport { getCurrentRunTree } from \"langsmith/singletons/traceable\";\n\nimport {\n BaseRun,\n RunCreate,\n RunUpdate as BaseRunUpdate,\n KVMap,\n} from \"langsmith/schemas\";\nimport { BaseTracer } from \"./base.js\";\nimport { BaseCallbackHandlerInput } from \"../callbacks/base.js\";\nimport { getDefaultLangChainClientSingleton } from \"../singletons/tracer.js\";\n\nexport interface Run extends BaseRun {\n id: string;\n child_runs: this[];\n child_execution_order: number;\n dotted_order?: string;\n trace_id?: string;\n}\n\nexport interface RunCreate2 extends RunCreate {\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface RunUpdate extends BaseRunUpdate {\n events: BaseRun[\"events\"];\n inputs: KVMap;\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface LangChainTracerFields extends BaseCallbackHandlerInput {\n exampleId?: string;\n projectName?: string;\n client?: LangSmithTracingClientInterface;\n replicas?: RunTreeConfig[\"replicas\"];\n}\n\nexport class LangChainTracer\n extends BaseTracer\n implements LangChainTracerFields\n{\n name = \"langchain_tracer\";\n\n projectName?: string;\n\n exampleId?: string;\n\n client: LangSmithTracingClientInterface;\n\n replicas?: RunTreeConfig[\"replicas\"];\n\n usesRunTreeMap = true;\n\n constructor(fields: LangChainTracerFields = {}) {\n super(fields);\n const { exampleId, projectName, client, replicas } = fields;\n\n this.projectName = projectName ?? getDefaultProjectName();\n this.replicas = replicas;\n this.exampleId = exampleId;\n this.client = client ?? getDefaultLangChainClientSingleton();\n\n const traceableTree = LangChainTracer.getTraceableRunTree();\n if (traceableTree) {\n this.updateFromRunTree(traceableTree);\n }\n }\n\n protected async persistRun(_run: Run): Promise<void> {\n // empty\n }\n\n async onRunCreate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.postRun();\n }\n\n async onRunUpdate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.patchRun();\n }\n\n getRun(id: string): Run | undefined {\n return this.runTreeMap.get(id);\n }\n\n updateFromRunTree(runTree: RunTree) {\n let rootRun: RunTree = runTree;\n const visited = new Set<string>();\n while (rootRun.parent_run) {\n if (visited.has(rootRun.id)) break;\n visited.add(rootRun.id);\n\n if (!rootRun.parent_run) break;\n rootRun = rootRun.parent_run as RunTree;\n }\n visited.clear();\n\n const queue = [rootRun];\n while (queue.length > 0) {\n const current = queue.shift();\n if (!current || visited.has(current.id)) continue;\n visited.add(current.id);\n\n this.runTreeMap.set(current.id, current);\n if (current.child_runs) {\n queue.push(...current.child_runs);\n }\n }\n\n this.client = runTree.client ?? this.client;\n this.replicas = runTree.replicas ?? this.replicas;\n this.projectName = runTree.project_name ?? this.projectName;\n this.exampleId = runTree.reference_example_id ?? this.exampleId;\n }\n\n getRunTreeWithTracingConfig(id: string): RunTree | undefined {\n const runTree = this.runTreeMap.get(id);\n if (!runTree) return undefined;\n\n return new RunTree({\n ...runTree,\n client: this.client as Client,\n project_name: this.projectName,\n replicas: this.replicas,\n reference_example_id: this.exampleId,\n tracingEnabled: true,\n });\n }\n\n static getTraceableRunTree(): RunTree | undefined {\n try {\n return (\n // The type cast here provides forward compatibility. Old versions of LangSmith will just\n // ignore the permitAbsentRunTree arg.\n (\n getCurrentRunTree as (\n permitAbsentRunTree: boolean\n ) => ReturnType<typeof getCurrentRunTree> | undefined\n )(true)\n );\n } catch {\n return undefined;\n }\n }\n}\n"],"mappings":";;;;;;;;;;AA6CA,IAAa,kBAAb,MAAa,wBACHA,gCAEV;CACE,OAAO;CAEP;CAEA;CAEA;CAEA;CAEA,iBAAiB;CAEjB,YAAYC,SAAgC,CAAE,GAAE;EAC9C,MAAM,OAAO;EACb,MAAM,EAAE,WAAW,aAAa,QAAQ,UAAU,GAAG;EAErD,KAAK,cAAc,qDAAsC;EACzD,KAAK,WAAW;EAChB,KAAK,YAAY;EACjB,KAAK,SAAS,UAAUC,mDAAoC;EAE5D,MAAM,gBAAgB,gBAAgB,qBAAqB;AAC3D,MAAI,eACF,KAAK,kBAAkB,cAAc;CAExC;CAED,MAAgB,WAAWC,MAA0B,CAEpD;CAED,MAAM,YAAYC,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,SAAS;CACzB;CAED,MAAM,YAAYA,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,UAAU;CAC1B;CAED,OAAOC,IAA6B;AAClC,SAAO,KAAK,WAAW,IAAI,GAAG;CAC/B;CAED,kBAAkBC,SAAkB;EAClC,IAAIC,UAAmB;EACvB,MAAM,0BAAU,IAAI;AACpB,SAAO,QAAQ,YAAY;AACzB,OAAI,QAAQ,IAAI,QAAQ,GAAG,CAAE;GAC7B,QAAQ,IAAI,QAAQ,GAAG;AAEvB,OAAI,CAAC,QAAQ,WAAY;GACzB,UAAU,QAAQ;EACnB;EACD,QAAQ,OAAO;EAEf,MAAM,QAAQ,CAAC,OAAQ;AACvB,SAAO,MAAM,SAAS,GAAG;GACvB,MAAM,UAAU,MAAM,OAAO;AAC7B,OAAI,CAAC,WAAW,QAAQ,IAAI,QAAQ,GAAG,CAAE;GACzC,QAAQ,IAAI,QAAQ,GAAG;GAEvB,KAAK,WAAW,IAAI,QAAQ,IAAI,QAAQ;AACxC,OAAI,QAAQ,YACV,MAAM,KAAK,GAAG,QAAQ,WAAW;EAEpC;EAED,KAAK,SAAS,QAAQ,UAAU,KAAK;EACrC,KAAK,WAAW,QAAQ,YAAY,KAAK;EACzC,KAAK,cAAc,QAAQ,gBAAgB,KAAK;EAChD,KAAK,YAAY,QAAQ,wBAAwB,KAAK;CACvD;CAED,4BAA4BF,IAAiC;EAC3D,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG;AACvC,MAAI,CAAC,QAAS,QAAO;AAErB,SAAO,IAAIG,4BAAQ;GACjB,GAAG;GACH,QAAQ,KAAK;GACb,cAAc,KAAK;GACnB,UAAU,KAAK;GACf,sBAAsB,KAAK;GAC3B,gBAAgB;EACjB;CACF;CAED,OAAO,sBAA2C;AAChD,MAAI;AACF,gEAOI,KAAK;EAEV,QAAO;AACN,UAAO;EACR;CACF;AACF"}
1
+ {"version":3,"file":"tracer_langchain.cjs","names":["BaseTracer","fields: LangChainTracerFields","getDefaultLangChainClientSingleton","_run: Run","run: Run","id: string","runTree: RunTree","rootRun: RunTree","RunTree"],"sources":["../../src/tracers/tracer_langchain.ts"],"sourcesContent":["import {\n type Client,\n type LangSmithTracingClientInterface,\n getDefaultProjectName,\n} from \"langsmith\";\nimport { RunTree, type RunTreeConfig } from \"langsmith/run_trees\";\nimport { getCurrentRunTree } from \"langsmith/singletons/traceable\";\n\nimport {\n BaseRun,\n RunCreate,\n RunUpdate as BaseRunUpdate,\n KVMap,\n} from \"langsmith/schemas\";\nimport { BaseTracer } from \"./base.js\";\nimport { BaseCallbackHandlerInput } from \"../callbacks/base.js\";\nimport { getDefaultLangChainClientSingleton } from \"../singletons/tracer.js\";\n\nexport interface Run extends BaseRun {\n id: string;\n child_runs: this[];\n child_execution_order: number;\n dotted_order?: string;\n trace_id?: string;\n}\n\nexport interface RunCreate2 extends RunCreate {\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface RunUpdate extends BaseRunUpdate {\n events: BaseRun[\"events\"];\n inputs: KVMap;\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface LangChainTracerFields extends BaseCallbackHandlerInput {\n exampleId?: string;\n projectName?: string;\n client?: LangSmithTracingClientInterface;\n replicas?: RunTreeConfig[\"replicas\"];\n}\n\nexport class LangChainTracer\n extends BaseTracer\n implements LangChainTracerFields\n{\n name = \"langchain_tracer\";\n\n projectName?: string;\n\n exampleId?: string;\n\n client: LangSmithTracingClientInterface;\n\n replicas?: RunTreeConfig[\"replicas\"];\n\n usesRunTreeMap = true;\n\n constructor(fields: LangChainTracerFields = {}) {\n super(fields);\n const { exampleId, projectName, client, replicas } = fields;\n\n this.projectName = projectName ?? getDefaultProjectName();\n this.replicas = replicas;\n this.exampleId = exampleId;\n this.client = client ?? getDefaultLangChainClientSingleton();\n\n const traceableTree = LangChainTracer.getTraceableRunTree();\n if (traceableTree) {\n this.updateFromRunTree(traceableTree);\n }\n }\n\n protected async persistRun(_run: Run): Promise<void> {\n // empty\n }\n\n async onRunCreate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.postRun();\n }\n\n async onRunUpdate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.patchRun();\n }\n\n getRun(id: string): Run | undefined {\n return this.runTreeMap.get(id);\n }\n\n updateFromRunTree(runTree: RunTree) {\n this.runTreeMap.set(runTree.id, runTree);\n let rootRun: RunTree = runTree;\n const visited = new Set<string>();\n while (rootRun.parent_run) {\n if (visited.has(rootRun.id)) break;\n visited.add(rootRun.id);\n\n if (!rootRun.parent_run) break;\n rootRun = rootRun.parent_run as RunTree;\n }\n visited.clear();\n\n const queue = [rootRun];\n while (queue.length > 0) {\n const current = queue.shift();\n if (!current || visited.has(current.id)) continue;\n visited.add(current.id);\n\n this.runTreeMap.set(current.id, current);\n if (current.child_runs) {\n queue.push(...current.child_runs);\n }\n }\n\n this.client = runTree.client ?? this.client;\n this.replicas = runTree.replicas ?? this.replicas;\n this.projectName = runTree.project_name ?? this.projectName;\n this.exampleId = runTree.reference_example_id ?? this.exampleId;\n }\n\n getRunTreeWithTracingConfig(id: string): RunTree | undefined {\n const runTree = this.runTreeMap.get(id);\n if (!runTree) return undefined;\n\n return new RunTree({\n ...runTree,\n client: this.client as Client,\n project_name: this.projectName,\n replicas: this.replicas,\n reference_example_id: this.exampleId,\n tracingEnabled: true,\n });\n }\n\n static getTraceableRunTree(): RunTree | undefined {\n try {\n return (\n // The type cast here provides forward compatibility. Old versions of LangSmith will just\n // ignore the permitAbsentRunTree arg.\n (\n getCurrentRunTree as (\n permitAbsentRunTree: boolean\n ) => ReturnType<typeof getCurrentRunTree> | undefined\n )(true)\n );\n } catch {\n return undefined;\n }\n }\n}\n"],"mappings":";;;;;;;;;;AA6CA,IAAa,kBAAb,MAAa,wBACHA,gCAEV;CACE,OAAO;CAEP;CAEA;CAEA;CAEA;CAEA,iBAAiB;CAEjB,YAAYC,SAAgC,CAAE,GAAE;EAC9C,MAAM,OAAO;EACb,MAAM,EAAE,WAAW,aAAa,QAAQ,UAAU,GAAG;EAErD,KAAK,cAAc,qDAAsC;EACzD,KAAK,WAAW;EAChB,KAAK,YAAY;EACjB,KAAK,SAAS,UAAUC,mDAAoC;EAE5D,MAAM,gBAAgB,gBAAgB,qBAAqB;AAC3D,MAAI,eACF,KAAK,kBAAkB,cAAc;CAExC;CAED,MAAgB,WAAWC,MAA0B,CAEpD;CAED,MAAM,YAAYC,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,SAAS;CACzB;CAED,MAAM,YAAYA,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,UAAU;CAC1B;CAED,OAAOC,IAA6B;AAClC,SAAO,KAAK,WAAW,IAAI,GAAG;CAC/B;CAED,kBAAkBC,SAAkB;EAClC,KAAK,WAAW,IAAI,QAAQ,IAAI,QAAQ;EACxC,IAAIC,UAAmB;EACvB,MAAM,0BAAU,IAAI;AACpB,SAAO,QAAQ,YAAY;AACzB,OAAI,QAAQ,IAAI,QAAQ,GAAG,CAAE;GAC7B,QAAQ,IAAI,QAAQ,GAAG;AAEvB,OAAI,CAAC,QAAQ,WAAY;GACzB,UAAU,QAAQ;EACnB;EACD,QAAQ,OAAO;EAEf,MAAM,QAAQ,CAAC,OAAQ;AACvB,SAAO,MAAM,SAAS,GAAG;GACvB,MAAM,UAAU,MAAM,OAAO;AAC7B,OAAI,CAAC,WAAW,QAAQ,IAAI,QAAQ,GAAG,CAAE;GACzC,QAAQ,IAAI,QAAQ,GAAG;GAEvB,KAAK,WAAW,IAAI,QAAQ,IAAI,QAAQ;AACxC,OAAI,QAAQ,YACV,MAAM,KAAK,GAAG,QAAQ,WAAW;EAEpC;EAED,KAAK,SAAS,QAAQ,UAAU,KAAK;EACrC,KAAK,WAAW,QAAQ,YAAY,KAAK;EACzC,KAAK,cAAc,QAAQ,gBAAgB,KAAK;EAChD,KAAK,YAAY,QAAQ,wBAAwB,KAAK;CACvD;CAED,4BAA4BF,IAAiC;EAC3D,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG;AACvC,MAAI,CAAC,QAAS,QAAO;AAErB,SAAO,IAAIG,4BAAQ;GACjB,GAAG;GACH,QAAQ,KAAK;GACb,cAAc,KAAK;GACnB,UAAU,KAAK;GACf,sBAAsB,KAAK;GAC3B,gBAAgB;EACjB;CACF;CAED,OAAO,sBAA2C;AAChD,MAAI;AACF,gEAOI,KAAK;EAEV,QAAO;AACN,UAAO;EACR;CACF;AACF"}
@@ -1,8 +1,8 @@
1
1
  import { BaseCallbackHandlerInput } from "../callbacks/base.cjs";
2
2
  import { BaseTracer } from "./base.cjs";
3
- import { LangSmithTracingClientInterface } from "langsmith";
4
- import { RunTree, RunTreeConfig } from "langsmith/run_trees";
5
3
  import { BaseRun, KVMap, RunCreate, RunUpdate as RunUpdate$1 } from "langsmith/schemas";
4
+ import { RunTree, RunTreeConfig } from "langsmith/run_trees";
5
+ import { LangSmithTracingClientInterface } from "langsmith";
6
6
 
7
7
  //#region src/tracers/tracer_langchain.d.ts
8
8
  interface Run extends BaseRun {
@@ -38,6 +38,7 @@ var LangChainTracer = class LangChainTracer extends BaseTracer {
38
38
  return this.runTreeMap.get(id);
39
39
  }
40
40
  updateFromRunTree(runTree) {
41
+ this.runTreeMap.set(runTree.id, runTree);
41
42
  let rootRun = runTree;
42
43
  const visited = /* @__PURE__ */ new Set();
43
44
  while (rootRun.parent_run) {
@@ -1 +1 @@
1
- {"version":3,"file":"tracer_langchain.js","names":["fields: LangChainTracerFields","_run: Run","run: Run","id: string","runTree: RunTree","rootRun: RunTree"],"sources":["../../src/tracers/tracer_langchain.ts"],"sourcesContent":["import {\n type Client,\n type LangSmithTracingClientInterface,\n getDefaultProjectName,\n} from \"langsmith\";\nimport { RunTree, type RunTreeConfig } from \"langsmith/run_trees\";\nimport { getCurrentRunTree } from \"langsmith/singletons/traceable\";\n\nimport {\n BaseRun,\n RunCreate,\n RunUpdate as BaseRunUpdate,\n KVMap,\n} from \"langsmith/schemas\";\nimport { BaseTracer } from \"./base.js\";\nimport { BaseCallbackHandlerInput } from \"../callbacks/base.js\";\nimport { getDefaultLangChainClientSingleton } from \"../singletons/tracer.js\";\n\nexport interface Run extends BaseRun {\n id: string;\n child_runs: this[];\n child_execution_order: number;\n dotted_order?: string;\n trace_id?: string;\n}\n\nexport interface RunCreate2 extends RunCreate {\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface RunUpdate extends BaseRunUpdate {\n events: BaseRun[\"events\"];\n inputs: KVMap;\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface LangChainTracerFields extends BaseCallbackHandlerInput {\n exampleId?: string;\n projectName?: string;\n client?: LangSmithTracingClientInterface;\n replicas?: RunTreeConfig[\"replicas\"];\n}\n\nexport class LangChainTracer\n extends BaseTracer\n implements LangChainTracerFields\n{\n name = \"langchain_tracer\";\n\n projectName?: string;\n\n exampleId?: string;\n\n client: LangSmithTracingClientInterface;\n\n replicas?: RunTreeConfig[\"replicas\"];\n\n usesRunTreeMap = true;\n\n constructor(fields: LangChainTracerFields = {}) {\n super(fields);\n const { exampleId, projectName, client, replicas } = fields;\n\n this.projectName = projectName ?? getDefaultProjectName();\n this.replicas = replicas;\n this.exampleId = exampleId;\n this.client = client ?? getDefaultLangChainClientSingleton();\n\n const traceableTree = LangChainTracer.getTraceableRunTree();\n if (traceableTree) {\n this.updateFromRunTree(traceableTree);\n }\n }\n\n protected async persistRun(_run: Run): Promise<void> {\n // empty\n }\n\n async onRunCreate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.postRun();\n }\n\n async onRunUpdate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.patchRun();\n }\n\n getRun(id: string): Run | undefined {\n return this.runTreeMap.get(id);\n }\n\n updateFromRunTree(runTree: RunTree) {\n let rootRun: RunTree = runTree;\n const visited = new Set<string>();\n while (rootRun.parent_run) {\n if (visited.has(rootRun.id)) break;\n visited.add(rootRun.id);\n\n if (!rootRun.parent_run) break;\n rootRun = rootRun.parent_run as RunTree;\n }\n visited.clear();\n\n const queue = [rootRun];\n while (queue.length > 0) {\n const current = queue.shift();\n if (!current || visited.has(current.id)) continue;\n visited.add(current.id);\n\n this.runTreeMap.set(current.id, current);\n if (current.child_runs) {\n queue.push(...current.child_runs);\n }\n }\n\n this.client = runTree.client ?? this.client;\n this.replicas = runTree.replicas ?? this.replicas;\n this.projectName = runTree.project_name ?? this.projectName;\n this.exampleId = runTree.reference_example_id ?? this.exampleId;\n }\n\n getRunTreeWithTracingConfig(id: string): RunTree | undefined {\n const runTree = this.runTreeMap.get(id);\n if (!runTree) return undefined;\n\n return new RunTree({\n ...runTree,\n client: this.client as Client,\n project_name: this.projectName,\n replicas: this.replicas,\n reference_example_id: this.exampleId,\n tracingEnabled: true,\n });\n }\n\n static getTraceableRunTree(): RunTree | undefined {\n try {\n return (\n // The type cast here provides forward compatibility. Old versions of LangSmith will just\n // ignore the permitAbsentRunTree arg.\n (\n getCurrentRunTree as (\n permitAbsentRunTree: boolean\n ) => ReturnType<typeof getCurrentRunTree> | undefined\n )(true)\n );\n } catch {\n return undefined;\n }\n }\n}\n"],"mappings":";;;;;;;;;;AA6CA,IAAa,kBAAb,MAAa,wBACH,WAEV;CACE,OAAO;CAEP;CAEA;CAEA;CAEA;CAEA,iBAAiB;CAEjB,YAAYA,SAAgC,CAAE,GAAE;EAC9C,MAAM,OAAO;EACb,MAAM,EAAE,WAAW,aAAa,QAAQ,UAAU,GAAG;EAErD,KAAK,cAAc,eAAe,uBAAuB;EACzD,KAAK,WAAW;EAChB,KAAK,YAAY;EACjB,KAAK,SAAS,UAAU,oCAAoC;EAE5D,MAAM,gBAAgB,gBAAgB,qBAAqB;AAC3D,MAAI,eACF,KAAK,kBAAkB,cAAc;CAExC;CAED,MAAgB,WAAWC,MAA0B,CAEpD;CAED,MAAM,YAAYC,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,SAAS;CACzB;CAED,MAAM,YAAYA,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,UAAU;CAC1B;CAED,OAAOC,IAA6B;AAClC,SAAO,KAAK,WAAW,IAAI,GAAG;CAC/B;CAED,kBAAkBC,SAAkB;EAClC,IAAIC,UAAmB;EACvB,MAAM,0BAAU,IAAI;AACpB,SAAO,QAAQ,YAAY;AACzB,OAAI,QAAQ,IAAI,QAAQ,GAAG,CAAE;GAC7B,QAAQ,IAAI,QAAQ,GAAG;AAEvB,OAAI,CAAC,QAAQ,WAAY;GACzB,UAAU,QAAQ;EACnB;EACD,QAAQ,OAAO;EAEf,MAAM,QAAQ,CAAC,OAAQ;AACvB,SAAO,MAAM,SAAS,GAAG;GACvB,MAAM,UAAU,MAAM,OAAO;AAC7B,OAAI,CAAC,WAAW,QAAQ,IAAI,QAAQ,GAAG,CAAE;GACzC,QAAQ,IAAI,QAAQ,GAAG;GAEvB,KAAK,WAAW,IAAI,QAAQ,IAAI,QAAQ;AACxC,OAAI,QAAQ,YACV,MAAM,KAAK,GAAG,QAAQ,WAAW;EAEpC;EAED,KAAK,SAAS,QAAQ,UAAU,KAAK;EACrC,KAAK,WAAW,QAAQ,YAAY,KAAK;EACzC,KAAK,cAAc,QAAQ,gBAAgB,KAAK;EAChD,KAAK,YAAY,QAAQ,wBAAwB,KAAK;CACvD;CAED,4BAA4BF,IAAiC;EAC3D,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG;AACvC,MAAI,CAAC,QAAS,QAAO;AAErB,SAAO,IAAI,QAAQ;GACjB,GAAG;GACH,QAAQ,KAAK;GACb,cAAc,KAAK;GACnB,UAAU,KAAK;GACf,sBAAsB,KAAK;GAC3B,gBAAgB;EACjB;CACF;CAED,OAAO,sBAA2C;AAChD,MAAI;AACF,UAII,kBAGA,KAAK;EAEV,QAAO;AACN,UAAO;EACR;CACF;AACF"}
1
+ {"version":3,"file":"tracer_langchain.js","names":["fields: LangChainTracerFields","_run: Run","run: Run","id: string","runTree: RunTree","rootRun: RunTree"],"sources":["../../src/tracers/tracer_langchain.ts"],"sourcesContent":["import {\n type Client,\n type LangSmithTracingClientInterface,\n getDefaultProjectName,\n} from \"langsmith\";\nimport { RunTree, type RunTreeConfig } from \"langsmith/run_trees\";\nimport { getCurrentRunTree } from \"langsmith/singletons/traceable\";\n\nimport {\n BaseRun,\n RunCreate,\n RunUpdate as BaseRunUpdate,\n KVMap,\n} from \"langsmith/schemas\";\nimport { BaseTracer } from \"./base.js\";\nimport { BaseCallbackHandlerInput } from \"../callbacks/base.js\";\nimport { getDefaultLangChainClientSingleton } from \"../singletons/tracer.js\";\n\nexport interface Run extends BaseRun {\n id: string;\n child_runs: this[];\n child_execution_order: number;\n dotted_order?: string;\n trace_id?: string;\n}\n\nexport interface RunCreate2 extends RunCreate {\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface RunUpdate extends BaseRunUpdate {\n events: BaseRun[\"events\"];\n inputs: KVMap;\n trace_id?: string;\n dotted_order?: string;\n}\n\nexport interface LangChainTracerFields extends BaseCallbackHandlerInput {\n exampleId?: string;\n projectName?: string;\n client?: LangSmithTracingClientInterface;\n replicas?: RunTreeConfig[\"replicas\"];\n}\n\nexport class LangChainTracer\n extends BaseTracer\n implements LangChainTracerFields\n{\n name = \"langchain_tracer\";\n\n projectName?: string;\n\n exampleId?: string;\n\n client: LangSmithTracingClientInterface;\n\n replicas?: RunTreeConfig[\"replicas\"];\n\n usesRunTreeMap = true;\n\n constructor(fields: LangChainTracerFields = {}) {\n super(fields);\n const { exampleId, projectName, client, replicas } = fields;\n\n this.projectName = projectName ?? getDefaultProjectName();\n this.replicas = replicas;\n this.exampleId = exampleId;\n this.client = client ?? getDefaultLangChainClientSingleton();\n\n const traceableTree = LangChainTracer.getTraceableRunTree();\n if (traceableTree) {\n this.updateFromRunTree(traceableTree);\n }\n }\n\n protected async persistRun(_run: Run): Promise<void> {\n // empty\n }\n\n async onRunCreate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.postRun();\n }\n\n async onRunUpdate(run: Run): Promise<void> {\n const runTree = this.getRunTreeWithTracingConfig(run.id);\n await runTree?.patchRun();\n }\n\n getRun(id: string): Run | undefined {\n return this.runTreeMap.get(id);\n }\n\n updateFromRunTree(runTree: RunTree) {\n this.runTreeMap.set(runTree.id, runTree);\n let rootRun: RunTree = runTree;\n const visited = new Set<string>();\n while (rootRun.parent_run) {\n if (visited.has(rootRun.id)) break;\n visited.add(rootRun.id);\n\n if (!rootRun.parent_run) break;\n rootRun = rootRun.parent_run as RunTree;\n }\n visited.clear();\n\n const queue = [rootRun];\n while (queue.length > 0) {\n const current = queue.shift();\n if (!current || visited.has(current.id)) continue;\n visited.add(current.id);\n\n this.runTreeMap.set(current.id, current);\n if (current.child_runs) {\n queue.push(...current.child_runs);\n }\n }\n\n this.client = runTree.client ?? this.client;\n this.replicas = runTree.replicas ?? this.replicas;\n this.projectName = runTree.project_name ?? this.projectName;\n this.exampleId = runTree.reference_example_id ?? this.exampleId;\n }\n\n getRunTreeWithTracingConfig(id: string): RunTree | undefined {\n const runTree = this.runTreeMap.get(id);\n if (!runTree) return undefined;\n\n return new RunTree({\n ...runTree,\n client: this.client as Client,\n project_name: this.projectName,\n replicas: this.replicas,\n reference_example_id: this.exampleId,\n tracingEnabled: true,\n });\n }\n\n static getTraceableRunTree(): RunTree | undefined {\n try {\n return (\n // The type cast here provides forward compatibility. Old versions of LangSmith will just\n // ignore the permitAbsentRunTree arg.\n (\n getCurrentRunTree as (\n permitAbsentRunTree: boolean\n ) => ReturnType<typeof getCurrentRunTree> | undefined\n )(true)\n );\n } catch {\n return undefined;\n }\n }\n}\n"],"mappings":";;;;;;;;;;AA6CA,IAAa,kBAAb,MAAa,wBACH,WAEV;CACE,OAAO;CAEP;CAEA;CAEA;CAEA;CAEA,iBAAiB;CAEjB,YAAYA,SAAgC,CAAE,GAAE;EAC9C,MAAM,OAAO;EACb,MAAM,EAAE,WAAW,aAAa,QAAQ,UAAU,GAAG;EAErD,KAAK,cAAc,eAAe,uBAAuB;EACzD,KAAK,WAAW;EAChB,KAAK,YAAY;EACjB,KAAK,SAAS,UAAU,oCAAoC;EAE5D,MAAM,gBAAgB,gBAAgB,qBAAqB;AAC3D,MAAI,eACF,KAAK,kBAAkB,cAAc;CAExC;CAED,MAAgB,WAAWC,MAA0B,CAEpD;CAED,MAAM,YAAYC,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,SAAS;CACzB;CAED,MAAM,YAAYA,KAAyB;EACzC,MAAM,UAAU,KAAK,4BAA4B,IAAI,GAAG;EACxD,MAAM,SAAS,UAAU;CAC1B;CAED,OAAOC,IAA6B;AAClC,SAAO,KAAK,WAAW,IAAI,GAAG;CAC/B;CAED,kBAAkBC,SAAkB;EAClC,KAAK,WAAW,IAAI,QAAQ,IAAI,QAAQ;EACxC,IAAIC,UAAmB;EACvB,MAAM,0BAAU,IAAI;AACpB,SAAO,QAAQ,YAAY;AACzB,OAAI,QAAQ,IAAI,QAAQ,GAAG,CAAE;GAC7B,QAAQ,IAAI,QAAQ,GAAG;AAEvB,OAAI,CAAC,QAAQ,WAAY;GACzB,UAAU,QAAQ;EACnB;EACD,QAAQ,OAAO;EAEf,MAAM,QAAQ,CAAC,OAAQ;AACvB,SAAO,MAAM,SAAS,GAAG;GACvB,MAAM,UAAU,MAAM,OAAO;AAC7B,OAAI,CAAC,WAAW,QAAQ,IAAI,QAAQ,GAAG,CAAE;GACzC,QAAQ,IAAI,QAAQ,GAAG;GAEvB,KAAK,WAAW,IAAI,QAAQ,IAAI,QAAQ;AACxC,OAAI,QAAQ,YACV,MAAM,KAAK,GAAG,QAAQ,WAAW;EAEpC;EAED,KAAK,SAAS,QAAQ,UAAU,KAAK;EACrC,KAAK,WAAW,QAAQ,YAAY,KAAK;EACzC,KAAK,cAAc,QAAQ,gBAAgB,KAAK;EAChD,KAAK,YAAY,QAAQ,wBAAwB,KAAK;CACvD;CAED,4BAA4BF,IAAiC;EAC3D,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG;AACvC,MAAI,CAAC,QAAS,QAAO;AAErB,SAAO,IAAI,QAAQ;GACjB,GAAG;GACH,QAAQ,KAAK;GACb,cAAc,KAAK;GACnB,UAAU,KAAK;GACf,sBAAsB,KAAK;GAC3B,gBAAgB;EACjB;CACF;CAED,OAAO,sBAA2C;AAChD,MAAI;AACF,UAII,kBAGA,KAAK;EAEV,QAAO;AACN,UAAO;EACR;CACF;AACF"}
@@ -6,7 +6,6 @@ require_rolldown_runtime.__export(env_exports, {
6
6
  getEnv: () => getEnv,
7
7
  getEnvironmentVariable: () => getEnvironmentVariable,
8
8
  getRuntimeEnvironment: () => getRuntimeEnvironment,
9
- getRuntimeEnvironmentSync: () => getRuntimeEnvironmentSync,
10
9
  isBrowser: () => isBrowser,
11
10
  isDeno: () => isDeno,
12
11
  isJsDom: () => isJsDom,
@@ -29,13 +28,7 @@ const getEnv = () => {
29
28
  return env;
30
29
  };
31
30
  let runtimeEnvironment;
32
- /**
33
- * @deprecated Use getRuntimeEnvironmentSync instead
34
- */
35
- async function getRuntimeEnvironment() {
36
- return getRuntimeEnvironmentSync();
37
- }
38
- function getRuntimeEnvironmentSync() {
31
+ function getRuntimeEnvironment() {
39
32
  if (runtimeEnvironment === void 0) {
40
33
  const env = getEnv();
41
34
  runtimeEnvironment = {
@@ -65,7 +58,6 @@ Object.defineProperty(exports, 'env_exports', {
65
58
  exports.getEnv = getEnv;
66
59
  exports.getEnvironmentVariable = getEnvironmentVariable;
67
60
  exports.getRuntimeEnvironment = getRuntimeEnvironment;
68
- exports.getRuntimeEnvironmentSync = getRuntimeEnvironmentSync;
69
61
  exports.isBrowser = isBrowser;
70
62
  exports.isDeno = isDeno;
71
63
  exports.isJsDom = isJsDom;
@@ -1 +1 @@
1
- {"version":3,"file":"env.cjs","names":["env: string","runtimeEnvironment: RuntimeEnvironment | undefined","name: string"],"sources":["../../src/utils/env.ts"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\ndeclare global {\n const Deno:\n | {\n version: {\n deno: string;\n };\n env: {\n get: (name: string) => string | undefined;\n };\n }\n | undefined;\n}\n\nexport const isBrowser = () =>\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nexport const isWebWorker = () =>\n typeof globalThis === \"object\" &&\n globalThis.constructor &&\n globalThis.constructor.name === \"DedicatedWorkerGlobalScope\";\n\nexport const isJsDom = () =>\n (typeof window !== \"undefined\" && window.name === \"nodejs\") ||\n (typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"jsdom\"));\n\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport const isDeno = () => typeof Deno !== \"undefined\";\n\n// Mark not-as-node if in Supabase Edge Function\nexport const isNode = () =>\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\" &&\n !isDeno();\n\nexport const getEnv = () => {\n let env: string;\n if (isBrowser()) {\n env = \"browser\";\n } else if (isNode()) {\n env = \"node\";\n } else if (isWebWorker()) {\n env = \"webworker\";\n } else if (isJsDom()) {\n env = \"jsdom\";\n } else if (isDeno()) {\n env = \"deno\";\n } else {\n env = \"other\";\n }\n\n return env;\n};\n\nexport type RuntimeEnvironment = {\n library: string;\n libraryVersion?: string;\n runtime: string;\n runtimeVersion?: string;\n};\n\nlet runtimeEnvironment: RuntimeEnvironment | undefined;\n\n/**\n * @deprecated Use getRuntimeEnvironmentSync instead\n */\nexport async function getRuntimeEnvironment(): Promise<RuntimeEnvironment> {\n return getRuntimeEnvironmentSync();\n}\n\nexport function getRuntimeEnvironmentSync(): RuntimeEnvironment {\n if (runtimeEnvironment === undefined) {\n const env = getEnv();\n\n runtimeEnvironment = {\n library: \"langchain-js\",\n runtime: env,\n };\n }\n return runtimeEnvironment;\n}\n\nexport function getEnvironmentVariable(name: string): string | undefined {\n // Certain Deno setups will throw an error if you try to access environment variables\n // https://github.com/langchain-ai/langchainjs/issues/1412\n try {\n if (typeof process !== \"undefined\") {\n // eslint-disable-next-line no-process-env\n return process.env?.[name];\n } else if (isDeno()) {\n return Deno?.env.get(name);\n } else {\n return undefined;\n }\n } catch {\n return undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAcA,MAAa,YAAY,MACvB,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAE9D,MAAa,cAAc,MACzB,OAAO,eAAe,YACtB,WAAW,eACX,WAAW,YAAY,SAAS;AAElC,MAAa,UAAU,MACpB,OAAO,WAAW,eAAe,OAAO,SAAS,YACjD,OAAO,cAAc,eAAe,UAAU,UAAU,SAAS,QAAQ;AAI5E,MAAa,SAAS,MAAM,OAAO,SAAS;AAG5C,MAAa,SAAS,MACpB,OAAO,YAAY,eACnB,OAAO,QAAQ,aAAa,eAC5B,OAAO,QAAQ,SAAS,SAAS,eACjC,CAAC,QAAQ;AAEX,MAAa,SAAS,MAAM;CAC1B,IAAIA;AACJ,KAAI,WAAW,EACb,MAAM;UACG,QAAQ,EACjB,MAAM;UACG,aAAa,EACtB,MAAM;UACG,SAAS,EAClB,MAAM;UACG,QAAQ,EACjB,MAAM;MAEN,MAAM;AAGR,QAAO;AACR;AASD,IAAIC;;;;AAKJ,eAAsB,wBAAqD;AACzE,QAAO,2BAA2B;AACnC;AAED,SAAgB,4BAAgD;AAC9D,KAAI,uBAAuB,QAAW;EACpC,MAAM,MAAM,QAAQ;EAEpB,qBAAqB;GACnB,SAAS;GACT,SAAS;EACV;CACF;AACD,QAAO;AACR;AAED,SAAgB,uBAAuBC,MAAkC;AAGvE,KAAI;AACF,MAAI,OAAO,YAAY,YAErB,QAAO,QAAQ,MAAM;WACZ,QAAQ,CACjB,QAAO,MAAM,IAAI,IAAI,KAAK;MAE1B,QAAO;CAEV,QAAO;AACN,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"env.cjs","names":["env: string","runtimeEnvironment: RuntimeEnvironment | undefined","name: string"],"sources":["../../src/utils/env.ts"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\ndeclare global {\n const Deno:\n | {\n version: {\n deno: string;\n };\n env: {\n get: (name: string) => string | undefined;\n };\n }\n | undefined;\n}\n\nexport const isBrowser = () =>\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nexport const isWebWorker = () =>\n typeof globalThis === \"object\" &&\n globalThis.constructor &&\n globalThis.constructor.name === \"DedicatedWorkerGlobalScope\";\n\nexport const isJsDom = () =>\n (typeof window !== \"undefined\" && window.name === \"nodejs\") ||\n (typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"jsdom\"));\n\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport const isDeno = () => typeof Deno !== \"undefined\";\n\n// Mark not-as-node if in Supabase Edge Function\nexport const isNode = () =>\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\" &&\n !isDeno();\n\nexport const getEnv = () => {\n let env: string;\n if (isBrowser()) {\n env = \"browser\";\n } else if (isNode()) {\n env = \"node\";\n } else if (isWebWorker()) {\n env = \"webworker\";\n } else if (isJsDom()) {\n env = \"jsdom\";\n } else if (isDeno()) {\n env = \"deno\";\n } else {\n env = \"other\";\n }\n\n return env;\n};\n\nexport type RuntimeEnvironment = {\n library: string;\n libraryVersion?: string;\n runtime: string;\n runtimeVersion?: string;\n};\n\nlet runtimeEnvironment: RuntimeEnvironment | undefined;\n\nexport function getRuntimeEnvironment(): RuntimeEnvironment {\n if (runtimeEnvironment === undefined) {\n const env = getEnv();\n\n runtimeEnvironment = {\n library: \"langchain-js\",\n runtime: env,\n };\n }\n return runtimeEnvironment;\n}\n\nexport function getEnvironmentVariable(name: string): string | undefined {\n // Certain Deno setups will throw an error if you try to access environment variables\n // https://github.com/langchain-ai/langchainjs/issues/1412\n try {\n if (typeof process !== \"undefined\") {\n // eslint-disable-next-line no-process-env\n return process.env?.[name];\n } else if (isDeno()) {\n return Deno?.env.get(name);\n } else {\n return undefined;\n }\n } catch {\n return undefined;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAa,YAAY,MACvB,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAE9D,MAAa,cAAc,MACzB,OAAO,eAAe,YACtB,WAAW,eACX,WAAW,YAAY,SAAS;AAElC,MAAa,UAAU,MACpB,OAAO,WAAW,eAAe,OAAO,SAAS,YACjD,OAAO,cAAc,eAAe,UAAU,UAAU,SAAS,QAAQ;AAI5E,MAAa,SAAS,MAAM,OAAO,SAAS;AAG5C,MAAa,SAAS,MACpB,OAAO,YAAY,eACnB,OAAO,QAAQ,aAAa,eAC5B,OAAO,QAAQ,SAAS,SAAS,eACjC,CAAC,QAAQ;AAEX,MAAa,SAAS,MAAM;CAC1B,IAAIA;AACJ,KAAI,WAAW,EACb,MAAM;UACG,QAAQ,EACjB,MAAM;UACG,aAAa,EACtB,MAAM;UACG,SAAS,EAClB,MAAM;UACG,QAAQ,EACjB,MAAM;MAEN,MAAM;AAGR,QAAO;AACR;AASD,IAAIC;AAEJ,SAAgB,wBAA4C;AAC1D,KAAI,uBAAuB,QAAW;EACpC,MAAM,MAAM,QAAQ;EAEpB,qBAAqB;GACnB,SAAS;GACT,SAAS;EACV;CACF;AACD,QAAO;AACR;AAED,SAAgB,uBAAuBC,MAAkC;AAGvE,KAAI;AACF,MAAI,OAAO,YAAY,YAErB,QAAO,QAAQ,MAAM;WACZ,QAAQ,CACjB,QAAO,MAAM,IAAI,IAAI,KAAK;MAE1B,QAAO;CAEV,QAAO;AACN,SAAO;CACR;AACF"}
@@ -25,12 +25,8 @@ type RuntimeEnvironment = {
25
25
  runtime: string;
26
26
  runtimeVersion?: string;
27
27
  };
28
- /**
29
- * @deprecated Use getRuntimeEnvironmentSync instead
30
- */
31
- declare function getRuntimeEnvironment(): Promise<RuntimeEnvironment>;
32
- declare function getRuntimeEnvironmentSync(): RuntimeEnvironment;
28
+ declare function getRuntimeEnvironment(): RuntimeEnvironment;
33
29
  declare function getEnvironmentVariable(name: string): string | undefined;
34
30
  //#endregion
35
- export { RuntimeEnvironment, getEnv, getEnvironmentVariable, getRuntimeEnvironment, getRuntimeEnvironmentSync, isBrowser, isDeno, isJsDom, isNode, isWebWorker };
31
+ export { RuntimeEnvironment, getEnv, getEnvironmentVariable, getRuntimeEnvironment, isBrowser, isDeno, isJsDom, isNode, isWebWorker };
36
32
  //# sourceMappingURL=env.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.cts","names":["isBrowser","isWebWorker","isJsDom","isDeno","isNode","getEnv","RuntimeEnvironment","getRuntimeEnvironment","Promise","getRuntimeEnvironmentSync","getEnvironmentVariable"],"sources":["../../src/utils/env.d.ts"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\ndeclare global {\n const Deno: {\n version: {\n deno: string;\n };\n env: {\n get: (name: string) => string | undefined;\n };\n } | undefined;\n}\nexport declare const isBrowser: () => boolean;\nexport declare const isWebWorker: () => boolean;\nexport declare const isJsDom: () => boolean;\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport declare const isDeno: () => boolean;\n// Mark not-as-node if in Supabase Edge Function\nexport declare const isNode: () => boolean;\nexport declare const getEnv: () => string;\nexport type RuntimeEnvironment = {\n library: string;\n libraryVersion?: string;\n runtime: string;\n runtimeVersion?: string;\n};\n/**\n * @deprecated Use getRuntimeEnvironmentSync instead\n */\nexport declare function getRuntimeEnvironment(): Promise<RuntimeEnvironment>;\nexport declare function getRuntimeEnvironmentSync(): RuntimeEnvironment;\nexport declare function getEnvironmentVariable(name: string): string | undefined;\n"],"mappings":";;;EAWqBA,MAAAA,IAAAA,EAAwB;IACxBC,OAAAA,EAAAA;MACAC,IAAsB,EAAA,MAAA;IAGtBC,CAAAA;IAEAC,GAAAA,EAAqB;MACrBC,GAAoB,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;IAC7BC,CAAAA;EASYC,CAAAA,GAAAA,SAAAA;;AAAiCD,cAlBpCN,SAkBoCM,EAAAA,GAAAA,GAAAA,OAAAA;AAARE,cAjB5BP,WAiB4BO,EAAAA,GAAAA,GAAAA,OAAAA;AAAO,cAhBnCN,OAgBmC,EAAA,GAAA,GAAA,OAAA;AACxD;AACA;cAfqBC;;cAEAC;cACAC;KACTC,kBAAAA;;;;;;;;;iBASYC,qBAAAA,CAAAA,GAAyBC,QAAQF;iBACjCG,yBAAAA,CAAAA,GAA6BH;iBAC7BI,sBAAAA"}
1
+ {"version":3,"file":"env.d.cts","names":["isBrowser","isWebWorker","isJsDom","isDeno","isNode","getEnv","RuntimeEnvironment","getRuntimeEnvironment","getEnvironmentVariable"],"sources":["../../src/utils/env.d.ts"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\ndeclare global {\n const Deno: {\n version: {\n deno: string;\n };\n env: {\n get: (name: string) => string | undefined;\n };\n } | undefined;\n}\nexport declare const isBrowser: () => boolean;\nexport declare const isWebWorker: () => boolean;\nexport declare const isJsDom: () => boolean;\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport declare const isDeno: () => boolean;\n// Mark not-as-node if in Supabase Edge Function\nexport declare const isNode: () => boolean;\nexport declare const getEnv: () => string;\nexport type RuntimeEnvironment = {\n library: string;\n libraryVersion?: string;\n runtime: string;\n runtimeVersion?: string;\n};\nexport declare function getRuntimeEnvironment(): RuntimeEnvironment;\nexport declare function getEnvironmentVariable(name: string): string | undefined;\n"],"mappings":";;;EAWqBA,MAAAA,IAAAA,EAAwB;IACxBC,OAAAA,EAAAA;MACAC,IAAsB,EAAA,MAAA;IAGtBC,CAAAA;IAEAC,GAAAA,EAAqB;MACrBC,GAAoB,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;IAC7BC,CAAAA;EAMYC,CAAAA,GAAAA,SAAAA;AACxB;cAhBqBP;cACAC;cACAC;;;cAGAC;;cAEAC;cACAC;KACTC,kBAAAA;;;;;;iBAMYC,qBAAAA,CAAAA,GAAyBD;iBACzBE,sBAAAA"}
@@ -25,12 +25,8 @@ type RuntimeEnvironment = {
25
25
  runtime: string;
26
26
  runtimeVersion?: string;
27
27
  };
28
- /**
29
- * @deprecated Use getRuntimeEnvironmentSync instead
30
- */
31
- declare function getRuntimeEnvironment(): Promise<RuntimeEnvironment>;
32
- declare function getRuntimeEnvironmentSync(): RuntimeEnvironment;
28
+ declare function getRuntimeEnvironment(): RuntimeEnvironment;
33
29
  declare function getEnvironmentVariable(name: string): string | undefined;
34
30
  //#endregion
35
- export { RuntimeEnvironment, getEnv, getEnvironmentVariable, getRuntimeEnvironment, getRuntimeEnvironmentSync, isBrowser, isDeno, isJsDom, isNode, isWebWorker };
31
+ export { RuntimeEnvironment, getEnv, getEnvironmentVariable, getRuntimeEnvironment, isBrowser, isDeno, isJsDom, isNode, isWebWorker };
36
32
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","names":["isBrowser","isWebWorker","isJsDom","isDeno","isNode","getEnv","RuntimeEnvironment","getRuntimeEnvironment","Promise","getRuntimeEnvironmentSync","getEnvironmentVariable"],"sources":["../../src/utils/env.d.ts"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\ndeclare global {\n const Deno: {\n version: {\n deno: string;\n };\n env: {\n get: (name: string) => string | undefined;\n };\n } | undefined;\n}\nexport declare const isBrowser: () => boolean;\nexport declare const isWebWorker: () => boolean;\nexport declare const isJsDom: () => boolean;\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport declare const isDeno: () => boolean;\n// Mark not-as-node if in Supabase Edge Function\nexport declare const isNode: () => boolean;\nexport declare const getEnv: () => string;\nexport type RuntimeEnvironment = {\n library: string;\n libraryVersion?: string;\n runtime: string;\n runtimeVersion?: string;\n};\n/**\n * @deprecated Use getRuntimeEnvironmentSync instead\n */\nexport declare function getRuntimeEnvironment(): Promise<RuntimeEnvironment>;\nexport declare function getRuntimeEnvironmentSync(): RuntimeEnvironment;\nexport declare function getEnvironmentVariable(name: string): string | undefined;\n"],"mappings":";;;EAWqBA,MAAAA,IAAAA,EAAwB;IACxBC,OAAAA,EAAAA;MACAC,IAAsB,EAAA,MAAA;IAGtBC,CAAAA;IAEAC,GAAAA,EAAqB;MACrBC,GAAoB,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;IAC7BC,CAAAA;EASYC,CAAAA,GAAAA,SAAAA;;AAAiCD,cAlBpCN,SAkBoCM,EAAAA,GAAAA,GAAAA,OAAAA;AAARE,cAjB5BP,WAiB4BO,EAAAA,GAAAA,GAAAA,OAAAA;AAAO,cAhBnCN,OAgBmC,EAAA,GAAA,GAAA,OAAA;AACxD;AACA;cAfqBC;;cAEAC;cACAC;KACTC,kBAAAA;;;;;;;;;iBASYC,qBAAAA,CAAAA,GAAyBC,QAAQF;iBACjCG,yBAAAA,CAAAA,GAA6BH;iBAC7BI,sBAAAA"}
1
+ {"version":3,"file":"env.d.ts","names":["isBrowser","isWebWorker","isJsDom","isDeno","isNode","getEnv","RuntimeEnvironment","getRuntimeEnvironment","getEnvironmentVariable"],"sources":["../../src/utils/env.d.ts"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\ndeclare global {\n const Deno: {\n version: {\n deno: string;\n };\n env: {\n get: (name: string) => string | undefined;\n };\n } | undefined;\n}\nexport declare const isBrowser: () => boolean;\nexport declare const isWebWorker: () => boolean;\nexport declare const isJsDom: () => boolean;\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport declare const isDeno: () => boolean;\n// Mark not-as-node if in Supabase Edge Function\nexport declare const isNode: () => boolean;\nexport declare const getEnv: () => string;\nexport type RuntimeEnvironment = {\n library: string;\n libraryVersion?: string;\n runtime: string;\n runtimeVersion?: string;\n};\nexport declare function getRuntimeEnvironment(): RuntimeEnvironment;\nexport declare function getEnvironmentVariable(name: string): string | undefined;\n"],"mappings":";;;EAWqBA,MAAAA,IAAAA,EAAwB;IACxBC,OAAAA,EAAAA;MACAC,IAAsB,EAAA,MAAA;IAGtBC,CAAAA;IAEAC,GAAAA,EAAqB;MACrBC,GAAoB,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;IAC7BC,CAAAA;EAMYC,CAAAA,GAAAA,SAAAA;AACxB;cAhBqBP;cACAC;cACAC;;;cAGAC;;cAEAC;cACAC;KACTC,kBAAAA;;;;;;iBAMYC,qBAAAA,CAAAA,GAAyBD;iBACzBE,sBAAAA"}