diff --git a/packages/opencode/src/server/routes/session.ts b/packages/opencode/src/server/routes/session.ts index 82e6f3121bf7..29d07be259a1 100644 --- a/packages/opencode/src/server/routes/session.ts +++ b/packages/opencode/src/server/routes/session.ts @@ -762,7 +762,11 @@ export const SessionRoutes = lazy(() => return stream(c, async () => { const sessionID = c.req.valid("param").sessionID const body = c.req.valid("json") - SessionPrompt.prompt({ ...body, sessionID }) + SessionStatus.set(sessionID, { type: "busy" }) + SessionPrompt.prompt({ ...body, sessionID }).catch((error) => { + log.error("prompt_async failed", { sessionID, error }) + SessionStatus.set(sessionID, { type: "idle" }) + }) }) }, ) diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index d7f73b4f6097..a8bd9da17add 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -851,7 +851,10 @@ export namespace SessionPrompt { } async function createUserMessage(input: PromptInput) { - const agent = await Agent.get(input.agent ?? (await Agent.defaultAgent())) + const agentName = input.agent ?? (await Agent.defaultAgent()) + const agent = await Agent.get(agentName) + if (!agent) throw new Error(`Agent not found: "${agentName}"`) + const model = input.model ?? agent.model ?? (await lastModel(input.sessionID)) const full =