from pydantic import BaseModel, Field
from typing import Optional, List, Literal


class CommandRequest(BaseModel):
    agent: str
    action: str
    params: Optional[dict] = None


class ApprovalRequest(BaseModel):
    agent: str
    task_id: str
    approved: bool
    feedback: Optional[str] = None


class AgentConfigUpdate(BaseModel):
    enabled: Optional[bool] = None
    schedule_config: Optional[dict] = None
    custom_config: Optional[dict] = None


class PriceAlertConfig(BaseModel):
    symbol: str
    name: str
    target_price: float
    direction: str  # "above" or "below"


class ComposeCommand(BaseModel):
    prompt: str
    style: Optional[str] = None
    model: Optional[str] = "V4"
    instrumental: Optional[bool] = False
