Add surface-agnostic conversation list policy#13669
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
80c8d46 to
2588808
Compare
9c73d34 to
067fd30
Compare
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR introduces a frontend-neutral conversation-list policy, wires the GUI inline conversation menu through the per-surface selection policy, and adds TUI classification/export support.
Concerns
⚠️ [IMPORTANT] This is a user-facing behavior change to the inline conversation menu/TUI conversation list, but the PR description does not include screenshots, a screen recording, terminal transcript, or TUI render output demonstrating the change end to end. Please attach visual or terminal evidence for the affected UI behavior.
Verdict
Found: 0 critical, 1 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
Co-Authored-By: Oz <oz-agent@warp.dev>
067fd30 to
053d02e
Compare
d55907a to
0f9eecd
Compare

Description
Before this PR,
AgentConversationsModelproduced normalized conversation entries, but the inline conversation menu separately derived selection, open-pane state, and availability from GUI-specific models and workspace actions. That made list eligibility relative to whichever frontend happened to consume the entry: sharing aggregation meant either duplicating those decisions or importing GUI navigation semantics. This PR makes classification an explicit frontend policy owned byConversationSelectioninstead.AgentConversationEntryremains frontend-neutral, GUI and TUI selections classify each entry as selected, open elsewhere, available, or unavailable, and the existing GUI inline menu consumes that state while still re-resolving stable identity when an item is accepted. Existing GUI filtering, search, ordering, navigation, and open-elsewhere presentation remain unchanged.Review guide
Read
specs/frontend-neutral-conversation-list-policy/TECH.md— motivation, ownership boundary, and migration shape.app/src/ai/agent_conversations_model.rs— the shared policy contract and list states.app/src/ai/blocklist/conversation_selection.rs— policy ownership on the per-surface selection abstraction.app/src/ai/blocklist/agent_view/conversation_selection.rs— GUI classification precedence and focused coverage.app/src/terminal/input/conversations/data_source.rs— migration of the existing GUI menu to direct policy classification.crates/warp_tui/src/conversation_selection.rs— the headless frontend’s classification rules.can skim or skip the rest
Testing
./script/runStill no behavior changes quite yet
Agent Mode
Co-Authored-By: Oz oz-agent@warp.dev