UNPKG

@langchain/core

Version:
1 lines 64.1 kB
{"version":3,"file":"manager.cjs","names":["candidate","LangChainTracer","consumeCallback","uuidv7","isBaseTracer","getBufferString","BaseCallbackHandler","getEnvironmentVariable","isTracingEnabled","ConsoleCallbackHandler","_getConfigureHooks","getContextVariable","isBaseCallbackHandler"],"sources":["../../src/callbacks/manager.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"../utils/uuid/index.js\";\nimport { AgentAction, AgentFinish } from \"../agents.js\";\nimport type { ChainValues } from \"../utils/types/index.js\";\nimport { LLMResult } from \"../outputs.js\";\nimport {\n  BaseCallbackHandler,\n  CallbackHandlerMethods,\n  HandleLLMNewTokenCallbackFields,\n  isBaseCallbackHandler,\n  NewTokenIndices,\n} from \"./base.js\";\nimport { ConsoleCallbackHandler } from \"../tracers/console.js\";\nimport { type BaseMessage } from \"../messages/base.js\";\nimport { getBufferString } from \"../messages/utils.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\nimport { LangChainTracer } from \"../tracers/tracer_langchain.js\";\nimport { consumeCallback } from \"./promises.js\";\nimport { Serialized } from \"../load/serializable.js\";\nimport type { DocumentInterface } from \"../documents/document.js\";\nimport type { ChatModelStreamEvent } from \"../language_models/event.js\";\nimport { isTracingEnabled } from \"../utils/callbacks.js\";\nimport { isBaseTracer } from \"../tracers/base.js\";\nimport {\n  getContextVariable,\n  _getConfigureHooks,\n} from \"../singletons/async_local_storage/context.js\";\n\ntype BaseCallbackManagerMethods = {\n  [K in keyof CallbackHandlerMethods]?: (\n    ...args: Parameters<Required<CallbackHandlerMethods>[K]>\n  ) => Promise<unknown>;\n};\n\nexport interface CallbackManagerOptions {\n  verbose?: boolean;\n  tracing?: boolean;\n  tracerInheritableMetadata?: Record<string, unknown>;\n  tracerInheritableTags?: string[];\n}\n\nexport type Callbacks =\n  | CallbackManager\n  | (BaseCallbackHandler | CallbackHandlerMethods)[];\n\nfunction getTracerRunStoreKey(tracer: LangChainTracer): object {\n  const candidate = tracer as LangChainTracer & {\n    _getRunStoreKey?: () => object;\n  };\n  return candidate._getRunStoreKey?.() ?? tracer;\n}\n\nfunction mergeTracerConfig(\n  target: LangChainTracer,\n  source: LangChainTracer\n): LangChainTracer {\n  if (target === source) {\n    return target;\n  }\n  return target.copyWithTracingConfig({\n    metadata: source.tracingMetadata,\n    tags: source.tracingTags,\n  });\n}\n\nfunction coalesceTracers(\n  handlers: BaseCallbackHandler[],\n  inheritableHandlers: BaseCallbackHandler[]\n): {\n  handlers: BaseCallbackHandler[];\n  inheritableHandlers: BaseCallbackHandler[];\n} {\n  const inheritableSet = new Set<BaseCallbackHandler>(inheritableHandlers);\n  const groups = new Map<\n    object,\n    { index: number; tracer: LangChainTracer; hasInheritable: boolean }\n  >();\n  const coalescedHandlers: BaseCallbackHandler[] = [];\n\n  // Fold a tracer into its run-store group, keeping a single representative per\n  // store (one tracer per store avoids the double-\"end\" throw). The\n  // representative's tracing config is drawn from inheritable entries once any\n  // exist, so a local-only tracer sharing the store cannot leak its tags or\n  // metadata into child runs, which inherit `inheritableHandlers`. Stores with\n  // only local entries keep merging those local entries.\n  const fold = (handler: LangChainTracer) => {\n    const key = getTracerRunStoreKey(handler);\n    const isInheritable = inheritableSet.has(handler);\n    const group = groups.get(key);\n    if (group === undefined) {\n      groups.set(key, {\n        index: coalescedHandlers.length,\n        tracer: handler,\n        hasInheritable: isInheritable,\n      });\n      coalescedHandlers.push(handler);\n      return;\n    }\n\n    if (isInheritable && !group.hasInheritable) {\n      // First inheritable entry for this store: drop any local-only config\n      // merged so far and restart from an inheritable baseline.\n      group.tracer = handler;\n      group.hasInheritable = true;\n    } else if (isInheritable || !group.hasInheritable) {\n      group.tracer = mergeTracerConfig(group.tracer, handler);\n    }\n    // A local entry on a store that already has inheritable config contributes\n    // nothing, so its config cannot ride into children.\n    coalescedHandlers[group.index] = group.tracer;\n  };\n\n  for (const handler of handlers) {\n    if (handler instanceof LangChainTracer) {\n      fold(handler);\n    } else {\n      coalescedHandlers.push(handler);\n    }\n  }\n\n  // `inheritableHandlers` is a subset of `handlers` by identity, so its tracers\n  // were already folded above. This only promotes an inheritable-only orphan\n  // (an alias broken upstream) back into `handlers`.\n  for (const handler of inheritableHandlers) {\n    if (\n      handler instanceof LangChainTracer &&\n      !groups.has(getTracerRunStoreKey(handler))\n    ) {\n      fold(handler);\n    }\n  }\n\n  const seenTracerStores = new Set<object>();\n  const coalescedInheritableHandlers = inheritableHandlers.flatMap(\n    (handler) => {\n      if (!(handler instanceof LangChainTracer)) {\n        return [handler];\n      }\n\n      const key = getTracerRunStoreKey(handler);\n      if (seenTracerStores.has(key)) {\n        return [];\n      }\n      seenTracerStores.add(key);\n      return [groups.get(key)?.tracer ?? handler];\n    }\n  );\n\n  return {\n    handlers: coalescedHandlers,\n    inheritableHandlers: coalescedInheritableHandlers,\n  };\n}\n\nexport interface BaseCallbackConfig {\n  /**\n   * Name for the tracer run for this call. Defaults to the name of the class.\n   */\n  runName?: string;\n\n  /**\n   * Tags for this call and any sub-calls (eg. a Chain calling an LLM).\n   * You can use these to filter calls.\n   */\n  tags?: string[];\n\n  /**\n   * Metadata for this call and any sub-calls (eg. a Chain calling an LLM).\n   * Keys should be strings, values should be JSON-serializable.\n   */\n  metadata?: Record<string, unknown>;\n\n  /**\n   * Callbacks for this call and any sub-calls (eg. a Chain calling an LLM).\n   * Tags are passed to all callbacks, metadata is passed to handle*Start callbacks.\n   */\n  callbacks?: Callbacks;\n\n  /**\n   * Unique identifier for the tracer run for this call. If not provided, a new UUID\n   * will be generated.\n   */\n  runId?: string;\n}\n\nexport function parseCallbackConfigArg(\n  arg: Callbacks | BaseCallbackConfig | undefined\n): BaseCallbackConfig {\n  if (!arg) {\n    return {};\n  } else if (Array.isArray(arg) || \"name\" in arg) {\n    return { callbacks: arg };\n  } else {\n    return arg;\n  }\n}\n\n/**\n * Manage callbacks from different components of LangChain.\n */\nexport abstract class BaseCallbackManager {\n  abstract addHandler(handler: BaseCallbackHandler): void;\n\n  abstract removeHandler(handler: BaseCallbackHandler): void;\n\n  abstract setHandlers(handlers: BaseCallbackHandler[]): void;\n\n  setHandler(handler: BaseCallbackHandler): void {\n    return this.setHandlers([handler]);\n  }\n}\n\n/**\n * Base class for run manager in LangChain.\n */\nexport class BaseRunManager {\n  constructor(\n    public readonly runId: string,\n    public readonly handlers: BaseCallbackHandler[],\n    protected readonly inheritableHandlers: BaseCallbackHandler[],\n    protected readonly tags: string[],\n    protected readonly inheritableTags: string[],\n    protected readonly metadata: Record<string, unknown>,\n    protected readonly inheritableMetadata: Record<string, unknown>,\n    protected readonly _parentRunId?: string\n  ) {}\n\n  get parentRunId() {\n    return this._parentRunId;\n  }\n\n  async handleText(text: string): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          try {\n            await handler.handleText?.(\n              text,\n              this.runId,\n              this._parentRunId,\n              this.tags\n            );\n          } catch (err) {\n            const logFunction = handler.raiseError\n              ? console.error\n              : console.warn;\n            logFunction(\n              `Error in handler ${handler.constructor.name}, handleText: ${err}`\n            );\n            if (handler.raiseError) {\n              throw err;\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleCustomEvent(\n    eventName: string,\n    // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n    data: any,\n    _runId?: string,\n    _tags?: string[],\n    // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n    _metadata?: Record<string, any>\n  ): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          try {\n            await handler.handleCustomEvent?.(\n              eventName,\n              data,\n              this.runId,\n              this.tags,\n              this.metadata\n            );\n          } catch (err) {\n            const logFunction = handler.raiseError\n              ? console.error\n              : console.warn;\n            logFunction(\n              `Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`\n            );\n            if (handler.raiseError) {\n              throw err;\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n}\n\n/**\n * Manages callbacks for retriever runs.\n */\nexport class CallbackManagerForRetrieverRun\n  extends BaseRunManager\n  implements BaseCallbackManagerMethods\n{\n  getChild(tag?: string): CallbackManager {\n    // oxlint-disable-next-line @typescript-eslint/no-use-before-define\n    const manager = new CallbackManager(this.runId);\n    manager.setHandlers(this.inheritableHandlers);\n    manager.addTags(this.inheritableTags);\n    manager.addMetadata(this.inheritableMetadata);\n    if (tag) {\n      manager.addTags([tag], false);\n    }\n    return manager;\n  }\n\n  async handleRetrieverEnd(documents: DocumentInterface[]): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreRetriever) {\n            try {\n              await handler.handleRetrieverEnd?.(\n                documents,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleRetriever`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleRetrieverError(err: Error | unknown): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreRetriever) {\n            try {\n              await handler.handleRetrieverError?.(\n                err,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (error) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleRetrieverError: ${error}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n}\n\nexport class CallbackManagerForLLMRun\n  extends BaseRunManager\n  implements BaseCallbackManagerMethods\n{\n  async handleLLMNewToken(\n    token: string,\n    idx?: NewTokenIndices,\n    _runId?: string,\n    _parentRunId?: string,\n    _tags?: string[],\n    fields?: HandleLLMNewTokenCallbackFields\n  ): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreLLM) {\n            try {\n              await handler.handleLLMNewToken?.(\n                token,\n                idx ?? { prompt: 0, completion: 0 },\n                this.runId,\n                this._parentRunId,\n                this.tags,\n                fields\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleLLMNewToken: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleChatModelStreamEvent(event: ChatModelStreamEvent): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreLLM) {\n            try {\n              await handler.handleChatModelStreamEvent?.(\n                event,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleChatModelStreamEvent: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleLLMError(\n    err: Error | unknown,\n    _runId?: string,\n    _parentRunId?: string,\n    _tags?: string[],\n    extraParams?: Record<string, unknown>\n  ): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreLLM) {\n            try {\n              await handler.handleLLMError?.(\n                err,\n                this.runId,\n                this._parentRunId,\n                this.tags,\n                extraParams\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleLLMError: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleLLMEnd(\n    output: LLMResult,\n    _runId?: string,\n    _parentRunId?: string,\n    _tags?: string[],\n    extraParams?: Record<string, unknown>\n  ): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreLLM) {\n            try {\n              await handler.handleLLMEnd?.(\n                output,\n                this.runId,\n                this._parentRunId,\n                this.tags,\n                extraParams\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleLLMEnd: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n}\n\nexport class CallbackManagerForChainRun\n  extends BaseRunManager\n  implements BaseCallbackManagerMethods\n{\n  getChild(tag?: string): CallbackManager {\n    // oxlint-disable-next-line @typescript-eslint/no-use-before-define\n    const manager = new CallbackManager(this.runId);\n    manager.setHandlers(this.inheritableHandlers);\n    manager.addTags(this.inheritableTags);\n    manager.addMetadata(this.inheritableMetadata);\n    if (tag) {\n      manager.addTags([tag], false);\n    }\n    return manager;\n  }\n\n  async handleChainError(\n    err: Error | unknown,\n    _runId?: string,\n    _parentRunId?: string,\n    _tags?: string[],\n    kwargs?: { inputs?: Record<string, unknown> }\n  ): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreChain) {\n            try {\n              await handler.handleChainError?.(\n                err,\n                this.runId,\n                this._parentRunId,\n                this.tags,\n                kwargs\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleChainError: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleChainEnd(\n    output: ChainValues,\n    _runId?: string,\n    _parentRunId?: string,\n    _tags?: string[],\n    kwargs?: { inputs?: Record<string, unknown> }\n  ): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreChain) {\n            try {\n              await handler.handleChainEnd?.(\n                output,\n                this.runId,\n                this._parentRunId,\n                this.tags,\n                kwargs\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleChainEnd: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleAgentAction(action: AgentAction): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreAgent) {\n            try {\n              await handler.handleAgentAction?.(\n                action,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleAgentAction: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleAgentEnd(action: AgentFinish): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreAgent) {\n            try {\n              await handler.handleAgentEnd?.(\n                action,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleAgentEnd: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n}\n\nexport class CallbackManagerForToolRun\n  extends BaseRunManager\n  implements BaseCallbackManagerMethods\n{\n  getChild(tag?: string): CallbackManager {\n    // oxlint-disable-next-line @typescript-eslint/no-use-before-define\n    const manager = new CallbackManager(this.runId);\n    manager.setHandlers(this.inheritableHandlers);\n    manager.addTags(this.inheritableTags);\n    manager.addMetadata(this.inheritableMetadata);\n    if (tag) {\n      manager.addTags([tag], false);\n    }\n    return manager;\n  }\n\n  async handleToolError(err: Error | unknown): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreAgent) {\n            try {\n              await handler.handleToolError?.(\n                err,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleToolError: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  async handleToolEvent(chunk: unknown): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreAgent) {\n            try {\n              await handler.handleToolEvent?.(\n                chunk,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              if (handler.raiseError) throw err;\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n  async handleToolEnd(output: any): Promise<void> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreAgent) {\n            try {\n              await handler.handleToolEnd?.(\n                output,\n                this.runId,\n                this._parentRunId,\n                this.tags\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleToolEnd: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n}\n\n/**\n * @example\n * ```typescript\n * const prompt = PromptTemplate.fromTemplate(\"What is the answer to {question}?\");\n *\n * // Example of using LLMChain with OpenAI and a simple prompt\n * const chain = new LLMChain({\n *   llm: new ChatOpenAI({ model: \"gpt-4o-mini\", temperature: 0.9 }),\n *   prompt,\n * });\n *\n * // Running the chain with a single question\n * const result = await chain.call({\n *   question: \"What is the airspeed velocity of an unladen swallow?\",\n * });\n * console.log(\"The answer is:\", result);\n * ```\n */\nexport class CallbackManager\n  extends BaseCallbackManager\n  implements BaseCallbackManagerMethods\n{\n  handlers: BaseCallbackHandler[] = [];\n\n  inheritableHandlers: BaseCallbackHandler[] = [];\n\n  tags: string[] = [];\n\n  inheritableTags: string[] = [];\n\n  metadata: Record<string, unknown> = {};\n\n  inheritableMetadata: Record<string, unknown> = {};\n\n  name = \"callback_manager\";\n\n  public _parentRunId?: string;\n\n  constructor(\n    parentRunId?: string,\n    options?: {\n      handlers?: BaseCallbackHandler[];\n      inheritableHandlers?: BaseCallbackHandler[];\n      tags?: string[];\n      inheritableTags?: string[];\n      metadata?: Record<string, unknown>;\n      inheritableMetadata?: Record<string, unknown>;\n    }\n  ) {\n    super();\n    this.handlers = options?.handlers ?? this.handlers;\n    this.inheritableHandlers =\n      options?.inheritableHandlers ?? this.inheritableHandlers;\n    this.tags = options?.tags ?? this.tags;\n    this.inheritableTags = options?.inheritableTags ?? this.inheritableTags;\n    this.metadata = options?.metadata ?? this.metadata;\n    this.inheritableMetadata =\n      options?.inheritableMetadata ?? this.inheritableMetadata;\n    this._parentRunId = parentRunId;\n  }\n\n  /**\n   * Gets the parent run ID, if any.\n   *\n   * @returns The parent run ID.\n   */\n  getParentRunId() {\n    return this._parentRunId;\n  }\n\n  async handleLLMStart(\n    llm: Serialized,\n    prompts: string[],\n    runId: string | undefined = undefined,\n    _parentRunId: string | undefined = undefined,\n    extraParams: Record<string, unknown> | undefined = undefined,\n    _tags: string[] | undefined = undefined,\n    _metadata: Record<string, unknown> | undefined = undefined,\n    runName: string | undefined = undefined\n  ): Promise<CallbackManagerForLLMRun[]> {\n    return Promise.all(\n      prompts.map(async (prompt, idx) => {\n        // Can't have duplicate runs with the same run ID (if provided)\n        const runId_ = idx === 0 && runId ? runId : uuidv7();\n\n        await Promise.all(\n          this.handlers.map((handler) => {\n            if (handler.ignoreLLM) {\n              return;\n            }\n            if (isBaseTracer(handler)) {\n              // Create and add run to the run map.\n              // We do this synchronously to avoid race conditions\n              // when callbacks are backgrounded.\n              handler._createRunForLLMStart(\n                llm,\n                [prompt],\n                runId_,\n                this._parentRunId,\n                extraParams,\n                this.tags,\n                this.metadata,\n                runName\n              );\n            }\n            return consumeCallback(async () => {\n              try {\n                await handler.handleLLMStart?.(\n                  llm,\n                  [prompt],\n                  runId_,\n                  this._parentRunId,\n                  extraParams,\n                  this.tags,\n                  this.metadata,\n                  runName\n                );\n              } catch (err) {\n                const logFunction = handler.raiseError\n                  ? console.error\n                  : console.warn;\n                logFunction(\n                  `Error in handler ${handler.constructor.name}, handleLLMStart: ${err}`\n                );\n                if (handler.raiseError) {\n                  throw err;\n                }\n              }\n            }, handler.awaitHandlers);\n          })\n        );\n\n        return new CallbackManagerForLLMRun(\n          runId_,\n          this.handlers,\n          this.inheritableHandlers,\n          this.tags,\n          this.inheritableTags,\n          this.metadata,\n          this.inheritableMetadata,\n          this._parentRunId\n        );\n      })\n    );\n  }\n\n  async handleChatModelStart(\n    llm: Serialized,\n    messages: BaseMessage[][],\n    runId: string | undefined = undefined,\n    _parentRunId: string | undefined = undefined,\n    extraParams: Record<string, unknown> | undefined = undefined,\n    _tags: string[] | undefined = undefined,\n    _metadata: Record<string, unknown> | undefined = undefined,\n    runName: string | undefined = undefined\n  ): Promise<CallbackManagerForLLMRun[]> {\n    return Promise.all(\n      messages.map(async (messageGroup, idx) => {\n        // Can't have duplicate runs with the same run ID (if provided)\n        const runId_ = idx === 0 && runId ? runId : uuidv7();\n\n        await Promise.all(\n          this.handlers.map((handler) => {\n            if (handler.ignoreLLM) {\n              return;\n            }\n            if (isBaseTracer(handler)) {\n              // Create and add run to the run map.\n              // We do this synchronously to avoid race conditions\n              // when callbacks are backgrounded.\n              handler._createRunForChatModelStart(\n                llm,\n                [messageGroup],\n                runId_,\n                this._parentRunId,\n                extraParams,\n                this.tags,\n                this.metadata,\n                runName\n              );\n            }\n            return consumeCallback(async () => {\n              try {\n                if (handler.handleChatModelStart) {\n                  await handler.handleChatModelStart?.(\n                    llm,\n                    [messageGroup],\n                    runId_,\n                    this._parentRunId,\n                    extraParams,\n                    this.tags,\n                    this.metadata,\n                    runName\n                  );\n                } else if (handler.handleLLMStart) {\n                  const messageString = getBufferString(messageGroup);\n                  await handler.handleLLMStart?.(\n                    llm,\n                    [messageString],\n                    runId_,\n                    this._parentRunId,\n                    extraParams,\n                    this.tags,\n                    this.metadata,\n                    runName\n                  );\n                }\n              } catch (err) {\n                const logFunction = handler.raiseError\n                  ? console.error\n                  : console.warn;\n                logFunction(\n                  `Error in handler ${handler.constructor.name}, handleLLMStart: ${err}`\n                );\n                if (handler.raiseError) {\n                  throw err;\n                }\n              }\n            }, handler.awaitHandlers);\n          })\n        );\n\n        return new CallbackManagerForLLMRun(\n          runId_,\n          this.handlers,\n          this.inheritableHandlers,\n          this.tags,\n          this.inheritableTags,\n          this.metadata,\n          this.inheritableMetadata,\n          this._parentRunId\n        );\n      })\n    );\n  }\n\n  async handleChainStart(\n    chain: Serialized,\n    inputs: ChainValues,\n    runId = uuidv7(),\n    runType: string | undefined = undefined,\n    _tags: string[] | undefined = undefined,\n    _metadata: Record<string, unknown> | undefined = undefined,\n    runName: string | undefined = undefined,\n    _parentRunId: string | undefined = undefined,\n    extra: Record<string, unknown> | undefined = undefined\n  ): Promise<CallbackManagerForChainRun> {\n    await Promise.all(\n      this.handlers.map((handler) => {\n        if (handler.ignoreChain) {\n          return;\n        }\n        if (isBaseTracer(handler)) {\n          // Create and add run to the run map.\n          // We do this synchronously to avoid race conditions\n          // when callbacks are backgrounded.\n          handler._createRunForChainStart(\n            chain,\n            inputs,\n            runId,\n            this._parentRunId,\n            this.tags,\n            this.metadata,\n            runType,\n            runName,\n            extra\n          );\n        }\n        return consumeCallback(async () => {\n          try {\n            await handler.handleChainStart?.(\n              chain,\n              inputs,\n              runId,\n              this._parentRunId,\n              this.tags,\n              this.metadata,\n              runType,\n              runName,\n              extra\n            );\n          } catch (err) {\n            const logFunction = handler.raiseError\n              ? console.error\n              : console.warn;\n            logFunction(\n              `Error in handler ${handler.constructor.name}, handleChainStart: ${err}`\n            );\n            if (handler.raiseError) {\n              throw err;\n            }\n          }\n        }, handler.awaitHandlers);\n      })\n    );\n    return new CallbackManagerForChainRun(\n      runId,\n      this.handlers,\n      this.inheritableHandlers,\n      this.tags,\n      this.inheritableTags,\n      this.metadata,\n      this.inheritableMetadata,\n      this._parentRunId\n    );\n  }\n\n  async handleToolStart(\n    tool: Serialized,\n    input: string,\n    runId = uuidv7(),\n    _parentRunId: string | undefined = undefined,\n    _tags: string[] | undefined = undefined,\n    _metadata: Record<string, unknown> | undefined = undefined,\n    runName: string | undefined = undefined,\n    toolCallId: string | undefined = undefined\n  ): Promise<CallbackManagerForToolRun> {\n    await Promise.all(\n      this.handlers.map((handler) => {\n        if (handler.ignoreAgent) {\n          return;\n        }\n        if (isBaseTracer(handler)) {\n          // Create and add run to the run map.\n          // We do this synchronously to avoid race conditions\n          // when callbacks are backgrounded.\n          handler._createRunForToolStart(\n            tool,\n            input,\n            runId,\n            this._parentRunId,\n            this.tags,\n            this.metadata,\n            runName\n          );\n        }\n        return consumeCallback(async () => {\n          try {\n            await handler.handleToolStart?.(\n              tool,\n              input,\n              runId,\n              this._parentRunId,\n              this.tags,\n              this.metadata,\n              runName,\n              toolCallId\n            );\n          } catch (err) {\n            const logFunction = handler.raiseError\n              ? console.error\n              : console.warn;\n            logFunction(\n              `Error in handler ${handler.constructor.name}, handleToolStart: ${err}`\n            );\n            if (handler.raiseError) {\n              throw err;\n            }\n          }\n        }, handler.awaitHandlers);\n      })\n    );\n    return new CallbackManagerForToolRun(\n      runId,\n      this.handlers,\n      this.inheritableHandlers,\n      this.tags,\n      this.inheritableTags,\n      this.metadata,\n      this.inheritableMetadata,\n      this._parentRunId\n    );\n  }\n\n  async handleRetrieverStart(\n    retriever: Serialized,\n    query: string,\n    runId: string = uuidv7(),\n    _parentRunId: string | undefined = undefined,\n    _tags: string[] | undefined = undefined,\n    _metadata: Record<string, unknown> | undefined = undefined,\n    runName: string | undefined = undefined\n  ): Promise<CallbackManagerForRetrieverRun> {\n    await Promise.all(\n      this.handlers.map((handler) => {\n        if (handler.ignoreRetriever) {\n          return;\n        }\n        if (isBaseTracer(handler)) {\n          // Create and add run to the run map.\n          // We do this synchronously to avoid race conditions\n          // when callbacks are backgrounded.\n          handler._createRunForRetrieverStart(\n            retriever,\n            query,\n            runId,\n            this._parentRunId,\n            this.tags,\n            this.metadata,\n            runName\n          );\n        }\n        return consumeCallback(async () => {\n          try {\n            await handler.handleRetrieverStart?.(\n              retriever,\n              query,\n              runId,\n              this._parentRunId,\n              this.tags,\n              this.metadata,\n              runName\n            );\n          } catch (err) {\n            const logFunction = handler.raiseError\n              ? console.error\n              : console.warn;\n            logFunction(\n              `Error in handler ${handler.constructor.name}, handleRetrieverStart: ${err}`\n            );\n            if (handler.raiseError) {\n              throw err;\n            }\n          }\n        }, handler.awaitHandlers);\n      })\n    );\n    return new CallbackManagerForRetrieverRun(\n      runId,\n      this.handlers,\n      this.inheritableHandlers,\n      this.tags,\n      this.inheritableTags,\n      this.metadata,\n      this.inheritableMetadata,\n      this._parentRunId\n    );\n  }\n\n  async handleCustomEvent?(\n    eventName: string,\n    // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n    data: any,\n    runId: string,\n    _tags?: string[],\n    // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n    _metadata?: Record<string, any>\n  ): // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n  Promise<any> {\n    await Promise.all(\n      this.handlers.map((handler) =>\n        consumeCallback(async () => {\n          if (!handler.ignoreCustomEvent) {\n            try {\n              await handler.handleCustomEvent?.(\n                eventName,\n                data,\n                runId,\n                this.tags,\n                this.metadata\n              );\n            } catch (err) {\n              const logFunction = handler.raiseError\n                ? console.error\n                : console.warn;\n              logFunction(\n                `Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`\n              );\n              if (handler.raiseError) {\n                throw err;\n              }\n            }\n          }\n        }, handler.awaitHandlers)\n      )\n    );\n  }\n\n  addHandler(handler: BaseCallbackHandler, inherit = true): void {\n    this.handlers.push(handler);\n    if (inherit) {\n      this.inheritableHandlers.push(handler);\n    }\n  }\n\n  removeHandler(handler: BaseCallbackHandler): void {\n    this.handlers = this.handlers.filter((_handler) => _handler !== handler);\n    this.inheritableHandlers = this.inheritableHandlers.filter(\n      (_handler) => _handler !== handler\n    );\n  }\n\n  setHandlers(handlers: BaseCallbackHandler[], inherit = true): void {\n    this.handlers = [];\n    this.inheritableHandlers = [];\n    for (const handler of handlers) {\n      this.addHandler(handler, inherit);\n    }\n  }\n\n  addTags(tags: string[], inherit = true): void {\n    this.removeTags(tags); // Remove duplicates\n    this.tags.push(...tags);\n    if (inherit) {\n      this.inheritableTags.push(...tags);\n    }\n  }\n\n  removeTags(tags: string[]): void {\n    this.tags = this.tags.filter((tag) => !tags.includes(tag));\n    this.inheritableTags = this.inheritableTags.filter(\n      (tag) => !tags.includes(tag)\n    );\n  }\n\n  addMetadata(metadata: Record<string, unknown>, inherit = true): void {\n    this.metadata = { ...this.metadata, ...metadata };\n    if (inherit) {\n      this.inheritableMetadata = { ...this.inheritableMetadata, ...metadata };\n    }\n  }\n\n  removeMetadata(metadata: Record<string, unknown>): void {\n    for (const key of Object.keys(metadata)) {\n      delete this.metadata[key];\n      delete this.inheritableMetadata[key];\n    }\n  }\n\n  copy(\n    additionalHandlers: BaseCallbackHandler[] = [],\n    inherit = true\n  ): CallbackManager {\n    const manager = new CallbackManager(this._parentRunId);\n    for (const handler of this.handlers) {\n      const inheritable = this.inheritableHandlers.includes(handler);\n      manager.addHandler(handler, inheritable);\n    }\n    for (const tag of this.tags) {\n      const inheritable = this.inheritableTags.includes(tag);\n      manager.addTags([tag], inheritable);\n    }\n    for (const key of Object.keys(this.metadata)) {\n      const inheritable = Object.keys(this.inheritableMetadata).includes(key);\n      manager.addMetadata({ [key]: this.metadata[key] }, inheritable);\n    }\n    for (const handler of additionalHandlers) {\n      if (\n        // Prevent multiple copies of console_callback_handler\n        manager.handlers\n          .filter((h) => h.name === \"console_callback_handler\")\n          .some((h) => h.name === handler.name)\n      ) {\n        continue;\n      }\n      manager.addHandler(handler, inherit);\n    }\n    return manager;\n  }\n\n  static fromHandlers(handlers: CallbackHandlerMethods) {\n    class Handler extends BaseCallbackHandler {\n      name = uuidv7();\n\n      constructor() {\n        super();\n        Object.assign(this, handlers);\n      }\n    }\n\n    const manager = new this();\n    manager.addHandler(new Handler());\n    return manager;\n  }\n\n  static configure(\n    inheritableHandlers?: Callbacks,\n    localHandlers?: Callbacks,\n    inheritableTags?: string[],\n    localTags?: string[],\n    inheritableMetadata?: Record<string, unknown>,\n    localMetadata?: Record<string, unknown>,\n    options?: CallbackManagerOptions\n  ): CallbackManager | undefined {\n    return this._configureSync(\n      inheritableHandlers,\n      localHandlers,\n      inheritableTags,\n      localTags,\n      inheritableMetadata,\n      localMetadata,\n      options\n    );\n  }\n\n  // TODO: Deprecate async method in favor of this one.\n  static _configureSync(\n    inheritableHandlers?: Callbacks,\n    localHandlers?: Callbacks,\n    inheritableTags?: string[],\n    localTags?: string[],\n    inheritableMetadata?: Record<string, unknown>,\n    localMetadata?: Record<string, unknown>,\n    options?: CallbackManagerOptions\n  ) {\n    let callbackManager: CallbackManager | undefined;\n    if (inheritableHandlers || localHandlers) {\n      if (Array.isArray(inheritableHandlers) || !inheritableHandlers) {\n        callbackManager = new CallbackManager();\n        callbackManager.setHandlers(\n          inheritableHandlers?.map(ensureHandler) ?? [],\n          true\n        );\n      } else {\n        callbackManager = inheritableHandlers;\n      }\n\n      callbackManager = callbackManager.copy(\n        Array.isArray(localHandlers)\n          ? localHandlers.map(ensureHandler)\n          : localHandlers?.handlers,\n        false\n      );\n    }\n\n    const verboseEnabled =\n      getEnvironmentVariable(\"LANGCHAIN_VERBOSE\") === \"true\" ||\n      options?.verbose;\n\n    const traceableRunTree = LangChainTracer.getTraceableRunTree();\n    const tracingV2Enabled =\n      traceableRunTree?.tracingEnabled ?? isTracingEnabled();\n\n    // If tracing is explicitly disabled by the RunTree (e.g. via\n    // traceable({ tracingEnabled: false })), remove any inherited\n    // LangChainTracer handlers so that child runs don't trace either.\n    if (traceableRunTree?.tracingEnabled === false && callbackManager) {\n      const inheritedTracers = callbackManager.handlers.filter(\n        (handler) => handler.name === \"langchain_tracer\"\n      );\n      for (const tracer of inheritedTracers) {\n        callbackManager.removeHandler(tracer);\n      }\n    }\n\n    const tracingEnabled =\n      tracingV2Enabled ||\n      (getEnvironmentVariable(\"LANGCHAIN_TRACING\") ?? false);\n    if (verboseEnabled || tracingEnabled) {\n      if (!callbackManager) {\n        callbackManager = new CallbackManager();\n      }\n      if (\n        verboseEnabled &&\n        !callbackManager.handlers.some(\n          (handler) => handler.name === ConsoleCallbackHandler.prototype.name\n        )\n      ) {\n        const consoleHandler = new ConsoleCallbackHandler();\n        callbackManager.addHandler(consoleHandler, true);\n      }\n      if (\n        tracingEnabled &&\n        !callbackManager.handlers.some(\n          (handler) => handler.name === \"langchain_tracer\"\n        )\n      ) {\n        if (tracingV2Enabled) {\n          const tracerV2 = new LangChainTracer();\n          callbackManager.addHandler(tracerV2, true);\n        }\n      }\n      if (tracingV2Enabled) {\n        // handoff between langchain and langsmith/traceable\n        // override the parent run ID\n        if (traceableRunTree && callbackManager._parentRunId === undefined) {\n          callbackManager._parentRunId = traceableRunTree.id;\n          const tracerV2 = callbackManager.handlers.find(\n            (handler) => handler.name === \"langchain_tracer\"\n          ) as LangChainTracer | undefined;\n          tracerV2?.updateFromRunTree(traceableRunTree);\n        }\n      }\n    }\n\n    for (const {\n      contextVar,\n      inheritable = true,\n      handlerClass,\n      envVar,\n    } of _getConfigureHooks()) {\n      const createIfNotInContext =\n        envVar && getEnvironmentVariable(envVar) === \"true\" && handlerClass;\n      let handler: BaseCallbackHandler | undefined;\n      const contextVarValue =\n        contextVar !== undefined ? getContextVariable(contextVar) : undefined;\n      if (contextVarValue && isBaseCallbackHandler(contextVarValue)) {\n        handler = contextVarValue;\n      } else if (createIfNotInContext) {\n        // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n        handler = new (handlerClass as any)({});\n      }\n      if (handler !== undefined) {\n        if (!callbackManager) {\n          callbackManager = new CallbackManager();\n        }\n\n        if (!callbackManager.handlers.some((h) => h.name === handler!.name)) {\n          callbackManager.addHandler(handler, inheritable);\n        }\n      }\n    }\n\n    if (inheritableTags || localTags) {\n      if (callbackManager) {\n        callbackManager.addTags(inheritableTags ?? []);\n        callbackManager.addTags(localTags ?? [], false);\n      }\n    }\n    if (inheritableMetadata || localMetadata) {\n      if (callbackManager) {\n        callbackManager.addMetadata(inheritableMetadata ?? {});\n        callbackManager.addMetadata(localMetadata ?? {}, false);\n      }\n    }\n    const tracerInheritableMetadata = options?.tracerInheritableMetadata;\n    const tracerInheritableTags = options?.tracerInheritableTags;\n\n    if (\n      callbackManager &&\n      (tracerInheritableMetadata || tracerInheritableTags)\n    ) {\n      const replacements = new Map<BaseCallbackHandler, BaseCallbackHandler>();\n      const applyTracingConfig = (\n        handler: BaseCallbackHandler\n      ): BaseCallbackHandler => {\n        if (!(handler instanceof LangChainTracer)) {\n          return handler;\n        }\n        const existing = replacements.get(handler);\n        if (existing !== undefined) {\n          return existing;\n        }\n        const replacement = handler.copyWithTracingConfig({\n          metadata: tracerInheritableMetadata,\n          tags: tracerInheritableTags,\n        });\n        replacements.set(handler, replacement);\n        return replacement;\n      };\n\n      callbackManager.handlers =\n        callbackManager.handlers.map(applyTracingConfig);\n      callbackManager.inheritableHandlers =\n        callbackManager.inheritableHandlers.map(applyTracingConfig);\n    }\n\n    if (callbackManager) {\n      const coalesced = coalesceTracers(\n        callbackManager.handlers,\n        callbackManager.inheritableHandlers\n      );\n      callbackManager.handlers = coalesced.handlers;\n      callbackManager.inheritableHandlers = coalesced.inheritableHandlers;\n    }\n\n    return callbackManager;\n  }\n}\n\nexport function ensureHandler(\n  handler: BaseCallbackHandler | CallbackHandlerMethods\n): BaseCallbackHandler {\n  if (\"name\" in handler) {\n    return handler;\n  }\n\n  return BaseCallbackHandler.fromMethods(handler);\n}\n"],"mappings":"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"}