git_adr/ai/
mod.rs

1//! AI-powered features for git-adr.
2//!
3//! This module provides AI-assisted capabilities using langchain-rust:
4//! - ADR generation from context
5//! - Content suggestions
6//! - Summary generation
7//! - Status recommendations
8
9use crate::Error;
10
11mod provider;
12mod service;
13
14pub use provider::{AiProvider, ProviderConfig};
15pub use service::AiService;
16
17/// Check if AI features are available.
18#[must_use]
19pub fn is_available() -> bool {
20    true
21}
22
23/// Get the default AI provider from environment.
24///
25/// # Errors
26///
27/// Returns an error if no provider is configured.
28pub fn default_provider() -> Result<AiProvider, Error> {
29    // Check for API keys in order of preference
30    if std::env::var("ANTHROPIC_API_KEY").is_ok() {
31        return Ok(AiProvider::Anthropic);
32    }
33    if std::env::var("OPENAI_API_KEY").is_ok() {
34        return Ok(AiProvider::OpenAi);
35    }
36    if std::env::var("GOOGLE_API_KEY").is_ok() {
37        return Ok(AiProvider::Google);
38    }
39    if std::env::var("OLLAMA_HOST").is_ok() {
40        return Ok(AiProvider::Ollama);
41    }
42
43    Err(Error::AiNotConfigured {
44        message: "No AI provider configured. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, or OLLAMA_HOST.".to_string(),
45    })
46}