Create AgentInstance entity and CRUD operations #25

Closed
opened 2025-12-29 23:47:12 +00:00 by cardosofelipe · 0 comments

Description

Implement AgentInstance entity representing spawned agents working on projects.

Requirements

Entity Fields

class AgentInstance(Base):
    id: UUID
    agent_type_id: UUID  # FK to AgentType
    project_id: UUID  # FK to Project

    # Instance State
    status: AgentStatus  # IDLE, WORKING, WAITING, PAUSED, TERMINATED
    current_task: Optional[str]  # Description of current work

    # Memory (per SPIKE-002)
    short_term_memory: dict  # Current context, clears between tasks
    long_term_memory_ref: Optional[str]  # Reference to RAG collection

    # Session
    session_id: Optional[str]  # Current active session
    last_activity_at: Optional[datetime]

    # Metrics
    tasks_completed: int
    tokens_used: int
    cost_incurred: float

    # Timestamps
    created_at: datetime
    updated_at: datetime
    terminated_at: Optional[datetime]

Enums

class AgentStatus(str, Enum):
    IDLE = "idle"
    WORKING = "working"
    WAITING = "waiting"  # Waiting for human approval
    PAUSED = "paused"
    TERMINATED = "terminated"

CRUD Operations

  • create(db, obj_in) -> AgentInstance
  • get(db, id: UUID) -> Optional[AgentInstance]
  • get_by_project(db, project_id: UUID) -> List[AgentInstance]
  • get_active_by_project(db, project_id: UUID) -> List[AgentInstance]
  • update_status(db, id: UUID, status: AgentStatus) -> AgentInstance
  • update_metrics(db, id: UUID, tokens: int, cost: float) -> AgentInstance
  • terminate(db, id: UUID) -> AgentInstance

Tests

  • CRUD operations
  • Status transitions
  • Metrics accumulation
  • Project relationship

Acceptance Criteria

  • Model with all fields
  • Migration created
  • CRUD operations
  • Status transition validation
  • Pydantic schemas
  • Unit tests with >90% coverage

Technical Notes

  • Reference: ADR-002 (Agent orchestration)
  • Reference: SPIKE-007 (Inter-agent communication)
  • short_term_memory should be cleared on task completion

Dependencies

  • Depends on: #23 (Project), #24 (AgentType)

Assignable To

backend-engineer agent

## Description Implement AgentInstance entity representing spawned agents working on projects. ## Requirements ### Entity Fields ```python class AgentInstance(Base): id: UUID agent_type_id: UUID # FK to AgentType project_id: UUID # FK to Project # Instance State status: AgentStatus # IDLE, WORKING, WAITING, PAUSED, TERMINATED current_task: Optional[str] # Description of current work # Memory (per SPIKE-002) short_term_memory: dict # Current context, clears between tasks long_term_memory_ref: Optional[str] # Reference to RAG collection # Session session_id: Optional[str] # Current active session last_activity_at: Optional[datetime] # Metrics tasks_completed: int tokens_used: int cost_incurred: float # Timestamps created_at: datetime updated_at: datetime terminated_at: Optional[datetime] ``` ### Enums ```python class AgentStatus(str, Enum): IDLE = "idle" WORKING = "working" WAITING = "waiting" # Waiting for human approval PAUSED = "paused" TERMINATED = "terminated" ``` ### CRUD Operations - `create(db, obj_in) -> AgentInstance` - `get(db, id: UUID) -> Optional[AgentInstance]` - `get_by_project(db, project_id: UUID) -> List[AgentInstance]` - `get_active_by_project(db, project_id: UUID) -> List[AgentInstance]` - `update_status(db, id: UUID, status: AgentStatus) -> AgentInstance` - `update_metrics(db, id: UUID, tokens: int, cost: float) -> AgentInstance` - `terminate(db, id: UUID) -> AgentInstance` ### Tests - CRUD operations - Status transitions - Metrics accumulation - Project relationship ## Acceptance Criteria - [ ] Model with all fields - [ ] Migration created - [ ] CRUD operations - [ ] Status transition validation - [ ] Pydantic schemas - [ ] Unit tests with >90% coverage ## Technical Notes - Reference: ADR-002 (Agent orchestration) - Reference: SPIKE-007 (Inter-agent communication) - short_term_memory should be cleared on task completion ## Dependencies - Depends on: #23 (Project), #24 (AgentType) ## Assignable To backend-engineer agent
cardosofelipe added the backenddatabasephase-1 labels 2025-12-29 23:49:58 +00:00
Sign in to join this conversation.