Skip to content

Agent abstraction Phase B: per-session selection plumbing #167

@dhilgaertner

Description

@dhilgaertner

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

  • Add agentKind: AgentKind = .claudeCode to the Session model with Codable defaulting (backward compatible with existing persisted sessions)
  • Add defaultAgentKind: AgentKind to AppConfig; render picker in SettingsView (only .claudeCode selectable until Phase C)
  • Session-creation flow (SessionService, workspace wizard, New Session dialog) accepts and persists agentKind
  • Manager-session construction hardcodes .claudeCode; UI hides the selector for Manager
  • Sidebar adds an agent-icon slot (Claude icon only for now) in SessionListView
  • Session-detail header displays Agent: <displayName> label (read-only, no switcher)
  • Selector is exercised in code paths even while only one agent exists, so Phase C flips a flag rather than adds new plumbing

Non-goals

  • No Codex implementation (Phase C)
  • No dropdown options beyond Claude Code

Parent: #150 · Blocked by: #166 (Phase A) · Blocks: #168 (Phase C)

Metadata

Metadata

Assignees

Labels

refactorCode refactoring and cleanup

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions