MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / list_models

Function list_models

crates/opencode-cli/src/main.rs:2865–2945  ·  view source on GitHub ↗
(
    provider_filter: Option<String>,
    refresh: bool,
    verbose: bool,
)

Source from the content-addressed store, hash-verified

2863}
2864
2865async fn list_models(
2866 provider_filter: Option<String>,
2867 refresh: bool,
2868 verbose: bool,
2869) -> anyhow::Result<()> {
2870 if refresh {
2871 eprintln!(
2872 "Note: model cache refresh is parsed for parity, but Rust rewrite currently loads providers directly from runtime env."
2873 );
2874 }
2875
2876 let current_dir = std::env::current_dir()?;
2877 let config = load_config(&current_dir)?;
2878 let registry = setup_providers(&config).await?;
2879
2880 println!("\n╔══════════════════════════════════════════╗");
2881 println!("║ Available Models ║");
2882 println!("╚══════════════════════════════════════════╝\n");
2883
2884 let providers = registry.list();
2885
2886 if providers.is_empty() {
2887 println!("No providers configured. Set API keys to enable providers:");
2888 println!(" - ANTHROPIC_API_KEY");
2889 println!(" - OPENAI_API_KEY");
2890 println!(" - OPENROUTER_API_KEY");
2891 println!(" - GOOGLE_API_KEY");
2892 println!(" - MISTRAL_API_KEY");
2893 println!(" - GROQ_API_KEY");
2894 println!(" - XAI_API_KEY");
2895 println!(" - DEEPSEEK_API_KEY");
2896 println!(" - COHERE_API_KEY");
2897 println!(" - TOGETHER_API_KEY");
2898 println!(" - PERPLEXITY_API_KEY");
2899 println!(" - CEREBRAS_API_KEY");
2900 println!(" - GOOGLE_VERTEX_API_KEY + GOOGLE_VERTEX_PROJECT_ID + GOOGLE_VERTEX_LOCATION");
2901 println!(" - AZURE_OPENAI_API_KEY + AZURE_OPENAI_ENDPOINT");
2902 println!(" - AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION");
2903 return Ok(());
2904 }
2905
2906 for provider in providers {
2907 if let Some(ref filter) = provider_filter {
2908 if !provider.id().contains(filter.to_lowercase().as_str()) {
2909 continue;
2910 }
2911 }
2912
2913 println!("Provider: {} ({})", provider.name(), provider.id());
2914 println!("{}", "─".repeat(50));
2915
2916 let models = provider.models();
2917 for model in models {
2918 println!(" {}", model.id);
2919 println!(
2920 " Context: {} tokens | Output: {} tokens",
2921 format_tokens(model.context_window),
2922 format_tokens(model.max_output_tokens)

Callers 1

mainFunction · 0.85

Calls 9

load_configFunction · 0.85
setup_providersFunction · 0.85
newFunction · 0.85
is_emptyMethod · 0.80
containsMethod · 0.80
listMethod · 0.45
idMethod · 0.45
as_strMethod · 0.45
modelsMethod · 0.45

Tested by

no test coverage detected