Skip to content

Commit 5cf195e

Browse files
committed
go: models endpoint
1 parent 244d1de commit 5cf195e

3 files changed

Lines changed: 18 additions & 18 deletions

File tree

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import type { APIEvent } from "@solidjs/start/server"
2-
import { getHandler, optionsHandler } from "../../util/modelsHandler"
2+
import { ZenData } from "@opencode-ai/console-core/model.js"
3+
import { buildModelsResponse, buildOptionsResponse } from "../../util/modelsHandler"
34

45
export async function OPTIONS(_input: APIEvent) {
5-
return optionsHandler()
6+
return buildOptionsResponse()
67
}
78

8-
export async function GET(input: APIEvent) {
9-
return getHandler({ modelList: "lite" })
9+
export async function GET(_input: APIEvent) {
10+
const models = Object.keys(ZenData.list("lite").models)
11+
return buildModelsResponse(models)
1012
}

packages/console/app/src/routes/zen/util/modelsHandler.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import { ZenData } from "@opencode-ai/console-core/model.js"
2-
3-
export async function optionsHandler() {
1+
export async function buildOptionsResponse() {
42
return new Response(null, {
53
status: 200,
64
headers: {
@@ -11,16 +9,13 @@ export async function optionsHandler() {
119
})
1210
}
1311

14-
export async function getHandler(opts: { modelList: "lite" | "full"; disabledModels?: string[] }) {
15-
const zenData = ZenData.list(opts.modelList)
16-
12+
export async function buildModelsResponse(models: string[]) {
1713
return new Response(
1814
JSON.stringify({
1915
object: "list",
20-
data: Object.entries(zenData.models)
21-
.filter(([id]) => !opts.disabledModels?.includes(id))
22-
.filter(([id]) => !id.startsWith("alpha-"))
23-
.map(([id, _model]) => ({
16+
data: models
17+
.filter((id) => !id.startsWith("alpha-"))
18+
.map((id) => ({
2419
id,
2520
object: "model",
2621
created: Math.floor(Date.now() / 1000),

packages/console/app/src/routes/zen/v1/models.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import type { APIEvent } from "@solidjs/start/server"
2+
import { ZenData } from "@opencode-ai/console-core/model.js"
23
import { and, Database, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js"
34
import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js"
45
import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
56
import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
6-
import { optionsHandler, getHandler } from "~/routes/zen/util/modelsHandler"
7+
import { buildOptionsResponse, buildModelsResponse } from "~/routes/zen/util/modelsHandler"
78

89
export async function OPTIONS(_input: APIEvent) {
9-
return optionsHandler()
10+
return buildOptionsResponse()
1011
}
1112

1213
export async function GET(input: APIEvent) {
1314
const disabledModels = await (() => {
1415
const apiKey = input.request.headers.get("authorization")?.split(" ")[1]
15-
if (!apiKey) return []
16+
if (!apiKey) return [] as string[]
1617

1718
return Database.use((tx) =>
1819
tx
@@ -27,5 +28,7 @@ export async function GET(input: APIEvent) {
2728
)
2829
})()
2930

30-
return getHandler({ modelList: "full", disabledModels })
31+
const models = Object.keys(ZenData.list("full").models).filter((id) => !disabledModels.includes(id))
32+
33+
return buildModelsResponse(models)
3134
}

0 commit comments

Comments
 (0)