code-agent 0.2.0

AI-Native Code Assistant Library
Documentation
//! Core type definitions for the AI-Native Code Agent

use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use chrono::{DateTime, Utc};

/// Task representation
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Task {
    pub id: String,
    pub request: String,
    pub status: TaskStatus,
    pub created_at: DateTime<Utc>,
    pub updated_at: DateTime<Utc>,
    pub result: Option<TaskResult>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TaskStatus {
    Pending,
    InProgress,
    Completed,
    Failed,
}

/// Task result
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaskResult {
    pub success: bool,
    pub summary: String,
    pub details: Option<String>,
    pub execution_time: Option<u64>,
    pub task_plan: Option<TaskPlan>,
}

/// Task plan generated by understanding engine
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaskPlan {
    pub understanding: String,
    pub approach: String,
    pub complexity: TaskComplexity,
    pub estimated_steps: Option<u32>,
    pub requirements: Vec<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TaskComplexity {
    Simple,    // Single step operation
    Moderate,  // Requires several steps
    Complex,   // Requires detailed planning
}

/// Execution context
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionContext {
    pub task_id: String,
    pub plan: TaskPlan,
    pub current_step: u32,
    pub results: Vec<ExecutionStep>,
    pub variables: HashMap<String, serde_json::Value>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionStep {
    pub step_number: u32,
    pub action: Action,
    pub result: Option<StepResult>,
    pub timestamp: DateTime<Utc>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Action {
    pub action_type: ActionType,
    pub reasoning: String,
    pub confidence: f32,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ActionType {
    UseTool {
        tool_name: String,
        arguments: HashMap<String, serde_json::Value>,
    },
    Think {
        reasoning: String,
    },
    Complete {
        summary: String,
    },
    AskClarification {
        question: String,
    },
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StepResult {
    pub success: bool,
    pub output: serde_json::Value,
    pub error: Option<String>,
    pub execution_time: u64,
}

/// Execution decision made by AI
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionDecision {
    pub action_type: ActionType,
    pub reasoning: String,
    pub confidence: f32,
}

/// Execution result
#[derive(Debug, Clone)]
pub struct ExecutionResult {
    pub success: bool,
    pub summary: String,
    pub details: String,
    pub execution_time: u64,
}