feat(workflow): add edge-tool routing and realtime runtime

This commit is contained in:
Xin Wang
2026-08-04 22:29:04 +08:00
parent 1902ffc240
commit 59588ba88d
25 changed files with 1952 additions and 107 deletions

View File

@@ -227,6 +227,7 @@ def bind_realtime_pipeline_events(
transport,
worker,
realtime,
brain,
text_input,
greeting: str,
) -> None:
@@ -251,10 +252,16 @@ def bind_realtime_pipeline_events(
await queue_transcript("user", user_input.text)
if user_input.run_immediately and user_input.interrupt:
await realtime.interrupt()
await realtime.send_text(
user_input.text,
run_immediately=user_input.run_immediately,
handled = (
await brain.on_user_turn_end(user_input.text)
if brain.spec.type == "workflow"
else False
)
if not handled:
await realtime.send_text(
user_input.text,
run_immediately=user_input.run_immediately,
)
await worker.queue_frame(
OutputTransportMessageUrgentFrame(
message={
@@ -267,6 +274,8 @@ def bind_realtime_pipeline_events(
@transport.event_handler("on_client_connected")
async def on_client_connected(_transport, _client):
await brain.on_connected(greeting_pending=bool(greeting))
await brain.on_client_ready()
if greeting:
await realtime.speak(greeting)