* docs(concurrency): refresh model and close out #307 umbrella
The concurrency note from #308 predates intra-turn parallel tool execution
(#320), universal per-chat ChatTurnQueue (#320), and mid-turn message
injection (#330). It still claimed "one individual run is still sequential"
and listed shipped items under "near-term direction".
Refresh the doc and the README pointer to describe the runtime as it now
actually behaves, and add a status table that maps each bullet of the
#307 umbrella roadmap to its outcome (shipped vs tracked under
docs/roadmap/non-web-channel-progress-events-plan.md). With the three
concrete asks shipped and the remaining stretch work tracked under a
focused plan, the umbrella can be closed.
Closes#307
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(channels): real-time mid-turn injection ack on Telegram/Discord/Slack/Matrix/Feishu/WeChat
Channel adapters previously drained AgentEvents only after the agent loop
returned, so a follow-up message that fired MidTurnInjection mid-flight
was invisible to the user until end_turn.
Add a shared concurrent EventTap in src/channels/event_tap.rs that owns
the agent's event_rx, runs an async callback on each event in real time,
and forwards every event to a replay channel so existing post-hoc
consumers (Telegram's send_streaming_response, Matrix streaming, the
send_message tool detection on every channel) keep working unchanged.
Wire the tap into all six non-web channel adapters with a per-channel
ack callback. Feishu's existing concurrent progress task picks up the
ack as an extra progress line; the others post a small standalone
message.
Controlled by mid_turn_injection_echo: bool (default true). Has no
effect when enable_mid_turn_injection is false.
Lands one of the bullets the #307 umbrella roadmap was tracking
(see docs/operations/concurrency-and-responsiveness.md and
docs/roadmap/non-web-channel-progress-events-plan.md).
Refs #307
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>