@absolutejs/ai 0.0.26 → 0.0.28

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/dist/ai/index.js CHANGED
@@ -571,10 +571,15 @@ var flushPendingToolCalls = function* (pendingToolCalls) {
571
571
  }
572
572
  pendingToolCalls.clear();
573
573
  };
574
- var extractUsage = (parsedUsage) => ({
575
- inputTokens: parsedUsage.prompt_tokens ?? 0,
576
- outputTokens: parsedUsage.completion_tokens ?? 0
577
- });
574
+ var extractUsage = (parsedUsage) => {
575
+ const prompt = parsedUsage.prompt_tokens ?? 0;
576
+ const cached = parsedUsage.cached_tokens ?? 0;
577
+ return {
578
+ cacheReadInputTokens: cached,
579
+ inputTokens: Math.max(0, prompt - cached),
580
+ outputTokens: parsedUsage.completion_tokens ?? 0
581
+ };
582
+ };
578
583
  var resolveToolCallIndex = (toolCall) => {
579
584
  const raw = typeof toolCall.index === "number" ? toolCall.index : NOT_FOUND;
580
585
  return raw < 0 ? undefined : raw;
@@ -644,7 +649,9 @@ var narrowUsageRecord = (parsed) => {
644
649
  const { usage } = parsed;
645
650
  const promptTokens = typeof usage.prompt_tokens === "number" ? usage.prompt_tokens : 0;
646
651
  const completionTokens = typeof usage.completion_tokens === "number" ? usage.completion_tokens : 0;
652
+ const cachedTokens = isRecord(usage.prompt_tokens_details) && typeof usage.prompt_tokens_details.cached_tokens === "number" ? usage.prompt_tokens_details.cached_tokens : 0;
647
653
  return extractUsage({
654
+ cached_tokens: cachedTokens,
648
655
  completion_tokens: completionTokens,
649
656
  prompt_tokens: promptTokens
650
657
  });
@@ -978,8 +985,11 @@ var extractUsage2 = (response) => {
978
985
  return;
979
986
  }
980
987
  const { usage } = response;
988
+ const input = typeof usage.input_tokens === "number" ? usage.input_tokens : 0;
989
+ const cached = isRecord2(usage.input_tokens_details) && typeof usage.input_tokens_details.cached_tokens === "number" ? usage.input_tokens_details.cached_tokens : 0;
981
990
  return {
982
- inputTokens: typeof usage.input_tokens === "number" ? usage.input_tokens : 0,
991
+ cacheReadInputTokens: cached,
992
+ inputTokens: Math.max(0, input - cached),
983
993
  outputTokens: typeof usage.output_tokens === "number" ? usage.output_tokens : 0
984
994
  };
985
995
  };
@@ -1591,9 +1601,11 @@ var cacheLastContentBlock = (msg) => {
1591
1601
  };
1592
1602
  return { content: blocks, role: msg.role };
1593
1603
  };
1594
- var buildRequestBody4 = (params, configuredMax, promptCaching) => {
1604
+ var buildRequestBody4 = (params, configuredMax, configCaching) => {
1605
+ const caching = params.promptCaching ?? configCaching;
1606
+ const cacheSystem = params.cacheSystemPrompt ?? caching;
1595
1607
  const messages = params.messages.filter((msg) => msg.role !== "system").map(mapMessage);
1596
- if (promptCaching && messages.length > 1) {
1608
+ if (caching && messages.length > 1) {
1597
1609
  const last = messages[messages.length - 1];
1598
1610
  if (last) {
1599
1611
  messages[messages.length - 1] = cacheLastContentBlock(last);
@@ -1607,7 +1619,7 @@ var buildRequestBody4 = (params, configuredMax, promptCaching) => {
1607
1619
  stream: true
1608
1620
  };
1609
1621
  if (params.systemPrompt) {
1610
- body.system = promptCaching || params.cacheSystemPrompt ? [
1622
+ body.system = cacheSystem ? [
1611
1623
  {
1612
1624
  cache_control: { type: "ephemeral" },
1613
1625
  text: params.systemPrompt,
@@ -1617,7 +1629,7 @@ var buildRequestBody4 = (params, configuredMax, promptCaching) => {
1617
1629
  }
1618
1630
  if (params.tools && params.tools.length > 0) {
1619
1631
  const tools = params.tools.map(mapToolDefinition2);
1620
- if (promptCaching) {
1632
+ if (caching) {
1621
1633
  tools[tools.length - 1] = {
1622
1634
  ...tools[tools.length - 1],
1623
1635
  cache_control: { type: "ephemeral" }
@@ -2511,8 +2523,10 @@ var processToolTurn = async (socket, options, state, messageId, conversationId,
2511
2523
  });
2512
2524
  const toolDefs = options.tools ? buildToolDefinitions(options.tools) : undefined;
2513
2525
  const stream = options.provider.stream({
2526
+ cacheSystemPrompt: options.cacheSystemPrompt,
2514
2527
  messages: state.currentMessages,
2515
2528
  model: options.model,
2529
+ promptCaching: options.promptCaching,
2516
2530
  reasoning: options.reasoning,
2517
2531
  signal,
2518
2532
  systemPrompt: options.systemPrompt,
@@ -2595,8 +2609,10 @@ var processStreamTextChunk = async (chunk, options, socket, messageId, conversat
2595
2609
  var processStream = async (socket, options, messages, messageId, conversationId, signal, startTime) => {
2596
2610
  const toolDefs = options.tools ? buildToolDefinitions(options.tools) : undefined;
2597
2611
  const stream = options.provider.stream({
2612
+ cacheSystemPrompt: options.cacheSystemPrompt,
2598
2613
  messages,
2599
2614
  model: options.model,
2615
+ promptCaching: options.promptCaching,
2600
2616
  reasoning: options.reasoning,
2601
2617
  signal,
2602
2618
  systemPrompt: options.systemPrompt,
@@ -2944,9 +2960,11 @@ var streamTurns = async function* (options, renderers, messages, signal, startTi
2944
2960
  usage: undefined
2945
2961
  };
2946
2962
  const stream = options.provider.stream({
2963
+ cacheSystemPrompt: options.cacheSystemPrompt,
2947
2964
  maxTokens: options.maxTokens,
2948
2965
  messages: turnState.currentMessages,
2949
2966
  model: options.model,
2967
+ promptCaching: options.promptCaching,
2950
2968
  reasoning: options.reasoning,
2951
2969
  signal,
2952
2970
  systemPrompt: options.systemPrompt,
@@ -3321,6 +3339,7 @@ var generateAI = async (options) => {
3321
3339
  maxTokens: options.maxTokens,
3322
3340
  messages: options.messages,
3323
3341
  model: options.model,
3342
+ promptCaching: options.promptCaching,
3324
3343
  reasoning: options.reasoning,
3325
3344
  responseFormat: options.responseFormat,
3326
3345
  signal: options.signal,
@@ -3425,6 +3444,7 @@ var generateObjectAI = async (options) => {
3425
3444
  maxTokens: options.maxTokens,
3426
3445
  messages: options.messages,
3427
3446
  model: options.model,
3447
+ promptCaching: options.promptCaching,
3428
3448
  provider: options.provider,
3429
3449
  reasoning: options.reasoning,
3430
3450
  signal: options.signal,
@@ -4400,5 +4420,5 @@ export {
4400
4420
  PROVIDER_STATUS_PAGES
4401
4421
  };
4402
4422
 
4403
- //# debugId=90792F1972AEBAA464756E2164756E21
4423
+ //# debugId=CE76A2131808230464756E2164756E21
4404
4424
  //# sourceMappingURL=index.js.map