diff options
| author | Jack <[email protected]> | 2026-04-27 02:46:49 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-26 14:46:49 -0400 |
| commit | 3beadeebff13fefb6f771ce22c3ef7b2736e8245 (patch) | |
| tree | b040dc876d7afe0771c18a54e7d0709bc86c4f39 /packages/console/app/src/routes/zen/v1 | |
| parent | dcee1c36426495716b2bacc7f31ccf54d29a3ac0 (diff) | |
| download | opencode-3beadeebff13fefb6f771ce22c3ef7b2736e8245.tar.gz opencode-3beadeebff13fefb6f771ce22c3ef7b2736e8245.zip | |
feat(go): add Go model listing endpoint (#24304)
Co-authored-by: Frank <[email protected]>
Diffstat (limited to 'packages/console/app/src/routes/zen/v1')
| -rw-r--r-- | packages/console/app/src/routes/zen/v1/models.ts | 44 |
1 files changed, 7 insertions, 37 deletions
diff --git a/packages/console/app/src/routes/zen/v1/models.ts b/packages/console/app/src/routes/zen/v1/models.ts index 6b4a878fc..d2fc36e45 100644 --- a/packages/console/app/src/routes/zen/v1/models.ts +++ b/packages/console/app/src/routes/zen/v1/models.ts @@ -3,59 +3,29 @@ import { and, Database, eq, isNull } from "@opencode-ai/console-core/drizzle/ind import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js" import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js" -import { ZenData } from "@opencode-ai/console-core/model.js" +import { optionsHandler, getHandler } from "~/routes/zen/util/modelsHandler" export async function OPTIONS(_input: APIEvent) { - return new Response(null, { - status: 200, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "GET, POST, OPTIONS", - "Access-Control-Allow-Headers": "Content-Type, Authorization", - }, - }) + return optionsHandler() } export async function GET(input: APIEvent) { - const zenData = ZenData.list("full") - const disabledModels = await authenticate() - - return new Response( - JSON.stringify({ - object: "list", - data: Object.entries(zenData.models) - .filter(([id]) => !disabledModels.includes(id)) - .filter(([id]) => !id.startsWith("alpha-")) - .map(([id, _model]) => ({ - id, - object: "model", - created: Math.floor(Date.now() / 1000), - owned_by: "opencode", - })), - }), - { - headers: { - "Content-Type": "application/json", - }, - }, - ) - - async function authenticate() { + const disabledModels = await (() => { const apiKey = input.request.headers.get("authorization")?.split(" ")[1] if (!apiKey) return [] - const disabledModels = await Database.use((tx) => + return Database.use((tx) => tx .select({ model: ModelTable.model, }) .from(KeyTable) .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, KeyTable.workspaceID)) - .leftJoin(ModelTable, and(eq(ModelTable.workspaceID, KeyTable.workspaceID), isNull(ModelTable.timeDeleted))) + .innerJoin(ModelTable, and(eq(ModelTable.workspaceID, KeyTable.workspaceID), isNull(ModelTable.timeDeleted))) .where(and(eq(KeyTable.key, apiKey), isNull(KeyTable.timeDeleted))) .then((rows) => rows.map((row) => row.model)), ) + })() - return disabledModels - } + return getHandler({ modelList: "full", disabledModels }) } |
