@heripo/pdf-parser 0.1.45 → 0.1.47

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/index.js CHANGED
@@ -142,6 +142,15 @@ function detectProvider(model) {
142
142
  if (providerId.includes("lmstudio")) return "lmstudio";
143
143
  return "unknown";
144
144
  }
145
+ function cacheWrite1hTokens(steps) {
146
+ let total;
147
+ for (const step of steps ?? []) {
148
+ const raw = step.usage.raw;
149
+ const value = raw?.cache_creation?.ephemeral_1h_input_tokens;
150
+ if (value !== void 0) total = (total ?? 0) + value;
151
+ }
152
+ return total;
153
+ }
145
154
  var LLMCaller = class {
146
155
  /**
147
156
  * Extract model name from LanguageModel object
@@ -160,6 +169,9 @@ var LLMCaller = class {
160
169
  * Build usage information from response
161
170
  */
162
171
  static buildUsage(config, modelName, response, usedFallback) {
172
+ const usage = response.usage;
173
+ const write1h = cacheWrite1hTokens(response.steps);
174
+ const allWrites = usage?.inputTokenDetails?.cacheWriteTokens;
163
175
  return {
164
176
  component: config.component,
165
177
  phase: config.phase,
@@ -168,6 +180,13 @@ var LLMCaller = class {
168
180
  inputTokens: response.usage?.inputTokens ?? 0,
169
181
  outputTokens: response.usage?.outputTokens ?? 0,
170
182
  totalTokens: response.usage?.totalTokens ?? 0,
183
+ ...usage?.inputTokenDetails?.cacheReadTokens != null && {
184
+ cachedInputTokens: usage.inputTokenDetails.cacheReadTokens
185
+ },
186
+ ...allWrites != null && {
187
+ cacheWriteTokens: allWrites - (write1h ?? 0)
188
+ },
189
+ ...write1h !== void 0 && { cacheWrite1hTokens: write1h },
171
190
  metadata: config.metadata
172
191
  };
173
192
  }
@@ -210,7 +229,8 @@ var LLMCaller = class {
210
229
  if (toolCall) {
211
230
  return {
212
231
  output: toolCall.input,
213
- usage: lastResult.usage
232
+ usage: lastResult.usage,
233
+ steps: lastResult.steps
214
234
  };
215
235
  }
216
236
  }
@@ -347,16 +367,32 @@ function emptyUsage() {
347
367
  return { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
348
368
  }
349
369
  function addInto(target, src) {
370
+ const hadUsage = target.inputTokens !== 0 || target.outputTokens !== 0 || target.totalTokens !== 0;
350
371
  target.inputTokens += src.inputTokens;
351
372
  target.outputTokens += src.outputTokens;
352
373
  target.totalTokens += src.totalTokens;
374
+ for (const key of CACHE_KEYS) {
375
+ const next = src[key];
376
+ const current = target[key];
377
+ if (next === void 0) {
378
+ if (current !== void 0) target[key] = null;
379
+ } else if (current === void 0) {
380
+ target[key] = hadUsage ? null : next;
381
+ } else {
382
+ target[key] = current === null || next === null ? null : current + next;
383
+ }
384
+ }
353
385
  }
386
+ var CACHE_KEYS = [
387
+ "cachedInputTokens",
388
+ "cacheWriteTokens",
389
+ "cacheWrite1hTokens"
390
+ ];
354
391
  function sumUsage(a, b) {
355
- return {
356
- inputTokens: (a?.inputTokens ?? 0) + (b?.inputTokens ?? 0),
357
- outputTokens: (a?.outputTokens ?? 0) + (b?.outputTokens ?? 0),
358
- totalTokens: (a?.totalTokens ?? 0) + (b?.totalTokens ?? 0)
359
- };
392
+ const total = emptyUsage();
393
+ if (a) addInto(total, a);
394
+ if (b) addInto(total, b);
395
+ return total;
360
396
  }
361
397
  function accumulateModel(bucket, modelName, usage) {
362
398
  let entry = bucket.get(modelName);
@@ -471,21 +507,13 @@ var LLMTokenUsageAggregator = class {
471
507
  components.push({
472
508
  component: component.component,
473
509
  phases,
474
- total: {
475
- inputTokens: component.total.inputTokens,
476
- outputTokens: component.total.outputTokens,
477
- totalTokens: component.total.totalTokens
478
- }
510
+ total: { ...component.total }
479
511
  });
480
512
  }
481
513
  const totalUsage = this.getTotalUsage();
482
514
  return {
483
515
  components,
484
- total: {
485
- inputTokens: totalUsage.inputTokens,
486
- outputTokens: totalUsage.outputTokens,
487
- totalTokens: totalUsage.totalTokens
488
- }
516
+ total: totalUsage
489
517
  };
490
518
  }
491
519
  /**
@@ -494,19 +522,11 @@ var LLMTokenUsageAggregator = class {
494
522
  * @returns Aggregated token usage totals
495
523
  */
496
524
  getTotalUsage() {
497
- let totalInput = 0;
498
- let totalOutput = 0;
499
- let totalTokens = 0;
525
+ const total = emptyUsage();
500
526
  for (const component of Object.values(this.usage)) {
501
- totalInput += component.total.inputTokens;
502
- totalOutput += component.total.outputTokens;
503
- totalTokens += component.total.totalTokens;
527
+ addInto(total, component.total);
504
528
  }
505
- return {
506
- inputTokens: totalInput,
507
- outputTokens: totalOutput,
508
- totalTokens
509
- };
529
+ return total;
510
530
  }
511
531
  /**
512
532
  * Log comprehensive token usage summary