@stll/ai-catalog 0.6.0 → 0.7.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.
@@ -29,6 +29,7 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
29
29
  "google/gemini-3.1-pro-preview",
30
30
  "google/gemini-3.5-flash",
31
31
  "google/gemini-3.1-flash-lite",
32
+ "anthropic/claude-haiku-5.5",
32
33
  "anthropic/claude-sonnet-5.5",
33
34
  "anthropic/claude-sonnet-5",
34
35
  "anthropic/claude-opus-5",
@@ -62,10 +63,12 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
62
63
  "claude-opus-4-7",
63
64
  "claude-sonnet-4-6",
64
65
  "claude-opus-4-6",
66
+ "claude-haiku-5-5",
65
67
  "claude-haiku-4-5-20251001"
66
68
  ],
67
69
  bedrock: [
68
70
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
71
+ "us.anthropic.claude-haiku-5-5",
69
72
  "us.anthropic.claude-haiku-4-5-20251001-v1:0",
70
73
  "us.amazon.nova-pro-v1:0",
71
74
  "us.amazon.nova-lite-v1:0"
@@ -98,6 +101,7 @@ const MODEL_IMAGE_INPUT_CAPABILITIES = {
98
101
  "google/gemini-3.1-pro-preview": "supported",
99
102
  "google/gemini-3.5-flash": "supported",
100
103
  "google/gemini-3.1-flash-lite": "supported",
104
+ "anthropic/claude-haiku-5.5": "supported",
101
105
  "anthropic/claude-sonnet-5.5": "supported",
102
106
  "anthropic/claude-sonnet-5": "supported",
103
107
  "anthropic/claude-opus-5": "supported",
@@ -131,10 +135,12 @@ const MODEL_IMAGE_INPUT_CAPABILITIES = {
131
135
  "claude-opus-4-7": "supported",
132
136
  "claude-sonnet-4-6": "supported",
133
137
  "claude-opus-4-6": "supported",
138
+ "claude-haiku-5-5": "supported",
134
139
  "claude-haiku-4-5-20251001": "supported"
135
140
  },
136
141
  bedrock: {
137
142
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported",
143
+ "us.anthropic.claude-haiku-5-5": "supported",
138
144
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported",
139
145
  "us.amazon.nova-pro-v1:0": "supported",
140
146
  "us.amazon.nova-lite-v1:0": "supported",
@@ -289,6 +295,14 @@ const MODEL_REASONING_EFFORTS = {
289
295
  "medium",
290
296
  "high"
291
297
  ],
298
+ "anthropic/claude-haiku-5.5": [
299
+ "none",
300
+ "low",
301
+ "medium",
302
+ "high",
303
+ "xhigh",
304
+ "max"
305
+ ],
292
306
  "anthropic/claude-sonnet-5.5": [
293
307
  "low",
294
308
  "medium",
@@ -499,8 +513,24 @@ const MODEL_REASONING_EFFORTS = {
499
513
  "high",
500
514
  "max"
501
515
  ],
516
+ "claude-haiku-5-5": [
517
+ "none",
518
+ "low",
519
+ "medium",
520
+ "high",
521
+ "xhigh",
522
+ "max"
523
+ ],
502
524
  "claude-haiku-4-5-20251001": null,
503
525
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null,
526
+ "us.anthropic.claude-haiku-5-5": [
527
+ "none",
528
+ "low",
529
+ "medium",
530
+ "high",
531
+ "xhigh",
532
+ "max"
533
+ ],
504
534
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": null,
505
535
  "us.amazon.nova-pro-v1:0": null,
506
536
  "us.amazon.nova-lite-v1:0": null,
@@ -547,6 +577,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
547
577
  "google/gemini-3.1-pro-preview": "medium",
548
578
  "google/gemini-3.5-flash": "medium",
549
579
  "google/gemini-3.1-flash-lite": "minimal",
580
+ "anthropic/claude-haiku-5.5": "medium",
550
581
  "anthropic/claude-sonnet-5.5": "high",
551
582
  "anthropic/claude-sonnet-5": "high",
552
583
  "anthropic/claude-opus-5": "high",
@@ -576,8 +607,10 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
576
607
  "claude-opus-4-7": null,
577
608
  "claude-sonnet-4-6": null,
578
609
  "claude-opus-4-6": null,
610
+ "claude-haiku-5-5": null,
579
611
  "claude-haiku-4-5-20251001": null,
580
612
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0": null,
613
+ "us.anthropic.claude-haiku-5-5": null,
581
614
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": null,
582
615
  "us.amazon.nova-pro-v1:0": null,
583
616
  "us.amazon.nova-lite-v1:0": null,
@@ -616,10 +649,11 @@ const MODEL_TEMPERATURE_POLICIES = {
616
649
  "google/gemini-3.1-pro-preview": "emit",
617
650
  "google/gemini-3.5-flash": "emit",
618
651
  "google/gemini-3.1-flash-lite": "emit",
619
- "anthropic/claude-sonnet-5.5": "emit",
652
+ "anthropic/claude-haiku-5.5": "omit",
653
+ "anthropic/claude-sonnet-5.5": "omit",
620
654
  "anthropic/claude-sonnet-5": "omit",
621
- "anthropic/claude-opus-5": "emit",
622
- "anthropic/claude-opus-4.8": "emit",
655
+ "anthropic/claude-opus-5": "omit",
656
+ "anthropic/claude-opus-4.8": "omit",
623
657
  "anthropic/claude-sonnet-4.6": "emit",
624
658
  "openai/gpt-5.5": "omit",
625
659
  "openai/gpt-5.4-mini": "omit",
@@ -645,8 +679,10 @@ const MODEL_TEMPERATURE_POLICIES = {
645
679
  "claude-opus-4-7": "omit",
646
680
  "claude-sonnet-4-6": "emit",
647
681
  "claude-opus-4-6": "emit",
682
+ "claude-haiku-5-5": "omit",
648
683
  "claude-haiku-4-5-20251001": "emit",
649
684
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "emit",
685
+ "us.anthropic.claude-haiku-5-5": "omit",
650
686
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": "emit",
651
687
  "us.amazon.nova-pro-v1:0": "emit",
652
688
  "us.amazon.nova-lite-v1:0": "emit",
@@ -685,6 +721,7 @@ const MODEL_OUTPUT_TOKEN_LIMITS = {
685
721
  "google/gemini-3.1-pro-preview": 65536,
686
722
  "google/gemini-3.5-flash": 65536,
687
723
  "google/gemini-3.1-flash-lite": 65536,
724
+ "anthropic/claude-haiku-5.5": 128e3,
688
725
  "anthropic/claude-sonnet-5.5": 128e3,
689
726
  "anthropic/claude-sonnet-5": 128e3,
690
727
  "anthropic/claude-opus-5": 128e3,
@@ -714,8 +751,10 @@ const MODEL_OUTPUT_TOKEN_LIMITS = {
714
751
  "claude-opus-4-7": 128e3,
715
752
  "claude-sonnet-4-6": 128e3,
716
753
  "claude-opus-4-6": 128e3,
754
+ "claude-haiku-5-5": 128e3,
717
755
  "claude-haiku-4-5-20251001": 64e3,
718
756
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 64e3,
757
+ "us.anthropic.claude-haiku-5-5": 128e3,
719
758
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": 64e3,
720
759
  "us.amazon.nova-pro-v1:0": 1e4,
721
760
  "us.amazon.nova-lite-v1:0": 1e4,
@@ -1008,6 +1047,22 @@ const MODEL_RATES = {
1008
1047
  cachedInputPerMTok: 5e4,
1009
1048
  cachedWriteInputPerMTok: 625e3
1010
1049
  },
1050
+ "claude-haiku-5-5": {
1051
+ kind: "input-token-tiered",
1052
+ inputTokenThreshold: 1e5,
1053
+ standard: {
1054
+ inputPerMTok: 1e4,
1055
+ outputPerMTok: 5e4,
1056
+ cachedInputPerMTok: 1e3,
1057
+ cachedWriteInputPerMTok: 12500
1058
+ },
1059
+ aboveThreshold: {
1060
+ inputPerMTok: 5e4,
1061
+ outputPerMTok: 25e4,
1062
+ cachedInputPerMTok: 5e3,
1063
+ cachedWriteInputPerMTok: 62500
1064
+ }
1065
+ },
1011
1066
  "claude-haiku-4-5-20251001": {
1012
1067
  kind: "flat",
1013
1068
  inputPerMTok: 1e5,
@@ -1022,6 +1077,22 @@ const MODEL_RATES = {
1022
1077
  cachedInputPerMTok: 33e3,
1023
1078
  cachedWriteInputPerMTok: 412500
1024
1079
  },
1080
+ "us.anthropic.claude-haiku-5-5": {
1081
+ kind: "input-token-tiered",
1082
+ inputTokenThreshold: 1e5,
1083
+ standard: {
1084
+ inputPerMTok: 11e3,
1085
+ outputPerMTok: 55e3,
1086
+ cachedInputPerMTok: 1100,
1087
+ cachedWriteInputPerMTok: 13750
1088
+ },
1089
+ aboveThreshold: {
1090
+ inputPerMTok: 55e3,
1091
+ outputPerMTok: 275e3,
1092
+ cachedInputPerMTok: 5500,
1093
+ cachedWriteInputPerMTok: 68750
1094
+ }
1095
+ },
1025
1096
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
1026
1097
  kind: "flat",
1027
1098
  inputPerMTok: 11e4,
@@ -1123,6 +1194,710 @@ const MODEL_RATES = {
1123
1194
  }
1124
1195
  };
1125
1196
  //#endregion
1197
+ //#region src/reasoning-capabilities.ts
1198
+ const REASONING_REPLAY_FORMATS = [
1199
+ "openai-encrypted-content",
1200
+ "openai-item-id",
1201
+ "anthropic-thinking-signature",
1202
+ "anthropic-redacted-thinking",
1203
+ "google-thought-signature",
1204
+ "none"
1205
+ ];
1206
+ const MODEL_REASONING_CAPABILITIES = {
1207
+ "gemini-3.8-flash": {
1208
+ support: "supported",
1209
+ emittedFormats: ["google-thought-signature"],
1210
+ openAIIncludeEncryptedContent: false,
1211
+ openAIStore: null,
1212
+ anthropicThinking: "none",
1213
+ replayCompatibility: [{
1214
+ provider: "google",
1215
+ model: "gemini-3.8-flash",
1216
+ format: "google-thought-signature"
1217
+ }]
1218
+ },
1219
+ "gemini-3.7-flash": {
1220
+ support: "supported",
1221
+ emittedFormats: ["google-thought-signature"],
1222
+ openAIIncludeEncryptedContent: false,
1223
+ openAIStore: null,
1224
+ anthropicThinking: "none",
1225
+ replayCompatibility: [{
1226
+ provider: "google",
1227
+ model: "gemini-3.7-flash",
1228
+ format: "google-thought-signature"
1229
+ }]
1230
+ },
1231
+ "gemini-3.6-flash": {
1232
+ support: "supported",
1233
+ emittedFormats: ["google-thought-signature"],
1234
+ openAIIncludeEncryptedContent: false,
1235
+ openAIStore: null,
1236
+ anthropicThinking: "none",
1237
+ replayCompatibility: [{
1238
+ provider: "google",
1239
+ model: "gemini-3.6-flash",
1240
+ format: "google-thought-signature"
1241
+ }]
1242
+ },
1243
+ "gemini-3.5-flash-lite": {
1244
+ support: "supported",
1245
+ emittedFormats: ["google-thought-signature"],
1246
+ openAIIncludeEncryptedContent: false,
1247
+ openAIStore: null,
1248
+ anthropicThinking: "none",
1249
+ replayCompatibility: [{
1250
+ provider: "google",
1251
+ model: "gemini-3.5-flash-lite",
1252
+ format: "google-thought-signature"
1253
+ }]
1254
+ },
1255
+ "gemini-3.1-pro-preview": {
1256
+ support: "supported",
1257
+ emittedFormats: ["google-thought-signature"],
1258
+ openAIIncludeEncryptedContent: false,
1259
+ openAIStore: null,
1260
+ anthropicThinking: "none",
1261
+ replayCompatibility: [{
1262
+ provider: "google",
1263
+ model: "gemini-3.1-pro-preview",
1264
+ format: "google-thought-signature"
1265
+ }]
1266
+ },
1267
+ "gemini-3.5-flash": {
1268
+ support: "supported",
1269
+ emittedFormats: ["google-thought-signature"],
1270
+ openAIIncludeEncryptedContent: false,
1271
+ openAIStore: null,
1272
+ anthropicThinking: "none",
1273
+ replayCompatibility: [{
1274
+ provider: "google",
1275
+ model: "gemini-3.5-flash",
1276
+ format: "google-thought-signature"
1277
+ }]
1278
+ },
1279
+ "gemini-3.1-flash-lite": {
1280
+ support: "supported",
1281
+ emittedFormats: ["google-thought-signature"],
1282
+ openAIIncludeEncryptedContent: false,
1283
+ openAIStore: null,
1284
+ anthropicThinking: "none",
1285
+ replayCompatibility: [{
1286
+ provider: "google",
1287
+ model: "gemini-3.1-flash-lite",
1288
+ format: "google-thought-signature"
1289
+ }]
1290
+ },
1291
+ "openai/gpt-6.1-sol": {
1292
+ support: "supported",
1293
+ emittedFormats: ["none"],
1294
+ openAIIncludeEncryptedContent: false,
1295
+ openAIStore: null,
1296
+ anthropicThinking: "none",
1297
+ replayCompatibility: []
1298
+ },
1299
+ "openai/gpt-6-astra": {
1300
+ support: "supported",
1301
+ emittedFormats: ["none"],
1302
+ openAIIncludeEncryptedContent: false,
1303
+ openAIStore: null,
1304
+ anthropicThinking: "none",
1305
+ replayCompatibility: []
1306
+ },
1307
+ "openai/gpt-6-sol": {
1308
+ support: "supported",
1309
+ emittedFormats: ["none"],
1310
+ openAIIncludeEncryptedContent: false,
1311
+ openAIStore: null,
1312
+ anthropicThinking: "none",
1313
+ replayCompatibility: []
1314
+ },
1315
+ "openai/gpt-6-luna": {
1316
+ support: "supported",
1317
+ emittedFormats: ["none"],
1318
+ openAIIncludeEncryptedContent: false,
1319
+ openAIStore: null,
1320
+ anthropicThinking: "none",
1321
+ replayCompatibility: []
1322
+ },
1323
+ "openai/gpt-5.6-sol": {
1324
+ support: "supported",
1325
+ emittedFormats: ["none"],
1326
+ openAIIncludeEncryptedContent: false,
1327
+ openAIStore: null,
1328
+ anthropicThinking: "none",
1329
+ replayCompatibility: []
1330
+ },
1331
+ "openai/gpt-5.6-terra": {
1332
+ support: "supported",
1333
+ emittedFormats: ["none"],
1334
+ openAIIncludeEncryptedContent: false,
1335
+ openAIStore: null,
1336
+ anthropicThinking: "none",
1337
+ replayCompatibility: []
1338
+ },
1339
+ "openai/gpt-5.6-luna": {
1340
+ support: "supported",
1341
+ emittedFormats: ["none"],
1342
+ openAIIncludeEncryptedContent: false,
1343
+ openAIStore: null,
1344
+ anthropicThinking: "none",
1345
+ replayCompatibility: []
1346
+ },
1347
+ "google/gemini-3.8-flash": {
1348
+ support: "supported",
1349
+ emittedFormats: ["none"],
1350
+ openAIIncludeEncryptedContent: false,
1351
+ openAIStore: null,
1352
+ anthropicThinking: "none",
1353
+ replayCompatibility: []
1354
+ },
1355
+ "google/gemini-3.7-flash": {
1356
+ support: "supported",
1357
+ emittedFormats: ["none"],
1358
+ openAIIncludeEncryptedContent: false,
1359
+ openAIStore: null,
1360
+ anthropicThinking: "none",
1361
+ replayCompatibility: []
1362
+ },
1363
+ "google/gemini-3.6-flash": {
1364
+ support: "supported",
1365
+ emittedFormats: ["none"],
1366
+ openAIIncludeEncryptedContent: false,
1367
+ openAIStore: null,
1368
+ anthropicThinking: "none",
1369
+ replayCompatibility: []
1370
+ },
1371
+ "google/gemini-3.5-flash-lite": {
1372
+ support: "supported",
1373
+ emittedFormats: ["none"],
1374
+ openAIIncludeEncryptedContent: false,
1375
+ openAIStore: null,
1376
+ anthropicThinking: "none",
1377
+ replayCompatibility: []
1378
+ },
1379
+ "google/gemini-3.1-pro-preview": {
1380
+ support: "supported",
1381
+ emittedFormats: ["none"],
1382
+ openAIIncludeEncryptedContent: false,
1383
+ openAIStore: null,
1384
+ anthropicThinking: "none",
1385
+ replayCompatibility: []
1386
+ },
1387
+ "google/gemini-3.5-flash": {
1388
+ support: "supported",
1389
+ emittedFormats: ["none"],
1390
+ openAIIncludeEncryptedContent: false,
1391
+ openAIStore: null,
1392
+ anthropicThinking: "none",
1393
+ replayCompatibility: []
1394
+ },
1395
+ "google/gemini-3.1-flash-lite": {
1396
+ support: "supported",
1397
+ emittedFormats: ["none"],
1398
+ openAIIncludeEncryptedContent: false,
1399
+ openAIStore: null,
1400
+ anthropicThinking: "none",
1401
+ replayCompatibility: []
1402
+ },
1403
+ "anthropic/claude-haiku-5.5": {
1404
+ support: "supported",
1405
+ emittedFormats: ["none"],
1406
+ openAIIncludeEncryptedContent: false,
1407
+ openAIStore: null,
1408
+ anthropicThinking: "none",
1409
+ replayCompatibility: []
1410
+ },
1411
+ "anthropic/claude-sonnet-5.5": {
1412
+ support: "supported",
1413
+ emittedFormats: ["none"],
1414
+ openAIIncludeEncryptedContent: false,
1415
+ openAIStore: null,
1416
+ anthropicThinking: "none",
1417
+ replayCompatibility: []
1418
+ },
1419
+ "anthropic/claude-sonnet-5": {
1420
+ support: "supported",
1421
+ emittedFormats: ["none"],
1422
+ openAIIncludeEncryptedContent: false,
1423
+ openAIStore: null,
1424
+ anthropicThinking: "none",
1425
+ replayCompatibility: []
1426
+ },
1427
+ "anthropic/claude-opus-5": {
1428
+ support: "supported",
1429
+ emittedFormats: ["none"],
1430
+ openAIIncludeEncryptedContent: false,
1431
+ openAIStore: null,
1432
+ anthropicThinking: "none",
1433
+ replayCompatibility: []
1434
+ },
1435
+ "anthropic/claude-opus-4.8": {
1436
+ support: "supported",
1437
+ emittedFormats: ["none"],
1438
+ openAIIncludeEncryptedContent: false,
1439
+ openAIStore: null,
1440
+ anthropicThinking: "none",
1441
+ replayCompatibility: []
1442
+ },
1443
+ "anthropic/claude-sonnet-4.6": {
1444
+ support: "supported",
1445
+ emittedFormats: ["none"],
1446
+ openAIIncludeEncryptedContent: false,
1447
+ openAIStore: null,
1448
+ anthropicThinking: "none",
1449
+ replayCompatibility: []
1450
+ },
1451
+ "openai/gpt-5.5": {
1452
+ support: "supported",
1453
+ emittedFormats: ["none"],
1454
+ openAIIncludeEncryptedContent: false,
1455
+ openAIStore: null,
1456
+ anthropicThinking: "none",
1457
+ replayCompatibility: []
1458
+ },
1459
+ "openai/gpt-5.4-mini": {
1460
+ support: "supported",
1461
+ emittedFormats: ["none"],
1462
+ openAIIncludeEncryptedContent: false,
1463
+ openAIStore: null,
1464
+ anthropicThinking: "none",
1465
+ replayCompatibility: []
1466
+ },
1467
+ "gpt-6.1-sol": {
1468
+ support: "supported",
1469
+ emittedFormats: ["openai-encrypted-content"],
1470
+ openAIIncludeEncryptedContent: true,
1471
+ openAIStore: false,
1472
+ anthropicThinking: "none",
1473
+ replayCompatibility: [{
1474
+ provider: "openai",
1475
+ model: "gpt-6.1-sol",
1476
+ format: "openai-encrypted-content"
1477
+ }]
1478
+ },
1479
+ "gpt-6-astra": {
1480
+ support: "supported",
1481
+ emittedFormats: ["openai-encrypted-content"],
1482
+ openAIIncludeEncryptedContent: true,
1483
+ openAIStore: false,
1484
+ anthropicThinking: "none",
1485
+ replayCompatibility: [{
1486
+ provider: "openai",
1487
+ model: "gpt-6-astra",
1488
+ format: "openai-encrypted-content"
1489
+ }]
1490
+ },
1491
+ "gpt-6-sol": {
1492
+ support: "supported",
1493
+ emittedFormats: ["openai-encrypted-content"],
1494
+ openAIIncludeEncryptedContent: true,
1495
+ openAIStore: false,
1496
+ anthropicThinking: "none",
1497
+ replayCompatibility: [{
1498
+ provider: "openai",
1499
+ model: "gpt-6-sol",
1500
+ format: "openai-encrypted-content"
1501
+ }]
1502
+ },
1503
+ "gpt-6-luna": {
1504
+ support: "supported",
1505
+ emittedFormats: ["openai-encrypted-content"],
1506
+ openAIIncludeEncryptedContent: true,
1507
+ openAIStore: false,
1508
+ anthropicThinking: "none",
1509
+ replayCompatibility: [{
1510
+ provider: "openai",
1511
+ model: "gpt-6-luna",
1512
+ format: "openai-encrypted-content"
1513
+ }]
1514
+ },
1515
+ "gpt-5.6": {
1516
+ support: "supported",
1517
+ emittedFormats: ["openai-encrypted-content"],
1518
+ openAIIncludeEncryptedContent: true,
1519
+ openAIStore: false,
1520
+ anthropicThinking: "none",
1521
+ replayCompatibility: [{
1522
+ provider: "openai",
1523
+ model: "gpt-5.6",
1524
+ format: "openai-encrypted-content"
1525
+ }]
1526
+ },
1527
+ "gpt-5.6-terra": {
1528
+ support: "supported",
1529
+ emittedFormats: ["openai-encrypted-content"],
1530
+ openAIIncludeEncryptedContent: true,
1531
+ openAIStore: false,
1532
+ anthropicThinking: "none",
1533
+ replayCompatibility: [{
1534
+ provider: "openai",
1535
+ model: "gpt-5.6-terra",
1536
+ format: "openai-encrypted-content"
1537
+ }]
1538
+ },
1539
+ "gpt-5.6-luna": {
1540
+ support: "supported",
1541
+ emittedFormats: ["openai-encrypted-content"],
1542
+ openAIIncludeEncryptedContent: true,
1543
+ openAIStore: false,
1544
+ anthropicThinking: "none",
1545
+ replayCompatibility: [{
1546
+ provider: "openai",
1547
+ model: "gpt-5.6-luna",
1548
+ format: "openai-encrypted-content"
1549
+ }]
1550
+ },
1551
+ "gpt-5.5": {
1552
+ support: "supported",
1553
+ emittedFormats: ["openai-encrypted-content"],
1554
+ openAIIncludeEncryptedContent: true,
1555
+ openAIStore: false,
1556
+ anthropicThinking: "none",
1557
+ replayCompatibility: [{
1558
+ provider: "openai",
1559
+ model: "gpt-5.5",
1560
+ format: "openai-encrypted-content"
1561
+ }]
1562
+ },
1563
+ "gpt-5.4": {
1564
+ support: "supported",
1565
+ emittedFormats: ["openai-encrypted-content"],
1566
+ openAIIncludeEncryptedContent: true,
1567
+ openAIStore: false,
1568
+ anthropicThinking: "none",
1569
+ replayCompatibility: [{
1570
+ provider: "openai",
1571
+ model: "gpt-5.4",
1572
+ format: "openai-encrypted-content"
1573
+ }]
1574
+ },
1575
+ "gpt-5.4-mini": {
1576
+ support: "supported",
1577
+ emittedFormats: ["openai-encrypted-content"],
1578
+ openAIIncludeEncryptedContent: true,
1579
+ openAIStore: false,
1580
+ anthropicThinking: "none",
1581
+ replayCompatibility: [{
1582
+ provider: "openai",
1583
+ model: "gpt-5.4-mini",
1584
+ format: "openai-encrypted-content"
1585
+ }]
1586
+ },
1587
+ "gpt-5.4-nano": {
1588
+ support: "supported",
1589
+ emittedFormats: ["openai-encrypted-content"],
1590
+ openAIIncludeEncryptedContent: true,
1591
+ openAIStore: false,
1592
+ anthropicThinking: "none",
1593
+ replayCompatibility: [{
1594
+ provider: "openai",
1595
+ model: "gpt-5.4-nano",
1596
+ format: "openai-encrypted-content"
1597
+ }]
1598
+ },
1599
+ "gpt-5.2": {
1600
+ support: "supported",
1601
+ emittedFormats: ["openai-encrypted-content"],
1602
+ openAIIncludeEncryptedContent: true,
1603
+ openAIStore: false,
1604
+ anthropicThinking: "none",
1605
+ replayCompatibility: [{
1606
+ provider: "openai",
1607
+ model: "gpt-5.2",
1608
+ format: "openai-encrypted-content"
1609
+ }]
1610
+ },
1611
+ "claude-sonnet-5-5": {
1612
+ support: "supported",
1613
+ emittedFormats: ["anthropic-thinking-signature"],
1614
+ openAIIncludeEncryptedContent: false,
1615
+ openAIStore: null,
1616
+ anthropicThinking: "adaptive",
1617
+ replayCompatibility: [{
1618
+ provider: "anthropic",
1619
+ model: "claude-sonnet-5-5",
1620
+ format: "anthropic-thinking-signature"
1621
+ }]
1622
+ },
1623
+ "claude-sonnet-5": {
1624
+ support: "supported",
1625
+ emittedFormats: ["anthropic-thinking-signature"],
1626
+ openAIIncludeEncryptedContent: false,
1627
+ openAIStore: null,
1628
+ anthropicThinking: "adaptive",
1629
+ replayCompatibility: [{
1630
+ provider: "anthropic",
1631
+ model: "claude-sonnet-5",
1632
+ format: "anthropic-thinking-signature"
1633
+ }]
1634
+ },
1635
+ "claude-fable-5-1": {
1636
+ support: "supported",
1637
+ emittedFormats: ["anthropic-thinking-signature"],
1638
+ openAIIncludeEncryptedContent: false,
1639
+ openAIStore: null,
1640
+ anthropicThinking: "adaptive",
1641
+ replayCompatibility: [{
1642
+ provider: "anthropic",
1643
+ model: "claude-fable-5-1",
1644
+ format: "anthropic-thinking-signature"
1645
+ }]
1646
+ },
1647
+ "claude-fable-5": {
1648
+ support: "supported",
1649
+ emittedFormats: ["anthropic-thinking-signature"],
1650
+ openAIIncludeEncryptedContent: false,
1651
+ openAIStore: null,
1652
+ anthropicThinking: "adaptive",
1653
+ replayCompatibility: [{
1654
+ provider: "anthropic",
1655
+ model: "claude-fable-5",
1656
+ format: "anthropic-thinking-signature"
1657
+ }]
1658
+ },
1659
+ "claude-opus-5-5": {
1660
+ support: "supported",
1661
+ emittedFormats: ["anthropic-thinking-signature"],
1662
+ openAIIncludeEncryptedContent: false,
1663
+ openAIStore: null,
1664
+ anthropicThinking: "adaptive",
1665
+ replayCompatibility: [{
1666
+ provider: "anthropic",
1667
+ model: "claude-opus-5-5",
1668
+ format: "anthropic-thinking-signature"
1669
+ }]
1670
+ },
1671
+ "claude-opus-5": {
1672
+ support: "supported",
1673
+ emittedFormats: ["anthropic-thinking-signature"],
1674
+ openAIIncludeEncryptedContent: false,
1675
+ openAIStore: null,
1676
+ anthropicThinking: "adaptive",
1677
+ replayCompatibility: [{
1678
+ provider: "anthropic",
1679
+ model: "claude-opus-5",
1680
+ format: "anthropic-thinking-signature"
1681
+ }]
1682
+ },
1683
+ "claude-opus-4-8": {
1684
+ support: "supported",
1685
+ emittedFormats: ["anthropic-thinking-signature"],
1686
+ openAIIncludeEncryptedContent: false,
1687
+ openAIStore: null,
1688
+ anthropicThinking: "adaptive",
1689
+ replayCompatibility: [{
1690
+ provider: "anthropic",
1691
+ model: "claude-opus-4-8",
1692
+ format: "anthropic-thinking-signature"
1693
+ }]
1694
+ },
1695
+ "claude-opus-4-7": {
1696
+ support: "supported",
1697
+ emittedFormats: ["anthropic-thinking-signature"],
1698
+ openAIIncludeEncryptedContent: false,
1699
+ openAIStore: null,
1700
+ anthropicThinking: "adaptive",
1701
+ replayCompatibility: [{
1702
+ provider: "anthropic",
1703
+ model: "claude-opus-4-7",
1704
+ format: "anthropic-thinking-signature"
1705
+ }]
1706
+ },
1707
+ "claude-sonnet-4-6": {
1708
+ support: "supported",
1709
+ emittedFormats: ["anthropic-thinking-signature"],
1710
+ openAIIncludeEncryptedContent: false,
1711
+ openAIStore: null,
1712
+ anthropicThinking: "adaptive",
1713
+ replayCompatibility: [{
1714
+ provider: "anthropic",
1715
+ model: "claude-sonnet-4-6",
1716
+ format: "anthropic-thinking-signature"
1717
+ }]
1718
+ },
1719
+ "claude-opus-4-6": {
1720
+ support: "supported",
1721
+ emittedFormats: ["anthropic-thinking-signature"],
1722
+ openAIIncludeEncryptedContent: false,
1723
+ openAIStore: null,
1724
+ anthropicThinking: "adaptive",
1725
+ replayCompatibility: [{
1726
+ provider: "anthropic",
1727
+ model: "claude-opus-4-6",
1728
+ format: "anthropic-thinking-signature"
1729
+ }]
1730
+ },
1731
+ "claude-haiku-5-5": {
1732
+ support: "supported",
1733
+ emittedFormats: ["anthropic-thinking-signature"],
1734
+ openAIIncludeEncryptedContent: false,
1735
+ openAIStore: null,
1736
+ anthropicThinking: "adaptive",
1737
+ replayCompatibility: [{
1738
+ provider: "anthropic",
1739
+ model: "claude-haiku-5-5",
1740
+ format: "anthropic-thinking-signature"
1741
+ }]
1742
+ },
1743
+ "us.anthropic.claude-haiku-5-5": {
1744
+ support: "supported",
1745
+ emittedFormats: ["none"],
1746
+ openAIIncludeEncryptedContent: false,
1747
+ openAIStore: null,
1748
+ anthropicThinking: "none",
1749
+ replayCompatibility: []
1750
+ },
1751
+ "claude-haiku-4-5-20251001": {
1752
+ support: "supported",
1753
+ emittedFormats: ["anthropic-thinking-signature"],
1754
+ openAIIncludeEncryptedContent: false,
1755
+ openAIStore: null,
1756
+ anthropicThinking: "budget",
1757
+ replayCompatibility: [{
1758
+ provider: "anthropic",
1759
+ model: "claude-haiku-4-5-20251001",
1760
+ format: "anthropic-thinking-signature"
1761
+ }]
1762
+ },
1763
+ "us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
1764
+ support: "supported",
1765
+ emittedFormats: ["none"],
1766
+ openAIIncludeEncryptedContent: false,
1767
+ openAIStore: null,
1768
+ anthropicThinking: "none",
1769
+ replayCompatibility: []
1770
+ },
1771
+ "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
1772
+ support: "supported",
1773
+ emittedFormats: ["none"],
1774
+ openAIIncludeEncryptedContent: false,
1775
+ openAIStore: null,
1776
+ anthropicThinking: "none",
1777
+ replayCompatibility: []
1778
+ },
1779
+ "us.amazon.nova-pro-v1:0": {
1780
+ support: "unsupported",
1781
+ emittedFormats: ["none"],
1782
+ openAIIncludeEncryptedContent: false,
1783
+ openAIStore: null,
1784
+ anthropicThinking: "none",
1785
+ replayCompatibility: []
1786
+ },
1787
+ "us.amazon.nova-lite-v1:0": {
1788
+ support: "unsupported",
1789
+ emittedFormats: ["none"],
1790
+ openAIIncludeEncryptedContent: false,
1791
+ openAIStore: null,
1792
+ anthropicThinking: "none",
1793
+ replayCompatibility: []
1794
+ },
1795
+ "us.amazon.nova-micro-v1:0": {
1796
+ support: "unsupported",
1797
+ emittedFormats: ["none"],
1798
+ openAIIncludeEncryptedContent: false,
1799
+ openAIStore: null,
1800
+ anthropicThinking: "none",
1801
+ replayCompatibility: []
1802
+ },
1803
+ "openai.gpt-oss-120b-1:0": {
1804
+ support: "supported",
1805
+ emittedFormats: ["none"],
1806
+ openAIIncludeEncryptedContent: false,
1807
+ openAIStore: null,
1808
+ anthropicThinking: "none",
1809
+ replayCompatibility: []
1810
+ },
1811
+ "openai.gpt-oss-20b-1:0": {
1812
+ support: "supported",
1813
+ emittedFormats: ["none"],
1814
+ openAIIncludeEncryptedContent: false,
1815
+ openAIStore: null,
1816
+ anthropicThinking: "none",
1817
+ replayCompatibility: []
1818
+ },
1819
+ "mistral-large-4": {
1820
+ support: "supported",
1821
+ emittedFormats: ["none"],
1822
+ openAIIncludeEncryptedContent: false,
1823
+ openAIStore: null,
1824
+ anthropicThinking: "none",
1825
+ replayCompatibility: []
1826
+ },
1827
+ "mistral-large-latest": {
1828
+ support: "unsupported",
1829
+ emittedFormats: ["none"],
1830
+ openAIIncludeEncryptedContent: false,
1831
+ openAIStore: null,
1832
+ anthropicThinking: "none",
1833
+ replayCompatibility: []
1834
+ },
1835
+ "mistral-medium-latest": {
1836
+ support: "supported",
1837
+ emittedFormats: ["none"],
1838
+ openAIIncludeEncryptedContent: false,
1839
+ openAIStore: null,
1840
+ anthropicThinking: "none",
1841
+ replayCompatibility: []
1842
+ },
1843
+ "mistral-small-latest": {
1844
+ support: "supported",
1845
+ emittedFormats: ["none"],
1846
+ openAIIncludeEncryptedContent: false,
1847
+ openAIStore: null,
1848
+ anthropicThinking: "none",
1849
+ replayCompatibility: []
1850
+ },
1851
+ "gemini-2.5-flash": {
1852
+ support: "supported",
1853
+ emittedFormats: ["google-thought-signature"],
1854
+ openAIIncludeEncryptedContent: false,
1855
+ openAIStore: null,
1856
+ anthropicThinking: "none",
1857
+ replayCompatibility: [{
1858
+ provider: "google",
1859
+ model: "gemini-2.5-flash",
1860
+ format: "google-thought-signature"
1861
+ }]
1862
+ },
1863
+ "gemini-2.5-pro": {
1864
+ support: "supported",
1865
+ emittedFormats: ["google-thought-signature"],
1866
+ openAIIncludeEncryptedContent: false,
1867
+ openAIStore: null,
1868
+ anthropicThinking: "none",
1869
+ replayCompatibility: [{
1870
+ provider: "google",
1871
+ model: "gemini-2.5-pro",
1872
+ format: "google-thought-signature"
1873
+ }]
1874
+ },
1875
+ "gpt-4o-mini": {
1876
+ support: "unsupported",
1877
+ emittedFormats: ["none"],
1878
+ openAIIncludeEncryptedContent: false,
1879
+ openAIStore: false,
1880
+ anthropicThinking: "none",
1881
+ replayCompatibility: []
1882
+ },
1883
+ "gpt-4o": {
1884
+ support: "unsupported",
1885
+ emittedFormats: ["none"],
1886
+ openAIIncludeEncryptedContent: false,
1887
+ openAIStore: false,
1888
+ anthropicThinking: "none",
1889
+ replayCompatibility: []
1890
+ },
1891
+ "us.deepseek.r1-v1:0": {
1892
+ support: "supported",
1893
+ emittedFormats: ["none"],
1894
+ openAIIncludeEncryptedContent: false,
1895
+ openAIStore: null,
1896
+ anthropicThinking: "none",
1897
+ replayCompatibility: []
1898
+ }
1899
+ };
1900
+ //#endregion
1126
1901
  //#region src/model-rate.ts
1127
1902
  /**
1128
1903
  * models.dev publishes USD prices per one million tokens. Stella stores the
@@ -1176,6 +1951,21 @@ const RETAINED_MODELS_DEV_RATE_ENTRIES = {
1176
1951
  * map is empty whenever upstream covers every offered ID.
1177
1952
  */
1178
1953
  const MODELS_DEV_RATE_SOURCE_ALIASES = defineRateSourceAliases({});
1954
+ /**
1955
+ * Reviewed corrections where models.dev disagrees with the provider's own
1956
+ * published price, keyed by `<models.dev provider>:<models.dev model ID>`.
1957
+ * Each entry pins the exact upstream value it replaces, so generation fails
1958
+ * once models.dev changes that value (fixed or changed again) and the entry
1959
+ * must be deleted or re-reviewed. Generation also rejects an entry whose
1960
+ * source no rated model uses.
1961
+ */
1962
+ const MODELS_DEV_RATE_CORRECTIONS = { "anthropic:claude-sonnet-5-5": [{
1963
+ field: "cache_read",
1964
+ upstreamUsd: .1,
1965
+ correctedUsd: .2,
1966
+ reason: "2026-10-07: models.dev lists half the provider cache-read price",
1967
+ sourceUrl: "https://platform.claude.com/docs/en/models/sonnet-5-5/overview"
1968
+ }] };
1179
1969
  //#endregion
1180
1970
  //#region src/capabilities-overrides.ts
1181
1971
  const CAPABILITY_OVERRIDES = {};
@@ -1337,56 +2127,159 @@ const GPT_56_MODEL_IDS = {
1337
2127
  };
1338
2128
  const GPT_56_OPENAI_MODEL_IDS = Object.values(GPT_56_MODEL_IDS).map(({ openai }) => openai);
1339
2129
  const GPT_56_OPENROUTER_MODEL_IDS = Object.values(GPT_56_MODEL_IDS).map(({ openrouter }) => openrouter);
1340
- /**
1341
- * Per-role default model IDs for the BYOK-capable cloud providers.
1342
- * Shared between the instance default table (`DEFAULT_MODELS`) and the
1343
- * settings-UI default selection, so a default is defined exactly once.
1344
- */
1345
2130
  const BYOK_DEFAULT_MODELS = {
1346
2131
  google: {
1347
- fast: "gemini-3.8-flash",
1348
- chat: "gemini-3.8-flash",
1349
- reasoning: "gemini-3.8-flash",
1350
- pdf: "gemini-3.8-flash"
2132
+ fast: {
2133
+ kind: "default",
2134
+ modelId: "gemini-3.8-flash",
2135
+ rationaleKey: "organization.aiConfig.defaultRationale.fast"
2136
+ },
2137
+ chat: {
2138
+ kind: "default",
2139
+ modelId: "gemini-3.8-flash",
2140
+ rationaleKey: "organization.aiConfig.defaultRationale.chat"
2141
+ },
2142
+ reasoning: {
2143
+ kind: "default",
2144
+ modelId: "gemini-3.8-flash",
2145
+ rationaleKey: "organization.aiConfig.defaultRationale.reasoning"
2146
+ },
2147
+ pdf: {
2148
+ kind: "default",
2149
+ modelId: "gemini-3.8-flash",
2150
+ rationaleKey: "organization.aiConfig.defaultRationale.pdf"
2151
+ }
1351
2152
  },
1352
2153
  openrouter: {
1353
- fast: GPT_6_MODEL_IDS.luna.openrouter,
1354
- chat: GPT_6_MODEL_IDS.sol.openrouter,
1355
- reasoning: GPT_6_MODEL_IDS.sol.openrouter,
1356
- pdf: GPT_6_MODEL_IDS.sol.openrouter
2154
+ fast: {
2155
+ kind: "default",
2156
+ modelId: GPT_6_MODEL_IDS.luna.openrouter,
2157
+ rationaleKey: "organization.aiConfig.defaultRationale.fast"
2158
+ },
2159
+ chat: {
2160
+ kind: "default",
2161
+ modelId: GPT_6_MODEL_IDS.sol.openrouter,
2162
+ rationaleKey: "organization.aiConfig.defaultRationale.chat"
2163
+ },
2164
+ reasoning: {
2165
+ kind: "default",
2166
+ modelId: GPT_6_MODEL_IDS.sol.openrouter,
2167
+ rationaleKey: "organization.aiConfig.defaultRationale.reasoning"
2168
+ },
2169
+ pdf: {
2170
+ kind: "default",
2171
+ modelId: GPT_6_MODEL_IDS.sol.openrouter,
2172
+ rationaleKey: "organization.aiConfig.defaultRationale.pdf"
2173
+ }
1357
2174
  },
1358
2175
  openai: {
1359
- fast: GPT_6_MODEL_IDS.luna.openai,
1360
- chat: GPT_6_MODEL_IDS.sol.openai,
1361
- reasoning: GPT_6_MODEL_IDS.sol.openai,
1362
- pdf: GPT_6_MODEL_IDS.sol.openai
2176
+ fast: {
2177
+ kind: "default",
2178
+ modelId: GPT_6_MODEL_IDS.luna.openai,
2179
+ rationaleKey: "organization.aiConfig.defaultRationale.fast"
2180
+ },
2181
+ chat: {
2182
+ kind: "default",
2183
+ modelId: GPT_6_MODEL_IDS.sol.openai,
2184
+ rationaleKey: "organization.aiConfig.defaultRationale.chat"
2185
+ },
2186
+ reasoning: {
2187
+ kind: "default",
2188
+ modelId: GPT_6_MODEL_IDS.sol.openai,
2189
+ rationaleKey: "organization.aiConfig.defaultRationale.reasoning"
2190
+ },
2191
+ pdf: {
2192
+ kind: "default",
2193
+ modelId: GPT_6_MODEL_IDS.sol.openai,
2194
+ rationaleKey: "organization.aiConfig.defaultRationale.pdf"
2195
+ }
1363
2196
  },
1364
2197
  anthropic: {
1365
- fast: "claude-opus-5-5",
1366
- chat: "claude-opus-5-5",
1367
- reasoning: "claude-opus-5-5",
1368
- pdf: "claude-opus-5-5"
2198
+ fast: {
2199
+ kind: "default",
2200
+ modelId: "claude-opus-5-5",
2201
+ rationaleKey: "organization.aiConfig.defaultRationale.fast"
2202
+ },
2203
+ chat: {
2204
+ kind: "default",
2205
+ modelId: "claude-opus-5-5",
2206
+ rationaleKey: "organization.aiConfig.defaultRationale.chat"
2207
+ },
2208
+ reasoning: {
2209
+ kind: "default",
2210
+ modelId: "claude-opus-5-5",
2211
+ rationaleKey: "organization.aiConfig.defaultRationale.reasoning"
2212
+ },
2213
+ pdf: {
2214
+ kind: "default",
2215
+ modelId: "claude-opus-5-5",
2216
+ rationaleKey: "organization.aiConfig.defaultRationale.pdf"
2217
+ }
1369
2218
  },
1370
2219
  bedrock: {
1371
- fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1372
- chat: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1373
- reasoning: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1374
- pdf: "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
2220
+ fast: {
2221
+ kind: "default",
2222
+ modelId: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
2223
+ rationaleKey: "organization.aiConfig.defaultRationale.fast"
2224
+ },
2225
+ chat: {
2226
+ kind: "default",
2227
+ modelId: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
2228
+ rationaleKey: "organization.aiConfig.defaultRationale.chat"
2229
+ },
2230
+ reasoning: {
2231
+ kind: "default",
2232
+ modelId: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
2233
+ rationaleKey: "organization.aiConfig.defaultRationale.reasoning"
2234
+ },
2235
+ pdf: {
2236
+ kind: "default",
2237
+ modelId: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
2238
+ rationaleKey: "organization.aiConfig.defaultRationale.pdf"
2239
+ }
1375
2240
  },
1376
2241
  mistral: {
1377
- fast: "mistral-small-latest",
1378
- chat: "mistral-medium-latest",
1379
- reasoning: "mistral-medium-latest",
1380
- pdf: "mistral-large-latest"
2242
+ fast: {
2243
+ kind: "default",
2244
+ modelId: "mistral-small-latest",
2245
+ rationaleKey: "organization.aiConfig.defaultRationale.fast"
2246
+ },
2247
+ chat: {
2248
+ kind: "default",
2249
+ modelId: "mistral-medium-latest",
2250
+ rationaleKey: "organization.aiConfig.defaultRationale.chat"
2251
+ },
2252
+ reasoning: {
2253
+ kind: "default",
2254
+ modelId: "mistral-medium-latest",
2255
+ rationaleKey: "organization.aiConfig.defaultRationale.reasoning"
2256
+ },
2257
+ pdf: { kind: "unsupported" }
1381
2258
  }
1382
2259
  };
2260
+ const defaultModelIds = (defaults) => ({
2261
+ fast: defaults.fast.modelId,
2262
+ chat: defaults.chat.modelId,
2263
+ reasoning: defaults.reasoning.modelId,
2264
+ pdf: defaults.pdf.modelId
2265
+ });
1383
2266
  /**
1384
2267
  * Instance-level default model IDs per provider. Extends the BYOK
1385
2268
  * defaults with the providers that only the instance path uses
1386
2269
  * (custom deployments and OpenAI-compatible endpoints).
1387
2270
  */
1388
2271
  const DEFAULT_MODELS = {
1389
- ...BYOK_DEFAULT_MODELS,
2272
+ google: defaultModelIds(BYOK_DEFAULT_MODELS.google),
2273
+ openrouter: defaultModelIds(BYOK_DEFAULT_MODELS.openrouter),
2274
+ openai: defaultModelIds(BYOK_DEFAULT_MODELS.openai),
2275
+ anthropic: defaultModelIds(BYOK_DEFAULT_MODELS.anthropic),
2276
+ bedrock: defaultModelIds(BYOK_DEFAULT_MODELS.bedrock),
2277
+ mistral: {
2278
+ fast: BYOK_DEFAULT_MODELS.mistral.fast.modelId,
2279
+ chat: BYOK_DEFAULT_MODELS.mistral.chat.modelId,
2280
+ reasoning: BYOK_DEFAULT_MODELS.mistral.reasoning.modelId,
2281
+ pdf: null
2282
+ },
1390
2283
  azure_foundry: {
1391
2284
  fast: GPT_56_MODEL_IDS.luna.openai,
1392
2285
  chat: GPT_56_MODEL_IDS.terra.openai,
@@ -1437,6 +2330,7 @@ const BYOK_MODEL_OPTIONS = {
1437
2330
  "claude-opus-4-7",
1438
2331
  "claude-sonnet-4-6",
1439
2332
  "claude-opus-4-6",
2333
+ "claude-haiku-5-5",
1440
2334
  "claude-haiku-4-5-20251001"
1441
2335
  ],
1442
2336
  openai: [
@@ -1460,6 +2354,7 @@ const BYOK_MODEL_OPTIONS = {
1460
2354
  "google/gemini-3.1-pro-preview",
1461
2355
  "google/gemini-3.5-flash",
1462
2356
  "google/gemini-3.1-flash-lite",
2357
+ "anthropic/claude-haiku-5.5",
1463
2358
  "anthropic/claude-sonnet-5.5",
1464
2359
  "anthropic/claude-sonnet-5",
1465
2360
  "anthropic/claude-opus-5",
@@ -1470,6 +2365,7 @@ const BYOK_MODEL_OPTIONS = {
1470
2365
  ],
1471
2366
  bedrock: [
1472
2367
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
2368
+ "us.anthropic.claude-haiku-5-5",
1473
2369
  "us.anthropic.claude-haiku-4-5-20251001-v1:0",
1474
2370
  "us.amazon.nova-pro-v1:0",
1475
2371
  "us.amazon.nova-lite-v1:0",
@@ -1582,9 +2478,14 @@ const MODEL_DISPLAY_METADATA = {
1582
2478
  iconProvider: "anthropic",
1583
2479
  supersededBy: "claude-opus-5-5"
1584
2480
  },
2481
+ "claude-haiku-5-5": {
2482
+ displayName: "Claude Haiku 5.5",
2483
+ iconProvider: "anthropic"
2484
+ },
1585
2485
  "claude-haiku-4-5-20251001": {
1586
2486
  displayName: "Claude Haiku 4.5",
1587
- iconProvider: "anthropic"
2487
+ iconProvider: "anthropic",
2488
+ supersededBy: "claude-haiku-5-5"
1588
2489
  },
1589
2490
  [GPT_61_MODEL_IDS.sol.openai]: {
1590
2491
  displayName: "GPT-6.1 Sol",
@@ -1702,6 +2603,10 @@ const MODEL_DISPLAY_METADATA = {
1702
2603
  iconProvider: "google",
1703
2604
  supersededBy: "google/gemini-3.5-flash-lite"
1704
2605
  },
2606
+ "anthropic/claude-haiku-5.5": {
2607
+ displayName: "Claude Haiku 5.5",
2608
+ iconProvider: "anthropic"
2609
+ },
1705
2610
  "anthropic/claude-sonnet-5.5": {
1706
2611
  displayName: "Claude Sonnet 5.5",
1707
2612
  iconProvider: "anthropic"
@@ -1739,9 +2644,14 @@ const MODEL_DISPLAY_METADATA = {
1739
2644
  iconProvider: "anthropic",
1740
2645
  supersededBy: "claude-sonnet-5-5"
1741
2646
  },
2647
+ "us.anthropic.claude-haiku-5-5": {
2648
+ displayName: "Claude Haiku 5.5",
2649
+ iconProvider: "anthropic"
2650
+ },
1742
2651
  "us.anthropic.claude-haiku-4-5-20251001-v1:0": {
1743
2652
  displayName: "Claude Haiku 4.5",
1744
- iconProvider: "anthropic"
2653
+ iconProvider: "anthropic",
2654
+ supersededBy: "us.anthropic.claude-haiku-5-5"
1745
2655
  },
1746
2656
  "us.amazon.nova-pro-v1:0": {
1747
2657
  displayName: "Amazon Nova Pro",
@@ -1855,31 +2765,17 @@ const resolveWorkingBYOKModelForRole = ({ provider, modelId, role }) => {
1855
2765
  modelId,
1856
2766
  role
1857
2767
  })) return modelId;
1858
- const fallback = BYOK_DEFAULT_MODELS[provider][role];
2768
+ const entry = BYOK_DEFAULT_MODELS[provider][role];
2769
+ if (entry.kind === "unsupported") return null;
2770
+ const fallback = entry.modelId;
1859
2771
  return isOfferedBYOKModelForRole({
1860
2772
  provider,
1861
2773
  modelId: fallback,
1862
2774
  role
1863
2775
  }) ? fallback : null;
1864
2776
  };
1865
- /**
1866
- * Anthropic models that use the adaptive-thinking request shape
1867
- * (`thinking: { type: "adaptive" }`). Newer Claude models reject the
1868
- * legacy budget-based form, so every Opus 4.6+/Sonnet 4.6/Fable entry
1869
- * offered above must appear here or it will 400 on the reasoning role.
1870
- */
1871
- const ANTHROPIC_ADAPTIVE_THINKING_MODELS = [
1872
- "claude-sonnet-5-5",
1873
- "claude-sonnet-5",
1874
- "claude-opus-5",
1875
- "claude-sonnet-4-6",
1876
- "claude-opus-4-6",
1877
- "claude-opus-4-7",
1878
- "claude-opus-4-8",
1879
- "claude-fable-5",
1880
- "claude-fable-5-1",
1881
- "claude-opus-5-5"
1882
- ];
2777
+ /** Native Anthropic adaptive-thinking models, derived from replay capabilities. */
2778
+ const ANTHROPIC_ADAPTIVE_THINKING_MODELS = BYOK_MODEL_OPTIONS.anthropic.filter((model) => MODEL_REASONING_CAPABILITIES[model].anthropicThinking === "adaptive");
1883
2779
  /**
1884
2780
  * Canonical reasoning-effort ladder, ordered weakest to strongest.
1885
2781
  * Union of every effort keyword the offered providers accept; no
@@ -1922,6 +2818,7 @@ const FALLBACK_CHAT_MODEL_BY_PROVIDER = {
1922
2818
  const MODEL_CATALOG_ID_ALIASES = {
1923
2819
  "gpt-5.6-sol": "gpt-5.6",
1924
2820
  "claude-opus-4.8": "claude-opus-4-8",
2821
+ "claude-haiku-5.5": "claude-haiku-5-5",
1925
2822
  "claude-sonnet-5.5": "claude-sonnet-5-5",
1926
2823
  "claude-sonnet-4.6": "claude-sonnet-4-6"
1927
2824
  };
@@ -1959,6 +2856,9 @@ const getOutputTokenLimit = (modelId) => MODEL_OUTPUT_TOKEN_LIMIT_BY_ID[normaliz
1959
2856
  * Consumers must go through `supportsStreamingToolUse`.
1960
2857
  */
1961
2858
  const MODEL_STREAMING_TOOL_USE = {
2859
+ "anthropic/claude-haiku-5.5": "supported",
2860
+ "us.anthropic.claude-haiku-5-5": "supported",
2861
+ "claude-haiku-5-5": "supported",
1962
2862
  "gemini-3.8-flash": "supported",
1963
2863
  "gemini-3.7-flash": "supported",
1964
2864
  "gemini-3.6-flash": "supported",
@@ -2109,6 +3009,9 @@ const getModelRate = (modelId) => {
2109
3009
  * default rather than failing CI.
2110
3010
  */
2111
3011
  const CONTEXT_WINDOW_TOKENS = {
3012
+ "anthropic/claude-haiku-5.5": 1e6,
3013
+ "us.anthropic.claude-haiku-5-5": 1e6,
3014
+ "claude-haiku-5-5": 1e6,
2112
3015
  "gemini-2.5-flash": 1048576,
2113
3016
  "gemini-2.5-pro": 1048576,
2114
3017
  "gemini-3.1-flash-lite": 1048576,
@@ -2192,5 +3095,21 @@ const DEFAULT_CONTEXT_WINDOW_TOKENS = 128e3;
2192
3095
  * `CONTEXT_WINDOW_TOKENS` directly.
2193
3096
  */
2194
3097
  const getContextWindowTokens = (modelId) => CONTEXT_WINDOW_TOKENS_BY_ID[normalizeModelCatalogId(modelId)] ?? 128e3;
3098
+ const DECISION_MODEL_PROVIDERS = ["typesafe", "openai"];
3099
+ const DECISION_MODEL_CATALOG = {
3100
+ typesafe: {
3101
+ label: "TypeSafe",
3102
+ defaultModelId: "jev-latest"
3103
+ },
3104
+ openai: {
3105
+ label: "OpenAI",
3106
+ defaultModelId: "gpt-6-luna"
3107
+ }
3108
+ };
3109
+ const MODEL_REASONING_CAPABILITIES_BY_ID = MODEL_REASONING_CAPABILITIES;
3110
+ const getModelReasoningCapabilities = (modelId) => {
3111
+ const normalized = normalizeModelCatalogId(modelId);
3112
+ return Object.hasOwn(MODEL_REASONING_CAPABILITIES_BY_ID, normalized) ? MODEL_REASONING_CAPABILITIES_BY_ID[normalized] ?? null : null;
3113
+ };
2195
3114
  //#endregion
2196
- export { isBYOKModelRoleSupported as A, IMAGE_INPUT_OVERRIDES as B, getContextWindowTokens as C, getModelRate as D, getModelImageInputCapability as E, resolveWorkingBYOKModelForRole as F, getStandardModelRate as G, MODELS_DEV_RATE_SOURCE_ALIASES as H, shouldEmitTemperature as I, MODEL_DEFAULT_REASONING_EFFORTS as J, resolveModelRate as K, supportsStreamingToolUse as L, isChatPdfAttachmentModelSupported as M, normalizeModelCatalogId as N, getModelReasoningEfforts as O, resolveReasoningEffort as P, MODEL_TEMPERATURE_POLICIES as Q, DOCUMENT_INPUT_OVERRIDES as R, TEMPERATURE_POLICIES as S, getModelDisplayMetadata as T, RETAINED_MODELS_DEV_RATE_ENTRIES as U, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER as V, MODEL_RATE_UNITS_PER_USD as W, MODEL_OUTPUT_TOKEN_LIMITS as X, MODEL_IMAGE_INPUT_CAPABILITIES as Y, MODEL_REASONING_EFFORTS as Z, MODEL_STREAMING_TOOL_USE as _, BYOK_MODEL_OPTIONS as a, STREAMING_TOOL_USE_SUPPORTS as b, DEFAULT_CONTEXT_WINDOW_TOKENS as c, FIRST_PARTY_MODEL_PROVIDERS as d, IMAGE_INPUT_CAPABILITIES as f, MODEL_ROLES as g, MODEL_DISPLAY_METADATA as h, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS as i, isBYOKProviderRoleSupported as j, getOutputTokenLimit as k, DEFAULT_MODELS as l, MODEL_CATALOG_PROVIDER_KIND as m, ANTHROPIC_ADAPTIVE_THINKING_MODELS as n, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS as o, MODEL_CATALOG_ID_ALIASES as p, MODEL_RATES as q, BYOK_DEFAULT_MODELS as r, CONTEXT_WINDOW_TOKENS as s, AI_PROVIDERS as t, FALLBACK_CHAT_MODEL_BY_PROVIDER as u, REASONING_EFFORTS as v, getModelDefaultReasoningEffort as w, TANSTACK_AI_PROVIDERS as x, RECOMMENDED_CHAT_MODELS as y, CAPABILITY_OVERRIDES as z };
3115
+ export { MODEL_RATES as $, getModelReasoningCapabilities as A, supportsStreamingToolUse as B, TANSTACK_AI_PROVIDERS as C, getModelDisplayMetadata as D, getModelDefaultReasoningEffort as E, isChatPdfAttachmentModelSupported as F, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER as G, CAPABILITY_OVERRIDES as H, normalizeModelCatalogId as I, MODEL_RATE_UNITS_PER_USD as J, MODELS_DEV_RATE_SOURCE_ALIASES as K, resolveReasoningEffort as L, getOutputTokenLimit as M, isBYOKModelRoleSupported as N, getModelImageInputCapability as O, isBYOKProviderRoleSupported as P, REASONING_REPLAY_FORMATS as Q, resolveWorkingBYOKModelForRole as R, STREAMING_TOOL_USE_SUPPORTS as S, getContextWindowTokens as T, IMAGE_INPUT_OVERRIDES as U, DOCUMENT_INPUT_OVERRIDES as V, MODELS_DEV_RATE_CORRECTIONS as W, resolveModelRate as X, getStandardModelRate as Y, MODEL_REASONING_CAPABILITIES as Z, MODEL_DISPLAY_METADATA as _, BYOK_MODEL_OPTIONS as a, REASONING_EFFORTS as b, DECISION_MODEL_CATALOG as c, DEFAULT_MODELS as d, MODEL_DEFAULT_REASONING_EFFORTS as et, FALLBACK_CHAT_MODEL_BY_PROVIDER as f, MODEL_CATALOG_PROVIDER_KIND as g, MODEL_CATALOG_ID_ALIASES as h, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS as i, MODEL_TEMPERATURE_POLICIES as it, getModelReasoningEfforts as j, getModelRate as k, DECISION_MODEL_PROVIDERS as l, IMAGE_INPUT_CAPABILITIES as m, ANTHROPIC_ADAPTIVE_THINKING_MODELS as n, MODEL_OUTPUT_TOKEN_LIMITS as nt, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS as o, FIRST_PARTY_MODEL_PROVIDERS as p, RETAINED_MODELS_DEV_RATE_ENTRIES as q, BYOK_DEFAULT_MODELS as r, MODEL_REASONING_EFFORTS as rt, CONTEXT_WINDOW_TOKENS as s, AI_PROVIDERS as t, MODEL_IMAGE_INPUT_CAPABILITIES as tt, DEFAULT_CONTEXT_WINDOW_TOKENS as u, MODEL_ROLES as v, TEMPERATURE_POLICIES as w, RECOMMENDED_CHAT_MODELS as x, MODEL_STREAMING_TOOL_USE as y, shouldEmitTemperature as z };