@dianshuv/copilot-api 0.18.0 → 0.19.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.
Files changed (2) hide show
  1. package/dist/main.mjs +27 -8
  2. package/package.json +1 -1
package/dist/main.mjs CHANGED
@@ -1012,7 +1012,7 @@ const logout = defineCommand({
1012
1012
 
1013
1013
  //#endregion
1014
1014
  //#region package.json
1015
- var version = "0.18.0";
1015
+ var version = "0.19.0";
1016
1016
 
1017
1017
  //#endregion
1018
1018
  //#region src/lib/event-loop-lag.ts
@@ -1595,6 +1595,7 @@ function captureRequest(params) {
1595
1595
  };
1596
1596
  if (params.reasoningTokens !== void 0) properties.reasoning_tokens = params.reasoningTokens;
1597
1597
  if (params.cachedInputTokens !== void 0) properties.cached_input_tokens = params.cachedInputTokens;
1598
+ if (params.cacheCreationInputTokens !== void 0) properties.cache_creation_input_tokens = params.cacheCreationInputTokens;
1598
1599
  if (params.totalInputTokens !== void 0) properties.total_input_tokens = params.totalInputTokens;
1599
1600
  if (params.stopReason !== void 0) properties.stop_reason = params.stopReason;
1600
1601
  if (params.status !== void 0) properties.status = params.status;
@@ -3002,6 +3003,7 @@ var RequestTracker = class {
3002
3003
  if (update.outputTokens !== void 0) request.outputTokens = update.outputTokens;
3003
3004
  if (update.reasoningTokens !== void 0) request.reasoningTokens = update.reasoningTokens;
3004
3005
  if (update.cachedInputTokens !== void 0) request.cachedInputTokens = update.cachedInputTokens;
3006
+ if (update.cacheCreationInputTokens !== void 0) request.cacheCreationInputTokens = update.cacheCreationInputTokens;
3005
3007
  if (update.totalInputTokens !== void 0) request.totalInputTokens = update.totalInputTokens;
3006
3008
  if (update.error !== void 0) request.error = update.error;
3007
3009
  if (update.queuePosition !== void 0) request.queuePosition = update.queuePosition;
@@ -4178,6 +4180,7 @@ function completeTracking(trackingId, inputTokens, outputTokens, queueWaitMs, re
4178
4180
  queueWaitMs,
4179
4181
  reasoningTokens,
4180
4182
  cachedInputTokens: cache?.cachedInputTokens,
4183
+ cacheCreationInputTokens: cache?.cacheCreationInputTokens,
4181
4184
  totalInputTokens: cache?.totalInputTokens,
4182
4185
  ...timingsToUpdate(timings)
4183
4186
  });
@@ -4196,6 +4199,7 @@ function completeTracking(trackingId, inputTokens, outputTokens, queueWaitMs, re
4196
4199
  toolCount: analytics.toolCount ?? 0,
4197
4200
  reasoningTokens,
4198
4201
  cachedInputTokens: cache?.cachedInputTokens,
4202
+ cacheCreationInputTokens: cache?.cacheCreationInputTokens,
4199
4203
  totalInputTokens: cache?.totalInputTokens,
4200
4204
  stopReason: analytics.stopReason
4201
4205
  });
@@ -4410,17 +4414,19 @@ function handleNonStreamingResponse$1(c, originalResponse, ctx, payload) {
4410
4414
  toolCalls: extractToolCalls(choice)
4411
4415
  }, durationMs);
4412
4416
  const cachedInputTokens = usage ? getCachedTokensFromOpenAIUsage(usage) : void 0;
4417
+ const freshInputTokens = usage ? usage.prompt_tokens - (cachedInputTokens ?? 0) : 0;
4413
4418
  if (ctx.trackingId && usage) requestTracker.updateRequest(ctx.trackingId, {
4414
- inputTokens: usage.prompt_tokens,
4419
+ inputTokens: freshInputTokens,
4415
4420
  outputTokens: usage.completion_tokens,
4416
4421
  queueWaitMs: ctx.queueWaitMs,
4417
4422
  reasoningTokens,
4418
4423
  cachedInputTokens,
4424
+ cacheCreationInputTokens: 0,
4419
4425
  totalInputTokens: usage.prompt_tokens
4420
4426
  });
4421
4427
  captureRequest({
4422
4428
  model: response.model,
4423
- inputTokens: usage?.prompt_tokens ?? 0,
4429
+ inputTokens: freshInputTokens,
4424
4430
  outputTokens: usage?.completion_tokens ?? 0,
4425
4431
  durationMs,
4426
4432
  success: true,
@@ -4428,6 +4434,7 @@ function handleNonStreamingResponse$1(c, originalResponse, ctx, payload) {
4428
4434
  toolCount: payload.tools?.length ?? 0,
4429
4435
  reasoningTokens,
4430
4436
  cachedInputTokens,
4437
+ cacheCreationInputTokens: 0,
4431
4438
  totalInputTokens: usage?.prompt_tokens,
4432
4439
  stopReason: choice.finish_reason
4433
4440
  });
@@ -4497,7 +4504,7 @@ async function handleStreamingResponse$1(opts) {
4497
4504
  await accumulateAndEchoChunk(chunk, acc, checkRepetition, ctx, stream);
4498
4505
  }
4499
4506
  recordStreamSuccess(acc, payload.model, ctx);
4500
- completeTracking(ctx.trackingId, acc.inputTokens, acc.outputTokens, ctx.queueWaitMs, acc.reasoningTokens, {
4507
+ completeTracking(ctx.trackingId, acc.inputTokens - acc.cachedTokens, acc.outputTokens, ctx.queueWaitMs, acc.reasoningTokens, {
4501
4508
  model: acc.model || payload.model,
4502
4509
  stream: true,
4503
4510
  durationMs: Date.now() - ctx.startTime,
@@ -4505,6 +4512,7 @@ async function handleStreamingResponse$1(opts) {
4505
4512
  toolCount: payload.tools?.length ?? 0
4506
4513
  }, ctx.timings, {
4507
4514
  cachedInputTokens: acc.cachedTokens,
4515
+ cacheCreationInputTokens: 0,
4508
4516
  totalInputTokens: acc.inputTokens
4509
4517
  });
4510
4518
  } catch (error) {
@@ -8462,6 +8470,7 @@ function handleDirectAnthropicNonStreamingResponse(c, response, ctx, truncateRes
8462
8470
  outputTokens: response.usage.output_tokens,
8463
8471
  queueWaitMs: ctx.queueWaitMs,
8464
8472
  cachedInputTokens: cacheRead,
8473
+ cacheCreationInputTokens: cacheCreation,
8465
8474
  totalInputTokens
8466
8475
  });
8467
8476
  captureRequest({
@@ -8473,6 +8482,7 @@ function handleDirectAnthropicNonStreamingResponse(c, response, ctx, truncateRes
8473
8482
  stream: false,
8474
8483
  toolCount: payload.tools?.length ?? 0,
8475
8484
  cachedInputTokens: cacheRead,
8485
+ cacheCreationInputTokens: cacheCreation,
8476
8486
  totalInputTokens,
8477
8487
  stopReason: response.stop_reason ?? void 0
8478
8488
  });
@@ -8561,6 +8571,7 @@ async function handleDirectAnthropicStreamingResponse(opts) {
8561
8571
  toolCount: anthropicPayload.tools?.length ?? 0
8562
8572
  }, ctx.timings, {
8563
8573
  cachedInputTokens: acc.cacheReadInputTokens,
8574
+ cacheCreationInputTokens: acc.cacheCreationInputTokens,
8564
8575
  totalInputTokens: acc.inputTokens + acc.cacheReadInputTokens + acc.cacheCreationInputTokens
8565
8576
  });
8566
8577
  } catch (error) {
@@ -8785,6 +8796,7 @@ function handleNonStreamingResponse(opts) {
8785
8796
  outputTokens: anthropicResponse.usage.output_tokens,
8786
8797
  queueWaitMs: ctx.queueWaitMs,
8787
8798
  cachedInputTokens: cacheRead,
8799
+ cacheCreationInputTokens: cacheCreation,
8788
8800
  totalInputTokens
8789
8801
  });
8790
8802
  captureRequest({
@@ -8796,6 +8808,7 @@ function handleNonStreamingResponse(opts) {
8796
8808
  stream: false,
8797
8809
  toolCount: anthropicPayload.tools?.length ?? 0,
8798
8810
  cachedInputTokens: cacheRead,
8811
+ cacheCreationInputTokens: cacheCreation,
8799
8812
  totalInputTokens,
8800
8813
  stopReason: anthropicResponse.stop_reason ?? void 0
8801
8814
  });
@@ -8835,6 +8848,7 @@ async function handleStreamingResponse(opts) {
8835
8848
  toolCount: anthropicPayload.tools?.length ?? 0
8836
8849
  }, ctx.timings, {
8837
8850
  cachedInputTokens: acc.cacheReadInputTokens,
8851
+ cacheCreationInputTokens: acc.cacheCreationInputTokens,
8838
8852
  totalInputTokens: acc.inputTokens + acc.cacheReadInputTokens + acc.cacheCreationInputTokens
8839
8853
  });
8840
8854
  } catch (error) {
@@ -9464,13 +9478,15 @@ const handleResponses = async (c) => {
9464
9478
  if (finalResult) {
9465
9479
  recordResponseResult(finalResult, model, historyId, startTime);
9466
9480
  const usage = finalResult.usage;
9467
- completeTracking(trackingId, usage?.input_tokens ?? 0, usage?.output_tokens ?? 0, queueWaitMs, usage?.output_tokens_details?.reasoning_tokens, {
9481
+ const cachedInputTokens = usage?.input_tokens_details?.cached_tokens ?? 0;
9482
+ completeTracking(trackingId, (usage?.input_tokens ?? 0) - cachedInputTokens, usage?.output_tokens ?? 0, queueWaitMs, usage?.output_tokens_details?.reasoning_tokens, {
9468
9483
  model: finalResult.model || model,
9469
9484
  stream: true,
9470
9485
  durationMs: Date.now() - startTime,
9471
9486
  toolCount: tools.length
9472
9487
  }, ctx.timings, {
9473
- cachedInputTokens: usage?.input_tokens_details?.cached_tokens ?? 0,
9488
+ cachedInputTokens,
9489
+ cacheCreationInputTokens: 0,
9474
9490
  totalInputTokens: usage?.input_tokens ?? 0
9475
9491
  });
9476
9492
  } else if (streamErrorMessage) {
@@ -9517,14 +9533,17 @@ const handleResponses = async (c) => {
9517
9533
  }
9518
9534
  const result = response;
9519
9535
  const usage = result.usage;
9536
+ const cachedInputTokens = usage?.input_tokens_details?.cached_tokens ?? 0;
9537
+ const freshInputTokens = (usage?.input_tokens ?? 0) - cachedInputTokens;
9520
9538
  recordResponseResult(result, model, historyId, startTime);
9521
- completeTracking(trackingId, usage?.input_tokens ?? 0, usage?.output_tokens ?? 0, ctx.queueWaitMs, usage?.output_tokens_details?.reasoning_tokens, {
9539
+ completeTracking(trackingId, freshInputTokens, usage?.output_tokens ?? 0, ctx.queueWaitMs, usage?.output_tokens_details?.reasoning_tokens, {
9522
9540
  model: result.model || model,
9523
9541
  stream: false,
9524
9542
  durationMs: Date.now() - startTime,
9525
9543
  toolCount: tools.length
9526
9544
  }, ctx.timings, {
9527
- cachedInputTokens: usage?.input_tokens_details?.cached_tokens ?? 0,
9545
+ cachedInputTokens,
9546
+ cacheCreationInputTokens: 0,
9528
9547
  totalInputTokens: usage?.input_tokens ?? 0
9529
9548
  });
9530
9549
  consola.debug("Forwarding native Responses result:", JSON.stringify(result).slice(-400));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dianshuv/copilot-api",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Turn GitHub Copilot into OpenAI/Anthropic API compatible server. Usable with Claude Code!",
5
5
  "author": "dianshuv",
6
6
  "type": "module",