pub(crate) fn route_agent_message(
block_id: &str,
message: &str,
) -> Result<AgentRoute, String>Expand description
The routing half of the reactive sender below, shared with the Swarm broadcast
(server::app_api::fleet) so a broadcast reaches ACP, App Server, running
persistent and not-yet-spawned agents exactly as an inter-agent message does.
Persistent + ACP + App Server keep their structured delivery; genuine PTY
controllers report Pty; a SubprocessController has no PTY and rejects raw
input, so it gets a turn instead (docs/reports/
REPORT_JEKT_DELIVERY_DROPS_SUBPROCESS_AGENTS_2026_09_02.md). An Err is a
structured controller that failed to take the message; it must not be retried
as keystrokes.