feat(agents): wizard E2E — /agents/models endpoint + live model combobox #553
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!553
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/m26-wizard-e2e"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes the M26-2 follow-up gap: the wizard's per-tier model input was free-text only because the HTTP route for the model catalogue had never been registered. Handler in
sdk-adapter.ts::SdkClaudeAgent.listModelshas existed since PR #547 — this PR just exposes it over HTTP and consumes it from the wizard.Changes
Server:
app.get("/agents/models", ...)registered. Validates?provider=against the closed enum (anthropic|deepseek|ollama); 400s on unknown values.Web:
fetchAgentModels(provider)helper inlib/api.ts. React-query cache (5 minstaleTime) shares one fetch across every wizard tier on the same page.<ModelCombobox />inconfig.tsx—<datalist>-backed input. Autocomplete when the catalogue is reachable; free-text fallback for custom Ollama tags or models the upstream snapshot doesn't carry.Test plan
just typecheckclean across all 4 packages.main: session JSONL pruning + foreman session CRUD). 3 new cases for the endpoint.listattribute wires the input to the sibling<datalist>./config→ pick a type with a 3-tier chain → confirm tier-1 model dropdown autocompletes Anthropic catalogue, tier-2 deepseek, tier-3 ollama (or fallback list when the env vars are absent).🤖 Generated with Claude Code