from __future__ import annotations from typing import Any, Literal from pydantic import BaseModel, Field class RunError(BaseModel): code: str message: str class ScenarioRunRequest(BaseModel): scenario_id: str = "news_source_discovery_v1" input: dict[str, Any] = Field(default_factory=dict) class ScenarioRunBase(BaseModel): scenario_id: str status: Literal["success", "failed"] input: dict[str, Any] class ScenarioRunFailed(ScenarioRunBase): status: Literal["failed"] = "failed" scenario_name: str | None = None error: RunError class ScenarioRunSuccess(ScenarioRunBase): status: Literal["success"] = "success" workflow_name: str scenario_name: str result: dict[str, Any] run_id: str | None = None session_id: str | None = None ScenarioRunResponse = ScenarioRunSuccess | ScenarioRunFailed