summaryrefslogtreecommitdiffhomepage
path: root/packages/console/core/src
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-10-16 15:58:49 -0400
committerFrank <[email protected]>2025-10-16 15:58:51 -0400
commit88fef05923a748e059afbcf34c83be98ba6763e4 (patch)
tree40398ddf86989917f046e7705d3f62635a037450 /packages/console/core/src
parent8552f3555e90ba981f7519975b15958d7b0a552f (diff)
downloadopencode-88fef05923a748e059afbcf34c83be98ba6763e4.tar.gz
opencode-88fef05923a748e059afbcf34c83be98ba6763e4.zip
wip: zen
Diffstat (limited to 'packages/console/core/src')
-rw-r--r--packages/console/core/src/model.ts27
1 files changed, 20 insertions, 7 deletions
diff --git a/packages/console/core/src/model.ts b/packages/console/core/src/model.ts
index 018df5b54..300f92ed0 100644
--- a/packages/console/core/src/model.ts
+++ b/packages/console/core/src/model.ts
@@ -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(),
+ })
+
+ const ModelsSchema = z.object({
+ models: z.record(z.string(), ModelSchema),
+ providers: z.record(z.string(), ProviderSchema),
+ })
- export const list = fn(z.void(), () => ModelsSchema.parse(JSON.parse(Resource.ZEN_MODELS.value)))
+ 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 {