(id: &str, model: &opencode_config::ModelConfig)
| 1728 | } |
| 1729 | |
| 1730 | fn model_to_bootstrap(id: &str, model: &opencode_config::ModelConfig) -> BootstrapConfigModel { |
| 1731 | let mut options = HashMap::new(); |
| 1732 | if let Some(api_key) = &model.api_key { |
| 1733 | options.insert("apiKey".to_string(), serde_json::Value::String(api_key.clone())); |
| 1734 | } |
| 1735 | |
| 1736 | let variants = model.variants.as_ref().map(|variants| { |
| 1737 | variants |
| 1738 | .iter() |
| 1739 | .map(|(name, variant)| (name.clone(), variant_to_bootstrap(variant))) |
| 1740 | .collect() |
| 1741 | }); |
| 1742 | |
| 1743 | BootstrapConfigModel { |
| 1744 | id: model.model.clone().or_else(|| Some(id.to_string())), |
| 1745 | name: model.name.clone(), |
| 1746 | provider: model |
| 1747 | .base_url |
| 1748 | .as_ref() |
| 1749 | .map(|url| opencode_provider::bootstrap::ConfigModelProvider { |
| 1750 | api: Some(url.clone()), |
| 1751 | npm: None, |
| 1752 | }), |
| 1753 | options: (!options.is_empty()).then_some(options), |
| 1754 | variants, |
| 1755 | ..Default::default() |
| 1756 | } |
| 1757 | } |
| 1758 | |
| 1759 | fn variant_to_bootstrap( |
| 1760 | variant: &opencode_config::ModelVariantConfig, |
no test coverage detected