()
| 3051 | } |
| 3052 | |
| 3053 | async fn show_config() -> anyhow::Result<()> { |
| 3054 | let current_dir = std::env::current_dir()?; |
| 3055 | let config = load_config(¤t_dir)?; |
| 3056 | |
| 3057 | println!("\n╔══════════════════════════════════════════╗"); |
| 3058 | println!("║ Configuration ║"); |
| 3059 | println!("╚══════════════════════════════════════════╝\n"); |
| 3060 | |
| 3061 | if let Some(ref model) = config.model { |
| 3062 | println!("Default model: {}", model); |
| 3063 | } |
| 3064 | |
| 3065 | if let Some(ref default_agent) = config.default_agent { |
| 3066 | println!("Default agent: {}", default_agent); |
| 3067 | } |
| 3068 | |
| 3069 | if !config.instructions.is_empty() { |
| 3070 | println!("\nInstructions:"); |
| 3071 | for inst in &config.instructions { |
| 3072 | println!(" - {}", inst); |
| 3073 | } |
| 3074 | } |
| 3075 | |
| 3076 | println!("\nWorking directory: {}", current_dir.display()); |
| 3077 | |
| 3078 | println!("\nEnvironment variables:"); |
| 3079 | let env_vars = [ |
| 3080 | "ANTHROPIC_API_KEY", |
| 3081 | "OPENAI_API_KEY", |
| 3082 | "OPENROUTER_API_KEY", |
| 3083 | "GOOGLE_API_KEY", |
| 3084 | "MISTRAL_API_KEY", |
| 3085 | "GROQ_API_KEY", |
| 3086 | "XAI_API_KEY", |
| 3087 | "DEEPSEEK_API_KEY", |
| 3088 | "COHERE_API_KEY", |
| 3089 | "TOGETHER_API_KEY", |
| 3090 | "PERPLEXITY_API_KEY", |
| 3091 | "CEREBRAS_API_KEY", |
| 3092 | "GOOGLE_VERTEX_API_KEY", |
| 3093 | "AZURE_OPENAI_API_KEY", |
| 3094 | "AWS_ACCESS_KEY_ID", |
| 3095 | ]; |
| 3096 | |
| 3097 | for var in env_vars { |
| 3098 | let status = if std::env::var(var).is_ok() { |
| 3099 | "✓ set" |
| 3100 | } else { |
| 3101 | "✗ not set" |
| 3102 | }; |
| 3103 | println!(" {}: {}", var, status); |
| 3104 | } |
| 3105 | |
| 3106 | Ok(()) |
| 3107 | } |
| 3108 | |
| 3109 | const AUTH_ENV_PROVIDERS: &[(&str, &str)] = &[ |
| 3110 | ("anthropic", "ANTHROPIC_API_KEY"), |
no test coverage detected