diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts index cedeed69a2..7a34af4f4a 100644 --- a/packages/opencode/src/provider/models.ts +++ b/packages/opencode/src/provider/models.ts @@ -18,20 +18,22 @@ export namespace ModelsDev { reasoning: z.boolean(), temperature: z.boolean(), tool_call: z.boolean(), - cost: z.object({ - input: z.number(), - output: z.number(), - cache_read: z.number().optional(), - cache_write: z.number().optional(), - context_over_200k: z - .object({ - input: z.number(), - output: z.number(), - cache_read: z.number().optional(), - cache_write: z.number().optional(), - }) - .optional(), - }), + cost: z + .object({ + input: z.number(), + output: z.number(), + cache_read: z.number().optional(), + cache_write: z.number().optional(), + context_over_200k: z + .object({ + input: z.number(), + output: z.number(), + cache_read: z.number().optional(), + cache_write: z.number().optional(), + }) + .optional(), + }) + .optional(), limit: z.object({ context: z.number(), output: z.number(), diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 3a29655a02..c83b3ac714 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -388,13 +388,13 @@ export namespace Provider { headers: model.headers ?? {}, options: model.options ?? {}, cost: { - input: model.cost.input, - output: model.cost.output, + input: model.cost?.input ?? 0, + output: model.cost?.output ?? 0, cache: { - read: model.cost.cache_read ?? 0, - write: model.cost.cache_write ?? 0, + read: model.cost?.cache_read ?? 0, + write: model.cost?.cache_write ?? 0, }, - experimentalOver200K: model.cost.context_over_200k + experimentalOver200K: model.cost?.context_over_200k ? { cache: { read: model.cost.context_over_200k.cache_read ?? 0,