@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 +47 -27
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
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
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
-
|
|
446
|
-
let totalOutput = 0;
|
|
447
|
-
let totalTokens = 0;
|
|
473
|
+
const total = emptyUsage();
|
|
448
474
|
for (const component of Object.values(this.usage)) {
|
|
449
|
-
|
|
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
|