fix(chat): show a message sent mid-turn as a message, not a strip
A message sent while the agent is replying reaches it over the native _session/steering channel, and the agent records it as a user message. The live view dropped the echo, so the only trace was the strip above the composer, which then sat there for the rest of the turn. And with no user turn between them, the reply to that message continued inside the same assistant bubble as the one before it, running two separate answers together mid-paragraph. A delivered note now becomes a `steering` block on the live message, which closes the assistant turn at that point, renders the message as its own user turn, and starts the reply to it as a new turn. That is what the transcript projection already does with a mid-turn user_message_chunk, so the live view and a reload agree; a mid-turn detail fetch that brings back the agent's own copy is matched on content and the live copy kept, since only it sits in the right place. Pending notes are untouched: the check_user_feedback pull channel reaches the agent as a tool result, never as a user message, so those stay strips. Queued messages, which are not delivered until the turn ends, are untouched too.
A
Adam Dalloul committed
5cc79a81a52e640123f6b3f31c5a8b5cb12fd3e2
Parent: f497521