@agentproto/model-catalog 0.10.3 → 0.11.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 (36) hide show
  1. package/dist/access/index.d.ts +3 -3
  2. package/dist/access/index.mjs +4 -4
  3. package/dist/{catalog-BAb74hY-.d.ts → catalog-C7U9nauo.d.ts} +580 -31
  4. package/dist/{chunk-5VXG5VZA.mjs → chunk-CP7JCOA5.mjs} +5 -5
  5. package/dist/{chunk-5VXG5VZA.mjs.map → chunk-CP7JCOA5.mjs.map} +1 -1
  6. package/dist/{chunk-PL4ALP73.mjs → chunk-D3I73UJI.mjs} +68 -87
  7. package/dist/chunk-D3I73UJI.mjs.map +1 -0
  8. package/dist/{chunk-Z6DB2FB7.mjs → chunk-FKBNW5BP.mjs} +3 -3
  9. package/dist/{chunk-Z6DB2FB7.mjs.map → chunk-FKBNW5BP.mjs.map} +1 -1
  10. package/dist/{chunk-7DKQFHCJ.mjs → chunk-GVYUTTTK.mjs} +4 -4
  11. package/dist/{chunk-7DKQFHCJ.mjs.map → chunk-GVYUTTTK.mjs.map} +1 -1
  12. package/dist/{chunk-ZQ6VOPGQ.mjs → chunk-SORQIIXD.mjs} +3 -3
  13. package/dist/{chunk-ZQ6VOPGQ.mjs.map → chunk-SORQIIXD.mjs.map} +1 -1
  14. package/dist/{chunk-DHMYBXQB.mjs → chunk-VABWB67A.mjs} +3 -3
  15. package/dist/{chunk-DHMYBXQB.mjs.map → chunk-VABWB67A.mjs.map} +1 -1
  16. package/dist/{chunk-S2EJIT6D.mjs → chunk-VZCVDFNS.mjs} +216 -128
  17. package/dist/chunk-VZCVDFNS.mjs.map +1 -0
  18. package/dist/{chunk-KJYNTETN.mjs → chunk-X4GZCBVI.mjs} +4 -4
  19. package/dist/{chunk-KJYNTETN.mjs.map → chunk-X4GZCBVI.mjs.map} +1 -1
  20. package/dist/cost/index.mjs +6 -6
  21. package/dist/curation/index.d.ts +2 -2
  22. package/dist/curation/index.mjs +6 -6
  23. package/dist/{evaluate-B83jX17h.d.ts → evaluate-Dm45YM9p.d.ts} +1 -1
  24. package/dist/{index-BWvtVzEG.d.ts → index-D9Ir5Xyq.d.ts} +2 -2
  25. package/dist/{index-vC37SFpk.d.ts → index-qTi3go0T.d.ts} +1 -1
  26. package/dist/index.d.ts +5 -5
  27. package/dist/index.mjs +10 -10
  28. package/dist/llm/index.d.ts +1 -1
  29. package/dist/llm/index.mjs +2 -2
  30. package/dist/overlay/index.d.ts +1 -1
  31. package/dist/picker/index.d.ts +4 -4
  32. package/dist/route-identity/index.d.ts +1 -1
  33. package/dist/route-identity/index.mjs +2 -2
  34. package/package.json +1 -1
  35. package/dist/chunk-PL4ALP73.mjs.map +0 -1
  36. package/dist/chunk-S2EJIT6D.mjs.map +0 -1
@@ -10,6 +10,23 @@ interface ContextWindowEntry {
10
10
  }
11
11
  declare const CONTEXT_WINDOWS: Record<string, ContextWindowEntry>;
12
12
 
13
+ /**
14
+ * OpenAI-listed ids with NO price from either source — emitted as
15
+ * existence-only so they are real members of `LlmModelId` and answer true
16
+ * to `isKnownLlmId`, without a fabricated zero in `LLM_PRICING_CATALOG`.
17
+ * "Does this model exist" and "what does it cost" are independent questions
18
+ * in this catalog by design — see `LlmModelId`'s doc comment. Most of these
19
+ * are dated snapshots (`gpt-5.4-2026-03-05`) and aliases the docs pricing
20
+ * page lists only under their undated base id; deriving a price from that
21
+ * base would be inference, not data, so it is not done.
22
+ *
23
+ * `chat-latest` is here for a different reason — it IS officially priced,
24
+ * but a bare key that generic would win `resolvePricing`'s substring scan
25
+ * against every `*-chat-latest` id and reprice them. See
26
+ * `AMBIGUOUS_BARE_IDS` in catalog-sync's `sources/openai-catalog.mjs`.
27
+ */
28
+ declare const OPENAI_GENERATED_UNPRICED_IDS: readonly [];
29
+
13
30
  /**
14
31
  * LLM Pricing Catalog — per-token costs for all LLM models.
15
32
  *
@@ -92,6 +109,30 @@ interface LLMPricing {
92
109
  * `packages/catalog-sync/README.md` for the full convention.
93
110
  */
94
111
  addedAt?: string;
112
+ /**
113
+ * Which source supplied THIS row's numbers. Generator-owned and purely
114
+ * informational — nothing routes or bills on it; it exists so a reviewer
115
+ * reading a sync diff can tell a first-party price change from a router's
116
+ * passthrough rate drifting.
117
+ *
118
+ * Currently emitted only by `scripts/catalog-sync/sync-openai.mjs`, where
119
+ * the two sources genuinely disagree on some rows:
120
+ * - `"openai"` — OpenAI's own published pricing
121
+ * (`platform.openai.com/docs/pricing.md`).
122
+ * - `"openrouter"` — OpenRouter's passthrough rate, used where OpenAI's
123
+ * page does not list the id.
124
+ */
125
+ priceSource?: "openai" | "openrouter";
126
+ /**
127
+ * Which list this row's ID came from. Also generator-owned and
128
+ * informational. `"openrouter"` marks an id that the provider's own
129
+ * `/v1/models` does not list — for OpenAI that is mostly ids which
130
+ * structurally cannot appear there (`<base>:batch` is a separate endpoint,
131
+ * `gpt-oss-*` is open-weights and not served by OpenAI's API) plus ids the
132
+ * syncing account has no entitlement to. They are kept rather than dropped
133
+ * precisely so the catalog is not a function of whose key ran the sync.
134
+ */
135
+ idSource?: "openai" | "openrouter";
95
136
  }
96
137
 
97
138
  declare const LLM_PRICING_CATALOG: {
@@ -649,8 +690,8 @@ declare const LLM_PRICING_CATALOG: {
649
690
  readonly provider: "minimax";
650
691
  };
651
692
  "MiniMax-M2": {
652
- readonly inputPer1M: 0.255;
653
- readonly outputPer1M: 1.02;
693
+ readonly inputPer1M: 0.3;
694
+ readonly outputPer1M: 1.2;
654
695
  readonly vendor: "minimax";
655
696
  readonly provider: "minimax";
656
697
  };
@@ -669,8 +710,8 @@ declare const LLM_PRICING_CATALOG: {
669
710
  readonly provider: "minimax";
670
711
  };
671
712
  "MiniMax-M2.7": {
672
- readonly inputPer1M: 0.3;
673
- readonly outputPer1M: 1.2;
713
+ readonly inputPer1M: 0.21;
714
+ readonly outputPer1M: 0.84;
674
715
  readonly cacheReadMultiplier: 0.2;
675
716
  readonly vendor: "minimax";
676
717
  readonly provider: "minimax";
@@ -680,42 +721,64 @@ declare const LLM_PRICING_CATALOG: {
680
721
  readonly outputPer1M: 1.5;
681
722
  readonly vendor: "openai";
682
723
  readonly provider: "openai";
724
+ readonly priceSource: "openai";
725
+ readonly idSource: "openrouter";
683
726
  };
684
727
  "gpt-3.5-turbo-0613": {
685
728
  readonly inputPer1M: 1;
686
729
  readonly outputPer1M: 2;
687
730
  readonly vendor: "openai";
688
731
  readonly provider: "openai";
732
+ readonly priceSource: "openrouter";
733
+ readonly idSource: "openrouter";
689
734
  };
690
735
  "gpt-3.5-turbo-16k": {
691
736
  readonly inputPer1M: 3;
692
737
  readonly outputPer1M: 4;
693
738
  readonly vendor: "openai";
694
739
  readonly provider: "openai";
740
+ readonly priceSource: "openrouter";
741
+ readonly idSource: "openrouter";
695
742
  };
696
743
  "gpt-3.5-turbo-instruct": {
697
744
  readonly inputPer1M: 1.5;
698
745
  readonly outputPer1M: 2;
699
746
  readonly vendor: "openai";
700
747
  readonly provider: "openai";
748
+ readonly priceSource: "openai";
749
+ readonly idSource: "openrouter";
750
+ };
751
+ "gpt-3.5-turbo:batch": {
752
+ readonly inputPer1M: 0.25;
753
+ readonly outputPer1M: 0.75;
754
+ readonly vendor: "openai";
755
+ readonly provider: "openai";
756
+ readonly priceSource: "openrouter";
757
+ readonly idSource: "openrouter";
701
758
  };
702
759
  "gpt-4": {
703
760
  readonly inputPer1M: 30;
704
761
  readonly outputPer1M: 60;
705
762
  readonly vendor: "openai";
706
763
  readonly provider: "openai";
764
+ readonly priceSource: "openrouter";
765
+ readonly idSource: "openrouter";
707
766
  };
708
767
  "gpt-4-turbo": {
709
768
  readonly inputPer1M: 10;
710
769
  readonly outputPer1M: 30;
711
770
  readonly vendor: "openai";
712
771
  readonly provider: "openai";
772
+ readonly priceSource: "openrouter";
773
+ readonly idSource: "openrouter";
713
774
  };
714
- "gpt-4-turbo-preview": {
715
- readonly inputPer1M: 10;
716
- readonly outputPer1M: 30;
775
+ "gpt-4-turbo:batch": {
776
+ readonly inputPer1M: 5;
777
+ readonly outputPer1M: 15;
717
778
  readonly vendor: "openai";
718
779
  readonly provider: "openai";
780
+ readonly priceSource: "openrouter";
781
+ readonly idSource: "openrouter";
719
782
  };
720
783
  "gpt-4.1": {
721
784
  readonly inputPer1M: 2;
@@ -723,6 +786,8 @@ declare const LLM_PRICING_CATALOG: {
723
786
  readonly cacheReadMultiplier: 0.25;
724
787
  readonly vendor: "openai";
725
788
  readonly provider: "openai";
789
+ readonly priceSource: "openai";
790
+ readonly idSource: "openrouter";
726
791
  };
727
792
  "gpt-4.1-mini": {
728
793
  readonly inputPer1M: 0.4;
@@ -730,6 +795,16 @@ declare const LLM_PRICING_CATALOG: {
730
795
  readonly cacheReadMultiplier: 0.25;
731
796
  readonly vendor: "openai";
732
797
  readonly provider: "openai";
798
+ readonly priceSource: "openai";
799
+ readonly idSource: "openrouter";
800
+ };
801
+ "gpt-4.1-mini:batch": {
802
+ readonly inputPer1M: 0.2;
803
+ readonly outputPer1M: 0.8;
804
+ readonly vendor: "openai";
805
+ readonly provider: "openai";
806
+ readonly priceSource: "openai";
807
+ readonly idSource: "openrouter";
733
808
  };
734
809
  "gpt-4.1-nano": {
735
810
  readonly inputPer1M: 0.1;
@@ -737,6 +812,24 @@ declare const LLM_PRICING_CATALOG: {
737
812
  readonly cacheReadMultiplier: 0.25;
738
813
  readonly vendor: "openai";
739
814
  readonly provider: "openai";
815
+ readonly priceSource: "openai";
816
+ readonly idSource: "openrouter";
817
+ };
818
+ "gpt-4.1-nano:batch": {
819
+ readonly inputPer1M: 0.05;
820
+ readonly outputPer1M: 0.2;
821
+ readonly vendor: "openai";
822
+ readonly provider: "openai";
823
+ readonly priceSource: "openai";
824
+ readonly idSource: "openrouter";
825
+ };
826
+ "gpt-4.1:batch": {
827
+ readonly inputPer1M: 1;
828
+ readonly outputPer1M: 4;
829
+ readonly vendor: "openai";
830
+ readonly provider: "openai";
831
+ readonly priceSource: "openai";
832
+ readonly idSource: "openrouter";
740
833
  };
741
834
  "gpt-4o": {
742
835
  readonly inputPer1M: 2.5;
@@ -744,12 +837,16 @@ declare const LLM_PRICING_CATALOG: {
744
837
  readonly cacheReadMultiplier: 0.5;
745
838
  readonly vendor: "openai";
746
839
  readonly provider: "openai";
840
+ readonly priceSource: "openai";
841
+ readonly idSource: "openrouter";
747
842
  };
748
843
  "gpt-4o-2024-05-13": {
749
844
  readonly inputPer1M: 5;
750
845
  readonly outputPer1M: 15;
751
846
  readonly vendor: "openai";
752
847
  readonly provider: "openai";
848
+ readonly priceSource: "openai";
849
+ readonly idSource: "openrouter";
753
850
  };
754
851
  "gpt-4o-2024-08-06": {
755
852
  readonly inputPer1M: 2.5;
@@ -757,6 +854,8 @@ declare const LLM_PRICING_CATALOG: {
757
854
  readonly cacheReadMultiplier: 0.5;
758
855
  readonly vendor: "openai";
759
856
  readonly provider: "openai";
857
+ readonly priceSource: "openrouter";
858
+ readonly idSource: "openrouter";
760
859
  };
761
860
  "gpt-4o-2024-11-20": {
762
861
  readonly inputPer1M: 2.5;
@@ -764,6 +863,8 @@ declare const LLM_PRICING_CATALOG: {
764
863
  readonly cacheReadMultiplier: 0.5;
765
864
  readonly vendor: "openai";
766
865
  readonly provider: "openai";
866
+ readonly priceSource: "openrouter";
867
+ readonly idSource: "openrouter";
767
868
  };
768
869
  "gpt-4o-mini": {
769
870
  readonly inputPer1M: 0.15;
@@ -771,6 +872,8 @@ declare const LLM_PRICING_CATALOG: {
771
872
  readonly cacheReadMultiplier: 0.5;
772
873
  readonly vendor: "openai";
773
874
  readonly provider: "openai";
875
+ readonly priceSource: "openai";
876
+ readonly idSource: "openrouter";
774
877
  };
775
878
  "gpt-4o-mini-2024-07-18": {
776
879
  readonly inputPer1M: 0.15;
@@ -778,6 +881,24 @@ declare const LLM_PRICING_CATALOG: {
778
881
  readonly cacheReadMultiplier: 0.5;
779
882
  readonly vendor: "openai";
780
883
  readonly provider: "openai";
884
+ readonly priceSource: "openrouter";
885
+ readonly idSource: "openrouter";
886
+ };
887
+ "gpt-4o-mini:batch": {
888
+ readonly inputPer1M: 0.075;
889
+ readonly outputPer1M: 0.3;
890
+ readonly vendor: "openai";
891
+ readonly provider: "openai";
892
+ readonly priceSource: "openai";
893
+ readonly idSource: "openrouter";
894
+ };
895
+ "gpt-4o:batch": {
896
+ readonly inputPer1M: 1.25;
897
+ readonly outputPer1M: 5;
898
+ readonly vendor: "openai";
899
+ readonly provider: "openai";
900
+ readonly priceSource: "openai";
901
+ readonly idSource: "openrouter";
781
902
  };
782
903
  "gpt-5": {
783
904
  readonly inputPer1M: 1.25;
@@ -785,6 +906,8 @@ declare const LLM_PRICING_CATALOG: {
785
906
  readonly cacheReadMultiplier: 0.1;
786
907
  readonly vendor: "openai";
787
908
  readonly provider: "openai";
909
+ readonly priceSource: "openai";
910
+ readonly idSource: "openrouter";
788
911
  };
789
912
  "gpt-5-image": {
790
913
  readonly inputPer1M: 10;
@@ -792,6 +915,8 @@ declare const LLM_PRICING_CATALOG: {
792
915
  readonly cacheReadMultiplier: 0.125;
793
916
  readonly vendor: "openai";
794
917
  readonly provider: "openai";
918
+ readonly priceSource: "openrouter";
919
+ readonly idSource: "openrouter";
795
920
  };
796
921
  "gpt-5-image-mini": {
797
922
  readonly inputPer1M: 2.5;
@@ -799,6 +924,8 @@ declare const LLM_PRICING_CATALOG: {
799
924
  readonly cacheReadMultiplier: 0.1;
800
925
  readonly vendor: "openai";
801
926
  readonly provider: "openai";
927
+ readonly priceSource: "openrouter";
928
+ readonly idSource: "openrouter";
802
929
  };
803
930
  "gpt-5-mini": {
804
931
  readonly inputPer1M: 0.25;
@@ -806,6 +933,17 @@ declare const LLM_PRICING_CATALOG: {
806
933
  readonly cacheReadMultiplier: 0.1;
807
934
  readonly vendor: "openai";
808
935
  readonly provider: "openai";
936
+ readonly priceSource: "openai";
937
+ readonly idSource: "openrouter";
938
+ };
939
+ "gpt-5-mini:batch": {
940
+ readonly inputPer1M: 0.125;
941
+ readonly outputPer1M: 1;
942
+ readonly cacheReadMultiplier: 0.1;
943
+ readonly vendor: "openai";
944
+ readonly provider: "openai";
945
+ readonly priceSource: "openai";
946
+ readonly idSource: "openrouter";
809
947
  };
810
948
  "gpt-5-nano": {
811
949
  readonly inputPer1M: 0.05;
@@ -813,12 +951,42 @@ declare const LLM_PRICING_CATALOG: {
813
951
  readonly cacheReadMultiplier: 0.1;
814
952
  readonly vendor: "openai";
815
953
  readonly provider: "openai";
954
+ readonly priceSource: "openai";
955
+ readonly idSource: "openrouter";
956
+ };
957
+ "gpt-5-nano:batch": {
958
+ readonly inputPer1M: 0.025;
959
+ readonly outputPer1M: 0.2;
960
+ readonly cacheReadMultiplier: 0.1;
961
+ readonly vendor: "openai";
962
+ readonly provider: "openai";
963
+ readonly priceSource: "openai";
964
+ readonly idSource: "openrouter";
816
965
  };
817
966
  "gpt-5-pro": {
818
967
  readonly inputPer1M: 15;
819
968
  readonly outputPer1M: 120;
820
969
  readonly vendor: "openai";
821
970
  readonly provider: "openai";
971
+ readonly priceSource: "openai";
972
+ readonly idSource: "openrouter";
973
+ };
974
+ "gpt-5-pro:batch": {
975
+ readonly inputPer1M: 7.5;
976
+ readonly outputPer1M: 60;
977
+ readonly vendor: "openai";
978
+ readonly provider: "openai";
979
+ readonly priceSource: "openai";
980
+ readonly idSource: "openrouter";
981
+ };
982
+ "gpt-5:batch": {
983
+ readonly inputPer1M: 0.625;
984
+ readonly outputPer1M: 5;
985
+ readonly cacheReadMultiplier: 0.1;
986
+ readonly vendor: "openai";
987
+ readonly provider: "openai";
988
+ readonly priceSource: "openai";
989
+ readonly idSource: "openrouter";
822
990
  };
823
991
  "gpt-5.1": {
824
992
  readonly inputPer1M: 1.25;
@@ -826,6 +994,8 @@ declare const LLM_PRICING_CATALOG: {
826
994
  readonly cacheReadMultiplier: 0.1;
827
995
  readonly vendor: "openai";
828
996
  readonly provider: "openai";
997
+ readonly priceSource: "openai";
998
+ readonly idSource: "openrouter";
829
999
  };
830
1000
  "gpt-5.1-codex": {
831
1001
  readonly inputPer1M: 1.25;
@@ -833,6 +1003,8 @@ declare const LLM_PRICING_CATALOG: {
833
1003
  readonly cacheReadMultiplier: 0.104;
834
1004
  readonly vendor: "openai";
835
1005
  readonly provider: "openai";
1006
+ readonly priceSource: "openrouter";
1007
+ readonly idSource: "openrouter";
836
1008
  };
837
1009
  "gpt-5.1-codex-max": {
838
1010
  readonly inputPer1M: 1.25;
@@ -840,6 +1012,8 @@ declare const LLM_PRICING_CATALOG: {
840
1012
  readonly cacheReadMultiplier: 0.1;
841
1013
  readonly vendor: "openai";
842
1014
  readonly provider: "openai";
1015
+ readonly priceSource: "openrouter";
1016
+ readonly idSource: "openrouter";
843
1017
  };
844
1018
  "gpt-5.1-codex-mini": {
845
1019
  readonly inputPer1M: 0.25;
@@ -847,6 +1021,17 @@ declare const LLM_PRICING_CATALOG: {
847
1021
  readonly cacheReadMultiplier: 0.12;
848
1022
  readonly vendor: "openai";
849
1023
  readonly provider: "openai";
1024
+ readonly priceSource: "openrouter";
1025
+ readonly idSource: "openrouter";
1026
+ };
1027
+ "gpt-5.1:batch": {
1028
+ readonly inputPer1M: 0.625;
1029
+ readonly outputPer1M: 5;
1030
+ readonly cacheReadMultiplier: 0.1;
1031
+ readonly vendor: "openai";
1032
+ readonly provider: "openai";
1033
+ readonly priceSource: "openai";
1034
+ readonly idSource: "openrouter";
850
1035
  };
851
1036
  "gpt-5.2": {
852
1037
  readonly inputPer1M: 1.75;
@@ -854,6 +1039,8 @@ declare const LLM_PRICING_CATALOG: {
854
1039
  readonly cacheReadMultiplier: 0.1;
855
1040
  readonly vendor: "openai";
856
1041
  readonly provider: "openai";
1042
+ readonly priceSource: "openai";
1043
+ readonly idSource: "openrouter";
857
1044
  };
858
1045
  "gpt-5.2-chat": {
859
1046
  readonly inputPer1M: 1.75;
@@ -861,6 +1048,8 @@ declare const LLM_PRICING_CATALOG: {
861
1048
  readonly cacheReadMultiplier: 0.1;
862
1049
  readonly vendor: "openai";
863
1050
  readonly provider: "openai";
1051
+ readonly priceSource: "openrouter";
1052
+ readonly idSource: "openrouter";
864
1053
  };
865
1054
  "gpt-5.2-codex": {
866
1055
  readonly inputPer1M: 1.75;
@@ -868,12 +1057,33 @@ declare const LLM_PRICING_CATALOG: {
868
1057
  readonly cacheReadMultiplier: 0.1;
869
1058
  readonly vendor: "openai";
870
1059
  readonly provider: "openai";
1060
+ readonly priceSource: "openrouter";
1061
+ readonly idSource: "openrouter";
871
1062
  };
872
1063
  "gpt-5.2-pro": {
873
1064
  readonly inputPer1M: 21;
874
1065
  readonly outputPer1M: 168;
875
1066
  readonly vendor: "openai";
876
1067
  readonly provider: "openai";
1068
+ readonly priceSource: "openai";
1069
+ readonly idSource: "openrouter";
1070
+ };
1071
+ "gpt-5.2-pro:batch": {
1072
+ readonly inputPer1M: 10.5;
1073
+ readonly outputPer1M: 84;
1074
+ readonly vendor: "openai";
1075
+ readonly provider: "openai";
1076
+ readonly priceSource: "openai";
1077
+ readonly idSource: "openrouter";
1078
+ };
1079
+ "gpt-5.2:batch": {
1080
+ readonly inputPer1M: 0.875;
1081
+ readonly outputPer1M: 7;
1082
+ readonly cacheReadMultiplier: 0.1;
1083
+ readonly vendor: "openai";
1084
+ readonly provider: "openai";
1085
+ readonly priceSource: "openai";
1086
+ readonly idSource: "openrouter";
877
1087
  };
878
1088
  "gpt-5.3-codex": {
879
1089
  readonly inputPer1M: 1.75;
@@ -881,6 +1091,8 @@ declare const LLM_PRICING_CATALOG: {
881
1091
  readonly cacheReadMultiplier: 0.1;
882
1092
  readonly vendor: "openai";
883
1093
  readonly provider: "openai";
1094
+ readonly priceSource: "openai";
1095
+ readonly idSource: "openrouter";
884
1096
  };
885
1097
  "gpt-5.4": {
886
1098
  readonly inputPer1M: 2.5;
@@ -888,6 +1100,8 @@ declare const LLM_PRICING_CATALOG: {
888
1100
  readonly cacheReadMultiplier: 0.1;
889
1101
  readonly vendor: "openai";
890
1102
  readonly provider: "openai";
1103
+ readonly priceSource: "openai";
1104
+ readonly idSource: "openrouter";
891
1105
  };
892
1106
  "gpt-5.4-mini": {
893
1107
  readonly inputPer1M: 0.75;
@@ -895,6 +1109,17 @@ declare const LLM_PRICING_CATALOG: {
895
1109
  readonly cacheReadMultiplier: 0.1;
896
1110
  readonly vendor: "openai";
897
1111
  readonly provider: "openai";
1112
+ readonly priceSource: "openai";
1113
+ readonly idSource: "openrouter";
1114
+ };
1115
+ "gpt-5.4-mini:batch": {
1116
+ readonly inputPer1M: 0.375;
1117
+ readonly outputPer1M: 2.25;
1118
+ readonly cacheReadMultiplier: 0.1;
1119
+ readonly vendor: "openai";
1120
+ readonly provider: "openai";
1121
+ readonly priceSource: "openai";
1122
+ readonly idSource: "openrouter";
898
1123
  };
899
1124
  "gpt-5.4-nano": {
900
1125
  readonly inputPer1M: 0.2;
@@ -902,12 +1127,42 @@ declare const LLM_PRICING_CATALOG: {
902
1127
  readonly cacheReadMultiplier: 0.1;
903
1128
  readonly vendor: "openai";
904
1129
  readonly provider: "openai";
1130
+ readonly priceSource: "openai";
1131
+ readonly idSource: "openrouter";
1132
+ };
1133
+ "gpt-5.4-nano:batch": {
1134
+ readonly inputPer1M: 0.1;
1135
+ readonly outputPer1M: 0.625;
1136
+ readonly cacheReadMultiplier: 0.1;
1137
+ readonly vendor: "openai";
1138
+ readonly provider: "openai";
1139
+ readonly priceSource: "openai";
1140
+ readonly idSource: "openrouter";
905
1141
  };
906
1142
  "gpt-5.4-pro": {
907
1143
  readonly inputPer1M: 30;
908
1144
  readonly outputPer1M: 180;
909
1145
  readonly vendor: "openai";
910
1146
  readonly provider: "openai";
1147
+ readonly priceSource: "openai";
1148
+ readonly idSource: "openrouter";
1149
+ };
1150
+ "gpt-5.4-pro:batch": {
1151
+ readonly inputPer1M: 15;
1152
+ readonly outputPer1M: 90;
1153
+ readonly vendor: "openai";
1154
+ readonly provider: "openai";
1155
+ readonly priceSource: "openai";
1156
+ readonly idSource: "openrouter";
1157
+ };
1158
+ "gpt-5.4:batch": {
1159
+ readonly inputPer1M: 1.25;
1160
+ readonly outputPer1M: 7.5;
1161
+ readonly cacheReadMultiplier: 0.104;
1162
+ readonly vendor: "openai";
1163
+ readonly provider: "openai";
1164
+ readonly priceSource: "openai";
1165
+ readonly idSource: "openrouter";
911
1166
  };
912
1167
  "gpt-5.5": {
913
1168
  readonly inputPer1M: 5;
@@ -915,12 +1170,33 @@ declare const LLM_PRICING_CATALOG: {
915
1170
  readonly cacheReadMultiplier: 0.1;
916
1171
  readonly vendor: "openai";
917
1172
  readonly provider: "openai";
1173
+ readonly priceSource: "openai";
1174
+ readonly idSource: "openrouter";
918
1175
  };
919
1176
  "gpt-5.5-pro": {
920
1177
  readonly inputPer1M: 30;
921
1178
  readonly outputPer1M: 180;
922
1179
  readonly vendor: "openai";
923
1180
  readonly provider: "openai";
1181
+ readonly priceSource: "openai";
1182
+ readonly idSource: "openrouter";
1183
+ };
1184
+ "gpt-5.5-pro:batch": {
1185
+ readonly inputPer1M: 15;
1186
+ readonly outputPer1M: 90;
1187
+ readonly vendor: "openai";
1188
+ readonly provider: "openai";
1189
+ readonly priceSource: "openai";
1190
+ readonly idSource: "openrouter";
1191
+ };
1192
+ "gpt-5.5:batch": {
1193
+ readonly inputPer1M: 2.5;
1194
+ readonly outputPer1M: 15;
1195
+ readonly cacheReadMultiplier: 0.1;
1196
+ readonly vendor: "openai";
1197
+ readonly provider: "openai";
1198
+ readonly priceSource: "openai";
1199
+ readonly idSource: "openrouter";
924
1200
  };
925
1201
  "gpt-5.6-luna": {
926
1202
  readonly inputPer1M: 0.2;
@@ -929,6 +1205,8 @@ declare const LLM_PRICING_CATALOG: {
929
1205
  readonly cacheWriteMultiplier: 1.25;
930
1206
  readonly vendor: "openai";
931
1207
  readonly provider: "openai";
1208
+ readonly priceSource: "openai";
1209
+ readonly idSource: "openrouter";
932
1210
  };
933
1211
  "gpt-5.6-luna-pro": {
934
1212
  readonly inputPer1M: 0.2;
@@ -937,22 +1215,67 @@ declare const LLM_PRICING_CATALOG: {
937
1215
  readonly cacheWriteMultiplier: 1.25;
938
1216
  readonly vendor: "openai";
939
1217
  readonly provider: "openai";
1218
+ readonly priceSource: "openrouter";
1219
+ readonly idSource: "openrouter";
1220
+ };
1221
+ "gpt-5.6-luna-pro:batch": {
1222
+ readonly inputPer1M: 0.1;
1223
+ readonly outputPer1M: 0.6;
1224
+ readonly cacheReadMultiplier: 0.1;
1225
+ readonly vendor: "openai";
1226
+ readonly provider: "openai";
1227
+ readonly priceSource: "openrouter";
1228
+ readonly idSource: "openrouter";
1229
+ };
1230
+ "gpt-5.6-luna:batch": {
1231
+ readonly inputPer1M: 0.1;
1232
+ readonly outputPer1M: 0.6;
1233
+ readonly cacheReadMultiplier: 0.1;
1234
+ readonly cacheWriteMultiplier: 1.25;
1235
+ readonly vendor: "openai";
1236
+ readonly provider: "openai";
1237
+ readonly priceSource: "openai";
1238
+ readonly idSource: "openrouter";
940
1239
  };
941
1240
  "gpt-5.6-sol": {
1241
+ readonly inputPer1M: 4;
1242
+ readonly outputPer1M: 20;
1243
+ readonly cacheReadMultiplier: 0.1;
1244
+ readonly cacheWriteMultiplier: 1.25;
1245
+ readonly vendor: "openai";
1246
+ readonly provider: "openai";
1247
+ readonly priceSource: "openai";
1248
+ readonly idSource: "openrouter";
1249
+ };
1250
+ "gpt-5.6-sol-pro": {
942
1251
  readonly inputPer1M: 2;
943
1252
  readonly outputPer1M: 10;
944
1253
  readonly cacheReadMultiplier: 0.1;
945
1254
  readonly cacheWriteMultiplier: 1.25;
946
1255
  readonly vendor: "openai";
947
1256
  readonly provider: "openai";
1257
+ readonly priceSource: "openrouter";
1258
+ readonly idSource: "openrouter";
948
1259
  };
949
- "gpt-5.6-sol-pro": {
1260
+ "gpt-5.6-sol-pro:batch": {
1261
+ readonly inputPer1M: 1;
1262
+ readonly outputPer1M: 5;
1263
+ readonly cacheReadMultiplier: 0.1;
1264
+ readonly cacheWriteMultiplier: 1.25;
1265
+ readonly vendor: "openai";
1266
+ readonly provider: "openai";
1267
+ readonly priceSource: "openrouter";
1268
+ readonly idSource: "openrouter";
1269
+ };
1270
+ "gpt-5.6-sol:batch": {
950
1271
  readonly inputPer1M: 2;
951
1272
  readonly outputPer1M: 10;
952
1273
  readonly cacheReadMultiplier: 0.1;
953
1274
  readonly cacheWriteMultiplier: 1.25;
954
1275
  readonly vendor: "openai";
955
1276
  readonly provider: "openai";
1277
+ readonly priceSource: "openai";
1278
+ readonly idSource: "openrouter";
956
1279
  };
957
1280
  "gpt-5.6-terra": {
958
1281
  readonly inputPer1M: 2;
@@ -961,6 +1284,8 @@ declare const LLM_PRICING_CATALOG: {
961
1284
  readonly cacheWriteMultiplier: 1.25;
962
1285
  readonly vendor: "openai";
963
1286
  readonly provider: "openai";
1287
+ readonly priceSource: "openai";
1288
+ readonly idSource: "openrouter";
964
1289
  };
965
1290
  "gpt-5.6-terra-pro": {
966
1291
  readonly inputPer1M: 2;
@@ -969,18 +1294,163 @@ declare const LLM_PRICING_CATALOG: {
969
1294
  readonly cacheWriteMultiplier: 1.25;
970
1295
  readonly vendor: "openai";
971
1296
  readonly provider: "openai";
1297
+ readonly priceSource: "openrouter";
1298
+ readonly idSource: "openrouter";
1299
+ };
1300
+ "gpt-5.6-terra-pro:batch": {
1301
+ readonly inputPer1M: 1;
1302
+ readonly outputPer1M: 6;
1303
+ readonly cacheReadMultiplier: 0.1;
1304
+ readonly vendor: "openai";
1305
+ readonly provider: "openai";
1306
+ readonly priceSource: "openrouter";
1307
+ readonly idSource: "openrouter";
1308
+ };
1309
+ "gpt-5.6-terra:batch": {
1310
+ readonly inputPer1M: 1;
1311
+ readonly outputPer1M: 6;
1312
+ readonly cacheReadMultiplier: 0.1;
1313
+ readonly cacheWriteMultiplier: 1.25;
1314
+ readonly vendor: "openai";
1315
+ readonly provider: "openai";
1316
+ readonly priceSource: "openai";
1317
+ readonly idSource: "openrouter";
1318
+ };
1319
+ "gpt-6-astra": {
1320
+ readonly inputPer1M: 10;
1321
+ readonly outputPer1M: 50;
1322
+ readonly cacheReadMultiplier: 0.1;
1323
+ readonly cacheWriteMultiplier: 1.25;
1324
+ readonly vendor: "openai";
1325
+ readonly provider: "openai";
1326
+ readonly priceSource: "openai";
1327
+ readonly idSource: "openrouter";
1328
+ };
1329
+ "gpt-6-astra-pro": {
1330
+ readonly inputPer1M: 10;
1331
+ readonly outputPer1M: 50;
1332
+ readonly cacheReadMultiplier: 0.1;
1333
+ readonly cacheWriteMultiplier: 1.25;
1334
+ readonly vendor: "openai";
1335
+ readonly provider: "openai";
1336
+ readonly priceSource: "openrouter";
1337
+ readonly idSource: "openrouter";
1338
+ };
1339
+ "gpt-6-astra-pro:batch": {
1340
+ readonly inputPer1M: 5;
1341
+ readonly outputPer1M: 25;
1342
+ readonly cacheReadMultiplier: 0.1;
1343
+ readonly cacheWriteMultiplier: 1.25;
1344
+ readonly vendor: "openai";
1345
+ readonly provider: "openai";
1346
+ readonly priceSource: "openrouter";
1347
+ readonly idSource: "openrouter";
1348
+ };
1349
+ "gpt-6-astra:batch": {
1350
+ readonly inputPer1M: 5;
1351
+ readonly outputPer1M: 25;
1352
+ readonly cacheReadMultiplier: 0.1;
1353
+ readonly cacheWriteMultiplier: 1.25;
1354
+ readonly vendor: "openai";
1355
+ readonly provider: "openai";
1356
+ readonly priceSource: "openai";
1357
+ readonly idSource: "openrouter";
1358
+ };
1359
+ "gpt-6-luna": {
1360
+ readonly inputPer1M: 0.1;
1361
+ readonly outputPer1M: 0.5;
1362
+ readonly cacheReadMultiplier: 0.1;
1363
+ readonly cacheWriteMultiplier: 1.25;
1364
+ readonly vendor: "openai";
1365
+ readonly provider: "openai";
1366
+ readonly priceSource: "openai";
1367
+ readonly idSource: "openrouter";
1368
+ };
1369
+ "gpt-6-luna-pro": {
1370
+ readonly inputPer1M: 0.1;
1371
+ readonly outputPer1M: 0.5;
1372
+ readonly cacheReadMultiplier: 0.1;
1373
+ readonly cacheWriteMultiplier: 1.25;
1374
+ readonly vendor: "openai";
1375
+ readonly provider: "openai";
1376
+ readonly priceSource: "openrouter";
1377
+ readonly idSource: "openrouter";
1378
+ };
1379
+ "gpt-6-luna-pro:batch": {
1380
+ readonly inputPer1M: 0.05;
1381
+ readonly outputPer1M: 0.25;
1382
+ readonly cacheReadMultiplier: 0.1;
1383
+ readonly cacheWriteMultiplier: 1.25;
1384
+ readonly vendor: "openai";
1385
+ readonly provider: "openai";
1386
+ readonly priceSource: "openrouter";
1387
+ readonly idSource: "openrouter";
1388
+ };
1389
+ "gpt-6-luna:batch": {
1390
+ readonly inputPer1M: 0.05;
1391
+ readonly outputPer1M: 0.25;
1392
+ readonly cacheReadMultiplier: 0.1;
1393
+ readonly cacheWriteMultiplier: 1.25;
1394
+ readonly vendor: "openai";
1395
+ readonly provider: "openai";
1396
+ readonly priceSource: "openai";
1397
+ readonly idSource: "openrouter";
1398
+ };
1399
+ "gpt-6-sol": {
1400
+ readonly inputPer1M: 2;
1401
+ readonly outputPer1M: 10;
1402
+ readonly cacheReadMultiplier: 0.1;
1403
+ readonly cacheWriteMultiplier: 1.25;
1404
+ readonly vendor: "openai";
1405
+ readonly provider: "openai";
1406
+ readonly priceSource: "openai";
1407
+ readonly idSource: "openrouter";
1408
+ };
1409
+ "gpt-6-sol-pro": {
1410
+ readonly inputPer1M: 2;
1411
+ readonly outputPer1M: 10;
1412
+ readonly cacheReadMultiplier: 0.1;
1413
+ readonly cacheWriteMultiplier: 1.25;
1414
+ readonly vendor: "openai";
1415
+ readonly provider: "openai";
1416
+ readonly priceSource: "openrouter";
1417
+ readonly idSource: "openrouter";
1418
+ };
1419
+ "gpt-6-sol-pro:batch": {
1420
+ readonly inputPer1M: 1;
1421
+ readonly outputPer1M: 5;
1422
+ readonly cacheReadMultiplier: 0.1;
1423
+ readonly cacheWriteMultiplier: 1.25;
1424
+ readonly vendor: "openai";
1425
+ readonly provider: "openai";
1426
+ readonly priceSource: "openrouter";
1427
+ readonly idSource: "openrouter";
1428
+ };
1429
+ "gpt-6-sol:batch": {
1430
+ readonly inputPer1M: 1;
1431
+ readonly outputPer1M: 5;
1432
+ readonly cacheReadMultiplier: 0.1;
1433
+ readonly cacheWriteMultiplier: 1.25;
1434
+ readonly vendor: "openai";
1435
+ readonly provider: "openai";
1436
+ readonly priceSource: "openai";
1437
+ readonly idSource: "openrouter";
972
1438
  };
973
1439
  "gpt-audio": {
974
1440
  readonly inputPer1M: 2.5;
975
1441
  readonly outputPer1M: 10;
976
1442
  readonly vendor: "openai";
977
1443
  readonly provider: "openai";
1444
+ readonly priceSource: "openrouter";
1445
+ readonly idSource: "openrouter";
978
1446
  };
979
1447
  "gpt-audio-mini": {
980
1448
  readonly inputPer1M: 0.6;
981
1449
  readonly outputPer1M: 2.4;
982
1450
  readonly vendor: "openai";
983
1451
  readonly provider: "openai";
1452
+ readonly priceSource: "openrouter";
1453
+ readonly idSource: "openrouter";
984
1454
  };
985
1455
  "gpt-chat-latest": {
986
1456
  readonly inputPer1M: 5;
@@ -988,31 +1458,41 @@ declare const LLM_PRICING_CATALOG: {
988
1458
  readonly cacheReadMultiplier: 0.1;
989
1459
  readonly vendor: "openai";
990
1460
  readonly provider: "openai";
1461
+ readonly priceSource: "openrouter";
1462
+ readonly idSource: "openrouter";
991
1463
  };
992
1464
  "gpt-oss-120b": {
993
- readonly inputPer1M: 0.037;
994
- readonly outputPer1M: 0.17;
1465
+ readonly inputPer1M: 0.15;
1466
+ readonly outputPer1M: 0.6;
1467
+ readonly cacheReadMultiplier: 0.5;
995
1468
  readonly vendor: "openai";
996
1469
  readonly provider: "openai";
1470
+ readonly priceSource: "openrouter";
1471
+ readonly idSource: "openrouter";
997
1472
  };
998
1473
  "gpt-oss-120b:batch": {
999
- readonly inputPer1M: 0.15;
1000
- readonly outputPer1M: 0.6;
1474
+ readonly inputPer1M: 0.0296;
1475
+ readonly outputPer1M: 0.136;
1001
1476
  readonly vendor: "openai";
1002
1477
  readonly provider: "openai";
1478
+ readonly priceSource: "openrouter";
1479
+ readonly idSource: "openrouter";
1003
1480
  };
1004
1481
  "gpt-oss-20b": {
1005
- readonly inputPer1M: 0.03;
1006
- readonly outputPer1M: 0.13;
1007
- readonly cacheReadMultiplier: 1;
1482
+ readonly inputPer1M: 0.018;
1483
+ readonly outputPer1M: 0.09;
1008
1484
  readonly vendor: "openai";
1009
1485
  readonly provider: "openai";
1486
+ readonly priceSource: "openrouter";
1487
+ readonly idSource: "openrouter";
1010
1488
  };
1011
1489
  "gpt-oss-20b:batch": {
1012
- readonly inputPer1M: 0.05;
1013
- readonly outputPer1M: 0.2;
1490
+ readonly inputPer1M: 0.024;
1491
+ readonly outputPer1M: 0.112;
1014
1492
  readonly vendor: "openai";
1015
1493
  readonly provider: "openai";
1494
+ readonly priceSource: "openrouter";
1495
+ readonly idSource: "openrouter";
1016
1496
  };
1017
1497
  "gpt-oss-safeguard-20b": {
1018
1498
  readonly inputPer1M: 0.075;
@@ -1020,6 +1500,8 @@ declare const LLM_PRICING_CATALOG: {
1020
1500
  readonly cacheReadMultiplier: 0.5;
1021
1501
  readonly vendor: "openai";
1022
1502
  readonly provider: "openai";
1503
+ readonly priceSource: "openrouter";
1504
+ readonly idSource: "openrouter";
1023
1505
  };
1024
1506
  o1: {
1025
1507
  readonly inputPer1M: 15;
@@ -1027,12 +1509,16 @@ declare const LLM_PRICING_CATALOG: {
1027
1509
  readonly cacheReadMultiplier: 0.5;
1028
1510
  readonly vendor: "openai";
1029
1511
  readonly provider: "openai";
1512
+ readonly priceSource: "openai";
1513
+ readonly idSource: "openrouter";
1030
1514
  };
1031
1515
  "o1-pro": {
1032
1516
  readonly inputPer1M: 150;
1033
1517
  readonly outputPer1M: 600;
1034
1518
  readonly vendor: "openai";
1035
1519
  readonly provider: "openai";
1520
+ readonly priceSource: "openai";
1521
+ readonly idSource: "openrouter";
1036
1522
  };
1037
1523
  o3: {
1038
1524
  readonly inputPer1M: 2;
@@ -1040,6 +1526,8 @@ declare const LLM_PRICING_CATALOG: {
1040
1526
  readonly cacheReadMultiplier: 0.25;
1041
1527
  readonly vendor: "openai";
1042
1528
  readonly provider: "openai";
1529
+ readonly priceSource: "openai";
1530
+ readonly idSource: "openrouter";
1043
1531
  };
1044
1532
  "o3-mini": {
1045
1533
  readonly inputPer1M: 1.1;
@@ -1047,6 +1535,8 @@ declare const LLM_PRICING_CATALOG: {
1047
1535
  readonly cacheReadMultiplier: 0.5;
1048
1536
  readonly vendor: "openai";
1049
1537
  readonly provider: "openai";
1538
+ readonly priceSource: "openai";
1539
+ readonly idSource: "openrouter";
1050
1540
  };
1051
1541
  "o3-mini-high": {
1052
1542
  readonly inputPer1M: 1.1;
@@ -1054,12 +1544,32 @@ declare const LLM_PRICING_CATALOG: {
1054
1544
  readonly cacheReadMultiplier: 0.5;
1055
1545
  readonly vendor: "openai";
1056
1546
  readonly provider: "openai";
1547
+ readonly priceSource: "openrouter";
1548
+ readonly idSource: "openrouter";
1549
+ };
1550
+ "o3-mini:batch": {
1551
+ readonly inputPer1M: 0.55;
1552
+ readonly outputPer1M: 2.2;
1553
+ readonly vendor: "openai";
1554
+ readonly provider: "openai";
1555
+ readonly priceSource: "openai";
1556
+ readonly idSource: "openrouter";
1057
1557
  };
1058
1558
  "o3-pro": {
1059
1559
  readonly inputPer1M: 20;
1060
1560
  readonly outputPer1M: 80;
1061
1561
  readonly vendor: "openai";
1062
1562
  readonly provider: "openai";
1563
+ readonly priceSource: "openai";
1564
+ readonly idSource: "openrouter";
1565
+ };
1566
+ "o3:batch": {
1567
+ readonly inputPer1M: 1;
1568
+ readonly outputPer1M: 4;
1569
+ readonly vendor: "openai";
1570
+ readonly provider: "openai";
1571
+ readonly priceSource: "openai";
1572
+ readonly idSource: "openrouter";
1063
1573
  };
1064
1574
  "o4-mini": {
1065
1575
  readonly inputPer1M: 1.1;
@@ -1067,6 +1577,8 @@ declare const LLM_PRICING_CATALOG: {
1067
1577
  readonly cacheReadMultiplier: 0.25;
1068
1578
  readonly vendor: "openai";
1069
1579
  readonly provider: "openai";
1580
+ readonly priceSource: "openai";
1581
+ readonly idSource: "openrouter";
1070
1582
  };
1071
1583
  "o4-mini-high": {
1072
1584
  readonly inputPer1M: 1.1;
@@ -1074,6 +1586,16 @@ declare const LLM_PRICING_CATALOG: {
1074
1586
  readonly cacheReadMultiplier: 0.25;
1075
1587
  readonly vendor: "openai";
1076
1588
  readonly provider: "openai";
1589
+ readonly priceSource: "openrouter";
1590
+ readonly idSource: "openrouter";
1591
+ };
1592
+ "o4-mini:batch": {
1593
+ readonly inputPer1M: 0.55;
1594
+ readonly outputPer1M: 2.2;
1595
+ readonly vendor: "openai";
1596
+ readonly provider: "openai";
1597
+ readonly priceSource: "openai";
1598
+ readonly idSource: "openrouter";
1077
1599
  };
1078
1600
  "gemini-2.5-flash": {
1079
1601
  readonly inputPer1M: 0.3;
@@ -1236,9 +1758,9 @@ declare const LLM_PRICING_CATALOG: {
1236
1758
  readonly provider: "moonshot";
1237
1759
  };
1238
1760
  "kimi-k2.7-code": {
1239
- readonly inputPer1M: 0.66;
1240
- readonly outputPer1M: 3.4;
1241
- readonly cacheReadMultiplier: 0.2727;
1761
+ readonly inputPer1M: 0.6562;
1762
+ readonly outputPer1M: 3.3;
1763
+ readonly cacheReadMultiplier: 0.2743;
1242
1764
  readonly vendor: "moonshot";
1243
1765
  readonly provider: "moonshot";
1244
1766
  };
@@ -1322,15 +1844,28 @@ declare const LLM_PRICING_CATALOG: {
1322
1844
  * `LlmModelId` now unions the pricing keys with `CONTEXT_WINDOWS` (each
1323
1845
  * provider's own synced `/v1/models` id list — see
1324
1846
  * `packages/catalog-sync/src/generators/llm-context-windows.ts` — carries
1325
- * ids independent of whether a price has synced yet) and `OPENROUTER_ROUTES`
1326
- * (thousands of ids, self-updating). A model can be a member of this type
1847
+ * ids independent of whether a price has synced yet), `OPENROUTER_ROUTES`
1848
+ * (thousands of ids, self-updating), and `OPENAI_GENERATED_UNPRICED_IDS`
1849
+ * (ids `api.openai.com/v1/models` lists that neither OpenAI's pricing page
1850
+ * nor OpenRouter prices — mostly dated snapshots like `gpt-5.4-2026-03-05`.
1851
+ * OpenAI's `/v1/models` publishes no context window, so unlike the other
1852
+ * providers these ids cannot ride in via `CONTEXT_WINDOWS`; they need their
1853
+ * own existence-only list, which is exactly what that export is).
1854
+ * A model can be a member of this type
1327
1855
  * with `resolvePricing` returning `undefined` for it — callers MUST treat
1328
1856
  * that as "price not yet known," never as "doesn't exist" (see
1329
1857
  * `ResolvedModel`'s `pricing?` in `registry/index.ts`, and `isKnownLlmId`
1330
1858
  * below for an existence-only check). Downstream curation/config should
1331
1859
  * still constrain ids to this type so a typo is a build error.
1860
+ *
1861
+ * That last point is why the generator emits `OPENAI_GENERATED_UNPRICED_IDS`
1862
+ * as a literal tuple (`[...] as const`, and `[] as const` when empty) and
1863
+ * never as `readonly string[]`: indexing the latter with `[number]` yields
1864
+ * plain `string`, which would widen this whole union to `string` and turn
1865
+ * every id typo back into a silent runtime miss. Tested at the source, in
1866
+ * catalog-sync's `openai-catalog.test.ts`.
1332
1867
  */
1333
- type LlmModelId = keyof typeof LLM_PRICING_CATALOG | keyof typeof CONTEXT_WINDOWS | keyof typeof OPENROUTER_ROUTES;
1868
+ type LlmModelId = keyof typeof LLM_PRICING_CATALOG | keyof typeof CONTEXT_WINDOWS | keyof typeof OPENROUTER_ROUTES | (typeof OPENAI_GENERATED_UNPRICED_IDS)[number];
1334
1869
  /**
1335
1870
  * True iff `modelId` is a real, known catalog id — regardless of whether it
1336
1871
  * has a price yet. Use this (not `resolvePricing(id) !== undefined`) to
@@ -1341,10 +1876,11 @@ type LlmModelId = keyof typeof LLM_PRICING_CATALOG | keyof typeof CONTEXT_WINDOW
1341
1876
  declare function isKnownLlmId(modelId: string): boolean;
1342
1877
  /**
1343
1878
  * Every known LLM id that has NO pricing row (`CONTEXT_WINDOWS` ∪
1344
- * `OPENROUTER_ROUTES`, minus whatever `LLM_PRICING_CATALOG` already prices)
1345
- * — the enumeration `listModels`'s `llm` branch needs to surface a
1346
- * known-but-unpriced model instead of silently dropping it. Each entry
1347
- * carries its provider when derivable (see `getModelProvider`).
1879
+ * `OPENROUTER_ROUTES` ∪ `OPENAI_GENERATED_UNPRICED_IDS`, minus whatever
1880
+ * `LLM_PRICING_CATALOG` already prices) — the enumeration `listModels`'s
1881
+ * `llm` branch needs to surface a known-but-unpriced model instead of
1882
+ * silently dropping it. Each entry carries its provider when derivable (see
1883
+ * `getModelProvider`).
1348
1884
  */
1349
1885
  declare function listUnpricedKnownLlmIds(): Array<{
1350
1886
  id: string;
@@ -1410,7 +1946,7 @@ type KnownLlmId = LlmModelId | LlmModelAlias;
1410
1946
  * partial-prefix match. Used both for cost computation and BYOK shadow
1411
1947
  * accounting; semantics are load-bearing for migration.
1412
1948
  */
1413
- declare function resolvePricing(modelId: string): LLMPricing | undefined;
1949
+ declare function resolvePricing(rawModelId: string): LLMPricing | undefined;
1414
1950
  /**
1415
1951
  * Like {@link resolvePricing} but WITHOUT the substring/partial-prefix
1416
1952
  * fallback — an id resolves ONLY on an exact catalog key or an exact alias.
@@ -1423,13 +1959,13 @@ declare function resolvePricing(modelId: string): LLMPricing | undefined;
1423
1959
  * `resolvePricing`/`resolveAlias` are intentionally left unchanged for their
1424
1960
  * existing callers.
1425
1961
  */
1426
- declare function resolvePricingExact(modelId: string): LLMPricing | undefined;
1962
+ declare function resolvePricingExact(rawModelId: string): LLMPricing | undefined;
1427
1963
  /**
1428
1964
  * Resolves a model id to its canonical catalog key (or the original id if no
1429
1965
  * match). Public surface for consumers that need the canonical id without
1430
1966
  * the pricing payload.
1431
1967
  */
1432
- declare function resolveAlias(modelId: string): string;
1968
+ declare function resolveAlias(rawModelId: string): string;
1433
1969
  /**
1434
1970
  * Resolves a model id to its live context window (max input tokens) and max
1435
1971
  * output tokens, sourced from `CONTEXT_WINDOWS`
@@ -1442,6 +1978,19 @@ declare function resolveAlias(modelId: string): string;
1442
1978
  * older aliases. Returns undefined for ids no synced provider carries.
1443
1979
  */
1444
1980
  declare function resolveContextWindow(modelId: string): ContextWindowEntry | undefined;
1981
+ /**
1982
+ * Split a trailing context-lane hint off a model id: `"claude-opus-5-5[1m]"`
1983
+ * → `{ id: "claude-opus-5-5", contextWindow: 1_000_000 }`. Claude Code (and
1984
+ * claude-agent-acp's model picker) spell the extended-context lane of a
1985
+ * model this way; the bracket is not part of the model's identity (pricing,
1986
+ * provider, catalog key) but IS an authoritative statement of its window.
1987
+ * Ids without a well-formed `[<n>k]` / `[<n>m]` suffix come back unchanged
1988
+ * with no `contextWindow`.
1989
+ */
1990
+ declare function splitContextWindowHint(modelId: string): {
1991
+ id: string;
1992
+ contextWindow?: number;
1993
+ };
1445
1994
  /**
1446
1995
  * Every live model id `CONTEXT_WINDOWS` carries for one provider — sourced
1447
1996
  * straight from that provider's own `/v1/models` sync (`llm-context-windows.ts`
@@ -1605,4 +2154,4 @@ interface CacheStats {
1605
2154
  */
1606
2155
  declare function getCacheStats(modelId: string, usage: LLMUsageBreakdown, opts?: CalculateLLMCreditCostOptions): CacheStats;
1607
2156
 
1608
- export { type CacheStats as C, DEFAULT_PRICING as D, type KnownLlmId as K, type LLMPricing as L, MODEL_ALIASES as M, type LLMCreditCostResult as a, type LLMUsageBreakdown as b, LLM_PRICING_CATALOG as c, calculateLLMCreditCost as d, type CalculateLLMCreditCostOptions as e, type ContextWindowEntry as f, type LlmModelAlias as g, type LlmModelId as h, type ModelRoute as i, getCacheStats as j, getModelProvider as k, isKnownLlmId as l, listNativeModelIds as m, listUnpricedKnownLlmIds as n, resolveAlias as o, resolveContextWindow as p, resolveModelRoute as q, resolvePricing as r, resolvePricingExact as s };
2157
+ export { type CacheStats as C, DEFAULT_PRICING as D, type KnownLlmId as K, type LLMPricing as L, MODEL_ALIASES as M, type LLMCreditCostResult as a, type LLMUsageBreakdown as b, LLM_PRICING_CATALOG as c, calculateLLMCreditCost as d, type CalculateLLMCreditCostOptions as e, type ContextWindowEntry as f, type LlmModelAlias as g, type LlmModelId as h, type ModelRoute as i, getCacheStats as j, getModelProvider as k, isKnownLlmId as l, listNativeModelIds as m, listUnpricedKnownLlmIds as n, resolveAlias as o, resolveContextWindow as p, resolveModelRoute as q, resolvePricing as r, resolvePricingExact as s, splitContextWindowHint as t };