diff --git a/frontend/src/types/ws-messages.ts b/frontend/src/types/ws-messages.ts index a16d8fe1..aa22e1c6 100644 --- a/frontend/src/types/ws-messages.ts +++ b/frontend/src/types/ws-messages.ts @@ -170,6 +170,7 @@ interface UserMessageMsg { v: 2; messageId: string; text: string; + sessionId?: string; } interface SessionRenamedMsg { diff --git a/server/chat.ts b/server/chat.ts index e6f687ce..a5ae2728 100644 --- a/server/chat.ts +++ b/server/chat.ts @@ -954,7 +954,13 @@ async function _startChatInner( }); eventStore.updateLastSpeaker(options.resume, 'user'); _onSessionChange?.(clientId, 'user_message'); - const echo = { type: 'user_message', messageId, text: fullPrompt }; + const echo = { + type: 'user_message', + v: 2, + messageId, + text: fullPrompt, + sessionId: options.resume, + }; send(transport, echo); broadcastToObservers(session.observers, echo); } @@ -1081,7 +1087,13 @@ export function sendToChat( /* errors logged internally */ }); } - const echo = { type: 'user_message', messageId, text: fullPrompt }; + const echo = { + type: 'user_message', + v: 2, + messageId, + text: fullPrompt, + ...(session.sessionId ? { sessionId: session.sessionId } : {}), + }; send(session.transport, echo); broadcastToObservers(session.observers, echo); session.inputQueue.push(makeUserMessage(fullPrompt, 'next')); @@ -1115,7 +1127,13 @@ export async function interruptChat( eventStore.updateLastSpeaker(session.sessionId, 'user'); _onSessionChange?.(clientId, 'user_message'); } - const echo = { type: 'user_message', messageId, text: fullPrompt }; + const echo = { + type: 'user_message', + v: 2, + messageId, + text: fullPrompt, + ...(session.sessionId ? { sessionId: session.sessionId } : {}), + }; send(session.transport, echo); broadcastToObservers(session.observers, echo); // Stop all active subagent tasks before interrupting the parent query.