From 699bba3a30f4c5d7a203d19d2ae0e189670fe124 Mon Sep 17 00:00:00 2001 From: Roberto Date: Sat, 16 May 2026 03:10:04 +0200 Subject: [PATCH] feat(schemas): add scout_proposal + scout_proposal_ack WS frame types --- app/schemas/__init__.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py index 8d8e771..67c835d 100644 --- a/app/schemas/__init__.py +++ b/app/schemas/__init__.py @@ -98,6 +98,9 @@ class WsFrameType(str, Enum): contextual_request = "contextual_request" contextual_scope_update = "contextual_scope_update" contextual_scope_ack = "contextual_scope_ack" + # ── v9 scout proposal frame types ──────────────────────────────── + SCOUT_PROPOSAL = "scout_proposal" + SCOUT_PROPOSAL_ACK = "scout_proposal_ack" class WsToolCall(BaseModel): @@ -275,3 +278,25 @@ class ScoutRunLogResponse(BaseModel): # ── Chatbot Journey ─────────────────────────────────────────────────── + +# ── Scout Proposal Frame Models ─────────────────────────────────────── + +class ScoutProposalPayload(BaseModel): + id: str + scout_id: str + source_type: str + source_msg_ref: str + raw_subject: str | None = None + raw_snippet: str | None = None + category: Literal["unprocessed"] = "unprocessed" + payload: dict | None = None + + +class ScoutProposalFrame(BaseModel): + type: Literal[WsFrameType.SCOUT_PROPOSAL] + proposal: ScoutProposalPayload + + +class ScoutProposalAckFrame(BaseModel): + type: Literal[WsFrameType.SCOUT_PROPOSAL_ACK] + proposal_id: str