@pydantic/genai-prices 0.0.48 → 0.0.50

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,47 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  import de from "yargs";
3
- import { format as he } from "util";
3
+ import { format as _e } from "util";
4
4
  import { resolve as ae, normalize as Le } from "path";
5
- import { readFileSync as _e, writeFile as Me, statSync as Ae } from "fs";
5
+ import { readFileSync as he, writeFile as Me, statSync as Qe } from "fs";
6
6
  import "assert";
7
- import { fileURLToPath as Qe } from "url";
8
- function Te() {
9
- return Pe() ? 0 : 1;
10
- }
7
+ import { fileURLToPath as Ae } from "url";
11
8
  function Pe() {
9
+ return Te() ? 0 : 1;
10
+ }
11
+ function Te() {
12
12
  return Se() && !process.defaultApp;
13
13
  }
14
14
  function Se() {
15
15
  return !!process.versions.electron;
16
16
  }
17
17
  function Ge(i) {
18
- return i.slice(Te() + 1);
18
+ return i.slice(Pe() + 1);
19
19
  }
20
20
  /**
21
21
  * @license
22
22
  * Copyright (c) 2016, Contributors
23
23
  * SPDX-License-Identifier: ISC
24
24
  */
25
- function K(i) {
25
+ function $(i) {
26
26
  if (i !== i.toLowerCase() && i !== i.toUpperCase() || (i = i.toLowerCase()), i.indexOf("-") === -1 && i.indexOf("_") === -1)
27
27
  return i;
28
28
  {
29
- let m = "", s = !1;
30
- const u = i.match(/^-+/);
31
- for (let k = u ? u[0].length : 0; k < i.length; k++) {
32
- let _ = i.charAt(k);
33
- s && (s = !1, _ = _.toUpperCase()), k !== 0 && (_ === "-" || _ === "_") ? s = !0 : _ !== "-" && _ !== "_" && (m += _);
29
+ let u = "", s = !1;
30
+ const r = i.match(/^-+/);
31
+ for (let h = r ? r[0].length : 0; h < i.length; h++) {
32
+ let k = i.charAt(h);
33
+ s && (s = !1, k = k.toUpperCase()), h !== 0 && (k === "-" || k === "_") ? s = !0 : k !== "-" && k !== "_" && (u += k);
34
34
  }
35
- return m;
35
+ return u;
36
36
  }
37
37
  }
38
38
  function Ce(i, n) {
39
- const m = i.toLowerCase();
39
+ const u = i.toLowerCase();
40
40
  n = n || "-";
41
41
  let s = "";
42
- for (let u = 0; u < i.length; u++) {
43
- const k = m.charAt(u), _ = i.charAt(u);
44
- k !== _ && u > 0 ? s += `${n}${m.charAt(u)}` : s += _;
42
+ for (let r = 0; r < i.length; r++) {
43
+ const h = u.charAt(r), k = i.charAt(r);
44
+ h !== k && r > 0 ? s += `${n}${u.charAt(r)}` : s += k;
45
45
  }
46
46
  return s;
47
47
  }
@@ -55,18 +55,18 @@ function Re(i) {
55
55
  */
56
56
  function ze(i) {
57
57
  if (Array.isArray(i))
58
- return i.map((_) => typeof _ != "string" ? _ + "" : _);
58
+ return i.map((k) => typeof k != "string" ? k + "" : k);
59
59
  i = i.trim();
60
- let n = 0, m = null, s = null, u = null;
61
- const k = [];
62
- for (let _ = 0; _ < i.length; _++) {
63
- if (m = s, s = i.charAt(_), s === " " && !u) {
64
- m !== " " && n++;
60
+ let n = 0, u = null, s = null, r = null;
61
+ const h = [];
62
+ for (let k = 0; k < i.length; k++) {
63
+ if (u = s, s = i.charAt(k), s === " " && !r) {
64
+ u !== " " && n++;
65
65
  continue;
66
66
  }
67
- s === u ? u = null : (s === "'" || s === '"') && !u && (u = s), k[n] || (k[n] = ""), k[n] += s;
67
+ s === r ? r = null : (s === "'" || s === '"') && !r && (r = s), h[n] || (h[n] = ""), h[n] += s;
68
68
  }
69
- return k;
69
+ return h;
70
70
  }
71
71
  /**
72
72
  * @license
@@ -83,11 +83,11 @@ var L;
83
83
  * SPDX-License-Identifier: ISC
84
84
  */
85
85
  let T;
86
- class Oe {
86
+ class Ne {
87
87
  constructor(n) {
88
88
  T = n;
89
89
  }
90
- parse(n, m) {
90
+ parse(n, u) {
91
91
  const s = Object.assign({
92
92
  alias: void 0,
93
93
  array: void 0,
@@ -105,7 +105,7 @@ class Oe {
105
105
  number: void 0,
106
106
  __: void 0,
107
107
  key: void 0
108
- }, m), u = ze(n), k = typeof n == "string", _ = Ne(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), h = Object.assign({
108
+ }, u), r = ze(n), h = typeof n == "string", k = Oe(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), _ = Object.assign({
109
109
  "boolean-negation": !0,
110
110
  "camel-case-expansion": !0,
111
111
  "combine-arrays": !1,
@@ -124,7 +124,7 @@ class Oe {
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), B = s.configObjects || [], A = s.envPrefix, P = h["populate--"], S = P ? "--" : "_", D = /* @__PURE__ */ Object.create(null), oe = /* @__PURE__ */ Object.create(null), G = s.__ || T.format, r = {
127
+ }, s.configuration), q = Object.assign(/* @__PURE__ */ Object.create(null), s.default), M = s.configObjects || [], B = s.envPrefix, S = _["populate--"], A = S ? "--" : "_", G = /* @__PURE__ */ Object.create(null), oe = /* @__PURE__ */ Object.create(null), C = s.__ || T.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 Oe {
136
136
  nargs: /* @__PURE__ */ Object.create(null),
137
137
  coercions: /* @__PURE__ */ Object.create(null),
138
138
  keys: []
139
- }, M = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + h["negation-prefix"] + "(.+)");
139
+ }, Q = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/, W = new RegExp("^--" + _["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(o) {
142
142
  return {
@@ -145,64 +145,64 @@ class Oe {
145
145
  number: "numbers"
146
146
  }[o];
147
147
  }).filter(Boolean).pop();
148
- c && (r[c][a] = !0), r.arrays[a] = !0, r.keys.push(a);
148
+ c && (m[c][a] = !0), m.arrays[a] = !0, m.keys.push(a);
149
149
  }), [].concat(s.boolean || []).filter(Boolean).forEach(function(e) {
150
- r.bools[e] = !0, r.keys.push(e);
150
+ m.bools[e] = !0, m.keys.push(e);
151
151
  }), [].concat(s.string || []).filter(Boolean).forEach(function(e) {
152
- r.strings[e] = !0, r.keys.push(e);
152
+ m.strings[e] = !0, m.keys.push(e);
153
153
  }), [].concat(s.number || []).filter(Boolean).forEach(function(e) {
154
- r.numbers[e] = !0, r.keys.push(e);
154
+ m.numbers[e] = !0, m.keys.push(e);
155
155
  }), [].concat(s.count || []).filter(Boolean).forEach(function(e) {
156
- r.counts[e] = !0, r.keys.push(e);
156
+ m.counts[e] = !0, m.keys.push(e);
157
157
  }), [].concat(s.normalize || []).filter(Boolean).forEach(function(e) {
158
- r.normalize[e] = !0, r.keys.push(e);
158
+ m.normalize[e] = !0, m.keys.push(e);
159
159
  }), typeof s.narg == "object" && Object.entries(s.narg).forEach(([e, a]) => {
160
- typeof a == "number" && (r.nargs[e] = a, r.keys.push(e));
160
+ typeof a == "number" && (m.nargs[e] = a, m.keys.push(e));
161
161
  }), typeof s.coerce == "object" && Object.entries(s.coerce).forEach(([e, a]) => {
162
- typeof a == "function" && (r.coercions[e] = a, r.keys.push(e));
162
+ typeof a == "function" && (m.coercions[e] = a, m.keys.push(e));
163
163
  }), typeof s.config < "u" && (Array.isArray(s.config) || typeof s.config == "string" ? [].concat(s.config).filter(Boolean).forEach(function(e) {
164
- r.configs[e] = !0;
164
+ m.configs[e] = !0;
165
165
  }) : typeof s.config == "object" && Object.entries(s.config).forEach(([e, a]) => {
166
- (typeof a == "boolean" || typeof a == "function") && (r.configs[e] = a);
167
- })), be(s.key, _, s.default, r.arrays), Object.keys(q).forEach(function(e) {
168
- (r.aliases[e] || []).forEach(function(a) {
166
+ (typeof a == "boolean" || typeof a == "function") && (m.configs[e] = a);
167
+ })), be(s.key, k, s.default, m.arrays), Object.keys(q).forEach(function(e) {
168
+ (m.aliases[e] || []).forEach(function(a) {
169
169
  q[a] = q[e];
170
170
  });
171
171
  });
172
- let y = null;
173
- Ie();
172
+ let I = null;
173
+ ye();
174
174
  let j = [];
175
175
  const w = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }), ne = {};
176
- for (let e = 0; e < u.length; e++) {
177
- const a = u[e], c = a.replace(/^-{3,}/, "---");
176
+ for (let e = 0; e < r.length; e++) {
177
+ const a = r[e], c = a.replace(/^-{3,}/, "---");
178
178
  let o, t, l, p, d, v;
179
- if (a !== "--" && /^-/.test(a) && $(a))
179
+ if (a !== "--" && /^-/.test(a) && K(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(/^-.+=/))
185
- p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1], r.arrays) ? e = F(e, p[1], u, p[2]) : g(p[1], r.nargs) !== !1 ? e = V(e, p[1], u, p[2]) : b(p[1], p[2], !0));
186
- else if (a.match(W) && h["boolean-negation"])
187
- p = a.match(W), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], b(t, g(t, r.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, r.arrays) ? e = F(e, t, u) : g(t, r.nargs) !== !1 ? e = V(e, t, u) : (d = u[e + 1], d !== void 0 && (!d.match(/^-/) || d.match(M)) && !g(t, r.bools) && !g(t, r.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, R(t))));
184
+ } else if (a.match(/^--.+=/) || !_["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));
186
+ else if (a.match(W) && _["boolean-negation"])
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(/^--.+/) || !_["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))));
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(M))
193
- d = u[e + 1], p = a.match(/^-(.\..+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], d !== void 0 && !d.match(/^-/) && !g(t, r.bools) && !g(t, r.counts) ? (b(t, d), e++) : b(t, R(t)));
194
- else if (a.match(/^-[^-]+/) && !a.match(M)) {
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, z(t)));
194
+ else if (a.match(/^-[^-]+/) && !a.match(Q)) {
195
195
  l = a.slice(1, -1).split(""), o = !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, r.arrays) ? e = F(e, t, u, v) : g(t, r.nargs) !== !1 ? e = V(e, t, u, v) : b(t, v), o = !0;
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), o = !0;
199
199
  break;
200
200
  }
201
201
  if (d === "-") {
202
202
  b(l[x], d);
203
203
  continue;
204
204
  }
205
- if (/[A-Za-z]/.test(l[x]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(d) && g(d, r.bools) === !1) {
205
+ if (/[A-Za-z]/.test(l[x]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(d) && g(d, m.bools) === !1) {
206
206
  b(l[x], d), o = !0;
207
207
  break;
208
208
  }
@@ -210,83 +210,83 @@ class Oe {
210
210
  b(l[x], d), o = !0;
211
211
  break;
212
212
  } else
213
- b(l[x], R(l[x]));
213
+ b(l[x], z(l[x]));
214
214
  }
215
- t = a.slice(-1)[0], !o && t !== "-" && (g(t, r.arrays) ? e = F(e, t, u) : g(t, r.nargs) !== !1 ? e = V(e, t, u) : (d = u[e + 1], d !== void 0 && (!/^(-|--)[^-]/.test(d) || d.match(M)) && !g(t, r.bools) && !g(t, r.counts) || /^(true|false)$/.test(d) ? (b(t, d), e++) : b(t, R(t))));
216
- } else if (a.match(/^-[0-9]$/) && a.match(M) && g(a.slice(1), r.bools))
217
- t = a.slice(1), b(t, R(t));
215
+ t = a.slice(-1)[0], !o && 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))
217
+ t = a.slice(1), b(t, z(t));
218
218
  else if (a === "--") {
219
- j = u.slice(e + 1);
219
+ j = r.slice(e + 1);
220
220
  break;
221
- } else if (h["halt-at-non-option"]) {
222
- j = u.slice(e);
221
+ } else if (_["halt-at-non-option"]) {
222
+ j = r.slice(e);
223
223
  break;
224
224
  } else
225
225
  U(a);
226
226
  }
227
- re(w, !0), re(w, !1), ke(w), ge(), me(w, r.aliases, q, !0), qe(w), h["set-placeholder-key"] && fe(w), Object.keys(r.counts).forEach(function(e) {
228
- z(w, e.split(".")) || b(e, 0);
229
- }), P && j.length && (w[S] = []), j.forEach(function(e) {
230
- w[S].push(e);
231
- }), h["camel-case-expansion"] && h["strip-dashed"] && Object.keys(w).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
227
+ re(w, !0), re(w, !1), ke(w), ge(), me(w, m.aliases, q, !0), qe(w), _["set-placeholder-key"] && fe(w), Object.keys(m.counts).forEach(function(e) {
228
+ N(w, e.split(".")) || b(e, 0);
229
+ }), S && j.length && (w[A] = []), j.forEach(function(e) {
230
+ w[A].push(e);
231
+ }), _["camel-case-expansion"] && _["strip-dashed"] && Object.keys(w).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
232
232
  delete w[e];
233
- }), h["strip-aliased"] && [].concat(...Object.keys(_).map((e) => _[e])).forEach((e) => {
234
- h["camel-case-expansion"] && e.includes("-") && delete w[e.split(".").map((a) => K(a)).join(".")], delete w[e];
233
+ }), _["strip-aliased"] && [].concat(...Object.keys(k).map((e) => k[e])).forEach((e) => {
234
+ _["camel-case-expansion"] && e.includes("-") && delete w[e.split(".").map((a) => $(a)).join(".")], delete w[e];
235
235
  });
236
236
  function U(e) {
237
237
  const a = H("_", e);
238
238
  (typeof a == "string" || typeof a == "number") && w._.push(a);
239
239
  }
240
240
  function V(e, a, c, o) {
241
- let t, l = g(a, r.nargs);
241
+ let t, l = g(a, m.nargs);
242
242
  if (l = typeof l != "number" || isNaN(l) ? 1 : l, l === 0)
243
- return Q(o) || (y = Error(G("Argument unexpected for: %s", a))), b(a, R(a)), e;
244
- let p = Q(o) ? 0 : 1;
245
- if (h["nargs-eats-options"])
246
- c.length - (e + 1) + p < l && (y = Error(G("Not enough arguments following: %s", a))), p = l;
243
+ return P(o) || (I = Error(C("Argument unexpected for: %s", a))), b(a, z(a)), e;
244
+ let p = P(o) ? 0 : 1;
245
+ if (_["nargs-eats-options"])
246
+ c.length - (e + 1) + p < l && (I = 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(M) || $(c[t])); t++)
248
+ for (t = e + 1; t < c.length && (!c[t].match(/^-[^0-9]/) || c[t].match(Q) || K(c[t])); t++)
249
249
  p++;
250
- p < l && (y = Error(G("Not enough arguments following: %s", a)));
250
+ p < l && (I = Error(C("Not enough arguments following: %s", a)));
251
251
  }
252
252
  let d = Math.min(p, l);
253
- for (!Q(o) && d > 0 && (b(a, o), d--), t = e + 1; t < d + e + 1; t++)
253
+ for (!P(o) && d > 0 && (b(a, o), d--), t = e + 1; t < d + e + 1; t++)
254
254
  b(a, c[t]);
255
255
  return e + d;
256
256
  }
257
257
  function F(e, a, c, o) {
258
258
  let t = [], l = o || c[e + 1];
259
- const p = g(a, r.nargs);
260
- if (g(a, r.bools) && !/^(true|false)$/.test(l))
259
+ const p = g(a, m.nargs);
260
+ if (g(a, m.bools) && !/^(true|false)$/.test(l))
261
261
  t.push(!0);
262
- else if (Q(l) || Q(o) && /^-/.test(l) && !M.test(l) && !$(l)) {
262
+ else if (P(l) || P(o) && /^-/.test(l) && !Q.test(l) && !K(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
- Q(o) || t.push(Y(a, o, !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) && !M.test(l) && !$(l))); d++)
270
- e = d, t.push(Y(a, l, k));
268
+ P(o) || t.push(Y(a, o, !0));
269
+ for (let d = e + 1; d < c.length && !(!_["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !Q.test(l) && !K(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) && (y = 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) && (I = Error(C("Not enough arguments following: %s", a))), b(a, t), e;
273
273
  }
274
- function b(e, a, c = k) {
275
- if (/-/.test(e) && h["camel-case-expansion"]) {
274
+ function b(e, a, c = h) {
275
+ if (/-/.test(e) && _["camel-case-expansion"]) {
276
276
  const l = e.split(".").map(function(p) {
277
- return K(p);
277
+ return $(p);
278
278
  }).join(".");
279
279
  se(e, l);
280
280
  }
281
281
  const o = Y(e, a, c), t = e.split(".");
282
- O(w, t, o), r.aliases[e] && r.aliases[e].forEach(function(l) {
282
+ O(w, t, o), m.aliases[e] && m.aliases[e].forEach(function(l) {
283
283
  const p = l.split(".");
284
284
  O(w, p, o);
285
- }), t.length > 1 && h["dot-notation"] && (r.aliases[t[0]] || []).forEach(function(l) {
285
+ }), t.length > 1 && _["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), (r.aliases[e] || []).includes(p.join(".")) || O(w, p, o);
289
- }), g(e, r.normalize) && !g(e, r.arrays) && [e].concat(r.aliases[e] || []).forEach(function(p) {
288
+ d.shift(), p = p.concat(d), (m.aliases[e] || []).includes(p.join(".")) || O(w, p, o);
289
+ }), g(e, m.normalize) && !g(e, m.arrays) && [e].concat(m.aliases[e] || []).forEach(function(p) {
290
290
  Object.defineProperty(ne, p, {
291
291
  enumerable: !0,
292
292
  get() {
@@ -299,26 +299,26 @@ class Oe {
299
299
  });
300
300
  }
301
301
  function se(e, a) {
302
- r.aliases[e] && r.aliases[e].length || (r.aliases[e] = [a], D[a] = !0), r.aliases[a] && r.aliases[a].length || se(a, e);
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);
303
303
  }
304
304
  function Y(e, a, c) {
305
- c && (a = Ee(a)), (g(e, r.bools) || g(e, r.counts)) && typeof a == "string" && (a = a === "true");
305
+ c && (a = Ee(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
306
306
  let o = Array.isArray(a) ? a.map(function(t) {
307
307
  return H(e, t);
308
308
  }) : H(e, a);
309
- return g(e, r.counts) && (Q(o) || typeof o == "boolean") && (o = Z()), g(e, r.normalize) && g(e, r.arrays) && (Array.isArray(a) ? o = a.map((t) => T.normalize(t)) : o = T.normalize(a)), o;
309
+ return g(e, m.counts) && (P(o) || typeof o == "boolean") && (o = Z()), g(e, m.normalize) && g(e, m.arrays) && (Array.isArray(a) ? o = a.map((t) => T.normalize(t)) : o = T.normalize(a)), o;
310
310
  }
311
311
  function H(e, a) {
312
- return !h["parse-positional-numbers"] && e === "_" || !g(e, r.strings) && !g(e, r.bools) && !Array.isArray(a) && (Re(a) && h["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !Q(a) && g(e, r.numbers)) && (a = Number(a)), a;
312
+ return !_["parse-positional-numbers"] && e === "_" || !g(e, m.strings) && !g(e, m.bools) && !Array.isArray(a) && (Re(a) && _["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${a}`))) || !P(a) && g(e, m.numbers)) && (a = Number(a)), a;
313
313
  }
314
314
  function ke(e) {
315
315
  const a = /* @__PURE__ */ Object.create(null);
316
- me(a, r.aliases, q), Object.keys(r.configs).forEach(function(c) {
316
+ me(a, m.aliases, q), Object.keys(m.configs).forEach(function(c) {
317
317
  const o = e[c] || a[c];
318
318
  if (o)
319
319
  try {
320
320
  let t = null;
321
- const l = T.resolve(T.cwd(), o), p = r.configs[c];
321
+ const l = T.resolve(T.cwd(), o), p = m.configs[c];
322
322
  if (typeof p == "function") {
323
323
  try {
324
324
  t = p(l);
@@ -326,38 +326,38 @@ class Oe {
326
326
  t = d;
327
327
  }
328
328
  if (t instanceof Error) {
329
- y = t;
329
+ I = t;
330
330
  return;
331
331
  }
332
332
  } else
333
333
  t = T.require(l);
334
334
  J(t);
335
335
  } catch (t) {
336
- t.name === "PermissionDenied" ? y = t : e[c] && (y = Error(G("Invalid JSON config file: %s", o)));
336
+ t.name === "PermissionDenied" ? I = t : e[c] && (I = Error(C("Invalid JSON config file: %s", o)));
337
337
  }
338
338
  });
339
339
  }
340
340
  function J(e, a) {
341
341
  Object.keys(e).forEach(function(c) {
342
342
  const o = e[c], t = a ? a + "." + c : c;
343
- typeof o == "object" && o !== null && !Array.isArray(o) && h["dot-notation"] ? J(o, t) : (!z(w, t.split(".")) || g(t, r.arrays) && h["combine-arrays"]) && b(t, o);
343
+ typeof o == "object" && o !== null && !Array.isArray(o) && _["dot-notation"] ? J(o, t) : (!N(w, t.split(".")) || g(t, m.arrays) && _["combine-arrays"]) && b(t, o);
344
344
  });
345
345
  }
346
346
  function ge() {
347
- typeof B < "u" && B.forEach(function(e) {
347
+ typeof M < "u" && M.forEach(function(e) {
348
348
  J(e);
349
349
  });
350
350
  }
351
351
  function re(e, a) {
352
- if (typeof A > "u")
352
+ if (typeof B > "u")
353
353
  return;
354
- const c = typeof A == "string" ? A : "", o = T.env();
354
+ const c = typeof B == "string" ? B : "", o = T.env();
355
355
  Object.keys(o).forEach(function(t) {
356
356
  if (c === "" || t.lastIndexOf(c, 0) === 0) {
357
357
  const l = t.split("__").map(function(p, d) {
358
- return d === 0 && (p = p.substring(c.length)), K(p);
358
+ return d === 0 && (p = p.substring(c.length)), $(p);
359
359
  });
360
- (a && r.configs[l.join(".")] || !a) && !z(e, l) && b(l.join("."), o[t]);
360
+ (a && m.configs[l.join(".")] || !a) && !N(e, l) && b(l.join("."), o[t]);
361
361
  }
362
362
  });
363
363
  }
@@ -365,32 +365,32 @@ class Oe {
365
365
  let a;
366
366
  const c = /* @__PURE__ */ new Set();
367
367
  Object.keys(e).forEach(function(o) {
368
- if (!c.has(o) && (a = g(o, r.coercions), typeof a == "function"))
368
+ if (!c.has(o) && (a = g(o, m.coercions), typeof a == "function"))
369
369
  try {
370
370
  const t = H(o, a(e[o]));
371
- [].concat(r.aliases[o] || [], o).forEach((l) => {
371
+ [].concat(m.aliases[o] || [], o).forEach((l) => {
372
372
  c.add(l), e[l] = t;
373
373
  });
374
374
  } catch (t) {
375
- y = t;
375
+ I = t;
376
376
  }
377
377
  });
378
378
  }
379
379
  function fe(e) {
380
- return r.keys.forEach((a) => {
380
+ return m.keys.forEach((a) => {
381
381
  ~a.indexOf(".") || typeof e[a] > "u" && (e[a] = void 0);
382
382
  }), e;
383
383
  }
384
384
  function me(e, a, c, o = !1) {
385
385
  Object.keys(c).forEach(function(t) {
386
- z(e, t.split(".")) || (O(e, t.split("."), c[t]), o && (oe[t] = !0), (a[t] || []).forEach(function(l) {
387
- z(e, l.split(".")) || O(e, l.split("."), c[t]);
386
+ N(e, t.split(".")) || (O(e, t.split("."), c[t]), o && (oe[t] = !0), (a[t] || []).forEach(function(l) {
387
+ N(e, l.split(".")) || O(e, l.split("."), c[t]);
388
388
  }));
389
389
  });
390
390
  }
391
- function z(e, a) {
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
+ _["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(t) {
394
394
  c = c[t] || {};
395
395
  });
396
396
  const o = a[a.length - 1];
@@ -398,28 +398,28 @@ class Oe {
398
398
  }
399
399
  function O(e, a, c) {
400
400
  let o = e;
401
- h["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(v) {
401
+ _["dot-notation"] || (a = [a.join(".")]), a.slice(0, -1).forEach(function(v) {
402
402
  v = ce(v), typeof o == "object" && o[v] === void 0 && (o[v] = {}), typeof o[v] != "object" || Array.isArray(o[v]) ? (Array.isArray(o[v]) ? o[v].push({}) : o[v] = [o[v], {}], o = o[v][o[v].length - 1]) : o = o[v];
403
403
  });
404
- const t = ce(a[a.length - 1]), l = g(a.join("."), r.arrays), p = Array.isArray(c);
405
- let d = h["duplicate-arguments-array"];
406
- !d && g(t, r.nargs) && (d = !0, (!Q(o[t]) && r.nargs[t] === 1 || Array.isArray(o[t]) && o[t].length === r.nargs[t]) && (o[t] = void 0)), c === Z() ? o[t] = Z(o[t]) : Array.isArray(o[t]) ? d && l && p ? o[t] = h["flatten-duplicate-arrays"] ? o[t].concat(c) : (Array.isArray(o[t][0]) ? o[t] : [o[t]]).concat([c]) : !d && !!l == !!p ? o[t] = c : o[t] = o[t].concat([c]) : o[t] === void 0 && l ? o[t] = p ? c : [c] : d && !(o[t] === void 0 || g(t, r.counts) || g(t, r.bools)) ? o[t] = [o[t], c] : o[t] = c;
404
+ const t = ce(a[a.length - 1]), l = g(a.join("."), m.arrays), p = Array.isArray(c);
405
+ let d = _["duplicate-arguments-array"];
406
+ !d && g(t, m.nargs) && (d = !0, (!P(o[t]) && m.nargs[t] === 1 || Array.isArray(o[t]) && o[t].length === m.nargs[t]) && (o[t] = void 0)), c === Z() ? o[t] = Z(o[t]) : Array.isArray(o[t]) ? d && l && p ? o[t] = _["flatten-duplicate-arrays"] ? o[t].concat(c) : (Array.isArray(o[t][0]) ? o[t] : [o[t]]).concat([c]) : !d && !!l == !!p ? o[t] = c : o[t] = o[t].concat([c]) : o[t] === void 0 && l ? o[t] = p ? c : [c] : d && !(o[t] === void 0 || g(t, m.counts) || g(t, m.bools)) ? o[t] = [o[t], c] : o[t] = c;
407
407
  }
408
408
  function be(...e) {
409
409
  e.forEach(function(a) {
410
410
  Object.keys(a || {}).forEach(function(c) {
411
- r.aliases[c] || (r.aliases[c] = [].concat(_[c] || []), r.aliases[c].concat(c).forEach(function(o) {
412
- if (/-/.test(o) && h["camel-case-expansion"]) {
413
- const t = K(o);
414
- t !== c && r.aliases[c].indexOf(t) === -1 && (r.aliases[c].push(t), D[t] = !0);
411
+ m.aliases[c] || (m.aliases[c] = [].concat(k[c] || []), m.aliases[c].concat(c).forEach(function(o) {
412
+ if (/-/.test(o) && _["camel-case-expansion"]) {
413
+ const t = $(o);
414
+ t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
415
415
  }
416
- }), r.aliases[c].concat(c).forEach(function(o) {
417
- if (o.length > 1 && /[A-Z]/.test(o) && h["camel-case-expansion"]) {
416
+ }), m.aliases[c].concat(c).forEach(function(o) {
417
+ if (o.length > 1 && /[A-Z]/.test(o) && _["camel-case-expansion"]) {
418
418
  const t = Ce(o, "-");
419
- t !== c && r.aliases[c].indexOf(t) === -1 && (r.aliases[c].push(t), D[t] = !0);
419
+ t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
420
420
  }
421
- }), r.aliases[c].forEach(function(o) {
422
- r.aliases[o] = [c].concat(r.aliases[c].filter(function(t) {
421
+ }), m.aliases[c].forEach(function(o) {
422
+ m.aliases[o] = [c].concat(m.aliases[c].filter(function(t) {
423
423
  return o !== t;
424
424
  }));
425
425
  }));
@@ -427,12 +427,12 @@ class Oe {
427
427
  });
428
428
  }
429
429
  function g(e, a) {
430
- const c = [].concat(r.aliases[e] || [], e), o = Object.keys(a), t = c.find((l) => o.includes(l));
430
+ const c = [].concat(m.aliases[e] || [], e), o = Object.keys(a), t = c.find((l) => o.includes(l));
431
431
  return t ? a[t] : !1;
432
432
  }
433
433
  function ue(e) {
434
- const a = Object.keys(r);
435
- return [].concat(a.map((o) => r[o])).some(function(o) {
434
+ const a = Object.keys(m);
435
+ return [].concat(a.map((o) => m[o])).some(function(o) {
436
436
  return Array.isArray(o) ? o.includes(e) : o[e];
437
437
  });
438
438
  }
@@ -443,7 +443,7 @@ class Oe {
443
443
  });
444
444
  }
445
445
  function ve(e) {
446
- if (e.match(M) || !e.match(/^-[^-]+/))
446
+ if (e.match(Q) || !e.match(/^-[^-]+/))
447
447
  return !1;
448
448
  let a = !0, c;
449
449
  const o = e.slice(1).split("");
@@ -457,14 +457,14 @@ class Oe {
457
457
  }
458
458
  return a;
459
459
  }
460
- function $(e) {
461
- return h["unknown-options-as-args"] && xe(e);
460
+ function K(e) {
461
+ return _["unknown-options-as-args"] && xe(e);
462
462
  }
463
463
  function xe(e) {
464
- return e = e.replace(/^-{3,}/, "--"), e.match(M) || ve(e) ? !1 : !we(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
464
+ return e = e.replace(/^-{3,}/, "--"), e.match(Q) || ve(e) ? !1 : !we(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
465
465
  }
466
- function R(e) {
467
- return !g(e, r.bools) && !g(e, r.counts) && `${e}` in q ? q[e] : Be(ye(e));
466
+ function z(e) {
467
+ return !g(e, m.bools) && !g(e, m.counts) && `${e}` in q ? q[e] : Be(Ie(e));
468
468
  }
469
469
  function Be(e) {
470
470
  return {
@@ -474,49 +474,49 @@ class Oe {
474
474
  [L.ARRAY]: []
475
475
  }[e];
476
476
  }
477
- function ye(e) {
477
+ function Ie(e) {
478
478
  let a = L.BOOLEAN;
479
- return g(e, r.strings) ? a = L.STRING : g(e, r.numbers) ? a = L.NUMBER : g(e, r.bools) ? a = L.BOOLEAN : g(e, r.arrays) && (a = L.ARRAY), a;
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;
480
480
  }
481
- function Q(e) {
481
+ function P(e) {
482
482
  return e === void 0;
483
483
  }
484
- function Ie() {
485
- Object.keys(r.counts).find((e) => g(e, r.arrays) ? (y = Error(G("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, r.nargs) ? (y = Error(G("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
484
+ function ye() {
485
+ Object.keys(m.counts).find((e) => g(e, m.arrays) ? (I = Error(C("Invalid configuration: %s, opts.count excludes opts.array.", e)), !0) : g(e, m.nargs) ? (I = Error(C("Invalid configuration: %s, opts.count excludes opts.narg.", e)), !0) : !1);
486
486
  }
487
487
  return {
488
- aliases: Object.assign({}, r.aliases),
488
+ aliases: Object.assign({}, m.aliases),
489
489
  argv: Object.assign(ne, w),
490
- configuration: h,
490
+ configuration: _,
491
491
  defaulted: Object.assign({}, oe),
492
- error: y,
493
- newAliases: Object.assign({}, D)
492
+ error: I,
493
+ newAliases: Object.assign({}, G)
494
494
  };
495
495
  }
496
496
  }
497
- function Ne(i) {
498
- const n = [], m = /* @__PURE__ */ Object.create(null);
497
+ function Oe(i) {
498
+ const n = [], u = /* @__PURE__ */ Object.create(null);
499
499
  let s = !0;
500
- for (Object.keys(i).forEach(function(u) {
501
- n.push([].concat(i[u], u));
500
+ for (Object.keys(i).forEach(function(r) {
501
+ n.push([].concat(i[r], r));
502
502
  }); s; ) {
503
503
  s = !1;
504
- for (let u = 0; u < n.length; u++)
505
- for (let k = u + 1; k < n.length; k++)
506
- if (n[u].filter(function(h) {
507
- return n[k].indexOf(h) !== -1;
504
+ for (let r = 0; r < n.length; r++)
505
+ for (let h = r + 1; h < n.length; h++)
506
+ if (n[r].filter(function(_) {
507
+ return n[h].indexOf(_) !== -1;
508
508
  }).length) {
509
- n[u] = n[u].concat(n[k]), n.splice(k, 1), s = !0;
509
+ n[r] = n[r].concat(n[h]), n.splice(h, 1), s = !0;
510
510
  break;
511
511
  }
512
512
  }
513
- return n.forEach(function(u) {
514
- u = u.filter(function(_, h, q) {
515
- return q.indexOf(_) === h;
513
+ return n.forEach(function(r) {
514
+ r = r.filter(function(k, _, q) {
515
+ return q.indexOf(k) === _;
516
516
  });
517
- const k = u.pop();
518
- k !== void 0 && typeof k == "string" && (m[k] = u);
519
- }), m;
517
+ const h = r.pop();
518
+ h !== void 0 && typeof h == "string" && (u[h] = r);
519
+ }), u;
520
520
  }
521
521
  function Z(i) {
522
522
  return i !== void 0 ? i + 1 : 1;
@@ -540,10 +540,10 @@ const pe = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number
540
540
  if (le && Number(le.match(/^([^.]+)/)[1]) < pe)
541
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
542
  const De = process ? process.env : {};
543
- new Oe({
543
+ new Ne({
544
544
  cwd: process.cwd,
545
545
  env: () => De,
546
- format: he,
546
+ format: _e,
547
547
  normalize: Le,
548
548
  resolve: ae,
549
549
  // TODO: figure out a way to combine ESM and CJS coverage, such that
@@ -552,26 +552,26 @@ new Oe({
552
552
  if (typeof require < "u")
553
553
  return require(i);
554
554
  if (i.match(/\.json$/))
555
- return JSON.parse(_e(i, "utf8"));
555
+ return JSON.parse(he(i, "utf8"));
556
556
  throw Error("only .json config files are supported in ESM");
557
557
  }
558
558
  });
559
559
  const je = {
560
560
  fs: {
561
- readFileSync: _e,
561
+ readFileSync: he,
562
562
  writeFile: Me
563
563
  },
564
- format: he,
564
+ format: _e,
565
565
  resolve: ae,
566
566
  exists: (i) => {
567
567
  try {
568
- return Ae(i).isFile();
568
+ return Qe(i).isFile();
569
569
  } catch {
570
570
  return !1;
571
571
  }
572
572
  }
573
573
  };
574
- let I;
574
+ let y;
575
575
  class Ve {
576
576
  constructor(n) {
577
577
  n = n || {}, this.directory = n.directory || "./locales", this.updateFiles = typeof n.updateFiles == "boolean" ? n.updateFiles : !0, this.locale = n.locale || "en", this.fallbackToLanguage = typeof n.fallbackToLanguage == "boolean" ? n.fallbackToLanguage : !0, this.cache = /* @__PURE__ */ Object.create(null), this.writeQueue = [];
@@ -579,32 +579,32 @@ class Ve {
579
579
  __(...n) {
580
580
  if (typeof arguments[0] != "string")
581
581
  return this._taggedLiteral(arguments[0], ...arguments);
582
- const m = n.shift();
582
+ const u = n.shift();
583
583
  let s = function() {
584
584
  };
585
585
  return typeof n[n.length - 1] == "function" && (s = n.pop()), s = s || function() {
586
- }, this.cache[this.locale] || this._readLocaleFile(), !this.cache[this.locale][m] && this.updateFiles ? (this.cache[this.locale][m] = m, this._enqueueWrite({
586
+ }, this.cache[this.locale] || this._readLocaleFile(), !this.cache[this.locale][u] && this.updateFiles ? (this.cache[this.locale][u] = u, this._enqueueWrite({
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][m] || m].concat(n));
590
+ })) : s(), y.format.apply(y.format, [this.cache[this.locale][u] || u].concat(n));
591
591
  }
592
592
  __n() {
593
- const n = Array.prototype.slice.call(arguments), m = n.shift(), s = n.shift(), u = n.shift();
594
- let k = function() {
593
+ const n = Array.prototype.slice.call(arguments), u = n.shift(), s = n.shift(), r = n.shift();
594
+ let h = function() {
595
595
  };
596
- typeof n[n.length - 1] == "function" && (k = n.pop()), this.cache[this.locale] || this._readLocaleFile();
597
- let _ = u === 1 ? m : s;
598
- this.cache[this.locale][m] && (_ = this.cache[this.locale][m][u === 1 ? "one" : "other"]), !this.cache[this.locale][m] && this.updateFiles ? (this.cache[this.locale][m] = {
599
- one: m,
596
+ typeof n[n.length - 1] == "function" && (h = n.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] = {
599
+ one: u,
600
600
  other: s
601
601
  }, this._enqueueWrite({
602
602
  directory: this.directory,
603
603
  locale: this.locale,
604
- cb: k
605
- })) : k();
606
- const h = [_];
607
- return ~_.indexOf("%d") && h.push(u), I.format.apply(I.format, h.concat(n));
604
+ cb: h
605
+ })) : h();
606
+ const _ = [k];
607
+ return ~k.indexOf("%d") && _.push(r), y.format.apply(y.format, _.concat(n));
608
608
  }
609
609
  setLocale(n) {
610
610
  this.locale = n;
@@ -614,72 +614,72 @@ class Ve {
614
614
  }
615
615
  updateLocale(n) {
616
616
  this.cache[this.locale] || this._readLocaleFile();
617
- for (const m in n)
618
- Object.prototype.hasOwnProperty.call(n, m) && (this.cache[this.locale][m] = n[m]);
617
+ for (const u in n)
618
+ Object.prototype.hasOwnProperty.call(n, u) && (this.cache[this.locale][u] = n[u]);
619
619
  }
620
- _taggedLiteral(n, ...m) {
620
+ _taggedLiteral(n, ...u) {
621
621
  let s = "";
622
- return n.forEach(function(u, k) {
623
- const _ = m[k + 1];
624
- s += u, typeof _ < "u" && (s += "%s");
625
- }), this.__.apply(this, [s].concat([].slice.call(m, 1)));
622
+ return n.forEach(function(r, h) {
623
+ const k = u[h + 1];
624
+ s += r, typeof k < "u" && (s += "%s");
625
+ }), this.__.apply(this, [s].concat([].slice.call(u, 1)));
626
626
  }
627
627
  _enqueueWrite(n) {
628
628
  this.writeQueue.push(n), this.writeQueue.length === 1 && this._processWriteQueue();
629
629
  }
630
630
  _processWriteQueue() {
631
- const n = this, m = this.writeQueue[0], s = m.directory, u = m.locale, k = m.cb, _ = this._resolveLocaleFile(s, u), h = JSON.stringify(this.cache[u], null, 2);
632
- I.fs.writeFile(_, h, "utf-8", function(q) {
633
- n.writeQueue.shift(), n.writeQueue.length > 0 && n._processWriteQueue(), k(q);
631
+ const n = this, u = this.writeQueue[0], s = u.directory, r = u.locale, h = u.cb, k = this._resolveLocaleFile(s, r), _ = JSON.stringify(this.cache[r], null, 2);
632
+ y.fs.writeFile(k, _, "utf-8", function(q) {
633
+ n.writeQueue.shift(), n.writeQueue.length > 0 && n._processWriteQueue(), h(q);
634
634
  });
635
635
  }
636
636
  _readLocaleFile() {
637
637
  let n = {};
638
- const m = this._resolveLocaleFile(this.directory, this.locale);
638
+ const u = this._resolveLocaleFile(this.directory, this.locale);
639
639
  try {
640
- I.fs.readFileSync && (n = JSON.parse(I.fs.readFileSync(m, "utf-8")));
640
+ y.fs.readFileSync && (n = JSON.parse(y.fs.readFileSync(u, "utf-8")));
641
641
  } catch (s) {
642
- if (s instanceof SyntaxError && (s.message = "syntax error in " + m), s.code === "ENOENT")
642
+ if (s instanceof SyntaxError && (s.message = "syntax error in " + u), s.code === "ENOENT")
643
643
  n = {};
644
644
  else
645
645
  throw s;
646
646
  }
647
647
  this.cache[this.locale] = n;
648
648
  }
649
- _resolveLocaleFile(n, m) {
650
- let s = I.resolve(n, "./", m + ".json");
651
- if (this.fallbackToLanguage && !this._fileExistsSync(s) && ~m.lastIndexOf("_")) {
652
- const u = I.resolve(n, "./", m.split("_")[0] + ".json");
653
- this._fileExistsSync(u) && (s = u);
649
+ _resolveLocaleFile(n, u) {
650
+ let s = y.resolve(n, "./", u + ".json");
651
+ if (this.fallbackToLanguage && !this._fileExistsSync(s) && ~u.lastIndexOf("_")) {
652
+ const r = y.resolve(n, "./", u.split("_")[0] + ".json");
653
+ this._fileExistsSync(r) && (s = r);
654
654
  }
655
655
  return s;
656
656
  }
657
657
  _fileExistsSync(n) {
658
- return I.exists(n);
658
+ return y.exists(n);
659
659
  }
660
660
  }
661
661
  function Fe(i, n) {
662
- I = n;
663
- const m = new Ve(i);
662
+ y = n;
663
+ const u = new Ve(i);
664
664
  return {
665
- __: m.__.bind(m),
666
- __n: m.__n.bind(m),
667
- setLocale: m.setLocale.bind(m),
668
- getLocale: m.getLocale.bind(m),
669
- updateLocale: m.updateLocale.bind(m),
670
- locale: m.locale
665
+ __: u.__.bind(u),
666
+ __n: u.__n.bind(u),
667
+ setLocale: u.setLocale.bind(u),
668
+ getLocale: u.getLocale.bind(u),
669
+ updateLocale: u.updateLocale.bind(u),
670
+ locale: u.locale
671
671
  };
672
672
  }
673
673
  const He = (i) => Fe(i, je);
674
- let N;
674
+ let E;
675
675
  try {
676
- N = Qe(import.meta.url);
676
+ E = Ae(import.meta.url);
677
677
  } catch {
678
- N = process.cwd();
678
+ E = process.cwd();
679
679
  }
680
- const $e = N.substring(0, N.lastIndexOf("node_modules"));
681
- $e || process.cwd(), process.cwd, process.exit, process.nextTick, typeof process.stdout.columns < "u" && process.stdout.columns, He({
682
- directory: ae(N, "../../../locales"),
680
+ const Ke = E.substring(0, E.lastIndexOf("node_modules"));
681
+ Ke || process.cwd(), process.cwd, process.exit, process.nextTick, typeof process.stdout.columns < "u" && process.stdout.columns, He({
682
+ directory: ae(E, "../../../locales"),
683
683
  updateFiles: !1
684
684
  });
685
685
  const ie = [
@@ -1596,6 +1596,17 @@ const ie = [
1596
1596
  output_mtok: 0.6
1597
1597
  }
1598
1598
  },
1599
+ {
1600
+ id: "qwen.qwen3-coder-480b-a35b-v1:0",
1601
+ name: "Qwen3-Coder-480B-A35B-Instruct",
1602
+ match: {
1603
+ contains: "qwen.qwen3-coder-480b-a35b-v1"
1604
+ },
1605
+ prices: {
1606
+ input_mtok: 0.45,
1607
+ output_mtok: 1.8
1608
+ }
1609
+ },
1599
1610
  {
1600
1611
  id: "regional.anthropic.claude-3-5-haiku-20241022-v1:0",
1601
1612
  match: {
@@ -3911,6 +3922,51 @@ Compared to other leading proprietary and open-weights models Command A delivers
3911
3922
  }
3912
3923
  }
3913
3924
  },
3925
+ {
3926
+ id: "gemini-3-flash-preview",
3927
+ name: "Gemini 3 Flash Preview",
3928
+ description: "Google's ultra-fast frontier model optimized for speed and efficiency. Delivers state-of-the-art performance while maintaining low latency and cost, with improved reasoning and coding capabilities.",
3929
+ match: {
3930
+ or: [
3931
+ {
3932
+ equals: "gemini-3-flash-preview"
3933
+ },
3934
+ {
3935
+ starts_with: "gemini-3-flash-preview-"
3936
+ }
3937
+ ]
3938
+ },
3939
+ context_window: 1e6,
3940
+ price_comments: "See https://ai.google.dev/gemini-api/docs/pricing. Standard pricing shown; Batch API offers 50% discount on input/output.",
3941
+ prices: {
3942
+ input_mtok: 0.5,
3943
+ cache_read_mtok: 0.05,
3944
+ output_mtok: 3,
3945
+ input_audio_mtok: 1,
3946
+ cache_audio_read_mtok: 0.1
3947
+ }
3948
+ },
3949
+ {
3950
+ id: "gemini-3-pro-image-preview",
3951
+ name: "Gemini 3 Pro Image Preview",
3952
+ description: "Google's image generation model optimized for high-quality image generation. Supports 1K/2K and 4K resolution outputs with flexible pricing based on image dimensions.",
3953
+ match: {
3954
+ or: [
3955
+ {
3956
+ starts_with: "gemini-3-pro-image-preview"
3957
+ },
3958
+ {
3959
+ equals: "gemini-3-pro-image-preview"
3960
+ }
3961
+ ]
3962
+ },
3963
+ context_window: 1e6,
3964
+ price_comments: "See https://ai.google.dev/gemini-api/docs/pricing#gemini-3-pro-image. Image output is priced at $120 per 1M tokens, with each 1K/2K image = 1120 tokens = $0.134/image and each 4K image = 2000 tokens = $0.24/image.",
3965
+ prices: {
3966
+ input_mtok: 2,
3967
+ output_mtok: 120
3968
+ }
3969
+ },
3914
3970
  {
3915
3971
  id: "gemini-3-pro-preview",
3916
3972
  name: "Gemini 3 Pro Preview",
@@ -3921,7 +3977,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
3921
3977
  starts_with: "gemini-3-pro-preview"
3922
3978
  },
3923
3979
  {
3924
- starts_with: "gemini-3-pro-image-preview"
3980
+ equals: "gemini-3-pro-text-preview"
3925
3981
  }
3926
3982
  ]
3927
3983
  },
@@ -4775,41 +4831,22 @@ Compared to other leading proprietary and open-weights models Command A delivers
4775
4831
  }
4776
4832
  },
4777
4833
  {
4778
- id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
4779
- name: "Qwen3-Coder-480B-A35B-Instruct",
4780
- match: {
4781
- or: [
4782
- {
4783
- equals: "qwen/qwen3-coder-480b-a35b-instruct"
4784
- },
4785
- {
4786
- equals: "qwen/qwen3-coder-480b-a35b-instruct-fast"
4787
- }
4788
- ]
4789
- },
4790
- context_window: 262144,
4791
- prices: {
4792
- input_mtok: 0.45,
4793
- output_mtok: 1.8
4794
- }
4795
- },
4796
- {
4797
- id: "SentientAGI/Dobby-Unhinged-Llama-3.3-70B",
4798
- name: "Dobby-Unhinged-Llama-3.3-70B",
4834
+ id: "deepseek-ai/DeepSeek-R1-0528",
4835
+ name: "DeepSeek-R1-0528",
4799
4836
  match: {
4800
4837
  or: [
4801
4838
  {
4802
- equals: "sentientagi/dobby-unhinged-llama-3.3-70b"
4839
+ equals: "deepseek-ai/deepseek-r1-0528"
4803
4840
  },
4804
4841
  {
4805
- equals: "sentientagi/dobby-unhinged-llama-3.3-70b-fast"
4842
+ equals: "deepseek-ai/deepseek-r1-0528-fast"
4806
4843
  }
4807
4844
  ]
4808
4845
  },
4809
- context_window: 131072,
4846
+ context_window: 163840,
4810
4847
  prices: {
4811
- input_mtok: 0.9,
4812
- output_mtok: 0.9
4848
+ input_mtok: 3,
4849
+ output_mtok: 8
4813
4850
  }
4814
4851
  },
4815
4852
  {
@@ -6232,8 +6269,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6232
6269
  },
6233
6270
  context_window: 262144,
6234
6271
  prices: {
6235
- input_mtok: 0.29,
6236
- output_mtok: 1.2
6272
+ input_mtok: 0.3,
6273
+ output_mtok: 1.3
6237
6274
  }
6238
6275
  },
6239
6276
  {
@@ -6603,25 +6640,6 @@ Compared to other leading proprietary and open-weights models Command A delivers
6603
6640
  output_mtok: 0.072
6604
6641
  }
6605
6642
  },
6606
- {
6607
- id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
6608
- name: "DeepSeek-R1-Distill-Llama-70B",
6609
- match: {
6610
- or: [
6611
- {
6612
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b"
6613
- },
6614
- {
6615
- equals: "deepseek-ai/deepseek-r1-distill-llama-70b-fast"
6616
- }
6617
- ]
6618
- },
6619
- context_window: 8192,
6620
- prices: {
6621
- input_mtok: 0.64,
6622
- output_mtok: 0.64
6623
- }
6624
- },
6625
6643
  {
6626
6644
  id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
6627
6645
  name: "DeepSeek-R1-Distill-Qwen-14B",
@@ -6723,6 +6741,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
6723
6741
  output_mtok: 0.8
6724
6742
  }
6725
6743
  },
6744
+ {
6745
+ id: "deepseek-ai/DeepSeek-V3.2",
6746
+ name: "DeepSeek-V3.2",
6747
+ match: {
6748
+ or: [
6749
+ {
6750
+ equals: "deepseek-ai/deepseek-v3.2"
6751
+ },
6752
+ {
6753
+ equals: "deepseek-ai/deepseek-v3.2-fast"
6754
+ }
6755
+ ]
6756
+ },
6757
+ context_window: 163840,
6758
+ prices: {
6759
+ input_mtok: 0.269,
6760
+ output_mtok: 0.4
6761
+ }
6762
+ },
6726
6763
  {
6727
6764
  id: "deepseek-ai/DeepSeek-V3.2-Exp",
6728
6765
  name: "DeepSeek-V3.2-Exp",
@@ -6795,8 +6832,8 @@ Compared to other leading proprietary and open-weights models Command A delivers
6795
6832
  },
6796
6833
  context_window: 131072,
6797
6834
  prices: {
6798
- input_mtok: 0.104,
6799
- output_mtok: 0.312
6835
+ input_mtok: 0.108,
6836
+ output_mtok: 0.32
6800
6837
  }
6801
6838
  },
6802
6839
  {
@@ -6933,22 +6970,22 @@ Compared to other leading proprietary and open-weights models Command A delivers
6933
6970
  }
6934
6971
  },
6935
6972
  {
6936
- id: "zai-org/GLM-4-32B-0414",
6937
- name: "GLM-4-32B-0414",
6973
+ id: "zai-org/AutoGLM-Phone-9B-Multilingual",
6974
+ name: "AutoGLM-Phone-9B-Multilingual",
6938
6975
  match: {
6939
6976
  or: [
6940
6977
  {
6941
- equals: "zai-org/glm-4-32b-0414"
6978
+ equals: "zai-org/autoglm-phone-9b-multilingual"
6942
6979
  },
6943
6980
  {
6944
- equals: "zai-org/glm-4-32b-0414-fast"
6981
+ equals: "zai-org/autoglm-phone-9b-multilingual-fast"
6945
6982
  }
6946
6983
  ]
6947
6984
  },
6948
- context_window: 32e3,
6985
+ context_window: 65536,
6949
6986
  prices: {
6950
- input_mtok: 0.55,
6951
- output_mtok: 1.66
6987
+ input_mtok: 0.035,
6988
+ output_mtok: 0.138
6952
6989
  }
6953
6990
  },
6954
6991
  {
@@ -7045,6 +7082,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
7045
7082
  input_mtok: 0.44,
7046
7083
  output_mtok: 1.76
7047
7084
  }
7085
+ },
7086
+ {
7087
+ id: "zai-org/GLM-4.6V-Flash",
7088
+ name: "GLM-4.6V-Flash",
7089
+ match: {
7090
+ or: [
7091
+ {
7092
+ equals: "zai-org/glm-4.6v-flash"
7093
+ },
7094
+ {
7095
+ equals: "zai-org/glm-4.6v-flash-fast"
7096
+ }
7097
+ ]
7098
+ },
7099
+ context_window: 131072,
7100
+ prices: {
7101
+ input_mtok: 0.3,
7102
+ output_mtok: 0.9
7103
+ }
7048
7104
  }
7049
7105
  ]
7050
7106
  },
@@ -7487,17 +7543,17 @@ Compared to other leading proprietary and open-weights models Command A delivers
7487
7543
  ]
7488
7544
  },
7489
7545
  {
7490
- id: "huggingface_publicai",
7491
- name: "HuggingFace (publicai)",
7546
+ id: "huggingface_ovhcloud",
7547
+ name: "HuggingFace (ovhcloud)",
7492
7548
  pricing_urls: ["https://router.huggingface.co/v1/models", "https://huggingface.co/inference/models"],
7493
- api_pattern: "https://router\\.huggingface\\.co/publicai",
7549
+ api_pattern: "https://router\\.huggingface\\.co/ovhcloud",
7494
7550
  provider_match: {
7495
7551
  and: [
7496
7552
  {
7497
7553
  contains: "huggingface"
7498
7554
  },
7499
7555
  {
7500
- contains: "publicai"
7556
+ contains: "ovhcloud"
7501
7557
  }
7502
7558
  ]
7503
7559
  },
@@ -7537,109 +7593,57 @@ Compared to other leading proprietary and open-weights models Command A delivers
7537
7593
  ],
7538
7594
  models: [
7539
7595
  {
7540
- id: "aisingapore/Gemma-SEA-LION-v4-27B-IT",
7541
- name: "Gemma-SEA-LION-v4-27B-IT",
7542
- match: {
7543
- or: [
7544
- {
7545
- equals: "aisingapore/gemma-sea-lion-v4-27b-it"
7546
- },
7547
- {
7548
- equals: "aisingapore/gemma-sea-lion-v4-27b-it-fast"
7549
- }
7550
- ]
7551
- },
7552
- prices: {}
7553
- },
7554
- {
7555
- id: "aisingapore/Qwen-SEA-LION-v4-32B-IT",
7556
- name: "Qwen-SEA-LION-v4-32B-IT",
7557
- match: {
7558
- or: [
7559
- {
7560
- equals: "aisingapore/qwen-sea-lion-v4-32b-it"
7561
- },
7562
- {
7563
- equals: "aisingapore/qwen-sea-lion-v4-32b-it-fast"
7564
- }
7565
- ]
7566
- },
7567
- prices: {}
7568
- },
7569
- {
7570
- id: "allenai/Olmo-3-32B-Think",
7571
- name: "Olmo-3-32B-Think",
7572
- match: {
7573
- or: [
7574
- {
7575
- equals: "allenai/olmo-3-32b-think"
7576
- },
7577
- {
7578
- equals: "allenai/olmo-3-32b-think-fast"
7579
- }
7580
- ]
7581
- },
7582
- prices: {}
7583
- },
7584
- {
7585
- id: "allenai/Olmo-3-7B-Instruct",
7586
- name: "Olmo-3-7B-Instruct",
7587
- match: {
7588
- or: [
7589
- {
7590
- equals: "allenai/olmo-3-7b-instruct"
7591
- },
7592
- {
7593
- equals: "allenai/olmo-3-7b-instruct-fast"
7594
- }
7595
- ]
7596
- },
7597
- prices: {}
7598
- },
7599
- {
7600
- id: "allenai/Olmo-3-7B-Think",
7601
- name: "Olmo-3-7B-Think",
7596
+ id: "Qwen/Qwen2.5-VL-72B-Instruct",
7597
+ name: "Qwen2.5-VL-72B-Instruct",
7602
7598
  match: {
7603
7599
  or: [
7604
7600
  {
7605
- equals: "allenai/olmo-3-7b-think"
7601
+ equals: "qwen/qwen2.5-vl-72b-instruct"
7606
7602
  },
7607
7603
  {
7608
- equals: "allenai/olmo-3-7b-think-fast"
7604
+ equals: "qwen/qwen2.5-vl-72b-instruct-fast"
7609
7605
  }
7610
7606
  ]
7611
7607
  },
7612
- prices: {}
7608
+ context_window: 32768,
7609
+ prices: {
7610
+ input_mtok: 1.01,
7611
+ output_mtok: 1.01
7612
+ }
7613
7613
  },
7614
7614
  {
7615
- id: "swiss-ai/Apertus-8B-Instruct-2509",
7616
- name: "Apertus-8B-Instruct-2509",
7615
+ id: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
7616
+ name: "Qwen3-Coder-30B-A3B-Instruct",
7617
7617
  match: {
7618
7618
  or: [
7619
7619
  {
7620
- equals: "swiss-ai/apertus-8b-instruct-2509"
7620
+ equals: "qwen/qwen3-coder-30b-a3b-instruct"
7621
7621
  },
7622
7622
  {
7623
- equals: "swiss-ai/apertus-8b-instruct-2509-fast"
7623
+ equals: "qwen/qwen3-coder-30b-a3b-instruct-fast"
7624
7624
  }
7625
7625
  ]
7626
7626
  },
7627
- prices: {}
7627
+ context_window: 262144,
7628
+ prices: {
7629
+ input_mtok: 0.07,
7630
+ output_mtok: 0.26
7631
+ }
7628
7632
  }
7629
7633
  ]
7630
7634
  },
7631
7635
  {
7632
- id: "huggingface_sambanova",
7633
- name: "HuggingFace (sambanova)",
7636
+ id: "huggingface_publicai",
7637
+ name: "HuggingFace (publicai)",
7634
7638
  pricing_urls: ["https://router.huggingface.co/v1/models", "https://huggingface.co/inference/models"],
7635
- api_pattern: "https://router\\.huggingface\\.co/sambanova",
7639
+ api_pattern: "https://router\\.huggingface\\.co/publicai",
7636
7640
  provider_match: {
7637
7641
  and: [
7638
7642
  {
7639
7643
  contains: "huggingface"
7640
7644
  },
7641
7645
  {
7642
- contains: "sambanova"
7646
+ contains: "publicai"
7643
7647
  }
7644
7648
  ]
7645
7649
  },
@@ -7679,46 +7683,248 @@ Compared to other leading proprietary and open-weights models Command A delivers
7679
7683
  ],
7680
7684
  models: [
7681
7685
  {
7682
- id: "Qwen/Qwen3-32B",
7683
- name: "Qwen3-32B",
7686
+ id: "aisingapore/Gemma-SEA-LION-v4-27B-IT",
7687
+ name: "Gemma-SEA-LION-v4-27B-IT",
7684
7688
  match: {
7685
7689
  or: [
7686
7690
  {
7687
- equals: "qwen/qwen3-32b"
7691
+ equals: "aisingapore/gemma-sea-lion-v4-27b-it"
7688
7692
  },
7689
7693
  {
7690
- equals: "qwen/qwen3-32b-fast"
7694
+ equals: "aisingapore/gemma-sea-lion-v4-27b-it-fast"
7691
7695
  }
7692
7696
  ]
7693
7697
  },
7694
- context_window: 32768,
7695
- prices: {
7696
- input_mtok: 0.4,
7697
- output_mtok: 0.8
7698
- }
7698
+ prices: {}
7699
7699
  },
7700
7700
  {
7701
- id: "deepseek-ai/DeepSeek-R1-0528",
7702
- name: "DeepSeek-R1-0528",
7701
+ id: "aisingapore/Qwen-SEA-LION-v4-32B-IT",
7702
+ name: "Qwen-SEA-LION-v4-32B-IT",
7703
7703
  match: {
7704
7704
  or: [
7705
7705
  {
7706
- equals: "deepseek-ai/deepseek-r1-0528"
7706
+ equals: "aisingapore/qwen-sea-lion-v4-32b-it"
7707
7707
  },
7708
7708
  {
7709
- equals: "deepseek-ai/deepseek-r1-0528-fast"
7709
+ equals: "aisingapore/qwen-sea-lion-v4-32b-it-fast"
7710
7710
  }
7711
7711
  ]
7712
7712
  },
7713
- context_window: 131072,
7714
- prices: {
7715
- input_mtok: 5,
7716
- output_mtok: 7
7717
- }
7713
+ prices: {}
7718
7714
  },
7719
7715
  {
7720
- id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
7721
- name: "DeepSeek-R1-Distill-Llama-70B",
7716
+ id: "allenai/Olmo-3-7B-Instruct",
7717
+ name: "Olmo-3-7B-Instruct",
7718
+ match: {
7719
+ or: [
7720
+ {
7721
+ equals: "allenai/olmo-3-7b-instruct"
7722
+ },
7723
+ {
7724
+ equals: "allenai/olmo-3-7b-instruct-fast"
7725
+ }
7726
+ ]
7727
+ },
7728
+ prices: {}
7729
+ },
7730
+ {
7731
+ id: "allenai/Olmo-3-7B-Think",
7732
+ name: "Olmo-3-7B-Think",
7733
+ match: {
7734
+ or: [
7735
+ {
7736
+ equals: "allenai/olmo-3-7b-think"
7737
+ },
7738
+ {
7739
+ equals: "allenai/olmo-3-7b-think-fast"
7740
+ }
7741
+ ]
7742
+ },
7743
+ prices: {}
7744
+ },
7745
+ {
7746
+ id: "allenai/Olmo-3.1-32B-Instruct",
7747
+ name: "Olmo-3.1-32B-Instruct",
7748
+ match: {
7749
+ or: [
7750
+ {
7751
+ equals: "allenai/olmo-3.1-32b-instruct"
7752
+ },
7753
+ {
7754
+ equals: "allenai/olmo-3.1-32b-instruct-fast"
7755
+ }
7756
+ ]
7757
+ },
7758
+ prices: {}
7759
+ },
7760
+ {
7761
+ id: "allenai/Olmo-3.1-32B-Think",
7762
+ name: "Olmo-3.1-32B-Think",
7763
+ match: {
7764
+ or: [
7765
+ {
7766
+ equals: "allenai/olmo-3.1-32b-think"
7767
+ },
7768
+ {
7769
+ equals: "allenai/olmo-3.1-32b-think-fast"
7770
+ }
7771
+ ]
7772
+ },
7773
+ prices: {}
7774
+ },
7775
+ {
7776
+ id: "dicta-il/DictaLM-3.0-24B-Thinking",
7777
+ name: "DictaLM-3.0-24B-Thinking",
7778
+ match: {
7779
+ or: [
7780
+ {
7781
+ equals: "dicta-il/dictalm-3.0-24b-thinking"
7782
+ },
7783
+ {
7784
+ equals: "dicta-il/dictalm-3.0-24b-thinking-fast"
7785
+ }
7786
+ ]
7787
+ },
7788
+ prices: {}
7789
+ },
7790
+ {
7791
+ id: "swiss-ai/Apertus-70B-Instruct-2509",
7792
+ name: "Apertus-70B-Instruct-2509",
7793
+ match: {
7794
+ or: [
7795
+ {
7796
+ equals: "swiss-ai/apertus-70b-instruct-2509"
7797
+ },
7798
+ {
7799
+ equals: "swiss-ai/apertus-70b-instruct-2509-fast"
7800
+ }
7801
+ ]
7802
+ },
7803
+ prices: {}
7804
+ },
7805
+ {
7806
+ id: "swiss-ai/Apertus-8B-Instruct-2509",
7807
+ name: "Apertus-8B-Instruct-2509",
7808
+ match: {
7809
+ or: [
7810
+ {
7811
+ equals: "swiss-ai/apertus-8b-instruct-2509"
7812
+ },
7813
+ {
7814
+ equals: "swiss-ai/apertus-8b-instruct-2509-fast"
7815
+ }
7816
+ ]
7817
+ },
7818
+ prices: {}
7819
+ },
7820
+ {
7821
+ id: "utter-project/EuroLLM-22B-Instruct-2512",
7822
+ name: "EuroLLM-22B-Instruct-2512",
7823
+ match: {
7824
+ or: [
7825
+ {
7826
+ equals: "utter-project/eurollm-22b-instruct-2512"
7827
+ },
7828
+ {
7829
+ equals: "utter-project/eurollm-22b-instruct-2512-fast"
7830
+ }
7831
+ ]
7832
+ },
7833
+ prices: {}
7834
+ }
7835
+ ]
7836
+ },
7837
+ {
7838
+ id: "huggingface_sambanova",
7839
+ name: "HuggingFace (sambanova)",
7840
+ pricing_urls: ["https://router.huggingface.co/v1/models", "https://huggingface.co/inference/models"],
7841
+ api_pattern: "https://router\\.huggingface\\.co/sambanova",
7842
+ provider_match: {
7843
+ and: [
7844
+ {
7845
+ contains: "huggingface"
7846
+ },
7847
+ {
7848
+ contains: "sambanova"
7849
+ }
7850
+ ]
7851
+ },
7852
+ extractors: [
7853
+ {
7854
+ api_flavor: "chat",
7855
+ root: "usage",
7856
+ model_path: "model",
7857
+ mappings: [
7858
+ {
7859
+ path: "prompt_tokens",
7860
+ dest: "input_tokens",
7861
+ required: !0
7862
+ },
7863
+ {
7864
+ path: ["prompt_tokens_details", "cached_tokens"],
7865
+ dest: "cache_read_tokens",
7866
+ required: !1
7867
+ },
7868
+ {
7869
+ path: ["prompt_tokens_details", "audio_tokens"],
7870
+ dest: "input_audio_tokens",
7871
+ required: !1
7872
+ },
7873
+ {
7874
+ path: ["completion_tokens_details", "audio_tokens"],
7875
+ dest: "output_audio_tokens",
7876
+ required: !1
7877
+ },
7878
+ {
7879
+ path: "completion_tokens",
7880
+ dest: "output_tokens",
7881
+ required: !0
7882
+ }
7883
+ ]
7884
+ }
7885
+ ],
7886
+ models: [
7887
+ {
7888
+ id: "Qwen/Qwen3-32B",
7889
+ name: "Qwen3-32B",
7890
+ match: {
7891
+ or: [
7892
+ {
7893
+ equals: "qwen/qwen3-32b"
7894
+ },
7895
+ {
7896
+ equals: "qwen/qwen3-32b-fast"
7897
+ }
7898
+ ]
7899
+ },
7900
+ context_window: 32768,
7901
+ prices: {
7902
+ input_mtok: 0.4,
7903
+ output_mtok: 0.8
7904
+ }
7905
+ },
7906
+ {
7907
+ id: "deepseek-ai/DeepSeek-R1-0528",
7908
+ name: "DeepSeek-R1-0528",
7909
+ match: {
7910
+ or: [
7911
+ {
7912
+ equals: "deepseek-ai/deepseek-r1-0528"
7913
+ },
7914
+ {
7915
+ equals: "deepseek-ai/deepseek-r1-0528-fast"
7916
+ }
7917
+ ]
7918
+ },
7919
+ context_window: 131072,
7920
+ prices: {
7921
+ input_mtok: 5,
7922
+ output_mtok: 7
7923
+ }
7924
+ },
7925
+ {
7926
+ id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
7927
+ name: "DeepSeek-R1-Distill-Llama-70B",
7722
7928
  match: {
7723
7929
  or: [
7724
7930
  {
@@ -7735,6 +7941,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
7735
7941
  output_mtok: 1.4
7736
7942
  }
7737
7943
  },
7944
+ {
7945
+ id: "deepseek-ai/DeepSeek-V3-0324",
7946
+ name: "DeepSeek-V3-0324",
7947
+ match: {
7948
+ or: [
7949
+ {
7950
+ equals: "deepseek-ai/deepseek-v3-0324"
7951
+ },
7952
+ {
7953
+ equals: "deepseek-ai/deepseek-v3-0324-fast"
7954
+ }
7955
+ ]
7956
+ },
7957
+ context_window: 131072,
7958
+ prices: {
7959
+ input_mtok: 3,
7960
+ output_mtok: 4.5
7961
+ }
7962
+ },
7738
7963
  {
7739
7964
  id: "meta-llama/Llama-3.1-8B-Instruct",
7740
7965
  name: "Llama-3.1-8B-Instruct",
@@ -7863,6 +8088,25 @@ Compared to other leading proprietary and open-weights models Command A delivers
7863
8088
  }
7864
8089
  ],
7865
8090
  models: [
8091
+ {
8092
+ id: "EssentialAI/rnj-1-instruct",
8093
+ name: "rnj-1-instruct",
8094
+ match: {
8095
+ or: [
8096
+ {
8097
+ equals: "essentialai/rnj-1-instruct"
8098
+ },
8099
+ {
8100
+ equals: "essentialai/rnj-1-instruct-fast"
8101
+ }
8102
+ ]
8103
+ },
8104
+ context_window: 32768,
8105
+ prices: {
8106
+ input_mtok: 0.15,
8107
+ output_mtok: 0.15
8108
+ }
8109
+ },
7866
8110
  {
7867
8111
  id: "Qwen/Qwen2.5-72B-Instruct",
7868
8112
  name: "Qwen2.5-72B-Instruct",
@@ -7995,6 +8239,41 @@ Compared to other leading proprietary and open-weights models Command A delivers
7995
8239
  output_mtok: 1.5
7996
8240
  }
7997
8241
  },
8242
+ {
8243
+ id: "Qwen/Qwen3-VL-32B-Instruct",
8244
+ name: "Qwen3-VL-32B-Instruct",
8245
+ match: {
8246
+ or: [
8247
+ {
8248
+ equals: "qwen/qwen3-vl-32b-instruct"
8249
+ },
8250
+ {
8251
+ equals: "qwen/qwen3-vl-32b-instruct-fast"
8252
+ }
8253
+ ]
8254
+ },
8255
+ context_window: 262144,
8256
+ prices: {
8257
+ input_mtok: 0.5,
8258
+ output_mtok: 1.5
8259
+ }
8260
+ },
8261
+ {
8262
+ id: "ServiceNow-AI/Apriel-1.6-15b-Thinker",
8263
+ name: "Apriel-1.6-15b-Thinker",
8264
+ match: {
8265
+ or: [
8266
+ {
8267
+ equals: "servicenow-ai/apriel-1.6-15b-thinker"
8268
+ },
8269
+ {
8270
+ equals: "servicenow-ai/apriel-1.6-15b-thinker-fast"
8271
+ }
8272
+ ]
8273
+ },
8274
+ context_window: 131072,
8275
+ prices: {}
8276
+ },
7998
8277
  {
7999
8278
  id: "deepcogito/cogito-671b-v2.1",
8000
8279
  name: "cogito-671b-v2.1",
@@ -16530,9 +16809,355 @@ Compared to other leading proprietary and open-weights models Command A delivers
16530
16809
  ]
16531
16810
  },
16532
16811
  {
16533
- id: "perplexity",
16534
- name: "Perplexity",
16535
- pricing_urls: ["https://docs.perplexity.ai/guides/pricing"],
16812
+ id: "ovhcloud",
16813
+ name: "OVHcloud AI Endpoints",
16814
+ pricing_urls: ["https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/models"],
16815
+ api_pattern: "https://oai\\.endpoints\\.kepler\\.ai\\.cloud\\.ovh\\.net",
16816
+ extractors: [
16817
+ {
16818
+ api_flavor: "chat",
16819
+ root: "usage",
16820
+ model_path: "model",
16821
+ mappings: [
16822
+ {
16823
+ path: "prompt_tokens",
16824
+ dest: "input_tokens",
16825
+ required: !0
16826
+ },
16827
+ {
16828
+ path: ["prompt_tokens_details", "cached_tokens"],
16829
+ dest: "cache_read_tokens",
16830
+ required: !1
16831
+ },
16832
+ {
16833
+ path: ["prompt_tokens_details", "audio_tokens"],
16834
+ dest: "input_audio_tokens",
16835
+ required: !1
16836
+ },
16837
+ {
16838
+ path: ["completion_tokens_details", "audio_tokens"],
16839
+ dest: "output_audio_tokens",
16840
+ required: !1
16841
+ },
16842
+ {
16843
+ path: "completion_tokens",
16844
+ dest: "output_tokens",
16845
+ required: !0
16846
+ }
16847
+ ]
16848
+ }
16849
+ ],
16850
+ models: [
16851
+ {
16852
+ id: "BGE-M3",
16853
+ name: "BGE-M3",
16854
+ match: {
16855
+ or: [
16856
+ {
16857
+ equals: "BGE-M3"
16858
+ },
16859
+ {
16860
+ equals: "bge-m3"
16861
+ }
16862
+ ]
16863
+ },
16864
+ context_window: 8192,
16865
+ prices: {
16866
+ input_mtok: 0.01
16867
+ }
16868
+ },
16869
+ {
16870
+ id: "DeepSeek-R1-Distill-Llama-70B",
16871
+ name: "DeepSeek-R1-Distill-Llama-70B",
16872
+ match: {
16873
+ or: [
16874
+ {
16875
+ equals: "DeepSeek-R1-Distill-Llama-70B"
16876
+ },
16877
+ {
16878
+ equals: "deepseek-r1-distill-llama-70b"
16879
+ }
16880
+ ]
16881
+ },
16882
+ context_window: 131072,
16883
+ prices: {
16884
+ input_mtok: 0.74,
16885
+ output_mtok: 0.74
16886
+ }
16887
+ },
16888
+ {
16889
+ id: "Llama-3.1-8B-Instruct",
16890
+ name: "Llama-3.1-8B-Instruct",
16891
+ match: {
16892
+ or: [
16893
+ {
16894
+ equals: "Llama-3.1-8B-Instruct"
16895
+ },
16896
+ {
16897
+ equals: "llama-3.1-8b-instruct"
16898
+ }
16899
+ ]
16900
+ },
16901
+ context_window: 131072,
16902
+ prices: {
16903
+ input_mtok: 0.11,
16904
+ output_mtok: 0.11
16905
+ }
16906
+ },
16907
+ {
16908
+ id: "Meta-Llama-3_1-70B-Instruct",
16909
+ name: "Meta-Llama-3_1-70B-Instruct",
16910
+ match: {
16911
+ or: [
16912
+ {
16913
+ equals: "Meta-Llama-3_1-70B-Instruct"
16914
+ },
16915
+ {
16916
+ equals: "meta-llama-3_1-70b-instruct"
16917
+ }
16918
+ ]
16919
+ },
16920
+ context_window: 131072,
16921
+ prices: {
16922
+ input_mtok: 0.74,
16923
+ output_mtok: 0.74
16924
+ }
16925
+ },
16926
+ {
16927
+ id: "Meta-Llama-3_3-70B-Instruct",
16928
+ name: "Meta-Llama-3_3-70B-Instruct",
16929
+ match: {
16930
+ or: [
16931
+ {
16932
+ equals: "Meta-Llama-3_3-70B-Instruct"
16933
+ },
16934
+ {
16935
+ equals: "meta-llama-3_3-70b-instruct"
16936
+ }
16937
+ ]
16938
+ },
16939
+ context_window: 131072,
16940
+ prices: {
16941
+ input_mtok: 0.74,
16942
+ output_mtok: 0.74
16943
+ }
16944
+ },
16945
+ {
16946
+ id: "Mistral-7B-Instruct-v0.3",
16947
+ name: "Mistral-7B-Instruct-v0.3",
16948
+ match: {
16949
+ or: [
16950
+ {
16951
+ equals: "Mistral-7B-Instruct-v0.3"
16952
+ },
16953
+ {
16954
+ equals: "mistral-7b-instruct-v0.3"
16955
+ }
16956
+ ]
16957
+ },
16958
+ context_window: 65536,
16959
+ prices: {
16960
+ input_mtok: 0.11,
16961
+ output_mtok: 0.11
16962
+ }
16963
+ },
16964
+ {
16965
+ id: "Mistral-Nemo-Instruct-2407",
16966
+ name: "Mistral-Nemo-Instruct-2407",
16967
+ match: {
16968
+ or: [
16969
+ {
16970
+ equals: "Mistral-Nemo-Instruct-2407"
16971
+ },
16972
+ {
16973
+ equals: "mistral-nemo-instruct-2407"
16974
+ }
16975
+ ]
16976
+ },
16977
+ context_window: 65536,
16978
+ prices: {
16979
+ input_mtok: 0.14,
16980
+ output_mtok: 0.14
16981
+ }
16982
+ },
16983
+ {
16984
+ id: "Mistral-Small-3.2-24B-Instruct-2506",
16985
+ name: "Mistral-Small-3.2-24B-Instruct-2506",
16986
+ match: {
16987
+ or: [
16988
+ {
16989
+ equals: "Mistral-Small-3.2-24B-Instruct-2506"
16990
+ },
16991
+ {
16992
+ equals: "mistral-small-3.2-24b-instruct-2506"
16993
+ }
16994
+ ]
16995
+ },
16996
+ context_window: 131072,
16997
+ prices: {
16998
+ input_mtok: 0.1,
16999
+ output_mtok: 0.31
17000
+ }
17001
+ },
17002
+ {
17003
+ id: "Mixtral-8x7B-Instruct-v0.1",
17004
+ name: "Mixtral-8x7B-Instruct-v0.1",
17005
+ match: {
17006
+ or: [
17007
+ {
17008
+ equals: "Mixtral-8x7B-Instruct-v0.1"
17009
+ },
17010
+ {
17011
+ equals: "mixtral-8x7b-instruct-v0.1"
17012
+ }
17013
+ ]
17014
+ },
17015
+ context_window: 32768,
17016
+ prices: {
17017
+ input_mtok: 0.7,
17018
+ output_mtok: 0.7
17019
+ }
17020
+ },
17021
+ {
17022
+ id: "Qwen2.5-Coder-32B-Instruct",
17023
+ name: "Qwen2.5-Coder-32B-Instruct",
17024
+ match: {
17025
+ or: [
17026
+ {
17027
+ equals: "Qwen2.5-Coder-32B-Instruct"
17028
+ },
17029
+ {
17030
+ equals: "qwen2.5-coder-32b-instruct"
17031
+ }
17032
+ ]
17033
+ },
17034
+ context_window: 32768,
17035
+ prices: {
17036
+ input_mtok: 0.96,
17037
+ output_mtok: 0.96
17038
+ }
17039
+ },
17040
+ {
17041
+ id: "Qwen2.5-VL-72B-Instruct",
17042
+ name: "Qwen2.5-VL-72B-Instruct",
17043
+ match: {
17044
+ or: [
17045
+ {
17046
+ equals: "Qwen2.5-VL-72B-Instruct"
17047
+ },
17048
+ {
17049
+ equals: "qwen2.5-vl-72b-instruct"
17050
+ }
17051
+ ]
17052
+ },
17053
+ context_window: 32768,
17054
+ prices: {
17055
+ input_mtok: 1.01,
17056
+ output_mtok: 1.01
17057
+ }
17058
+ },
17059
+ {
17060
+ id: "Qwen3-32B",
17061
+ name: "Qwen3-32B",
17062
+ match: {
17063
+ or: [
17064
+ {
17065
+ equals: "Qwen3-32B"
17066
+ },
17067
+ {
17068
+ equals: "qwen3-32b"
17069
+ }
17070
+ ]
17071
+ },
17072
+ context_window: 32768,
17073
+ prices: {
17074
+ input_mtok: 0.09,
17075
+ output_mtok: 0.25
17076
+ }
17077
+ },
17078
+ {
17079
+ id: "Qwen3-Coder-30B-A3B-Instruct",
17080
+ name: "Qwen3-Coder-30B-A3B-Instruct",
17081
+ match: {
17082
+ or: [
17083
+ {
17084
+ equals: "Qwen3-Coder-30B-A3B-Instruct"
17085
+ },
17086
+ {
17087
+ equals: "qwen3-coder-30b-a3b-instruct"
17088
+ }
17089
+ ]
17090
+ },
17091
+ context_window: 262144,
17092
+ prices: {
17093
+ input_mtok: 0.07,
17094
+ output_mtok: 0.26
17095
+ }
17096
+ },
17097
+ {
17098
+ id: "bge-base-en-v1.5",
17099
+ name: "bge-base-en-v1.5",
17100
+ match: {
17101
+ equals: "bge-base-en-v1.5"
17102
+ },
17103
+ context_window: 512,
17104
+ prices: {
17105
+ input_mtok: 0.01
17106
+ }
17107
+ },
17108
+ {
17109
+ id: "bge-multilingual-gemma2",
17110
+ name: "bge-multilingual-gemma2",
17111
+ match: {
17112
+ equals: "bge-multilingual-gemma2"
17113
+ },
17114
+ context_window: 8192,
17115
+ prices: {
17116
+ input_mtok: 0.01
17117
+ }
17118
+ },
17119
+ {
17120
+ id: "gpt-oss-120b",
17121
+ name: "gpt-oss-120b",
17122
+ match: {
17123
+ equals: "gpt-oss-120b"
17124
+ },
17125
+ context_window: 131072,
17126
+ prices: {
17127
+ input_mtok: 0.09,
17128
+ output_mtok: 0.47
17129
+ }
17130
+ },
17131
+ {
17132
+ id: "gpt-oss-20b",
17133
+ name: "gpt-oss-20b",
17134
+ match: {
17135
+ equals: "gpt-oss-20b"
17136
+ },
17137
+ context_window: 131072,
17138
+ prices: {
17139
+ input_mtok: 0.05,
17140
+ output_mtok: 0.18
17141
+ }
17142
+ },
17143
+ {
17144
+ id: "llava-next-mistral-7b",
17145
+ name: "llava-next-mistral-7b",
17146
+ match: {
17147
+ equals: "llava-next-mistral-7b"
17148
+ },
17149
+ context_window: 32768,
17150
+ prices: {
17151
+ input_mtok: 0.32,
17152
+ output_mtok: 0.32
17153
+ }
17154
+ }
17155
+ ]
17156
+ },
17157
+ {
17158
+ id: "perplexity",
17159
+ name: "Perplexity",
17160
+ pricing_urls: ["https://docs.perplexity.ai/guides/pricing"],
16536
17161
  api_pattern: "https://api\\.perplexity\\.ai",
16537
17162
  price_comments: "Prices per request vary based on usage, this is not represented here, instead we just take the highest price shown for `requests_kcount`.",
16538
17163
  models: [
@@ -17641,100 +18266,165 @@ Compared to other leading proprietary and open-weights models Command A delivers
17641
18266
  cache_read_mtok: 0.75,
17642
18267
  output_mtok: 15
17643
18268
  }
18269
+ },
18270
+ {
18271
+ id: "grok-4-1-fast-non-reasoning",
18272
+ name: "Grok 4.1 Fast Non-Reasoning",
18273
+ description: "A frontier multimodal model optimized specifically for high-performance agentic tool calling.",
18274
+ match: {
18275
+ or: [
18276
+ {
18277
+ equals: "grok-4-1-fast-non-reasoning"
18278
+ },
18279
+ {
18280
+ equals: "grok-4-1-fast-non-reasoning-latest"
18281
+ }
18282
+ ]
18283
+ },
18284
+ context_window: 2e6,
18285
+ prices: {
18286
+ input_mtok: 0.2,
18287
+ cache_read_mtok: 0.05,
18288
+ output_mtok: 0.5
18289
+ }
18290
+ },
18291
+ {
18292
+ id: "grok-4-1-fast-reasoning",
18293
+ name: "Grok 4.1 Fast Reasoning",
18294
+ description: "A frontier multimodal model optimized specifically for high-performance agentic tool calling.",
18295
+ match: {
18296
+ or: [
18297
+ {
18298
+ equals: "grok-4-1-fast"
18299
+ },
18300
+ {
18301
+ equals: "grok-4-1-fast-reasoning"
18302
+ },
18303
+ {
18304
+ equals: "grok-4-1-fast-reasoning-latest"
18305
+ }
18306
+ ]
18307
+ },
18308
+ context_window: 2e6,
18309
+ prices: {
18310
+ input_mtok: 0.2,
18311
+ cache_read_mtok: 0.05,
18312
+ output_mtok: 0.5
18313
+ }
18314
+ },
18315
+ {
18316
+ id: "grok-code-fast-1",
18317
+ name: "Grok Code Fast 1",
18318
+ description: "A speedy and economical reasoning model that excels at agentic coding.",
18319
+ match: {
18320
+ or: [
18321
+ {
18322
+ equals: "grok-code-fast"
18323
+ },
18324
+ {
18325
+ equals: "grok-code-fast-1"
18326
+ },
18327
+ {
18328
+ equals: "grok-code-fast-1-0825"
18329
+ }
18330
+ ]
18331
+ },
18332
+ context_window: 256e3,
18333
+ prices: {
18334
+ input_mtok: 0.2,
18335
+ cache_read_mtok: 0.02,
18336
+ output_mtok: 1.5
18337
+ }
17644
18338
  }
17645
18339
  ]
17646
18340
  }
17647
18341
  ];
17648
- function Ke(i, n) {
18342
+ function $e(i, n, u) {
17649
18343
  if (n <= 0) return 0;
17650
- let m = 0;
17651
- const s = [...i.tiers].sort((_, h) => _.start - h.start), u = s[0]?.start ?? n, k = Math.min(n, u);
17652
- m += k * i.base / 1e6;
17653
- for (let _ = 0; _ < s.length; _++) {
17654
- const h = s[_], q = s[_ + 1]?.start ?? 1 / 0, B = Math.max(0, Math.min(n, q) - h.start);
17655
- B > 0 && (m += B * h.price / 1e6);
17656
- }
17657
- return m;
18344
+ let s = i.base;
18345
+ for (const r of i.tiers)
18346
+ u > r.start && (s = r.price);
18347
+ return s * n / 1e6;
17658
18348
  }
17659
- function C(i, n, m) {
17660
- return i === void 0 || n === void 0 ? 0 : typeof i == "number" ? i * n / 1e6 : Ke(i, n);
18349
+ function R(i, n, u, s) {
18350
+ return i === void 0 || n === void 0 ? 0 : typeof i == "number" ? i * n / 1e6 : $e(i, n, s);
17661
18351
  }
17662
18352
  function We(i, n) {
17663
- let m = 0, s = 0;
17664
- const u = i.cache_read_tokens ?? 0, k = i.cache_write_tokens ?? 0, _ = i.cache_audio_read_tokens ?? 0, h = i.output_audio_tokens ?? 0;
17665
- let q = i.input_audio_tokens ?? 0;
17666
- if (q -= _, q < 0)
18353
+ let u = 0, s = 0;
18354
+ const r = i.input_tokens ?? 0, h = i.cache_read_tokens ?? 0, k = i.cache_write_tokens ?? 0, _ = i.cache_audio_read_tokens ?? 0, q = i.output_audio_tokens ?? 0;
18355
+ let M = i.input_audio_tokens ?? 0;
18356
+ if (M -= _, M < 0)
17667
18357
  throw new Error("cache_audio_read_tokens cannot be greater than input_audio_tokens");
17668
18358
  let B = i.input_tokens ?? 0;
17669
- if (B -= u, B -= k, B -= q, B < 0)
18359
+ if (B -= h, B -= k, B -= M, B < 0)
17670
18360
  throw new Error("Uncached text input tokens cannot be negative");
17671
- let A = u;
17672
- if (A -= _, A < 0)
18361
+ let S = h;
18362
+ if (S -= _, S < 0)
17673
18363
  throw new Error("cache_audio_read_tokens cannot be greater than cache_read_tokens");
17674
- m += C(n.input_mtok, B), m += C(n.cache_read_mtok, A), m += C(n.cache_write_mtok, k), m += C(n.input_audio_mtok, q), m += C(n.cache_audio_read_mtok, _);
17675
- let P = i.output_tokens ?? 0;
17676
- if (P -= h, P < 0)
18364
+ u += R(n.input_mtok, B, "input_mtok", r), u += R(n.cache_read_mtok, S, "cache_read_mtok", r), u += R(n.cache_write_mtok, k, "cache_write_mtok", r), u += R(n.input_audio_mtok, M, "input_audio_mtok", r), u += R(n.cache_audio_read_mtok, _, "cache_audio_read_mtok", r);
18365
+ let A = i.output_tokens ?? 0;
18366
+ if (A -= q, A < 0)
17677
18367
  throw new Error("output_audio_tokens cannot be greater than output_tokens");
17678
- s += C(n.output_mtok, P), s += C(n.output_audio_mtok, i.output_audio_tokens);
17679
- let S = m + s;
17680
- return n.requests_kcount !== void 0 && (S += n.requests_kcount / 1e3), {
17681
- input_price: m,
18368
+ s += R(n.output_mtok, A, "output_mtok", r), s += R(n.output_audio_mtok, i.output_audio_tokens, "output_audio_mtok", r);
18369
+ let G = u + s;
18370
+ return n.requests_kcount !== void 0 && (G += n.requests_kcount / 1e3), {
18371
+ input_price: u,
17682
18372
  output_price: s,
17683
- total_price: S
18373
+ total_price: G
17684
18374
  };
17685
18375
  }
17686
18376
  function Ue(i, n) {
17687
18377
  if (!Array.isArray(i.prices))
17688
18378
  return i.prices;
17689
- for (let m = i.prices.length - 1; m >= 0; m--) {
17690
- const s = i.prices[m], u = s.constraint;
17691
- if (u === void 0)
18379
+ for (let u = i.prices.length - 1; u >= 0; u--) {
18380
+ const s = i.prices[u], r = s.constraint;
18381
+ if (r === void 0)
17692
18382
  return s.prices;
17693
- if (u.type === "start_date") {
17694
- if (n >= new Date(u.start_date))
18383
+ if (r.type === "start_date") {
18384
+ if (n >= new Date(r.start_date))
17695
18385
  return s.prices;
17696
18386
  } else {
17697
- const k = n.toISOString().slice(11, 19), _ = u.start_time, h = u.end_time;
17698
- if (h < _) {
17699
- if (k >= _ || k < h)
18387
+ const h = n.toISOString().slice(11, 19), k = r.start_time, _ = r.end_time;
18388
+ if (_ < k) {
18389
+ if (h >= k || h < _)
17700
18390
  return s.prices;
17701
- } else if (k >= _ && k < h)
18391
+ } else if (h >= k && h < _)
17702
18392
  return s.prices;
17703
18393
  }
17704
18394
  }
17705
18395
  return i.prices[0].prices;
17706
18396
  }
17707
- function E(i, n) {
17708
- return "or" in i ? i.or.some((m) => E(m, n)) : "and" in i ? i.and.every((m) => E(m, n)) : "equals" in i ? n === i.equals : "starts_with" in i ? n.startsWith(i.starts_with) : "ends_with" in i ? n.endsWith(i.ends_with) : "contains" in i ? n.includes(i.contains) : "regex" in i ? new RegExp(i.regex).test(n) : !1;
18397
+ function D(i, n) {
18398
+ return "or" in i ? i.or.some((u) => D(u, n)) : "and" in i ? i.and.every((u) => D(u, n)) : "equals" in i ? n === i.equals : "starts_with" in i ? n.startsWith(i.starts_with) : "ends_with" in i ? n.endsWith(i.ends_with) : "contains" in i ? n.includes(i.contains) : "regex" in i ? new RegExp(i.regex).test(n) : !1;
17709
18399
  }
17710
18400
  function Ye(i, n) {
17711
- const m = n.toLowerCase().trim(), s = i.find((u) => u.id === m);
17712
- return s || i.find((u) => u.provider_match && E(u.provider_match, m));
18401
+ const u = n.toLowerCase().trim(), s = i.find((r) => r.id === u);
18402
+ return s || i.find((r) => r.provider_match && D(r.provider_match, u));
17713
18403
  }
17714
- function Je(i, { modelId: n, providerApiUrl: m, providerId: s }) {
18404
+ function Je(i, { modelId: n, providerApiUrl: u, providerId: s }) {
17715
18405
  if (s)
17716
18406
  return Ye(i, s);
17717
- if (m)
17718
- return i.find((u) => new RegExp(u.api_pattern).test(m));
18407
+ if (u)
18408
+ return i.find((r) => new RegExp(r.api_pattern).test(u));
17719
18409
  if (n)
17720
- return i.find((u) => u.model_match && E(u.model_match, n));
18410
+ return i.find((r) => r.model_match && D(r.model_match, n));
17721
18411
  }
17722
18412
  function Ze(i, n) {
17723
- return i.find((m) => E(m.match, n));
18413
+ return i.find((u) => D(u.match, n));
17724
18414
  }
17725
18415
  let Xe = ie;
17726
18416
  Promise.resolve(ie);
17727
- function et(i, n, m) {
17728
- const s = n.toLowerCase().trim(), u = m?.provider ?? Je(Xe, { modelId: s, providerApiUrl: m?.providerApiUrl, providerId: m?.providerId });
17729
- if (!u) return null;
17730
- const k = Ze(u.models, s);
17731
- if (!k) return null;
17732
- const _ = m?.timestamp ?? /* @__PURE__ */ new Date(), h = Ue(k, _), q = We(i, h);
18417
+ function et(i, n, u) {
18418
+ const s = n.toLowerCase().trim(), r = u?.provider ?? Je(Xe, { modelId: s, providerApiUrl: u?.providerApiUrl, providerId: u?.providerId });
18419
+ if (!r) return null;
18420
+ const h = Ze(r.models, s);
18421
+ if (!h) return null;
18422
+ const k = u?.timestamp ?? /* @__PURE__ */ new Date(), _ = Ue(h, k), q = We(i, _);
17733
18423
  return {
17734
18424
  auto_update_timestamp: void 0,
17735
- model: k,
17736
- model_price: h,
17737
- provider: u,
18425
+ model: h,
18426
+ model_price: _,
18427
+ provider: r,
17738
18428
  ...q
17739
18429
  };
17740
18430
  }
@@ -17749,23 +18439,23 @@ const f = de(Ge(process.argv)).scriptName("genai-prices").command(
17749
18439
  ).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();
17750
18440
  function tt() {
17751
18441
  if (f._[0] === "list") {
17752
- const m = ie;
18442
+ const u = ie;
17753
18443
  if (f.provider) {
17754
- const s = m.find((u) => u.id === f.provider);
18444
+ const s = u.find((r) => r.id === f.provider);
17755
18445
  s || (console.error(`Provider ${f.provider} not found.`), process.exit(1)), console.log(`${s.name}: (${s.models.length} models)`);
17756
- for (const u of s.models)
17757
- console.log(` ${s.id}:${u.id}${u.name ? ": " + u.name : ""}`);
18446
+ for (const r of s.models)
18447
+ console.log(` ${s.id}:${r.id}${r.name ? ": " + r.name : ""}`);
17758
18448
  } else
17759
- for (const s of m) {
18449
+ for (const s of u) {
17760
18450
  console.log(`${s.name}: (${s.models.length} models)`);
17761
- for (const u of s.models)
17762
- console.log(` ${s.id}:${u.id}${u.name ? ": " + u.name : ""}`);
18451
+ for (const r of s.models)
18452
+ console.log(` ${s.id}:${r.id}${r.name ? ": " + r.name : ""}`);
17763
18453
  }
17764
18454
  process.exit(0);
17765
18455
  }
17766
- const n = f._[0] === "calc" ? Array.isArray(f.model) ? f.model : [f.model] : f._.filter((m) => typeof m == "string");
18456
+ const n = f._[0] === "calc" ? Array.isArray(f.model) ? f.model : [f.model] : f._.filter((u) => typeof u == "string");
17767
18457
  if (n.length > 0) {
17768
- const m = {
18458
+ const u = {
17769
18459
  cache_audio_read_tokens: f["cache-audio-read-tokens"] !== void 0 ? Number(f["cache-audio-read-tokens"]) : void 0,
17770
18460
  cache_read_tokens: f["cache-read-tokens"] !== void 0 ? Number(f["cache-read-tokens"]) : void 0,
17771
18461
  cache_write_tokens: f["cache-write-tokens"] !== void 0 ? Number(f["cache-write-tokens"]) : void 0,
@@ -17775,33 +18465,33 @@ function tt() {
17775
18465
  output_tokens: f["output-tokens"] !== void 0 ? Number(f["output-tokens"]) : void 0,
17776
18466
  requests: f.requests !== void 0 ? Number(f.requests) : void 0
17777
18467
  }, s = f.timestamp ? new Date(String(f.timestamp)) : void 0;
17778
- let u = !1;
17779
- for (const k of n) {
17780
- let _, h = k;
17781
- h.includes(":") && ([_, h] = h.split(":", 2));
18468
+ let r = !1;
18469
+ for (const h of n) {
18470
+ let k, _ = h;
18471
+ _.includes(":") && ([k, _] = _.split(":", 2));
17782
18472
  try {
17783
- const q = et(m, h, { providerId: _, timestamp: s });
18473
+ const q = et(u, _, { providerId: k, timestamp: s });
17784
18474
  if (!q) {
17785
- u = !0, console.error(`No price found for model ${k}`);
18475
+ r = !0, console.error(`No price found for model ${h}`);
17786
18476
  continue;
17787
18477
  }
17788
- const B = q.model.context_window, A = [
18478
+ const M = q.model.context_window, B = [
17789
18479
  ["Provider", q.provider.name],
17790
18480
  ["Model", q.model.name ?? q.model.id],
17791
18481
  ["Model Prices", JSON.stringify(q.model_price)],
17792
- ["Context Window", B !== void 0 ? B.toLocaleString() : void 0],
18482
+ ["Context Window", M !== void 0 ? M.toLocaleString() : void 0],
17793
18483
  ["Total Price", `$${q.total_price}`],
17794
18484
  ["Input Price", `$${q.input_price}`],
17795
18485
  ["Output Price", `$${q.output_price}`]
17796
18486
  ];
17797
- for (const [P, S] of A)
17798
- S !== void 0 && console.log(`${P.padStart(14)}: ${S}`);
18487
+ for (const [S, A] of B)
18488
+ A !== void 0 && console.log(`${S.padStart(14)}: ${A}`);
17799
18489
  console.log("");
17800
18490
  } catch (q) {
17801
- u = !0, q instanceof Error && console.error(`Error for model ${k}:`, q.message);
18491
+ r = !0, q instanceof Error && console.error(`Error for model ${h}:`, q.message);
17802
18492
  }
17803
18493
  }
17804
- process.exit(u ? 1 : 0);
18494
+ process.exit(r ? 1 : 0);
17805
18495
  }
17806
18496
  de().showHelp(), process.exit(1);
17807
18497
  }