Context
PR #65 wires a stub noopMessenger into the Session Manager:
// backend/internal/daemon/lifecycle_wiring.go:35-39
type noopMessenger struct{}
func (noopMessenger) Send(context.Context, domain.SessionID, string) error { return nil }
It's passed as Messenger: noopMessenger{} at lifecycle_wiring.go:60 and reaches the SM at session_manager/manager.go (m.messenger.Send in Manager.Send). The contract lives at backend/internal/ports/outbound.go (AgentMessenger.Send(ctx, SessionID, string) error).
While the stub is in place, Manager.Send silently no-ops — any caller (REST /sessions/{id}/messages, controllers, future automation) returns success without anything actually reaching the running agent.
PR #74 (feat/aa-43-ao-send-pane-ping) implements the live messenger (zellij pane ping + ao send CLI). This issue tracks swapping it in.
Scope
Blocked-by / blocks
Risk if left unaddressed
Silent failure mode: callers of /sessions/{id}/messages get HTTP 200 with no delivery. Easy to miss in manual testing. Worth landing alongside PR #74 rather than as a later cleanup.
Context
PR #65 wires a stub
noopMessengerinto the Session Manager:It's passed as
Messenger: noopMessenger{}atlifecycle_wiring.go:60and reaches the SM atsession_manager/manager.go(m.messenger.SendinManager.Send). The contract lives atbackend/internal/ports/outbound.go(AgentMessenger.Send(ctx, SessionID, string) error).While the stub is in place,
Manager.Sendsilently no-ops — any caller (REST/sessions/{id}/messages, controllers, future automation) returns success without anything actually reaching the running agent.PR #74 (
feat/aa-43-ao-send-pane-ping) implements the live messenger (zellij pane ping +ao sendCLI). This issue tracks swapping it in.Scope
ao sendCLI + live zellij pane ping (aa-43) #74 lands, replacenoopMessenger{}atlifecycle_wiring.go:60with the realports.AgentMessengerimplementation from PR feat(messenger):ao sendCLI + live zellij pane ping (aa-43) #74.noopMessengertype fromlifecycle_wiring.go:35-39.wiring_test.goassertion thatstartSessionwires a non-noop messenger (e.g. resolves to the concrete type, or behaves as expected onSend).Manager.Sendcall against a live worker actually reaches the agent pane in an end-to-end test or smoke note.Blocked-by / blocks
ao sendCLI + live zellij pane ping (aa-43) #74 (the live implementation).Risk if left unaddressed
Silent failure mode: callers of
/sessions/{id}/messagesget HTTP 200 with no delivery. Easy to miss in manual testing. Worth landing alongside PR #74 rather than as a later cleanup.