@amalgm/chat 0.2.8 → 0.2.9-main.34746990150
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/PURPOSE.md +94 -41
- package/README.md +17 -4
- package/dist/acp/projection.d.ts +8 -0
- package/dist/acp/projection.d.ts.map +1 -1
- package/dist/acp/projection.js +10 -3
- package/dist/acp/projection.js.map +1 -1
- package/dist/conversations/index.d.ts +1 -0
- package/dist/conversations/index.d.ts.map +1 -1
- package/dist/conversations/index.js +1 -0
- package/dist/conversations/index.js.map +1 -1
- package/dist/conversations/transcript-parts.d.ts +38 -0
- package/dist/conversations/transcript-parts.d.ts.map +1 -0
- package/dist/conversations/transcript-parts.js +2 -0
- package/dist/conversations/transcript-parts.js.map +1 -0
- package/dist/conversations/transcript-tools.d.ts +11 -0
- package/dist/conversations/transcript-tools.d.ts.map +1 -0
- package/dist/conversations/transcript-tools.js +47 -0
- package/dist/conversations/transcript-tools.js.map +1 -0
- package/dist/conversations/transcript.d.ts +5 -4
- package/dist/conversations/transcript.d.ts.map +1 -1
- package/dist/conversations/transcript.js +43 -143
- package/dist/conversations/transcript.js.map +1 -1
- package/dist/conversations/types.d.ts +19 -0
- package/dist/conversations/types.d.ts.map +1 -1
- package/dist/conversations/types.js.map +1 -1
- package/dist/events/constructors.d.ts.map +1 -1
- package/dist/events/constructors.js +2 -52
- package/dist/events/constructors.js.map +1 -1
- package/dist/events/schema.d.ts +72 -72
- package/dist/events/schema.js +16 -16
- package/dist/events/schema.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/prompt.js +1 -1
- package/dist/input/prompt.js.map +1 -1
- package/dist/mcp/server.js +13 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/normalizers/claude.d.ts +142 -142
- package/dist/normalizers/claude.d.ts.map +1 -1
- package/dist/normalizers/claude.js +23 -37
- package/dist/normalizers/claude.js.map +1 -1
- package/dist/normalizers/codex.d.ts +71 -71
- package/dist/normalizers/codex.d.ts.map +1 -1
- package/dist/normalizers/codex.js +12 -24
- package/dist/normalizers/codex.js.map +1 -1
- package/dist/normalizers/index.d.ts +0 -1
- package/dist/normalizers/index.d.ts.map +1 -1
- package/dist/normalizers/index.js +0 -1
- package/dist/normalizers/index.js.map +1 -1
- package/dist/normalizers/opencode.d.ts.map +1 -1
- package/dist/normalizers/opencode.js +9 -6
- package/dist/normalizers/opencode.js.map +1 -1
- package/dist/normalizers/pi.d.ts.map +1 -1
- package/dist/normalizers/pi.js +27 -14
- package/dist/normalizers/pi.js.map +1 -1
- package/dist/sessions/chat.d.ts +5 -5
- package/dist/sessions/chat.d.ts.map +1 -1
- package/dist/sessions/chat.js +51 -19
- package/dist/sessions/chat.js.map +1 -1
- package/dist/sessions/index.d.ts +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/usage/acp.d.ts +4 -0
- package/dist/usage/acp.d.ts.map +1 -0
- package/dist/usage/acp.js +20 -0
- package/dist/usage/acp.js.map +1 -0
- package/dist/usage/finalize.d.ts +1 -11
- package/dist/usage/finalize.d.ts.map +1 -1
- package/dist/usage/finalize.js +29 -47
- package/dist/usage/finalize.js.map +1 -1
- package/dist/usage/index.d.ts +2 -1
- package/dist/usage/index.d.ts.map +1 -1
- package/dist/usage/index.js +2 -1
- package/dist/usage/index.js.map +1 -1
- package/dist/usage/normalize.d.ts +8 -9
- package/dist/usage/normalize.d.ts.map +1 -1
- package/dist/usage/normalize.js +20 -20
- package/dist/usage/normalize.js.map +1 -1
- package/dist/usage/ports.d.ts +4 -4
- package/dist/usage/ports.d.ts.map +1 -1
- package/dist/usage/ports.js +5 -5
- package/dist/usage/ports.js.map +1 -1
- package/dist/usage/tokens.d.ts +13 -38
- package/dist/usage/tokens.d.ts.map +1 -1
- package/dist/usage/tokens.js +39 -72
- package/dist/usage/tokens.js.map +1 -1
- package/host/adapters/acp-prompt.js +36 -0
- package/host/adapters/acp.js +50 -71
- package/host/adapters/attachments.js +37 -0
- package/host/adapters/claude.js +9 -2
- package/host/adapters/codex.js +36 -18
- package/host/adapters/cursor.js +72 -99
- package/host/adapters/opencode.js +39 -25
- package/host/adapters/pi.js +24 -19
- package/host/adapters/prompt.js +13 -21
- package/host/adapters/provider-url.js +8 -0
- package/host/auth.js +10 -9
- package/host/http.js +3 -2
- package/host/model-resolution.js +7 -0
- package/host/native-contract.js +4 -3
- package/host/native-runtime.js +25 -11
- package/host/sqlite/index.d.ts +2 -0
- package/host/sqlite/index.js +48 -4
- package/host/tooling/runtime-home.js +1 -1
- package/host/tooling/system-instructions.js +7 -6
- package/host/tooling/system-prompt.js +12 -18
- package/package.json +26 -2
- package/dist/normalizers/cursor.d.ts +0 -33
- package/dist/normalizers/cursor.d.ts.map +0 -1
- package/dist/normalizers/cursor.js +0 -196
- package/dist/normalizers/cursor.js.map +0 -1
package/dist/usage/finalize.js
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turn-usage finalization. A turn accumulates per-step usage records;
|
|
3
|
-
* finalization collapses them into one provider-neutral record:
|
|
4
|
-
*
|
|
5
|
-
* - pi: sum of exact billable steps, native provider USD cost preserved.
|
|
6
|
-
* - codex: cumulative-meter delta (last cumulative − first baseline,
|
|
7
|
-
* clamped per bucket so compaction resets never go negative), falling
|
|
8
|
-
* back to summing exact steps.
|
|
9
|
-
* - everyone else: prefer an exact `chat_turn` record, else sum the exact
|
|
10
|
-
* billable steps.
|
|
11
|
-
*/
|
|
1
|
+
/** Turn aggregates prefer provider totals; derivations require proven inputs. */
|
|
12
2
|
import { addTokenLists, hasTokenListBuckets, normalizeTokenList, subtractTokenLists, zeroTokenList, } from './tokens.js';
|
|
13
3
|
import { normalizeUsage } from './normalize.js';
|
|
14
4
|
/**
|
|
@@ -24,7 +14,7 @@ export function usageFromTokenList(tokenList, base = {}) {
|
|
|
24
14
|
cacheReadTokens: normalized.cacheRead,
|
|
25
15
|
cacheWriteTokens: normalized.cacheWrite,
|
|
26
16
|
thoughtTokens: normalized.thought,
|
|
27
|
-
inputContextSize: base.inputContextSize
|
|
17
|
+
inputContextSize: base.inputContextSize,
|
|
28
18
|
operation: 'chat_turn',
|
|
29
19
|
billable: true,
|
|
30
20
|
exact: true,
|
|
@@ -36,45 +26,37 @@ export function usageFromTokenList(tokenList, base = {}) {
|
|
|
36
26
|
*/
|
|
37
27
|
export function summedTurnUsage(records, base = {}) {
|
|
38
28
|
const sum = records.reduce((acc, entry) => addTokenLists(acc, entry.tokenList), zeroTokenList());
|
|
39
|
-
if (!hasTokenListBuckets(sum)
|
|
29
|
+
if (!records.length || (!hasTokenListBuckets(sum) && !records.some(entry => entry.costUsd != null)))
|
|
40
30
|
return null;
|
|
31
|
+
const costs = records.map(entry => entry.costUsd);
|
|
41
32
|
return usageFromTokenList(sum, {
|
|
42
33
|
...base,
|
|
34
|
+
costUsd: costs.every(value => typeof value === 'number') ? costs.reduce((sum, value) => sum + value, 0) : null,
|
|
43
35
|
source: base.source || 'turn_sum',
|
|
44
36
|
});
|
|
45
37
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Codex reports a cumulative meter per step.
|
|
48
|
-
* The turn's usage is `last cumulative − first record's baseline`
|
|
49
|
-
* (`previousCumulativeTokenList`, else zero), subtracted with per-bucket
|
|
50
|
-
* clamping so a meter reset across compaction never yields negative
|
|
51
|
-
* deltas. When no cumulative meter exists (or the delta is empty), fall
|
|
52
|
-
* back to summing exact step records.
|
|
53
|
-
*/
|
|
38
|
+
/** Cumulative snapshots are not model-step records and must never be summed. */
|
|
54
39
|
function codexTurnUsage(records, base = {}) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
contextLimit: last.contextLimit,
|
|
70
|
-
totalProcessedTokens: last.cumulativeTokenList.total,
|
|
71
|
-
source: 'codex_app_server_turn_delta',
|
|
72
|
-
});
|
|
40
|
+
const meters = records.filter(entry => entry.cumulativeTokenList);
|
|
41
|
+
if (!meters.length)
|
|
42
|
+
return null;
|
|
43
|
+
const first = meters[0];
|
|
44
|
+
const last = meters[meters.length - 1];
|
|
45
|
+
const baseline = first.previousCumulativeTokenList;
|
|
46
|
+
const delta = subtractTokenLists(last.cumulativeTokenList, baseline ?? {});
|
|
47
|
+
// Any reset within the turn makes that bucket unknown, even if it later rises.
|
|
48
|
+
for (const [index, current] of meters.entries()) {
|
|
49
|
+
const prior = index === 0 ? baseline : meters[index - 1].cumulativeTokenList;
|
|
50
|
+
const change = subtractTokenLists(current.cumulativeTokenList, prior ?? {});
|
|
51
|
+
for (const key of Object.keys(delta)) {
|
|
52
|
+
if (change[key] === null)
|
|
53
|
+
delta[key] = null;
|
|
73
54
|
}
|
|
74
55
|
}
|
|
75
|
-
return
|
|
76
|
-
...base,
|
|
77
|
-
|
|
56
|
+
return usageFromTokenList(delta, {
|
|
57
|
+
...base, inputContextSize: last.inputContextSize, contextLimit: last.contextLimit,
|
|
58
|
+
totalProcessedTokens: last.cumulativeTokenList.total,
|
|
59
|
+
source: 'codex_app_server_turn_delta',
|
|
78
60
|
});
|
|
79
61
|
}
|
|
80
62
|
/** Finalize the turn usage. Null means there is nothing billable. */
|
|
@@ -103,15 +85,13 @@ export function finalizeTurnUsage({ contract, usage, usageRecords } = {}) {
|
|
|
103
85
|
}
|
|
104
86
|
return null;
|
|
105
87
|
}
|
|
106
|
-
if (contract?.harness === 'codex') {
|
|
107
|
-
|
|
88
|
+
if (contract?.harness === 'codex' && !records.some(entry => entry.operation === 'chat_turn' && entry.exact)) {
|
|
89
|
+
return codexTurnUsage(records, {
|
|
108
90
|
contextLimit: usage?.contextLimit,
|
|
109
91
|
inputContextSize: usage?.inputContextSize,
|
|
110
92
|
costUsd: null,
|
|
111
93
|
marketCostUsd: null,
|
|
112
94
|
});
|
|
113
|
-
if (codexUsage)
|
|
114
|
-
return codexUsage;
|
|
115
95
|
}
|
|
116
96
|
const billableRecords = records.filter((entry) => entry && entry.billable !== false);
|
|
117
97
|
if (billableRecords.length === 0)
|
|
@@ -122,7 +102,7 @@ export function finalizeTurnUsage({ contract, usage, usageRecords } = {}) {
|
|
|
122
102
|
costUsd: null,
|
|
123
103
|
marketCostUsd: null,
|
|
124
104
|
};
|
|
125
|
-
const exactTurnRecord = billableRecords.find((entry) => (entry.exact === true && entry.operation === 'chat_turn' && (entry.tokenList
|
|
105
|
+
const exactTurnRecord = [...billableRecords].reverse().find((entry) => (entry.exact === true && entry.operation === 'chat_turn' && (hasTokenListBuckets(entry.tokenList ?? {}) || entry.costUsd != null)));
|
|
126
106
|
if (exactTurnRecord) {
|
|
127
107
|
return usageFromTokenList(exactTurnRecord.tokenList, {
|
|
128
108
|
...base,
|
|
@@ -130,6 +110,8 @@ export function finalizeTurnUsage({ contract, usage, usageRecords } = {}) {
|
|
|
130
110
|
contextLimit: exactTurnRecord.contextLimit,
|
|
131
111
|
totalProcessedTokens: exactTurnRecord.totalProcessedTokens,
|
|
132
112
|
source: exactTurnRecord.source || 'native_chat_turn',
|
|
113
|
+
costUsd: exactTurnRecord.costUsd,
|
|
114
|
+
marketCostUsd: exactTurnRecord.marketCostUsd,
|
|
133
115
|
});
|
|
134
116
|
}
|
|
135
117
|
return summedTurnUsage(billableRecords.filter((entry) => entry.exact === true), base);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../src/usage/finalize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../src/usage/finalize.ts"],"names":[],"mappings":"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"}
|
package/dist/usage/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @amalgm/chat usage module — the usage and billing-normalization law.
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { nonNegativeOrNull, normalizeTokenList, hasTokenListBuckets, zeroTokenList, addTokenLists, subtractTokenLists, totalUsageTokens, type TokenList, type TokenListInput, type UsageLike, } from './tokens.js';
|
|
5
5
|
export { positiveOrNull, normalizeUsage, providerFromModel, type UsageInput, type NormalizedUsage, } from './normalize.js';
|
|
6
6
|
export { usageFromTokenList, summedTurnUsage, finalizeTurnUsage, type UsageContract, type TurnUsageRecord, type FinalizeTurnUsageArgs, } from './finalize.js';
|
|
7
7
|
export { decideBeginProxyTurn, decideTurnUsageLog, buildUsageLogRow, type BeginProxyTurnBody, type BeginProxyTurnDecision, type BillingPort, type UsageLogPayload, type UsageLogRow, type UsageLogPort, type TurnUsageLogDecision, type DecideTurnUsageLogArgs, } from './ports.js';
|
|
8
8
|
export { MODEL_CATALOG, getModel, calculateCost, getModelsByProvider, getProviders, type CatalogModel, } from './model-catalog.js';
|
|
9
9
|
export { createStepUsage, createStepUsageLedger, recordStepUsage, aggregateTurnUsage, usageDeltaFromCumulative, type UsageTokenCounts, type UsageExactness, type StepUsageModel, type StepUsage, type StepUsageInput, type StepUsageLedger, type TurnUsage, } from './steps.js';
|
|
10
|
+
export { usageFromAcpPrompt } from './acp.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/usage/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @amalgm/chat usage module — the usage and billing-normalization law.
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { nonNegativeOrNull, normalizeTokenList, hasTokenListBuckets, zeroTokenList, addTokenLists, subtractTokenLists, totalUsageTokens, } from './tokens.js';
|
|
5
5
|
export { positiveOrNull, normalizeUsage, providerFromModel, } from './normalize.js';
|
|
6
6
|
export { usageFromTokenList, summedTurnUsage, finalizeTurnUsage, } from './finalize.js';
|
|
7
7
|
export { decideBeginProxyTurn, decideTurnUsageLog, buildUsageLogRow, } from './ports.js';
|
|
8
8
|
export { MODEL_CATALOG, getModel, calculateCost, getModelsByProvider, getProviders, } from './model-catalog.js';
|
|
9
9
|
export { createStepUsage, createStepUsageLedger, recordStepUsage, aggregateTurnUsage, usageDeltaFromCumulative, } from './steps.js';
|
|
10
|
+
export { usageFromAcpPrompt } from './acp.js';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/dist/usage/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,GAGlB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAIlB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GASjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,GAQzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -60,9 +60,8 @@ export interface UsageInput {
|
|
|
60
60
|
* - `costUsd`/`marketCostUsd` are null when unknown — never zero. Zero
|
|
61
61
|
* means "measured as free"; null means "not measured".
|
|
62
62
|
* - `inputTokens` always means non-cached input; total-input figures are
|
|
63
|
-
* decomposed
|
|
64
|
-
* - `inputContextSize` is
|
|
65
|
-
* tokenList total).
|
|
63
|
+
* decomposed only when the cache buckets are known and consistent.
|
|
64
|
+
* - `inputContextSize` is a separately measured context footprint.
|
|
66
65
|
* - `source` is a free-form provenance string (engine default `'runtime'`);
|
|
67
66
|
* well-known values include `'claude_agent_sdk_model_usage'`,
|
|
68
67
|
* `'codex_app_server_turn_delta'`, `'codex_app_server_step_sum'`,
|
|
@@ -72,12 +71,12 @@ export interface NormalizedUsage {
|
|
|
72
71
|
tokenList: TokenList;
|
|
73
72
|
cumulativeTokenList: TokenList | null;
|
|
74
73
|
previousCumulativeTokenList: TokenList | null;
|
|
75
|
-
inputTokens: number;
|
|
76
|
-
outputTokens: number;
|
|
77
|
-
cacheReadTokens: number;
|
|
78
|
-
cacheWriteTokens: number;
|
|
79
|
-
thoughtTokens: number;
|
|
80
|
-
inputContextSize: number;
|
|
74
|
+
inputTokens: number | null;
|
|
75
|
+
outputTokens: number | null;
|
|
76
|
+
cacheReadTokens: number | null;
|
|
77
|
+
cacheWriteTokens: number | null;
|
|
78
|
+
thoughtTokens: number | null;
|
|
79
|
+
inputContextSize: number | null;
|
|
81
80
|
contextUsedTokens: number | null;
|
|
82
81
|
contextLimit: number | null;
|
|
83
82
|
usedTokens: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/usage/normalize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/usage/normalize.ts"],"names":[],"mappings":"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"}
|
package/dist/usage/normalize.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* OpenAI camelCase, codex cumulative meters, opencode step records) funnels
|
|
4
4
|
* through `normalizeUsage` into one canonical `NormalizedUsage` shape.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { nonNegativeOrNull, normalizeTokenList } from './tokens.js';
|
|
7
7
|
/**
|
|
8
8
|
* Return the numeric value when finite and positive, otherwise null.
|
|
9
9
|
*/
|
|
@@ -13,14 +13,15 @@ export function positiveOrNull(value) {
|
|
|
13
13
|
}
|
|
14
14
|
/** Normalize a provider usage record into the canonical shape. */
|
|
15
15
|
export function normalizeUsage(input = {}) {
|
|
16
|
-
const cacheRead =
|
|
17
|
-
const cacheWrite =
|
|
18
|
-
const output =
|
|
19
|
-
const thought =
|
|
16
|
+
const cacheRead = nonNegativeOrNull(input.cacheReadTokens ?? input.cachedInputTokens ?? input.cache_read_input_tokens);
|
|
17
|
+
const cacheWrite = nonNegativeOrNull(input.cacheWriteTokens ?? input.cacheCreationInputTokens ?? input.cache_creation_input_tokens);
|
|
18
|
+
const output = nonNegativeOrNull(input.outputTokens ?? input.completionTokens ?? input.output_tokens);
|
|
19
|
+
const thought = nonNegativeOrNull(input.thoughtTokens ?? input.reasoningTokens);
|
|
20
20
|
const totalInput = input.totalInputTokens ?? input.promptTokens ?? (input.inputTokensAreTotal ? input.inputTokens : null);
|
|
21
21
|
const nonCachedInput = totalInput == null
|
|
22
|
-
?
|
|
23
|
-
:
|
|
22
|
+
? nonNegativeOrNull(input.inputTokens ?? input.input_tokens ?? input.nonCachedInputTokens)
|
|
23
|
+
: nonNegativeOrNull(totalInput) !== null && cacheRead !== null && cacheWrite !== null
|
|
24
|
+
&& Number(totalInput) >= cacheRead + cacheWrite ? Number(totalInput) - cacheRead - cacheWrite : null;
|
|
24
25
|
const tokenList = normalizeTokenList({
|
|
25
26
|
tokenList: input.tokenList,
|
|
26
27
|
inputTokens: nonCachedInput,
|
|
@@ -29,8 +30,7 @@ export function normalizeUsage(input = {}) {
|
|
|
29
30
|
cacheWriteTokens: cacheWrite,
|
|
30
31
|
thoughtTokens: thought,
|
|
31
32
|
});
|
|
32
|
-
const inputContextSize = nonNegativeOrNull(input.inputContextSize ?? input.input_context_size)
|
|
33
|
-
?? tokenList.total;
|
|
33
|
+
const inputContextSize = nonNegativeOrNull(input.inputContextSize ?? input.input_context_size);
|
|
34
34
|
return {
|
|
35
35
|
tokenList,
|
|
36
36
|
cumulativeTokenList: input.cumulativeTokenList && typeof input.cumulativeTokenList === 'object'
|
|
@@ -39,20 +39,20 @@ export function normalizeUsage(input = {}) {
|
|
|
39
39
|
previousCumulativeTokenList: input.previousCumulativeTokenList && typeof input.previousCumulativeTokenList === 'object'
|
|
40
40
|
? normalizeTokenList({ tokenList: input.previousCumulativeTokenList })
|
|
41
41
|
: null,
|
|
42
|
-
inputTokens:
|
|
43
|
-
outputTokens: output,
|
|
44
|
-
cacheReadTokens: cacheRead,
|
|
45
|
-
cacheWriteTokens: cacheWrite,
|
|
46
|
-
thoughtTokens: thought,
|
|
42
|
+
inputTokens: tokenList.input,
|
|
43
|
+
outputTokens: tokenList.output,
|
|
44
|
+
cacheReadTokens: tokenList.cacheRead,
|
|
45
|
+
cacheWriteTokens: tokenList.cacheWrite,
|
|
46
|
+
thoughtTokens: tokenList.thought,
|
|
47
47
|
inputContextSize,
|
|
48
|
-
contextUsedTokens:
|
|
48
|
+
contextUsedTokens: nonNegativeOrNull(input.contextUsedTokens ?? input.usedTokens ?? inputContextSize),
|
|
49
49
|
contextLimit: positiveOrNull(input.contextLimit ?? input.maxTokens ?? input.modelContextWindow),
|
|
50
|
-
usedTokens:
|
|
51
|
-
lastUsedTokens:
|
|
50
|
+
usedTokens: nonNegativeOrNull(input.usedTokens ?? input.contextUsedTokens ?? inputContextSize),
|
|
51
|
+
lastUsedTokens: nonNegativeOrNull(input.lastUsedTokens ?? input.contextUsedTokens ?? input.usedTokens ?? inputContextSize),
|
|
52
52
|
maxTokens: positiveOrNull(input.maxTokens ?? input.contextLimit ?? input.modelContextWindow),
|
|
53
|
-
totalProcessedTokens:
|
|
54
|
-
costUsd: (input.costUsd ?? input.costUSD ?? input.cost
|
|
55
|
-
marketCostUsd: (input.marketCostUsd
|
|
53
|
+
totalProcessedTokens: nonNegativeOrNull(input.totalProcessedTokens),
|
|
54
|
+
costUsd: nonNegativeOrNull(input.costUsd ?? input.costUSD ?? input.cost),
|
|
55
|
+
marketCostUsd: nonNegativeOrNull(input.marketCostUsd),
|
|
56
56
|
operation: String(input.operation || input.usageOperation || 'chat_step'),
|
|
57
57
|
billable: input.billable !== false,
|
|
58
58
|
source: (input.source || 'runtime'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/usage/normalize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/usage/normalize.ts"],"names":[],"mappings":"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"}
|
package/dist/usage/ports.d.ts
CHANGED
|
@@ -74,10 +74,10 @@ export interface UsageLogRow {
|
|
|
74
74
|
auth_method: string | null;
|
|
75
75
|
provider: string | null;
|
|
76
76
|
model: string | null;
|
|
77
|
-
input_tokens: number;
|
|
78
|
-
output_tokens: number;
|
|
79
|
-
cache_read_tokens: number;
|
|
80
|
-
cache_write_tokens: number;
|
|
77
|
+
input_tokens: number | null;
|
|
78
|
+
output_tokens: number | null;
|
|
79
|
+
cache_read_tokens: number | null;
|
|
80
|
+
cache_write_tokens: number | null;
|
|
81
81
|
cost_usd: number | null;
|
|
82
82
|
market_cost_usd: number | null;
|
|
83
83
|
container_id: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/usage/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACvC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,sBAAsB,CAsBpF;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;AAID,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/usage/ports.ts"],"names":[],"mappings":"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"}
|
package/dist/usage/ports.js
CHANGED
|
@@ -53,10 +53,10 @@ export function buildUsageLogRow({ userId, sessionId, messageId, agentId, harnes
|
|
|
53
53
|
auth_method: authMethod || null,
|
|
54
54
|
provider,
|
|
55
55
|
model: modelId || null,
|
|
56
|
-
input_tokens: usage.inputTokens
|
|
57
|
-
output_tokens: usage.outputTokens
|
|
58
|
-
cache_read_tokens: usage.cacheReadTokens
|
|
59
|
-
cache_write_tokens: usage.cacheWriteTokens
|
|
56
|
+
input_tokens: usage.inputTokens,
|
|
57
|
+
output_tokens: usage.outputTokens,
|
|
58
|
+
cache_read_tokens: usage.cacheReadTokens,
|
|
59
|
+
cache_write_tokens: usage.cacheWriteTokens,
|
|
60
60
|
cost_usd: usage.costUsd,
|
|
61
61
|
market_cost_usd: marketCostUsd ?? usage.costUsd,
|
|
62
62
|
container_id: options.containerId || null,
|
|
@@ -84,7 +84,7 @@ export function decideTurnUsageLog({ contract, messageId, usage, usageRecords })
|
|
|
84
84
|
const turnUsage = finalizeTurnUsage({ contract, usage, usageRecords });
|
|
85
85
|
if (!turnUsage)
|
|
86
86
|
return { skipped: true, reason: 'no_turn_usage' };
|
|
87
|
-
const marketCostUsd = turnUsage.marketCostUsd ?? calculateCost(contract.usageModelId || contract.modelId, turnUsage.inputTokens, turnUsage.outputTokens, turnUsage.cacheReadTokens, turnUsage.cacheWriteTokens);
|
|
87
|
+
const marketCostUsd = turnUsage.marketCostUsd ?? ([turnUsage.inputTokens, turnUsage.outputTokens, turnUsage.cacheReadTokens, turnUsage.cacheWriteTokens].every(value => value !== null) ? calculateCost(contract.usageModelId || contract.modelId, turnUsage.inputTokens, turnUsage.outputTokens, turnUsage.cacheReadTokens, turnUsage.cacheWriteTokens) : null);
|
|
88
88
|
return {
|
|
89
89
|
skipped: false,
|
|
90
90
|
source: 'local_turn_exact',
|
package/dist/usage/ports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/usage/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAA4C,MAAM,eAAe,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA2BnD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,kBAAkB;YACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,OAAO;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,gBAAgB;YACnD,OAAO,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,OAAO;YAClD,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;YAC7C,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;YACrC,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC;KACF,CAAC;AACJ,CAAC;AAiDD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAmB,EAChH,UAAuD,EAAE;IAEzD,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAChD,OAAO;QACL,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,QAAQ,EAAE,OAAO,IAAI,IAAI;QACzB,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,QAAQ;QACR,KAAK,EAAE,OAAO,IAAI,IAAI;QACtB,YAAY,EAAE,KAAK,CAAC,WAAW
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/usage/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAA4C,MAAM,eAAe,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA2BnD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,kBAAkB;YACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,OAAO;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,gBAAgB;YACnD,OAAO,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,OAAO;YAClD,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;YAC7C,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;YACrC,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC;KACF,CAAC;AACJ,CAAC;AAiDD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAmB,EAChH,UAAuD,EAAE;IAEzD,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAChD,OAAO;QACL,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,QAAQ,EAAE,OAAO,IAAI,IAAI;QACzB,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,QAAQ;QACR,KAAK,EAAE,OAAO,IAAI,IAAI;QACtB,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,aAAa,EAAE,KAAK,CAAC,YAAY;QACjC,iBAAiB,EAAE,KAAK,CAAC,eAAe;QACxC,kBAAkB,EAAE,KAAK,CAAC,gBAAgB;QAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,eAAe,EAAE,aAAa,IAAI,KAAK,CAAC,OAAO;QAC/C,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;KAC1C,CAAC;AACJ,CAAC;AAmBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAA0B;IACrG,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IAC7G,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAClE,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CACrM,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,OAAO,EACzC,SAAS,CAAC,WAAY,EACtB,SAAS,CAAC,YAAa,EACvB,SAAS,CAAC,eAAgB,EAC1B,SAAS,CAAC,gBAAiB,CAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACV,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,GAAG,EAAE;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS;YACT,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,OAAO;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,OAAO;YAClD,KAAK,EAAE,SAAS;YAChB,aAAa;SACd;KACF,CAAC;AACJ,CAAC"}
|
package/dist/usage/tokens.d.ts
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Token counting primitives owned by the usage module.
|
|
3
3
|
*/
|
|
4
|
-
/** Coerce to a finite number, else 0. */
|
|
5
|
-
export declare function n(value: unknown): number;
|
|
6
4
|
/**
|
|
7
5
|
* Return the numeric value when finite and non-negative, otherwise null.
|
|
8
|
-
*
|
|
6
|
+
* Absence is never a measured zero.
|
|
9
7
|
*/
|
|
10
8
|
export declare function nonNegativeOrNull(value: unknown): number | null;
|
|
11
9
|
/** The six-bucket token list every normalized usage record carries. */
|
|
12
10
|
export interface TokenList {
|
|
13
|
-
input: number;
|
|
14
|
-
output: number;
|
|
15
|
-
cacheRead: number;
|
|
16
|
-
cacheWrite: number;
|
|
17
|
-
thought: number;
|
|
18
|
-
total: number;
|
|
11
|
+
input: number | null;
|
|
12
|
+
output: number | null;
|
|
13
|
+
cacheRead: number | null;
|
|
14
|
+
cacheWrite: number | null;
|
|
15
|
+
thought: number | null;
|
|
16
|
+
total: number | null;
|
|
19
17
|
}
|
|
20
18
|
/**
|
|
21
19
|
* Loose input accepted by `normalizeTokenList`: either a nested
|
|
@@ -30,32 +28,13 @@ export interface TokenListInput {
|
|
|
30
28
|
thoughtTokens?: unknown;
|
|
31
29
|
totalTokens?: unknown;
|
|
32
30
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Engine `normalizeTokenList()`: coerce any of the accepted key spellings
|
|
35
|
-
* into the canonical six-bucket list. `total` prefers an explicit
|
|
36
|
-
* non-negative total (nested or flat), else the computed sum of the four
|
|
37
|
-
* context buckets — `thought` is informational and never counted into the
|
|
38
|
-
* computed total.
|
|
39
|
-
*/
|
|
31
|
+
/** Unknown buckets stay unknown; reasoning is included in output, not added again. */
|
|
40
32
|
export declare function normalizeTokenList(input?: TokenListInput): TokenList;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* number. Mirrors the engine's `Number()` coercion exactly — `null`
|
|
44
|
-
* coerces to 0 (finite → true), `undefined` to NaN (→ false).
|
|
45
|
-
*/
|
|
46
|
-
export declare function hasTokenListBuckets(tokenList?: Partial<Record<keyof TokenList, unknown>>): boolean;
|
|
47
|
-
/** Engine `zeroTokenList()`: a fresh all-zero list. */
|
|
33
|
+
export declare function hasTokenListBuckets(list?: Partial<Record<keyof TokenList, unknown>>): boolean;
|
|
34
|
+
/** Additive identity, used only for a proven empty accumulator. */
|
|
48
35
|
export declare function zeroTokenList(): TokenList;
|
|
49
|
-
/**
|
|
50
|
-
* Engine `addTokenLists()`: bucket-wise sum, re-normalized (so `total` is
|
|
51
|
-
* recomputed from the four context buckets, never carried over).
|
|
52
|
-
*/
|
|
53
36
|
export declare function addTokenLists(a?: Partial<TokenList>, b?: Partial<TokenList>): TokenList;
|
|
54
|
-
/**
|
|
55
|
-
* Engine `subtractTokenLists()`: bucket-wise `after - before`, clamped at
|
|
56
|
-
* 0 per bucket — a cumulative meter that reset (e.g. across compaction)
|
|
57
|
-
* can never produce a negative delta.
|
|
58
|
-
*/
|
|
37
|
+
/** A missing baseline or a counter reset cannot prove a delta. */
|
|
59
38
|
export declare function subtractTokenLists(after?: Partial<TokenList>, before?: Partial<TokenList>): TokenList;
|
|
60
39
|
export interface UsageLike {
|
|
61
40
|
tokenList?: {
|
|
@@ -67,10 +46,6 @@ export interface UsageLike {
|
|
|
67
46
|
cacheReadTokens?: unknown;
|
|
68
47
|
cacheWriteTokens?: unknown;
|
|
69
48
|
}
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
* the sum of the four buckets. Precedence uses `||`, exactly as the engine —
|
|
73
|
-
* a zero total falls through to the next source.
|
|
74
|
-
*/
|
|
75
|
-
export declare function totalUsageTokens(usage?: UsageLike): number;
|
|
49
|
+
/** Explicit totals and measured context are distinct from unknown token buckets. */
|
|
50
|
+
export declare function totalUsageTokens(usage?: UsageLike): number | null;
|
|
76
51
|
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/usage/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/usage/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,cAAmB,GAAG,SAAS,CAYxE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE,OAAO,CAAC,CAAM,GAAG,OAAO,CAGjG;AAED,mEAAmE;AACnE,wBAAgB,aAAa,IAAI,SAAS,CAEzC;AAeD,wBAAgB,aAAa,CAAC,CAAC,GAAE,OAAO,CAAC,SAAS,CAAM,EAAE,CAAC,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAE/F;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,OAAO,CAAC,SAAS,CAAM,EAAE,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAE7G;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,SAAc,GAAG,MAAM,GAAG,IAAI,CAIrE"}
|