Summary
Phase B of the agent-abstraction work scoped by #150. Add agentKind to the Session model, expose a default in AppConfig, and ship the per-session selector UI — wired up but disabled until Phase C adds a second agent.
Context
Full design in docs/agent-abstraction-spec.md §5, §12 Phase B.
Per the locked architectural decisions (§Executive Summary), the Manager tab stays pinned to Claude Code — no selector for Manager.
Checklist
Non-goals
- No Codex implementation (Phase C)
- No dropdown options beyond Claude Code
Parent: #150 · Blocked by: #166 (Phase A) · Blocks: #168 (Phase C)
Summary
Phase B of the agent-abstraction work scoped by #150. Add
agentKindto theSessionmodel, expose a default inAppConfig, and ship the per-session selector UI — wired up but disabled until Phase C adds a second agent.Context
Full design in
docs/agent-abstraction-spec.md§5, §12 Phase B.Per the locked architectural decisions (§Executive Summary), the Manager tab stays pinned to Claude Code — no selector for Manager.
Checklist
agentKind: AgentKind = .claudeCodeto theSessionmodel with Codable defaulting (backward compatible with existing persisted sessions)defaultAgentKind: AgentKindtoAppConfig; render picker inSettingsView(only.claudeCodeselectable until Phase C)SessionService, workspace wizard, New Session dialog) accepts and persistsagentKind.claudeCode; UI hides the selector for ManagerSessionListViewAgent: <displayName>label (read-only, no switcher)Non-goals
Parent: #150 · Blocked by: #166 (Phase A) · Blocks: #168 (Phase C)