@stll/ai-catalog 0.4.0 → 0.5.0

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.
@@ -0,0 +1,611 @@
1
+ import { E as getModelRate, U as MODEL_RATE_UNITS_PER_USD, W as getStandardModelRate } from "./src-Dn6XqN2_.js";
2
+ //#region src/benchmark-sources.ts
3
+ const MODEL_BENCHMARK_NAME = "Text Arena";
4
+ const MODEL_BENCHMARK_LICENCE = "CC BY 4.0";
5
+ const MODEL_BENCHMARK_DATASET = "lmarena-ai/leaderboard-dataset";
6
+ const MODEL_BENCHMARK_SOURCE_URL = `https://huggingface.co/datasets/${MODEL_BENCHMARK_DATASET}`;
7
+ /** Style-controlled ratings discount formatting and length preferences. */
8
+ const MODEL_BENCHMARK_CONFIG = "text_style_control";
9
+ const MODEL_BENCHMARK_SPLIT = "latest";
10
+ const MODEL_BENCHMARK_CATEGORY = "overall";
11
+ const MODEL_BENCHMARK_SOURCES = {
12
+ "gemini-3.8-flash": [{
13
+ sourceModelId: "gemini-3.8-flash-high",
14
+ reasoningEffort: "high"
15
+ }],
16
+ "gemini-3.7-flash": [{
17
+ sourceModelId: "gemini-3.7-flash-high",
18
+ reasoningEffort: "high"
19
+ }],
20
+ "gemini-3.6-flash": [{
21
+ sourceModelId: "gemini-3.6-flash-high",
22
+ reasoningEffort: "high"
23
+ }],
24
+ "gemini-3.5-flash-lite": [{
25
+ sourceModelId: "gemini-3.5-flash-lite",
26
+ reasoningEffort: null
27
+ }],
28
+ "gemini-3.1-pro-preview": [{
29
+ sourceModelId: "gemini-3.1-pro-preview",
30
+ reasoningEffort: null
31
+ }],
32
+ "gemini-3.5-flash": [{
33
+ sourceModelId: "gemini-3.5-flash-medium",
34
+ reasoningEffort: "medium"
35
+ }, {
36
+ sourceModelId: "gemini-3.5-flash-high",
37
+ reasoningEffort: "high"
38
+ }],
39
+ "gemini-3.1-flash-lite": [],
40
+ "openai/gpt-6.1-sol": [],
41
+ "openai/gpt-6-astra": [{
42
+ sourceModelId: "gpt-6-astra-max",
43
+ reasoningEffort: "max"
44
+ }],
45
+ "openai/gpt-6-sol": [{
46
+ sourceModelId: "gpt-6-sol-max",
47
+ reasoningEffort: "max"
48
+ }],
49
+ "openai/gpt-6-luna": [{
50
+ sourceModelId: "gpt-6-luna-max",
51
+ reasoningEffort: "max"
52
+ }],
53
+ "openai/gpt-5.6-sol": [{
54
+ sourceModelId: "gpt-5.6-sol-xhigh",
55
+ reasoningEffort: "xhigh"
56
+ }],
57
+ "openai/gpt-5.6-terra": [{
58
+ sourceModelId: "gpt-5.6-terra-xhigh",
59
+ reasoningEffort: "xhigh"
60
+ }],
61
+ "openai/gpt-5.6-luna": [{
62
+ sourceModelId: "gpt-5.6-luna-xhigh",
63
+ reasoningEffort: "xhigh"
64
+ }],
65
+ "google/gemini-3.8-flash": [{
66
+ sourceModelId: "gemini-3.8-flash-high",
67
+ reasoningEffort: "high"
68
+ }],
69
+ "google/gemini-3.7-flash": [{
70
+ sourceModelId: "gemini-3.7-flash-high",
71
+ reasoningEffort: "high"
72
+ }],
73
+ "google/gemini-3.6-flash": [{
74
+ sourceModelId: "gemini-3.6-flash-high",
75
+ reasoningEffort: "high"
76
+ }],
77
+ "google/gemini-3.5-flash-lite": [],
78
+ "google/gemini-3.1-pro-preview": [],
79
+ "google/gemini-3.5-flash": [{
80
+ sourceModelId: "gemini-3.5-flash-medium",
81
+ reasoningEffort: "medium"
82
+ }, {
83
+ sourceModelId: "gemini-3.5-flash-high",
84
+ reasoningEffort: "high"
85
+ }],
86
+ "google/gemini-3.1-flash-lite": [],
87
+ "anthropic/claude-sonnet-5.5": [],
88
+ "anthropic/claude-sonnet-5": [{
89
+ sourceModelId: "claude-sonnet-5-high",
90
+ reasoningEffort: "high"
91
+ }],
92
+ "anthropic/claude-opus-5": [{
93
+ sourceModelId: "claude-opus-5-high",
94
+ reasoningEffort: "high"
95
+ }, {
96
+ sourceModelId: "claude-opus-5-max",
97
+ reasoningEffort: "max"
98
+ }],
99
+ "anthropic/claude-opus-4.8": [{
100
+ sourceModelId: "claude-opus-4-8-high",
101
+ reasoningEffort: "high"
102
+ }],
103
+ "anthropic/claude-sonnet-4.6": [],
104
+ "openai/gpt-5.5": [{
105
+ sourceModelId: "gpt-5.5-high",
106
+ reasoningEffort: "high"
107
+ }],
108
+ "openai/gpt-5.4-mini": [{
109
+ sourceModelId: "gpt-5.4-mini-high",
110
+ reasoningEffort: "high"
111
+ }],
112
+ "gpt-6.1-sol": [],
113
+ "gpt-6-astra": [{
114
+ sourceModelId: "gpt-6-astra-max",
115
+ reasoningEffort: "max"
116
+ }],
117
+ "gpt-6-sol": [{
118
+ sourceModelId: "gpt-6-sol-max",
119
+ reasoningEffort: "max"
120
+ }],
121
+ "gpt-6-luna": [{
122
+ sourceModelId: "gpt-6-luna-max",
123
+ reasoningEffort: "max"
124
+ }],
125
+ "gpt-5.6": [{
126
+ sourceModelId: "gpt-5.6-sol-xhigh",
127
+ reasoningEffort: "xhigh"
128
+ }],
129
+ "gpt-5.6-terra": [{
130
+ sourceModelId: "gpt-5.6-terra-xhigh",
131
+ reasoningEffort: "xhigh"
132
+ }],
133
+ "gpt-5.6-luna": [{
134
+ sourceModelId: "gpt-5.6-luna-xhigh",
135
+ reasoningEffort: "xhigh"
136
+ }],
137
+ "gpt-5.5": [{
138
+ sourceModelId: "gpt-5.5",
139
+ reasoningEffort: null
140
+ }, {
141
+ sourceModelId: "gpt-5.5-high",
142
+ reasoningEffort: "high"
143
+ }],
144
+ "gpt-5.4": [{
145
+ sourceModelId: "gpt-5.4",
146
+ reasoningEffort: null
147
+ }, {
148
+ sourceModelId: "gpt-5.4-high",
149
+ reasoningEffort: "high"
150
+ }],
151
+ "gpt-5.4-mini": [{
152
+ sourceModelId: "gpt-5.4-mini-high",
153
+ reasoningEffort: "high"
154
+ }],
155
+ "gpt-5.4-nano": [{
156
+ sourceModelId: "gpt-5.4-nano-high",
157
+ reasoningEffort: "high"
158
+ }],
159
+ "gpt-5.2": [{
160
+ sourceModelId: "gpt-5.2",
161
+ reasoningEffort: null
162
+ }, {
163
+ sourceModelId: "gpt-5.2-high",
164
+ reasoningEffort: "high"
165
+ }],
166
+ "claude-sonnet-5-5": [],
167
+ "claude-sonnet-5": [{
168
+ sourceModelId: "claude-sonnet-5-high",
169
+ reasoningEffort: "high"
170
+ }],
171
+ "claude-fable-5-1": [{
172
+ sourceModelId: "claude-fable-5.1-max",
173
+ reasoningEffort: "max"
174
+ }],
175
+ "claude-fable-5": [{
176
+ sourceModelId: "claude-fable-5-high",
177
+ reasoningEffort: "high"
178
+ }],
179
+ "claude-opus-5-5": [{
180
+ sourceModelId: "claude-opus-5.5-high",
181
+ reasoningEffort: "high"
182
+ }],
183
+ "claude-opus-5": [{
184
+ sourceModelId: "claude-opus-5-high",
185
+ reasoningEffort: "high"
186
+ }, {
187
+ sourceModelId: "claude-opus-5-max",
188
+ reasoningEffort: "max"
189
+ }],
190
+ "claude-opus-4-8": [{
191
+ sourceModelId: "claude-opus-4-8",
192
+ reasoningEffort: null
193
+ }, {
194
+ sourceModelId: "claude-opus-4-8-high",
195
+ reasoningEffort: "high"
196
+ }],
197
+ "claude-opus-4-7": [{
198
+ sourceModelId: "claude-opus-4-7",
199
+ reasoningEffort: null
200
+ }, {
201
+ sourceModelId: "claude-opus-4-7-high",
202
+ reasoningEffort: "high"
203
+ }],
204
+ "claude-sonnet-4-6": [{
205
+ sourceModelId: "claude-sonnet-4-6",
206
+ reasoningEffort: null
207
+ }],
208
+ "claude-opus-4-6": [{
209
+ sourceModelId: "claude-opus-4-6",
210
+ reasoningEffort: null
211
+ }, {
212
+ sourceModelId: "claude-opus-4-6-high",
213
+ reasoningEffort: "high"
214
+ }],
215
+ "claude-haiku-4-5-20251001": [{
216
+ sourceModelId: "claude-haiku-4-5-20251001",
217
+ reasoningEffort: null
218
+ }],
219
+ "us.anthropic.claude-sonnet-4-5-20250929-v1:0": [{
220
+ sourceModelId: "claude-sonnet-4-5-20250929",
221
+ reasoningEffort: null
222
+ }],
223
+ "us.anthropic.claude-haiku-4-5-20251001-v1:0": [{
224
+ sourceModelId: "claude-haiku-4-5-20251001",
225
+ reasoningEffort: null
226
+ }],
227
+ "us.amazon.nova-pro-v1:0": [{
228
+ sourceModelId: "amazon-nova-pro-v1.0",
229
+ reasoningEffort: null
230
+ }],
231
+ "us.amazon.nova-lite-v1:0": [{
232
+ sourceModelId: "amazon-nova-lite-v1.0",
233
+ reasoningEffort: null
234
+ }],
235
+ "us.amazon.nova-micro-v1:0": [{
236
+ sourceModelId: "amazon-nova-micro-v1.0",
237
+ reasoningEffort: null
238
+ }],
239
+ "openai.gpt-oss-120b-1:0": [{
240
+ sourceModelId: "gpt-oss-120b",
241
+ reasoningEffort: null
242
+ }],
243
+ "openai.gpt-oss-20b-1:0": [{
244
+ sourceModelId: "gpt-oss-20b",
245
+ reasoningEffort: null
246
+ }],
247
+ "mistral-large-latest": [],
248
+ "mistral-medium-latest": [],
249
+ "mistral-small-latest": []
250
+ };
251
+ const MODEL_UNRATED_REASONS = [
252
+ "too_new",
253
+ "preview_only",
254
+ "named_default_effort",
255
+ "floating_alias"
256
+ ];
257
+ /**
258
+ * A reviewed reason for every offered model without an exact Text Arena row.
259
+ * A newly offered unrated model fails typecheck until it has one, and mapping
260
+ * a source later makes its entry here an excess key, so the lists cannot
261
+ * drift. `too_new` drives the picker's "New" recommendation.
262
+ */
263
+ const MODEL_UNRATED_REASON = {
264
+ "gemini-3.1-flash-lite": "preview_only",
265
+ "openai/gpt-6.1-sol": "too_new",
266
+ "google/gemini-3.5-flash-lite": "named_default_effort",
267
+ "google/gemini-3.1-pro-preview": "named_default_effort",
268
+ "google/gemini-3.1-flash-lite": "preview_only",
269
+ "anthropic/claude-sonnet-5.5": "too_new",
270
+ "anthropic/claude-sonnet-4.6": "named_default_effort",
271
+ "gpt-6.1-sol": "too_new",
272
+ "claude-sonnet-5-5": "too_new",
273
+ "mistral-large-latest": "floating_alias",
274
+ "mistral-medium-latest": "floating_alias",
275
+ "mistral-small-latest": "floating_alias"
276
+ };
277
+ //#endregion
278
+ //#region src/benchmarks.gen.ts
279
+ const MODEL_BENCHMARK_PUBLISH_DATE = "2026-09-30";
280
+ const MODEL_BENCHMARK_RATINGS = {
281
+ "gemini-3.8-flash-high": {
282
+ rating: 1494.09,
283
+ ratingLower: 1489,
284
+ ratingUpper: 1499.18,
285
+ rank: 11,
286
+ voteCount: 24828
287
+ },
288
+ "gemini-3.7-flash-high": {
289
+ rating: 1488.3,
290
+ ratingLower: 1483.08,
291
+ ratingUpper: 1493.52,
292
+ rank: 16,
293
+ voteCount: 20851
294
+ },
295
+ "gemini-3.6-flash-high": {
296
+ rating: 1483.09,
297
+ ratingLower: 1478.64,
298
+ ratingUpper: 1487.53,
299
+ rank: 21,
300
+ voteCount: 35640
301
+ },
302
+ "gemini-3.5-flash-lite": {
303
+ rating: 1454.11,
304
+ ratingLower: 1449.62,
305
+ ratingUpper: 1458.6,
306
+ rank: 70,
307
+ voteCount: 35335
308
+ },
309
+ "gemini-3.1-pro-preview": {
310
+ rating: 1486.96,
311
+ ratingLower: 1483.95,
312
+ ratingUpper: 1489.98,
313
+ rank: 18,
314
+ voteCount: 121225
315
+ },
316
+ "gemini-3.5-flash-medium": {
317
+ rating: 1476.2,
318
+ ratingLower: 1472.04,
319
+ ratingUpper: 1480.36,
320
+ rank: 29,
321
+ voteCount: 46735
322
+ },
323
+ "gemini-3.5-flash-high": {
324
+ rating: 1477.07,
325
+ ratingLower: 1473.17,
326
+ ratingUpper: 1480.97,
327
+ rank: 27,
328
+ voteCount: 47981
329
+ },
330
+ "gpt-6-astra-max": {
331
+ rating: 1476.18,
332
+ ratingLower: 1469.17,
333
+ ratingUpper: 1483.19,
334
+ rank: 30,
335
+ voteCount: 8565
336
+ },
337
+ "gpt-6-sol-max": {
338
+ rating: 1455.82,
339
+ ratingLower: 1448.52,
340
+ ratingUpper: 1463.12,
341
+ rank: 66,
342
+ voteCount: 7574
343
+ },
344
+ "gpt-6-luna-max": {
345
+ rating: 1443.84,
346
+ ratingLower: 1436.67,
347
+ ratingUpper: 1451.02,
348
+ rank: 85,
349
+ voteCount: 7654
350
+ },
351
+ "gpt-5.6-sol-xhigh": {
352
+ rating: 1483.76,
353
+ ratingLower: 1479.3,
354
+ ratingUpper: 1488.22,
355
+ rank: 20,
356
+ voteCount: 36002
357
+ },
358
+ "gpt-5.6-terra-xhigh": {
359
+ rating: 1465.13,
360
+ ratingLower: 1460.7,
361
+ ratingUpper: 1469.56,
362
+ rank: 50,
363
+ voteCount: 37056
364
+ },
365
+ "gpt-5.6-luna-xhigh": {
366
+ rating: 1453.41,
367
+ ratingLower: 1448.99,
368
+ ratingUpper: 1457.82,
369
+ rank: 72,
370
+ voteCount: 37593
371
+ },
372
+ "claude-sonnet-5-high": {
373
+ rating: 1461.83,
374
+ ratingLower: 1457.61,
375
+ ratingUpper: 1466.05,
376
+ rank: 55,
377
+ voteCount: 45191
378
+ },
379
+ "claude-opus-5-high": {
380
+ rating: 1491.19,
381
+ ratingLower: 1487.38,
382
+ ratingUpper: 1495,
383
+ rank: 13,
384
+ voteCount: 58380
385
+ },
386
+ "claude-opus-5-max": {
387
+ rating: 1489.08,
388
+ ratingLower: 1484.09,
389
+ ratingUpper: 1494.07,
390
+ rank: 14,
391
+ voteCount: 28351
392
+ },
393
+ "claude-opus-4-8-high": {
394
+ rating: 1481.29,
395
+ ratingLower: 1477.4,
396
+ ratingUpper: 1485.17,
397
+ rank: 23,
398
+ voteCount: 63577
399
+ },
400
+ "gpt-5.5-high": {
401
+ rating: 1481.34,
402
+ ratingLower: 1477.61,
403
+ ratingUpper: 1485.07,
404
+ rank: 22,
405
+ voteCount: 69312
406
+ },
407
+ "gpt-5.4-mini-high": {
408
+ rating: 1447.05,
409
+ ratingLower: 1443.29,
410
+ ratingUpper: 1450.8,
411
+ rank: 81,
412
+ voteCount: 63311
413
+ },
414
+ "gpt-5.5": {
415
+ rating: 1476.73,
416
+ ratingLower: 1473.03,
417
+ ratingUpper: 1480.42,
418
+ rank: 28,
419
+ voteCount: 70894
420
+ },
421
+ "gpt-5.4": {
422
+ rating: 1464.86,
423
+ ratingLower: 1461.16,
424
+ ratingUpper: 1468.56,
425
+ rank: 51,
426
+ voteCount: 67753
427
+ },
428
+ "gpt-5.4-high": {
429
+ rating: 1475.18,
430
+ ratingLower: 1471.41,
431
+ ratingUpper: 1478.96,
432
+ rank: 33,
433
+ voteCount: 64648
434
+ },
435
+ "gpt-5.4-nano-high": {
436
+ rating: 1401.13,
437
+ ratingLower: 1397.34,
438
+ ratingUpper: 1404.92,
439
+ rank: 156,
440
+ voteCount: 62300
441
+ },
442
+ "gpt-5.2": {
443
+ rating: 1435.61,
444
+ ratingLower: 1432.43,
445
+ ratingUpper: 1438.79,
446
+ rank: 101,
447
+ voteCount: 83682
448
+ },
449
+ "gpt-5.2-high": {
450
+ rating: 1437.33,
451
+ ratingLower: 1433.77,
452
+ ratingUpper: 1440.89,
453
+ rank: 98,
454
+ voteCount: 49549
455
+ },
456
+ "claude-fable-5.1-max": {
457
+ rating: 1501.25,
458
+ ratingLower: 1494.75,
459
+ ratingUpper: 1507.75,
460
+ rank: 6,
461
+ voteCount: 11241
462
+ },
463
+ "claude-fable-5-high": {
464
+ rating: 1504.87,
465
+ ratingLower: 1500.46,
466
+ ratingUpper: 1509.28,
467
+ rank: 3,
468
+ voteCount: 37900
469
+ },
470
+ "claude-opus-5.5-high": {
471
+ rating: 1503.98,
472
+ ratingLower: 1494.32,
473
+ ratingUpper: 1513.64,
474
+ rank: 4,
475
+ voteCount: 3932
476
+ },
477
+ "claude-opus-4-8": {
478
+ rating: 1474.52,
479
+ ratingLower: 1470.67,
480
+ ratingUpper: 1478.38,
481
+ rank: 36,
482
+ voteCount: 64711
483
+ },
484
+ "claude-opus-4-7": {
485
+ rating: 1494.34,
486
+ ratingLower: 1490.57,
487
+ ratingUpper: 1498.11,
488
+ rank: 9,
489
+ voteCount: 65705
490
+ },
491
+ "claude-opus-4-7-high": {
492
+ rating: 1501.69,
493
+ ratingLower: 1497.92,
494
+ ratingUpper: 1505.46,
495
+ rank: 5,
496
+ voteCount: 64607
497
+ },
498
+ "claude-sonnet-4-6": {
499
+ rating: 1472.13,
500
+ ratingLower: 1468.61,
501
+ ratingUpper: 1475.65,
502
+ rank: 42,
503
+ voteCount: 70828
504
+ },
505
+ "claude-opus-4-6": {
506
+ rating: 1497.37,
507
+ ratingLower: 1494.03,
508
+ ratingUpper: 1500.7,
509
+ rank: 7,
510
+ voteCount: 81769
511
+ },
512
+ "claude-opus-4-6-high": {
513
+ rating: 1505.49,
514
+ ratingLower: 1502.06,
515
+ ratingUpper: 1508.91,
516
+ rank: 2,
517
+ voteCount: 77193
518
+ },
519
+ "claude-haiku-4-5-20251001": {
520
+ rating: 1413.56,
521
+ ratingLower: 1411.12,
522
+ ratingUpper: 1415.99,
523
+ rank: 139,
524
+ voteCount: 142743
525
+ },
526
+ "claude-sonnet-4-5-20250929": {
527
+ rating: 1455.18,
528
+ ratingLower: 1452.31,
529
+ ratingUpper: 1458.05,
530
+ rank: 68,
531
+ voteCount: 82438
532
+ },
533
+ "amazon-nova-pro-v1.0": {
534
+ rating: 1290.1,
535
+ ratingLower: 1285.51,
536
+ ratingUpper: 1294.69,
537
+ rank: 284,
538
+ voteCount: 24745
539
+ },
540
+ "amazon-nova-lite-v1.0": {
541
+ rating: 1260.43,
542
+ ratingLower: 1255.24,
543
+ ratingUpper: 1265.62,
544
+ rank: 312,
545
+ voteCount: 19372
546
+ },
547
+ "amazon-nova-micro-v1.0": {
548
+ rating: 1240.7,
549
+ ratingLower: 1235.52,
550
+ ratingUpper: 1245.88,
551
+ rank: 318,
552
+ voteCount: 19364
553
+ },
554
+ "gpt-oss-120b": {
555
+ rating: 1351.7,
556
+ ratingLower: 1347.32,
557
+ ratingUpper: 1356.08,
558
+ rank: 209,
559
+ voteCount: 30039
560
+ },
561
+ "gpt-oss-20b": {
562
+ rating: 1317.59,
563
+ ratingLower: 1311.16,
564
+ ratingUpper: 1324.01,
565
+ rank: 260,
566
+ voteCount: 10371
567
+ }
568
+ };
569
+ //#endregion
570
+ //#region src/benchmarks.ts
571
+ /**
572
+ * Cost and quality trade-offs across the offered catalog.
573
+ *
574
+ * Quality is the Text Arena (LMArena) rating of an exactly matched model and
575
+ * reasoning-effort variant (`benchmark-sources.ts` + `benchmarks.gen.ts`).
576
+ * Cost is the list price of one typical call. The API classifies once over the
577
+ * whole catalog (`benchmark-frontier.ts`) so clients never ship the rate table
578
+ * or the snapshot.
579
+ */
580
+ const TYPICAL_CALL_INPUT_TOKENS = 2e4;
581
+ const TYPICAL_CALL_OUTPUT_TOKENS = 2e3;
582
+ const TOKENS_PER_RATE_UNIT = 1e6;
583
+ /**
584
+ * List price in USD of one typical call at the standard (non-cached,
585
+ * below-threshold) rate. Rates are per model, not per effort, so this does not
586
+ * vary with reasoning effort even though higher efforts usually emit more
587
+ * output tokens; the comparison states that assumption beside the chart.
588
+ */
589
+ const getTypicalCallCostUsd = (modelId) => {
590
+ const rate = getModelRate(modelId);
591
+ if (rate === void 0) return null;
592
+ const { inputPerMTok, outputPerMTok } = getStandardModelRate(rate);
593
+ return (inputPerMTok * TYPICAL_CALL_INPUT_TOKENS + outputPerMTok * TYPICAL_CALL_OUTPUT_TOKENS) / TOKENS_PER_RATE_UNIT / MODEL_RATE_UNITS_PER_USD;
594
+ };
595
+ const MODEL_BENCHMARK_RATINGS_BY_ID = MODEL_BENCHMARK_RATINGS;
596
+ /** Every measured variant of an offered model, in source order. */
597
+ const getModelBenchmarkMeasurements = (modelId) => MODEL_BENCHMARK_SOURCES[modelId].flatMap(({ sourceModelId, reasoningEffort }) => {
598
+ const measured = MODEL_BENCHMARK_RATINGS_BY_ID[sourceModelId];
599
+ return measured === void 0 ? [] : [{
600
+ sourceModelId,
601
+ reasoningEffort,
602
+ rating: measured.rating,
603
+ ratingLower: measured.ratingLower,
604
+ ratingUpper: measured.ratingUpper
605
+ }];
606
+ });
607
+ const MODEL_UNRATED_REASON_BY_ID = MODEL_UNRATED_REASON;
608
+ /** Why an offered model has no exact Text Arena row; `null` when it has one. */
609
+ const getModelUnratedReason = (modelId) => MODEL_UNRATED_REASON_BY_ID[modelId] ?? null;
610
+ //#endregion
611
+ export { MODEL_BENCHMARK_CATEGORY, MODEL_BENCHMARK_CONFIG, MODEL_BENCHMARK_DATASET, MODEL_BENCHMARK_LICENCE, MODEL_BENCHMARK_NAME, MODEL_BENCHMARK_PUBLISH_DATE, MODEL_BENCHMARK_RATINGS, MODEL_BENCHMARK_SOURCES, MODEL_BENCHMARK_SOURCE_URL, MODEL_BENCHMARK_SPLIT, MODEL_UNRATED_REASON, MODEL_UNRATED_REASONS, TYPICAL_CALL_INPUT_TOKENS, TYPICAL_CALL_OUTPUT_TOKENS, getModelBenchmarkMeasurements, getModelUnratedReason, getTypicalCallCostUsd };