- Introduced dynamic_variables field in BatchRunCreate schema to support flexible input types.
- Added BatchStartupResult schema to encapsulate startup state, including greeting and auto-confirmed messages.
- Updated BatchRunCaseOut schema to include startup results, enhancing the structure for test run outputs.
- Enhanced test run orchestration to prepare and validate dynamic configurations, ensuring isolated variable management across test cases.
- Implemented changes in the frontend to accommodate new data structures for improved test case execution and result tracking.
- Added support for tracking call end states (pending, speaking, cancelled) in CallEndCoordinator.
- Introduced a callback mechanism for state changes to allow external handling of call end states.
- Updated pipeline and tests to accommodate new state management features, ensuring proper handling of call end scenarios.
- Added support for public Realtime API, including new routes for managing API keys and handling WebRTC connections.
- Introduced RealtimeApiKey model and associated CRUD operations for admin management of API keys.
- Implemented authentication mechanisms for API keys and client secrets.
- Enhanced environment configuration with new secrets for Realtime API.
- Created OpenAIRealtime session management and event processing for real-time interactions.
- Updated schemas and settings to accommodate new features and ensure compatibility with existing systems.
The CallEndCoordinator.observe() decremented _tracked_speeches on every
BotStoppedSpeakingFrame, not just the one corresponding to tracked
(end-node) speech. When a preceding LLM utterance finished between
track_speech() and the actual fixed-speech playback, the counter was
consumed prematurely, ending the call before the end-node message played.
Gate the decrement behind a _current_speech_is_tracked flag that is set
only when BotStartedSpeakingFrame follows a pending tracked-speech start.
Co-Authored-By: Claude <noreply@anthropic.com>