This commit is contained in:
Frank
2025-10-16 15:58:49 -04:00
parent 8552f3555e
commit 88fef05923
5 changed files with 44 additions and 27 deletions

View File

@@ -7,7 +7,7 @@ import { fn } from "./util/fn"
import { Actor } from "./actor"
import { Resource } from "@opencode-ai/console-resource"
export namespace ZenModel {
export namespace ZenData {
const ModelCostSchema = z.object({
input: z.number(),
output: z.number(),
@@ -16,7 +16,7 @@ export namespace ZenModel {
cacheWrite1h: z.number().optional(),
})
export const ModelSchema = z.object({
const ModelSchema = z.object({
name: z.string(),
cost: ModelCostSchema,
cost200K: ModelCostSchema.optional(),
@@ -24,19 +24,32 @@ export namespace ZenModel {
providers: z.array(
z.object({
id: z.string(),
api: z.string(),
apiKey: z.string(),
model: z.string(),
weight: z.number().optional(),
headerMappings: z.record(z.string(), z.string()).optional(),
disabled: z.boolean().optional(),
}),
),
})
export const ModelsSchema = z.record(z.string(), ModelSchema)
const ProviderSchema = z.object({
api: z.string(),
apiKey: z.string(),
headerMappings: z.record(z.string(), z.string()).optional(),
})
export const list = fn(z.void(), () => ModelsSchema.parse(JSON.parse(Resource.ZEN_MODELS.value)))
const ModelsSchema = z.object({
models: z.record(z.string(), ModelSchema),
providers: z.record(z.string(), ProviderSchema),
})
export const validate = fn(ModelsSchema, (input) => {
return input
})
export const list = fn(z.void(), () => {
const json = JSON.parse(Resource.ZEN_MODELS.value)
return ModelsSchema.parse(json)
})
}
export namespace Model {