@tyvm/knowhow 0.0.105 → 0.0.106

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 (209) hide show
  1. package/CONFIG.md +8 -5
  2. package/package.json +3 -2
  3. package/scripts/check-model-pricing.ts +509 -0
  4. package/scripts/compare-openrouter-coverage.ts +576 -0
  5. package/src/agents/base/base.ts +127 -2
  6. package/src/agents/tools/execCommand.ts +4 -0
  7. package/src/agents/tools/executeScript/definition.ts +1 -1
  8. package/src/agents/tools/index.ts +0 -1
  9. package/src/agents/tools/list.ts +3 -43
  10. package/src/agents/tools/writeFile.ts +1 -1
  11. package/src/auth/browserLogin.ts +9 -4
  12. package/src/chat/modules/RemoteSyncModule.ts +3 -0
  13. package/src/cli.ts +31 -1
  14. package/src/clients/cerebras.ts +10 -0
  15. package/src/clients/contextLimits.ts +7 -2
  16. package/src/clients/copilot.ts +23 -0
  17. package/src/clients/deepseek.ts +16 -0
  18. package/src/clients/fireworks.ts +15 -0
  19. package/src/clients/gemini.ts +45 -2
  20. package/src/clients/github.ts +16 -0
  21. package/src/clients/groq.ts +15 -0
  22. package/src/clients/http.ts +190 -6
  23. package/src/clients/index.ts +116 -4
  24. package/src/clients/llama.ts +16 -0
  25. package/src/clients/mistral.ts +16 -0
  26. package/src/clients/nvidia.ts +16 -0
  27. package/src/clients/openai.ts +41 -11
  28. package/src/clients/openrouter.ts +17 -0
  29. package/src/clients/pricing/anthropic.ts +105 -78
  30. package/src/clients/pricing/cerebras.ts +11 -0
  31. package/src/clients/pricing/copilot.ts +60 -0
  32. package/src/clients/pricing/deepseek.ts +15 -0
  33. package/src/clients/pricing/fireworks.ts +32 -0
  34. package/src/clients/pricing/github.ts +69 -0
  35. package/src/clients/pricing/google.ts +245 -206
  36. package/src/clients/pricing/groq.ts +56 -0
  37. package/src/clients/pricing/index.ts +42 -5
  38. package/src/clients/pricing/llama.ts +18 -0
  39. package/src/clients/pricing/mistral.ts +34 -0
  40. package/src/clients/pricing/models.ts +7 -236
  41. package/src/clients/pricing/nvidia.ts +102 -0
  42. package/src/clients/pricing/openai.ts +347 -171
  43. package/src/clients/pricing/openrouter.ts +36 -0
  44. package/src/clients/pricing/types.ts +83 -2
  45. package/src/clients/pricing/xai.ts +121 -65
  46. package/src/clients/types.ts +4 -0
  47. package/src/clients/xai.ts +150 -0
  48. package/src/fileSync.ts +8 -2
  49. package/src/login.ts +11 -3
  50. package/src/services/AgentSyncFs.ts +36 -12
  51. package/src/services/KnowhowClient.ts +11 -0
  52. package/src/services/LazyToolsService.ts +6 -0
  53. package/src/services/S3.ts +0 -7
  54. package/src/services/modules/index.ts +11 -2
  55. package/src/types.ts +56 -279
  56. package/src/worker.ts +174 -0
  57. package/tests/clients/pricing.test.ts +37 -0
  58. package/tests/manual/clients/completions.json +838 -226
  59. package/tests/manual/clients/completions.test.ts +46 -31
  60. package/ts_build/package.json +3 -2
  61. package/ts_build/src/agents/base/base.d.ts +17 -1
  62. package/ts_build/src/agents/base/base.js +82 -1
  63. package/ts_build/src/agents/base/base.js.map +1 -1
  64. package/ts_build/src/agents/tools/execCommand.js +3 -0
  65. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  66. package/ts_build/src/agents/tools/executeScript/definition.js +1 -1
  67. package/ts_build/src/agents/tools/executeScript/definition.js.map +1 -1
  68. package/ts_build/src/agents/tools/index.d.ts +0 -1
  69. package/ts_build/src/agents/tools/index.js +0 -1
  70. package/ts_build/src/agents/tools/index.js.map +1 -1
  71. package/ts_build/src/agents/tools/list.js +3 -38
  72. package/ts_build/src/agents/tools/list.js.map +1 -1
  73. package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
  74. package/ts_build/src/agents/tools/writeFile.js +1 -1
  75. package/ts_build/src/agents/tools/writeFile.js.map +1 -1
  76. package/ts_build/src/ai.d.ts +1 -1
  77. package/ts_build/src/auth/browserLogin.d.ts +2 -1
  78. package/ts_build/src/auth/browserLogin.js +10 -3
  79. package/ts_build/src/auth/browserLogin.js.map +1 -1
  80. package/ts_build/src/chat/modules/RemoteSyncModule.js +1 -0
  81. package/ts_build/src/chat/modules/RemoteSyncModule.js.map +1 -1
  82. package/ts_build/src/cli.js +19 -0
  83. package/ts_build/src/cli.js.map +1 -1
  84. package/ts_build/src/clients/anthropic.d.ts +1 -82
  85. package/ts_build/src/clients/cerebras.d.ts +4 -0
  86. package/ts_build/src/clients/cerebras.js +14 -0
  87. package/ts_build/src/clients/cerebras.js.map +1 -0
  88. package/ts_build/src/clients/contextLimits.js +7 -2
  89. package/ts_build/src/clients/contextLimits.js.map +1 -1
  90. package/ts_build/src/clients/copilot.d.ts +4 -0
  91. package/ts_build/src/clients/copilot.js +15 -0
  92. package/ts_build/src/clients/copilot.js.map +1 -0
  93. package/ts_build/src/clients/deepseek.d.ts +4 -0
  94. package/ts_build/src/clients/deepseek.js +15 -0
  95. package/ts_build/src/clients/deepseek.js.map +1 -0
  96. package/ts_build/src/clients/fireworks.d.ts +4 -0
  97. package/ts_build/src/clients/fireworks.js +15 -0
  98. package/ts_build/src/clients/fireworks.js.map +1 -0
  99. package/ts_build/src/clients/gemini.d.ts +1 -0
  100. package/ts_build/src/clients/gemini.js +28 -1
  101. package/ts_build/src/clients/gemini.js.map +1 -1
  102. package/ts_build/src/clients/github.d.ts +4 -0
  103. package/ts_build/src/clients/github.js +15 -0
  104. package/ts_build/src/clients/github.js.map +1 -0
  105. package/ts_build/src/clients/groq.d.ts +4 -0
  106. package/ts_build/src/clients/groq.js +15 -0
  107. package/ts_build/src/clients/groq.js.map +1 -0
  108. package/ts_build/src/clients/http.d.ts +22 -1
  109. package/ts_build/src/clients/http.js +132 -7
  110. package/ts_build/src/clients/http.js.map +1 -1
  111. package/ts_build/src/clients/index.d.ts +14 -0
  112. package/ts_build/src/clients/index.js +94 -4
  113. package/ts_build/src/clients/index.js.map +1 -1
  114. package/ts_build/src/clients/llama.d.ts +4 -0
  115. package/ts_build/src/clients/llama.js +15 -0
  116. package/ts_build/src/clients/llama.js.map +1 -0
  117. package/ts_build/src/clients/mistral.d.ts +4 -0
  118. package/ts_build/src/clients/mistral.js +15 -0
  119. package/ts_build/src/clients/mistral.js.map +1 -0
  120. package/ts_build/src/clients/nvidia.d.ts +4 -0
  121. package/ts_build/src/clients/nvidia.js +15 -0
  122. package/ts_build/src/clients/nvidia.js.map +1 -0
  123. package/ts_build/src/clients/openai.d.ts +4 -206
  124. package/ts_build/src/clients/openai.js +27 -9
  125. package/ts_build/src/clients/openai.js.map +1 -1
  126. package/ts_build/src/clients/openrouter.d.ts +4 -0
  127. package/ts_build/src/clients/openrouter.js +15 -0
  128. package/ts_build/src/clients/openrouter.js.map +1 -0
  129. package/ts_build/src/clients/pricing/anthropic.d.ts +26 -78
  130. package/ts_build/src/clients/pricing/anthropic.js +75 -78
  131. package/ts_build/src/clients/pricing/anthropic.js.map +1 -1
  132. package/ts_build/src/clients/pricing/cerebras.d.ts +4 -0
  133. package/ts_build/src/clients/pricing/cerebras.js +11 -0
  134. package/ts_build/src/clients/pricing/cerebras.js.map +1 -0
  135. package/ts_build/src/clients/pricing/copilot.d.ts +5 -0
  136. package/ts_build/src/clients/pricing/copilot.js +35 -0
  137. package/ts_build/src/clients/pricing/copilot.js.map +1 -0
  138. package/ts_build/src/clients/pricing/deepseek.d.ts +5 -0
  139. package/ts_build/src/clients/pricing/deepseek.js +10 -0
  140. package/ts_build/src/clients/pricing/deepseek.js.map +1 -0
  141. package/ts_build/src/clients/pricing/fireworks.d.ts +5 -0
  142. package/ts_build/src/clients/pricing/fireworks.js +21 -0
  143. package/ts_build/src/clients/pricing/fireworks.js.map +1 -0
  144. package/ts_build/src/clients/pricing/github.d.ts +4 -0
  145. package/ts_build/src/clients/pricing/github.js +58 -0
  146. package/ts_build/src/clients/pricing/github.js.map +1 -0
  147. package/ts_build/src/clients/pricing/google.d.ts +59 -6
  148. package/ts_build/src/clients/pricing/google.js +214 -167
  149. package/ts_build/src/clients/pricing/google.js.map +1 -1
  150. package/ts_build/src/clients/pricing/groq.d.ts +5 -0
  151. package/ts_build/src/clients/pricing/groq.js +41 -0
  152. package/ts_build/src/clients/pricing/groq.js.map +1 -0
  153. package/ts_build/src/clients/pricing/index.d.ts +16 -5
  154. package/ts_build/src/clients/pricing/index.js +62 -7
  155. package/ts_build/src/clients/pricing/index.js.map +1 -1
  156. package/ts_build/src/clients/pricing/llama.d.ts +4 -0
  157. package/ts_build/src/clients/pricing/llama.js +14 -0
  158. package/ts_build/src/clients/pricing/llama.js.map +1 -0
  159. package/ts_build/src/clients/pricing/mistral.d.ts +5 -0
  160. package/ts_build/src/clients/pricing/mistral.js +23 -0
  161. package/ts_build/src/clients/pricing/mistral.js.map +1 -0
  162. package/ts_build/src/clients/pricing/models.d.ts +5 -4
  163. package/ts_build/src/clients/pricing/models.js +8 -162
  164. package/ts_build/src/clients/pricing/models.js.map +1 -1
  165. package/ts_build/src/clients/pricing/nvidia.d.ts +8 -0
  166. package/ts_build/src/clients/pricing/nvidia.js +96 -0
  167. package/ts_build/src/clients/pricing/nvidia.js.map +1 -0
  168. package/ts_build/src/clients/pricing/openai.d.ts +86 -197
  169. package/ts_build/src/clients/pricing/openai.js +294 -168
  170. package/ts_build/src/clients/pricing/openai.js.map +1 -1
  171. package/ts_build/src/clients/pricing/openrouter.d.ts +4 -0
  172. package/ts_build/src/clients/pricing/openrouter.js +29 -0
  173. package/ts_build/src/clients/pricing/openrouter.js.map +1 -0
  174. package/ts_build/src/clients/pricing/types.d.ts +27 -2
  175. package/ts_build/src/clients/pricing/types.js +46 -0
  176. package/ts_build/src/clients/pricing/types.js.map +1 -1
  177. package/ts_build/src/clients/pricing/xai.d.ts +37 -57
  178. package/ts_build/src/clients/pricing/xai.js +92 -59
  179. package/ts_build/src/clients/pricing/xai.js.map +1 -1
  180. package/ts_build/src/clients/types.d.ts +1 -0
  181. package/ts_build/src/clients/xai.d.ts +2 -62
  182. package/ts_build/src/clients/xai.js +121 -0
  183. package/ts_build/src/clients/xai.js.map +1 -1
  184. package/ts_build/src/fileSync.js +7 -2
  185. package/ts_build/src/fileSync.js.map +1 -1
  186. package/ts_build/src/login.js +8 -2
  187. package/ts_build/src/login.js.map +1 -1
  188. package/ts_build/src/services/AgentSyncFs.js +1 -0
  189. package/ts_build/src/services/AgentSyncFs.js.map +1 -1
  190. package/ts_build/src/services/KnowhowClient.d.ts +1 -0
  191. package/ts_build/src/services/KnowhowClient.js +7 -0
  192. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  193. package/ts_build/src/services/LazyToolsService.d.ts +1 -0
  194. package/ts_build/src/services/LazyToolsService.js +3 -0
  195. package/ts_build/src/services/LazyToolsService.js.map +1 -1
  196. package/ts_build/src/services/S3.js +0 -7
  197. package/ts_build/src/services/S3.js.map +1 -1
  198. package/ts_build/src/services/modules/index.js +41 -1
  199. package/ts_build/src/services/modules/index.js.map +1 -1
  200. package/ts_build/src/types.d.ts +163 -124
  201. package/ts_build/src/types.js +33 -213
  202. package/ts_build/src/types.js.map +1 -1
  203. package/ts_build/src/worker.d.ts +4 -0
  204. package/ts_build/src/worker.js +140 -0
  205. package/ts_build/src/worker.js.map +1 -1
  206. package/ts_build/tests/clients/pricing.test.js +21 -0
  207. package/ts_build/tests/clients/pricing.test.js.map +1 -1
  208. package/ts_build/tests/manual/clients/completions.test.js +27 -24
  209. package/ts_build/tests/manual/clients/completions.test.js.map +1 -1
@@ -1,202 +1,378 @@
1
- import { Models, EmbeddingModels } from "../../types";
1
+ /**
2
+ * OpenAI model IDs, pricing, and catalog.
3
+ * Single source of truth for all OpenAI models.
4
+ */
5
+ import {
6
+ completions,
7
+ embeddings,
8
+ images,
9
+ videos,
10
+ audios,
11
+ transactions,
12
+ ModelCatalogEntry,
13
+ ModelPricing,
14
+ } from "./types";
2
15
 
3
- export const OpenAiTextPricing = {
4
- [Models.openai.GPT_54]: {
5
- input: 2.5,
6
- cached_input: 0.25,
7
- output: 15.0,
8
- },
9
- [Models.openai.GPT_54_Mini]: {
10
- input: 0.75,
11
- cached_input: 0.075,
12
- output: 4.5,
13
- },
14
- [Models.openai.GPT_54_Nano]: {
15
- input: 0.2,
16
- cached_input: 0.02,
17
- output: 1.25,
18
- },
19
- [Models.openai.GPT_54_Pro]: {
20
- input: 30.0,
21
- cached_input: 0,
22
- output: 180.0,
23
- },
24
- [Models.openai.GPT_53_Chat]: {
16
+ // ─── Model IDs ────────────────────────────────────────────────────────────────
17
+
18
+ export const OpenAiModels = {
19
+ GPT_55: "gpt-5.5",
20
+ GPT_55_Pro: "gpt-5.5-pro",
21
+ GPT_54: "gpt-5.4",
22
+ GPT_54_Mini: "gpt-5.4-mini",
23
+ GPT_54_Nano: "gpt-5.4-nano",
24
+ GPT_54_Pro: "gpt-5.4-pro",
25
+ GPT_53_Chat: "gpt-5.3-chat-latest",
26
+ GPT_53_Codex: "gpt-5.3-codex",
27
+ GPT_53_Codex_Spark: "gpt-5.3-codex-spark",
28
+ GPT_52: "gpt-5.2",
29
+ GPT_52_Chat: "gpt-5.2-chat-latest",
30
+ GPT_52_Codex: "gpt-5.2-codex",
31
+ GPT_52_Pro: "gpt-5.2-pro",
32
+ GPT_51: "gpt-5.1",
33
+ GPT_51_Chat: "gpt-5.1-chat-latest",
34
+ GPT_51_Codex: "gpt-5.1-codex",
35
+ GPT_51_Codex_Max: "gpt-5.1-codex-max",
36
+ GPT_51_Codex_Mini: "gpt-5.1-codex-mini",
37
+ GPT_5: "gpt-5",
38
+ GPT_5_Pro: "gpt-5-pro",
39
+ GPT_5_Chat: "gpt-5-chat-latest",
40
+ GPT_5_Codex: "gpt-5-codex",
41
+ GPT_5_Mini: "gpt-5-mini",
42
+ GPT_5_Nano: "gpt-5-nano",
43
+ GPT_41: "gpt-4.1-2025-04-14",
44
+ GPT_41_Mini: "gpt-4.1-mini-2025-04-14",
45
+ GPT_41_Nano: "gpt-4.1-nano-2025-04-14",
46
+ GPT_45: "gpt-4.5-preview-2025-02-27",
47
+ GPT_4o: "gpt-4o-2024-08-06",
48
+ GPT_4o_Audio: "gpt-4o-audio-preview-2024-12-17",
49
+ GPT_4o_Realtime: "gpt-4o-realtime-preview-2024-12-17",
50
+ GPT_4o_Mini: "gpt-4o-mini-2024-07-18",
51
+ GPT_4o_Mini_Audio: "gpt-4o-mini-audio-preview-2024-12-17",
52
+ GPT_4o_Mini_Realtime: "gpt-4o-mini-realtime-preview-2024-12-17",
53
+ o1: "o1-2024-12-17",
54
+ o1_Pro: "o1-pro-2025-03-19",
55
+ o3: "o3-2025-04-16",
56
+ o3_Pro: "o3-pro-2025-01-31",
57
+ o4_Mini: "o4-mini-2025-04-16",
58
+ o3_Mini: "o3-mini-2025-01-31",
59
+ o1_Mini: "o1-mini-2024-09-12",
60
+ o1_Preview: "o1-preview",
61
+ o3_Deep_Research: "o3-deep-research",
62
+ o4_Mini_Deep_Research: "o4-mini-deep-research",
63
+ GPT_4o_Mini_Search: "gpt-4o-mini-search-preview-2025-03-11",
64
+ GPT_4o_Search: "gpt-4o-search-preview-2025-03-11",
65
+ GPT_4o_Transcribe: "gpt-4o-transcribe",
66
+ GPT_4o_Mini_Transcribe: "gpt-4o-mini-transcribe",
67
+ GPT_Realtime_15: "gpt-realtime-1.5",
68
+ GPT_Realtime_Mini: "gpt-realtime-mini",
69
+ GPT_Image_2: "gpt-image-2",
70
+ GPT_Image_15: "gpt-image-1.5",
71
+ GPT_Image_1: "gpt-image-1",
72
+ GPT_Image_1_Mini: "gpt-image-1-mini",
73
+ ChatGPT_Image: "chatgpt-image-latest",
74
+ TTS_1: "tts-1",
75
+ Whisper_1: "whisper-1",
76
+ DALL_E_3: "dall-e-3",
77
+ DALL_E_2: "dall-e-2",
78
+ Sora: "sora",
79
+ Sora_2: "sora-2",
80
+ Sora_2_Pro: "sora-2-pro",
81
+ GPT_4o_2024_05_13: "gpt-4o-2024-05-13",
82
+ GPT_4o_2024_11_20: "gpt-4o-2024-11-20",
83
+ GPT_35_Turbo: "gpt-3.5-turbo",
84
+ GPT_4: "gpt-4",
85
+ GPT_4_Turbo: "gpt-4-turbo",
86
+ } as const;
87
+
88
+ export const OpenAiEmbeddingModels: Record<string, string> = {
89
+ EmbeddingAda2: "text-embedding-ada-002",
90
+ EmbeddingLarge3: "text-embedding-3-large",
91
+ EmbeddingSmall3: "text-embedding-3-small",
92
+ };
93
+
94
+ // ─── Modality arrays ──────────────────────────────────────────────────────────
95
+
96
+ export const OpenAiReasoningModels: string[] = [
97
+ OpenAiModels.GPT_5,
98
+ OpenAiModels.GPT_5_Pro,
99
+ OpenAiModels.GPT_5_Mini,
100
+ OpenAiModels.GPT_5_Nano,
101
+ OpenAiModels.GPT_51,
102
+ OpenAiModels.GPT_51,
103
+ OpenAiModels.GPT_52,
104
+ OpenAiModels.GPT_52_Pro,
105
+ OpenAiModels.GPT_53_Chat,
106
+ OpenAiModels.GPT_53_Codex,
107
+ OpenAiModels.GPT_54,
108
+ OpenAiModels.GPT_54_Mini,
109
+ OpenAiModels.GPT_54_Nano,
110
+ OpenAiModels.GPT_54_Pro,
111
+ OpenAiModels.GPT_55,
112
+ OpenAiModels.GPT_55_Pro,
113
+ OpenAiModels.GPT_5_Mini,
114
+ OpenAiModels.GPT_5_Nano,
115
+ OpenAiModels.GPT_5_Pro,
116
+ OpenAiModels.o3,
117
+ OpenAiModels.o3_Mini,
118
+ OpenAiModels.o4_Mini,
119
+ ];
120
+
121
+ export const OpenAiChatModels: string[] = [
122
+ OpenAiModels.GPT_4o,
123
+ OpenAiModels.GPT_4o_Mini,
124
+ OpenAiModels.GPT_4o_2024_11_20,
125
+ OpenAiModels.GPT_41,
126
+ OpenAiModels.GPT_41_Mini,
127
+ OpenAiModels.GPT_41_Nano,
128
+ OpenAiModels.GPT_54,
129
+ OpenAiModels.GPT_54_Mini,
130
+ OpenAiModels.GPT_55,
131
+ OpenAiModels.GPT_54_Nano,
132
+ OpenAiModels.GPT_54_Pro,
133
+ OpenAiModels.GPT_53_Chat,
134
+ OpenAiModels.GPT_53_Codex,
135
+ OpenAiModels.GPT_51,
136
+ OpenAiModels.GPT_52,
137
+ OpenAiModels.o3,
138
+ OpenAiModels.o3_Mini,
139
+ OpenAiModels.o4_Mini,
140
+ ];
141
+
142
+ export const OpenAiEmbeddingModelsList: string[] = [
143
+ OpenAiEmbeddingModels.EmbeddingAda2,
144
+ OpenAiEmbeddingModels.EmbeddingLarge3,
145
+ OpenAiEmbeddingModels.EmbeddingSmall3,
146
+ ];
147
+
148
+ export const OpenAiResponsesOnlyModels: string[] = [
149
+ OpenAiModels.GPT_5,
150
+ OpenAiModels.GPT_5_Mini,
151
+ OpenAiModels.GPT_5_Nano,
152
+ OpenAiModels.GPT_52_Pro,
153
+ OpenAiModels.GPT_53_Codex,
154
+ OpenAiModels.GPT_54,
155
+ OpenAiModels.GPT_54_Mini,
156
+ OpenAiModels.GPT_54_Nano,
157
+ OpenAiModels.GPT_54_Pro,
158
+ OpenAiModels.GPT_55_Pro,
159
+ OpenAiModels.GPT_5_Pro,
160
+ OpenAiModels.o1,
161
+ OpenAiModels.o1_Pro,
162
+ ];
163
+
164
+ // Models that exist in our catalog but have limited/no public access
165
+ export const OpenAiLimitedAvailabilityModels: string[] = [
166
+ OpenAiModels.GPT_53_Codex_Spark, // 404 – not publicly available
167
+ OpenAiModels.o3_Pro, // 404 – not publicly available
168
+ ];
169
+
170
+ // Image models
171
+ export const OpenAiImageModels: string[] = [
172
+ OpenAiModels.DALL_E_3,
173
+ OpenAiModels.DALL_E_2,
174
+ OpenAiModels.GPT_Image_2,
175
+ OpenAiModels.GPT_Image_15,
176
+ OpenAiModels.GPT_Image_1_Mini,
177
+ OpenAiModels.ChatGPT_Image,
178
+ ];
179
+ export const OpenAiDeprecatedImageModels: string[] = [OpenAiModels.GPT_Image_1];
180
+
181
+ // Video models
182
+ export const OpenAiVideoModels: string[] = [
183
+ OpenAiModels.Sora,
184
+ OpenAiModels.Sora_2,
185
+ OpenAiModels.Sora_2_Pro,
186
+ ];
187
+
188
+ // Audio models
189
+ export const OpenAiTTSModels: string[] = [OpenAiModels.TTS_1];
190
+ export const OpenAiTranscriptionModels: string[] = [
191
+ OpenAiModels.Whisper_1,
192
+ OpenAiModels.GPT_4o_Transcribe,
193
+ OpenAiModels.GPT_4o_Mini_Transcribe,
194
+ ];
195
+ export const OpenAiRealtimeModels: string[] = [
196
+ OpenAiModels.GPT_Realtime_15,
197
+ OpenAiModels.GPT_Realtime_Mini,
198
+ ];
199
+ export const OpenAiAudioModels: string[] = [
200
+ ...OpenAiTTSModels,
201
+ ...OpenAiTranscriptionModels,
202
+ ...OpenAiRealtimeModels,
203
+ ];
204
+ export const OpenAiDeprecatedAudioModels: string[] = [
205
+ OpenAiModels.GPT_4o_Audio,
206
+ OpenAiModels.GPT_4o_Mini_Audio,
207
+ OpenAiModels.GPT_4o_Realtime,
208
+ OpenAiModels.GPT_4o_Mini_Realtime,
209
+ ];
210
+
211
+ // Search/transaction models
212
+ export const OpenAiSearchModels: string[] = [
213
+ OpenAiModels.GPT_4o_Mini_Search,
214
+ OpenAiModels.GPT_4o_Search,
215
+ ];
216
+
217
+ // ─── Pricing (USD per 1M tokens) ──────────────────────────────────────────────
218
+
219
+ export const OpenAiTextPricing: Record<string, ModelPricing> = {
220
+ [OpenAiModels.GPT_55]: { input: 5.0, cached_input: 0.5, output: 30.0 },
221
+ [OpenAiModels.GPT_55_Pro]: { input: 30.0, cached_input: 0, output: 180.0, reasoningLevels: ["medium", "high", "xhigh"] },
222
+ [OpenAiModels.GPT_54]: { input: 2.5, cached_input: 0.25, output: 15.0 },
223
+ [OpenAiModels.GPT_54_Mini]: { input: 0.75, cached_input: 0.075, output: 4.5 },
224
+ [OpenAiModels.GPT_54_Nano]: { input: 0.2, cached_input: 0.02, output: 1.25 },
225
+ [OpenAiModels.GPT_54_Pro]: { input: 30.0, cached_input: 0, output: 180.0 },
226
+ [OpenAiModels.GPT_53_Chat]: {
25
227
  input: 1.75,
26
228
  cached_input: 0.175,
27
229
  output: 14.0,
28
230
  },
29
- [Models.openai.GPT_53_Codex]: {
231
+ [OpenAiModels.GPT_53_Codex]: {
30
232
  input: 1.75,
31
233
  cached_input: 0.175,
32
234
  output: 14.0,
33
235
  },
34
- [Models.openai.GPT_4o]: {
35
- input: 2.5,
36
- cached_input: 1.25,
37
- output: 10.0,
38
- },
39
- [Models.openai.GPT_4o_Mini]: {
40
- input: 0.15,
41
- cached_input: 0.075,
42
- output: 0.6,
43
- },
44
- [Models.openai.o1]: {
45
- input: 15.0,
46
- cached_input: 7.5,
47
- output: 60.0,
48
- },
49
- [Models.openai.o1_Mini]: {
50
- input: 1.1,
51
- cached_input: 0.55,
52
- output: 4.4,
53
- },
54
- [Models.openai.o3_Mini]: {
55
- input: 1.1,
56
- cached_input: 0.55,
57
- output: 4.4,
58
- },
59
- [Models.openai.GPT_41]: {
60
- input: 2.0,
61
- cached_input: 0.5,
62
- output: 8.0,
63
- },
64
- [Models.openai.GPT_41_Mini]: {
65
- input: 0.4,
66
- cached_input: 0.1,
67
- output: 1.6,
68
- },
69
- [Models.openai.GPT_41_Nano]: {
70
- input: 0.1,
71
- cached_input: 0.025,
72
- output: 0.4,
73
- },
74
- [Models.openai.GPT_45]: {
75
- input: 75.0,
76
- cached_input: 37.5,
77
- output: 150.0,
78
- },
79
- [Models.openai.GPT_4o_Audio]: {
80
- input: 2.5,
81
- cached_input: 0,
82
- output: 10.0,
83
- },
84
- [Models.openai.GPT_4o_Realtime]: {
85
- input: 5.0,
86
- cached_input: 2.5,
87
- output: 20.0,
88
- },
89
- [Models.openai.GPT_4o_Mini_Audio]: {
90
- input: 0.15,
91
- cached_input: 0,
92
- output: 0.6,
93
- },
94
- [Models.openai.GPT_4o_Mini_Realtime]: {
95
- input: 0.6,
96
- cached_input: 0.3,
97
- output: 2.4,
98
- },
99
- [Models.openai.o1_Pro]: {
100
- input: 150.0,
101
- cached_input: 0,
102
- output: 600.0,
103
- },
104
- [Models.openai.o3]: {
105
- input: 2.0,
106
- cached_input: 0.5,
107
- output: 8.0,
108
- },
109
- [Models.openai.o3_Pro]: {
110
- input: 20.0,
111
- cached_input: 0,
112
- output: 80.0,
113
- },
114
- [Models.openai.o4_Mini]: {
115
- input: 1.1,
116
- cached_input: 0.275,
117
- output: 4.4,
118
- },
119
- [Models.openai.GPT_4o_Mini_Search]: {
120
- input: 0.15,
121
- cached_input: 0,
122
- output: 0.6,
123
- },
124
- [Models.openai.GPT_4o_Search]: {
236
+ [OpenAiModels.GPT_53_Codex_Spark]: {
237
+ input: 1.75,
238
+ cached_input: 0.175,
239
+ output: 14.0,
240
+ limitedAvailability: true,
241
+ },
242
+ [OpenAiModels.GPT_52]: { input: 1.75, cached_input: 0.175, output: 14.0 },
243
+ [OpenAiModels.GPT_52_Chat]: { input: 1.75, cached_input: 0.175, output: 14.0, deprecated: true, deprecationDate: "2026-07-23" },
244
+ [OpenAiModels.GPT_52_Codex]: { input: 1.75, cached_input: 0.175, output: 14.0, deprecated: true, deprecationDate: "2026-07-23" },
245
+ [OpenAiModels.GPT_52_Pro]: { input: 21.0, cached_input: 0, output: 168.0, reasoningLevels: ["medium", "high", "xhigh"] },
246
+ [OpenAiModels.GPT_51]: { input: 1.25, cached_input: 0.125, output: 10.0 },
247
+ [OpenAiModels.GPT_51_Chat]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
248
+ [OpenAiModels.GPT_51_Codex]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
249
+ [OpenAiModels.GPT_51_Codex_Max]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
250
+ [OpenAiModels.GPT_51_Codex_Mini]:{ input: 0.25, cached_input: 0.025, output: 2.0, deprecated: true, deprecationDate: "2026-07-23" },
251
+ [OpenAiModels.GPT_5]: { input: 1.25, cached_input: 0.125, output: 10.0 },
252
+ [OpenAiModels.GPT_5_Pro]: { input: 15.0, cached_input: 0, output: 120.0, reasoningLevels: ["high"] },
253
+ [OpenAiModels.GPT_5_Chat]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
254
+ [OpenAiModels.GPT_5_Codex]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
255
+ [OpenAiModels.GPT_5_Mini]: { input: 0.25, cached_input: 0.025, output: 2.0 },
256
+ [OpenAiModels.GPT_5_Nano]: { input: 0.05, cached_input: 0.005, output: 0.4 },
257
+ [OpenAiModels.GPT_41]: { input: 2.0, cached_input: 0.5, output: 8.0 },
258
+ [OpenAiModels.GPT_41_Mini]: { input: 0.4, cached_input: 0.1, output: 1.6 },
259
+ [OpenAiModels.GPT_41_Nano]: { input: 0.1, cached_input: 0.025, output: 0.4, deprecated: true, deprecationDate: "2026-10-23" },
260
+ [OpenAiModels.GPT_45]: { input: 75.0, cached_input: 37.5, output: 150.0, deprecated: true, deprecationDate: "2025-07-14", replacedBy: OpenAiModels.GPT_41 },
261
+ [OpenAiModels.GPT_4o]: { input: 2.5, cached_input: 1.25, output: 10.0 },
262
+ [OpenAiModels.GPT_4o_Audio]: { input: 2.5, cached_input: 0, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
263
+ [OpenAiModels.GPT_4o_Realtime]: { input: 5.0, cached_input: 2.5, output: 20.0, deprecated: true, deprecationDate: "2026-07-23" },
264
+ [OpenAiModels.GPT_4o_Mini]: { input: 0.15, cached_input: 0.075, output: 0.6 },
265
+ [OpenAiModels.GPT_4o_Mini_Audio]: { input: 0.15, cached_input: 0, output: 0.6, deprecated: true, deprecationDate: "2026-07-23" },
266
+ [OpenAiModels.GPT_4o_Mini_Realtime]: { input: 0.6, cached_input: 0.3, output: 2.4, deprecated: true, deprecationDate: "2026-07-23" },
267
+ [OpenAiModels.o1]: { input: 15.0, cached_input: 7.5, output: 60.0, deprecated: true, deprecationDate: "2026-10-23", replacedBy: OpenAiModels.o3 },
268
+ [OpenAiModels.o1_Pro]: { input: 150.0, cached_input: 0, output: 600.0, deprecated: true, deprecationDate: "2026-10-23" },
269
+ [OpenAiModels.o3]: { input: 2.0, cached_input: 0.5, output: 8.0 },
270
+ [OpenAiModels.o3_Pro]: { input: 20.0, cached_input: 0, output: 80.0, limitedAvailability: true },
271
+ [OpenAiModels.o4_Mini]: { input: 1.1, cached_input: 0.275, output: 4.4 },
272
+ [OpenAiModels.o3_Mini]: { input: 1.1, cached_input: 0.55, output: 4.4, deprecated: true, deprecationDate: "2026-10-23" },
273
+ [OpenAiModels.o1_Mini]: { input: 1.1, cached_input: 0.55, output: 4.4, deprecated: true, deprecationDate: "2025-10-27", replacedBy: OpenAiModels.o4_Mini },
274
+ [OpenAiModels.o1_Preview]: { input: 15.0, cached_input: 7.5, output: 60.0, deprecated: true, deprecationDate: "2025-07-28", replacedBy: OpenAiModels.o3 },
275
+ [OpenAiModels.o3_Deep_Research]: { input: 10.0, cached_input: 2.5, output: 40.0, deprecated: true, deprecationDate: "2026-07-23" },
276
+ [OpenAiModels.o4_Mini_Deep_Research]: { input: 2.0, cached_input: 0.5, output: 8.0, deprecated: true, deprecationDate: "2026-07-23" },
277
+ [OpenAiModels.GPT_4o_Mini_Search]: { input: 0.15, cached_input: 0, output: 0.6, deprecated: true, deprecationDate: "2026-07-23" },
278
+ [OpenAiModels.GPT_4o_Search]: { input: 2.5, cached_input: 0, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
279
+ [OpenAiModels.GPT_4o_Transcribe]: {
125
280
  input: 2.5,
126
281
  cached_input: 0,
127
282
  output: 10.0,
128
283
  },
129
- [Models.openai.GPT_5_2]: {
130
- input: 1.75,
131
- cached_input: 0.175,
132
- output: 14,
133
- },
134
- [Models.openai.GPT_5_1]: {
135
- input: 1.25,
136
- cached_input: 0.125,
137
- output: 10,
138
- },
139
- [Models.openai.GPT_5]: {
284
+ [OpenAiModels.GPT_4o_Mini_Transcribe]: {
140
285
  input: 1.25,
141
- cached_input: 0.125,
142
- output: 10,
143
- },
144
- [Models.openai.GPT_5_Mini]: {
145
- input: 0.25,
146
- cached_input: 0.025,
147
- output: 2,
148
- },
149
- [Models.openai.GPT_5_Nano]: {
150
- input: 0.05,
151
- cached_input: 0.005,
152
- output: 0.4,
153
- },
154
- [EmbeddingModels.openai.EmbeddingAda2]: {
155
- input: 0.1,
156
- cached_input: 0,
157
- output: 0,
158
- },
159
- [EmbeddingModels.openai.EmbeddingLarge3]: {
160
- input: 0.13,
161
- cached_input: 0,
162
- output: 0,
163
- },
164
- [EmbeddingModels.openai.EmbeddingSmall3]: {
165
- input: 0.02,
166
286
  cached_input: 0,
167
- output: 0,
287
+ output: 5.0,
168
288
  },
169
- // New realtime models
170
- [Models.openai.GPT_Realtime_15]: {
289
+ [OpenAiModels.GPT_Realtime_15]: {
171
290
  input: 4.0,
172
291
  cached_input: 0.4,
173
292
  output: 16.0,
174
293
  },
175
- [Models.openai.GPT_Realtime_Mini]: {
294
+ [OpenAiModels.GPT_Realtime_Mini]: {
176
295
  input: 0.6,
177
296
  cached_input: 0.06,
178
297
  output: 2.4,
179
298
  },
180
- // New image models (text token pricing)
181
- [Models.openai.GPT_Image_15]: {
299
+ [OpenAiModels.GPT_Image_2]: { input: 8.0, cached_input: 2.0, output: 30.0 },
300
+ [OpenAiModels.GPT_Image_15]: { input: 5.0, cached_input: 1.25, output: 10.0 },
301
+ [OpenAiModels.GPT_Image_1]: { input: 5.0, cached_input: 1.25, output: 40.0, deprecated: true, deprecationDate: "2026-10-23" },
302
+ [OpenAiModels.GPT_Image_1_Mini]: { input: 2.0, cached_input: 0.2, output: 0 },
303
+ [OpenAiModels.ChatGPT_Image]: {
182
304
  input: 5.0,
183
305
  cached_input: 1.25,
184
- output: 10.0,
185
- },
186
- [Models.openai.GPT_Image_1_Mini]: {
187
- input: 2.0,
188
- cached_input: 0.2,
189
- output: 0,
306
+ output: 40.0,
190
307
  },
191
- // New transcription models
192
- [Models.openai.GPT_4o_Transcribe]: {
308
+ [OpenAiModels.GPT_4o_2024_05_13]: { input: 5.0, cached_input: 0, output: 15.0, deprecated: true, deprecationDate: "2026-10-23" },
309
+ [OpenAiModels.GPT_4o_2024_11_20]: {
193
310
  input: 2.5,
194
- cached_input: 0,
311
+ cached_input: 1.25,
195
312
  output: 10.0,
196
313
  },
197
- [Models.openai.GPT_4o_Mini_Transcribe]: {
198
- input: 1.25,
199
- cached_input: 0,
200
- output: 5.0,
201
- },
314
+ [OpenAiModels.GPT_35_Turbo]: { input: 0.5, cached_input: 0, output: 1.5, deprecated: true, deprecationDate: "2026-10-23" },
315
+ [OpenAiModels.GPT_4]: { input: 30.0, cached_input: 0, output: 60.0, deprecated: true, deprecationDate: "2026-10-23" },
316
+ [OpenAiModels.GPT_4_Turbo]: { input: 10.0, cached_input: 0, output: 30.0, deprecated: true, deprecationDate: "2026-10-23" },
317
+ // Embeddings
318
+ [OpenAiEmbeddingModels.EmbeddingAda2]: { input: 0.1, output: 0 },
319
+ [OpenAiEmbeddingModels.EmbeddingLarge3]: { input: 0.13, output: 0 },
320
+ [OpenAiEmbeddingModels.EmbeddingSmall3]: { input: 0.02, output: 0 },
321
+ // TTS / Whisper
322
+ [OpenAiModels.TTS_1]: { input: 15.0, output: 0 },
323
+ [OpenAiModels.Whisper_1]: { input: 0.006, output: 0 },
324
+ // Image generation (per-image)
325
+ [OpenAiModels.DALL_E_3]: { image_generation: 0.04 },
326
+ [OpenAiModels.DALL_E_2]: { image_generation: 0.02 },
327
+ // Video generation (per second)
328
+ [OpenAiModels.Sora]: { video_generation: 0.012 },
329
+ [OpenAiModels.Sora_2]: { video_generation: 0.015 },
330
+ [OpenAiModels.Sora_2_Pro]: { video_generation: 0.025 },
202
331
  };
332
+
333
+ // ─── All completion model IDs (active + deprecated) ──────────────────────────
334
+ // Deprecation/replacement metadata is embedded in OpenAiTextPricing entries.
335
+
336
+ const OpenAiAllCompletionModels: string[] = [
337
+ ...OpenAiChatModels,
338
+ ...OpenAiResponsesOnlyModels,
339
+ ...OpenAiLimitedAvailabilityModels,
340
+ // Deprecated chat/codex variants
341
+ OpenAiModels.GPT_5_Chat, OpenAiModels.GPT_5_Codex,
342
+ OpenAiModels.GPT_51_Chat, OpenAiModels.GPT_51_Codex,
343
+ OpenAiModels.GPT_51_Codex_Max, OpenAiModels.GPT_51_Codex_Mini,
344
+ OpenAiModels.GPT_52_Chat, OpenAiModels.GPT_52_Codex,
345
+ OpenAiModels.o3_Deep_Research, OpenAiModels.o4_Mini_Deep_Research,
346
+ // Deprecated reasoning
347
+ OpenAiModels.o3_Mini, OpenAiModels.o4_Mini,
348
+ OpenAiModels.o1, OpenAiModels.o1_Pro,
349
+ OpenAiModels.o1_Mini, OpenAiModels.o1_Preview,
350
+ // Deprecated chat
351
+ OpenAiModels.GPT_41_Nano,
352
+ OpenAiModels.GPT_4o_2024_05_13,
353
+ OpenAiModels.GPT_45,
354
+ OpenAiModels.GPT_35_Turbo, OpenAiModels.GPT_4, OpenAiModels.GPT_4_Turbo,
355
+ ];
356
+
357
+ const OpenAiAllImageModels: string[] = [
358
+ ...OpenAiImageModels,
359
+ ...OpenAiDeprecatedImageModels,
360
+ ];
361
+
362
+ const OpenAiAllAudioModels: string[] = [
363
+ ...OpenAiAudioModels,
364
+ ...OpenAiDeprecatedAudioModels,
365
+ ];
366
+
367
+ // ─── Catalog ──────────────────────────────────────────────────────────────────
368
+ // Metadata (deprecated, deprecationDate, limitedAvailability, replacedBy) is
369
+ // read directly from the OpenAiTextPricing entries — no need for separate groups.
370
+
371
+ export const OPENAI_MODEL_CATALOG: ModelCatalogEntry[] = [
372
+ ...completions(OpenAiAllCompletionModels, "openai", OpenAiTextPricing),
373
+ ...embeddings(OpenAiEmbeddingModelsList, "openai", OpenAiTextPricing),
374
+ ...images(OpenAiAllImageModels, "openai", OpenAiTextPricing),
375
+ ...videos(OpenAiVideoModels, "openai", OpenAiTextPricing),
376
+ ...audios(OpenAiAllAudioModels, "openai", OpenAiTextPricing),
377
+ ...transactions(OpenAiSearchModels, "openai", OpenAiTextPricing),
378
+ ];
@@ -0,0 +1,36 @@
1
+ /**
2
+ * OpenRouter pricing (USD per 1M tokens)
3
+ * Source: https://openrouter.ai/models
4
+ * Models with `:free` suffix are free. Others are paid.
5
+ * OpenRouter acts as an aggregator — prices may vary from original providers.
6
+ */
7
+ export const OpenRouterTextPricing: Record<string, { input: number; output: number }> = {
8
+ // Free models (`:free` suffix)
9
+ "deepseek/deepseek-r1:free": { input: 0.0, output: 0.0 },
10
+ "deepseek/deepseek-chat-v3-0324:free": { input: 0.0, output: 0.0 },
11
+ "meta-llama/llama-3.3-70b-instruct:free": { input: 0.0, output: 0.0 },
12
+ "meta-llama/llama-4-maverick:free": { input: 0.0, output: 0.0 },
13
+ "meta-llama/llama-4-scout:free": { input: 0.0, output: 0.0 },
14
+ "google/gemma-3-27b-it:free": { input: 0.0, output: 0.0 },
15
+ "google/gemma-3-12b-it:free": { input: 0.0, output: 0.0 },
16
+ "microsoft/phi-4:free": { input: 0.0, output: 0.0 },
17
+ "qwen/qwen3-235b-a22b:free": { input: 0.0, output: 0.0 },
18
+ "qwen/qwen3-30b-a3b:free": { input: 0.0, output: 0.0 },
19
+ "mistralai/mistral-7b-instruct:free": { input: 0.0, output: 0.0 },
20
+ "nousresearch/hermes-3-llama-3.1-405b:free": { input: 0.0, output: 0.0 },
21
+ // Paid models (popular)
22
+ "openai/gpt-4o": { input: 2.5, output: 10.0 },
23
+ "openai/gpt-4o-mini": { input: 0.15, output: 0.6 },
24
+ "anthropic/claude-3.5-sonnet": { input: 3.0, output: 15.0 },
25
+ "anthropic/claude-3-haiku": { input: 0.25, output: 1.25 },
26
+ // Source: openrouter.ai/api/v1/models (2026-04)
27
+ "deepseek/deepseek-r1": { input: 0.7, output: 2.5 },
28
+ "deepseek/deepseek-chat-v3-0324": { input: 0.2, output: 0.77 },
29
+ "meta-llama/llama-3.3-70b-instruct": { input: 0.12, output: 0.3 },
30
+ "google/gemini-2.0-flash-001": { input: 0.1, output: 0.4 },
31
+ // Source: openrouter.ai/api/v1/models (2026-04) — qwen3-235b-a22b = $0.455/$1.82
32
+ // Note: models.dev shows $0.15/$0.85 for dated variant, using OpenRouter live price
33
+ "qwen/qwen3-235b-a22b": { input: 0.455, output: 1.82 },
34
+ "qwen/qwen3-235b-a22b-07-25": { input: 0.15, output: 0.85 },
35
+ "mistralai/mistral-large-2411": { input: 2.0, output: 6.0 },
36
+ };