2026-04-04 00:56:03 +08:00
|
|
|
from datetime import datetime
|
|
|
|
|
from typing import Any
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, Field
|
2026-03-21 10:13:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentCreate(BaseModel):
|
|
|
|
|
name: str
|
|
|
|
|
role: str
|
|
|
|
|
description: str | None = None
|
|
|
|
|
system_prompt: str
|
2026-04-04 00:56:03 +08:00
|
|
|
spawn_permission: bool = False
|
2026-03-21 10:13:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentOut(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
name: str
|
|
|
|
|
role: str
|
|
|
|
|
description: str | None
|
|
|
|
|
is_active: bool
|
|
|
|
|
is_default: bool
|
|
|
|
|
|
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentMessageOut(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
agent_id: str
|
|
|
|
|
conversation_id: str
|
|
|
|
|
role: str
|
|
|
|
|
content: str
|
|
|
|
|
|
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentStats(BaseModel):
|
|
|
|
|
agent_id: str
|
|
|
|
|
call_count: int
|
|
|
|
|
current_task: str | None
|
|
|
|
|
status: str # active | idle | disabled
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentConfigUpdate(BaseModel):
|
|
|
|
|
name: str | None = None
|
|
|
|
|
description: str | None = None
|
|
|
|
|
system_prompt: str | None = None
|
|
|
|
|
enabled: bool | None = None
|
2026-03-29 20:31:13 +08:00
|
|
|
selected_skill_ids: list[str] | None = None
|
2026-03-21 10:13:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentConfigOut(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
name: str
|
|
|
|
|
role: str
|
|
|
|
|
description: str | None
|
|
|
|
|
system_prompt: str
|
|
|
|
|
enabled: bool
|
|
|
|
|
is_active: bool
|
2026-03-29 20:31:13 +08:00
|
|
|
selected_skill_ids: list[str]
|
2026-03-21 10:13:29 +08:00
|
|
|
|
|
|
|
|
model_config = {"from_attributes": True}
|
2026-04-04 00:56:03 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityEventOut(BaseModel):
|
|
|
|
|
event_id: str
|
|
|
|
|
event_type: str
|
|
|
|
|
timestamp: datetime
|
|
|
|
|
conversation_id: str | None = None
|
|
|
|
|
agent_id: str | None = None
|
|
|
|
|
sub_commander_id: str | None = None
|
|
|
|
|
task_id: str | None = None
|
|
|
|
|
parent_task_id: str | None = None
|
|
|
|
|
child_task_id: str | None = None
|
|
|
|
|
thread_id: str | None = None
|
|
|
|
|
message_id: str | None = None
|
|
|
|
|
interrupt_id: str | None = None
|
|
|
|
|
recovery_id: str | None = None
|
|
|
|
|
payload: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
severity: str = "info"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityEventsResponse(BaseModel):
|
|
|
|
|
conversation_id: str
|
|
|
|
|
total: int
|
|
|
|
|
limit: int
|
|
|
|
|
offset: int
|
|
|
|
|
items: list[AgentVisibilityEventOut]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityTaskSummaryOut(BaseModel):
|
|
|
|
|
task_id: str
|
|
|
|
|
role: str | None = None
|
|
|
|
|
owner_agent_id: str | None = None
|
|
|
|
|
status: str | None = None
|
|
|
|
|
summary: str | None = None
|
|
|
|
|
evidence_count: int = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityTopologyNodeOut(BaseModel):
|
|
|
|
|
agent_id: str
|
|
|
|
|
role: str | None = None
|
|
|
|
|
parent_agent_id: str | None = None
|
|
|
|
|
source: str
|
|
|
|
|
task_count: int = 0
|
|
|
|
|
completed_task_count: int = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityTopologyOut(BaseModel):
|
|
|
|
|
conversation_id: str
|
|
|
|
|
root_agent_id: str | None = None
|
|
|
|
|
current_agent: str | None = None
|
|
|
|
|
nodes: list[AgentVisibilityTopologyNodeOut]
|
|
|
|
|
edges: list[dict[str, str]]
|
|
|
|
|
tasks: list[AgentVisibilityTaskSummaryOut]
|
|
|
|
|
task_hierarchy: dict[str, list[str]] = Field(default_factory=dict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityEvidenceOut(BaseModel):
|
|
|
|
|
conversation_id: str
|
|
|
|
|
task_id: str
|
|
|
|
|
task: dict[str, Any] | None = None
|
|
|
|
|
result: dict[str, Any] | None = None
|
|
|
|
|
tool_outcomes: list[dict[str, Any]] = Field(default_factory=list)
|
|
|
|
|
verifier: dict[str, Any]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityThreadMessageOut(BaseModel):
|
|
|
|
|
message_id: str
|
|
|
|
|
thread_id: str
|
|
|
|
|
from_agent_id: str
|
|
|
|
|
to_agent_id: str
|
|
|
|
|
task_id: str | None = None
|
|
|
|
|
reply_to_message_id: str | None = None
|
|
|
|
|
message_type: str
|
|
|
|
|
content_summary: str
|
|
|
|
|
created_at: datetime
|
|
|
|
|
payload: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityThreadOut(BaseModel):
|
|
|
|
|
conversation_id: str
|
|
|
|
|
thread_id: str
|
|
|
|
|
total: int
|
|
|
|
|
items: list[AgentVisibilityThreadMessageOut]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AgentVisibilityVerifierOut(BaseModel):
|
|
|
|
|
conversation_id: str
|
|
|
|
|
status: str | None = None
|
|
|
|
|
summary: str | None = None
|
|
|
|
|
evidence: list[dict[str, Any]] = Field(default_factory=list)
|