@agentproto/model-catalog 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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-BMcj8odg.d.ts} +612 -22
  4. package/dist/{chunk-B67THXMQ.mjs → chunk-3CU3W43Q.mjs} +3 -3
  5. package/dist/{chunk-B67THXMQ.mjs.map → chunk-3CU3W43Q.mjs.map} +1 -1
  6. package/dist/{chunk-I5E7F6KY.mjs → chunk-3RHYOFVS.mjs} +498 -190
  7. package/dist/chunk-3RHYOFVS.mjs.map +1 -0
  8. package/dist/{chunk-TC6S3SY3.mjs → chunk-ARK2DCFR.mjs} +3 -3
  9. package/dist/{chunk-TC6S3SY3.mjs.map → chunk-ARK2DCFR.mjs.map} +1 -1
  10. package/dist/{chunk-UZDL26T7.mjs → chunk-GE56A2NL.mjs} +4 -4
  11. package/dist/{chunk-UZDL26T7.mjs.map → chunk-GE56A2NL.mjs.map} +1 -1
  12. package/dist/{chunk-E3IERKDC.mjs → chunk-S26LSXTN.mjs} +3 -3
  13. package/dist/{chunk-E3IERKDC.mjs.map → chunk-S26LSXTN.mjs.map} +1 -1
  14. package/dist/{chunk-G6CA3BXI.mjs → chunk-U5O444SC.mjs} +91 -57
  15. package/dist/chunk-U5O444SC.mjs.map +1 -0
  16. package/dist/{chunk-O6SQMVPM.mjs → chunk-UI3BUHUO.mjs} +4 -4
  17. package/dist/{chunk-O6SQMVPM.mjs.map → chunk-UI3BUHUO.mjs.map} +1 -1
  18. package/dist/{chunk-E5CVTRPJ.mjs → chunk-YBEL3JLY.mjs} +5 -5
  19. package/dist/{chunk-E5CVTRPJ.mjs.map → chunk-YBEL3JLY.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-C77bYu0f.d.ts} +1 -1
  24. package/dist/{index-vC37SFpk.d.ts → index-CJ7uYbnm.d.ts} +1 -1
  25. package/dist/{index-BWvtVzEG.d.ts → index-VyKByfsk.d.ts} +2 -2
  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-G6CA3BXI.mjs.map +0 -1
  36. package/dist/chunk-I5E7F6KY.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 ["chat-latest", "gpt-3.5-turbo-instruct-0914", "gpt-4.1-2025-04-14", "gpt-4.1-mini-2025-04-14", "gpt-4.1-nano-2025-04-14", "gpt-4o-mini-search-preview", "gpt-4o-mini-search-preview-2025-03-11", "gpt-4o-search-preview", "gpt-4o-search-preview-2025-03-11", "gpt-5-2025-08-07", "gpt-5-chat-latest", "gpt-5-codex", "gpt-5-mini-2025-08-07", "gpt-5-nano-2025-08-07", "gpt-5-pro-2025-10-06", "gpt-5-search-api-2025-10-14", "gpt-5.1-2025-11-13", "gpt-5.1-chat-latest", "gpt-5.2-2025-12-11", "gpt-5.2-chat-latest", "gpt-5.2-pro-2025-12-11", "gpt-5.3-chat-latest", "gpt-5.4-2026-03-05", "gpt-5.4-mini-2026-03-17", "gpt-5.4-nano-2026-03-17", "gpt-5.4-pro-2026-03-05", "gpt-5.5-2026-04-23", "gpt-5.5-pro-2026-04-23", "gpt-audio-1.5", "gpt-audio-2025-08-28", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "o1-2024-12-17", "o1-pro-2025-03-19", "o3-2025-04-16", "o3-mini-2025-01-31", "o4-mini-2025-04-16"];
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: {
@@ -680,42 +721,96 @@ 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: "openai";
726
+ };
727
+ "gpt-3.5-turbo-0125": {
728
+ readonly inputPer1M: 0.5;
729
+ readonly outputPer1M: 1.5;
730
+ readonly vendor: "openai";
731
+ readonly provider: "openai";
732
+ readonly priceSource: "openai";
733
+ readonly idSource: "openai";
683
734
  };
684
735
  "gpt-3.5-turbo-0613": {
685
736
  readonly inputPer1M: 1;
686
737
  readonly outputPer1M: 2;
687
738
  readonly vendor: "openai";
688
739
  readonly provider: "openai";
740
+ readonly priceSource: "openrouter";
741
+ readonly idSource: "openrouter";
742
+ };
743
+ "gpt-3.5-turbo-1106": {
744
+ readonly inputPer1M: 1;
745
+ readonly outputPer1M: 2;
746
+ readonly vendor: "openai";
747
+ readonly provider: "openai";
748
+ readonly priceSource: "openai";
749
+ readonly idSource: "openai";
689
750
  };
690
751
  "gpt-3.5-turbo-16k": {
691
752
  readonly inputPer1M: 3;
692
753
  readonly outputPer1M: 4;
693
754
  readonly vendor: "openai";
694
755
  readonly provider: "openai";
756
+ readonly priceSource: "openrouter";
757
+ readonly idSource: "openai";
695
758
  };
696
759
  "gpt-3.5-turbo-instruct": {
697
760
  readonly inputPer1M: 1.5;
698
761
  readonly outputPer1M: 2;
699
762
  readonly vendor: "openai";
700
763
  readonly provider: "openai";
764
+ readonly priceSource: "openai";
765
+ readonly idSource: "openai";
766
+ };
767
+ "gpt-3.5-turbo:batch": {
768
+ readonly inputPer1M: 0.25;
769
+ readonly outputPer1M: 0.75;
770
+ readonly vendor: "openai";
771
+ readonly provider: "openai";
772
+ readonly priceSource: "openrouter";
773
+ readonly idSource: "openrouter";
701
774
  };
702
775
  "gpt-4": {
703
776
  readonly inputPer1M: 30;
704
777
  readonly outputPer1M: 60;
705
778
  readonly vendor: "openai";
706
779
  readonly provider: "openai";
780
+ readonly priceSource: "openrouter";
781
+ readonly idSource: "openai";
782
+ };
783
+ "gpt-4-0613": {
784
+ readonly inputPer1M: 30;
785
+ readonly outputPer1M: 60;
786
+ readonly vendor: "openai";
787
+ readonly provider: "openai";
788
+ readonly priceSource: "openai";
789
+ readonly idSource: "openai";
707
790
  };
708
791
  "gpt-4-turbo": {
709
792
  readonly inputPer1M: 10;
710
793
  readonly outputPer1M: 30;
711
794
  readonly vendor: "openai";
712
795
  readonly provider: "openai";
796
+ readonly priceSource: "openrouter";
797
+ readonly idSource: "openai";
713
798
  };
714
- "gpt-4-turbo-preview": {
799
+ "gpt-4-turbo-2024-04-09": {
715
800
  readonly inputPer1M: 10;
716
801
  readonly outputPer1M: 30;
717
802
  readonly vendor: "openai";
718
803
  readonly provider: "openai";
804
+ readonly priceSource: "openai";
805
+ readonly idSource: "openai";
806
+ };
807
+ "gpt-4-turbo:batch": {
808
+ readonly inputPer1M: 5;
809
+ readonly outputPer1M: 15;
810
+ readonly vendor: "openai";
811
+ readonly provider: "openai";
812
+ readonly priceSource: "openrouter";
813
+ readonly idSource: "openrouter";
719
814
  };
720
815
  "gpt-4.1": {
721
816
  readonly inputPer1M: 2;
@@ -723,6 +818,8 @@ declare const LLM_PRICING_CATALOG: {
723
818
  readonly cacheReadMultiplier: 0.25;
724
819
  readonly vendor: "openai";
725
820
  readonly provider: "openai";
821
+ readonly priceSource: "openai";
822
+ readonly idSource: "openai";
726
823
  };
727
824
  "gpt-4.1-mini": {
728
825
  readonly inputPer1M: 0.4;
@@ -730,6 +827,16 @@ declare const LLM_PRICING_CATALOG: {
730
827
  readonly cacheReadMultiplier: 0.25;
731
828
  readonly vendor: "openai";
732
829
  readonly provider: "openai";
830
+ readonly priceSource: "openai";
831
+ readonly idSource: "openai";
832
+ };
833
+ "gpt-4.1-mini:batch": {
834
+ readonly inputPer1M: 0.2;
835
+ readonly outputPer1M: 0.8;
836
+ readonly vendor: "openai";
837
+ readonly provider: "openai";
838
+ readonly priceSource: "openai";
839
+ readonly idSource: "openrouter";
733
840
  };
734
841
  "gpt-4.1-nano": {
735
842
  readonly inputPer1M: 0.1;
@@ -737,6 +844,24 @@ declare const LLM_PRICING_CATALOG: {
737
844
  readonly cacheReadMultiplier: 0.25;
738
845
  readonly vendor: "openai";
739
846
  readonly provider: "openai";
847
+ readonly priceSource: "openai";
848
+ readonly idSource: "openai";
849
+ };
850
+ "gpt-4.1-nano:batch": {
851
+ readonly inputPer1M: 0.05;
852
+ readonly outputPer1M: 0.2;
853
+ readonly vendor: "openai";
854
+ readonly provider: "openai";
855
+ readonly priceSource: "openai";
856
+ readonly idSource: "openrouter";
857
+ };
858
+ "gpt-4.1:batch": {
859
+ readonly inputPer1M: 1;
860
+ readonly outputPer1M: 4;
861
+ readonly vendor: "openai";
862
+ readonly provider: "openai";
863
+ readonly priceSource: "openai";
864
+ readonly idSource: "openrouter";
740
865
  };
741
866
  "gpt-4o": {
742
867
  readonly inputPer1M: 2.5;
@@ -744,12 +869,16 @@ declare const LLM_PRICING_CATALOG: {
744
869
  readonly cacheReadMultiplier: 0.5;
745
870
  readonly vendor: "openai";
746
871
  readonly provider: "openai";
872
+ readonly priceSource: "openai";
873
+ readonly idSource: "openai";
747
874
  };
748
875
  "gpt-4o-2024-05-13": {
749
876
  readonly inputPer1M: 5;
750
877
  readonly outputPer1M: 15;
751
878
  readonly vendor: "openai";
752
879
  readonly provider: "openai";
880
+ readonly priceSource: "openai";
881
+ readonly idSource: "openai";
753
882
  };
754
883
  "gpt-4o-2024-08-06": {
755
884
  readonly inputPer1M: 2.5;
@@ -757,6 +886,8 @@ declare const LLM_PRICING_CATALOG: {
757
886
  readonly cacheReadMultiplier: 0.5;
758
887
  readonly vendor: "openai";
759
888
  readonly provider: "openai";
889
+ readonly priceSource: "openrouter";
890
+ readonly idSource: "openai";
760
891
  };
761
892
  "gpt-4o-2024-11-20": {
762
893
  readonly inputPer1M: 2.5;
@@ -764,6 +895,8 @@ declare const LLM_PRICING_CATALOG: {
764
895
  readonly cacheReadMultiplier: 0.5;
765
896
  readonly vendor: "openai";
766
897
  readonly provider: "openai";
898
+ readonly priceSource: "openrouter";
899
+ readonly idSource: "openai";
767
900
  };
768
901
  "gpt-4o-mini": {
769
902
  readonly inputPer1M: 0.15;
@@ -771,6 +904,8 @@ declare const LLM_PRICING_CATALOG: {
771
904
  readonly cacheReadMultiplier: 0.5;
772
905
  readonly vendor: "openai";
773
906
  readonly provider: "openai";
907
+ readonly priceSource: "openai";
908
+ readonly idSource: "openai";
774
909
  };
775
910
  "gpt-4o-mini-2024-07-18": {
776
911
  readonly inputPer1M: 0.15;
@@ -778,6 +913,24 @@ declare const LLM_PRICING_CATALOG: {
778
913
  readonly cacheReadMultiplier: 0.5;
779
914
  readonly vendor: "openai";
780
915
  readonly provider: "openai";
916
+ readonly priceSource: "openrouter";
917
+ readonly idSource: "openai";
918
+ };
919
+ "gpt-4o-mini:batch": {
920
+ readonly inputPer1M: 0.075;
921
+ readonly outputPer1M: 0.3;
922
+ readonly vendor: "openai";
923
+ readonly provider: "openai";
924
+ readonly priceSource: "openai";
925
+ readonly idSource: "openrouter";
926
+ };
927
+ "gpt-4o:batch": {
928
+ readonly inputPer1M: 1.25;
929
+ readonly outputPer1M: 5;
930
+ readonly vendor: "openai";
931
+ readonly provider: "openai";
932
+ readonly priceSource: "openai";
933
+ readonly idSource: "openrouter";
781
934
  };
782
935
  "gpt-5": {
783
936
  readonly inputPer1M: 1.25;
@@ -785,6 +938,8 @@ declare const LLM_PRICING_CATALOG: {
785
938
  readonly cacheReadMultiplier: 0.1;
786
939
  readonly vendor: "openai";
787
940
  readonly provider: "openai";
941
+ readonly priceSource: "openai";
942
+ readonly idSource: "openai";
788
943
  };
789
944
  "gpt-5-image": {
790
945
  readonly inputPer1M: 10;
@@ -792,6 +947,8 @@ declare const LLM_PRICING_CATALOG: {
792
947
  readonly cacheReadMultiplier: 0.125;
793
948
  readonly vendor: "openai";
794
949
  readonly provider: "openai";
950
+ readonly priceSource: "openrouter";
951
+ readonly idSource: "openrouter";
795
952
  };
796
953
  "gpt-5-image-mini": {
797
954
  readonly inputPer1M: 2.5;
@@ -799,6 +956,8 @@ declare const LLM_PRICING_CATALOG: {
799
956
  readonly cacheReadMultiplier: 0.1;
800
957
  readonly vendor: "openai";
801
958
  readonly provider: "openai";
959
+ readonly priceSource: "openrouter";
960
+ readonly idSource: "openrouter";
802
961
  };
803
962
  "gpt-5-mini": {
804
963
  readonly inputPer1M: 0.25;
@@ -806,6 +965,17 @@ declare const LLM_PRICING_CATALOG: {
806
965
  readonly cacheReadMultiplier: 0.1;
807
966
  readonly vendor: "openai";
808
967
  readonly provider: "openai";
968
+ readonly priceSource: "openai";
969
+ readonly idSource: "openai";
970
+ };
971
+ "gpt-5-mini:batch": {
972
+ readonly inputPer1M: 0.125;
973
+ readonly outputPer1M: 1;
974
+ readonly cacheReadMultiplier: 0.1;
975
+ readonly vendor: "openai";
976
+ readonly provider: "openai";
977
+ readonly priceSource: "openai";
978
+ readonly idSource: "openrouter";
809
979
  };
810
980
  "gpt-5-nano": {
811
981
  readonly inputPer1M: 0.05;
@@ -813,12 +983,51 @@ declare const LLM_PRICING_CATALOG: {
813
983
  readonly cacheReadMultiplier: 0.1;
814
984
  readonly vendor: "openai";
815
985
  readonly provider: "openai";
986
+ readonly priceSource: "openai";
987
+ readonly idSource: "openai";
988
+ };
989
+ "gpt-5-nano:batch": {
990
+ readonly inputPer1M: 0.025;
991
+ readonly outputPer1M: 0.2;
992
+ readonly cacheReadMultiplier: 0.1;
993
+ readonly vendor: "openai";
994
+ readonly provider: "openai";
995
+ readonly priceSource: "openai";
996
+ readonly idSource: "openrouter";
816
997
  };
817
998
  "gpt-5-pro": {
818
999
  readonly inputPer1M: 15;
819
1000
  readonly outputPer1M: 120;
820
1001
  readonly vendor: "openai";
821
1002
  readonly provider: "openai";
1003
+ readonly priceSource: "openai";
1004
+ readonly idSource: "openai";
1005
+ };
1006
+ "gpt-5-pro:batch": {
1007
+ readonly inputPer1M: 7.5;
1008
+ readonly outputPer1M: 60;
1009
+ readonly vendor: "openai";
1010
+ readonly provider: "openai";
1011
+ readonly priceSource: "openai";
1012
+ readonly idSource: "openrouter";
1013
+ };
1014
+ "gpt-5-search-api": {
1015
+ readonly inputPer1M: 1.25;
1016
+ readonly outputPer1M: 10;
1017
+ readonly cacheReadMultiplier: 0.1;
1018
+ readonly vendor: "openai";
1019
+ readonly provider: "openai";
1020
+ readonly priceSource: "openai";
1021
+ readonly idSource: "openai";
1022
+ };
1023
+ "gpt-5:batch": {
1024
+ readonly inputPer1M: 0.625;
1025
+ readonly outputPer1M: 5;
1026
+ readonly cacheReadMultiplier: 0.1;
1027
+ readonly vendor: "openai";
1028
+ readonly provider: "openai";
1029
+ readonly priceSource: "openai";
1030
+ readonly idSource: "openrouter";
822
1031
  };
823
1032
  "gpt-5.1": {
824
1033
  readonly inputPer1M: 1.25;
@@ -826,6 +1035,8 @@ declare const LLM_PRICING_CATALOG: {
826
1035
  readonly cacheReadMultiplier: 0.1;
827
1036
  readonly vendor: "openai";
828
1037
  readonly provider: "openai";
1038
+ readonly priceSource: "openai";
1039
+ readonly idSource: "openai";
829
1040
  };
830
1041
  "gpt-5.1-codex": {
831
1042
  readonly inputPer1M: 1.25;
@@ -833,6 +1044,8 @@ declare const LLM_PRICING_CATALOG: {
833
1044
  readonly cacheReadMultiplier: 0.104;
834
1045
  readonly vendor: "openai";
835
1046
  readonly provider: "openai";
1047
+ readonly priceSource: "openrouter";
1048
+ readonly idSource: "openai";
836
1049
  };
837
1050
  "gpt-5.1-codex-max": {
838
1051
  readonly inputPer1M: 1.25;
@@ -840,6 +1053,8 @@ declare const LLM_PRICING_CATALOG: {
840
1053
  readonly cacheReadMultiplier: 0.1;
841
1054
  readonly vendor: "openai";
842
1055
  readonly provider: "openai";
1056
+ readonly priceSource: "openrouter";
1057
+ readonly idSource: "openai";
843
1058
  };
844
1059
  "gpt-5.1-codex-mini": {
845
1060
  readonly inputPer1M: 0.25;
@@ -847,6 +1062,17 @@ declare const LLM_PRICING_CATALOG: {
847
1062
  readonly cacheReadMultiplier: 0.12;
848
1063
  readonly vendor: "openai";
849
1064
  readonly provider: "openai";
1065
+ readonly priceSource: "openrouter";
1066
+ readonly idSource: "openai";
1067
+ };
1068
+ "gpt-5.1:batch": {
1069
+ readonly inputPer1M: 0.625;
1070
+ readonly outputPer1M: 5;
1071
+ readonly cacheReadMultiplier: 0.1;
1072
+ readonly vendor: "openai";
1073
+ readonly provider: "openai";
1074
+ readonly priceSource: "openai";
1075
+ readonly idSource: "openrouter";
850
1076
  };
851
1077
  "gpt-5.2": {
852
1078
  readonly inputPer1M: 1.75;
@@ -854,6 +1080,8 @@ declare const LLM_PRICING_CATALOG: {
854
1080
  readonly cacheReadMultiplier: 0.1;
855
1081
  readonly vendor: "openai";
856
1082
  readonly provider: "openai";
1083
+ readonly priceSource: "openai";
1084
+ readonly idSource: "openai";
857
1085
  };
858
1086
  "gpt-5.2-chat": {
859
1087
  readonly inputPer1M: 1.75;
@@ -861,6 +1089,8 @@ declare const LLM_PRICING_CATALOG: {
861
1089
  readonly cacheReadMultiplier: 0.1;
862
1090
  readonly vendor: "openai";
863
1091
  readonly provider: "openai";
1092
+ readonly priceSource: "openrouter";
1093
+ readonly idSource: "openrouter";
864
1094
  };
865
1095
  "gpt-5.2-codex": {
866
1096
  readonly inputPer1M: 1.75;
@@ -868,12 +1098,33 @@ declare const LLM_PRICING_CATALOG: {
868
1098
  readonly cacheReadMultiplier: 0.1;
869
1099
  readonly vendor: "openai";
870
1100
  readonly provider: "openai";
1101
+ readonly priceSource: "openrouter";
1102
+ readonly idSource: "openai";
871
1103
  };
872
1104
  "gpt-5.2-pro": {
873
1105
  readonly inputPer1M: 21;
874
1106
  readonly outputPer1M: 168;
875
1107
  readonly vendor: "openai";
876
1108
  readonly provider: "openai";
1109
+ readonly priceSource: "openai";
1110
+ readonly idSource: "openai";
1111
+ };
1112
+ "gpt-5.2-pro:batch": {
1113
+ readonly inputPer1M: 10.5;
1114
+ readonly outputPer1M: 84;
1115
+ readonly vendor: "openai";
1116
+ readonly provider: "openai";
1117
+ readonly priceSource: "openai";
1118
+ readonly idSource: "openrouter";
1119
+ };
1120
+ "gpt-5.2:batch": {
1121
+ readonly inputPer1M: 0.875;
1122
+ readonly outputPer1M: 7;
1123
+ readonly cacheReadMultiplier: 0.1;
1124
+ readonly vendor: "openai";
1125
+ readonly provider: "openai";
1126
+ readonly priceSource: "openai";
1127
+ readonly idSource: "openrouter";
877
1128
  };
878
1129
  "gpt-5.3-codex": {
879
1130
  readonly inputPer1M: 1.75;
@@ -881,6 +1132,8 @@ declare const LLM_PRICING_CATALOG: {
881
1132
  readonly cacheReadMultiplier: 0.1;
882
1133
  readonly vendor: "openai";
883
1134
  readonly provider: "openai";
1135
+ readonly priceSource: "openai";
1136
+ readonly idSource: "openai";
884
1137
  };
885
1138
  "gpt-5.4": {
886
1139
  readonly inputPer1M: 2.5;
@@ -888,6 +1141,8 @@ declare const LLM_PRICING_CATALOG: {
888
1141
  readonly cacheReadMultiplier: 0.1;
889
1142
  readonly vendor: "openai";
890
1143
  readonly provider: "openai";
1144
+ readonly priceSource: "openai";
1145
+ readonly idSource: "openai";
891
1146
  };
892
1147
  "gpt-5.4-mini": {
893
1148
  readonly inputPer1M: 0.75;
@@ -895,6 +1150,17 @@ declare const LLM_PRICING_CATALOG: {
895
1150
  readonly cacheReadMultiplier: 0.1;
896
1151
  readonly vendor: "openai";
897
1152
  readonly provider: "openai";
1153
+ readonly priceSource: "openai";
1154
+ readonly idSource: "openai";
1155
+ };
1156
+ "gpt-5.4-mini:batch": {
1157
+ readonly inputPer1M: 0.375;
1158
+ readonly outputPer1M: 2.25;
1159
+ readonly cacheReadMultiplier: 0.1;
1160
+ readonly vendor: "openai";
1161
+ readonly provider: "openai";
1162
+ readonly priceSource: "openai";
1163
+ readonly idSource: "openrouter";
898
1164
  };
899
1165
  "gpt-5.4-nano": {
900
1166
  readonly inputPer1M: 0.2;
@@ -902,12 +1168,42 @@ declare const LLM_PRICING_CATALOG: {
902
1168
  readonly cacheReadMultiplier: 0.1;
903
1169
  readonly vendor: "openai";
904
1170
  readonly provider: "openai";
1171
+ readonly priceSource: "openai";
1172
+ readonly idSource: "openai";
1173
+ };
1174
+ "gpt-5.4-nano:batch": {
1175
+ readonly inputPer1M: 0.1;
1176
+ readonly outputPer1M: 0.625;
1177
+ readonly cacheReadMultiplier: 0.1;
1178
+ readonly vendor: "openai";
1179
+ readonly provider: "openai";
1180
+ readonly priceSource: "openai";
1181
+ readonly idSource: "openrouter";
905
1182
  };
906
1183
  "gpt-5.4-pro": {
907
1184
  readonly inputPer1M: 30;
908
1185
  readonly outputPer1M: 180;
909
1186
  readonly vendor: "openai";
910
1187
  readonly provider: "openai";
1188
+ readonly priceSource: "openai";
1189
+ readonly idSource: "openai";
1190
+ };
1191
+ "gpt-5.4-pro:batch": {
1192
+ readonly inputPer1M: 15;
1193
+ readonly outputPer1M: 90;
1194
+ readonly vendor: "openai";
1195
+ readonly provider: "openai";
1196
+ readonly priceSource: "openai";
1197
+ readonly idSource: "openrouter";
1198
+ };
1199
+ "gpt-5.4:batch": {
1200
+ readonly inputPer1M: 1.25;
1201
+ readonly outputPer1M: 7.5;
1202
+ readonly cacheReadMultiplier: 0.104;
1203
+ readonly vendor: "openai";
1204
+ readonly provider: "openai";
1205
+ readonly priceSource: "openai";
1206
+ readonly idSource: "openrouter";
911
1207
  };
912
1208
  "gpt-5.5": {
913
1209
  readonly inputPer1M: 5;
@@ -915,12 +1211,33 @@ declare const LLM_PRICING_CATALOG: {
915
1211
  readonly cacheReadMultiplier: 0.1;
916
1212
  readonly vendor: "openai";
917
1213
  readonly provider: "openai";
1214
+ readonly priceSource: "openai";
1215
+ readonly idSource: "openai";
918
1216
  };
919
1217
  "gpt-5.5-pro": {
920
1218
  readonly inputPer1M: 30;
921
1219
  readonly outputPer1M: 180;
922
1220
  readonly vendor: "openai";
923
1221
  readonly provider: "openai";
1222
+ readonly priceSource: "openai";
1223
+ readonly idSource: "openai";
1224
+ };
1225
+ "gpt-5.5-pro:batch": {
1226
+ readonly inputPer1M: 15;
1227
+ readonly outputPer1M: 90;
1228
+ readonly vendor: "openai";
1229
+ readonly provider: "openai";
1230
+ readonly priceSource: "openai";
1231
+ readonly idSource: "openrouter";
1232
+ };
1233
+ "gpt-5.5:batch": {
1234
+ readonly inputPer1M: 2.5;
1235
+ readonly outputPer1M: 15;
1236
+ readonly cacheReadMultiplier: 0.1;
1237
+ readonly vendor: "openai";
1238
+ readonly provider: "openai";
1239
+ readonly priceSource: "openai";
1240
+ readonly idSource: "openrouter";
924
1241
  };
925
1242
  "gpt-5.6-luna": {
926
1243
  readonly inputPer1M: 0.2;
@@ -929,6 +1246,8 @@ declare const LLM_PRICING_CATALOG: {
929
1246
  readonly cacheWriteMultiplier: 1.25;
930
1247
  readonly vendor: "openai";
931
1248
  readonly provider: "openai";
1249
+ readonly priceSource: "openai";
1250
+ readonly idSource: "openai";
932
1251
  };
933
1252
  "gpt-5.6-luna-pro": {
934
1253
  readonly inputPer1M: 0.2;
@@ -937,22 +1256,67 @@ declare const LLM_PRICING_CATALOG: {
937
1256
  readonly cacheWriteMultiplier: 1.25;
938
1257
  readonly vendor: "openai";
939
1258
  readonly provider: "openai";
1259
+ readonly priceSource: "openrouter";
1260
+ readonly idSource: "openrouter";
1261
+ };
1262
+ "gpt-5.6-luna-pro:batch": {
1263
+ readonly inputPer1M: 0.1;
1264
+ readonly outputPer1M: 0.6;
1265
+ readonly cacheReadMultiplier: 0.1;
1266
+ readonly vendor: "openai";
1267
+ readonly provider: "openai";
1268
+ readonly priceSource: "openrouter";
1269
+ readonly idSource: "openrouter";
1270
+ };
1271
+ "gpt-5.6-luna:batch": {
1272
+ readonly inputPer1M: 0.1;
1273
+ readonly outputPer1M: 0.6;
1274
+ readonly cacheReadMultiplier: 0.1;
1275
+ readonly cacheWriteMultiplier: 1.25;
1276
+ readonly vendor: "openai";
1277
+ readonly provider: "openai";
1278
+ readonly priceSource: "openai";
1279
+ readonly idSource: "openrouter";
940
1280
  };
941
1281
  "gpt-5.6-sol": {
1282
+ readonly inputPer1M: 4;
1283
+ readonly outputPer1M: 20;
1284
+ readonly cacheReadMultiplier: 0.1;
1285
+ readonly cacheWriteMultiplier: 1.25;
1286
+ readonly vendor: "openai";
1287
+ readonly provider: "openai";
1288
+ readonly priceSource: "openai";
1289
+ readonly idSource: "openai";
1290
+ };
1291
+ "gpt-5.6-sol-pro": {
942
1292
  readonly inputPer1M: 2;
943
1293
  readonly outputPer1M: 10;
944
1294
  readonly cacheReadMultiplier: 0.1;
945
1295
  readonly cacheWriteMultiplier: 1.25;
946
1296
  readonly vendor: "openai";
947
1297
  readonly provider: "openai";
1298
+ readonly priceSource: "openrouter";
1299
+ readonly idSource: "openrouter";
948
1300
  };
949
- "gpt-5.6-sol-pro": {
1301
+ "gpt-5.6-sol-pro:batch": {
1302
+ readonly inputPer1M: 1;
1303
+ readonly outputPer1M: 5;
1304
+ readonly cacheReadMultiplier: 0.1;
1305
+ readonly cacheWriteMultiplier: 1.25;
1306
+ readonly vendor: "openai";
1307
+ readonly provider: "openai";
1308
+ readonly priceSource: "openrouter";
1309
+ readonly idSource: "openrouter";
1310
+ };
1311
+ "gpt-5.6-sol:batch": {
950
1312
  readonly inputPer1M: 2;
951
1313
  readonly outputPer1M: 10;
952
1314
  readonly cacheReadMultiplier: 0.1;
953
1315
  readonly cacheWriteMultiplier: 1.25;
954
1316
  readonly vendor: "openai";
955
1317
  readonly provider: "openai";
1318
+ readonly priceSource: "openai";
1319
+ readonly idSource: "openrouter";
956
1320
  };
957
1321
  "gpt-5.6-terra": {
958
1322
  readonly inputPer1M: 2;
@@ -961,6 +1325,8 @@ declare const LLM_PRICING_CATALOG: {
961
1325
  readonly cacheWriteMultiplier: 1.25;
962
1326
  readonly vendor: "openai";
963
1327
  readonly provider: "openai";
1328
+ readonly priceSource: "openai";
1329
+ readonly idSource: "openai";
964
1330
  };
965
1331
  "gpt-5.6-terra-pro": {
966
1332
  readonly inputPer1M: 2;
@@ -969,18 +1335,163 @@ declare const LLM_PRICING_CATALOG: {
969
1335
  readonly cacheWriteMultiplier: 1.25;
970
1336
  readonly vendor: "openai";
971
1337
  readonly provider: "openai";
1338
+ readonly priceSource: "openrouter";
1339
+ readonly idSource: "openrouter";
1340
+ };
1341
+ "gpt-5.6-terra-pro:batch": {
1342
+ readonly inputPer1M: 1;
1343
+ readonly outputPer1M: 6;
1344
+ readonly cacheReadMultiplier: 0.1;
1345
+ readonly vendor: "openai";
1346
+ readonly provider: "openai";
1347
+ readonly priceSource: "openrouter";
1348
+ readonly idSource: "openrouter";
1349
+ };
1350
+ "gpt-5.6-terra:batch": {
1351
+ readonly inputPer1M: 1;
1352
+ readonly outputPer1M: 6;
1353
+ readonly cacheReadMultiplier: 0.1;
1354
+ readonly cacheWriteMultiplier: 1.25;
1355
+ readonly vendor: "openai";
1356
+ readonly provider: "openai";
1357
+ readonly priceSource: "openai";
1358
+ readonly idSource: "openrouter";
1359
+ };
1360
+ "gpt-6-astra": {
1361
+ readonly inputPer1M: 10;
1362
+ readonly outputPer1M: 50;
1363
+ readonly cacheReadMultiplier: 0.1;
1364
+ readonly cacheWriteMultiplier: 1.25;
1365
+ readonly vendor: "openai";
1366
+ readonly provider: "openai";
1367
+ readonly priceSource: "openai";
1368
+ readonly idSource: "openai";
1369
+ };
1370
+ "gpt-6-astra-pro": {
1371
+ readonly inputPer1M: 10;
1372
+ readonly outputPer1M: 50;
1373
+ readonly cacheReadMultiplier: 0.1;
1374
+ readonly cacheWriteMultiplier: 1.25;
1375
+ readonly vendor: "openai";
1376
+ readonly provider: "openai";
1377
+ readonly priceSource: "openrouter";
1378
+ readonly idSource: "openrouter";
1379
+ };
1380
+ "gpt-6-astra-pro:batch": {
1381
+ readonly inputPer1M: 5;
1382
+ readonly outputPer1M: 25;
1383
+ readonly cacheReadMultiplier: 0.1;
1384
+ readonly cacheWriteMultiplier: 1.25;
1385
+ readonly vendor: "openai";
1386
+ readonly provider: "openai";
1387
+ readonly priceSource: "openrouter";
1388
+ readonly idSource: "openrouter";
1389
+ };
1390
+ "gpt-6-astra:batch": {
1391
+ readonly inputPer1M: 5;
1392
+ readonly outputPer1M: 25;
1393
+ readonly cacheReadMultiplier: 0.1;
1394
+ readonly cacheWriteMultiplier: 1.25;
1395
+ readonly vendor: "openai";
1396
+ readonly provider: "openai";
1397
+ readonly priceSource: "openai";
1398
+ readonly idSource: "openrouter";
1399
+ };
1400
+ "gpt-6-luna": {
1401
+ readonly inputPer1M: 0.1;
1402
+ readonly outputPer1M: 0.5;
1403
+ readonly cacheReadMultiplier: 0.1;
1404
+ readonly cacheWriteMultiplier: 1.25;
1405
+ readonly vendor: "openai";
1406
+ readonly provider: "openai";
1407
+ readonly priceSource: "openai";
1408
+ readonly idSource: "openai";
1409
+ };
1410
+ "gpt-6-luna-pro": {
1411
+ readonly inputPer1M: 0.1;
1412
+ readonly outputPer1M: 0.5;
1413
+ readonly cacheReadMultiplier: 0.1;
1414
+ readonly cacheWriteMultiplier: 1.25;
1415
+ readonly vendor: "openai";
1416
+ readonly provider: "openai";
1417
+ readonly priceSource: "openrouter";
1418
+ readonly idSource: "openrouter";
1419
+ };
1420
+ "gpt-6-luna-pro:batch": {
1421
+ readonly inputPer1M: 0.05;
1422
+ readonly outputPer1M: 0.25;
1423
+ readonly cacheReadMultiplier: 0.1;
1424
+ readonly cacheWriteMultiplier: 1.25;
1425
+ readonly vendor: "openai";
1426
+ readonly provider: "openai";
1427
+ readonly priceSource: "openrouter";
1428
+ readonly idSource: "openrouter";
1429
+ };
1430
+ "gpt-6-luna:batch": {
1431
+ readonly inputPer1M: 0.05;
1432
+ readonly outputPer1M: 0.25;
1433
+ readonly cacheReadMultiplier: 0.1;
1434
+ readonly cacheWriteMultiplier: 1.25;
1435
+ readonly vendor: "openai";
1436
+ readonly provider: "openai";
1437
+ readonly priceSource: "openai";
1438
+ readonly idSource: "openrouter";
1439
+ };
1440
+ "gpt-6-sol": {
1441
+ readonly inputPer1M: 2;
1442
+ readonly outputPer1M: 10;
1443
+ readonly cacheReadMultiplier: 0.1;
1444
+ readonly cacheWriteMultiplier: 1.25;
1445
+ readonly vendor: "openai";
1446
+ readonly provider: "openai";
1447
+ readonly priceSource: "openai";
1448
+ readonly idSource: "openai";
1449
+ };
1450
+ "gpt-6-sol-pro": {
1451
+ readonly inputPer1M: 2;
1452
+ readonly outputPer1M: 10;
1453
+ readonly cacheReadMultiplier: 0.1;
1454
+ readonly cacheWriteMultiplier: 1.25;
1455
+ readonly vendor: "openai";
1456
+ readonly provider: "openai";
1457
+ readonly priceSource: "openrouter";
1458
+ readonly idSource: "openrouter";
1459
+ };
1460
+ "gpt-6-sol-pro:batch": {
1461
+ readonly inputPer1M: 1;
1462
+ readonly outputPer1M: 5;
1463
+ readonly cacheReadMultiplier: 0.1;
1464
+ readonly cacheWriteMultiplier: 1.25;
1465
+ readonly vendor: "openai";
1466
+ readonly provider: "openai";
1467
+ readonly priceSource: "openrouter";
1468
+ readonly idSource: "openrouter";
1469
+ };
1470
+ "gpt-6-sol:batch": {
1471
+ readonly inputPer1M: 1;
1472
+ readonly outputPer1M: 5;
1473
+ readonly cacheReadMultiplier: 0.1;
1474
+ readonly cacheWriteMultiplier: 1.25;
1475
+ readonly vendor: "openai";
1476
+ readonly provider: "openai";
1477
+ readonly priceSource: "openai";
1478
+ readonly idSource: "openrouter";
972
1479
  };
973
1480
  "gpt-audio": {
974
1481
  readonly inputPer1M: 2.5;
975
1482
  readonly outputPer1M: 10;
976
1483
  readonly vendor: "openai";
977
1484
  readonly provider: "openai";
1485
+ readonly priceSource: "openrouter";
1486
+ readonly idSource: "openai";
978
1487
  };
979
1488
  "gpt-audio-mini": {
980
1489
  readonly inputPer1M: 0.6;
981
1490
  readonly outputPer1M: 2.4;
982
1491
  readonly vendor: "openai";
983
1492
  readonly provider: "openai";
1493
+ readonly priceSource: "openrouter";
1494
+ readonly idSource: "openai";
984
1495
  };
985
1496
  "gpt-chat-latest": {
986
1497
  readonly inputPer1M: 5;
@@ -988,31 +1499,41 @@ declare const LLM_PRICING_CATALOG: {
988
1499
  readonly cacheReadMultiplier: 0.1;
989
1500
  readonly vendor: "openai";
990
1501
  readonly provider: "openai";
1502
+ readonly priceSource: "openrouter";
1503
+ readonly idSource: "openrouter";
991
1504
  };
992
1505
  "gpt-oss-120b": {
993
- readonly inputPer1M: 0.037;
994
- readonly outputPer1M: 0.17;
1506
+ readonly inputPer1M: 0.15;
1507
+ readonly outputPer1M: 0.6;
1508
+ readonly cacheReadMultiplier: 0.5;
995
1509
  readonly vendor: "openai";
996
1510
  readonly provider: "openai";
1511
+ readonly priceSource: "openrouter";
1512
+ readonly idSource: "openrouter";
997
1513
  };
998
1514
  "gpt-oss-120b:batch": {
999
- readonly inputPer1M: 0.15;
1000
- readonly outputPer1M: 0.6;
1515
+ readonly inputPer1M: 0.0296;
1516
+ readonly outputPer1M: 0.136;
1001
1517
  readonly vendor: "openai";
1002
1518
  readonly provider: "openai";
1519
+ readonly priceSource: "openrouter";
1520
+ readonly idSource: "openrouter";
1003
1521
  };
1004
1522
  "gpt-oss-20b": {
1005
- readonly inputPer1M: 0.03;
1006
- readonly outputPer1M: 0.13;
1007
- readonly cacheReadMultiplier: 1;
1523
+ readonly inputPer1M: 0.018;
1524
+ readonly outputPer1M: 0.09;
1008
1525
  readonly vendor: "openai";
1009
1526
  readonly provider: "openai";
1527
+ readonly priceSource: "openrouter";
1528
+ readonly idSource: "openrouter";
1010
1529
  };
1011
1530
  "gpt-oss-20b:batch": {
1012
- readonly inputPer1M: 0.05;
1013
- readonly outputPer1M: 0.2;
1531
+ readonly inputPer1M: 0.024;
1532
+ readonly outputPer1M: 0.112;
1014
1533
  readonly vendor: "openai";
1015
1534
  readonly provider: "openai";
1535
+ readonly priceSource: "openrouter";
1536
+ readonly idSource: "openrouter";
1016
1537
  };
1017
1538
  "gpt-oss-safeguard-20b": {
1018
1539
  readonly inputPer1M: 0.075;
@@ -1020,6 +1541,8 @@ declare const LLM_PRICING_CATALOG: {
1020
1541
  readonly cacheReadMultiplier: 0.5;
1021
1542
  readonly vendor: "openai";
1022
1543
  readonly provider: "openai";
1544
+ readonly priceSource: "openrouter";
1545
+ readonly idSource: "openrouter";
1023
1546
  };
1024
1547
  o1: {
1025
1548
  readonly inputPer1M: 15;
@@ -1027,12 +1550,16 @@ declare const LLM_PRICING_CATALOG: {
1027
1550
  readonly cacheReadMultiplier: 0.5;
1028
1551
  readonly vendor: "openai";
1029
1552
  readonly provider: "openai";
1553
+ readonly priceSource: "openai";
1554
+ readonly idSource: "openai";
1030
1555
  };
1031
1556
  "o1-pro": {
1032
1557
  readonly inputPer1M: 150;
1033
1558
  readonly outputPer1M: 600;
1034
1559
  readonly vendor: "openai";
1035
1560
  readonly provider: "openai";
1561
+ readonly priceSource: "openai";
1562
+ readonly idSource: "openai";
1036
1563
  };
1037
1564
  o3: {
1038
1565
  readonly inputPer1M: 2;
@@ -1040,6 +1567,8 @@ declare const LLM_PRICING_CATALOG: {
1040
1567
  readonly cacheReadMultiplier: 0.25;
1041
1568
  readonly vendor: "openai";
1042
1569
  readonly provider: "openai";
1570
+ readonly priceSource: "openai";
1571
+ readonly idSource: "openai";
1043
1572
  };
1044
1573
  "o3-mini": {
1045
1574
  readonly inputPer1M: 1.1;
@@ -1047,6 +1576,8 @@ declare const LLM_PRICING_CATALOG: {
1047
1576
  readonly cacheReadMultiplier: 0.5;
1048
1577
  readonly vendor: "openai";
1049
1578
  readonly provider: "openai";
1579
+ readonly priceSource: "openai";
1580
+ readonly idSource: "openai";
1050
1581
  };
1051
1582
  "o3-mini-high": {
1052
1583
  readonly inputPer1M: 1.1;
@@ -1054,12 +1585,32 @@ declare const LLM_PRICING_CATALOG: {
1054
1585
  readonly cacheReadMultiplier: 0.5;
1055
1586
  readonly vendor: "openai";
1056
1587
  readonly provider: "openai";
1588
+ readonly priceSource: "openrouter";
1589
+ readonly idSource: "openrouter";
1590
+ };
1591
+ "o3-mini:batch": {
1592
+ readonly inputPer1M: 0.55;
1593
+ readonly outputPer1M: 2.2;
1594
+ readonly vendor: "openai";
1595
+ readonly provider: "openai";
1596
+ readonly priceSource: "openai";
1597
+ readonly idSource: "openrouter";
1057
1598
  };
1058
1599
  "o3-pro": {
1059
1600
  readonly inputPer1M: 20;
1060
1601
  readonly outputPer1M: 80;
1061
1602
  readonly vendor: "openai";
1062
1603
  readonly provider: "openai";
1604
+ readonly priceSource: "openai";
1605
+ readonly idSource: "openrouter";
1606
+ };
1607
+ "o3:batch": {
1608
+ readonly inputPer1M: 1;
1609
+ readonly outputPer1M: 4;
1610
+ readonly vendor: "openai";
1611
+ readonly provider: "openai";
1612
+ readonly priceSource: "openai";
1613
+ readonly idSource: "openrouter";
1063
1614
  };
1064
1615
  "o4-mini": {
1065
1616
  readonly inputPer1M: 1.1;
@@ -1067,6 +1618,8 @@ declare const LLM_PRICING_CATALOG: {
1067
1618
  readonly cacheReadMultiplier: 0.25;
1068
1619
  readonly vendor: "openai";
1069
1620
  readonly provider: "openai";
1621
+ readonly priceSource: "openai";
1622
+ readonly idSource: "openai";
1070
1623
  };
1071
1624
  "o4-mini-high": {
1072
1625
  readonly inputPer1M: 1.1;
@@ -1074,6 +1627,16 @@ declare const LLM_PRICING_CATALOG: {
1074
1627
  readonly cacheReadMultiplier: 0.25;
1075
1628
  readonly vendor: "openai";
1076
1629
  readonly provider: "openai";
1630
+ readonly priceSource: "openrouter";
1631
+ readonly idSource: "openrouter";
1632
+ };
1633
+ "o4-mini:batch": {
1634
+ readonly inputPer1M: 0.55;
1635
+ readonly outputPer1M: 2.2;
1636
+ readonly vendor: "openai";
1637
+ readonly provider: "openai";
1638
+ readonly priceSource: "openai";
1639
+ readonly idSource: "openrouter";
1077
1640
  };
1078
1641
  "gemini-2.5-flash": {
1079
1642
  readonly inputPer1M: 0.3;
@@ -1322,15 +1885,28 @@ declare const LLM_PRICING_CATALOG: {
1322
1885
  * `LlmModelId` now unions the pricing keys with `CONTEXT_WINDOWS` (each
1323
1886
  * provider's own synced `/v1/models` id list — see
1324
1887
  * `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
1888
+ * ids independent of whether a price has synced yet), `OPENROUTER_ROUTES`
1889
+ * (thousands of ids, self-updating), and `OPENAI_GENERATED_UNPRICED_IDS`
1890
+ * (ids `api.openai.com/v1/models` lists that neither OpenAI's pricing page
1891
+ * nor OpenRouter prices — mostly dated snapshots like `gpt-5.4-2026-03-05`.
1892
+ * OpenAI's `/v1/models` publishes no context window, so unlike the other
1893
+ * providers these ids cannot ride in via `CONTEXT_WINDOWS`; they need their
1894
+ * own existence-only list, which is exactly what that export is).
1895
+ * A model can be a member of this type
1327
1896
  * with `resolvePricing` returning `undefined` for it — callers MUST treat
1328
1897
  * that as "price not yet known," never as "doesn't exist" (see
1329
1898
  * `ResolvedModel`'s `pricing?` in `registry/index.ts`, and `isKnownLlmId`
1330
1899
  * below for an existence-only check). Downstream curation/config should
1331
1900
  * still constrain ids to this type so a typo is a build error.
1901
+ *
1902
+ * That last point is why the generator emits `OPENAI_GENERATED_UNPRICED_IDS`
1903
+ * as a literal tuple (`[...] as const`, and `[] as const` when empty) and
1904
+ * never as `readonly string[]`: indexing the latter with `[number]` yields
1905
+ * plain `string`, which would widen this whole union to `string` and turn
1906
+ * every id typo back into a silent runtime miss. Tested at the source, in
1907
+ * catalog-sync's `openai-catalog.test.ts`.
1332
1908
  */
1333
- type LlmModelId = keyof typeof LLM_PRICING_CATALOG | keyof typeof CONTEXT_WINDOWS | keyof typeof OPENROUTER_ROUTES;
1909
+ type LlmModelId = keyof typeof LLM_PRICING_CATALOG | keyof typeof CONTEXT_WINDOWS | keyof typeof OPENROUTER_ROUTES | (typeof OPENAI_GENERATED_UNPRICED_IDS)[number];
1334
1910
  /**
1335
1911
  * True iff `modelId` is a real, known catalog id — regardless of whether it
1336
1912
  * has a price yet. Use this (not `resolvePricing(id) !== undefined`) to
@@ -1341,10 +1917,11 @@ type LlmModelId = keyof typeof LLM_PRICING_CATALOG | keyof typeof CONTEXT_WINDOW
1341
1917
  declare function isKnownLlmId(modelId: string): boolean;
1342
1918
  /**
1343
1919
  * 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`).
1920
+ * `OPENROUTER_ROUTES` ∪ `OPENAI_GENERATED_UNPRICED_IDS`, minus whatever
1921
+ * `LLM_PRICING_CATALOG` already prices) — the enumeration `listModels`'s
1922
+ * `llm` branch needs to surface a known-but-unpriced model instead of
1923
+ * silently dropping it. Each entry carries its provider when derivable (see
1924
+ * `getModelProvider`).
1348
1925
  */
1349
1926
  declare function listUnpricedKnownLlmIds(): Array<{
1350
1927
  id: string;
@@ -1410,7 +1987,7 @@ type KnownLlmId = LlmModelId | LlmModelAlias;
1410
1987
  * partial-prefix match. Used both for cost computation and BYOK shadow
1411
1988
  * accounting; semantics are load-bearing for migration.
1412
1989
  */
1413
- declare function resolvePricing(modelId: string): LLMPricing | undefined;
1990
+ declare function resolvePricing(rawModelId: string): LLMPricing | undefined;
1414
1991
  /**
1415
1992
  * Like {@link resolvePricing} but WITHOUT the substring/partial-prefix
1416
1993
  * fallback — an id resolves ONLY on an exact catalog key or an exact alias.
@@ -1423,13 +2000,13 @@ declare function resolvePricing(modelId: string): LLMPricing | undefined;
1423
2000
  * `resolvePricing`/`resolveAlias` are intentionally left unchanged for their
1424
2001
  * existing callers.
1425
2002
  */
1426
- declare function resolvePricingExact(modelId: string): LLMPricing | undefined;
2003
+ declare function resolvePricingExact(rawModelId: string): LLMPricing | undefined;
1427
2004
  /**
1428
2005
  * Resolves a model id to its canonical catalog key (or the original id if no
1429
2006
  * match). Public surface for consumers that need the canonical id without
1430
2007
  * the pricing payload.
1431
2008
  */
1432
- declare function resolveAlias(modelId: string): string;
2009
+ declare function resolveAlias(rawModelId: string): string;
1433
2010
  /**
1434
2011
  * Resolves a model id to its live context window (max input tokens) and max
1435
2012
  * output tokens, sourced from `CONTEXT_WINDOWS`
@@ -1442,6 +2019,19 @@ declare function resolveAlias(modelId: string): string;
1442
2019
  * older aliases. Returns undefined for ids no synced provider carries.
1443
2020
  */
1444
2021
  declare function resolveContextWindow(modelId: string): ContextWindowEntry | undefined;
2022
+ /**
2023
+ * Split a trailing context-lane hint off a model id: `"claude-opus-5-5[1m]"`
2024
+ * → `{ id: "claude-opus-5-5", contextWindow: 1_000_000 }`. Claude Code (and
2025
+ * claude-agent-acp's model picker) spell the extended-context lane of a
2026
+ * model this way; the bracket is not part of the model's identity (pricing,
2027
+ * provider, catalog key) but IS an authoritative statement of its window.
2028
+ * Ids without a well-formed `[<n>k]` / `[<n>m]` suffix come back unchanged
2029
+ * with no `contextWindow`.
2030
+ */
2031
+ declare function splitContextWindowHint(modelId: string): {
2032
+ id: string;
2033
+ contextWindow?: number;
2034
+ };
1445
2035
  /**
1446
2036
  * Every live model id `CONTEXT_WINDOWS` carries for one provider — sourced
1447
2037
  * straight from that provider's own `/v1/models` sync (`llm-context-windows.ts`
@@ -1605,4 +2195,4 @@ interface CacheStats {
1605
2195
  */
1606
2196
  declare function getCacheStats(modelId: string, usage: LLMUsageBreakdown, opts?: CalculateLLMCreditCostOptions): CacheStats;
1607
2197
 
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 };
2198
+ 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 };