@posthog/ai 3.3.0 → 3.3.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/ai",
3
- "version": "3.3.0",
3
+ "version": "3.3.1",
4
4
  "description": "PostHog Node.js AI integrations",
5
5
  "repository": {
6
6
  "type": "git",
@@ -112,6 +112,24 @@ const mapVercelPrompt = (prompt: LanguageModelV1Prompt): PostHogInput[] => {
112
112
  })
113
113
  }
114
114
 
115
+ const mapVercelOutput = (result: any): PostHogInput[] => {
116
+ let output = {
117
+ ...(result.text ? { text: result.text } : {}),
118
+ ...(result.object ? { object: result.object } : {}),
119
+ ...(result.reasoning ? { reasoning: result.reasoning } : {}),
120
+ ...(result.response ? { response: result.response } : {}),
121
+ ...(result.finishReason ? { finishReason: result.finishReason } : {}),
122
+ ...(result.usage ? { usage: result.usage } : {}),
123
+ ...(result.warnings ? { warnings: result.warnings } : {}),
124
+ ...(result.providerMetadata ? { toolCalls: result.providerMetadata } : {}),
125
+ }
126
+ // if text and no object or reasoning, return text
127
+ if (output.text && !output.object && !output.reasoning) {
128
+ return [{ content: output.text, role: 'assistant' }]
129
+ }
130
+ return [{ content: JSON.stringify(output), role: 'assistant' }]
131
+ }
132
+
115
133
  const extractProvider = (model: LanguageModelV1): string => {
116
134
  // vercel provider is in the format of provider.endpoint
117
135
  const provider = model.provider.toLowerCase()
@@ -138,14 +156,14 @@ export const createInstrumentationMiddleware = (
138
156
  options.posthogModelOverride ?? (result.response?.modelId ? result.response.modelId : model.modelId)
139
157
  const provider = options.posthogProviderOverride ?? extractProvider(model)
140
158
  const baseURL = '' // cannot currently get baseURL from vercel
141
- let content = result.text || JSON.stringify(result)
159
+ let content = mapVercelOutput(result)
142
160
  // let tools = result.toolCalls
143
161
  let providerMetadata = result.providerMetadata
144
162
  let additionalTokenValues = {
145
163
  ...(providerMetadata?.openai?.reasoningTokens
146
164
  ? { reasoningTokens: providerMetadata.openai.reasoningTokens }
147
165
  : {}),
148
- ...(providerMetadata?.openai?.cachedPromptToken
166
+ ...(providerMetadata?.openai?.cachedPromptTokens
149
167
  ? { cacheReadInputTokens: providerMetadata.openai.cachedPromptTokens }
150
168
  : {}),
151
169
  ...(providerMetadata?.anthropic
@@ -233,8 +251,8 @@ export const createInstrumentationMiddleware = (
233
251
  if (chunk.providerMetadata?.openai?.reasoningTokens) {
234
252
  usage.reasoningTokens = chunk.providerMetadata.openai.reasoningTokens
235
253
  }
236
- if (chunk.providerMetadata?.openai?.cachedPromptToken) {
237
- usage.cacheReadInputTokens = chunk.providerMetadata.openai.cachedPromptToken
254
+ if (chunk.providerMetadata?.openai?.cachedPromptTokens) {
255
+ usage.cacheReadInputTokens = chunk.providerMetadata.openai.cachedPromptTokens
238
256
  }
239
257
  if (chunk.providerMetadata?.anthropic?.cacheReadInputTokens) {
240
258
  usage.cacheReadInputTokens = chunk.providerMetadata.anthropic.cacheReadInputTokens