Spaces:
Sleeping
Sleeping
File size: 1,951 Bytes
3193174 | 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 | """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)
|