feat: add Google Gemini provider with CLI token reuse support
- Add src/providers/gemini.rs with support for: - Direct API key (GEMINI_API_KEY env var or config) - Gemini CLI OAuth token reuse (~/.gemini/oauth_creds.json) - GOOGLE_API_KEY environment variable fallback - Register gemini provider in src/providers/mod.rs with aliases: gemini, google, google-gemini - Add Gemini to onboarding wizard with: - Auto-detection of existing Gemini CLI credentials - Model selection (gemini-2.0-flash, gemini-1.5-pro, etc.) - API key URL and env var guidance - Add comprehensive tests for Gemini provider - Fix pre-existing clippy warnings in email_channel.rs and whatsapp.rs Closes #XX (Gemini CLI token reuse feature request)
This commit is contained in:
parent
1862c18d10
commit
3bb5deff37
6 changed files with 527 additions and 32 deletions
|
|
@ -1,5 +1,6 @@
|
|||
pub mod anthropic;
|
||||
pub mod compatible;
|
||||
pub mod gemini;
|
||||
pub mod ollama;
|
||||
pub mod openai;
|
||||
pub mod openrouter;
|
||||
|
|
@ -20,6 +21,9 @@ pub fn create_provider(name: &str, api_key: Option<&str>) -> anyhow::Result<Box<
|
|||
"ollama" => Ok(Box::new(ollama::OllamaProvider::new(
|
||||
api_key.filter(|k| !k.is_empty()),
|
||||
))),
|
||||
"gemini" | "google" | "google-gemini" => {
|
||||
Ok(Box::new(gemini::GeminiProvider::new(api_key)))
|
||||
}
|
||||
|
||||
// ── OpenAI-compatible providers ──────────────────────
|
||||
"venice" => Ok(Box::new(OpenAiCompatibleProvider::new(
|
||||
|
|
@ -137,6 +141,15 @@ mod tests {
|
|||
assert!(create_provider("ollama", None).is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn factory_gemini() {
|
||||
assert!(create_provider("gemini", Some("test-key")).is_ok());
|
||||
assert!(create_provider("google", Some("test-key")).is_ok());
|
||||
assert!(create_provider("google-gemini", Some("test-key")).is_ok());
|
||||
// Should also work without key (will try CLI auth)
|
||||
assert!(create_provider("gemini", None).is_ok());
|
||||
}
|
||||
|
||||
// ── OpenAI-compatible providers ──────────────────────────
|
||||
|
||||
#[test]
|
||||
|
|
@ -301,6 +314,7 @@ mod tests {
|
|||
"anthropic",
|
||||
"openai",
|
||||
"ollama",
|
||||
"gemini",
|
||||
"venice",
|
||||
"vercel",
|
||||
"cloudflare",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue