use serde::{Deserialize, Serialize};
mod agent_router;
mod claude_integration;
mod flow_optimizer;
mod hnsw_router;
mod hooks_integration;
mod model_router;
mod pretrain_pipeline;
mod reasoning_bank;
mod task_classifier;
mod task_generator;
pub use agent_router::{AgentRouter, AgentType, RoutingDecision};
pub use flow_optimizer::{FlowOptimizer, OptimizationConfig, OptimizationResult};
pub use hnsw_router::{
HnswDistanceMetric, HnswRouter, HnswRouterConfig, HnswRouterStats, HnswRoutingResult,
HybridRouter, TaskPattern,
};
pub use pretrain_pipeline::{
Checkpoint, CurriculumScheduler, CurriculumStats, Phase, PhaseResult, PipelineResult,
PretrainConfig, PretrainPipeline, ProgressTracker, QualityGate, QualityGateStats,
SerializedPattern,
};
pub use reasoning_bank::{
DistilledPattern, ReasoningBankConfig, ReasoningBankIntegration, ReasoningBankStats,
RoutingRecommendation, Trajectory, TrajectoryStep, Verdict,
};
pub use task_classifier::{ClassificationResult, TaskClassifier, TaskType};
pub use task_generator::{seed_rng, GeneratedTask, TaskCategory, TaskComplexity, TaskGenerator};
pub use hooks_integration::{
HooksConfig, HooksIntegration, LearningMetrics, PatternMatch, PostEditInput, PostEditResult,
PostTaskInput, PostTaskResult, PreEditInput, PreEditResult, PreTaskInput, PreTaskResult,
QualityAssessment, SessionEndResult, SessionMetrics, SessionState,
};
pub use claude_integration::{
AgentContext,
AgentCoordinator,
AgentState,
ClaudeModel,
ClaudeRequest,
ClaudeResponse,
ContentBlock,
ContextManager,
ContextWindow,
CoordinatorStats,
CostEstimator,
LatencySample,
LatencyStats,
LatencyTracker,
Message,
MessageRole,
QualityMonitor,
ResponseStreamer,
StepResult,
StreamEvent,
StreamStats,
StreamToken,
UsageStats,
WorkflowResult,
WorkflowStep,
};
pub use model_router::{
AnalyzerStats,
ComplexityFactors,
ComplexityScore,
ComplexityWeights,
ModelRouter,
ModelRoutingDecision,
ModelSelector,
SelectionCriteria,
SelectorStats,
TaskComplexityAnalyzer,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ClaudeFlowAgent {
Coder,
Researcher,
Tester,
Reviewer,
Architect,
SecurityAuditor,
PerformanceEngineer,
MlDeveloper,
BackendDev,
CicdEngineer,
}
impl ClaudeFlowAgent {
pub fn all() -> &'static [ClaudeFlowAgent] {
&[
Self::Coder,
Self::Researcher,
Self::Tester,
Self::Reviewer,
Self::Architect,
Self::SecurityAuditor,
Self::PerformanceEngineer,
Self::MlDeveloper,
Self::BackendDev,
Self::CicdEngineer,
]
}
pub fn name(&self) -> &'static str {
match self {
Self::Coder => "coder",
Self::Researcher => "researcher",
Self::Tester => "tester",
Self::Reviewer => "reviewer",
Self::Architect => "system-architect",
Self::SecurityAuditor => "security-auditor",
Self::PerformanceEngineer => "performance-engineer",
Self::MlDeveloper => "ml-developer",
Self::BackendDev => "backend-dev",
Self::CicdEngineer => "cicd-engineer",
}
}
pub fn keywords(&self) -> &'static [&'static str] {
match self {
Self::Coder => &[
"implement",
"code",
"write",
"create",
"build",
"develop",
"function",
"class",
],
Self::Researcher => &[
"research",
"analyze",
"investigate",
"explore",
"find",
"search",
"understand",
],
Self::Tester => &[
"test",
"verify",
"validate",
"check",
"assert",
"coverage",
"unit",
"integration",
],
Self::Reviewer => &[
"review",
"audit",
"inspect",
"quality",
"lint",
"style",
"best practice",
],
Self::Architect => &[
"design",
"architecture",
"structure",
"pattern",
"system",
"scalable",
"modular",
],
Self::SecurityAuditor => &[
"security",
"vulnerability",
"cve",
"injection",
"auth",
"encrypt",
"safe",
],
Self::PerformanceEngineer => &[
"performance",
"optimize",
"speed",
"memory",
"benchmark",
"profile",
"latency",
],
Self::MlDeveloper => &[
"model",
"train",
"neural",
"ml",
"ai",
"embedding",
"inference",
"tensor",
],
Self::BackendDev => &[
"api", "endpoint", "database", "server", "rest", "graphql", "query",
],
Self::CicdEngineer => &[
"ci", "cd", "pipeline", "deploy", "workflow", "action", "build", "release",
],
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ClaudeFlowTask {
CodeGeneration,
CodeReview,
Testing,
Research,
Documentation,
Debugging,
Refactoring,
Security,
Performance,
Architecture,
}
impl ClaudeFlowTask {
pub fn recommended_agents(&self) -> &'static [ClaudeFlowAgent] {
match self {
Self::CodeGeneration => &[ClaudeFlowAgent::Coder, ClaudeFlowAgent::BackendDev],
Self::CodeReview => &[ClaudeFlowAgent::Reviewer, ClaudeFlowAgent::SecurityAuditor],
Self::Testing => &[ClaudeFlowAgent::Tester, ClaudeFlowAgent::Coder],
Self::Research => &[ClaudeFlowAgent::Researcher, ClaudeFlowAgent::Architect],
Self::Documentation => &[ClaudeFlowAgent::Researcher, ClaudeFlowAgent::Coder],
Self::Debugging => &[ClaudeFlowAgent::Coder, ClaudeFlowAgent::Tester],
Self::Refactoring => &[ClaudeFlowAgent::Coder, ClaudeFlowAgent::Architect],
Self::Security => &[ClaudeFlowAgent::SecurityAuditor, ClaudeFlowAgent::Reviewer],
Self::Performance => &[ClaudeFlowAgent::PerformanceEngineer, ClaudeFlowAgent::Coder],
Self::Architecture => &[ClaudeFlowAgent::Architect, ClaudeFlowAgent::Reviewer],
}
}
}