@cat-factory/spend 0.9.5 → 0.10.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/pricing.d.ts +4 -6
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +8 -14
- package/dist/pricing.js.map +1 -1
- package/package.json +3 -3
package/dist/pricing.d.ts
CHANGED
|
@@ -40,13 +40,11 @@ export declare const DEFAULT_SPEND_PRICING: SpendPricing;
|
|
|
40
40
|
export declare function withDynamicPrices(pricing: SpendPricing, models: OpenRouterModelMeta[]): SpendPricing;
|
|
41
41
|
/**
|
|
42
42
|
* Resolve a workspace's effective pricing from the base table + its per-workspace
|
|
43
|
-
* budget overrides (currency / monthly limit
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* (most-specific-first resolution in {@link priceFor} is preserved). Returns a new
|
|
47
|
-
* {@link SpendPricing}; the input is not mutated.
|
|
43
|
+
* budget overrides (currency / monthly limit). A null override falls back to the
|
|
44
|
+
* base value, so an unconfigured workspace gets the built-in defaults unchanged.
|
|
45
|
+
* Returns a new {@link SpendPricing}; the input is not mutated.
|
|
48
46
|
*/
|
|
49
|
-
export declare function mergeSpendPricing(base: SpendPricing, overrides: Pick<WorkspaceSettings, 'spendCurrency' | 'spendMonthlyLimit'
|
|
47
|
+
export declare function mergeSpendPricing(base: SpendPricing, overrides: Pick<WorkspaceSettings, 'spendCurrency' | 'spendMonthlyLimit'> | null): SpendPricing;
|
|
50
48
|
/** Resolve the price for a model, most-specific entry first. */
|
|
51
49
|
export declare function priceFor(pricing: SpendPricing, ref: ModelRef): ModelPrice;
|
|
52
50
|
/**
|
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;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAWpF,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,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;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAoD3D,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,eAAO,MAAM,qBAAqB,EAAE,YAKnC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,mBAAmB,EAAE,GAC5B,YAAY,CAWd;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,CAQd;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,GAAG,UAAU,CAMzE;AAED;;;GAGG;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,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAMjG;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD"}
|
package/dist/pricing.js
CHANGED
|
@@ -19,7 +19,7 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
19
19
|
'workers-ai': { inputPerMillion: 0.1, outputPerMillion: 0.1 },
|
|
20
20
|
// DeepSeek V4 Pro runs on Workers AI but is a partner model billed at provider
|
|
21
21
|
// rates (served via Fireworks), not the near-free neuron rate above, so it needs
|
|
22
|
-
// its own entry. Approximate (USD→EUR ~0.92)
|
|
22
|
+
// its own entry. Approximate (USD→EUR ~0.92).
|
|
23
23
|
'workers-ai:deepseek/deepseek-v4-pro': { inputPerMillion: 0.5, outputPerMillion: 2 },
|
|
24
24
|
// Kimi K2.5 / K2.6 / K2.7 likewise run on Workers AI as partner models billed at Workers
|
|
25
25
|
// AI's published per-token rate, NOT the near-free `workers-ai` neuron rate — without
|
|
@@ -28,7 +28,7 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
28
28
|
// older K2.5 at $0.60 in / $3.00 out per 1M (USD→EUR ~0.92); these are Cloudflare's
|
|
29
29
|
// marked-up rates, above Moonshot's direct list (`moonshot:kimi-k2.6`). The spend table
|
|
30
30
|
// has no cached-input tier, so we use the standard cache-miss input rate. See
|
|
31
|
-
// workers-ai/platform/pricing.
|
|
31
|
+
// workers-ai/platform/pricing.
|
|
32
32
|
'workers-ai:@cf/moonshotai/kimi-k2.5': { inputPerMillion: 0.55, outputPerMillion: 2.76 },
|
|
33
33
|
'workers-ai:@cf/moonshotai/kimi-k2.6': { inputPerMillion: 0.87, outputPerMillion: 3.68 },
|
|
34
34
|
'workers-ai:@cf/moonshotai/kimi-k2.7-code': { inputPerMillion: 0.87, outputPerMillion: 3.68 },
|
|
@@ -44,7 +44,7 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
44
44
|
// OpenRouter — a passthrough gateway billed at the underlying provider's rates (no
|
|
45
45
|
// per-token markup), so each curated model carries the upstream vendor's list price
|
|
46
46
|
// (USD→EUR ~0.92). Keyed by the OpenRouter `vendor/model` slug. The bare `openrouter`
|
|
47
|
-
// fallback is a mid-range guess for any uncatalogued slug
|
|
47
|
+
// fallback is a mid-range guess for any uncatalogued slug.
|
|
48
48
|
'openrouter:anthropic/claude-opus-4.8': { inputPerMillion: 4.6, outputPerMillion: 23 },
|
|
49
49
|
'openrouter:google/gemini-3-pro': { inputPerMillion: 1.84, outputPerMillion: 11.04 },
|
|
50
50
|
'openrouter:openai/gpt-5.5': { inputPerMillion: 3.68, outputPerMillion: 22.08 },
|
|
@@ -52,8 +52,7 @@ export const DEFAULT_MODEL_PRICES = {
|
|
|
52
52
|
'openrouter:moonshotai/kimi-k2.7-code': { inputPerMillion: 0.55, outputPerMillion: 2.3 },
|
|
53
53
|
openrouter: { inputPerMillion: 1.84, outputPerMillion: 11.04 },
|
|
54
54
|
// LiteLLM — an operator-hosted gateway whose true cost depends entirely on the backend
|
|
55
|
-
// model it routes to, which we can't know here. Default to the generic fallback rate
|
|
56
|
-
// operators should override per their routing via the per-workspace price overrides.
|
|
55
|
+
// model it routes to, which we can't know here. Default to the generic fallback rate.
|
|
57
56
|
litellm: { inputPerMillion: 0.14, outputPerMillion: 0.55 },
|
|
58
57
|
};
|
|
59
58
|
/** Default budget: roughly 100 EUR of tokens per calendar month. */
|
|
@@ -93,22 +92,17 @@ export function withDynamicPrices(pricing, models) {
|
|
|
93
92
|
}
|
|
94
93
|
/**
|
|
95
94
|
* Resolve a workspace's effective pricing from the base table + its per-workspace
|
|
96
|
-
* budget overrides (currency / monthly limit
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* (most-specific-first resolution in {@link priceFor} is preserved). Returns a new
|
|
100
|
-
* {@link SpendPricing}; the input is not mutated.
|
|
95
|
+
* budget overrides (currency / monthly limit). A null override falls back to the
|
|
96
|
+
* base value, so an unconfigured workspace gets the built-in defaults unchanged.
|
|
97
|
+
* Returns a new {@link SpendPricing}; the input is not mutated.
|
|
101
98
|
*/
|
|
102
99
|
export function mergeSpendPricing(base, overrides) {
|
|
103
100
|
if (!overrides)
|
|
104
101
|
return base;
|
|
105
|
-
const prices = overrides.spendModelPrices
|
|
106
|
-
? { ...base.prices, ...overrides.spendModelPrices }
|
|
107
|
-
: base.prices;
|
|
108
102
|
return {
|
|
109
103
|
currency: overrides.spendCurrency ?? base.currency,
|
|
110
104
|
monthlyLimit: overrides.spendMonthlyLimit ?? base.monthlyLimit,
|
|
111
|
-
prices,
|
|
105
|
+
prices: base.prices,
|
|
112
106
|
defaultPrice: base.defaultPrice,
|
|
113
107
|
};
|
|
114
108
|
}
|
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.10.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.30.0",
|
|
28
|
+
"@cat-factory/kernel": "0.33.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "7.0.1-rc"
|