@posthog/ai 5.1.0 → 5.2.1

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.
@@ -2,14 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var OpenAIOrignal = require('openai');
5
+ var openai = require('openai');
6
6
  var uuid = require('uuid');
7
7
  var buffer = require('buffer');
8
8
 
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
-
11
- var OpenAIOrignal__default = /*#__PURE__*/_interopDefaultLegacy(OpenAIOrignal);
12
-
13
9
  const STRING_FORMAT = 'utf8';
14
10
  const getModelParams = params => {
15
11
  if (!params) {
@@ -143,7 +139,10 @@ const sendEventToPosthog = async ({
143
139
  }
144
140
  };
145
141
 
146
- class PostHogOpenAI extends OpenAIOrignal__default["default"] {
142
+ const Chat = openai.OpenAI.Chat;
143
+ const Completions = Chat.Completions;
144
+ const Responses = openai.OpenAI.Responses;
145
+ class PostHogOpenAI extends openai.OpenAI {
147
146
  constructor(config) {
148
147
  const {
149
148
  posthog,
@@ -155,13 +154,13 @@ class PostHogOpenAI extends OpenAIOrignal__default["default"] {
155
154
  this.responses = new WrappedResponses(this, this.phClient);
156
155
  }
157
156
  }
158
- class WrappedChat extends OpenAIOrignal__default["default"].Chat {
157
+ class WrappedChat extends Chat {
159
158
  constructor(parentClient, phClient) {
160
159
  super(parentClient);
161
160
  this.completions = new WrappedCompletions(parentClient, phClient);
162
161
  }
163
162
  }
164
- class WrappedCompletions extends OpenAIOrignal__default["default"].Chat.Completions {
163
+ class WrappedCompletions extends Completions {
165
164
  constructor(client, phClient) {
166
165
  super(client);
167
166
  this.phClient = phClient;
@@ -214,7 +213,7 @@ class WrappedCompletions extends OpenAIOrignal__default["default"].Chat.Completi
214
213
  const latency = (Date.now() - startTime) / 1000;
215
214
  await sendEventToPosthog({
216
215
  client: this.phClient,
217
- distinctId: posthogDistinctId ?? traceId,
216
+ distinctId: posthogDistinctId,
218
217
  traceId,
219
218
  model: openAIParams.model,
220
219
  provider: 'openai',
@@ -233,7 +232,7 @@ class WrappedCompletions extends OpenAIOrignal__default["default"].Chat.Completi
233
232
  } catch (error) {
234
233
  await sendEventToPosthog({
235
234
  client: this.phClient,
236
- distinctId: posthogDistinctId ?? traceId,
235
+ distinctId: posthogDistinctId,
237
236
  traceId,
238
237
  model: openAIParams.model,
239
238
  provider: 'openai',
@@ -265,7 +264,7 @@ class WrappedCompletions extends OpenAIOrignal__default["default"].Chat.Completi
265
264
  const latency = (Date.now() - startTime) / 1000;
266
265
  await sendEventToPosthog({
267
266
  client: this.phClient,
268
- distinctId: posthogDistinctId ?? traceId,
267
+ distinctId: posthogDistinctId,
269
268
  traceId,
270
269
  model: openAIParams.model,
271
270
  provider: 'openai',
@@ -288,7 +287,7 @@ class WrappedCompletions extends OpenAIOrignal__default["default"].Chat.Completi
288
287
  }, async error => {
289
288
  await sendEventToPosthog({
290
289
  client: this.phClient,
291
- distinctId: posthogDistinctId ?? traceId,
290
+ distinctId: posthogDistinctId,
292
291
  traceId,
293
292
  model: openAIParams.model,
294
293
  provider: 'openai',
@@ -312,7 +311,7 @@ class WrappedCompletions extends OpenAIOrignal__default["default"].Chat.Completi
312
311
  }
313
312
  }
314
313
  }
315
- class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
314
+ class WrappedResponses extends Responses {
316
315
  constructor(client, phClient) {
317
316
  super(client);
318
317
  this.phClient = phClient;
@@ -366,7 +365,7 @@ class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
366
365
  const latency = (Date.now() - startTime) / 1000;
367
366
  await sendEventToPosthog({
368
367
  client: this.phClient,
369
- distinctId: posthogDistinctId ?? traceId,
368
+ distinctId: posthogDistinctId,
370
369
  traceId,
371
370
  model: openAIParams.model,
372
371
  provider: 'openai',
@@ -382,7 +381,7 @@ class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
382
381
  } catch (error) {
383
382
  await sendEventToPosthog({
384
383
  client: this.phClient,
385
- distinctId: posthogDistinctId ?? traceId,
384
+ distinctId: posthogDistinctId,
386
385
  traceId,
387
386
  model: openAIParams.model,
388
387
  provider: 'openai',
@@ -412,7 +411,7 @@ class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
412
411
  const latency = (Date.now() - startTime) / 1000;
413
412
  await sendEventToPosthog({
414
413
  client: this.phClient,
415
- distinctId: posthogDistinctId ?? traceId,
414
+ distinctId: posthogDistinctId,
416
415
  traceId,
417
416
  model: openAIParams.model,
418
417
  provider: 'openai',
@@ -435,7 +434,7 @@ class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
435
434
  }, async error => {
436
435
  await sendEventToPosthog({
437
436
  client: this.phClient,
438
- distinctId: posthogDistinctId ?? traceId,
437
+ distinctId: posthogDistinctId,
439
438
  traceId,
440
439
  model: openAIParams.model,
441
440
  provider: 'openai',
@@ -483,7 +482,7 @@ class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
483
482
  const latency = (Date.now() - startTime) / 1000;
484
483
  await sendEventToPosthog({
485
484
  client: this.phClient,
486
- distinctId: posthogDistinctId ?? traceId,
485
+ distinctId: posthogDistinctId,
487
486
  traceId,
488
487
  model: openAIParams.model,
489
488
  provider: 'openai',
@@ -505,7 +504,7 @@ class WrappedResponses extends OpenAIOrignal__default["default"].Responses {
505
504
  }, async error => {
506
505
  await sendEventToPosthog({
507
506
  client: this.phClient,
508
- distinctId: posthogDistinctId ?? traceId,
507
+ distinctId: posthogDistinctId,
509
508
  traceId,
510
509
  model: openAIParams.model,
511
510
  provider: 'openai',
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/utils.ts","../../src/openai/index.ts"],"sourcesContent":["import { PostHog } from 'posthog-node'\nimport { Buffer } from 'buffer'\nimport OpenAIOrignal from 'openai'\nimport AnthropicOriginal from '@anthropic-ai/sdk'\n\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype MessageCreateParams = AnthropicOriginal.Messages.MessageCreateParams\ntype ResponseCreateParams = OpenAIOrignal.Responses.ResponseCreateParams\n\n// limit large outputs by truncating to 200kb (approx 200k bytes)\nexport const MAX_OUTPUT_SIZE = 200000\nconst STRING_FORMAT = 'utf8'\n\nexport interface MonitoringParams {\n posthogDistinctId?: string\n posthogTraceId?: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n posthogModelOverride?: string\n posthogProviderOverride?: string\n posthogCostOverride?: CostOverride\n posthogCaptureImmediate?: boolean\n}\n\nexport interface CostOverride {\n inputCost: number\n outputCost: number\n}\n\nexport const getModelParams = (\n params: ((ChatCompletionCreateParamsBase | MessageCreateParams | ResponseCreateParams) & MonitoringParams) | null\n): Record<string, any> => {\n if (!params) {\n return {}\n }\n const modelParams: Record<string, any> = {}\n const paramKeys = [\n 'temperature',\n 'max_tokens',\n 'max_completion_tokens',\n 'top_p',\n 'frequency_penalty',\n 'presence_penalty',\n 'n',\n 'stop',\n 'stream',\n 'streaming',\n ] as const\n\n for (const key of paramKeys) {\n if (key in params && (params as any)[key] !== undefined) {\n modelParams[key] = (params as any)[key]\n }\n }\n return modelParams\n}\n\n/**\n * Helper to format responses (non-streaming) for consumption, mirroring Python's openai vs. anthropic approach.\n */\nexport const formatResponse = (response: any, provider: string): Array<{ role: string; content: string }> => {\n if (!response) {\n return []\n }\n if (provider === 'anthropic') {\n return formatResponseAnthropic(response)\n } else if (provider === 'openai') {\n return formatResponseOpenAI(response)\n } else if (provider === 'gemini') {\n return formatResponseGemini(response)\n }\n return []\n}\n\nexport const formatResponseAnthropic = (response: any): Array<{ role: string; content: string }> => {\n // Example approach if \"response.content\" holds array of text segments, etc.\n const output: Array<{ role: string; content: string }> = []\n for (const choice of response.content ?? []) {\n if (choice?.text) {\n output.push({\n role: 'assistant',\n content: choice.text,\n })\n }\n }\n return output\n}\n\nexport const formatResponseOpenAI = (response: any): Array<{ role: string; content: string }> => {\n const output: Array<{ role: string; content: string }> = []\n for (const choice of response.choices ?? []) {\n if (choice.message?.content) {\n output.push({\n role: choice.message.role,\n content: choice.message.content,\n })\n }\n }\n return output\n}\n\nexport const formatResponseGemini = (response: any): Array<{ role: string; content: string }> => {\n const output: Array<{ role: string; content: string }> = []\n\n if (response.text) {\n output.push({\n role: 'assistant',\n content: response.text,\n })\n return output\n }\n\n if (response.candidates && Array.isArray(response.candidates)) {\n for (const candidate of response.candidates) {\n if (candidate.content && candidate.content.parts) {\n const text = candidate.content.parts\n .filter((part: any) => part.text)\n .map((part: any) => part.text)\n .join('')\n if (text) {\n output.push({\n role: 'assistant',\n content: text,\n })\n }\n }\n }\n }\n\n return output\n}\n\nexport const mergeSystemPrompt = (params: MessageCreateParams & MonitoringParams, provider: string): any => {\n if (provider == 'anthropic') {\n const messages = params.messages || []\n if (!(params as any).system) {\n return messages\n }\n const systemMessage = (params as any).system\n return [{ role: 'system', content: systemMessage }, ...messages]\n }\n return params.messages\n}\n\nexport const withPrivacyMode = (client: PostHog, privacyMode: boolean, input: any): any => {\n return (client as any).privacy_mode || privacyMode ? null : input\n}\n\nexport const truncate = (str: string): string => {\n try {\n const buffer = Buffer.from(str, STRING_FORMAT)\n if (buffer.length <= MAX_OUTPUT_SIZE) {\n return str\n }\n const truncatedBuffer = buffer.slice(0, MAX_OUTPUT_SIZE)\n return `${truncatedBuffer.toString(STRING_FORMAT)}... [truncated]`\n } catch (error) {\n console.error('Error truncating, likely not a string')\n return str\n }\n}\n\nexport type SendEventToPosthogParams = {\n client: PostHog\n distinctId?: string\n traceId: string\n model: string\n provider: string\n input: any\n output: any\n latency: number\n baseURL: string\n httpStatus: number\n usage?: {\n inputTokens?: number\n outputTokens?: number\n reasoningTokens?: any\n cacheReadInputTokens?: any\n cacheCreationInputTokens?: any\n }\n params: (ChatCompletionCreateParamsBase | MessageCreateParams | ResponseCreateParams) & MonitoringParams\n isError?: boolean\n error?: string\n tools?: any\n captureImmediate?: boolean\n}\n\nfunction sanitizeValues(obj: any): any {\n if (obj === undefined || obj === null) {\n return obj\n }\n const jsonSafe = JSON.parse(JSON.stringify(obj))\n if (typeof jsonSafe === 'string') {\n return Buffer.from(jsonSafe, STRING_FORMAT).toString(STRING_FORMAT)\n } else if (Array.isArray(jsonSafe)) {\n return jsonSafe.map(sanitizeValues)\n } else if (jsonSafe && typeof jsonSafe === 'object') {\n return Object.fromEntries(Object.entries(jsonSafe).map(([k, v]) => [k, sanitizeValues(v)]))\n }\n return jsonSafe\n}\n\nexport const sendEventToPosthog = async ({\n client,\n distinctId,\n traceId,\n model,\n provider,\n input,\n output,\n latency,\n baseURL,\n params,\n httpStatus = 200,\n usage = {},\n isError = false,\n error,\n tools,\n captureImmediate = false,\n}: SendEventToPosthogParams): Promise<void> => {\n if (!client.capture) {\n return Promise.resolve()\n }\n // sanitize input and output for UTF-8 validity\n const safeInput = sanitizeValues(input)\n const safeOutput = sanitizeValues(output)\n const safeError = sanitizeValues(error)\n\n let errorData = {}\n if (isError) {\n errorData = {\n $ai_is_error: true,\n $ai_error: safeError,\n }\n }\n let costOverrideData = {}\n if (params.posthogCostOverride) {\n const inputCostUSD = (params.posthogCostOverride.inputCost ?? 0) * (usage.inputTokens ?? 0)\n const outputCostUSD = (params.posthogCostOverride.outputCost ?? 0) * (usage.outputTokens ?? 0)\n costOverrideData = {\n $ai_input_cost_usd: inputCostUSD,\n $ai_output_cost_usd: outputCostUSD,\n $ai_total_cost_usd: inputCostUSD + outputCostUSD,\n }\n }\n\n const additionalTokenValues = {\n ...(usage.reasoningTokens ? { $ai_reasoning_tokens: usage.reasoningTokens } : {}),\n ...(usage.cacheReadInputTokens ? { $ai_cache_read_input_tokens: usage.cacheReadInputTokens } : {}),\n ...(usage.cacheCreationInputTokens ? { $ai_cache_creation_input_tokens: usage.cacheCreationInputTokens } : {}),\n }\n\n const properties = {\n $ai_provider: params.posthogProviderOverride ?? provider,\n $ai_model: params.posthogModelOverride ?? model,\n $ai_model_parameters: getModelParams(params),\n $ai_input: withPrivacyMode(client, params.posthogPrivacyMode ?? false, safeInput),\n $ai_output_choices: withPrivacyMode(client, params.posthogPrivacyMode ?? false, safeOutput),\n $ai_http_status: httpStatus,\n $ai_input_tokens: usage.inputTokens ?? 0,\n $ai_output_tokens: usage.outputTokens ?? 0,\n ...additionalTokenValues,\n $ai_latency: latency,\n $ai_trace_id: traceId,\n $ai_base_url: baseURL,\n ...params.posthogProperties,\n ...(distinctId ? {} : { $process_person_profile: false }),\n ...(tools ? { $ai_tools: tools } : {}),\n ...errorData,\n ...costOverrideData,\n }\n\n const event = {\n distinctId: distinctId ?? traceId,\n event: '$ai_generation',\n properties,\n groups: params.posthogGroups,\n }\n\n if (captureImmediate) {\n // await capture promise to send single event in serverless environments\n await client.captureImmediate(event)\n } else {\n client.capture(event)\n }\n}\n","import OpenAIOrignal, { ClientOptions } from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { formatResponseOpenAI, MonitoringParams, sendEventToPosthog } from '../utils'\nimport type { APIPromise } from 'openai'\nimport type { Stream } from 'openai/streaming'\nimport type { ParsedResponse } from 'openai/resources/responses/responses'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\ntype ResponsesCreateParamsBase = OpenAIOrignal.Responses.ResponseCreateParams\ntype ResponsesCreateParamsNonStreaming = OpenAIOrignal.Responses.ResponseCreateParamsNonStreaming\ntype ResponsesCreateParamsStreaming = OpenAIOrignal.Responses.ResponseCreateParamsStreaming\n\ninterface MonitoringOpenAIConfig extends ClientOptions {\n apiKey: string\n posthog: PostHog\n baseURL?: string\n}\n\ntype RequestOptions = Record<string, any>\n\nexport class PostHogOpenAI extends OpenAIOrignal {\n private readonly phClient: PostHog\n public chat: WrappedChat\n public responses: WrappedResponses\n\n constructor(config: MonitoringOpenAIConfig) {\n const { posthog, ...openAIConfig } = config\n super(openAIConfig)\n this.phClient = posthog\n this.chat = new WrappedChat(this, this.phClient)\n this.responses = new WrappedResponses(this, this.phClient)\n }\n}\n\nexport class WrappedChat extends OpenAIOrignal.Chat {\n constructor(parentClient: PostHogOpenAI, phClient: PostHog) {\n super(parentClient)\n this.completions = new WrappedCompletions(parentClient, phClient)\n }\n\n public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends OpenAIOrignal.Chat.Completions {\n private readonly phClient: PostHog\n\n constructor(client: OpenAIOrignal, phClient: PostHog) {\n super(client)\n this.phClient = phClient\n }\n\n // --- Overload #1: Non-streaming\n public create(\n body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion>\n\n // --- Overload #2: Streaming\n public create(\n body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<ChatCompletionChunk>>\n\n // --- Overload #3: Generic base\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n // --- Implementation Signature\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n posthogCaptureImmediate,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n\n const parentPromise = super.create(openAIParams, options)\n\n if (openAIParams.stream) {\n return parentPromise.then((value) => {\n if ('tee' in value) {\n const [stream1, stream2] = value.tee()\n ;(async () => {\n try {\n let accumulatedContent = ''\n let usage: {\n inputTokens?: number\n outputTokens?: number\n reasoningTokens?: number\n cacheReadInputTokens?: number\n } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n\n for await (const chunk of stream1) {\n const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n accumulatedContent += delta\n if (chunk.usage) {\n usage = {\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,\n cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,\n }\n }\n }\n\n const latency = (Date.now() - startTime) / 1000\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: [{ content: accumulatedContent, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n captureImmediate: posthogCaptureImmediate,\n })\n } catch (error: any) {\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: { inputTokens: 0, outputTokens: 0 },\n isError: true,\n error: JSON.stringify(error),\n captureImmediate: posthogCaptureImmediate,\n })\n }\n })()\n\n // Return the other stream to the user\n return stream2\n }\n return value\n }) as APIPromise<Stream<ChatCompletionChunk>>\n } else {\n const wrappedPromise = parentPromise.then(\n async (result) => {\n if ('choices' in result) {\n const latency = (Date.now() - startTime) / 1000\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: formatResponseOpenAI(result),\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.prompt_tokens ?? 0,\n outputTokens: result.usage?.completion_tokens ?? 0,\n reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,\n cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n },\n captureImmediate: posthogCaptureImmediate,\n })\n }\n return result\n },\n async (error: any) => {\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n captureImmediate: posthogCaptureImmediate,\n })\n throw error\n }\n ) as APIPromise<ChatCompletion>\n\n return wrappedPromise\n }\n }\n}\n\nexport class WrappedResponses extends OpenAIOrignal.Responses {\n private readonly phClient: PostHog\n\n constructor(client: OpenAIOrignal, phClient: PostHog) {\n super(client)\n this.phClient = phClient\n }\n\n // --- Overload #1: Non-streaming\n public create(\n body: ResponsesCreateParamsNonStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<OpenAIOrignal.Responses.Response>\n\n // --- Overload #2: Streaming\n public create(\n body: ResponsesCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n\n // --- Overload #3: Generic base\n public create(\n body: ResponsesCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n\n // --- Implementation Signature\n public create(\n body: ResponsesCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n posthogCaptureImmediate,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n\n const parentPromise = super.create(openAIParams, options)\n\n if (openAIParams.stream) {\n return parentPromise.then((value) => {\n if ('tee' in value && typeof (value as any).tee === 'function') {\n const [stream1, stream2] = (value as any).tee()\n ;(async () => {\n try {\n let finalContent: any[] = []\n let usage: {\n inputTokens?: number\n outputTokens?: number\n reasoningTokens?: number\n cacheReadInputTokens?: number\n } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n\n for await (const chunk of stream1) {\n if (\n chunk.type === 'response.completed' &&\n 'response' in chunk &&\n chunk.response?.output &&\n chunk.response.output.length > 0\n ) {\n finalContent = chunk.response.output\n }\n if ('response' in chunk && chunk.response?.usage) {\n usage = {\n inputTokens: chunk.response.usage.input_tokens ?? 0,\n outputTokens: chunk.response.usage.output_tokens ?? 0,\n reasoningTokens: chunk.response.usage.output_tokens_details?.reasoning_tokens ?? 0,\n cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0,\n }\n }\n }\n\n const latency = (Date.now() - startTime) / 1000\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.input,\n output: finalContent,\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n captureImmediate: posthogCaptureImmediate,\n })\n } catch (error: any) {\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.input,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: { inputTokens: 0, outputTokens: 0 },\n isError: true,\n error: JSON.stringify(error),\n captureImmediate: posthogCaptureImmediate,\n })\n }\n })()\n\n return stream2\n }\n return value\n }) as APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>\n } else {\n const wrappedPromise = parentPromise.then(\n async (result) => {\n if ('output' in result) {\n const latency = (Date.now() - startTime) / 1000\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.input,\n output: result.output,\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.input_tokens ?? 0,\n outputTokens: result.usage?.output_tokens ?? 0,\n reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,\n cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,\n },\n captureImmediate: posthogCaptureImmediate,\n })\n }\n return result\n },\n async (error: any) => {\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.input,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n captureImmediate: posthogCaptureImmediate,\n })\n throw error\n }\n ) as APIPromise<OpenAIOrignal.Responses.Response>\n\n return wrappedPromise\n }\n }\n\n public parse<Params extends ResponsesCreateParamsBase, ParsedT = any>(\n body: Params & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ParsedResponse<ParsedT>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n posthogCaptureImmediate,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n\n // Create a temporary instance that bypasses our wrapped create method\n const originalCreate = super.create.bind(this)\n const originalSelf = this as any\n const tempCreate = originalSelf.create\n originalSelf.create = originalCreate\n\n try {\n const parentPromise = super.parse(openAIParams, options)\n\n const wrappedPromise = parentPromise.then(\n async (result) => {\n const latency = (Date.now() - startTime) / 1000\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.input,\n output: result.output,\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.input_tokens ?? 0,\n outputTokens: result.usage?.output_tokens ?? 0,\n reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,\n cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,\n },\n captureImmediate: posthogCaptureImmediate,\n })\n return result\n },\n async (error: any) => {\n await sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.input,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n captureImmediate: posthogCaptureImmediate,\n })\n throw error\n }\n )\n\n return wrappedPromise as APIPromise<ParsedResponse<ParsedT>>\n } finally {\n // Restore our wrapped create method\n originalSelf.create = tempCreate\n }\n }\n}\n\nexport default PostHogOpenAI\n\nexport { PostHogOpenAI as OpenAI }\n"],"names":["STRING_FORMAT","getModelParams","params","modelParams","paramKeys","key","undefined","formatResponseOpenAI","response","output","choice","choices","message","content","push","role","withPrivacyMode","client","privacyMode","input","privacy_mode","sanitizeValues","obj","jsonSafe","JSON","parse","stringify","Buffer","from","toString","Array","isArray","map","Object","fromEntries","entries","k","v","sendEventToPosthog","distinctId","traceId","model","provider","latency","baseURL","httpStatus","usage","isError","error","tools","captureImmediate","capture","Promise","resolve","safeInput","safeOutput","safeError","errorData","$ai_is_error","$ai_error","costOverrideData","posthogCostOverride","inputCostUSD","inputCost","inputTokens","outputCostUSD","outputCost","outputTokens","$ai_input_cost_usd","$ai_output_cost_usd","$ai_total_cost_usd","additionalTokenValues","reasoningTokens","$ai_reasoning_tokens","cacheReadInputTokens","$ai_cache_read_input_tokens","cacheCreationInputTokens","$ai_cache_creation_input_tokens","properties","$ai_provider","posthogProviderOverride","$ai_model","posthogModelOverride","$ai_model_parameters","$ai_input","posthogPrivacyMode","$ai_output_choices","$ai_http_status","$ai_input_tokens","$ai_output_tokens","$ai_latency","$ai_trace_id","$ai_base_url","posthogProperties","$process_person_profile","$ai_tools","event","groups","posthogGroups","PostHogOpenAI","OpenAIOrignal","constructor","config","posthog","openAIConfig","phClient","chat","WrappedChat","responses","WrappedResponses","Chat","parentClient","completions","WrappedCompletions","Completions","create","body","options","posthogDistinctId","posthogTraceId","posthogCaptureImmediate","openAIParams","uuidv4","startTime","Date","now","parentPromise","stream","then","value","stream1","stream2","tee","accumulatedContent","chunk","delta","prompt_tokens","completion_tokens","completion_tokens_details","reasoning_tokens","prompt_tokens_details","cached_tokens","messages","status","wrappedPromise","result","Responses","finalContent","type","length","input_tokens","output_tokens","output_tokens_details","input_tokens_details","originalCreate","bind","originalSelf","tempCreate"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/utils.ts","../../src/openai/index.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"],"names":["STRING_FORMAT","getModelParams","params","modelParams","paramKeys","key","undefined","formatResponseOpenAI","response","output","choice","choices","message","content","push","role","withPrivacyMode","client","privacyMode","input","privacy_mode","sanitizeValues","obj","jsonSafe","JSON","parse","stringify","Buffer","from","toString","Array","isArray","map","Object","fromEntries","entries","k","v","sendEventToPosthog","distinctId","traceId","model","provider","latency","baseURL","httpStatus","usage","isError","error","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","messages","status","wrappedPromise","result","finalContent","type","length","input_tokens","output_tokens","output_tokens_details","input_tokens_details","originalCreate","bind","originalSelf","tempCreate"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import OpenAIOrignal, { APIPromise, ClientOptions } from 'openai';
1
+ import { OpenAI, APIPromise, ClientOptions } from 'openai';
2
2
  import { PostHog } from 'posthog-node';
3
3
  import { Stream } from 'openai/streaming';
4
4
  import { ParsedResponse } from 'openai/resources/responses/responses';
@@ -19,43 +19,46 @@ interface CostOverride {
19
19
  outputCost: number;
20
20
  }
21
21
 
22
- type ChatCompletion = OpenAIOrignal.ChatCompletion;
23
- type ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk;
24
- type ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams;
25
- type ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming;
26
- type ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming;
27
- type ResponsesCreateParamsBase = OpenAIOrignal.Responses.ResponseCreateParams;
28
- type ResponsesCreateParamsNonStreaming = OpenAIOrignal.Responses.ResponseCreateParamsNonStreaming;
29
- type ResponsesCreateParamsStreaming = OpenAIOrignal.Responses.ResponseCreateParamsStreaming;
22
+ declare const Chat: typeof OpenAI.Chat;
23
+ declare const Completions: typeof OpenAI.Chat.Completions;
24
+ declare const Responses: typeof OpenAI.Responses;
25
+ type ChatCompletion = OpenAI.ChatCompletion;
26
+ type ChatCompletionChunk = OpenAI.ChatCompletionChunk;
27
+ type ChatCompletionCreateParamsBase = OpenAI.Chat.Completions.ChatCompletionCreateParams;
28
+ type ChatCompletionCreateParamsNonStreaming = OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming;
29
+ type ChatCompletionCreateParamsStreaming = OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming;
30
+ type ResponsesCreateParamsBase = OpenAI.Responses.ResponseCreateParams;
31
+ type ResponsesCreateParamsNonStreaming = OpenAI.Responses.ResponseCreateParamsNonStreaming;
32
+ type ResponsesCreateParamsStreaming = OpenAI.Responses.ResponseCreateParamsStreaming;
30
33
  interface MonitoringOpenAIConfig extends ClientOptions {
31
34
  apiKey: string;
32
35
  posthog: PostHog;
33
36
  baseURL?: string;
34
37
  }
35
38
  type RequestOptions = Record<string, any>;
36
- declare class PostHogOpenAI extends OpenAIOrignal {
39
+ declare class PostHogOpenAI extends OpenAI {
37
40
  private readonly phClient;
38
41
  chat: WrappedChat;
39
42
  responses: WrappedResponses;
40
43
  constructor(config: MonitoringOpenAIConfig);
41
44
  }
42
- declare class WrappedChat extends OpenAIOrignal.Chat {
45
+ declare class WrappedChat extends Chat {
43
46
  constructor(parentClient: PostHogOpenAI, phClient: PostHog);
44
47
  completions: WrappedCompletions;
45
48
  }
46
- declare class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
49
+ declare class WrappedCompletions extends Completions {
47
50
  private readonly phClient;
48
- constructor(client: OpenAIOrignal, phClient: PostHog);
51
+ constructor(client: OpenAI, phClient: PostHog);
49
52
  create(body: ChatCompletionCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<ChatCompletion>;
50
53
  create(body: ChatCompletionCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<ChatCompletionChunk>>;
51
54
  create(body: ChatCompletionCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>;
52
55
  }
53
- declare class WrappedResponses extends OpenAIOrignal.Responses {
56
+ declare class WrappedResponses extends Responses {
54
57
  private readonly phClient;
55
- constructor(client: OpenAIOrignal, phClient: PostHog);
56
- create(body: ResponsesCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<OpenAIOrignal.Responses.Response>;
57
- create(body: ResponsesCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>;
58
- create(body: ResponsesCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>;
58
+ constructor(client: OpenAI, phClient: PostHog);
59
+ create(body: ResponsesCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<OpenAI.Responses.Response>;
60
+ create(body: ResponsesCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<OpenAI.Responses.ResponseStreamEvent>>;
61
+ create(body: ResponsesCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<OpenAI.Responses.Response | Stream<OpenAI.Responses.ResponseStreamEvent>>;
59
62
  parse<Params extends ResponsesCreateParamsBase, ParsedT = any>(body: Params & MonitoringParams, options?: RequestOptions): APIPromise<ParsedResponse<ParsedT>>;
60
63
  }
61
64
 
@@ -1,4 +1,4 @@
1
- import OpenAIOrignal from 'openai';
1
+ import { OpenAI } from 'openai';
2
2
  import { v4 } from 'uuid';
3
3
  import { Buffer } from 'buffer';
4
4
 
@@ -135,7 +135,10 @@ const sendEventToPosthog = async ({
135
135
  }
136
136
  };
137
137
 
138
- class PostHogOpenAI extends OpenAIOrignal {
138
+ const Chat = OpenAI.Chat;
139
+ const Completions = Chat.Completions;
140
+ const Responses = OpenAI.Responses;
141
+ class PostHogOpenAI extends OpenAI {
139
142
  constructor(config) {
140
143
  const {
141
144
  posthog,
@@ -147,13 +150,13 @@ class PostHogOpenAI extends OpenAIOrignal {
147
150
  this.responses = new WrappedResponses(this, this.phClient);
148
151
  }
149
152
  }
150
- class WrappedChat extends OpenAIOrignal.Chat {
153
+ class WrappedChat extends Chat {
151
154
  constructor(parentClient, phClient) {
152
155
  super(parentClient);
153
156
  this.completions = new WrappedCompletions(parentClient, phClient);
154
157
  }
155
158
  }
156
- class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
159
+ class WrappedCompletions extends Completions {
157
160
  constructor(client, phClient) {
158
161
  super(client);
159
162
  this.phClient = phClient;
@@ -206,7 +209,7 @@ class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
206
209
  const latency = (Date.now() - startTime) / 1000;
207
210
  await sendEventToPosthog({
208
211
  client: this.phClient,
209
- distinctId: posthogDistinctId ?? traceId,
212
+ distinctId: posthogDistinctId,
210
213
  traceId,
211
214
  model: openAIParams.model,
212
215
  provider: 'openai',
@@ -225,7 +228,7 @@ class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
225
228
  } catch (error) {
226
229
  await sendEventToPosthog({
227
230
  client: this.phClient,
228
- distinctId: posthogDistinctId ?? traceId,
231
+ distinctId: posthogDistinctId,
229
232
  traceId,
230
233
  model: openAIParams.model,
231
234
  provider: 'openai',
@@ -257,7 +260,7 @@ class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
257
260
  const latency = (Date.now() - startTime) / 1000;
258
261
  await sendEventToPosthog({
259
262
  client: this.phClient,
260
- distinctId: posthogDistinctId ?? traceId,
263
+ distinctId: posthogDistinctId,
261
264
  traceId,
262
265
  model: openAIParams.model,
263
266
  provider: 'openai',
@@ -280,7 +283,7 @@ class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
280
283
  }, async error => {
281
284
  await sendEventToPosthog({
282
285
  client: this.phClient,
283
- distinctId: posthogDistinctId ?? traceId,
286
+ distinctId: posthogDistinctId,
284
287
  traceId,
285
288
  model: openAIParams.model,
286
289
  provider: 'openai',
@@ -304,7 +307,7 @@ class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
304
307
  }
305
308
  }
306
309
  }
307
- class WrappedResponses extends OpenAIOrignal.Responses {
310
+ class WrappedResponses extends Responses {
308
311
  constructor(client, phClient) {
309
312
  super(client);
310
313
  this.phClient = phClient;
@@ -358,7 +361,7 @@ class WrappedResponses extends OpenAIOrignal.Responses {
358
361
  const latency = (Date.now() - startTime) / 1000;
359
362
  await sendEventToPosthog({
360
363
  client: this.phClient,
361
- distinctId: posthogDistinctId ?? traceId,
364
+ distinctId: posthogDistinctId,
362
365
  traceId,
363
366
  model: openAIParams.model,
364
367
  provider: 'openai',
@@ -374,7 +377,7 @@ class WrappedResponses extends OpenAIOrignal.Responses {
374
377
  } catch (error) {
375
378
  await sendEventToPosthog({
376
379
  client: this.phClient,
377
- distinctId: posthogDistinctId ?? traceId,
380
+ distinctId: posthogDistinctId,
378
381
  traceId,
379
382
  model: openAIParams.model,
380
383
  provider: 'openai',
@@ -404,7 +407,7 @@ class WrappedResponses extends OpenAIOrignal.Responses {
404
407
  const latency = (Date.now() - startTime) / 1000;
405
408
  await sendEventToPosthog({
406
409
  client: this.phClient,
407
- distinctId: posthogDistinctId ?? traceId,
410
+ distinctId: posthogDistinctId,
408
411
  traceId,
409
412
  model: openAIParams.model,
410
413
  provider: 'openai',
@@ -427,7 +430,7 @@ class WrappedResponses extends OpenAIOrignal.Responses {
427
430
  }, async error => {
428
431
  await sendEventToPosthog({
429
432
  client: this.phClient,
430
- distinctId: posthogDistinctId ?? traceId,
433
+ distinctId: posthogDistinctId,
431
434
  traceId,
432
435
  model: openAIParams.model,
433
436
  provider: 'openai',
@@ -475,7 +478,7 @@ class WrappedResponses extends OpenAIOrignal.Responses {
475
478
  const latency = (Date.now() - startTime) / 1000;
476
479
  await sendEventToPosthog({
477
480
  client: this.phClient,
478
- distinctId: posthogDistinctId ?? traceId,
481
+ distinctId: posthogDistinctId,
479
482
  traceId,
480
483
  model: openAIParams.model,
481
484
  provider: 'openai',
@@ -497,7 +500,7 @@ class WrappedResponses extends OpenAIOrignal.Responses {
497
500
  }, async error => {
498
501
  await sendEventToPosthog({
499
502
  client: this.phClient,
500
- distinctId: posthogDistinctId ?? traceId,
503
+ distinctId: posthogDistinctId,
501
504
  traceId,
502
505
  model: openAIParams.model,
503
506
  provider: 'openai',