@pydantic/genai-prices 0.0.55 → 0.0.56

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 (4) hide show
  1. package/dist/cli.js +1512 -1237
  2. package/dist/index.cjs +4 -4
  3. package/dist/index.js +1419 -1144
  4. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import _e from "yargs";
2
+ import he from "yargs";
3
3
  import { format as ke } from "util";
4
- import { resolve as ie, normalize as Ae } from "path";
5
- import { readFileSync as ge, writeFile as Pe, statSync as Te } from "fs";
4
+ import { resolve as ie, normalize as Pe } from "path";
5
+ import { readFileSync as ge, writeFile as Qe, statSync as Te } from "fs";
6
6
  import "assert";
7
7
  import { fileURLToPath as Se } from "url";
8
- function Ce() {
9
- return Ge() ? 0 : 1;
10
- }
11
8
  function Ge() {
12
- return Re() && !process.defaultApp;
9
+ return Ce() ? 0 : 1;
10
+ }
11
+ function Ce() {
12
+ return ze() && !process.defaultApp;
13
13
  }
14
- function Re() {
14
+ function ze() {
15
15
  return !!process.versions.electron;
16
16
  }
17
- function ze(i) {
18
- return i.slice(Ce() + 1);
17
+ function Re(i) {
18
+ return i.slice(Ge() + 1);
19
19
  }
20
20
  /**
21
21
  * @license
@@ -28,24 +28,24 @@ function $(i) {
28
28
  {
29
29
  let u = "", s = !1;
30
30
  const r = i.match(/^-+/);
31
- for (let _ = r ? r[0].length : 0; _ < i.length; _++) {
32
- let h = i.charAt(_);
33
- s && (s = !1, h = h.toUpperCase()), _ !== 0 && (h === "-" || h === "_") ? s = !0 : h !== "-" && h !== "_" && (u += h);
31
+ for (let h = r ? r[0].length : 0; h < i.length; h++) {
32
+ let _ = i.charAt(h);
33
+ s && (s = !1, _ = _.toUpperCase()), h !== 0 && (_ === "-" || _ === "_") ? s = !0 : _ !== "-" && _ !== "_" && (u += _);
34
34
  }
35
35
  return u;
36
36
  }
37
37
  }
38
- function Oe(i, o) {
38
+ function Ee(i, o) {
39
39
  const u = i.toLowerCase();
40
40
  o = o || "-";
41
41
  let s = "";
42
42
  for (let r = 0; r < i.length; r++) {
43
- const _ = u.charAt(r), h = i.charAt(r);
44
- _ !== h && r > 0 ? s += `${o}${u.charAt(r)}` : s += h;
43
+ const h = u.charAt(r), _ = i.charAt(r);
44
+ h !== _ && r > 0 ? s += `${o}${u.charAt(r)}` : s += _;
45
45
  }
46
46
  return s;
47
47
  }
48
- function De(i) {
48
+ function Oe(i) {
49
49
  return i == null ? !1 : typeof i == "number" || /^0x[0-9a-f]+$/i.test(i) ? !0 : /^0[^.]/.test(i) ? !1 : /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(i);
50
50
  }
51
51
  /**
@@ -55,35 +55,35 @@ function De(i) {
55
55
  */
56
56
  function Ne(i) {
57
57
  if (Array.isArray(i))
58
- return i.map((h) => typeof h != "string" ? h + "" : h);
58
+ return i.map((_) => typeof _ != "string" ? _ + "" : _);
59
59
  i = i.trim();
60
60
  let o = 0, u = null, s = null, r = null;
61
- const _ = [];
62
- for (let h = 0; h < i.length; h++) {
63
- if (u = s, s = i.charAt(h), s === " " && !r) {
61
+ const h = [];
62
+ for (let _ = 0; _ < i.length; _++) {
63
+ if (u = s, s = i.charAt(_), s === " " && !r) {
64
64
  u !== " " && o++;
65
65
  continue;
66
66
  }
67
- s === r ? r = null : (s === "'" || s === '"') && !r && (r = s), _[o] || (_[o] = ""), _[o] += s;
67
+ s === r ? r = null : (s === "'" || s === '"') && !r && (r = s), h[o] || (h[o] = ""), h[o] += s;
68
68
  }
69
- return _;
69
+ return h;
70
70
  }
71
71
  /**
72
72
  * @license
73
73
  * Copyright (c) 2016, Contributors
74
74
  * SPDX-License-Identifier: ISC
75
75
  */
76
- var A;
76
+ var P;
77
77
  (function(i) {
78
78
  i.BOOLEAN = "boolean", i.STRING = "string", i.NUMBER = "number", i.ARRAY = "array";
79
- })(A || (A = {}));
79
+ })(P || (P = {}));
80
80
  /**
81
81
  * @license
82
82
  * Copyright (c) 2016, Contributors
83
83
  * SPDX-License-Identifier: ISC
84
84
  */
85
85
  let S;
86
- class Ee {
86
+ class De {
87
87
  constructor(o) {
88
88
  S = o;
89
89
  }
@@ -105,7 +105,7 @@ class Ee {
105
105
  number: void 0,
106
106
  __: void 0,
107
107
  key: void 0
108
- }, u), r = Ne(o), _ = typeof o == "string", h = je(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), k = Object.assign({
108
+ }, u), r = Ne(o), h = typeof o == "string", _ = Fe(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), k = Object.assign({
109
109
  "boolean-negation": !0,
110
110
  "camel-case-expansion": !0,
111
111
  "combine-arrays": !1,
@@ -124,7 +124,7 @@ class Ee {
124
124
  "strip-aliased": !1,
125
125
  "strip-dashed": !1,
126
126
  "unknown-options-as-args": !1
127
- }, s.configuration), q = Object.assign(/* @__PURE__ */ Object.create(null), s.default), I = s.configObjects || [], B = s.envPrefix, y = k["populate--"], L = y ? "--" : "_", C = /* @__PURE__ */ Object.create(null), ne = /* @__PURE__ */ Object.create(null), G = s.__ || S.format, m = {
127
+ }, s.configuration), q = Object.assign(/* @__PURE__ */ Object.create(null), s.default), y = s.configObjects || [], B = s.envPrefix, I = k["populate--"], L = I ? "--" : "_", G = /* @__PURE__ */ Object.create(null), ne = /* @__PURE__ */ Object.create(null), C = s.__ || S.format, m = {
128
128
  aliases: /* @__PURE__ */ Object.create(null),
129
129
  arrays: /* @__PURE__ */ Object.create(null),
130
130
  bools: /* @__PURE__ */ Object.create(null),
@@ -136,7 +136,7 @@ class Ee {
136
136
  nargs: /* @__PURE__ */ Object.create(null),
137
137
  coercions: /* @__PURE__ */ Object.create(null),
138
138
  keys: []
139
- }, P = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + k["negation-prefix"] + "(.+)");
139
+ }, Q = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + k["negation-prefix"] + "(.+)");
140
140
  [].concat(s.array || []).filter(Boolean).forEach(function(e) {
141
141
  const a = typeof e == "object" ? e.key : e, c = Object.keys(e).map(function(n) {
142
142
  return {
@@ -164,38 +164,38 @@ class Ee {
164
164
  m.configs[e] = !0;
165
165
  }) : typeof s.config == "object" && Object.entries(s.config).forEach(([e, a]) => {
166
166
  (typeof a == "boolean" || typeof a == "function") && (m.configs[e] = a);
167
- })), xe(s.key, h, s.default, m.arrays), Object.keys(q).forEach(function(e) {
167
+ })), xe(s.key, _, s.default, m.arrays), Object.keys(q).forEach(function(e) {
168
168
  (m.aliases[e] || []).forEach(function(a) {
169
169
  q[a] = q[e];
170
170
  });
171
171
  });
172
172
  let M = null;
173
- Qe();
174
- let j = [];
173
+ Ae();
174
+ let F = [];
175
175
  const w = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }), se = {};
176
176
  for (let e = 0; e < r.length; e++) {
177
177
  const a = r[e], c = a.replace(/^-{3,}/, "---");
178
178
  let n, t, l, p, d, v;
179
- if (a !== "--" && /^-/.test(a) && K(a))
179
+ if (a !== "--" && /^-/.test(a) && H(a))
180
180
  U(a);
181
181
  else if (c.match(/^---+(=|$)/)) {
182
182
  U(a);
183
183
  continue;
184
184
  } else if (a.match(/^--.+=/) || !k["short-option-groups"] && a.match(/^-.+=/))
185
- p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1], m.arrays) ? e = F(e, p[1], r, p[2]) : g(p[1], m.nargs) !== !1 ? e = V(e, p[1], r, p[2]) : b(p[1], p[2], !0));
185
+ p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1], m.arrays) ? e = V(e, p[1], r, p[2]) : g(p[1], m.nargs) !== !1 ? e = j(e, p[1], r, p[2]) : b(p[1], p[2], !0));
186
186
  else if (a.match(W) && k["boolean-negation"])
187
187
  p = a.match(W), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], b(t, g(t, m.arrays) ? [!1] : !1));
188
188
  else if (a.match(/^--.+/) || !k["short-option-groups"] && a.match(/^-[^-]+/))
189
- p = a.match(/^--?(.+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], g(t, m.arrays) ? e = F(e, t, r) : g(t, m.nargs) !== !1 ? e = V(e, t, r) : (d = r[e + 1], d !== void 0 && (!d.match(/^-/) || d.match(P)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, z(t))));
189
+ p = a.match(/^--?(.+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], g(t, m.arrays) ? e = V(e, t, r) : g(t, m.nargs) !== !1 ? e = j(e, t, r) : (d = r[e + 1], d !== void 0 && (!d.match(/^-/) || d.match(Q)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, R(t))));
190
190
  else if (a.match(/^-.\..+=/))
191
191
  p = a.match(/^-([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && b(p[1], p[2]);
192
- else if (a.match(/^-.\..+/) && !a.match(P))
193
- d = r[e + 1], p = a.match(/^-(.\..+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], d !== void 0 && !d.match(/^-/) && !g(t, m.bools) && !g(t, m.counts) ? (b(t, d), e++) : b(t, z(t)));
194
- else if (a.match(/^-[^-]+/) && !a.match(P)) {
192
+ else if (a.match(/^-.\..+/) && !a.match(Q))
193
+ d = r[e + 1], p = a.match(/^-(.\..+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], d !== void 0 && !d.match(/^-/) && !g(t, m.bools) && !g(t, m.counts) ? (b(t, d), e++) : b(t, R(t)));
194
+ else if (a.match(/^-[^-]+/) && !a.match(Q)) {
195
195
  l = a.slice(1, -1).split(""), n = !1;
196
196
  for (let x = 0; x < l.length; x++) {
197
197
  if (d = a.slice(x + 2), l[x + 1] && l[x + 1] === "=") {
198
- v = a.slice(x + 3), t = l[x], g(t, m.arrays) ? e = F(e, t, r, v) : g(t, m.nargs) !== !1 ? e = V(e, t, r, v) : b(t, v), n = !0;
198
+ v = a.slice(x + 3), t = l[x], g(t, m.arrays) ? e = V(e, t, r, v) : g(t, m.nargs) !== !1 ? e = j(e, t, r, v) : b(t, v), n = !0;
199
199
  break;
200
200
  }
201
201
  if (d === "-") {
@@ -210,68 +210,68 @@ class Ee {
210
210
  b(l[x], d), n = !0;
211
211
  break;
212
212
  } else
213
- b(l[x], z(l[x]));
213
+ b(l[x], R(l[x]));
214
214
  }
215
- t = a.slice(-1)[0], !n && t !== "-" && (g(t, m.arrays) ? e = F(e, t, r) : g(t, m.nargs) !== !1 ? e = V(e, t, r) : (d = r[e + 1], d !== void 0 && (!/^(-|--)[^-]/.test(d) || d.match(P)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, z(t))));
216
- } else if (a.match(/^-[0-9]$/) && a.match(P) && g(a.slice(1), m.bools))
217
- t = a.slice(1), b(t, z(t));
215
+ t = a.slice(-1)[0], !n && t !== "-" && (g(t, m.arrays) ? e = V(e, t, r) : g(t, m.nargs) !== !1 ? e = j(e, t, r) : (d = r[e + 1], d !== void 0 && (!/^(-|--)[^-]/.test(d) || d.match(Q)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, R(t))));
216
+ } else if (a.match(/^-[0-9]$/) && a.match(Q) && g(a.slice(1), m.bools))
217
+ t = a.slice(1), b(t, R(t));
218
218
  else if (a === "--") {
219
- j = r.slice(e + 1);
219
+ F = r.slice(e + 1);
220
220
  break;
221
221
  } else if (k["halt-at-non-option"]) {
222
- j = r.slice(e);
222
+ F = r.slice(e);
223
223
  break;
224
224
  } else
225
225
  U(a);
226
226
  }
227
227
  me(w, !0), me(w, !1), fe(w), be(), ue(w, m.aliases, q, !0), we(w), k["set-placeholder-key"] && ve(w), Object.keys(m.counts).forEach(function(e) {
228
- O(w, e.split(".")) || b(e, 0);
229
- }), y && j.length && (w[L] = []), j.forEach(function(e) {
228
+ E(w, e.split(".")) || b(e, 0);
229
+ }), I && F.length && (w[L] = []), F.forEach(function(e) {
230
230
  w[L].push(e);
231
231
  }), k["camel-case-expansion"] && k["strip-dashed"] && Object.keys(w).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
232
232
  delete w[e];
233
- }), k["strip-aliased"] && [].concat(...Object.keys(h).map((e) => h[e])).forEach((e) => {
233
+ }), k["strip-aliased"] && [].concat(...Object.keys(_).map((e) => _[e])).forEach((e) => {
234
234
  k["camel-case-expansion"] && e.includes("-") && delete w[e.split(".").map((a) => $(a)).join(".")], delete w[e];
235
235
  });
236
236
  function U(e) {
237
- const a = H("_", e);
237
+ const a = K("_", e);
238
238
  (typeof a == "string" || typeof a == "number") && w._.push(a);
239
239
  }
240
- function V(e, a, c, n) {
240
+ function j(e, a, c, n) {
241
241
  let t, l = g(a, m.nargs);
242
242
  if (l = typeof l != "number" || isNaN(l) ? 1 : l, l === 0)
243
- return T(n) || (M = Error(G("Argument unexpected for: %s", a))), b(a, z(a)), e;
243
+ return T(n) || (M = Error(C("Argument unexpected for: %s", a))), b(a, R(a)), e;
244
244
  let p = T(n) ? 0 : 1;
245
245
  if (k["nargs-eats-options"])
246
- c.length - (e + 1) + p < l && (M = Error(G("Not enough arguments following: %s", a))), p = l;
246
+ c.length - (e + 1) + p < l && (M = Error(C("Not enough arguments following: %s", a))), p = l;
247
247
  else {
248
- for (t = e + 1; t < c.length && (!c[t].match(/^-[^0-9]/) || c[t].match(P) || K(c[t])); t++)
248
+ for (t = e + 1; t < c.length && (!c[t].match(/^-[^0-9]/) || c[t].match(Q) || H(c[t])); t++)
249
249
  p++;
250
- p < l && (M = Error(G("Not enough arguments following: %s", a)));
250
+ p < l && (M = Error(C("Not enough arguments following: %s", a)));
251
251
  }
252
252
  let d = Math.min(p, l);
253
253
  for (!T(n) && d > 0 && (b(a, n), d--), t = e + 1; t < d + e + 1; t++)
254
254
  b(a, c[t]);
255
255
  return e + d;
256
256
  }
257
- function F(e, a, c, n) {
257
+ function V(e, a, c, n) {
258
258
  let t = [], l = n || c[e + 1];
259
259
  const p = g(a, m.nargs);
260
260
  if (g(a, m.bools) && !/^(true|false)$/.test(l))
261
261
  t.push(!0);
262
- else if (T(l) || T(n) && /^-/.test(l) && !P.test(l) && !K(l)) {
262
+ else if (T(l) || T(n) && /^-/.test(l) && !Q.test(l) && !H(l)) {
263
263
  if (q[a] !== void 0) {
264
264
  const d = q[a];
265
265
  t = Array.isArray(d) ? d : [d];
266
266
  }
267
267
  } else {
268
268
  T(n) || t.push(Y(a, n, !0));
269
- for (let d = e + 1; d < c.length && !(!k["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !P.test(l) && !K(l))); d++)
270
- e = d, t.push(Y(a, l, _));
269
+ for (let d = e + 1; d < c.length && !(!k["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !Q.test(l) && !H(l))); d++)
270
+ e = d, t.push(Y(a, l, h));
271
271
  }
272
- return typeof p == "number" && (p && t.length < p || isNaN(p) && t.length === 0) && (M = Error(G("Not enough arguments following: %s", a))), b(a, t), e;
272
+ return typeof p == "number" && (p && t.length < p || isNaN(p) && t.length === 0) && (M = Error(C("Not enough arguments following: %s", a))), b(a, t), e;
273
273
  }
274
- function b(e, a, c = _) {
274
+ function b(e, a, c = h) {
275
275
  if (/-/.test(e) && k["camel-case-expansion"]) {
276
276
  const l = e.split(".").map(function(p) {
277
277
  return $(p);
@@ -279,13 +279,13 @@ class Ee {
279
279
  re(e, l);
280
280
  }
281
281
  const n = Y(e, a, c), t = e.split(".");
282
- D(w, t, n), m.aliases[e] && m.aliases[e].forEach(function(l) {
282
+ O(w, t, n), m.aliases[e] && m.aliases[e].forEach(function(l) {
283
283
  const p = l.split(".");
284
- D(w, p, n);
284
+ O(w, p, n);
285
285
  }), t.length > 1 && k["dot-notation"] && (m.aliases[t[0]] || []).forEach(function(l) {
286
286
  let p = l.split(".");
287
287
  const d = [].concat(t);
288
- d.shift(), p = p.concat(d), (m.aliases[e] || []).includes(p.join(".")) || D(w, p, n);
288
+ d.shift(), p = p.concat(d), (m.aliases[e] || []).includes(p.join(".")) || O(w, p, n);
289
289
  }), g(e, m.normalize) && !g(e, m.arrays) && [e].concat(m.aliases[e] || []).forEach(function(p) {
290
290
  Object.defineProperty(se, p, {
291
291
  enumerable: !0,
@@ -299,17 +299,17 @@ class Ee {
299
299
  });
300
300
  }
301
301
  function re(e, a) {
302
- m.aliases[e] && m.aliases[e].length || (m.aliases[e] = [a], C[a] = !0), m.aliases[a] && m.aliases[a].length || re(a, e);
302
+ m.aliases[e] && m.aliases[e].length || (m.aliases[e] = [a], G[a] = !0), m.aliases[a] && m.aliases[a].length || re(a, e);
303
303
  }
304
304
  function Y(e, a, c) {
305
- c && (a = Ve(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
305
+ c && (a = je(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
306
306
  let n = Array.isArray(a) ? a.map(function(t) {
307
- return H(e, t);
308
- }) : H(e, a);
307
+ return K(e, t);
308
+ }) : K(e, a);
309
309
  return g(e, m.counts) && (T(n) || typeof n == "boolean") && (n = Z()), g(e, m.normalize) && g(e, m.arrays) && (Array.isArray(a) ? n = a.map((t) => S.normalize(t)) : n = S.normalize(a)), n;
310
310
  }
311
- function H(e, a) {
312
- return !k["parse-positional-numbers"] && e === "_" || !g(e, m.strings) && !g(e, m.bools) && !Array.isArray(a) && (De(a) && k["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !T(a) && g(e, m.numbers)) && (a = Number(a)), a;
311
+ function K(e, a) {
312
+ return !k["parse-positional-numbers"] && e === "_" || !g(e, m.strings) && !g(e, m.bools) && !Array.isArray(a) && (Oe(a) && k["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !T(a) && g(e, m.numbers)) && (a = Number(a)), a;
313
313
  }
314
314
  function fe(e) {
315
315
  const a = /* @__PURE__ */ Object.create(null);
@@ -333,18 +333,18 @@ class Ee {
333
333
  t = S.require(l);
334
334
  J(t);
335
335
  } catch (t) {
336
- t.name === "PermissionDenied" ? M = t : e[c] && (M = Error(G("Invalid JSON config file: %s", n)));
336
+ t.name === "PermissionDenied" ? M = t : e[c] && (M = Error(C("Invalid JSON config file: %s", n)));
337
337
  }
338
338
  });
339
339
  }
340
340
  function J(e, a) {
341
341
  Object.keys(e).forEach(function(c) {
342
342
  const n = e[c], t = a ? a + "." + c : c;
343
- typeof n == "object" && n !== null && !Array.isArray(n) && k["dot-notation"] ? J(n, t) : (!O(w, t.split(".")) || g(t, m.arrays) && k["combine-arrays"]) && b(t, n);
343
+ typeof n == "object" && n !== null && !Array.isArray(n) && k["dot-notation"] ? J(n, t) : (!E(w, t.split(".")) || g(t, m.arrays) && k["combine-arrays"]) && b(t, n);
344
344
  });
345
345
  }
346
346
  function be() {
347
- typeof I < "u" && I.forEach(function(e) {
347
+ typeof y < "u" && y.forEach(function(e) {
348
348
  J(e);
349
349
  });
350
350
  }
@@ -357,7 +357,7 @@ class Ee {
357
357
  const l = t.split("__").map(function(p, d) {
358
358
  return d === 0 && (p = p.substring(c.length)), $(p);
359
359
  });
360
- (a && m.configs[l.join(".")] || !a) && !O(e, l) && b(l.join("."), n[t]);
360
+ (a && m.configs[l.join(".")] || !a) && !E(e, l) && b(l.join("."), n[t]);
361
361
  }
362
362
  });
363
363
  }
@@ -367,7 +367,7 @@ class Ee {
367
367
  Object.keys(e).forEach(function(n) {
368
368
  if (!c.has(n) && (a = g(n, m.coercions), typeof a == "function"))
369
369
  try {
370
- const t = H(n, a(e[n]));
370
+ const t = K(n, a(e[n]));
371
371
  [].concat(m.aliases[n] || [], n).forEach((l) => {
372
372
  c.add(l), e[l] = t;
373
373
  });
@@ -383,12 +383,12 @@ class Ee {
383
383
  }
384
384
  function ue(e, a, c, n = !1) {
385
385
  Object.keys(c).forEach(function(t) {
386
- O(e, t.split(".")) || (D(e, t.split("."), c[t]), n && (ne[t] = !0), (a[t] || []).forEach(function(l) {
387
- O(e, l.split(".")) || D(e, l.split("."), c[t]);
386
+ E(e, t.split(".")) || (O(e, t.split("."), c[t]), n && (ne[t] = !0), (a[t] || []).forEach(function(l) {
387
+ E(e, l.split(".")) || O(e, l.split("."), c[t]);
388
388
  }));
389
389
  });
390
390
  }
391
- function O(e, a) {
391
+ function E(e, a) {
392
392
  let c = e;
393
393
  k["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(t) {
394
394
  c = c[t] || {};
@@ -396,7 +396,7 @@ class Ee {
396
396
  const n = a[a.length - 1];
397
397
  return typeof c != "object" ? !1 : n in c;
398
398
  }
399
- function D(e, a, c) {
399
+ function O(e, a, c) {
400
400
  let n = e;
401
401
  k["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(v) {
402
402
  v = pe(v), typeof n == "object" && n[v] === void 0 && (n[v] = {}), typeof n[v] != "object" || Array.isArray(n[v]) ? (Array.isArray(n[v]) ? n[v].push({}) : n[v] = [n[v], {}], n = n[v][n[v].length - 1]) : n = n[v];
@@ -408,15 +408,15 @@ class Ee {
408
408
  function xe(...e) {
409
409
  e.forEach(function(a) {
410
410
  Object.keys(a || {}).forEach(function(c) {
411
- m.aliases[c] || (m.aliases[c] = [].concat(h[c] || []), m.aliases[c].concat(c).forEach(function(n) {
411
+ m.aliases[c] || (m.aliases[c] = [].concat(_[c] || []), m.aliases[c].concat(c).forEach(function(n) {
412
412
  if (/-/.test(n) && k["camel-case-expansion"]) {
413
413
  const t = $(n);
414
- t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), C[t] = !0);
414
+ t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
415
415
  }
416
416
  }), m.aliases[c].concat(c).forEach(function(n) {
417
417
  if (n.length > 1 && /[A-Z]/.test(n) && k["camel-case-expansion"]) {
418
- const t = Oe(n, "-");
419
- t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), C[t] = !0);
418
+ const t = Ee(n, "-");
419
+ t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
420
420
  }
421
421
  }), m.aliases[c].forEach(function(n) {
422
422
  m.aliases[n] = [c].concat(m.aliases[c].filter(function(t) {
@@ -442,8 +442,8 @@ class Ee {
442
442
  return t && ce(t[1]);
443
443
  });
444
444
  }
445
- function Ie(e) {
446
- if (e.match(P) || !e.match(/^-[^-]+/))
445
+ function ye(e) {
446
+ if (e.match(Q) || !e.match(/^-[^-]+/))
447
447
  return !1;
448
448
  let a = !0, c;
449
449
  const n = e.slice(1).split("");
@@ -457,32 +457,32 @@ class Ee {
457
457
  }
458
458
  return a;
459
459
  }
460
- function K(e) {
461
- return k["unknown-options-as-args"] && ye(e);
460
+ function H(e) {
461
+ return k["unknown-options-as-args"] && Ie(e);
462
462
  }
463
- function ye(e) {
464
- return e = e.replace(/^-{3,}/, "--"), e.match(P) || Ie(e) ? !1 : !Be(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
463
+ function Ie(e) {
464
+ return e = e.replace(/^-{3,}/, "--"), e.match(Q) || ye(e) ? !1 : !Be(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
465
465
  }
466
- function z(e) {
466
+ function R(e) {
467
467
  return !g(e, m.bools) && !g(e, m.counts) && `${e}` in q ? q[e] : Le(Me(e));
468
468
  }
469
469
  function Le(e) {
470
470
  return {
471
- [A.BOOLEAN]: !0,
472
- [A.STRING]: "",
473
- [A.NUMBER]: void 0,
474
- [A.ARRAY]: []
471
+ [P.BOOLEAN]: !0,
472
+ [P.STRING]: "",
473
+ [P.NUMBER]: void 0,
474
+ [P.ARRAY]: []
475
475
  }[e];
476
476
  }
477
477
  function Me(e) {
478
- let a = A.BOOLEAN;
479
- return g(e, m.strings) ? a = A.STRING : g(e, m.numbers) ? a = A.NUMBER : g(e, m.bools) ? a = A.BOOLEAN : g(e, m.arrays) && (a = A.ARRAY), a;
478
+ let a = P.BOOLEAN;
479
+ return g(e, m.strings) ? a = P.STRING : g(e, m.numbers) ? a = P.NUMBER : g(e, m.bools) ? a = P.BOOLEAN : g(e, m.arrays) && (a = P.ARRAY), a;
480
480
  }
481
481
  function T(e) {
482
482
  return e === void 0;
483
483
  }
484
- function Qe() {
485
- Object.keys(m.counts).find((e) => g(e, m.arrays) ? (M = Error(G("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, m.nargs) ? (M = Error(G("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
484
+ function Ae() {
485
+ Object.keys(m.counts).find((e) => g(e, m.arrays) ? (M = Error(C("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, m.nargs) ? (M = Error(C("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
486
486
  }
487
487
  return {
488
488
  aliases: Object.assign({}, m.aliases),
@@ -490,11 +490,11 @@ class Ee {
490
490
  configuration: k,
491
491
  defaulted: Object.assign({}, ne),
492
492
  error: M,
493
- newAliases: Object.assign({}, C)
493
+ newAliases: Object.assign({}, G)
494
494
  };
495
495
  }
496
496
  }
497
- function je(i) {
497
+ function Fe(i) {
498
498
  const o = [], u = /* @__PURE__ */ Object.create(null);
499
499
  let s = !0;
500
500
  for (Object.keys(i).forEach(function(r) {
@@ -502,20 +502,20 @@ function je(i) {
502
502
  }); s; ) {
503
503
  s = !1;
504
504
  for (let r = 0; r < o.length; r++)
505
- for (let _ = r + 1; _ < o.length; _++)
505
+ for (let h = r + 1; h < o.length; h++)
506
506
  if (o[r].filter(function(k) {
507
- return o[_].indexOf(k) !== -1;
507
+ return o[h].indexOf(k) !== -1;
508
508
  }).length) {
509
- o[r] = o[r].concat(o[_]), o.splice(_, 1), s = !0;
509
+ o[r] = o[r].concat(o[h]), o.splice(h, 1), s = !0;
510
510
  break;
511
511
  }
512
512
  }
513
513
  return o.forEach(function(r) {
514
- r = r.filter(function(h, k, q) {
515
- return q.indexOf(h) === k;
514
+ r = r.filter(function(_, k, q) {
515
+ return q.indexOf(_) === k;
516
516
  });
517
- const _ = r.pop();
518
- _ !== void 0 && typeof _ == "string" && (u[_] = r);
517
+ const h = r.pop();
518
+ h !== void 0 && typeof h == "string" && (u[h] = r);
519
519
  }), u;
520
520
  }
521
521
  function Z(i) {
@@ -524,7 +524,7 @@ function Z(i) {
524
524
  function pe(i) {
525
525
  return i === "__proto__" ? "___proto___" : i;
526
526
  }
527
- function Ve(i) {
527
+ function je(i) {
528
528
  return typeof i == "string" && (i[0] === "'" || i[0] === '"') && i[i.length - 1] === i[0] ? i.substring(1, i.length - 1) : i;
529
529
  }
530
530
  /**
@@ -539,12 +539,12 @@ var X, ee, te;
539
539
  const le = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12, de = (ee = (X = process == null ? void 0 : process.versions) === null || X === void 0 ? void 0 : X.node) !== null && ee !== void 0 ? ee : (te = process == null ? void 0 : process.version) === null || te === void 0 ? void 0 : te.slice(1);
540
540
  if (de && Number(de.match(/^([^.]+)/)[1]) < le)
541
541
  throw Error(`yargs parser supports a minimum Node.js version of ${le}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
542
- const Fe = process ? process.env : {};
543
- new Ee({
542
+ const Ve = process ? process.env : {};
543
+ new De({
544
544
  cwd: process.cwd,
545
- env: () => Fe,
545
+ env: () => Ve,
546
546
  format: ke,
547
- normalize: Ae,
547
+ normalize: Pe,
548
548
  resolve: ie,
549
549
  // TODO: figure out a way to combine ESM and CJS coverage, such that
550
550
  // we can exercise all the lines below:
@@ -556,10 +556,10 @@ new Ee({
556
556
  throw Error("only .json config files are supported in ESM");
557
557
  }
558
558
  });
559
- const He = {
559
+ const Ke = {
560
560
  fs: {
561
561
  readFileSync: ge,
562
- writeFile: Pe
562
+ writeFile: Qe
563
563
  },
564
564
  format: ke,
565
565
  resolve: ie,
@@ -571,8 +571,8 @@ const He = {
571
571
  }
572
572
  }
573
573
  };
574
- let Q;
575
- class Ke {
574
+ let A;
575
+ class He {
576
576
  constructor(o) {
577
577
  o = o || {}, this.directory = o.directory || "./locales", this.updateFiles = typeof o.updateFiles == "boolean" ? o.updateFiles : !0, this.locale = o.locale || "en", this.fallbackToLanguage = typeof o.fallbackToLanguage == "boolean" ? o.fallbackToLanguage : !0, this.cache = /* @__PURE__ */ Object.create(null), this.writeQueue = [];
578
578
  }
@@ -587,24 +587,24 @@ class Ke {
587
587
  directory: this.directory,
588
588
  locale: this.locale,
589
589
  cb: s
590
- })) : s(), Q.format.apply(Q.format, [this.cache[this.locale][u] || u].concat(o));
590
+ })) : s(), A.format.apply(A.format, [this.cache[this.locale][u] || u].concat(o));
591
591
  }
592
592
  __n() {
593
593
  const o = Array.prototype.slice.call(arguments), u = o.shift(), s = o.shift(), r = o.shift();
594
- let _ = function() {
594
+ let h = function() {
595
595
  };
596
- typeof o[o.length - 1] == "function" && (_ = o.pop()), this.cache[this.locale] || this._readLocaleFile();
597
- let h = r === 1 ? u : s;
598
- this.cache[this.locale][u] && (h = this.cache[this.locale][u][r === 1 ? "one" : "other"]), !this.cache[this.locale][u] && this.updateFiles ? (this.cache[this.locale][u] = {
596
+ typeof o[o.length - 1] == "function" && (h = o.pop()), this.cache[this.locale] || this._readLocaleFile();
597
+ let _ = r === 1 ? u : s;
598
+ this.cache[this.locale][u] && (_ = this.cache[this.locale][u][r === 1 ? "one" : "other"]), !this.cache[this.locale][u] && this.updateFiles ? (this.cache[this.locale][u] = {
599
599
  one: u,
600
600
  other: s
601
601
  }, this._enqueueWrite({
602
602
  directory: this.directory,
603
603
  locale: this.locale,
604
- cb: _
605
- })) : _();
606
- const k = [h];
607
- return ~h.indexOf("%d") && k.push(r), Q.format.apply(Q.format, k.concat(o));
604
+ cb: h
605
+ })) : h();
606
+ const k = [_];
607
+ return ~_.indexOf("%d") && k.push(r), A.format.apply(A.format, k.concat(o));
608
608
  }
609
609
  setLocale(o) {
610
610
  this.locale = o;
@@ -619,25 +619,25 @@ class Ke {
619
619
  }
620
620
  _taggedLiteral(o, ...u) {
621
621
  let s = "";
622
- return o.forEach(function(r, _) {
623
- const h = u[_ + 1];
624
- s += r, typeof h < "u" && (s += "%s");
622
+ return o.forEach(function(r, h) {
623
+ const _ = u[h + 1];
624
+ s += r, typeof _ < "u" && (s += "%s");
625
625
  }), this.__.apply(this, [s].concat([].slice.call(u, 1)));
626
626
  }
627
627
  _enqueueWrite(o) {
628
628
  this.writeQueue.push(o), this.writeQueue.length === 1 && this._processWriteQueue();
629
629
  }
630
630
  _processWriteQueue() {
631
- const o = this, u = this.writeQueue[0], s = u.directory, r = u.locale, _ = u.cb, h = this._resolveLocaleFile(s, r), k = JSON.stringify(this.cache[r], null, 2);
632
- Q.fs.writeFile(h, k, "utf-8", function(q) {
633
- o.writeQueue.shift(), o.writeQueue.length > 0 && o._processWriteQueue(), _(q);
631
+ const o = this, u = this.writeQueue[0], s = u.directory, r = u.locale, h = u.cb, _ = this._resolveLocaleFile(s, r), k = JSON.stringify(this.cache[r], null, 2);
632
+ A.fs.writeFile(_, k, "utf-8", function(q) {
633
+ o.writeQueue.shift(), o.writeQueue.length > 0 && o._processWriteQueue(), h(q);
634
634
  });
635
635
  }
636
636
  _readLocaleFile() {
637
637
  let o = {};
638
638
  const u = this._resolveLocaleFile(this.directory, this.locale);
639
639
  try {
640
- Q.fs.readFileSync && (o = JSON.parse(Q.fs.readFileSync(u, "utf-8")));
640
+ A.fs.readFileSync && (o = JSON.parse(A.fs.readFileSync(u, "utf-8")));
641
641
  } catch (s) {
642
642
  if (s instanceof SyntaxError && (s.message = "syntax error in " + u), s.code === "ENOENT")
643
643
  o = {};
@@ -647,20 +647,20 @@ class Ke {
647
647
  this.cache[this.locale] = o;
648
648
  }
649
649
  _resolveLocaleFile(o, u) {
650
- let s = Q.resolve(o, "./", u + ".json");
650
+ let s = A.resolve(o, "./", u + ".json");
651
651
  if (this.fallbackToLanguage && !this._fileExistsSync(s) && ~u.lastIndexOf("_")) {
652
- const r = Q.resolve(o, "./", u.split("_")[0] + ".json");
652
+ const r = A.resolve(o, "./", u.split("_")[0] + ".json");
653
653
  this._fileExistsSync(r) && (s = r);
654
654
  }
655
655
  return s;
656
656
  }
657
657
  _fileExistsSync(o) {
658
- return Q.exists(o);
658
+ return A.exists(o);
659
659
  }
660
660
  }
661
661
  function $e(i, o) {
662
- Q = o;
663
- const u = new Ke(i);
662
+ A = o;
663
+ const u = new He(i);
664
664
  return {
665
665
  __: u.__.bind(u),
666
666
  __n: u.__n.bind(u),
@@ -670,7 +670,7 @@ function $e(i, o) {
670
670
  locale: u.locale
671
671
  };
672
672
  }
673
- const We = (i) => $e(i, He);
673
+ const We = (i) => $e(i, Ke);
674
674
  let N;
675
675
  try {
676
676
  N = Se(import.meta.url);
@@ -1021,44 +1021,60 @@ const oe = [
1021
1021
  ]
1022
1022
  },
1023
1023
  context_window: 2e5,
1024
- prices: {
1025
- input_mtok: {
1026
- base: 5,
1027
- tiers: [
1028
- {
1029
- start: 2e5,
1030
- price: 10
1031
- }
1032
- ]
1033
- },
1034
- cache_write_mtok: {
1035
- base: 6.25,
1036
- tiers: [
1037
- {
1038
- start: 2e5,
1039
- price: 12.5
1040
- }
1041
- ]
1042
- },
1043
- cache_read_mtok: {
1044
- base: 0.5,
1045
- tiers: [
1046
- {
1047
- start: 2e5,
1048
- price: 1
1024
+ prices: [
1025
+ {
1026
+ prices: {
1027
+ input_mtok: {
1028
+ base: 5,
1029
+ tiers: [
1030
+ {
1031
+ start: 2e5,
1032
+ price: 10
1033
+ }
1034
+ ]
1035
+ },
1036
+ cache_write_mtok: {
1037
+ base: 6.25,
1038
+ tiers: [
1039
+ {
1040
+ start: 2e5,
1041
+ price: 12.5
1042
+ }
1043
+ ]
1044
+ },
1045
+ cache_read_mtok: {
1046
+ base: 0.5,
1047
+ tiers: [
1048
+ {
1049
+ start: 2e5,
1050
+ price: 1
1051
+ }
1052
+ ]
1053
+ },
1054
+ output_mtok: {
1055
+ base: 25,
1056
+ tiers: [
1057
+ {
1058
+ start: 2e5,
1059
+ price: 37.5
1060
+ }
1061
+ ]
1049
1062
  }
1050
- ]
1063
+ }
1051
1064
  },
1052
- output_mtok: {
1053
- base: 25,
1054
- tiers: [
1055
- {
1056
- start: 2e5,
1057
- price: 37.5
1058
- }
1059
- ]
1065
+ {
1066
+ constraint: {
1067
+ start_date: "2026-03-13",
1068
+ type: "start_date"
1069
+ },
1070
+ prices: {
1071
+ input_mtok: 5,
1072
+ cache_write_mtok: 6.25,
1073
+ cache_read_mtok: 0.5,
1074
+ output_mtok: 25
1075
+ }
1060
1076
  }
1061
- }
1077
+ ]
1062
1078
  },
1063
1079
  {
1064
1080
  id: "claude-sonnet-4-0",
@@ -1160,44 +1176,60 @@ const oe = [
1160
1176
  ]
1161
1177
  },
1162
1178
  context_window: 1e6,
1163
- prices: {
1164
- input_mtok: {
1165
- base: 3,
1166
- tiers: [
1167
- {
1168
- start: 2e5,
1169
- price: 6
1170
- }
1171
- ]
1172
- },
1173
- cache_write_mtok: {
1174
- base: 3.75,
1175
- tiers: [
1176
- {
1177
- start: 2e5,
1178
- price: 7.5
1179
- }
1180
- ]
1181
- },
1182
- cache_read_mtok: {
1183
- base: 0.3,
1184
- tiers: [
1185
- {
1186
- start: 2e5,
1187
- price: 0.6
1179
+ prices: [
1180
+ {
1181
+ prices: {
1182
+ input_mtok: {
1183
+ base: 3,
1184
+ tiers: [
1185
+ {
1186
+ start: 2e5,
1187
+ price: 6
1188
+ }
1189
+ ]
1190
+ },
1191
+ cache_write_mtok: {
1192
+ base: 3.75,
1193
+ tiers: [
1194
+ {
1195
+ start: 2e5,
1196
+ price: 7.5
1197
+ }
1198
+ ]
1199
+ },
1200
+ cache_read_mtok: {
1201
+ base: 0.3,
1202
+ tiers: [
1203
+ {
1204
+ start: 2e5,
1205
+ price: 0.6
1206
+ }
1207
+ ]
1208
+ },
1209
+ output_mtok: {
1210
+ base: 15,
1211
+ tiers: [
1212
+ {
1213
+ start: 2e5,
1214
+ price: 22.5
1215
+ }
1216
+ ]
1188
1217
  }
1189
- ]
1218
+ }
1190
1219
  },
1191
- output_mtok: {
1192
- base: 15,
1193
- tiers: [
1194
- {
1195
- start: 2e5,
1196
- price: 22.5
1197
- }
1198
- ]
1220
+ {
1221
+ constraint: {
1222
+ start_date: "2026-03-13",
1223
+ type: "start_date"
1224
+ },
1225
+ prices: {
1226
+ input_mtok: 3,
1227
+ cache_write_mtok: 3.75,
1228
+ cache_read_mtok: 0.3,
1229
+ output_mtok: 15
1230
+ }
1199
1231
  }
1200
- }
1232
+ ]
1201
1233
  },
1202
1234
  {
1203
1235
  id: "claude-v1",
@@ -1330,7 +1362,7 @@ const oe = [
1330
1362
  name: "Nova Lite",
1331
1363
  description: "Amazon Nova Lite 1.0 is a very low-cost multimodal model from Amazon that focused on fast processing of image, video, and text inputs to generate text output. Amazon Nova Lite can handle real-time customer interactions, document analysis, and visual question-answering tasks with high accuracy.",
1332
1364
  match: {
1333
- contains: "amazon.nova-lite-v1"
1365
+ contains: "amazon.nova-lite"
1334
1366
  },
1335
1367
  prices: {
1336
1368
  input_mtok: 0.06,
@@ -1343,7 +1375,7 @@ const oe = [
1343
1375
  name: "Nova Micro",
1344
1376
  description: "Amazon Nova Micro 1.0 is a text-only model that delivers the lowest latency responses in the Amazon Nova family of models at a very low cost. With a context length of 128K tokens and optimized for speed and cost, Amazon Nova Micro excels at tasks such as text summarization, translation, content classification, interactive chat, and brainstorming. It has simple mathematical reasoning and coding abilities.",
1345
1377
  match: {
1346
- contains: "amazon.nova-micro-v1"
1378
+ contains: "amazon.nova-micro"
1347
1379
  },
1348
1380
  prices: {
1349
1381
  input_mtok: 0.035,
@@ -1355,7 +1387,7 @@ const oe = [
1355
1387
  id: "amazon.nova-premier-v1:0",
1356
1388
  name: "Nova Premier",
1357
1389
  match: {
1358
- contains: "amazon.nova-premier-v1"
1390
+ contains: "amazon.nova-premier"
1359
1391
  },
1360
1392
  prices: {
1361
1393
  input_mtok: 2.5,
@@ -1368,7 +1400,7 @@ const oe = [
1368
1400
  name: "Nova Pro",
1369
1401
  description: "Amazon Nova Pro 1.0 is a capable multimodal model from Amazon focused on providing a combination of accuracy, speed, and cost for a wide range of tasks. As of December 2024, it achieves state-of-the-art performance on key benchmarks including visual question answering (TextVQA) and video understanding (VATEX).",
1370
1402
  match: {
1371
- contains: "amazon.nova-pro-v1"
1403
+ contains: "amazon.nova-pro"
1372
1404
  },
1373
1405
  prices: {
1374
1406
  input_mtok: 0.8,
@@ -1380,7 +1412,7 @@ const oe = [
1380
1412
  id: "amazon.nova-sonic-v1:0",
1381
1413
  name: "Nova Sonic",
1382
1414
  match: {
1383
- contains: "amazon.nova-sonic-v1"
1415
+ contains: "amazon.nova-sonic"
1384
1416
  },
1385
1417
  prices: {
1386
1418
  input_mtok: 0.06,
@@ -1393,7 +1425,7 @@ const oe = [
1393
1425
  id: "amazon.titan-embed-text-v1",
1394
1426
  name: "Titan Embeddings G1 - Text",
1395
1427
  match: {
1396
- contains: "amazon.titan-embed-text-v1"
1428
+ contains: "amazon.titan-embed-text"
1397
1429
  },
1398
1430
  prices: {
1399
1431
  input_mtok: 0.1
@@ -1425,7 +1457,7 @@ const oe = [
1425
1457
  id: "deepseek.r1-v1:0",
1426
1458
  name: "DeepSeek-R1",
1427
1459
  match: {
1428
- contains: "deepseek.r1-v1"
1460
+ contains: "deepseek.r1"
1429
1461
  },
1430
1462
  prices: {
1431
1463
  input_mtok: 1.35,
@@ -1435,7 +1467,7 @@ const oe = [
1435
1467
  {
1436
1468
  id: "global.anthropic.claude-haiku-4-5-20251001-v1:0",
1437
1469
  match: {
1438
- contains: "global.anthropic.claude-haiku-4-5-20251001-v1"
1470
+ contains: "global.anthropic.claude-haiku-4-5-20251001"
1439
1471
  },
1440
1472
  prices: {
1441
1473
  input_mtok: 1,
@@ -1503,7 +1535,7 @@ const oe = [
1503
1535
  {
1504
1536
  id: "global.anthropic.claude-sonnet-4-20250514-v1:0",
1505
1537
  match: {
1506
- contains: "global.anthropic.claude-sonnet-4-20250514-v1"
1538
+ contains: "global.anthropic.claude-sonnet-4-20250514"
1507
1539
  },
1508
1540
  prices: {
1509
1541
  input_mtok: 3,
@@ -1515,7 +1547,7 @@ const oe = [
1515
1547
  {
1516
1548
  id: "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
1517
1549
  match: {
1518
- contains: "global.anthropic.claude-sonnet-4-5-20250929-v1"
1550
+ contains: "global.anthropic.claude-sonnet-4-5-20250929"
1519
1551
  },
1520
1552
  prices: {
1521
1553
  input_mtok: 3,
@@ -1572,7 +1604,7 @@ const oe = [
1572
1604
  id: "meta.llama3-1-70b-instruct-v1:0",
1573
1605
  name: "Llama 3.1 70B Instruct",
1574
1606
  match: {
1575
- contains: "meta.llama3-1-70b-instruct-v1"
1607
+ contains: "meta.llama3-1-70b-instruct"
1576
1608
  },
1577
1609
  prices: {
1578
1610
  input_mtok: 0.72,
@@ -1583,7 +1615,7 @@ const oe = [
1583
1615
  id: "meta.llama3-1-8b-instruct-v1:0",
1584
1616
  name: "Llama 3.1 8B Instruct",
1585
1617
  match: {
1586
- contains: "meta.llama3-1-8b-instruct-v1"
1618
+ contains: "meta.llama3-1-8b-instruct"
1587
1619
  },
1588
1620
  prices: {
1589
1621
  input_mtok: 0.22,
@@ -1594,7 +1626,7 @@ const oe = [
1594
1626
  id: "meta.llama3-2-11b-instruct-v1:0",
1595
1627
  name: "Llama 3.2 11B Instruct",
1596
1628
  match: {
1597
- contains: "meta.llama3-2-11b-instruct-v1"
1629
+ contains: "meta.llama3-2-11b-instruct"
1598
1630
  },
1599
1631
  prices: {
1600
1632
  input_mtok: 0.16,
@@ -1605,7 +1637,7 @@ const oe = [
1605
1637
  id: "meta.llama3-2-1b-instruct-v1:0",
1606
1638
  name: "Llama 3.2 1B Instruct",
1607
1639
  match: {
1608
- contains: "meta.llama3-2-1b-instruct-v1"
1640
+ contains: "meta.llama3-2-1b-instruct"
1609
1641
  },
1610
1642
  prices: {
1611
1643
  input_mtok: 0.1,
@@ -1616,7 +1648,7 @@ const oe = [
1616
1648
  id: "meta.llama3-2-3b-instruct-v1:0",
1617
1649
  name: "Llama 3.2 3B Instruct",
1618
1650
  match: {
1619
- contains: "meta.llama3-2-3b-instruct-v1"
1651
+ contains: "meta.llama3-2-3b-instruct"
1620
1652
  },
1621
1653
  prices: {
1622
1654
  input_mtok: 0.15,
@@ -1627,7 +1659,7 @@ const oe = [
1627
1659
  id: "meta.llama3-2-90b-instruct-v1:0",
1628
1660
  name: "Llama 3.2 90B Instruct",
1629
1661
  match: {
1630
- contains: "meta.llama3-2-90b-instruct-v1"
1662
+ contains: "meta.llama3-2-90b-instruct"
1631
1663
  },
1632
1664
  prices: {
1633
1665
  input_mtok: 0.72,
@@ -1638,7 +1670,7 @@ const oe = [
1638
1670
  id: "meta.llama3-3-70b-instruct-v1:0",
1639
1671
  name: "Llama 3.3 70B Instruct",
1640
1672
  match: {
1641
- contains: "meta.llama3-3-70b-instruct-v1"
1673
+ contains: "meta.llama3-3-70b-instruct"
1642
1674
  },
1643
1675
  prices: {
1644
1676
  input_mtok: 0.72,
@@ -1649,7 +1681,7 @@ const oe = [
1649
1681
  id: "meta.llama3-70b-instruct-v1:0",
1650
1682
  name: "Llama 3 70B Instruct",
1651
1683
  match: {
1652
- contains: "meta.llama3-70b-instruct-v1"
1684
+ contains: "meta.llama3-70b-instruct"
1653
1685
  },
1654
1686
  prices: {
1655
1687
  input_mtok: 2.65,
@@ -1660,7 +1692,7 @@ const oe = [
1660
1692
  id: "meta.llama3-8b-instruct-v1:0",
1661
1693
  name: "Llama 3 8B Instruct",
1662
1694
  match: {
1663
- contains: "meta.llama3-8b-instruct-v1"
1695
+ contains: "meta.llama3-8b-instruct"
1664
1696
  },
1665
1697
  prices: {
1666
1698
  input_mtok: 0.3,
@@ -1671,7 +1703,7 @@ const oe = [
1671
1703
  id: "meta.llama4-maverick-17b-instruct-v1:0",
1672
1704
  name: "Llama 4 Maverick 17B Instruct",
1673
1705
  match: {
1674
- contains: "meta.llama4-maverick-17b-instruct-v1"
1706
+ contains: "meta.llama4-maverick-17b-instruct"
1675
1707
  },
1676
1708
  prices: {
1677
1709
  input_mtok: 0.24,
@@ -1682,7 +1714,7 @@ const oe = [
1682
1714
  id: "meta.llama4-scout-17b-instruct-v1:0",
1683
1715
  name: "Llama 4 Scout 17B Instruct",
1684
1716
  match: {
1685
- contains: "meta.llama4-scout-17b-instruct-v1"
1717
+ contains: "meta.llama4-scout-17b-instruct"
1686
1718
  },
1687
1719
  prices: {
1688
1720
  input_mtok: 0.17,
@@ -1704,7 +1736,7 @@ const oe = [
1704
1736
  id: "mistral.mistral-large-2402-v1:0",
1705
1737
  name: "Mistral Large (24.02)",
1706
1738
  match: {
1707
- contains: "mistral.mistral-large-2402-v1"
1739
+ contains: "mistral.mistral-large-2402"
1708
1740
  },
1709
1741
  prices: {
1710
1742
  input_mtok: 4,
@@ -1715,7 +1747,7 @@ const oe = [
1715
1747
  id: "mistral.mistral-small-2402-v1:0",
1716
1748
  name: "Mistral Small (24.02)",
1717
1749
  match: {
1718
- contains: "mistral.mistral-small-2402-v1"
1750
+ contains: "mistral.mistral-small-2402"
1719
1751
  },
1720
1752
  prices: {
1721
1753
  input_mtok: 1,
@@ -1737,7 +1769,7 @@ const oe = [
1737
1769
  id: "mistral.pixtral-large-2502-v1:0",
1738
1770
  name: "Pixtral Large (25.02)",
1739
1771
  match: {
1740
- contains: "mistral.pixtral-large-2502-v1"
1772
+ contains: "mistral.pixtral-large-2502"
1741
1773
  },
1742
1774
  prices: {
1743
1775
  input_mtok: 2,
@@ -1770,7 +1802,7 @@ const oe = [
1770
1802
  id: "qwen.qwen3-32b-v1:0",
1771
1803
  name: "Qwen3 32B (dense)",
1772
1804
  match: {
1773
- contains: "qwen.qwen3-32b-v1"
1805
+ contains: "qwen.qwen3-32b"
1774
1806
  },
1775
1807
  prices: {
1776
1808
  input_mtok: 0.15,
@@ -1781,7 +1813,7 @@ const oe = [
1781
1813
  id: "qwen.qwen3-coder-30b-a3b-v1:0",
1782
1814
  name: "Qwen3-Coder-30B-A3B-Instruct",
1783
1815
  match: {
1784
- contains: "qwen.qwen3-coder-30b-a3b-v1"
1816
+ contains: "qwen.qwen3-coder-30b-a3b"
1785
1817
  },
1786
1818
  prices: {
1787
1819
  input_mtok: 0.15,
@@ -1792,36 +1824,28 @@ const oe = [
1792
1824
  id: "qwen.qwen3-coder-480b-a35b-v1:0",
1793
1825
  name: "Qwen3-Coder-480B-A35B-Instruct",
1794
1826
  match: {
1795
- contains: "qwen.qwen3-coder-480b-a35b-v1"
1827
+ contains: "qwen.qwen3-coder-480b-a35b"
1796
1828
  },
1797
1829
  prices: {
1798
1830
  input_mtok: 0.45,
1799
1831
  output_mtok: 1.8
1800
1832
  }
1801
1833
  },
1834
+ {
1835
+ id: "qwen.qwen3-vl-235b-a22b-v1:0",
1836
+ name: "Qwen3-VL-235B-A22B-Instruct",
1837
+ match: {
1838
+ contains: "qwen.qwen3-vl-235b-a22b"
1839
+ },
1840
+ prices: {
1841
+ input_mtok: 0.53,
1842
+ output_mtok: 2.66
1843
+ }
1844
+ },
1802
1845
  {
1803
1846
  id: "regional.anthropic.claude-3-5-haiku-20241022-v1:0",
1804
1847
  match: {
1805
- or: [
1806
- {
1807
- contains: "us.anthropic.claude-3-5-haiku-20241022-v1"
1808
- },
1809
- {
1810
- contains: "au.anthropic.claude-3-5-haiku-20241022-v1"
1811
- },
1812
- {
1813
- contains: "apac.anthropic.claude-3-5-haiku-20241022-v1"
1814
- },
1815
- {
1816
- contains: "eu.anthropic.claude-3-5-haiku-20241022-v1"
1817
- },
1818
- {
1819
- contains: "us-gov.anthropic.claude-3-5-haiku-20241022-v1"
1820
- },
1821
- {
1822
- contains: "jp.anthropic.claude-3-5-haiku-20241022-v1"
1823
- }
1824
- ]
1848
+ contains: "claude-3-5-haiku-20241022"
1825
1849
  },
1826
1850
  prices: {
1827
1851
  input_mtok: 0.8,
@@ -1833,26 +1857,7 @@ const oe = [
1833
1857
  {
1834
1858
  id: "regional.anthropic.claude-3-5-sonnet-20240620-v1:0",
1835
1859
  match: {
1836
- or: [
1837
- {
1838
- contains: "us.anthropic.claude-3-5-sonnet-20240620-v1"
1839
- },
1840
- {
1841
- contains: "au.anthropic.claude-3-5-sonnet-20240620-v1"
1842
- },
1843
- {
1844
- contains: "apac.anthropic.claude-3-5-sonnet-20240620-v1"
1845
- },
1846
- {
1847
- contains: "eu.anthropic.claude-3-5-sonnet-20240620-v1"
1848
- },
1849
- {
1850
- contains: "us-gov.anthropic.claude-3-5-sonnet-20240620-v1"
1851
- },
1852
- {
1853
- contains: "jp.anthropic.claude-3-5-sonnet-20240620-v1"
1854
- }
1855
- ]
1860
+ contains: "claude-3-5-sonnet-20240620"
1856
1861
  },
1857
1862
  prices: {
1858
1863
  input_mtok: 3,
@@ -1864,26 +1869,7 @@ const oe = [
1864
1869
  {
1865
1870
  id: "regional.anthropic.claude-3-5-sonnet-20241022-v2:0",
1866
1871
  match: {
1867
- or: [
1868
- {
1869
- contains: "us.anthropic.claude-3-5-sonnet-20241022-v2"
1870
- },
1871
- {
1872
- contains: "au.anthropic.claude-3-5-sonnet-20241022-v2"
1873
- },
1874
- {
1875
- contains: "apac.anthropic.claude-3-5-sonnet-20241022-v2"
1876
- },
1877
- {
1878
- contains: "eu.anthropic.claude-3-5-sonnet-20241022-v2"
1879
- },
1880
- {
1881
- contains: "us-gov.anthropic.claude-3-5-sonnet-20241022-v2"
1882
- },
1883
- {
1884
- contains: "jp.anthropic.claude-3-5-sonnet-20241022-v2"
1885
- }
1886
- ]
1872
+ contains: "claude-3-5-sonnet-20241022"
1887
1873
  },
1888
1874
  prices: {
1889
1875
  input_mtok: 3,
@@ -1895,26 +1881,7 @@ const oe = [
1895
1881
  {
1896
1882
  id: "regional.anthropic.claude-3-7-sonnet-20250219-v1:0",
1897
1883
  match: {
1898
- or: [
1899
- {
1900
- contains: "us.anthropic.claude-3-7-sonnet-20250219-v1"
1901
- },
1902
- {
1903
- contains: "au.anthropic.claude-3-7-sonnet-20250219-v1"
1904
- },
1905
- {
1906
- contains: "apac.anthropic.claude-3-7-sonnet-20250219-v1"
1907
- },
1908
- {
1909
- contains: "eu.anthropic.claude-3-7-sonnet-20250219-v1"
1910
- },
1911
- {
1912
- contains: "us-gov.anthropic.claude-3-7-sonnet-20250219-v1"
1913
- },
1914
- {
1915
- contains: "jp.anthropic.claude-3-7-sonnet-20250219-v1"
1916
- }
1917
- ]
1884
+ contains: "claude-3-7-sonnet-20250219"
1918
1885
  },
1919
1886
  prices: {
1920
1887
  input_mtok: 3,
@@ -1926,26 +1893,7 @@ const oe = [
1926
1893
  {
1927
1894
  id: "regional.anthropic.claude-3-haiku-20240307-v1:0",
1928
1895
  match: {
1929
- or: [
1930
- {
1931
- contains: "us.anthropic.claude-3-haiku-20240307-v1"
1932
- },
1933
- {
1934
- contains: "au.anthropic.claude-3-haiku-20240307-v1"
1935
- },
1936
- {
1937
- contains: "apac.anthropic.claude-3-haiku-20240307-v1"
1938
- },
1939
- {
1940
- contains: "eu.anthropic.claude-3-haiku-20240307-v1"
1941
- },
1942
- {
1943
- contains: "us-gov.anthropic.claude-3-haiku-20240307-v1"
1944
- },
1945
- {
1946
- contains: "jp.anthropic.claude-3-haiku-20240307-v1"
1947
- }
1948
- ]
1896
+ contains: "claude-3-haiku-20240307"
1949
1897
  },
1950
1898
  prices: {
1951
1899
  input_mtok: 0.25,
@@ -1955,26 +1903,7 @@ const oe = [
1955
1903
  {
1956
1904
  id: "regional.anthropic.claude-3-opus-20240229-v1:0",
1957
1905
  match: {
1958
- or: [
1959
- {
1960
- contains: "us.anthropic.claude-3-opus-20240229-v1"
1961
- },
1962
- {
1963
- contains: "au.anthropic.claude-3-opus-20240229-v1"
1964
- },
1965
- {
1966
- contains: "apac.anthropic.claude-3-opus-20240229-v1"
1967
- },
1968
- {
1969
- contains: "eu.anthropic.claude-3-opus-20240229-v1"
1970
- },
1971
- {
1972
- contains: "us-gov.anthropic.claude-3-opus-20240229-v1"
1973
- },
1974
- {
1975
- contains: "jp.anthropic.claude-3-opus-20240229-v1"
1976
- }
1977
- ]
1906
+ contains: "claude-3-opus-20240229"
1978
1907
  },
1979
1908
  prices: {
1980
1909
  input_mtok: 15,
@@ -1984,26 +1913,7 @@ const oe = [
1984
1913
  {
1985
1914
  id: "regional.anthropic.claude-3-sonnet-20240229-v1:0",
1986
1915
  match: {
1987
- or: [
1988
- {
1989
- contains: "us.anthropic.claude-3-sonnet-20240229-v1"
1990
- },
1991
- {
1992
- contains: "au.anthropic.claude-3-sonnet-20240229-v1"
1993
- },
1994
- {
1995
- contains: "apac.anthropic.claude-3-sonnet-20240229-v1"
1996
- },
1997
- {
1998
- contains: "eu.anthropic.claude-3-sonnet-20240229-v1"
1999
- },
2000
- {
2001
- contains: "us-gov.anthropic.claude-3-sonnet-20240229-v1"
2002
- },
2003
- {
2004
- contains: "jp.anthropic.claude-3-sonnet-20240229-v1"
2005
- }
2006
- ]
1916
+ contains: "claude-3-sonnet-20240229"
2007
1917
  },
2008
1918
  prices: {
2009
1919
  input_mtok: 3,
@@ -2017,22 +1927,28 @@ const oe = [
2017
1927
  match: {
2018
1928
  or: [
2019
1929
  {
2020
- contains: "us.anthropic.claude-haiku-4-5-20251001-v1"
1930
+ starts_with: "anthropic.claude-haiku-4-5-20251001"
2021
1931
  },
2022
1932
  {
2023
- contains: "au.anthropic.claude-haiku-4-5-20251001-v1"
1933
+ starts_with: "claude-haiku-4-5-20251001"
2024
1934
  },
2025
1935
  {
2026
- contains: "apac.anthropic.claude-haiku-4-5-20251001-v1"
1936
+ contains: "us.anthropic.claude-haiku-4-5-20251001"
2027
1937
  },
2028
1938
  {
2029
- contains: "eu.anthropic.claude-haiku-4-5-20251001-v1"
1939
+ contains: "au.anthropic.claude-haiku-4-5-20251001"
2030
1940
  },
2031
1941
  {
2032
- contains: "us-gov.anthropic.claude-haiku-4-5-20251001-v1"
1942
+ contains: "apac.anthropic.claude-haiku-4-5-20251001"
2033
1943
  },
2034
1944
  {
2035
- contains: "jp.anthropic.claude-haiku-4-5-20251001-v1"
1945
+ contains: "eu.anthropic.claude-haiku-4-5-20251001"
1946
+ },
1947
+ {
1948
+ contains: "us-gov.anthropic.claude-haiku-4-5-20251001"
1949
+ },
1950
+ {
1951
+ contains: "jp.anthropic.claude-haiku-4-5-20251001"
2036
1952
  }
2037
1953
  ]
2038
1954
  },
@@ -2048,22 +1964,28 @@ const oe = [
2048
1964
  match: {
2049
1965
  or: [
2050
1966
  {
2051
- contains: "us.anthropic.claude-opus-4-1-20250805-v1"
1967
+ starts_with: "anthropic.claude-opus-4-1-20250805"
1968
+ },
1969
+ {
1970
+ starts_with: "claude-opus-4-1-20250805"
1971
+ },
1972
+ {
1973
+ contains: "us.anthropic.claude-opus-4-1-20250805"
2052
1974
  },
2053
1975
  {
2054
- contains: "au.anthropic.claude-opus-4-1-20250805-v1"
1976
+ contains: "au.anthropic.claude-opus-4-1-20250805"
2055
1977
  },
2056
1978
  {
2057
- contains: "apac.anthropic.claude-opus-4-1-20250805-v1"
1979
+ contains: "apac.anthropic.claude-opus-4-1-20250805"
2058
1980
  },
2059
1981
  {
2060
- contains: "eu.anthropic.claude-opus-4-1-20250805-v1"
1982
+ contains: "eu.anthropic.claude-opus-4-1-20250805"
2061
1983
  },
2062
1984
  {
2063
- contains: "us-gov.anthropic.claude-opus-4-1-20250805-v1"
1985
+ contains: "us-gov.anthropic.claude-opus-4-1-20250805"
2064
1986
  },
2065
1987
  {
2066
- contains: "jp.anthropic.claude-opus-4-1-20250805-v1"
1988
+ contains: "jp.anthropic.claude-opus-4-1-20250805"
2067
1989
  }
2068
1990
  ]
2069
1991
  },
@@ -2079,22 +2001,28 @@ const oe = [
2079
2001
  match: {
2080
2002
  or: [
2081
2003
  {
2082
- contains: "us.anthropic.claude-opus-4-20250514-v1"
2004
+ starts_with: "anthropic.claude-opus-4-20250514"
2083
2005
  },
2084
2006
  {
2085
- contains: "au.anthropic.claude-opus-4-20250514-v1"
2007
+ starts_with: "claude-opus-4-20250514"
2086
2008
  },
2087
2009
  {
2088
- contains: "apac.anthropic.claude-opus-4-20250514-v1"
2010
+ contains: "us.anthropic.claude-opus-4-20250514"
2089
2011
  },
2090
2012
  {
2091
- contains: "eu.anthropic.claude-opus-4-20250514-v1"
2013
+ contains: "au.anthropic.claude-opus-4-20250514"
2092
2014
  },
2093
2015
  {
2094
- contains: "us-gov.anthropic.claude-opus-4-20250514-v1"
2016
+ contains: "apac.anthropic.claude-opus-4-20250514"
2095
2017
  },
2096
2018
  {
2097
- contains: "jp.anthropic.claude-opus-4-20250514-v1"
2019
+ contains: "eu.anthropic.claude-opus-4-20250514"
2020
+ },
2021
+ {
2022
+ contains: "us-gov.anthropic.claude-opus-4-20250514"
2023
+ },
2024
+ {
2025
+ contains: "jp.anthropic.claude-opus-4-20250514"
2098
2026
  }
2099
2027
  ]
2100
2028
  },
@@ -2109,6 +2037,12 @@ const oe = [
2109
2037
  id: "regional.anthropic.claude-opus-4-5-v1:0",
2110
2038
  match: {
2111
2039
  or: [
2040
+ {
2041
+ starts_with: "anthropic.claude-opus-4-5"
2042
+ },
2043
+ {
2044
+ starts_with: "claude-opus-4-5"
2045
+ },
2112
2046
  {
2113
2047
  contains: "us.anthropic.claude-opus-4-5"
2114
2048
  },
@@ -2140,6 +2074,12 @@ const oe = [
2140
2074
  id: "regional.anthropic.claude-opus-4-6-v1:0",
2141
2075
  match: {
2142
2076
  or: [
2077
+ {
2078
+ starts_with: "anthropic.claude-opus-4-6"
2079
+ },
2080
+ {
2081
+ starts_with: "claude-opus-4-6"
2082
+ },
2143
2083
  {
2144
2084
  contains: "us.anthropic.claude-opus-4-6"
2145
2085
  },
@@ -2204,22 +2144,28 @@ const oe = [
2204
2144
  match: {
2205
2145
  or: [
2206
2146
  {
2207
- contains: "us.anthropic.claude-sonnet-4-20250514-v1"
2147
+ starts_with: "anthropic.claude-sonnet-4-20250514"
2148
+ },
2149
+ {
2150
+ starts_with: "claude-sonnet-4-20250514"
2208
2151
  },
2209
2152
  {
2210
- contains: "au.anthropic.claude-sonnet-4-20250514-v1"
2153
+ contains: "us.anthropic.claude-sonnet-4-20250514"
2211
2154
  },
2212
2155
  {
2213
- contains: "apac.anthropic.claude-sonnet-4-20250514-v1"
2156
+ contains: "au.anthropic.claude-sonnet-4-20250514"
2214
2157
  },
2215
2158
  {
2216
- contains: "eu.anthropic.claude-sonnet-4-20250514-v1"
2159
+ contains: "apac.anthropic.claude-sonnet-4-20250514"
2217
2160
  },
2218
2161
  {
2219
- contains: "us-gov.anthropic.claude-sonnet-4-20250514-v1"
2162
+ contains: "eu.anthropic.claude-sonnet-4-20250514"
2220
2163
  },
2221
2164
  {
2222
- contains: "jp.anthropic.claude-sonnet-4-20250514-v1"
2165
+ contains: "us-gov.anthropic.claude-sonnet-4-20250514"
2166
+ },
2167
+ {
2168
+ contains: "jp.anthropic.claude-sonnet-4-20250514"
2223
2169
  }
2224
2170
  ]
2225
2171
  },
@@ -2235,22 +2181,28 @@ const oe = [
2235
2181
  match: {
2236
2182
  or: [
2237
2183
  {
2238
- contains: "us.anthropic.claude-sonnet-4-5-20250929-v1"
2184
+ starts_with: "anthropic.claude-sonnet-4-5-20250929"
2185
+ },
2186
+ {
2187
+ starts_with: "claude-sonnet-4-5-20250929"
2239
2188
  },
2240
2189
  {
2241
- contains: "au.anthropic.claude-sonnet-4-5-20250929-v1"
2190
+ contains: "us.anthropic.claude-sonnet-4-5-20250929"
2242
2191
  },
2243
2192
  {
2244
- contains: "apac.anthropic.claude-sonnet-4-5-20250929-v1"
2193
+ contains: "au.anthropic.claude-sonnet-4-5-20250929"
2245
2194
  },
2246
2195
  {
2247
- contains: "eu.anthropic.claude-sonnet-4-5-20250929-v1"
2196
+ contains: "apac.anthropic.claude-sonnet-4-5-20250929"
2248
2197
  },
2249
2198
  {
2250
- contains: "us-gov.anthropic.claude-sonnet-4-5-20250929-v1"
2199
+ contains: "eu.anthropic.claude-sonnet-4-5-20250929"
2251
2200
  },
2252
2201
  {
2253
- contains: "jp.anthropic.claude-sonnet-4-5-20250929-v1"
2202
+ contains: "us-gov.anthropic.claude-sonnet-4-5-20250929"
2203
+ },
2204
+ {
2205
+ contains: "jp.anthropic.claude-sonnet-4-5-20250929"
2254
2206
  }
2255
2207
  ]
2256
2208
  },
@@ -2265,6 +2217,12 @@ const oe = [
2265
2217
  id: "regional.anthropic.claude-sonnet-4-6-v1:0",
2266
2218
  match: {
2267
2219
  or: [
2220
+ {
2221
+ starts_with: "anthropic.claude-sonnet-4-6"
2222
+ },
2223
+ {
2224
+ starts_with: "claude-sonnet-4-6"
2225
+ },
2268
2226
  {
2269
2227
  contains: "us.anthropic.claude-sonnet-4-6"
2270
2228
  },
@@ -4058,11 +4016,42 @@ Compared to other leading proprietary and open-weights models Command A delivers
4058
4016
  }
4059
4017
  },
4060
4018
  {
4061
- id: "gemini-3.1-pro-preview",
4062
- name: "Gemini 3.1 Pro Preview",
4063
- description: "The latest performance, intelligence, and usability improvements to the best model family in the world for multimodal understanding, agentic capabilities, and vibe-coding.",
4019
+ id: "gemini-3.1-flash-image-preview",
4020
+ name: "Gemini 3.1 Flash Image Preview",
4021
+ description: "Google's latest image generation model (Nano Banana 2) optimized for fast, high-quality image generation. Supports multiple output resolutions from 512px to 4K, with text and thinking output priced separately from image output tokens.",
4064
4022
  match: {
4065
- starts_with: "gemini-3.1-pro-preview"
4023
+ starts_with: "gemini-3.1-flash-image-preview"
4024
+ },
4025
+ context_window: 1e6,
4026
+ price_comments: "See https://ai.google.dev/gemini-api/docs/pricing. Image output is priced at $60 per 1M tokens. Preview model - pricing may change.",
4027
+ prices: {
4028
+ input_mtok: 0.5,
4029
+ output_mtok: 60
4030
+ }
4031
+ },
4032
+ {
4033
+ id: "gemini-3.1-flash-lite-preview",
4034
+ name: "Gemini 3.1 Flash Lite Preview",
4035
+ description: "Google's fastest and most cost-efficient Gemini 3 series model, built for intelligence at scale. Optimized for high-volume, low-latency applications while maintaining strong multimodal capabilities.",
4036
+ match: {
4037
+ starts_with: "gemini-3.1-flash-lite-preview"
4038
+ },
4039
+ context_window: 1e6,
4040
+ price_comments: "See https://ai.google.dev/gemini-api/docs/pricing. Preview model - pricing may change before becoming stable.",
4041
+ prices: {
4042
+ input_mtok: 0.25,
4043
+ cache_read_mtok: 0.025,
4044
+ output_mtok: 1.5,
4045
+ input_audio_mtok: 0.5,
4046
+ cache_audio_read_mtok: 0.05
4047
+ }
4048
+ },
4049
+ {
4050
+ id: "gemini-3.1-pro-preview",
4051
+ name: "Gemini 3.1 Pro Preview",
4052
+ description: "The latest performance, intelligence, and usability improvements to the best model family in the world for multimodal understanding, agentic capabilities, and vibe-coding.",
4053
+ match: {
4054
+ starts_with: "gemini-3.1-pro-preview"
4066
4055
  },
4067
4056
  prices: {
4068
4057
  input_mtok: {
@@ -4702,42 +4691,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
4702
4691
  }
4703
4692
  ],
4704
4693
  models: [
4705
- {
4706
- id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
4707
- name: "Qwen3-235B-A22B-Instruct-2507",
4708
- match: {
4709
- or: [
4710
- {
4711
- equals: "qwen/qwen3-235b-a22b-instruct-2507"
4712
- },
4713
- {
4714
- equals: "qwen/qwen3-235b-a22b-instruct-2507-fast"
4715
- }
4716
- ]
4717
- },
4718
- prices: {
4719
- input_mtok: 0.6,
4720
- output_mtok: 1.2
4721
- }
4722
- },
4723
- {
4724
- id: "Qwen/Qwen3-32B",
4725
- name: "Qwen3-32B",
4726
- match: {
4727
- or: [
4728
- {
4729
- equals: "qwen/qwen3-32b"
4730
- },
4731
- {
4732
- equals: "qwen/qwen3-32b-fast"
4733
- }
4734
- ]
4735
- },
4736
- prices: {
4737
- input_mtok: 0.4,
4738
- output_mtok: 0.8
4739
- }
4740
- },
4741
4694
  {
4742
4695
  id: "meta-llama/Llama-3.1-8B-Instruct",
4743
4696
  name: "Llama-3.1-8B-Instruct",
@@ -4755,42 +4708,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
4755
4708
  input_mtok: 0.1,
4756
4709
  output_mtok: 0.1
4757
4710
  }
4758
- },
4759
- {
4760
- id: "meta-llama/Llama-3.3-70B-Instruct",
4761
- name: "Llama-3.3-70B-Instruct",
4762
- match: {
4763
- or: [
4764
- {
4765
- equals: "meta-llama/llama-3.3-70b-instruct"
4766
- },
4767
- {
4768
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
4769
- }
4770
- ]
4771
- },
4772
- prices: {
4773
- input_mtok: 0.85,
4774
- output_mtok: 1.2
4775
- }
4776
- },
4777
- {
4778
- id: "openai/gpt-oss-120b",
4779
- name: "gpt-oss-120b",
4780
- match: {
4781
- or: [
4782
- {
4783
- equals: "openai/gpt-oss-120b"
4784
- },
4785
- {
4786
- equals: "openai/gpt-oss-120b-fast"
4787
- }
4788
- ]
4789
- },
4790
- prices: {
4791
- input_mtok: 0.25,
4792
- output_mtok: 0.69
4793
- }
4794
4711
  }
4795
4712
  ]
4796
4713
  },
@@ -4844,132 +4761,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
4844
4761
  }
4845
4762
  ],
4846
4763
  models: [
4847
- {
4848
- id: "Qwen/Qwen2.5-VL-32B-Instruct",
4849
- name: "Qwen2.5-VL-32B-Instruct",
4850
- match: {
4851
- or: [
4852
- {
4853
- equals: "qwen/qwen2.5-vl-32b-instruct"
4854
- },
4855
- {
4856
- equals: "qwen/qwen2.5-vl-32b-instruct-fast"
4857
- }
4858
- ]
4859
- },
4860
- context_window: 128e3,
4861
- prices: {
4862
- input_mtok: 0.22,
4863
- output_mtok: 0.88
4864
- }
4865
- },
4866
- {
4867
- id: "Qwen/Qwen3-235B-A22B",
4868
- name: "Qwen3-235B-A22B",
4869
- match: {
4870
- or: [
4871
- {
4872
- equals: "qwen/qwen3-235b-a22b"
4873
- },
4874
- {
4875
- equals: "qwen/qwen3-235b-a22b-fast"
4876
- },
4877
- {
4878
- equals: "qwen/qwen3-235b-a22b-instruct-2507"
4879
- },
4880
- {
4881
- equals: "qwen/qwen3-235b-a22b-instruct-2507-fast"
4882
- },
4883
- {
4884
- equals: "qwen/qwen3-235b-a22b-thinking-2507"
4885
- },
4886
- {
4887
- equals: "qwen/qwen3-235b-a22b-thinking-2507-fast"
4888
- }
4889
- ]
4890
- },
4891
- context_window: 131072,
4892
- prices: {
4893
- input_mtok: 0.22,
4894
- output_mtok: 0.88
4895
- }
4896
- },
4897
- {
4898
- id: "Qwen/Qwen3-30B-A3B",
4899
- name: "Qwen3-30B-A3B",
4900
- match: {
4901
- or: [
4902
- {
4903
- equals: "qwen/qwen3-30b-a3b"
4904
- },
4905
- {
4906
- equals: "qwen/qwen3-30b-a3b-fast"
4907
- }
4908
- ]
4909
- },
4910
- context_window: 131072,
4911
- prices: {
4912
- input_mtok: 0.15,
4913
- output_mtok: 0.6
4914
- }
4915
- },
4916
- {
4917
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
4918
- name: "Qwen3-Coder-480B-A35B-Instruct",
4919
- match: {
4920
- or: [
4921
- {
4922
- equals: "qwen/qwen3-coder-480b-a35b-instruct"
4923
- },
4924
- {
4925
- equals: "qwen/qwen3-coder-480b-a35b-instruct-fast"
4926
- }
4927
- ]
4928
- },
4929
- context_window: 262144,
4930
- prices: {
4931
- input_mtok: 0.45,
4932
- output_mtok: 1.8
4933
- }
4934
- },
4935
- {
4936
- id: "deepseek-ai/DeepSeek-R1-0528",
4937
- name: "DeepSeek-R1-0528",
4938
- match: {
4939
- or: [
4940
- {
4941
- equals: "deepseek-ai/deepseek-r1-0528"
4942
- },
4943
- {
4944
- equals: "deepseek-ai/deepseek-r1-0528-fast"
4945
- }
4946
- ]
4947
- },
4948
- context_window: 163840,
4949
- prices: {
4950
- input_mtok: 3,
4951
- output_mtok: 8
4952
- }
4953
- },
4954
- {
4955
- id: "deepseek-ai/DeepSeek-V3-0324",
4956
- name: "DeepSeek-V3-0324",
4957
- match: {
4958
- or: [
4959
- {
4960
- equals: "deepseek-ai/deepseek-v3-0324"
4961
- },
4962
- {
4963
- equals: "deepseek-ai/deepseek-v3-0324-fast"
4964
- }
4965
- ]
4966
- },
4967
- context_window: 163840,
4968
- prices: {
4969
- input_mtok: 0.9,
4970
- output_mtok: 0.9
4971
- }
4972
- },
4973
4764
  {
4974
4765
  id: "meta-llama/Llama-3.3-70B-Instruct",
4975
4766
  name: "Llama-3.3-70B-Instruct",
@@ -5009,22 +4800,22 @@ Compared to other leading proprietary and open-weights models Command A delivers
5009
4800
  }
5010
4801
  },
5011
4802
  {
5012
- id: "zai-org/GLM-4.5",
5013
- name: "GLM-4.5",
4803
+ id: "openai/gpt-oss-20b",
4804
+ name: "gpt-oss-20b",
5014
4805
  match: {
5015
4806
  or: [
5016
4807
  {
5017
- equals: "zai-org/glm-4.5"
4808
+ equals: "openai/gpt-oss-20b"
5018
4809
  },
5019
4810
  {
5020
- equals: "zai-org/glm-4.5-fast"
4811
+ equals: "openai/gpt-oss-20b-fast"
5021
4812
  }
5022
4813
  ]
5023
4814
  },
5024
4815
  context_window: 131072,
5025
4816
  prices: {
5026
- input_mtok: 0.55,
5027
- output_mtok: 2.19
4817
+ input_mtok: 0.05,
4818
+ output_mtok: 0.2
5028
4819
  }
5029
4820
  }
5030
4821
  ]
@@ -5117,6 +4908,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
5117
4908
  output_mtok: 0.79
5118
4909
  }
5119
4910
  },
4911
+ {
4912
+ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
4913
+ name: "Llama-4-Scout-17B-16E-Instruct",
4914
+ match: {
4915
+ or: [
4916
+ {
4917
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct"
4918
+ },
4919
+ {
4920
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct-fast"
4921
+ }
4922
+ ]
4923
+ },
4924
+ context_window: 131072,
4925
+ prices: {
4926
+ input_mtok: 0.11,
4927
+ output_mtok: 0.34
4928
+ }
4929
+ },
5120
4930
  {
5121
4931
  id: "openai/gpt-oss-120b",
5122
4932
  name: "gpt-oss-120b",
@@ -5135,6 +4945,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
5135
4945
  input_mtok: 0.15,
5136
4946
  output_mtok: 0.75
5137
4947
  }
4948
+ },
4949
+ {
4950
+ id: "openai/gpt-oss-20b",
4951
+ name: "gpt-oss-20b",
4952
+ match: {
4953
+ or: [
4954
+ {
4955
+ equals: "openai/gpt-oss-20b"
4956
+ },
4957
+ {
4958
+ equals: "openai/gpt-oss-20b-fast"
4959
+ }
4960
+ ]
4961
+ },
4962
+ context_window: 131072,
4963
+ prices: {
4964
+ input_mtok: 0.1,
4965
+ output_mtok: 0.5
4966
+ }
5138
4967
  }
5139
4968
  ]
5140
4969
  },
@@ -5188,63 +5017,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
5188
5017
  }
5189
5018
  ],
5190
5019
  models: [
5191
- {
5192
- id: "Qwen/QwQ-32B",
5193
- name: "QwQ-32B",
5194
- match: {
5195
- or: [
5196
- {
5197
- equals: "qwen/qwq-32b"
5198
- },
5199
- {
5200
- equals: "qwen/qwq-32b-fast"
5201
- }
5202
- ]
5203
- },
5204
- context_window: 131072,
5205
- prices: {
5206
- input_mtok: 0.4,
5207
- output_mtok: 0.4
5208
- }
5209
- },
5210
- {
5211
- id: "Qwen/Qwen2.5-72B-Instruct",
5212
- name: "Qwen2.5-72B-Instruct",
5213
- match: {
5214
- or: [
5215
- {
5216
- equals: "qwen/qwen2.5-72b-instruct"
5217
- },
5218
- {
5219
- equals: "qwen/qwen2.5-72b-instruct-fast"
5220
- }
5221
- ]
5222
- },
5223
- context_window: 131072,
5224
- prices: {
5225
- input_mtok: 0.4,
5226
- output_mtok: 0.4
5227
- }
5228
- },
5229
- {
5230
- id: "Qwen/Qwen2.5-Coder-32B-Instruct",
5231
- name: "Qwen2.5-Coder-32B-Instruct",
5232
- match: {
5233
- or: [
5234
- {
5235
- equals: "qwen/qwen2.5-coder-32b-instruct"
5236
- },
5237
- {
5238
- equals: "qwen/qwen2.5-coder-32b-instruct-fast"
5239
- }
5240
- ]
5241
- },
5242
- context_window: 32768,
5243
- prices: {
5244
- input_mtok: 0.2,
5245
- output_mtok: 0.2
5246
- }
5247
- },
5248
5020
  {
5249
5021
  id: "Qwen/Qwen2.5-VL-72B-Instruct",
5250
5022
  name: "Qwen2.5-VL-72B-Instruct",
@@ -5416,44 +5188,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
5416
5188
  output_mtok: 1.25
5417
5189
  }
5418
5190
  },
5419
- {
5420
- id: "meta-llama/Llama-3.1-8B-Instruct",
5421
- name: "Llama-3.1-8B-Instruct",
5422
- match: {
5423
- or: [
5424
- {
5425
- equals: "meta-llama/llama-3.1-8b-instruct"
5426
- },
5427
- {
5428
- equals: "meta-llama/llama-3.1-8b-instruct-fast"
5429
- }
5430
- ]
5431
- },
5432
- context_window: 131072,
5433
- prices: {
5434
- input_mtok: 0.1,
5435
- output_mtok: 0.1
5436
- }
5437
- },
5438
- {
5439
- id: "meta-llama/Llama-3.2-3B-Instruct",
5440
- name: "Llama-3.2-3B-Instruct",
5441
- match: {
5442
- or: [
5443
- {
5444
- equals: "meta-llama/llama-3.2-3b-instruct"
5445
- },
5446
- {
5447
- equals: "meta-llama/llama-3.2-3b-instruct-fast"
5448
- }
5449
- ]
5450
- },
5451
- context_window: 131072,
5452
- prices: {
5453
- input_mtok: 0.1,
5454
- output_mtok: 0.1
5455
- }
5456
- },
5457
5191
  {
5458
5192
  id: "meta-llama/Llama-3.3-70B-Instruct",
5459
5193
  name: "Llama-3.3-70B-Instruct",
@@ -5474,41 +5208,41 @@ Compared to other leading proprietary and open-weights models Command A delivers
5474
5208
  }
5475
5209
  },
5476
5210
  {
5477
- id: "meta-llama/Meta-Llama-3-70B-Instruct",
5478
- name: "Meta-Llama-3-70B-Instruct",
5211
+ id: "openai/gpt-oss-120b",
5212
+ name: "gpt-oss-120b",
5479
5213
  match: {
5480
5214
  or: [
5481
5215
  {
5482
- equals: "meta-llama/meta-llama-3-70b-instruct"
5216
+ equals: "openai/gpt-oss-120b"
5483
5217
  },
5484
5218
  {
5485
- equals: "meta-llama/meta-llama-3-70b-instruct-fast"
5219
+ equals: "openai/gpt-oss-120b-fast"
5486
5220
  }
5487
5221
  ]
5488
5222
  },
5489
- context_window: 8192,
5223
+ context_window: 131072,
5490
5224
  prices: {
5491
- input_mtok: 0.4,
5492
- output_mtok: 0.4
5225
+ input_mtok: 0.3,
5226
+ output_mtok: 0.3
5493
5227
  }
5494
5228
  },
5495
5229
  {
5496
- id: "openai/gpt-oss-120b",
5497
- name: "gpt-oss-120b",
5230
+ id: "openai/gpt-oss-20b",
5231
+ name: "gpt-oss-20b",
5498
5232
  match: {
5499
5233
  or: [
5500
5234
  {
5501
- equals: "openai/gpt-oss-120b"
5235
+ equals: "openai/gpt-oss-20b"
5502
5236
  },
5503
5237
  {
5504
- equals: "openai/gpt-oss-120b-fast"
5238
+ equals: "openai/gpt-oss-20b-fast"
5505
5239
  }
5506
5240
  ]
5507
5241
  },
5508
5242
  context_window: 131072,
5509
5243
  prices: {
5510
- input_mtok: 0.3,
5511
- output_mtok: 0.3
5244
+ input_mtok: 0.1,
5245
+ output_mtok: 0.1
5512
5246
  }
5513
5247
  }
5514
5248
  ]
@@ -6124,8 +5858,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6124
5858
  },
6125
5859
  context_window: 1e6,
6126
5860
  prices: {
6127
- input_mtok: 0.44,
6128
- output_mtok: 1.76
5861
+ input_mtok: 0.55,
5862
+ output_mtok: 2.2
6129
5863
  }
6130
5864
  },
6131
5865
  {
@@ -6138,6 +5872,18 @@ Compared to other leading proprietary and open-weights models Command A delivers
6138
5872
  },
6139
5873
  {
6140
5874
  equals: "minimaxai/minimax-m2-fast"
5875
+ },
5876
+ {
5877
+ equals: "minimaxai/minimax-m2.1"
5878
+ },
5879
+ {
5880
+ equals: "minimaxai/minimax-m2.1-fast"
5881
+ },
5882
+ {
5883
+ equals: "minimaxai/minimax-m2.5"
5884
+ },
5885
+ {
5886
+ equals: "minimaxai/minimax-m2.5-fast"
6141
5887
  }
6142
5888
  ]
6143
5889
  },
@@ -6181,8 +5927,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6181
5927
  },
6182
5928
  context_window: 32e3,
6183
5929
  prices: {
6184
- input_mtok: 0.304,
6185
- output_mtok: 0.32
5930
+ input_mtok: 0.38,
5931
+ output_mtok: 0.4
6186
5932
  }
6187
5933
  },
6188
5934
  {
@@ -6200,8 +5946,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6200
5946
  },
6201
5947
  context_window: 40960,
6202
5948
  prices: {
6203
- input_mtok: 0.16,
6204
- output_mtok: 0.64
5949
+ input_mtok: 0.2,
5950
+ output_mtok: 0.8
6205
5951
  }
6206
5952
  },
6207
5953
  {
@@ -6219,8 +5965,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6219
5965
  },
6220
5966
  context_window: 131072,
6221
5967
  prices: {
6222
- input_mtok: 0.072,
6223
- output_mtok: 0.464
5968
+ input_mtok: 0.09,
5969
+ output_mtok: 0.58
6224
5970
  }
6225
5971
  },
6226
5972
  {
@@ -6238,8 +5984,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6238
5984
  },
6239
5985
  context_window: 131072,
6240
5986
  prices: {
6241
- input_mtok: 0.24,
6242
- output_mtok: 2.4
5987
+ input_mtok: 0.3,
5988
+ output_mtok: 3
6243
5989
  }
6244
5990
  },
6245
5991
  {
@@ -6257,8 +6003,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6257
6003
  },
6258
6004
  context_window: 40960,
6259
6005
  prices: {
6260
- input_mtok: 0.072,
6261
- output_mtok: 0.36
6006
+ input_mtok: 0.09,
6007
+ output_mtok: 0.45
6262
6008
  }
6263
6009
  },
6264
6010
  {
@@ -6276,8 +6022,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6276
6022
  },
6277
6023
  context_window: 40960,
6278
6024
  prices: {
6279
- input_mtok: 0.08,
6280
- output_mtok: 0.36
6025
+ input_mtok: 0.1,
6026
+ output_mtok: 0.45
6281
6027
  }
6282
6028
  },
6283
6029
  {
@@ -6299,6 +6045,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
6299
6045
  output_mtok: 1.3
6300
6046
  }
6301
6047
  },
6048
+ {
6049
+ id: "Qwen/Qwen3-Coder-Next",
6050
+ name: "Qwen3-Coder-Next",
6051
+ match: {
6052
+ or: [
6053
+ {
6054
+ equals: "qwen/qwen3-coder-next"
6055
+ },
6056
+ {
6057
+ equals: "qwen/qwen3-coder-next-fast"
6058
+ }
6059
+ ]
6060
+ },
6061
+ context_window: 262144,
6062
+ prices: {
6063
+ input_mtok: 0.2,
6064
+ output_mtok: 1.5
6065
+ }
6066
+ },
6302
6067
  {
6303
6068
  id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
6304
6069
  name: "Qwen3-Next-80B-A3B-Instruct",
@@ -6314,8 +6079,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6314
6079
  },
6315
6080
  context_window: 131072,
6316
6081
  prices: {
6317
- input_mtok: 0.12,
6318
- output_mtok: 1.2
6082
+ input_mtok: 0.15,
6083
+ output_mtok: 1.5
6319
6084
  }
6320
6085
  },
6321
6086
  {
@@ -6333,8 +6098,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6333
6098
  },
6334
6099
  context_window: 131072,
6335
6100
  prices: {
6336
- input_mtok: 0.12,
6337
- output_mtok: 1.2
6101
+ input_mtok: 0.15,
6102
+ output_mtok: 1.5
6338
6103
  }
6339
6104
  },
6340
6105
  {
@@ -6352,8 +6117,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6352
6117
  },
6353
6118
  context_window: 131072,
6354
6119
  prices: {
6355
- input_mtok: 0.24,
6356
- output_mtok: 1.2
6120
+ input_mtok: 0.3,
6121
+ output_mtok: 1.5
6357
6122
  }
6358
6123
  },
6359
6124
  {
@@ -6371,8 +6136,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6371
6136
  },
6372
6137
  context_window: 131072,
6373
6138
  prices: {
6374
- input_mtok: 0.784,
6375
- output_mtok: 3.16
6139
+ input_mtok: 0.98,
6140
+ output_mtok: 3.95
6376
6141
  }
6377
6142
  },
6378
6143
  {
@@ -6390,8 +6155,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6390
6155
  },
6391
6156
  context_window: 131072,
6392
6157
  prices: {
6393
- input_mtok: 0.16,
6394
- output_mtok: 0.56
6158
+ input_mtok: 0.2,
6159
+ output_mtok: 0.7
6395
6160
  }
6396
6161
  },
6397
6162
  {
@@ -6409,8 +6174,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6409
6174
  },
6410
6175
  context_window: 131072,
6411
6176
  prices: {
6412
- input_mtok: 0.16,
6413
- output_mtok: 0.8
6177
+ input_mtok: 0.2,
6178
+ output_mtok: 1
6414
6179
  }
6415
6180
  },
6416
6181
  {
@@ -6428,8 +6193,84 @@ Compared to other leading proprietary and open-weights models Command A delivers
6428
6193
  },
6429
6194
  context_window: 131072,
6430
6195
  prices: {
6431
- input_mtok: 0.064,
6432
- output_mtok: 0.4
6196
+ input_mtok: 0.08,
6197
+ output_mtok: 0.5
6198
+ }
6199
+ },
6200
+ {
6201
+ id: "Qwen/Qwen3.5-122B-A10B",
6202
+ name: "Qwen3.5-122B-A10B",
6203
+ match: {
6204
+ or: [
6205
+ {
6206
+ equals: "qwen/qwen3.5-122b-a10b"
6207
+ },
6208
+ {
6209
+ equals: "qwen/qwen3.5-122b-a10b-fast"
6210
+ }
6211
+ ]
6212
+ },
6213
+ context_window: 262144,
6214
+ prices: {
6215
+ input_mtok: 0.4,
6216
+ output_mtok: 3.2
6217
+ }
6218
+ },
6219
+ {
6220
+ id: "Qwen/Qwen3.5-27B",
6221
+ name: "Qwen3.5-27B",
6222
+ match: {
6223
+ or: [
6224
+ {
6225
+ equals: "qwen/qwen3.5-27b"
6226
+ },
6227
+ {
6228
+ equals: "qwen/qwen3.5-27b-fast"
6229
+ }
6230
+ ]
6231
+ },
6232
+ context_window: 262144,
6233
+ prices: {
6234
+ input_mtok: 0.3,
6235
+ output_mtok: 2.4
6236
+ }
6237
+ },
6238
+ {
6239
+ id: "Qwen/Qwen3.5-35B-A3B",
6240
+ name: "Qwen3.5-35B-A3B",
6241
+ match: {
6242
+ or: [
6243
+ {
6244
+ equals: "qwen/qwen3.5-35b-a3b"
6245
+ },
6246
+ {
6247
+ equals: "qwen/qwen3.5-35b-a3b-fast"
6248
+ }
6249
+ ]
6250
+ },
6251
+ context_window: 262144,
6252
+ prices: {
6253
+ input_mtok: 0.25,
6254
+ output_mtok: 2
6255
+ }
6256
+ },
6257
+ {
6258
+ id: "Qwen/Qwen3.5-397B-A17B",
6259
+ name: "Qwen3.5-397B-A17B",
6260
+ match: {
6261
+ or: [
6262
+ {
6263
+ equals: "qwen/qwen3.5-397b-a17b"
6264
+ },
6265
+ {
6266
+ equals: "qwen/qwen3.5-397b-a17b-fast"
6267
+ }
6268
+ ]
6269
+ },
6270
+ context_window: 262144,
6271
+ prices: {
6272
+ input_mtok: 0.6,
6273
+ output_mtok: 3.6
6433
6274
  }
6434
6275
  },
6435
6276
  {
@@ -6504,8 +6345,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6504
6345
  },
6505
6346
  context_window: 262144,
6506
6347
  prices: {
6507
- input_mtok: 0.098,
6508
- output_mtok: 0.293
6348
+ input_mtok: 0.1,
6349
+ output_mtok: 0.3
6509
6350
  }
6510
6351
  },
6511
6352
  {
@@ -6523,27 +6364,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6523
6364
  },
6524
6365
  context_window: 65535,
6525
6366
  prices: {
6526
- input_mtok: 0.496,
6527
- output_mtok: 0.496
6528
- }
6529
- },
6530
- {
6531
- id: "baichuan-inc/Baichuan-M2-32B",
6532
- name: "Baichuan-M2-32B",
6533
- match: {
6534
- or: [
6535
- {
6536
- equals: "baichuan-inc/baichuan-m2-32b"
6537
- },
6538
- {
6539
- equals: "baichuan-inc/baichuan-m2-32b-fast"
6540
- }
6541
- ]
6542
- },
6543
- context_window: 131072,
6544
- prices: {
6545
- input_mtok: 0.056,
6546
- output_mtok: 0.056
6367
+ input_mtok: 0.62,
6368
+ output_mtok: 0.62
6547
6369
  }
6548
6370
  },
6549
6371
  {
@@ -6561,8 +6383,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6561
6383
  },
6562
6384
  context_window: 12e4,
6563
6385
  prices: {
6564
- input_mtok: 0.056,
6565
- output_mtok: 0.224
6386
+ input_mtok: 0.07,
6387
+ output_mtok: 0.28
6566
6388
  }
6567
6389
  },
6568
6390
  {
@@ -6580,8 +6402,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6580
6402
  },
6581
6403
  context_window: 123e3,
6582
6404
  prices: {
6583
- input_mtok: 0.224,
6584
- output_mtok: 0.88
6405
+ input_mtok: 0.28,
6406
+ output_mtok: 1.1
6585
6407
  }
6586
6408
  },
6587
6409
  {
@@ -6599,8 +6421,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6599
6421
  },
6600
6422
  context_window: 3e4,
6601
6423
  prices: {
6602
- input_mtok: 0.112,
6603
- output_mtok: 0.448
6424
+ input_mtok: 0.14,
6425
+ output_mtok: 0.56
6604
6426
  }
6605
6427
  },
6606
6428
  {
@@ -6618,8 +6440,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6618
6440
  },
6619
6441
  context_window: 123e3,
6620
6442
  prices: {
6621
- input_mtok: 0.336,
6622
- output_mtok: 1
6443
+ input_mtok: 0.42,
6444
+ output_mtok: 1.25
6623
6445
  }
6624
6446
  },
6625
6447
  {
@@ -6637,8 +6459,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6637
6459
  },
6638
6460
  context_window: 16e4,
6639
6461
  prices: {
6640
- input_mtok: 0.56,
6641
- output_mtok: 2
6462
+ input_mtok: 0.7,
6463
+ output_mtok: 2.5
6642
6464
  }
6643
6465
  },
6644
6466
  {
@@ -6662,27 +6484,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6662
6484
  },
6663
6485
  context_window: 64e3,
6664
6486
  prices: {
6665
- input_mtok: 0.56,
6666
- output_mtok: 2
6667
- }
6668
- },
6669
- {
6670
- id: "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",
6671
- name: "DeepSeek-R1-0528-Qwen3-8B",
6672
- match: {
6673
- or: [
6674
- {
6675
- equals: "deepseek-ai/deepseek-r1-0528-qwen3-8b"
6676
- },
6677
- {
6678
- equals: "deepseek-ai/deepseek-r1-0528-qwen3-8b-fast"
6679
- }
6680
- ]
6681
- },
6682
- context_window: 128e3,
6683
- prices: {
6684
- input_mtok: 0.048,
6685
- output_mtok: 0.072
6487
+ input_mtok: 0.7,
6488
+ output_mtok: 2.5
6686
6489
  }
6687
6490
  },
6688
6491
  {
@@ -6700,46 +6503,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6700
6503
  },
6701
6504
  context_window: 8192,
6702
6505
  prices: {
6703
- input_mtok: 0.64,
6704
- output_mtok: 0.64
6705
- }
6706
- },
6707
- {
6708
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
6709
- name: "DeepSeek-R1-Distill-Qwen-14B",
6710
- match: {
6711
- or: [
6712
- {
6713
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b"
6714
- },
6715
- {
6716
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b-fast"
6717
- }
6718
- ]
6719
- },
6720
- context_window: 32768,
6721
- prices: {
6722
- input_mtok: 0.12,
6723
- output_mtok: 0.12
6724
- }
6725
- },
6726
- {
6727
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
6728
- name: "DeepSeek-R1-Distill-Qwen-32B",
6729
- match: {
6730
- or: [
6731
- {
6732
- equals: "deepseek-ai/deepseek-r1-distill-qwen-32b"
6733
- },
6734
- {
6735
- equals: "deepseek-ai/deepseek-r1-distill-qwen-32b-fast"
6736
- }
6737
- ]
6738
- },
6739
- context_window: 64e3,
6740
- prices: {
6741
- input_mtok: 0.24,
6742
- output_mtok: 0.24
6506
+ input_mtok: 0.8,
6507
+ output_mtok: 0.8
6743
6508
  }
6744
6509
  },
6745
6510
  {
@@ -6757,8 +6522,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6757
6522
  },
6758
6523
  context_window: 64e3,
6759
6524
  prices: {
6760
- input_mtok: 0.32,
6761
- output_mtok: 1.04
6525
+ input_mtok: 0.4,
6526
+ output_mtok: 1.3
6762
6527
  }
6763
6528
  },
6764
6529
  {
@@ -6776,8 +6541,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6776
6541
  },
6777
6542
  context_window: 163840,
6778
6543
  prices: {
6779
- input_mtok: 0.216,
6780
- output_mtok: 0.896
6544
+ input_mtok: 0.27,
6545
+ output_mtok: 1.12
6781
6546
  }
6782
6547
  },
6783
6548
  {
@@ -6801,8 +6566,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6801
6566
  },
6802
6567
  context_window: 131072,
6803
6568
  prices: {
6804
- input_mtok: 0.216,
6805
- output_mtok: 0.8
6569
+ input_mtok: 0.27,
6570
+ output_mtok: 1
6806
6571
  }
6807
6572
  },
6808
6573
  {
@@ -6839,8 +6604,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6839
6604
  },
6840
6605
  context_window: 163840,
6841
6606
  prices: {
6842
- input_mtok: 0.216,
6843
- output_mtok: 0.328
6607
+ input_mtok: 0.27,
6608
+ output_mtok: 0.41
6844
6609
  }
6845
6610
  },
6846
6611
  {
@@ -6863,41 +6628,60 @@ Compared to other leading proprietary and open-weights models Command A delivers
6863
6628
  }
6864
6629
  },
6865
6630
  {
6866
- id: "meta-llama/Llama-3.2-3B-Instruct",
6867
- name: "Llama-3.2-3B-Instruct",
6631
+ id: "meta-llama/Llama-3.3-70B-Instruct",
6632
+ name: "Llama-3.3-70B-Instruct",
6868
6633
  match: {
6869
6634
  or: [
6870
6635
  {
6871
- equals: "meta-llama/llama-3.2-3b-instruct"
6636
+ equals: "meta-llama/llama-3.3-70b-instruct"
6872
6637
  },
6873
6638
  {
6874
- equals: "meta-llama/llama-3.2-3b-instruct-fast"
6639
+ equals: "meta-llama/llama-3.3-70b-instruct-fast"
6875
6640
  }
6876
6641
  ]
6877
6642
  },
6878
- context_window: 32768,
6643
+ context_window: 131072,
6879
6644
  prices: {
6880
- input_mtok: 0.024,
6881
- output_mtok: 0.04
6645
+ input_mtok: 0.135,
6646
+ output_mtok: 0.4
6882
6647
  }
6883
6648
  },
6884
6649
  {
6885
- id: "meta-llama/Llama-3.3-70B-Instruct",
6886
- name: "Llama-3.3-70B-Instruct",
6650
+ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
6651
+ name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
6887
6652
  match: {
6888
6653
  or: [
6889
6654
  {
6890
- equals: "meta-llama/llama-3.3-70b-instruct"
6655
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
6891
6656
  },
6892
6657
  {
6893
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
6658
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8-fast"
6659
+ }
6660
+ ]
6661
+ },
6662
+ context_window: 1048576,
6663
+ prices: {
6664
+ input_mtok: 0.27,
6665
+ output_mtok: 0.85
6666
+ }
6667
+ },
6668
+ {
6669
+ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
6670
+ name: "Llama-4-Scout-17B-16E-Instruct",
6671
+ match: {
6672
+ or: [
6673
+ {
6674
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct"
6675
+ },
6676
+ {
6677
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct-fast"
6894
6678
  }
6895
6679
  ]
6896
6680
  },
6897
6681
  context_window: 131072,
6898
6682
  prices: {
6899
- input_mtok: 0.108,
6900
- output_mtok: 0.32
6683
+ input_mtok: 0.18,
6684
+ output_mtok: 0.59
6901
6685
  }
6902
6686
  },
6903
6687
  {
@@ -6934,8 +6718,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6934
6718
  },
6935
6719
  context_window: 8192,
6936
6720
  prices: {
6937
- input_mtok: 0.032,
6938
- output_mtok: 0.032
6721
+ input_mtok: 0.04,
6722
+ output_mtok: 0.04
6939
6723
  }
6940
6724
  },
6941
6725
  {
@@ -6953,8 +6737,27 @@ Compared to other leading proprietary and open-weights models Command A delivers
6953
6737
  },
6954
6738
  context_window: 131072,
6955
6739
  prices: {
6956
- input_mtok: 0.456,
6957
- output_mtok: 1.84
6740
+ input_mtok: 0.57,
6741
+ output_mtok: 2.3
6742
+ }
6743
+ },
6744
+ {
6745
+ id: "moonshotai/Kimi-K2-Instruct-0905",
6746
+ name: "Kimi-K2-Instruct-0905",
6747
+ match: {
6748
+ or: [
6749
+ {
6750
+ equals: "moonshotai/kimi-k2-instruct-0905"
6751
+ },
6752
+ {
6753
+ equals: "moonshotai/kimi-k2-instruct-0905-fast"
6754
+ }
6755
+ ]
6756
+ },
6757
+ context_window: 262144,
6758
+ prices: {
6759
+ input_mtok: 0.6,
6760
+ output_mtok: 2.5
6958
6761
  }
6959
6762
  },
6960
6763
  {
@@ -6972,8 +6775,27 @@ Compared to other leading proprietary and open-weights models Command A delivers
6972
6775
  },
6973
6776
  context_window: 262144,
6974
6777
  prices: {
6975
- input_mtok: 0.48,
6976
- output_mtok: 2
6778
+ input_mtok: 0.6,
6779
+ output_mtok: 2.5
6780
+ }
6781
+ },
6782
+ {
6783
+ id: "moonshotai/Kimi-K2.5",
6784
+ name: "Kimi-K2.5",
6785
+ match: {
6786
+ or: [
6787
+ {
6788
+ equals: "moonshotai/kimi-k2.5"
6789
+ },
6790
+ {
6791
+ equals: "moonshotai/kimi-k2.5-fast"
6792
+ }
6793
+ ]
6794
+ },
6795
+ context_window: 262144,
6796
+ prices: {
6797
+ input_mtok: 0.6,
6798
+ output_mtok: 3
6977
6799
  }
6978
6800
  },
6979
6801
  {
@@ -6990,9 +6812,28 @@ Compared to other leading proprietary and open-weights models Command A delivers
6990
6812
  ]
6991
6813
  },
6992
6814
  context_window: 131072,
6815
+ prices: {
6816
+ input_mtok: 0.05,
6817
+ output_mtok: 0.25
6818
+ }
6819
+ },
6820
+ {
6821
+ id: "openai/gpt-oss-20b",
6822
+ name: "gpt-oss-20b",
6823
+ match: {
6824
+ or: [
6825
+ {
6826
+ equals: "openai/gpt-oss-20b"
6827
+ },
6828
+ {
6829
+ equals: "openai/gpt-oss-20b-fast"
6830
+ }
6831
+ ]
6832
+ },
6833
+ context_window: 131072,
6993
6834
  prices: {
6994
6835
  input_mtok: 0.04,
6995
- output_mtok: 0.2
6836
+ output_mtok: 0.15
6996
6837
  }
6997
6838
  },
6998
6839
  {
@@ -7015,22 +6856,22 @@ Compared to other leading proprietary and open-weights models Command A delivers
7015
6856
  }
7016
6857
  },
7017
6858
  {
7018
- id: "zai-org/GLM-4.1V-9B-Thinking",
7019
- name: "GLM-4.1V-9B-Thinking",
6859
+ id: "zai-org/GLM-4-32B-0414",
6860
+ name: "GLM-4-32B-0414",
7020
6861
  match: {
7021
6862
  or: [
7022
6863
  {
7023
- equals: "zai-org/glm-4.1v-9b-thinking"
6864
+ equals: "zai-org/glm-4-32b-0414"
7024
6865
  },
7025
6866
  {
7026
- equals: "zai-org/glm-4.1v-9b-thinking-fast"
6867
+ equals: "zai-org/glm-4-32b-0414-fast"
7027
6868
  }
7028
6869
  ]
7029
6870
  },
7030
- context_window: 65536,
6871
+ context_window: 32e3,
7031
6872
  prices: {
7032
- input_mtok: 0.028,
7033
- output_mtok: 0.1104
6873
+ input_mtok: 0.55,
6874
+ output_mtok: 1.66
7034
6875
  }
7035
6876
  },
7036
6877
  {
@@ -7048,8 +6889,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
7048
6889
  },
7049
6890
  context_window: 131072,
7050
6891
  prices: {
7051
- input_mtok: 0.48,
7052
- output_mtok: 1.76
6892
+ input_mtok: 0.6,
6893
+ output_mtok: 2.2
7053
6894
  }
7054
6895
  },
7055
6896
  {
@@ -7067,8 +6908,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
7067
6908
  },
7068
6909
  context_window: 131072,
7069
6910
  prices: {
7070
- input_mtok: 0.104,
7071
- output_mtok: 0.68
6911
+ input_mtok: 0.13,
6912
+ output_mtok: 0.85
7072
6913
  }
7073
6914
  },
7074
6915
  {
@@ -7086,8 +6927,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
7086
6927
  },
7087
6928
  context_window: 65536,
7088
6929
  prices: {
7089
- input_mtok: 0.48,
7090
- output_mtok: 1.44
6930
+ input_mtok: 0.6,
6931
+ output_mtok: 1.8
7091
6932
  }
7092
6933
  },
7093
6934
  {
@@ -7105,8 +6946,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
7105
6946
  },
7106
6947
  context_window: 204800,
7107
6948
  prices: {
7108
- input_mtok: 0.44,
7109
- output_mtok: 1.76
6949
+ input_mtok: 0.55,
6950
+ output_mtok: 2.2
7110
6951
  }
7111
6952
  },
7112
6953
  {
@@ -7127,6 +6968,63 @@ Compared to other leading proprietary and open-weights models Command A delivers
7127
6968
  input_mtok: 0.3,
7128
6969
  output_mtok: 0.9
7129
6970
  }
6971
+ },
6972
+ {
6973
+ id: "zai-org/GLM-4.7",
6974
+ name: "GLM-4.7",
6975
+ match: {
6976
+ or: [
6977
+ {
6978
+ equals: "zai-org/glm-4.7"
6979
+ },
6980
+ {
6981
+ equals: "zai-org/glm-4.7-fast"
6982
+ }
6983
+ ]
6984
+ },
6985
+ context_window: 204800,
6986
+ prices: {
6987
+ input_mtok: 0.6,
6988
+ output_mtok: 2.2
6989
+ }
6990
+ },
6991
+ {
6992
+ id: "zai-org/GLM-4.7-Flash",
6993
+ name: "GLM-4.7-Flash",
6994
+ match: {
6995
+ or: [
6996
+ {
6997
+ equals: "zai-org/glm-4.7-flash"
6998
+ },
6999
+ {
7000
+ equals: "zai-org/glm-4.7-flash-fast"
7001
+ }
7002
+ ]
7003
+ },
7004
+ context_window: 2e5,
7005
+ prices: {
7006
+ input_mtok: 0.07,
7007
+ output_mtok: 0.4
7008
+ }
7009
+ },
7010
+ {
7011
+ id: "zai-org/GLM-5",
7012
+ name: "GLM-5",
7013
+ match: {
7014
+ or: [
7015
+ {
7016
+ equals: "zai-org/glm-5"
7017
+ },
7018
+ {
7019
+ equals: "zai-org/glm-5-fast"
7020
+ }
7021
+ ]
7022
+ },
7023
+ context_window: 202800,
7024
+ prices: {
7025
+ input_mtok: 1,
7026
+ output_mtok: 3.2
7027
+ }
7130
7028
  }
7131
7029
  ]
7132
7030
  },
@@ -7433,25 +7331,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
7433
7331
  output_mtok: 0.1
7434
7332
  }
7435
7333
  },
7436
- {
7437
- id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
7438
- name: "DeepSeek-R1-Distill-Qwen-14B",
7439
- match: {
7440
- or: [
7441
- {
7442
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b"
7443
- },
7444
- {
7445
- equals: "deepseek-ai/deepseek-r1-distill-qwen-14b-fast"
7446
- }
7447
- ]
7448
- },
7449
- context_window: 131072,
7450
- prices: {
7451
- input_mtok: 0.2,
7452
- output_mtok: 0.2
7453
- }
7454
- },
7455
7334
  {
7456
7335
  id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
7457
7336
  name: "DeepSeek-R1-Distill-Qwen-32B",
@@ -7528,6 +7407,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
7528
7407
  output_mtok: 0.4
7529
7408
  }
7530
7409
  },
7410
+ {
7411
+ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
7412
+ name: "Llama-4-Scout-17B-16E-Instruct",
7413
+ match: {
7414
+ or: [
7415
+ {
7416
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct"
7417
+ },
7418
+ {
7419
+ equals: "meta-llama/llama-4-scout-17b-16e-instruct-fast"
7420
+ }
7421
+ ]
7422
+ },
7423
+ context_window: 89e4,
7424
+ prices: {
7425
+ input_mtok: 0.09,
7426
+ output_mtok: 0.29
7427
+ }
7428
+ },
7531
7429
  {
7532
7430
  id: "openai/gpt-oss-120b",
7533
7431
  name: "gpt-oss-120b",
@@ -7546,15 +7444,34 @@ Compared to other leading proprietary and open-weights models Command A delivers
7546
7444
  input_mtok: 0.1,
7547
7445
  output_mtok: 0.4
7548
7446
  }
7549
- }
7550
- ]
7551
- },
7552
- {
7553
- id: "huggingface_ovhcloud",
7554
- name: "HuggingFace (ovhcloud)",
7555
- pricing_urls: ["https://router.huggingface.co/v1/models", "https://huggingface.co/inference/models"],
7556
- api_pattern: "https://router\\.huggingface\\.co/ovhcloud",
7557
- provider_match: {
7447
+ },
7448
+ {
7449
+ id: "openai/gpt-oss-20b",
7450
+ name: "gpt-oss-20b",
7451
+ match: {
7452
+ or: [
7453
+ {
7454
+ equals: "openai/gpt-oss-20b"
7455
+ },
7456
+ {
7457
+ equals: "openai/gpt-oss-20b-fast"
7458
+ }
7459
+ ]
7460
+ },
7461
+ context_window: 131072,
7462
+ prices: {
7463
+ input_mtok: 0.05,
7464
+ output_mtok: 0.2
7465
+ }
7466
+ }
7467
+ ]
7468
+ },
7469
+ {
7470
+ id: "huggingface_ovhcloud",
7471
+ name: "HuggingFace (ovhcloud)",
7472
+ pricing_urls: ["https://router.huggingface.co/v1/models", "https://huggingface.co/inference/models"],
7473
+ api_pattern: "https://router\\.huggingface\\.co/ovhcloud",
7474
+ provider_match: {
7558
7475
  and: [
7559
7476
  {
7560
7477
  contains: "huggingface"
@@ -7656,25 +7573,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
7656
7573
  output_mtok: 0.26
7657
7574
  }
7658
7575
  },
7659
- {
7660
- id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
7661
- name: "DeepSeek-R1-Distill-Llama-70B",
7662
- match: {
7663
- or: [
7664
- {
7665
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b"
7666
- },
7667
- {
7668
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b-fast"
7669
- }
7670
- ]
7671
- },
7672
- context_window: 131072,
7673
- prices: {
7674
- input_mtok: 0.74,
7675
- output_mtok: 0.74
7676
- }
7677
- },
7678
7576
  {
7679
7577
  id: "meta-llama/Llama-3.1-8B-Instruct",
7680
7578
  name: "Llama-3.1-8B-Instruct",
@@ -7731,6 +7629,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
7731
7629
  input_mtok: 0.09,
7732
7630
  output_mtok: 0.47
7733
7631
  }
7632
+ },
7633
+ {
7634
+ id: "openai/gpt-oss-20b",
7635
+ name: "gpt-oss-20b",
7636
+ match: {
7637
+ or: [
7638
+ {
7639
+ equals: "openai/gpt-oss-20b"
7640
+ },
7641
+ {
7642
+ equals: "openai/gpt-oss-20b-fast"
7643
+ }
7644
+ ]
7645
+ },
7646
+ context_window: 131072,
7647
+ prices: {
7648
+ input_mtok: 0.05,
7649
+ output_mtok: 0.18
7650
+ }
7734
7651
  }
7735
7652
  ]
7736
7653
  },
@@ -7797,7 +7714,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7797
7714
  }
7798
7715
  ]
7799
7716
  },
7800
- prices: {}
7717
+ prices: {
7718
+ input_mtok: 0.2,
7719
+ output_mtok: 0.4
7720
+ }
7801
7721
  },
7802
7722
  {
7803
7723
  id: "aisingapore/Qwen-SEA-LION-v4-32B-IT",
@@ -7812,7 +7732,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7812
7732
  }
7813
7733
  ]
7814
7734
  },
7815
- prices: {}
7735
+ prices: {
7736
+ input_mtok: 0.25,
7737
+ output_mtok: 0.5
7738
+ }
7816
7739
  },
7817
7740
  {
7818
7741
  id: "allenai/Olmo-3-7B-Instruct",
@@ -7827,22 +7750,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7827
7750
  }
7828
7751
  ]
7829
7752
  },
7830
- prices: {}
7831
- },
7832
- {
7833
- id: "allenai/Olmo-3-7B-Think",
7834
- name: "Olmo-3-7B-Think",
7835
- match: {
7836
- or: [
7837
- {
7838
- equals: "allenai/olmo-3-7b-think"
7839
- },
7840
- {
7841
- equals: "allenai/olmo-3-7b-think-fast"
7842
- }
7843
- ]
7844
- },
7845
- prices: {}
7753
+ prices: {
7754
+ input_mtok: 0.1,
7755
+ output_mtok: 0.2
7756
+ }
7846
7757
  },
7847
7758
  {
7848
7759
  id: "allenai/Olmo-3.1-32B-Instruct",
@@ -7857,22 +7768,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7857
7768
  }
7858
7769
  ]
7859
7770
  },
7860
- prices: {}
7861
- },
7862
- {
7863
- id: "allenai/Olmo-3.1-32B-Think",
7864
- name: "Olmo-3.1-32B-Think",
7865
- match: {
7866
- or: [
7867
- {
7868
- equals: "allenai/olmo-3.1-32b-think"
7869
- },
7870
- {
7871
- equals: "allenai/olmo-3.1-32b-think-fast"
7872
- }
7873
- ]
7874
- },
7875
- prices: {}
7771
+ prices: {
7772
+ input_mtok: 0.2,
7773
+ output_mtok: 0.6
7774
+ }
7876
7775
  },
7877
7776
  {
7878
7777
  id: "dicta-il/DictaLM-3.0-24B-Thinking",
@@ -7887,7 +7786,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7887
7786
  }
7888
7787
  ]
7889
7788
  },
7890
- prices: {}
7789
+ prices: {
7790
+ input_mtok: 0.2,
7791
+ output_mtok: 0.4
7792
+ }
7891
7793
  },
7892
7794
  {
7893
7795
  id: "swiss-ai/Apertus-70B-Instruct-2509",
@@ -7902,7 +7804,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7902
7804
  }
7903
7805
  ]
7904
7806
  },
7905
- prices: {}
7807
+ prices: {
7808
+ input_mtok: 0.82,
7809
+ output_mtok: 2.92
7810
+ }
7906
7811
  },
7907
7812
  {
7908
7813
  id: "swiss-ai/Apertus-8B-Instruct-2509",
@@ -7917,7 +7822,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7917
7822
  }
7918
7823
  ]
7919
7824
  },
7920
- prices: {}
7825
+ prices: {
7826
+ input_mtok: 0.1,
7827
+ output_mtok: 0.2
7828
+ }
7921
7829
  },
7922
7830
  {
7923
7831
  id: "utter-project/EuroLLM-22B-Instruct-2512",
@@ -7932,7 +7840,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
7932
7840
  }
7933
7841
  ]
7934
7842
  },
7935
- prices: {}
7843
+ prices: {
7844
+ input_mtok: 0.1,
7845
+ output_mtok: 0.2
7846
+ }
7936
7847
  }
7937
7848
  ]
7938
7849
  },
@@ -8209,25 +8120,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
8209
8120
  output_mtok: 0.15
8210
8121
  }
8211
8122
  },
8212
- {
8213
- id: "Qwen/Qwen2.5-72B-Instruct",
8214
- name: "Qwen2.5-72B-Instruct",
8215
- match: {
8216
- or: [
8217
- {
8218
- equals: "qwen/qwen2.5-72b-instruct"
8219
- },
8220
- {
8221
- equals: "qwen/qwen2.5-72b-instruct-fast"
8222
- }
8223
- ]
8224
- },
8225
- context_window: 131072,
8226
- prices: {
8227
- input_mtok: 1.2,
8228
- output_mtok: 1.2
8229
- }
8230
- },
8231
8123
  {
8232
8124
  id: "Qwen/Qwen2.5-7B-Instruct",
8233
8125
  name: "Qwen2.5-7B-Instruct",
@@ -8248,22 +8140,10 @@ Compared to other leading proprietary and open-weights models Command A delivers
8248
8140
  }
8249
8141
  },
8250
8142
  {
8251
- id: "Qwen/Qwen3-235B-A22B",
8252
- name: "Qwen3-235B-A22B",
8143
+ id: "Qwen/Qwen3-235B-A22B-Instruct-2507",
8144
+ name: "Qwen3-235B-A22B-Instruct-2507",
8253
8145
  match: {
8254
8146
  or: [
8255
- {
8256
- equals: "qwen/qwen3-235b-a22b"
8257
- },
8258
- {
8259
- equals: "qwen/qwen3-235b-a22b-fast"
8260
- },
8261
- {
8262
- equals: "qwen/qwen3-235b-a22b-fp8"
8263
- },
8264
- {
8265
- equals: "qwen/qwen3-235b-a22b-fp8-fast"
8266
- },
8267
8147
  {
8268
8148
  equals: "qwen/qwen3-235b-a22b-instruct-2507"
8269
8149
  },
@@ -8272,7 +8152,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
8272
8152
  }
8273
8153
  ]
8274
8154
  },
8275
- context_window: 40960,
8155
+ context_window: 262144,
8276
8156
  prices: {
8277
8157
  input_mtok: 0.2,
8278
8158
  output_mtok: 0.6
@@ -8303,6 +8183,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
8303
8183
  output_mtok: 2
8304
8184
  }
8305
8185
  },
8186
+ {
8187
+ id: "Qwen/Qwen3-Coder-Next-FP8",
8188
+ name: "Qwen3-Coder-Next-FP8",
8189
+ match: {
8190
+ or: [
8191
+ {
8192
+ equals: "qwen/qwen3-coder-next-fp8"
8193
+ },
8194
+ {
8195
+ equals: "qwen/qwen3-coder-next-fp8-fast"
8196
+ }
8197
+ ]
8198
+ },
8199
+ context_window: 262144,
8200
+ prices: {
8201
+ input_mtok: 0.5,
8202
+ output_mtok: 1.2
8203
+ }
8204
+ },
8306
8205
  {
8307
8206
  id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
8308
8207
  name: "Qwen3-Next-80B-A3B-Instruct",
@@ -8323,41 +8222,60 @@ Compared to other leading proprietary and open-weights models Command A delivers
8323
8222
  }
8324
8223
  },
8325
8224
  {
8326
- id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
8327
- name: "Qwen3-Next-80B-A3B-Thinking",
8225
+ id: "Qwen/Qwen3-VL-8B-Instruct",
8226
+ name: "Qwen3-VL-8B-Instruct",
8328
8227
  match: {
8329
8228
  or: [
8330
8229
  {
8331
- equals: "qwen/qwen3-next-80b-a3b-thinking"
8230
+ equals: "qwen/qwen3-vl-8b-instruct"
8332
8231
  },
8333
8232
  {
8334
- equals: "qwen/qwen3-next-80b-a3b-thinking-fast"
8233
+ equals: "qwen/qwen3-vl-8b-instruct-fast"
8335
8234
  }
8336
8235
  ]
8337
8236
  },
8338
8237
  context_window: 262144,
8339
8238
  prices: {
8340
- input_mtok: 0.15,
8341
- output_mtok: 1.5
8239
+ input_mtok: 0.18000000000000002,
8240
+ output_mtok: 0.68
8342
8241
  }
8343
8242
  },
8344
8243
  {
8345
- id: "Qwen/Qwen3-VL-32B-Instruct",
8346
- name: "Qwen3-VL-32B-Instruct",
8244
+ id: "Qwen/Qwen3.5-397B-A17B",
8245
+ name: "Qwen3.5-397B-A17B",
8347
8246
  match: {
8348
8247
  or: [
8349
8248
  {
8350
- equals: "qwen/qwen3-vl-32b-instruct"
8249
+ equals: "qwen/qwen3.5-397b-a17b"
8351
8250
  },
8352
8251
  {
8353
- equals: "qwen/qwen3-vl-32b-instruct-fast"
8252
+ equals: "qwen/qwen3.5-397b-a17b-fast"
8354
8253
  }
8355
8254
  ]
8356
8255
  },
8357
8256
  context_window: 262144,
8358
8257
  prices: {
8359
- input_mtok: 0.5,
8360
- output_mtok: 1.5
8258
+ input_mtok: 0.6,
8259
+ output_mtok: 3.6
8260
+ }
8261
+ },
8262
+ {
8263
+ id: "Qwen/Qwen3.5-9B",
8264
+ name: "Qwen3.5-9B",
8265
+ match: {
8266
+ or: [
8267
+ {
8268
+ equals: "qwen/qwen3.5-9b"
8269
+ },
8270
+ {
8271
+ equals: "qwen/qwen3.5-9b-fast"
8272
+ }
8273
+ ]
8274
+ },
8275
+ context_window: 262144,
8276
+ prices: {
8277
+ input_mtok: 0.1,
8278
+ output_mtok: 0.15
8361
8279
  }
8362
8280
  },
8363
8281
  {
@@ -8401,44 +8319,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
8401
8319
  output_mtok: 1.25
8402
8320
  }
8403
8321
  },
8404
- {
8405
- id: "deepcogito/cogito-v2-preview-llama-405B",
8406
- name: "cogito-v2-preview-llama-405B",
8407
- match: {
8408
- or: [
8409
- {
8410
- equals: "deepcogito/cogito-v2-preview-llama-405b"
8411
- },
8412
- {
8413
- equals: "deepcogito/cogito-v2-preview-llama-405b-fast"
8414
- }
8415
- ]
8416
- },
8417
- context_window: 32768,
8418
- prices: {
8419
- input_mtok: 3.5,
8420
- output_mtok: 3.5
8421
- }
8422
- },
8423
- {
8424
- id: "deepcogito/cogito-v2-preview-llama-70B",
8425
- name: "cogito-v2-preview-llama-70B",
8426
- match: {
8427
- or: [
8428
- {
8429
- equals: "deepcogito/cogito-v2-preview-llama-70b"
8430
- },
8431
- {
8432
- equals: "deepcogito/cogito-v2-preview-llama-70b-fast"
8433
- }
8434
- ]
8435
- },
8436
- context_window: 32768,
8437
- prices: {
8438
- input_mtok: 0.88,
8439
- output_mtok: 0.88
8440
- }
8441
- },
8442
8322
  {
8443
8323
  id: "deepseek-ai/DeepSeek-R1",
8444
8324
  name: "DeepSeek-R1",
@@ -8509,161 +8389,193 @@ Compared to other leading proprietary and open-weights models Command A delivers
8509
8389
  }
8510
8390
  },
8511
8391
  {
8512
- id: "marin-community/marin-8b-instruct",
8513
- name: "marin-8b-instruct",
8392
+ id: "google/gemma-3n-E4B-it",
8393
+ name: "gemma-3n-E4B-it",
8514
8394
  match: {
8515
8395
  or: [
8516
8396
  {
8517
- equals: "marin-community/marin-8b-instruct"
8397
+ equals: "google/gemma-3n-e4b-it"
8518
8398
  },
8519
8399
  {
8520
- equals: "marin-community/marin-8b-instruct-fast"
8400
+ equals: "google/gemma-3n-e4b-it-fast"
8521
8401
  }
8522
8402
  ]
8523
8403
  },
8524
- context_window: 4096,
8404
+ context_window: 32768,
8525
8405
  prices: {
8526
- input_mtok: 0.18000000000000002,
8527
- output_mtok: 0.18000000000000002
8406
+ input_mtok: 0.02,
8407
+ output_mtok: 0.04
8528
8408
  }
8529
8409
  },
8530
8410
  {
8531
- id: "meta-llama/Llama-3.2-3B-Instruct",
8532
- name: "Llama-3.2-3B-Instruct",
8411
+ id: "meta-llama/Llama-3.3-70B-Instruct",
8412
+ name: "Llama-3.3-70B-Instruct",
8533
8413
  match: {
8534
8414
  or: [
8535
8415
  {
8536
- equals: "meta-llama/llama-3.2-3b-instruct"
8416
+ equals: "meta-llama/llama-3.3-70b-instruct"
8537
8417
  },
8538
8418
  {
8539
- equals: "meta-llama/llama-3.2-3b-instruct-fast"
8419
+ equals: "meta-llama/llama-3.3-70b-instruct-fast"
8540
8420
  }
8541
8421
  ]
8542
8422
  },
8543
8423
  context_window: 131072,
8544
8424
  prices: {
8545
- input_mtok: 0.060000000000000005,
8546
- output_mtok: 0.060000000000000005
8425
+ input_mtok: 0.88,
8426
+ output_mtok: 0.88
8547
8427
  }
8548
8428
  },
8549
8429
  {
8550
- id: "meta-llama/Llama-3.3-70B-Instruct",
8551
- name: "Llama-3.3-70B-Instruct",
8430
+ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
8431
+ name: "Llama-4-Maverick-17B-128E-Instruct-FP8",
8552
8432
  match: {
8553
8433
  or: [
8554
8434
  {
8555
- equals: "meta-llama/llama-3.3-70b-instruct"
8435
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
8556
8436
  },
8557
8437
  {
8558
- equals: "meta-llama/llama-3.3-70b-instruct-fast"
8438
+ equals: "meta-llama/llama-4-maverick-17b-128e-instruct-fp8-fast"
8559
8439
  }
8560
8440
  ]
8561
8441
  },
8562
- context_window: 131072,
8442
+ context_window: 1048576,
8563
8443
  prices: {
8564
- input_mtok: 0.88,
8565
- output_mtok: 0.88
8444
+ input_mtok: 0.27,
8445
+ output_mtok: 0.85
8566
8446
  }
8567
8447
  },
8568
8448
  {
8569
- id: "meta-llama/Meta-Llama-3-70B-Instruct",
8570
- name: "Meta-Llama-3-70B-Instruct",
8449
+ id: "moonshotai/Kimi-K2.5",
8450
+ name: "Kimi-K2.5",
8571
8451
  match: {
8572
8452
  or: [
8573
8453
  {
8574
- equals: "meta-llama/meta-llama-3-70b-instruct"
8454
+ equals: "moonshotai/kimi-k2.5"
8575
8455
  },
8576
8456
  {
8577
- equals: "meta-llama/meta-llama-3-70b-instruct-fast"
8457
+ equals: "moonshotai/kimi-k2.5-fast"
8578
8458
  }
8579
8459
  ]
8580
8460
  },
8581
- context_window: 8192,
8461
+ context_window: 262144,
8582
8462
  prices: {
8583
- input_mtok: 0.88,
8584
- output_mtok: 0.88
8463
+ input_mtok: 0.5,
8464
+ output_mtok: 2.8
8585
8465
  }
8586
8466
  },
8587
8467
  {
8588
- id: "moonshotai/Kimi-K2-Instruct",
8589
- name: "Kimi-K2-Instruct",
8468
+ id: "openai/gpt-oss-120b",
8469
+ name: "gpt-oss-120b",
8590
8470
  match: {
8591
8471
  or: [
8592
8472
  {
8593
- equals: "moonshotai/kimi-k2-instruct"
8473
+ equals: "openai/gpt-oss-120b"
8594
8474
  },
8595
8475
  {
8596
- equals: "moonshotai/kimi-k2-instruct-fast"
8476
+ equals: "openai/gpt-oss-120b-fast"
8477
+ }
8478
+ ]
8479
+ },
8480
+ context_window: 131072,
8481
+ prices: {
8482
+ input_mtok: 0.15,
8483
+ output_mtok: 0.6
8484
+ }
8485
+ },
8486
+ {
8487
+ id: "openai/gpt-oss-20b",
8488
+ name: "gpt-oss-20b",
8489
+ match: {
8490
+ or: [
8491
+ {
8492
+ equals: "openai/gpt-oss-20b"
8597
8493
  },
8598
8494
  {
8599
- equals: "moonshotai/kimi-k2-instruct-0905"
8495
+ equals: "openai/gpt-oss-20b-fast"
8496
+ }
8497
+ ]
8498
+ },
8499
+ context_window: 131072,
8500
+ prices: {
8501
+ input_mtok: 0.05,
8502
+ output_mtok: 0.2
8503
+ }
8504
+ },
8505
+ {
8506
+ id: "zai-org/GLM-4.5-Air-FP8",
8507
+ name: "GLM-4.5-Air-FP8",
8508
+ match: {
8509
+ or: [
8510
+ {
8511
+ equals: "zai-org/glm-4.5-air-fp8"
8600
8512
  },
8601
8513
  {
8602
- equals: "moonshotai/kimi-k2-instruct-0905-fast"
8514
+ equals: "zai-org/glm-4.5-air-fp8-fast"
8603
8515
  }
8604
8516
  ]
8605
8517
  },
8606
8518
  context_window: 131072,
8607
8519
  prices: {
8608
- input_mtok: 1,
8609
- output_mtok: 3
8520
+ input_mtok: 0.2,
8521
+ output_mtok: 1.1
8610
8522
  }
8611
8523
  },
8612
8524
  {
8613
- id: "moonshotai/Kimi-K2-Thinking",
8614
- name: "Kimi-K2-Thinking",
8525
+ id: "zai-org/GLM-4.6",
8526
+ name: "GLM-4.6",
8615
8527
  match: {
8616
8528
  or: [
8617
8529
  {
8618
- equals: "moonshotai/kimi-k2-thinking"
8530
+ equals: "zai-org/glm-4.6"
8619
8531
  },
8620
8532
  {
8621
- equals: "moonshotai/kimi-k2-thinking-fast"
8533
+ equals: "zai-org/glm-4.6-fast"
8622
8534
  }
8623
8535
  ]
8624
8536
  },
8625
- context_window: 262144,
8537
+ context_window: 202752,
8626
8538
  prices: {
8627
- input_mtok: 1.2,
8628
- output_mtok: 4
8539
+ input_mtok: 0.6,
8540
+ output_mtok: 2.2
8629
8541
  }
8630
8542
  },
8631
8543
  {
8632
- id: "openai/gpt-oss-120b",
8633
- name: "gpt-oss-120b",
8544
+ id: "zai-org/GLM-4.7-FP8",
8545
+ name: "GLM-4.7-FP8",
8634
8546
  match: {
8635
8547
  or: [
8636
8548
  {
8637
- equals: "openai/gpt-oss-120b"
8549
+ equals: "zai-org/glm-4.7-fp8"
8638
8550
  },
8639
8551
  {
8640
- equals: "openai/gpt-oss-120b-fast"
8552
+ equals: "zai-org/glm-4.7-fp8-fast"
8641
8553
  }
8642
8554
  ]
8643
8555
  },
8644
- context_window: 131072,
8556
+ context_window: 202752,
8645
8557
  prices: {
8646
- input_mtok: 0.15,
8647
- output_mtok: 0.6
8558
+ input_mtok: 0.45,
8559
+ output_mtok: 2
8648
8560
  }
8649
8561
  },
8650
8562
  {
8651
- id: "zai-org/GLM-4.5-Air-FP8",
8652
- name: "GLM-4.5-Air-FP8",
8563
+ id: "zai-org/GLM-5",
8564
+ name: "GLM-5",
8653
8565
  match: {
8654
8566
  or: [
8655
8567
  {
8656
- equals: "zai-org/glm-4.5-air-fp8"
8568
+ equals: "zai-org/glm-5"
8657
8569
  },
8658
8570
  {
8659
- equals: "zai-org/glm-4.5-air-fp8-fast"
8571
+ equals: "zai-org/glm-5-fast"
8660
8572
  }
8661
8573
  ]
8662
8574
  },
8663
- context_window: 131072,
8575
+ context_window: 202752,
8664
8576
  prices: {
8665
- input_mtok: 0.2,
8666
- output_mtok: 1.1
8577
+ input_mtok: 1,
8578
+ output_mtok: 3.2
8667
8579
  }
8668
8580
  }
8669
8581
  ]
@@ -8951,74 +8863,260 @@ Compared to other leading proprietary and open-weights models Command A delivers
8951
8863
  deprecated: !0
8952
8864
  },
8953
8865
  {
8954
- id: "mixtral-8x22b-instruct",
8955
- name: "Mixtral 8x22B Instruct",
8956
- description: `Mistral's official instruct fine-tuned version of Mixtral 8x22B. It uses 39B active parameters out of 141B, offering unparalleled cost efficiency for its size. Its strengths include:
8957
- - strong math, coding, and reasoning
8958
- - large context length (64k)
8959
- - fluency in English, French, Italian, German, and Spanish`,
8866
+ id: "mixtral-8x22b-instruct",
8867
+ name: "Mixtral 8x22B Instruct",
8868
+ description: `Mistral's official instruct fine-tuned version of Mixtral 8x22B. It uses 39B active parameters out of 141B, offering unparalleled cost efficiency for its size. Its strengths include:
8869
+ - strong math, coding, and reasoning
8870
+ - large context length (64k)
8871
+ - fluency in English, French, Italian, German, and Spanish`,
8872
+ match: {
8873
+ equals: "mixtral-8x22b-instruct"
8874
+ },
8875
+ prices: {
8876
+ input_mtok: 0.9,
8877
+ output_mtok: 0.9
8878
+ }
8879
+ },
8880
+ {
8881
+ id: "mixtral-8x7b",
8882
+ name: "Mixtral 8x7B",
8883
+ match: {
8884
+ or: [
8885
+ {
8886
+ starts_with: "mixtral-8x7b"
8887
+ },
8888
+ {
8889
+ equals: "open-mixtral-8x7b"
8890
+ }
8891
+ ]
8892
+ },
8893
+ prices: {
8894
+ input_mtok: 0.7,
8895
+ output_mtok: 0.7
8896
+ }
8897
+ },
8898
+ {
8899
+ id: "pixtral-12b",
8900
+ name: "Pixtral 12B",
8901
+ description: "The first multi-modal, text+image-to-text model from Mistral AI. Its weights were launched via torrent: https://x.com/mistralai/status/1833758285167722836.",
8902
+ match: {
8903
+ or: [
8904
+ {
8905
+ equals: "pixtral-12b"
8906
+ },
8907
+ {
8908
+ equals: "pixtral-12b-latest"
8909
+ }
8910
+ ]
8911
+ },
8912
+ prices: {
8913
+ input_mtok: 0.15,
8914
+ output_mtok: 0.15
8915
+ }
8916
+ },
8917
+ {
8918
+ id: "pixtral-large",
8919
+ name: "Pixtral Large 2411",
8920
+ description: "Pixtral Large is a 124B parameter, open-weight, multimodal model built on top of Mistral Large 2. The model is able to understand documents, charts and natural images.",
8921
+ match: {
8922
+ or: [
8923
+ {
8924
+ equals: "pixtral-large-latest"
8925
+ },
8926
+ {
8927
+ equals: "pixtral-large-2411"
8928
+ }
8929
+ ]
8930
+ },
8931
+ prices: {
8932
+ input_mtok: 2,
8933
+ output_mtok: 6
8934
+ }
8935
+ }
8936
+ ]
8937
+ },
8938
+ {
8939
+ id: "moonshotai",
8940
+ name: "MoonshotAi",
8941
+ pricing_urls: ["https://platform.moonshot.ai/docs/pricing/chat#product-pricing"],
8942
+ api_pattern: "https://api\\.moonshot\\.",
8943
+ model_match: {
8944
+ or: [
8945
+ {
8946
+ starts_with: "kimi"
8947
+ },
8948
+ {
8949
+ starts_with: "moonshot"
8950
+ }
8951
+ ]
8952
+ },
8953
+ provider_match: {
8954
+ contains: "moonshot"
8955
+ },
8956
+ extractors: [
8957
+ {
8958
+ api_flavor: "chat",
8959
+ root: "usage",
8960
+ model_path: "model",
8961
+ mappings: [
8962
+ {
8963
+ path: "prompt_tokens",
8964
+ dest: "input_tokens",
8965
+ required: !0
8966
+ },
8967
+ {
8968
+ path: ["prompt_tokens_details", "cached_tokens"],
8969
+ dest: "cache_read_tokens",
8970
+ required: !1
8971
+ },
8972
+ {
8973
+ path: "completion_tokens",
8974
+ dest: "output_tokens",
8975
+ required: !0
8976
+ }
8977
+ ]
8978
+ }
8979
+ ],
8980
+ models: [
8981
+ {
8982
+ id: "kimi-k2-0711-preview",
8983
+ name: "Kimi K2 0711 Preview",
8984
+ description: "MoE foundation model with exceptional coding and agent capabilities, featuring 1 trillion total parameters and 32 billion activated parameters.",
8985
+ match: {
8986
+ equals: "kimi-k2-0711-preview"
8987
+ },
8988
+ context_window: 131072,
8989
+ prices: {
8990
+ input_mtok: 0.6,
8991
+ cache_read_mtok: 0.15,
8992
+ output_mtok: 2.5
8993
+ }
8994
+ },
8995
+ {
8996
+ id: "kimi-k2-0905-preview",
8997
+ name: "Kimi K2 0905 Preview",
8998
+ description: "Based on kimi-k2-0711-preview, with enhanced agentic coding abilities, improved frontend code quality and practicality, and better context understanding. MoE foundation model with 1 trillion total parameters and 32 billion activated parameters.",
8999
+ match: {
9000
+ equals: "kimi-k2-0905-preview"
9001
+ },
9002
+ context_window: 262144,
9003
+ prices: {
9004
+ input_mtok: 0.6,
9005
+ cache_read_mtok: 0.15,
9006
+ output_mtok: 2.5
9007
+ }
9008
+ },
9009
+ {
9010
+ id: "kimi-k2-thinking",
9011
+ name: "Kimi K2 Thinking",
9012
+ description: "A thinking model with general agentic and reasoning capabilities, specializing in deep reasoning tasks.",
9013
+ match: {
9014
+ equals: "kimi-k2-thinking"
9015
+ },
9016
+ context_window: 262144,
9017
+ prices: {
9018
+ input_mtok: 0.6,
9019
+ cache_read_mtok: 0.15,
9020
+ output_mtok: 2.5
9021
+ }
9022
+ },
9023
+ {
9024
+ id: "kimi-k2-thinking-turbo",
9025
+ name: "Kimi K2 Thinking Turbo",
9026
+ description: "High-speed version of kimi-k2-thinking, suitable for scenarios requiring both deep reasoning and extremely fast responses.",
9027
+ match: {
9028
+ equals: "kimi-k2-thinking-turbo"
9029
+ },
9030
+ context_window: 262144,
9031
+ prices: {
9032
+ input_mtok: 1.15,
9033
+ cache_read_mtok: 0.15,
9034
+ output_mtok: 8
9035
+ }
9036
+ },
9037
+ {
9038
+ id: "kimi-k2-turbo-preview",
9039
+ name: "Kimi K2 Turbo Preview",
9040
+ description: "High-speed version of kimi-k2, always aligned with the latest kimi-k2. Same model parameters as kimi-k2, output speed up to 60 tokens/sec (max 100 tokens/sec).",
9041
+ match: {
9042
+ starts_with: "kimi-k2-turbo"
9043
+ },
9044
+ context_window: 262144,
9045
+ prices: {
9046
+ input_mtok: 1.15,
9047
+ cache_read_mtok: 0.15,
9048
+ output_mtok: 8
9049
+ }
9050
+ },
9051
+ {
9052
+ id: "kimi-k2.5",
9053
+ name: "Kimi K2.5",
9054
+ description: "Kimi's most versatile model featuring a native multimodal architecture that supports both visual and text input, thinking and non-thinking modes, and dialogue and agent tasks. Supports automatic context caching, ToolCalls, JSON Mode, Partial Mode, and internet search.",
8960
9055
  match: {
8961
- equals: "mixtral-8x22b-instruct"
9056
+ starts_with: "kimi-k2.5"
8962
9057
  },
9058
+ context_window: 262144,
8963
9059
  prices: {
8964
- input_mtok: 0.9,
8965
- output_mtok: 0.9
9060
+ input_mtok: 0.6,
9061
+ cache_read_mtok: 0.1,
9062
+ output_mtok: 3
8966
9063
  }
8967
9064
  },
8968
9065
  {
8969
- id: "mixtral-8x7b",
8970
- name: "Mixtral 8x7B",
9066
+ id: "moonshot-v1-128k",
9067
+ name: "Moonshot V1 128K",
8971
9068
  match: {
8972
9069
  or: [
8973
9070
  {
8974
- starts_with: "mixtral-8x7b"
9071
+ equals: "moonshot-v1-128k"
8975
9072
  },
8976
9073
  {
8977
- equals: "open-mixtral-8x7b"
9074
+ equals: "moonshot-v1-128k-vision-preview"
8978
9075
  }
8979
9076
  ]
8980
9077
  },
9078
+ context_window: 131072,
8981
9079
  prices: {
8982
- input_mtok: 0.7,
8983
- output_mtok: 0.7
9080
+ input_mtok: 2,
9081
+ output_mtok: 5
8984
9082
  }
8985
9083
  },
8986
9084
  {
8987
- id: "pixtral-12b",
8988
- name: "Pixtral 12B",
8989
- description: "The first multi-modal, text+image-to-text model from Mistral AI. Its weights were launched via torrent: https://x.com/mistralai/status/1833758285167722836.",
9085
+ id: "moonshot-v1-32k",
9086
+ name: "Moonshot V1 32K",
8990
9087
  match: {
8991
9088
  or: [
8992
9089
  {
8993
- equals: "pixtral-12b"
9090
+ equals: "moonshot-v1-32k"
8994
9091
  },
8995
9092
  {
8996
- equals: "pixtral-12b-latest"
9093
+ equals: "moonshot-v1-32k-vision-preview"
8997
9094
  }
8998
9095
  ]
8999
9096
  },
9097
+ context_window: 32768,
9000
9098
  prices: {
9001
- input_mtok: 0.15,
9002
- output_mtok: 0.15
9099
+ input_mtok: 1,
9100
+ output_mtok: 3
9003
9101
  }
9004
9102
  },
9005
9103
  {
9006
- id: "pixtral-large",
9007
- name: "Pixtral Large 2411",
9008
- description: "Pixtral Large is a 124B parameter, open-weight, multimodal model built on top of Mistral Large 2. The model is able to understand documents, charts and natural images.",
9104
+ id: "moonshot-v1-8k",
9105
+ name: "Moonshot V1 8K",
9009
9106
  match: {
9010
9107
  or: [
9011
9108
  {
9012
- equals: "pixtral-large-latest"
9109
+ equals: "moonshot-v1-8k"
9013
9110
  },
9014
9111
  {
9015
- equals: "pixtral-large-2411"
9112
+ equals: "moonshot-v1-8k-vision-preview"
9016
9113
  }
9017
9114
  ]
9018
9115
  },
9116
+ context_window: 8192,
9019
9117
  prices: {
9020
- input_mtok: 2,
9021
- output_mtok: 6
9118
+ input_mtok: 0.2,
9119
+ output_mtok: 2
9022
9120
  }
9023
9121
  }
9024
9122
  ]
@@ -10339,6 +10437,174 @@ Compared to other leading proprietary and open-weights models Command A delivers
10339
10437
  output_mtok: 168
10340
10438
  }
10341
10439
  },
10440
+ {
10441
+ id: "gpt-5.3-codex",
10442
+ name: "GPT-5.3-Codex",
10443
+ description: "The most capable agentic coding model",
10444
+ match: {
10445
+ or: [
10446
+ {
10447
+ equals: "gpt-5.3-codex"
10448
+ },
10449
+ {
10450
+ equals: "gpt-5-3-codex"
10451
+ }
10452
+ ]
10453
+ },
10454
+ context_window: 4e5,
10455
+ prices: {
10456
+ input_mtok: 1.75,
10457
+ cache_read_mtok: 0.175,
10458
+ output_mtok: 14
10459
+ }
10460
+ },
10461
+ {
10462
+ id: "gpt-5.4",
10463
+ name: "GPT-5.4",
10464
+ description: "OpenAI's most capable model with a 1.05M token context window.",
10465
+ match: {
10466
+ or: [
10467
+ {
10468
+ equals: "gpt-5.4"
10469
+ },
10470
+ {
10471
+ equals: "gpt-5.4-2026-03-05"
10472
+ },
10473
+ {
10474
+ equals: "gpt-5-4"
10475
+ },
10476
+ {
10477
+ equals: "gpt-5-4-2026-03-05"
10478
+ }
10479
+ ]
10480
+ },
10481
+ context_window: 105e4,
10482
+ prices: {
10483
+ input_mtok: {
10484
+ base: 2.5,
10485
+ tiers: [
10486
+ {
10487
+ start: 272e3,
10488
+ price: 5
10489
+ }
10490
+ ]
10491
+ },
10492
+ cache_read_mtok: {
10493
+ base: 0.25,
10494
+ tiers: [
10495
+ {
10496
+ start: 272e3,
10497
+ price: 0.5
10498
+ }
10499
+ ]
10500
+ },
10501
+ output_mtok: {
10502
+ base: 15,
10503
+ tiers: [
10504
+ {
10505
+ start: 272e3,
10506
+ price: 22.5
10507
+ }
10508
+ ]
10509
+ }
10510
+ }
10511
+ },
10512
+ {
10513
+ id: "gpt-5.4-mini",
10514
+ name: "GPT-5.4 mini",
10515
+ description: "Our strongest mini model yet for coding, computer use, and subagents.",
10516
+ match: {
10517
+ or: [
10518
+ {
10519
+ equals: "gpt-5.4-mini"
10520
+ },
10521
+ {
10522
+ equals: "gpt-5.4-mini-2026-03-17"
10523
+ },
10524
+ {
10525
+ equals: "gpt-5-4-mini"
10526
+ },
10527
+ {
10528
+ equals: "gpt-5-4-mini-2026-03-17"
10529
+ }
10530
+ ]
10531
+ },
10532
+ context_window: 4e5,
10533
+ prices: {
10534
+ input_mtok: 0.75,
10535
+ cache_read_mtok: 0.075,
10536
+ output_mtok: 4.5
10537
+ }
10538
+ },
10539
+ {
10540
+ id: "gpt-5.4-nano",
10541
+ name: "GPT-5.4 nano",
10542
+ description: "Our cheapest GPT-5.4-class model for simple high-volume tasks.",
10543
+ match: {
10544
+ or: [
10545
+ {
10546
+ equals: "gpt-5.4-nano"
10547
+ },
10548
+ {
10549
+ equals: "gpt-5.4-nano-2026-03-17"
10550
+ },
10551
+ {
10552
+ equals: "gpt-5-4-nano"
10553
+ },
10554
+ {
10555
+ equals: "gpt-5-4-nano-2026-03-17"
10556
+ }
10557
+ ]
10558
+ },
10559
+ context_window: 4e5,
10560
+ prices: {
10561
+ input_mtok: 0.2,
10562
+ cache_read_mtok: 0.02,
10563
+ output_mtok: 1.25
10564
+ }
10565
+ },
10566
+ {
10567
+ id: "gpt-5.4-pro",
10568
+ name: "GPT-5.4 Pro",
10569
+ description: "Version of GPT-5.4 that produces smarter and more precise responses.",
10570
+ match: {
10571
+ or: [
10572
+ {
10573
+ equals: "gpt-5.4-pro"
10574
+ },
10575
+ {
10576
+ equals: "gpt-5.4-pro-2026-03-05"
10577
+ },
10578
+ {
10579
+ equals: "gpt-5-4-pro"
10580
+ },
10581
+ {
10582
+ equals: "gpt-5-4-pro-2026-03-05"
10583
+ }
10584
+ ]
10585
+ },
10586
+ context_window: 105e4,
10587
+ prices: {
10588
+ input_mtok: {
10589
+ base: 30,
10590
+ tiers: [
10591
+ {
10592
+ start: 272e3,
10593
+ price: 60
10594
+ }
10595
+ ]
10596
+ },
10597
+ output_mtok: {
10598
+ base: 180,
10599
+ tiers: [
10600
+ {
10601
+ start: 272e3,
10602
+ price: 270
10603
+ }
10604
+ ]
10605
+ }
10606
+ }
10607
+ },
10342
10608
  {
10343
10609
  id: "gpt-realtime",
10344
10610
  match: {
@@ -11185,6 +11451,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
11185
11451
  }
11186
11452
  }
11187
11453
  },
11454
+ {
11455
+ id: "anthropic/claude-sonnet-4.6",
11456
+ match: {
11457
+ or: [
11458
+ {
11459
+ equals: "anthropic/claude-sonnet-4.6"
11460
+ },
11461
+ {
11462
+ equals: "anthropic/claude-sonnet-4.6:beta"
11463
+ }
11464
+ ]
11465
+ },
11466
+ prices: {
11467
+ input_mtok: 3,
11468
+ cache_write_mtok: 3.75,
11469
+ cache_read_mtok: 0.3,
11470
+ output_mtok: 15
11471
+ }
11472
+ },
11188
11473
  {
11189
11474
  id: "anubis-pro-105b-v1",
11190
11475
  name: "Anubis Pro 105B V1",
@@ -16277,7 +16562,14 @@ Compared to other leading proprietary and open-weights models Command A delivers
16277
16562
  id: "qwen/qwen3-max",
16278
16563
  name: "Qwen 3 Max",
16279
16564
  match: {
16280
- equals: "qwen/qwen3-max"
16565
+ or: [
16566
+ {
16567
+ equals: "qwen/qwen3-max"
16568
+ },
16569
+ {
16570
+ equals: "qwen/qwen3-max-thinking"
16571
+ }
16572
+ ]
16281
16573
  },
16282
16574
  prices: {
16283
16575
  input_mtok: 1.2,
@@ -16451,6 +16743,17 @@ Compared to other leading proprietary and open-weights models Command A delivers
16451
16743
  },
16452
16744
  prices: {}
16453
16745
  },
16746
+ {
16747
+ id: "qwen3.5-plus-02-15",
16748
+ name: "Qwen3.5 plus-02-15",
16749
+ match: {
16750
+ equals: "qwen3.5-plus-02-15"
16751
+ },
16752
+ prices: {
16753
+ input_mtok: 0.4,
16754
+ output_mtok: 2.4
16755
+ }
16756
+ },
16454
16757
  {
16455
16758
  id: "qwerky-72b:free",
16456
16759
  name: "Qwerky 72B (free)",
@@ -17145,25 +17448,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
17145
17448
  output_mtok: 0.11
17146
17449
  }
17147
17450
  },
17148
- {
17149
- id: "Meta-Llama-3_1-70B-Instruct",
17150
- name: "Meta-Llama-3_1-70B-Instruct",
17151
- match: {
17152
- or: [
17153
- {
17154
- equals: "Meta-Llama-3_1-70B-Instruct"
17155
- },
17156
- {
17157
- equals: "meta-llama-3_1-70b-instruct"
17158
- }
17159
- ]
17160
- },
17161
- context_window: 131072,
17162
- prices: {
17163
- input_mtok: 0.74,
17164
- output_mtok: 0.74
17165
- }
17166
- },
17167
17451
  {
17168
17452
  id: "Meta-Llama-3_3-70B-Instruct",
17169
17453
  name: "Meta-Llama-3_3-70B-Instruct",
@@ -17259,25 +17543,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
17259
17543
  output_mtok: 0.7
17260
17544
  }
17261
17545
  },
17262
- {
17263
- id: "Qwen2.5-Coder-32B-Instruct",
17264
- name: "Qwen2.5-Coder-32B-Instruct",
17265
- match: {
17266
- or: [
17267
- {
17268
- equals: "Qwen2.5-Coder-32B-Instruct"
17269
- },
17270
- {
17271
- equals: "qwen2.5-coder-32b-instruct"
17272
- }
17273
- ]
17274
- },
17275
- context_window: 32768,
17276
- prices: {
17277
- input_mtok: 0.96,
17278
- output_mtok: 0.96
17279
- }
17280
- },
17281
17546
  {
17282
17547
  id: "Qwen2.5-VL-72B-Instruct",
17283
17548
  name: "Qwen2.5-VL-72B-Instruct",
@@ -17391,18 +17656,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
17391
17656
  input_mtok: 0.05,
17392
17657
  output_mtok: 0.18
17393
17658
  }
17394
- },
17395
- {
17396
- id: "llava-next-mistral-7b",
17397
- name: "llava-next-mistral-7b",
17398
- match: {
17399
- equals: "llava-next-mistral-7b"
17400
- },
17401
- context_window: 32768,
17402
- prices: {
17403
- input_mtok: 0.32,
17404
- output_mtok: 0.32
17405
- }
17406
17659
  }
17407
17660
  ]
17408
17661
  },
@@ -18324,6 +18577,28 @@ Compared to other leading proprietary and open-weights models Command A delivers
18324
18577
  equals: "xai"
18325
18578
  },
18326
18579
  extractors: [
18580
+ {
18581
+ api_flavor: "default",
18582
+ root: "usage",
18583
+ model_path: "model",
18584
+ mappings: [
18585
+ {
18586
+ path: "prompt_tokens",
18587
+ dest: "input_tokens",
18588
+ required: !0
18589
+ },
18590
+ {
18591
+ path: "cached_prompt_text_tokens",
18592
+ dest: "cache_read_tokens",
18593
+ required: !1
18594
+ },
18595
+ {
18596
+ path: "completion_tokens",
18597
+ dest: "output_tokens",
18598
+ required: !0
18599
+ }
18600
+ ]
18601
+ },
18327
18602
  {
18328
18603
  api_flavor: "chat",
18329
18604
  root: "usage",
@@ -18644,31 +18919,31 @@ function Ye(i, o, u) {
18644
18919
  u > r.start && (s = r.price);
18645
18920
  return s * o / 1e6;
18646
18921
  }
18647
- function R(i, o, u, s) {
18922
+ function z(i, o, u, s) {
18648
18923
  return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ye(i, o, s);
18649
18924
  }
18650
18925
  function Je(i, o) {
18651
18926
  let u = 0, s = 0;
18652
- const r = i.input_tokens ?? 0, _ = i.cache_read_tokens ?? 0, h = i.cache_write_tokens ?? 0, k = i.cache_audio_read_tokens ?? 0, q = i.output_audio_tokens ?? 0;
18653
- let I = i.input_audio_tokens ?? 0;
18654
- if (I -= k, I < 0)
18927
+ const r = i.input_tokens ?? 0, h = i.cache_read_tokens ?? 0, _ = i.cache_write_tokens ?? 0, k = i.cache_audio_read_tokens ?? 0, q = i.output_audio_tokens ?? 0;
18928
+ let y = i.input_audio_tokens ?? 0;
18929
+ if (y -= k, y < 0)
18655
18930
  throw new Error("cache_audio_read_tokens cannot be greater than input_audio_tokens");
18656
18931
  let B = i.input_tokens ?? 0;
18657
- if (B -= _, B -= h, B -= I, B < 0)
18932
+ if (B -= h, B -= _, B -= y, B < 0)
18658
18933
  throw new Error("Uncached text input tokens cannot be negative");
18659
- let y = _;
18660
- if (y -= k, y < 0)
18934
+ let I = h;
18935
+ if (I -= k, I < 0)
18661
18936
  throw new Error("cache_audio_read_tokens cannot be greater than cache_read_tokens");
18662
- u += R(o.input_mtok, B, "input_mtok", r), u += R(o.cache_read_mtok, y, "cache_read_mtok", r), u += R(o.cache_write_mtok, h, "cache_write_mtok", r), u += R(o.input_audio_mtok, I, "input_audio_mtok", r), u += R(o.cache_audio_read_mtok, k, "cache_audio_read_mtok", r);
18937
+ u += z(o.input_mtok, B, "input_mtok", r), u += z(o.cache_read_mtok, I, "cache_read_mtok", r), u += z(o.cache_write_mtok, _, "cache_write_mtok", r), u += z(o.input_audio_mtok, y, "input_audio_mtok", r), u += z(o.cache_audio_read_mtok, k, "cache_audio_read_mtok", r);
18663
18938
  let L = i.output_tokens ?? 0;
18664
18939
  if (L -= q, L < 0)
18665
18940
  throw new Error("output_audio_tokens cannot be greater than output_tokens");
18666
- s += R(o.output_mtok, L, "output_mtok", r), s += R(o.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
18667
- let C = u + s;
18668
- return o.requests_kcount !== void 0 && (C += o.requests_kcount / 1e3), {
18941
+ s += z(o.output_mtok, L, "output_mtok", r), s += z(o.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
18942
+ let G = u + s;
18943
+ return o.requests_kcount !== void 0 && (G += o.requests_kcount / 1e3), {
18669
18944
  input_price: u,
18670
18945
  output_price: s,
18671
- total_price: C
18946
+ total_price: G
18672
18947
  };
18673
18948
  }
18674
18949
  function Ze(i, o) {
@@ -18682,24 +18957,24 @@ function Ze(i, o) {
18682
18957
  if (o >= new Date(r.start_date))
18683
18958
  return s.prices;
18684
18959
  } else {
18685
- const _ = o.toISOString().slice(11, 19), h = r.start_time, k = r.end_time;
18686
- if (k < h) {
18687
- if (_ >= h || _ < k)
18960
+ const h = o.toISOString().slice(11, 19), _ = r.start_time, k = r.end_time;
18961
+ if (k < _) {
18962
+ if (h >= _ || h < k)
18688
18963
  return s.prices;
18689
- } else if (_ >= h && _ < k)
18964
+ } else if (h >= _ && h < k)
18690
18965
  return s.prices;
18691
18966
  }
18692
18967
  }
18693
18968
  return i.prices[0].prices;
18694
18969
  }
18695
- function E(i, o) {
18696
- return "or" in i ? i.or.some((u) => E(u, o)) : "and" in i ? i.and.every((u) => E(u, o)) : "equals" in i ? o === i.equals : "starts_with" in i ? o.startsWith(i.starts_with) : "ends_with" in i ? o.endsWith(i.ends_with) : "contains" in i ? o.includes(i.contains) : "regex" in i ? new RegExp(i.regex).test(o) : !1;
18970
+ function D(i, o) {
18971
+ return "or" in i ? i.or.some((u) => D(u, o)) : "and" in i ? i.and.every((u) => D(u, o)) : "equals" in i ? o === i.equals : "starts_with" in i ? o.startsWith(i.starts_with) : "ends_with" in i ? o.endsWith(i.ends_with) : "contains" in i ? o.includes(i.contains) : "regex" in i ? new RegExp(i.regex).test(o) : !1;
18697
18972
  }
18698
18973
  function Xe(i, o) {
18699
18974
  const u = o.toLowerCase().trim(), s = i.find((r) => r.id === u);
18700
- return s || i.find((r) => r.provider_match && E(r.provider_match, u));
18975
+ return s || i.find((r) => r.provider_match && D(r.provider_match, u));
18701
18976
  }
18702
- function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18977
+ function _e(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18703
18978
  if (s) {
18704
18979
  const r = Xe(i, s);
18705
18980
  if (r || s.toLowerCase() !== "litellm")
@@ -18708,20 +18983,20 @@ function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18708
18983
  if (u)
18709
18984
  return i.find((r) => new RegExp(r.api_pattern).test(u));
18710
18985
  if (o)
18711
- return i.find((r) => r.model_match && E(r.model_match, o));
18986
+ return i.find((r) => r.model_match && D(r.model_match, o));
18712
18987
  }
18713
18988
  function et(i, o) {
18714
- return i.find((u) => E(u.match, o));
18989
+ return i.find((u) => D(u.match, o));
18715
18990
  }
18716
18991
  function qe(i, o, u) {
18717
18992
  const s = et(i.models, o);
18718
18993
  if (s) return s;
18719
18994
  if (i.fallback_model_providers && u)
18720
18995
  for (const r of i.fallback_model_providers) {
18721
- const _ = u.find((h) => h.id === r);
18722
- if (_) {
18723
- const h = qe(_, o);
18724
- if (h) return h;
18996
+ const h = u.find((_) => _.id === r);
18997
+ if (h) {
18998
+ const _ = qe(h, o);
18999
+ if (_) return _;
18725
19000
  }
18726
19001
  }
18727
19002
  }
@@ -18730,23 +19005,23 @@ Promise.resolve(oe);
18730
19005
  function tt(i, o, u) {
18731
19006
  let s = o.toLowerCase().trim(), r = u?.providerId;
18732
19007
  if (r && r.toLowerCase() === "litellm" && s.includes("/")) {
18733
- const B = s.indexOf("/"), y = s.slice(0, B), L = s.slice(B + 1);
18734
- y && L && he(ae, { providerId: y }) && (r = y, s = L);
19008
+ const B = s.indexOf("/"), I = s.slice(0, B), L = s.slice(B + 1);
19009
+ I && L && _e(ae, { providerId: I }) && (r = I, s = L);
18735
19010
  }
18736
- const _ = u?.provider ?? he(ae, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: r });
18737
- if (!_) return null;
18738
- const h = qe(_, s, ae);
19011
+ const h = u?.provider ?? _e(ae, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: r });
18739
19012
  if (!h) return null;
18740
- const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Ze(h, k), I = Je(i, q);
19013
+ const _ = qe(h, s, ae);
19014
+ if (!_) return null;
19015
+ const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Ze(_, k), y = Je(i, q);
18741
19016
  return {
18742
19017
  auto_update_timestamp: void 0,
18743
- model: h,
19018
+ model: _,
18744
19019
  model_price: q,
18745
- provider: _,
18746
- ...I
19020
+ provider: h,
19021
+ ...y
18747
19022
  };
18748
19023
  }
18749
- const f = _e(ze(process.argv)).scriptName("genai-prices").command(
19024
+ const f = he(Re(process.argv)).scriptName("genai-prices").command(
18750
19025
  "list [provider]",
18751
19026
  "List providers and models",
18752
19027
  (i) => i.positional("provider", { describe: "Provider ID to filter", type: "string" })
@@ -18784,33 +19059,33 @@ function at() {
18784
19059
  requests: f.requests !== void 0 ? Number(f.requests) : void 0
18785
19060
  }, s = f.timestamp ? new Date(String(f.timestamp)) : void 0;
18786
19061
  let r = !1;
18787
- for (const _ of o) {
18788
- let h, k = _;
18789
- k.includes(":") && ([h, k] = k.split(":", 2));
19062
+ for (const h of o) {
19063
+ let _, k = h;
19064
+ k.includes(":") && ([_, k] = k.split(":", 2));
18790
19065
  try {
18791
- const q = tt(u, k, { providerId: h, timestamp: s });
19066
+ const q = tt(u, k, { providerId: _, timestamp: s });
18792
19067
  if (!q) {
18793
- r = !0, console.error(`No price found for model ${_}`);
19068
+ r = !0, console.error(`No price found for model ${h}`);
18794
19069
  continue;
18795
19070
  }
18796
- const I = q.model.context_window, B = [
19071
+ const y = q.model.context_window, B = [
18797
19072
  ["Provider", q.provider.name],
18798
19073
  ["Model", q.model.name ?? q.model.id],
18799
19074
  ["Model Prices", JSON.stringify(q.model_price)],
18800
- ["Context Window", I !== void 0 ? I.toLocaleString() : void 0],
19075
+ ["Context Window", y !== void 0 ? y.toLocaleString() : void 0],
18801
19076
  ["Total Price", `$${q.total_price}`],
18802
19077
  ["Input Price", `$${q.input_price}`],
18803
19078
  ["Output Price", `$${q.output_price}`]
18804
19079
  ];
18805
- for (const [y, L] of B)
18806
- L !== void 0 && console.log(`${y.padStart(14)}: ${L}`);
19080
+ for (const [I, L] of B)
19081
+ L !== void 0 && console.log(`${I.padStart(14)}: ${L}`);
18807
19082
  console.log("");
18808
19083
  } catch (q) {
18809
- r = !0, q instanceof Error && console.error(`Error for model ${_}:`, q.message);
19084
+ r = !0, q instanceof Error && console.error(`Error for model ${h}:`, q.message);
18810
19085
  }
18811
19086
  }
18812
19087
  process.exit(r ? 1 : 0);
18813
19088
  }
18814
- _e().showHelp(), process.exit(1);
19089
+ he().showHelp(), process.exit(1);
18815
19090
  }
18816
19091
  at();