0fbd7dce1a
Подключен верхний HTTP-слой с POST /api/runs и обновлены схемы/README, чтобы запуск сценариев шел через единый API-контракт поверх Agno workflow.
40 lines
866 B
Python
40 lines
866 B
Python
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
|