diff --git a/src/core/__tests__/api-session-runtime.test.ts b/src/core/__tests__/api-session-runtime.test.ts index 2b45fae..3e1c168 100644 --- a/src/core/__tests__/api-session-runtime.test.ts +++ b/src/core/__tests__/api-session-runtime.test.ts @@ -87,7 +87,7 @@ test("runProviderSessionTurn executes API mode without a Local CLI process", asy ); assert.deepEqual( events.map((event) => event.type), - ["message", "status", "text_delta", "message", "turn_end", "status"], + ["status", "message", "text_delta", "message", "turn_end", "status"], ); }); @@ -193,6 +193,6 @@ test("runProviderSessionTurn removes the pending user message after the session ); assert.deepEqual( events.map((event) => event.type), - ["message", "status"], + ["status"], ); }); diff --git a/src/core/api-session-runtime.ts b/src/core/api-session-runtime.ts index ac5a4c5..78fa97d 100644 --- a/src/core/api-session-runtime.ts +++ b/src/core/api-session-runtime.ts @@ -94,7 +94,6 @@ export async function runProviderSessionTurn({ const insertedUser = db.prepare( "INSERT INTO session_messages (session_id, role, content) VALUES (?, 'user', ?)", ).run(sessionId, message); - emit(sessionId, { type: "message", role: "user", content: message }); db.prepare("UPDATE sessions SET status = 'running' WHERE id = ?").run( sessionId, @@ -116,6 +115,8 @@ export async function runProviderSessionTurn({ }; } + emit(sessionId, { type: "message", role: "user", content: message }); + if (!result.ok) { db.prepare( "UPDATE sessions SET status = 'failed', ended_at = datetime('now') WHERE id = ?",