Resolve default OpenCode model for an agent from config.
(
opencode_default_config: dict,
opencode_agents: list,
selected_agent: Optional[str],
)
| 229 | |
| 230 | |
| 231 | def resolve_opencode_default_model( |
| 232 | opencode_default_config: dict, |
| 233 | opencode_agents: list, |
| 234 | selected_agent: Optional[str], |
| 235 | ) -> Optional[str]: |
| 236 | """Resolve default OpenCode model for an agent from config.""" |
| 237 | agent_names: List[str] = [] |
| 238 | for agent in opencode_agents or []: |
| 239 | if isinstance(agent, dict): |
| 240 | name = agent.get("name") or agent.get("id") |
| 241 | elif isinstance(agent, str): |
| 242 | name = agent |
| 243 | else: |
| 244 | name = None |
| 245 | if isinstance(name, str) and name: |
| 246 | agent_names.append(name) |
| 247 | |
| 248 | agent_name = selected_agent or ("build" if "build" in agent_names else (agent_names[0] if agent_names else None)) |
| 249 | |
| 250 | if isinstance(opencode_default_config, dict): |
| 251 | agents_config = opencode_default_config.get("agent", {}) |
| 252 | if isinstance(agents_config, dict) and agent_name: |
| 253 | agent_config = agents_config.get(agent_name, {}) |
| 254 | if isinstance(agent_config, dict): |
| 255 | model = agent_config.get("model") |
| 256 | if isinstance(model, str) and model: |
| 257 | return model |
| 258 | model = opencode_default_config.get("model") |
| 259 | if isinstance(model, str) and model: |
| 260 | return model |
| 261 | return None |
| 262 | |
| 263 | |
| 264 | def resolve_opencode_provider_preferences( |
no test coverage detected