Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from typing import List, Dict, Optional, Union, Literal, Any | |
| # --- ORCHESTRATION --- | |
| class UserGoal(BaseModel): | |
| user_id: str | |
| project_id: str | |
| goal_text: str | |
| roblox_user_id: Optional[str] = "0" | |
| image_base64: Optional[str] = Field(None, description="Base64 encoded context image.") | |
| class RecallRequest(BaseModel): | |
| project_id: str | |
| user_feedback: Optional[str] = "What is the next step?" | |
| class ResetRequest(BaseModel): | |
| junior_instance_id: str | |
| supervisor_instance_id: str | |
| reason: str | |
| # --- FEEDBACK LOOP --- | |
| class SceneObjectState(BaseModel): | |
| """Represents a snapshot of an object currently in Roblox.""" | |
| id: str # The Name in Roblox | |
| class_name: str | |
| position: Dict[str, float] | |
| size: Dict[str, float] | |
| parent_name: str | |
| class ProjectFeedback(BaseModel): | |
| """Data sent FROM the Plugin TO the Orchestrator.""" | |
| project_id: str | |
| message: str | |
| scene_snapshot: List[SceneObjectState] = [] | |
| task_id_completed: Optional[str] = None | |
| status: Literal["SUCCESS", "FAILED"] = "SUCCESS" | |
| # --- MATTER FORMAT --- | |
| class Vector3(BaseModel): | |
| x: float = 0.0 | |
| y: float = 0.0 | |
| z: float = 0.0 | |
| class BuildPayload(BaseModel): | |
| id: str | |
| class_name: str = "Part" | |
| position: Vector3 | |
| rotation: Vector3 = Vector3() | |
| size: Vector3 | |
| color_hex: str = "#A3A2A5" | |
| anchored: bool = True | |
| transparency: float = 0.0 | |
| material: str = "Plastic" | |
| mesh_id: Optional[str] = None | |
| texture_id: Optional[str] = None | |
| class CSGPayload(BaseModel): | |
| operation: Literal["Union", "Subtract"] | |
| target_id: str | |
| tool_ids: List[str] | |
| class Attribute(BaseModel): | |
| name: str | |
| type: Literal["String", "Number", "Boolean", "Color3"] | |
| value: Any | |
| class ScriptPayload(BaseModel): | |
| name: str | |
| class_name: Literal["Script", "LocalScript", "ModuleScript"] | |
| parent: str | |
| attributes: List[Attribute] = [] | |
| source_code: str | |
| class RiggingCommand(BaseModel): | |
| part0_id: str | |
| part1_id: str | |
| joint_type: Literal["Weld", "Motor6D", "HingeConstraint", "BallSocketConstraint"] | |
| position: Vector3 | |
| # --- PROJECT FLOW --- | |
| class TaskNode(BaseModel): | |
| task_id: str = Field(default_factory=lambda: "pending_id") | |
| title: str | |
| role_required: Literal[ | |
| "PROJECT_MANAGER", | |
| "SUPERVISOR_WORLD", | |
| "SUPERVISOR_SCRIPT", | |
| "3D_ARTIST", | |
| "CONCEPT_ARTIST", | |
| "SCRIPTING_ENGINEER", | |
| "ERRANDS" | |
| ] | |
| instruction: str | |
| status: Literal["PENDING", "IN_PROGRESS", "COMPLETED", "FAILED"] = "PENDING" | |
| assigned_instance_id: Optional[str] = None | |
| subtasks: List['TaskNode'] = [] | |
| class ProjectFlow(BaseModel): | |
| project_id: str | |
| is_finished: bool = False | |
| next_task: Optional[TaskNode] = None | |
| # --- COMMUNICATION --- | |
| class AgentMessage(BaseModel): | |
| id: str | |
| from_agent: str | |
| to_agents: List[str] | |
| role: str | |
| content: str | |
| image_base64: Optional[str] = None | |
| class GenerationRequest(BaseModel): | |
| agent_type: str | |
| agent_instance_id: str | |
| conversation_partner_id: str | |
| prompt: str | |
| image_base64: Optional[str] = None | |
| class ImageGenerationRequest(BaseModel): | |
| agent_instance_id: str | |
| prompt: str |