diff options
| author | Dax Raad <[email protected]> | 2025-05-28 12:53:22 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-05-28 12:53:22 -0400 |
| commit | 55a6fcdd3f5b3c55712e5cfc9dd4d994da38d4c8 (patch) | |
| tree | aef660f4e7b0fae135dc1f90cf6920b53238ed5b /js/src/server/server.ts | |
| parent | 4132fcc1b286af5e61bf5eaa89f789988362f995 (diff) | |
| download | opencode-55a6fcdd3f5b3c55712e5cfc9dd4d994da38d4c8.tar.gz opencode-55a6fcdd3f5b3c55712e5cfc9dd4d994da38d4c8.zip | |
add provider_list
Diffstat (limited to 'js/src/server/server.ts')
| -rw-r--r-- | js/src/server/server.ts | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/js/src/server/server.ts b/js/src/server/server.ts index 410463240..57f52a37c 100644 --- a/js/src/server/server.ts +++ b/js/src/server/server.ts @@ -7,11 +7,18 @@ import { Session } from "../session/session"; import { resolver, validator as zValidator } from "hono-openapi/zod"; import { z } from "zod"; import "zod-openapi/extend"; +import { Config } from "../app/config"; +import { LLM } from "../llm/llm"; const SessionInfo = Session.Info.openapi({ ref: "Session.Info", }); +const ProviderInfo = Config.Provider.openapi({ + ref: "Provider.Info", +}); +type ProviderInfo = z.output<typeof ProviderInfo>; + export namespace Server { const log = Log.create({ service: "server" }); const PORT = 16713; @@ -156,14 +163,40 @@ export namespace Server { "json", z.object({ sessionID: z.string(), + providerID: z.string(), + modelID: z.string(), parts: z.custom<Session.Message["parts"]>(), }), ), async (c) => { const body = c.req.valid("json"); - const msg = await Session.chat(body.sessionID, ...body.parts); + const msg = await Session.chat(body); return c.json(msg); }, + ) + .post( + "/provider_list", + describeRoute({ + description: "List all providers", + responses: { + 200: { + description: "List of providers", + content: { + "application/json": { + schema: resolver(z.record(z.string(), ProviderInfo)), + }, + }, + }, + }, + }), + async (c) => { + const providers = await LLM.providers(); + const result: Record<string, ProviderInfo> = {}; + for (const [providerID, provider] of Object.entries(providers)) { + result[providerID] = provider.info; + } + return c.json(result); + }, ); return result; |
