@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 +1138 -448
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +945 -247
- package/package.json +1 -1
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
|
|
3
|
+
import { format as _e } from "util";
|
|
4
4
|
import { resolve as ae, normalize as Le } from "path";
|
|
5
|
-
import { readFileSync as
|
|
5
|
+
import { readFileSync as he, writeFile as Me, statSync as Qe } from "fs";
|
|
6
6
|
import "assert";
|
|
7
|
-
import { fileURLToPath as
|
|
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(
|
|
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
|
|
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
|
|
30
|
-
const
|
|
31
|
-
for (let
|
|
32
|
-
let
|
|
33
|
-
s && (s = !1,
|
|
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
|
|
35
|
+
return u;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
function Ce(i, n) {
|
|
39
|
-
const
|
|
39
|
+
const u = i.toLowerCase();
|
|
40
40
|
n = n || "-";
|
|
41
41
|
let s = "";
|
|
42
|
-
for (let
|
|
43
|
-
const
|
|
44
|
-
|
|
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((
|
|
58
|
+
return i.map((k) => typeof k != "string" ? k + "" : k);
|
|
59
59
|
i = i.trim();
|
|
60
|
-
let n = 0,
|
|
61
|
-
const
|
|
62
|
-
for (let
|
|
63
|
-
if (
|
|
64
|
-
|
|
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 ===
|
|
67
|
+
s === r ? r = null : (s === "'" || s === '"') && !r && (r = s), h[n] || (h[n] = ""), h[n] += s;
|
|
68
68
|
}
|
|
69
|
-
return
|
|
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
|
|
86
|
+
class Ne {
|
|
87
87
|
constructor(n) {
|
|
88
88
|
T = n;
|
|
89
89
|
}
|
|
90
|
-
parse(n,
|
|
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
|
-
},
|
|
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),
|
|
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
|
-
},
|
|
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 && (
|
|
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
|
-
|
|
150
|
+
m.bools[e] = !0, m.keys.push(e);
|
|
151
151
|
}), [].concat(s.string || []).filter(Boolean).forEach(function(e) {
|
|
152
|
-
|
|
152
|
+
m.strings[e] = !0, m.keys.push(e);
|
|
153
153
|
}), [].concat(s.number || []).filter(Boolean).forEach(function(e) {
|
|
154
|
-
|
|
154
|
+
m.numbers[e] = !0, m.keys.push(e);
|
|
155
155
|
}), [].concat(s.count || []).filter(Boolean).forEach(function(e) {
|
|
156
|
-
|
|
156
|
+
m.counts[e] = !0, m.keys.push(e);
|
|
157
157
|
}), [].concat(s.normalize || []).filter(Boolean).forEach(function(e) {
|
|
158
|
-
|
|
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" && (
|
|
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" && (
|
|
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
|
-
|
|
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") && (
|
|
167
|
-
})), be(s.key,
|
|
168
|
-
(
|
|
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
|
|
173
|
-
|
|
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 <
|
|
177
|
-
const a =
|
|
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) &&
|
|
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(/^--.+=/) || !
|
|
185
|
-
p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1],
|
|
186
|
-
else if (a.match(W) &&
|
|
187
|
-
p = a.match(W), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], b(t, g(t,
|
|
188
|
-
else if (a.match(/^--.+/) || !
|
|
189
|
-
p = a.match(/^--?(.+)/), p !== null && Array.isArray(p) && p.length >= 2 && (t = p[1], g(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(
|
|
193
|
-
d =
|
|
194
|
-
else if (a.match(/^-[^-]+/) && !a.match(
|
|
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,
|
|
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,
|
|
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],
|
|
213
|
+
b(l[x], z(l[x]));
|
|
214
214
|
}
|
|
215
|
-
t = a.slice(-1)[0], !o && t !== "-" && (g(t,
|
|
216
|
-
} else if (a.match(/^-[0-9]$/) && a.match(
|
|
217
|
-
t = a.slice(1), b(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 =
|
|
219
|
+
j = r.slice(e + 1);
|
|
220
220
|
break;
|
|
221
|
-
} else if (
|
|
222
|
-
j =
|
|
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,
|
|
228
|
-
|
|
229
|
-
}),
|
|
230
|
-
w[
|
|
231
|
-
}),
|
|
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
|
-
}),
|
|
234
|
-
|
|
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,
|
|
241
|
+
let t, l = g(a, m.nargs);
|
|
242
242
|
if (l = typeof l != "number" || isNaN(l) ? 1 : l, l === 0)
|
|
243
|
-
return
|
|
244
|
-
let p =
|
|
245
|
-
if (
|
|
246
|
-
c.length - (e + 1) + 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(
|
|
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 && (
|
|
250
|
+
p < l && (I = Error(C("Not enough arguments following: %s", a)));
|
|
251
251
|
}
|
|
252
252
|
let d = Math.min(p, l);
|
|
253
|
-
for (!
|
|
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,
|
|
260
|
-
if (g(a,
|
|
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 (
|
|
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
|
-
|
|
269
|
-
for (let d = e + 1; d < c.length && !(!
|
|
270
|
-
e = d, t.push(Y(a, l,
|
|
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) && (
|
|
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 =
|
|
275
|
-
if (/-/.test(e) &&
|
|
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
|
|
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),
|
|
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 &&
|
|
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), (
|
|
289
|
-
}), g(e,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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 !
|
|
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,
|
|
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 =
|
|
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
|
-
|
|
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" ?
|
|
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) &&
|
|
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
|
|
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
|
|
352
|
+
if (typeof B > "u")
|
|
353
353
|
return;
|
|
354
|
-
const c = typeof
|
|
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)),
|
|
358
|
+
return d === 0 && (p = p.substring(c.length)), $(p);
|
|
359
359
|
});
|
|
360
|
-
(a &&
|
|
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,
|
|
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(
|
|
371
|
+
[].concat(m.aliases[o] || [], o).forEach((l) => {
|
|
372
372
|
c.add(l), e[l] = t;
|
|
373
373
|
});
|
|
374
374
|
} catch (t) {
|
|
375
|
-
|
|
375
|
+
I = t;
|
|
376
376
|
}
|
|
377
377
|
});
|
|
378
378
|
}
|
|
379
379
|
function fe(e) {
|
|
380
|
-
return
|
|
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
|
-
|
|
387
|
-
|
|
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
|
|
391
|
+
function N(e, a) {
|
|
392
392
|
let c = e;
|
|
393
|
-
|
|
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
|
-
|
|
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("."),
|
|
405
|
-
let d =
|
|
406
|
-
!d && g(t,
|
|
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
|
-
|
|
412
|
-
if (/-/.test(o) &&
|
|
413
|
-
const t =
|
|
414
|
-
t !== c &&
|
|
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
|
-
}),
|
|
417
|
-
if (o.length > 1 && /[A-Z]/.test(o) &&
|
|
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 &&
|
|
419
|
+
t !== c && m.aliases[c].indexOf(t) === -1 && (m.aliases[c].push(t), G[t] = !0);
|
|
420
420
|
}
|
|
421
|
-
}),
|
|
422
|
-
|
|
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(
|
|
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(
|
|
435
|
-
return [].concat(a.map((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(
|
|
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
|
|
461
|
-
return
|
|
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(
|
|
464
|
+
return e = e.replace(/^-{3,}/, "--"), e.match(Q) || ve(e) ? !1 : !we(e, /^-+([^=]+?)=[\s\S]*$/, W, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
|
|
465
465
|
}
|
|
466
|
-
function
|
|
467
|
-
return !g(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
|
|
477
|
+
function Ie(e) {
|
|
478
478
|
let a = L.BOOLEAN;
|
|
479
|
-
return g(e,
|
|
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
|
|
481
|
+
function P(e) {
|
|
482
482
|
return e === void 0;
|
|
483
483
|
}
|
|
484
|
-
function
|
|
485
|
-
Object.keys(
|
|
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({},
|
|
488
|
+
aliases: Object.assign({}, m.aliases),
|
|
489
489
|
argv: Object.assign(ne, w),
|
|
490
|
-
configuration:
|
|
490
|
+
configuration: _,
|
|
491
491
|
defaulted: Object.assign({}, oe),
|
|
492
|
-
error:
|
|
493
|
-
newAliases: Object.assign({},
|
|
492
|
+
error: I,
|
|
493
|
+
newAliases: Object.assign({}, G)
|
|
494
494
|
};
|
|
495
495
|
}
|
|
496
496
|
}
|
|
497
|
-
function
|
|
498
|
-
const n = [],
|
|
497
|
+
function Oe(i) {
|
|
498
|
+
const n = [], u = /* @__PURE__ */ Object.create(null);
|
|
499
499
|
let s = !0;
|
|
500
|
-
for (Object.keys(i).forEach(function(
|
|
501
|
-
n.push([].concat(i[
|
|
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
|
|
505
|
-
for (let
|
|
506
|
-
if (n[
|
|
507
|
-
return n[
|
|
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[
|
|
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(
|
|
514
|
-
|
|
515
|
-
return q.indexOf(
|
|
513
|
+
return n.forEach(function(r) {
|
|
514
|
+
r = r.filter(function(k, _, q) {
|
|
515
|
+
return q.indexOf(k) === _;
|
|
516
516
|
});
|
|
517
|
-
const
|
|
518
|
-
|
|
519
|
-
}),
|
|
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
|
|
543
|
+
new Ne({
|
|
544
544
|
cwd: process.cwd,
|
|
545
545
|
env: () => De,
|
|
546
|
-
format:
|
|
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(
|
|
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:
|
|
561
|
+
readFileSync: he,
|
|
562
562
|
writeFile: Me
|
|
563
563
|
},
|
|
564
|
-
format:
|
|
564
|
+
format: _e,
|
|
565
565
|
resolve: ae,
|
|
566
566
|
exists: (i) => {
|
|
567
567
|
try {
|
|
568
|
-
return
|
|
568
|
+
return Qe(i).isFile();
|
|
569
569
|
} catch {
|
|
570
570
|
return !1;
|
|
571
571
|
}
|
|
572
572
|
}
|
|
573
573
|
};
|
|
574
|
-
let
|
|
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
|
|
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][
|
|
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(),
|
|
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),
|
|
594
|
-
let
|
|
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" && (
|
|
597
|
-
let
|
|
598
|
-
this.cache[this.locale][
|
|
599
|
-
one:
|
|
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:
|
|
605
|
-
})) :
|
|
606
|
-
const
|
|
607
|
-
return ~
|
|
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
|
|
618
|
-
Object.prototype.hasOwnProperty.call(n,
|
|
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, ...
|
|
620
|
+
_taggedLiteral(n, ...u) {
|
|
621
621
|
let s = "";
|
|
622
|
-
return n.forEach(function(
|
|
623
|
-
const
|
|
624
|
-
s +=
|
|
625
|
-
}), this.__.apply(this, [s].concat([].slice.call(
|
|
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,
|
|
632
|
-
|
|
633
|
-
n.writeQueue.shift(), n.writeQueue.length > 0 && n._processWriteQueue(),
|
|
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
|
|
638
|
+
const u = this._resolveLocaleFile(this.directory, this.locale);
|
|
639
639
|
try {
|
|
640
|
-
|
|
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 " +
|
|
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,
|
|
650
|
-
let s =
|
|
651
|
-
if (this.fallbackToLanguage && !this._fileExistsSync(s) && ~
|
|
652
|
-
const
|
|
653
|
-
this._fileExistsSync(
|
|
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
|
|
658
|
+
return y.exists(n);
|
|
659
659
|
}
|
|
660
660
|
}
|
|
661
661
|
function Fe(i, n) {
|
|
662
|
-
|
|
663
|
-
const
|
|
662
|
+
y = n;
|
|
663
|
+
const u = new Ve(i);
|
|
664
664
|
return {
|
|
665
|
-
__:
|
|
666
|
-
__n:
|
|
667
|
-
setLocale:
|
|
668
|
-
getLocale:
|
|
669
|
-
updateLocale:
|
|
670
|
-
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
|
|
674
|
+
let E;
|
|
675
675
|
try {
|
|
676
|
-
|
|
676
|
+
E = Ae(import.meta.url);
|
|
677
677
|
} catch {
|
|
678
|
-
|
|
678
|
+
E = process.cwd();
|
|
679
679
|
}
|
|
680
|
-
const
|
|
681
|
-
|
|
682
|
-
directory: ae(
|
|
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
|
-
|
|
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: "
|
|
4779
|
-
name: "
|
|
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: "
|
|
4839
|
+
equals: "deepseek-ai/deepseek-r1-0528"
|
|
4803
4840
|
},
|
|
4804
4841
|
{
|
|
4805
|
-
equals: "
|
|
4842
|
+
equals: "deepseek-ai/deepseek-r1-0528-fast"
|
|
4806
4843
|
}
|
|
4807
4844
|
]
|
|
4808
4845
|
},
|
|
4809
|
-
context_window:
|
|
4846
|
+
context_window: 163840,
|
|
4810
4847
|
prices: {
|
|
4811
|
-
input_mtok:
|
|
4812
|
-
output_mtok:
|
|
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.
|
|
6236
|
-
output_mtok: 1.
|
|
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.
|
|
6799
|
-
output_mtok: 0.
|
|
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/
|
|
6937
|
-
name: "
|
|
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/
|
|
6978
|
+
equals: "zai-org/autoglm-phone-9b-multilingual"
|
|
6942
6979
|
},
|
|
6943
6980
|
{
|
|
6944
|
-
equals: "zai-org/
|
|
6981
|
+
equals: "zai-org/autoglm-phone-9b-multilingual-fast"
|
|
6945
6982
|
}
|
|
6946
6983
|
]
|
|
6947
6984
|
},
|
|
6948
|
-
context_window:
|
|
6985
|
+
context_window: 65536,
|
|
6949
6986
|
prices: {
|
|
6950
|
-
input_mtok: 0.
|
|
6951
|
-
output_mtok:
|
|
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: "
|
|
7491
|
-
name: "HuggingFace (
|
|
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/
|
|
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: "
|
|
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: "
|
|
7541
|
-
name: "
|
|
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: "
|
|
7601
|
+
equals: "qwen/qwen2.5-vl-72b-instruct"
|
|
7606
7602
|
},
|
|
7607
7603
|
{
|
|
7608
|
-
equals: "
|
|
7604
|
+
equals: "qwen/qwen2.5-vl-72b-instruct-fast"
|
|
7609
7605
|
}
|
|
7610
7606
|
]
|
|
7611
7607
|
},
|
|
7612
|
-
|
|
7608
|
+
context_window: 32768,
|
|
7609
|
+
prices: {
|
|
7610
|
+
input_mtok: 1.01,
|
|
7611
|
+
output_mtok: 1.01
|
|
7612
|
+
}
|
|
7613
7613
|
},
|
|
7614
7614
|
{
|
|
7615
|
-
id: "
|
|
7616
|
-
name: "
|
|
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: "
|
|
7620
|
+
equals: "qwen/qwen3-coder-30b-a3b-instruct"
|
|
7621
7621
|
},
|
|
7622
7622
|
{
|
|
7623
|
-
equals: "
|
|
7623
|
+
equals: "qwen/qwen3-coder-30b-a3b-instruct-fast"
|
|
7624
7624
|
}
|
|
7625
7625
|
]
|
|
7626
7626
|
},
|
|
7627
|
-
|
|
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: "
|
|
7633
|
-
name: "HuggingFace (
|
|
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/
|
|
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: "
|
|
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: "
|
|
7683
|
-
name: "
|
|
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: "
|
|
7691
|
+
equals: "aisingapore/gemma-sea-lion-v4-27b-it"
|
|
7688
7692
|
},
|
|
7689
7693
|
{
|
|
7690
|
-
equals: "
|
|
7694
|
+
equals: "aisingapore/gemma-sea-lion-v4-27b-it-fast"
|
|
7691
7695
|
}
|
|
7692
7696
|
]
|
|
7693
7697
|
},
|
|
7694
|
-
|
|
7695
|
-
prices: {
|
|
7696
|
-
input_mtok: 0.4,
|
|
7697
|
-
output_mtok: 0.8
|
|
7698
|
-
}
|
|
7698
|
+
prices: {}
|
|
7699
7699
|
},
|
|
7700
7700
|
{
|
|
7701
|
-
id: "
|
|
7702
|
-
name: "
|
|
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: "
|
|
7706
|
+
equals: "aisingapore/qwen-sea-lion-v4-32b-it"
|
|
7707
7707
|
},
|
|
7708
7708
|
{
|
|
7709
|
-
equals: "
|
|
7709
|
+
equals: "aisingapore/qwen-sea-lion-v4-32b-it-fast"
|
|
7710
7710
|
}
|
|
7711
7711
|
]
|
|
7712
7712
|
},
|
|
7713
|
-
|
|
7714
|
-
prices: {
|
|
7715
|
-
input_mtok: 5,
|
|
7716
|
-
output_mtok: 7
|
|
7717
|
-
}
|
|
7713
|
+
prices: {}
|
|
7718
7714
|
},
|
|
7719
7715
|
{
|
|
7720
|
-
id: "
|
|
7721
|
-
name: "
|
|
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: "
|
|
16534
|
-
name: "
|
|
16535
|
-
pricing_urls: ["https://
|
|
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
|
|
18342
|
+
function $e(i, n, u) {
|
|
17649
18343
|
if (n <= 0) return 0;
|
|
17650
|
-
let
|
|
17651
|
-
const
|
|
17652
|
-
|
|
17653
|
-
|
|
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
|
|
17660
|
-
return i === void 0 || n === void 0 ? 0 : typeof i == "number" ? i * n / 1e6 :
|
|
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
|
|
17664
|
-
const
|
|
17665
|
-
let
|
|
17666
|
-
if (
|
|
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 -=
|
|
18359
|
+
if (B -= h, B -= k, B -= M, B < 0)
|
|
17670
18360
|
throw new Error("Uncached text input tokens cannot be negative");
|
|
17671
|
-
let
|
|
17672
|
-
if (
|
|
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
|
-
|
|
17675
|
-
let
|
|
17676
|
-
if (
|
|
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 +=
|
|
17679
|
-
let
|
|
17680
|
-
return n.requests_kcount !== void 0 && (
|
|
17681
|
-
input_price:
|
|
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:
|
|
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
|
|
17690
|
-
const s = i.prices[
|
|
17691
|
-
if (
|
|
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 (
|
|
17694
|
-
if (n >= new 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
|
|
17698
|
-
if (
|
|
17699
|
-
if (
|
|
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 (
|
|
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
|
|
17708
|
-
return "or" in i ? i.or.some((
|
|
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
|
|
17712
|
-
return s || i.find((
|
|
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:
|
|
18404
|
+
function Je(i, { modelId: n, providerApiUrl: u, providerId: s }) {
|
|
17715
18405
|
if (s)
|
|
17716
18406
|
return Ye(i, s);
|
|
17717
|
-
if (
|
|
17718
|
-
return i.find((
|
|
18407
|
+
if (u)
|
|
18408
|
+
return i.find((r) => new RegExp(r.api_pattern).test(u));
|
|
17719
18409
|
if (n)
|
|
17720
|
-
return i.find((
|
|
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((
|
|
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,
|
|
17728
|
-
const s = n.toLowerCase().trim(),
|
|
17729
|
-
if (!
|
|
17730
|
-
const
|
|
17731
|
-
if (!
|
|
17732
|
-
const
|
|
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:
|
|
17736
|
-
model_price:
|
|
17737
|
-
provider:
|
|
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
|
|
18442
|
+
const u = ie;
|
|
17753
18443
|
if (f.provider) {
|
|
17754
|
-
const s =
|
|
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
|
|
17757
|
-
console.log(` ${s.id}:${
|
|
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
|
|
18449
|
+
for (const s of u) {
|
|
17760
18450
|
console.log(`${s.name}: (${s.models.length} models)`);
|
|
17761
|
-
for (const
|
|
17762
|
-
console.log(` ${s.id}:${
|
|
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((
|
|
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
|
|
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
|
|
17779
|
-
for (const
|
|
17780
|
-
let
|
|
17781
|
-
|
|
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(
|
|
18473
|
+
const q = et(u, _, { providerId: k, timestamp: s });
|
|
17784
18474
|
if (!q) {
|
|
17785
|
-
|
|
18475
|
+
r = !0, console.error(`No price found for model ${h}`);
|
|
17786
18476
|
continue;
|
|
17787
18477
|
}
|
|
17788
|
-
const
|
|
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",
|
|
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 [
|
|
17798
|
-
|
|
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
|
-
|
|
18491
|
+
r = !0, q instanceof Error && console.error(`Error for model ${h}:`, q.message);
|
|
17802
18492
|
}
|
|
17803
18493
|
}
|
|
17804
|
-
process.exit(
|
|
18494
|
+
process.exit(r ? 1 : 0);
|
|
17805
18495
|
}
|
|
17806
18496
|
de().showHelp(), process.exit(1);
|
|
17807
18497
|
}
|