"""编排器节点对网关的最小依赖 Protocol（单点定义，DRY）。

仅依赖 `ww_llm_gateway.types`（无环）→ 各节点（review/generation/outline/style_extract）
共用此单一定义，不再每模块各自重复声明（见 memory/gotchas.md 更新）。
"""

from __future__ import annotations

from typing import Protocol

from ww_llm_gateway.types import LlmRequest, LlmResponse


class GatewayRun(Protocol):
    """编排器节点对网关的最小依赖——只需 `run`（注入真网关或 mock）。"""

    async def run(self, req: LlmRequest) -> LlmResponse: ...
