Provider model
The root CLI is provider-neutral, while every integration owns its commands, services, and types. Today the root registers one utility command and one provider namespace:
vac├── upgrade└── retellThe boundary is concrete:
| Path | Responsibility |
|---|---|
src/cli.ts |
Defines vac and registers root commands and providers |
src/commands/ |
Provider-neutral user commands such as self-upgrade |
src/core/ |
Provider-neutral parsing, pagination, and error helpers |
src/providers/retell/ |
Retell commands, configuration, SDK access, prompts, and types |
src/architecture.test.ts fails if a retell-sdk import appears outside src/providers/retell/.
There is no runtime plugin system, provider interface, or second provider. A future provider should add its own src/providers/<name>/ module and explicit root registration. Shared abstractions should wait until two real providers expose the same behavior.