@stll/ai-catalog 0.1.14 → 0.2.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.
Files changed (3) hide show
  1. package/dist/index.d.ts +211 -50
  2. package/dist/index.js +250 -28
  3. package/package.json +7 -7
package/dist/index.d.ts CHANGED
@@ -108,6 +108,38 @@ export declare const MODEL_RATES: {
108
108
  readonly cachedWriteInputPerMTok: 2500000;
109
109
  };
110
110
  };
111
+ readonly "gpt-6-sol": {
112
+ readonly kind: "input-token-tiered";
113
+ readonly inputTokenThreshold: 272000;
114
+ readonly standard: {
115
+ readonly inputPerMTok: 200000;
116
+ readonly outputPerMTok: 1000000;
117
+ readonly cachedInputPerMTok: 20000;
118
+ readonly cachedWriteInputPerMTok: 250000;
119
+ };
120
+ readonly aboveThreshold: {
121
+ readonly inputPerMTok: 400000;
122
+ readonly outputPerMTok: 1500000;
123
+ readonly cachedInputPerMTok: 40000;
124
+ readonly cachedWriteInputPerMTok: 500000;
125
+ };
126
+ };
127
+ readonly "gpt-6-luna": {
128
+ readonly kind: "input-token-tiered";
129
+ readonly inputTokenThreshold: 272000;
130
+ readonly standard: {
131
+ readonly inputPerMTok: 10000;
132
+ readonly outputPerMTok: 50000;
133
+ readonly cachedInputPerMTok: 1000;
134
+ readonly cachedWriteInputPerMTok: 12500;
135
+ };
136
+ readonly aboveThreshold: {
137
+ readonly inputPerMTok: 20000;
138
+ readonly outputPerMTok: 75000;
139
+ readonly cachedInputPerMTok: 2000;
140
+ readonly cachedWriteInputPerMTok: 25000;
141
+ };
142
+ };
111
143
  readonly "gpt-5.6": {
112
144
  readonly kind: "input-token-tiered";
113
145
  readonly inputTokenThreshold: 272000;
@@ -223,6 +255,13 @@ export declare const MODEL_RATES: {
223
255
  readonly cachedInputPerMTok: 100000;
224
256
  readonly cachedWriteInputPerMTok: 1250000;
225
257
  };
258
+ readonly "claude-opus-5-5": {
259
+ readonly kind: "flat";
260
+ readonly inputPerMTok: 400000;
261
+ readonly outputPerMTok: 2000000;
262
+ readonly cachedInputPerMTok: 20000;
263
+ readonly cachedWriteInputPerMTok: 500000;
264
+ };
226
265
  readonly "claude-opus-5": {
227
266
  readonly kind: "flat";
228
267
  readonly inputPerMTok: 500000;
@@ -453,6 +492,8 @@ export declare const MODEL_REASONING_EFFORTS: {
453
492
  readonly "gemini-3.5-flash": readonly ["minimal", "low", "medium", "high"];
454
493
  readonly "gemini-3.1-flash-lite": readonly ["minimal", "low", "medium", "high"];
455
494
  readonly "openai/gpt-6-astra": readonly ["low", "medium", "high", "xhigh", "max"];
495
+ readonly "openai/gpt-6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
496
+ readonly "openai/gpt-6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
456
497
  readonly "openai/gpt-5.6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
457
498
  readonly "openai/gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
458
499
  readonly "openai/gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
@@ -470,6 +511,8 @@ export declare const MODEL_REASONING_EFFORTS: {
470
511
  readonly "openai/gpt-5.5": readonly ["none", "low", "medium", "high", "xhigh"];
471
512
  readonly "openai/gpt-5.4-mini": readonly ["none", "low", "medium", "high", "xhigh"];
472
513
  readonly "gpt-6-astra": readonly ["low", "medium", "high", "xhigh", "max"];
514
+ readonly "gpt-6-sol": readonly ["none", "low", "medium", "high", "xhigh", "max"];
515
+ readonly "gpt-6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
473
516
  readonly "gpt-5.6": readonly ["none", "low", "medium", "high", "xhigh", "max"];
474
517
  readonly "gpt-5.6-terra": readonly ["none", "low", "medium", "high", "xhigh", "max"];
475
518
  readonly "gpt-5.6-luna": readonly ["none", "low", "medium", "high", "xhigh", "max"];
@@ -481,6 +524,7 @@ export declare const MODEL_REASONING_EFFORTS: {
481
524
  readonly "claude-sonnet-5": readonly ["none", "low", "medium", "high", "xhigh", "max"];
482
525
  readonly "claude-fable-5-1": readonly ["low", "medium", "high", "xhigh", "max"];
483
526
  readonly "claude-fable-5": readonly ["low", "medium", "high", "xhigh", "max"];
527
+ readonly "claude-opus-5-5": readonly ["low", "medium", "high", "xhigh", "max"];
484
528
  readonly "claude-opus-5": readonly ["low", "medium", "high", "xhigh", "max"];
485
529
  readonly "claude-opus-4-8": readonly ["low", "medium", "high", "xhigh", "max"];
486
530
  readonly "claude-opus-4-7": readonly ["low", "medium", "high", "xhigh", "max"];
@@ -513,6 +557,8 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
513
557
  readonly "gemini-3.5-flash": null;
514
558
  readonly "gemini-3.1-flash-lite": null;
515
559
  readonly "openai/gpt-6-astra": "medium";
560
+ readonly "openai/gpt-6-sol": "medium";
561
+ readonly "openai/gpt-6-luna": "medium";
516
562
  readonly "openai/gpt-5.6-sol": "medium";
517
563
  readonly "openai/gpt-5.6-terra": "medium";
518
564
  readonly "openai/gpt-5.6-luna": "medium";
@@ -530,6 +576,8 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
530
576
  readonly "openai/gpt-5.5": "medium";
531
577
  readonly "openai/gpt-5.4-mini": "medium";
532
578
  readonly "gpt-6-astra": null;
579
+ readonly "gpt-6-sol": null;
580
+ readonly "gpt-6-luna": null;
533
581
  readonly "gpt-5.6": null;
534
582
  readonly "gpt-5.6-terra": null;
535
583
  readonly "gpt-5.6-luna": null;
@@ -541,6 +589,7 @@ export declare const MODEL_DEFAULT_REASONING_EFFORTS: {
541
589
  readonly "claude-sonnet-5": null;
542
590
  readonly "claude-fable-5-1": null;
543
591
  readonly "claude-fable-5": null;
592
+ readonly "claude-opus-5-5": null;
544
593
  readonly "claude-opus-5": null;
545
594
  readonly "claude-opus-4-8": null;
546
595
  readonly "claude-opus-4-7": null;
@@ -573,6 +622,8 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
573
622
  readonly "gemini-3.5-flash": "emit";
574
623
  readonly "gemini-3.1-flash-lite": "emit";
575
624
  readonly "openai/gpt-6-astra": "omit";
625
+ readonly "openai/gpt-6-sol": "omit";
626
+ readonly "openai/gpt-6-luna": "omit";
576
627
  readonly "openai/gpt-5.6-sol": "omit";
577
628
  readonly "openai/gpt-5.6-terra": "omit";
578
629
  readonly "openai/gpt-5.6-luna": "omit";
@@ -590,6 +641,8 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
590
641
  readonly "openai/gpt-5.5": "omit";
591
642
  readonly "openai/gpt-5.4-mini": "omit";
592
643
  readonly "gpt-6-astra": "omit";
644
+ readonly "gpt-6-sol": "omit";
645
+ readonly "gpt-6-luna": "omit";
593
646
  readonly "gpt-5.6": "omit";
594
647
  readonly "gpt-5.6-terra": "omit";
595
648
  readonly "gpt-5.6-luna": "omit";
@@ -601,6 +654,7 @@ export declare const MODEL_TEMPERATURE_POLICIES: {
601
654
  readonly "claude-sonnet-5": "omit";
602
655
  readonly "claude-fable-5-1": "omit";
603
656
  readonly "claude-fable-5": "omit";
657
+ readonly "claude-opus-5-5": "omit";
604
658
  readonly "claude-opus-5": "omit";
605
659
  readonly "claude-opus-4-8": "omit";
606
660
  readonly "claude-opus-4-7": "omit";
@@ -634,6 +688,8 @@ export declare const MODEL_ROLES: readonly ["fast", "chat", "reasoning", "pdf"];
634
688
  export type ModelRole = (typeof MODEL_ROLES)[number];
635
689
  export declare const TEMPERATURE_POLICIES: readonly ["emit", "omit"];
636
690
  export type TemperaturePolicy = (typeof TEMPERATURE_POLICIES)[number];
691
+ export declare const STREAMING_TOOL_USE_SUPPORTS: readonly ["supported", "unsupported"];
692
+ export type StreamingToolUseSupport = (typeof STREAMING_TOOL_USE_SUPPORTS)[number];
637
693
  export declare const AI_PROVIDERS: readonly ["google", "openrouter", "openai", "azure_foundry", "anthropic", "bedrock", "mistral", "openai_compatible", "huggingface"];
638
694
  export type AIProvider = (typeof AI_PROVIDERS)[number];
639
695
  declare const AI_PROVIDER_ADAPTER_KIND: {
@@ -673,28 +729,28 @@ export declare const FIRST_PARTY_MODEL_PROVIDERS: Exclude<FirstPartyModelProvide
673
729
  */
674
730
  export declare const BYOK_DEFAULT_MODELS: {
675
731
  readonly google: {
676
- readonly fast: "gemini-3.7-flash";
677
- readonly chat: "gemini-3.7-flash";
678
- readonly reasoning: "gemini-3.7-flash";
679
- readonly pdf: "gemini-3.7-flash";
732
+ readonly fast: "gemini-3.8-flash";
733
+ readonly chat: "gemini-3.8-flash";
734
+ readonly reasoning: "gemini-3.8-flash";
735
+ readonly pdf: "gemini-3.8-flash";
680
736
  };
681
737
  readonly openrouter: {
682
- readonly fast: "openai/gpt-5.6-luna";
683
- readonly chat: "openai/gpt-5.6-terra";
684
- readonly reasoning: "openai/gpt-5.6-terra";
685
- readonly pdf: "openai/gpt-5.6-terra";
738
+ readonly fast: "openai/gpt-6-luna";
739
+ readonly chat: "openai/gpt-6-sol";
740
+ readonly reasoning: "openai/gpt-6-sol";
741
+ readonly pdf: "openai/gpt-6-sol";
686
742
  };
687
743
  readonly openai: {
688
- readonly fast: "gpt-5.4-nano";
689
- readonly chat: "gpt-5.4-mini";
690
- readonly reasoning: "gpt-5.4";
691
- readonly pdf: "gpt-5.4";
744
+ readonly fast: "gpt-6-luna";
745
+ readonly chat: "gpt-6-sol";
746
+ readonly reasoning: "gpt-6-sol";
747
+ readonly pdf: "gpt-6-sol";
692
748
  };
693
749
  readonly anthropic: {
694
- readonly fast: "claude-opus-5";
695
- readonly chat: "claude-opus-4-8";
696
- readonly reasoning: "claude-opus-5";
697
- readonly pdf: "claude-opus-4-8";
750
+ readonly fast: "claude-opus-5-5";
751
+ readonly chat: "claude-opus-5-5";
752
+ readonly reasoning: "claude-opus-5-5";
753
+ readonly pdf: "claude-opus-5-5";
698
754
  };
699
755
  readonly bedrock: {
700
756
  readonly fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
@@ -716,10 +772,10 @@ export declare const BYOK_DEFAULT_MODELS: {
716
772
  */
717
773
  export declare const DEFAULT_MODELS: {
718
774
  readonly azure_foundry: {
719
- readonly fast: "gpt-5.4-nano";
720
- readonly chat: "gpt-5.4-mini";
721
- readonly reasoning: "gpt-5.4";
722
- readonly pdf: "gpt-5.4";
775
+ readonly fast: "gpt-5.6-luna";
776
+ readonly chat: "gpt-5.6-terra";
777
+ readonly reasoning: "gpt-5.6-terra";
778
+ readonly pdf: "gpt-5.6-terra";
723
779
  };
724
780
  readonly openai_compatible: {
725
781
  readonly fast: "default";
@@ -734,28 +790,28 @@ export declare const DEFAULT_MODELS: {
734
790
  readonly pdf: "speakleash/Bielik-11B-v2.3-Instruct";
735
791
  };
736
792
  readonly google: {
737
- readonly fast: "gemini-3.7-flash";
738
- readonly chat: "gemini-3.7-flash";
739
- readonly reasoning: "gemini-3.7-flash";
740
- readonly pdf: "gemini-3.7-flash";
793
+ readonly fast: "gemini-3.8-flash";
794
+ readonly chat: "gemini-3.8-flash";
795
+ readonly reasoning: "gemini-3.8-flash";
796
+ readonly pdf: "gemini-3.8-flash";
741
797
  };
742
798
  readonly openrouter: {
743
- readonly fast: "openai/gpt-5.6-luna";
744
- readonly chat: "openai/gpt-5.6-terra";
745
- readonly reasoning: "openai/gpt-5.6-terra";
746
- readonly pdf: "openai/gpt-5.6-terra";
799
+ readonly fast: "openai/gpt-6-luna";
800
+ readonly chat: "openai/gpt-6-sol";
801
+ readonly reasoning: "openai/gpt-6-sol";
802
+ readonly pdf: "openai/gpt-6-sol";
747
803
  };
748
804
  readonly openai: {
749
- readonly fast: "gpt-5.4-nano";
750
- readonly chat: "gpt-5.4-mini";
751
- readonly reasoning: "gpt-5.4";
752
- readonly pdf: "gpt-5.4";
805
+ readonly fast: "gpt-6-luna";
806
+ readonly chat: "gpt-6-sol";
807
+ readonly reasoning: "gpt-6-sol";
808
+ readonly pdf: "gpt-6-sol";
753
809
  };
754
810
  readonly anthropic: {
755
- readonly fast: "claude-opus-5";
756
- readonly chat: "claude-opus-4-8";
757
- readonly reasoning: "claude-opus-5";
758
- readonly pdf: "claude-opus-4-8";
811
+ readonly fast: "claude-opus-5-5";
812
+ readonly chat: "claude-opus-5-5";
813
+ readonly reasoning: "claude-opus-5-5";
814
+ readonly pdf: "claude-opus-5-5";
759
815
  };
760
816
  readonly bedrock: {
761
817
  readonly fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
@@ -782,9 +838,9 @@ export declare const DEFAULT_MODELS: {
782
838
  */
783
839
  export declare const BYOK_MODEL_OPTIONS: {
784
840
  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"];
785
- readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-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"];
786
- readonly openai: readonly ["gpt-6-astra", ...("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"];
787
- readonly openrouter: readonly ["openai/gpt-6-astra", ...("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"];
841
+ 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"];
842
+ 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"];
843
+ 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"];
788
844
  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", "us.deepseek.r1-v1:0"];
789
845
  readonly mistral: readonly ["mistral-large-latest", "mistral-medium-latest", "mistral-small-latest"];
790
846
  };
@@ -844,6 +900,10 @@ export declare const MODEL_DISPLAY_METADATA: {
844
900
  readonly displayName: "Claude Fable 5";
845
901
  readonly iconProvider: "anthropic";
846
902
  };
903
+ readonly "claude-opus-5-5": {
904
+ readonly displayName: "Claude Opus 5.5";
905
+ readonly iconProvider: "anthropic";
906
+ };
847
907
  readonly "claude-opus-5": {
848
908
  readonly displayName: "Claude Opus 5";
849
909
  readonly iconProvider: "anthropic";
@@ -872,6 +932,14 @@ export declare const MODEL_DISPLAY_METADATA: {
872
932
  readonly displayName: "GPT-6 Astra";
873
933
  readonly iconProvider: "openai";
874
934
  };
935
+ readonly "gpt-6-sol": {
936
+ readonly displayName: "GPT-6 Sol";
937
+ readonly iconProvider: "openai";
938
+ };
939
+ readonly "gpt-6-luna": {
940
+ readonly displayName: "GPT-6 Luna";
941
+ readonly iconProvider: "openai";
942
+ };
875
943
  readonly "gpt-5.6": {
876
944
  readonly displayName: "GPT-5.6 Sol";
877
945
  readonly iconProvider: "openai";
@@ -908,6 +976,14 @@ export declare const MODEL_DISPLAY_METADATA: {
908
976
  readonly displayName: "GPT-6 Astra";
909
977
  readonly iconProvider: "openai";
910
978
  };
979
+ readonly "openai/gpt-6-sol": {
980
+ readonly displayName: "GPT-6 Sol";
981
+ readonly iconProvider: "openai";
982
+ };
983
+ readonly "openai/gpt-6-luna": {
984
+ readonly displayName: "GPT-6 Luna";
985
+ readonly iconProvider: "openai";
986
+ };
911
987
  readonly "openai/gpt-5.6-sol": {
912
988
  readonly displayName: "GPT-5.6 Sol";
913
989
  readonly iconProvider: "openai";
@@ -1025,9 +1101,9 @@ export declare const getModelDisplayMetadata: (modelId: string) => ModelDisplayM
1025
1101
  */
1026
1102
  export declare const BYOK_DOCUMENT_INPUT_MODEL_OPTIONS: {
1027
1103
  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"];
1028
- readonly openrouter: readonly ["openai/gpt-6-astra", "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"];
1029
- readonly openai: readonly ["gpt-6-astra", "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"];
1030
- readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-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"];
1104
+ 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"];
1105
+ 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"];
1106
+ 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"];
1031
1107
  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"];
1032
1108
  readonly mistral: readonly [];
1033
1109
  };
@@ -1056,9 +1132,9 @@ export declare const isBYOKModelRoleSupported: ({ provider, modelId, role }: {
1056
1132
  export declare const CHAT_PDF_ATTACHMENT_MODEL_OPTIONS: {
1057
1133
  readonly mistral: readonly ["mistral-medium-latest", "mistral-small-latest"];
1058
1134
  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"];
1059
- readonly openrouter: readonly ["openai/gpt-6-astra", "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"];
1060
- readonly openai: readonly ["gpt-6-astra", "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"];
1061
- readonly anthropic: readonly ["claude-sonnet-5", "claude-fable-5-1", "claude-fable-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"];
1135
+ 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"];
1136
+ 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"];
1137
+ 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"];
1062
1138
  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"];
1063
1139
  };
1064
1140
  export declare const isChatPdfAttachmentModelSupported: ({ provider, modelId }: {
@@ -1090,7 +1166,7 @@ export declare const resolveWorkingBYOKModelForRole: ({ provider, modelId, role
1090
1166
  * legacy budget-based form, so every Opus 4.6+/Sonnet 4.6/Fable entry
1091
1167
  * offered above must appear here or it will 400 on the reasoning role.
1092
1168
  */
1093
- 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"];
1169
+ 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"];
1094
1170
  /**
1095
1171
  * Canonical reasoning-effort ladder, ordered weakest to strongest.
1096
1172
  * Union of every effort keyword the offered providers accept; no
@@ -1116,10 +1192,10 @@ export type ResolvedReasoningEffort = v.InferOutput<typeof resolvedReasoningEffo
1116
1192
  * provider lands with an explicit decision.
1117
1193
  */
1118
1194
  export declare const FALLBACK_CHAT_MODEL_BY_PROVIDER: {
1119
- readonly google: "gemini-3.7-flash";
1120
- readonly openrouter: "openai/gpt-5.6-luna";
1121
- readonly openai: "gpt-5.6-luna";
1122
- readonly anthropic: "claude-opus-5";
1195
+ readonly google: "gemini-3.8-flash";
1196
+ readonly openrouter: "openai/gpt-6-luna";
1197
+ readonly openai: "gpt-6-luna";
1198
+ readonly anthropic: "claude-opus-5-5";
1123
1199
  readonly bedrock: "us.anthropic.claude-sonnet-4-5-20250929-v1:0";
1124
1200
  readonly mistral: "mistral-small-latest";
1125
1201
  readonly azure_foundry: null;
@@ -1146,6 +1222,86 @@ export declare const normalizeModelCatalogId: (modelId: string) => string;
1146
1222
  * a runtime string.
1147
1223
  */
1148
1224
  export declare const shouldEmitTemperature: (modelId: string) => boolean;
1225
+ /**
1226
+ * Whether a model accepts tool use on a streaming request.
1227
+ *
1228
+ * Every tool-carrying request stella sends is a stream, and structured
1229
+ * output is a forced tool call, so `"unsupported"` withdraws both: the
1230
+ * provider answers such a request with a fatal stream error rather than a
1231
+ * degraded result. models.dev does not publish this, so the map is
1232
+ * hand-declared here rather than in the generated `capabilities.gen.ts`,
1233
+ * and it is total over the offered catalog: a new model forces a decision.
1234
+ *
1235
+ * Consumers must go through `supportsStreamingToolUse`.
1236
+ */
1237
+ export declare const MODEL_STREAMING_TOOL_USE: {
1238
+ readonly "gemini-3.8-flash": "supported";
1239
+ readonly "gemini-3.7-flash": "supported";
1240
+ readonly "gemini-3.6-flash": "supported";
1241
+ readonly "gemini-3.5-flash-lite": "supported";
1242
+ readonly "gemini-3.1-pro-preview": "supported";
1243
+ readonly "gemini-3.5-flash": "supported";
1244
+ readonly "gemini-3.1-flash-lite": "supported";
1245
+ readonly "openai/gpt-6-astra": "supported";
1246
+ readonly "openai/gpt-6-sol": "supported";
1247
+ readonly "openai/gpt-6-luna": "supported";
1248
+ readonly "openai/gpt-5.6-sol": "supported";
1249
+ readonly "openai/gpt-5.6-terra": "supported";
1250
+ readonly "openai/gpt-5.6-luna": "supported";
1251
+ readonly "google/gemini-3.8-flash": "supported";
1252
+ readonly "google/gemini-3.7-flash": "supported";
1253
+ readonly "google/gemini-3.6-flash": "supported";
1254
+ readonly "google/gemini-3.5-flash-lite": "supported";
1255
+ readonly "google/gemini-3.1-pro-preview": "supported";
1256
+ readonly "google/gemini-3.5-flash": "supported";
1257
+ readonly "google/gemini-3.1-flash-lite": "supported";
1258
+ readonly "anthropic/claude-sonnet-5": "supported";
1259
+ readonly "anthropic/claude-opus-5": "supported";
1260
+ readonly "anthropic/claude-opus-4.8": "supported";
1261
+ readonly "anthropic/claude-sonnet-4.6": "supported";
1262
+ readonly "openai/gpt-5.5": "supported";
1263
+ readonly "openai/gpt-5.4-mini": "supported";
1264
+ readonly "gpt-6-astra": "supported";
1265
+ readonly "gpt-6-sol": "supported";
1266
+ readonly "gpt-6-luna": "supported";
1267
+ readonly "gpt-5.6": "supported";
1268
+ readonly "gpt-5.6-terra": "supported";
1269
+ readonly "gpt-5.6-luna": "supported";
1270
+ readonly "gpt-5.5": "supported";
1271
+ readonly "gpt-5.4": "supported";
1272
+ readonly "gpt-5.4-mini": "supported";
1273
+ readonly "gpt-5.4-nano": "supported";
1274
+ readonly "gpt-5.2": "supported";
1275
+ readonly "claude-sonnet-5": "supported";
1276
+ readonly "claude-fable-5-1": "supported";
1277
+ readonly "claude-fable-5": "supported";
1278
+ readonly "claude-opus-5-5": "supported";
1279
+ readonly "claude-opus-5": "supported";
1280
+ readonly "claude-opus-4-8": "supported";
1281
+ readonly "claude-opus-4-7": "supported";
1282
+ readonly "claude-sonnet-4-6": "supported";
1283
+ readonly "claude-opus-4-6": "supported";
1284
+ readonly "claude-haiku-4-5-20251001": "supported";
1285
+ readonly "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported";
1286
+ readonly "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported";
1287
+ readonly "us.amazon.nova-pro-v1:0": "supported";
1288
+ readonly "us.amazon.nova-lite-v1:0": "supported";
1289
+ readonly "us.amazon.nova-micro-v1:0": "supported";
1290
+ readonly "openai.gpt-oss-120b-1:0": "supported";
1291
+ readonly "openai.gpt-oss-20b-1:0": "supported";
1292
+ readonly "us.deepseek.r1-v1:0": "unsupported";
1293
+ readonly "mistral-large-latest": "supported";
1294
+ readonly "mistral-medium-latest": "supported";
1295
+ readonly "mistral-small-latest": "supported";
1296
+ };
1297
+ /**
1298
+ * Whether stella may send tools (or a structured-output schema) to this
1299
+ * model on a streaming request. Unlisted ids resolve to `true`: custom
1300
+ * deployments and env overrides are overwhelmingly tool-capable, and
1301
+ * withdrawing tools from an uncatalogued model would silently strip the
1302
+ * agent loop rather than fail where it can be seen.
1303
+ */
1304
+ export declare const supportsStreamingToolUse: (modelId: string) => boolean;
1149
1305
  /**
1150
1306
  * Declared reasoning-effort values for a model ID, or `null` when the
1151
1307
  * model has no effort control or is not catalogued (custom deployments,
@@ -1211,6 +1367,8 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1211
1367
  readonly "gpt-5.4": 400000;
1212
1368
  readonly "gpt-5.5": 400000;
1213
1369
  readonly "gpt-6-astra": 922000;
1370
+ readonly "gpt-6-sol": 922000;
1371
+ readonly "gpt-6-luna": 922000;
1214
1372
  readonly "gpt-5.6": 922000;
1215
1373
  readonly "gpt-5.6-luna": 922000;
1216
1374
  readonly "gpt-5.6-terra": 922000;
@@ -1221,6 +1379,7 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1221
1379
  readonly "claude-opus-4-7": 200000;
1222
1380
  readonly "claude-opus-4-8": 200000;
1223
1381
  readonly "claude-opus-5": 1000000;
1382
+ readonly "claude-opus-5-5": 1000000;
1224
1383
  readonly "claude-fable-5": 200000;
1225
1384
  readonly "claude-fable-5-1": 1000000;
1226
1385
  readonly "mistral-small-latest": 128000;
@@ -1240,6 +1399,8 @@ export declare const CONTEXT_WINDOW_TOKENS: {
1240
1399
  readonly "anthropic/claude-opus-4.8": 200000;
1241
1400
  readonly "anthropic/claude-sonnet-4.6": 200000;
1242
1401
  readonly "openai/gpt-6-astra": 922000;
1402
+ readonly "openai/gpt-6-sol": 922000;
1403
+ readonly "openai/gpt-6-luna": 922000;
1243
1404
  readonly "openai/gpt-5.6-sol": 922000;
1244
1405
  readonly "openai/gpt-5.6-luna": 922000;
1245
1406
  readonly "openai/gpt-5.6-terra": 922000;
package/dist/index.js CHANGED
@@ -16,6 +16,8 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
16
16
  ],
17
17
  openrouter: [
18
18
  "openai/gpt-6-astra",
19
+ "openai/gpt-6-sol",
20
+ "openai/gpt-6-luna",
19
21
  "openai/gpt-5.6-sol",
20
22
  "openai/gpt-5.6-terra",
21
23
  "openai/gpt-5.6-luna",
@@ -35,6 +37,8 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
35
37
  ],
36
38
  openai: [
37
39
  "gpt-6-astra",
40
+ "gpt-6-sol",
41
+ "gpt-6-luna",
38
42
  "gpt-5.6",
39
43
  "gpt-5.6-terra",
40
44
  "gpt-5.6-luna",
@@ -48,6 +52,7 @@ const MODEL_DOCUMENT_INPUT_OPTIONS = {
48
52
  "claude-sonnet-5",
49
53
  "claude-fable-5-1",
50
54
  "claude-fable-5",
55
+ "claude-opus-5-5",
51
56
  "claude-opus-5",
52
57
  "claude-opus-4-8",
53
58
  "claude-opus-4-7",
@@ -116,6 +121,22 @@ const MODEL_REASONING_EFFORTS = {
116
121
  "xhigh",
117
122
  "max"
118
123
  ],
124
+ "openai/gpt-6-sol": [
125
+ "none",
126
+ "low",
127
+ "medium",
128
+ "high",
129
+ "xhigh",
130
+ "max"
131
+ ],
132
+ "openai/gpt-6-luna": [
133
+ "none",
134
+ "low",
135
+ "medium",
136
+ "high",
137
+ "xhigh",
138
+ "max"
139
+ ],
119
140
  "openai/gpt-5.6-sol": [
120
141
  "none",
121
142
  "low",
@@ -232,6 +253,22 @@ const MODEL_REASONING_EFFORTS = {
232
253
  "xhigh",
233
254
  "max"
234
255
  ],
256
+ "gpt-6-sol": [
257
+ "none",
258
+ "low",
259
+ "medium",
260
+ "high",
261
+ "xhigh",
262
+ "max"
263
+ ],
264
+ "gpt-6-luna": [
265
+ "none",
266
+ "low",
267
+ "medium",
268
+ "high",
269
+ "xhigh",
270
+ "max"
271
+ ],
235
272
  "gpt-5.6": [
236
273
  "none",
237
274
  "low",
@@ -313,6 +350,13 @@ const MODEL_REASONING_EFFORTS = {
313
350
  "xhigh",
314
351
  "max"
315
352
  ],
353
+ "claude-opus-5-5": [
354
+ "low",
355
+ "medium",
356
+ "high",
357
+ "xhigh",
358
+ "max"
359
+ ],
316
360
  "claude-opus-5": [
317
361
  "low",
318
362
  "medium",
@@ -381,6 +425,8 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
381
425
  "gemini-3.5-flash": null,
382
426
  "gemini-3.1-flash-lite": null,
383
427
  "openai/gpt-6-astra": "medium",
428
+ "openai/gpt-6-sol": "medium",
429
+ "openai/gpt-6-luna": "medium",
384
430
  "openai/gpt-5.6-sol": "medium",
385
431
  "openai/gpt-5.6-terra": "medium",
386
432
  "openai/gpt-5.6-luna": "medium",
@@ -398,6 +444,8 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
398
444
  "openai/gpt-5.5": "medium",
399
445
  "openai/gpt-5.4-mini": "medium",
400
446
  "gpt-6-astra": null,
447
+ "gpt-6-sol": null,
448
+ "gpt-6-luna": null,
401
449
  "gpt-5.6": null,
402
450
  "gpt-5.6-terra": null,
403
451
  "gpt-5.6-luna": null,
@@ -409,6 +457,7 @@ const MODEL_DEFAULT_REASONING_EFFORTS = {
409
457
  "claude-sonnet-5": null,
410
458
  "claude-fable-5-1": null,
411
459
  "claude-fable-5": null,
460
+ "claude-opus-5-5": null,
412
461
  "claude-opus-5": null,
413
462
  "claude-opus-4-8": null,
414
463
  "claude-opus-4-7": null,
@@ -441,6 +490,8 @@ const MODEL_TEMPERATURE_POLICIES = {
441
490
  "gemini-3.5-flash": "emit",
442
491
  "gemini-3.1-flash-lite": "emit",
443
492
  "openai/gpt-6-astra": "omit",
493
+ "openai/gpt-6-sol": "omit",
494
+ "openai/gpt-6-luna": "omit",
444
495
  "openai/gpt-5.6-sol": "omit",
445
496
  "openai/gpt-5.6-terra": "omit",
446
497
  "openai/gpt-5.6-luna": "omit",
@@ -458,6 +509,8 @@ const MODEL_TEMPERATURE_POLICIES = {
458
509
  "openai/gpt-5.5": "omit",
459
510
  "openai/gpt-5.4-mini": "omit",
460
511
  "gpt-6-astra": "omit",
512
+ "gpt-6-sol": "omit",
513
+ "gpt-6-luna": "omit",
461
514
  "gpt-5.6": "omit",
462
515
  "gpt-5.6-terra": "omit",
463
516
  "gpt-5.6-luna": "omit",
@@ -469,6 +522,7 @@ const MODEL_TEMPERATURE_POLICIES = {
469
522
  "claude-sonnet-5": "omit",
470
523
  "claude-fable-5-1": "omit",
471
524
  "claude-fable-5": "omit",
525
+ "claude-opus-5-5": "omit",
472
526
  "claude-opus-5": "omit",
473
527
  "claude-opus-4-8": "omit",
474
528
  "claude-opus-4-7": "omit",
@@ -556,6 +610,38 @@ const MODEL_RATES = {
556
610
  cachedWriteInputPerMTok: 25e5
557
611
  }
558
612
  },
613
+ "gpt-6-sol": {
614
+ kind: "input-token-tiered",
615
+ inputTokenThreshold: 272e3,
616
+ standard: {
617
+ inputPerMTok: 2e5,
618
+ outputPerMTok: 1e6,
619
+ cachedInputPerMTok: 2e4,
620
+ cachedWriteInputPerMTok: 25e4
621
+ },
622
+ aboveThreshold: {
623
+ inputPerMTok: 4e5,
624
+ outputPerMTok: 15e5,
625
+ cachedInputPerMTok: 4e4,
626
+ cachedWriteInputPerMTok: 5e5
627
+ }
628
+ },
629
+ "gpt-6-luna": {
630
+ kind: "input-token-tiered",
631
+ inputTokenThreshold: 272e3,
632
+ standard: {
633
+ inputPerMTok: 1e4,
634
+ outputPerMTok: 5e4,
635
+ cachedInputPerMTok: 1e3,
636
+ cachedWriteInputPerMTok: 12500
637
+ },
638
+ aboveThreshold: {
639
+ inputPerMTok: 2e4,
640
+ outputPerMTok: 75e3,
641
+ cachedInputPerMTok: 2e3,
642
+ cachedWriteInputPerMTok: 25e3
643
+ }
644
+ },
559
645
  "gpt-5.6": {
560
646
  kind: "input-token-tiered",
561
647
  inputTokenThreshold: 272e3,
@@ -671,6 +757,13 @@ const MODEL_RATES = {
671
757
  cachedInputPerMTok: 1e5,
672
758
  cachedWriteInputPerMTok: 125e4
673
759
  },
760
+ "claude-opus-5-5": {
761
+ kind: "flat",
762
+ inputPerMTok: 4e5,
763
+ outputPerMTok: 2e6,
764
+ cachedInputPerMTok: 2e4,
765
+ cachedWriteInputPerMTok: 5e5
766
+ },
674
767
  "claude-opus-5": {
675
768
  kind: "flat",
676
769
  inputPerMTok: 5e5,
@@ -924,6 +1017,7 @@ const MODEL_ROLES = [
924
1017
  "pdf"
925
1018
  ];
926
1019
  const TEMPERATURE_POLICIES = ["emit", "omit"];
1020
+ const STREAMING_TOOL_USE_SUPPORTS = ["supported", "unsupported"];
927
1021
  const AI_PROVIDERS = [
928
1022
  "google",
929
1023
  "openrouter",
@@ -963,6 +1057,26 @@ const FIRST_PARTY_MODEL_PROVIDERS = [
963
1057
  "mistral"
964
1058
  ];
965
1059
  /**
1060
+ * Provider IDs for the GPT-6 family. Like GPT-5.6 below, one row feeds both
1061
+ * the OpenAI and the OpenRouter picker.
1062
+ */
1063
+ const GPT_6_MODEL_IDS = {
1064
+ astra: {
1065
+ openai: "gpt-6-astra",
1066
+ openrouter: "openai/gpt-6-astra"
1067
+ },
1068
+ sol: {
1069
+ openai: "gpt-6-sol",
1070
+ openrouter: "openai/gpt-6-sol"
1071
+ },
1072
+ luna: {
1073
+ openai: "gpt-6-luna",
1074
+ openrouter: "openai/gpt-6-luna"
1075
+ }
1076
+ };
1077
+ const GPT_6_OPENAI_MODEL_IDS = Object.values(GPT_6_MODEL_IDS).map(({ openai }) => openai);
1078
+ const GPT_6_OPENROUTER_MODEL_IDS = Object.values(GPT_6_MODEL_IDS).map(({ openrouter }) => openrouter);
1079
+ /**
966
1080
  * Provider IDs for the GPT-5.6 family. OpenAI exposes Sol through the
967
1081
  * `gpt-5.6` alias while OpenRouter uses the explicit `gpt-5.6-sol` ID. Keep
968
1082
  * both routes in one row so adding a family member cannot update one picker
@@ -991,28 +1105,28 @@ const GPT_56_OPENROUTER_MODEL_IDS = Object.values(GPT_56_MODEL_IDS).map(({ openr
991
1105
  */
992
1106
  const BYOK_DEFAULT_MODELS = {
993
1107
  google: {
994
- fast: "gemini-3.7-flash",
995
- chat: "gemini-3.7-flash",
996
- reasoning: "gemini-3.7-flash",
997
- pdf: "gemini-3.7-flash"
1108
+ fast: "gemini-3.8-flash",
1109
+ chat: "gemini-3.8-flash",
1110
+ reasoning: "gemini-3.8-flash",
1111
+ pdf: "gemini-3.8-flash"
998
1112
  },
999
1113
  openrouter: {
1000
- fast: GPT_56_MODEL_IDS.luna.openrouter,
1001
- chat: GPT_56_MODEL_IDS.terra.openrouter,
1002
- reasoning: GPT_56_MODEL_IDS.terra.openrouter,
1003
- pdf: GPT_56_MODEL_IDS.terra.openrouter
1114
+ fast: GPT_6_MODEL_IDS.luna.openrouter,
1115
+ chat: GPT_6_MODEL_IDS.sol.openrouter,
1116
+ reasoning: GPT_6_MODEL_IDS.sol.openrouter,
1117
+ pdf: GPT_6_MODEL_IDS.sol.openrouter
1004
1118
  },
1005
1119
  openai: {
1006
- fast: "gpt-5.4-nano",
1007
- chat: "gpt-5.4-mini",
1008
- reasoning: "gpt-5.4",
1009
- pdf: "gpt-5.4"
1120
+ fast: GPT_6_MODEL_IDS.luna.openai,
1121
+ chat: GPT_6_MODEL_IDS.sol.openai,
1122
+ reasoning: GPT_6_MODEL_IDS.sol.openai,
1123
+ pdf: GPT_6_MODEL_IDS.sol.openai
1010
1124
  },
1011
1125
  anthropic: {
1012
- fast: "claude-opus-5",
1013
- chat: "claude-opus-4-8",
1014
- reasoning: "claude-opus-5",
1015
- pdf: "claude-opus-4-8"
1126
+ fast: "claude-opus-5-5",
1127
+ chat: "claude-opus-5-5",
1128
+ reasoning: "claude-opus-5-5",
1129
+ pdf: "claude-opus-5-5"
1016
1130
  },
1017
1131
  bedrock: {
1018
1132
  fast: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
@@ -1035,10 +1149,10 @@ const BYOK_DEFAULT_MODELS = {
1035
1149
  const DEFAULT_MODELS = {
1036
1150
  ...BYOK_DEFAULT_MODELS,
1037
1151
  azure_foundry: {
1038
- fast: "gpt-5.4-nano",
1039
- chat: "gpt-5.4-mini",
1040
- reasoning: "gpt-5.4",
1041
- pdf: "gpt-5.4"
1152
+ fast: GPT_56_MODEL_IDS.luna.openai,
1153
+ chat: GPT_56_MODEL_IDS.terra.openai,
1154
+ reasoning: GPT_56_MODEL_IDS.terra.openai,
1155
+ pdf: GPT_56_MODEL_IDS.terra.openai
1042
1156
  },
1043
1157
  openai_compatible: {
1044
1158
  fast: "default",
@@ -1077,6 +1191,7 @@ const BYOK_MODEL_OPTIONS = {
1077
1191
  "claude-sonnet-5",
1078
1192
  "claude-fable-5-1",
1079
1193
  "claude-fable-5",
1194
+ "claude-opus-5-5",
1080
1195
  "claude-opus-5",
1081
1196
  "claude-opus-4-8",
1082
1197
  "claude-opus-4-7",
@@ -1085,7 +1200,7 @@ const BYOK_MODEL_OPTIONS = {
1085
1200
  "claude-haiku-4-5-20251001"
1086
1201
  ],
1087
1202
  openai: [
1088
- "gpt-6-astra",
1203
+ ...GPT_6_OPENAI_MODEL_IDS,
1089
1204
  ...GPT_56_OPENAI_MODEL_IDS,
1090
1205
  "gpt-5.5",
1091
1206
  "gpt-5.4",
@@ -1094,7 +1209,7 @@ const BYOK_MODEL_OPTIONS = {
1094
1209
  "gpt-5.2"
1095
1210
  ],
1096
1211
  openrouter: [
1097
- "openai/gpt-6-astra",
1212
+ ...GPT_6_OPENROUTER_MODEL_IDS,
1098
1213
  ...GPT_56_OPENROUTER_MODEL_IDS,
1099
1214
  "google/gemini-3.8-flash",
1100
1215
  "google/gemini-3.7-flash",
@@ -1173,6 +1288,10 @@ const MODEL_DISPLAY_METADATA = {
1173
1288
  displayName: "Claude Fable 5",
1174
1289
  iconProvider: "anthropic"
1175
1290
  },
1291
+ "claude-opus-5-5": {
1292
+ displayName: "Claude Opus 5.5",
1293
+ iconProvider: "anthropic"
1294
+ },
1176
1295
  "claude-opus-5": {
1177
1296
  displayName: "Claude Opus 5",
1178
1297
  iconProvider: "anthropic"
@@ -1197,10 +1316,18 @@ const MODEL_DISPLAY_METADATA = {
1197
1316
  displayName: "Claude Haiku 4.5",
1198
1317
  iconProvider: "anthropic"
1199
1318
  },
1200
- "gpt-6-astra": {
1319
+ [GPT_6_MODEL_IDS.astra.openai]: {
1201
1320
  displayName: "GPT-6 Astra",
1202
1321
  iconProvider: "openai"
1203
1322
  },
1323
+ [GPT_6_MODEL_IDS.sol.openai]: {
1324
+ displayName: "GPT-6 Sol",
1325
+ iconProvider: "openai"
1326
+ },
1327
+ [GPT_6_MODEL_IDS.luna.openai]: {
1328
+ displayName: "GPT-6 Luna",
1329
+ iconProvider: "openai"
1330
+ },
1204
1331
  [GPT_56_MODEL_IDS.sol.openai]: {
1205
1332
  displayName: "GPT-5.6 Sol",
1206
1333
  iconProvider: "openai"
@@ -1233,10 +1360,18 @@ const MODEL_DISPLAY_METADATA = {
1233
1360
  displayName: "GPT-5.2",
1234
1361
  iconProvider: "openai"
1235
1362
  },
1236
- "openai/gpt-6-astra": {
1363
+ [GPT_6_MODEL_IDS.astra.openrouter]: {
1237
1364
  displayName: "GPT-6 Astra",
1238
1365
  iconProvider: "openai"
1239
1366
  },
1367
+ [GPT_6_MODEL_IDS.sol.openrouter]: {
1368
+ displayName: "GPT-6 Sol",
1369
+ iconProvider: "openai"
1370
+ },
1371
+ [GPT_6_MODEL_IDS.luna.openrouter]: {
1372
+ displayName: "GPT-6 Luna",
1373
+ iconProvider: "openai"
1374
+ },
1240
1375
  [GPT_56_MODEL_IDS.sol.openrouter]: {
1241
1376
  displayName: "GPT-5.6 Sol",
1242
1377
  iconProvider: "openai"
@@ -1435,7 +1570,8 @@ const ANTHROPIC_ADAPTIVE_THINKING_MODELS = [
1435
1570
  "claude-opus-4-7",
1436
1571
  "claude-opus-4-8",
1437
1572
  "claude-fable-5",
1438
- "claude-fable-5-1"
1573
+ "claude-fable-5-1",
1574
+ "claude-opus-5-5"
1439
1575
  ];
1440
1576
  /**
1441
1577
  * Canonical reasoning-effort ladder, ordered weakest to strongest.
@@ -1462,8 +1598,8 @@ const resolvedReasoningEffortSchema = v.pipe(v.picklist(REASONING_EFFORTS), v.br
1462
1598
  */
1463
1599
  const FALLBACK_CHAT_MODEL_BY_PROVIDER = {
1464
1600
  google: DEFAULT_MODELS.google.fast,
1465
- openrouter: "openai/gpt-5.6-luna",
1466
- openai: "gpt-5.6-luna",
1601
+ openrouter: DEFAULT_MODELS.openrouter.fast,
1602
+ openai: DEFAULT_MODELS.openai.fast,
1467
1603
  anthropic: DEFAULT_MODELS.anthropic.fast,
1468
1604
  bedrock: DEFAULT_MODELS.bedrock.fast,
1469
1605
  mistral: DEFAULT_MODELS.mistral.fast,
@@ -1493,6 +1629,87 @@ const MODEL_TEMPERATURE_POLICY_BY_ID = MODEL_TEMPERATURE_POLICIES;
1493
1629
  * a runtime string.
1494
1630
  */
1495
1631
  const shouldEmitTemperature = (modelId) => MODEL_TEMPERATURE_POLICY_BY_ID[normalizeModelCatalogId(modelId)] === "emit";
1632
+ /**
1633
+ * Whether a model accepts tool use on a streaming request.
1634
+ *
1635
+ * Every tool-carrying request stella sends is a stream, and structured
1636
+ * output is a forced tool call, so `"unsupported"` withdraws both: the
1637
+ * provider answers such a request with a fatal stream error rather than a
1638
+ * degraded result. models.dev does not publish this, so the map is
1639
+ * hand-declared here rather than in the generated `capabilities.gen.ts`,
1640
+ * and it is total over the offered catalog: a new model forces a decision.
1641
+ *
1642
+ * Consumers must go through `supportsStreamingToolUse`.
1643
+ */
1644
+ const MODEL_STREAMING_TOOL_USE = {
1645
+ "gemini-3.8-flash": "supported",
1646
+ "gemini-3.7-flash": "supported",
1647
+ "gemini-3.6-flash": "supported",
1648
+ "gemini-3.5-flash-lite": "supported",
1649
+ "gemini-3.1-pro-preview": "supported",
1650
+ "gemini-3.5-flash": "supported",
1651
+ "gemini-3.1-flash-lite": "supported",
1652
+ "openai/gpt-6-astra": "supported",
1653
+ "openai/gpt-6-sol": "supported",
1654
+ "openai/gpt-6-luna": "supported",
1655
+ "openai/gpt-5.6-sol": "supported",
1656
+ "openai/gpt-5.6-terra": "supported",
1657
+ "openai/gpt-5.6-luna": "supported",
1658
+ "google/gemini-3.8-flash": "supported",
1659
+ "google/gemini-3.7-flash": "supported",
1660
+ "google/gemini-3.6-flash": "supported",
1661
+ "google/gemini-3.5-flash-lite": "supported",
1662
+ "google/gemini-3.1-pro-preview": "supported",
1663
+ "google/gemini-3.5-flash": "supported",
1664
+ "google/gemini-3.1-flash-lite": "supported",
1665
+ "anthropic/claude-sonnet-5": "supported",
1666
+ "anthropic/claude-opus-5": "supported",
1667
+ "anthropic/claude-opus-4.8": "supported",
1668
+ "anthropic/claude-sonnet-4.6": "supported",
1669
+ "openai/gpt-5.5": "supported",
1670
+ "openai/gpt-5.4-mini": "supported",
1671
+ "gpt-6-astra": "supported",
1672
+ "gpt-6-sol": "supported",
1673
+ "gpt-6-luna": "supported",
1674
+ "gpt-5.6": "supported",
1675
+ "gpt-5.6-terra": "supported",
1676
+ "gpt-5.6-luna": "supported",
1677
+ "gpt-5.5": "supported",
1678
+ "gpt-5.4": "supported",
1679
+ "gpt-5.4-mini": "supported",
1680
+ "gpt-5.4-nano": "supported",
1681
+ "gpt-5.2": "supported",
1682
+ "claude-sonnet-5": "supported",
1683
+ "claude-fable-5-1": "supported",
1684
+ "claude-fable-5": "supported",
1685
+ "claude-opus-5-5": "supported",
1686
+ "claude-opus-5": "supported",
1687
+ "claude-opus-4-8": "supported",
1688
+ "claude-opus-4-7": "supported",
1689
+ "claude-sonnet-4-6": "supported",
1690
+ "claude-opus-4-6": "supported",
1691
+ "claude-haiku-4-5-20251001": "supported",
1692
+ "us.anthropic.claude-sonnet-4-5-20250929-v1:0": "supported",
1693
+ "us.anthropic.claude-haiku-4-5-20251001-v1:0": "supported",
1694
+ "us.amazon.nova-pro-v1:0": "supported",
1695
+ "us.amazon.nova-lite-v1:0": "supported",
1696
+ "us.amazon.nova-micro-v1:0": "supported",
1697
+ "openai.gpt-oss-120b-1:0": "supported",
1698
+ "openai.gpt-oss-20b-1:0": "supported",
1699
+ "us.deepseek.r1-v1:0": "unsupported",
1700
+ "mistral-large-latest": "supported",
1701
+ "mistral-medium-latest": "supported",
1702
+ "mistral-small-latest": "supported"
1703
+ };
1704
+ const MODEL_STREAMING_TOOL_USE_BY_ID = MODEL_STREAMING_TOOL_USE;
1705
+ /**
1706
+ * Whether stella may send tools (or a structured-output schema) to this
1707
+ * model on a streaming request. Unlisted ids resolve to `true`: custom
1708
+ * deployments and env overrides are overwhelmingly tool-capable, and
1709
+ * withdrawing tools from an uncatalogued model would silently strip the
1710
+ * agent loop rather than fail where it can be seen.
1711
+ */
1712
+ const supportsStreamingToolUse = (modelId) => MODEL_STREAMING_TOOL_USE_BY_ID[normalizeModelCatalogId(modelId)] !== "unsupported";
1496
1713
  const MODEL_REASONING_EFFORTS_BY_ID = MODEL_REASONING_EFFORTS;
1497
1714
  /**
1498
1715
  * Declared reasoning-effort values for a model ID, or `null` when the
@@ -1581,6 +1798,8 @@ const CONTEXT_WINDOW_TOKENS = {
1581
1798
  "gpt-5.4": 4e5,
1582
1799
  "gpt-5.5": 4e5,
1583
1800
  "gpt-6-astra": 922e3,
1801
+ "gpt-6-sol": 922e3,
1802
+ "gpt-6-luna": 922e3,
1584
1803
  "gpt-5.6": 922e3,
1585
1804
  "gpt-5.6-luna": 922e3,
1586
1805
  "gpt-5.6-terra": 922e3,
@@ -1591,6 +1810,7 @@ const CONTEXT_WINDOW_TOKENS = {
1591
1810
  "claude-opus-4-7": 2e5,
1592
1811
  "claude-opus-4-8": 2e5,
1593
1812
  "claude-opus-5": 1e6,
1813
+ "claude-opus-5-5": 1e6,
1594
1814
  "claude-fable-5": 2e5,
1595
1815
  "claude-fable-5-1": 1e6,
1596
1816
  "mistral-small-latest": 128e3,
@@ -1610,6 +1830,8 @@ const CONTEXT_WINDOW_TOKENS = {
1610
1830
  "anthropic/claude-opus-4.8": 2e5,
1611
1831
  "anthropic/claude-sonnet-4.6": 2e5,
1612
1832
  "openai/gpt-6-astra": 922e3,
1833
+ "openai/gpt-6-sol": 922e3,
1834
+ "openai/gpt-6-luna": 922e3,
1613
1835
  "openai/gpt-5.6-sol": 922e3,
1614
1836
  "openai/gpt-5.6-luna": 922e3,
1615
1837
  "openai/gpt-5.6-terra": 922e3,
@@ -1638,4 +1860,4 @@ const DEFAULT_CONTEXT_WINDOW_TOKENS = 128e3;
1638
1860
  */
1639
1861
  const getContextWindowTokens = (modelId) => CONTEXT_WINDOW_TOKENS_BY_ID[normalizeModelCatalogId(modelId)] ?? 128e3;
1640
1862
  //#endregion
1641
- 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_TEMPERATURE_POLICIES, REASONING_EFFORTS, RETAINED_MODELS_DEV_RATE_ENTRIES, TANSTACK_AI_PROVIDERS, TEMPERATURE_POLICIES, getContextWindowTokens, getModelDefaultReasoningEffort, getModelDisplayMetadata, getModelRate, getModelReasoningEfforts, getStandardModelRate, isBYOKModelRoleSupported, isBYOKProviderRoleSupported, isChatPdfAttachmentModelSupported, normalizeModelCatalogId, resolveModelRate, resolveReasoningEffort, resolveWorkingBYOKModelForRole, shouldEmitTemperature };
1863
+ 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stll/ai-catalog",
3
- "version": "0.1.14",
3
+ "version": "0.2.1",
4
4
  "description": "Provider-neutral AI model roles, capabilities, and curated model metadata.",
5
5
  "keywords": [
6
6
  "ai",
@@ -47,15 +47,15 @@
47
47
  "prepack": "bun run build"
48
48
  },
49
49
  "dependencies": {
50
- "valibot": "1.4.2"
50
+ "valibot": "1.5.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@stll/typescript-config": "0.0.0",
54
- "@tanstack/ai-anthropic": "0.18.5",
55
- "@tanstack/ai-bedrock": "0.3.7",
56
- "@tanstack/ai-gemini": "0.29.1",
57
- "@tanstack/ai-mistral": "0.6.1",
58
- "@tanstack/ai-openrouter": "0.19.8",
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",
59
59
  "bun-types": "1.4.2",
60
60
  "tsdown": "0.23.0"
61
61
  },