summaryrefslogblamecommitdiff
path: root/makima/src/llm/mod.rs
blob: c4f8e50a56a869ca2679115b370d30299872317a (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                                                             
               
                       
             
                 
                   


                       
              
                            
 
                                            



                                                                                               
                         
                                                                                                 










                                                                                                   



                                                                                                




                                                                            






















                                                                                  
//! LLM integration module for file editing via tool calling.

pub mod claude;
pub mod contract_tools;
pub mod groq;
pub mod markdown;
pub mod mesh_tools;
pub mod phase_guidance;
pub mod task_output;
pub mod templates;
pub mod tools;
pub mod transcript_analyzer;

pub use claude::{ClaudeClient, ClaudeModel};
pub use contract_tools::{
    parse_contract_tool_call, ChainedTaskDef, ContractToolExecutionResult, ContractToolRequest,
    CONTRACT_TOOLS,
};
pub use groq::GroqClient;
pub use mesh_tools::{parse_mesh_tool_call, MeshToolExecutionResult, MeshToolRequest, MESH_TOOLS};
pub use phase_guidance::{
    check_phase_completion, format_checklist_markdown, get_phase_checklist, get_phase_deliverables,
    DeliverableStatus, FileInfo, FilePriority, PhaseChecklist, PhaseDeliverables, RecommendedFile,
    TaskInfo, TaskStats,
};
pub use task_output::{
    analyze_task_output, format_parsed_tasks, parse_tasks_from_breakdown, ParsedTask,
    PhaseImpact, SuggestedAction, TaskOutputAnalysis, TaskParseResult,
};
pub use markdown::{body_to_markdown, markdown_to_body};
pub use templates::{all_templates, templates_for_phase, FileTemplate};
pub use tools::{
    execute_tool_call, Tool, ToolCall, ToolResult, UserAnswer, UserQuestion, VersionToolRequest,
    AVAILABLE_TOOLS,
};
pub use transcript_analyzer::{
    TranscriptAnalysisResult, ExtractedRequirement, ExtractedDecision,
    ExtractedActionItem, SpeakerStats, format_transcript_for_analysis,
    calculate_speaker_stats, build_analysis_prompt, parse_analysis_response,
};

/// 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,
        }
    }
}