Skip to content

Commit affc50e

Browse files
authored
feat(kilo-auto-model): add input_cache_read and input_cache_write prices (#1638)
## Summary Adds `input_cache_read_price` and `input_cache_write_price` fields to the `AutoModel` type and populates them for all four Kilo Auto models. Prices are sourced from OpenRouter (`/api/v1/models`) using the most expensive constituent model in each tier: - **Frontier** (`anthropic/claude-opus-4.6`): cache_read `0.0000005`, cache_write `0.00000625` - **Balanced** (`moonshotai/kimi-k2.5`): cache_read `0.000000225`, cache_write undefined (not offered) - **Small** (`openai/gpt-5-nano`): cache_read `0.000000005`, cache_write undefined (not offered) - **Free**: cache_read `0`, cache_write `0` The `buildAutoModels()` function in `openrouter/index.ts` is updated to pass `input_cache_read` and `input_cache_write` through to the `pricing` object in the model response, which already supports these optional fields via the Zod schema in `organization-types.ts`. ## Verification - Reviewed OpenRouter API response for all constituent model IDs to confirm prices - Verified `OpenRouterModel.pricing` Zod schema accepts `string | undefined` for both cache fields - Confirmed field names match the existing `input_cache_read` / `input_cache_write` convention used elsewhere in the codebase ## Visual Changes N/A ## Reviewer Notes Cache write prices are `undefined` for Balanced and Small because those constituent models (`kimi-k2.5`, `gpt-5-nano`) do not offer a cache write price on OpenRouter. The Frontier model uses Claude Opus 4.6 pricing since it is the most expensive model routed to in that tier.
2 parents a9a6d2a + 14e175f commit affc50e

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/lib/kilo-auto-model.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ type AutoModel = {
3232
max_completion_tokens: number;
3333
prompt_price: string;
3434
completion_price: string;
35+
input_cache_read_price: string | undefined;
36+
input_cache_write_price: string | undefined;
3537
supports_images: boolean;
3638
roocode_settings: ModelSettings | undefined;
3739
opencode_settings: OpenCodeSettings | undefined;
@@ -130,6 +132,8 @@ export const KILO_AUTO_FRONTIER_MODEL: AutoModel = {
130132
max_completion_tokens: 128_000,
131133
prompt_price: '0.000005',
132134
completion_price: '0.000025',
135+
input_cache_read_price: '0.0000005',
136+
input_cache_write_price: '0.00000625',
133137
supports_images: true,
134138
roocode_settings: undefined,
135139
opencode_settings: {
@@ -146,6 +150,8 @@ export const KILO_AUTO_FREE_MODEL: AutoModel = {
146150
max_completion_tokens: mimo_v2_pro_free_model.max_completion_tokens,
147151
prompt_price: '0',
148152
completion_price: '0',
153+
input_cache_read_price: '0',
154+
input_cache_write_price: '0',
149155
supports_images: false,
150156
roocode_settings: {
151157
included_tools: ['search_and_replace'],
@@ -162,6 +168,8 @@ export const KILO_AUTO_BALANCED_MODEL: AutoModel = {
162168
max_completion_tokens: 131072,
163169
prompt_price: '0.0000006',
164170
completion_price: '0.000003',
171+
input_cache_read_price: '0.000000225',
172+
input_cache_write_price: undefined,
165173
supports_images: true,
166174
roocode_settings: {
167175
included_tools: ['edit_file'],
@@ -178,6 +186,8 @@ export const KILO_AUTO_SMALL_MODEL: AutoModel = {
178186
max_completion_tokens: 32768,
179187
prompt_price: '0.00000005',
180188
completion_price: '0.0000004',
189+
input_cache_read_price: '0.000000005',
190+
input_cache_write_price: undefined,
181191
supports_images: false,
182192
roocode_settings: undefined,
183193
opencode_settings: undefined,

src/lib/providers/openrouter/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ function buildAutoModels(): OpenRouterModel[] {
3838
pricing: {
3939
prompt: m.prompt_price,
4040
completion: m.completion_price,
41+
input_cache_read: m.input_cache_read_price,
42+
input_cache_write: m.input_cache_write_price,
4143
request: '0',
4244
image: '0',
4345
web_search: '0',

src/tests/openrouter-models-sorting.approved.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
"pricing": {
2424
"prompt": "0.000005",
2525
"completion": "0.000025",
26+
"input_cache_read": "0.0000005",
27+
"input_cache_write": "0.00000625",
2628
"request": "0",
2729
"image": "0",
2830
"web_search": "0",
@@ -66,6 +68,7 @@
6668
"pricing": {
6769
"prompt": "0.0000006",
6870
"completion": "0.000003",
71+
"input_cache_read": "0.000000225",
6972
"request": "0",
7073
"image": "0",
7174
"web_search": "0",
@@ -113,6 +116,8 @@
113116
"pricing": {
114117
"prompt": "0",
115118
"completion": "0",
119+
"input_cache_read": "0",
120+
"input_cache_write": "0",
116121
"request": "0",
117122
"image": "0",
118123
"web_search": "0",
@@ -710,6 +715,7 @@
710715
"pricing": {
711716
"prompt": "0.00000005",
712717
"completion": "0.0000004",
718+
"input_cache_read": "0.000000005",
713719
"request": "0",
714720
"image": "0",
715721
"web_search": "0",

0 commit comments

Comments
 (0)