Add harness availability model to the client.#10135
Add harness availability model to the client.#10135liliwilson wants to merge 3 commits intomasterfrom
Conversation
|
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 adds a server-driven harness availability model and wires it into GraphQL, cached app state, cloud-mode UI, and submission handling.
Concerns
- Disabled harnesses can be hidden before the selector gets a chance to render them as disabled because visibility counts only enabled harnesses.
- Persisted disabled harness selections are only corrected on future availability events, so stale selections can survive model construction.
- Harness availability changes refresh the selector menu but not the button label that also depends on availability display names.
Verdict
Found: 0 critical, 2 important, 1 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
|
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 adds a server-backed harness availability model and wires it into cloud-mode UI, management filters, details metadata, and the GraphQL client.
Concerns
- A new cloud-mode ambient view only validates the selected harness after future availability change events, so cached availability can leave the default
Ozselection active even when it is disabled.
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
| me.handle_cloud_model_event(event, ctx); | ||
| }); | ||
|
|
||
| ctx.subscribe_to_model(&HarnessAvailabilityModel::handle(ctx), |me, _event, ctx| { |
There was a problem hiding this comment.
HarnessAvailabilityModel already loaded cached data where Oz is disabled before this view is constructed and the refresh returns the same list, the model keeps the default Harness::Oz; the submit guard only checks that some harness is enabled, so the run can still be spawned with a disabled harness. Initialize from or validate against the current availability once during construction.
lmfao |
abhishekp106
left a comment
There was a problem hiding this comment.
very excited to build on this!
|
|
||
| pub fn available_harnesses(&self) -> &[HarnessAvailability] { | ||
| &self.harnesses | ||
| } |
There was a problem hiding this comment.
Are we guaranteed a consistent ordering from this by the server? I imagine Oz should always come first
There was a problem hiding this comment.
Yup! We use enums.AllAgentHarnesses on the server to enforce ordering here
fa70b5f to
25445dc
Compare
25445dc to
c6be84f
Compare
Description
This PR introduces a new
HarnessAvailabilityModel, following server-side changes to expose the list of available harnesses for use with Oz in theavailableHarnessessection of theUserGraphQL query.We model this new model (ha) after the existing models (ha) model, which stores the list of available LLMs (
LLMPreferences) that we get from the server.We also update the cloud mode UI, management view filter, and CLI so that we check this model to determine the list of harnesses to display (rather than hardcoding them), as well as to show enabled/disabled state when triggering something from cloud mode.
Screenshots / Videos
Example of disabled state for harnesses in cloud mode:

No harnesses available state:
https://www.loom.com/share/65d9ed8f52be4a5ba4b1e320fdddff0b
Testing
Tested locally, ensuring that:
Agent Mode