{"version":3,"file":"index.cjs","sources":["../../src/utils.ts","../../../node_modules/decamelize/index.js","../../../node_modules/camelcase/index.js","../../../node_modules/@langchain/core/dist/load/map_keys.js","../../../node_modules/@langchain/core/dist/load/serializable.js","../../../node_modules/@langchain/core/dist/utils/env.js","../../../node_modules/@langchain/core/dist/callbacks/base.js","../../src/langchain/callbacks.ts"],"sourcesContent":["import { PostHog } from 'posthog-node'\nimport { Buffer } from 'buffer'\nimport OpenAIOrignal from 'openai'\nimport AnthropicOriginal from '@anthropic-ai/sdk'\n\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype MessageCreateParams = AnthropicOriginal.Messages.MessageCreateParams\ntype ResponseCreateParams = OpenAIOrignal.Responses.ResponseCreateParams\n\n// limit large outputs by truncating to 200kb (approx 200k bytes)\nexport const MAX_OUTPUT_SIZE = 200000\nconst STRING_FORMAT = 'utf8'\n\nexport interface MonitoringParams {\n  posthogDistinctId?: string\n  posthogTraceId?: string\n  posthogProperties?: Record<string, any>\n  posthogPrivacyMode?: boolean\n  posthogGroups?: Record<string, any>\n  posthogModelOverride?: string\n  posthogProviderOverride?: string\n  posthogCostOverride?: CostOverride\n  posthogCaptureImmediate?: boolean\n}\n\nexport interface CostOverride {\n  inputCost: number\n  outputCost: number\n}\n\nexport const getModelParams = (\n  params: ((ChatCompletionCreateParamsBase | MessageCreateParams | ResponseCreateParams) & MonitoringParams) | null\n): Record<string, any> => {\n  if (!params) {\n    return {}\n  }\n  const modelParams: Record<string, any> = {}\n  const paramKeys = [\n    'temperature',\n    'max_tokens',\n    'max_completion_tokens',\n    'top_p',\n    'frequency_penalty',\n    'presence_penalty',\n    'n',\n    'stop',\n    'stream',\n    'streaming',\n  ] as const\n\n  for (const key of paramKeys) {\n    if (key in params && (params as any)[key] !== undefined) {\n      modelParams[key] = (params as any)[key]\n    }\n  }\n  return modelParams\n}\n\n/**\n * Helper to format responses (non-streaming) for consumption, mirroring Python's openai vs. anthropic approach.\n */\nexport const formatResponse = (response: any, provider: string): Array<{ role: string; content: string }> => {\n  if (!response) {\n    return []\n  }\n  if (provider === 'anthropic') {\n    return formatResponseAnthropic(response)\n  } else if (provider === 'openai') {\n    return formatResponseOpenAI(response)\n  } else if (provider === 'gemini') {\n    return formatResponseGemini(response)\n  }\n  return []\n}\n\nexport const formatResponseAnthropic = (response: any): Array<{ role: string; content: string }> => {\n  // Example approach if \"response.content\" holds array of text segments, etc.\n  const output: Array<{ role: string; content: string }> = []\n  for (const choice of response.content ?? []) {\n    if (choice?.text) {\n      output.push({\n        role: 'assistant',\n        content: choice.text,\n      })\n    }\n  }\n  return output\n}\n\nexport const formatResponseOpenAI = (response: any): Array<{ role: string; content: string }> => {\n  const output: Array<{ role: string; content: string }> = []\n  for (const choice of response.choices ?? []) {\n    if (choice.message?.content) {\n      output.push({\n        role: choice.message.role,\n        content: choice.message.content,\n      })\n    }\n  }\n  return output\n}\n\nexport const formatResponseGemini = (response: any): Array<{ role: string; content: string }> => {\n  const output: Array<{ role: string; content: string }> = []\n\n  if (response.text) {\n    output.push({\n      role: 'assistant',\n      content: response.text,\n    })\n    return output\n  }\n\n  if (response.candidates && Array.isArray(response.candidates)) {\n    for (const candidate of response.candidates) {\n      if (candidate.content && candidate.content.parts) {\n        const text = candidate.content.parts\n          .filter((part: any) => part.text)\n          .map((part: any) => part.text)\n          .join('')\n        if (text) {\n          output.push({\n            role: 'assistant',\n            content: text,\n          })\n        }\n      }\n    }\n  }\n\n  return output\n}\n\nexport const mergeSystemPrompt = (params: MessageCreateParams & MonitoringParams, provider: string): any => {\n  if (provider == 'anthropic') {\n    const messages = params.messages || []\n    if (!(params as any).system) {\n      return messages\n    }\n    const systemMessage = (params as any).system\n    return [{ role: 'system', content: systemMessage }, ...messages]\n  }\n  return params.messages\n}\n\nexport const withPrivacyMode = (client: PostHog, privacyMode: boolean, input: any): any => {\n  return (client as any).privacy_mode || privacyMode ? null : input\n}\n\nexport const truncate = (str: string): string => {\n  try {\n    const buffer = Buffer.from(str, STRING_FORMAT)\n    if (buffer.length <= MAX_OUTPUT_SIZE) {\n      return str\n    }\n    const truncatedBuffer = buffer.slice(0, MAX_OUTPUT_SIZE)\n    return `${truncatedBuffer.toString(STRING_FORMAT)}... [truncated]`\n  } catch (error) {\n    console.error('Error truncating, likely not a string')\n    return str\n  }\n}\n\nexport type SendEventToPosthogParams = {\n  client: PostHog\n  distinctId?: string\n  traceId: string\n  model: string\n  provider: string\n  input: any\n  output: any\n  latency: number\n  baseURL: string\n  httpStatus: number\n  usage?: {\n    inputTokens?: number\n    outputTokens?: number\n    reasoningTokens?: any\n    cacheReadInputTokens?: any\n    cacheCreationInputTokens?: any\n  }\n  params: (ChatCompletionCreateParamsBase | MessageCreateParams | ResponseCreateParams) & MonitoringParams\n  isError?: boolean\n  error?: string\n  tools?: any\n  captureImmediate?: boolean\n}\n\nfunction sanitizeValues(obj: any): any {\n  if (obj === undefined || obj === null) {\n    return obj\n  }\n  const jsonSafe = JSON.parse(JSON.stringify(obj))\n  if (typeof jsonSafe === 'string') {\n    return Buffer.from(jsonSafe, STRING_FORMAT).toString(STRING_FORMAT)\n  } else if (Array.isArray(jsonSafe)) {\n    return jsonSafe.map(sanitizeValues)\n  } else if (jsonSafe && typeof jsonSafe === 'object') {\n    return Object.fromEntries(Object.entries(jsonSafe).map(([k, v]) => [k, sanitizeValues(v)]))\n  }\n  return jsonSafe\n}\n\nexport const sendEventToPosthog = async ({\n  client,\n  distinctId,\n  traceId,\n  model,\n  provider,\n  input,\n  output,\n  latency,\n  baseURL,\n  params,\n  httpStatus = 200,\n  usage = {},\n  isError = false,\n  error,\n  tools,\n  captureImmediate = false,\n}: SendEventToPosthogParams): Promise<void> => {\n  if (!client.capture) {\n    return Promise.resolve()\n  }\n  // sanitize input and output for UTF-8 validity\n  const safeInput = sanitizeValues(input)\n  const safeOutput = sanitizeValues(output)\n  const safeError = sanitizeValues(error)\n\n  let errorData = {}\n  if (isError) {\n    errorData = {\n      $ai_is_error: true,\n      $ai_error: safeError,\n    }\n  }\n  let costOverrideData = {}\n  if (params.posthogCostOverride) {\n    const inputCostUSD = (params.posthogCostOverride.inputCost ?? 0) * (usage.inputTokens ?? 0)\n    const outputCostUSD = (params.posthogCostOverride.outputCost ?? 0) * (usage.outputTokens ?? 0)\n    costOverrideData = {\n      $ai_input_cost_usd: inputCostUSD,\n      $ai_output_cost_usd: outputCostUSD,\n      $ai_total_cost_usd: inputCostUSD + outputCostUSD,\n    }\n  }\n\n  const additionalTokenValues = {\n    ...(usage.reasoningTokens ? { $ai_reasoning_tokens: usage.reasoningTokens } : {}),\n    ...(usage.cacheReadInputTokens ? { $ai_cache_read_input_tokens: usage.cacheReadInputTokens } : {}),\n    ...(usage.cacheCreationInputTokens ? { $ai_cache_creation_input_tokens: usage.cacheCreationInputTokens } : {}),\n  }\n\n  const properties = {\n    $ai_provider: params.posthogProviderOverride ?? provider,\n    $ai_model: params.posthogModelOverride ?? model,\n    $ai_model_parameters: getModelParams(params),\n    $ai_input: withPrivacyMode(client, params.posthogPrivacyMode ?? false, safeInput),\n    $ai_output_choices: withPrivacyMode(client, params.posthogPrivacyMode ?? false, safeOutput),\n    $ai_http_status: httpStatus,\n    $ai_input_tokens: usage.inputTokens ?? 0,\n    $ai_output_tokens: usage.outputTokens ?? 0,\n    ...additionalTokenValues,\n    $ai_latency: latency,\n    $ai_trace_id: traceId,\n    $ai_base_url: baseURL,\n    ...params.posthogProperties,\n    ...(distinctId ? {} : { $process_person_profile: false }),\n    ...(tools ? { $ai_tools: tools } : {}),\n    ...errorData,\n    ...costOverrideData,\n  }\n\n  const event = {\n    distinctId: distinctId ?? traceId,\n    event: '$ai_generation',\n    properties,\n    groups: params.posthogGroups,\n  }\n\n  if (captureImmediate) {\n    // await capture promise to send single event in serverless environments\n    await client.captureImmediate(event)\n  } else {\n    client.capture(event)\n  }\n}\n","'use strict';\nmodule.exports = function (str, sep) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\tsep = typeof sep === 'undefined' ? '_' : sep;\n\n\treturn str\n\t\t.replace(/([a-z\\d])([A-Z])/g, '$1' + sep + '$2')\n\t\t.replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, '$1' + sep + '$2')\n\t\t.toLowerCase();\n};\n","'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import snakeCase from \"decamelize\";\nimport camelCase from \"camelcase\";\nexport function keyToJson(key, map) {\n    return map?.[key] || snakeCase(key);\n}\nexport function keyFromJson(key, map) {\n    return map?.[key] || camelCase(key);\n}\nexport function mapKeys(fields, mapper, map) {\n    const mapped = {};\n    for (const key in fields) {\n        if (Object.hasOwn(fields, key)) {\n            mapped[mapper(key, map)] = fields[key];\n        }\n    }\n    return mapped;\n}\n","import { keyToJson, mapKeys } from \"./map_keys.js\";\nfunction shallowCopy(obj) {\n    return Array.isArray(obj) ? [...obj] : { ...obj };\n}\nfunction replaceSecrets(root, secretsMap) {\n    const result = shallowCopy(root);\n    for (const [path, secretId] of Object.entries(secretsMap)) {\n        const [last, ...partsReverse] = path.split(\".\").reverse();\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        let current = result;\n        for (const part of partsReverse.reverse()) {\n            if (current[part] === undefined) {\n                break;\n            }\n            current[part] = shallowCopy(current[part]);\n            current = current[part];\n        }\n        if (current[last] !== undefined) {\n            current[last] = {\n                lc: 1,\n                type: \"secret\",\n                id: [secretId],\n            };\n        }\n    }\n    return result;\n}\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport function get_lc_unique_name(\n// eslint-disable-next-line @typescript-eslint/no-use-before-define\nserializableClass) {\n    // \"super\" here would refer to the parent class of Serializable,\n    // when we want the parent class of the module actually calling this method.\n    const parentClass = Object.getPrototypeOf(serializableClass);\n    const lcNameIsSubclassed = typeof serializableClass.lc_name === \"function\" &&\n        (typeof parentClass.lc_name !== \"function\" ||\n            serializableClass.lc_name() !== parentClass.lc_name());\n    if (lcNameIsSubclassed) {\n        return serializableClass.lc_name();\n    }\n    else {\n        return serializableClass.name;\n    }\n}\nexport class Serializable {\n    /**\n     * The name of the serializable. Override to provide an alias or\n     * to preserve the serialized module name in minified environments.\n     *\n     * Implemented as a static method to support loading logic.\n     */\n    static lc_name() {\n        return this.name;\n    }\n    /**\n     * The final serialized identifier for the module.\n     */\n    get lc_id() {\n        return [\n            ...this.lc_namespace,\n            get_lc_unique_name(this.constructor),\n        ];\n    }\n    /**\n     * A map of secrets, which will be omitted from serialization.\n     * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n     * Values are the secret ids, which will be used when deserializing.\n     */\n    get lc_secrets() {\n        return undefined;\n    }\n    /**\n     * A map of additional attributes to merge with constructor args.\n     * Keys are the attribute names, e.g. \"foo\".\n     * Values are the attribute values, which will be serialized.\n     * These attributes need to be accepted by the constructor as arguments.\n     */\n    get lc_attributes() {\n        return undefined;\n    }\n    /**\n     * A map of aliases for constructor args.\n     * Keys are the attribute names, e.g. \"foo\".\n     * Values are the alias that will replace the key in serialization.\n     * This is used to eg. make argument names match Python.\n     */\n    get lc_aliases() {\n        return undefined;\n    }\n    constructor(kwargs, ..._args) {\n        Object.defineProperty(this, \"lc_serializable\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"lc_kwargs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.lc_kwargs = kwargs || {};\n    }\n    toJSON() {\n        if (!this.lc_serializable) {\n            return this.toJSONNotImplemented();\n        }\n        if (\n        // eslint-disable-next-line no-instanceof/no-instanceof\n        this.lc_kwargs instanceof Serializable ||\n            typeof this.lc_kwargs !== \"object\" ||\n            Array.isArray(this.lc_kwargs)) {\n            // We do not support serialization of classes with arg not a POJO\n            // I'm aware the check above isn't as strict as it could be\n            return this.toJSONNotImplemented();\n        }\n        const aliases = {};\n        const secrets = {};\n        const kwargs = Object.keys(this.lc_kwargs).reduce((acc, key) => {\n            acc[key] = key in this ? this[key] : this.lc_kwargs[key];\n            return acc;\n        }, {});\n        // get secrets, attributes and aliases from all superclasses\n        for (\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        let current = Object.getPrototypeOf(this); current; current = Object.getPrototypeOf(current)) {\n            Object.assign(aliases, Reflect.get(current, \"lc_aliases\", this));\n            Object.assign(secrets, Reflect.get(current, \"lc_secrets\", this));\n            Object.assign(kwargs, Reflect.get(current, \"lc_attributes\", this));\n        }\n        // include all secrets used, even if not in kwargs,\n        // will be replaced with sentinel value in replaceSecrets\n        Object.keys(secrets).forEach((keyPath) => {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias, @typescript-eslint/no-explicit-any\n            let read = this;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            let write = kwargs;\n            const [last, ...partsReverse] = keyPath.split(\".\").reverse();\n            for (const key of partsReverse.reverse()) {\n                if (!(key in read) || read[key] === undefined)\n                    return;\n                if (!(key in write) || write[key] === undefined) {\n                    if (typeof read[key] === \"object\" && read[key] != null) {\n                        write[key] = {};\n                    }\n                    else if (Array.isArray(read[key])) {\n                        write[key] = [];\n                    }\n                }\n                read = read[key];\n                write = write[key];\n            }\n            if (last in read && read[last] !== undefined) {\n                write[last] = write[last] || read[last];\n            }\n        });\n        return {\n            lc: 1,\n            type: \"constructor\",\n            id: this.lc_id,\n            kwargs: mapKeys(Object.keys(secrets).length ? replaceSecrets(kwargs, secrets) : kwargs, keyToJson, aliases),\n        };\n    }\n    toJSONNotImplemented() {\n        return {\n            lc: 1,\n            type: \"not_implemented\",\n            id: this.lc_id,\n        };\n    }\n}\n","export const isBrowser = () => typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\nexport const isWebWorker = () => typeof globalThis === \"object\" &&\n    globalThis.constructor &&\n    globalThis.constructor.name === \"DedicatedWorkerGlobalScope\";\nexport const isJsDom = () => (typeof window !== \"undefined\" && window.name === \"nodejs\") ||\n    (typeof navigator !== \"undefined\" &&\n        (navigator.userAgent.includes(\"Node.js\") ||\n            navigator.userAgent.includes(\"jsdom\")));\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport const isDeno = () => typeof Deno !== \"undefined\";\n// Mark not-as-node if in Supabase Edge Function\nexport const isNode = () => typeof process !== \"undefined\" &&\n    typeof process.versions !== \"undefined\" &&\n    typeof process.versions.node !== \"undefined\" &&\n    !isDeno();\nexport const getEnv = () => {\n    let env;\n    if (isBrowser()) {\n        env = \"browser\";\n    }\n    else if (isNode()) {\n        env = \"node\";\n    }\n    else if (isWebWorker()) {\n        env = \"webworker\";\n    }\n    else if (isJsDom()) {\n        env = \"jsdom\";\n    }\n    else if (isDeno()) {\n        env = \"deno\";\n    }\n    else {\n        env = \"other\";\n    }\n    return env;\n};\nlet runtimeEnvironment;\nexport async function getRuntimeEnvironment() {\n    if (runtimeEnvironment === undefined) {\n        const env = getEnv();\n        runtimeEnvironment = {\n            library: \"langchain-js\",\n            runtime: env,\n        };\n    }\n    return runtimeEnvironment;\n}\nexport function getEnvironmentVariable(name) {\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        }\n        else if (isDeno()) {\n            return Deno?.env.get(name);\n        }\n        else {\n            return undefined;\n        }\n    }\n    catch (e) {\n        return undefined;\n    }\n}\n","import * as uuid from \"uuid\";\nimport { Serializable, get_lc_unique_name, } from \"../load/serializable.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\n/**\n * Abstract class that provides a set of optional methods that can be\n * overridden in derived classes to handle various events during the\n * execution of a LangChain application.\n */\nclass BaseCallbackHandlerMethodsClass {\n}\nexport function callbackHandlerPrefersStreaming(x) {\n    return \"lc_prefer_streaming\" in x && x.lc_prefer_streaming;\n}\n/**\n * Abstract base class for creating callback handlers in the LangChain\n * framework. It provides a set of optional methods that can be overridden\n * in derived classes to handle various events during the execution of a\n * LangChain application.\n */\nexport class BaseCallbackHandler extends BaseCallbackHandlerMethodsClass {\n    get lc_namespace() {\n        return [\"langchain_core\", \"callbacks\", this.name];\n    }\n    get lc_secrets() {\n        return undefined;\n    }\n    get lc_attributes() {\n        return undefined;\n    }\n    get lc_aliases() {\n        return undefined;\n    }\n    /**\n     * The name of the serializable. Override to provide an alias or\n     * to preserve the serialized module name in minified environments.\n     *\n     * Implemented as a static method to support loading logic.\n     */\n    static lc_name() {\n        return this.name;\n    }\n    /**\n     * The final serialized identifier for the module.\n     */\n    get lc_id() {\n        return [\n            ...this.lc_namespace,\n            get_lc_unique_name(this.constructor),\n        ];\n    }\n    constructor(input) {\n        super();\n        Object.defineProperty(this, \"lc_serializable\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"lc_kwargs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"ignoreLLM\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"ignoreChain\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"ignoreAgent\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"ignoreRetriever\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"ignoreCustomEvent\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"raiseError\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: false\n        });\n        Object.defineProperty(this, \"awaitHandlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: getEnvironmentVariable(\"LANGCHAIN_CALLBACKS_BACKGROUND\") === \"false\"\n        });\n        this.lc_kwargs = input || {};\n        if (input) {\n            this.ignoreLLM = input.ignoreLLM ?? this.ignoreLLM;\n            this.ignoreChain = input.ignoreChain ?? this.ignoreChain;\n            this.ignoreAgent = input.ignoreAgent ?? this.ignoreAgent;\n            this.ignoreRetriever = input.ignoreRetriever ?? this.ignoreRetriever;\n            this.ignoreCustomEvent =\n                input.ignoreCustomEvent ?? this.ignoreCustomEvent;\n            this.raiseError = input.raiseError ?? this.raiseError;\n            this.awaitHandlers =\n                this.raiseError || (input._awaitHandler ?? this.awaitHandlers);\n        }\n    }\n    copy() {\n        return new this.constructor(this);\n    }\n    toJSON() {\n        return Serializable.prototype.toJSON.call(this);\n    }\n    toJSONNotImplemented() {\n        return Serializable.prototype.toJSONNotImplemented.call(this);\n    }\n    static fromMethods(methods) {\n        class Handler extends BaseCallbackHandler {\n            constructor() {\n                super();\n                Object.defineProperty(this, \"name\", {\n                    enumerable: true,\n                    configurable: true,\n                    writable: true,\n                    value: uuid.v4()\n                });\n                Object.assign(this, methods);\n            }\n        }\n        return new Handler();\n    }\n}\nexport const isBaseCallbackHandler = (x) => {\n    const callbackHandler = x;\n    return (callbackHandler !== undefined &&\n        typeof callbackHandler.copy === \"function\" &&\n        typeof callbackHandler.name === \"string\" &&\n        typeof callbackHandler.awaitHandlers === \"boolean\");\n};\n","import { PostHog } from 'posthog-node'\nimport { withPrivacyMode, getModelParams } from '../utils'\nimport { BaseCallbackHandler } from '@langchain/core/callbacks/base'\nimport type { Serialized } from '@langchain/core/load/serializable'\nimport type { ChainValues } from '@langchain/core/utils/types'\nimport type { BaseMessage } from '@langchain/core/messages'\nimport type { LLMResult } from '@langchain/core/outputs'\nimport type { AgentAction, AgentFinish } from '@langchain/core/agents'\nimport type { DocumentInterface } from '@langchain/core/documents'\n\ninterface SpanMetadata {\n  /** Name of the trace/span (e.g. chain name) */\n  name: string\n  /** Timestamp (in ms) when the run started */\n  startTime: number\n  /** Timestamp (in ms) when the run ended (if already finished) */\n  endTime?: number\n  /** The input state */\n  input?: any\n}\n\ninterface GenerationMetadata extends SpanMetadata {\n  /** Provider used (e.g. openai, anthropic) */\n  provider?: string\n  /** Model name used in the generation */\n  model?: string\n  /** The model parameters (temperature, max_tokens, etc.) */\n  modelParams?: Record<string, any>\n  /** The base URL—for example, the API base used */\n  baseUrl?: string\n  /** The tools used in the generation */\n  tools?: Record<string, any>\n}\n\n/** A run may either be a Span or a Generation */\ntype RunMetadata = SpanMetadata | GenerationMetadata\n\n/** Storage for run metadata */\ntype RunMetadataStorage = { [runId: string]: RunMetadata }\n\nexport class LangChainCallbackHandler extends BaseCallbackHandler {\n  public name = 'PosthogCallbackHandler'\n  private client: PostHog\n  private distinctId?: string | number\n  private traceId?: string | number\n  private properties: Record<string, any>\n  private privacyMode: boolean\n  private groups: Record<string, any>\n  private debug: boolean\n\n  private runs: RunMetadataStorage = {}\n  private parentTree: { [runId: string]: string } = {}\n\n  constructor(options: {\n    client: PostHog\n    distinctId?: string | number\n    traceId?: string | number\n    properties?: Record<string, any>\n    privacyMode?: boolean\n    groups?: Record<string, any>\n    debug?: boolean\n  }) {\n    if (!options.client) {\n      throw new Error('PostHog client is required')\n    }\n    super()\n    this.client = options.client\n    this.distinctId = options.distinctId\n    this.traceId = options.traceId\n    this.properties = options.properties || {}\n    this.privacyMode = options.privacyMode || false\n    this.groups = options.groups || {}\n    this.debug = options.debug || false\n  }\n\n  // ===== CALLBACK METHODS =====\n\n  public handleChainStart(\n    chain: Serialized,\n    inputs: ChainValues,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    metadata?: Record<string, unknown>,\n    runType?: string,\n    runName?: string\n  ): void {\n    this._logDebugEvent('on_chain_start', runId, parentRunId, { inputs, tags })\n    this._setParentOfRun(runId, parentRunId)\n    this._setTraceOrSpanMetadata(chain, inputs, runId, parentRunId, metadata, tags, runName)\n  }\n\n  public handleChainEnd(\n    outputs: ChainValues,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    kwargs?: { inputs?: Record<string, unknown> }\n  ): void {\n    this._logDebugEvent('on_chain_end', runId, parentRunId, { outputs, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, outputs)\n  }\n\n  public handleChainError(\n    error: Error,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    kwargs?: { inputs?: Record<string, unknown> }\n  ): void {\n    this._logDebugEvent('on_chain_error', runId, parentRunId, { error, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, error)\n  }\n\n  public handleChatModelStart(\n    serialized: Serialized,\n    messages: BaseMessage[][],\n    runId: string,\n    parentRunId?: string,\n    extraParams?: Record<string, unknown>,\n    tags?: string[],\n    metadata?: Record<string, unknown>,\n    runName?: string\n  ): void {\n    this._logDebugEvent('on_chat_model_start', runId, parentRunId, { messages, tags })\n    this._setParentOfRun(runId, parentRunId)\n    // Flatten the two-dimensional messages and convert each message to a plain object\n    const input = messages.flat().map((m) => this._convertMessageToDict(m))\n    this._setLLMMetadata(serialized, runId, input, metadata, extraParams, runName)\n  }\n\n  public handleLLMStart(\n    serialized: Serialized,\n    prompts: string[],\n    runId: string,\n    parentRunId?: string,\n    extraParams?: Record<string, unknown>,\n    tags?: string[],\n    metadata?: Record<string, unknown>,\n    runName?: string\n  ): void {\n    this._logDebugEvent('on_llm_start', runId, parentRunId, { prompts, tags })\n    this._setParentOfRun(runId, parentRunId)\n    this._setLLMMetadata(serialized, runId, prompts, metadata, extraParams, runName)\n  }\n\n  public handleLLMEnd(\n    output: LLMResult,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    extraParams?: Record<string, unknown>\n  ): void {\n    this._logDebugEvent('on_llm_end', runId, parentRunId, { output, tags })\n    this._popRunAndCaptureGeneration(runId, parentRunId, output)\n  }\n\n  public handleLLMError(\n    err: Error,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    extraParams?: Record<string, unknown>\n  ): void {\n    this._logDebugEvent('on_llm_error', runId, parentRunId, { err, tags })\n    this._popRunAndCaptureGeneration(runId, parentRunId, err)\n  }\n\n  public handleToolStart(\n    tool: Serialized,\n    input: string,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    metadata?: Record<string, unknown>,\n    runName?: string\n  ): void {\n    this._logDebugEvent('on_tool_start', runId, parentRunId, { input, tags })\n    this._setParentOfRun(runId, parentRunId)\n    this._setTraceOrSpanMetadata(tool, input, runId, parentRunId, metadata, tags, runName)\n  }\n\n  public handleToolEnd(output: any, runId: string, parentRunId?: string, tags?: string[]): void {\n    this._logDebugEvent('on_tool_end', runId, parentRunId, { output, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, output)\n  }\n\n  public handleToolError(err: Error, runId: string, parentRunId?: string, tags?: string[]): void {\n    this._logDebugEvent('on_tool_error', runId, parentRunId, { err, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, err)\n  }\n\n  public handleRetrieverStart(\n    retriever: Serialized,\n    query: string,\n    runId: string,\n    parentRunId?: string,\n    tags?: string[],\n    metadata?: Record<string, unknown>,\n    name?: string\n  ): void {\n    this._logDebugEvent('on_retriever_start', runId, parentRunId, { query, tags })\n    this._setParentOfRun(runId, parentRunId)\n    this._setTraceOrSpanMetadata(retriever, query, runId, parentRunId, metadata, tags, name)\n  }\n\n  public handleRetrieverEnd(\n    documents: DocumentInterface[],\n    runId: string,\n    parentRunId?: string,\n    tags?: string[]\n  ): void {\n    this._logDebugEvent('on_retriever_end', runId, parentRunId, { documents, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, documents)\n  }\n\n  public handleRetrieverError(err: Error, runId: string, parentRunId?: string, tags?: string[]): void {\n    this._logDebugEvent('on_retriever_error', runId, parentRunId, { err, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, err)\n  }\n\n  public handleAgentAction(action: AgentAction, runId: string, parentRunId?: string, tags?: string[]): void {\n    this._logDebugEvent('on_agent_action', runId, parentRunId, { action, tags })\n    this._setParentOfRun(runId, parentRunId)\n    this._setTraceOrSpanMetadata(null, action, runId, parentRunId)\n  }\n\n  public handleAgentEnd(action: AgentFinish, runId: string, parentRunId?: string, tags?: string[]): void {\n    this._logDebugEvent('on_agent_finish', runId, parentRunId, { action, tags })\n    this._popRunAndCaptureTraceOrSpan(runId, parentRunId, action)\n  }\n\n  // ===== PRIVATE HELPERS =====\n\n  private _setParentOfRun(runId: string, parentRunId?: string): void {\n    if (parentRunId) {\n      this.parentTree[runId] = parentRunId\n    }\n  }\n\n  private _popParentOfRun(runId: string): void {\n    delete this.parentTree[runId]\n  }\n\n  private _findRootRun(runId: string): string {\n    let id = runId\n    while (this.parentTree[id]) {\n      id = this.parentTree[id]\n    }\n    return id\n  }\n\n  private _setTraceOrSpanMetadata(\n    serialized: any,\n    input: any,\n    runId: string,\n    parentRunId?: string,\n    ...args: any[]\n  ): void {\n    // Use default names if not provided: if this is a top-level run, we mark it as a trace, otherwise as a span.\n    const defaultName = parentRunId ? 'span' : 'trace'\n    const runName = this._getLangchainRunName(serialized, ...args) || defaultName\n    this.runs[runId] = {\n      name: runName,\n      input,\n      startTime: Date.now(),\n    } as SpanMetadata\n  }\n\n  private _setLLMMetadata(\n    serialized: Serialized | null,\n    runId: string,\n    messages: any,\n    metadata?: any,\n    extraParams?: any,\n    runName?: string\n  ): void {\n    const runNameFound = this._getLangchainRunName(serialized, { extraParams, runName }) || 'generation'\n    const generation: GenerationMetadata = {\n      name: runNameFound,\n      input: messages,\n      startTime: Date.now(),\n    }\n    if (extraParams) {\n      generation.modelParams = getModelParams(extraParams.invocation_params)\n    }\n    if (metadata) {\n      if (metadata.ls_model_name) {\n        generation.model = metadata.ls_model_name\n      }\n      if (metadata.ls_provider) {\n        generation.provider = metadata.ls_provider\n      }\n    }\n    if (serialized && 'kwargs' in serialized && serialized.kwargs.openai_api_base) {\n      generation.baseUrl = serialized.kwargs.openai_api_base\n    }\n    this.runs[runId] = generation\n  }\n\n  private _popRunMetadata(runId: string): RunMetadata | undefined {\n    const endTime = Date.now()\n    const run = this.runs[runId]\n    if (!run) {\n      console.warn(`No run metadata found for run ${runId}`)\n      return undefined\n    }\n    run.endTime = endTime\n    delete this.runs[runId]\n    return run\n  }\n\n  private _getTraceId(runId: string): string {\n    return this.traceId ? String(this.traceId) : this._findRootRun(runId)\n  }\n\n  private _getParentRunId(traceId: string, runId: string, parentRunId?: string): string | undefined {\n    // Replace the parent-run if not found in our stored parent tree.\n    if (parentRunId && !this.parentTree[parentRunId]) {\n      return traceId\n    }\n    return parentRunId\n  }\n\n  private _popRunAndCaptureTraceOrSpan(\n    runId: string,\n    parentRunId: string | undefined,\n    outputs: ChainValues | DocumentInterface[] | AgentFinish | Error | any\n  ): void {\n    const traceId = this._getTraceId(runId)\n    this._popParentOfRun(runId)\n    const run = this._popRunMetadata(runId)\n    if (!run) {\n      return\n    }\n    if ('modelParams' in run) {\n      console.warn(`Run ${runId} is a generation, but attempted to be captured as a trace/span.`)\n      return\n    }\n    const actualParentRunId = this._getParentRunId(traceId, runId, parentRunId)\n    this._captureTraceOrSpan(traceId, runId, run as SpanMetadata, outputs, actualParentRunId)\n  }\n\n  private _captureTraceOrSpan(\n    traceId: string,\n    runId: string,\n    run: SpanMetadata,\n    outputs: ChainValues | DocumentInterface[] | AgentFinish | Error | any,\n    parentRunId?: string\n  ): void {\n    const eventName = parentRunId ? '$ai_span' : '$ai_trace'\n    const latency = run.endTime ? (run.endTime - run.startTime) / 1000 : 0\n    const eventProperties: Record<string, any> = {\n      $ai_trace_id: traceId,\n      $ai_input_state: withPrivacyMode(this.client, this.privacyMode, run.input),\n      $ai_latency: latency,\n      $ai_span_name: run.name,\n      $ai_span_id: runId,\n    }\n    if (parentRunId) {\n      eventProperties['$ai_parent_id'] = parentRunId\n    }\n\n    Object.assign(eventProperties, this.properties)\n    if (!this.distinctId) {\n      eventProperties['$process_person_profile'] = false\n    }\n    if (outputs instanceof Error) {\n      eventProperties['$ai_error'] = outputs.toString()\n      eventProperties['$ai_is_error'] = true\n    } else if (outputs !== undefined) {\n      eventProperties['$ai_output_state'] = withPrivacyMode(this.client, this.privacyMode, outputs)\n    }\n    this.client.capture({\n      distinctId: this.distinctId ? this.distinctId.toString() : runId,\n      event: eventName,\n      properties: eventProperties,\n      groups: this.groups,\n    })\n  }\n\n  private _popRunAndCaptureGeneration(\n    runId: string,\n    parentRunId: string | undefined,\n    response: LLMResult | Error\n  ): void {\n    const traceId = this._getTraceId(runId)\n    this._popParentOfRun(runId)\n    const run = this._popRunMetadata(runId)\n    if (!run || typeof run !== 'object' || !('modelParams' in run)) {\n      console.warn(`Run ${runId} is not a generation, but attempted to be captured as such.`)\n      return\n    }\n    const actualParentRunId = this._getParentRunId(traceId, runId, parentRunId)\n    this._captureGeneration(traceId, runId, run as GenerationMetadata, response, actualParentRunId)\n  }\n\n  private _captureGeneration(\n    traceId: string,\n    runId: string,\n    run: GenerationMetadata,\n    output: LLMResult | Error,\n    parentRunId?: string\n  ): void {\n    const latency = run.endTime ? (run.endTime - run.startTime) / 1000 : 0\n    const eventProperties: Record<string, any> = {\n      $ai_trace_id: traceId,\n      $ai_span_id: runId,\n      $ai_span_name: run.name,\n      $ai_parent_id: parentRunId,\n      $ai_provider: run.provider,\n      $ai_model: run.model,\n      $ai_model_parameters: run.modelParams,\n      $ai_input: withPrivacyMode(this.client, this.privacyMode, run.input),\n      $ai_http_status: 200,\n      $ai_latency: latency,\n      $ai_base_url: run.baseUrl,\n    }\n\n    if (run.tools) {\n      eventProperties['$ai_tools'] = withPrivacyMode(this.client, this.privacyMode, run.tools)\n    }\n\n    if (output instanceof Error) {\n      eventProperties['$ai_http_status'] = (output as any).status || 500\n      eventProperties['$ai_error'] = output.toString()\n      eventProperties['$ai_is_error'] = true\n    } else {\n      // Handle token usage\n      const [inputTokens, outputTokens, additionalTokenData] = this.parseUsage(output)\n      eventProperties['$ai_input_tokens'] = inputTokens\n      eventProperties['$ai_output_tokens'] = outputTokens\n\n      // Add additional token data to properties\n      if (additionalTokenData.cacheReadInputTokens) {\n        eventProperties['$ai_cache_read_tokens'] = additionalTokenData.cacheReadInputTokens\n      }\n      if (additionalTokenData.reasoningTokens) {\n        eventProperties['$ai_reasoning_tokens'] = additionalTokenData.reasoningTokens\n      }\n\n      // Handle generations/completions\n      let completions\n      if (output.generations && Array.isArray(output.generations)) {\n        const lastGeneration = output.generations[output.generations.length - 1]\n        if (Array.isArray(lastGeneration)) {\n          completions = lastGeneration.map((gen) => {\n            return { role: 'assistant', content: gen.text }\n          })\n        }\n      }\n\n      if (completions) {\n        eventProperties['$ai_output_choices'] = withPrivacyMode(this.client, this.privacyMode, completions)\n      }\n    }\n\n    Object.assign(eventProperties, this.properties)\n    if (!this.distinctId) {\n      eventProperties['$process_person_profile'] = false\n    }\n\n    this.client.capture({\n      distinctId: this.distinctId ? this.distinctId.toString() : traceId,\n      event: '$ai_generation',\n      properties: eventProperties,\n      groups: this.groups,\n    })\n  }\n\n  private _logDebugEvent(eventName: string, runId: string, parentRunId: string | undefined, extra: any): void {\n    if (this.debug) {\n      console.log(`Event: ${eventName}, runId: ${runId}, parentRunId: ${parentRunId}, extra:`, extra)\n    }\n  }\n\n  private _getLangchainRunName(serialized: any, ...args: any): string | undefined {\n    if (args && args.length > 0) {\n      for (const arg of args) {\n        if (arg && typeof arg === 'object' && 'name' in arg) {\n          return arg.name\n        } else if (arg && typeof arg === 'object' && 'runName' in arg) {\n          return arg.runName\n        }\n      }\n    }\n\n    if (serialized && serialized.name) {\n      return serialized.name\n    }\n    if (serialized && serialized.id) {\n      return Array.isArray(serialized.id) ? serialized.id[serialized.id.length - 1] : serialized.id\n    }\n    return undefined\n  }\n\n  private _convertMessageToDict(message: any): Record<string, any> {\n    let messageDict: Record<string, any> = {}\n\n    // Check the _getType() method or type property instead of instanceof\n    const messageType = message._getType?.() || message.type\n\n    switch (messageType) {\n      case 'human':\n        messageDict = { role: 'user', content: message.content }\n        break\n      case 'ai':\n        messageDict = { role: 'assistant', content: message.content }\n        break\n      case 'system':\n        messageDict = { role: 'system', content: message.content }\n        break\n      case 'tool':\n        messageDict = { role: 'tool', content: message.content }\n        break\n      case 'function':\n        messageDict = { role: 'function', content: message.content }\n        break\n      default:\n        messageDict = { role: messageType || 'unknown', content: String(message.content) }\n    }\n\n    if (message.additional_kwargs) {\n      messageDict = { ...messageDict, ...message.additional_kwargs }\n    }\n    return messageDict\n  }\n\n  private _parseUsageModel(usage: any): [number, number, Record<string, any>] {\n    const conversionList: Array<[string, 'input' | 'output']> = [\n      ['promptTokens', 'input'],\n      ['completionTokens', 'output'],\n      ['input_tokens', 'input'],\n      ['output_tokens', 'output'],\n      ['prompt_token_count', 'input'],\n      ['candidates_token_count', 'output'],\n      ['inputTokenCount', 'input'],\n      ['outputTokenCount', 'output'],\n      ['input_token_count', 'input'],\n      ['generated_token_count', 'output'],\n    ]\n\n    const parsedUsage = conversionList.reduce(\n      (acc: { input: number; output: number }, [modelKey, typeKey]) => {\n        const value = usage[modelKey]\n        if (value != null) {\n          const finalCount = Array.isArray(value)\n            ? value.reduce((sum: number, tokenCount: number) => sum + tokenCount, 0)\n            : value\n          acc[typeKey] = finalCount\n        }\n        return acc\n      },\n      { input: 0, output: 0 }\n    )\n\n    // Extract additional token details like cached tokens and reasoning tokens\n    const additionalTokenData: Record<string, any> = {}\n\n    // Check for cached tokens in various formats\n    if (usage.prompt_tokens_details?.cached_tokens != null) {\n      additionalTokenData.cacheReadInputTokens = usage.prompt_tokens_details.cached_tokens\n    } else if (usage.input_token_details?.cache_read != null) {\n      additionalTokenData.cacheReadInputTokens = usage.input_token_details.cache_read\n    } else if (usage.cachedPromptTokens != null) {\n      additionalTokenData.cacheReadInputTokens = usage.cachedPromptTokens\n    }\n\n    // Check for reasoning tokens in various formats\n    if (usage.completion_tokens_details?.reasoning_tokens != null) {\n      additionalTokenData.reasoningTokens = usage.completion_tokens_details.reasoning_tokens\n    } else if (usage.output_token_details?.reasoning != null) {\n      additionalTokenData.reasoningTokens = usage.output_token_details.reasoning\n    } else if (usage.reasoningTokens != null) {\n      additionalTokenData.reasoningTokens = usage.reasoningTokens\n    }\n\n    return [parsedUsage.input, parsedUsage.output, additionalTokenData]\n  }\n\n  private parseUsage(response: LLMResult): [number, number, Record<string, any>] {\n    let llmUsage: [number, number, Record<string, any>] = [0, 0, {}]\n    const llmUsageKeys = ['token_usage', 'usage', 'tokenUsage']\n\n    if (response.llmOutput != null) {\n      const key = llmUsageKeys.find((k) => response.llmOutput?.[k] != null)\n      if (key) {\n        llmUsage = this._parseUsageModel(response.llmOutput[key])\n      }\n    }\n\n    // If top-level usage info was not found, try checking the generations.\n    if (llmUsage[0] === 0 && llmUsage[1] === 0 && response.generations) {\n      for (const generation of response.generations) {\n        for (const genChunk of generation) {\n          // Check other paths for usage information\n          if (genChunk.generationInfo?.usage_metadata) {\n            llmUsage = this._parseUsageModel(genChunk.generationInfo.usage_metadata)\n            return llmUsage\n          }\n\n          const messageChunk = genChunk.generationInfo ?? {}\n          const responseMetadata = messageChunk.response_metadata ?? {}\n          const chunkUsage =\n            responseMetadata['usage'] ??\n            responseMetadata['amazon-bedrock-invocationMetrics'] ??\n            messageChunk.usage_metadata\n          if (chunkUsage) {\n            llmUsage = this._parseUsageModel(chunkUsage)\n            return llmUsage\n          }\n        }\n      }\n    }\n\n    return llmUsage\n  }\n}\n"],"names":["getModelParams","params","modelParams","paramKeys","key","undefined","withPrivacyMode","client","privacyMode","input","privacy_mode","camelcaseModule","camelcase","snakeCase","uuid","LangChainCallbackHandler","BaseCallbackHandler","name","runs","parentTree","constructor","options","Error","distinctId","traceId","properties","groups","debug","handleChainStart","chain","inputs","runId","parentRunId","tags","metadata","runType","runName","_logDebugEvent","_setParentOfRun","_setTraceOrSpanMetadata","handleChainEnd","outputs","kwargs","_popRunAndCaptureTraceOrSpan","handleChainError","error","handleChatModelStart","serialized","messages","extraParams","flat","map","m","_convertMessageToDict","_setLLMMetadata","handleLLMStart","prompts","handleLLMEnd","output","_popRunAndCaptureGeneration","handleLLMError","err","handleToolStart","tool","handleToolEnd","handleToolError","handleRetrieverStart","retriever","query","handleRetrieverEnd","documents","handleRetrieverError","handleAgentAction","action","handleAgentEnd","_popParentOfRun","_findRootRun","id","args","defaultName","_getLangchainRunName","startTime","Date","now","runNameFound","generation","invocation_params","ls_model_name","model","ls_provider","provider","openai_api_base","baseUrl","_popRunMetadata","endTime","run","console","warn","_getTraceId","String","_getParentRunId","actualParentRunId","_captureTraceOrSpan","eventName","latency","eventProperties","$ai_trace_id","$ai_input_state","$ai_latency","$ai_span_name","$ai_span_id","Object","assign","toString","capture","event","response","_captureGeneration","$ai_parent_id","$ai_provider","$ai_model","$ai_model_parameters","$ai_input","$ai_http_status","$ai_base_url","tools","status","inputTokens","outputTokens","additionalTokenData","parseUsage","cacheReadInputTokens","reasoningTokens","completions","generations","Array","isArray","lastGeneration","length","gen","role","content","text","extra","log","arg","message","messageDict","messageType","_getType","type","additional_kwargs","_parseUsageModel","usage","conversionList","parsedUsage","reduce","acc","modelKey","typeKey","value","finalCount","sum","tokenCount","prompt_tokens_details","cached_tokens","input_token_details","cache_read","cachedPromptTokens","completion_tokens_details","reasoning_tokens","output_token_details","reasoning","llmUsage","llmUsageKeys","llmOutput","find","k","genChunk","generationInfo","usage_metadata","messageChunk","responseMetadata","response_metadata","chunkUsage"],"mappings":"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"}