Parent Epic
Part of #396 (unify agent abstraction layer)
Problem
internal/daemon/agentwork/session_watcher.go has a resolveAdapter() function with a hard-coded switch statement that duplicates the adapter registry in internal/session/adapters/adapter.go:
// session_watcher.go — THIS IS REDUNDANT
func resolveAdapter(name string) (adapters.Adapter, error) {
switch name {
case "claude-code": return &adapters.ClaudeCodeAdapter{}, nil
case "codex": return &adapters.CodexAdapter{}, nil
case "gemini": return &adapters.GeminiAdapter{}, nil
default:
adapter, err := adapters.GetAdapter(name) // already falls back to registry!
...
}
}
Every time a new adapter is added, both the registry Register() call AND this switch must be updated.
Proposed Solution
Delete resolveAdapter() in session_watcher.go and call adapters.GetAdapter(name) directly. The adapter registry already handles aliases via its Register() calls in each adapter's init().
Files to Change
internal/daemon/agentwork/session_watcher.go — replace resolveAdapter() calls with adapters.GetAdapter()
Risk
- Blast radius: Minimal (1 file, 1 function)
- Behavior change: None — the fallback path already calls
adapters.GetAdapter()
Parent Epic
Part of #396 (unify agent abstraction layer)
Problem
internal/daemon/agentwork/session_watcher.gohas aresolveAdapter()function with a hard-coded switch statement that duplicates the adapter registry ininternal/session/adapters/adapter.go:Every time a new adapter is added, both the registry
Register()call AND this switch must be updated.Proposed Solution
Delete
resolveAdapter()in session_watcher.go and calladapters.GetAdapter(name)directly. The adapter registry already handles aliases via itsRegister()calls in each adapter'sinit().Files to Change
internal/daemon/agentwork/session_watcher.go— replaceresolveAdapter()calls withadapters.GetAdapter()Risk
adapters.GetAdapter()