from pydantic import BaseModel from typing import Optional, Dict, Any, List from enum import Enum class ActionType(str, Enum): GET_PRICE = "GET_PRICE" GET_NEWS = "GET_NEWS" BUY = "BUY" SELL = "SELL" BACKTEST = "BACKTEST" class AgentAction(BaseModel): type: ActionType symbol: Optional[str] = "AAPL" amount: Optional[int] = 0 explanation: Optional[str] = None strategy: Optional[str] = None class MarketObservation(BaseModel): timestamp: str price: float balance: float holdings: int portfolio_value: float last_news: Optional[Dict[str, Any]] = None backtest_results: Optional[Dict[str, float]] = None class EnvironmentState(BaseModel): current_step: int total_steps: int observation: MarketObservation tasks_completed: List[str]