it0/packages/services/voice-service
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
..
src feat(voice): route instance voice calls through OpenClaw bridge 2026-03-10 10:00:15 -07:00
Dockerfile fix: upgrade faster-whisper to 1.2.1 to resolve av build failure 2026-02-19 16:40:04 -08:00
requirements.txt fix: use livekit-api package for voice-service token endpoint 2026-02-28 09:49:11 -08:00