@pydantic/genai-prices 0.0.51 → 0.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import he from "yargs";
3
- import { format as _e } from "util";
4
- import { resolve as ae, normalize as Qe } from "path";
5
- import { readFileSync as ke, writeFile as Ae, statSync as Pe } from "fs";
2
+ import _e from "yargs";
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";
6
6
  import "assert";
7
- import { fileURLToPath as Te } from "url";
8
- function Se() {
9
- return Ge() ? 0 : 1;
10
- }
7
+ import { fileURLToPath as Se } from "url";
11
8
  function Ge() {
12
- return Ce() && !process.defaultApp;
9
+ return Ce() ? 0 : 1;
13
10
  }
14
11
  function Ce() {
12
+ return Re() && !process.defaultApp;
13
+ }
14
+ function Re() {
15
15
  return !!process.versions.electron;
16
16
  }
17
- function Re(i) {
18
- return i.slice(Se() + 1);
17
+ function ze(i) {
18
+ return i.slice(Ge() + 1);
19
19
  }
20
20
  /**
21
21
  * @license
@@ -29,23 +29,23 @@ function $(i) {
29
29
  let u = "", s = !1;
30
30
  const r = i.match(/^-+/);
31
31
  for (let _ = r ? r[0].length : 0; _ < i.length; _++) {
32
- let k = i.charAt(_);
33
- s && (s = !1, k = k.toUpperCase()), _ !== 0 && (k === "-" || k === "_") ? s = !0 : k !== "-" && k !== "_" && (u += k);
32
+ let h = i.charAt(_);
33
+ s && (s = !1, h = h.toUpperCase()), _ !== 0 && (h === "-" || h === "_") ? s = !0 : h !== "-" && h !== "_" && (u += h);
34
34
  }
35
35
  return u;
36
36
  }
37
37
  }
38
- function ze(i, o) {
38
+ function Ne(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), k = i.charAt(r);
44
- _ !== k && r > 0 ? s += `${o}${u.charAt(r)}` : s += k;
43
+ const _ = u.charAt(r), h = i.charAt(r);
44
+ _ !== h && r > 0 ? s += `${o}${u.charAt(r)}` : s += h;
45
45
  }
46
46
  return s;
47
47
  }
48
- function Ne(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
  /**
@@ -53,14 +53,14 @@ function Ne(i) {
53
53
  * Copyright (c) 2016, Contributors
54
54
  * SPDX-License-Identifier: ISC
55
55
  */
56
- function Oe(i) {
56
+ function De(i) {
57
57
  if (Array.isArray(i))
58
- return i.map((k) => typeof k != "string" ? k + "" : k);
58
+ return i.map((h) => typeof h != "string" ? h + "" : h);
59
59
  i = i.trim();
60
60
  let o = 0, u = null, s = null, r = null;
61
61
  const _ = [];
62
- for (let k = 0; k < i.length; k++) {
63
- if (u = s, s = i.charAt(k), s === " " && !r) {
62
+ for (let h = 0; h < i.length; h++) {
63
+ if (u = s, s = i.charAt(h), s === " " && !r) {
64
64
  u !== " " && o++;
65
65
  continue;
66
66
  }
@@ -73,19 +73,19 @@ function Oe(i) {
73
73
  * Copyright (c) 2016, Contributors
74
74
  * SPDX-License-Identifier: ISC
75
75
  */
76
- var L;
76
+ var A;
77
77
  (function(i) {
78
78
  i.BOOLEAN = "boolean", i.STRING = "string", i.NUMBER = "number", i.ARRAY = "array";
79
- })(L || (L = {}));
79
+ })(A || (A = {}));
80
80
  /**
81
81
  * @license
82
82
  * Copyright (c) 2016, Contributors
83
83
  * SPDX-License-Identifier: ISC
84
84
  */
85
- let T;
86
- class De {
85
+ let S;
86
+ class Ee {
87
87
  constructor(o) {
88
- T = o;
88
+ S = o;
89
89
  }
90
90
  parse(o, u) {
91
91
  const s = Object.assign({
@@ -105,7 +105,7 @@ class De {
105
105
  number: void 0,
106
106
  __: void 0,
107
107
  key: void 0
108
- }, u), r = Oe(o), _ = typeof o == "string", k = Ee(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), h = Object.assign({
108
+ }, u), r = De(o), _ = typeof o == "string", h = je(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 De {
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), M = s.configObjects || [], B = s.envPrefix, S = h["populate--"], A = S ? "--" : "_", G = /* @__PURE__ */ Object.create(null), oe = /* @__PURE__ */ Object.create(null), C = s.__ || T.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 De {
136
136
  nargs: /* @__PURE__ */ Object.create(null),
137
137
  coercions: /* @__PURE__ */ Object.create(null),
138
138
  keys: []
139
- }, Q = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + h["negation-prefix"] + "(.+)");
139
+ }, P = /^-([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,34 +164,34 @@ class De {
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
- })), ve(s.key, k, s.default, m.arrays), Object.keys(q).forEach(function(e) {
167
+ })), xe(s.key, h, 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
- let y = null;
173
- Me();
172
+ let M = null;
173
+ Qe();
174
174
  let j = [];
175
- const w = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }), ne = {};
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
- } else if (a.match(/^--.+=/) || !h["short-option-groups"] && a.match(/^-.+=/))
184
+ } else if (a.match(/^--.+=/) || !k["short-option-groups"] && a.match(/^-.+=/))
185
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));
186
- else if (a.match(W) && h["boolean-negation"])
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
- else if (a.match(/^--.+/) || !h["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(Q)) && !g(t, m.bools) && !g(t, m.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, z(t))));
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))));
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(Q))
192
+ else if (a.match(/^-.\..+/) && !a.match(P))
193
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(Q)) {
194
+ else if (a.match(/^-[^-]+/) && !a.match(P)) {
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] === "=") {
@@ -212,45 +212,45 @@ class De {
212
212
  } else
213
213
  b(l[x], z(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(Q)) && !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(Q) && g(a.slice(1), m.bools))
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
217
  t = a.slice(1), b(t, z(t));
218
218
  else if (a === "--") {
219
219
  j = r.slice(e + 1);
220
220
  break;
221
- } else if (h["halt-at-non-option"]) {
221
+ } else if (k["halt-at-non-option"]) {
222
222
  j = r.slice(e);
223
223
  break;
224
224
  } else
225
225
  U(a);
226
226
  }
227
- re(w, !0), re(w, !1), qe(w), fe(), me(w, m.aliases, q, !0), be(w), h["set-placeholder-key"] && we(w), Object.keys(m.counts).forEach(function(e) {
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
228
  N(w, e.split(".")) || b(e, 0);
229
- }), S && j.length && (w[A] = []), j.forEach(function(e) {
230
- w[A].push(e);
231
- }), h["camel-case-expansion"] && h["strip-dashed"] && Object.keys(w).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
229
+ }), I && j.length && (w[L] = []), j.forEach(function(e) {
230
+ w[L].push(e);
231
+ }), k["camel-case-expansion"] && k["strip-dashed"] && Object.keys(w).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
232
232
  delete w[e];
233
- }), h["strip-aliased"] && [].concat(...Object.keys(k).map((e) => k[e])).forEach((e) => {
234
- h["camel-case-expansion"] && e.includes("-") && delete w[e.split(".").map((a) => $(a)).join(".")], delete w[e];
233
+ }), k["strip-aliased"] && [].concat(...Object.keys(h).map((e) => h[e])).forEach((e) => {
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
240
  function V(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 P(n) || (y = Error(C("Argument unexpected for: %s", a))), b(a, z(a)), e;
244
- let p = P(n) ? 0 : 1;
245
- if (h["nargs-eats-options"])
246
- c.length - (e + 1) + p < l && (y = Error(C("Not enough arguments following: %s", a))), p = l;
243
+ return T(n) || (M = Error(C("Argument unexpected for: %s", a))), b(a, z(a)), e;
244
+ let p = T(n) ? 0 : 1;
245
+ if (k["nargs-eats-options"])
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(Q) || K(c[t])); t++)
248
+ for (t = e + 1; t < c.length && (!c[t].match(/^-[^0-9]/) || c[t].match(P) || H(c[t])); t++)
249
249
  p++;
250
- p < l && (y = Error(C("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
- for (!P(n) && d > 0 && (b(a, n), d--), t = e + 1; t < d + e + 1; t++)
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
  }
@@ -259,66 +259,66 @@ class De {
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 (P(l) || P(n) && /^-/.test(l) && !Q.test(l) && !K(l)) {
262
+ else if (T(l) || T(n) && /^-/.test(l) && !P.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
- P(n) || t.push(Y(a, n, !0));
269
- for (let d = e + 1; d < c.length && !(!h["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !Q.test(l) && !K(l))); d++)
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) && !H(l))); d++)
270
270
  e = d, t.push(Y(a, l, _));
271
271
  }
272
- return typeof p == "number" && (p && t.length < p || isNaN(p) && t.length === 0) && (y = Error(C("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
274
  function b(e, a, c = _) {
275
- if (/-/.test(e) && h["camel-case-expansion"]) {
275
+ if (/-/.test(e) && k["camel-case-expansion"]) {
276
276
  const l = e.split(".").map(function(p) {
277
277
  return $(p);
278
278
  }).join(".");
279
- se(e, l);
279
+ re(e, l);
280
280
  }
281
281
  const n = Y(e, a, c), t = e.split(".");
282
282
  O(w, t, n), m.aliases[e] && m.aliases[e].forEach(function(l) {
283
283
  const p = l.split(".");
284
284
  O(w, p, n);
285
- }), t.length > 1 && h["dot-notation"] && (m.aliases[t[0]] || []).forEach(function(l) {
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
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
- Object.defineProperty(ne, p, {
290
+ Object.defineProperty(se, p, {
291
291
  enumerable: !0,
292
292
  get() {
293
293
  return a;
294
294
  },
295
295
  set(d) {
296
- a = typeof d == "string" ? T.normalize(d) : d;
296
+ a = typeof d == "string" ? S.normalize(d) : d;
297
297
  }
298
298
  });
299
299
  });
300
300
  }
301
- function se(e, a) {
302
- m.aliases[e] && m.aliases[e].length || (m.aliases[e] = [a], G[a] = !0), m.aliases[a] && m.aliases[a].length || se(a, e);
301
+ function re(e, a) {
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 = je(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
305
+ c && (a = Ve(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);
309
- return g(e, m.counts) && (P(n) || typeof n == "boolean") && (n = Z()), g(e, m.normalize) && g(e, m.arrays) && (Array.isArray(a) ? n = a.map((t) => T.normalize(t)) : n = T.normalize(a)), n;
307
+ return K(e, t);
308
+ }) : K(e, a);
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 !h["parse-positional-numbers"] && e === "_" || !g(e, m.strings) && !g(e, m.bools) && !Array.isArray(a) && (Ne(a) && h["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !P(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
- function qe(e) {
314
+ function fe(e) {
315
315
  const a = /* @__PURE__ */ Object.create(null);
316
- me(a, m.aliases, q), Object.keys(m.configs).forEach(function(c) {
316
+ ue(a, m.aliases, q), Object.keys(m.configs).forEach(function(c) {
317
317
  const n = e[c] || a[c];
318
318
  if (n)
319
319
  try {
320
320
  let t = null;
321
- const l = T.resolve(T.cwd(), n), p = m.configs[c];
321
+ const l = S.resolve(S.cwd(), n), p = m.configs[c];
322
322
  if (typeof p == "function") {
323
323
  try {
324
324
  t = p(l);
@@ -326,32 +326,32 @@ class De {
326
326
  t = d;
327
327
  }
328
328
  if (t instanceof Error) {
329
- y = t;
329
+ M = t;
330
330
  return;
331
331
  }
332
332
  } else
333
- t = T.require(l);
333
+ t = S.require(l);
334
334
  J(t);
335
335
  } catch (t) {
336
- t.name === "PermissionDenied" ? y = t : e[c] && (y = Error(C("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) && h["dot-notation"] ? J(n, t) : (!N(w, t.split(".")) || g(t, m.arrays) && h["combine-arrays"]) && b(t, n);
343
+ typeof n == "object" && n !== null && !Array.isArray(n) && k["dot-notation"] ? J(n, t) : (!N(w, t.split(".")) || g(t, m.arrays) && k["combine-arrays"]) && b(t, n);
344
344
  });
345
345
  }
346
- function fe() {
347
- typeof M < "u" && M.forEach(function(e) {
346
+ function be() {
347
+ typeof y < "u" && y.forEach(function(e) {
348
348
  J(e);
349
349
  });
350
350
  }
351
- function re(e, a) {
351
+ function me(e, a) {
352
352
  if (typeof B > "u")
353
353
  return;
354
- const c = typeof B == "string" ? B : "", n = T.env();
354
+ const c = typeof B == "string" ? B : "", n = S.env();
355
355
  Object.keys(n).forEach(function(t) {
356
356
  if (c === "" || t.lastIndexOf(c, 0) === 0) {
357
357
  const l = t.split("__").map(function(p, d) {
@@ -361,36 +361,36 @@ class De {
361
361
  }
362
362
  });
363
363
  }
364
- function be(e) {
364
+ function we(e) {
365
365
  let a;
366
366
  const c = /* @__PURE__ */ new Set();
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
  });
374
374
  } catch (t) {
375
- y = t;
375
+ M = t;
376
376
  }
377
377
  });
378
378
  }
379
- function we(e) {
379
+ function ve(e) {
380
380
  return m.keys.forEach((a) => {
381
381
  ~a.indexOf(".") || typeof e[a] > "u" && (e[a] = void 0);
382
382
  }), e;
383
383
  }
384
- function me(e, a, c, n = !1) {
384
+ function ue(e, a, c, n = !1) {
385
385
  Object.keys(c).forEach(function(t) {
386
- N(e, t.split(".")) || (O(e, t.split("."), c[t]), n && (oe[t] = !0), (a[t] || []).forEach(function(l) {
386
+ N(e, t.split(".")) || (O(e, t.split("."), c[t]), n && (ne[t] = !0), (a[t] || []).forEach(function(l) {
387
387
  N(e, l.split(".")) || O(e, l.split("."), c[t]);
388
388
  }));
389
389
  });
390
390
  }
391
391
  function N(e, a) {
392
392
  let c = e;
393
- h["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(t) {
393
+ k["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(t) {
394
394
  c = c[t] || {};
395
395
  });
396
396
  const n = a[a.length - 1];
@@ -398,24 +398,24 @@ class De {
398
398
  }
399
399
  function O(e, a, c) {
400
400
  let n = e;
401
- h["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(v) {
402
- v = ce(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];
401
+ k["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(v) {
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];
403
403
  });
404
- const t = ce(a[a.length - 1]), l = g(a.join("."), m.arrays), p = Array.isArray(c);
405
- let d = h["duplicate-arguments-array"];
406
- !d && g(t, m.nargs) && (d = !0, (!P(n[t]) && m.nargs[t] === 1 || Array.isArray(n[t]) && n[t].length === m.nargs[t]) && (n[t] = void 0)), c === Z() ? n[t] = Z(n[t]) : Array.isArray(n[t]) ? d && l && p ? n[t] = h["flatten-duplicate-arrays"] ? n[t].concat(c) : (Array.isArray(n[t][0]) ? n[t] : [n[t]]).concat([c]) : !d && !!l == !!p ? n[t] = c : n[t] = n[t].concat([c]) : n[t] === void 0 && l ? n[t] = p ? c : [c] : d && !(n[t] === void 0 || g(t, m.counts) || g(t, m.bools)) ? n[t] = [n[t], c] : n[t] = c;
404
+ const t = pe(a[a.length - 1]), l = g(a.join("."), m.arrays), p = Array.isArray(c);
405
+ let d = k["duplicate-arguments-array"];
406
+ !d && g(t, m.nargs) && (d = !0, (!T(n[t]) && m.nargs[t] === 1 || Array.isArray(n[t]) && n[t].length === m.nargs[t]) && (n[t] = void 0)), c === Z() ? n[t] = Z(n[t]) : Array.isArray(n[t]) ? d && l && p ? n[t] = k["flatten-duplicate-arrays"] ? n[t].concat(c) : (Array.isArray(n[t][0]) ? n[t] : [n[t]]).concat([c]) : !d && !!l == !!p ? n[t] = c : n[t] = n[t].concat([c]) : n[t] === void 0 && l ? n[t] = p ? c : [c] : d && !(n[t] === void 0 || g(t, m.counts) || g(t, m.bools)) ? n[t] = [n[t], c] : n[t] = c;
407
407
  }
408
- function ve(...e) {
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(k[c] || []), m.aliases[c].concat(c).forEach(function(n) {
412
- if (/-/.test(n) && h["camel-case-expansion"]) {
411
+ m.aliases[c] || (m.aliases[c] = [].concat(h[c] || []), m.aliases[c].concat(c).forEach(function(n) {
412
+ if (/-/.test(n) && k["camel-case-expansion"]) {
413
413
  const t = $(n);
414
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
- if (n.length > 1 && /[A-Z]/.test(n) && h["camel-case-expansion"]) {
418
- const t = ze(n, "-");
417
+ if (n.length > 1 && /[A-Z]/.test(n) && k["camel-case-expansion"]) {
418
+ const t = Ne(n, "-");
419
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) {
@@ -430,25 +430,25 @@ class De {
430
430
  const c = [].concat(m.aliases[e] || [], e), n = Object.keys(a), t = c.find((l) => n.includes(l));
431
431
  return t ? a[t] : !1;
432
432
  }
433
- function ue(e) {
433
+ function ce(e) {
434
434
  const a = Object.keys(m);
435
435
  return [].concat(a.map((n) => m[n])).some(function(n) {
436
436
  return Array.isArray(n) ? n.includes(e) : n[e];
437
437
  });
438
438
  }
439
- function xe(e, ...a) {
439
+ function Be(e, ...a) {
440
440
  return [].concat(...a).some(function(n) {
441
441
  const t = e.match(n);
442
- return t && ue(t[1]);
442
+ return t && ce(t[1]);
443
443
  });
444
444
  }
445
- function Be(e) {
446
- if (e.match(Q) || !e.match(/^-[^-]+/))
445
+ function ye(e) {
446
+ if (e.match(P) || !e.match(/^-[^-]+/))
447
447
  return !1;
448
448
  let a = !0, c;
449
449
  const n = e.slice(1).split("");
450
450
  for (let t = 0; t < n.length; t++) {
451
- if (c = e.slice(t + 2), !ue(n[t])) {
451
+ if (c = e.slice(t + 2), !ce(n[t])) {
452
452
  a = !1;
453
453
  break;
454
454
  }
@@ -457,44 +457,44 @@ class De {
457
457
  }
458
458
  return a;
459
459
  }
460
- function K(e) {
461
- return h["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(Q) || Be(e) ? !1 : !xe(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
463
+ function Ie(e) {
464
+ return e = e.replace(/^-{3,}/, "--"), e.match(P) || ye(e) ? !1 : !Be(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
465
465
  }
466
466
  function z(e) {
467
- return !g(e, m.bools) && !g(e, m.counts) && `${e}` in q ? q[e] : Ie(Le(e));
467
+ return !g(e, m.bools) && !g(e, m.counts) && `${e}` in q ? q[e] : Le(Me(e));
468
468
  }
469
- function Ie(e) {
469
+ function Le(e) {
470
470
  return {
471
- [L.BOOLEAN]: !0,
472
- [L.STRING]: "",
473
- [L.NUMBER]: void 0,
474
- [L.ARRAY]: []
471
+ [A.BOOLEAN]: !0,
472
+ [A.STRING]: "",
473
+ [A.NUMBER]: void 0,
474
+ [A.ARRAY]: []
475
475
  }[e];
476
476
  }
477
- function Le(e) {
478
- let a = L.BOOLEAN;
479
- return g(e, m.strings) ? a = L.STRING : g(e, m.numbers) ? a = L.NUMBER : g(e, m.bools) ? a = L.BOOLEAN : g(e, m.arrays) && (a = L.ARRAY), a;
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;
480
480
  }
481
- function P(e) {
481
+ function T(e) {
482
482
  return e === void 0;
483
483
  }
484
- function Me() {
485
- Object.keys(m.counts).find((e) => g(e, m.arrays) ? (y = Error(C("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, m.nargs) ? (y = Error(C("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
484
+ function Qe() {
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),
489
- argv: Object.assign(ne, w),
490
- configuration: h,
491
- defaulted: Object.assign({}, oe),
492
- error: y,
489
+ argv: Object.assign(se, w),
490
+ configuration: k,
491
+ defaulted: Object.assign({}, ne),
492
+ error: M,
493
493
  newAliases: Object.assign({}, G)
494
494
  };
495
495
  }
496
496
  }
497
- function Ee(i) {
497
+ function je(i) {
498
498
  const o = [], u = /* @__PURE__ */ Object.create(null);
499
499
  let s = !0;
500
500
  for (Object.keys(i).forEach(function(r) {
@@ -503,16 +503,16 @@ function Ee(i) {
503
503
  s = !1;
504
504
  for (let r = 0; r < o.length; r++)
505
505
  for (let _ = r + 1; _ < o.length; _++)
506
- if (o[r].filter(function(h) {
507
- return o[_].indexOf(h) !== -1;
506
+ if (o[r].filter(function(k) {
507
+ return o[_].indexOf(k) !== -1;
508
508
  }).length) {
509
509
  o[r] = o[r].concat(o[_]), o.splice(_, 1), s = !0;
510
510
  break;
511
511
  }
512
512
  }
513
513
  return o.forEach(function(r) {
514
- r = r.filter(function(k, h, q) {
515
- return q.indexOf(k) === h;
514
+ r = r.filter(function(h, k, q) {
515
+ return q.indexOf(h) === k;
516
516
  });
517
517
  const _ = r.pop();
518
518
  _ !== void 0 && typeof _ == "string" && (u[_] = r);
@@ -521,10 +521,10 @@ function Ee(i) {
521
521
  function Z(i) {
522
522
  return i !== void 0 ? i + 1 : 1;
523
523
  }
524
- function ce(i) {
524
+ function pe(i) {
525
525
  return i === "__proto__" ? "___proto___" : i;
526
526
  }
527
- function je(i) {
527
+ function Ve(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
  /**
@@ -536,42 +536,42 @@ function je(i) {
536
536
  * SPDX-License-Identifier: ISC
537
537
  */
538
538
  var X, ee, te;
539
- const pe = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12, le = (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
- if (le && Number(le.match(/^([^.]+)/)[1]) < pe)
541
- throw Error(`yargs parser supports a minimum Node.js version of ${pe}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
542
- const Ve = process ? process.env : {};
543
- new De({
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
+ if (de && Number(de.match(/^([^.]+)/)[1]) < le)
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({
544
544
  cwd: process.cwd,
545
- env: () => Ve,
546
- format: _e,
547
- normalize: Qe,
548
- resolve: ae,
545
+ env: () => Fe,
546
+ format: ke,
547
+ normalize: Ae,
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:
551
551
  require: (i) => {
552
552
  if (typeof require < "u")
553
553
  return require(i);
554
554
  if (i.match(/\.json$/))
555
- return JSON.parse(ke(i, "utf8"));
555
+ return JSON.parse(ge(i, "utf8"));
556
556
  throw Error("only .json config files are supported in ESM");
557
557
  }
558
558
  });
559
- const Fe = {
559
+ const Ke = {
560
560
  fs: {
561
- readFileSync: ke,
562
- writeFile: Ae
561
+ readFileSync: ge,
562
+ writeFile: Pe
563
563
  },
564
- format: _e,
565
- resolve: ae,
564
+ format: ke,
565
+ resolve: ie,
566
566
  exists: (i) => {
567
567
  try {
568
- return Pe(i).isFile();
568
+ return Te(i).isFile();
569
569
  } catch {
570
570
  return !1;
571
571
  }
572
572
  }
573
573
  };
574
- let I;
574
+ let Q;
575
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 = [];
@@ -587,15 +587,15 @@ class He {
587
587
  directory: this.directory,
588
588
  locale: this.locale,
589
589
  cb: s
590
- })) : s(), I.format.apply(I.format, [this.cache[this.locale][u] || u].concat(o));
590
+ })) : s(), Q.format.apply(Q.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
594
  let _ = function() {
595
595
  };
596
596
  typeof o[o.length - 1] == "function" && (_ = o.pop()), this.cache[this.locale] || this._readLocaleFile();
597
- let k = r === 1 ? u : s;
598
- this.cache[this.locale][u] && (k = this.cache[this.locale][u][r === 1 ? "one" : "other"]), !this.cache[this.locale][u] && this.updateFiles ? (this.cache[this.locale][u] = {
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] = {
599
599
  one: u,
600
600
  other: s
601
601
  }, this._enqueueWrite({
@@ -603,8 +603,8 @@ class He {
603
603
  locale: this.locale,
604
604
  cb: _
605
605
  })) : _();
606
- const h = [k];
607
- return ~k.indexOf("%d") && h.push(r), I.format.apply(I.format, h.concat(o));
606
+ const k = [h];
607
+ return ~h.indexOf("%d") && k.push(r), Q.format.apply(Q.format, k.concat(o));
608
608
  }
609
609
  setLocale(o) {
610
610
  this.locale = o;
@@ -620,16 +620,16 @@ class He {
620
620
  _taggedLiteral(o, ...u) {
621
621
  let s = "";
622
622
  return o.forEach(function(r, _) {
623
- const k = u[_ + 1];
624
- s += r, typeof k < "u" && (s += "%s");
623
+ const h = u[_ + 1];
624
+ s += r, typeof h < "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, k = this._resolveLocaleFile(s, r), h = JSON.stringify(this.cache[r], null, 2);
632
- I.fs.writeFile(k, h, "utf-8", function(q) {
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
633
  o.writeQueue.shift(), o.writeQueue.length > 0 && o._processWriteQueue(), _(q);
634
634
  });
635
635
  }
@@ -637,7 +637,7 @@ class He {
637
637
  let o = {};
638
638
  const u = this._resolveLocaleFile(this.directory, this.locale);
639
639
  try {
640
- I.fs.readFileSync && (o = JSON.parse(I.fs.readFileSync(u, "utf-8")));
640
+ Q.fs.readFileSync && (o = JSON.parse(Q.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,19 +647,19 @@ class He {
647
647
  this.cache[this.locale] = o;
648
648
  }
649
649
  _resolveLocaleFile(o, u) {
650
- let s = I.resolve(o, "./", u + ".json");
650
+ let s = Q.resolve(o, "./", u + ".json");
651
651
  if (this.fallbackToLanguage && !this._fileExistsSync(s) && ~u.lastIndexOf("_")) {
652
- const r = I.resolve(o, "./", u.split("_")[0] + ".json");
652
+ const r = Q.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 I.exists(o);
658
+ return Q.exists(o);
659
659
  }
660
660
  }
661
- function Ke(i, o) {
662
- I = o;
661
+ function $e(i, o) {
662
+ Q = o;
663
663
  const u = new He(i);
664
664
  return {
665
665
  __: u.__.bind(u),
@@ -670,19 +670,19 @@ function Ke(i, o) {
670
670
  locale: u.locale
671
671
  };
672
672
  }
673
- const $e = (i) => Ke(i, Fe);
673
+ const We = (i) => $e(i, Ke);
674
674
  let D;
675
675
  try {
676
- D = Te(import.meta.url);
676
+ D = Se(import.meta.url);
677
677
  } catch {
678
678
  D = process.cwd();
679
679
  }
680
- const We = D.substring(0, D.lastIndexOf("node_modules"));
681
- We || process.cwd(), process.cwd, process.exit, process.nextTick, typeof process.stdout.columns < "u" && process.stdout.columns, $e({
682
- directory: ae(D, "../../../locales"),
680
+ const Ue = D.substring(0, D.lastIndexOf("node_modules"));
681
+ Ue || process.cwd(), process.cwd, process.exit, process.nextTick, typeof process.stdout.columns < "u" && process.stdout.columns, We({
682
+ directory: ie(D, "../../../locales"),
683
683
  updateFiles: !1
684
684
  });
685
- const ie = [
685
+ const oe = [
686
686
  {
687
687
  id: "anthropic",
688
688
  name: "Anthropic",
@@ -9743,6 +9743,12 @@ Compared to other leading proprietary and open-weights models Command A delivers
9743
9743
  },
9744
9744
  {
9745
9745
  equals: "gpt-5-2-chat-latest"
9746
+ },
9747
+ {
9748
+ equals: "gpt-5.2-codex"
9749
+ },
9750
+ {
9751
+ equals: "gpt-5-2-codex"
9746
9752
  }
9747
9753
  ]
9748
9754
  },
@@ -14221,6 +14227,17 @@ Compared to other leading proprietary and open-weights models Command A delivers
14221
14227
  output_mtok: 1.2
14222
14228
  }
14223
14229
  },
14230
+ {
14231
+ id: "moonshotai/kimi-k2.5",
14232
+ name: "Kimi K2.5",
14233
+ match: {
14234
+ equals: "moonshotai/kimi-k2.5"
14235
+ },
14236
+ prices: {
14237
+ input_mtok: 0.6,
14238
+ output_mtok: 3
14239
+ }
14240
+ },
14224
14241
  {
14225
14242
  id: "moonshotai/kimi-vl-a3b-thinking:free",
14226
14243
  match: {
@@ -15647,6 +15664,17 @@ Compared to other leading proprietary and open-weights models Command A delivers
15647
15664
  },
15648
15665
  prices: {}
15649
15666
  },
15667
+ {
15668
+ id: "qwen/qwen3-max-thinking",
15669
+ name: "Qwen 3 Max Thinking",
15670
+ match: {
15671
+ equals: "qwen/qwen3-max-thinking"
15672
+ },
15673
+ prices: {
15674
+ input_mtok: 1.2,
15675
+ output_mtok: 6
15676
+ }
15677
+ },
15650
15678
  {
15651
15679
  id: "qwen/qwq-32b",
15652
15680
  match: {
@@ -17934,6 +17962,51 @@ Compared to other leading proprietary and open-weights models Command A delivers
17934
17962
  output_mtok: 0.5
17935
17963
  }
17936
17964
  },
17965
+ {
17966
+ id: "grok-4-fast-non-reasoning",
17967
+ name: "Grok 4 Fast Non-Reasoning",
17968
+ description: "A frontier multimodal model optimized specifically for high-performance agentic tool calling.",
17969
+ match: {
17970
+ or: [
17971
+ {
17972
+ equals: "grok-4-fast-non-reasoning"
17973
+ },
17974
+ {
17975
+ equals: "grok-4-fast-non-reasoning-latest"
17976
+ }
17977
+ ]
17978
+ },
17979
+ context_window: 2e6,
17980
+ prices: {
17981
+ input_mtok: 0.2,
17982
+ cache_read_mtok: 0.05,
17983
+ output_mtok: 0.5
17984
+ }
17985
+ },
17986
+ {
17987
+ id: "grok-4-fast-reasoning",
17988
+ name: "Grok 4 Fast Reasoning",
17989
+ description: "A frontier multimodal model optimized specifically for high-performance agentic tool calling.",
17990
+ match: {
17991
+ or: [
17992
+ {
17993
+ equals: "grok-4-fast"
17994
+ },
17995
+ {
17996
+ equals: "grok-4-fast-reasoning"
17997
+ },
17998
+ {
17999
+ equals: "grok-4-fast-reasoning-latest"
18000
+ }
18001
+ ]
18002
+ },
18003
+ context_window: 2e6,
18004
+ prices: {
18005
+ input_mtok: 0.2,
18006
+ cache_read_mtok: 0.05,
18007
+ output_mtok: 0.5
18008
+ }
18009
+ },
17937
18010
  {
17938
18011
  id: "grok-code-fast-1",
17939
18012
  name: "Grok Code Fast 1",
@@ -17961,7 +18034,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
17961
18034
  ]
17962
18035
  }
17963
18036
  ];
17964
- function Ue(i, o, u) {
18037
+ function Ye(i, o, u) {
17965
18038
  if (o <= 0) return 0;
17966
18039
  let s = i.base;
17967
18040
  for (const r of i.tiers)
@@ -17969,25 +18042,25 @@ function Ue(i, o, u) {
17969
18042
  return s * o / 1e6;
17970
18043
  }
17971
18044
  function R(i, o, u, s) {
17972
- return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ue(i, o, s);
18045
+ return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ye(i, o, s);
17973
18046
  }
17974
- function Ye(i, o) {
18047
+ function Je(i, o) {
17975
18048
  let u = 0, s = 0;
17976
- const r = i.input_tokens ?? 0, _ = i.cache_read_tokens ?? 0, k = i.cache_write_tokens ?? 0, h = i.cache_audio_read_tokens ?? 0, q = i.output_audio_tokens ?? 0;
17977
- let M = i.input_audio_tokens ?? 0;
17978
- if (M -= h, M < 0)
18049
+ 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;
18050
+ let y = i.input_audio_tokens ?? 0;
18051
+ if (y -= k, y < 0)
17979
18052
  throw new Error("cache_audio_read_tokens cannot be greater than input_audio_tokens");
17980
18053
  let B = i.input_tokens ?? 0;
17981
- if (B -= _, B -= k, B -= M, B < 0)
18054
+ if (B -= _, B -= h, B -= y, B < 0)
17982
18055
  throw new Error("Uncached text input tokens cannot be negative");
17983
- let S = _;
17984
- if (S -= h, S < 0)
18056
+ let I = _;
18057
+ if (I -= k, I < 0)
17985
18058
  throw new Error("cache_audio_read_tokens cannot be greater than cache_read_tokens");
17986
- u += R(o.input_mtok, B, "input_mtok", r), u += R(o.cache_read_mtok, S, "cache_read_mtok", r), u += R(o.cache_write_mtok, k, "cache_write_mtok", r), u += R(o.input_audio_mtok, M, "input_audio_mtok", r), u += R(o.cache_audio_read_mtok, h, "cache_audio_read_mtok", r);
17987
- let A = i.output_tokens ?? 0;
17988
- if (A -= q, A < 0)
18059
+ u += R(o.input_mtok, B, "input_mtok", r), u += R(o.cache_read_mtok, I, "cache_read_mtok", r), u += R(o.cache_write_mtok, h, "cache_write_mtok", r), u += R(o.input_audio_mtok, y, "input_audio_mtok", r), u += R(o.cache_audio_read_mtok, k, "cache_audio_read_mtok", r);
18060
+ let L = i.output_tokens ?? 0;
18061
+ if (L -= q, L < 0)
17989
18062
  throw new Error("output_audio_tokens cannot be greater than output_tokens");
17990
- s += R(o.output_mtok, A, "output_mtok", r), s += R(o.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
18063
+ s += R(o.output_mtok, L, "output_mtok", r), s += R(o.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
17991
18064
  let G = u + s;
17992
18065
  return o.requests_kcount !== void 0 && (G += o.requests_kcount / 1e3), {
17993
18066
  input_price: u,
@@ -17995,7 +18068,7 @@ function Ye(i, o) {
17995
18068
  total_price: G
17996
18069
  };
17997
18070
  }
17998
- function Je(i, o) {
18071
+ function Ze(i, o) {
17999
18072
  if (!Array.isArray(i.prices))
18000
18073
  return i.prices;
18001
18074
  for (let u = i.prices.length - 1; u >= 0; u--) {
@@ -18006,11 +18079,11 @@ function Je(i, o) {
18006
18079
  if (o >= new Date(r.start_date))
18007
18080
  return s.prices;
18008
18081
  } else {
18009
- const _ = o.toISOString().slice(11, 19), k = r.start_time, h = r.end_time;
18010
- if (h < k) {
18011
- if (_ >= k || _ < h)
18082
+ const _ = o.toISOString().slice(11, 19), h = r.start_time, k = r.end_time;
18083
+ if (k < h) {
18084
+ if (_ >= h || _ < k)
18012
18085
  return s.prices;
18013
- } else if (_ >= k && _ < h)
18086
+ } else if (_ >= h && _ < k)
18014
18087
  return s.prices;
18015
18088
  }
18016
18089
  }
@@ -18019,13 +18092,16 @@ function Je(i, o) {
18019
18092
  function E(i, o) {
18020
18093
  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;
18021
18094
  }
18022
- function Ze(i, o) {
18095
+ function Xe(i, o) {
18023
18096
  const u = o.toLowerCase().trim(), s = i.find((r) => r.id === u);
18024
18097
  return s || i.find((r) => r.provider_match && E(r.provider_match, u));
18025
18098
  }
18026
- function Xe(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18027
- if (s)
18028
- return Ze(i, s);
18099
+ function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18100
+ if (s) {
18101
+ const r = Xe(i, s);
18102
+ if (r || s.toLowerCase() !== "litellm")
18103
+ return r;
18104
+ }
18029
18105
  if (u)
18030
18106
  return i.find((r) => new RegExp(r.api_pattern).test(u));
18031
18107
  if (o)
@@ -18034,35 +18110,40 @@ function Xe(i, { modelId: o, providerApiUrl: u, providerId: s }) {
18034
18110
  function et(i, o) {
18035
18111
  return i.find((u) => E(u.match, o));
18036
18112
  }
18037
- function ge(i, o, u) {
18113
+ function qe(i, o, u) {
18038
18114
  const s = et(i.models, o);
18039
18115
  if (s) return s;
18040
18116
  if (i.fallback_model_providers && u)
18041
18117
  for (const r of i.fallback_model_providers) {
18042
- const _ = u.find((k) => k.id === r);
18118
+ const _ = u.find((h) => h.id === r);
18043
18119
  if (_) {
18044
- const k = ge(_, o);
18045
- if (k) return k;
18120
+ const h = qe(_, o);
18121
+ if (h) return h;
18046
18122
  }
18047
18123
  }
18048
18124
  }
18049
- let de = ie;
18050
- Promise.resolve(ie);
18125
+ let ae = oe;
18126
+ Promise.resolve(oe);
18051
18127
  function tt(i, o, u) {
18052
- const s = o.toLowerCase().trim(), r = u?.provider ?? Xe(de, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: u?.providerId });
18053
- if (!r) return null;
18054
- const _ = ge(r, s, de);
18128
+ let s = o.toLowerCase().trim(), r = u?.providerId;
18129
+ if (r && r.toLowerCase() === "litellm" && s.includes("/")) {
18130
+ const B = s.indexOf("/"), I = s.slice(0, B), L = s.slice(B + 1);
18131
+ I && L && he(ae, { providerId: I }) && (r = I, s = L);
18132
+ }
18133
+ const _ = u?.provider ?? he(ae, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: r });
18055
18134
  if (!_) return null;
18056
- const k = u?.timestamp ?? /* @__PURE__ */ new Date(), h = Je(_, k), q = Ye(i, h);
18135
+ const h = qe(_, s, ae);
18136
+ if (!h) return null;
18137
+ const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Ze(h, k), y = Je(i, q);
18057
18138
  return {
18058
18139
  auto_update_timestamp: void 0,
18059
- model: _,
18060
- model_price: h,
18061
- provider: r,
18062
- ...q
18140
+ model: h,
18141
+ model_price: q,
18142
+ provider: _,
18143
+ ...y
18063
18144
  };
18064
18145
  }
18065
- const f = he(Re(process.argv)).scriptName("genai-prices").command(
18146
+ const f = _e(ze(process.argv)).scriptName("genai-prices").command(
18066
18147
  "list [provider]",
18067
18148
  "List providers and models",
18068
18149
  (i) => i.positional("provider", { describe: "Provider ID to filter", type: "string" })
@@ -18073,7 +18154,7 @@ const f = he(Re(process.argv)).scriptName("genai-prices").command(
18073
18154
  ).option("auto-update", { describe: "Enable auto-update from GitHub", type: "boolean" }).option("input-tokens", { type: "number" }).option("cache-write-tokens", { type: "number" }).option("cache-read-tokens", { type: "number" }).option("output-tokens", { type: "number" }).option("input-audio-tokens", { type: "number" }).option("cache-audio-read-tokens", { type: "number" }).option("output-audio-tokens", { type: "number" }).option("requests", { type: "number" }).option("provider", { type: "string" }).option("timestamp", { describe: "RFC3339 timestamp", type: "string" }).version("0.1.0").help().parseSync();
18074
18155
  function at() {
18075
18156
  if (f._[0] === "list") {
18076
- const u = ie;
18157
+ const u = oe;
18077
18158
  if (f.provider) {
18078
18159
  const s = u.find((r) => r.id === f.provider);
18079
18160
  s || (console.error(`Provider ${f.provider} not found.`), process.exit(1)), console.log(`${s.name}: (${s.models.length} models)`);
@@ -18101,25 +18182,25 @@ function at() {
18101
18182
  }, s = f.timestamp ? new Date(String(f.timestamp)) : void 0;
18102
18183
  let r = !1;
18103
18184
  for (const _ of o) {
18104
- let k, h = _;
18105
- h.includes(":") && ([k, h] = h.split(":", 2));
18185
+ let h, k = _;
18186
+ k.includes(":") && ([h, k] = k.split(":", 2));
18106
18187
  try {
18107
- const q = tt(u, h, { providerId: k, timestamp: s });
18188
+ const q = tt(u, k, { providerId: h, timestamp: s });
18108
18189
  if (!q) {
18109
18190
  r = !0, console.error(`No price found for model ${_}`);
18110
18191
  continue;
18111
18192
  }
18112
- const M = q.model.context_window, B = [
18193
+ const y = q.model.context_window, B = [
18113
18194
  ["Provider", q.provider.name],
18114
18195
  ["Model", q.model.name ?? q.model.id],
18115
18196
  ["Model Prices", JSON.stringify(q.model_price)],
18116
- ["Context Window", M !== void 0 ? M.toLocaleString() : void 0],
18197
+ ["Context Window", y !== void 0 ? y.toLocaleString() : void 0],
18117
18198
  ["Total Price", `$${q.total_price}`],
18118
18199
  ["Input Price", `$${q.input_price}`],
18119
18200
  ["Output Price", `$${q.output_price}`]
18120
18201
  ];
18121
- for (const [S, A] of B)
18122
- A !== void 0 && console.log(`${S.padStart(14)}: ${A}`);
18202
+ for (const [I, L] of B)
18203
+ L !== void 0 && console.log(`${I.padStart(14)}: ${L}`);
18123
18204
  console.log("");
18124
18205
  } catch (q) {
18125
18206
  r = !0, q instanceof Error && console.error(`Error for model ${_}:`, q.message);
@@ -18127,6 +18208,6 @@ function at() {
18127
18208
  }
18128
18209
  process.exit(r ? 1 : 0);
18129
18210
  }
18130
- he().showHelp(), process.exit(1);
18211
+ _e().showHelp(), process.exit(1);
18131
18212
  }
18132
18213
  at();