Submatter/plans/Plan-automation-foundation/Epic-model-provider-registry/Task-settings-ai-role-routing-ui.md

62 lines
1.8 KiB
Markdown
Raw Normal View History

---
kind: task
slug: settings-ai-role-routing-ui
title: Settings UI — per-role model routing
plan_slug: automation-foundation
epic_slug: model-provider-registry
status: done
priority: P1
tenant_id: global
owner: unassigned
cursor_todo_id: null
updated_at: "2026-07-03"
agent_prompt: |
Read docs/adr-model-routing.md. apps/web UI. Route:
/[workspaceSlug]/settings/ai/role-routing. Allow adding custom role_id
strings. claim_task before work.
---
# Task summary
Build the Settings page that maps `role_id` → provider alias, with pipeline defaults seeded and support for custom roles.
## Description
### Route
`apps/web/app/(app)/[workspaceSlug]/settings/ai/role-routing/page.tsx`
### UI
- Table: role id, display label (optional friendly name), provider alias (dropdown from `listProviders`), tier badge from provider metadata, enabled toggle
- “Add role” — free-text `role_id` + alias dropdown (for `gate-copilot`, custom auditors, etc.)
- “Reset to pipeline defaults” — calls upsert for nine L2 roles + `gate-copilot` + `chat-default` **if** matching aliases exist; confirm dialog
- Link to ADR / note about convoy `model_policy` overrides
### Default labels
Map known `role_id` to human labels (Conductor, Architect, …) in a const — custom roles show raw id.
## Subtasks
- [ ] Page + list routes query
- [ ] Upsert/disable per row
- [ ] Add custom role flow
- [ ] Reset defaults action
- [ ] Settings nav entry
## Estimation
M
## Acceptance criteria
- [ ] User can set `role-architect` → `claude-planning`, `role-implementer` → `qwen-coder`
- [ ] User can add `gate-copilot` role row
- [ ] Dropdown only lists enabled providers for the workspace
## Links
- Epic: `./Epic-model-provider-registry.md`
- Depends on: `Task-trpc-models-router.md`, `Task-settings-ai-providers-ui.md` (providers should exist first for dogfood; soft dependency)