it0/it0_app/lib/features/agent_call
hailin 54257ac944 feat(voice): route instance voice calls through OpenClaw bridge
When a user places a voice call from an instance chat page (AgentInstanceChatPage),
the call is now routed through the OpenClaw bridge instead of iAgent's
VoiceSessionManager SDK loop. iAgent voice behavior is completely unchanged.

Changes:
- Flutter: ChatPage accepts agentInstanceId, passes to AgentCallPage
- Flutter: AgentCallPage sends instance_id in livekit/token request body
- Flutter: AgentInstanceChatPage passes instance.id as agentInstanceId
- voice-service: livekit_token.py includes instance_id in dispatch metadata
- voice-agent: agent.py reads instance_id from metadata, passes to LLM
- voice-agent: agent_llm.py stores _instance_id, sends instanceId in voice/start
- agent-service voice/start: stores instanceId in session metadata; skips
  VoiceSessionManager for instance mode (iAgent path unchanged)
- agent-service voice/inject: detects instanceId in session metadata and
  fire-and-forgets to OpenClaw bridge; callback via openclaw-app-callback
  emits text WS events that voice-agent collects for TTS playback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 10:00:15 -07:00
..
data feat: 完成 iAgent App 三大功能 + 修复租户上下文 2026-02-23 01:10:52 -08:00
domain Initial commit: IT0 AI-powered server cluster operations platform 2026-02-08 22:54:37 -08:00
presentation feat(voice): route instance voice calls through OpenClaw bridge 2026-03-10 10:00:15 -07:00