usertrust 1.4.0 → 2.0.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.
Files changed (133) hide show
  1. package/README.md +17 -1
  2. package/dist/anomaly/detector.d.ts.map +1 -1
  3. package/dist/anomaly/detector.js +36 -11
  4. package/dist/anomaly/detector.js.map +1 -1
  5. package/dist/anomaly/index.d.ts +2 -2
  6. package/dist/anomaly/index.d.ts.map +1 -1
  7. package/dist/anomaly/index.js +1 -1
  8. package/dist/anomaly/index.js.map +1 -1
  9. package/dist/anomaly/signals/spend-velocity.d.ts +39 -12
  10. package/dist/anomaly/signals/spend-velocity.d.ts.map +1 -1
  11. package/dist/anomaly/signals/spend-velocity.js +66 -43
  12. package/dist/anomaly/signals/spend-velocity.js.map +1 -1
  13. package/dist/anomaly/signals/token-rate.d.ts +33 -13
  14. package/dist/anomaly/signals/token-rate.d.ts.map +1 -1
  15. package/dist/anomaly/signals/token-rate.js +124 -38
  16. package/dist/anomaly/signals/token-rate.js.map +1 -1
  17. package/dist/anomaly/types.d.ts +28 -6
  18. package/dist/anomaly/types.d.ts.map +1 -1
  19. package/dist/audit/anchor-doctor.d.ts +42 -0
  20. package/dist/audit/anchor-doctor.d.ts.map +1 -0
  21. package/dist/audit/anchor-doctor.js +285 -0
  22. package/dist/audit/anchor-doctor.js.map +1 -0
  23. package/dist/audit/anchor-verify.d.ts +229 -0
  24. package/dist/audit/anchor-verify.d.ts.map +1 -0
  25. package/dist/audit/anchor-verify.js +809 -0
  26. package/dist/audit/anchor-verify.js.map +1 -0
  27. package/dist/audit/anchor.d.ts +177 -0
  28. package/dist/audit/anchor.d.ts.map +1 -0
  29. package/dist/audit/anchor.js +922 -0
  30. package/dist/audit/anchor.js.map +1 -0
  31. package/dist/audit/canonical.js +1 -1
  32. package/dist/audit/canonical.js.map +1 -1
  33. package/dist/audit/chain.d.ts.map +1 -1
  34. package/dist/audit/chain.js +21 -7
  35. package/dist/audit/chain.js.map +1 -1
  36. package/dist/audit/read.d.ts +19 -0
  37. package/dist/audit/read.d.ts.map +1 -0
  38. package/dist/audit/read.js +94 -0
  39. package/dist/audit/read.js.map +1 -0
  40. package/dist/audit/rekor-verify.d.ts +116 -0
  41. package/dist/audit/rekor-verify.d.ts.map +1 -0
  42. package/dist/audit/rekor-verify.js +533 -0
  43. package/dist/audit/rekor-verify.js.map +1 -0
  44. package/dist/audit/rekor.d.ts +71 -0
  45. package/dist/audit/rekor.d.ts.map +1 -0
  46. package/dist/audit/rekor.js +556 -0
  47. package/dist/audit/rekor.js.map +1 -0
  48. package/dist/audit/rotation.js +1 -1
  49. package/dist/audit/rotation.js.map +1 -1
  50. package/dist/audit/sigv4.d.ts +44 -0
  51. package/dist/audit/sigv4.d.ts.map +1 -0
  52. package/dist/audit/sigv4.js +134 -0
  53. package/dist/audit/sigv4.js.map +1 -0
  54. package/dist/audit/verify.d.ts +78 -0
  55. package/dist/audit/verify.d.ts.map +1 -1
  56. package/dist/audit/verify.js +195 -1
  57. package/dist/audit/verify.js.map +1 -1
  58. package/dist/cli/anchor.d.ts +3 -0
  59. package/dist/cli/anchor.d.ts.map +1 -0
  60. package/dist/cli/anchor.js +626 -0
  61. package/dist/cli/anchor.js.map +1 -0
  62. package/dist/cli/completions.js +1 -1
  63. package/dist/cli/export.d.ts +3 -0
  64. package/dist/cli/export.d.ts.map +1 -0
  65. package/dist/cli/export.js +58 -0
  66. package/dist/cli/export.js.map +1 -0
  67. package/dist/cli/health.js.map +1 -1
  68. package/dist/cli/init.d.ts.map +1 -1
  69. package/dist/cli/init.js +99 -2
  70. package/dist/cli/init.js.map +1 -1
  71. package/dist/cli/inspect.d.ts.map +1 -1
  72. package/dist/cli/inspect.js +4 -34
  73. package/dist/cli/inspect.js.map +1 -1
  74. package/dist/cli/main.d.ts +2 -2
  75. package/dist/cli/main.d.ts.map +1 -1
  76. package/dist/cli/main.js +20 -1
  77. package/dist/cli/main.js.map +1 -1
  78. package/dist/cli/pricing.js +1 -1
  79. package/dist/cli/pricing.js.map +1 -1
  80. package/dist/cli/ui.d.ts +3 -0
  81. package/dist/cli/ui.d.ts.map +1 -0
  82. package/dist/cli/ui.js +35 -0
  83. package/dist/cli/ui.js.map +1 -0
  84. package/dist/cli/verify.d.ts.map +1 -1
  85. package/dist/cli/verify.js +342 -3
  86. package/dist/cli/verify.js.map +1 -1
  87. package/dist/config.d.ts.map +1 -1
  88. package/dist/config.js.map +1 -1
  89. package/dist/detect.d.ts +71 -16
  90. package/dist/detect.d.ts.map +1 -1
  91. package/dist/detect.js +141 -6
  92. package/dist/detect.js.map +1 -1
  93. package/dist/export/markdown.d.ts +12 -0
  94. package/dist/export/markdown.d.ts.map +1 -0
  95. package/dist/export/markdown.js +142 -0
  96. package/dist/export/markdown.js.map +1 -0
  97. package/dist/govern.d.ts +67 -3
  98. package/dist/govern.d.ts.map +1 -1
  99. package/dist/govern.js +1011 -219
  100. package/dist/govern.js.map +1 -1
  101. package/dist/headless.d.ts +41 -2
  102. package/dist/headless.d.ts.map +1 -1
  103. package/dist/headless.js +58 -7
  104. package/dist/headless.js.map +1 -1
  105. package/dist/index.d.ts +33 -25
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +30 -23
  108. package/dist/index.js.map +1 -1
  109. package/dist/ledger/client.d.ts.map +1 -1
  110. package/dist/ledger/client.js +57 -46
  111. package/dist/ledger/client.js.map +1 -1
  112. package/dist/ledger/engine.d.ts.map +1 -1
  113. package/dist/ledger/engine.js +22 -13
  114. package/dist/ledger/engine.js.map +1 -1
  115. package/dist/ledger/pricing.d.ts +54 -0
  116. package/dist/ledger/pricing.d.ts.map +1 -1
  117. package/dist/ledger/pricing.js +128 -8
  118. package/dist/ledger/pricing.js.map +1 -1
  119. package/dist/shared/types.d.ts +154 -340
  120. package/dist/shared/types.d.ts.map +1 -1
  121. package/dist/shared/types.js +67 -17
  122. package/dist/shared/types.js.map +1 -1
  123. package/dist/snapshot/checkpoint.d.ts.map +1 -1
  124. package/dist/snapshot/checkpoint.js +20 -2
  125. package/dist/snapshot/checkpoint.js.map +1 -1
  126. package/dist/streaming.d.ts +13 -3
  127. package/dist/streaming.d.ts.map +1 -1
  128. package/dist/streaming.js +88 -30
  129. package/dist/streaming.js.map +1 -1
  130. package/dist/supply-chain/sign.d.ts.map +1 -1
  131. package/dist/supply-chain/sign.js +3 -0
  132. package/dist/supply-chain/sign.js.map +1 -1
  133. package/package.json +6 -4
@@ -5,6 +5,7 @@
5
5
  *
6
6
  * Canonical pricing source for supported LLM models.
7
7
  */
8
+ import type { CostBasis, EndpointClass, RateSource, TrustConfig } from "../shared/types.js";
8
9
  export interface ModelRates {
9
10
  inputPer1k: number;
10
11
  outputPer1k: number;
@@ -25,11 +26,64 @@ export declare function modelsForProvider(provider: string): string[];
25
26
  * then FALLBACK_RATE for unknown models.
26
27
  */
27
28
  export declare function getModelRates(model: string, customRates?: Record<string, ModelRates>): ModelRates;
29
+ /**
30
+ * Emit the once-per-process cloud-scope "unknown model" warning for
31
+ * unknownModelPolicy "warn". Shared by trust() and createGovernor() so both
32
+ * governance paths log identical text and share a single dedup set. Idempotent
33
+ * per model string; the receipt's meter.rateSource "fallback" marker is set by
34
+ * the caller independently of this dedup.
35
+ */
36
+ export declare function warnUnknownModel(model: string): void;
37
+ /**
38
+ * Compute usertoken cost from explicit rates.
39
+ * Applies the same non-finite/negative clamp and >=1 floor as estimateCost —
40
+ * the floor is per-call and load-bearing (zero-amount ledger transfers are
41
+ * invalid; it is what makes a {0,0}-rate local call settle at exactly 1
42
+ * nominal usertoken).
43
+ */
44
+ export declare function costFromRates(rates: ModelRates, inputTokens: number, outputTokens: number): number;
28
45
  /**
29
46
  * Estimate cost in usertokens for a model call.
30
47
  * Returns at least 1 (floor to prevent zero-amount transfers).
31
48
  */
32
49
  export declare function estimateCost(model: string, inputTokens: number, outputTokens: number, customRates?: Record<string, ModelRates>): number;
50
+ /** A matched model-pattern entry: the pattern key that won and its value. */
51
+ export interface ModelPatternMatch<T> {
52
+ pattern: string;
53
+ value: T;
54
+ }
55
+ /**
56
+ * Match a model string against a record keyed by exact models or TRAILING-star
57
+ * globs ("llama3.3*"; "*" matches everything). Exact match beats any glob;
58
+ * among globs the longest prefix wins. This is the model-pattern matcher (A2) —
59
+ * hostname patterns use a different leading-star syntax, implemented in detect.ts.
60
+ *
61
+ * Used by local.models, anomaly tokenRate.perModel.
62
+ */
63
+ export declare function matchModelPattern<T>(model: string, patterns: Record<string, T>): ModelPatternMatch<T> | undefined;
64
+ /** Result of scope-aware rate resolution. */
65
+ export interface RateResolution {
66
+ rates: ModelRates;
67
+ scope: EndpointClass;
68
+ costBasis: CostBasis;
69
+ rateSource: RateSource;
70
+ /** true when cloud scope missed table+custom+prefix and fell back. */
71
+ unknown: boolean;
72
+ }
73
+ /**
74
+ * Resolve rates for a model within an endpoint scope. Never throws —
75
+ * unknownModelPolicy enforcement lives in the callers (govern/headless).
76
+ *
77
+ * Local scope: local.models exact match → longest trailing-* glob →
78
+ * local.defaultRate (rateSource "local-default"). NEVER FALLBACK_RATE, never
79
+ * the cloud table, never `unknown: true` (A5). costBasis is "usd-proxy" when
80
+ * local.rateClass is "amortized-usd", else "nominal".
81
+ *
82
+ * Cloud scope: delegates to the existing getModelRates(model, customRates)
83
+ * semantics, including the callers' pricing==="custom" gate on customRates;
84
+ * costBasis "usd-proxy"; unknown=true iff the result came from FALLBACK_RATE.
85
+ */
86
+ export declare function resolveRates(model: string, scope: EndpointClass, config: TrustConfig): RateResolution;
33
87
  /**
34
88
  * Estimate input token count from a messages array.
35
89
  * Heuristic: ~4 chars/token with a 1.5x safety margin so the PENDING
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA0CpD,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAKlD,+DAA+D;AAC/D,eAAO,MAAM,aAAa,EAAE,UAAiD,CAAC;AAiB9E,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,CAejG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACtC,MAAM,CAWR;AA6BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAqC/D"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE5F,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA0CpD,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAKlD,+DAA+D;AAC/D,eAAO,MAAM,aAAa,EAAE,UAAiD,CAAC;AAiB9E,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAO5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,CAsBjG;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAMpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GAClB,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACtC,MAAM,CAER;AAID,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC;CACT;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GACzB,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAiBlC;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,WAAW,GACjB,cAAc,CAiDhB;AA6BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAqC/D"}
@@ -59,6 +59,10 @@ const PROVIDER_MODEL_MAP = {
59
59
  };
60
60
  /** Return all PRICING_TABLE model keys that belong to a given provider. */
61
61
  export function modelsForProvider(provider) {
62
+ // Object.hasOwn guards against inherited Object.prototype keys: a provider
63
+ // name like "constructor" must resolve to nothing, not Object's constructor.
64
+ if (!Object.hasOwn(PROVIDER_MODEL_MAP, provider))
65
+ return [];
62
66
  const prefixes = PROVIDER_MODEL_MAP[provider];
63
67
  if (!prefixes)
64
68
  return [];
@@ -69,14 +73,21 @@ export function modelsForProvider(provider) {
69
73
  * then FALLBACK_RATE for unknown models.
70
74
  */
71
75
  export function getModelRates(model, customRates) {
72
- if (customRates) {
76
+ // Object.hasOwn guards both direct lookups against inherited Object.prototype
77
+ // members: a model string like "constructor"/"__proto__"/"toString" would
78
+ // otherwise resolve to a Function/object, survive the truthiness check, and
79
+ // yield NaN cost (NaN then defeats the Math.max(1, ...) floor and poisons the
80
+ // ledger). Prefix matching below is already own-key-only (SORTED_TABLE).
81
+ if (customRates && Object.hasOwn(customRates, model)) {
73
82
  const custom = customRates[model];
74
83
  if (custom)
75
84
  return custom;
76
85
  }
77
- const exact = PRICING_TABLE[model];
78
- if (exact)
79
- return exact;
86
+ if (Object.hasOwn(PRICING_TABLE, model)) {
87
+ const exact = PRICING_TABLE[model];
88
+ if (exact)
89
+ return exact;
90
+ }
80
91
  // Prefix match — longest key first prevents partial matches
81
92
  for (const [key, rates] of SORTED_TABLE) {
82
93
  if (model.startsWith(key))
@@ -84,12 +95,29 @@ export function getModelRates(model, customRates) {
84
95
  }
85
96
  return FALLBACK_RATE;
86
97
  }
98
+ /** Models already warned about — unknownModelPolicy "warn" fires once per model per process. */
99
+ const warnedUnknownModels = new Set();
87
100
  /**
88
- * Estimate cost in usertokens for a model call.
89
- * Returns at least 1 (floor to prevent zero-amount transfers).
101
+ * Emit the once-per-process cloud-scope "unknown model" warning for
102
+ * unknownModelPolicy "warn". Shared by trust() and createGovernor() so both
103
+ * governance paths log identical text and share a single dedup set. Idempotent
104
+ * per model string; the receipt's meter.rateSource "fallback" marker is set by
105
+ * the caller independently of this dedup.
90
106
  */
91
- export function estimateCost(model, inputTokens, outputTokens, customRates) {
92
- const rates = getModelRates(model, customRates);
107
+ export function warnUnknownModel(model) {
108
+ if (warnedUnknownModels.has(model))
109
+ return;
110
+ warnedUnknownModels.add(model);
111
+ console.warn(`[usertrust] unknown model "${model}": metering at FALLBACK_RATE (sonnet-class); add it to customRates or set unknownModelPolicy`);
112
+ }
113
+ /**
114
+ * Compute usertoken cost from explicit rates.
115
+ * Applies the same non-finite/negative clamp and >=1 floor as estimateCost —
116
+ * the floor is per-call and load-bearing (zero-amount ledger transfers are
117
+ * invalid; it is what makes a {0,0}-rate local call settle at exactly 1
118
+ * nominal usertoken).
119
+ */
120
+ export function costFromRates(rates, inputTokens, outputTokens) {
93
121
  // Defend against non-finite/negative token counts (garbage `max_tokens`, or
94
122
  // provider usage that reports a negative/NaN value): any count that is not a
95
123
  // finite number >= 0 is treated as 0. A NaN would otherwise poison budget
@@ -100,6 +128,98 @@ export function estimateCost(model, inputTokens, outputTokens, customRates) {
100
128
  const outputCost = (outTok / 1000) * rates.outputPer1k;
101
129
  return Math.max(1, Math.ceil(inputCost + outputCost));
102
130
  }
131
+ /**
132
+ * Estimate cost in usertokens for a model call.
133
+ * Returns at least 1 (floor to prevent zero-amount transfers).
134
+ */
135
+ export function estimateCost(model, inputTokens, outputTokens, customRates) {
136
+ return costFromRates(getModelRates(model, customRates), inputTokens, outputTokens);
137
+ }
138
+ /**
139
+ * Match a model string against a record keyed by exact models or TRAILING-star
140
+ * globs ("llama3.3*"; "*" matches everything). Exact match beats any glob;
141
+ * among globs the longest prefix wins. This is the model-pattern matcher (A2) —
142
+ * hostname patterns use a different leading-star syntax, implemented in detect.ts.
143
+ *
144
+ * Used by local.models, anomaly tokenRate.perModel.
145
+ */
146
+ export function matchModelPattern(model, patterns) {
147
+ // Object.hasOwn guards against inherited Object.prototype keys
148
+ // (model "constructor" must not resolve to a Function).
149
+ if (Object.hasOwn(patterns, model)) {
150
+ return { pattern: model, value: patterns[model] };
151
+ }
152
+ let best;
153
+ let bestLen = -1;
154
+ for (const [pattern, value] of Object.entries(patterns)) {
155
+ if (!pattern.endsWith("*"))
156
+ continue;
157
+ const prefix = pattern.slice(0, -1);
158
+ if (model.startsWith(prefix) && prefix.length > bestLen) {
159
+ best = { pattern, value };
160
+ bestLen = prefix.length;
161
+ }
162
+ }
163
+ return best;
164
+ }
165
+ /**
166
+ * Resolve rates for a model within an endpoint scope. Never throws —
167
+ * unknownModelPolicy enforcement lives in the callers (govern/headless).
168
+ *
169
+ * Local scope: local.models exact match → longest trailing-* glob →
170
+ * local.defaultRate (rateSource "local-default"). NEVER FALLBACK_RATE, never
171
+ * the cloud table, never `unknown: true` (A5). costBasis is "usd-proxy" when
172
+ * local.rateClass is "amortized-usd", else "nominal".
173
+ *
174
+ * Cloud scope: delegates to the existing getModelRates(model, customRates)
175
+ * semantics, including the callers' pricing==="custom" gate on customRates;
176
+ * costBasis "usd-proxy"; unknown=true iff the result came from FALLBACK_RATE.
177
+ */
178
+ export function resolveRates(model, scope, config) {
179
+ if (scope === "local") {
180
+ const costBasis = config.local.rateClass === "amortized-usd" ? "usd-proxy" : "nominal";
181
+ const match = matchModelPattern(model, config.local.models);
182
+ if (match !== undefined) {
183
+ return { rates: match.value, scope, costBasis, rateSource: "local-model", unknown: false };
184
+ }
185
+ return {
186
+ rates: config.local.defaultRate,
187
+ scope,
188
+ costBasis,
189
+ rateSource: "local-default",
190
+ unknown: false,
191
+ };
192
+ }
193
+ // Cloud scope — mirrors getModelRates(model, customRates) exactly, including
194
+ // the pricing==="custom" gate applied at the existing govern/headless call sites.
195
+ // Object.hasOwn guards both lookups so a model string like "constructor"/
196
+ // "__proto__" resolves to FALLBACK_RATE, never an inherited prototype member.
197
+ const customRates = config.pricing === "custom" ? config.customRates : undefined;
198
+ if (customRates && Object.hasOwn(customRates, model)) {
199
+ const custom = customRates[model];
200
+ if (custom) {
201
+ return { rates: custom, scope, costBasis: "usd-proxy", rateSource: "custom", unknown: false };
202
+ }
203
+ }
204
+ if (Object.hasOwn(PRICING_TABLE, model)) {
205
+ const exact = PRICING_TABLE[model];
206
+ if (exact) {
207
+ return { rates: exact, scope, costBasis: "usd-proxy", rateSource: "table", unknown: false };
208
+ }
209
+ }
210
+ for (const [key, rates] of SORTED_TABLE) {
211
+ if (model.startsWith(key)) {
212
+ return { rates, scope, costBasis: "usd-proxy", rateSource: "table", unknown: false };
213
+ }
214
+ }
215
+ return {
216
+ rates: FALLBACK_RATE,
217
+ scope,
218
+ costBasis: "usd-proxy",
219
+ rateSource: "fallback",
220
+ unknown: true,
221
+ };
222
+ }
103
223
  /**
104
224
  * Estimate the block-level token count for a non-text content block.
105
225
  * Extracts textual payload where possible, falls back to serialised length.
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"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"}