@heripo/document-processor 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
@@ -90,6 +90,15 @@ function detectProvider(model) {
90
90
  if (providerId.includes("lmstudio")) return "lmstudio";
91
91
  return "unknown";
92
92
  }
93
+ function cacheWrite1hTokens(steps) {
94
+ let total;
95
+ for (const step of steps ?? []) {
96
+ const raw = step.usage.raw;
97
+ const value = raw?.cache_creation?.ephemeral_1h_input_tokens;
98
+ if (value !== void 0) total = (total ?? 0) + value;
99
+ }
100
+ return total;
101
+ }
93
102
  var LLMCaller = class {
94
103
  /**
95
104
  * Extract model name from LanguageModel object
@@ -108,6 +117,9 @@ var LLMCaller = class {
108
117
  * Build usage information from response
109
118
  */
110
119
  static buildUsage(config, modelName, response, usedFallback) {
120
+ const usage = response.usage;
121
+ const write1h = cacheWrite1hTokens(response.steps);
122
+ const allWrites = usage?.inputTokenDetails?.cacheWriteTokens;
111
123
  return {
112
124
  component: config.component,
113
125
  phase: config.phase,
@@ -116,6 +128,13 @@ var LLMCaller = class {
116
128
  inputTokens: response.usage?.inputTokens ?? 0,
117
129
  outputTokens: response.usage?.outputTokens ?? 0,
118
130
  totalTokens: response.usage?.totalTokens ?? 0,
131
+ ...usage?.inputTokenDetails?.cacheReadTokens != null && {
132
+ cachedInputTokens: usage.inputTokenDetails.cacheReadTokens
133
+ },
134
+ ...allWrites != null && {
135
+ cacheWriteTokens: allWrites - (write1h ?? 0)
136
+ },
137
+ ...write1h !== void 0 && { cacheWrite1hTokens: write1h },
119
138
  metadata: config.metadata
120
139
  };
121
140
  }
@@ -158,7 +177,8 @@ var LLMCaller = class {
158
177
  if (toolCall) {
159
178
  return {
160
179
  output: toolCall.input,
161
- usage: lastResult.usage
180
+ usage: lastResult.usage,
181
+ steps: lastResult.steps
162
182
  };
163
183
  }
164
184
  }
@@ -295,16 +315,32 @@ function emptyUsage() {
295
315
  return { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
296
316
  }
297
317
  function addInto(target, src) {
318
+ const hadUsage = target.inputTokens !== 0 || target.outputTokens !== 0 || target.totalTokens !== 0;
298
319
  target.inputTokens += src.inputTokens;
299
320
  target.outputTokens += src.outputTokens;
300
321
  target.totalTokens += src.totalTokens;
322
+ for (const key of CACHE_KEYS) {
323
+ const next = src[key];
324
+ const current = target[key];
325
+ if (next === void 0) {
326
+ if (current !== void 0) target[key] = null;
327
+ } else if (current === void 0) {
328
+ target[key] = hadUsage ? null : next;
329
+ } else {
330
+ target[key] = current === null || next === null ? null : current + next;
331
+ }
332
+ }
301
333
  }
334
+ var CACHE_KEYS = [
335
+ "cachedInputTokens",
336
+ "cacheWriteTokens",
337
+ "cacheWrite1hTokens"
338
+ ];
302
339
  function sumUsage(a, b) {
303
- return {
304
- inputTokens: (a?.inputTokens ?? 0) + (b?.inputTokens ?? 0),
305
- outputTokens: (a?.outputTokens ?? 0) + (b?.outputTokens ?? 0),
306
- totalTokens: (a?.totalTokens ?? 0) + (b?.totalTokens ?? 0)
307
- };
340
+ const total = emptyUsage();
341
+ if (a) addInto(total, a);
342
+ if (b) addInto(total, b);
343
+ return total;
308
344
  }
309
345
  function accumulateModel(bucket, modelName, usage) {
310
346
  let entry = bucket.get(modelName);
@@ -419,21 +455,13 @@ var LLMTokenUsageAggregator = class {
419
455
  components.push({
420
456
  component: component.component,
421
457
  phases,
422
- total: {
423
- inputTokens: component.total.inputTokens,
424
- outputTokens: component.total.outputTokens,
425
- totalTokens: component.total.totalTokens
426
- }
458
+ total: { ...component.total }
427
459
  });
428
460
  }
429
461
  const totalUsage = this.getTotalUsage();
430
462
  return {
431
463
  components,
432
- total: {
433
- inputTokens: totalUsage.inputTokens,
434
- outputTokens: totalUsage.outputTokens,
435
- totalTokens: totalUsage.totalTokens
436
- }
464
+ total: totalUsage
437
465
  };
438
466
  }
439
467
  /**
@@ -442,19 +470,11 @@ var LLMTokenUsageAggregator = class {
442
470
  * @returns Aggregated token usage totals
443
471
  */
444
472
  getTotalUsage() {
445
- let totalInput = 0;
446
- let totalOutput = 0;
447
- let totalTokens = 0;
473
+ const total = emptyUsage();
448
474
  for (const component of Object.values(this.usage)) {
449
- totalInput += component.total.inputTokens;
450
- totalOutput += component.total.outputTokens;
451
- totalTokens += component.total.totalTokens;
475
+ addInto(total, component.total);
452
476
  }
453
- return {
454
- inputTokens: totalInput,
455
- outputTokens: totalOutput,
456
- totalTokens
457
- };
477
+ return total;
458
478
  }
459
479
  /**
460
480
  * Log comprehensive token usage summary