import { Hono } from "hono" import { z } from "zod" import { forwardError } from "~/lib/error" import { getModelMappings, setModelMappings } from "~/lib/config" import { PATHS } from "~/lib/paths" export const configRoutes = new Hono() const modelMappingsRequestSchema = z.object({ modelMappings: z.record(z.string(), z.string()), }) configRoutes.get("/model-mappings", (c) => { return c.json({ configPath: PATHS.CONFIG_PATH, modelMappings: getModelMappings(), }) }) configRoutes.post("/model-mappings", async (c) => { try { const parseResult = modelMappingsRequestSchema.safeParse(await c.req.json()) if (!parseResult.success) { return c.json( { error: { message: parseResult.error.issues[0]?.message ?? "Invalid request body.", type: "invalid_request_error", }, }, 400, ) } const updatedModelMappings = setModelMappings( parseResult.data.modelMappings, ) return c.json({ configPath: PATHS.CONFIG_PATH, modelMappings: updatedModelMappings, }) } catch (error) { return await forwardError(c, error) } })