{"version":3,"file":"index.mjs","sources":["../src/utils.ts","../src/openai/index.ts","../src/openai/azure.ts","../src/vercel/middleware.ts","../src/anthropic/index.ts","../src/gemini/index.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","import OpenAIOrignal, { ClientOptions } from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { formatResponseOpenAI, MonitoringParams, sendEventToPosthog } from '../utils'\nimport type { APIPromise } from 'openai'\nimport type { Stream } from 'openai/streaming'\nimport type { ParsedResponse } from 'openai/resources/responses/responses'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\ntype ResponsesCreateParamsBase = OpenAIOrignal.Responses.ResponseCreateParams\ntype ResponsesCreateParamsNonStreaming = OpenAIOrignal.Responses.ResponseCreateParamsNonStreaming\ntype ResponsesCreateParamsStreaming = OpenAIOrignal.Responses.ResponseCreateParamsStreaming\n\ninterface MonitoringOpenAIConfig extends ClientOptions {\n  apiKey: string\n  posthog: PostHog\n  baseURL?: string\n}\n\ntype RequestOptions = Record<string, any>\n\nexport class PostHogOpenAI extends OpenAIOrignal {\n  private readonly phClient: PostHog\n  public chat: WrappedChat\n  public responses: WrappedResponses\n\n  constructor(config: MonitoringOpenAIConfig) {\n    const { posthog, ...openAIConfig } = config\n    super(openAIConfig)\n    this.phClient = posthog\n    this.chat = new WrappedChat(this, this.phClient)\n    this.responses = new WrappedResponses(this, this.phClient)\n  }\n}\n\nexport class WrappedChat extends OpenAIOrignal.Chat {\n  constructor(parentClient: PostHogOpenAI, phClient: PostHog) {\n    super(parentClient)\n    this.completions = new WrappedCompletions(parentClient, phClient)\n  }\n\n  public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends OpenAIOrignal.Chat.Completions {\n  private readonly phClient: PostHog\n\n  constructor(client: OpenAIOrignal, phClient: PostHog) {\n    super(client)\n    this.phClient = phClient\n  }\n\n  // --- Overload #1: Non-streaming\n  public create(\n    body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ChatCompletion>\n\n  // --- Overload #2: Streaming\n  public create(\n    body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Stream<ChatCompletionChunk>>\n\n  // --- Overload #3: Generic base\n  public create(\n    body: ChatCompletionCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n  // --- Implementation Signature\n  public create(\n    body: ChatCompletionCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...openAIParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    const parentPromise = super.create(openAIParams, options)\n\n    if (openAIParams.stream) {\n      return parentPromise.then((value) => {\n        if ('tee' in value) {\n          const [stream1, stream2] = value.tee()\n          ;(async () => {\n            try {\n              let accumulatedContent = ''\n              let usage: {\n                inputTokens?: number\n                outputTokens?: number\n                reasoningTokens?: number\n                cacheReadInputTokens?: number\n              } = {\n                inputTokens: 0,\n                outputTokens: 0,\n              }\n\n              for await (const chunk of stream1) {\n                const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n                accumulatedContent += delta\n                if (chunk.usage) {\n                  usage = {\n                    inputTokens: chunk.usage.prompt_tokens ?? 0,\n                    outputTokens: chunk.usage.completion_tokens ?? 0,\n                    reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,\n                    cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,\n                  }\n                }\n              }\n\n              const latency = (Date.now() - startTime) / 1000\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'openai',\n                input: openAIParams.messages,\n                output: [{ content: accumulatedContent, role: 'assistant' }],\n                latency,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: 200,\n                usage,\n                captureImmediate: posthogCaptureImmediate,\n              })\n            } catch (error: any) {\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'openai',\n                input: openAIParams.messages,\n                output: [],\n                latency: 0,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: error?.status ? error.status : 500,\n                usage: { inputTokens: 0, outputTokens: 0 },\n                isError: true,\n                error: JSON.stringify(error),\n                captureImmediate: posthogCaptureImmediate,\n              })\n            }\n          })()\n\n          // Return the other stream to the user\n          return stream2\n        }\n        return value\n      }) as APIPromise<Stream<ChatCompletionChunk>>\n    } else {\n      const wrappedPromise = parentPromise.then(\n        async (result) => {\n          if ('choices' in result) {\n            const latency = (Date.now() - startTime) / 1000\n            await sendEventToPosthog({\n              client: this.phClient,\n              distinctId: posthogDistinctId ?? traceId,\n              traceId,\n              model: openAIParams.model,\n              provider: 'openai',\n              input: openAIParams.messages,\n              output: formatResponseOpenAI(result),\n              latency,\n              baseURL: (this as any).baseURL ?? '',\n              params: body,\n              httpStatus: 200,\n              usage: {\n                inputTokens: result.usage?.prompt_tokens ?? 0,\n                outputTokens: result.usage?.completion_tokens ?? 0,\n                reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,\n                cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n              },\n              captureImmediate: posthogCaptureImmediate,\n            })\n          }\n          return result\n        },\n        async (error: any) => {\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: openAIParams.model,\n            provider: 'openai',\n            input: openAIParams.messages,\n            output: [],\n            latency: 0,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: error?.status ? error.status : 500,\n            usage: {\n              inputTokens: 0,\n              outputTokens: 0,\n            },\n            isError: true,\n            error: JSON.stringify(error),\n            captureImmediate: posthogCaptureImmediate,\n          })\n          throw error\n        }\n      ) as APIPromise<ChatCompletion>\n\n      return wrappedPromise\n    }\n  }\n}\n\nexport class WrappedResponses extends OpenAIOrignal.Responses {\n  private readonly phClient: PostHog\n\n  constructor(client: OpenAIOrignal, phClient: PostHog) {\n    super(client)\n    this.phClient = phClient\n  }\n\n  // --- Overload #1: Non-streaming\n  public create(\n    body: ResponsesCreateParamsNonStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<OpenAIOrignal.Responses.Response>\n\n  // --- Overload #2: Streaming\n  public create(\n    body: ResponsesCreateParamsStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n\n  // --- Overload #3: Generic base\n  public create(\n    body: ResponsesCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n\n  // --- Implementation Signature\n  public create(\n    body: ResponsesCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...openAIParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    const parentPromise = super.create(openAIParams, options)\n\n    if (openAIParams.stream) {\n      return parentPromise.then((value) => {\n        if ('tee' in value && typeof (value as any).tee === 'function') {\n          const [stream1, stream2] = (value as any).tee()\n          ;(async () => {\n            try {\n              let finalContent: any[] = []\n              let usage: {\n                inputTokens?: number\n                outputTokens?: number\n                reasoningTokens?: number\n                cacheReadInputTokens?: number\n              } = {\n                inputTokens: 0,\n                outputTokens: 0,\n              }\n\n              for await (const chunk of stream1) {\n                if (\n                  chunk.type === 'response.completed' &&\n                  'response' in chunk &&\n                  chunk.response?.output &&\n                  chunk.response.output.length > 0\n                ) {\n                  finalContent = chunk.response.output\n                }\n                if ('response' in chunk && chunk.response?.usage) {\n                  usage = {\n                    inputTokens: chunk.response.usage.input_tokens ?? 0,\n                    outputTokens: chunk.response.usage.output_tokens ?? 0,\n                    reasoningTokens: chunk.response.usage.output_tokens_details?.reasoning_tokens ?? 0,\n                    cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0,\n                  }\n                }\n              }\n\n              const latency = (Date.now() - startTime) / 1000\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'openai',\n                input: openAIParams.input,\n                output: finalContent,\n                latency,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: 200,\n                usage,\n                captureImmediate: posthogCaptureImmediate,\n              })\n            } catch (error: any) {\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'openai',\n                input: openAIParams.input,\n                output: [],\n                latency: 0,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: error?.status ? error.status : 500,\n                usage: { inputTokens: 0, outputTokens: 0 },\n                isError: true,\n                error: JSON.stringify(error),\n                captureImmediate: posthogCaptureImmediate,\n              })\n            }\n          })()\n\n          return stream2\n        }\n        return value\n      }) as APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n    } else {\n      const wrappedPromise = parentPromise.then(\n        async (result) => {\n          if ('output' in result) {\n            const latency = (Date.now() - startTime) / 1000\n            await sendEventToPosthog({\n              client: this.phClient,\n              distinctId: posthogDistinctId ?? traceId,\n              traceId,\n              model: openAIParams.model,\n              provider: 'openai',\n              input: openAIParams.input,\n              output: result.output,\n              latency,\n              baseURL: (this as any).baseURL ?? '',\n              params: body,\n              httpStatus: 200,\n              usage: {\n                inputTokens: result.usage?.input_tokens ?? 0,\n                outputTokens: result.usage?.output_tokens ?? 0,\n                reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,\n                cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,\n              },\n              captureImmediate: posthogCaptureImmediate,\n            })\n          }\n          return result\n        },\n        async (error: any) => {\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: openAIParams.model,\n            provider: 'openai',\n            input: openAIParams.input,\n            output: [],\n            latency: 0,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: error?.status ? error.status : 500,\n            usage: {\n              inputTokens: 0,\n              outputTokens: 0,\n            },\n            isError: true,\n            error: JSON.stringify(error),\n            captureImmediate: posthogCaptureImmediate,\n          })\n          throw error\n        }\n      ) as APIPromise<OpenAIOrignal.Responses.Response>\n\n      return wrappedPromise\n    }\n  }\n\n  public parse<Params extends ResponsesCreateParamsBase, ParsedT = any>(\n    body: Params & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ParsedResponse<ParsedT>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...openAIParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    // Create a temporary instance that bypasses our wrapped create method\n    const originalCreate = super.create.bind(this)\n    const originalSelf = this as any\n    const tempCreate = originalSelf.create\n    originalSelf.create = originalCreate\n\n    try {\n      const parentPromise = super.parse(openAIParams, options)\n\n      const wrappedPromise = parentPromise.then(\n        async (result) => {\n          const latency = (Date.now() - startTime) / 1000\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: openAIParams.model,\n            provider: 'openai',\n            input: openAIParams.input,\n            output: result.output,\n            latency,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: 200,\n            usage: {\n              inputTokens: result.usage?.input_tokens ?? 0,\n              outputTokens: result.usage?.output_tokens ?? 0,\n              reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,\n              cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,\n            },\n            captureImmediate: posthogCaptureImmediate,\n          })\n          return result\n        },\n        async (error: any) => {\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: openAIParams.model,\n            provider: 'openai',\n            input: openAIParams.input,\n            output: [],\n            latency: 0,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: error?.status ? error.status : 500,\n            usage: {\n              inputTokens: 0,\n              outputTokens: 0,\n            },\n            isError: true,\n            error: JSON.stringify(error),\n            captureImmediate: posthogCaptureImmediate,\n          })\n          throw error\n        }\n      )\n\n      return wrappedPromise as APIPromise<ParsedResponse<ParsedT>>\n    } finally {\n      // Restore our wrapped create method\n      originalSelf.create = tempCreate\n    }\n  }\n}\n\nexport default PostHogOpenAI\n\nexport { PostHogOpenAI as OpenAI }\n","import OpenAIOrignal, { AzureOpenAI } from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { formatResponseOpenAI, MonitoringParams, sendEventToPosthog } from '../utils'\nimport type { APIPromise } from 'openai'\nimport type { Stream } from 'openai/streaming'\nimport type { ParsedResponse } from 'openai/resources/responses/responses'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\ntype ResponsesCreateParamsBase = OpenAIOrignal.Responses.ResponseCreateParams\ntype ResponsesCreateParamsNonStreaming = OpenAIOrignal.Responses.ResponseCreateParamsNonStreaming\ntype ResponsesCreateParamsStreaming = OpenAIOrignal.Responses.ResponseCreateParamsStreaming\n\ninterface MonitoringOpenAIConfig {\n  apiKey: string\n  posthog: PostHog\n  baseURL?: string\n}\n\ntype RequestOptions = Record<string, any>\n\nexport class PostHogAzureOpenAI extends AzureOpenAI {\n  private readonly phClient: PostHog\n  public chat: WrappedChat\n\n  constructor(config: MonitoringOpenAIConfig) {\n    const { posthog, ...openAIConfig } = config\n    super(openAIConfig)\n    this.phClient = posthog\n    this.chat = new WrappedChat(this, this.phClient)\n  }\n}\n\nexport class WrappedChat extends AzureOpenAI.Chat {\n  constructor(parentClient: PostHogAzureOpenAI, phClient: PostHog) {\n    super(parentClient)\n    this.completions = new WrappedCompletions(parentClient, phClient)\n  }\n\n  public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends AzureOpenAI.Chat.Completions {\n  private readonly phClient: PostHog\n\n  constructor(client: AzureOpenAI, phClient: PostHog) {\n    super(client)\n    this.phClient = phClient\n  }\n\n  // --- Overload #1: Non-streaming\n  public create(\n    body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ChatCompletion>\n\n  // --- Overload #2: Streaming\n  public create(\n    body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Stream<ChatCompletionChunk>>\n\n  // --- Overload #3: Generic base\n  public create(\n    body: ChatCompletionCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n  // --- Implementation Signature\n  public create(\n    body: ChatCompletionCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...openAIParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    const parentPromise = super.create(openAIParams, options)\n\n    if (openAIParams.stream) {\n      return parentPromise.then((value) => {\n        if ('tee' in value) {\n          const [stream1, stream2] = value.tee()\n          ;(async () => {\n            try {\n              let accumulatedContent = ''\n              let usage: {\n                inputTokens?: number\n                outputTokens?: number\n                reasoningTokens?: number\n                cacheReadInputTokens?: number\n              } = {\n                inputTokens: 0,\n                outputTokens: 0,\n              }\n\n              for await (const chunk of stream1) {\n                const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n                accumulatedContent += delta\n                if (chunk.usage) {\n                  usage = {\n                    inputTokens: chunk.usage.prompt_tokens ?? 0,\n                    outputTokens: chunk.usage.completion_tokens ?? 0,\n                    reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,\n                    cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,\n                  }\n                }\n              }\n\n              const latency = (Date.now() - startTime) / 1000\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'azure',\n                input: openAIParams.messages,\n                output: [{ content: accumulatedContent, role: 'assistant' }],\n                latency,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: 200,\n                usage,\n                captureImmediate: posthogCaptureImmediate,\n              })\n            } catch (error: any) {\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'azure',\n                input: openAIParams.messages,\n                output: [],\n                latency: 0,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: error?.status ? error.status : 500,\n                usage: { inputTokens: 0, outputTokens: 0 },\n                isError: true,\n                error: JSON.stringify(error),\n                captureImmediate: posthogCaptureImmediate,\n              })\n            }\n          })()\n\n          // Return the other stream to the user\n          return stream2\n        }\n        return value\n      }) as APIPromise<Stream<ChatCompletionChunk>>\n    } else {\n      const wrappedPromise = parentPromise.then(\n        async (result) => {\n          if ('choices' in result) {\n            const latency = (Date.now() - startTime) / 1000\n            await sendEventToPosthog({\n              client: this.phClient,\n              distinctId: posthogDistinctId ?? traceId,\n              traceId,\n              model: openAIParams.model,\n              provider: 'azure',\n              input: openAIParams.messages,\n              output: formatResponseOpenAI(result),\n              latency,\n              baseURL: (this as any).baseURL ?? '',\n              params: body,\n              httpStatus: 200,\n              usage: {\n                inputTokens: result.usage?.prompt_tokens ?? 0,\n                outputTokens: result.usage?.completion_tokens ?? 0,\n                reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,\n                cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n              },\n              captureImmediate: posthogCaptureImmediate,\n            })\n          }\n          return result\n        },\n        async (error: any) => {\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: openAIParams.model,\n            provider: 'azure',\n            input: openAIParams.messages,\n            output: [],\n            latency: 0,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: error?.status ? error.status : 500,\n            usage: {\n              inputTokens: 0,\n              outputTokens: 0,\n            },\n            isError: true,\n            error: JSON.stringify(error),\n            captureImmediate: posthogCaptureImmediate,\n          })\n          throw error\n        }\n      ) as APIPromise<ChatCompletion>\n\n      return wrappedPromise\n    }\n  }\n}\n\nexport class WrappedResponses extends AzureOpenAI.Responses {\n  private readonly phClient: PostHog\n\n  constructor(client: AzureOpenAI, phClient: PostHog) {\n    super(client)\n    this.phClient = phClient\n  }\n\n  // --- Overload #1: Non-streaming\n  public create(\n    body: ResponsesCreateParamsNonStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<OpenAIOrignal.Responses.Response>\n\n  // --- Overload #2: Streaming\n  public create(\n    body: ResponsesCreateParamsStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n\n  // --- Overload #3: Generic base\n  public create(\n    body: ResponsesCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n\n  // --- Implementation Signature\n  public create(\n    body: ResponsesCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...openAIParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    const parentPromise = super.create(openAIParams, options)\n\n    if (openAIParams.stream) {\n      return parentPromise.then((value) => {\n        if ('tee' in value && typeof (value as any).tee === 'function') {\n          const [stream1, stream2] = (value as any).tee()\n          ;(async () => {\n            try {\n              let finalContent: any[] = []\n              let usage: {\n                inputTokens?: number\n                outputTokens?: number\n                reasoningTokens?: number\n                cacheReadInputTokens?: number\n              } = {\n                inputTokens: 0,\n                outputTokens: 0,\n              }\n\n              for await (const chunk of stream1) {\n                if (\n                  chunk.type === 'response.completed' &&\n                  'response' in chunk &&\n                  chunk.response?.output &&\n                  chunk.response.output.length > 0\n                ) {\n                  finalContent = chunk.response.output\n                }\n                if ('usage' in chunk && chunk.usage) {\n                  usage = {\n                    inputTokens: chunk.usage.input_tokens ?? 0,\n                    outputTokens: chunk.usage.output_tokens ?? 0,\n                    reasoningTokens: chunk.usage.output_tokens_details?.reasoning_tokens ?? 0,\n                    cacheReadInputTokens: chunk.usage.input_tokens_details?.cached_tokens ?? 0,\n                  }\n                }\n              }\n\n              const latency = (Date.now() - startTime) / 1000\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'azure',\n                input: openAIParams.input,\n                output: finalContent,\n                latency,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: 200,\n                usage,\n                captureImmediate: posthogCaptureImmediate,\n              })\n            } catch (error: any) {\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: openAIParams.model,\n                provider: 'azure',\n                input: openAIParams.input,\n                output: [],\n                latency: 0,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: error?.status ? error.status : 500,\n                usage: { inputTokens: 0, outputTokens: 0 },\n                isError: true,\n                error: JSON.stringify(error),\n                captureImmediate: posthogCaptureImmediate,\n              })\n            }\n          })()\n\n          return stream2\n        }\n        return value\n      }) as APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n    } else {\n      const wrappedPromise = parentPromise.then(\n        async (result) => {\n          if ('output' in result) {\n            const latency = (Date.now() - startTime) / 1000\n            await sendEventToPosthog({\n              client: this.phClient,\n              distinctId: posthogDistinctId ?? traceId,\n              traceId,\n              model: openAIParams.model,\n              provider: 'azure',\n              input: openAIParams.input,\n              output: result.output,\n              latency,\n              baseURL: (this as any).baseURL ?? '',\n              params: body,\n              httpStatus: 200,\n              usage: {\n                inputTokens: result.usage?.input_tokens ?? 0,\n                outputTokens: result.usage?.output_tokens ?? 0,\n                reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,\n                cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,\n              },\n              captureImmediate: posthogCaptureImmediate,\n            })\n          }\n          return result\n        },\n        async (error: any) => {\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: openAIParams.model,\n            provider: 'azure',\n            input: openAIParams.input,\n            output: [],\n            latency: 0,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: error?.status ? error.status : 500,\n            usage: {\n              inputTokens: 0,\n              outputTokens: 0,\n            },\n            isError: true,\n            error: JSON.stringify(error),\n            captureImmediate: posthogCaptureImmediate,\n          })\n          throw error\n        }\n      ) as APIPromise<OpenAIOrignal.Responses.Response>\n\n      return wrappedPromise\n    }\n  }\n\n  public parse<Params extends OpenAIOrignal.Responses.ResponseCreateParams, ParsedT = any>(\n    body: Params & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<ParsedResponse<ParsedT>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...openAIParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    const parentPromise = super.parse(openAIParams, options)\n\n    const wrappedPromise = parentPromise.then(\n      async (result) => {\n        const latency = (Date.now() - startTime) / 1000\n        await sendEventToPosthog({\n          client: this.phClient,\n          distinctId: posthogDistinctId ?? traceId,\n          traceId,\n          model: openAIParams.model,\n          provider: 'azure',\n          input: openAIParams.input,\n          output: result.output,\n          latency,\n          baseURL: (this as any).baseURL ?? '',\n          params: body,\n          httpStatus: 200,\n          usage: {\n            inputTokens: result.usage?.input_tokens ?? 0,\n            outputTokens: result.usage?.output_tokens ?? 0,\n            reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,\n            cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,\n          },\n          captureImmediate: posthogCaptureImmediate,\n        })\n        return result\n      },\n      async (error: any) => {\n        await sendEventToPosthog({\n          client: this.phClient,\n          distinctId: posthogDistinctId ?? traceId,\n          traceId,\n          model: openAIParams.model,\n          provider: 'azure',\n          input: openAIParams.input,\n          output: [],\n          latency: 0,\n          baseURL: (this as any).baseURL ?? '',\n          params: body,\n          httpStatus: error?.status ? error.status : 500,\n          usage: {\n            inputTokens: 0,\n            outputTokens: 0,\n          },\n          isError: true,\n          error: JSON.stringify(error),\n          captureImmediate: posthogCaptureImmediate,\n        })\n        throw error\n      }\n    )\n\n    return wrappedPromise as APIPromise<ParsedResponse<ParsedT>>\n  }\n}\n\nexport default PostHogAzureOpenAI\n\nexport { PostHogAzureOpenAI as OpenAI }\n","import { experimental_wrapLanguageModel as wrapLanguageModel } from 'ai'\nimport type { LanguageModelV1, LanguageModelV1Middleware, LanguageModelV1Prompt, LanguageModelV1StreamPart } from 'ai'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PostHog } from 'posthog-node'\nimport { CostOverride, sendEventToPosthog, truncate, MAX_OUTPUT_SIZE } from '../utils'\nimport { Buffer } from 'buffer'\n\ninterface ClientOptions {\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\ninterface CreateInstrumentationMiddlewareOptions {\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\ninterface PostHogInput {\n  role: string\n  type?: string\n  content?:\n    | string\n    | {\n        [key: string]: any\n      }\n}\n\nconst mapVercelParams = (params: any): Record<string, any> => {\n  return {\n    temperature: params.temperature,\n    max_tokens: params.maxTokens,\n    top_p: params.topP,\n    frequency_penalty: params.frequencyPenalty,\n    presence_penalty: params.presencePenalty,\n    stop: params.stopSequences,\n    stream: params.stream,\n  }\n}\n\nconst mapVercelPrompt = (prompt: LanguageModelV1Prompt): PostHogInput[] => {\n  // normalize single inputs into an array of messages\n  let promptsArray: any[]\n  if (typeof prompt === 'string') {\n    promptsArray = [{ role: 'user', content: prompt }]\n  } else if (!Array.isArray(prompt)) {\n    promptsArray = [prompt]\n  } else {\n    promptsArray = prompt\n  }\n\n  // Map and truncate individual content\n  const inputs: PostHogInput[] = promptsArray.map((p) => {\n    let content = {}\n    if (Array.isArray(p.content)) {\n      content = p.content.map((c: any) => {\n        if (c.type === 'text') {\n          return {\n            type: 'text',\n            content: truncate(c.text),\n          }\n        } else if (c.type === 'image') {\n          return {\n            type: 'image',\n            content: {\n              // if image is a url use it, or use \"none supported\"\n              image: c.image instanceof URL ? c.image.toString() : 'raw images not supported',\n              mimeType: c.mimeType,\n            },\n          }\n        } else if (c.type === 'file') {\n          return {\n            type: 'file',\n            content: {\n              file: c.data instanceof URL ? c.data.toString() : 'raw files not supported',\n              mimeType: c.mimeType,\n            },\n          }\n        } else if (c.type === 'tool-call') {\n          return {\n            type: 'tool-call',\n            content: {\n              toolCallId: c.toolCallId,\n              toolName: c.toolName,\n              args: c.args,\n            },\n          }\n        } else if (c.type === 'tool-result') {\n          return {\n            type: 'tool-result',\n            content: {\n              toolCallId: c.toolCallId,\n              toolName: c.toolName,\n              result: c.result,\n              isError: c.isError,\n            },\n          }\n        }\n        return {\n          content: '',\n        }\n      })\n    } else {\n      content = {\n        type: 'text',\n        text: truncate(p.content),\n      }\n    }\n    return {\n      role: p.role,\n      content,\n    }\n  })\n  try {\n    // Trim the inputs array until its JSON size fits within MAX_OUTPUT_SIZE\n    let serialized = JSON.stringify(inputs)\n    let removedCount = 0\n    // We need to keep track of the initial size of the inputs array because we're going to be mutating it\n    const initialSize = inputs.length\n    for (let i = 0; i < initialSize && Buffer.byteLength(serialized, 'utf8') > MAX_OUTPUT_SIZE; i++) {\n      inputs.shift()\n      removedCount++\n      serialized = JSON.stringify(inputs)\n    }\n    if (removedCount > 0) {\n      // Add one placeholder to indicate how many were removed\n      inputs.unshift({\n        role: 'posthog',\n        content: `[${removedCount} message${removedCount === 1 ? '' : 's'} removed due to size limit]`,\n      })\n    }\n  } catch (error) {\n    console.error('Error stringifying inputs', error)\n    return [{ role: 'posthog', content: 'An error occurred while processing your request. Please try again.' }]\n  }\n  return inputs\n}\n\nconst mapVercelOutput = (result: any): PostHogInput[] => {\n  // normalize string results to object\n  const normalizedResult = typeof result === 'string' ? { text: result } : result\n  const output = {\n    ...(normalizedResult.text ? { text: normalizedResult.text } : {}),\n    ...(normalizedResult.object ? { object: normalizedResult.object } : {}),\n    ...(normalizedResult.reasoning ? { reasoning: normalizedResult.reasoning } : {}),\n    ...(normalizedResult.response ? { response: normalizedResult.response } : {}),\n    ...(normalizedResult.finishReason ? { finishReason: normalizedResult.finishReason } : {}),\n    ...(normalizedResult.usage ? { usage: normalizedResult.usage } : {}),\n    ...(normalizedResult.warnings ? { warnings: normalizedResult.warnings } : {}),\n    ...(normalizedResult.providerMetadata ? { toolCalls: normalizedResult.providerMetadata } : {}),\n    ...(normalizedResult.files\n      ? {\n          files: normalizedResult.files.map((file: any) => ({\n            name: file.name,\n            size: file.size,\n            type: file.type,\n          })),\n        }\n      : {}),\n  }\n  if (output.text && !output.object && !output.reasoning) {\n    return [{ content: truncate(output.text as string), role: 'assistant' }]\n  }\n  // otherwise stringify and truncate\n  try {\n    const jsonOutput = JSON.stringify(output)\n    return [{ content: truncate(jsonOutput), role: 'assistant' }]\n  } catch (error) {\n    console.error('Error stringifying output')\n    return []\n  }\n}\n\nconst extractProvider = (model: LanguageModelV1): string => {\n  const provider = model.provider.toLowerCase()\n  const providerName = provider.split('.')[0]\n  return providerName\n}\n\nexport const createInstrumentationMiddleware = (\n  phClient: PostHog,\n  model: LanguageModelV1,\n  options: CreateInstrumentationMiddlewareOptions\n): LanguageModelV1Middleware => {\n  const middleware: LanguageModelV1Middleware = {\n    wrapGenerate: async ({ doGenerate, params }) => {\n      const startTime = Date.now()\n      const mergedParams = {\n        ...options,\n        ...mapVercelParams(params),\n      }\n      try {\n        const result = await doGenerate()\n        const latency = (Date.now() - startTime) / 1000\n        const modelId =\n          options.posthogModelOverride ?? (result.response?.modelId ? result.response.modelId : model.modelId)\n        const provider = options.posthogProviderOverride ?? extractProvider(model)\n        const baseURL = '' // cannot currently get baseURL from vercel\n        const content = mapVercelOutput(result)\n        // let tools = result.toolCalls\n        const providerMetadata = result.providerMetadata\n        const additionalTokenValues = {\n          ...(providerMetadata?.openai?.reasoningTokens\n            ? { reasoningTokens: providerMetadata.openai.reasoningTokens }\n            : {}),\n          ...(providerMetadata?.openai?.cachedPromptTokens\n            ? { cacheReadInputTokens: providerMetadata.openai.cachedPromptTokens }\n            : {}),\n          ...(providerMetadata?.anthropic\n            ? {\n                cacheReadInputTokens: providerMetadata.anthropic.cacheReadInputTokens,\n                cacheCreationInputTokens: providerMetadata.anthropic.cacheCreationInputTokens,\n              }\n            : {}),\n        }\n        await sendEventToPosthog({\n          client: phClient,\n          distinctId: options.posthogDistinctId,\n          traceId: options.posthogTraceId,\n          model: modelId,\n          provider: provider,\n          input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n          output: [{ content, role: 'assistant' }],\n          latency,\n          baseURL,\n          params: mergedParams as any,\n          httpStatus: 200,\n          usage: {\n            inputTokens: result.usage.promptTokens,\n            outputTokens: result.usage.completionTokens,\n            ...additionalTokenValues,\n          },\n          captureImmediate: options.posthogCaptureImmediate,\n        })\n\n        return result\n      } catch (error: any) {\n        const modelId = model.modelId\n        await sendEventToPosthog({\n          client: phClient,\n          distinctId: options.posthogDistinctId,\n          traceId: options.posthogTraceId,\n          model: modelId,\n          provider: model.provider,\n          input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n          output: [],\n          latency: 0,\n          baseURL: '',\n          params: mergedParams as any,\n          httpStatus: error?.status ? error.status : 500,\n          usage: {\n            inputTokens: 0,\n            outputTokens: 0,\n          },\n          isError: true,\n          error: truncate(JSON.stringify(error)),\n          captureImmediate: options.posthogCaptureImmediate,\n        })\n        throw error\n      }\n    },\n\n    wrapStream: async ({ doStream, params }) => {\n      const startTime = Date.now()\n      let generatedText = ''\n      let usage: {\n        inputTokens?: number\n        outputTokens?: number\n        reasoningTokens?: any\n        cacheReadInputTokens?: any\n        cacheCreationInputTokens?: any\n      } = {}\n      const mergedParams = {\n        ...options,\n        ...mapVercelParams(params),\n      }\n\n      const modelId = options.posthogModelOverride ?? model.modelId\n      const provider = options.posthogProviderOverride ?? extractProvider(model)\n      const baseURL = '' // cannot currently get baseURL from vercel\n      try {\n        const { stream, ...rest } = await doStream()\n        const transformStream = new TransformStream<LanguageModelV1StreamPart, LanguageModelV1StreamPart>({\n          transform(chunk, controller) {\n            if (chunk.type === 'text-delta') {\n              generatedText += chunk.textDelta\n            }\n            if (chunk.type === 'finish') {\n              usage = {\n                inputTokens: chunk.usage?.promptTokens,\n                outputTokens: chunk.usage?.completionTokens,\n              }\n              if (chunk.providerMetadata?.openai?.reasoningTokens) {\n                usage.reasoningTokens = chunk.providerMetadata.openai.reasoningTokens\n              }\n              if (chunk.providerMetadata?.openai?.cachedPromptTokens) {\n                usage.cacheReadInputTokens = chunk.providerMetadata.openai.cachedPromptTokens\n              }\n              if (chunk.providerMetadata?.anthropic?.cacheReadInputTokens) {\n                usage.cacheReadInputTokens = chunk.providerMetadata.anthropic.cacheReadInputTokens\n              }\n              if (chunk.providerMetadata?.anthropic?.cacheCreationInputTokens) {\n                usage.cacheCreationInputTokens = chunk.providerMetadata.anthropic.cacheCreationInputTokens\n              }\n            }\n            controller.enqueue(chunk)\n          },\n\n          flush: async () => {\n            const latency = (Date.now() - startTime) / 1000\n            await sendEventToPosthog({\n              client: phClient,\n              distinctId: options.posthogDistinctId,\n              traceId: options.posthogTraceId,\n              model: modelId,\n              provider: provider,\n              input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n              output: [{ content: generatedText, role: 'assistant' }],\n              latency,\n              baseURL,\n              params: mergedParams as any,\n              httpStatus: 200,\n              usage,\n              captureImmediate: options.posthogCaptureImmediate,\n            })\n          },\n        })\n\n        return {\n          stream: stream.pipeThrough(transformStream),\n          ...rest,\n        }\n      } catch (error: any) {\n        await sendEventToPosthog({\n          client: phClient,\n          distinctId: options.posthogDistinctId,\n          traceId: options.posthogTraceId,\n          model: modelId,\n          provider: provider,\n          input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n          output: [],\n          latency: 0,\n          baseURL: '',\n          params: mergedParams as any,\n          httpStatus: error?.status ? error.status : 500,\n          usage: {\n            inputTokens: 0,\n            outputTokens: 0,\n          },\n          isError: true,\n          error: truncate(JSON.stringify(error)),\n          captureImmediate: options.posthogCaptureImmediate,\n        })\n        throw error\n      }\n    },\n  }\n\n  return middleware\n}\n\nexport const wrapVercelLanguageModel = (\n  model: LanguageModelV1,\n  phClient: PostHog,\n  options: ClientOptions\n): LanguageModelV1 => {\n  const traceId = options.posthogTraceId ?? uuidv4()\n  const middleware = createInstrumentationMiddleware(phClient, model, {\n    ...options,\n    posthogTraceId: traceId,\n    posthogDistinctId: options.posthogDistinctId ?? traceId,\n  })\n\n  const wrappedModel = wrapLanguageModel({\n    model,\n    middleware,\n  })\n\n  return wrappedModel\n}\n","import AnthropicOriginal from '@anthropic-ai/sdk'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { formatResponseAnthropic, mergeSystemPrompt, MonitoringParams, sendEventToPosthog } from '../utils'\n\ntype MessageCreateParamsNonStreaming = AnthropicOriginal.Messages.MessageCreateParamsNonStreaming\ntype MessageCreateParamsStreaming = AnthropicOriginal.Messages.MessageCreateParamsStreaming\ntype MessageCreateParams = AnthropicOriginal.Messages.MessageCreateParams\ntype Message = AnthropicOriginal.Messages.Message\ntype RawMessageStreamEvent = AnthropicOriginal.Messages.RawMessageStreamEvent\ntype MessageCreateParamsBase = AnthropicOriginal.Messages.MessageCreateParams\n\nimport type { APIPromise, RequestOptions } from '@anthropic-ai/sdk/core'\nimport type { Stream } from '@anthropic-ai/sdk/streaming'\n\ninterface MonitoringAnthropicConfig {\n  apiKey: string\n  posthog: PostHog\n  baseURL?: string\n}\n\nexport class PostHogAnthropic extends AnthropicOriginal {\n  private readonly phClient: PostHog\n  public messages: WrappedMessages\n\n  constructor(config: MonitoringAnthropicConfig) {\n    const { posthog, ...anthropicConfig } = config\n    super(anthropicConfig)\n    this.phClient = posthog\n    this.messages = new WrappedMessages(this, this.phClient)\n  }\n}\n\nexport class WrappedMessages extends AnthropicOriginal.Messages {\n  private readonly phClient: PostHog\n\n  constructor(parentClient: PostHogAnthropic, phClient: PostHog) {\n    super(parentClient)\n    this.phClient = phClient\n  }\n\n  public create(body: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Message>\n  public create(\n    body: MessageCreateParamsStreaming & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Stream<RawMessageStreamEvent>>\n  public create(\n    body: MessageCreateParamsBase & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Stream<RawMessageStreamEvent> | Message>\n  public create(\n    body: MessageCreateParams & MonitoringParams,\n    options?: RequestOptions\n  ): APIPromise<Message> | APIPromise<Stream<RawMessageStreamEvent>> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      posthogPrivacyMode = false,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...anthropicParams\n    } = body\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    const parentPromise = super.create(anthropicParams, options)\n\n    if (anthropicParams.stream) {\n      return parentPromise.then((value) => {\n        let accumulatedContent = ''\n        const usage: {\n          inputTokens: number\n          outputTokens: number\n          cacheCreationInputTokens?: number\n          cacheReadInputTokens?: number\n        } = {\n          inputTokens: 0,\n          outputTokens: 0,\n          cacheCreationInputTokens: 0,\n          cacheReadInputTokens: 0,\n        }\n        if ('tee' in value) {\n          const [stream1, stream2] = value.tee()\n          ;(async () => {\n            try {\n              for await (const chunk of stream1) {\n                if ('delta' in chunk) {\n                  if ('text' in chunk.delta) {\n                    const delta = chunk?.delta?.text ?? ''\n                    accumulatedContent += delta\n                  }\n                }\n                if (chunk.type == 'message_start') {\n                  usage.inputTokens = chunk.message.usage.input_tokens ?? 0\n                  usage.cacheCreationInputTokens = chunk.message.usage.cache_creation_input_tokens ?? 0\n                  usage.cacheReadInputTokens = chunk.message.usage.cache_read_input_tokens ?? 0\n                }\n                if ('usage' in chunk) {\n                  usage.outputTokens = chunk.usage.output_tokens ?? 0\n                }\n              }\n              const latency = (Date.now() - startTime) / 1000\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: anthropicParams.model,\n                provider: 'anthropic',\n                input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n                output: [{ content: accumulatedContent, role: 'assistant' }],\n                latency,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: 200,\n                usage,\n                captureImmediate: posthogCaptureImmediate,\n              })\n            } catch (error: any) {\n              // error handling\n              await sendEventToPosthog({\n                client: this.phClient,\n                distinctId: posthogDistinctId ?? traceId,\n                traceId,\n                model: anthropicParams.model,\n                provider: 'anthropic',\n                input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n                output: [],\n                latency: 0,\n                baseURL: (this as any).baseURL ?? '',\n                params: body,\n                httpStatus: error?.status ? error.status : 500,\n                usage: {\n                  inputTokens: 0,\n                  outputTokens: 0,\n                },\n                isError: true,\n                error: JSON.stringify(error),\n                captureImmediate: posthogCaptureImmediate,\n              })\n            }\n          })()\n\n          // Return the other stream to the user\n          return stream2\n        }\n        return value\n      }) as APIPromise<Stream<RawMessageStreamEvent>>\n    } else {\n      const wrappedPromise = parentPromise.then(\n        async (result) => {\n          if ('content' in result) {\n            const latency = (Date.now() - startTime) / 1000\n            await sendEventToPosthog({\n              client: this.phClient,\n              distinctId: posthogDistinctId ?? traceId,\n              traceId,\n              model: anthropicParams.model,\n              provider: 'anthropic',\n              input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n              output: formatResponseAnthropic(result),\n              latency,\n              baseURL: (this as any).baseURL ?? '',\n              params: body,\n              httpStatus: 200,\n              usage: {\n                inputTokens: result.usage.input_tokens ?? 0,\n                outputTokens: result.usage.output_tokens ?? 0,\n                cacheCreationInputTokens: result.usage.cache_creation_input_tokens ?? 0,\n                cacheReadInputTokens: result.usage.cache_read_input_tokens ?? 0,\n              },\n              captureImmediate: posthogCaptureImmediate,\n            })\n          }\n          return result\n        },\n        async (error: any) => {\n          await sendEventToPosthog({\n            client: this.phClient,\n            distinctId: posthogDistinctId ?? traceId,\n            traceId,\n            model: anthropicParams.model,\n            provider: 'anthropic',\n            input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n            output: [],\n            latency: 0,\n            baseURL: (this as any).baseURL ?? '',\n            params: body,\n            httpStatus: error?.status ? error.status : 500,\n            usage: {\n              inputTokens: 0,\n              outputTokens: 0,\n            },\n            isError: true,\n            error: JSON.stringify(error),\n            captureImmediate: posthogCaptureImmediate,\n          })\n          throw error\n        }\n      ) as APIPromise<Message>\n\n      return wrappedPromise\n    }\n  }\n}\n\nexport default PostHogAnthropic\n\nexport { PostHogAnthropic as Anthropic }\n","import { GoogleGenAI } from '@google/genai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { MonitoringParams, sendEventToPosthog } from '../utils'\n\n// Types from @google/genai\ntype GenerateContentRequest = {\n  model: string\n  contents: any\n  config?: any\n  [key: string]: any\n}\n\ntype GenerateContentResponse = {\n  text?: string\n  candidates?: any[]\n  usageMetadata?: {\n    promptTokenCount?: number\n    candidatesTokenCount?: number\n    totalTokenCount?: number\n  }\n  [key: string]: any\n}\n\ninterface MonitoringGeminiConfig {\n  apiKey?: string\n  vertexai?: boolean\n  project?: string\n  location?: string\n  apiVersion?: string\n  posthog: PostHog\n}\n\nexport class PostHogGoogleGenAI {\n  private readonly phClient: PostHog\n  private readonly client: GoogleGenAI\n  public models: WrappedModels\n\n  constructor(config: MonitoringGeminiConfig) {\n    const { posthog, ...geminiConfig } = config\n    this.phClient = posthog\n    this.client = new GoogleGenAI(geminiConfig)\n    this.models = new WrappedModels(this.client, this.phClient)\n  }\n}\n\nexport class WrappedModels {\n  private readonly phClient: PostHog\n  private readonly client: GoogleGenAI\n\n  constructor(client: GoogleGenAI, phClient: PostHog) {\n    this.client = client\n    this.phClient = phClient\n  }\n\n  public async generateContent(params: GenerateContentRequest & MonitoringParams): Promise<GenerateContentResponse> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...geminiParams\n    } = params\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n\n    try {\n      const response = await this.client.models.generateContent(geminiParams)\n      const latency = (Date.now() - startTime) / 1000\n\n      await sendEventToPosthog({\n        client: this.phClient,\n        distinctId: posthogDistinctId ?? traceId,\n        traceId,\n        model: geminiParams.model,\n        provider: 'gemini',\n        input: this.formatInput(geminiParams.contents),\n        output: this.formatOutput(response),\n        latency,\n        baseURL: 'https://generativelanguage.googleapis.com',\n        params: params as any,\n        httpStatus: 200,\n        usage: {\n          inputTokens: response.usageMetadata?.promptTokenCount ?? 0,\n          outputTokens: response.usageMetadata?.candidatesTokenCount ?? 0,\n        },\n        captureImmediate: posthogCaptureImmediate,\n      })\n\n      return response\n    } catch (error: any) {\n      const latency = (Date.now() - startTime) / 1000\n      await sendEventToPosthog({\n        client: this.phClient,\n        distinctId: posthogDistinctId ?? traceId,\n        traceId,\n        model: geminiParams.model,\n        provider: 'gemini',\n        input: this.formatInput(geminiParams.contents),\n        output: [],\n        latency,\n        baseURL: 'https://generativelanguage.googleapis.com',\n        params: params as any,\n        httpStatus: error?.status ?? 500,\n        usage: {\n          inputTokens: 0,\n          outputTokens: 0,\n        },\n        isError: true,\n        error: JSON.stringify(error),\n        captureImmediate: posthogCaptureImmediate,\n      })\n      throw error\n    }\n  }\n\n  public async *generateContentStream(\n    params: GenerateContentRequest & MonitoringParams\n  ): AsyncGenerator<any, void, unknown> {\n    const {\n      posthogDistinctId,\n      posthogTraceId,\n      posthogProperties,\n      posthogGroups,\n      posthogCaptureImmediate,\n      ...geminiParams\n    } = params\n\n    const traceId = posthogTraceId ?? uuidv4()\n    const startTime = Date.now()\n    let accumulatedContent = ''\n    let usage = {\n      inputTokens: 0,\n      outputTokens: 0,\n    }\n\n    try {\n      const stream = await this.client.models.generateContentStream(geminiParams)\n\n      for await (const chunk of stream) {\n        if (chunk.text) {\n          accumulatedContent += chunk.text\n        }\n        if (chunk.usageMetadata) {\n          usage = {\n            inputTokens: chunk.usageMetadata.promptTokenCount ?? 0,\n            outputTokens: chunk.usageMetadata.candidatesTokenCount ?? 0,\n          }\n        }\n        yield chunk\n      }\n\n      const latency = (Date.now() - startTime) / 1000\n      await sendEventToPosthog({\n        client: this.phClient,\n        distinctId: posthogDistinctId ?? traceId,\n        traceId,\n        model: geminiParams.model,\n        provider: 'gemini',\n        input: this.formatInput(geminiParams.contents),\n        output: [{ content: accumulatedContent, role: 'assistant' }],\n        latency,\n        baseURL: 'https://generativelanguage.googleapis.com',\n        params: params as any,\n        httpStatus: 200,\n        usage,\n        captureImmediate: posthogCaptureImmediate,\n      })\n    } catch (error: any) {\n      const latency = (Date.now() - startTime) / 1000\n      await sendEventToPosthog({\n        client: this.phClient,\n        distinctId: posthogDistinctId ?? traceId,\n        traceId,\n        model: geminiParams.model,\n        provider: 'gemini',\n        input: this.formatInput(geminiParams.contents),\n        output: [],\n        latency,\n        baseURL: 'https://generativelanguage.googleapis.com',\n        params: params as any,\n        httpStatus: error?.status ?? 500,\n        usage: {\n          inputTokens: 0,\n          outputTokens: 0,\n        },\n        isError: true,\n        error: JSON.stringify(error),\n        captureImmediate: posthogCaptureImmediate,\n      })\n      throw error\n    }\n  }\n\n  private formatInput(contents: any): Array<{ role: string; content: string }> {\n    if (typeof contents === 'string') {\n      return [{ role: 'user', content: contents }]\n    }\n\n    if (Array.isArray(contents)) {\n      return contents.map((item) => {\n        if (typeof item === 'string') {\n          return { role: 'user', content: item }\n        }\n        if (item && typeof item === 'object') {\n          if (item.text) {\n            return { role: item.role || 'user', content: item.text }\n          }\n          if (item.content) {\n            return { role: item.role || 'user', content: item.content }\n          }\n        }\n        return { role: 'user', content: String(item) }\n      })\n    }\n\n    if (contents && typeof contents === 'object') {\n      if (contents.text) {\n        return [{ role: 'user', content: contents.text }]\n      }\n      if (contents.content) {\n        return [{ role: 'user', content: contents.content }]\n      }\n    }\n\n    return [{ role: 'user', content: String(contents) }]\n  }\n\n  private formatOutput(response: GenerateContentResponse): Array<{ role: string; content: string }> {\n    if (response.text) {\n      return [{ role: 'assistant', content: response.text }]\n    }\n\n    if (response.candidates && Array.isArray(response.candidates)) {\n      return response.candidates.map((candidate) => {\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          return { role: 'assistant', content: text }\n        }\n        return { role: 'assistant', content: String(candidate) }\n      })\n    }\n\n    return []\n  }\n}\n\nexport default PostHogGoogleGenAI\nexport { PostHogGoogleGenAI as Gemini }\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":["MAX_OUTPUT_SIZE","STRING_FORMAT","getModelParams","params","modelParams","paramKeys","key","undefined","formatResponseAnthropic","response","output","choice","content","text","push","role","formatResponseOpenAI","choices","message","mergeSystemPrompt","provider","messages","system","systemMessage","withPrivacyMode","client","privacyMode","input","privacy_mode","truncate","str","buffer","Buffer","from","length","truncatedBuffer","slice","toString","error","console","sanitizeValues","obj","jsonSafe","JSON","parse","stringify","Array","isArray","map","Object","fromEntries","entries","k","v","sendEventToPosthog","distinctId","traceId","model","latency","baseURL","httpStatus","usage","isError","tools","captureImmediate","capture","Promise","resolve","safeInput","safeOutput","safeError","errorData","$ai_is_error","$ai_error","costOverrideData","posthogCostOverride","inputCostUSD","inputCost","inputTokens","outputCostUSD","outputCost","outputTokens","$ai_input_cost_usd","$ai_output_cost_usd","$ai_total_cost_usd","additionalTokenValues","reasoningTokens","$ai_reasoning_tokens","cacheReadInputTokens","$ai_cache_read_input_tokens","cacheCreationInputTokens","$ai_cache_creation_input_tokens","properties","$ai_provider","posthogProviderOverride","$ai_model","posthogModelOverride","$ai_model_parameters","$ai_input","posthogPrivacyMode","$ai_output_choices","$ai_http_status","$ai_input_tokens","$ai_output_tokens","$ai_latency","$ai_trace_id","$ai_base_url","posthogProperties","$process_person_profile","$ai_tools","event","groups","posthogGroups","PostHogOpenAI","OpenAIOrignal","constructor","config","posthog","openAIConfig","phClient","chat","WrappedChat","responses","WrappedResponses","Chat","parentClient","completions","WrappedCompletions","Completions","create","body","options","posthogDistinctId","posthogTraceId","posthogCaptureImmediate","openAIParams","uuidv4","startTime","Date","now","parentPromise","stream","then","value","stream1","stream2","tee","accumulatedContent","chunk","delta","prompt_tokens","completion_tokens","completion_tokens_details","reasoning_tokens","prompt_tokens_details","cached_tokens","status","wrappedPromise","result","Responses","finalContent","type","input_tokens","output_tokens","output_tokens_details","input_tokens_details","originalCreate","bind","originalSelf","tempCreate","PostHogAzureOpenAI","AzureOpenAI","mapVercelParams","temperature","max_tokens","maxTokens","top_p","topP","frequency_penalty","frequencyPenalty","presence_penalty","presencePenalty","stop","stopSequences","mapVercelPrompt","prompt","promptsArray","inputs","p","c","image","URL","mimeType","file","data","toolCallId","toolName","args","serialized","removedCount","initialSize","i","byteLength","shift","unshift","mapVercelOutput","normalizedResult","object","reasoning","finishReason","warnings","providerMetadata","toolCalls","files","name","size","jsonOutput","extractProvider","toLowerCase","providerName","split","createInstrumentationMiddleware","middleware","wrapGenerate","doGenerate","mergedParams","modelId","openai","cachedPromptTokens","anthropic","promptTokens","completionTokens","wrapStream","doStream","generatedText","rest","transformStream","TransformStream","transform","controller","textDelta","enqueue","flush","pipeThrough","wrapVercelLanguageModel","wrappedModel","wrapLanguageModel","PostHogAnthropic","AnthropicOriginal","anthropicConfig","WrappedMessages","Messages","anthropicParams","cache_creation_input_tokens","cache_read_input_tokens","PostHogGoogleGenAI","geminiConfig","GoogleGenAI","models","WrappedModels","generateContent","geminiParams","formatInput","contents","formatOutput","usageMetadata","promptTokenCount","candidatesTokenCount","generateContentStream","item","String","candidates","candidate","parts","filter","part","join","camelcaseModule","camelcase","snakeCase","LangChainCallbackHandler","BaseCallbackHandler","Error","runs","parentTree","debug","handleChainStart","chain","runId","parentRunId","tags","metadata","runType","runName","_logDebugEvent","_setParentOfRun","_setTraceOrSpanMetadata","handleChainEnd","outputs","kwargs","_popRunAndCaptureTraceOrSpan","handleChainError","handleChatModelStart","extraParams","flat","m","_convertMessageToDict","_setLLMMetadata","handleLLMStart","prompts","handleLLMEnd","_popRunAndCaptureGeneration","handleLLMError","err","handleToolStart","tool","handleToolEnd","handleToolError","handleRetrieverStart","retriever","query","handleRetrieverEnd","documents","handleRetrieverError","handleAgentAction","action","handleAgentEnd","_popParentOfRun","_findRootRun","id","defaultName","_getLangchainRunName","runNameFound","generation","invocation_params","ls_model_name","ls_provider","openai_api_base","baseUrl","_popRunMetadata","endTime","run","warn","_getTraceId","_getParentRunId","actualParentRunId","_captureTraceOrSpan","eventName","eventProperties","$ai_input_state","$ai_span_name","$ai_span_id","assign","_captureGeneration","$ai_parent_id","additionalTokenData","parseUsage","generations","lastGeneration","gen","extra","log","arg","messageDict","messageType","_getType","additional_kwargs","_parseUsageModel","conversionList","parsedUsage","reduce","acc","modelKey","typeKey","finalCount","sum","tokenCount","input_token_details","cache_read","output_token_details","llmUsage","llmUsageKeys","llmOutput","find","genChunk","generationInfo","usage_metadata","messageChunk","responseMetadata","response_metadata","chunkUsage"],"mappings":"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"}