@stll/ai-catalog 0.2.2 → 0.3.1

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/index.d.ts CHANGED
@@ -234,6 +234,13 @@ export declare const MODEL_RATES: {
234
234
  readonly outputPerMTok: 1400000;
235
235
  readonly cachedInputPerMTok: 17500;
236
236
  };
237
+ readonly "claude-sonnet-5-5": {
238
+ readonly kind: "flat";
239
+ readonly inputPerMTok: 200000;
240
+ readonly outputPerMTok: 1000000;
241
+ readonly cachedInputPerMTok: 20000;
242
+ readonly cachedWriteInputPerMTok: 250000;
243
+ };
237
244
  readonly "claude-sonnet-5": {
238
245
  readonly kind: "flat";
239
246
  readonly inputPerMTok: 200000;
@@ -353,16 +360,19 @@ export declare const MODEL_RATES: {
353
360
  readonly kind: "flat";
354
361
  readonly inputPerMTok: 50000;
355
362
  readonly outputPerMTok: 150000;
363
+ readonly cachedInputPerMTok: 5000;
356
364
  };
357
365
  readonly "mistral-medium-latest": {
358
366
  readonly kind: "flat";
359
367
  readonly inputPerMTok: 150000;
360
368
  readonly outputPerMTok: 750000;
369
+ readonly cachedInputPerMTok: 15000;
361
370
  };
362
371
  readonly "mistral-small-latest": {
363
372
  readonly kind: "flat";
364
373
  readonly inputPerMTok: 15000;
365
374
  readonly outputPerMTok: 60000;
375
+ readonly cachedInputPerMTok: 1500;
366
376
  };
367
377
  readonly "gemini-2.5-flash": {
368
378
  readonly kind: "flat";
@@ -460,6 +470,8 @@ type CapabilityOverride = {
460
470
  documentInput: boolean;
461
471
  documentInputReason: string;
462
472
  reasoningEfforts: readonly ReasoningEffort[] | null;
473
+ /** The most output tokens one response may carry, from the provider docs. */
474
+ outputTokens: number;
463
475
  temperatureSupported: boolean;
464
476
  /**
465
477
  * Every role sends tool definitions or structured output, so an
@@ -513,6 +525,7 @@ export declare const MODEL_REASONING_EFFORTS: {
513
525
  readonly "google/gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
514
526
  readonly "google/gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
515
527
  readonly "google/gemini-3.1-flash-lite": readonly ["none", "minimal", "low", "medium", "high"];
528
+ readonly "anthropic/claude-sonnet-5.5": readonly ["low", "medium", "high", "xhigh", "max"];
516
529
  readonly "anthropic/claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
517
530
  readonly "anthropic/claude-opus-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
518
531
  readonly "anthropic/claude-opus-4.8": readonly ["none", "low", "medium", "high", "xhigh", "max"];
@@ -530,6 +543,7 @@ export declare const MODEL_REASONING_EFFORTS: {
530
543
  readonly "gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
531
544
  readonly "gpt-5.4-nano": readonly ["none", "low", "medium", "high", "xhigh"];
532
545
  readonly "gpt-5.2": readonly ["none", "low", "medium", "high", "xhigh"];
546
+ readonly "claude-sonnet-5-5": readonly ["low", "medium", "high", "xhigh", "max"];
533
547
  readonly "claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
534
548
  readonly "claude-fable-5-1": readonly ["low", "medium", "high", "xhigh", "max"];
535
549
  readonly "claude-fable-5": readonly ["low", "medium", "high", "xhigh", "max"];
@@ -577,6 +591,7 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
577
591
  readonly "google/gemini-3.1-pro-preview": "medium";
578
592
  readonly "google/gemini-3.5-flash": "medium";
579
593
  readonly "google/gemini-3.1-flash-lite": "minimal";
594
+ readonly "anthropic/claude-sonnet-5.5": "high";
580
595
  readonly "anthropic/claude-sonnet-5": "high";
581
596
  readonly "anthropic/claude-opus-5": "high";
582
597
  readonly "anthropic/claude-opus-4.8": "high";
@@ -594,6 +609,7 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
594
609
  readonly "gpt-5.4-mini": null;
595
610
  readonly "gpt-5.4-nano": null;
596
611
  readonly "gpt-5.2": null;
612
+ readonly "claude-sonnet-5-5": null;
597
613
  readonly "claude-sonnet-5": null;
598
614
  readonly "claude-fable-5-1": null;
599
615
  readonly "claude-fable-5": null;
@@ -641,6 +657,7 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
641
657
  readonly "google/gemini-3.1-pro-preview": "emit";
642
658
  readonly "google/gemini-3.5-flash": "emit";
643
659
  readonly "google/gemini-3.1-flash-lite": "emit";
660
+ readonly "anthropic/claude-sonnet-5.5": "emit";
644
661
  readonly "anthropic/claude-sonnet-5": "omit";
645
662
  readonly "anthropic/claude-opus-5": "emit";
646
663
  readonly "anthropic/claude-opus-4.8": "emit";
@@ -658,6 +675,7 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
658
675
  readonly "gpt-5.4-mini": "emit";
659
676
  readonly "gpt-5.4-nano": "emit";
660
677
  readonly "gpt-5.2": "emit";
678
+ readonly "claude-sonnet-5-5": "omit";
661
679
  readonly "claude-sonnet-5": "omit";
662
680
  readonly "claude-fable-5-1": "omit";
663
681
  readonly "claude-fable-5": "omit";
@@ -679,6 +697,72 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
679
697
  readonly "mistral-medium-latest": "emit";
680
698
  readonly "mistral-small-latest": "emit";
681
699
  };
700
+ /**
701
+ * The most output tokens one response of each offered model may carry
702
+ * (models.dev `limit.output`). Consumers must go through
703
+ * `getOutputTokenLimit`.
704
+ */
705
+ export declare const MODEL_OUTPUT_TOKEN_LIMITS: {
706
+ readonly "gemini-3.8-flash": 65536;
707
+ readonly "gemini-3.7-flash": 65536;
708
+ readonly "gemini-3.6-flash": 65536;
709
+ readonly "gemini-3.5-flash-lite": 65536;
710
+ readonly "gemini-3.1-pro-preview": 65536;
711
+ readonly "gemini-3.5-flash": 65536;
712
+ readonly "gemini-3.1-flash-lite": 65536;
713
+ readonly "openai/gpt-6-astra": 128000;
714
+ readonly "openai/gpt-6-sol": 128000;
715
+ readonly "openai/gpt-6-luna": 128000;
716
+ readonly "openai/gpt-5.6-sol": 128000;
717
+ readonly "openai/gpt-5.6-terra": 128000;
718
+ readonly "openai/gpt-5.6-luna": 128000;
719
+ readonly "google/gemini-3.8-flash": 65536;
720
+ readonly "google/gemini-3.7-flash": 65536;
721
+ readonly "google/gemini-3.6-flash": 65536;
722
+ readonly "google/gemini-3.5-flash-lite": 65536;
723
+ readonly "google/gemini-3.1-pro-preview": 65536;
724
+ readonly "google/gemini-3.5-flash": 65536;
725
+ readonly "google/gemini-3.1-flash-lite": 65536;
726
+ readonly "anthropic/claude-sonnet-5.5": 128000;
727
+ readonly "anthropic/claude-sonnet-5": 128000;
728
+ readonly "anthropic/claude-opus-5": 128000;
729
+ readonly "anthropic/claude-opus-4.8": 128000;
730
+ readonly "anthropic/claude-sonnet-4.6": 128000;
731
+ readonly "openai/gpt-5.5": 128000;
732
+ readonly "openai/gpt-5.4-mini": 128000;
733
+ readonly "gpt-6-astra": 128000;
734
+ readonly "gpt-6-sol": 128000;
735
+ readonly "gpt-6-luna": 128000;
736
+ readonly "gpt-5.6": 128000;
737
+ readonly "gpt-5.6-terra": 128000;
738
+ readonly "gpt-5.6-luna": 128000;
739
+ readonly "gpt-5.5": 128000;
740
+ readonly "gpt-5.4": 128000;
741
+ readonly "gpt-5.4-mini": 128000;
742
+ readonly "gpt-5.4-nano": 128000;
743
+ readonly "gpt-5.2": 128000;
744
+ readonly "claude-sonnet-5-5": 128000;
745
+ readonly "claude-sonnet-5": 128000;
746
+ readonly "claude-fable-5-1": 128000;
747
+ readonly "claude-fable-5": 128000;
748
+ readonly "claude-opus-5-5": 128000;
749
+ readonly "claude-opus-5": 128000;
750
+ readonly "claude-opus-4-8": 128000;
751
+ readonly "claude-opus-4-7": 128000;
752
+ readonly "claude-sonnet-4-6": 128000;
753
+ readonly "claude-opus-4-6": 128000;
754
+ readonly "claude-haiku-4-5-20251001": 64000;
755
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 64000;
756
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": 64000;
757
+ readonly "us.amazon.nova-pro-v1:0": 10000;
758
+ readonly "us.amazon.nova-lite-v1:0": 10000;
759
+ readonly "us.amazon.nova-micro-v1:0": 10000;
760
+ readonly "openai.gpt-oss-120b-1:0": 128000;
761
+ readonly "openai.gpt-oss-20b-1:0": 128000;
762
+ readonly "mistral-large-latest": 262144;
763
+ readonly "mistral-medium-latest": 262144;
764
+ readonly "mistral-small-latest": 256000;
765
+ };
682
766
  //#endregion
683
767
  //#region src/index.d.ts
684
768
  /**
@@ -844,9 +928,9 @@ export declare const DEFAULT_MODELS: {
844
928
  */
845
929
  export declare const BYOK_MODEL_OPTIONS: {
846
930
  readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
847
- readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
931
+ readonly anthropic: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
848
932
  readonly openai: readonly [...("gpt-6-astra" | "gpt-6-sol" | "gpt-6-luna" | "gpt-5.6" | "gpt-5.6-terra" | "gpt-5.6-luna")[], "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
849
- readonly openrouter: readonly [...("openai/gpt-6-astra" | "openai/gpt-6-sol" | "openai/gpt-6-luna" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna")[], "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
933
+ readonly openrouter: readonly [...("openai/gpt-6-astra" | "openai/gpt-6-sol" | "openai/gpt-6-luna" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna")[], "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5.5", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
850
934
  readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0", "us.amazon.nova-micro-v1:0", "openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b-1:0"];
851
935
  readonly mistral: readonly ["mistral-large-latest", "mistral-medium-latest", "mistral-small-latest"];
852
936
  };
@@ -894,6 +978,10 @@ export declare const MODEL_DISPLAY_METADATA: {
894
978
  readonly displayName: "Gemini 3.1 Flash Lite";
895
979
  readonly iconProvider: "google";
896
980
  };
981
+ readonly "claude-sonnet-5-5": {
982
+ readonly displayName: "Claude Sonnet 5.5";
983
+ readonly iconProvider: "anthropic";
984
+ };
897
985
  readonly "claude-sonnet-5": {
898
986
  readonly displayName: "Claude Sonnet 5";
899
987
  readonly iconProvider: "anthropic";
@@ -1030,6 +1118,10 @@ export declare const MODEL_DISPLAY_METADATA: {
1030
1118
  readonly displayName: "Gemini 3.1 Flash Lite";
1031
1119
  readonly iconProvider: "google";
1032
1120
  };
1121
+ readonly "anthropic/claude-sonnet-5.5": {
1122
+ readonly displayName: "Claude Sonnet 5.5";
1123
+ readonly iconProvider: "anthropic";
1124
+ };
1033
1125
  readonly "anthropic/claude-sonnet-5": {
1034
1126
  readonly displayName: "Claude Sonnet 5";
1035
1127
  readonly iconProvider: "anthropic";
@@ -1103,9 +1195,9 @@ export declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayM
1103
1195
  */
1104
1196
  export declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1105
1197
  readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1106
- readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-6-sol", "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1198
+ readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-6-sol", "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5.5", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1107
1199
  readonly openai: readonly ["gpt-6-astra", "gpt-6-sol", "gpt-6-luna", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1108
- readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1200
+ readonly anthropic: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1109
1201
  readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0"];
1110
1202
  readonly mistral: readonly [];
1111
1203
  };
@@ -1134,9 +1226,9 @@ export declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1134
1226
  export declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
1135
1227
  readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest"];
1136
1228
  readonly google: readonly ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3.1-pro-preview", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
1137
- readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-6-sol", "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1229
+ readonly openrouter: readonly ["openai/gpt-6-astra", "openai/gpt-6-sol", "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "google/gemini-3.8-flash", "google/gemini-3.7-flash", "google/gemini-3.6-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-3.1-flash-lite", "anthropic/claude-sonnet-5.5", "anthropic/claude-sonnet-5", "anthropic/claude-opus-5", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4.6", "openai/gpt-5.5", "openai/gpt-5.4-mini"];
1138
1230
  readonly openai: readonly ["gpt-6-astra", "gpt-6-sol", "gpt-6-luna", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1139
- readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1231
+ readonly anthropic: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-fable-5-1", "claude-fable-5", "claude-opus-5-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
1140
1232
  readonly bedrock: readonly ["us.anthropic.claude-sonnet-4-5-20250929-v1:0", "us.anthropic.claude-haiku-4-5-20251001-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0"];
1141
1233
  };
1142
1234
  export declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
@@ -1168,7 +1260,7 @@ export declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role
1168
1260
  * legacy budget-based form, so every Opus 4.6+/Sonnet 4.6/Fable entry
1169
1261
  * offered above must appear here or it will 400 on the reasoning role.
1170
1262
  */
1171
- export declare const ANTHROPIC_ADAPTIVE_THINKING_MODELS: readonly ["claude-sonnet-5", "claude-opus-5", "claude-sonnet-4-6", "claude-opus-4-6", "claude-opus-4-7", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5"];
1263
+ export declare const ANTHROPIC_ADAPTIVE_THINKING_MODELS: readonly ["claude-sonnet-5-5", "claude-sonnet-5", "claude-opus-5", "claude-sonnet-4-6", "claude-opus-4-6", "claude-opus-4-7", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5"];
1172
1264
  /**
1173
1265
  * Canonical reasoning-effort ladder, ordered weakest to strongest.
1174
1266
  * Union of every effort keyword the offered providers accept; no
@@ -1212,6 +1304,7 @@ export declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
1212
1304
  export declare const MODEL_CATALOG_ID_ALIASES: {
1213
1305
  readonly "gpt-5.6-sol": "gpt-5.6";
1214
1306
  readonly "claude-opus-4.8": "claude-opus-4-8";
1307
+ readonly "claude-sonnet-5.5": "claude-sonnet-5-5";
1215
1308
  readonly "claude-sonnet-4.6": "claude-sonnet-4-6";
1216
1309
  };
1217
1310
  export declare const normalizeModelCatalogId: (modelId: string) => string;
@@ -1224,6 +1317,14 @@ export declare const normalizeModelCatalogId: (modelId: string) => string;
1224
1317
  * a runtime string.
1225
1318
  */
1226
1319
  export declare const shouldEmitTemperature: (modelId: string) => boolean;
1320
+ /**
1321
+ * The most output tokens one response of `modelId` may carry, from the
1322
+ * catalog. `undefined` for an id the catalog does not list (a deployment
1323
+ * override, a dev model): the catalog knows nothing about it, so callers leave
1324
+ * the allowance to the provider rather than guess one. Callers must never
1325
+ * index `MODEL_OUTPUT_TOKEN_LIMITS` directly with a runtime string.
1326
+ */
1327
+ export declare const getOutputTokenLimit: (modelId: string) => number | undefined;
1227
1328
  /**
1228
1329
  * Whether a model accepts tool use on a streaming request.
1229
1330
  *
@@ -1257,6 +1358,7 @@ export declare const MODEL_STREAMING_TOOL_USE: {
1257
1358
  readonly "google/gemini-3.1-pro-preview": "supported";
1258
1359
  readonly "google/gemini-3.5-flash": "supported";
1259
1360
  readonly "google/gemini-3.1-flash-lite": "supported";
1361
+ readonly "anthropic/claude-sonnet-5.5": "supported";
1260
1362
  readonly "anthropic/claude-sonnet-5": "supported";
1261
1363
  readonly "anthropic/claude-opus-5": "supported";
1262
1364
  readonly "anthropic/claude-opus-4.8": "supported";
@@ -1274,6 +1376,7 @@ export declare const MODEL_STREAMING_TOOL_USE: {
1274
1376
  readonly "gpt-5.4-mini": "supported";
1275
1377
  readonly "gpt-5.4-nano": "supported";
1276
1378
  readonly "gpt-5.2": "supported";
1379
+ readonly "claude-sonnet-5-5": "supported";
1277
1380
  readonly "claude-sonnet-5": "supported";
1278
1381
  readonly "claude-fable-5-1": "supported";
1279
1382
  readonly "claude-fable-5": "supported";
@@ -1376,6 +1479,7 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1376
1479
  readonly "claude-haiku-4-5-20251001": 200000;
1377
1480
  readonly "claude-sonnet-4-6": 200000;
1378
1481
  readonly "claude-sonnet-5": 1000000;
1482
+ readonly "claude-sonnet-5-5": 1000000;
1379
1483
  readonly "claude-opus-4-6": 200000;
1380
1484
  readonly "claude-opus-4-7": 200000;
1381
1485
  readonly "claude-opus-4-8": 200000;
@@ -1395,6 +1499,7 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1395
1499
  readonly "google/gemini-3.1-pro-preview": 1048576;
1396
1500
  readonly "google/gemini-3.5-flash": 1048576;
1397
1501
  readonly "google/gemini-3.1-flash-lite": 1048576;
1502
+ readonly "anthropic/claude-sonnet-5.5": 1000000;
1398
1503
  readonly "anthropic/claude-sonnet-5": 1000000;
1399
1504
  readonly "anthropic/claude-opus-5": 1000000;
1400
1505
  readonly "anthropic/claude-opus-4.8": 200000;
package/dist/index.js CHANGED
@@ -28,6 +28,7 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
28
28
  "google/gemini-3.1-pro-preview",
29
29
  "google/gemini-3.5-flash",
30
30
  "google/gemini-3.1-flash-lite",
31
+ "anthropic/claude-sonnet-5.5",
31
32
  "anthropic/claude-sonnet-5",
32
33
  "anthropic/claude-opus-5",
33
34
  "anthropic/claude-opus-4.8",
@@ -49,6 +50,7 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
49
50
  "gpt-5.2"
50
51
  ],
51
52
  anthropic: [
53
+ "claude-sonnet-5-5",
52
54
  "claude-sonnet-5",
53
55
  "claude-fable-5-1",
54
56
  "claude-fable-5",
@@ -201,6 +203,13 @@ const MODEL_REASONING_EFFORTS = {
201
203
  "medium",
202
204
  "high"
203
205
  ],
206
+ "anthropic/claude-sonnet-5.5": [
207
+ "low",
208
+ "medium",
209
+ "high",
210
+ "xhigh",
211
+ "max"
212
+ ],
204
213
  "anthropic/claude-sonnet-5": [
205
214
  "none",
206
215
  "low",
@@ -328,6 +337,13 @@ const MODEL_REASONING_EFFORTS = {
328
337
  "high",
329
338
  "xhigh"
330
339
  ],
340
+ "claude-sonnet-5-5": [
341
+ "low",
342
+ "medium",
343
+ "high",
344
+ "xhigh",
345
+ "max"
346
+ ],
331
347
  "claude-sonnet-5": [
332
348
  "none",
333
349
  "low",
@@ -436,6 +452,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
436
452
  "google/gemini-3.1-pro-preview": "medium",
437
453
  "google/gemini-3.5-flash": "medium",
438
454
  "google/gemini-3.1-flash-lite": "minimal",
455
+ "anthropic/claude-sonnet-5.5": "high",
439
456
  "anthropic/claude-sonnet-5": "high",
440
457
  "anthropic/claude-opus-5": "high",
441
458
  "anthropic/claude-opus-4.8": "high",
@@ -453,6 +470,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
453
470
  "gpt-5.4-mini": null,
454
471
  "gpt-5.4-nano": null,
455
472
  "gpt-5.2": null,
473
+ "claude-sonnet-5-5": null,
456
474
  "claude-sonnet-5": null,
457
475
  "claude-fable-5-1": null,
458
476
  "claude-fable-5": null,
@@ -500,6 +518,7 @@ const MODEL_TEMPERATURE_POLICIES = {
500
518
  "google/gemini-3.1-pro-preview": "emit",
501
519
  "google/gemini-3.5-flash": "emit",
502
520
  "google/gemini-3.1-flash-lite": "emit",
521
+ "anthropic/claude-sonnet-5.5": "emit",
503
522
  "anthropic/claude-sonnet-5": "omit",
504
523
  "anthropic/claude-opus-5": "emit",
505
524
  "anthropic/claude-opus-4.8": "emit",
@@ -517,6 +536,7 @@ const MODEL_TEMPERATURE_POLICIES = {
517
536
  "gpt-5.4-mini": "emit",
518
537
  "gpt-5.4-nano": "emit",
519
538
  "gpt-5.2": "emit",
539
+ "claude-sonnet-5-5": "omit",
520
540
  "claude-sonnet-5": "omit",
521
541
  "claude-fable-5-1": "omit",
522
542
  "claude-fable-5": "omit",
@@ -538,6 +558,72 @@ const MODEL_TEMPERATURE_POLICIES = {
538
558
  "mistral-medium-latest": "emit",
539
559
  "mistral-small-latest": "emit"
540
560
  };
561
+ /**
562
+ * The most output tokens one response of each offered model may carry
563
+ * (models.dev `limit.output`). Consumers must go through
564
+ * `getOutputTokenLimit`.
565
+ */
566
+ const MODEL_OUTPUT_TOKEN_LIMITS = {
567
+ "gemini-3.8-flash": 65536,
568
+ "gemini-3.7-flash": 65536,
569
+ "gemini-3.6-flash": 65536,
570
+ "gemini-3.5-flash-lite": 65536,
571
+ "gemini-3.1-pro-preview": 65536,
572
+ "gemini-3.5-flash": 65536,
573
+ "gemini-3.1-flash-lite": 65536,
574
+ "openai/gpt-6-astra": 128e3,
575
+ "openai/gpt-6-sol": 128e3,
576
+ "openai/gpt-6-luna": 128e3,
577
+ "openai/gpt-5.6-sol": 128e3,
578
+ "openai/gpt-5.6-terra": 128e3,
579
+ "openai/gpt-5.6-luna": 128e3,
580
+ "google/gemini-3.8-flash": 65536,
581
+ "google/gemini-3.7-flash": 65536,
582
+ "google/gemini-3.6-flash": 65536,
583
+ "google/gemini-3.5-flash-lite": 65536,
584
+ "google/gemini-3.1-pro-preview": 65536,
585
+ "google/gemini-3.5-flash": 65536,
586
+ "google/gemini-3.1-flash-lite": 65536,
587
+ "anthropic/claude-sonnet-5.5": 128e3,
588
+ "anthropic/claude-sonnet-5": 128e3,
589
+ "anthropic/claude-opus-5": 128e3,
590
+ "anthropic/claude-opus-4.8": 128e3,
591
+ "anthropic/claude-sonnet-4.6": 128e3,
592
+ "openai/gpt-5.5": 128e3,
593
+ "openai/gpt-5.4-mini": 128e3,
594
+ "gpt-6-astra": 128e3,
595
+ "gpt-6-sol": 128e3,
596
+ "gpt-6-luna": 128e3,
597
+ "gpt-5.6": 128e3,
598
+ "gpt-5.6-terra": 128e3,
599
+ "gpt-5.6-luna": 128e3,
600
+ "gpt-5.5": 128e3,
601
+ "gpt-5.4": 128e3,
602
+ "gpt-5.4-mini": 128e3,
603
+ "gpt-5.4-nano": 128e3,
604
+ "gpt-5.2": 128e3,
605
+ "claude-sonnet-5-5": 128e3,
606
+ "claude-sonnet-5": 128e3,
607
+ "claude-fable-5-1": 128e3,
608
+ "claude-fable-5": 128e3,
609
+ "claude-opus-5-5": 128e3,
610
+ "claude-opus-5": 128e3,
611
+ "claude-opus-4-8": 128e3,
612
+ "claude-opus-4-7": 128e3,
613
+ "claude-sonnet-4-6": 128e3,
614
+ "claude-opus-4-6": 128e3,
615
+ "claude-haiku-4-5-20251001": 64e3,
616
+ "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 64e3,
617
+ "us.anthropic.claude-haiku-4-5-20251001-v1:0": 64e3,
618
+ "us.amazon.nova-pro-v1:0": 1e4,
619
+ "us.amazon.nova-lite-v1:0": 1e4,
620
+ "us.amazon.nova-micro-v1:0": 1e4,
621
+ "openai.gpt-oss-120b-1:0": 128e3,
622
+ "openai.gpt-oss-20b-1:0": 128e3,
623
+ "mistral-large-latest": 262144,
624
+ "mistral-medium-latest": 262144,
625
+ "mistral-small-latest": 256e3
626
+ };
541
627
  //#endregion
542
628
  //#region src/model-rates.gen.ts
543
629
  const MODEL_RATES = {
@@ -733,6 +819,13 @@ const MODEL_RATES = {
733
819
  outputPerMTok: 14e5,
734
820
  cachedInputPerMTok: 17500
735
821
  },
822
+ "claude-sonnet-5-5": {
823
+ kind: "flat",
824
+ inputPerMTok: 2e5,
825
+ outputPerMTok: 1e6,
826
+ cachedInputPerMTok: 2e4,
827
+ cachedWriteInputPerMTok: 25e4
828
+ },
736
829
  "claude-sonnet-5": {
737
830
  kind: "flat",
738
831
  inputPerMTok: 2e5,
@@ -851,17 +944,20 @@ const MODEL_RATES = {
851
944
  "mistral-large-latest": {
852
945
  kind: "flat",
853
946
  inputPerMTok: 5e4,
854
- outputPerMTok: 15e4
947
+ outputPerMTok: 15e4,
948
+ cachedInputPerMTok: 5e3
855
949
  },
856
950
  "mistral-medium-latest": {
857
951
  kind: "flat",
858
952
  inputPerMTok: 15e4,
859
- outputPerMTok: 75e4
953
+ outputPerMTok: 75e4,
954
+ cachedInputPerMTok: 15e3
860
955
  },
861
956
  "mistral-small-latest": {
862
957
  kind: "flat",
863
958
  inputPerMTok: 15e3,
864
- outputPerMTok: 6e4
959
+ outputPerMTok: 6e4,
960
+ cachedInputPerMTok: 1500
865
961
  },
866
962
  "gemini-2.5-flash": {
867
963
  kind: "flat",
@@ -1189,6 +1285,7 @@ const BYOK_MODEL_OPTIONS = {
1189
1285
  "gemini-3.1-flash-lite"
1190
1286
  ],
1191
1287
  anthropic: [
1288
+ "claude-sonnet-5-5",
1192
1289
  "claude-sonnet-5",
1193
1290
  "claude-fable-5-1",
1194
1291
  "claude-fable-5",
@@ -1219,6 +1316,7 @@ const BYOK_MODEL_OPTIONS = {
1219
1316
  "google/gemini-3.1-pro-preview",
1220
1317
  "google/gemini-3.5-flash",
1221
1318
  "google/gemini-3.1-flash-lite",
1319
+ "anthropic/claude-sonnet-5.5",
1222
1320
  "anthropic/claude-sonnet-5",
1223
1321
  "anthropic/claude-opus-5",
1224
1322
  "anthropic/claude-opus-4.8",
@@ -1276,6 +1374,10 @@ const MODEL_DISPLAY_METADATA = {
1276
1374
  displayName: "Gemini 3.1 Flash Lite",
1277
1375
  iconProvider: "google"
1278
1376
  },
1377
+ "claude-sonnet-5-5": {
1378
+ displayName: "Claude Sonnet 5.5",
1379
+ iconProvider: "anthropic"
1380
+ },
1279
1381
  "claude-sonnet-5": {
1280
1382
  displayName: "Claude Sonnet 5",
1281
1383
  iconProvider: "anthropic"
@@ -1412,6 +1514,10 @@ const MODEL_DISPLAY_METADATA = {
1412
1514
  displayName: "Gemini 3.1 Flash Lite",
1413
1515
  iconProvider: "google"
1414
1516
  },
1517
+ "anthropic/claude-sonnet-5.5": {
1518
+ displayName: "Claude Sonnet 5.5",
1519
+ iconProvider: "anthropic"
1520
+ },
1415
1521
  "anthropic/claude-sonnet-5": {
1416
1522
  displayName: "Claude Sonnet 5",
1417
1523
  iconProvider: "anthropic"
@@ -1559,6 +1665,7 @@ const resolveWorkingBYOKModelForRole = ({ provider, modelId, role }) => {
1559
1665
  * offered above must appear here or it will 400 on the reasoning role.
1560
1666
  */
1561
1667
  const ANTHROPIC_ADAPTIVE_THINKING_MODELS = [
1668
+ "claude-sonnet-5-5",
1562
1669
  "claude-sonnet-5",
1563
1670
  "claude-opus-5",
1564
1671
  "claude-sonnet-4-6",
@@ -1611,6 +1718,7 @@ const FALLBACK_CHAT_MODEL_BY_PROVIDER = {
1611
1718
  const MODEL_CATALOG_ID_ALIASES = {
1612
1719
  "gpt-5.6-sol": "gpt-5.6",
1613
1720
  "claude-opus-4.8": "claude-opus-4-8",
1721
+ "claude-sonnet-5.5": "claude-sonnet-5-5",
1614
1722
  "claude-sonnet-4.6": "claude-sonnet-4-6"
1615
1723
  };
1616
1724
  const MODEL_CATALOG_ID_ALIAS_TARGET_BY_ID = MODEL_CATALOG_ID_ALIASES;
@@ -1625,6 +1733,15 @@ const MODEL_TEMPERATURE_POLICY_BY_ID = MODEL_TEMPERATURE_POLICIES;
1625
1733
  * a runtime string.
1626
1734
  */
1627
1735
  const shouldEmitTemperature = (modelId) => MODEL_TEMPERATURE_POLICY_BY_ID[normalizeModelCatalogId(modelId)] === "emit";
1736
+ const MODEL_OUTPUT_TOKEN_LIMIT_BY_ID = MODEL_OUTPUT_TOKEN_LIMITS;
1737
+ /**
1738
+ * The most output tokens one response of `modelId` may carry, from the
1739
+ * catalog. `undefined` for an id the catalog does not list (a deployment
1740
+ * override, a dev model): the catalog knows nothing about it, so callers leave
1741
+ * the allowance to the provider rather than guess one. Callers must never
1742
+ * index `MODEL_OUTPUT_TOKEN_LIMITS` directly with a runtime string.
1743
+ */
1744
+ const getOutputTokenLimit = (modelId) => MODEL_OUTPUT_TOKEN_LIMIT_BY_ID[normalizeModelCatalogId(modelId)];
1628
1745
  /**
1629
1746
  * Whether a model accepts tool use on a streaming request.
1630
1747
  *
@@ -1658,6 +1775,7 @@ const MODEL_STREAMING_TOOL_USE = {
1658
1775
  "google/gemini-3.1-pro-preview": "supported",
1659
1776
  "google/gemini-3.5-flash": "supported",
1660
1777
  "google/gemini-3.1-flash-lite": "supported",
1778
+ "anthropic/claude-sonnet-5.5": "supported",
1661
1779
  "anthropic/claude-sonnet-5": "supported",
1662
1780
  "anthropic/claude-opus-5": "supported",
1663
1781
  "anthropic/claude-opus-4.8": "supported",
@@ -1675,6 +1793,7 @@ const MODEL_STREAMING_TOOL_USE = {
1675
1793
  "gpt-5.4-mini": "supported",
1676
1794
  "gpt-5.4-nano": "supported",
1677
1795
  "gpt-5.2": "supported",
1796
+ "claude-sonnet-5-5": "supported",
1678
1797
  "claude-sonnet-5": "supported",
1679
1798
  "claude-fable-5-1": "supported",
1680
1799
  "claude-fable-5": "supported",
@@ -1808,6 +1927,7 @@ const CONTEXT_WINDOW_TOKENS = {
1808
1927
  "claude-haiku-4-5-20251001": 2e5,
1809
1928
  "claude-sonnet-4-6": 2e5,
1810
1929
  "claude-sonnet-5": 1e6,
1930
+ "claude-sonnet-5-5": 1e6,
1811
1931
  "claude-opus-4-6": 2e5,
1812
1932
  "claude-opus-4-7": 2e5,
1813
1933
  "claude-opus-4-8": 2e5,
@@ -1827,6 +1947,7 @@ const CONTEXT_WINDOW_TOKENS = {
1827
1947
  "google/gemini-3.1-pro-preview": 1048576,
1828
1948
  "google/gemini-3.5-flash": 1048576,
1829
1949
  "google/gemini-3.1-flash-lite": 1048576,
1950
+ "anthropic/claude-sonnet-5.5": 1e6,
1830
1951
  "anthropic/claude-sonnet-5": 1e6,
1831
1952
  "anthropic/claude-opus-5": 1e6,
1832
1953
  "anthropic/claude-opus-4.8": 2e5,
@@ -1862,4 +1983,4 @@ const DEFAULT_CONTEXT_WINDOW_TOKENS = 128e3;
1862
1983
  */
1863
1984
  const getContextWindowTokens = (modelId) => CONTEXT_WINDOW_TOKENS_BY_ID[normalizeModelCatalogId(modelId)] ?? 128e3;
1864
1985
  //#endregion
1865
- export { AI_PROVIDERS, ANTHROPIC_ADAPTIVE_THINKING_MODELS, BYOK_DEFAULT_MODELS, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, BYOK_MODEL_OPTIONS, CAPABILITY_OVERRIDES, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, CONTEXT_WINDOW_TOKENS, DEFAULT_CONTEXT_WINDOW_TOKENS, DEFAULT_MODELS, DOCUMENT_INPUT_OVERRIDES, FALLBACK_CHAT_MODEL_BY_PROVIDER, FIRST_PARTY_MODEL_PROVIDERS, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, MODELS_DEV_RATE_SOURCE_ALIASES, MODEL_CATALOG_ID_ALIASES, MODEL_CATALOG_PROVIDER_KIND, MODEL_DEFAULT_REASONING_EFFORTS, MODEL_DISPLAY_METADATA, MODEL_RATES, MODEL_RATE_UNITS_PER_USD, MODEL_REASONING_EFFORTS, MODEL_ROLES, MODEL_STREAMING_TOOL_USE, MODEL_TEMPERATURE_POLICIES, REASONING_EFFORTS, RETAINED_MODELS_DEV_RATE_ENTRIES, STREAMING_TOOL_USE_SUPPORTS, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelRate, getModelReasoningEfforts, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForRole, shouldEmitTemperature, supportsStreamingToolUse };
1986
+ export { AI_PROVIDERS, ANTHROPIC_ADAPTIVE_THINKING_MODELS, BYOK_DEFAULT_MODELS, BYOK_DOCUMENT_INPUT_MODEL_OPTIONS, BYOK_MODEL_OPTIONS, CAPABILITY_OVERRIDES, CHAT_PDF_ATTACHMENT_MODEL_OPTIONS, CONTEXT_WINDOW_TOKENS, DEFAULT_CONTEXT_WINDOW_TOKENS, DEFAULT_MODELS, DOCUMENT_INPUT_OVERRIDES, FALLBACK_CHAT_MODEL_BY_PROVIDER, FIRST_PARTY_MODEL_PROVIDERS, MODELS_DEV_RATE_PROVIDER_BY_CATALOG_PROVIDER, MODELS_DEV_RATE_SOURCE_ALIASES, MODEL_CATALOG_ID_ALIASES, MODEL_CATALOG_PROVIDER_KIND, MODEL_DEFAULT_REASONING_EFFORTS, MODEL_DISPLAY_METADATA, MODEL_OUTPUT_TOKEN_LIMITS, MODEL_RATES, MODEL_RATE_UNITS_PER_USD, MODEL_REASONING_EFFORTS, MODEL_ROLES, MODEL_STREAMING_TOOL_USE, MODEL_TEMPERATURE_POLICIES, REASONING_EFFORTS, RETAINED_MODELS_DEV_RATE_ENTRIES, STREAMING_TOOL_USE_SUPPORTS, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelRate, getModelReasoningEfforts, getOutputTokenLimit, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForRole, shouldEmitTemperature, supportsStreamingToolUse };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stll/ai-catalog",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
4
4
  "description": "Provider-neutral AI model roles, capabilities, and curated model metadata.",
5
5
  "keywords": [
6
6
  "ai",
@@ -41,7 +41,7 @@
41
41
  "pack:dry-run": "bun pm pack --dry-run",
42
42
  "test": "bun test src",
43
43
  "typecheck": "bun ../../packages/scripts/src/tsc-native.ts --noEmit",
44
- "lint": "cd ../.. && bun --bun oxlint -c oxlint.config.ts --report-unused-disable-directives-severity=error --type-aware packages/ai-catalog",
44
+ "lint": "cd ../.. && bun --bun oxlint -c oxlint.config.ts --report-unused-disable-directives-severity=error --type-aware --type-check packages/ai-catalog",
45
45
  "lint:fix": "cd ../.. && bun --bun oxlint -c oxlint.config.ts --type-aware --fix packages/ai-catalog",
46
46
  "format": "bun ../../scripts/run-oxfmt.ts .",
47
47
  "prepack": "bun run build"
@@ -51,11 +51,11 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@stll/typescript-config": "0.0.0",
54
- "@tanstack/ai-anthropic": "0.18.6",
55
- "@tanstack/ai-bedrock": "0.3.8",
56
- "@tanstack/ai-gemini": "0.29.2",
57
- "@tanstack/ai-mistral": "0.6.2",
58
- "@tanstack/ai-openrouter": "0.19.9",
54
+ "@tanstack/ai-anthropic": "0.19.1",
55
+ "@tanstack/ai-bedrock": "0.3.15",
56
+ "@tanstack/ai-gemini": "0.33.1",
57
+ "@tanstack/ai-mistral": "0.6.10",
58
+ "@tanstack/ai-openrouter": "0.19.20",
59
59
  "bun-types": "1.4.2",
60
60
  "tsdown": "0.23.0"
61
61
  },