@cat-factory/spend 0.13.13 → 0.14.1
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/SpendService.d.ts +17 -1
- package/dist/SpendService.d.ts.map +1 -1
- package/dist/SpendService.js +12 -2
- package/dist/SpendService.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/pricing.d.ts +76 -2
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +57 -3
- package/dist/pricing.js.map +1 -1
- package/package.json +3 -3
package/dist/SpendService.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { BudgetCaps, OpenRouterModelMeta, SpendStatus } from '@cat-factory/
|
|
|
2
2
|
import type { AgentTokenUsage } from '@cat-factory/kernel';
|
|
3
3
|
import type { Clock, IdGenerator } from '@cat-factory/kernel';
|
|
4
4
|
import type { AccountRepository, BudgetLimitCacheValue, GroupCacheHandle, TokenUsageRepository, UsageBilling, UsageBreakdownRow, UserSettingsRepository, WorkspaceSettingsCacheValue, WorkspaceSettingsRepository } from '@cat-factory/kernel';
|
|
5
|
-
import { type SpendPricing } from './pricing.js';
|
|
5
|
+
import { type InputTokenClassUsage, type SpendPricing } from './pricing.js';
|
|
6
6
|
export interface SpendServiceDependencies {
|
|
7
7
|
tokenUsageRepository: TokenUsageRepository;
|
|
8
8
|
idGenerator: IdGenerator;
|
|
@@ -60,7 +60,23 @@ export interface RecordUsageInput {
|
|
|
60
60
|
agentKind: string;
|
|
61
61
|
/** Model identifier as `provider:model` (as produced by AgentRunResult.model). */
|
|
62
62
|
model: string;
|
|
63
|
+
/**
|
|
64
|
+
* The call's token counts, with `inputTokens` the TOTAL input across every billed class.
|
|
65
|
+
* It stays the volume figure the ledger stores and the rollups report; {@link
|
|
66
|
+
* RecordUsageInput.inputClasses} is what PRICES it when the producer knows the split.
|
|
67
|
+
*/
|
|
63
68
|
usage: AgentTokenUsage;
|
|
69
|
+
/**
|
|
70
|
+
* The three orthogonal input classes behind `usage.inputTokens`, from a producer that can
|
|
71
|
+
* report them (the LLM proxy, which reconciles the provider shapes through
|
|
72
|
+
* `readInputTokenClasses`). Present ⇒ the row is priced per class, so a cache read costs
|
|
73
|
+
* ~0.1x fresh input instead of 1x.
|
|
74
|
+
*
|
|
75
|
+
* ABSENT is a real state, not a zeroed one: it says the producer reported a single lumped
|
|
76
|
+
* count, and the row is then priced entirely at the fresh rate. That OVER-states a cached
|
|
77
|
+
* call and never under-states one, which is the only safe direction for a budget gate.
|
|
78
|
+
*/
|
|
79
|
+
inputClasses?: InputTokenClassUsage;
|
|
64
80
|
/**
|
|
65
81
|
* Metered (a real per-token cost the budget gate sums) or subscription (a flat-rate
|
|
66
82
|
* quota harness call, recorded for the usage report but excluded from spend). Absent ⇒
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpendService.d.ts","sourceRoot":"","sources":["../src/SpendService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"SpendService.d.ts","sourceRoot":"","sources":["../src/SpendService.ts"],"names":[],"mappings":"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"}
|
package/dist/SpendService.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readCachedWorkspaceSettings } from '@cat-factory/kernel';
|
|
2
|
-
import { effectiveTierLimit, estimateCost, mergeSpendPricing, startOfMonthUtc, withDynamicPrices, } from './pricing.js';
|
|
2
|
+
import { effectiveTierLimit, estimateClassedCost, estimateCost, mergeSpendPricing, startOfMonthUtc, withDynamicPrices, } from './pricing.js';
|
|
3
3
|
/**
|
|
4
4
|
* The spend safeguard. It meters token usage into a persistent ledger, prices
|
|
5
5
|
* each call into a single currency, and reports the current billing period's
|
|
@@ -117,7 +117,17 @@ export class SpendService {
|
|
|
117
117
|
// Priced for both billing kinds: a subscription row's cost is illustrative (the
|
|
118
118
|
// equivalent metered-API cost), never summed into a budget — the metered filter on
|
|
119
119
|
// the totals rollups is what keeps subscription usage out of the spend gate.
|
|
120
|
-
|
|
120
|
+
//
|
|
121
|
+
// Per CLASS wherever the producer reported the split, because the classes are priced
|
|
122
|
+
// more than an order of magnitude apart: pricing a cache-read-dominated run's whole
|
|
123
|
+
// input at the fresh rate metered it at roughly ten times its real cost and exhausted
|
|
124
|
+
// budgets that were nowhere near spent.
|
|
125
|
+
const costEstimate = input.inputClasses
|
|
126
|
+
? estimateClassedCost(pricing, ref, {
|
|
127
|
+
...input.inputClasses,
|
|
128
|
+
outputTokens: input.usage.outputTokens,
|
|
129
|
+
})
|
|
130
|
+
: estimateCost(pricing, ref, input.usage);
|
|
121
131
|
await this.tokenUsageRepository.record({
|
|
122
132
|
id: this.idGenerator.next('tok'),
|
|
123
133
|
workspaceId: input.workspaceId,
|
package/dist/SpendService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpendService.js","sourceRoot":"","sources":["../src/SpendService.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"SpendService.js","sourceRoot":"","sources":["../src/SpendService.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { SpendService, type SpendServiceDependencies, type RecordUsageInput, type BudgetTierScope, } from './SpendService.js';
|
|
2
|
-
export { type ModelPrice, type SpendPricing, DEFAULT_MODEL_PRICES, DEFAULT_MONTHLY_LIMIT_EUR, DEFAULT_SPEND_PRICING, budgetCapsOverlay, effectiveTierLimit, priceFor, modelCostResolver, estimateCost, withDynamicPrices, startOfMonthUtc, } from './pricing.js';
|
|
2
|
+
export { type ModelPrice, type ResolvedModelPrice, type InputTokenClassUsage, type SpendPricing, CACHE_READ_MULTIPLIER, CACHE_WRITE_MULTIPLIER, DEFAULT_MODEL_PRICES, DEFAULT_MONTHLY_LIMIT_EUR, DEFAULT_SPEND_PRICING, budgetCapsOverlay, effectiveTierLimit, priceFor, ratesFor, modelCostResolver, estimateCost, estimateClassedCost, withDynamicPrices, startOfMonthUtc, } from './pricing.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Pricing tables and spend metering/gating for @cat-factory.
|
|
2
2
|
export { SpendService, } from './SpendService.js';
|
|
3
|
-
export { DEFAULT_MODEL_PRICES, DEFAULT_MONTHLY_LIMIT_EUR, DEFAULT_SPEND_PRICING, budgetCapsOverlay, effectiveTierLimit, priceFor, modelCostResolver, estimateCost, withDynamicPrices, startOfMonthUtc, } from './pricing.js';
|
|
3
|
+
export { CACHE_READ_MULTIPLIER, CACHE_WRITE_MULTIPLIER, DEFAULT_MODEL_PRICES, DEFAULT_MONTHLY_LIMIT_EUR, DEFAULT_SPEND_PRICING, budgetCapsOverlay, effectiveTierLimit, priceFor, ratesFor, modelCostResolver, estimateCost, estimateClassedCost, withDynamicPrices, startOfMonthUtc, } from './pricing.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EACL,YAAY,GAIb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EACL,YAAY,GAIb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAKL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA"}
|
package/dist/pricing.d.ts
CHANGED
|
@@ -1,10 +1,61 @@
|
|
|
1
|
-
import type { ModelRef } from '@cat-factory/kernel';
|
|
1
|
+
import type { LlmTokenRates, ModelRef } from '@cat-factory/kernel';
|
|
2
2
|
import type { AgentTokenUsage } from '@cat-factory/kernel';
|
|
3
3
|
import type { OpenRouterModelMeta, WorkspaceSettings } from '@cat-factory/contracts';
|
|
4
4
|
/** Price per 1M input/output tokens for one model. */
|
|
5
5
|
export interface ModelPrice {
|
|
6
|
+
/** Price per 1M FRESH (uncached) input tokens. */
|
|
6
7
|
inputPerMillion: number;
|
|
7
8
|
outputPerMillion: number;
|
|
9
|
+
/**
|
|
10
|
+
* Price per 1M input tokens served from the provider's prompt cache. Omitted ⇒ derived
|
|
11
|
+
* from {@link ModelPrice.inputPerMillion} via {@link CACHE_READ_MULTIPLIER}. An entry sets
|
|
12
|
+
* this only where a vendor departs from the near-universal ratio, so the ~50 entries below
|
|
13
|
+
* do not each restate the same arithmetic.
|
|
14
|
+
*/
|
|
15
|
+
cacheReadPerMillion?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Price per 1M input tokens WRITTEN into the provider's cache. Omitted ⇒ derived via
|
|
18
|
+
* {@link CACHE_WRITE_MULTIPLIER}. Dearer than fresh input, which is why it cannot be
|
|
19
|
+
* folded into {@link ModelPrice.cacheReadPerMillion}: a loop that keeps invalidating its
|
|
20
|
+
* prefix and a loop riding a warm cache differ by roughly 12x per cached token.
|
|
21
|
+
*/
|
|
22
|
+
cacheWritePerMillion?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Fallback ratio of a cache READ to fresh input, applied when a {@link ModelPrice} names no
|
|
26
|
+
* `cacheReadPerMillion`. Anthropic, OpenAI, DeepSeek and Google all bill a prefix-cache hit at
|
|
27
|
+
* 0.1x their base input rate, so a per-entry copy of the number would be ~50 chances to get one
|
|
28
|
+
* of them wrong rather than a source of accuracy.
|
|
29
|
+
*/
|
|
30
|
+
export declare const CACHE_READ_MULTIPLIER = 0.1;
|
|
31
|
+
/**
|
|
32
|
+
* Fallback ratio of a cache WRITE to fresh input. Anthropic (the only vendor that bills a
|
|
33
|
+
* separate write class at all) charges 1.25x for the 5-minute TTL and 2x for the 1-hour one;
|
|
34
|
+
* the harnesses request the default 5-minute TTL, so 1.25 is the rate our calls actually
|
|
35
|
+
* incur rather than the worst case. A model whose write class is dearer names its own
|
|
36
|
+
* `cacheWritePerMillion`.
|
|
37
|
+
*/
|
|
38
|
+
export declare const CACHE_WRITE_MULTIPLIER = 1.25;
|
|
39
|
+
/**
|
|
40
|
+
* A {@link ModelPrice} with both cache tiers resolved — no optional fields left to derive.
|
|
41
|
+
*
|
|
42
|
+
* Declared as kernel's {@link LlmTokenRates} rather than a second copy of the same four fields,
|
|
43
|
+
* because {@link ratesFor} IS what a facade hands the telemetry rollup as its rate resolver. A
|
|
44
|
+
* structural twin would let the two shapes drift apart while every call site still compiled.
|
|
45
|
+
*/
|
|
46
|
+
export type ResolvedModelPrice = LlmTokenRates;
|
|
47
|
+
/**
|
|
48
|
+
* The three ORTHOGONAL input classes a call spent, as the telemetry side carries them
|
|
49
|
+
* (`LlmCallMetric`): fresh input, cache reads and cache writes are additive, never nested, so
|
|
50
|
+
* total input is their sum. Priced apart because their rates differ by more than an order of
|
|
51
|
+
* magnitude — summing them first and applying the fresh rate is what made a 31M-token,
|
|
52
|
+
* 99.998%-cache-read run meter at roughly ten times what it cost.
|
|
53
|
+
*/
|
|
54
|
+
export interface InputTokenClassUsage {
|
|
55
|
+
/** FRESH (uncached) input tokens, exclusive of both cache classes. */
|
|
56
|
+
promptTokens: number;
|
|
57
|
+
cacheReadTokens: number;
|
|
58
|
+
cacheWriteTokens: number;
|
|
8
59
|
}
|
|
9
60
|
export interface SpendPricing {
|
|
10
61
|
/** ISO 4217 currency all prices and budgets are expressed in. */
|
|
@@ -67,6 +118,23 @@ export declare function withDynamicPrices(pricing: SpendPricing, models: OpenRou
|
|
|
67
118
|
export declare function mergeSpendPricing(base: SpendPricing, overrides: Pick<WorkspaceSettings, 'spendCurrency' | 'spendMonthlyLimit'> | null): SpendPricing;
|
|
68
119
|
/** Resolve the price for a model, most-specific entry first. */
|
|
69
120
|
export declare function priceFor(pricing: SpendPricing, ref: ModelRef): ModelPrice;
|
|
121
|
+
/**
|
|
122
|
+
* {@link priceFor} with both cache tiers filled in from the multipliers where the entry names
|
|
123
|
+
* none. Every per-class cost goes through this rather than reading {@link ModelPrice} directly,
|
|
124
|
+
* so a caller can never silently price a cache class at the fresh rate by forgetting the `??`.
|
|
125
|
+
*/
|
|
126
|
+
export declare function ratesFor(pricing: SpendPricing, ref: ModelRef): ResolvedModelPrice;
|
|
127
|
+
/**
|
|
128
|
+
* Cost of one call's usage priced PER INPUT CLASS, in the pricing currency — the accurate
|
|
129
|
+
* form, used wherever the producer could report the split.
|
|
130
|
+
*
|
|
131
|
+
* {@link estimateCost} is the fallback for a producer that reports one lumped input count: it
|
|
132
|
+
* prices the whole of it as fresh, which OVER-states a cached call and never under-states one.
|
|
133
|
+
* That direction is deliberate — a budget safeguard that undercounts stops safeguarding.
|
|
134
|
+
*/
|
|
135
|
+
export declare function estimateClassedCost(pricing: SpendPricing, ref: ModelRef, usage: InputTokenClassUsage & {
|
|
136
|
+
outputTokens: number;
|
|
137
|
+
}): number;
|
|
70
138
|
/**
|
|
71
139
|
* A {@link ModelCostResolver}-shaped closure over a {@link SpendPricing}, for the
|
|
72
140
|
* model catalog to surface each model's informational list cost in the picker.
|
|
@@ -76,7 +144,13 @@ export declare function modelCostResolver(pricing: SpendPricing): (ref: ModelRef
|
|
|
76
144
|
outputPerMillion: number;
|
|
77
145
|
currency: string;
|
|
78
146
|
};
|
|
79
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* Cost of a single call's token usage, in the pricing currency, from a LUMPED input count.
|
|
149
|
+
*
|
|
150
|
+
* Prices the whole input at the fresh rate because that is all this shape says: an
|
|
151
|
+
* {@link AgentTokenUsage} whose producer could not report the class split. Where the split IS
|
|
152
|
+
* available, {@link estimateClassedCost} is the accurate function and this one over-states.
|
|
153
|
+
*/
|
|
80
154
|
export declare function estimateCost(pricing: SpendPricing, ref: ModelRef, usage: AgentTokenUsage): number;
|
|
81
155
|
/**
|
|
82
156
|
* Build the env-driven operator budget-cap overlay for a {@link SpendPricing}. Each cap
|
package/dist/pricing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
|
package/dist/pricing.js
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
import { costOfTokenClasses } from '@cat-factory/kernel';
|
|
2
|
+
/**
|
|
3
|
+
* Fallback ratio of a cache READ to fresh input, applied when a {@link ModelPrice} names no
|
|
4
|
+
* `cacheReadPerMillion`. Anthropic, OpenAI, DeepSeek and Google all bill a prefix-cache hit at
|
|
5
|
+
* 0.1x their base input rate, so a per-entry copy of the number would be ~50 chances to get one
|
|
6
|
+
* of them wrong rather than a source of accuracy.
|
|
7
|
+
*/
|
|
8
|
+
export const CACHE_READ_MULTIPLIER = 0.1;
|
|
9
|
+
/**
|
|
10
|
+
* Fallback ratio of a cache WRITE to fresh input. Anthropic (the only vendor that bills a
|
|
11
|
+
* separate write class at all) charges 1.25x for the 5-minute TTL and 2x for the 1-hour one;
|
|
12
|
+
* the harnesses request the default 5-minute TTL, so 1.25 is the rate our calls actually
|
|
13
|
+
* incur rather than the worst case. A model whose write class is dearer names its own
|
|
14
|
+
* `cacheWritePerMillion`.
|
|
15
|
+
*/
|
|
16
|
+
export const CACHE_WRITE_MULTIPLIER = 1.25;
|
|
1
17
|
/**
|
|
2
18
|
* The effective monthly limit for a budget tier: the smaller of the tier's configured
|
|
3
19
|
* limit and the operator env cap, treating an absent value as "no constraint". Returns
|
|
@@ -54,8 +70,8 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
54
70
|
// these explicit entries a Cloudflare-Kimi run (the default coder) would fall back to
|
|
55
71
|
// 0.1/0.1 and meter as ~0.00. Cloudflare lists K2.6/K2.7 at $0.95 in / $4.00 out and the
|
|
56
72
|
// older K2.5 at $0.60 in / $3.00 out per 1M (USD→EUR ~0.92); these are Cloudflare's
|
|
57
|
-
// marked-up rates, above Moonshot's direct list (`moonshot:kimi-k2.6`).
|
|
58
|
-
//
|
|
73
|
+
// marked-up rates, above Moonshot's direct list (`moonshot:kimi-k2.6`). Cloudflare
|
|
74
|
+
// publishes no separate cached-input rate for these, so they take the derived tiers. See
|
|
59
75
|
// workers-ai/platform/pricing.
|
|
60
76
|
'workers-ai:@cf/moonshotai/kimi-k2.5': { inputPerMillion: 0.55, outputPerMillion: 2.76 },
|
|
61
77
|
'workers-ai:@cf/moonshotai/kimi-k2.6': { inputPerMillion: 0.87, outputPerMillion: 3.68 },
|
|
@@ -184,6 +200,38 @@ export function priceFor(pricing, ref) {
|
|
|
184
200
|
pricing.prices[ref.provider] ??
|
|
185
201
|
pricing.defaultPrice);
|
|
186
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* {@link priceFor} with both cache tiers filled in from the multipliers where the entry names
|
|
205
|
+
* none. Every per-class cost goes through this rather than reading {@link ModelPrice} directly,
|
|
206
|
+
* so a caller can never silently price a cache class at the fresh rate by forgetting the `??`.
|
|
207
|
+
*/
|
|
208
|
+
export function ratesFor(pricing, ref) {
|
|
209
|
+
const price = priceFor(pricing, ref);
|
|
210
|
+
return {
|
|
211
|
+
inputPerMillion: price.inputPerMillion,
|
|
212
|
+
outputPerMillion: price.outputPerMillion,
|
|
213
|
+
cacheReadPerMillion: price.cacheReadPerMillion ?? price.inputPerMillion * CACHE_READ_MULTIPLIER,
|
|
214
|
+
cacheWritePerMillion: price.cacheWritePerMillion ?? price.inputPerMillion * CACHE_WRITE_MULTIPLIER,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Cost of one call's usage priced PER INPUT CLASS, in the pricing currency — the accurate
|
|
219
|
+
* form, used wherever the producer could report the split.
|
|
220
|
+
*
|
|
221
|
+
* {@link estimateCost} is the fallback for a producer that reports one lumped input count: it
|
|
222
|
+
* prices the whole of it as fresh, which OVER-states a cached call and never under-states one.
|
|
223
|
+
* That direction is deliberate — a budget safeguard that undercounts stops safeguarding.
|
|
224
|
+
*/
|
|
225
|
+
export function estimateClassedCost(pricing, ref, usage) {
|
|
226
|
+
// The arithmetic itself is kernel's, shared with the telemetry rollup and the export, so the
|
|
227
|
+
// ledger and the run surfaces cannot come to price the same classes differently.
|
|
228
|
+
return costOfTokenClasses(ratesFor(pricing, ref), {
|
|
229
|
+
promptTokens: usage.promptTokens,
|
|
230
|
+
cacheReadTokens: usage.cacheReadTokens,
|
|
231
|
+
cacheWriteTokens: usage.cacheWriteTokens,
|
|
232
|
+
completionTokens: usage.outputTokens,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
187
235
|
/**
|
|
188
236
|
* A {@link ModelCostResolver}-shaped closure over a {@link SpendPricing}, for the
|
|
189
237
|
* model catalog to surface each model's informational list cost in the picker.
|
|
@@ -198,7 +246,13 @@ export function modelCostResolver(pricing) {
|
|
|
198
246
|
};
|
|
199
247
|
};
|
|
200
248
|
}
|
|
201
|
-
/**
|
|
249
|
+
/**
|
|
250
|
+
* Cost of a single call's token usage, in the pricing currency, from a LUMPED input count.
|
|
251
|
+
*
|
|
252
|
+
* Prices the whole input at the fresh rate because that is all this shape says: an
|
|
253
|
+
* {@link AgentTokenUsage} whose producer could not report the class split. Where the split IS
|
|
254
|
+
* available, {@link estimateClassedCost} is the accurate function and this one over-states.
|
|
255
|
+
*/
|
|
202
256
|
export function estimateCost(pricing, ref, usage) {
|
|
203
257
|
const price = priceFor(pricing, ref);
|
|
204
258
|
return ((usage.inputTokens / 1_000_000) * price.inputPerMillion +
|
package/dist/pricing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/spend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Pricing tables and spend metering for the Agent Architecture Board.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-factory/contracts": "0.
|
|
28
|
-
"@cat-factory/kernel": "0.
|
|
27
|
+
"@cat-factory/contracts": "0.225.0",
|
|
28
|
+
"@cat-factory/kernel": "0.227.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "7.0.2",
|