@posthog/ai 5.2.2 → 5.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +245 -0
- package/{lib → dist}/anthropic/index.cjs +7 -12
- package/{lib → dist}/anthropic/index.cjs.map +1 -1
- package/{lib → dist}/anthropic/index.mjs +4 -5
- package/{lib → dist}/anthropic/index.mjs.map +1 -1
- package/{lib → dist}/gemini/index.cjs +1 -1
- package/{lib → dist}/gemini/index.cjs.map +1 -1
- package/{lib → dist}/gemini/index.mjs.map +1 -1
- package/{lib → dist}/index.cjs +547 -479
- package/dist/index.cjs.map +1 -0
- package/{lib → dist}/index.mjs +530 -456
- package/dist/index.mjs.map +1 -0
- package/{lib → dist}/langchain/index.cjs +150 -110
- package/dist/langchain/index.cjs.map +1 -0
- package/{lib → dist}/langchain/index.mjs +147 -104
- package/dist/langchain/index.mjs.map +1 -0
- package/{lib → dist}/openai/index.cjs +7 -1
- package/dist/openai/index.cjs.map +1 -0
- package/{lib → dist}/openai/index.mjs +6 -0
- package/dist/openai/index.mjs.map +1 -0
- package/{lib → dist}/vercel/index.cjs +0 -2
- package/{lib → dist}/vercel/index.cjs.map +1 -1
- package/{lib → dist}/vercel/index.mjs.map +1 -1
- package/package.json +42 -33
- package/CHANGELOG.md +0 -89
- package/index.ts +0 -1
- package/lib/index.cjs.map +0 -1
- package/lib/index.mjs.map +0 -1
- package/lib/langchain/index.cjs.map +0 -1
- package/lib/langchain/index.mjs.map +0 -1
- package/lib/openai/index.cjs.map +0 -1
- package/lib/openai/index.mjs.map +0 -1
- package/src/anthropic/index.ts +0 -211
- package/src/gemini/index.ts +0 -254
- package/src/index.ts +0 -13
- package/src/langchain/callbacks.ts +0 -640
- package/src/langchain/index.ts +0 -1
- package/src/openai/azure.ts +0 -481
- package/src/openai/index.ts +0 -498
- package/src/utils.ts +0 -287
- package/src/vercel/index.ts +0 -1
- package/src/vercel/middleware.ts +0 -393
- package/tests/callbacks.test.ts +0 -48
- package/tests/gemini.test.ts +0 -344
- package/tests/openai.test.ts +0 -403
- package/tsconfig.json +0 -10
- /package/{lib → dist}/anthropic/index.d.ts +0 -0
- /package/{lib → dist}/gemini/index.d.ts +0 -0
- /package/{lib → dist}/gemini/index.mjs +0 -0
- /package/{lib → dist}/index.d.ts +0 -0
- /package/{lib → dist}/langchain/index.d.ts +0 -0
- /package/{lib → dist}/openai/index.d.ts +0 -0
- /package/{lib → dist}/vercel/index.d.ts +0 -0
- /package/{lib → dist}/vercel/index.mjs +0 -0
package/lib/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"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 { OpenAI as 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\nconst Chat = OpenAIOrignal.Chat\nconst Completions = Chat.Completions\nconst Responses = OpenAIOrignal.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 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 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,\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,\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,\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,\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 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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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 ?? uuidv4(),\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 ?? uuidv4(),\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 ?? uuidv4(),\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 ?? uuidv4(),\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,\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,\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,\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,\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,\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,\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,\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,\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,\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 { LLMResult } from '@langchain/core/outputs'\nimport type { AgentAction, AgentFinish } from '@langchain/core/agents'\nimport type { DocumentInterface } from '@langchain/core/documents'\nimport { ToolCall } from '@langchain/core/messages/tool'\nimport { BaseMessage } from '@langchain/core/messages'\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 _convertLcToolCallsToOai(toolCalls: ToolCall[]): Record<string, any>[] {\n return toolCalls.map((toolCall: ToolCall) => ({\n type: 'function',\n id: toolCall.id,\n function: {\n name: toolCall.name,\n arguments: JSON.stringify(toolCall.args),\n },\n }))\n }\n\n private _convertMessageToDict(message: any): Record<string, any> {\n let messageDict: Record<string, any> = {}\n\n const messageType: string = message.getType()\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\n if (message.tool_calls) {\n messageDict.tool_calls = this._convertLcToolCallsToOai(message.tool_calls)\n }\n\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, content: String(message.content) }\n break\n }\n\n if (message.additional_kwargs) {\n messageDict = { ...messageDict, ...message.additional_kwargs }\n }\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","Chat","OpenAIOrignal","Completions","Responses","PostHogOpenAI","constructor","config","posthog","openAIConfig","phClient","chat","WrappedChat","responses","WrappedResponses","parentClient","completions","WrappedCompletions","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","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","_convertLcToolCallsToOai","toolCall","function","arguments","messageDict","messageType","getType","tool_calls","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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"}
|