@neuralmindlabs/tokn 0.1.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 (119) hide show
  1. package/.github/workflows/ci.yml +22 -0
  2. package/.oxlintrc.json +8 -0
  3. package/LICENSE +21 -0
  4. package/README.md +71 -0
  5. package/dist/assets/index-Dq74RfU-.css +1 -0
  6. package/dist/assets/index-_9e8Z58Z.js +66 -0
  7. package/dist/favicon.svg +1 -0
  8. package/dist/icons.svg +24 -0
  9. package/dist/index.html +14 -0
  10. package/index.html +13 -0
  11. package/package.json +45 -0
  12. package/packages/tokn/LICENSE +21 -0
  13. package/packages/tokn/README.md +85 -0
  14. package/packages/tokn/package.json +56 -0
  15. package/packages/tokn/src/aggregate.ts +83 -0
  16. package/packages/tokn/src/cli.ts +181 -0
  17. package/packages/tokn/src/cursor.ts +85 -0
  18. package/packages/tokn/src/index.ts +6 -0
  19. package/packages/tokn/src/node.ts +50 -0
  20. package/packages/tokn/src/parsers/claude.ts +53 -0
  21. package/packages/tokn/src/parsers/codex.ts +74 -0
  22. package/packages/tokn/src/pricing/index.ts +106 -0
  23. package/packages/tokn/src/pricing/prices.json +948 -0
  24. package/packages/tokn/src/pricing/prices.ts +947 -0
  25. package/packages/tokn/src/types.ts +51 -0
  26. package/packages/tokn/tests/__snapshots__/eval.test.ts.snap +12 -0
  27. package/packages/tokn/tests/aggregate.test.ts +73 -0
  28. package/packages/tokn/tests/claude.test.ts +87 -0
  29. package/packages/tokn/tests/codex.test.ts +54 -0
  30. package/packages/tokn/tests/cursor.test.ts +126 -0
  31. package/packages/tokn/tests/eval.test.ts +69 -0
  32. package/packages/tokn/tests/fixtures/claude-session.jsonl +3 -0
  33. package/packages/tokn/tests/fixtures/codex-session.jsonl +5 -0
  34. package/packages/tokn/tests/pricing.test.ts +137 -0
  35. package/packages/tokn/tsconfig.json +21 -0
  36. package/public/favicon.svg +1 -0
  37. package/public/icons.svg +24 -0
  38. package/scripts/validate.ts +122 -0
  39. package/src/App.tsx +12 -0
  40. package/src/assets/hero.png +0 -0
  41. package/src/assets/vite.svg +1 -0
  42. package/src/index.css +250 -0
  43. package/src/lib/refresh.ts +134 -0
  44. package/src/lib/scanner.ts +108 -0
  45. package/src/main.tsx +7 -0
  46. package/src/ui/Dashboard.tsx +203 -0
  47. package/src/ui/Popover.tsx +91 -0
  48. package/src/ui/Settings.tsx +114 -0
  49. package/src/ui/useAppData.ts +71 -0
  50. package/src-tauri/Cargo.lock +5972 -0
  51. package/src-tauri/Cargo.toml +35 -0
  52. package/src-tauri/build.rs +3 -0
  53. package/src-tauri/capabilities/default.json +114 -0
  54. package/src-tauri/icons/128x128.png +0 -0
  55. package/src-tauri/icons/128x128@2x.png +0 -0
  56. package/src-tauri/icons/32x32.png +0 -0
  57. package/src-tauri/icons/64x64.png +0 -0
  58. package/src-tauri/icons/Square107x107Logo.png +0 -0
  59. package/src-tauri/icons/Square142x142Logo.png +0 -0
  60. package/src-tauri/icons/Square150x150Logo.png +0 -0
  61. package/src-tauri/icons/Square284x284Logo.png +0 -0
  62. package/src-tauri/icons/Square30x30Logo.png +0 -0
  63. package/src-tauri/icons/Square310x310Logo.png +0 -0
  64. package/src-tauri/icons/Square44x44Logo.png +0 -0
  65. package/src-tauri/icons/Square71x71Logo.png +0 -0
  66. package/src-tauri/icons/Square89x89Logo.png +0 -0
  67. package/src-tauri/icons/StoreLogo.png +0 -0
  68. package/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  69. package/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
  70. package/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  71. package/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
  72. package/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
  73. package/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  74. package/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
  75. package/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
  76. package/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  77. package/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
  78. package/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
  79. package/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  80. package/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  81. package/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
  82. package/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  83. package/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  84. package/src-tauri/icons/android/values/ic_launcher_background.xml +4 -0
  85. package/src-tauri/icons/icon.icns +0 -0
  86. package/src-tauri/icons/icon.ico +0 -0
  87. package/src-tauri/icons/icon.png +0 -0
  88. package/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
  89. package/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
  90. package/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
  91. package/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
  92. package/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
  93. package/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
  94. package/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
  95. package/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
  96. package/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
  97. package/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
  98. package/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
  99. package/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
  100. package/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
  101. package/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
  102. package/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
  103. package/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
  104. package/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
  105. package/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
  106. package/src-tauri/icons/source/app-icon-1024.png +0 -0
  107. package/src-tauri/icons/source/app-icon.svg +74 -0
  108. package/src-tauri/icons/source/tray-22.png +0 -0
  109. package/src-tauri/icons/source/tray-44.png +0 -0
  110. package/src-tauri/icons/source/tray-icon.svg +14 -0
  111. package/src-tauri/permissions/allow-custom-commands.toml +11 -0
  112. package/src-tauri/src/lib.rs +238 -0
  113. package/src-tauri/src/main.rs +6 -0
  114. package/src-tauri/tauri.conf.json +57 -0
  115. package/tsconfig.app.json +27 -0
  116. package/tsconfig.json +7 -0
  117. package/tsconfig.node.json +23 -0
  118. package/vite.config.ts +7 -0
  119. package/vitest.config.ts +28 -0
@@ -0,0 +1,947 @@
1
+ import type { PriceEntry } from "./index.ts";
2
+
3
+ const prices: Record<string, PriceEntry> = {
4
+ "chatgpt-4o-latest": {
5
+ "input_cost_per_token": 5e-06,
6
+ "output_cost_per_token": 1.5e-05,
7
+ "provider": "openai"
8
+ },
9
+ "chatgpt-image-latest": {
10
+ "cache_read_input_token_cost": 1.25e-06,
11
+ "input_cost_per_token": 5e-06,
12
+ "provider": "openai"
13
+ },
14
+ "claude-3-7-sonnet-20250219": {
15
+ "cache_creation_input_token_cost": 3.75e-06,
16
+ "cache_read_input_token_cost": 3e-07,
17
+ "input_cost_per_token": 3e-06,
18
+ "output_cost_per_token": 1.5e-05,
19
+ "provider": "anthropic"
20
+ },
21
+ "claude-3-haiku-20240307": {
22
+ "cache_creation_input_token_cost": 3e-07,
23
+ "cache_read_input_token_cost": 3e-08,
24
+ "input_cost_per_token": 2.5e-07,
25
+ "output_cost_per_token": 1.25e-06,
26
+ "provider": "anthropic"
27
+ },
28
+ "claude-3-opus-20240229": {
29
+ "cache_creation_input_token_cost": 1.875e-05,
30
+ "cache_read_input_token_cost": 1.5e-06,
31
+ "input_cost_per_token": 1.5e-05,
32
+ "output_cost_per_token": 7.5e-05,
33
+ "provider": "anthropic"
34
+ },
35
+ "claude-4-opus-20250514": {
36
+ "cache_creation_input_token_cost": 1.875e-05,
37
+ "cache_read_input_token_cost": 1.5e-06,
38
+ "input_cost_per_token": 1.5e-05,
39
+ "output_cost_per_token": 7.5e-05,
40
+ "provider": "anthropic"
41
+ },
42
+ "claude-4-sonnet-20250514": {
43
+ "cache_creation_input_token_cost": 3.75e-06,
44
+ "cache_read_input_token_cost": 3e-07,
45
+ "input_cost_per_token": 3e-06,
46
+ "output_cost_per_token": 1.5e-05,
47
+ "provider": "anthropic"
48
+ },
49
+ "claude-fable-5": {
50
+ "cache_creation_input_token_cost": 1.25e-05,
51
+ "cache_read_input_token_cost": 1e-06,
52
+ "input_cost_per_token": 1e-05,
53
+ "output_cost_per_token": 5e-05,
54
+ "provider": "anthropic"
55
+ },
56
+ "claude-haiku-4-5": {
57
+ "cache_creation_input_token_cost": 1.25e-06,
58
+ "cache_read_input_token_cost": 1e-07,
59
+ "input_cost_per_token": 1e-06,
60
+ "output_cost_per_token": 5e-06,
61
+ "provider": "anthropic"
62
+ },
63
+ "claude-haiku-4-5-20251001": {
64
+ "cache_creation_input_token_cost": 1.25e-06,
65
+ "cache_read_input_token_cost": 1e-07,
66
+ "input_cost_per_token": 1e-06,
67
+ "output_cost_per_token": 5e-06,
68
+ "provider": "anthropic"
69
+ },
70
+ "claude-opus-4-1": {
71
+ "cache_creation_input_token_cost": 1.875e-05,
72
+ "cache_read_input_token_cost": 1.5e-06,
73
+ "input_cost_per_token": 1.5e-05,
74
+ "output_cost_per_token": 7.5e-05,
75
+ "provider": "anthropic"
76
+ },
77
+ "claude-opus-4-1-20250805": {
78
+ "cache_creation_input_token_cost": 1.875e-05,
79
+ "cache_read_input_token_cost": 1.5e-06,
80
+ "input_cost_per_token": 1.5e-05,
81
+ "output_cost_per_token": 7.5e-05,
82
+ "provider": "anthropic"
83
+ },
84
+ "claude-opus-4-20250514": {
85
+ "cache_creation_input_token_cost": 1.875e-05,
86
+ "cache_read_input_token_cost": 1.5e-06,
87
+ "input_cost_per_token": 1.5e-05,
88
+ "output_cost_per_token": 7.5e-05,
89
+ "provider": "anthropic"
90
+ },
91
+ "claude-opus-4-5": {
92
+ "cache_creation_input_token_cost": 6.25e-06,
93
+ "cache_read_input_token_cost": 5e-07,
94
+ "input_cost_per_token": 5e-06,
95
+ "output_cost_per_token": 2.5e-05,
96
+ "provider": "anthropic"
97
+ },
98
+ "claude-opus-4-5-20251101": {
99
+ "cache_creation_input_token_cost": 6.25e-06,
100
+ "cache_read_input_token_cost": 5e-07,
101
+ "input_cost_per_token": 5e-06,
102
+ "output_cost_per_token": 2.5e-05,
103
+ "provider": "anthropic"
104
+ },
105
+ "claude-opus-4-6": {
106
+ "cache_creation_input_token_cost": 6.25e-06,
107
+ "cache_read_input_token_cost": 5e-07,
108
+ "input_cost_per_token": 5e-06,
109
+ "output_cost_per_token": 2.5e-05,
110
+ "provider": "anthropic"
111
+ },
112
+ "claude-opus-4-6-20260205": {
113
+ "cache_creation_input_token_cost": 6.25e-06,
114
+ "cache_read_input_token_cost": 5e-07,
115
+ "input_cost_per_token": 5e-06,
116
+ "output_cost_per_token": 2.5e-05,
117
+ "provider": "anthropic"
118
+ },
119
+ "claude-opus-4-7": {
120
+ "cache_creation_input_token_cost": 6.25e-06,
121
+ "cache_read_input_token_cost": 5e-07,
122
+ "input_cost_per_token": 5e-06,
123
+ "output_cost_per_token": 2.5e-05,
124
+ "provider": "anthropic"
125
+ },
126
+ "claude-opus-4-7-20260416": {
127
+ "cache_creation_input_token_cost": 6.25e-06,
128
+ "cache_read_input_token_cost": 5e-07,
129
+ "input_cost_per_token": 5e-06,
130
+ "output_cost_per_token": 2.5e-05,
131
+ "provider": "anthropic"
132
+ },
133
+ "claude-opus-4-8": {
134
+ "cache_creation_input_token_cost": 6.25e-06,
135
+ "cache_read_input_token_cost": 5e-07,
136
+ "input_cost_per_token": 5e-06,
137
+ "output_cost_per_token": 2.5e-05,
138
+ "provider": "anthropic"
139
+ },
140
+ "claude-sonnet-4-20250514": {
141
+ "cache_creation_input_token_cost": 3.75e-06,
142
+ "cache_read_input_token_cost": 3e-07,
143
+ "input_cost_per_token": 3e-06,
144
+ "output_cost_per_token": 1.5e-05,
145
+ "provider": "anthropic"
146
+ },
147
+ "claude-sonnet-4-5": {
148
+ "cache_creation_input_token_cost": 3.75e-06,
149
+ "cache_read_input_token_cost": 3e-07,
150
+ "input_cost_per_token": 3e-06,
151
+ "output_cost_per_token": 1.5e-05,
152
+ "provider": "anthropic"
153
+ },
154
+ "claude-sonnet-4-5-20250929": {
155
+ "cache_creation_input_token_cost": 3.75e-06,
156
+ "cache_read_input_token_cost": 3e-07,
157
+ "input_cost_per_token": 3e-06,
158
+ "output_cost_per_token": 1.5e-05,
159
+ "provider": "anthropic"
160
+ },
161
+ "claude-sonnet-4-6": {
162
+ "cache_creation_input_token_cost": 3.75e-06,
163
+ "cache_read_input_token_cost": 3e-07,
164
+ "input_cost_per_token": 3e-06,
165
+ "output_cost_per_token": 1.5e-05,
166
+ "provider": "anthropic"
167
+ },
168
+ "claude-sonnet-5": {
169
+ "cache_creation_input_token_cost": 2.5e-06,
170
+ "cache_read_input_token_cost": 2e-07,
171
+ "input_cost_per_token": 2e-06,
172
+ "output_cost_per_token": 1e-05,
173
+ "provider": "anthropic"
174
+ },
175
+ "codex-mini-latest": {
176
+ "cache_read_input_token_cost": 3.75e-07,
177
+ "input_cost_per_token": 1.5e-06,
178
+ "output_cost_per_token": 6e-06,
179
+ "provider": "openai"
180
+ },
181
+ "ft:gpt-3.5-turbo": {
182
+ "input_cost_per_token": 3e-06,
183
+ "output_cost_per_token": 6e-06,
184
+ "provider": "openai"
185
+ },
186
+ "ft:gpt-3.5-turbo-0125": {
187
+ "input_cost_per_token": 3e-06,
188
+ "output_cost_per_token": 6e-06,
189
+ "provider": "openai"
190
+ },
191
+ "ft:gpt-3.5-turbo-0613": {
192
+ "input_cost_per_token": 3e-06,
193
+ "output_cost_per_token": 6e-06,
194
+ "provider": "openai"
195
+ },
196
+ "ft:gpt-3.5-turbo-1106": {
197
+ "input_cost_per_token": 3e-06,
198
+ "output_cost_per_token": 6e-06,
199
+ "provider": "openai"
200
+ },
201
+ "ft:gpt-4-0613": {
202
+ "input_cost_per_token": 3e-05,
203
+ "output_cost_per_token": 6e-05,
204
+ "provider": "openai"
205
+ },
206
+ "ft:gpt-4.1-2025-04-14": {
207
+ "cache_read_input_token_cost": 7.5e-07,
208
+ "input_cost_per_token": 3e-06,
209
+ "output_cost_per_token": 1.2e-05,
210
+ "provider": "openai"
211
+ },
212
+ "ft:gpt-4.1-mini-2025-04-14": {
213
+ "cache_read_input_token_cost": 2e-07,
214
+ "input_cost_per_token": 8e-07,
215
+ "output_cost_per_token": 3.2e-06,
216
+ "provider": "openai"
217
+ },
218
+ "ft:gpt-4.1-nano-2025-04-14": {
219
+ "cache_read_input_token_cost": 5e-08,
220
+ "input_cost_per_token": 2e-07,
221
+ "output_cost_per_token": 8e-07,
222
+ "provider": "openai"
223
+ },
224
+ "ft:gpt-4o-2024-08-06": {
225
+ "cache_read_input_token_cost": 1.875e-06,
226
+ "input_cost_per_token": 3.75e-06,
227
+ "output_cost_per_token": 1.5e-05,
228
+ "provider": "openai"
229
+ },
230
+ "ft:gpt-4o-2024-11-20": {
231
+ "cache_creation_input_token_cost": 1.875e-06,
232
+ "input_cost_per_token": 3.75e-06,
233
+ "output_cost_per_token": 1.5e-05,
234
+ "provider": "openai"
235
+ },
236
+ "ft:gpt-4o-mini-2024-07-18": {
237
+ "cache_read_input_token_cost": 1.5e-07,
238
+ "input_cost_per_token": 3e-07,
239
+ "output_cost_per_token": 1.2e-06,
240
+ "provider": "openai"
241
+ },
242
+ "ft:o4-mini-2025-04-16": {
243
+ "cache_read_input_token_cost": 1e-06,
244
+ "input_cost_per_token": 4e-06,
245
+ "output_cost_per_token": 1.6e-05,
246
+ "provider": "openai"
247
+ },
248
+ "gpt-3.5-turbo": {
249
+ "input_cost_per_token": 5e-07,
250
+ "output_cost_per_token": 1.5e-06,
251
+ "provider": "openai"
252
+ },
253
+ "gpt-3.5-turbo-0125": {
254
+ "input_cost_per_token": 5e-07,
255
+ "output_cost_per_token": 1.5e-06,
256
+ "provider": "openai"
257
+ },
258
+ "gpt-3.5-turbo-1106": {
259
+ "input_cost_per_token": 1e-06,
260
+ "output_cost_per_token": 2e-06,
261
+ "provider": "openai"
262
+ },
263
+ "gpt-3.5-turbo-16k": {
264
+ "input_cost_per_token": 3e-06,
265
+ "output_cost_per_token": 4e-06,
266
+ "provider": "openai"
267
+ },
268
+ "gpt-4": {
269
+ "input_cost_per_token": 3e-05,
270
+ "output_cost_per_token": 6e-05,
271
+ "provider": "openai"
272
+ },
273
+ "gpt-4-0125-preview": {
274
+ "input_cost_per_token": 1e-05,
275
+ "output_cost_per_token": 3e-05,
276
+ "provider": "openai"
277
+ },
278
+ "gpt-4-0314": {
279
+ "input_cost_per_token": 3e-05,
280
+ "output_cost_per_token": 6e-05,
281
+ "provider": "openai"
282
+ },
283
+ "gpt-4-0613": {
284
+ "input_cost_per_token": 3e-05,
285
+ "output_cost_per_token": 6e-05,
286
+ "provider": "openai"
287
+ },
288
+ "gpt-4-1106-preview": {
289
+ "input_cost_per_token": 1e-05,
290
+ "output_cost_per_token": 3e-05,
291
+ "provider": "openai"
292
+ },
293
+ "gpt-4-turbo": {
294
+ "input_cost_per_token": 1e-05,
295
+ "output_cost_per_token": 3e-05,
296
+ "provider": "openai"
297
+ },
298
+ "gpt-4-turbo-2024-04-09": {
299
+ "input_cost_per_token": 1e-05,
300
+ "output_cost_per_token": 3e-05,
301
+ "provider": "openai"
302
+ },
303
+ "gpt-4-turbo-preview": {
304
+ "input_cost_per_token": 1e-05,
305
+ "output_cost_per_token": 3e-05,
306
+ "provider": "openai"
307
+ },
308
+ "gpt-4.1": {
309
+ "cache_read_input_token_cost": 5e-07,
310
+ "input_cost_per_token": 2e-06,
311
+ "output_cost_per_token": 8e-06,
312
+ "provider": "openai"
313
+ },
314
+ "gpt-4.1-2025-04-14": {
315
+ "cache_read_input_token_cost": 5e-07,
316
+ "input_cost_per_token": 2e-06,
317
+ "output_cost_per_token": 8e-06,
318
+ "provider": "openai"
319
+ },
320
+ "gpt-4.1-mini": {
321
+ "cache_read_input_token_cost": 1e-07,
322
+ "input_cost_per_token": 4e-07,
323
+ "output_cost_per_token": 1.6e-06,
324
+ "provider": "openai"
325
+ },
326
+ "gpt-4.1-mini-2025-04-14": {
327
+ "cache_read_input_token_cost": 1e-07,
328
+ "input_cost_per_token": 4e-07,
329
+ "output_cost_per_token": 1.6e-06,
330
+ "provider": "openai"
331
+ },
332
+ "gpt-4.1-nano": {
333
+ "cache_read_input_token_cost": 2.5e-08,
334
+ "input_cost_per_token": 1e-07,
335
+ "output_cost_per_token": 4e-07,
336
+ "provider": "openai"
337
+ },
338
+ "gpt-4.1-nano-2025-04-14": {
339
+ "cache_read_input_token_cost": 2.5e-08,
340
+ "input_cost_per_token": 1e-07,
341
+ "output_cost_per_token": 4e-07,
342
+ "provider": "openai"
343
+ },
344
+ "gpt-4o": {
345
+ "cache_read_input_token_cost": 1.25e-06,
346
+ "input_cost_per_token": 2.5e-06,
347
+ "output_cost_per_token": 1e-05,
348
+ "provider": "openai"
349
+ },
350
+ "gpt-4o-2024-05-13": {
351
+ "input_cost_per_token": 5e-06,
352
+ "output_cost_per_token": 1.5e-05,
353
+ "provider": "openai"
354
+ },
355
+ "gpt-4o-2024-08-06": {
356
+ "cache_read_input_token_cost": 1.25e-06,
357
+ "input_cost_per_token": 2.5e-06,
358
+ "output_cost_per_token": 1e-05,
359
+ "provider": "openai"
360
+ },
361
+ "gpt-4o-2024-11-20": {
362
+ "cache_read_input_token_cost": 1.25e-06,
363
+ "input_cost_per_token": 2.5e-06,
364
+ "output_cost_per_token": 1e-05,
365
+ "provider": "openai"
366
+ },
367
+ "gpt-4o-audio-preview": {
368
+ "input_cost_per_token": 2.5e-06,
369
+ "output_cost_per_token": 1e-05,
370
+ "provider": "openai"
371
+ },
372
+ "gpt-4o-audio-preview-2024-12-17": {
373
+ "input_cost_per_token": 2.5e-06,
374
+ "output_cost_per_token": 1e-05,
375
+ "provider": "openai"
376
+ },
377
+ "gpt-4o-audio-preview-2025-06-03": {
378
+ "input_cost_per_token": 2.5e-06,
379
+ "output_cost_per_token": 1e-05,
380
+ "provider": "openai"
381
+ },
382
+ "gpt-4o-mini": {
383
+ "cache_read_input_token_cost": 7.5e-08,
384
+ "input_cost_per_token": 1.5e-07,
385
+ "output_cost_per_token": 6e-07,
386
+ "provider": "openai"
387
+ },
388
+ "gpt-4o-mini-2024-07-18": {
389
+ "cache_read_input_token_cost": 7.5e-08,
390
+ "input_cost_per_token": 1.5e-07,
391
+ "output_cost_per_token": 6e-07,
392
+ "provider": "openai"
393
+ },
394
+ "gpt-4o-mini-audio-preview": {
395
+ "input_cost_per_token": 1.5e-07,
396
+ "output_cost_per_token": 6e-07,
397
+ "provider": "openai"
398
+ },
399
+ "gpt-4o-mini-audio-preview-2024-12-17": {
400
+ "input_cost_per_token": 1.5e-07,
401
+ "output_cost_per_token": 6e-07,
402
+ "provider": "openai"
403
+ },
404
+ "gpt-4o-mini-realtime-preview": {
405
+ "cache_read_input_token_cost": 3e-07,
406
+ "input_cost_per_token": 6e-07,
407
+ "output_cost_per_token": 2.4e-06,
408
+ "provider": "openai"
409
+ },
410
+ "gpt-4o-mini-realtime-preview-2024-12-17": {
411
+ "cache_read_input_token_cost": 3e-07,
412
+ "input_cost_per_token": 6e-07,
413
+ "output_cost_per_token": 2.4e-06,
414
+ "provider": "openai"
415
+ },
416
+ "gpt-4o-mini-search-preview": {
417
+ "cache_read_input_token_cost": 7.5e-08,
418
+ "input_cost_per_token": 1.5e-07,
419
+ "output_cost_per_token": 6e-07,
420
+ "provider": "openai"
421
+ },
422
+ "gpt-4o-mini-search-preview-2025-03-11": {
423
+ "cache_read_input_token_cost": 7.5e-08,
424
+ "input_cost_per_token": 1.5e-07,
425
+ "output_cost_per_token": 6e-07,
426
+ "provider": "openai"
427
+ },
428
+ "gpt-4o-mini-transcribe": {
429
+ "input_cost_per_token": 1.25e-06,
430
+ "output_cost_per_token": 5e-06,
431
+ "provider": "openai"
432
+ },
433
+ "gpt-4o-mini-transcribe-2025-03-20": {
434
+ "input_cost_per_token": 1.25e-06,
435
+ "output_cost_per_token": 5e-06,
436
+ "provider": "openai"
437
+ },
438
+ "gpt-4o-mini-transcribe-2025-12-15": {
439
+ "input_cost_per_token": 1.25e-06,
440
+ "output_cost_per_token": 5e-06,
441
+ "provider": "openai"
442
+ },
443
+ "gpt-4o-mini-tts": {
444
+ "input_cost_per_token": 2.5e-06,
445
+ "output_cost_per_token": 1e-05,
446
+ "provider": "openai"
447
+ },
448
+ "gpt-4o-mini-tts-2025-03-20": {
449
+ "input_cost_per_token": 2.5e-06,
450
+ "output_cost_per_token": 1e-05,
451
+ "provider": "openai"
452
+ },
453
+ "gpt-4o-mini-tts-2025-12-15": {
454
+ "input_cost_per_token": 2.5e-06,
455
+ "output_cost_per_token": 1e-05,
456
+ "provider": "openai"
457
+ },
458
+ "gpt-4o-realtime-preview": {
459
+ "cache_read_input_token_cost": 2.5e-06,
460
+ "input_cost_per_token": 5e-06,
461
+ "output_cost_per_token": 2e-05,
462
+ "provider": "openai"
463
+ },
464
+ "gpt-4o-realtime-preview-2024-12-17": {
465
+ "cache_read_input_token_cost": 2.5e-06,
466
+ "input_cost_per_token": 5e-06,
467
+ "output_cost_per_token": 2e-05,
468
+ "provider": "openai"
469
+ },
470
+ "gpt-4o-realtime-preview-2025-06-03": {
471
+ "cache_read_input_token_cost": 2.5e-06,
472
+ "input_cost_per_token": 5e-06,
473
+ "output_cost_per_token": 2e-05,
474
+ "provider": "openai"
475
+ },
476
+ "gpt-4o-search-preview": {
477
+ "cache_read_input_token_cost": 1.25e-06,
478
+ "input_cost_per_token": 2.5e-06,
479
+ "output_cost_per_token": 1e-05,
480
+ "provider": "openai"
481
+ },
482
+ "gpt-4o-search-preview-2025-03-11": {
483
+ "cache_read_input_token_cost": 1.25e-06,
484
+ "input_cost_per_token": 2.5e-06,
485
+ "output_cost_per_token": 1e-05,
486
+ "provider": "openai"
487
+ },
488
+ "gpt-4o-transcribe": {
489
+ "input_cost_per_token": 2.5e-06,
490
+ "output_cost_per_token": 1e-05,
491
+ "provider": "openai"
492
+ },
493
+ "gpt-4o-transcribe-diarize": {
494
+ "input_cost_per_token": 2.5e-06,
495
+ "output_cost_per_token": 1e-05,
496
+ "provider": "openai"
497
+ },
498
+ "gpt-5": {
499
+ "cache_read_input_token_cost": 1.25e-07,
500
+ "input_cost_per_token": 1.25e-06,
501
+ "output_cost_per_token": 1e-05,
502
+ "provider": "openai"
503
+ },
504
+ "gpt-5-2025-08-07": {
505
+ "cache_read_input_token_cost": 1.25e-07,
506
+ "input_cost_per_token": 1.25e-06,
507
+ "output_cost_per_token": 1e-05,
508
+ "provider": "openai"
509
+ },
510
+ "gpt-5-chat": {
511
+ "cache_read_input_token_cost": 1.25e-07,
512
+ "input_cost_per_token": 1.25e-06,
513
+ "output_cost_per_token": 1e-05,
514
+ "provider": "openai"
515
+ },
516
+ "gpt-5-chat-latest": {
517
+ "cache_read_input_token_cost": 1.25e-07,
518
+ "input_cost_per_token": 1.25e-06,
519
+ "output_cost_per_token": 1e-05,
520
+ "provider": "openai"
521
+ },
522
+ "gpt-5-codex": {
523
+ "cache_read_input_token_cost": 1.25e-07,
524
+ "input_cost_per_token": 1.25e-06,
525
+ "output_cost_per_token": 1e-05,
526
+ "provider": "openai"
527
+ },
528
+ "gpt-5-mini": {
529
+ "cache_read_input_token_cost": 2.5e-08,
530
+ "input_cost_per_token": 2.5e-07,
531
+ "output_cost_per_token": 2e-06,
532
+ "provider": "openai"
533
+ },
534
+ "gpt-5-mini-2025-08-07": {
535
+ "cache_read_input_token_cost": 2.5e-08,
536
+ "input_cost_per_token": 2.5e-07,
537
+ "output_cost_per_token": 2e-06,
538
+ "provider": "openai"
539
+ },
540
+ "gpt-5-nano": {
541
+ "cache_read_input_token_cost": 5e-09,
542
+ "input_cost_per_token": 5e-08,
543
+ "output_cost_per_token": 4e-07,
544
+ "provider": "openai"
545
+ },
546
+ "gpt-5-nano-2025-08-07": {
547
+ "cache_read_input_token_cost": 5e-09,
548
+ "input_cost_per_token": 5e-08,
549
+ "output_cost_per_token": 4e-07,
550
+ "provider": "openai"
551
+ },
552
+ "gpt-5-pro": {
553
+ "input_cost_per_token": 1.5e-05,
554
+ "output_cost_per_token": 0.00012,
555
+ "provider": "openai"
556
+ },
557
+ "gpt-5-pro-2025-10-06": {
558
+ "input_cost_per_token": 1.5e-05,
559
+ "output_cost_per_token": 0.00012,
560
+ "provider": "openai"
561
+ },
562
+ "gpt-5-search-api": {
563
+ "cache_read_input_token_cost": 1.25e-07,
564
+ "input_cost_per_token": 1.25e-06,
565
+ "output_cost_per_token": 1e-05,
566
+ "provider": "openai"
567
+ },
568
+ "gpt-5-search-api-2025-10-14": {
569
+ "cache_read_input_token_cost": 1.25e-07,
570
+ "input_cost_per_token": 1.25e-06,
571
+ "output_cost_per_token": 1e-05,
572
+ "provider": "openai"
573
+ },
574
+ "gpt-5.1": {
575
+ "cache_read_input_token_cost": 1.25e-07,
576
+ "input_cost_per_token": 1.25e-06,
577
+ "output_cost_per_token": 1e-05,
578
+ "provider": "openai"
579
+ },
580
+ "gpt-5.1-2025-11-13": {
581
+ "cache_read_input_token_cost": 1.25e-07,
582
+ "input_cost_per_token": 1.25e-06,
583
+ "output_cost_per_token": 1e-05,
584
+ "provider": "openai"
585
+ },
586
+ "gpt-5.1-chat-latest": {
587
+ "cache_read_input_token_cost": 1.25e-07,
588
+ "input_cost_per_token": 1.25e-06,
589
+ "output_cost_per_token": 1e-05,
590
+ "provider": "openai"
591
+ },
592
+ "gpt-5.1-codex": {
593
+ "cache_read_input_token_cost": 1.25e-07,
594
+ "input_cost_per_token": 1.25e-06,
595
+ "output_cost_per_token": 1e-05,
596
+ "provider": "openai"
597
+ },
598
+ "gpt-5.1-codex-max": {
599
+ "cache_read_input_token_cost": 1.25e-07,
600
+ "input_cost_per_token": 1.25e-06,
601
+ "output_cost_per_token": 1e-05,
602
+ "provider": "openai"
603
+ },
604
+ "gpt-5.1-codex-mini": {
605
+ "cache_read_input_token_cost": 2.5e-08,
606
+ "input_cost_per_token": 2.5e-07,
607
+ "output_cost_per_token": 2e-06,
608
+ "provider": "openai"
609
+ },
610
+ "gpt-5.2": {
611
+ "cache_read_input_token_cost": 1.75e-07,
612
+ "input_cost_per_token": 1.75e-06,
613
+ "output_cost_per_token": 1.4e-05,
614
+ "provider": "openai"
615
+ },
616
+ "gpt-5.2-2025-12-11": {
617
+ "cache_read_input_token_cost": 1.75e-07,
618
+ "input_cost_per_token": 1.75e-06,
619
+ "output_cost_per_token": 1.4e-05,
620
+ "provider": "openai"
621
+ },
622
+ "gpt-5.2-chat-latest": {
623
+ "cache_read_input_token_cost": 1.75e-07,
624
+ "input_cost_per_token": 1.75e-06,
625
+ "output_cost_per_token": 1.4e-05,
626
+ "provider": "openai"
627
+ },
628
+ "gpt-5.2-codex": {
629
+ "cache_read_input_token_cost": 1.75e-07,
630
+ "input_cost_per_token": 1.75e-06,
631
+ "output_cost_per_token": 1.4e-05,
632
+ "provider": "openai"
633
+ },
634
+ "gpt-5.2-pro": {
635
+ "input_cost_per_token": 2.1e-05,
636
+ "output_cost_per_token": 0.000168,
637
+ "provider": "openai"
638
+ },
639
+ "gpt-5.2-pro-2025-12-11": {
640
+ "input_cost_per_token": 2.1e-05,
641
+ "output_cost_per_token": 0.000168,
642
+ "provider": "openai"
643
+ },
644
+ "gpt-5.3-chat-latest": {
645
+ "cache_read_input_token_cost": 1.75e-07,
646
+ "input_cost_per_token": 1.75e-06,
647
+ "output_cost_per_token": 1.4e-05,
648
+ "provider": "openai"
649
+ },
650
+ "gpt-5.3-codex": {
651
+ "cache_read_input_token_cost": 1.75e-07,
652
+ "input_cost_per_token": 1.75e-06,
653
+ "output_cost_per_token": 1.4e-05,
654
+ "provider": "openai"
655
+ },
656
+ "gpt-5.4": {
657
+ "cache_read_input_token_cost": 2.5e-07,
658
+ "input_cost_per_token": 2.5e-06,
659
+ "output_cost_per_token": 1.5e-05,
660
+ "provider": "openai"
661
+ },
662
+ "gpt-5.4-2026-03-05": {
663
+ "cache_read_input_token_cost": 2.5e-07,
664
+ "input_cost_per_token": 2.5e-06,
665
+ "output_cost_per_token": 1.5e-05,
666
+ "provider": "openai"
667
+ },
668
+ "gpt-5.4-mini": {
669
+ "cache_read_input_token_cost": 7.5e-08,
670
+ "input_cost_per_token": 7.5e-07,
671
+ "output_cost_per_token": 4.5e-06,
672
+ "provider": "openai"
673
+ },
674
+ "gpt-5.4-mini-2026-03-17": {
675
+ "cache_read_input_token_cost": 7.5e-08,
676
+ "input_cost_per_token": 7.5e-07,
677
+ "output_cost_per_token": 4.5e-06,
678
+ "provider": "openai"
679
+ },
680
+ "gpt-5.4-nano": {
681
+ "cache_read_input_token_cost": 2e-08,
682
+ "input_cost_per_token": 2e-07,
683
+ "output_cost_per_token": 1.25e-06,
684
+ "provider": "openai"
685
+ },
686
+ "gpt-5.4-nano-2026-03-17": {
687
+ "cache_read_input_token_cost": 2e-08,
688
+ "input_cost_per_token": 2e-07,
689
+ "output_cost_per_token": 1.25e-06,
690
+ "provider": "openai"
691
+ },
692
+ "gpt-5.4-pro": {
693
+ "cache_read_input_token_cost": 3e-06,
694
+ "input_cost_per_token": 3e-05,
695
+ "output_cost_per_token": 0.00018,
696
+ "provider": "openai"
697
+ },
698
+ "gpt-5.4-pro-2026-03-05": {
699
+ "cache_read_input_token_cost": 3e-06,
700
+ "input_cost_per_token": 3e-05,
701
+ "output_cost_per_token": 0.00018,
702
+ "provider": "openai"
703
+ },
704
+ "gpt-5.5": {
705
+ "cache_read_input_token_cost": 5e-07,
706
+ "input_cost_per_token": 5e-06,
707
+ "output_cost_per_token": 3e-05,
708
+ "provider": "openai"
709
+ },
710
+ "gpt-5.5-2026-04-23": {
711
+ "cache_read_input_token_cost": 5e-07,
712
+ "input_cost_per_token": 5e-06,
713
+ "output_cost_per_token": 3e-05,
714
+ "provider": "openai"
715
+ },
716
+ "gpt-5.5-pro": {
717
+ "cache_read_input_token_cost": 3e-06,
718
+ "input_cost_per_token": 3e-05,
719
+ "output_cost_per_token": 0.00018,
720
+ "provider": "openai"
721
+ },
722
+ "gpt-5.5-pro-2026-04-23": {
723
+ "cache_read_input_token_cost": 3e-06,
724
+ "input_cost_per_token": 3e-05,
725
+ "output_cost_per_token": 0.00018,
726
+ "provider": "openai"
727
+ },
728
+ "gpt-audio": {
729
+ "input_cost_per_token": 2.5e-06,
730
+ "output_cost_per_token": 1e-05,
731
+ "provider": "openai"
732
+ },
733
+ "gpt-audio-1.5": {
734
+ "input_cost_per_token": 2.5e-06,
735
+ "output_cost_per_token": 1e-05,
736
+ "provider": "openai"
737
+ },
738
+ "gpt-audio-2025-08-28": {
739
+ "input_cost_per_token": 2.5e-06,
740
+ "output_cost_per_token": 1e-05,
741
+ "provider": "openai"
742
+ },
743
+ "gpt-audio-mini": {
744
+ "input_cost_per_token": 6e-07,
745
+ "output_cost_per_token": 2.4e-06,
746
+ "provider": "openai"
747
+ },
748
+ "gpt-audio-mini-2025-10-06": {
749
+ "input_cost_per_token": 6e-07,
750
+ "output_cost_per_token": 2.4e-06,
751
+ "provider": "openai"
752
+ },
753
+ "gpt-audio-mini-2025-12-15": {
754
+ "input_cost_per_token": 6e-07,
755
+ "output_cost_per_token": 2.4e-06,
756
+ "provider": "openai"
757
+ },
758
+ "gpt-image-1": {
759
+ "cache_read_input_token_cost": 1.25e-06,
760
+ "input_cost_per_token": 5e-06,
761
+ "provider": "openai"
762
+ },
763
+ "gpt-image-1-mini": {
764
+ "cache_read_input_token_cost": 2e-07,
765
+ "input_cost_per_token": 2e-06,
766
+ "provider": "openai"
767
+ },
768
+ "gpt-image-1.5": {
769
+ "cache_read_input_token_cost": 1.25e-06,
770
+ "input_cost_per_token": 5e-06,
771
+ "output_cost_per_token": 1e-05,
772
+ "provider": "openai"
773
+ },
774
+ "gpt-image-1.5-2025-12-16": {
775
+ "cache_read_input_token_cost": 1.25e-06,
776
+ "input_cost_per_token": 5e-06,
777
+ "output_cost_per_token": 1e-05,
778
+ "provider": "openai"
779
+ },
780
+ "gpt-image-2": {
781
+ "cache_read_input_token_cost": 1.25e-06,
782
+ "input_cost_per_token": 5e-06,
783
+ "output_cost_per_token": 1e-05,
784
+ "provider": "openai"
785
+ },
786
+ "gpt-image-2-2026-04-21": {
787
+ "cache_read_input_token_cost": 1.25e-06,
788
+ "input_cost_per_token": 5e-06,
789
+ "output_cost_per_token": 1e-05,
790
+ "provider": "openai"
791
+ },
792
+ "gpt-realtime": {
793
+ "cache_read_input_token_cost": 4e-07,
794
+ "input_cost_per_token": 4e-06,
795
+ "output_cost_per_token": 1.6e-05,
796
+ "provider": "openai"
797
+ },
798
+ "gpt-realtime-1.5": {
799
+ "cache_read_input_token_cost": 4e-07,
800
+ "input_cost_per_token": 4e-06,
801
+ "output_cost_per_token": 1.6e-05,
802
+ "provider": "openai"
803
+ },
804
+ "gpt-realtime-2": {
805
+ "cache_read_input_token_cost": 4e-07,
806
+ "input_cost_per_token": 4e-06,
807
+ "output_cost_per_token": 1.6e-05,
808
+ "provider": "openai"
809
+ },
810
+ "gpt-realtime-2025-08-28": {
811
+ "cache_read_input_token_cost": 4e-07,
812
+ "input_cost_per_token": 4e-06,
813
+ "output_cost_per_token": 1.6e-05,
814
+ "provider": "openai"
815
+ },
816
+ "gpt-realtime-mini": {
817
+ "input_cost_per_token": 6e-07,
818
+ "output_cost_per_token": 2.4e-06,
819
+ "provider": "openai"
820
+ },
821
+ "gpt-realtime-mini-2025-10-06": {
822
+ "cache_read_input_token_cost": 6e-08,
823
+ "input_cost_per_token": 6e-07,
824
+ "output_cost_per_token": 2.4e-06,
825
+ "provider": "openai"
826
+ },
827
+ "gpt-realtime-mini-2025-12-15": {
828
+ "cache_read_input_token_cost": 6e-08,
829
+ "input_cost_per_token": 6e-07,
830
+ "output_cost_per_token": 2.4e-06,
831
+ "provider": "openai"
832
+ },
833
+ "o1": {
834
+ "cache_read_input_token_cost": 7.5e-06,
835
+ "input_cost_per_token": 1.5e-05,
836
+ "output_cost_per_token": 6e-05,
837
+ "provider": "openai"
838
+ },
839
+ "o1-2024-12-17": {
840
+ "cache_read_input_token_cost": 7.5e-06,
841
+ "input_cost_per_token": 1.5e-05,
842
+ "output_cost_per_token": 6e-05,
843
+ "provider": "openai"
844
+ },
845
+ "o1-pro": {
846
+ "input_cost_per_token": 0.00015,
847
+ "output_cost_per_token": 0.0006,
848
+ "provider": "openai"
849
+ },
850
+ "o1-pro-2025-03-19": {
851
+ "input_cost_per_token": 0.00015,
852
+ "output_cost_per_token": 0.0006,
853
+ "provider": "openai"
854
+ },
855
+ "o3": {
856
+ "cache_read_input_token_cost": 5e-07,
857
+ "input_cost_per_token": 2e-06,
858
+ "output_cost_per_token": 8e-06,
859
+ "provider": "openai"
860
+ },
861
+ "o3-2025-04-16": {
862
+ "cache_read_input_token_cost": 5e-07,
863
+ "input_cost_per_token": 2e-06,
864
+ "output_cost_per_token": 8e-06,
865
+ "provider": "openai"
866
+ },
867
+ "o3-deep-research": {
868
+ "cache_read_input_token_cost": 2.5e-06,
869
+ "input_cost_per_token": 1e-05,
870
+ "output_cost_per_token": 4e-05,
871
+ "provider": "openai"
872
+ },
873
+ "o3-deep-research-2025-06-26": {
874
+ "cache_read_input_token_cost": 2.5e-06,
875
+ "input_cost_per_token": 1e-05,
876
+ "output_cost_per_token": 4e-05,
877
+ "provider": "openai"
878
+ },
879
+ "o3-mini": {
880
+ "cache_read_input_token_cost": 5.5e-07,
881
+ "input_cost_per_token": 1.1e-06,
882
+ "output_cost_per_token": 4.4e-06,
883
+ "provider": "openai"
884
+ },
885
+ "o3-mini-2025-01-31": {
886
+ "cache_read_input_token_cost": 5.5e-07,
887
+ "input_cost_per_token": 1.1e-06,
888
+ "output_cost_per_token": 4.4e-06,
889
+ "provider": "openai"
890
+ },
891
+ "o3-pro": {
892
+ "input_cost_per_token": 2e-05,
893
+ "output_cost_per_token": 8e-05,
894
+ "provider": "openai"
895
+ },
896
+ "o3-pro-2025-06-10": {
897
+ "input_cost_per_token": 2e-05,
898
+ "output_cost_per_token": 8e-05,
899
+ "provider": "openai"
900
+ },
901
+ "o4-mini": {
902
+ "cache_read_input_token_cost": 2.75e-07,
903
+ "input_cost_per_token": 1.1e-06,
904
+ "output_cost_per_token": 4.4e-06,
905
+ "provider": "openai"
906
+ },
907
+ "o4-mini-2025-04-16": {
908
+ "cache_read_input_token_cost": 2.75e-07,
909
+ "input_cost_per_token": 1.1e-06,
910
+ "output_cost_per_token": 4.4e-06,
911
+ "provider": "openai"
912
+ },
913
+ "o4-mini-deep-research": {
914
+ "cache_read_input_token_cost": 5e-07,
915
+ "input_cost_per_token": 2e-06,
916
+ "output_cost_per_token": 8e-06,
917
+ "provider": "openai"
918
+ },
919
+ "o4-mini-deep-research-2025-06-26": {
920
+ "cache_read_input_token_cost": 5e-07,
921
+ "input_cost_per_token": 2e-06,
922
+ "output_cost_per_token": 8e-06,
923
+ "provider": "openai"
924
+ },
925
+ "text-embedding-3-large": {
926
+ "input_cost_per_token": 1.3e-07,
927
+ "output_cost_per_token": 0.0,
928
+ "provider": "openai"
929
+ },
930
+ "text-embedding-3-small": {
931
+ "input_cost_per_token": 2e-08,
932
+ "output_cost_per_token": 0.0,
933
+ "provider": "openai"
934
+ },
935
+ "text-embedding-ada-002": {
936
+ "input_cost_per_token": 1e-07,
937
+ "output_cost_per_token": 0.0,
938
+ "provider": "openai"
939
+ },
940
+ "text-embedding-ada-002-v2": {
941
+ "input_cost_per_token": 1e-07,
942
+ "output_cost_per_token": 0.0,
943
+ "provider": "openai"
944
+ }
945
+ };
946
+
947
+ export default prices;