From 55a6fcdd3f5b3c55712e5cfc9dd4d994da38d4c8 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 28 May 2025 12:53:22 -0400 Subject: add provider_list --- js/src/server/server.ts | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'js/src/server/server.ts') 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; + 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(), }), ), 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 = {}; + for (const [providerID, provider] of Object.entries(providers)) { + result[providerID] = provider.info; + } + return c.json(result); + }, ); return result; -- cgit v1.2.3