Agents 0.0.2
Edge AI Agents SDK
Loading...
Searching...
No Matches
agents::ILiveClient Class Referenceabstract

Abstract interface for live real-time AI clients. More...

#include <ilive_client.h>

Classes

struct  Callbacks
 Callbacks for live client events. More...
 

Public Types

enum class  ProtocolStrategy {
  PERFORMANCE ,
  COMPATIBILITY ,
  RELIABILITY ,
  CUSTOM
}
 Protocol selection strategies. More...
 

Public Member Functions

virtual bool connect ()=0
 Connect to the live AI service.
 
virtual void close ()=0
 Close the connection to the live AI service.
 
virtual bool isConnected () const =0
 Check if currently connected.
 
virtual TransportProtocol getTransportProtocol () const =0
 Get the current transport protocol.
 
virtual bool sendAudio (const void *samples, size_t num_samples, const AudioFormat &format)=0
 Send audio data with specified format.
 
virtual bool sendText (const String &text)=0
 Send text input to the AI.
 
virtual bool sendTurnComplete ()=0
 Signal completion of the current turn.
 
virtual void setCallbacks (const Callbacks &callbacks)=0
 Set event callbacks.
 
virtual const LiveSessionConfiggetConfig () const =0
 Get the current session configuration.
 
virtual bool sendMessage (const String &text)
 Send a complete user message (text + turn completion)
 
virtual bool sendAudioAndComplete (const int16_t *samples, size_t num_samples, int sample_rate_hz)
 Send audio data and complete the turn.
 

Static Public Member Functions

static std::unique_ptr< ILiveClientcreate (const String &api_key, const LiveSessionConfig &config)
 Create a client (single simple factory)
 
static std::vector< TransportProtocolgetSupportedProtocols ()
 Get supported protocols for this provider.
 
static bool isProtocolSupported (TransportProtocol protocol)
 Check if a protocol is supported by this provider.
 
static TransportProtocol getRecommendedProtocol (const String &use_case="general")
 Get the recommended protocol for a given use case.
 

Detailed Description

Abstract interface for live real-time AI clients.

This interface provides a common abstraction for different real-time AI providers and transport protocols. It focuses on core functionality that is truly common across all implementations.

Note
Provider-specific features are available through concrete implementations and can be accessed via dynamic_cast when needed.

Member Enumeration Documentation

◆ ProtocolStrategy

Protocol selection strategies.

These strategies help choose the best transport protocol based on the intended use case.

Enumerator
PERFORMANCE 

Prioritize low latency (WebRTC preferred)

COMPATIBILITY 

Prioritize compatibility (WebSocket preferred)

RELIABILITY 

Prioritize reliability (WebSocket with fallback)

CUSTOM 

Use custom selection logic.

Member Function Documentation

◆ close()

virtual void agents::ILiveClient::close ( )
pure virtual

Close the connection to the live AI service.

Gracefully closes the connection and cleans up resources.

◆ connect()

virtual bool agents::ILiveClient::connect ( )
pure virtual

Connect to the live AI service.

Establishes a connection using the configured transport protocol.

Returns
bool True if connection successful

◆ create()

static std::unique_ptr< ILiveClient > agents::ILiveClient::create ( const String & api_key,
const LiveSessionConfig & config )
inlinestatic

Create a client (single simple factory)

Chooses sensible defaults for protocol/transport based on the provider and platform. Advanced selection can be implemented by concrete factories if needed.

Parameters
api_keyAPI key for the provider
configConfiguration for the live session
Returns
The created client

◆ getConfig()

virtual const LiveSessionConfig & agents::ILiveClient::getConfig ( ) const
pure virtual

Get the current session configuration.

Returns
const LiveSessionConfig& Session configuration

◆ getRecommendedProtocol()

static TransportProtocol agents::ILiveClient::getRecommendedProtocol ( const String & use_case = "general")
inlinestatic

Get the recommended protocol for a given use case.

Parameters
use_caseUse case description ("performance", "compatibility", "reliability")
Returns
TransportProtocol Recommended protocol

◆ getSupportedProtocols()

static std::vector< TransportProtocol > agents::ILiveClient::getSupportedProtocols ( )
inlinestatic

Get supported protocols for this provider.

Returns
std::vector<TransportProtocol> Supported protocols

◆ getTransportProtocol()

virtual TransportProtocol agents::ILiveClient::getTransportProtocol ( ) const
pure virtual

Get the current transport protocol.

Returns
TransportProtocol The protocol being used

◆ isConnected()

virtual bool agents::ILiveClient::isConnected ( ) const
pure virtual

Check if currently connected.

Returns
bool True if connected

◆ isProtocolSupported()

static bool agents::ILiveClient::isProtocolSupported ( TransportProtocol protocol)
inlinestatic

Check if a protocol is supported by this provider.

Parameters
protocolTransport protocol
Returns
bool True if supported

◆ sendAudio()

virtual bool agents::ILiveClient::sendAudio ( const void * samples,
size_t num_samples,
const AudioFormat & format )
pure virtual

Send audio data with specified format.

Parameters
samplesAudio samples
num_samplesNumber of samples
formatAudio format specification
Returns
bool True if successful

◆ sendAudioAndComplete()

virtual bool agents::ILiveClient::sendAudioAndComplete ( const int16_t * samples,
size_t num_samples,
int sample_rate_hz )
inlinevirtual

Send audio data and complete the turn.

This is a convenience method for sending audio and completing the turn in one call, which is common for voice input scenarios.

Parameters
samplesAudio samples
num_samplesNumber of samples
sample_rate_hzSample rate in Hz
Returns
bool True if successful

◆ sendMessage()

virtual bool agents::ILiveClient::sendMessage ( const String & text)
inlinevirtual

Send a complete user message (text + turn completion)

This is a convenience method that combines sendText() and sendTurnComplete() for common use cases where you want to send a complete message.

Parameters
textUser message text
Returns
bool True if successful

◆ sendText()

virtual bool agents::ILiveClient::sendText ( const String & text)
pure virtual

Send text input to the AI.

Parameters
textText message
Returns
bool True if successful

◆ sendTurnComplete()

virtual bool agents::ILiveClient::sendTurnComplete ( )
pure virtual

Signal completion of the current turn.

This indicates that the user has finished their input and expects a response from the AI.

Returns
bool True if successful

◆ setCallbacks()

virtual void agents::ILiveClient::setCallbacks ( const Callbacks & callbacks)
pure virtual

Set event callbacks.

Parameters
callbacksCallback structure