21 lines
667 B
Python
21 lines
667 B
Python
"""WebEventSink:实现 §7 A 的 sink 协议,把 AgentLoop.emit 桥到 RunBroker。
|
|
|
|
每次 run 一个 sink 实例,绑死 run_id。`emit({type, ...})` 直接转 broker.emit(run_id, event)。
|
|
sink 实例由 web 层在启 run 时创建,传进 AgentLoop;loop 完全不知 web 存在(§5 Less Scaffolding)。
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
from uuid import UUID
|
|
|
|
from .broker import RunBroker
|
|
|
|
|
|
class WebEventSink:
|
|
def __init__(self, broker: RunBroker, run_id: UUID) -> None:
|
|
self._broker = broker
|
|
self._run_id = run_id
|
|
|
|
def emit(self, event: dict[str, Any]) -> None:
|
|
self._broker.emit(self._run_id, event)
|