@cat-factory/spend 0.20.2 → 0.21.0
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.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 +81 -10
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +291 -82
- package/dist/pricing.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { SpendService, type SpendServiceDependencies, type RecordUsageInput, type ScopedSpendForecast, type BudgetTierScope, } from './SpendService.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, startOfNextMonthUtc, } from './pricing.js';
|
|
2
|
+
export { type BandRates, type LongContextBand, type ModelPrice, type ResolvedModelPrice, type InputTokenClassUsage, type SpendPricing, CACHE_READ_MULTIPLIER, CACHE_WRITE_MULTIPLIER, DEFAULT_MODEL_PRICES, DEFAULT_MONTHLY_LIMIT_EUR, DEFAULT_SPEND_PRICING, bandFor, budgetCapsOverlay, effectiveTierLimit, priceFor, ratesFor, modelCostResolver, estimateCost, estimateClassedCost, withDynamicPrices, startOfMonthUtc, startOfNextMonthUtc, } from './pricing.js';
|
|
3
3
|
export { type SpendAlertSignals, type SpendAlertState, type SpendForecast, type SpendForecastConfidence, type SpendForecastInput, BURN_RATE_WINDOW_MS, DEFAULT_SPEND_ALERT_THRESHOLDS, MIN_OBSERVED_SPAN_MS, forecastSpend, mergeSpendAlertStates, spendAlertEscalated, spendAlertFiring, spendAlertState, } from './forecast.logic.js';
|
|
4
4
|
//# 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,mBAAmB,EACxB,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,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,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,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Pricing tables and spend metering/gating for @cat-factory.
|
|
2
2
|
export { SpendService, } from './SpendService.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, startOfNextMonthUtc, } from './pricing.js';
|
|
3
|
+
export { CACHE_READ_MULTIPLIER, CACHE_WRITE_MULTIPLIER, DEFAULT_MODEL_PRICES, DEFAULT_MONTHLY_LIMIT_EUR, DEFAULT_SPEND_PRICING, bandFor, budgetCapsOverlay, effectiveTierLimit, priceFor, ratesFor, modelCostResolver, estimateCost, estimateClassedCost, withDynamicPrices, startOfMonthUtc, startOfNextMonthUtc, } from './pricing.js';
|
|
4
4
|
export { BURN_RATE_WINDOW_MS, DEFAULT_SPEND_ALERT_THRESHOLDS, MIN_OBSERVED_SPAN_MS, forecastSpend, mergeSpendAlertStates, spendAlertEscalated, spendAlertFiring, spendAlertState, } from './forecast.logic.js';
|
|
5
5
|
//# 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,GAKb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EACL,YAAY,GAKb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAOL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAML,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,CAAA"}
|
package/dist/pricing.d.ts
CHANGED
|
@@ -1,26 +1,67 @@
|
|
|
1
1
|
import type { InputTokenClassCounts, 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
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* The four per-1M rates ONE BAND bills at.
|
|
6
|
+
*
|
|
7
|
+
* Most models have a single band, which is why this shape is also a whole {@link ModelPrice}.
|
|
8
|
+
* A vendor that reprices an entire request past a prompt threshold has two, and both sit on the
|
|
9
|
+
* same entry: see {@link ModelPrice.longBand}.
|
|
10
|
+
*
|
|
11
|
+
* The two cache rates are relative to THIS band's own `inputPerMillion`, so a band that departs
|
|
12
|
+
* from the multiplier floors names its own pair rather than borrowing the other band's.
|
|
13
|
+
*/
|
|
14
|
+
export interface BandRates {
|
|
6
15
|
/** Price per 1M FRESH (uncached) input tokens. */
|
|
7
16
|
inputPerMillion: number;
|
|
8
17
|
outputPerMillion: number;
|
|
9
18
|
/**
|
|
10
19
|
* Price per 1M input tokens served from the provider's prompt cache. Omitted ⇒ derived
|
|
11
|
-
* from {@link
|
|
12
|
-
* this only where a vendor departs from the near-universal ratio, so the ~50
|
|
13
|
-
* do not each restate the same arithmetic.
|
|
20
|
+
* from this band's {@link BandRates.inputPerMillion} via {@link CACHE_READ_MULTIPLIER}. An
|
|
21
|
+
* entry sets this only where a vendor departs from the near-universal ratio, so the ~50
|
|
22
|
+
* entries below do not each restate the same arithmetic.
|
|
14
23
|
*/
|
|
15
24
|
cacheReadPerMillion?: number;
|
|
16
25
|
/**
|
|
17
26
|
* Price per 1M input tokens WRITTEN into the provider's cache. Omitted ⇒ derived via
|
|
18
27
|
* {@link CACHE_WRITE_MULTIPLIER}. Dearer than fresh input, which is why it cannot be
|
|
19
|
-
* folded into {@link
|
|
28
|
+
* folded into {@link BandRates.cacheReadPerMillion}: a loop that keeps invalidating its
|
|
20
29
|
* prefix and a loop riding a warm cache differ by roughly 12x per cached token.
|
|
21
30
|
*/
|
|
22
31
|
cacheWritePerMillion?: number;
|
|
23
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* The dearer rates a request is billed at once its input reaches {@link minPromptTokens}.
|
|
35
|
+
*
|
|
36
|
+
* Three vendors bill this way today (OpenAI at 272K input tokens, Gemini 3.1 Pro and Grok 4.6 at
|
|
37
|
+
* 200K): past the threshold the WHOLE request reprices, with no blending, so one model has two
|
|
38
|
+
* prices. The threshold is the only band condition modelled here, because it is the only one a
|
|
39
|
+
* meter can evaluate: the prompt size is recorded on the usage it prices. DeepSeek's peak /
|
|
40
|
+
* off-peak split is a band on the WALL CLOCK, which nothing hands {@link estimateCost}, so those
|
|
41
|
+
* rows carry the peak rate in their base band and say so.
|
|
42
|
+
*/
|
|
43
|
+
export interface LongContextBand extends BandRates {
|
|
44
|
+
/**
|
|
45
|
+
* Total input tokens at which this band takes over, counting EVERY input class: the vendor
|
|
46
|
+
* bands on the size of the request it received, and fresh input, cache reads and cache writes
|
|
47
|
+
* are a partition of that (kernel's `InputTokenClassCounts`). Counting fresh input alone would
|
|
48
|
+
* leave a 300K-token prompt served mostly from cache priced in the short band.
|
|
49
|
+
*/
|
|
50
|
+
minPromptTokens: number;
|
|
51
|
+
}
|
|
52
|
+
/** Price per 1M input/output tokens for one model, in each band the vendor bills it in. */
|
|
53
|
+
export interface ModelPrice extends BandRates {
|
|
54
|
+
/**
|
|
55
|
+
* The long-context band, for a vendor that has one. Absent ⇒ one price at any prompt size.
|
|
56
|
+
*
|
|
57
|
+
* Kept as a second band rather than folded into the base rates: a folded row prices every
|
|
58
|
+
* SHORT request on a two-band model at roughly double its cost, and the picker renders that
|
|
59
|
+
* doubled figure as the model's list price beside single-band models at their real one.
|
|
60
|
+
* {@link bandFor} picks between them, and answers the DEARER one where the caller cannot say
|
|
61
|
+
* how large the prompt was.
|
|
62
|
+
*/
|
|
63
|
+
longBand?: LongContextBand;
|
|
64
|
+
}
|
|
24
65
|
/**
|
|
25
66
|
* Fallback ratio of a cache READ to fresh input, applied when a {@link ModelPrice} names no
|
|
26
67
|
* `cacheReadPerMillion`. Anthropic, OpenAI, DeepSeek and Google all bill a prefix-cache hit at
|
|
@@ -118,6 +159,14 @@ export declare const DEFAULT_SPEND_PRICING: SpendPricing;
|
|
|
118
159
|
* catalog's 4-dp rounding makes of any real rate below 0.00005/1M. Overlaid, it would meter every
|
|
119
160
|
* cache hit on that model at nothing, which is the one direction a budget safeguard may never be
|
|
120
161
|
* wrong in. The multiplier over-states instead, which is the direction that keeps safeguarding.
|
|
162
|
+
*
|
|
163
|
+
* An overlaid entry carries NO {@link ModelPrice.longBand}, and is a single rate on purpose: the
|
|
164
|
+
* catalog's own fold (`dearestRate` in `openRouterModels.ts`) has already collapsed a model's
|
|
165
|
+
* conditional bands to their MAXIMUM, because which band applies depends on the prompt actually
|
|
166
|
+
* sent and a catalog is refreshed long before it. So enabling a two-band model in a workspace's
|
|
167
|
+
* OpenRouter catalog meters its short requests in the long band, where the curated row beside it
|
|
168
|
+
* prices each band exactly. That is the safe direction of the two, and closing the gap means
|
|
169
|
+
* carrying the threshold through {@link OpenRouterModelMeta} rather than re-deriving it here.
|
|
121
170
|
*/
|
|
122
171
|
export declare function withDynamicPrices(pricing: SpendPricing, models: OpenRouterModelMeta[]): SpendPricing;
|
|
123
172
|
/**
|
|
@@ -130,11 +179,26 @@ export declare function mergeSpendPricing(base: SpendPricing, overrides: Pick<Wo
|
|
|
130
179
|
/** Resolve the price for a model, most-specific entry first. */
|
|
131
180
|
export declare function priceFor(pricing: SpendPricing, ref: ModelRef): ModelPrice;
|
|
132
181
|
/**
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
182
|
+
* The band an entry bills a request of `inputTokens` at: its {@link ModelPrice.longBand} once the
|
|
183
|
+
* threshold is reached, else its base rates.
|
|
184
|
+
*
|
|
185
|
+
* An UNKNOWN `inputTokens` answers the LONG band, which is the whole reason the argument is
|
|
186
|
+
* optional rather than required. A caller that cannot see the prompt size (the telemetry rollup's
|
|
187
|
+
* rate resolver holds a model and an aggregate, never one call's counts) must still be handed a
|
|
188
|
+
* rate a budget can meter with, and of the two only the dearer one keeps a safeguard safeguarding.
|
|
189
|
+
* A single-band entry ignores the argument entirely.
|
|
136
190
|
*/
|
|
137
|
-
export declare function
|
|
191
|
+
export declare function bandFor(price: ModelPrice, inputTokens?: number): BandRates;
|
|
192
|
+
/**
|
|
193
|
+
* {@link priceFor} resolved to ONE band with both cache tiers filled in from the multipliers where
|
|
194
|
+
* that band names none. Every per-class cost goes through this rather than reading
|
|
195
|
+
* {@link ModelPrice} directly, so a caller can never silently price a cache class at the fresh
|
|
196
|
+
* rate by forgetting the `??`, nor price a long-context request in the short band.
|
|
197
|
+
*
|
|
198
|
+
* `inputTokens` is the request's TOTAL input, the count a vendor's threshold is stated against;
|
|
199
|
+
* see {@link bandFor} for what an absent one resolves to.
|
|
200
|
+
*/
|
|
201
|
+
export declare function ratesFor(pricing: SpendPricing, ref: ModelRef, inputTokens?: number): ResolvedModelPrice;
|
|
138
202
|
/**
|
|
139
203
|
* Cost of one call's usage priced PER INPUT CLASS, in the pricing currency — the accurate
|
|
140
204
|
* form, used wherever the producer could report the split.
|
|
@@ -149,6 +213,13 @@ export declare function estimateClassedCost(pricing: SpendPricing, ref: ModelRef
|
|
|
149
213
|
/**
|
|
150
214
|
* A {@link ModelCostResolver}-shaped closure over a {@link SpendPricing}, for the
|
|
151
215
|
* model catalog to surface each model's informational list cost in the picker.
|
|
216
|
+
*
|
|
217
|
+
* The BASE band, never {@link ModelPrice.longBand}, and that is the difference between this and
|
|
218
|
+
* the metering paths. A budget must cover what a request will really cost, so an unknown prompt
|
|
219
|
+
* size resolves to the dearer band; the picker is a human comparing models at a glance, where
|
|
220
|
+
* every other row shows one list rate and a doubled figure beside them reads as a model that
|
|
221
|
+
* costs twice what it does. The band is not annotated either, for the same reason it is a single
|
|
222
|
+
* number: the surface has one line per model and no room to state a threshold.
|
|
152
223
|
*/
|
|
153
224
|
export declare function modelCostResolver(pricing: SpendPricing): (ref: ModelRef) => {
|
|
154
225
|
inputPerMillion: number;
|
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,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAkBpF
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAkBpF;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,2FAA2F;AAC3F,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAA;AAExD,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAClC,+EAA+E;IAC/E,YAAY,EAAE,UAAU,CAAA;IACxB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7B,MAAM,CAOR;AAeD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAkjB3D,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,eAAO,MAAM,qBAAqB,EAAE,YAKnC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,mBAAmB,EAAE,GAC5B,YAAY,CAiBd;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,mBAAmB,CAAC,GAAG,IAAI,GAC/E,YAAY,CASd;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,GAAG,UAAU,CAMzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAI1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,QAAQ,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,CASpB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,oBAAoB,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACrD,MAAM,CAcR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,GACpB,CAAC,GAAG,EAAE,QAAQ,KAAK;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAS5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAajG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,GAAG,qBAAqB,CAAC,CAAC,CAS/E;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3D"}
|
package/dist/pricing.js
CHANGED
|
@@ -30,6 +30,18 @@ export function effectiveTierLimit(configured, cap) {
|
|
|
30
30
|
// empty case needs no branch of its own.
|
|
31
31
|
return Math.min(...values);
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* The input-token thresholds the three two-band vendors reprice a whole request at, one constant
|
|
35
|
+
* per vendor: each moves on its own vendor's say-so, and two of them agree today by coincidence.
|
|
36
|
+
*
|
|
37
|
+
* Named rather than repeated on the rows that share one. The OpenAI threshold appears on ten
|
|
38
|
+
* entries (five direct, five gateway), and a per-row copy would be ten chances to mistype the
|
|
39
|
+
* number that decides which band a run is metered in, in a table where a wrong figure looks
|
|
40
|
+
* exactly like a right one.
|
|
41
|
+
*/
|
|
42
|
+
const OPENAI_LONG_CONTEXT_TOKENS = 272_000;
|
|
43
|
+
const GEMINI_LONG_CONTEXT_TOKENS = 200_000;
|
|
44
|
+
const GROK_LONG_CONTEXT_TOKENS = 200_000;
|
|
33
45
|
/**
|
|
34
46
|
* Built-in approximate EUR prices per 1M tokens. Keys are matched most-specific
|
|
35
47
|
* first: exact `provider:model`, then the bare `provider`, then `defaultPrice`.
|
|
@@ -66,20 +78,69 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
66
78
|
// ChatGPT/Codex subscription models (informational list prices, USD→EUR ~0.92). Keys are
|
|
67
79
|
// the Codex `--model` slugs the catalog dispatches, so GPT-6 Astra, the GPT-5.6 tiers and
|
|
68
80
|
// plain GPT-5.5, never a `-codex`-suffixed id, which no longer exists past GPT-5.3.
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
//
|
|
82
|
+
// ALL FIVE ARE TWO-BAND, the shape the `xai:grok-4.6` row below and the Gemini 3.1 Pro row also
|
|
83
|
+
// carry. OpenAI bills a request whose prompt reaches 272,000 input tokens ENTIRELY at roughly
|
|
84
|
+
// double the short rate, with no blending, so each row states both bands and `bandFor` picks
|
|
85
|
+
// the one the recorded input size lands in. Short list is $10 / $50 (Astra), $4 / $20 (Sol),
|
|
86
|
+
// $2 / $12 (Terra), $0.20 / $1.20 (Luna) and $5 / $30 (GPT-5.5); the long band is $20 / $75,
|
|
87
|
+
// $8 / $30, $4 / $18, $0.40 / $1.80 and $10 / $45. The catalog declares a 1,050,000-token
|
|
88
|
+
// window on these entries, so a container agent re-sending a large checkout reaches the long
|
|
89
|
+
// band as ordinary behaviour rather than as an edge case.
|
|
90
|
+
//
|
|
91
|
+
// Both DERIVED cache tiers stay exact in EITHER band: cache reads bill at 0.1x and writes at
|
|
92
|
+
// 1.25x of that band's own input rate on all five tiers, so no band here names one.
|
|
93
|
+
//
|
|
94
|
+
// The 2x "Fast mode" rate is deliberately not modelled: nothing here dispatches it, and a row
|
|
95
|
+
// set to a mode we never request would over-meter every ordinary run.
|
|
96
|
+
'openai:gpt-6-astra': {
|
|
97
|
+
inputPerMillion: 9.2,
|
|
98
|
+
outputPerMillion: 46,
|
|
99
|
+
longBand: {
|
|
100
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
101
|
+
inputPerMillion: 18.4,
|
|
102
|
+
outputPerMillion: 69,
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
'openai:gpt-5.6-sol': {
|
|
106
|
+
inputPerMillion: 3.68,
|
|
107
|
+
outputPerMillion: 18.4,
|
|
108
|
+
longBand: {
|
|
109
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
110
|
+
inputPerMillion: 7.36,
|
|
111
|
+
outputPerMillion: 27.6,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
'openai:gpt-5.6-terra': {
|
|
115
|
+
inputPerMillion: 1.84,
|
|
116
|
+
outputPerMillion: 11.04,
|
|
117
|
+
longBand: {
|
|
118
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
119
|
+
inputPerMillion: 3.68,
|
|
120
|
+
outputPerMillion: 16.56,
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
// Luna's bands round UP, both of them (0.184 to 0.19 short, 0.368 to 0.37 long): this is the one
|
|
124
|
+
// OpenAI tier whose EUR figures do not land on a clean two decimals, and rounding the other way
|
|
125
|
+
// is the understatement the table's whole margin exists to rule out.
|
|
126
|
+
'openai:gpt-5.6-luna': {
|
|
127
|
+
inputPerMillion: 0.19,
|
|
128
|
+
outputPerMillion: 1.11,
|
|
129
|
+
longBand: {
|
|
130
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
131
|
+
inputPerMillion: 0.37,
|
|
132
|
+
outputPerMillion: 1.66,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
'openai:gpt-5.5': {
|
|
136
|
+
inputPerMillion: 4.6,
|
|
137
|
+
outputPerMillion: 27.6,
|
|
138
|
+
longBand: {
|
|
139
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
140
|
+
inputPerMillion: 9.2,
|
|
141
|
+
outputPerMillion: 41.4,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
83
144
|
openai: { inputPerMillion: 0.14, outputPerMillion: 0.55 },
|
|
84
145
|
// Cloudflare Workers AI is billed per "neuron"; treat it as roughly free. Every model
|
|
85
146
|
// BELOW is a per-token-billed exception — see the note on the Kimi entries: a model with
|
|
@@ -107,10 +168,13 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
107
168
|
// $0.19 for K2.7), and each sits above the 0.1x floor these entries would otherwise derive.
|
|
108
169
|
// All three are named for that reason: deriving the cheaper number under-meters every cache
|
|
109
170
|
// read on the default coder route, which is the one direction the budget gate may not err in.
|
|
171
|
+
// Each is rounded UP to the two decimals this table states rates in (0.092 to 0.10, 0.1472 to
|
|
172
|
+
// 0.15, 0.1748 to 0.18), since rounding a named rate down re-creates the same undercount from
|
|
173
|
+
// the other side.
|
|
110
174
|
'workers-ai:@cf/moonshotai/kimi-k2.5': {
|
|
111
175
|
inputPerMillion: 0.55,
|
|
112
176
|
outputPerMillion: 2.76,
|
|
113
|
-
cacheReadPerMillion: 0.
|
|
177
|
+
cacheReadPerMillion: 0.1,
|
|
114
178
|
},
|
|
115
179
|
'workers-ai:@cf/moonshotai/kimi-k2.6': {
|
|
116
180
|
inputPerMillion: 0.87,
|
|
@@ -120,7 +184,7 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
120
184
|
'workers-ai:@cf/moonshotai/kimi-k2.7-code': {
|
|
121
185
|
inputPerMillion: 0.87,
|
|
122
186
|
outputPerMillion: 3.68,
|
|
123
|
-
cacheReadPerMillion: 0.
|
|
187
|
+
cacheReadPerMillion: 0.18,
|
|
124
188
|
},
|
|
125
189
|
// The remaining per-token-billed Workers AI models the catalog exposes. GLM-5.2 is the
|
|
126
190
|
// default architect/reviewer routing and the R1 distill is the DeepSeek Cloudflare
|
|
@@ -256,12 +320,33 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
256
320
|
'zai:glm-5.2': { inputPerMillion: 1.29, outputPerMillion: 4.05, cacheReadPerMillion: 0.24 },
|
|
257
321
|
zai: { inputPerMillion: 1.29, outputPerMillion: 4.05, cacheReadPerMillion: 0.24 },
|
|
258
322
|
// xAI direct. Grok 4.6 bills in two bands: $2 in / $0.50 cached / $6 out per 1M below a
|
|
259
|
-
// 200K-token prompt, and DOUBLE that for the whole request once the prompt crosses 200K.
|
|
260
|
-
//
|
|
261
|
-
//
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
xai:
|
|
323
|
+
// 200K-token prompt, and DOUBLE that for the whole request once the prompt crosses 200K. Both
|
|
324
|
+
// bands NAME their cache read, because xAI's cached-input rate is 0.25x its fresh input rather
|
|
325
|
+
// than the 0.1x floor either band would otherwise derive. The bare `xai` fallback carries the
|
|
326
|
+
// same pair: Grok 4.6 is the only model this catalog selects on the route, so the guess for an
|
|
327
|
+
// unlisted one is the model that is really there. (USD→EUR ~0.92.)
|
|
328
|
+
'xai:grok-4.6': {
|
|
329
|
+
inputPerMillion: 1.84,
|
|
330
|
+
outputPerMillion: 5.52,
|
|
331
|
+
cacheReadPerMillion: 0.46,
|
|
332
|
+
longBand: {
|
|
333
|
+
minPromptTokens: GROK_LONG_CONTEXT_TOKENS,
|
|
334
|
+
inputPerMillion: 3.68,
|
|
335
|
+
outputPerMillion: 11.04,
|
|
336
|
+
cacheReadPerMillion: 0.92,
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
xai: {
|
|
340
|
+
inputPerMillion: 1.84,
|
|
341
|
+
outputPerMillion: 5.52,
|
|
342
|
+
cacheReadPerMillion: 0.46,
|
|
343
|
+
longBand: {
|
|
344
|
+
minPromptTokens: GROK_LONG_CONTEXT_TOKENS,
|
|
345
|
+
inputPerMillion: 3.68,
|
|
346
|
+
outputPerMillion: 11.04,
|
|
347
|
+
cacheReadPerMillion: 0.92,
|
|
348
|
+
},
|
|
349
|
+
},
|
|
265
350
|
// OpenRouter — a passthrough gateway billed at the underlying provider's rates (no
|
|
266
351
|
// per-token markup), so each curated model carries the upstream vendor's list price
|
|
267
352
|
// (USD→EUR ~0.92). Keyed by the OpenRouter `vendor/model` slug. The bare `openrouter`
|
|
@@ -273,26 +358,87 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
273
358
|
'openrouter:anthropic/claude-fable-5': { inputPerMillion: 9.2, outputPerMillion: 46 },
|
|
274
359
|
'openrouter:anthropic/claude-opus-5': { inputPerMillion: 4.6, outputPerMillion: 23 },
|
|
275
360
|
'openrouter:anthropic/claude-opus-4.8': { inputPerMillion: 4.6, outputPerMillion: 23 },
|
|
276
|
-
|
|
361
|
+
// Gemini 3.1 Pro is the THIRD two-band route in this table, beside OpenAI below and xAI further
|
|
362
|
+
// down, and the only Gemini entry that has one: Google bills a prompt over 200,000 tokens at
|
|
363
|
+
// $4 in / $0.40 cached / $18 out per 1M against the $2 / $0.20 / $12 under it. The catalog gives
|
|
364
|
+
// this entry a 1,048,576-token window, so the long band is reachable by an ordinary long-context
|
|
365
|
+
// run rather than by an edge case. Neither band names a cache tier: the 0.1x floor lands exactly
|
|
366
|
+
// on each band's own published cached rate.
|
|
367
|
+
'openrouter:google/gemini-3.1-pro-preview': {
|
|
368
|
+
inputPerMillion: 1.84,
|
|
369
|
+
outputPerMillion: 11.04,
|
|
370
|
+
longBand: {
|
|
371
|
+
minPromptTokens: GEMINI_LONG_CONTEXT_TOKENS,
|
|
372
|
+
inputPerMillion: 3.68,
|
|
373
|
+
outputPerMillion: 16.56,
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
// The three Flash rows are ONE band each, which is what makes them the plain case beside the
|
|
377
|
+
// entry above: Google prices them per token regardless of prompt length. All three sit at the
|
|
378
|
+
// $0.75 / $0.075 cached / $3.75 per 1M the gateway serves today, undiscounted, so these are the
|
|
379
|
+
// rate actually billed and the derived cache tier is exact.
|
|
380
|
+
//
|
|
381
|
+
// Google has published a 100% increase on all three for 2027-01-01, which this table does not
|
|
382
|
+
// pre-empt: a future price is not the current one, and the sweep after it lands it.
|
|
277
383
|
'openrouter:google/gemini-3.6-flash': { inputPerMillion: 0.69, outputPerMillion: 3.45 },
|
|
278
|
-
// Priced at Google's $0.75 / $3.75 list, NOT the $0.375 / $1.875 the route is still
|
|
279
|
-
// discounted to. The discount is temporary and the budget gate may not undercount when it
|
|
280
|
-
// lapses; over-metering by 2x while it holds is the accepted cost. Google has also
|
|
281
|
-
// published a 100% increase on BOTH Flash rows for 2027-01-01, which this table does not
|
|
282
|
-
// pre-empt: a future price is not the current one, and the next sweep lands it.
|
|
283
384
|
'openrouter:google/gemini-3.7-flash': { inputPerMillion: 0.69, outputPerMillion: 3.45 },
|
|
284
|
-
// 3.8 Flash launched at 3.7 Flash's list, $0.75 / $3.75, and is NOT discounted, so this row
|
|
285
|
-
// is the rate actually billed rather than the deliberate over-count above it.
|
|
286
385
|
'openrouter:google/gemini-3.8-flash': { inputPerMillion: 0.69, outputPerMillion: 3.45 },
|
|
287
|
-
// The same OpenAI list prices
|
|
288
|
-
//
|
|
289
|
-
//
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
'
|
|
386
|
+
// The same OpenAI list prices and the same two bands as the direct rows above, which
|
|
387
|
+
// `pricing.test.ts` asserts pair for pair rather than leaving to the eye: the gateway confirms
|
|
388
|
+
// the mechanism outright, since every one of these slugs carries an
|
|
389
|
+
// `overrides: [{ min_prompt_tokens: 272000, … }]` entry in the `/models` payload at exactly the
|
|
390
|
+
// doubled rates OpenAI publishes. OpenRouter is a passthrough, so the band reaches this route
|
|
391
|
+
// too, and `openai` is `auto-prefix` on the gateway, so a long-prompt container turn really is
|
|
392
|
+
// billed in the band these rows state.
|
|
393
|
+
//
|
|
394
|
+
// OpenRouter's own model page advertises Sol at HALF OpenAI's list in both bands ($2 / $10
|
|
395
|
+
// short, $4 / $15 long), below its own Terra row in the short band; that is an upstream listing
|
|
396
|
+
// artefact, so the entry stays on the vendor list price this passthrough gateway bills at.
|
|
397
|
+
'openrouter:openai/gpt-6-astra': {
|
|
398
|
+
inputPerMillion: 9.2,
|
|
399
|
+
outputPerMillion: 46,
|
|
400
|
+
longBand: {
|
|
401
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
402
|
+
inputPerMillion: 18.4,
|
|
403
|
+
outputPerMillion: 69,
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
'openrouter:openai/gpt-5.6-sol': {
|
|
407
|
+
inputPerMillion: 3.68,
|
|
408
|
+
outputPerMillion: 18.4,
|
|
409
|
+
longBand: {
|
|
410
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
411
|
+
inputPerMillion: 7.36,
|
|
412
|
+
outputPerMillion: 27.6,
|
|
413
|
+
},
|
|
414
|
+
},
|
|
415
|
+
'openrouter:openai/gpt-5.6-terra': {
|
|
416
|
+
inputPerMillion: 1.84,
|
|
417
|
+
outputPerMillion: 11.04,
|
|
418
|
+
longBand: {
|
|
419
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
420
|
+
inputPerMillion: 3.68,
|
|
421
|
+
outputPerMillion: 16.56,
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
'openrouter:openai/gpt-5.6-luna': {
|
|
425
|
+
inputPerMillion: 0.19,
|
|
426
|
+
outputPerMillion: 1.11,
|
|
427
|
+
longBand: {
|
|
428
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
429
|
+
inputPerMillion: 0.37,
|
|
430
|
+
outputPerMillion: 1.66,
|
|
431
|
+
},
|
|
432
|
+
},
|
|
433
|
+
'openrouter:openai/gpt-5.5': {
|
|
434
|
+
inputPerMillion: 4.6,
|
|
435
|
+
outputPerMillion: 27.6,
|
|
436
|
+
longBand: {
|
|
437
|
+
minPromptTokens: OPENAI_LONG_CONTEXT_TOKENS,
|
|
438
|
+
inputPerMillion: 9.2,
|
|
439
|
+
outputPerMillion: 41.4,
|
|
440
|
+
},
|
|
441
|
+
},
|
|
296
442
|
'openrouter:openai/gpt-oss-120b': { inputPerMillion: 0.034, outputPerMillion: 0.16 },
|
|
297
443
|
// Meta Muse Spark 1.3, both tiers: $1.25 / $4.25 standard, $0.10 / $0.20 contributor. The
|
|
298
444
|
// two are the same model on the same route, so the gap between these rows IS the entire
|
|
@@ -315,14 +461,14 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
315
461
|
// OpenRouter models API actually reported when it was last read, and why re-reading it is
|
|
316
462
|
// part of every pricing sweep rather than something to infer from the vendor's own page.
|
|
317
463
|
//
|
|
318
|
-
// Observed 2026-09-
|
|
319
|
-
// cached / $0.
|
|
320
|
-
//
|
|
321
|
-
//
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
//
|
|
325
|
-
//
|
|
464
|
+
// Observed 2026-09-09 by `scripts/check-openrouter-pins.mjs`: Flash $0.0825 in / $0.0165
|
|
465
|
+
// cached / $0.1649 out, Pro $0.946 in / $0.0789 cached / $1.893 out per 1M. Both rows are left
|
|
466
|
+
// where they are: each now sits ABOVE its live rate, which is the margin this table is for, and
|
|
467
|
+
// Pro has swung $0.556 → $1.60 → $0.946 across three reads in a fortnight. Chasing that blend
|
|
468
|
+
// down would spend the margin on noise and hand the next reader a number that is wrong in the
|
|
469
|
+
// unsafe direction as soon as the cheap upstreams thin again; only an UNDERSTATED pin is
|
|
470
|
+
// re-pinned here. Re-reading the blend is still part of every sweep, because the stamp is the
|
|
471
|
+
// only record of which direction it moved.
|
|
326
472
|
'openrouter:deepseek/deepseek-v4-flash': {
|
|
327
473
|
inputPerMillion: 0.082,
|
|
328
474
|
outputPerMillion: 0.164,
|
|
@@ -333,12 +479,19 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
333
479
|
outputPerMillion: 2.95,
|
|
334
480
|
cacheReadPerMillion: 0.125,
|
|
335
481
|
},
|
|
336
|
-
// K2.7 Code's cache-read rate ($0.19/M) is ~2.
|
|
337
|
-
// named; K3's ($0.30/M) IS the floor, so it derives.
|
|
482
|
+
// K2.7 Code's cache-read rate ($0.19/M) is ~2.6x the 0.1x floor its input implies, so it is
|
|
483
|
+
// named; K3's ($0.30/M) IS the floor, so it derives. Named at 0.18 rather than the 0.1748 the
|
|
484
|
+
// conversion gives, because two decimals is the unit every other rate here is written in and
|
|
485
|
+
// 0.17 would sit under the live rate by more than the pin checker's rounding tolerance.
|
|
486
|
+
//
|
|
487
|
+
// The fresh classes read $0.71 / $3.50 on the gateway's blend today, up ~5% and ~3%: the slug is
|
|
488
|
+
// served by several upstreams and the cheap end of that pool thinned. Small, and acted on
|
|
489
|
+
// because the direction is the one this table may not sit on. `moonshotai` is `auto-prefix` on
|
|
490
|
+
// the gateway, so all three classes on this route are really recorded and really metered.
|
|
338
491
|
'openrouter:moonshotai/kimi-k2.7-code': {
|
|
339
|
-
inputPerMillion: 0.
|
|
340
|
-
outputPerMillion: 3.
|
|
341
|
-
cacheReadPerMillion: 0.
|
|
492
|
+
inputPerMillion: 0.66,
|
|
493
|
+
outputPerMillion: 3.22,
|
|
494
|
+
cacheReadPerMillion: 0.18,
|
|
342
495
|
},
|
|
343
496
|
'openrouter:moonshotai/kimi-k3': { inputPerMillion: 2.76, outputPerMillion: 13.8 },
|
|
344
497
|
// $1.19 in / $0.221 cached / $3.74 out per 1M, roughly double the $0.63 / $1.98 this row
|
|
@@ -352,12 +505,18 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
352
505
|
cacheReadPerMillion: 0.21,
|
|
353
506
|
},
|
|
354
507
|
// GLM-5.3's open weights landed after the last sweep, so the gateway now serves it and the
|
|
355
|
-
// catalog routes to it. Same $1.40 / $4.40 list as every other GLM-5.3 row here.
|
|
356
|
-
//
|
|
357
|
-
//
|
|
358
|
-
//
|
|
359
|
-
//
|
|
360
|
-
|
|
508
|
+
// catalog routes to it. Same $1.40 / $4.40 list as every other GLM-5.3 row here.
|
|
509
|
+
//
|
|
510
|
+
// The cached tier is NAMED because OpenRouter's blend now reads Z.ai's own $0.26/M, which the
|
|
511
|
+
// 0.1x floor this input implies ($0.129) would meter at 54% of. `z-ai` is `auto-prefix` on the
|
|
512
|
+
// gateway, so this is the class a container agent's re-sent prefix lands in on every turn: the
|
|
513
|
+
// one understatement on this row a budget could spend through. Rounded UP from 0.2392, as the
|
|
514
|
+
// `z-ai/glm-5.2` row beside it is.
|
|
515
|
+
'openrouter:z-ai/glm-5.3': {
|
|
516
|
+
inputPerMillion: 1.29,
|
|
517
|
+
outputPerMillion: 4.05,
|
|
518
|
+
cacheReadPerMillion: 0.24,
|
|
519
|
+
},
|
|
361
520
|
// The same Z.ai list rates as the `zai:` row above: OpenRouter passes the upstream vendor's
|
|
362
521
|
// price through, and the launch promotion the slug is served at today is the half-rate this
|
|
363
522
|
// row deliberately does not carry.
|
|
@@ -373,19 +532,28 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
373
532
|
outputPerMillion: 0.37,
|
|
374
533
|
cacheReadPerMillion: 0.01,
|
|
375
534
|
},
|
|
376
|
-
// The SAME
|
|
377
|
-
//
|
|
378
|
-
// $
|
|
379
|
-
//
|
|
380
|
-
//
|
|
381
|
-
// and every long-prompt token by half. `x-ai` is `auto-prefix` on the gateway, so that cache
|
|
382
|
-
// class is really recorded and really metered: this was the one pinned row whose understatement
|
|
383
|
-
// the budget gate could actually spend through.
|
|
535
|
+
// The SAME two bands as the `xai:grok-4.6` row above, for the reason stated there: xAI bills a
|
|
536
|
+
// request whose prompt reaches 200K tokens entirely at $4 in / $1 cached / $12 out against
|
|
537
|
+
// $2 / $0.50 / $6 below it, and OpenRouter is a passthrough, so both bands reach this route.
|
|
538
|
+
// `x-ai` is `auto-prefix` on the gateway, so the cache class is really recorded and really
|
|
539
|
+
// metered, which is why each band names its own rate instead of deriving one at 0.1x.
|
|
384
540
|
'openrouter:x-ai/grok-4.6': {
|
|
385
|
-
inputPerMillion:
|
|
386
|
-
outputPerMillion:
|
|
387
|
-
cacheReadPerMillion: 0.
|
|
541
|
+
inputPerMillion: 1.84,
|
|
542
|
+
outputPerMillion: 5.52,
|
|
543
|
+
cacheReadPerMillion: 0.46,
|
|
544
|
+
longBand: {
|
|
545
|
+
minPromptTokens: GROK_LONG_CONTEXT_TOKENS,
|
|
546
|
+
inputPerMillion: 3.68,
|
|
547
|
+
outputPerMillion: 11.04,
|
|
548
|
+
cacheReadPerMillion: 0.92,
|
|
549
|
+
},
|
|
388
550
|
},
|
|
551
|
+
// BELOW the Alibaba list the `qwen:qwen3.7-max` row above carries (1.36 against 2.3), and
|
|
552
|
+
// deliberately so, which makes this the row that states which price a gateway entry is held to:
|
|
553
|
+
// the rate the ROUTE bills. OpenRouter's blend for this slug sits under Alibaba's own list, and
|
|
554
|
+
// a row must cover what a call through THIS route costs rather than what the same model costs
|
|
555
|
+
// elsewhere. The Z.ai rows depart the other way, carrying a list ABOVE the promotion the gateway
|
|
556
|
+
// serves today, and both are the same rule: never below the route, and above it is the margin.
|
|
389
557
|
'openrouter:qwen/qwen3.7-max': { inputPerMillion: 1.36, outputPerMillion: 4.07 },
|
|
390
558
|
// OpenRouter passes Alibaba's own Qwen3.8 rates through, cached tier included. The key is the
|
|
391
559
|
// DATED slug: the gateway withdrew the undated `qwen/qwen3.8-max` and now serves `-0902` at the
|
|
@@ -473,6 +641,14 @@ export const DEFAULT_SPEND_PRICING = {
|
|
|
473
641
|
* catalog's 4-dp rounding makes of any real rate below 0.00005/1M. Overlaid, it would meter every
|
|
474
642
|
* cache hit on that model at nothing, which is the one direction a budget safeguard may never be
|
|
475
643
|
* wrong in. The multiplier over-states instead, which is the direction that keeps safeguarding.
|
|
644
|
+
*
|
|
645
|
+
* An overlaid entry carries NO {@link ModelPrice.longBand}, and is a single rate on purpose: the
|
|
646
|
+
* catalog's own fold (`dearestRate` in `openRouterModels.ts`) has already collapsed a model's
|
|
647
|
+
* conditional bands to their MAXIMUM, because which band applies depends on the prompt actually
|
|
648
|
+
* sent and a catalog is refreshed long before it. So enabling a two-band model in a workspace's
|
|
649
|
+
* OpenRouter catalog meters its short requests in the long band, where the curated row beside it
|
|
650
|
+
* prices each band exactly. That is the safe direction of the two, and closing the gap means
|
|
651
|
+
* carrying the threshold through {@link OpenRouterModelMeta} rather than re-deriving it here.
|
|
476
652
|
*/
|
|
477
653
|
export function withDynamicPrices(pricing, models) {
|
|
478
654
|
if (models.length === 0)
|
|
@@ -518,17 +694,37 @@ export function priceFor(pricing, ref) {
|
|
|
518
694
|
pricing.defaultPrice);
|
|
519
695
|
}
|
|
520
696
|
/**
|
|
521
|
-
*
|
|
522
|
-
*
|
|
523
|
-
*
|
|
697
|
+
* The band an entry bills a request of `inputTokens` at: its {@link ModelPrice.longBand} once the
|
|
698
|
+
* threshold is reached, else its base rates.
|
|
699
|
+
*
|
|
700
|
+
* An UNKNOWN `inputTokens` answers the LONG band, which is the whole reason the argument is
|
|
701
|
+
* optional rather than required. A caller that cannot see the prompt size (the telemetry rollup's
|
|
702
|
+
* rate resolver holds a model and an aggregate, never one call's counts) must still be handed a
|
|
703
|
+
* rate a budget can meter with, and of the two only the dearer one keeps a safeguard safeguarding.
|
|
704
|
+
* A single-band entry ignores the argument entirely.
|
|
705
|
+
*/
|
|
706
|
+
export function bandFor(price, inputTokens) {
|
|
707
|
+
const band = price.longBand;
|
|
708
|
+
if (!band)
|
|
709
|
+
return price;
|
|
710
|
+
return inputTokens !== undefined && inputTokens < band.minPromptTokens ? price : band;
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* {@link priceFor} resolved to ONE band with both cache tiers filled in from the multipliers where
|
|
714
|
+
* that band names none. Every per-class cost goes through this rather than reading
|
|
715
|
+
* {@link ModelPrice} directly, so a caller can never silently price a cache class at the fresh
|
|
716
|
+
* rate by forgetting the `??`, nor price a long-context request in the short band.
|
|
717
|
+
*
|
|
718
|
+
* `inputTokens` is the request's TOTAL input, the count a vendor's threshold is stated against;
|
|
719
|
+
* see {@link bandFor} for what an absent one resolves to.
|
|
524
720
|
*/
|
|
525
|
-
export function ratesFor(pricing, ref) {
|
|
526
|
-
const
|
|
721
|
+
export function ratesFor(pricing, ref, inputTokens) {
|
|
722
|
+
const band = bandFor(priceFor(pricing, ref), inputTokens);
|
|
527
723
|
return {
|
|
528
|
-
inputPerMillion:
|
|
529
|
-
outputPerMillion:
|
|
530
|
-
cacheReadPerMillion:
|
|
531
|
-
cacheWritePerMillion:
|
|
724
|
+
inputPerMillion: band.inputPerMillion,
|
|
725
|
+
outputPerMillion: band.outputPerMillion,
|
|
726
|
+
cacheReadPerMillion: band.cacheReadPerMillion ?? band.inputPerMillion * CACHE_READ_MULTIPLIER,
|
|
727
|
+
cacheWritePerMillion: band.cacheWritePerMillion ?? band.inputPerMillion * CACHE_WRITE_MULTIPLIER,
|
|
532
728
|
};
|
|
533
729
|
}
|
|
534
730
|
/**
|
|
@@ -540,9 +736,14 @@ export function ratesFor(pricing, ref) {
|
|
|
540
736
|
* That direction is deliberate — a budget safeguard that undercounts stops safeguarding.
|
|
541
737
|
*/
|
|
542
738
|
export function estimateClassedCost(pricing, ref, usage) {
|
|
739
|
+
// The three input classes are SUMMED for the band decision and priced apart for the cost. They
|
|
740
|
+
// are a partition of the request's input, and a vendor's long-context threshold is stated
|
|
741
|
+
// against the whole of it, so a prompt that crosses it mostly from cache crosses it all the
|
|
742
|
+
// same. Output tokens are not input and take no part in it.
|
|
743
|
+
const inputTokens = usage.promptTokens + usage.cacheReadTokens + usage.cacheWriteTokens;
|
|
543
744
|
// The arithmetic itself is kernel's, shared with the telemetry rollup and the export, so the
|
|
544
745
|
// ledger and the run surfaces cannot come to price the same classes differently.
|
|
545
|
-
return costOfTokenClasses(ratesFor(pricing, ref), {
|
|
746
|
+
return costOfTokenClasses(ratesFor(pricing, ref, inputTokens), {
|
|
546
747
|
promptTokens: usage.promptTokens,
|
|
547
748
|
cacheReadTokens: usage.cacheReadTokens,
|
|
548
749
|
cacheWriteTokens: usage.cacheWriteTokens,
|
|
@@ -552,6 +753,13 @@ export function estimateClassedCost(pricing, ref, usage) {
|
|
|
552
753
|
/**
|
|
553
754
|
* A {@link ModelCostResolver}-shaped closure over a {@link SpendPricing}, for the
|
|
554
755
|
* model catalog to surface each model's informational list cost in the picker.
|
|
756
|
+
*
|
|
757
|
+
* The BASE band, never {@link ModelPrice.longBand}, and that is the difference between this and
|
|
758
|
+
* the metering paths. A budget must cover what a request will really cost, so an unknown prompt
|
|
759
|
+
* size resolves to the dearer band; the picker is a human comparing models at a glance, where
|
|
760
|
+
* every other row shows one list rate and a doubled figure beside them reads as a model that
|
|
761
|
+
* costs twice what it does. The band is not annotated either, for the same reason it is a single
|
|
762
|
+
* number: the surface has one line per model and no room to state a threshold.
|
|
555
763
|
*/
|
|
556
764
|
export function modelCostResolver(pricing) {
|
|
557
765
|
return (ref) => {
|
|
@@ -585,9 +793,10 @@ export function estimateCost(pricing, ref, usage) {
|
|
|
585
793
|
outputTokens: usage.outputTokens,
|
|
586
794
|
});
|
|
587
795
|
}
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
796
|
+
// A lumped count is still a count, so the band is as decidable here as on the classed path.
|
|
797
|
+
const rates = ratesFor(pricing, ref, usage.inputTokens);
|
|
798
|
+
return ((usage.inputTokens / 1_000_000) * rates.inputPerMillion +
|
|
799
|
+
(usage.outputTokens / 1_000_000) * rates.outputPerMillion);
|
|
591
800
|
}
|
|
592
801
|
/**
|
|
593
802
|
* Build the env-driven operator budget-cap overlay for a {@link SpendPricing}. Each cap
|
package/dist/pricing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
|
|
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.21.0",
|
|
4
4
|
"description": "Pricing tables and spend metering for the Agent Architecture Board.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@cat-factory/contracts": "0.349.0",
|
|
28
|
-
"@cat-factory/kernel": "0.
|
|
28
|
+
"@cat-factory/kernel": "0.342.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@stryker-mutator/core": "10.0.0",
|