summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/zen/v1
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-11-18 14:28:27 -0500
committerFrank <[email protected]>2025-11-18 14:28:31 -0500
commit7283bfa480b163da7ea66250f4782747293afdfd (patch)
treece86b0e55f81392f0651de54339689ec5135e972 /packages/console/app/src/routes/zen/v1
parent37d5099728613f73edf773d0ea3b88c97a124206 (diff)
downloadopencode-7283bfa480b163da7ea66250f4782747293afdfd.tar.gz
opencode-7283bfa480b163da7ea66250f4782747293afdfd.zip
zen: gemini
Diffstat (limited to 'packages/console/app/src/routes/zen/v1')
-rw-r--r--packages/console/app/src/routes/zen/v1/chat/completions.ts2
-rw-r--r--packages/console/app/src/routes/zen/v1/messages.ts2
-rw-r--r--packages/console/app/src/routes/zen/v1/models/[model].ts13
-rw-r--r--packages/console/app/src/routes/zen/v1/responses.ts2
4 files changed, 19 insertions, 0 deletions
diff --git a/packages/console/app/src/routes/zen/v1/chat/completions.ts b/packages/console/app/src/routes/zen/v1/chat/completions.ts
index 44326e79e..655459129 100644
--- a/packages/console/app/src/routes/zen/v1/chat/completions.ts
+++ b/packages/console/app/src/routes/zen/v1/chat/completions.ts
@@ -5,5 +5,7 @@ export function POST(input: APIEvent) {
return handler(input, {
format: "oa-compat",
parseApiKey: (headers: Headers) => headers.get("authorization")?.split(" ")[1],
+ parseModel: (url: string, body: any) => body.model,
+ parseIsStream: (url: string, body: any) => !!body.stream,
})
}
diff --git a/packages/console/app/src/routes/zen/v1/messages.ts b/packages/console/app/src/routes/zen/v1/messages.ts
index 4478b6444..54d223f95 100644
--- a/packages/console/app/src/routes/zen/v1/messages.ts
+++ b/packages/console/app/src/routes/zen/v1/messages.ts
@@ -5,5 +5,7 @@ export function POST(input: APIEvent) {
return handler(input, {
format: "anthropic",
parseApiKey: (headers: Headers) => headers.get("x-api-key") ?? undefined,
+ parseModel: (url: string, body: any) => body.model,
+ parseIsStream: (url: string, body: any) => !!body.stream,
})
}
diff --git a/packages/console/app/src/routes/zen/v1/models/[model].ts b/packages/console/app/src/routes/zen/v1/models/[model].ts
new file mode 100644
index 000000000..b20378e37
--- /dev/null
+++ b/packages/console/app/src/routes/zen/v1/models/[model].ts
@@ -0,0 +1,13 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { handler } from "~/routes/zen/util/handler"
+
+export function POST(input: APIEvent) {
+ return handler(input, {
+ format: "google",
+ parseApiKey: (headers: Headers) => headers.get("x-goog-api-key") ?? undefined,
+ parseModel: (url: string, body: any) => url.split("/").pop()?.split(":")?.[0] ?? "",
+ parseIsStream: (url: string, body: any) =>
+ // ie. url: https://opencode.ai/zen/v1/models/gemini-3-pro:streamGenerateContent?alt=sse'
+ url.split("/").pop()?.split(":")?.[1]?.startsWith("streamGenerateContent") ?? false,
+ })
+}
diff --git a/packages/console/app/src/routes/zen/v1/responses.ts b/packages/console/app/src/routes/zen/v1/responses.ts
index eadc5bc8e..a82a667cc 100644
--- a/packages/console/app/src/routes/zen/v1/responses.ts
+++ b/packages/console/app/src/routes/zen/v1/responses.ts
@@ -5,5 +5,7 @@ export function POST(input: APIEvent) {
return handler(input, {
format: "openai",
parseApiKey: (headers: Headers) => headers.get("authorization")?.split(" ")[1],
+ parseModel: (url: string, body: any) => body.model,
+ parseIsStream: (url: string, body: any) => !!body.stream,
})
}