Add on_client_ready method to BaseBrain and WorkflowBrain

- Implement on_client_ready in BaseBrain to handle client-visible state after the app message channel is ready.
- Extend WorkflowBrain with on_client_ready to replay state that may have been emitted before WebRTC data was ready.
- Update pipeline to call on_client_ready when a client connects.
- Enhance tests to verify the correct behavior of on_client_ready in WorkflowBrain.
This commit is contained in:
Xin Wang
2026-07-14 11:20:18 +08:00
parent f74040adf3
commit 2d6ff5b7aa
4 changed files with 48 additions and 0 deletions

View File

@@ -123,6 +123,19 @@ class WorkflowBrain(BaseBrain):
await self._manager.initialize(node_config)
logger.info(f"工作流模式启用: 当前节点={self._manager.current_node}")
async def on_client_ready(self) -> None:
"""Replay state that may have been emitted before WebRTC data was ready."""
current_node = (
str(self._manager.current_node)
if self._manager and self._manager.current_node
else self._engine.start_id
)
await self._emit_node_active(current_node)
await self._emit_variables(
reason="client_ready",
node_id=current_node,
)
def record_user_message(self, content: str) -> None:
if content and not self._ended:
self._store.record("user", content)