You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dashboard: pick a per-task agent CLI in the n new-task flow
The per-task `agent_cli` override has had a full data path since #384/#385 (model,
store, service, REST, client, MCP) but no way to set it interactively — the dashboard's
`n` flow went repo -> workflow -> memo and always inherited the repo default.
Insert a CLI step between workflow and memo, pre-selected to the repo's own default so
the common path is still Enter/Enter/Enter-and-type. Picking the default sends
`agent_cli=None` rather than a redundant explicit value, matching `resolve_agent_cli`'s
contract.
- `KNOWN_AGENT_CLIS` in `core/models.py`. The CLI name set is a control-plane concept
(it drives the base-image variant + config mount), and `terminal`/`taskservice` can't
import `container/cli` at runtime without breaking the determinism invariant, so the
list is restated in the LLM-free core and guarded by a test.
- `registered_agent_clis()` on the adapter registry — the registry is populated lazily,
so a drift test comparing against `_REGISTRY` directly would pass vacuously. The new
guard also pins the two long-duplicated `DEFAULT_AGENT_CLI` constants together.
- `_OptionListModal` grows an `initial=` param; it had no way to set the starting
highlight, which the pre-select needs. The repo default is named in the picker title
rather than baked into an option label, since `ChoiceScreen` dismisses the option text.
- Read the repo default from the `list_repos()` payload `action_new_task` already
fetches, not `self._repo_clis` — that cache is only filled on a refresh pass and can
be empty or stale at this point.
- Swap four hardcoded `"claude"` literals in `dashboard.py` for `DEFAULT_AGENT_CLI`.
The fake-adapter registration test now cleans up after itself; it was leaking `fake-cli`
into the module-global registry, which would have made the drift guard order-dependent.
Co-Authored-By: Claude <noreply@anthropic.com>
0 commit comments