@stll/ai-catalog 0.3.1 → 0.4.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.
package/dist/index.d.ts CHANGED
@@ -92,6 +92,22 @@ export declare const MODEL_RATES: {
92
92
  readonly outputPerMTok: 150000;
93
93
  readonly cachedInputPerMTok: 2500;
94
94
  };
95
+ readonly "gpt-6.1-sol": {
96
+ readonly kind: "input-token-tiered";
97
+ readonly inputTokenThreshold: 272000;
98
+ readonly standard: {
99
+ readonly inputPerMTok: 200000;
100
+ readonly outputPerMTok: 1000000;
101
+ readonly cachedInputPerMTok: 10000;
102
+ readonly cachedWriteInputPerMTok: 250000;
103
+ };
104
+ readonly aboveThreshold: {
105
+ readonly inputPerMTok: 400000;
106
+ readonly outputPerMTok: 1500000;
107
+ readonly cachedInputPerMTok: 20000;
108
+ readonly cachedWriteInputPerMTok: 500000;
109
+ };
110
+ };
95
111
  readonly "gpt-6-astra": {
96
112
  readonly kind: "input-token-tiered";
97
113
  readonly inputTokenThreshold: 272000;
@@ -482,6 +498,14 @@ type CapabilityOverride = {
482
498
  reason: string;
483
499
  };
484
500
  export declare const CAPABILITY_OVERRIDES: Partial<Record<OfferedBYOKModelId, CapabilityOverride>>;
501
+ type ImageInputOverride = {
502
+ supported: boolean;
503
+ /** Dated correction with an official provider documentation URL. */
504
+ reason: string;
505
+ };
506
+ type ImageInputOverrides = { [TProvider in BYOKProvider]?: Partial<Record<BYOKModelIdByProvider[TProvider], ImageInputOverride>>; };
507
+ /** Only official provider documentation may override input-modality evidence. */
508
+ export declare const IMAGE_INPUT_OVERRIDES: ImageInputOverrides;
485
509
  //#endregion
486
510
  //#region src/document-input-overrides.d.ts
487
511
  type DocumentInputOverride = {
@@ -498,6 +522,82 @@ type DocumentInputOverride = {
498
522
  export declare const DOCUMENT_INPUT_OVERRIDES: Partial<Record<OfferedBYOKModelId, DocumentInputOverride>>;
499
523
  //#endregion
500
524
  //#region src/capabilities.gen.d.ts
525
+ /** Every offered provider/model pair has explicit image-input evidence. */
526
+ export declare const MODEL_IMAGE_INPUT_CAPABILITIES: {
527
+ readonly google: {
528
+ readonly "gemini-3.8-flash": "supported";
529
+ readonly "gemini-3.7-flash": "supported";
530
+ readonly "gemini-3.6-flash": "supported";
531
+ readonly "gemini-3.5-flash-lite": "supported";
532
+ readonly "gemini-3.1-pro-preview": "supported";
533
+ readonly "gemini-3.5-flash": "supported";
534
+ readonly "gemini-3.1-flash-lite": "supported";
535
+ };
536
+ readonly openrouter: {
537
+ readonly "openai/gpt-6.1-sol": "supported";
538
+ readonly "openai/gpt-6-astra": "supported";
539
+ readonly "openai/gpt-6-sol": "supported";
540
+ readonly "openai/gpt-6-luna": "supported";
541
+ readonly "openai/gpt-5.6-sol": "supported";
542
+ readonly "openai/gpt-5.6-terra": "supported";
543
+ readonly "openai/gpt-5.6-luna": "supported";
544
+ readonly "google/gemini-3.8-flash": "supported";
545
+ readonly "google/gemini-3.7-flash": "supported";
546
+ readonly "google/gemini-3.6-flash": "supported";
547
+ readonly "google/gemini-3.5-flash-lite": "supported";
548
+ readonly "google/gemini-3.1-pro-preview": "supported";
549
+ readonly "google/gemini-3.5-flash": "supported";
550
+ readonly "google/gemini-3.1-flash-lite": "supported";
551
+ readonly "anthropic/claude-sonnet-5.5": "supported";
552
+ readonly "anthropic/claude-sonnet-5": "supported";
553
+ readonly "anthropic/claude-opus-5": "supported";
554
+ readonly "anthropic/claude-opus-4.8": "supported";
555
+ readonly "anthropic/claude-sonnet-4.6": "supported";
556
+ readonly "openai/gpt-5.5": "supported";
557
+ readonly "openai/gpt-5.4-mini": "supported";
558
+ };
559
+ readonly openai: {
560
+ readonly "gpt-6.1-sol": "supported";
561
+ readonly "gpt-6-astra": "supported";
562
+ readonly "gpt-6-sol": "supported";
563
+ readonly "gpt-6-luna": "supported";
564
+ readonly "gpt-5.6": "supported";
565
+ readonly "gpt-5.6-terra": "supported";
566
+ readonly "gpt-5.6-luna": "supported";
567
+ readonly "gpt-5.5": "supported";
568
+ readonly "gpt-5.4": "supported";
569
+ readonly "gpt-5.4-mini": "supported";
570
+ readonly "gpt-5.4-nano": "supported";
571
+ readonly "gpt-5.2": "supported";
572
+ };
573
+ readonly anthropic: {
574
+ readonly "claude-sonnet-5-5": "supported";
575
+ readonly "claude-sonnet-5": "supported";
576
+ readonly "claude-fable-5-1": "supported";
577
+ readonly "claude-fable-5": "supported";
578
+ readonly "claude-opus-5-5": "supported";
579
+ readonly "claude-opus-5": "supported";
580
+ readonly "claude-opus-4-8": "supported";
581
+ readonly "claude-opus-4-7": "supported";
582
+ readonly "claude-sonnet-4-6": "supported";
583
+ readonly "claude-opus-4-6": "supported";
584
+ readonly "claude-haiku-4-5-20251001": "supported";
585
+ };
586
+ readonly bedrock: {
587
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported";
588
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported";
589
+ readonly "us.amazon.nova-pro-v1:0": "supported";
590
+ readonly "us.amazon.nova-lite-v1:0": "supported";
591
+ readonly "us.amazon.nova-micro-v1:0": "unsupported";
592
+ readonly "openai.gpt-oss-120b-1:0": "unsupported";
593
+ readonly "openai.gpt-oss-20b-1:0": "unsupported";
594
+ };
595
+ readonly mistral: {
596
+ readonly "mistral-large-latest": "supported";
597
+ readonly "mistral-medium-latest": "supported";
598
+ readonly "mistral-small-latest": "supported";
599
+ };
600
+ };
501
601
  /**
502
602
  * Reasoning-effort values each offered model accepts, `null` when the
503
603
  * model exposes no effort-style reasoning control. A missing `"none"`
@@ -512,6 +612,7 @@ export declare const MODEL_REASONING_EFFORTS: {
512
612
  readonly "gemini-3.1-pro-preview": readonly ["low", "medium", "high"];
513
613
  readonly "gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
514
614
  readonly "gemini-3.1-flash-lite": readonly ["minimal", "low", "medium", "high"];
615
+ readonly "openai/gpt-6.1-sol": readonly ["low", "medium", "high", "xhigh", "max"];
515
616
  readonly "openai/gpt-6-astra": readonly ["low", "medium", "high", "xhigh", "max"];
516
617
  readonly "openai/gpt-6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
517
618
  readonly "openai/gpt-6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
@@ -532,6 +633,7 @@ export declare const MODEL_REASONING_EFFORTS: {
532
633
  readonly "anthropic/claude-sonnet-4.6": readonly ["none", "low", "medium", "high", "max"];
533
634
  readonly "openai/gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
534
635
  readonly "openai/gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
636
+ readonly "gpt-6.1-sol": readonly ["low", "medium", "high", "xhigh", "max"];
535
637
  readonly "gpt-6-astra": readonly ["low", "medium", "high", "xhigh", "max"];
536
638
  readonly "gpt-6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
537
639
  readonly "gpt-6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
@@ -578,6 +680,7 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
578
680
  readonly "gemini-3.1-pro-preview": null;
579
681
  readonly "gemini-3.5-flash": null;
580
682
  readonly "gemini-3.1-flash-lite": null;
683
+ readonly "openai/gpt-6.1-sol": "medium";
581
684
  readonly "openai/gpt-6-astra": "medium";
582
685
  readonly "openai/gpt-6-sol": "medium";
583
686
  readonly "openai/gpt-6-luna": "medium";
@@ -598,6 +701,7 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
598
701
  readonly "anthropic/claude-sonnet-4.6": "medium";
599
702
  readonly "openai/gpt-5.5": "medium";
600
703
  readonly "openai/gpt-5.4-mini": "medium";
704
+ readonly "gpt-6.1-sol": null;
601
705
  readonly "gpt-6-astra": null;
602
706
  readonly "gpt-6-sol": null;
603
707
  readonly "gpt-6-luna": null;
@@ -644,6 +748,7 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
644
748
  readonly "gemini-3.1-pro-preview": "emit";
645
749
  readonly "gemini-3.5-flash": "emit";
646
750
  readonly "gemini-3.1-flash-lite": "emit";
751
+ readonly "openai/gpt-6.1-sol": "omit";
647
752
  readonly "openai/gpt-6-astra": "omit";
648
753
  readonly "openai/gpt-6-sol": "omit";
649
754
  readonly "openai/gpt-6-luna": "omit";
@@ -664,6 +769,7 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
664
769
  readonly "anthropic/claude-sonnet-4.6": "emit";
665
770
  readonly "openai/gpt-5.5": "omit";
666
771
  readonly "openai/gpt-5.4-mini": "omit";
772
+ readonly "gpt-6.1-sol": "omit";
667
773
  readonly "gpt-6-astra": "omit";
668
774
  readonly "gpt-6-sol": "omit";
669
775
  readonly "gpt-6-luna": "omit";
@@ -710,6 +816,7 @@ export declare const MODEL_OUTPUT_TOKEN_LIMITS: {
710
816
  readonly "gemini-3.1-pro-preview": 65536;
711
817
  readonly "gemini-3.5-flash": 65536;
712
818
  readonly "gemini-3.1-flash-lite": 65536;
819
+ readonly "openai/gpt-6.1-sol": 128000;
713
820
  readonly "openai/gpt-6-astra": 128000;
714
821
  readonly "openai/gpt-6-sol": 128000;
715
822
  readonly "openai/gpt-6-luna": 128000;
@@ -730,6 +837,7 @@ export declare const MODEL_OUTPUT_TOKEN_LIMITS: {
730
837
  readonly "anthropic/claude-sonnet-4.6": 128000;
731
838
  readonly "openai/gpt-5.5": 128000;
732
839
  readonly "openai/gpt-5.4-mini": 128000;
840
+ readonly "gpt-6.1-sol": 128000;
733
841
  readonly "gpt-6-astra": 128000;
734
842
  readonly "gpt-6-sol": 128000;
735
843
  readonly "gpt-6-luna": 128000;
@@ -778,6 +886,8 @@ export declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
778
886
  export type ModelRole = (typeof MODEL_ROLES)[number];
779
887
  export declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
780
888
  export type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
889
+ export declare const IMAGE_INPUT_CAPABILITIES: readonly ["supported", "unsupported", "unknown"];
890
+ export type ImageInputCapability = (typeof IMAGE_INPUT_CAPABILITIES)[number];
781
891
  export declare const STREAMING_TOOL_USE_SUPPORTS: readonly ["supported", "unsupported"];
782
892
  export type StreamingToolUseSupport = (typeof STREAMING_TOOL_USE_SUPPORTS)[number];
783
893
  export declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
@@ -929,8 +1039,8 @@ export declare const DEFAULT_MODELS: {
929
1039
  export declare const BYOK_MODEL_OPTIONS: {
930
1040
  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"];
931
1041
  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"];
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"];
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"];
1042
+ readonly openai: readonly [...("gpt-6-astra" | "gpt-6-sol" | "gpt-6-luna" | "gpt-5.6" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-6.1-sol")[], "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2"];
1043
+ 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" | "openai/gpt-6.1-sol")[], "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"];
934
1044
  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"];
935
1045
  readonly mistral: readonly ["mistral-large-latest", "mistral-medium-latest", "mistral-small-latest"];
936
1046
  };
@@ -1022,6 +1132,10 @@ export declare const MODEL_DISPLAY_METADATA: {
1022
1132
  readonly displayName: "Claude Haiku 4.5";
1023
1133
  readonly iconProvider: "anthropic";
1024
1134
  };
1135
+ readonly "gpt-6.1-sol": {
1136
+ readonly displayName: "GPT-6.1 Sol";
1137
+ readonly iconProvider: "openai";
1138
+ };
1025
1139
  readonly "gpt-6-astra": {
1026
1140
  readonly displayName: "GPT-6 Astra";
1027
1141
  readonly iconProvider: "openai";
@@ -1066,6 +1180,10 @@ export declare const MODEL_DISPLAY_METADATA: {
1066
1180
  readonly displayName: "GPT-5.2";
1067
1181
  readonly iconProvider: "openai";
1068
1182
  };
1183
+ readonly "openai/gpt-6.1-sol": {
1184
+ readonly displayName: "GPT-6.1 Sol";
1185
+ readonly iconProvider: "openai";
1186
+ };
1069
1187
  readonly "openai/gpt-6-astra": {
1070
1188
  readonly displayName: "GPT-6 Astra";
1071
1189
  readonly iconProvider: "openai";
@@ -1195,12 +1313,17 @@ export declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayM
1195
1313
  */
1196
1314
  export declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1197
1315
  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"];
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"];
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"];
1316
+ readonly openrouter: readonly ["openai/gpt-6.1-sol", "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"];
1317
+ readonly openai: readonly ["gpt-6.1-sol", "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"];
1200
1318
  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"];
1201
1319
  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"];
1202
1320
  readonly mistral: readonly [];
1203
1321
  };
1322
+ /** Unoffered IDs have no entry; offered IDs explicitly include unknown. */
1323
+ export declare const getModelImageInputCapability: ({ provider, modelId }: {
1324
+ provider: BYOKProvider;
1325
+ modelId: string;
1326
+ }) => ImageInputCapability | undefined;
1204
1327
  export declare const isBYOKProviderRoleSupported: ({ provider, role }: {
1205
1328
  provider: BYOKProvider;
1206
1329
  role: ModelRole;
@@ -1226,8 +1349,8 @@ export declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1226
1349
  export declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
1227
1350
  readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest"];
1228
1351
  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"];
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"];
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"];
1352
+ readonly openrouter: readonly ["openai/gpt-6.1-sol", "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"];
1353
+ readonly openai: readonly ["gpt-6.1-sol", "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"];
1231
1354
  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"];
1232
1355
  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"];
1233
1356
  };
@@ -1345,6 +1468,7 @@ export declare const MODEL_STREAMING_TOOL_USE: {
1345
1468
  readonly "gemini-3.1-pro-preview": "supported";
1346
1469
  readonly "gemini-3.5-flash": "supported";
1347
1470
  readonly "gemini-3.1-flash-lite": "supported";
1471
+ readonly "openai/gpt-6.1-sol": "supported";
1348
1472
  readonly "openai/gpt-6-astra": "supported";
1349
1473
  readonly "openai/gpt-6-sol": "supported";
1350
1474
  readonly "openai/gpt-6-luna": "supported";
@@ -1365,6 +1489,7 @@ export declare const MODEL_STREAMING_TOOL_USE: {
1365
1489
  readonly "anthropic/claude-sonnet-4.6": "supported";
1366
1490
  readonly "openai/gpt-5.5": "supported";
1367
1491
  readonly "openai/gpt-5.4-mini": "supported";
1492
+ readonly "gpt-6.1-sol": "supported";
1368
1493
  readonly "gpt-6-astra": "supported";
1369
1494
  readonly "gpt-6-sol": "supported";
1370
1495
  readonly "gpt-6-luna": "supported";
@@ -1470,6 +1595,7 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1470
1595
  readonly "gpt-5.4-mini": 400000;
1471
1596
  readonly "gpt-5.4": 400000;
1472
1597
  readonly "gpt-5.5": 400000;
1598
+ readonly "gpt-6.1-sol": 922000;
1473
1599
  readonly "gpt-6-astra": 922000;
1474
1600
  readonly "gpt-6-sol": 922000;
1475
1601
  readonly "gpt-6-luna": 922000;
@@ -1504,6 +1630,7 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1504
1630
  readonly "anthropic/claude-opus-5": 1000000;
1505
1631
  readonly "anthropic/claude-opus-4.8": 200000;
1506
1632
  readonly "anthropic/claude-sonnet-4.6": 200000;
1633
+ readonly "openai/gpt-6.1-sol": 922000;
1507
1634
  readonly "openai/gpt-6-astra": 922000;
1508
1635
  readonly "openai/gpt-6-sol": 922000;
1509
1636
  readonly "openai/gpt-6-luna": 922000;
@@ -1534,4 +1661,4 @@ export declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 128000;
1534
1661
  */
1535
1662
  export declare const getContextWindowTokens: (modelId: string) => number;
1536
1663
  //#endregion
1537
- export type { CapabilityOverride, DocumentInputOverride, ModelRate, ModelRateAmounts, ModelsDevRateProvider };
1664
+ export type { CapabilityOverride, DocumentInputOverride, ImageInputOverride, ImageInputOverrides, ModelRate, ModelRateAmounts, ModelsDevRateProvider };
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
15
15
  "gemini-3.1-flash-lite"
16
16
  ],
17
17
  openrouter: [
18
+ "openai/gpt-6.1-sol",
18
19
  "openai/gpt-6-astra",
19
20
  "openai/gpt-6-sol",
20
21
  "openai/gpt-6-luna",
@@ -37,6 +38,7 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
37
38
  "openai/gpt-5.4-mini"
38
39
  ],
39
40
  openai: [
41
+ "gpt-6.1-sol",
40
42
  "gpt-6-astra",
41
43
  "gpt-6-sol",
42
44
  "gpt-6-luna",
@@ -70,6 +72,82 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
70
72
  ],
71
73
  mistral: []
72
74
  };
75
+ /** Every offered provider/model pair has explicit image-input evidence. */
76
+ const MODEL_IMAGE_INPUT_CAPABILITIES = {
77
+ google: {
78
+ "gemini-3.8-flash": "supported",
79
+ "gemini-3.7-flash": "supported",
80
+ "gemini-3.6-flash": "supported",
81
+ "gemini-3.5-flash-lite": "supported",
82
+ "gemini-3.1-pro-preview": "supported",
83
+ "gemini-3.5-flash": "supported",
84
+ "gemini-3.1-flash-lite": "supported"
85
+ },
86
+ openrouter: {
87
+ "openai/gpt-6.1-sol": "supported",
88
+ "openai/gpt-6-astra": "supported",
89
+ "openai/gpt-6-sol": "supported",
90
+ "openai/gpt-6-luna": "supported",
91
+ "openai/gpt-5.6-sol": "supported",
92
+ "openai/gpt-5.6-terra": "supported",
93
+ "openai/gpt-5.6-luna": "supported",
94
+ "google/gemini-3.8-flash": "supported",
95
+ "google/gemini-3.7-flash": "supported",
96
+ "google/gemini-3.6-flash": "supported",
97
+ "google/gemini-3.5-flash-lite": "supported",
98
+ "google/gemini-3.1-pro-preview": "supported",
99
+ "google/gemini-3.5-flash": "supported",
100
+ "google/gemini-3.1-flash-lite": "supported",
101
+ "anthropic/claude-sonnet-5.5": "supported",
102
+ "anthropic/claude-sonnet-5": "supported",
103
+ "anthropic/claude-opus-5": "supported",
104
+ "anthropic/claude-opus-4.8": "supported",
105
+ "anthropic/claude-sonnet-4.6": "supported",
106
+ "openai/gpt-5.5": "supported",
107
+ "openai/gpt-5.4-mini": "supported"
108
+ },
109
+ openai: {
110
+ "gpt-6.1-sol": "supported",
111
+ "gpt-6-astra": "supported",
112
+ "gpt-6-sol": "supported",
113
+ "gpt-6-luna": "supported",
114
+ "gpt-5.6": "supported",
115
+ "gpt-5.6-terra": "supported",
116
+ "gpt-5.6-luna": "supported",
117
+ "gpt-5.5": "supported",
118
+ "gpt-5.4": "supported",
119
+ "gpt-5.4-mini": "supported",
120
+ "gpt-5.4-nano": "supported",
121
+ "gpt-5.2": "supported"
122
+ },
123
+ anthropic: {
124
+ "claude-sonnet-5-5": "supported",
125
+ "claude-sonnet-5": "supported",
126
+ "claude-fable-5-1": "supported",
127
+ "claude-fable-5": "supported",
128
+ "claude-opus-5-5": "supported",
129
+ "claude-opus-5": "supported",
130
+ "claude-opus-4-8": "supported",
131
+ "claude-opus-4-7": "supported",
132
+ "claude-sonnet-4-6": "supported",
133
+ "claude-opus-4-6": "supported",
134
+ "claude-haiku-4-5-20251001": "supported"
135
+ },
136
+ bedrock: {
137
+ "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported",
138
+ "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported",
139
+ "us.amazon.nova-pro-v1:0": "supported",
140
+ "us.amazon.nova-lite-v1:0": "supported",
141
+ "us.amazon.nova-micro-v1:0": "unsupported",
142
+ "openai.gpt-oss-120b-1:0": "unsupported",
143
+ "openai.gpt-oss-20b-1:0": "unsupported"
144
+ },
145
+ mistral: {
146
+ "mistral-large-latest": "supported",
147
+ "mistral-medium-latest": "supported",
148
+ "mistral-small-latest": "supported"
149
+ }
150
+ };
73
151
  /**
74
152
  * Reasoning-effort values each offered model accepts, `null` when the
75
153
  * model exposes no effort-style reasoning control. A missing `"none"`
@@ -116,6 +194,13 @@ const MODEL_REASONING_EFFORTS = {
116
194
  "medium",
117
195
  "high"
118
196
  ],
197
+ "openai/gpt-6.1-sol": [
198
+ "low",
199
+ "medium",
200
+ "high",
201
+ "xhigh",
202
+ "max"
203
+ ],
119
204
  "openai/gpt-6-astra": [
120
205
  "low",
121
206
  "medium",
@@ -255,6 +340,13 @@ const MODEL_REASONING_EFFORTS = {
255
340
  "high",
256
341
  "xhigh"
257
342
  ],
343
+ "gpt-6.1-sol": [
344
+ "low",
345
+ "medium",
346
+ "high",
347
+ "xhigh",
348
+ "max"
349
+ ],
258
350
  "gpt-6-astra": [
259
351
  "low",
260
352
  "medium",
@@ -439,6 +531,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
439
531
  "gemini-3.1-pro-preview": null,
440
532
  "gemini-3.5-flash": null,
441
533
  "gemini-3.1-flash-lite": null,
534
+ "openai/gpt-6.1-sol": "medium",
442
535
  "openai/gpt-6-astra": "medium",
443
536
  "openai/gpt-6-sol": "medium",
444
537
  "openai/gpt-6-luna": "medium",
@@ -459,6 +552,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
459
552
  "anthropic/claude-sonnet-4.6": "medium",
460
553
  "openai/gpt-5.5": "medium",
461
554
  "openai/gpt-5.4-mini": "medium",
555
+ "gpt-6.1-sol": null,
462
556
  "gpt-6-astra": null,
463
557
  "gpt-6-sol": null,
464
558
  "gpt-6-luna": null,
@@ -505,6 +599,7 @@ const MODEL_TEMPERATURE_POLICIES = {
505
599
  "gemini-3.1-pro-preview": "emit",
506
600
  "gemini-3.5-flash": "emit",
507
601
  "gemini-3.1-flash-lite": "emit",
602
+ "openai/gpt-6.1-sol": "omit",
508
603
  "openai/gpt-6-astra": "omit",
509
604
  "openai/gpt-6-sol": "omit",
510
605
  "openai/gpt-6-luna": "omit",
@@ -525,6 +620,7 @@ const MODEL_TEMPERATURE_POLICIES = {
525
620
  "anthropic/claude-sonnet-4.6": "emit",
526
621
  "openai/gpt-5.5": "omit",
527
622
  "openai/gpt-5.4-mini": "omit",
623
+ "gpt-6.1-sol": "omit",
528
624
  "gpt-6-astra": "omit",
529
625
  "gpt-6-sol": "omit",
530
626
  "gpt-6-luna": "omit",
@@ -571,6 +667,7 @@ const MODEL_OUTPUT_TOKEN_LIMITS = {
571
667
  "gemini-3.1-pro-preview": 65536,
572
668
  "gemini-3.5-flash": 65536,
573
669
  "gemini-3.1-flash-lite": 65536,
670
+ "openai/gpt-6.1-sol": 128e3,
574
671
  "openai/gpt-6-astra": 128e3,
575
672
  "openai/gpt-6-sol": 128e3,
576
673
  "openai/gpt-6-luna": 128e3,
@@ -591,6 +688,7 @@ const MODEL_OUTPUT_TOKEN_LIMITS = {
591
688
  "anthropic/claude-sonnet-4.6": 128e3,
592
689
  "openai/gpt-5.5": 128e3,
593
690
  "openai/gpt-5.4-mini": 128e3,
691
+ "gpt-6.1-sol": 128e3,
594
692
  "gpt-6-astra": 128e3,
595
693
  "gpt-6-sol": 128e3,
596
694
  "gpt-6-luna": 128e3,
@@ -677,6 +775,22 @@ const MODEL_RATES = {
677
775
  outputPerMTok: 15e4,
678
776
  cachedInputPerMTok: 2500
679
777
  },
778
+ "gpt-6.1-sol": {
779
+ kind: "input-token-tiered",
780
+ inputTokenThreshold: 272e3,
781
+ standard: {
782
+ inputPerMTok: 2e5,
783
+ outputPerMTok: 1e6,
784
+ cachedInputPerMTok: 1e4,
785
+ cachedWriteInputPerMTok: 25e4
786
+ },
787
+ aboveThreshold: {
788
+ inputPerMTok: 4e5,
789
+ outputPerMTok: 15e5,
790
+ cachedInputPerMTok: 2e4,
791
+ cachedWriteInputPerMTok: 5e5
792
+ }
793
+ },
680
794
  "gpt-6-astra": {
681
795
  kind: "input-token-tiered",
682
796
  inputTokenThreshold: 272e3,
@@ -1054,6 +1168,8 @@ const MODELS_DEV_RATE_SOURCE_ALIASES = defineRateSourceAliases({});
1054
1168
  //#endregion
1055
1169
  //#region src/capabilities-overrides.ts
1056
1170
  const CAPABILITY_OVERRIDES = {};
1171
+ /** Only official provider documentation may override input-modality evidence. */
1172
+ const IMAGE_INPUT_OVERRIDES = {};
1057
1173
  //#endregion
1058
1174
  //#region src/document-input-overrides.ts
1059
1175
  /**
@@ -1114,6 +1230,11 @@ const MODEL_ROLES = [
1114
1230
  "pdf"
1115
1231
  ];
1116
1232
  const TEMPERATURE_POLICIES = ["emit", "omit"];
1233
+ const IMAGE_INPUT_CAPABILITIES = [
1234
+ "supported",
1235
+ "unsupported",
1236
+ "unknown"
1237
+ ];
1117
1238
  const STREAMING_TOOL_USE_SUPPORTS = ["supported", "unsupported"];
1118
1239
  const AI_PROVIDERS = [
1119
1240
  "google",
@@ -1154,6 +1275,16 @@ const FIRST_PARTY_MODEL_PROVIDERS = [
1154
1275
  "mistral"
1155
1276
  ];
1156
1277
  /**
1278
+ * Provider IDs for the GPT-6.1 family, kept in one row per member like GPT-6
1279
+ * below.
1280
+ */
1281
+ const GPT_61_MODEL_IDS = { sol: {
1282
+ openai: "gpt-6.1-sol",
1283
+ openrouter: "openai/gpt-6.1-sol"
1284
+ } };
1285
+ const GPT_61_OPENAI_MODEL_IDS = Object.values(GPT_61_MODEL_IDS).map(({ openai }) => openai);
1286
+ const GPT_61_OPENROUTER_MODEL_IDS = Object.values(GPT_61_MODEL_IDS).map(({ openrouter }) => openrouter);
1287
+ /**
1157
1288
  * Provider IDs for the GPT-6 family. Like GPT-5.6 below, one row feeds both
1158
1289
  * the OpenAI and the OpenRouter picker.
1159
1290
  */
@@ -1298,6 +1429,7 @@ const BYOK_MODEL_OPTIONS = {
1298
1429
  "claude-haiku-4-5-20251001"
1299
1430
  ],
1300
1431
  openai: [
1432
+ ...GPT_61_OPENAI_MODEL_IDS,
1301
1433
  ...GPT_6_OPENAI_MODEL_IDS,
1302
1434
  ...GPT_56_OPENAI_MODEL_IDS,
1303
1435
  "gpt-5.5",
@@ -1307,6 +1439,7 @@ const BYOK_MODEL_OPTIONS = {
1307
1439
  "gpt-5.2"
1308
1440
  ],
1309
1441
  openrouter: [
1442
+ ...GPT_61_OPENROUTER_MODEL_IDS,
1310
1443
  ...GPT_6_OPENROUTER_MODEL_IDS,
1311
1444
  ...GPT_56_OPENROUTER_MODEL_IDS,
1312
1445
  "google/gemini-3.8-flash",
@@ -1418,6 +1551,10 @@ const MODEL_DISPLAY_METADATA = {
1418
1551
  displayName: "Claude Haiku 4.5",
1419
1552
  iconProvider: "anthropic"
1420
1553
  },
1554
+ [GPT_61_MODEL_IDS.sol.openai]: {
1555
+ displayName: "GPT-6.1 Sol",
1556
+ iconProvider: "openai"
1557
+ },
1421
1558
  [GPT_6_MODEL_IDS.astra.openai]: {
1422
1559
  displayName: "GPT-6 Astra",
1423
1560
  iconProvider: "openai"
@@ -1462,6 +1599,10 @@ const MODEL_DISPLAY_METADATA = {
1462
1599
  displayName: "GPT-5.2",
1463
1600
  iconProvider: "openai"
1464
1601
  },
1602
+ [GPT_61_MODEL_IDS.sol.openrouter]: {
1603
+ displayName: "GPT-6.1 Sol",
1604
+ iconProvider: "openai"
1605
+ },
1465
1606
  [GPT_6_MODEL_IDS.astra.openrouter]: {
1466
1607
  displayName: "GPT-6 Astra",
1467
1608
  iconProvider: "openai"
@@ -1591,6 +1732,13 @@ const getModelDisplayMetadata = (modelId) => MODEL_DISPLAY_METADATA_BY_ID[normal
1591
1732
  * the nightly upstream check rejects drift.
1592
1733
  */
1593
1734
  const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS = MODEL_DOCUMENT_INPUT_OPTIONS;
1735
+ const IMAGE_INPUT_BY_PROVIDER = MODEL_IMAGE_INPUT_CAPABILITIES;
1736
+ /** Unoffered IDs have no entry; offered IDs explicitly include unknown. */
1737
+ const getModelImageInputCapability = ({ provider, modelId }) => {
1738
+ const capabilities = IMAGE_INPUT_BY_PROVIDER[provider];
1739
+ const normalized = normalizeModelCatalogId(modelId);
1740
+ return Object.hasOwn(capabilities, normalized) ? capabilities[normalized] : void 0;
1741
+ };
1594
1742
  const isBYOKProviderRoleSupported = ({ provider, role }) => role !== "pdf" || BYOK_DOCUMENT_INPUT_MODEL_OPTIONS[provider].length > 0;
1595
1743
  const isBYOKModelRoleSupported = ({ provider, modelId, role }) => {
1596
1744
  if (role !== "pdf") return true;
@@ -1722,7 +1870,7 @@ const MODEL_CATALOG_ID_ALIASES = {
1722
1870
  "claude-sonnet-4.6": "claude-sonnet-4-6"
1723
1871
  };
1724
1872
  const MODEL_CATALOG_ID_ALIAS_TARGET_BY_ID = MODEL_CATALOG_ID_ALIASES;
1725
- const normalizeModelCatalogId = (modelId) => MODEL_CATALOG_ID_ALIAS_TARGET_BY_ID[modelId] ?? modelId;
1873
+ const normalizeModelCatalogId = (modelId) => Object.hasOwn(MODEL_CATALOG_ID_ALIAS_TARGET_BY_ID, modelId) ? MODEL_CATALOG_ID_ALIAS_TARGET_BY_ID[modelId] ?? modelId : modelId;
1726
1874
  const MODEL_TEMPERATURE_POLICY_BY_ID = MODEL_TEMPERATURE_POLICIES;
1727
1875
  /**
1728
1876
  * Whether stella should emit a `temperature` override for this model.
@@ -1762,6 +1910,7 @@ const MODEL_STREAMING_TOOL_USE = {
1762
1910
  "gemini-3.1-pro-preview": "supported",
1763
1911
  "gemini-3.5-flash": "supported",
1764
1912
  "gemini-3.1-flash-lite": "supported",
1913
+ "openai/gpt-6.1-sol": "supported",
1765
1914
  "openai/gpt-6-astra": "supported",
1766
1915
  "openai/gpt-6-sol": "supported",
1767
1916
  "openai/gpt-6-luna": "supported",
@@ -1782,6 +1931,7 @@ const MODEL_STREAMING_TOOL_USE = {
1782
1931
  "anthropic/claude-sonnet-4.6": "supported",
1783
1932
  "openai/gpt-5.5": "supported",
1784
1933
  "openai/gpt-5.4-mini": "supported",
1934
+ "gpt-6.1-sol": "supported",
1785
1935
  "gpt-6-astra": "supported",
1786
1936
  "gpt-6-sol": "supported",
1787
1937
  "gpt-6-luna": "supported",
@@ -1918,6 +2068,7 @@ const CONTEXT_WINDOW_TOKENS = {
1918
2068
  "gpt-5.4-mini": 4e5,
1919
2069
  "gpt-5.4": 4e5,
1920
2070
  "gpt-5.5": 4e5,
2071
+ "gpt-6.1-sol": 922e3,
1921
2072
  "gpt-6-astra": 922e3,
1922
2073
  "gpt-6-sol": 922e3,
1923
2074
  "gpt-6-luna": 922e3,
@@ -1952,6 +2103,7 @@ const CONTEXT_WINDOW_TOKENS = {
1952
2103
  "anthropic/claude-opus-5": 1e6,
1953
2104
  "anthropic/claude-opus-4.8": 2e5,
1954
2105
  "anthropic/claude-sonnet-4.6": 2e5,
2106
+ "openai/gpt-6.1-sol": 922e3,
1955
2107
  "openai/gpt-6-astra": 922e3,
1956
2108
  "openai/gpt-6-sol": 922e3,
1957
2109
  "openai/gpt-6-luna": 922e3,
@@ -1983,4 +2135,4 @@ const DEFAULT_CONTEXT_WINDOW_TOKENS = 128e3;
1983
2135
  */
1984
2136
  const getContextWindowTokens = (modelId) => CONTEXT_WINDOW_TOKENS_BY_ID[normalizeModelCatalogId(modelId)] ?? 128e3;
1985
2137
  //#endregion
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 };
2138
+ 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, IMAGE_INPUT_CAPABILITIES, IMAGE_INPUT_OVERRIDES, 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_IMAGE_INPUT_CAPABILITIES, 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, getModelImageInputCapability, 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.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Provider-neutral AI model roles, capabilities, and curated model metadata.",
5
5
  "keywords": [
6
6
  "ai",