Use tombstone for failure UX for cloud mode#10895
Conversation
de58218 to
2a334c2
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 |
66a4f44 to
2e7ed8d
Compare
There was a problem hiding this comment.
Overview
This PR moves Cloud Mode setup-v2 failures from the setup message bar into the conversation-ended tombstone, adds conversation-status fallback handling for pre-task failures, and deserializes task status error codes to hide invalid continue actions.
Concerns
- The environment setup failure helper compares against the wrong casing for the platform error code, so real
ENVIRONMENT_SETUP_FAILEDtask statuses will not hide continue actions and the added unit test should fail.
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
| pub enum TaskStatusErrorCode { | ||
| #[serde(alias = "ENVIRONMENT_SETUP_FAILED")] | ||
| EnvironmentSetupFailed, | ||
| #[serde(other)] |
There was a problem hiding this comment.
This comes from the OpenAPI spec in warp-server, right now just defining this variant but we will likely want/need more in the future
## Description <!-- Please remember to add your design buddy onto the PR for review, if it contains any UI changes! --> This PR reverts back to using the tombstone, rather than the message bar, to display setup failures in cloud mode. In addition to showing the tombstone, we also: - Update `conversation_output_status_from_conversation` to return statuses even when the conversation doesn't have any tasks (e.g. failure before conversation running, third-party harness) - Deserialize an `error_code` from task status messages (already present in the GraphQL) so that for setup command failures we don't show the tombstone with Continue/Continue Locally actions (it doesn't make sense to continue for an environment that's borked). Loom: https://www.loom.com/share/685d737b881f4d89a1be0ade033da5ab ## Testing <!-- How did you test this change? What automated tests did you add? If you didn't add any new tests, what's your justification for not adding any? Manual testing is required for changes that can be manually tested, and almost all changes can be manually tested. If your change can be manually tested, please include screenshots or a screen recording that show it working end to end. You can run the app locally using `./script/run` - see WARP.md for more details on how to get set up. --> Added unit tests and tested a variety of failure modes in the Loom above. ### Screenshots / Videos <!-- Attach screenshots or a short video demonstrating the change, where appropriate. Remove this section if it is not relevant to your PR. --> Not included in the Loom, but setup command failure: <img width="1392" height="912" alt="image" src="https://github.com/user-attachments/assets/eefbb82c-1c0a-4ede-b92d-79d93a9faa8c" /> I don't think it's perfect but it's better than what we had before: <img width="602" height="126" alt="image" src="https://github.com/user-attachments/assets/7a2367b7-75c9-498d-a5e8-dbb5044e73bc" /> ## Agent Mode - [x] Warp Agent Mode - This PR was created via Warp's AI Agent Mode
Description
This PR reverts back to using the tombstone, rather than the message bar, to display setup failures in cloud mode.
In addition to showing the tombstone, we also:
conversation_output_status_from_conversationto return statuses even when the conversation doesn't have any tasks (e.g. failure before conversation running, third-party harness)error_codefrom task status messages (already present in the GraphQL) so that for setup command failures we don't show the tombstone with Continue/Continue Locally actions (it doesn't make sense to continue for an environment that's borked).Loom: https://www.loom.com/share/685d737b881f4d89a1be0ade033da5ab
Testing
Added unit tests and tested a variety of failure modes in the Loom above.
Screenshots / Videos
Not included in the Loom, but setup command failure:

I don't think it's perfect but it's better than what we had before:

Agent Mode