"""Extended task payload schemas for SysAdmin Agent automation. These schemas define the expected payload structure for each task type. Validation is performed agent-side; the orchestrator accepts any dict payload. """ from typing import Any from pydantic import BaseModel, Field class FileWritePayload(BaseModel): """ Payload for FILE_WRITE task type. Instructs the agent to write content to a file at the specified path. """ path: str = Field(..., description="Absolute path to the target file") content: str = Field(..., description="Content to write to the file") class EnvUpdatePayload(BaseModel): """ Payload for ENV_UPDATE task type. Instructs the agent to update key/value pairs in an .env file. Existing keys are updated; new keys are appended. """ path: str = Field(..., description="Absolute path to the .env file") updates: dict[str, str] = Field( ..., description="Key-value pairs to update or add" ) class DockerReloadPayload(BaseModel): """ Payload for DOCKER_RELOAD task type. Instructs the agent to reload a Docker Compose stack. Equivalent to: docker compose down && docker compose up -d """ compose_dir: str = Field( ..., description="Directory containing docker-compose.yml" ) class CompositeSubTask(BaseModel): """ A single sub-task within a COMPOSITE task. Represents one step in a multi-step automation sequence. """ task: str = Field(..., description="Task type (e.g., FILE_WRITE, ENV_UPDATE)") payload: dict[str, Any] = Field( default_factory=dict, description="Payload for this sub-task" ) class CompositePayload(BaseModel): """ Payload for COMPOSITE task type. Instructs the agent to execute a sequence of sub-tasks in order. If any sub-task fails, the sequence stops and the composite task fails. """ sequence: list[CompositeSubTask] = Field( ..., description="Ordered list of sub-tasks to execute" )