import type { Router } from "express"; import { config } from "../config.js"; import { isSupportedModel } from "../chat/models.js"; import { createPromptSuggestionService, promptSuggestionRequestSchema } from "../chat/prompt-suggestions.js"; import { getLocalAgentContext } from "../context/localContext.js"; import type { OpencodeRuntimeAdapter } from "../runtime/opencode.js"; import { logger } from "../logger.js"; export function registerChatSuggestionRoutes(router: Router, runtime: OpencodeRuntimeAdapter) { const generate = createPromptSuggestionService(runtime); router.post("/suggestions", async (req, res) => { const parsed = promptSuggestionRequestSchema.safeParse(req.body); if (!parsed.success) { res.status(400).json({ message: "invalid suggestion request" }); return; } const model = parsed.data.model ?? config.OPENCODE_MODEL; if (!isSupportedModel(model)) { res.status(400).json({ message: "unsupported model" }); return; } res.setHeader("Cache-Control", "no-store"); try { const result = await generate(getLocalAgentContext(req), parsed.data, model); if (!res.destroyed) res.json(result); } catch { logger.warn("prompt suggestion generation unavailable"); if (!res.destroyed) res.status(503).json({ message: "prompt suggestions unavailable" }); } }); }