Spaces:
Running
Running
| """Pydantic schemas for graph API requests and responses.""" | |
| from pydantic import BaseModel, Field | |
| from .agent import AgentCreateRequest | |
| class Position(BaseModel): | |
| """Node position on the canvas.""" | |
| x: float = 0.0 | |
| y: float = 0.0 | |
| class EdgeDefinition(BaseModel): | |
| """Definition of a graph edge.""" | |
| source: str | |
| target: str | |
| weight: float = 1.0 | |
| condition: str | None = None # Named condition: "always", "source_success", etc. | |
| label: str | None = None | |
| class GraphSaveRequest(BaseModel): | |
| """Request body for creating/saving a graph.""" | |
| name: str | |
| description: str = "" | |
| agents: list[AgentCreateRequest] = Field(default_factory=list) | |
| edges: list[EdgeDefinition] = Field(default_factory=list) | |
| positions: dict[str, Position] = Field(default_factory=dict) | |
| start_node: str | None = None | |
| end_node: str | None = None | |
| task_query: str = "" | |
| class GraphResponse(BaseModel): | |
| """Graph response returned by the API.""" | |
| graph_id: str | |
| name: str | |
| description: str = "" | |
| agents: list[AgentCreateRequest] = Field(default_factory=list) | |
| edges: list[EdgeDefinition] = Field(default_factory=list) | |
| positions: dict[str, Position] = Field(default_factory=dict) | |
| start_node: str | None = None | |
| end_node: str | None = None | |
| task_query: str = "" | |
| created_at: str = "" | |
| updated_at: str = "" | |
| validation_errors: list[str] = Field(default_factory=list) | |
| class GraphListItem(BaseModel): | |
| """Minimal graph info for listing.""" | |
| graph_id: str | |
| name: str | |
| description: str = "" | |
| agent_count: int = 0 | |
| edge_count: int = 0 | |
| created_at: str = "" | |
| updated_at: str = "" | |
| class GraphValidationResponse(BaseModel): | |
| """Response from graph validation.""" | |
| is_valid: bool | |
| errors: list[str] = Field(default_factory=list) | |
| warnings: list[str] = Field(default_factory=list) | |
| execution_order: list[str] = Field(default_factory=list) | |