use crate::types::CliTool;
use super::claude::{ClaudeOutputParser, ClaudePromptSubmitter};
use super::codex::{CodexOutputParser, CodexPromptSubmitter};
use super::gemini::{GeminiOutputParser, GeminiPromptSubmitter};
use super::pipeline::ClassificationPipeline;
use super::traits::{OutputParser, PromptSubmitter};
pub fn create_parser(tool: CliTool) -> Box<dyn OutputParser> {
match tool {
CliTool::ClaudeCode => Box::new(ClaudeOutputParser::new()),
CliTool::Codex => Box::new(CodexOutputParser::new()),
CliTool::Gemini => Box::new(GeminiOutputParser::new()),
}
}
pub fn create_submitter(tool: CliTool) -> Box<dyn PromptSubmitter> {
match tool {
CliTool::ClaudeCode => Box::new(ClaudePromptSubmitter::new()),
CliTool::Codex => Box::new(CodexPromptSubmitter::new()),
CliTool::Gemini => Box::new(GeminiPromptSubmitter::new()),
}
}
pub fn create_pipeline(tool: CliTool) -> ClassificationPipeline {
ClassificationPipeline::new(create_parser(tool))
}