Request decisions are invisible in My Chat — agent gets the #2614 turn but the user sees nothing happen #2636

Closed
opened 2026-06-12 10:21:38 +00:00 by core-devops · 1 comment
Member

Live observation (CTO, 2026-06-12 ~10:20Z, right after #2614 deployed): user rejected the concierge's test task → the notification turn WAS delivered (a2a_receive NOTIF 10:20:02) and the agent reacted (get_request 10:20:08) — but from the user's seat, My Chat showed nothing: no record of their decision, no agent acknowledgment. The loop closes agent-side and is invisible user-side.

Two parts:

  1. Notification text nudge (core, one line in request_store.go notifyRequesterAgent): append guidance — "If this outcome affects what you owe the user, acknowledge briefly via send_message_to_user." Queue-delivered turns (like scheduler ticks) never render in My Chat, so the agent's ack is the only way the user sees life. Without the nudge the agent silently get_requests and ends its turn (observed twice).

  2. Canvas decision chips (frontend): render the user's own request decisions inline in My Chat ("You rejected 'Test task for user'") from the existing REQUEST_RESPONDED events — the user's action should be part of their conversation record regardless of whether the agent replies.

Acceptance (fold into #2619 J7): respond to an agent-raised request → user's My Chat shows their decision chip AND (when warranted) an agent acknowledgment message.

Refs #2614, #2606, #2619.

Live observation (CTO, 2026-06-12 ~10:20Z, right after #2614 deployed): user rejected the concierge's test task → the notification turn WAS delivered (`a2a_receive` NOTIF 10:20:02) and the agent reacted (`get_request` 10:20:08) — but from the user's seat, **My Chat showed nothing**: no record of their decision, no agent acknowledgment. The loop closes agent-side and is invisible user-side. Two parts: 1. **Notification text nudge (core, one line in `request_store.go` notifyRequesterAgent):** append guidance — "If this outcome affects what you owe the user, acknowledge briefly via send_message_to_user." Queue-delivered turns (like scheduler ticks) never render in My Chat, so the agent's ack is the only way the user sees life. Without the nudge the agent silently `get_request`s and ends its turn (observed twice). 2. **Canvas decision chips (frontend):** render the user's own request decisions inline in My Chat ("You rejected 'Test task for user'") from the existing REQUEST_RESPONDED events — the user's action should be part of their conversation record regardless of whether the agent replies. Acceptance (fold into #2619 J7): respond to an agent-raised request → user's My Chat shows their decision chip AND (when warranted) an agent acknowledgment message. Refs #2614, #2606, #2619.
Member

Both parts are already implemented on main:

  1. workspace-server/internal/handlers/request_store.go:493 appends the nudge for the requester agent to acknowledge via send_message_to_user when the outcome affects the user.
  2. Canvas ChatTab already consumes REQUEST_RESPONDED events and renders the current user’s decision chip via decisionForChip / decisionChipText (see canvas/src/components/tabs/chat/decisionChip.ts and ChatTab.tsx:204-210). Tests pass (decisionChip.test.ts 8/8).

Closing as resolved.

Both parts are already implemented on main: 1. `workspace-server/internal/handlers/request_store.go:493` appends the nudge for the requester agent to acknowledge via `send_message_to_user` when the outcome affects the user. 2. Canvas `ChatTab` already consumes `REQUEST_RESPONDED` events and renders the current user’s decision chip via `decisionForChip` / `decisionChipText` (see `canvas/src/components/tabs/chat/decisionChip.ts` and `ChatTab.tsx:204-210`). Tests pass (`decisionChip.test.ts` 8/8). Closing as resolved.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2636