Adds ai.models tRPC router with provider CRUD, role routes, testProvider, and resolveForRole; Vercel AI SDK client factory in packages/ai; Settings pages for providers and role routing; agent_runs model metadata columns with MCP complete_task fields and runs UI column. Co-authored-by: Cursor <cursoragent@cursor.com>
2.1 KiB
2.1 KiB
| kind | slug | title | plan_slug | epic_slug | status | priority | tenant_id | owner | cursor_todo_id | updated_at | agent_prompt |
|---|---|---|---|---|---|---|---|---|---|---|---|
| task | trpc-models-router | tRPC ai.models router — CRUD, role routes, testProvider | automation-foundation | model-provider-registry | done | P1 | global | unassigned | null | 2026-07-03 | Read docs/adr-model-routing.md. apps/web/server only. Admin-only mutations (match updateWorkflowPrompt bar). testProvider runs a minimal completion server-side — never return API keys to client. claim_task before work. |
Task summary
Add ai.models tRPC router: provider CRUD, role route upsert/delete, testProvider, and resolveForRole debug procedure.
Description
Procedures
| Procedure | Auth | Notes |
|---|---|---|
listProviders |
member | workspace-scoped |
createProvider / updateProvider / deleteProvider |
admin | zod validate; unique alias |
testProvider |
admin | one short completion; return { ok, latencyMs, error? } |
listRoleRoutes |
member | join provider alias for display |
upsertRoleRoute / deleteRoleRoute |
admin | custom roleId allowed |
resolveForRole |
member | calls shared resolveModel with DB rows |
Model client factory
- Add
packages/ai/src/providers/resolve-client.ts(or similar): givenResolvedModel, return Vercel AI SDK model instance forgenerateTextintestProvider - Support at least:
anthropic,openai,google,openai_compatible
Wire router
- Register in
apps/web/server/root.ts - Export input schemas from shared where possible
Subtasks
- Implement provider CRUD
- Implement role route CRUD
- Implement testProvider with provider factory
- Implement resolveForRole
Estimation
M
Acceptance criteria
- Admin can create provider via tRPC; non-admin gets FORBIDDEN
- testProvider works against env-configured Anthropic or Ollama when aliases exist
pnpm lint && pnpm type-checkclean
Links
- Epic:
./Epic-model-provider-registry.md - Depends on:
Task-db-model-providers-migration.md,Task-shared-schemas-resolve-model.md