Out-of-chat time-picker popup driven by useFrontendTool with an async
handler. The popup appears in the app surface (left pane), outside the chat.
Picking a slot resolves the tool call and the agent confirms in chat.
- User asks to schedule a meeting via the chat (right pane)
- Backend scheduling agent calls
schedule_meeting(a frontend tool) - Frontend renders a
TimeSlotPopupin the app surface (left pane) - User picks a slot or cancels
- The Promise resolves, popup vanishes, agent confirms in chat
Shares the same scheduling agent as gen-ui-interrupt — the only difference
is the frontend UX (external popup vs. inline chat card).
- ms-agent-python
interrupt-headless— the reference implementation. - langgraph-python
interrupt-headless— the canonical LangGraph version.