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,
        }