from typing import Any from pydantic import BaseModel, Field from app.core.constants import ActorValue from app.modules.ai_agent.constants import AIDefault, AIRiskPreference from app.modules.audit.constants import AuditSource class AIAskRequest(BaseModel): prompt: str context: dict[str, Any] = Field(default_factory=dict) actor: str = ActorValue.API source: str = AuditSource.API class AIAskResponse(BaseModel): provider: str answer: str raw: dict[str, Any] = Field(default_factory=dict) class OpenClawToolInvokeRequest(BaseModel): tool: str action: str = AIDefault.ACTION_JSON args: dict[str, Any] = Field(default_factory=dict) session_key: str = AIDefault.SESSION_KEY_MAIN actor: str = ActorValue.API class DraftPolicyRequest(BaseModel): title: str policy_type: str requirements: list[str] actor: str = ActorValue.API class InvestmentResearchRequest(BaseModel): symbol_or_topic: str risk_preference: str = AIRiskPreference.BALANCED actor: str = ActorValue.API