@posthog/ai 8.6.7 → 8.7.0

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.
@@ -544,7 +544,7 @@ function formatOpenAIResponsesInput(input, instructions) {
544
544
  return messages;
545
545
  }
546
546
 
547
- var version = "8.6.7";
547
+ var version = "8.7.0";
548
548
 
549
549
  const DEFAULT_MAX_DEPTH = 3;
550
550
  const MAX_STACK_LINES = 20;
@@ -842,6 +842,18 @@ function extractRequestId(result) {
842
842
  return result?._request_id ?? undefined;
843
843
  }
844
844
 
845
+ /**
846
+ * Reads `cache_write_tokens` from a usage details object — Chat Completions'
847
+ * `prompt_tokens_details` or the Responses API's `input_tokens_details`, both of
848
+ * which carry the field — and returns 0 when it is absent. A defensive reader
849
+ * (mirroring `extractRequestId`) that tolerates the loosely-typed usage shapes
850
+ * OpenAI-compatible providers return, used to populate
851
+ * `$ai_cache_creation_input_tokens`.
852
+ */
853
+ function extractCacheWriteTokens(details) {
854
+ return details?.cache_write_tokens ?? 0;
855
+ }
856
+
845
857
  /**
846
858
  * Assembles the `$ai_provider_metadata` blob for OpenAI / Azure OpenAI events.
847
859
  * Provider-specific fields (system fingerprint, request id) live here rather
@@ -1389,7 +1401,8 @@ let WrappedCompletions$1 = class WrappedCompletions extends AzureOpenAI.Chat.Com
1389
1401
  inputTokens: chunk.usage.prompt_tokens ?? 0,
1390
1402
  outputTokens: chunk.usage.completion_tokens ?? 0,
1391
1403
  reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,
1392
- cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0
1404
+ cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,
1405
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.usage.prompt_tokens_details)
1393
1406
  };
1394
1407
  }
1395
1408
  }
@@ -1500,7 +1513,8 @@ let WrappedCompletions$1 = class WrappedCompletions extends AzureOpenAI.Chat.Com
1500
1513
  inputTokens: result.usage?.prompt_tokens ?? 0,
1501
1514
  outputTokens: result.usage?.completion_tokens ?? 0,
1502
1515
  reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,
1503
- cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0
1516
+ cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,
1517
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.prompt_tokens_details)
1504
1518
  },
1505
1519
  completionId: result.id,
1506
1520
  providerMetadata: buildProviderMetadata({
@@ -1561,6 +1575,7 @@ let WrappedResponses$1 = class WrappedResponses extends AzureOpenAI.Responses {
1561
1575
  outputTokens: result.usage?.output_tokens ?? 0,
1562
1576
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
1563
1577
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
1578
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
1564
1579
  rawUsage: result.usage
1565
1580
  },
1566
1581
  stopReason: result.status ?? undefined,
@@ -1637,7 +1652,8 @@ let WrappedResponses$1 = class WrappedResponses extends AzureOpenAI.Responses {
1637
1652
  inputTokens: chunk.response.usage.input_tokens ?? 0,
1638
1653
  outputTokens: chunk.response.usage.output_tokens ?? 0,
1639
1654
  reasoningTokens: chunk.response.usage.output_tokens_details?.reasoning_tokens ?? 0,
1640
- cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0
1655
+ cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0,
1656
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.response.usage.input_tokens_details)
1641
1657
  };
1642
1658
  }
1643
1659
  }
@@ -1730,6 +1746,7 @@ let WrappedResponses$1 = class WrappedResponses extends AzureOpenAI.Responses {
1730
1746
  outputTokens: result.usage?.output_tokens ?? 0,
1731
1747
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
1732
1748
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
1749
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
1733
1750
  rawUsage: result.usage
1734
1751
  },
1735
1752
  stopReason: result.status ?? undefined,
@@ -1845,6 +1862,7 @@ let WrappedResponses$1 = class WrappedResponses extends AzureOpenAI.Responses {
1845
1862
  outputTokens: result.usage?.output_tokens ?? 0,
1846
1863
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
1847
1864
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
1865
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
1848
1866
  rawUsage: result.usage
1849
1867
  },
1850
1868
  stopReason: result.status ?? undefined,
@@ -2091,7 +2109,8 @@ class WrappedCompletions extends Completions {
2091
2109
  inputTokens: chunk.usage.prompt_tokens ?? 0,
2092
2110
  outputTokens: chunk.usage.completion_tokens ?? 0,
2093
2111
  reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,
2094
- cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0
2112
+ cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,
2113
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.usage.prompt_tokens_details)
2095
2114
  };
2096
2115
  }
2097
2116
  }
@@ -2148,6 +2167,7 @@ class WrappedCompletions extends Completions {
2148
2167
  outputTokens: usage.outputTokens,
2149
2168
  reasoningTokens: usage.reasoningTokens,
2150
2169
  cacheReadInputTokens: usage.cacheReadInputTokens,
2170
+ cacheCreationInputTokens: usage.cacheCreationInputTokens,
2151
2171
  webSearchCount: usage.webSearchCount,
2152
2172
  rawUsage: rawUsageData
2153
2173
  },
@@ -2215,6 +2235,7 @@ class WrappedCompletions extends Completions {
2215
2235
  outputTokens: result.usage?.completion_tokens ?? 0,
2216
2236
  reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,
2217
2237
  cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,
2238
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.prompt_tokens_details),
2218
2239
  webSearchCount: calculateWebSearchCount(result),
2219
2240
  rawUsage: result.usage
2220
2241
  },
@@ -2281,6 +2302,7 @@ class WrappedResponses extends Responses {
2281
2302
  outputTokens: result.usage?.output_tokens ?? 0,
2282
2303
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
2283
2304
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
2305
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
2284
2306
  webSearchCount: calculateWebSearchCount(result),
2285
2307
  rawUsage: result.usage
2286
2308
  },
@@ -2369,7 +2391,8 @@ class WrappedResponses extends Responses {
2369
2391
  inputTokens: chunk.response.usage.input_tokens ?? 0,
2370
2392
  outputTokens: chunk.response.usage.output_tokens ?? 0,
2371
2393
  reasoningTokens: chunk.response.usage.output_tokens_details?.reasoning_tokens ?? 0,
2372
- cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0
2394
+ cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0,
2395
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.response.usage.input_tokens_details)
2373
2396
  };
2374
2397
  }
2375
2398
  }
@@ -2401,6 +2424,7 @@ class WrappedResponses extends Responses {
2401
2424
  outputTokens: usage.outputTokens,
2402
2425
  reasoningTokens: usage.reasoningTokens,
2403
2426
  cacheReadInputTokens: usage.cacheReadInputTokens,
2427
+ cacheCreationInputTokens: usage.cacheCreationInputTokens,
2404
2428
  webSearchCount: usage.webSearchCount,
2405
2429
  rawUsage: rawUsageData
2406
2430
  },
@@ -2475,6 +2499,7 @@ class WrappedResponses extends Responses {
2475
2499
  outputTokens: result.usage?.output_tokens ?? 0,
2476
2500
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
2477
2501
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
2502
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
2478
2503
  webSearchCount: calculateWebSearchCount(result),
2479
2504
  rawUsage: result.usage
2480
2505
  },
@@ -2592,6 +2617,7 @@ class WrappedResponses extends Responses {
2592
2617
  outputTokens: result.usage?.output_tokens ?? 0,
2593
2618
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
2594
2619
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
2620
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
2595
2621
  rawUsage: result.usage
2596
2622
  },
2597
2623
  stopReason: result.status ?? undefined,