{"version":3,"file":"index.mjs","sources":["../../src/utils.ts","../../src/vercel/middleware.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 { 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"],"names":["MAX_OUTPUT_SIZE","STRING_FORMAT","getModelParams","params","modelParams","paramKeys","key","undefined","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","provider","output","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","mapVercelParams","temperature","max_tokens","maxTokens","top_p","topP","frequency_penalty","frequencyPenalty","presence_penalty","presencePenalty","stop","stopSequences","stream","mapVercelPrompt","prompt","promptsArray","role","content","inputs","p","c","type","text","image","URL","mimeType","file","data","toolCallId","toolName","args","result","serialized","removedCount","initialSize","i","byteLength","shift","unshift","mapVercelOutput","normalizedResult","object","reasoning","response","finishReason","warnings","providerMetadata","toolCalls","files","name","size","jsonOutput","extractProvider","toLowerCase","providerName","split","createInstrumentationMiddleware","phClient","options","middleware","wrapGenerate","doGenerate","startTime","Date","now","mergedParams","modelId","openai","cachedPromptTokens","anthropic","posthogDistinctId","posthogTraceId","promptTokens","completionTokens","posthogCaptureImmediate","status","wrapStream","doStream","generatedText","rest","transformStream","TransformStream","transform","chunk","controller","textDelta","enqueue","flush","pipeThrough","wrapVercelLanguageModel","uuidv4","wrappedModel","wrapLanguageModel"],"mappings":"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"}