pub mod ollama;
pub mod openai;
mod prompt_builder;
mod prompts;
mod stream;
use crate::FileChange;
use crate::git::{PrItem, PrSummaryMode};
use anyhow::Result;
pub trait LlmClient: Send + Sync {
fn validate_model(&self) -> Result<()>;
fn summarize_file(
&self,
branch: &str,
file: &FileChange,
file_index: usize,
total_files: usize,
ticket_summary: Option<&str>,
) -> Result<String>;
fn generate_commit_message(
&self,
branch: &str,
files: &[FileChange],
ticket_summary: Option<&str>,
) -> Result<String>;
fn generate_pr_message(
&self,
base_branch: &str,
from_branch: &str,
mode: PrSummaryMode,
items: &[PrItem],
ticket_summary: Option<&str>,
) -> Result<String>;
}