Skip to main content

Agent Models Documentation

Overview​

The Agent models form the core of CODITECT's autonomous development system, enabling AI-powered software creation through orchestrated agent teams. The system consists of three interconnected models:

  • AgentConfig: Defines agent capabilities, AI provider configurations, and team structures
  • AgentInstance: Manages runtime instances of agents with resource tracking and health monitoring
  • AgentExecution: Tracks individual task executions with detailed inputs, outputs, and metrics

AgentConfig Model​

Purpose​

AgentConfig represents the blueprint for AI agents, defining their type, capabilities, provider settings, and team compositions. It supports multiple AI providers (Claude, Gemini, Ollama, HuggingFace) with provider-specific configurations.

Model Structure​

Core Fields​

FieldTypeDescriptionConstraints
agent_idUUIDUnique agent configuration identifierPrimary key, auto-generated
tenant_idUUIDAssociated tenantForeign key to Tenant
nameStringAgent display nameRequired, human-readable
agent_typeAgentType (Enum)Functional categoryRequired, determines capabilities
providerAIProvider (Enum)AI service providerRequired, includes model settings
capabilitiesVecWhat the agent can doAuto-set based on type
statusAgentStatus (Enum)Current availabilityRequired
settingsAgentSettingsConfiguration parametersRequired, provider-specific
created_atDateTimeCreation timestampAuto-set
updated_atDateTimeLast modificationAuto-updated
last_active_atDateTime (Optional)Last task executionUpdated on task assignment

AgentType Enum​

enum AgentType {
TestWriter, // Creates comprehensive test suites following TDD principles
Coder, // Implements code to pass tests
Reviewer, // Reviews code for quality and security
Security, // Detects and analyzes security vulnerabilities
Architecture, // Makes architectural decisions and generates ADRs
Documenter, // Maintains documentation and guides
Orchestrator, // Orchestrates multi-agent workflows
QualityControl // Final quality assurance checks
}

AgentCapability Enum​

enum AgentCapability {
WriteUnitTests, // Can write unit tests
WriteIntegrationTests, // Can write integration tests
ImplementCode, // Can implement code features
ReviewCode, // Can review code for quality
AnalyzeSecurity, // Can analyze security vulnerabilities
DesignArchitecture, // Can make architectural decisions
GenerateDocumentation, // Can generate documentation
OrchestrateAgents, // Can orchestrate other agents
QualityAssurance, // Can perform quality checks
OptimizePerformance // Can optimize performance
}

AgentStatus Enum​

enum AgentStatus {
Available, // Agent is available for new tasks
Busy, // Agent is currently working on a task
Starting, // Agent is starting up
Stopping, // Agent is shutting down
Error, // Agent encountered an error
Offline // Agent is offline
}

AIProvider Enum​

enum AIProvider {
Claude { model: String, max_tokens: u32 },
Gemini { model: String, max_tokens: u32 },
Ollama { model: String, endpoint: String },
HuggingFace { model: String, api_key: String }
}

AgentSettings Structure​

FieldTypeDescriptionDefault
temperaturef32AI model temperature (0.0-1.0)Varies by agent type
max_tokensu32Maximum tokens per request4096
cost_per_1k_tokensf32Cost per 1000 tokens (cents)Provider-specific
max_retriesu32Maximum retries on failure3
timeout_secondsu64Request timeout120
custom_promptsHashMap<String, String>Custom instructionsEmpty

Agent Teams​

AgentTeam Structure​

FieldTypeDescription
team_idUUIDUnique team identifier
tenant_idUUIDAssociated tenant
nameStringTeam name
descriptionStringTeam purpose
membersVecTeam composition
workflow_stagesVecExecution stages
created_atDateTimeCreation timestamp
updated_atDateTimeLast modification

Default Capabilities by Type​

  • TestWriter: WriteUnitTests, WriteIntegrationTests
  • Coder: ImplementCode, OptimizePerformance
  • Reviewer: ReviewCode, QualityAssurance
  • Security: AnalyzeSecurity, ReviewCode
  • Architecture: DesignArchitecture, ReviewCode
  • Documenter: GenerateDocumentation
  • Orchestrator: OrchestrateAgents
  • QualityControl: QualityAssurance, ReviewCode

AgentInstance Model​

Purpose​

AgentInstance represents a running instance of an agent configuration, managing lifecycle, resource usage, health monitoring, and task assignments. Instances can run on various platforms (Cloud Run, Kubernetes, Docker, Local).

Model Structure​

Core Fields​

FieldTypeDescriptionConstraints
instance_idUUIDUnique instance identifierPrimary key, auto-generated
agent_idUUIDReference to agent configurationForeign key to AgentConfig
tenant_idUUIDAssociated tenantForeign key to Tenant
stateInstanceState (Enum)Current runtime stateRequired
assigned_task_idUUID (Optional)Currently assigned taskForeign key to Task
metadataInstanceMetadataRuntime informationRequired
resourcesResourceUsageResource trackingAuto-updated
created_atDateTimeInstance creationAuto-set
updated_atDateTimeLast state changeAuto-updated
task_started_atDateTime (Optional)Task start timeSet on task assignment
healthHealthStatusHealth monitoringAuto-updated

InstanceState Enum​

enum InstanceState {
Provisioning, // Instance is being created
Starting, // Instance is starting up
Idle, // Instance is ready for work
Working, // Instance is working on a task
Paused, // Instance is paused
Stopping, // Instance is shutting down
Terminated, // Instance has been terminated
Failed // Instance encountered an error
}

Valid State Transitions​

Provisioning -> Starting -> Idle <-> Working
| |
v v
Paused -> Working
|
v
Any State -> Stopping -> Terminated
Any State -> Failed

InstanceMetadata Structure​

FieldTypeDescription
runtime_idStringContainer/process identifier
regionStringDeployment region
runtime_typeRuntimeTypeExecution environment
environmentHashMap<String, String>Environment variables
agent_versionStringAgent code version
provider_metadataHashMap<String, Value>Provider-specific data

ResourceUsage Structure​

FieldTypeDescriptionUpdated
cpu_percentf32CPU usage (0-100)Real-time
memory_mbu32Memory usage in MBReal-time
tokens_usedu64Total tokens consumedCumulative
api_callsu32Total API calls madeCumulative
cost_accruedf32Total cost in dollarsCumulative
last_updatedDateTimeLast metric updateOn update

HealthStatus Structure​

FieldTypeDescription
is_healthyboolCurrent health state
last_checkDateTimeLast health check time
failure_countu32Consecutive failures
error_messageString (Optional)Error details if unhealthy

Lifecycle Management​

  • Automatic Termination: Instances idle for >N minutes
  • Health Monitoring: Failed health checks after 3 attempts → Failed state
  • Resource Limits: Configurable CPU, memory, and token limits
  • Audit Trail: All state changes logged as LifecycleEvents

AgentExecution Model​

Purpose​

AgentExecution tracks individual task executions by agent instances, capturing detailed inputs, outputs, tool usage, quality metrics, and resource consumption. It provides complete traceability for AI-generated code and decisions.

Model Structure​

Core Fields​

FieldTypeDescriptionConstraints
execution_idUUIDUnique execution identifierPrimary key, auto-generated
instance_idUUIDExecuting instanceForeign key to AgentInstance
task_idUUIDTask being executedForeign key to Task
tenant_idUUIDAssociated tenantForeign key to Tenant
statusExecutionStatus (Enum)Current stateRequired
inputExecutionInputTask input detailsRequired
outputExecutionOutput (Optional)Execution resultsSet on completion
errorExecutionError (Optional)Error informationSet on failure
metadataExecutionMetadataExecution contextRequired
resource_usageExecutionResourceUsageResource trackingAuto-updated
created_atDateTimeCreation timestampAuto-set
started_atDateTime (Optional)Execution startSet on start
completed_atDateTime (Optional)Completion timeSet on finish

ExecutionStatus Enum​

enum ExecutionStatus {
Queued, // Execution is queued
Starting, // Execution is starting
Running, // Execution is running
Completed, // Execution completed successfully
Failed, // Execution failed
Cancelled, // Execution was cancelled
TimedOut // Execution timed out
}

ExecutionInput Structure​

FieldTypeDescription
promptStringMain instruction to agent
system_messageString (Optional)System-level context
contextVecFiles, docs, previous results
parametersExecutionParametersExecution settings
toolsVecAvailable tools

ContextItem Structure​

struct ContextItem {
context_type: ContextType, // Type of context
name: String, // Identifier
content: String, // Content
mime_type: Option<String> // MIME type
}

enum ContextType {
SourceCode, // Source code file
Documentation, // Documentation
Configuration, // Config file
TestFile, // Test file
DataFile, // Data file
PreviousResult, // Previous execution result
ApiResponse // External API response
}

ExecutionOutput Structure​

FieldTypeDescription
resultStringPrimary text output
dataValue (Optional)Structured data
filesVecFiles created/modified
tool_callsVecTools used during execution
reasoningString (Optional)Agent's thought process
quality_metricsQualityMetricsOutput quality scores

QualityMetrics Structure​

FieldTypeDescriptionRange
confidencef32Confidence in output0.0-1.0
completenessf32Task completion0.0-1.0
code_qualityf32 (Optional)Code quality score0.0-1.0
test_coveragef32 (Optional)Test coverage0.0-1.0
performancef32Performance score0.0-1.0

Tool Integration​

struct ToolDefinition {
name: String,
description: String,
schema: JsonValue, // JSON Schema
handler: ToolHandler
}

enum ToolHandler {
Http { url: String, method: String, headers: HashMap<String, String> },
Internal { function: String, module: String },
External { service: String, endpoint: String, auth: Option<String> }
}

struct ToolCall {
tool: String,
input: JsonValue,
output: JsonValue,
duration_ms: u64,
success: bool,
error: Option<String>
}

Database Schema​

Primary Storage Patterns​

# Agent Configurations
Key: /{tenant_id}/agents/{agent_id}
Value: JSON serialized AgentConfig

# Agent Instances
Key: /{tenant_id}/agent_instances/{instance_id}
Value: JSON serialized AgentInstance

# Agent Executions
Key: /{tenant_id}/agent_executions/{execution_id}
Value: JSON serialized AgentExecution

# Agent Teams
Key: /{tenant_id}/agent_teams/{team_id}
Value: JSON serialized AgentTeam

Secondary Indexes​

# Agents by type
/{tenant_id}/agents_by_type/{agent_type} -> [agent_ids]

# Agents by status
/{tenant_id}/agents_by_status/{status} -> [agent_ids]

# Instances by agent
/{tenant_id}/instances_by_agent/{agent_id} -> [instance_ids]

# Active instances
/{tenant_id}/active_instances -> [instance_ids]

# Executions by task
/{tenant_id}/executions_by_task/{task_id} -> [execution_ids]

# Executions by instance
/{tenant_id}/executions_by_instance/{instance_id} -> [execution_ids]

Lifecycle Event Storage​

Key: /{tenant_id}/agent_lifecycle/{instance_id}/{timestamp}:{event_id}
Value: LifecycleEvent object

Source Files​

  • Models:
    • /src/models/agent_config.rs - AgentConfig and team definitions
    • /src/models/agent_instance.rs - AgentInstance and lifecycle
    • /src/models/agent_execution.rs - AgentExecution tracking
  • Repositories:
    • /src/db/repositories/agent_config_repository.rs
    • /src/db/repositories/agent_instance_repository.rs
    • /src/db/repositories/agent_execution_repository.rs
  • API Handlers:
    • /src/api/handlers/agent_handlers.rs - REST endpoints
  • Services:
    • /src/services/agent_orchestration_service.rs
    • /src/services/agent_execution_service.rs

Key Methods​

AgentConfig​

impl AgentConfig {
fn new(tenant_id: Uuid, name: String, agent_type: AgentType, provider: AIProvider) -> Self
fn default_capabilities(agent_type: AgentType) -> Vec<AgentCapability>
fn default_settings(provider: &AIProvider, agent_type: AgentType) -> AgentSettings
fn update_status(&mut self, status: AgentStatus)
fn add_capability(&mut self, capability: AgentCapability) -> bool
fn estimate_cost(&self, tokens: u32) -> f32
}

AgentInstance​

impl AgentInstance {
fn new(...) -> Self
fn transition_state(&mut self, new_state: InstanceState) -> Result<()>
fn assign_task(&mut self, task_id: Uuid) -> Result<()>
fn complete_task(&mut self) -> Result<()>
fn update_resources(&mut self, ...)
fn update_health(&mut self, is_healthy: bool, error: Option<String>)
fn should_terminate_for_inactivity(&self, timeout_minutes: i64) -> bool
}

AgentExecution​

impl AgentExecution {
fn new(...) -> Self
fn start(&mut self) -> Result<()>
fn mark_running(&mut self) -> Result<()>
fn complete(&mut self, output: ExecutionOutput) -> Result<()>
fn fail(&mut self, error: ExecutionError) -> Result<()>
fn cancel(&mut self) -> Result<()>
fn is_finished(&self) -> bool
fn duration_seconds(&self) -> Option<f64>
}

API Endpoints​

Agent Configuration Management​

  • POST /api/agents - Create new agent configuration
  • GET /api/agents/{agent_id} - Get agent details
  • PUT /api/agents/{agent_id} - Update agent configuration
  • DELETE /api/agents/{agent_id} - Delete agent (if no active instances)
  • GET /api/agents?type={type}&status={status} - List agents

Agent Instance Management​

  • POST /api/agents/{agent_id}/instances - Create new instance
  • GET /api/agent-instances/{instance_id} - Get instance details
  • PUT /api/agent-instances/{instance_id}/state - Update instance state
  • DELETE /api/agent-instances/{instance_id} - Terminate instance
  • GET /api/agent-instances?agent_id={id}&state={state} - List instances

Agent Execution Tracking​

  • GET /api/agent-executions/{execution_id} - Get execution details
  • GET /api/agent-executions?task_id={id}&status={status} - List executions
  • POST /api/agent-executions/{execution_id}/cancel - Cancel execution

Agent Teams​

  • POST /api/agent-teams - Create team
  • GET /api/agent-teams/{team_id} - Get team details
  • PUT /api/agent-teams/{team_id}/members - Update team members
  • POST /api/agent-teams/{team_id}/execute - Execute team workflow

Use Cases​

TDD Development Workflow​

1. TestWriter agent creates comprehensive test suite
2. Coder agent implements code to pass tests
3. Reviewer agent checks code quality
4. Security agent scans for vulnerabilities
5. QualityControl agent performs final checks

Architecture Design​

1. Architecture agent analyzes requirements
2. Generates ADR (Architecture Decision Record)
3. Creates system design diagrams
4. Documenter agent creates technical docs

Bug Fix Workflow​

1. Orchestrator agent analyzes bug report
2. TestWriter creates failing test case
3. Coder implements fix
4. Reviewer validates solution
5. Documenter updates relevant docs

Security Considerations​

Agent Isolation​

  • Each instance runs in isolated container
  • Limited network access (allowlisted endpoints)
  • No access to production data
  • Audit trail for all actions

Resource Limits​

  • Token limits per execution
  • Memory and CPU caps
  • Timeout enforcement
  • Cost tracking and limits

Access Control​

  • Agents inherit tenant isolation
  • API key rotation for providers
  • Encrypted storage of credentials
  • Role-based agent management

Performance Optimizations​

Instance Pooling​

  • Pre-warmed instances for common agent types
  • Automatic scaling based on load
  • Regional deployment for latency
  • Instance recycling after N executions

Caching​

  • Model response caching for similar inputs
  • Tool result caching
  • Context embedding reuse
  • Compiled prompt templates

Resource Management​

  • Automatic instance termination on idle
  • Resource usage monitoring
  • Cost optimization algorithms
  • Provider failover support

Monitoring & Observability​

Metrics​

  • Execution success/failure rates
  • Average execution duration
  • Token usage by agent type
  • Cost per task category
  • Instance utilization

Alerts​

  • High failure rate
  • Resource limit approaching
  • Provider API errors
  • Instance health degradation
  • Cost threshold exceeded

Future Enhancements​

Advanced Capabilities​

  1. Multi-modal Agents: Support for image/video processing
  2. Long-running Tasks: Checkpoint and resume support
  3. Agent Learning: Feedback incorporation for improvement
  4. Custom Agent Types: User-defined agent configurations

Integration Features​

  1. IDE Plugins: Direct agent invocation from IDEs
  2. CI/CD Integration: Agents in build pipelines
  3. External Tool Support: Broader tool ecosystem
  4. Agent Marketplace: Sharing agent configurations

Optimization​

  1. Fine-tuned Models: Task-specific model training
  2. Edge Deployment: Local agent execution
  3. Hybrid Execution: Mix of cloud and local agents
  4. Predictive Scaling: ML-based resource prediction

Last Updated: 2025-08-29 Version: 1.0