**As a maintainer,** I want an `IAgent` interface, so that agents are consistent and composable. AC `id`, `name`, `description`, `modes[]`, `run(context) -> AgentResult`. No direct UI dependencies inside agent implementations.