@pydantic/genai-prices 0.0.67 → 0.0.69

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",
@@ -9790,6 +10057,11 @@ Compared to other leading proprietary and open-weights models Command A delivers
9790
10057
  dest: "input_tokens",
9791
10058
  required: !0
9792
10059
  },
10060
+ {
10061
+ path: ["prompt_tokens_details", "cached_tokens"],
10062
+ dest: "cache_read_tokens",
10063
+ required: !1
10064
+ },
9793
10065
  {
9794
10066
  path: "completion_tokens",
9795
10067
  dest: "output_tokens",
@@ -13256,6 +13528,43 @@ Compared to other leading proprietary and open-weights models Command A delivers
13256
13528
  output_mtok: 15
13257
13529
  }
13258
13530
  },
13531
+ {
13532
+ id: "anthropic/claude-sonnet-5",
13533
+ match: {
13534
+ or: [
13535
+ {
13536
+ equals: "anthropic/claude-sonnet-5"
13537
+ },
13538
+ {
13539
+ equals: "anthropic/claude-sonnet-5:beta"
13540
+ }
13541
+ ]
13542
+ },
13543
+ context_window: 1e6,
13544
+ 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",
13545
+ prices: [
13546
+ {
13547
+ prices: {
13548
+ input_mtok: 2,
13549
+ cache_write_mtok: 2.5,
13550
+ cache_read_mtok: 0.2,
13551
+ output_mtok: 10
13552
+ }
13553
+ },
13554
+ {
13555
+ constraint: {
13556
+ start_date: "2026-09-01",
13557
+ type: "start_date"
13558
+ },
13559
+ prices: {
13560
+ input_mtok: 3,
13561
+ cache_write_mtok: 3.75,
13562
+ cache_read_mtok: 0.3,
13563
+ output_mtok: 15
13564
+ }
13565
+ }
13566
+ ]
13567
+ },
13259
13568
  {
13260
13569
  id: "anubis-pro-105b-v1",
13261
13570
  name: "Anubis Pro 105B V1",
@@ -14816,7 +15125,14 @@ Compared to other leading proprietary and open-weights models Command A delivers
14816
15125
  id: "google/gemini-3.5-flash",
14817
15126
  name: "Gemini 3.5 Flash",
14818
15127
  match: {
14819
- equals: "google/gemini-3.5-flash"
15128
+ or: [
15129
+ {
15130
+ equals: "google/gemini-3.5-flash"
15131
+ },
15132
+ {
15133
+ regex: "^google/gemini-3\\.5-flash-\\d{8}$"
15134
+ }
15135
+ ]
14820
15136
  },
14821
15137
  prices: {
14822
15138
  input_mtok: 1.5,
@@ -19982,7 +20298,14 @@ Compared to other leading proprietary and open-weights models Command A delivers
19982
20298
  id: "x-ai/grok-4.3",
19983
20299
  name: "Grok 4.3",
19984
20300
  match: {
19985
- equals: "x-ai/grok-4.3"
20301
+ or: [
20302
+ {
20303
+ equals: "x-ai/grok-4.3"
20304
+ },
20305
+ {
20306
+ regex: "^x-ai/grok-4\\.3-\\d{8}$"
20307
+ }
20308
+ ]
19986
20309
  },
19987
20310
  prices: {
19988
20311
  input_mtok: 1.25,
@@ -22189,6 +22512,15 @@ Compared to other leading proprietary and open-weights models Command A delivers
22189
22512
  {
22190
22513
  equals: "grok-4.3"
22191
22514
  },
22515
+ {
22516
+ regex: "^grok-4\\.3-\\d{8}$"
22517
+ },
22518
+ {
22519
+ equals: "x-ai/grok-4.3"
22520
+ },
22521
+ {
22522
+ regex: "^x-ai/grok-4\\.3-\\d{8}$"
22523
+ },
22192
22524
  {
22193
22525
  equals: "grok-4.3-latest"
22194
22526
  },
@@ -22564,7 +22896,7 @@ Compared to other leading proprietary and open-weights models Command A delivers
22564
22896
  ]
22565
22897
  }
22566
22898
  ];
22567
- function Ye(i, o, u) {
22899
+ function Ze(i, o, u) {
22568
22900
  if (o <= 0) return 0;
22569
22901
  let s = i.base;
22570
22902
  for (const r of i.tiers)
@@ -22572,9 +22904,9 @@ function Ye(i, o, u) {
22572
22904
  return s * o / 1e6;
22573
22905
  }
22574
22906
  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);
22907
+ return i === void 0 || o === void 0 ? 0 : typeof i == "number" ? i * o / 1e6 : Ze(i, o, s);
22576
22908
  }
22577
- function Ze(i, o) {
22909
+ function Ye(i, o) {
22578
22910
  let u = 0, s = 0;
22579
22911
  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
22912
  let M = 0;
@@ -22620,12 +22952,12 @@ function Je(i, o) {
22620
22952
  }
22621
22953
  return i.prices[0].prices;
22622
22954
  }
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;
22955
+ function F(i, o) {
22956
+ 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
22957
  }
22626
22958
  function Xe(i, o) {
22627
22959
  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));
22960
+ return s || i.find((r) => r.provider_match && F(r.provider_match, u));
22629
22961
  }
22630
22962
  function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
22631
22963
  if (s) {
@@ -22636,10 +22968,10 @@ function he(i, { modelId: o, providerApiUrl: u, providerId: s }) {
22636
22968
  if (u)
22637
22969
  return i.find((r) => new RegExp(r.api_pattern).test(u));
22638
22970
  if (o)
22639
- return i.find((r) => r.model_match && D(r.model_match, o));
22971
+ return i.find((r) => r.model_match && F(r.model_match, o));
22640
22972
  }
22641
22973
  function et(i, o) {
22642
- return i.find((u) => D(u.match, o));
22974
+ return i.find((u) => F(u.match, o));
22643
22975
  }
22644
22976
  function qe(i, o, u) {
22645
22977
  const s = et(i.models, o);
@@ -22665,7 +22997,7 @@ function tt(i, o, u) {
22665
22997
  if (!_) return null;
22666
22998
  const h = qe(_, s, ie);
22667
22999
  if (!h) return null;
22668
- const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Je(h, k), Q = Ze(i, q);
23000
+ const k = u?.timestamp ?? /* @__PURE__ */ new Date(), q = Je(h, k), Q = Ye(i, q);
22669
23001
  return {
22670
23002
  auto_update_timestamp: void 0,
22671
23003
  model: h,