diff --git a/api/controllers/openapi/_models.py b/api/controllers/openapi/_models.py index fb9ad080f0..7b481a76a2 100644 --- a/api/controllers/openapi/_models.py +++ b/api/controllers/openapi/_models.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Any +from typing import Any, Literal from pydantic import BaseModel, Field @@ -96,7 +96,7 @@ class WorkflowRunData(BaseModel): id: str workflow_id: str status: str - outputs: dict[str, Any] = {} + outputs: dict[str, Any] = Field(default_factory=dict) error: str | None = None elapsed_time: float | None = None total_tokens: int | None = None @@ -108,5 +108,5 @@ class WorkflowRunData(BaseModel): class WorkflowRunResponse(BaseModel): workflow_run_id: str task_id: str - mode: str = "workflow" # echoed for CLI per-mode rendering — see endpoints.md L154 + mode: Literal["workflow"] = "workflow" # echoed for CLI per-mode rendering — see endpoints.md L154 data: WorkflowRunData diff --git a/api/tests/unit_tests/controllers/openapi/test_pagination_envelope.py b/api/tests/unit_tests/controllers/openapi/test_pagination_envelope.py index f75d0f39bd..71d9282b41 100644 --- a/api/tests/unit_tests/controllers/openapi/test_pagination_envelope.py +++ b/api/tests/unit_tests/controllers/openapi/test_pagination_envelope.py @@ -116,3 +116,9 @@ def test_response_models_dump_per_mode(): data=WorkflowRunData(id="r1", workflow_id="w1", status="succeeded"), ) assert wf.model_dump(mode="json")["data"]["status"] == "succeeded" + assert wf.model_dump(mode="json")["mode"] == "workflow" + comp = CompletionMessageResponse( + event="message", task_id="t2", id="m2", message_id="m2", + mode="completion", answer="ok", created_at=0, + ) + assert comp.model_dump(mode="json")["mode"] == "completion"