summaryrefslogtreecommitdiff
path: root/makima/src/llm/mod.rs
blob: 7de8afe4ec79eb12ac873d875f59f9998771358c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//! LLM integration module for file editing via tool calling.

pub mod claude;
pub mod groq;
pub mod tools;

pub use claude::{ClaudeClient, ClaudeModel};
pub use groq::GroqClient;
pub use tools::{execute_tool_call, Tool, ToolCall, ToolResult, AVAILABLE_TOOLS};

/// Available LLM providers and models
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum LlmModel {
    /// Claude Sonnet 4.5 - balanced speed and capability
    ClaudeSonnet,
    /// Claude Opus 4.5 (default) - most capable
    #[default]
    ClaudeOpus,
    /// Groq Kimi - fast alternative provider
    GroqKimi,
}

impl LlmModel {
    pub fn from_str(s: &str) -> Option<Self> {
        match s.to_lowercase().as_str() {
            "claude-sonnet" | "sonnet" | "claude" => Some(LlmModel::ClaudeSonnet),
            "claude-opus" | "opus" => Some(LlmModel::ClaudeOpus),
            "groq" | "kimi" | "groq-kimi" => Some(LlmModel::GroqKimi),
            _ => None,
        }
    }
}