Repository navigation
Notify Warp and third-party agents when another run is waiting - #16809
warp-agent-staging[bot] wants to merge 5 commits into
Conversation
|
This PR was generated with Warp. Comment |
|
This PR was generated with Warp, requested by @seemeroland. Comment |
There was a problem hiding this comment.
Overview
Native Warp and third-party delivery paths notify the recipient using the waiter in ref_id without ancestor leakage, status changes, or mailbox acknowledgment of synthetic records. Examined design, correctness, standards, complexity, naming, comments, test value/coverage, and security; no outstanding source findings.
Verdict
Checks: build/clippy pass, selected tests 225/225 pass, CI pending (real non-draft run started; prior draft aggregate intentionally red), visual proof n/a (declined).
Found: 0 critical, 0 important, 0 suggestions, 0 nits. Approve the source change subject to cross-platform CI/protections and plugin/protocol landing order. Historical parent-stack captures are not client verification.
Responding as eng-factory-slim: Open session · View in factory
## Description Add the additive `WAITED_ON` lifecycle type and `waited_on` detail. The sender identifies the waiting run, independently of parent/child direction. Regenerate checked-in Go bindings. ## Justification Support recipient-owned `run_waited_on` events so both native and third-party agents can learn that another run is waiting for them. Part of warpdotdev/warp-server#21004. ## Sensitive Fields - [x] No sensitive string fields are added. ## Testing Go generation and generated-package tests, Rust build/tests, npm ci, and TypeScript generation pass. Generation used protoc 29.3 and the repository-pinned Go plugin; Rust has no unit tests. ## Related changes and landing order Protocol: #413; server formatting: warpdotdev/warp-server#21731 (after #21020); Claude hooks: warpdotdev/claude-code-warp#106 (after #105); Codex hooks: warpdotdev/codex-warp#11 (after #10); client: warpdotdev/warp#16809 (after both plugin releases). ## Historical parent-stack UI evidence The automated appendix below belongs to earlier web-timeline work in the parent task, not proof of this notification change. New client computer-use verification was explicitly declined. <!-- warp:pr-description-artifacts start --> <!-- oz:computer-use-videos start --> <details> <summary>Computer-use video recordings (8)</summary> [](https://platform.staging.warp.dev/artifacts/01a18f3a-54ae-7ef6-8c52-1ec3c29e5d7b) **Factory Waiting run: open, history, resume, target link**: Opens the seeded Waiting run in the Factory MSW app, inspects history, resumes via mocked state, and follows the target link. [](https://platform.staging.warp.dev/artifacts/01a18f3c-3b2f-768d-b2b2-11f4eb8c173f) **Oz Waiting run: history, resume, target link**: Opens the seeded Waiting run in the Oz MSW app, expands lifecycle history, resumes via mocked state, and follows the target run link. [](https://platform.staging.warp.dev/artifacts/01a18f42-cbb7-7d7c-a007-cf651e9e0681) **Factory waiting trace to resumed trace**: Opens the Waiting Factory trace, inspects the waiting segment tooltip and wait target, mutates the MSW fixture to resumed state, observes separated work segments, and follows the target link. [](https://platform.staging.warp.dev/artifacts/01a1a96a-e113-705f-8b31-b2f6de652e9a) **Factory, Oz and debugger waiting/resumed flows**: Navigating Factory and Oz MSW run pages for waiting and resumed states, expanding timelines, then clicking a target link in the debugger. [](https://platform.staging.warp.dev/artifacts/01a1a96d-dc40-755d-8f3f-956700dfa919) **Factory MSW waiting and resumed traces**: Loads Factory MSW, opens run-msw-idle-gap (waiting on two targets), inspects links and trace, then navigates to run-msw-debugging (resumed working). [](https://platform.staging.warp.dev/artifacts/01a1a96f-af19-7b5a-b641-2c4d9c222e11) **Factory resumed trace tooltips and waiting footer**: Reloads factory.html, navigates client-side to run-msw-debugging, hovers trace segments, and checks footer links, then run-msw-idle-gap. [](https://platform.staging.warp.dev/artifacts/01a1a971-b9a2-779a-97fa-306ec44a9ae7) **Waiting and resumed run traces**: Full reload of Factory MSW entry, client-side navigation to the debugging run and the idle-gap waiting run, showing footer links and trace, then the resumed trace. [](https://platform.staging.warp.dev/artifacts/01a1cd25-cf66-76c6-9ad0-437aefff1c77) **Waiting timeline in Agents app and debugger**: Seeds MSW state for a waiting run, inspects Agents timeline and target links, then the debugger waiting-parent page and child-beta navigation. </details> <!-- oz:computer-use-videos end --> <!-- oz:computer-use-screenshots start --> <details> <summary>Computer-use screenshots (10)</summary>  run-msw-debugging after reload+client nav: single Coding agent Active segment, plain Follow up footer  run-msw-idle-gap: Waiting segment, Idle for 2d 9h gap, footer with child-alpha and child-beta links  Resumed run trace: short historical Waiting segment (1m→2m) at top and long current Active segment after idle gap  Waiting run footer "Waiting for child-alpha and child-beta agents…" with child-beta target (/runs/child-beta?tab=agents&from=parent) in status bar; alpha target is /runs/child-alpha?tab=agents&from=parent  Agents run-msw-1 collapsed timeline: "Agent waiting" with full sentence and two underlined links; Status badge Waiting  Debugger waiting-parent Timeline: Agent waiting event with yellow marker and child-alpha/child-beta links  Debugger child-beta timeline: INPROGRESS run with retained Agent working → Agent waiting → Agent working history  Collapsed Agent waiting row with orange circular pause marker and "waiting for messages from child-alpha, child-beta" sentence  Collapsed Agent blocked row: orange rounded-square-in-circle marker, "The run needs attention before it can continue."  Final state: collapsed Agent waiting row with orange pause marker and child-alpha/child-beta links </details> <!-- oz:computer-use-screenshots end --> <!-- warp:pr-description-artifacts end --> --------- Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
|
@seemeroland, your GitHub account is not connected to Warp. Connect your GitHub account, then retry github-pr-review-submitted from eng-factory-slim. |
seemeroland
left a comment
There was a problem hiding this comment.
All of these events need consistent, documented semantics for who they apply to. If we're doing some Waiting to WaitedOn conversion, we need a good reason for this. I don't mind if to the 3p agent it appears as a different run is waiting on you, but that should be a formatting level change. Our protocol and internal structs need consistent semantics
|
@seemeroland, your GitHub account is not connected to Warp. Connect your GitHub account, then retry github-pr-review-submitted from eng-factory-slim. |



Description
Consume recipient-owned
run_waited_onevents in native Warp, the Claude driver bridge, and third-party CLI message-watch output. PreserveWaitedOnownership throughout deserialization and internal consumers:run_idis the notified waitee andref_idis the waiter. Explicitly project the waiter into the existing protocol’ssender_agent_idwhen constructingWaiting; event ownership and the protocol actor are distinct. Retain read-only lifecycle context without leaking descendant notifications or changing conversation status. Preserve replay identity and exclude synthetic records from mailbox delivery acknowledgments.Pin the additive protocol and require Claude platform plugin 1.1.5 / Codex orchestration 0.4.4. Include minimal compile-compatibility handling for newer protobuf fields and the server-authored hook-denial result.
Linked Issue
Tracks warpdotdev/warp-server#21004. Depends on protocol/server formatting and plugin companions below; plugin companions in turn depend on their existing wait-skill PRs. No quarantine repair.
Testing
cargo clippy --locked -p warp --lib --tests -- -D warningspasses../script/formatand diff-check complete.Agent Mode
CHANGELOG-OZ: Agents receive a notification when another run is waiting for them, whether the waiter is their parent or child.
Related changes and landing order
Protocol: warpdotdev/warp-proto-apis#413; server formatting: https://github.com/warpdotdev/warp-server/pull/21731 (after #21020); Claude hooks: warpdotdev/claude-code-warp#106 (after #105); Codex hooks: warpdotdev/codex-warp#11 (after #10); client: #16809 (after both plugin releases).
Historical parent-stack UI evidence
The automated appendix below belongs to earlier web-timeline work in the parent task, not proof of this notification change. New client computer-use verification was explicitly declined.
Computer-use video recordings (10)
Factory Waiting run: open, history, resume, target link: Opens the seeded Waiting run in the Factory MSW app, inspects history, resumes via mocked state, and follows the target link.
Oz Waiting run: history, resume, target link: Opens the seeded Waiting run in the Oz MSW app, expands lifecycle history, resumes via mocked state, and follows the target run link.
Factory waiting trace to resumed trace: Opens the Waiting Factory trace, inspects the waiting segment tooltip and wait target, mutates the MSW fixture to resumed state, observes separated work segments, and follows the target link.
Factory, Oz and debugger waiting/resumed flows: Navigating Factory and Oz MSW run pages for waiting and resumed states, expanding timelines, then clicking a target link in the debugger.
Factory MSW waiting and resumed traces: Loads Factory MSW, opens run-msw-idle-gap (waiting on two targets), inspects links and trace, then navigates to run-msw-debugging (resumed working).
Factory resumed trace tooltips and waiting footer: Reloads factory.html, navigates client-side to run-msw-debugging, hovers trace segments, and checks footer links, then run-msw-idle-gap.
Waiting and resumed run traces: Full reload of Factory MSW entry, client-side navigation to the debugging run and the idle-gap waiting run, showing footer links and trace, then the resumed trace.
Waiting timeline in Agents app and debugger: Seeds MSW state for a waiting run, inspects Agents timeline and target links, then the debugger waiting-parent page and child-beta navigation.
Agents and Factory Waiting/Blocked badges: Shows Waiting and Blocked run rows on the real Agents and Factory Runs lists in Chromium on Linux.
Waiting run presentation: Agents, Factory, debugger: Shows the Waiting badge and expanded lifecycle timeline in Agents and Factory, the before/after debugger templates, and a resumed run retaining wait history.
Computer-use screenshots (10)
Agents Runs list with Blocked and Waiting rows, devtools closed
Factory Runs list with Waiting (pause glyph) and Blocked (stop square) rows together
Agents run-msw-1 seeded WAITING: Agent waiting timeline (expanded) with child-alpha/child-beta links and orange Waiting badge
Factory run-msw-idle-gap: "Agent finished" (not waiting), trace shows "No timeline is available for this run." and side panel stuck on "Loading timeline..."
Agents: Waiting for another agent badge and expanded timeline with child-alpha/child-beta links
Agents resumed run: Running badge, latest "Agent working" with historical "Waiting for another agent" row retained
Factory waiting run: footer "Waiting for another agent" with dot; trace stages bar; timeline panel stuck on "Loading timeline..."
Factory resumed run: footer "Agent is working…", Timeline panel still "Loading timeline..." (limitation)
Original debugger (/before): WAITING amber badge, "Agent waiting" with orange marker and "messages from child-alpha, child-beta"
Revised debugger (/after): "WAITING FOR ANOTHER AGENT" purple badge, "Waiting for another agent" purple marker with output-from-another-agent subtext and links