WebSocket メッセージタイプ
オーディオペイロードを除き、メッセージは JSON テキストフレームです。オーディオの場合、サーバーはまず audio_chunk JSON ヘッダーフレームを送信し、続いて PCM バイトを運ぶ独立した生のバイナリフレームを送信します(詳細は下記の audio_chunk セクションを参照)。
クライアント → サーバー
start_session
LLM セッションを初期化します。
{
"action": "start_session",
"input_type": "audio",
"new_session": true
}stream_data
ユーザー入力(オーディオチャンクまたはテキスト)を送信します。
オーディオ入力:
{
"action": "stream_data",
"input_type": "audio",
"data": "<base64 encoded PCM audio>"
}テキスト入力:
{
"action": "stream_data",
"input_type": "text",
"data": "Hello, how are you?"
}画面データ:
{
"action": "stream_data",
"input_type": "screen",
"data": "<base64 encoded screenshot>"
}end_session
現在のセッションを終了します。
{ "action": "end_session" }pause_session
接続を閉じずに処理を一時停止します。
{ "action": "pause_session" }ping
キープアライブハートビート。
{ "action": "ping" }サーバー → クライアント
gemini_response
LLM からのストリーミングテキストレスポンス。
{
"type": "gemini_response",
"text": "Hi there! How can I help you?",
"isNewMessage": true,
"turn_id": "<turn id>",
"request_id": "<request id>"
}audio_chunk
オーディオレスポンス(TTS 出力または直接 LLM オーディオ)。サーバーはまずこの JSON ヘッダーフレームを送信し、続いて生の PCM オーディオバイトを独立したバイナリ WebSocket フレームとして送信します(base64 として埋め込まれません)。speech_id は割り込み(barge-in)時にこのターンの音声を正確に照合するために使われます。
{
"type": "audio_chunk",
"speech_id": "<このターンの speech_id>"
}その後にバイナリフレーム(生の PCM バイト)が続きます。クライアントは上記のヘッダーフレームを受信した後、次のバイナリフレームを読み取ってデコードし再生します。
status
セッション状態に関するステータスメッセージ。
{
"type": "status",
"message": "Session started successfully"
}emotion
モデルの表情を駆動するための感情ラベル。
{
"type": "emotion",
"emotion": "happy"
}catgirl_switched
サーバー側でアクティブなキャラクターが変更された通知。
{
"type": "catgirl_switched",
"new_catgirl": "new_character",
"old_catgirl": "old_character"
}クライアントは /ws/{new_catgirl} に再接続する必要があります。
reload_page
サーバーがクライアントにページの更新を要求します。
{
"type": "reload_page",
"message": "Configuration changed, please refresh"
}agent_notification
エージェントタスクの更新通知。
{
"type": "agent_notification",
"text": "Found relevant information about...",
"source": "web_search",
"status": "completed"
}agent_task_update
エージェントタスクの詳細ステータス。
{
"type": "agent_task_update",
"task": {
"id": "task-uuid",
"status": "running",
"progress": 50
}
}agent_status_update
エージェントシステムのステータススナップショット。
{
"type": "agent_status_update",
"snapshot": {
"active_tasks": 1,
"flags": { "agent_enabled": true }
}
}pong
ping に対するレスポンス。
{ "type": "pong" }