Nova Sonic sessions have an AWS-imposed ~8-minute time limit. This adds transparent session continuation that rotates sessions in the background before the limit is reached, preserving conversation context with no user-perceptible interruption. Implementation follows the AWS reference architecture: - Monitor loop detects when session age exceeds threshold - On assistant AUDIO contentStart: start buffering user audio, create next session (sessionStart + promptStart + system instruction) - Track SPECULATIVE/FINAL text counts as completion signal - On completion signal: send conversation history + audioInputStart + buffered audio to next session, then promote immediately - Close old session in background (non-blocking) - Dead session detection: recreate next session if idle >30s Key design decisions: - Session continuation enabled by default (fundamental for long conversations) - Conversation history tracked in real-time via _sc_conversation_history (independent of pipeline context aggregator which updates asynchronously) - Completion signal check in _handle_content_end_event (after history update) to ensure latest text is included in handoff - Rolling audio buffer (default 3s) captures user audio during transition - transition_threshold_seconds capped at 420s (7min) for safety margin - Unified event methods (_send_text_event, _send_client_event, etc.) accept optional stream/prompt_name params, eliminating duplicate SC methods Also adds: - SessionContinuationParams config (enabled, threshold, buffer, timeout)
8.4 KiB
8.4 KiB