models.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from __future__ import annotations
  2. from datetime import datetime
  3. from enum import Enum
  4. from typing import Any, Dict, List, Optional
  5. from uuid import uuid4
  6. from pydantic import BaseModel, Field
  7. class AgentKind(str, Enum):
  8. chat = "chat"
  9. planner = "planner"
  10. research = "research"
  11. tool = "tool"
  12. class AgentProfile(BaseModel):
  13. agent_id: str
  14. name: str
  15. kind: AgentKind
  16. description: str
  17. system_prompt: str = ""
  18. tools: List[str] = Field(default_factory=list)
  19. memory_policy: str = "session"
  20. enabled: bool = True
  21. class AgentRequest(BaseModel):
  22. input: str = Field(..., min_length=1)
  23. context: Dict[str, Any] = Field(default_factory=dict)
  24. task_id: Optional[str] = None
  25. class AgentResponse(BaseModel):
  26. agent_id: str
  27. output: str
  28. artifacts: Dict[str, Any] = Field(default_factory=dict)
  29. events: List[Dict[str, Any]] = Field(default_factory=list)
  30. class TaskStatus(str, Enum):
  31. pending = "pending"
  32. running = "running"
  33. completed = "completed"
  34. failed = "failed"
  35. class TaskCreateRequest(BaseModel):
  36. title: str = Field(..., min_length=1)
  37. input: str = Field(..., min_length=1)
  38. agent_id: str = "general_chat"
  39. metadata: Dict[str, Any] = Field(default_factory=dict)
  40. class TaskRecord(BaseModel):
  41. task_id: str = Field(default_factory=lambda: uuid4().hex)
  42. title: str
  43. input: str
  44. agent_id: str
  45. status: TaskStatus = TaskStatus.pending
  46. output: Optional[str] = None
  47. artifacts: Dict[str, Any] = Field(default_factory=dict)
  48. metadata: Dict[str, Any] = Field(default_factory=dict)
  49. error: Optional[str] = None
  50. created_at: datetime = Field(default_factory=datetime.now)
  51. updated_at: datetime = Field(default_factory=datetime.now)
  52. class BatchRunRequest(BaseModel):
  53. requests: Dict[str, AgentRequest] = Field(
  54. ...,
  55. description="Mapping from agent_id to request payload.",
  56. )