Problem
ai-conventional-commit is now genuinely provider-agnostic, but the models command is not.
Today ai-conventional-commit models still shells out directly to opencode models, and the timeout fallback picker does the same. That means the model list only represents OpenCode-backed models, even though the CLI also supports provider-specific model namespaces such as:
claude/*
anthropic/*
- OpenCode-backed
provider/model values
So the current models UX is no longer truthful: it presents an OpenCode inventory as if it were the complete model inventory for the application.
Current behaviour
ModelsCommand is explicitly described as List available models via opencode CLI and wraps opencode models. The timeout picker in src/model/picker.ts also calls opencode models directly.
Direction
Make model discovery provider-aware rather than assuming OpenCode is the universal source of truth.
Possible shape:
- define model-discovery capability per provider/adapter;
- aggregate discoverable models from all configured/available providers;
- preserve static aliases where a provider has a small canonical set (for example Claude CLI aliases such as
claude/sonnet, claude/opus, claude/haiku);
- use dynamic discovery where the provider exposes it (for example OpenCode);
- handle providers that cannot enumerate models cleanly without pretending they can;
- make
models --interactive --save operate over the provider-aware list;
- use the same discovery abstraction for timeout fallback instead of calling OpenCode directly.
The UI should make provider boundaries visible enough that users understand where each model comes from, while still keeping the canonical stored value as the normal provider/model string.
Docs
Update provider/model documentation so ai-conventional-commit models is described as an application-level model picker rather than an OpenCode wrapper.
Also verify model-default documentation while touching this area: the provider docs currently say there is no built-in model default, while the environment-variable table still shows github-copilot/claude-sonnet-4.6 as the default for AICC_MODEL.
Done when
ai-conventional-commit models no longer represents only opencode models.
- Interactive model selection includes the supported provider namespaces where discovery is possible.
- Timeout fallback uses the same provider-aware model source.
- Providers without dynamic model enumeration are handled explicitly.
- Documentation accurately reflects the multi-provider architecture.
Problem
ai-conventional-commitis now genuinely provider-agnostic, but themodelscommand is not.Today
ai-conventional-commit modelsstill shells out directly toopencode models, and the timeout fallback picker does the same. That means the model list only represents OpenCode-backed models, even though the CLI also supports provider-specific model namespaces such as:claude/*anthropic/*provider/modelvaluesSo the current
modelsUX is no longer truthful: it presents an OpenCode inventory as if it were the complete model inventory for the application.Current behaviour
ModelsCommandis explicitly described asList available models via opencode CLIand wrapsopencode models. The timeout picker insrc/model/picker.tsalso callsopencode modelsdirectly.Direction
Make model discovery provider-aware rather than assuming OpenCode is the universal source of truth.
Possible shape:
claude/sonnet,claude/opus,claude/haiku);models --interactive --saveoperate over the provider-aware list;The UI should make provider boundaries visible enough that users understand where each model comes from, while still keeping the canonical stored value as the normal
provider/modelstring.Docs
Update provider/model documentation so
ai-conventional-commit modelsis described as an application-level model picker rather than an OpenCode wrapper.Also verify model-default documentation while touching this area: the provider docs currently say there is no built-in model default, while the environment-variable table still shows
github-copilot/claude-sonnet-4.6as the default forAICC_MODEL.Done when
ai-conventional-commit modelsno longer represents onlyopencode models.