Skip to content

feat(pull): route interactive producers onto the durable queue on pull pilots #3114

Description

@obasilakis

Summary

Decided 2026-09-16 on #1989: a pull agent only pulls. #2842 (interactive turns first) and #2843 (one turn per conversation) are merged (#3110). This issue routes the interactive producers onto the durable queue for pull-pilot agents, so their turns are claimed by the agent's worker pool instead of pushed.

Scope

  1. pull_owns_dispatch covers interactive triggers on pilots (not _AUTONOMOUS_TRIGGERS, which drives alert semantics).
  2. Every synchronous execute_task caller waits for the queued row's terminal (dispatch_and_await_terminal) and gets a complete result: Session tab, Workspace portal, public link, Slack/Telegram/WhatsApp, rooms, paid, MCP inline auth, validation, run-now.
  3. Server-derived conversation_key per entry point.
  4. persist_session carried through the queue so a cold session turn writes its transcript.
  5. One conversation guard: the Redis ResumeLock comes off the pulled path.
  6. Pull sink parity with the push finalization these callers rely on; system prompt parity.
  7. Images/files and the live stream during the queued window handled.
  8. Log line when a claim loses the conversation race 3 times (review note on feat(pull): interactive turns first, one turn per conversation (#2842, #2843) #3110).

/chat (UI chat on the agent's in-memory conversation) is a separate follow-up.

Acceptance criteria

Parent: #1081 (Phase 4).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions