@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.
@@ -548,7 +548,7 @@ function formatOpenAIResponsesInput(input, instructions) {
548
548
  return messages;
549
549
  }
550
550
 
551
- var version = "8.6.7";
551
+ var version = "8.7.0";
552
552
 
553
553
  const DEFAULT_MAX_DEPTH = 3;
554
554
  const MAX_STACK_LINES = 20;
@@ -846,6 +846,18 @@ function extractRequestId(result) {
846
846
  return result?._request_id ?? undefined;
847
847
  }
848
848
 
849
+ /**
850
+ * Reads `cache_write_tokens` from a usage details object — Chat Completions'
851
+ * `prompt_tokens_details` or the Responses API's `input_tokens_details`, both of
852
+ * which carry the field — and returns 0 when it is absent. A defensive reader
853
+ * (mirroring `extractRequestId`) that tolerates the loosely-typed usage shapes
854
+ * OpenAI-compatible providers return, used to populate
855
+ * `$ai_cache_creation_input_tokens`.
856
+ */
857
+ function extractCacheWriteTokens(details) {
858
+ return details?.cache_write_tokens ?? 0;
859
+ }
860
+
849
861
  /**
850
862
  * Assembles the `$ai_provider_metadata` blob for OpenAI / Azure OpenAI events.
851
863
  * Provider-specific fields (system fingerprint, request id) live here rather
@@ -1393,7 +1405,8 @@ let WrappedCompletions$1 = class WrappedCompletions extends openai.AzureOpenAI.C
1393
1405
  inputTokens: chunk.usage.prompt_tokens ?? 0,
1394
1406
  outputTokens: chunk.usage.completion_tokens ?? 0,
1395
1407
  reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,
1396
- cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0
1408
+ cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,
1409
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.usage.prompt_tokens_details)
1397
1410
  };
1398
1411
  }
1399
1412
  }
@@ -1504,7 +1517,8 @@ let WrappedCompletions$1 = class WrappedCompletions extends openai.AzureOpenAI.C
1504
1517
  inputTokens: result.usage?.prompt_tokens ?? 0,
1505
1518
  outputTokens: result.usage?.completion_tokens ?? 0,
1506
1519
  reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,
1507
- cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0
1520
+ cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,
1521
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.prompt_tokens_details)
1508
1522
  },
1509
1523
  completionId: result.id,
1510
1524
  providerMetadata: buildProviderMetadata({
@@ -1565,6 +1579,7 @@ let WrappedResponses$1 = class WrappedResponses extends openai.AzureOpenAI.Respo
1565
1579
  outputTokens: result.usage?.output_tokens ?? 0,
1566
1580
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
1567
1581
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
1582
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
1568
1583
  rawUsage: result.usage
1569
1584
  },
1570
1585
  stopReason: result.status ?? undefined,
@@ -1641,7 +1656,8 @@ let WrappedResponses$1 = class WrappedResponses extends openai.AzureOpenAI.Respo
1641
1656
  inputTokens: chunk.response.usage.input_tokens ?? 0,
1642
1657
  outputTokens: chunk.response.usage.output_tokens ?? 0,
1643
1658
  reasoningTokens: chunk.response.usage.output_tokens_details?.reasoning_tokens ?? 0,
1644
- cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0
1659
+ cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0,
1660
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.response.usage.input_tokens_details)
1645
1661
  };
1646
1662
  }
1647
1663
  }
@@ -1734,6 +1750,7 @@ let WrappedResponses$1 = class WrappedResponses extends openai.AzureOpenAI.Respo
1734
1750
  outputTokens: result.usage?.output_tokens ?? 0,
1735
1751
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
1736
1752
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
1753
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
1737
1754
  rawUsage: result.usage
1738
1755
  },
1739
1756
  stopReason: result.status ?? undefined,
@@ -1849,6 +1866,7 @@ let WrappedResponses$1 = class WrappedResponses extends openai.AzureOpenAI.Respo
1849
1866
  outputTokens: result.usage?.output_tokens ?? 0,
1850
1867
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
1851
1868
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
1869
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
1852
1870
  rawUsage: result.usage
1853
1871
  },
1854
1872
  stopReason: result.status ?? undefined,
@@ -2095,7 +2113,8 @@ class WrappedCompletions extends Completions {
2095
2113
  inputTokens: chunk.usage.prompt_tokens ?? 0,
2096
2114
  outputTokens: chunk.usage.completion_tokens ?? 0,
2097
2115
  reasoningTokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? 0,
2098
- cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0
2116
+ cacheReadInputTokens: chunk.usage.prompt_tokens_details?.cached_tokens ?? 0,
2117
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.usage.prompt_tokens_details)
2099
2118
  };
2100
2119
  }
2101
2120
  }
@@ -2152,6 +2171,7 @@ class WrappedCompletions extends Completions {
2152
2171
  outputTokens: usage.outputTokens,
2153
2172
  reasoningTokens: usage.reasoningTokens,
2154
2173
  cacheReadInputTokens: usage.cacheReadInputTokens,
2174
+ cacheCreationInputTokens: usage.cacheCreationInputTokens,
2155
2175
  webSearchCount: usage.webSearchCount,
2156
2176
  rawUsage: rawUsageData
2157
2177
  },
@@ -2219,6 +2239,7 @@ class WrappedCompletions extends Completions {
2219
2239
  outputTokens: result.usage?.completion_tokens ?? 0,
2220
2240
  reasoningTokens: result.usage?.completion_tokens_details?.reasoning_tokens ?? 0,
2221
2241
  cacheReadInputTokens: result.usage?.prompt_tokens_details?.cached_tokens ?? 0,
2242
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.prompt_tokens_details),
2222
2243
  webSearchCount: calculateWebSearchCount(result),
2223
2244
  rawUsage: result.usage
2224
2245
  },
@@ -2285,6 +2306,7 @@ class WrappedResponses extends Responses {
2285
2306
  outputTokens: result.usage?.output_tokens ?? 0,
2286
2307
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
2287
2308
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
2309
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
2288
2310
  webSearchCount: calculateWebSearchCount(result),
2289
2311
  rawUsage: result.usage
2290
2312
  },
@@ -2373,7 +2395,8 @@ class WrappedResponses extends Responses {
2373
2395
  inputTokens: chunk.response.usage.input_tokens ?? 0,
2374
2396
  outputTokens: chunk.response.usage.output_tokens ?? 0,
2375
2397
  reasoningTokens: chunk.response.usage.output_tokens_details?.reasoning_tokens ?? 0,
2376
- cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0
2398
+ cacheReadInputTokens: chunk.response.usage.input_tokens_details?.cached_tokens ?? 0,
2399
+ cacheCreationInputTokens: extractCacheWriteTokens(chunk.response.usage.input_tokens_details)
2377
2400
  };
2378
2401
  }
2379
2402
  }
@@ -2405,6 +2428,7 @@ class WrappedResponses extends Responses {
2405
2428
  outputTokens: usage.outputTokens,
2406
2429
  reasoningTokens: usage.reasoningTokens,
2407
2430
  cacheReadInputTokens: usage.cacheReadInputTokens,
2431
+ cacheCreationInputTokens: usage.cacheCreationInputTokens,
2408
2432
  webSearchCount: usage.webSearchCount,
2409
2433
  rawUsage: rawUsageData
2410
2434
  },
@@ -2479,6 +2503,7 @@ class WrappedResponses extends Responses {
2479
2503
  outputTokens: result.usage?.output_tokens ?? 0,
2480
2504
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
2481
2505
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
2506
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
2482
2507
  webSearchCount: calculateWebSearchCount(result),
2483
2508
  rawUsage: result.usage
2484
2509
  },
@@ -2596,6 +2621,7 @@ class WrappedResponses extends Responses {
2596
2621
  outputTokens: result.usage?.output_tokens ?? 0,
2597
2622
  reasoningTokens: result.usage?.output_tokens_details?.reasoning_tokens ?? 0,
2598
2623
  cacheReadInputTokens: result.usage?.input_tokens_details?.cached_tokens ?? 0,
2624
+ cacheCreationInputTokens: extractCacheWriteTokens(result.usage?.input_tokens_details),
2599
2625
  rawUsage: result.usage
2600
2626
  },
2601
2627
  stopReason: result.status ?? undefined,