@pydantic/genai-prices 0.0.67 → 0.0.68

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
@@ -105,7 +105,7 @@ class Ve {
105
105
  number: void 0,
106
106
  __: void 0,
107
107
  key: void 0
108
- }, u), r = Ee(o), _ = typeof o == "string", h = De(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), k = Object.assign({
108
+ }, u), r = Ee(o), _ = typeof o == "string", h = Fe(Object.assign(/* @__PURE__ */ Object.create(null), s.alias)), k = Object.assign({
109
109
  "boolean-negation": !0,
110
110
  "camel-case-expansion": !0,
111
111
  "combine-arrays": !1,
@@ -171,15 +171,15 @@ class Ve {
171
171
  });
172
172
  let L = null;
173
173
  Ae();
174
- let F = [];
174
+ let D = [];
175
175
  const b = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }), se = {};
176
176
  for (let e = 0; e < r.length; e++) {
177
177
  const a = r[e], c = a.replace(/^-{3,}/, "---");
178
178
  let n, t, l, p, d, v;
179
179
  if (a !== "--" && /^-/.test(a) && $(a))
180
- Y(a);
180
+ Z(a);
181
181
  else if (c.match(/^---+(=|$)/)) {
182
- Y(a);
182
+ Z(a);
183
183
  continue;
184
184
  } else if (a.match(/^--.+=/) || !k["short-option-groups"] && a.match(/^-.+=/))
185
185
  p = a.match(/^--?([^=]+)=([\s\S]*)$/), p !== null && Array.isArray(p) && p.length >= 3 && (g(p[1], m.arrays) ? e = K(e, p[1], r, p[2]) : g(p[1], m.nargs) !== !1 ? e = j(e, p[1], r, p[2]) : f(p[1], p[2], !0));
@@ -216,24 +216,24 @@ class Ve {
216
216
  } else if (a.match(/^-[0-9]$/) && a.match(y) && g(a.slice(1), m.bools))
217
217
  t = a.slice(1), f(t, N(t));
218
218
  else if (a === "--") {
219
- F = r.slice(e + 1);
219
+ D = r.slice(e + 1);
220
220
  break;
221
221
  } else if (k["halt-at-non-option"]) {
222
- F = r.slice(e);
222
+ D = r.slice(e);
223
223
  break;
224
224
  } else
225
- Y(a);
225
+ Z(a);
226
226
  }
227
227
  me(b, !0), me(b, !1), we(b), fe(), ue(b, m.aliases, q, !0), be(b), k["set-placeholder-key"] && ve(b), Object.keys(m.counts).forEach(function(e) {
228
228
  O(b, e.split(".")) || f(e, 0);
229
- }), G && F.length && (b[M] = []), F.forEach(function(e) {
229
+ }), G && D.length && (b[M] = []), D.forEach(function(e) {
230
230
  b[M].push(e);
231
231
  }), k["camel-case-expansion"] && k["strip-dashed"] && Object.keys(b).filter((e) => e !== "--" && e.includes("-")).forEach((e) => {
232
232
  delete b[e];
233
233
  }), k["strip-aliased"] && [].concat(...Object.keys(h).map((e) => h[e])).forEach((e) => {
234
234
  k["camel-case-expansion"] && e.includes("-") && delete b[e.split(".").map((a) => U(a)).join(".")], delete b[e];
235
235
  });
236
- function Y(e) {
236
+ function Z(e) {
237
237
  const a = H("_", e);
238
238
  (typeof a == "string" || typeof a == "number") && b._.push(a);
239
239
  }
@@ -265,9 +265,9 @@ class Ve {
265
265
  t = Array.isArray(d) ? d : [d];
266
266
  }
267
267
  } else {
268
- S(n) || t.push(Z(a, n, !0));
268
+ S(n) || t.push(Y(a, n, !0));
269
269
  for (let d = e + 1; d < c.length && !(!k["greedy-arrays"] && t.length > 0 || p && typeof p == "number" && t.length >= p || (l = c[d], /^-/.test(l) && !y.test(l) && !$(l))); d++)
270
- e = d, t.push(Z(a, l, _));
270
+ e = d, t.push(Y(a, l, _));
271
271
  }
272
272
  return typeof p == "number" && (p && t.length < p || isNaN(p) && t.length === 0) && (L = Error(I("Not enough arguments following: %s", a))), f(a, t), e;
273
273
  }
@@ -278,7 +278,7 @@ class Ve {
278
278
  }).join(".");
279
279
  re(e, l);
280
280
  }
281
- const n = Z(e, a, c), t = e.split(".");
281
+ const n = Y(e, a, c), t = e.split(".");
282
282
  E(b, t, n), m.aliases[e] && m.aliases[e].forEach(function(l) {
283
283
  const p = l.split(".");
284
284
  E(b, p, n);
@@ -301,8 +301,8 @@ class Ve {
301
301
  function re(e, a) {
302
302
  m.aliases[e] && m.aliases[e].length || (m.aliases[e] = [a], T[a] = !0), m.aliases[a] && m.aliases[a].length || re(a, e);
303
303
  }
304
- function Z(e, a, c) {
305
- c && (a = Fe(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
304
+ function Y(e, a, c) {
305
+ c && (a = De(a)), (g(e, m.bools) || g(e, m.counts)) && typeof a == "string" && (a = a === "true");
306
306
  let n = Array.isArray(a) ? a.map(function(t) {
307
307
  return H(e, t);
308
308
  }) : H(e, a);
@@ -494,7 +494,7 @@ class Ve {
494
494
  };
495
495
  }
496
496
  }
497
- function De(i) {
497
+ function Fe(i) {
498
498
  const o = [], u = /* @__PURE__ */ Object.create(null);
499
499
  let s = !0;
500
500
  for (Object.keys(i).forEach(function(r) {
@@ -524,7 +524,7 @@ function X(i) {
524
524
  function pe(i) {
525
525
  return i === "__proto__" ? "___proto___" : i;
526
526
  }
527
- function Fe(i) {
527
+ function De(i) {
528
528
  return typeof i == "string" && (i[0] === "'" || i[0] === '"') && i[i.length - 1] === i[0] ? i.substring(1, i.length - 1) : i;
529
529
  }
530
530
  /**
@@ -1305,6 +1305,51 @@ const ne = [
1305
1305
  }
1306
1306
  ]
1307
1307
  },
1308
+ {
1309
+ id: "claude-sonnet-5",
1310
+ name: "Claude Sonnet 5",
1311
+ description: "Our most agentic Sonnet model, approaching Opus 4.8 capability at lower cost",
1312
+ match: {
1313
+ or: [
1314
+ {
1315
+ starts_with: "claude-sonnet-5"
1316
+ },
1317
+ {
1318
+ starts_with: "claude-sonnet-5.0"
1319
+ },
1320
+ {
1321
+ starts_with: "claude-5-sonnet"
1322
+ },
1323
+ {
1324
+ starts_with: "claude-5.0-sonnet"
1325
+ }
1326
+ ]
1327
+ },
1328
+ context_window: 1e6,
1329
+ price_comments: "Flat pricing across full 1M context window (no tiered pricing). Introductory pricing ($2/$10 per MTok) applies through 2026-08-31; standard pricing ($3/$15) applies from 2026-09-01. Ref: https://www.anthropic.com/news/claude-sonnet-5",
1330
+ prices: [
1331
+ {
1332
+ prices: {
1333
+ input_mtok: 2,
1334
+ cache_write_mtok: 2.5,
1335
+ cache_read_mtok: 0.2,
1336
+ output_mtok: 10
1337
+ }
1338
+ },
1339
+ {
1340
+ constraint: {
1341
+ start_date: "2026-09-01",
1342
+ type: "start_date"
1343
+ },
1344
+ prices: {
1345
+ input_mtok: 3,
1346
+ cache_write_mtok: 3.75,
1347
+ cache_read_mtok: 0.3,
1348
+ output_mtok: 15
1349
+ }
1350
+ }
1351
+ ]
1352
+ },
1308
1353
  {
1309
1354
  id: "claude-v1",
1310
1355
  description: "Retired, here to match price sources",
@@ -1742,6 +1787,35 @@ const ne = [
1742
1787
  }
1743
1788
  }
1744
1789
  },
1790
+ {
1791
+ id: "global.anthropic.claude-sonnet-5-v1:0",
1792
+ match: {
1793
+ contains: "global.anthropic.claude-sonnet-5"
1794
+ },
1795
+ price_comments: "Flat pricing across full 1M context window (no tiered pricing). Promotional launch pricing ($2/$10 per MTok) through 2026-08-31; standard ($3/$15) from 2026-09-01. Ref: https://aws.amazon.com/bedrock/pricing/",
1796
+ prices: [
1797
+ {
1798
+ prices: {
1799
+ input_mtok: 2,
1800
+ cache_write_mtok: 2.5,
1801
+ cache_read_mtok: 0.2,
1802
+ output_mtok: 10
1803
+ }
1804
+ },
1805
+ {
1806
+ constraint: {
1807
+ start_date: "2026-09-01",
1808
+ type: "start_date"
1809
+ },
1810
+ prices: {
1811
+ input_mtok: 3,
1812
+ cache_write_mtok: 3.75,
1813
+ cache_read_mtok: 0.3,
1814
+ output_mtok: 15
1815
+ }
1816
+ }
1817
+ ]
1818
+ },
1745
1819
  {
1746
1820
  id: "google.gemma-3-12b-it",
1747
1821
  name: "Gemma 3 12B IT",
@@ -2072,6 +2146,30 @@ const ne = [
2072
2146
  output_mtok: 0.65
2073
2147
  }
2074
2148
  },
2149
+ {
2150
+ id: "openai.gpt-5.4",
2151
+ name: "GPT-5.4",
2152
+ match: {
2153
+ equals: "openai.gpt-5.4"
2154
+ },
2155
+ prices: {
2156
+ input_mtok: 2.75,
2157
+ cache_read_mtok: 0.275,
2158
+ output_mtok: 16.5
2159
+ }
2160
+ },
2161
+ {
2162
+ id: "openai.gpt-5.5",
2163
+ name: "GPT-5.5",
2164
+ match: {
2165
+ equals: "openai.gpt-5.5"
2166
+ },
2167
+ prices: {
2168
+ input_mtok: 5.5,
2169
+ cache_read_mtok: 0.55,
2170
+ output_mtok: 33
2171
+ }
2172
+ },
2075
2173
  {
2076
2174
  id: "openai.gpt-oss-120b-1:0",
2077
2175
  name: "gpt-oss-120b",
@@ -2699,6 +2797,60 @@ const ne = [
2699
2797
  ]
2700
2798
  }
2701
2799
  }
2800
+ },
2801
+ {
2802
+ id: "regional.anthropic.claude-sonnet-5-v1:0",
2803
+ match: {
2804
+ or: [
2805
+ {
2806
+ starts_with: "anthropic.claude-sonnet-5"
2807
+ },
2808
+ {
2809
+ starts_with: "claude-sonnet-5"
2810
+ },
2811
+ {
2812
+ contains: "us.anthropic.claude-sonnet-5"
2813
+ },
2814
+ {
2815
+ contains: "au.anthropic.claude-sonnet-5"
2816
+ },
2817
+ {
2818
+ contains: "apac.anthropic.claude-sonnet-5"
2819
+ },
2820
+ {
2821
+ contains: "eu.anthropic.claude-sonnet-5"
2822
+ },
2823
+ {
2824
+ contains: "us-gov.anthropic.claude-sonnet-5"
2825
+ },
2826
+ {
2827
+ contains: "jp.anthropic.claude-sonnet-5"
2828
+ }
2829
+ ]
2830
+ },
2831
+ price_comments: "Regional/cross-region endpoints carry a 10% premium over global (AWS published only the global promo rate; regional computed as global +10%, per the documented regional premium). Promotional launch pricing through 2026-08-31; standard from 2026-09-01. Ref: https://aws.amazon.com/bedrock/pricing/",
2832
+ prices: [
2833
+ {
2834
+ prices: {
2835
+ input_mtok: 2.2,
2836
+ cache_write_mtok: 2.75,
2837
+ cache_read_mtok: 0.22,
2838
+ output_mtok: 11
2839
+ }
2840
+ },
2841
+ {
2842
+ constraint: {
2843
+ start_date: "2026-09-01",
2844
+ type: "start_date"
2845
+ },
2846
+ prices: {
2847
+ input_mtok: 3.3,
2848
+ cache_write_mtok: 4.125,
2849
+ cache_read_mtok: 0.33,
2850
+ output_mtok: 16.5
2851
+ }
2852
+ }
2853
+ ]
2702
2854
  }
2703
2855
  ]
2704
2856
  },
@@ -3991,6 +4143,20 @@ Compared to other leading proprietary and open-weights models Command A delivers
3991
4143
  output_mtok: 4.4
3992
4144
  }
3993
4145
  },
4146
+ {
4147
+ id: "glm-5p2",
4148
+ name: "GLM-5.2",
4149
+ description: "GLM-5.2 introduces a robust 1M-token context and advanced, multi-effort coding capabilities to significantly enhance performance on long-horizon tasks. Features a new IndexShare architecture and improved MTP layer for greater efficiency. 743B parameter MoE model from Z.ai.",
4150
+ match: {
4151
+ equals: "accounts/fireworks/models/glm-5p2"
4152
+ },
4153
+ context_window: 104e4,
4154
+ prices: {
4155
+ input_mtok: 1.4,
4156
+ cache_read_mtok: 0.14,
4157
+ output_mtok: 4.4
4158
+ }
4159
+ },
3994
4160
  {
3995
4161
  id: "gpt-oss-120b",
3996
4162
  name: "OpenAI gpt-oss-120b",
@@ -4045,6 +4211,20 @@ Compared to other leading proprietary and open-weights models Command A delivers
4045
4211
  output_mtok: 4
4046
4212
  }
4047
4213
  },
4214
+ {
4215
+ id: "kimi-k2p7-code",
4216
+ name: "Kimi K2.7 Code",
4217
+ description: "Kimi K2.7 Code is a coding-focused agentic model built upon Kimi K2.6, delivering substantial improvements on real-world long-horizon coding tasks while reducing thinking tokens by roughly 30% compared to its predecessor.",
4218
+ match: {
4219
+ equals: "accounts/fireworks/models/kimi-k2p7-code"
4220
+ },
4221
+ context_window: 262144,
4222
+ prices: {
4223
+ input_mtok: 0.95,
4224
+ cache_read_mtok: 0.19,
4225
+ output_mtok: 4
4226
+ }
4227
+ },
4048
4228
  {
4049
4229
  id: "llama-v3p1-8b-instruct",
4050
4230
  name: "Llama 3.1 8B Instruct",
@@ -4111,6 +4291,20 @@ Compared to other leading proprietary and open-weights models Command A delivers
4111
4291
  output_mtok: 1.2
4112
4292
  }
4113
4293
  },
4294
+ {
4295
+ id: "nemotron-3-ultra-nvfp4",
4296
+ name: "NVIDIA Nemotron 3 Ultra NVFP4",
4297
+ description: "Frontier-scale LLM from NVIDIA using a hybrid Latent Mixture-of-Experts (LatentMoE) architecture with interleaved Mamba-2 and MoE layers plus select Attention layers. Features 55B active parameters out of 550B total and Multi-Token Prediction layers for faster generation, optimized for complex multi-step agents, long-context analysis, and high-accuracy reasoning over code, math, and science.",
4298
+ match: {
4299
+ equals: "accounts/fireworks/models/nemotron-3-ultra-nvfp4"
4300
+ },
4301
+ context_window: 262e3,
4302
+ prices: {
4303
+ input_mtok: 0.6,
4304
+ cache_read_mtok: 0.12,
4305
+ output_mtok: 2.4
4306
+ }
4307
+ },
4114
4308
  {
4115
4309
  id: "qwen2p5-vl-72b-instruct",
4116
4310
  name: "Qwen2.5-VL 72B Instruct",
@@ -4149,6 +4343,20 @@ Compared to other leading proprietary and open-weights models Command A delivers
4149
4343
  cache_read_mtok: 0.1,
4150
4344
  output_mtok: 3
4151
4345
  }
4346
+ },
4347
+ {
4348
+ id: "qwen3p7-plus",
4349
+ name: "Qwen3.7 Plus",
4350
+ description: "Qwen3.7 Plus is Alibaba's latest flagship closed model, available exclusively through Fireworks AI outside of Alibaba's own infrastructure.",
4351
+ match: {
4352
+ equals: "accounts/fireworks/models/qwen3p7-plus"
4353
+ },
4354
+ context_window: 262144,
4355
+ prices: {
4356
+ input_mtok: 0.4,
4357
+ cache_read_mtok: 0.08,
4358
+ output_mtok: 1.6
4359
+ }
4152
4360
  }
4153
4361
  ]
4154
4362
  },
@@ -9560,6 +9768,65 @@ Compared to other leading proprietary and open-weights models Command A delivers
9560
9768
  ]
9561
9769
  },
9562
9770
  extractors: [
9771
+ {
9772
+ api_flavor: "default",
9773
+ root: "usage",
9774
+ model_path: "model",
9775
+ mappings: [
9776
+ {
9777
+ path: "input_tokens",
9778
+ dest: "input_tokens",
9779
+ required: !0
9780
+ },
9781
+ {
9782
+ path: "cache_creation_input_tokens",
9783
+ dest: "input_tokens",
9784
+ required: !1
9785
+ },
9786
+ {
9787
+ path: "cache_read_input_tokens",
9788
+ dest: "input_tokens",
9789
+ required: !1
9790
+ },
9791
+ {
9792
+ path: "cache_creation_input_tokens",
9793
+ dest: "cache_write_tokens",
9794
+ required: !1
9795
+ },
9796
+ {
9797
+ path: "cache_read_input_tokens",
9798
+ dest: "cache_read_tokens",
9799
+ required: !1
9800
+ },
9801
+ {
9802
+ path: "output_tokens",
9803
+ dest: "output_tokens",
9804
+ required: !0
9805
+ }
9806
+ ]
9807
+ },
9808
+ {
9809
+ api_flavor: "responses",
9810
+ root: "usage",
9811
+ model_path: "model",
9812
+ mappings: [
9813
+ {
9814
+ path: "input_tokens",
9815
+ dest: "input_tokens",
9816
+ required: !0
9817
+ },
9818
+ {
9819
+ path: ["input_tokens_details", "cached_tokens"],
9820
+ dest: "cache_read_tokens",
9821
+ required: !1
9822
+ },
9823
+ {
9824
+ path: "output_tokens",
9825
+ dest: "output_tokens",
9826
+ required: !0
9827
+ }
9828
+ ]
9829
+ },
9563
9830
  {
9564
9831
  api_flavor: "chat",
9565
9832
  root: "usage",
@@ -13256,6 +13523,43 @@ Compared to other leading proprietary and open-weights models Command A delivers
13256
13523
  output_mtok: 15
13257
13524
  }
13258
13525
  },
13526
+ {
13527
+ id: "anthropic/claude-sonnet-5",
13528
+ match: {
13529
+ or: [
13530
+ {
13531
+ equals: "anthropic/claude-sonnet-5"
13532
+ },
13533
+ {
13534
+ equals: "anthropic/claude-sonnet-5:beta"
13535
+ }
13536
+ ]
13537
+ },
13538
+ context_window: 1e6,
13539
+ price_comments: "Flat pricing across full 1M context window (no tiered pricing). Introductory pricing ($2/$10 per MTok) applies through 2026-08-31; standard ($3/$15) from 2026-09-01. OpenRouter mirrors Anthropic first-party pricing; $2/$10 verified live via the OpenRouter API on 2026-06-30. Ref: https://openrouter.ai/anthropic/claude-sonnet-5",
13540
+ prices: [
13541
+ {
13542
+ prices: {
13543
+ input_mtok: 2,
13544
+ cache_write_mtok: 2.5,
13545
+ cache_read_mtok: 0.2,
13546
+ output_mtok: 10
13547
+ }
13548
+ },
13549
+ {
13550
+ constraint: {
13551
+ start_date: "2026-09-01",
13552
+ type: "start_date"
13553
+ },
13554
+ prices: {
13555
+ input_mtok: 3,
13556
+ cache_write_mtok: 3.75,
13557
+ cache_read_mtok: 0.3,
13558
+ output_mtok: 15
13559
+ }
13560
+ }
13561
+ ]
13562
+ },
13259
13563
  {
13260
13564
  id: "anubis-pro-105b-v1",
13261
13565
  name: "Anubis Pro 105B V1",
@@ -14816,7 +15120,14 @@ Compared to other leading proprietary and open-weights models Command A delivers
14816
15120
  id: "google/gemini-3.5-flash",
14817
15121
  name: "Gemini 3.5 Flash",
14818
15122
  match: {
14819
- equals: "google/gemini-3.5-flash"
15123
+ or: [
15124
+ {
15125
+ equals: "google/gemini-3.5-flash"
15126
+ },
15127
+ {
15128
+ regex: "^google/gemini-3\\.5-flash-\\d{8}$"
15129
+ }
15130
+ ]
14820
15131
  },
14821
15132
  prices: {
14822
15133
  input_mtok: 1.5,
@@ -19982,7 +20293,14 @@ Compared to other leading proprietary and open-weights models Command A delivers
19982
20293
  id: "x-ai/grok-4.3",
19983
20294
  name: "Grok 4.3",
19984
20295
  match: {
19985
- equals: "x-ai/grok-4.3"
20296
+ or: [
20297
+ {
20298
+ equals: "x-ai/grok-4.3"
20299
+ },
20300
+ {
20301
+ regex: "^x-ai/grok-4\\.3-\\d{8}$"
20302
+ }
20303
+ ]
19986
20304
  },
19987
20305
  prices: {
19988
20306
  input_mtok: 1.25,
@@ -22189,6 +22507,15 @@ Compared to other leading proprietary and open-weights models Command A delivers
22189
22507
  {
22190
22508
  equals: "grok-4.3"
22191
22509
  },
22510
+ {
22511
+ regex: "^grok-4\\.3-\\d{8}$"
22512
+ },
22513
+ {
22514
+ equals: "x-ai/grok-4.3"
22515
+ },
22516
+ {
22517
+ regex: "^x-ai/grok-4\\.3-\\d{8}$"
22518
+ },
22192
22519
  {
22193
22520
  equals: "grok-4.3-latest"
22194
22521
  },
@@ -22564,7 +22891,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
22564
22891
  ]
22565
22892
  }
22566
22893
  ];
22567
- function Ye(i, o, u) {
22894
+ function Ze(i, o, u) {
22568
22895
  if (o <= 0) return 0;
22569
22896
  let s = i.base;
22570
22897
  for (const r of i.tiers)
@@ -22572,9 +22899,9 @@ function Ye(i, o, u) {
22572
22899
  return s * o / 1e6;
22573
22900
  }
22574
22901
  function C(i, o, u, s) {
22575
- return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ye(i, o, s);
22902
+ return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ze(i, o, s);
22576
22903
  }
22577
- function Ze(i, o) {
22904
+ function Ye(i, o) {
22578
22905
  let u = 0, s = 0;
22579
22906
  const r = i.input_tokens ?? 0, _ = i.cache_read_tokens ?? 0, h = i.cache_write_tokens ?? 0, k = i.cache_audio_read_tokens ?? 0, q = i.input_audio_tokens ?? 0, Q = i.output_audio_tokens ?? 0, B = o.cache_audio_read_mtok === void 0 ? 0 : k, G = o.cache_audio_read_mtok === void 0 && o.cache_read_mtok !== void 0 ? k : 0;
22580
22907
  let M = 0;
@@ -22620,12 +22947,12 @@ function Je(i, o) {
22620
22947
  }
22621
22948
  return i.prices[0].prices;
22622
22949
  }
22623
- function D(i, o) {
22624
- return "or" in i ? i.or.some((u) => D(u, o)) : "and" in i ? i.and.every((u) => D(u, o)) : "equals" in i ? o.toLowerCase() === i.equals.toLowerCase() : "starts_with" in i ? o.toLowerCase().startsWith(i.starts_with.toLowerCase()) : "ends_with" in i ? o.toLowerCase().endsWith(i.ends_with.toLowerCase()) : "contains" in i ? o.toLowerCase().includes(i.contains.toLowerCase()) : "regex" in i ? new RegExp(i.regex).test(o) : !1;
22950
+ function F(i, o) {
22951
+ return "or" in i ? i.or.some((u) => F(u, o)) : "and" in i ? i.and.every((u) => F(u, o)) : "equals" in i ? o.toLowerCase() === i.equals.toLowerCase() : "starts_with" in i ? o.toLowerCase().startsWith(i.starts_with.toLowerCase()) : "ends_with" in i ? o.toLowerCase().endsWith(i.ends_with.toLowerCase()) : "contains" in i ? o.toLowerCase().includes(i.contains.toLowerCase()) : "regex" in i ? new RegExp(i.regex).test(o) : !1;
22625
22952
  }
22626
22953
  function Xe(i, o) {
22627
22954
  const u = o.toLowerCase().trim(), s = i.find((r) => r.id === u);
22628
- return s || i.find((r) => r.provider_match && D(r.provider_match, u));
22955
+ return s || i.find((r) => r.provider_match && F(r.provider_match, u));
22629
22956
  }
22630
22957
  function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
22631
22958
  if (s) {
@@ -22636,10 +22963,10 @@ function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
22636
22963
  if (u)
22637
22964
  return i.find((r) => new RegExp(r.api_pattern).test(u));
22638
22965
  if (o)
22639
- return i.find((r) => r.model_match && D(r.model_match, o));
22966
+ return i.find((r) => r.model_match && F(r.model_match, o));
22640
22967
  }
22641
22968
  function et(i, o) {
22642
- return i.find((u) => D(u.match, o));
22969
+ return i.find((u) => F(u.match, o));
22643
22970
  }
22644
22971
  function qe(i, o, u) {
22645
22972
  const s = et(i.models, o);
@@ -22665,7 +22992,7 @@ function tt(i, o, u) {
22665
22992
  if (!_) return null;
22666
22993
  const h = qe(_, s, ie);
22667
22994
  if (!h) return null;
22668
- const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Je(h, k), Q = Ze(i, q);
22995
+ const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Je(h, k), Q = Ye(i, q);
22669
22996
  return {
22670
22997
  auto_update_timestamp: void 0,
22671
22998
  model: h,