| 123456789101112131415161718192021222324252627 |
- """HTTP 流适配器:编码事件并传播断连,不执行 Agent 业务逻辑。"""
- from contextlib import aclosing
- from typing import AsyncIterator
- from runtime.engine import Execution, ExecutionRequest
- from runtime.interrupts import pending_interrupts # 兼容旧导入
- from api.sse_events import serialize_event
- async def stream_sse(execution: Execution) -> AsyncIterator[str]:
- async with aclosing(execution.events()) as events:
- async for event in events:
- yield serialize_event(event)
- # 旧内部调用入口保留;新入口直接使用 runtime.execution 和 stream_sse。
- StreamRequest = ExecutionRequest
- class ChatStream(Execution):
- def generate(self) -> AsyncIterator[str]:
- return stream_sse(self)
- def sse_headers(session_id: str) -> dict[str, str]:
- return {"Cache-Control": "no-cache", "Connection": "keep-alive",
- "X-Accel-Buffering": "no", "X-Session-Id": session_id}
|