mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
The intake/secretary chat driver treated StreamEvent text deltas as the ONLY text channel: AssistantMessage TextBlocks were always swallowed as already-streamed (the double-render guard). The CLI's partial-message emission turned out to be remotely gated — on 2026-07-23 the NAS containers got zero stream_event lines from the identical binary, flags, SDK, model, and settings that stream fine elsewhere — so the guard became a total blackout: replies were generated, the relay carried only init/status/turn_end, and the CEO saw nothing. SdkIntakeSession.send now tracks whether any text delta arrived during the turn; normalize() emits an AssistantMessage's complete text only when none did. Streaming mode is byte-identical (deltas render live, completes stay suppressed); gated mode delivers the reply as one block instead of nothing. Covers Secretary (same machinery). Regression tests: fallback emission, default suppression, and both modes end-to-end through the session layer. Co-authored-by: Renn F <rennf93@users.noreply.github.com>