Spaces:
Paused
Paused
File size: 2,733 Bytes
4a2ab42 82b2026 4a2ab42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | """
AI Agent Models
Database models for AI agent drafts and approvals.
"""
from datetime import datetime
from uuid import uuid4
from sqlalchemy import JSON, Column, DateTime, Float, String, Text
from core.models.base import Base
class AgentDraft(Base):
"""Model for AI-generated agent drafts"""
__tablename__ = "agent_drafts"
id = Column(String(36), primary_key=True, default=lambda: str(uuid4()))
agent_name = Column(String(100), nullable=False)
draft_type = Column(String(50), nullable=False)
title = Column(Text, nullable=False)
content = Column(Text, nullable=False)
target_entity = Column(String(255))
confidence = Column(Float, default=0.0)
status = Column(String(50), default="draft")
reviewer = Column(String(100))
tags = Column(JSON, default=list)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
def to_dict(self):
return {
"id": self.id,
"agentName": self.agent_name,
"draftType": self.draft_type,
"title": self.title,
"content": self.content,
"targetEntity": self.target_entity,
"confidence": self.confidence,
"status": self.status,
"reviewer": self.reviewer,
"tags": self.tags,
"createdAt": self.created_at.isoformat() if self.created_at else None,
"lastModified": self.updated_at.isoformat() if self.updated_at else None,
}
class AgentApproval(Base):
"""Model for AI agent approval requests"""
__tablename__ = "agent_approvals"
id = Column(String(36), primary_key=True, default=lambda: str(uuid4()))
agent_name = Column(String(100), nullable=False)
action = Column(String(100), nullable=False)
target = Column(String(255), nullable=False)
confidence = Column(Float, nullable=False)
status = Column(String(50), default="pending")
risk = Column(String(20))
details = Column(Text)
approved_by = Column(String(100))
approved_at = Column(DateTime)
created_at = Column(DateTime, default=datetime.utcnow)
def to_dict(self):
return {
"id": self.id,
"agentName": self.agent_name,
"action": self.action,
"target": self.target,
"confidence": self.confidence,
"status": self.status,
"risk": self.risk,
"details": self.details,
"approvedBy": self.approved_by,
"approvedAt": self.approved_at.isoformat() if self.approved_at else None,
"timestamp": self.created_at.isoformat() if self.created_at else None,
}
|