From 38f8520cb472e7ec59d322587f9c99e338ac478f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Tue, 4 Aug 2026 12:53:56 -0700 Subject: [PATCH] bump protocol submodule to main and regenerate agent_simulation picks up the reshaped JobMetrics (livekit/protocol#1695); analytics picks up the webhook delivery fields (#1692). --- .../livekit/protocol/agent_simulation.py | 132 +++++++------- .../livekit/protocol/agent_simulation.pyi | 169 ++++++++++-------- .../livekit/protocol/analytics.py | 12 +- .../livekit/protocol/analytics.pyi | 6 +- livekit-protocol/protocol | 2 +- 5 files changed, 166 insertions(+), 155 deletions(-) diff --git a/livekit-protocol/livekit/protocol/agent_simulation.py b/livekit-protocol/livekit/protocol/agent_simulation.py index 5164c12c..58ff8795 100644 --- a/livekit-protocol/livekit/protocol/agent_simulation.py +++ b/livekit-protocol/livekit/protocol/agent_simulation.py @@ -28,7 +28,7 @@ from . import models as _models_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1elivekit_agent_simulation.proto\x12\x07livekit\x1a!agent/livekit_agent_session.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19livekit_cloud_agent.proto\x1a\x14livekit_models.proto\"\xea\x02\n\x14SimulationRunSummary\x12\x0e\n\x06passed\x18\x01 \x01(\x05\x12\x0e\n\x06\x66\x61iled\x18\x02 \x01(\x05\x12\x12\n\ngoing_well\x18\x03 \x01(\t\x12\x12\n\nto_improve\x18\x04 \x01(\t\x12\x33\n\x06issues\x18\x05 \x03(\x0b\x32#.livekit.SimulationRunSummary.Issue\x12\x44\n\x0c\x63hat_history\x18\x06 \x03(\x0b\x32..livekit.SimulationRunSummary.ChatHistoryEntry\x1aN\n\x10\x43hatHistoryEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x1a.livekit.agent.ChatContext:\x02\x38\x01\x1a?\n\x05Issue\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x12\n\nsuggestion\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\"\xe7/\n\rSimulationRun\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nproject_id\x18\x02 \x01(\t\x12-\n\x06status\x18\x03 \x01(\x0e\x32\x1d.livekit.SimulationRun.Status\x12\x19\n\x11\x61gent_description\x18\x04 \x01(\t\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x04jobs\x18\x07 \x03(\x0b\x32\x1a.livekit.SimulationRun.Job\x12\x12\n\nagent_name\x18\t \x01(\t\x12.\n\x0escenario_group\x18\n \x01(\x0b\x32\x16.livekit.ScenarioGroup\x12,\n\x08\x65nded_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tjob_count\x18\x0c \x01(\x05\x12\x14\n\x0cpassed_count\x18\r \x01(\x05\x12\x14\n\x0c\x66\x61iled_count\x18\x0e \x01(\x05\x12\x17\n\x0fnum_simulations\x18\x0f \x01(\x05\x12+\n\x05usage\x18\x10 \x01(\x0b\x32\x1c.livekit.SimulationRun.Usage\x12\x13\n\x0b\x63oncurrency\x18\x11 \x01(\x05\x12%\n\x04mode\x18\x12 \x01(\x0e\x32\x17.livekit.SimulationMode\x12\x32\n\x07metrics\x18\x13 \x01(\x0b\x32!.livekit.SimulationRun.RunMetrics\x12\x14\n\x0csummary_zstd\x18\x14 \x01(\x0c\x1a\xbe\x04\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\t\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32!.livekit.SimulationRun.Job.Status\x12\x14\n\x0cinstructions\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x1a\n\x12\x61gent_expectations\x18\x05 \x01(\t\x12\r\n\x05label\x18\x06 \x01(\t\x12\x0c\n\x04tags\x18\x07 \x03(\t\x12\x11\n\troom_name\x18\x08 \x01(\t\x12.\n\nstarted_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nded_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07room_id\x18\x0c \x01(\t\x12/\n\x05usage\x18\r \x01(\x0b\x32 .livekit.SimulationRun.Job.Usage\x12\x32\n\x07metrics\x18\x0e \x01(\x0b\x32!.livekit.SimulationRun.JobMetrics\x1a<\n\x05Usage\x12\x18\n\x10text_turns_count\x18\x01 \x01(\x05\x12\x19\n\x11\x61udio_turns_count\x18\x02 \x01(\x05\"o\n\x06Status\x12\x12\n\x0eSTATUS_PENDING\x10\x00\x12\x12\n\x0eSTATUS_RUNNING\x10\x01\x12\x14\n\x10STATUS_COMPLETED\x10\x02\x12\x11\n\rSTATUS_FAILED\x10\x03\x12\x14\n\x10STATUS_CANCELLED\x10\x04J\x04\x08\t\x10\n\x1a\xb2\x19\n\nJobMetrics\x12\x1b\n\x0e\x61\x63\x63uracy_score\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1d\n\x10\x65xperience_score\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x1c\n\x0ftask_completion\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x32\n\x03stt\x18\x04 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.STT\x12\x32\n\x03llm\x18\x05 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.LLM\x12\x32\n\x03tts\x18\x06 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.TTS\x12\x44\n\x0c\x63onversation\x18\x07 \x01(\x0b\x32..livekit.SimulationRun.JobMetrics.Conversation\x12>\n\tsimulator\x18\x08 \x01(\x0b\x32+.livekit.SimulationRun.JobMetrics.Simulator\x12\x35\n\x05turns\x18\t \x03(\x0b\x32&.livekit.SimulationRun.JobMetrics.Turn\x12\x13\n\x0bjudge_model\x18\n \x01(\t\x12\x19\n\x11\x61udio_judge_model\x18\x0b \x01(\t\x12\x1a\n\x12has_remote_session\x18\x0c \x01(\x08\x12&\n\x02t0\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\xab\x03\n\x03STT\x12\x10\n\x03wer\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x12\n\x05words\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0bword_errors\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x10\n\x03\x63\x65r\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x12\n\x05\x63hars\x18\t \x01(\rH\x04\x88\x01\x01\x12\x18\n\x0b\x63har_errors\x18\n \x01(\rH\x05\x88\x01\x01\x12\x1b\n\x0ekeyterm_recall\x18\x05 \x01(\x02H\x06\x88\x01\x01\x12\x1d\n\x10keyterms_uttered\x18\x06 \x01(\rH\x07\x88\x01\x01\x12 \n\x13keyterms_recognized\x18\x07 \x01(\rH\x08\x88\x01\x01\x12%\n\x18transcription_latency_ms\x18\x08 \x01(\rH\t\x88\x01\x01\x42\x06\n\x04_werB\x08\n\x06_wordsB\x0e\n\x0c_word_errorsB\x06\n\x04_cerB\x08\n\x06_charsB\x0e\n\x0c_char_errorsB\x11\n\x0f_keyterm_recallB\x13\n\x11_keyterms_utteredB\x16\n\x14_keyterms_recognizedB\x1b\n\x19_transcription_latency_ms\x1a\xb5\x01\n\x03LLM\x12\x14\n\x07ttft_ms\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07ttfs_ms\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11tokens_per_second\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1e\n\x11\x63onciseness_score\x18\x04 \x01(\x02H\x03\x88\x01\x01\x42\n\n\x08_ttft_msB\n\n\x08_ttfs_msB\x14\n\x12_tokens_per_secondB\x14\n\x12_conciseness_score\x1a\xfb\x03\n\x03TTS\x12\x14\n\x07ttfa_ms\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07ttfb_ms\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x10\n\x03wer\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x12\n\x05words\x18\x07 \x01(\rH\x03\x88\x01\x01\x12\x18\n\x0bword_errors\x18\x08 \x01(\rH\x04\x88\x01\x01\x12\x10\n\x03\x63\x65r\x18\t \x01(\x02H\x05\x88\x01\x01\x12\x12\n\x05\x63hars\x18\n \x01(\rH\x06\x88\x01\x01\x12\x18\n\x0b\x63har_errors\x18\x0b \x01(\rH\x07\x88\x01\x01\x12\x1c\n\x0fspeech_rate_wpm\x18\x04 \x01(\x02H\x08\x88\x01\x01\x12\x18\n\x0bheard_words\x18\x0c \x01(\rH\t\x88\x01\x01\x12\x16\n\tspeech_ms\x18\r \x01(\rH\n\x88\x01\x01\x12\x1e\n\x11naturalness_score\x18\x05 \x01(\x02H\x0b\x88\x01\x01\x12\x1e\n\x11\x65nunciation_score\x18\x06 \x01(\x02H\x0c\x88\x01\x01\x42\n\n\x08_ttfa_msB\n\n\x08_ttfb_msB\x06\n\x04_werB\x08\n\x06_wordsB\x0e\n\x0c_word_errorsB\x06\n\x04_cerB\x08\n\x06_charsB\x0e\n\x0c_char_errorsB\x12\n\x10_speech_rate_wpmB\x0e\n\x0c_heard_wordsB\x0c\n\n_speech_msB\x14\n\x12_naturalness_scoreB\x14\n\x12_enunciation_score\x1a\x80\x08\n\x0c\x43onversation\x12\x1e\n\x11turn_taking_score\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12$\n\x17response_latency_p50_ms\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12$\n\x17response_latency_p95_ms\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12$\n\x17response_latency_p99_ms\x18\x04 \x01(\x05H\x03\x88\x01\x01\x12 \n\x13response_latency_ms\x18\x10 \x01(\x05H\x04\x88\x01\x01\x12#\n\x16\x61gent_yield_latency_ms\x18\x05 \x01(\rH\x05\x88\x01\x01\x12$\n\x17\x65ot_misprediction_count\x18\x06 \x01(\rH\x06\x88\x01\x01\x12\x1a\n\roverlap_ratio\x18\x07 \x01(\x02H\x07\x88\x01\x01\x12\x1e\n\x11overlap_speech_ms\x18\x08 \x01(\rH\x08\x88\x01\x01\x12\x1c\n\x0ftotal_speech_ms\x18\t \x01(\rH\t\x88\x01\x01\x12\x1d\n\x10silence_total_ms\x18\n \x01(\rH\n\x88\x01\x01\x12\"\n\x15\x61wkward_silence_count\x18\x0b \x01(\rH\x0b\x88\x01\x01\x12%\n\x18unanswered_persona_turns\x18\x0c \x01(\rH\x0c\x88\x01\x01\x12%\n\x18\x66\x61lse_interruption_count\x18\r \x01(\rH\r\x88\x01\x01\x12\x31\n$false_interruption_unrecovered_count\x18\x0e \x01(\rH\x0e\x88\x01\x01\x12*\n\x1d\x61gent_reported_e2e_latency_ms\x18\x0f \x01(\rH\x0f\x88\x01\x01\x42\x14\n\x12_turn_taking_scoreB\x1a\n\x18_response_latency_p50_msB\x1a\n\x18_response_latency_p95_msB\x1a\n\x18_response_latency_p99_msB\x16\n\x14_response_latency_msB\x19\n\x17_agent_yield_latency_msB\x1a\n\x18_eot_misprediction_countB\x10\n\x0e_overlap_ratioB\x14\n\x12_overlap_speech_msB\x12\n\x10_total_speech_msB\x13\n\x11_silence_total_msB\x18\n\x16_awkward_silence_countB\x1b\n\x19_unanswered_persona_turnsB\x1b\n\x19_false_interruption_countB\'\n%_false_interruption_unrecovered_countB \n\x1e_agent_reported_e2e_latency_ms\x1au\n\tSimulator\x12\x1e\n\x11\x65\x61rly_termination\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1d\n\x10late_termination\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x14\n\x12_early_terminationB\x13\n\x11_late_termination\x1a\xe2\x02\n\x04Turn\x12\r\n\x05index\x18\x01 \x01(\r\x12%\n\x04role\x18\x02 \x01(\x0e\x32\x17.livekit.agent.ChatRole\x12\x15\n\x08start_ms\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06\x65nd_ms\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x32\n\x03stt\x18\x05 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.STT\x12\x32\n\x03llm\x18\x06 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.LLM\x12\x32\n\x03tts\x18\x07 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.TTS\x12\x44\n\x0c\x63onversation\x18\x08 \x01(\x0b\x32..livekit.SimulationRun.JobMetrics.ConversationB\x0b\n\t_start_msB\t\n\x07_end_msB\x11\n\x0f_accuracy_scoreB\x13\n\x11_experience_scoreB\x12\n\x10_task_completion\x1a\xd3\x03\n\nRunMetrics\x12\x1b\n\x0e\x61\x63\x63uracy_score\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1d\n\x10\x65xperience_score\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x1f\n\x12scenario_pass_rate\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x32\n\x03stt\x18\x04 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.STT\x12\x32\n\x03llm\x18\x05 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.LLM\x12\x32\n\x03tts\x18\x06 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.TTS\x12\x44\n\x0c\x63onversation\x18\x07 \x01(\x0b\x32..livekit.SimulationRun.JobMetrics.Conversation\x12\x12\n\njobs_total\x18\t \x01(\r\x12\x15\n\rjobs_measured\x18\n \x01(\r\x12\x1c\n\x14jobs_simulator_fault\x18\x0b \x01(\rB\x11\n\x0f_accuracy_scoreB\x13\n\x11_experience_scoreB\x15\n\x13_scenario_pass_rate\x1a\xfd\x02\n\x06\x43reate\x1a\x8c\x02\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x12\n\nagent_name\x18\x02 \x01(\t\x12\x17\n\x0fnum_simulations\x18\x04 \x01(\x05\x12\x0e\n\x06region\x18\x06 \x01(\t\x12\x33\n\x0escenario_group\x18\x07 \x01(\x0b\x32\x16.livekit.ScenarioGroupH\x00\x88\x01\x01\x12\x18\n\x0b\x63oncurrency\x18\x08 \x01(\x05H\x01\x88\x01\x01\x12%\n\x04mode\x18\t \x01(\x0e\x32\x17.livekit.SimulationModeB\x11\n\x0f_scenario_groupB\x0e\n\x0c_concurrencyJ\x04\x08\x03\x10\x04R\x11\x61gent_description\x1a\x64\n\x08Response\x12\x19\n\x11simulation_run_id\x18\x01 \x01(\t\x12=\n\x16presigned_post_request\x18\x02 \x01(\x0b\x32\x1d.livekit.PresignedPostRequest\x1at\n\x13\x43onfirmSourceUpload\x1aQ\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x19\n\x11simulation_run_id\x18\x02 \x01(\t\x12\x17\n\x0f\x63ode_entrypoint\x18\x03 \x01(\t\x1a\n\n\x08Response\x1ap\n\x03Get\x1a\x38\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x19\n\x11simulation_run_id\x18\x02 \x01(\t\x1a/\n\x08Response\x12#\n\x03run\x18\x01 \x01(\x0b\x32\x16.livekit.SimulationRun\x1a\x8c\x02\n\x04List\x1a\x9e\x01\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x32\n\x06status\x18\x02 \x01(\x0e\x32\x1d.livekit.SimulationRun.StatusH\x00\x88\x01\x01\x12\x31\n\npage_token\x18\x03 \x01(\x0b\x32\x18.livekit.TokenPaginationH\x01\x88\x01\x01\x42\t\n\x07_statusB\r\n\x0b_page_token\x1a\x63\n\x08Response\x12$\n\x04runs\x18\x01 \x03(\x0b\x32\x16.livekit.SimulationRun\x12\x31\n\x0fnext_page_token\x18\x02 \x01(\x0b\x32\x18.livekit.TokenPagination\x1aN\n\x06\x43\x61ncel\x1a\x38\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x19\n\x11simulation_run_id\x18\x02 \x01(\t\x1a\n\n\x08Response\x1a<\n\x05Usage\x12\x18\n\x10text_turns_count\x18\x01 \x01(\x05\x12\x19\n\x11\x61udio_turns_count\x18\x02 \x01(\x05\"\xa5\x01\n\x06Status\x12\x19\n\x15STATUS_PENDING_UPLOAD\x10\x00\x12\x15\n\x11STATUS_GENERATING\x10\x01\x12\x12\n\x0eSTATUS_RUNNING\x10\x02\x12\x16\n\x12STATUS_SUMMARIZING\x10\x03\x12\x14\n\x10STATUS_COMPLETED\x10\x04\x12\x11\n\rSTATUS_FAILED\x10\x05\x12\x14\n\x10STATUS_CANCELLED\x10\x06J\x04\x08\x08\x10\tR\x07summary\"\xbc\x02\n\x08Scenario\x12\r\n\x05label\x18\x01 \x01(\t\x12\x14\n\x0cinstructions\x18\x02 \x01(\t\x12\x1a\n\x12\x61gent_expectations\x18\x03 \x01(\t\x12)\n\x04tags\x18\x04 \x03(\x0b\x32\x1b.livekit.Scenario.TagsEntry\x12\x10\n\x08userdata\x18\x05 \x01(\t\x1a\x84\x01\n\x11\x43reateFromSession\x1a>\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x1a/\n\x08Response\x12#\n\x08scenario\x18\x01 \x01(\x0b\x32\x11.livekit.Scenario\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"C\n\rScenarioGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\tscenarios\x18\x02 \x03(\x0b\x32\x11.livekit.Scenario\"\x8b\x01\n\x12SimulationDispatch\x12\x19\n\x11simulation_run_id\x18\x01 \x01(\t\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12#\n\x08scenario\x18\x03 \x01(\x0b\x32\x11.livekit.Scenario\x12%\n\x04mode\x18\x04 \x01(\x0e\x32\x17.livekit.SimulationMode*f\n\x0eSimulationMode\x12\x1f\n\x1bSIMULATION_MODE_UNSPECIFIED\x10\x00\x12\x18\n\x14SIMULATION_MODE_TEXT\x10\x01\x12\x19\n\x15SIMULATION_MODE_AUDIO\x10\x02\x32\x9e\x05\n\x0f\x41gentSimulation\x12\x64\n\x13\x43reateSimulationRun\x12%.livekit.SimulationRun.Create.Request\x1a&.livekit.SimulationRun.Create.Response\x12\x88\x01\n\x1d\x43onfirmSimulationSourceUpload\x12\x32.livekit.SimulationRun.ConfirmSourceUpload.Request\x1a\x33.livekit.SimulationRun.ConfirmSourceUpload.Response\x12[\n\x10GetSimulationRun\x12\".livekit.SimulationRun.Get.Request\x1a#.livekit.SimulationRun.Get.Response\x12_\n\x12ListSimulationRuns\x12#.livekit.SimulationRun.List.Request\x1a$.livekit.SimulationRun.List.Response\x12\x64\n\x13\x43\x61ncelSimulationRun\x12%.livekit.SimulationRun.Cancel.Request\x1a&.livekit.SimulationRun.Cancel.Response\x12v\n\x19\x43reateScenarioFromSession\x12+.livekit.Scenario.CreateFromSession.Request\x1a,.livekit.Scenario.CreateFromSession.ResponseBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1elivekit_agent_simulation.proto\x12\x07livekit\x1a!agent/livekit_agent_session.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19livekit_cloud_agent.proto\x1a\x14livekit_models.proto\"\xea\x02\n\x14SimulationRunSummary\x12\x0e\n\x06passed\x18\x01 \x01(\x05\x12\x0e\n\x06\x66\x61iled\x18\x02 \x01(\x05\x12\x12\n\ngoing_well\x18\x03 \x01(\t\x12\x12\n\nto_improve\x18\x04 \x01(\t\x12\x33\n\x06issues\x18\x05 \x03(\x0b\x32#.livekit.SimulationRunSummary.Issue\x12\x44\n\x0c\x63hat_history\x18\x06 \x03(\x0b\x32..livekit.SimulationRunSummary.ChatHistoryEntry\x1aN\n\x10\x43hatHistoryEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x1a.livekit.agent.ChatContext:\x02\x38\x01\x1a?\n\x05Issue\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x12\n\nsuggestion\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\"\xf3\x32\n\rSimulationRun\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nproject_id\x18\x02 \x01(\t\x12-\n\x06status\x18\x03 \x01(\x0e\x32\x1d.livekit.SimulationRun.Status\x12\x19\n\x11\x61gent_description\x18\x04 \x01(\t\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x04jobs\x18\x07 \x03(\x0b\x32\x1a.livekit.SimulationRun.Job\x12\x12\n\nagent_name\x18\t \x01(\t\x12.\n\x0escenario_group\x18\n \x01(\x0b\x32\x16.livekit.ScenarioGroup\x12,\n\x08\x65nded_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tjob_count\x18\x0c \x01(\x05\x12\x14\n\x0cpassed_count\x18\r \x01(\x05\x12\x14\n\x0c\x66\x61iled_count\x18\x0e \x01(\x05\x12\x17\n\x0fnum_simulations\x18\x0f \x01(\x05\x12+\n\x05usage\x18\x10 \x01(\x0b\x32\x1c.livekit.SimulationRun.Usage\x12\x13\n\x0b\x63oncurrency\x18\x11 \x01(\x05\x12%\n\x04mode\x18\x12 \x01(\x0e\x32\x17.livekit.SimulationMode\x12\x32\n\x07metrics\x18\x13 \x01(\x0b\x32!.livekit.SimulationRun.RunMetrics\x12\x14\n\x0csummary_zstd\x18\x14 \x01(\x0c\x1a\xbe\x04\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\t\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32!.livekit.SimulationRun.Job.Status\x12\x14\n\x0cinstructions\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x1a\n\x12\x61gent_expectations\x18\x05 \x01(\t\x12\r\n\x05label\x18\x06 \x01(\t\x12\x0c\n\x04tags\x18\x07 \x03(\t\x12\x11\n\troom_name\x18\x08 \x01(\t\x12.\n\nstarted_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nded_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07room_id\x18\x0c \x01(\t\x12/\n\x05usage\x18\r \x01(\x0b\x32 .livekit.SimulationRun.Job.Usage\x12\x32\n\x07metrics\x18\x0e \x01(\x0b\x32!.livekit.SimulationRun.JobMetrics\x1a<\n\x05Usage\x12\x18\n\x10text_turns_count\x18\x01 \x01(\x05\x12\x19\n\x11\x61udio_turns_count\x18\x02 \x01(\x05\"o\n\x06Status\x12\x12\n\x0eSTATUS_PENDING\x10\x00\x12\x12\n\x0eSTATUS_RUNNING\x10\x01\x12\x14\n\x10STATUS_COMPLETED\x10\x02\x12\x11\n\rSTATUS_FAILED\x10\x03\x12\x14\n\x10STATUS_CANCELLED\x10\x04J\x04\x08\t\x10\n\x1a\x87\x1d\n\nJobMetrics\x12\x1b\n\x0e\x61\x63\x63uracy_score\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1d\n\x10\x65xperience_score\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x1c\n\x0ftask_completion\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x32\n\x03stt\x18\x04 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.STT\x12\x32\n\x03llm\x18\x05 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.LLM\x12\x32\n\x03tts\x18\x06 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.TTS\x12\x44\n\x0c\x63onversation\x18\x07 \x01(\x0b\x32..livekit.SimulationRun.JobMetrics.Conversation\x12\x35\n\x05turns\x18\t \x03(\x0b\x32&.livekit.SimulationRun.JobMetrics.Turn\x12\x13\n\x0bjudge_model\x18\n \x01(\t\x12\x1a\n\x12has_remote_session\x18\x0c \x01(\x08\x12&\n\x02t0\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x0b\x63onciseness\x18\x0e \x01(\x02H\x03\x88\x01\x01\x12#\n\x16unnecessary_tool_calls\x18\x0f \x01(\x08H\x04\x88\x01\x01\x12\x1d\n\x10information_loss\x18\x10 \x01(\x08H\x05\x88\x01\x01\x12!\n\x14redundant_statements\x18\x11 \x01(\x08H\x06\x88\x01\x01\x12\"\n\x15poor_question_quality\x18\x12 \x01(\x08H\x07\x88\x01\x01\x12%\n\x18\x63onversation_progression\x18\x13 \x01(\x02H\x08\x88\x01\x01\x1a\xdb\x04\n\x03STT\x12\x10\n\x03wer\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x12\n\x05words\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0bword_errors\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x10\n\x03\x63\x65r\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x12\n\x05\x63hars\x18\t \x01(\rH\x04\x88\x01\x01\x12\x18\n\x0b\x63har_errors\x18\n \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cstt_delay_ms\x18\x08 \x01(\rH\x06\x88\x01\x01\x12\x1f\n\x12\x65ntity_recognition\x18\x0b \x01(\x02H\x07\x88\x01\x01\x12\x1d\n\x10\x65ntities_uttered\x18\x0c \x01(\rH\x08\x88\x01\x01\x12 \n\x13\x65ntities_recognized\x18\r \x01(\rH\t\x88\x01\x01\x12\x1a\n\rentity_recall\x18\x0e \x01(\x02H\n\x88\x01\x01\x12&\n\x19\x65ntities_acquired_uttered\x18\x0f \x01(\rH\x0b\x88\x01\x01\x12)\n\x1c\x65ntities_acquired_recognized\x18\x10 \x01(\rH\x0c\x88\x01\x01\x42\x06\n\x04_werB\x08\n\x06_wordsB\x0e\n\x0c_word_errorsB\x06\n\x04_cerB\x08\n\x06_charsB\x0e\n\x0c_char_errorsB\x0f\n\r_stt_delay_msB\x15\n\x13_entity_recognitionB\x13\n\x11_entities_utteredB\x16\n\x14_entities_recognizedB\x10\n\x0e_entity_recallB\x1c\n\x1a_entities_acquired_utteredB\x1f\n\x1d_entities_acquired_recognized\x1a\x7f\n\x03LLM\x12\x14\n\x07ttft_ms\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07ttfs_ms\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11tokens_per_second\x18\x03 \x01(\x02H\x02\x88\x01\x01\x42\n\n\x08_ttft_msB\n\n\x08_ttfs_msB\x14\n\x12_tokens_per_second\x1a\xd1\x04\n\x03TTS\x12\x14\n\x07ttfb_ms\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03wer\x18\x03 \x01(\x02H\x01\x88\x01\x01\x12\x12\n\x05words\x18\x07 \x01(\rH\x02\x88\x01\x01\x12\x18\n\x0bword_errors\x18\x08 \x01(\rH\x03\x88\x01\x01\x12\x10\n\x03\x63\x65r\x18\t \x01(\x02H\x04\x88\x01\x01\x12\x12\n\x05\x63hars\x18\n \x01(\rH\x05\x88\x01\x01\x12\x18\n\x0b\x63har_errors\x18\x0b \x01(\rH\x06\x88\x01\x01\x12\x1f\n\x12\x65ntity_recognition\x18\x0e \x01(\x02H\x07\x88\x01\x01\x12\x1d\n\x10\x65ntities_uttered\x18\x0f \x01(\rH\x08\x88\x01\x01\x12 \n\x13\x65ntities_recognized\x18\x10 \x01(\rH\t\x88\x01\x01\x12\x1a\n\rentity_recall\x18\x11 \x01(\x02H\n\x88\x01\x01\x12&\n\x19\x65ntities_acquired_uttered\x18\x12 \x01(\rH\x0b\x88\x01\x01\x12)\n\x1c\x65ntities_acquired_recognized\x18\x13 \x01(\rH\x0c\x88\x01\x01\x42\n\n\x08_ttfb_msB\x06\n\x04_werB\x08\n\x06_wordsB\x0e\n\x0c_word_errorsB\x06\n\x04_cerB\x08\n\x06_charsB\x0e\n\x0c_char_errorsB\x15\n\x13_entity_recognitionB\x13\n\x11_entities_utteredB\x16\n\x14_entities_recognizedB\x10\n\x0e_entity_recallB\x1c\n\x1a_entities_acquired_utteredB\x1f\n\x1d_entities_acquired_recognized\x1a\x82\x06\n\x0c\x43onversation\x12\x1e\n\x11turn_taking_score\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12%\n\x18heard_e2e_latency_p50_ms\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12%\n\x18heard_e2e_latency_p95_ms\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12%\n\x18heard_e2e_latency_p99_ms\x18\x04 \x01(\x05H\x03\x88\x01\x01\x12\x1d\n\x10time_to_yield_ms\x18\x05 \x01(\rH\x04\x88\x01\x01\x12$\n\x17\x65ot_misprediction_count\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1a\n\roverlap_ratio\x18\x07 \x01(\x02H\x06\x88\x01\x01\x12\x1e\n\x11overlap_speech_ms\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x1c\n\x0ftotal_speech_ms\x18\t \x01(\rH\x08\x88\x01\x01\x12\"\n\x15\x61wkward_silence_count\x18\x0b \x01(\rH\t\x88\x01\x01\x12\x1d\n\x10unanswered_turns\x18\x0c \x01(\rH\n\x88\x01\x01\x12%\n\x18\x66\x61lse_interruption_count\x18\r \x01(\rH\x0b\x88\x01\x01\x12\x1b\n\x0e\x65\x32\x65_latency_ms\x18\x0f \x01(\rH\x0c\x88\x01\x01\x42\x14\n\x12_turn_taking_scoreB\x1b\n\x19_heard_e2e_latency_p50_msB\x1b\n\x19_heard_e2e_latency_p95_msB\x1b\n\x19_heard_e2e_latency_p99_msB\x13\n\x11_time_to_yield_msB\x1a\n\x18_eot_misprediction_countB\x10\n\x0e_overlap_ratioB\x14\n\x12_overlap_speech_msB\x12\n\x10_total_speech_msB\x18\n\x16_awkward_silence_countB\x13\n\x11_unanswered_turnsB\x1b\n\x19_false_interruption_countB\x11\n\x0f_e2e_latency_ms\x1a\xdc\x05\n\x04Turn\x12\r\n\x05index\x18\x01 \x01(\r\x12%\n\x04role\x18\x02 \x01(\x0e\x32\x17.livekit.agent.ChatRole\x12\x15\n\x08start_ms\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06\x65nd_ms\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0cstt_delay_ms\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x18\n\x0bllm_ttft_ms\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x18\n\x0bllm_ttfs_ms\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x14\n\x07llm_tps\x18\x08 \x01(\x02H\x05\x88\x01\x01\x12\x18\n\x0btts_ttfb_ms\x18\t \x01(\rH\x06\x88\x01\x01\x12\x1b\n\x0e\x65\x32\x65_latency_ms\x18\n \x01(\rH\x07\x88\x01\x01\x12!\n\x14heard_e2e_latency_ms\x18\x0b \x01(\x05H\x08\x88\x01\x01\x12\x1d\n\x10time_to_yield_ms\x18\x0c \x01(\rH\t\x88\x01\x01\x12\x1e\n\x11turn_taking_score\x18\r \x01(\x02H\n\x88\x01\x01\x12\x18\n\x0b\x63onciseness\x18\x0e \x01(\x02H\x0b\x88\x01\x01\x12\x1e\n\x11\x65ot_misprediction\x18\x0f \x01(\x08H\x0c\x88\x01\x01\x12\x1c\n\x0f\x61wkward_silence\x18\x10 \x01(\x08H\r\x88\x01\x01\x12\x17\n\nunanswered\x18\x11 \x01(\x08H\x0e\x88\x01\x01\x42\x0b\n\t_start_msB\t\n\x07_end_msB\x0f\n\r_stt_delay_msB\x0e\n\x0c_llm_ttft_msB\x0e\n\x0c_llm_ttfs_msB\n\n\x08_llm_tpsB\x0e\n\x0c_tts_ttfb_msB\x11\n\x0f_e2e_latency_msB\x17\n\x15_heard_e2e_latency_msB\x13\n\x11_time_to_yield_msB\x14\n\x12_turn_taking_scoreB\x0e\n\x0c_concisenessB\x14\n\x12_eot_mispredictionB\x12\n\x10_awkward_silenceB\r\n\x0b_unansweredB\x11\n\x0f_accuracy_scoreB\x13\n\x11_experience_scoreB\x12\n\x10_task_completionB\x0e\n\x0c_concisenessB\x19\n\x17_unnecessary_tool_callsB\x13\n\x11_information_lossB\x17\n\x15_redundant_statementsB\x18\n\x16_poor_question_qualityB\x1b\n\x19_conversation_progression\x1a\x8a\x03\n\nRunMetrics\x12\x1b\n\x0e\x61\x63\x63uracy_score\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1d\n\x10\x65xperience_score\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x1f\n\x12scenario_pass_rate\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x32\n\x03stt\x18\x04 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.STT\x12\x32\n\x03llm\x18\x05 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.LLM\x12\x32\n\x03tts\x18\x06 \x01(\x0b\x32%.livekit.SimulationRun.JobMetrics.TTS\x12\x44\n\x0c\x63onversation\x18\x07 \x01(\x0b\x32..livekit.SimulationRun.JobMetrics.ConversationB\x11\n\x0f_accuracy_scoreB\x13\n\x11_experience_scoreB\x15\n\x13_scenario_pass_rate\x1a\xfd\x02\n\x06\x43reate\x1a\x8c\x02\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x12\n\nagent_name\x18\x02 \x01(\t\x12\x17\n\x0fnum_simulations\x18\x04 \x01(\x05\x12\x0e\n\x06region\x18\x06 \x01(\t\x12\x33\n\x0escenario_group\x18\x07 \x01(\x0b\x32\x16.livekit.ScenarioGroupH\x00\x88\x01\x01\x12\x18\n\x0b\x63oncurrency\x18\x08 \x01(\x05H\x01\x88\x01\x01\x12%\n\x04mode\x18\t \x01(\x0e\x32\x17.livekit.SimulationModeB\x11\n\x0f_scenario_groupB\x0e\n\x0c_concurrencyJ\x04\x08\x03\x10\x04R\x11\x61gent_description\x1a\x64\n\x08Response\x12\x19\n\x11simulation_run_id\x18\x01 \x01(\t\x12=\n\x16presigned_post_request\x18\x02 \x01(\x0b\x32\x1d.livekit.PresignedPostRequest\x1at\n\x13\x43onfirmSourceUpload\x1aQ\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x19\n\x11simulation_run_id\x18\x02 \x01(\t\x12\x17\n\x0f\x63ode_entrypoint\x18\x03 \x01(\t\x1a\n\n\x08Response\x1ap\n\x03Get\x1a\x38\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x19\n\x11simulation_run_id\x18\x02 \x01(\t\x1a/\n\x08Response\x12#\n\x03run\x18\x01 \x01(\x0b\x32\x16.livekit.SimulationRun\x1a\x8c\x02\n\x04List\x1a\x9e\x01\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x32\n\x06status\x18\x02 \x01(\x0e\x32\x1d.livekit.SimulationRun.StatusH\x00\x88\x01\x01\x12\x31\n\npage_token\x18\x03 \x01(\x0b\x32\x18.livekit.TokenPaginationH\x01\x88\x01\x01\x42\t\n\x07_statusB\r\n\x0b_page_token\x1a\x63\n\x08Response\x12$\n\x04runs\x18\x01 \x03(\x0b\x32\x16.livekit.SimulationRun\x12\x31\n\x0fnext_page_token\x18\x02 \x01(\x0b\x32\x18.livekit.TokenPagination\x1aN\n\x06\x43\x61ncel\x1a\x38\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x19\n\x11simulation_run_id\x18\x02 \x01(\t\x1a\n\n\x08Response\x1a<\n\x05Usage\x12\x18\n\x10text_turns_count\x18\x01 \x01(\x05\x12\x19\n\x11\x61udio_turns_count\x18\x02 \x01(\x05\"\xa5\x01\n\x06Status\x12\x19\n\x15STATUS_PENDING_UPLOAD\x10\x00\x12\x15\n\x11STATUS_GENERATING\x10\x01\x12\x12\n\x0eSTATUS_RUNNING\x10\x02\x12\x16\n\x12STATUS_SUMMARIZING\x10\x03\x12\x14\n\x10STATUS_COMPLETED\x10\x04\x12\x11\n\rSTATUS_FAILED\x10\x05\x12\x14\n\x10STATUS_CANCELLED\x10\x06J\x04\x08\x08\x10\tR\x07summary\"\xbc\x02\n\x08Scenario\x12\r\n\x05label\x18\x01 \x01(\t\x12\x14\n\x0cinstructions\x18\x02 \x01(\t\x12\x1a\n\x12\x61gent_expectations\x18\x03 \x01(\t\x12)\n\x04tags\x18\x04 \x03(\x0b\x32\x1b.livekit.Scenario.TagsEntry\x12\x10\n\x08userdata\x18\x05 \x01(\t\x1a\x84\x01\n\x11\x43reateFromSession\x1a>\n\x07Request\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x1a/\n\x08Response\x12#\n\x08scenario\x18\x01 \x01(\x0b\x32\x11.livekit.Scenario\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"C\n\rScenarioGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\tscenarios\x18\x02 \x03(\x0b\x32\x11.livekit.Scenario\"\x8b\x01\n\x12SimulationDispatch\x12\x19\n\x11simulation_run_id\x18\x01 \x01(\t\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12#\n\x08scenario\x18\x03 \x01(\x0b\x32\x11.livekit.Scenario\x12%\n\x04mode\x18\x04 \x01(\x0e\x32\x17.livekit.SimulationMode*f\n\x0eSimulationMode\x12\x1f\n\x1bSIMULATION_MODE_UNSPECIFIED\x10\x00\x12\x18\n\x14SIMULATION_MODE_TEXT\x10\x01\x12\x19\n\x15SIMULATION_MODE_AUDIO\x10\x02\x32\x9e\x05\n\x0f\x41gentSimulation\x12\x64\n\x13\x43reateSimulationRun\x12%.livekit.SimulationRun.Create.Request\x1a&.livekit.SimulationRun.Create.Response\x12\x88\x01\n\x1d\x43onfirmSimulationSourceUpload\x12\x32.livekit.SimulationRun.ConfirmSourceUpload.Request\x1a\x33.livekit.SimulationRun.ConfirmSourceUpload.Response\x12[\n\x10GetSimulationRun\x12\".livekit.SimulationRun.Get.Request\x1a#.livekit.SimulationRun.Get.Response\x12_\n\x12ListSimulationRuns\x12#.livekit.SimulationRun.List.Request\x1a$.livekit.SimulationRun.List.Response\x12\x64\n\x13\x43\x61ncelSimulationRun\x12%.livekit.SimulationRun.Cancel.Request\x1a&.livekit.SimulationRun.Cancel.Response\x12v\n\x19\x43reateScenarioFromSession\x12+.livekit.Scenario.CreateFromSession.Request\x1a,.livekit.Scenario.CreateFromSession.ResponseBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -40,8 +40,8 @@ _globals['_SIMULATIONRUNSUMMARY_CHATHISTORYENTRY']._serialized_options = b'8\001' _globals['_SCENARIO_TAGSENTRY']._loaded_options = None _globals['_SCENARIO_TAGSENTRY']._serialized_options = b'8\001' - _globals['_SIMULATIONMODE']._serialized_start=7177 - _globals['_SIMULATIONMODE']._serialized_end=7279 + _globals['_SIMULATIONMODE']._serialized_start=7573 + _globals['_SIMULATIONMODE']._serialized_end=7675 _globals['_SIMULATIONRUNSUMMARY']._serialized_start=161 _globals['_SIMULATIONRUNSUMMARY']._serialized_end=523 _globals['_SIMULATIONRUNSUMMARY_CHATHISTORYENTRY']._serialized_start=380 @@ -49,7 +49,7 @@ _globals['_SIMULATIONRUNSUMMARY_ISSUE']._serialized_start=460 _globals['_SIMULATIONRUNSUMMARY_ISSUE']._serialized_end=523 _globals['_SIMULATIONRUN']._serialized_start=526 - _globals['_SIMULATIONRUN']._serialized_end=6645 + _globals['_SIMULATIONRUN']._serialized_end=7041 _globals['_SIMULATIONRUN_JOB']._serialized_start=1136 _globals['_SIMULATIONRUN_JOB']._serialized_end=1710 _globals['_SIMULATIONRUN_JOB_USAGE']._serialized_start=1531 @@ -57,69 +57,67 @@ _globals['_SIMULATIONRUN_JOB_STATUS']._serialized_start=1593 _globals['_SIMULATIONRUN_JOB_STATUS']._serialized_end=1704 _globals['_SIMULATIONRUN_JOBMETRICS']._serialized_start=1713 - _globals['_SIMULATIONRUN_JOBMETRICS']._serialized_end=4963 - _globals['_SIMULATIONRUN_JOBMETRICS_STT']._serialized_start=2279 - _globals['_SIMULATIONRUN_JOBMETRICS_STT']._serialized_end=2706 - _globals['_SIMULATIONRUN_JOBMETRICS_LLM']._serialized_start=2709 - _globals['_SIMULATIONRUN_JOBMETRICS_LLM']._serialized_end=2890 - _globals['_SIMULATIONRUN_JOBMETRICS_TTS']._serialized_start=2893 - _globals['_SIMULATIONRUN_JOBMETRICS_TTS']._serialized_end=3400 - _globals['_SIMULATIONRUN_JOBMETRICS_CONVERSATION']._serialized_start=3403 - _globals['_SIMULATIONRUN_JOBMETRICS_CONVERSATION']._serialized_end=4427 - _globals['_SIMULATIONRUN_JOBMETRICS_SIMULATOR']._serialized_start=4429 - _globals['_SIMULATIONRUN_JOBMETRICS_SIMULATOR']._serialized_end=4546 - _globals['_SIMULATIONRUN_JOBMETRICS_TURN']._serialized_start=4549 - _globals['_SIMULATIONRUN_JOBMETRICS_TURN']._serialized_end=4903 - _globals['_SIMULATIONRUN_RUNMETRICS']._serialized_start=4966 - _globals['_SIMULATIONRUN_RUNMETRICS']._serialized_end=5433 - _globals['_SIMULATIONRUN_CREATE']._serialized_start=5436 - _globals['_SIMULATIONRUN_CREATE']._serialized_end=5817 - _globals['_SIMULATIONRUN_CREATE_REQUEST']._serialized_start=5447 - _globals['_SIMULATIONRUN_CREATE_REQUEST']._serialized_end=5715 - _globals['_SIMULATIONRUN_CREATE_RESPONSE']._serialized_start=5717 - _globals['_SIMULATIONRUN_CREATE_RESPONSE']._serialized_end=5817 - _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD']._serialized_start=5819 - _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD']._serialized_end=5935 - _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_REQUEST']._serialized_start=5842 - _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_REQUEST']._serialized_end=5923 - _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_RESPONSE']._serialized_start=5717 - _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_RESPONSE']._serialized_end=5727 - _globals['_SIMULATIONRUN_GET']._serialized_start=5937 - _globals['_SIMULATIONRUN_GET']._serialized_end=6049 - _globals['_SIMULATIONRUN_GET_REQUEST']._serialized_start=5842 - _globals['_SIMULATIONRUN_GET_REQUEST']._serialized_end=5898 - _globals['_SIMULATIONRUN_GET_RESPONSE']._serialized_start=6002 - _globals['_SIMULATIONRUN_GET_RESPONSE']._serialized_end=6049 - _globals['_SIMULATIONRUN_LIST']._serialized_start=6052 - _globals['_SIMULATIONRUN_LIST']._serialized_end=6320 - _globals['_SIMULATIONRUN_LIST_REQUEST']._serialized_start=6061 - _globals['_SIMULATIONRUN_LIST_REQUEST']._serialized_end=6219 - _globals['_SIMULATIONRUN_LIST_RESPONSE']._serialized_start=6221 - _globals['_SIMULATIONRUN_LIST_RESPONSE']._serialized_end=6320 - _globals['_SIMULATIONRUN_CANCEL']._serialized_start=6322 - _globals['_SIMULATIONRUN_CANCEL']._serialized_end=6400 - _globals['_SIMULATIONRUN_CANCEL_REQUEST']._serialized_start=5842 - _globals['_SIMULATIONRUN_CANCEL_REQUEST']._serialized_end=5898 - _globals['_SIMULATIONRUN_CANCEL_RESPONSE']._serialized_start=5717 - _globals['_SIMULATIONRUN_CANCEL_RESPONSE']._serialized_end=5727 + _globals['_SIMULATIONRUN_JOBMETRICS']._serialized_end=5432 + _globals['_SIMULATIONRUN_JOBMETRICS_STT']._serialized_start=2392 + _globals['_SIMULATIONRUN_JOBMETRICS_STT']._serialized_end=2995 + _globals['_SIMULATIONRUN_JOBMETRICS_LLM']._serialized_start=2997 + _globals['_SIMULATIONRUN_JOBMETRICS_LLM']._serialized_end=3124 + _globals['_SIMULATIONRUN_JOBMETRICS_TTS']._serialized_start=3127 + _globals['_SIMULATIONRUN_JOBMETRICS_TTS']._serialized_end=3720 + _globals['_SIMULATIONRUN_JOBMETRICS_CONVERSATION']._serialized_start=3723 + _globals['_SIMULATIONRUN_JOBMETRICS_CONVERSATION']._serialized_end=4493 + _globals['_SIMULATIONRUN_JOBMETRICS_TURN']._serialized_start=4496 + _globals['_SIMULATIONRUN_JOBMETRICS_TURN']._serialized_end=5228 + _globals['_SIMULATIONRUN_RUNMETRICS']._serialized_start=5435 + _globals['_SIMULATIONRUN_RUNMETRICS']._serialized_end=5829 + _globals['_SIMULATIONRUN_CREATE']._serialized_start=5832 + _globals['_SIMULATIONRUN_CREATE']._serialized_end=6213 + _globals['_SIMULATIONRUN_CREATE_REQUEST']._serialized_start=5843 + _globals['_SIMULATIONRUN_CREATE_REQUEST']._serialized_end=6111 + _globals['_SIMULATIONRUN_CREATE_RESPONSE']._serialized_start=6113 + _globals['_SIMULATIONRUN_CREATE_RESPONSE']._serialized_end=6213 + _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD']._serialized_start=6215 + _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD']._serialized_end=6331 + _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_REQUEST']._serialized_start=6238 + _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_REQUEST']._serialized_end=6319 + _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_RESPONSE']._serialized_start=6113 + _globals['_SIMULATIONRUN_CONFIRMSOURCEUPLOAD_RESPONSE']._serialized_end=6123 + _globals['_SIMULATIONRUN_GET']._serialized_start=6333 + _globals['_SIMULATIONRUN_GET']._serialized_end=6445 + _globals['_SIMULATIONRUN_GET_REQUEST']._serialized_start=6238 + _globals['_SIMULATIONRUN_GET_REQUEST']._serialized_end=6294 + _globals['_SIMULATIONRUN_GET_RESPONSE']._serialized_start=6398 + _globals['_SIMULATIONRUN_GET_RESPONSE']._serialized_end=6445 + _globals['_SIMULATIONRUN_LIST']._serialized_start=6448 + _globals['_SIMULATIONRUN_LIST']._serialized_end=6716 + _globals['_SIMULATIONRUN_LIST_REQUEST']._serialized_start=6457 + _globals['_SIMULATIONRUN_LIST_REQUEST']._serialized_end=6615 + _globals['_SIMULATIONRUN_LIST_RESPONSE']._serialized_start=6617 + _globals['_SIMULATIONRUN_LIST_RESPONSE']._serialized_end=6716 + _globals['_SIMULATIONRUN_CANCEL']._serialized_start=6718 + _globals['_SIMULATIONRUN_CANCEL']._serialized_end=6796 + _globals['_SIMULATIONRUN_CANCEL_REQUEST']._serialized_start=6238 + _globals['_SIMULATIONRUN_CANCEL_REQUEST']._serialized_end=6294 + _globals['_SIMULATIONRUN_CANCEL_RESPONSE']._serialized_start=6113 + _globals['_SIMULATIONRUN_CANCEL_RESPONSE']._serialized_end=6123 _globals['_SIMULATIONRUN_USAGE']._serialized_start=1531 _globals['_SIMULATIONRUN_USAGE']._serialized_end=1591 - _globals['_SIMULATIONRUN_STATUS']._serialized_start=6465 - _globals['_SIMULATIONRUN_STATUS']._serialized_end=6630 - _globals['_SCENARIO']._serialized_start=6648 - _globals['_SCENARIO']._serialized_end=6964 - _globals['_SCENARIO_CREATEFROMSESSION']._serialized_start=6787 - _globals['_SCENARIO_CREATEFROMSESSION']._serialized_end=6919 - _globals['_SCENARIO_CREATEFROMSESSION_REQUEST']._serialized_start=6808 - _globals['_SCENARIO_CREATEFROMSESSION_REQUEST']._serialized_end=6870 - _globals['_SCENARIO_CREATEFROMSESSION_RESPONSE']._serialized_start=6872 - _globals['_SCENARIO_CREATEFROMSESSION_RESPONSE']._serialized_end=6919 - _globals['_SCENARIO_TAGSENTRY']._serialized_start=6921 - _globals['_SCENARIO_TAGSENTRY']._serialized_end=6964 - _globals['_SCENARIOGROUP']._serialized_start=6966 - _globals['_SCENARIOGROUP']._serialized_end=7033 - _globals['_SIMULATIONDISPATCH']._serialized_start=7036 - _globals['_SIMULATIONDISPATCH']._serialized_end=7175 - _globals['_AGENTSIMULATION']._serialized_start=7282 - _globals['_AGENTSIMULATION']._serialized_end=7952 + _globals['_SIMULATIONRUN_STATUS']._serialized_start=6861 + _globals['_SIMULATIONRUN_STATUS']._serialized_end=7026 + _globals['_SCENARIO']._serialized_start=7044 + _globals['_SCENARIO']._serialized_end=7360 + _globals['_SCENARIO_CREATEFROMSESSION']._serialized_start=7183 + _globals['_SCENARIO_CREATEFROMSESSION']._serialized_end=7315 + _globals['_SCENARIO_CREATEFROMSESSION_REQUEST']._serialized_start=7204 + _globals['_SCENARIO_CREATEFROMSESSION_REQUEST']._serialized_end=7266 + _globals['_SCENARIO_CREATEFROMSESSION_RESPONSE']._serialized_start=7268 + _globals['_SCENARIO_CREATEFROMSESSION_RESPONSE']._serialized_end=7315 + _globals['_SCENARIO_TAGSENTRY']._serialized_start=7317 + _globals['_SCENARIO_TAGSENTRY']._serialized_end=7360 + _globals['_SCENARIOGROUP']._serialized_start=7362 + _globals['_SCENARIOGROUP']._serialized_end=7429 + _globals['_SIMULATIONDISPATCH']._serialized_start=7432 + _globals['_SIMULATIONDISPATCH']._serialized_end=7571 + _globals['_AGENTSIMULATION']._serialized_start=7678 + _globals['_AGENTSIMULATION']._serialized_end=8348 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/agent_simulation.pyi b/livekit-protocol/livekit/protocol/agent_simulation.pyi index 4c6a6e91..24f98eb2 100644 --- a/livekit-protocol/livekit/protocol/agent_simulation.pyi +++ b/livekit-protocol/livekit/protocol/agent_simulation.pyi @@ -118,44 +118,47 @@ class SimulationRun(_message.Message): metrics: SimulationRun.JobMetrics def __init__(self, id: _Optional[str] = ..., status: _Optional[_Union[SimulationRun.Job.Status, str]] = ..., instructions: _Optional[str] = ..., error: _Optional[str] = ..., agent_expectations: _Optional[str] = ..., label: _Optional[str] = ..., tags: _Optional[_Iterable[str]] = ..., room_name: _Optional[str] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., ended_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., room_id: _Optional[str] = ..., usage: _Optional[_Union[SimulationRun.Job.Usage, _Mapping]] = ..., metrics: _Optional[_Union[SimulationRun.JobMetrics, _Mapping]] = ...) -> None: ... class JobMetrics(_message.Message): - __slots__ = ("accuracy_score", "experience_score", "task_completion", "stt", "llm", "tts", "conversation", "simulator", "turns", "judge_model", "audio_judge_model", "has_remote_session", "t0") + __slots__ = ("accuracy_score", "experience_score", "task_completion", "stt", "llm", "tts", "conversation", "turns", "judge_model", "has_remote_session", "t0", "conciseness", "unnecessary_tool_calls", "information_loss", "redundant_statements", "poor_question_quality", "conversation_progression") class STT(_message.Message): - __slots__ = ("wer", "words", "word_errors", "cer", "chars", "char_errors", "keyterm_recall", "keyterms_uttered", "keyterms_recognized", "transcription_latency_ms") + __slots__ = ("wer", "words", "word_errors", "cer", "chars", "char_errors", "stt_delay_ms", "entity_recognition", "entities_uttered", "entities_recognized", "entity_recall", "entities_acquired_uttered", "entities_acquired_recognized") WER_FIELD_NUMBER: _ClassVar[int] WORDS_FIELD_NUMBER: _ClassVar[int] WORD_ERRORS_FIELD_NUMBER: _ClassVar[int] CER_FIELD_NUMBER: _ClassVar[int] CHARS_FIELD_NUMBER: _ClassVar[int] CHAR_ERRORS_FIELD_NUMBER: _ClassVar[int] - KEYTERM_RECALL_FIELD_NUMBER: _ClassVar[int] - KEYTERMS_UTTERED_FIELD_NUMBER: _ClassVar[int] - KEYTERMS_RECOGNIZED_FIELD_NUMBER: _ClassVar[int] - TRANSCRIPTION_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] + STT_DELAY_MS_FIELD_NUMBER: _ClassVar[int] + ENTITY_RECOGNITION_FIELD_NUMBER: _ClassVar[int] + ENTITIES_UTTERED_FIELD_NUMBER: _ClassVar[int] + ENTITIES_RECOGNIZED_FIELD_NUMBER: _ClassVar[int] + ENTITY_RECALL_FIELD_NUMBER: _ClassVar[int] + ENTITIES_ACQUIRED_UTTERED_FIELD_NUMBER: _ClassVar[int] + ENTITIES_ACQUIRED_RECOGNIZED_FIELD_NUMBER: _ClassVar[int] wer: float words: int word_errors: int cer: float chars: int char_errors: int - keyterm_recall: float - keyterms_uttered: int - keyterms_recognized: int - transcription_latency_ms: int - def __init__(self, wer: _Optional[float] = ..., words: _Optional[int] = ..., word_errors: _Optional[int] = ..., cer: _Optional[float] = ..., chars: _Optional[int] = ..., char_errors: _Optional[int] = ..., keyterm_recall: _Optional[float] = ..., keyterms_uttered: _Optional[int] = ..., keyterms_recognized: _Optional[int] = ..., transcription_latency_ms: _Optional[int] = ...) -> None: ... + stt_delay_ms: int + entity_recognition: float + entities_uttered: int + entities_recognized: int + entity_recall: float + entities_acquired_uttered: int + entities_acquired_recognized: int + def __init__(self, wer: _Optional[float] = ..., words: _Optional[int] = ..., word_errors: _Optional[int] = ..., cer: _Optional[float] = ..., chars: _Optional[int] = ..., char_errors: _Optional[int] = ..., stt_delay_ms: _Optional[int] = ..., entity_recognition: _Optional[float] = ..., entities_uttered: _Optional[int] = ..., entities_recognized: _Optional[int] = ..., entity_recall: _Optional[float] = ..., entities_acquired_uttered: _Optional[int] = ..., entities_acquired_recognized: _Optional[int] = ...) -> None: ... class LLM(_message.Message): - __slots__ = ("ttft_ms", "ttfs_ms", "tokens_per_second", "conciseness_score") + __slots__ = ("ttft_ms", "ttfs_ms", "tokens_per_second") TTFT_MS_FIELD_NUMBER: _ClassVar[int] TTFS_MS_FIELD_NUMBER: _ClassVar[int] TOKENS_PER_SECOND_FIELD_NUMBER: _ClassVar[int] - CONCISENESS_SCORE_FIELD_NUMBER: _ClassVar[int] ttft_ms: int ttfs_ms: int tokens_per_second: float - conciseness_score: float - def __init__(self, ttft_ms: _Optional[int] = ..., ttfs_ms: _Optional[int] = ..., tokens_per_second: _Optional[float] = ..., conciseness_score: _Optional[float] = ...) -> None: ... + def __init__(self, ttft_ms: _Optional[int] = ..., ttfs_ms: _Optional[int] = ..., tokens_per_second: _Optional[float] = ...) -> None: ... class TTS(_message.Message): - __slots__ = ("ttfa_ms", "ttfb_ms", "wer", "words", "word_errors", "cer", "chars", "char_errors", "speech_rate_wpm", "heard_words", "speech_ms", "naturalness_score", "enunciation_score") - TTFA_MS_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("ttfb_ms", "wer", "words", "word_errors", "cer", "chars", "char_errors", "entity_recognition", "entities_uttered", "entities_recognized", "entity_recall", "entities_acquired_uttered", "entities_acquired_recognized") TTFB_MS_FIELD_NUMBER: _ClassVar[int] WER_FIELD_NUMBER: _ClassVar[int] WORDS_FIELD_NUMBER: _ClassVar[int] @@ -163,12 +166,12 @@ class SimulationRun(_message.Message): CER_FIELD_NUMBER: _ClassVar[int] CHARS_FIELD_NUMBER: _ClassVar[int] CHAR_ERRORS_FIELD_NUMBER: _ClassVar[int] - SPEECH_RATE_WPM_FIELD_NUMBER: _ClassVar[int] - HEARD_WORDS_FIELD_NUMBER: _ClassVar[int] - SPEECH_MS_FIELD_NUMBER: _ClassVar[int] - NATURALNESS_SCORE_FIELD_NUMBER: _ClassVar[int] - ENUNCIATION_SCORE_FIELD_NUMBER: _ClassVar[int] - ttfa_ms: int + ENTITY_RECOGNITION_FIELD_NUMBER: _ClassVar[int] + ENTITIES_UTTERED_FIELD_NUMBER: _ClassVar[int] + ENTITIES_RECOGNIZED_FIELD_NUMBER: _ClassVar[int] + ENTITY_RECALL_FIELD_NUMBER: _ClassVar[int] + ENTITIES_ACQUIRED_UTTERED_FIELD_NUMBER: _ClassVar[int] + ENTITIES_ACQUIRED_RECOGNIZED_FIELD_NUMBER: _ClassVar[int] ttfb_ms: int wer: float words: int @@ -176,73 +179,79 @@ class SimulationRun(_message.Message): cer: float chars: int char_errors: int - speech_rate_wpm: float - heard_words: int - speech_ms: int - naturalness_score: float - enunciation_score: float - def __init__(self, ttfa_ms: _Optional[int] = ..., ttfb_ms: _Optional[int] = ..., wer: _Optional[float] = ..., words: _Optional[int] = ..., word_errors: _Optional[int] = ..., cer: _Optional[float] = ..., chars: _Optional[int] = ..., char_errors: _Optional[int] = ..., speech_rate_wpm: _Optional[float] = ..., heard_words: _Optional[int] = ..., speech_ms: _Optional[int] = ..., naturalness_score: _Optional[float] = ..., enunciation_score: _Optional[float] = ...) -> None: ... + entity_recognition: float + entities_uttered: int + entities_recognized: int + entity_recall: float + entities_acquired_uttered: int + entities_acquired_recognized: int + def __init__(self, ttfb_ms: _Optional[int] = ..., wer: _Optional[float] = ..., words: _Optional[int] = ..., word_errors: _Optional[int] = ..., cer: _Optional[float] = ..., chars: _Optional[int] = ..., char_errors: _Optional[int] = ..., entity_recognition: _Optional[float] = ..., entities_uttered: _Optional[int] = ..., entities_recognized: _Optional[int] = ..., entity_recall: _Optional[float] = ..., entities_acquired_uttered: _Optional[int] = ..., entities_acquired_recognized: _Optional[int] = ...) -> None: ... class Conversation(_message.Message): - __slots__ = ("turn_taking_score", "response_latency_p50_ms", "response_latency_p95_ms", "response_latency_p99_ms", "response_latency_ms", "agent_yield_latency_ms", "eot_misprediction_count", "overlap_ratio", "overlap_speech_ms", "total_speech_ms", "silence_total_ms", "awkward_silence_count", "unanswered_persona_turns", "false_interruption_count", "false_interruption_unrecovered_count", "agent_reported_e2e_latency_ms") + __slots__ = ("turn_taking_score", "heard_e2e_latency_p50_ms", "heard_e2e_latency_p95_ms", "heard_e2e_latency_p99_ms", "time_to_yield_ms", "eot_misprediction_count", "overlap_ratio", "overlap_speech_ms", "total_speech_ms", "awkward_silence_count", "unanswered_turns", "false_interruption_count", "e2e_latency_ms") TURN_TAKING_SCORE_FIELD_NUMBER: _ClassVar[int] - RESPONSE_LATENCY_P50_MS_FIELD_NUMBER: _ClassVar[int] - RESPONSE_LATENCY_P95_MS_FIELD_NUMBER: _ClassVar[int] - RESPONSE_LATENCY_P99_MS_FIELD_NUMBER: _ClassVar[int] - RESPONSE_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] - AGENT_YIELD_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] + HEARD_E2E_LATENCY_P50_MS_FIELD_NUMBER: _ClassVar[int] + HEARD_E2E_LATENCY_P95_MS_FIELD_NUMBER: _ClassVar[int] + HEARD_E2E_LATENCY_P99_MS_FIELD_NUMBER: _ClassVar[int] + TIME_TO_YIELD_MS_FIELD_NUMBER: _ClassVar[int] EOT_MISPREDICTION_COUNT_FIELD_NUMBER: _ClassVar[int] OVERLAP_RATIO_FIELD_NUMBER: _ClassVar[int] OVERLAP_SPEECH_MS_FIELD_NUMBER: _ClassVar[int] TOTAL_SPEECH_MS_FIELD_NUMBER: _ClassVar[int] - SILENCE_TOTAL_MS_FIELD_NUMBER: _ClassVar[int] AWKWARD_SILENCE_COUNT_FIELD_NUMBER: _ClassVar[int] - UNANSWERED_PERSONA_TURNS_FIELD_NUMBER: _ClassVar[int] + UNANSWERED_TURNS_FIELD_NUMBER: _ClassVar[int] FALSE_INTERRUPTION_COUNT_FIELD_NUMBER: _ClassVar[int] - FALSE_INTERRUPTION_UNRECOVERED_COUNT_FIELD_NUMBER: _ClassVar[int] - AGENT_REPORTED_E2E_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] + E2E_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] turn_taking_score: float - response_latency_p50_ms: int - response_latency_p95_ms: int - response_latency_p99_ms: int - response_latency_ms: int - agent_yield_latency_ms: int + heard_e2e_latency_p50_ms: int + heard_e2e_latency_p95_ms: int + heard_e2e_latency_p99_ms: int + time_to_yield_ms: int eot_misprediction_count: int overlap_ratio: float overlap_speech_ms: int total_speech_ms: int - silence_total_ms: int awkward_silence_count: int - unanswered_persona_turns: int + unanswered_turns: int false_interruption_count: int - false_interruption_unrecovered_count: int - agent_reported_e2e_latency_ms: int - def __init__(self, turn_taking_score: _Optional[float] = ..., response_latency_p50_ms: _Optional[int] = ..., response_latency_p95_ms: _Optional[int] = ..., response_latency_p99_ms: _Optional[int] = ..., response_latency_ms: _Optional[int] = ..., agent_yield_latency_ms: _Optional[int] = ..., eot_misprediction_count: _Optional[int] = ..., overlap_ratio: _Optional[float] = ..., overlap_speech_ms: _Optional[int] = ..., total_speech_ms: _Optional[int] = ..., silence_total_ms: _Optional[int] = ..., awkward_silence_count: _Optional[int] = ..., unanswered_persona_turns: _Optional[int] = ..., false_interruption_count: _Optional[int] = ..., false_interruption_unrecovered_count: _Optional[int] = ..., agent_reported_e2e_latency_ms: _Optional[int] = ...) -> None: ... - class Simulator(_message.Message): - __slots__ = ("early_termination", "late_termination") - EARLY_TERMINATION_FIELD_NUMBER: _ClassVar[int] - LATE_TERMINATION_FIELD_NUMBER: _ClassVar[int] - early_termination: bool - late_termination: bool - def __init__(self, early_termination: bool = ..., late_termination: bool = ...) -> None: ... + e2e_latency_ms: int + def __init__(self, turn_taking_score: _Optional[float] = ..., heard_e2e_latency_p50_ms: _Optional[int] = ..., heard_e2e_latency_p95_ms: _Optional[int] = ..., heard_e2e_latency_p99_ms: _Optional[int] = ..., time_to_yield_ms: _Optional[int] = ..., eot_misprediction_count: _Optional[int] = ..., overlap_ratio: _Optional[float] = ..., overlap_speech_ms: _Optional[int] = ..., total_speech_ms: _Optional[int] = ..., awkward_silence_count: _Optional[int] = ..., unanswered_turns: _Optional[int] = ..., false_interruption_count: _Optional[int] = ..., e2e_latency_ms: _Optional[int] = ...) -> None: ... class Turn(_message.Message): - __slots__ = ("index", "role", "start_ms", "end_ms", "stt", "llm", "tts", "conversation") + __slots__ = ("index", "role", "start_ms", "end_ms", "stt_delay_ms", "llm_ttft_ms", "llm_ttfs_ms", "llm_tps", "tts_ttfb_ms", "e2e_latency_ms", "heard_e2e_latency_ms", "time_to_yield_ms", "turn_taking_score", "conciseness", "eot_misprediction", "awkward_silence", "unanswered") INDEX_FIELD_NUMBER: _ClassVar[int] ROLE_FIELD_NUMBER: _ClassVar[int] START_MS_FIELD_NUMBER: _ClassVar[int] END_MS_FIELD_NUMBER: _ClassVar[int] - STT_FIELD_NUMBER: _ClassVar[int] - LLM_FIELD_NUMBER: _ClassVar[int] - TTS_FIELD_NUMBER: _ClassVar[int] - CONVERSATION_FIELD_NUMBER: _ClassVar[int] + STT_DELAY_MS_FIELD_NUMBER: _ClassVar[int] + LLM_TTFT_MS_FIELD_NUMBER: _ClassVar[int] + LLM_TTFS_MS_FIELD_NUMBER: _ClassVar[int] + LLM_TPS_FIELD_NUMBER: _ClassVar[int] + TTS_TTFB_MS_FIELD_NUMBER: _ClassVar[int] + E2E_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] + HEARD_E2E_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] + TIME_TO_YIELD_MS_FIELD_NUMBER: _ClassVar[int] + TURN_TAKING_SCORE_FIELD_NUMBER: _ClassVar[int] + CONCISENESS_FIELD_NUMBER: _ClassVar[int] + EOT_MISPREDICTION_FIELD_NUMBER: _ClassVar[int] + AWKWARD_SILENCE_FIELD_NUMBER: _ClassVar[int] + UNANSWERED_FIELD_NUMBER: _ClassVar[int] index: int role: _agent_session.ChatRole start_ms: int end_ms: int - stt: SimulationRun.JobMetrics.STT - llm: SimulationRun.JobMetrics.LLM - tts: SimulationRun.JobMetrics.TTS - conversation: SimulationRun.JobMetrics.Conversation - def __init__(self, index: _Optional[int] = ..., role: _Optional[_Union[_agent_session.ChatRole, str]] = ..., start_ms: _Optional[int] = ..., end_ms: _Optional[int] = ..., stt: _Optional[_Union[SimulationRun.JobMetrics.STT, _Mapping]] = ..., llm: _Optional[_Union[SimulationRun.JobMetrics.LLM, _Mapping]] = ..., tts: _Optional[_Union[SimulationRun.JobMetrics.TTS, _Mapping]] = ..., conversation: _Optional[_Union[SimulationRun.JobMetrics.Conversation, _Mapping]] = ...) -> None: ... + stt_delay_ms: int + llm_ttft_ms: int + llm_ttfs_ms: int + llm_tps: float + tts_ttfb_ms: int + e2e_latency_ms: int + heard_e2e_latency_ms: int + time_to_yield_ms: int + turn_taking_score: float + conciseness: float + eot_misprediction: bool + awkward_silence: bool + unanswered: bool + def __init__(self, index: _Optional[int] = ..., role: _Optional[_Union[_agent_session.ChatRole, str]] = ..., start_ms: _Optional[int] = ..., end_ms: _Optional[int] = ..., stt_delay_ms: _Optional[int] = ..., llm_ttft_ms: _Optional[int] = ..., llm_ttfs_ms: _Optional[int] = ..., llm_tps: _Optional[float] = ..., tts_ttfb_ms: _Optional[int] = ..., e2e_latency_ms: _Optional[int] = ..., heard_e2e_latency_ms: _Optional[int] = ..., time_to_yield_ms: _Optional[int] = ..., turn_taking_score: _Optional[float] = ..., conciseness: _Optional[float] = ..., eot_misprediction: bool = ..., awkward_silence: bool = ..., unanswered: bool = ...) -> None: ... ACCURACY_SCORE_FIELD_NUMBER: _ClassVar[int] EXPERIENCE_SCORE_FIELD_NUMBER: _ClassVar[int] TASK_COMPLETION_FIELD_NUMBER: _ClassVar[int] @@ -250,12 +259,16 @@ class SimulationRun(_message.Message): LLM_FIELD_NUMBER: _ClassVar[int] TTS_FIELD_NUMBER: _ClassVar[int] CONVERSATION_FIELD_NUMBER: _ClassVar[int] - SIMULATOR_FIELD_NUMBER: _ClassVar[int] TURNS_FIELD_NUMBER: _ClassVar[int] JUDGE_MODEL_FIELD_NUMBER: _ClassVar[int] - AUDIO_JUDGE_MODEL_FIELD_NUMBER: _ClassVar[int] HAS_REMOTE_SESSION_FIELD_NUMBER: _ClassVar[int] T0_FIELD_NUMBER: _ClassVar[int] + CONCISENESS_FIELD_NUMBER: _ClassVar[int] + UNNECESSARY_TOOL_CALLS_FIELD_NUMBER: _ClassVar[int] + INFORMATION_LOSS_FIELD_NUMBER: _ClassVar[int] + REDUNDANT_STATEMENTS_FIELD_NUMBER: _ClassVar[int] + POOR_QUESTION_QUALITY_FIELD_NUMBER: _ClassVar[int] + CONVERSATION_PROGRESSION_FIELD_NUMBER: _ClassVar[int] accuracy_score: float experience_score: float task_completion: float @@ -263,15 +276,19 @@ class SimulationRun(_message.Message): llm: SimulationRun.JobMetrics.LLM tts: SimulationRun.JobMetrics.TTS conversation: SimulationRun.JobMetrics.Conversation - simulator: SimulationRun.JobMetrics.Simulator turns: _containers.RepeatedCompositeFieldContainer[SimulationRun.JobMetrics.Turn] judge_model: str - audio_judge_model: str has_remote_session: bool t0: _timestamp_pb2.Timestamp - def __init__(self, accuracy_score: _Optional[float] = ..., experience_score: _Optional[float] = ..., task_completion: _Optional[float] = ..., stt: _Optional[_Union[SimulationRun.JobMetrics.STT, _Mapping]] = ..., llm: _Optional[_Union[SimulationRun.JobMetrics.LLM, _Mapping]] = ..., tts: _Optional[_Union[SimulationRun.JobMetrics.TTS, _Mapping]] = ..., conversation: _Optional[_Union[SimulationRun.JobMetrics.Conversation, _Mapping]] = ..., simulator: _Optional[_Union[SimulationRun.JobMetrics.Simulator, _Mapping]] = ..., turns: _Optional[_Iterable[_Union[SimulationRun.JobMetrics.Turn, _Mapping]]] = ..., judge_model: _Optional[str] = ..., audio_judge_model: _Optional[str] = ..., has_remote_session: bool = ..., t0: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + conciseness: float + unnecessary_tool_calls: bool + information_loss: bool + redundant_statements: bool + poor_question_quality: bool + conversation_progression: float + def __init__(self, accuracy_score: _Optional[float] = ..., experience_score: _Optional[float] = ..., task_completion: _Optional[float] = ..., stt: _Optional[_Union[SimulationRun.JobMetrics.STT, _Mapping]] = ..., llm: _Optional[_Union[SimulationRun.JobMetrics.LLM, _Mapping]] = ..., tts: _Optional[_Union[SimulationRun.JobMetrics.TTS, _Mapping]] = ..., conversation: _Optional[_Union[SimulationRun.JobMetrics.Conversation, _Mapping]] = ..., turns: _Optional[_Iterable[_Union[SimulationRun.JobMetrics.Turn, _Mapping]]] = ..., judge_model: _Optional[str] = ..., has_remote_session: bool = ..., t0: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., conciseness: _Optional[float] = ..., unnecessary_tool_calls: bool = ..., information_loss: bool = ..., redundant_statements: bool = ..., poor_question_quality: bool = ..., conversation_progression: _Optional[float] = ...) -> None: ... class RunMetrics(_message.Message): - __slots__ = ("accuracy_score", "experience_score", "scenario_pass_rate", "stt", "llm", "tts", "conversation", "jobs_total", "jobs_measured", "jobs_simulator_fault") + __slots__ = ("accuracy_score", "experience_score", "scenario_pass_rate", "stt", "llm", "tts", "conversation") ACCURACY_SCORE_FIELD_NUMBER: _ClassVar[int] EXPERIENCE_SCORE_FIELD_NUMBER: _ClassVar[int] SCENARIO_PASS_RATE_FIELD_NUMBER: _ClassVar[int] @@ -279,9 +296,6 @@ class SimulationRun(_message.Message): LLM_FIELD_NUMBER: _ClassVar[int] TTS_FIELD_NUMBER: _ClassVar[int] CONVERSATION_FIELD_NUMBER: _ClassVar[int] - JOBS_TOTAL_FIELD_NUMBER: _ClassVar[int] - JOBS_MEASURED_FIELD_NUMBER: _ClassVar[int] - JOBS_SIMULATOR_FAULT_FIELD_NUMBER: _ClassVar[int] accuracy_score: float experience_score: float scenario_pass_rate: float @@ -289,10 +303,7 @@ class SimulationRun(_message.Message): llm: SimulationRun.JobMetrics.LLM tts: SimulationRun.JobMetrics.TTS conversation: SimulationRun.JobMetrics.Conversation - jobs_total: int - jobs_measured: int - jobs_simulator_fault: int - def __init__(self, accuracy_score: _Optional[float] = ..., experience_score: _Optional[float] = ..., scenario_pass_rate: _Optional[float] = ..., stt: _Optional[_Union[SimulationRun.JobMetrics.STT, _Mapping]] = ..., llm: _Optional[_Union[SimulationRun.JobMetrics.LLM, _Mapping]] = ..., tts: _Optional[_Union[SimulationRun.JobMetrics.TTS, _Mapping]] = ..., conversation: _Optional[_Union[SimulationRun.JobMetrics.Conversation, _Mapping]] = ..., jobs_total: _Optional[int] = ..., jobs_measured: _Optional[int] = ..., jobs_simulator_fault: _Optional[int] = ...) -> None: ... + def __init__(self, accuracy_score: _Optional[float] = ..., experience_score: _Optional[float] = ..., scenario_pass_rate: _Optional[float] = ..., stt: _Optional[_Union[SimulationRun.JobMetrics.STT, _Mapping]] = ..., llm: _Optional[_Union[SimulationRun.JobMetrics.LLM, _Mapping]] = ..., tts: _Optional[_Union[SimulationRun.JobMetrics.TTS, _Mapping]] = ..., conversation: _Optional[_Union[SimulationRun.JobMetrics.Conversation, _Mapping]] = ...) -> None: ... class Create(_message.Message): __slots__ = () class Request(_message.Message): diff --git a/livekit-protocol/livekit/protocol/analytics.py b/livekit-protocol/livekit/protocol/analytics.py index 1b32ee24..323e28a4 100644 --- a/livekit-protocol/livekit/protocol/analytics.py +++ b/livekit-protocol/livekit/protocol/analytics.py @@ -31,7 +31,7 @@ from .logger_pb import options as logger_dot_options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17livekit_analytics.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x14livekit_egress.proto\x1a\x15livekit_ingress.proto\x1a\x14livekit_models.proto\x1a\x12livekit_room.proto\x1a\x11livekit_sip.proto\x1a\x14logger/options.proto\"T\n\x13\x41nalyticsVideoLayer\x12\r\n\x05layer\x18\x01 \x01(\x05\x12\x0f\n\x07packets\x18\x02 \x01(\r\x12\r\n\x05\x62ytes\x18\x03 \x01(\x04\x12\x0e\n\x06\x66rames\x18\x04 \x01(\r\"\xd3\x03\n\x0f\x41nalyticsStream\x12\x0c\n\x04ssrc\x18\x01 \x01(\r\x12\x17\n\x0fprimary_packets\x18\x02 \x01(\r\x12\x15\n\rprimary_bytes\x18\x03 \x01(\x04\x12\x1a\n\x12retransmit_packets\x18\x04 \x01(\r\x12\x18\n\x10retransmit_bytes\x18\x05 \x01(\x04\x12\x17\n\x0fpadding_packets\x18\x06 \x01(\r\x12\x15\n\rpadding_bytes\x18\x07 \x01(\x04\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x0e\n\x06\x66rames\x18\t \x01(\r\x12\x0b\n\x03rtt\x18\n \x01(\r\x12\x0e\n\x06jitter\x18\x0b \x01(\r\x12\r\n\x05nacks\x18\x0c \x01(\r\x12\x0c\n\x04plis\x18\r \x01(\r\x12\x0c\n\x04\x66irs\x18\x0e \x01(\r\x12\x32\n\x0cvideo_layers\x18\x0f \x03(\x0b\x32\x1c.livekit.AnalyticsVideoLayer\x12.\n\nstart_time\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1c\n\x14packets_out_of_order\x18\x13 \x01(\r\"\xfb\x02\n\rAnalyticsStat\x12\n\n\x02id\x18\x0e \x01(\t\x12\x15\n\ranalytics_key\x18\x01 \x01(\t\x12!\n\x04kind\x18\x02 \x01(\x0e\x32\x13.livekit.StreamType\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04node\x18\x04 \x01(\t\x12\x1a\n\x07room_id\x18\x05 \x01(\tB\t\xbaP\x06roomID\x12\x11\n\troom_name\x18\x06 \x01(\t\x12(\n\x0eparticipant_id\x18\x07 \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\x08 \x01(\tB\n\xbaP\x07trackID\x12\r\n\x05score\x18\t \x01(\x02\x12)\n\x07streams\x18\n \x03(\x0b\x32\x18.livekit.AnalyticsStream\x12\x0c\n\x04mime\x18\x0b \x01(\t\x12\x11\n\tmin_score\x18\x0c \x01(\x02\x12\x14\n\x0cmedian_score\x18\r \x01(\x02\"7\n\x0e\x41nalyticsStats\x12%\n\x05stats\x18\x01 \x03(\x0b\x32\x16.livekit.AnalyticsStat\"\x9a\x02\n\x13\x41nalyticsClientMeta\x12\x0e\n\x06region\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x13\n\x0b\x63lient_addr\x18\x03 \x01(\t\x12\x1b\n\x13\x63lient_connect_time\x18\x04 \x01(\r\x12\x17\n\x0f\x63onnection_type\x18\x05 \x01(\t\x12\x32\n\x10reconnect_reason\x18\x06 \x01(\x0e\x32\x18.livekit.ReconnectReason\x12\x15\n\x08geo_hash\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x63ountry\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07isp_asn\x18\t \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_geo_hashB\n\n\x08_countryB\n\n\x08_isp_asn\"\x9e\n\n\x0e\x41nalyticsEvent\x12\n\n\x02id\x18\x19 \x01(\t\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.livekit.AnalyticsEventType\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1a\n\x07room_id\x18\x03 \x01(\tB\t\xbaP\x06roomID\x12\x1b\n\x04room\x18\x04 \x01(\x0b\x32\r.livekit.Room\x12(\n\x0eparticipant_id\x18\x05 \x01(\tB\x10\xbaP\rparticipantID\x12-\n\x0bparticipant\x18\x06 \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x1c\n\x08track_id\x18\x07 \x01(\tB\n\xbaP\x07trackID\x12!\n\x05track\x18\x08 \x01(\x0b\x32\x12.livekit.TrackInfo\x12\x15\n\ranalytics_key\x18\n \x01(\t\x12(\n\x0b\x63lient_info\x18\x0b \x01(\x0b\x32\x13.livekit.ClientInfo\x12\x31\n\x0b\x63lient_meta\x18\x0c \x01(\x0b\x32\x1c.livekit.AnalyticsClientMeta\x12\x1e\n\tegress_id\x18\r \x01(\tB\x0b\xbaP\x08\x65gressID\x12 \n\ningress_id\x18\x13 \x01(\tB\x0c\xbaP\tingressID\x12;\n\x1cmax_subscribed_video_quality\x18\x0e \x01(\x0e\x32\x15.livekit.VideoQuality\x12+\n\tpublisher\x18\x0f \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x0c\n\x04mime\x18\x10 \x01(\t\x12#\n\x06\x65gress\x18\x11 \x01(\x0b\x32\x13.livekit.EgressInfo\x12%\n\x07ingress\x18\x12 \x01(\x0b\x32\x14.livekit.IngressInfo\x12\r\n\x05\x65rror\x18\x14 \x01(\t\x12$\n\trtp_stats\x18\x15 \x01(\x0b\x32\x11.livekit.RTPStats\x12\x13\n\x0bvideo_layer\x18\x16 \x01(\x05\x12\x1a\n\x07node_id\x18\x18 \x01(\tB\t\xbaP\x06nodeID\x12!\n\x0bsip_call_id\x18\x1a \x01(\tB\x0c\xbaP\tsipCallID\x12&\n\x08sip_call\x18\x1b \x01(\x0b\x32\x14.livekit.SIPCallInfo\x12#\n\x0csip_trunk_id\x18\x1c \x01(\tB\r\xbaP\nsipTrunkID\x12\x37\n\x11sip_inbound_trunk\x18\x1d \x01(\x0b\x32\x1c.livekit.SIPInboundTrunkInfo\x12\x39\n\x12sip_outbound_trunk\x18\x1e \x01(\x0b\x32\x1d.livekit.SIPOutboundTrunkInfo\x12\x32\n\x14sip_dispatch_rule_id\x18\x1f \x01(\tB\x14\xbaP\x11sipDispatchRuleID\x12\x37\n\x11sip_dispatch_rule\x18 \x01(\x0b\x32\x1c.livekit.SIPDispatchRuleInfo\x12.\n\x0csip_transfer\x18$ \x01(\x0b\x32\x18.livekit.SIPTransferInfo\x12#\n\x06report\x18! \x01(\x0b\x32\x13.livekit.ReportInfo\x12&\n\x08\x61pi_call\x18\" \x01(\x0b\x32\x14.livekit.APICallInfo\x12%\n\x07webhook\x18# \x01(\x0b\x32\x14.livekit.WebhookInfo\":\n\x0f\x41nalyticsEvents\x12\'\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x17.livekit.AnalyticsEvent\"\xa4\x01\n\x18\x41nalyticsRoomParticipant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12-\n\x05state\x18\x04 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12-\n\tjoined_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xb4\x01\n\rAnalyticsRoom\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12 \n\nproject_id\x18\x05 \x01(\tB\x0c\xbaP\tprojectID\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x0cparticipants\x18\x04 \x03(\x0b\x32!.livekit.AnalyticsRoomParticipant\"\x9f\x01\n\x12\x41nalyticsNodeRooms\x12\x1a\n\x07node_id\x18\x01 \x01(\tB\t\xbaP\x06nodeID\x12\x17\n\x0fsequence_number\x18\x02 \x01(\x04\x12-\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x05rooms\x18\x04 \x03(\x0b\x32\x16.livekit.AnalyticsRoom\"K\n\nReportInfo\x12\x32\n\rfeature_usage\x18\x01 \x01(\x0b\x32\x19.livekit.FeatureUsageInfoH\x00\x42\t\n\x07message\"i\n\tTimeRange\x12.\n\nstarted_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nded_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x99\x04\n\x10\x46\x65\x61tureUsageInfo\x12\x32\n\x07\x66\x65\x61ture\x18\x01 \x01(\x0e\x32!.livekit.FeatureUsageInfo.Feature\x12 \n\nproject_id\x18\x02 \x01(\tB\x0c\xbaP\tprojectID\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1a\n\x07room_id\x18\x04 \x01(\tB\t\xbaP\x06roomID\x12\x1c\n\x14participant_identity\x18\x05 \x01(\t\x12(\n\x0eparticipant_id\x18\x06 \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\x07 \x01(\tB\n\xbaP\x07trackID\x12\'\n\x0btime_ranges\x18\x08 \x03(\x0b\x32\x12.livekit.TimeRange\x12@\n\x0c\x66\x65\x61ture_info\x18\t \x03(\x0b\x32*.livekit.FeatureUsageInfo.FeatureInfoEntry\x1a\x32\n\x10\x46\x65\x61tureInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"{\n\x07\x46\x65\x61ture\x12\x1c\n\x18KRISP_NOISE_CANCELLATION\x10\x00\x12\'\n#KRISP_BACKGROUND_VOICE_CANCELLATION\x10\x01\x12\x19\n\x15\x41IC_AUDIO_ENHANCEMENT\x10\x02\x12\x0e\n\nKRISP_VIVA\x10\x03\"\xb3\x05\n\x0e\x41PICallRequest\x12\x39\n\x13\x63reate_room_request\x18\x01 \x01(\x0b\x32\x1a.livekit.CreateRoomRequestH\x00\x12\x37\n\x12list_rooms_request\x18\x02 \x01(\x0b\x32\x19.livekit.ListRoomsRequestH\x00\x12\x39\n\x13\x64\x65lete_room_request\x18\x03 \x01(\x0b\x32\x1a.livekit.DeleteRoomRequestH\x00\x12\x45\n\x19list_participants_request\x18\x04 \x01(\x0b\x32 .livekit.ListParticipantsRequestH\x00\x12\x45\n\x19room_participant_identity\x18\x05 \x01(\x0b\x32 .livekit.RoomParticipantIdentityH\x00\x12@\n\x17mute_room_track_request\x18\x06 \x01(\x0b\x32\x1d.livekit.MuteRoomTrackRequestH\x00\x12G\n\x1aupdate_participant_request\x18\x07 \x01(\x0b\x32!.livekit.UpdateParticipantRequestH\x00\x12K\n\x1cupdate_subscriptions_request\x18\x08 \x01(\x0b\x32#.livekit.UpdateSubscriptionsRequestH\x00\x12\x35\n\x11send_data_request\x18\t \x01(\x0b\x32\x18.livekit.SendDataRequestH\x00\x12J\n\x1cupdate_room_metadata_request\x18\n \x01(\x0b\x32\".livekit.UpdateRoomMetadataRequestH\x00\x42\t\n\x07message\"\xb7\x03\n\x0b\x41PICallInfo\x12 \n\nproject_id\x18\x01 \x01(\tB\x0c\xbaP\tprojectID\x12(\n\x07request\x18\x02 \x01(\x0b\x32\x17.livekit.APICallRequest\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x1a\n\x07node_id\x18\x05 \x01(\tB\t\xbaP\x06nodeID\x12\x0e\n\x06status\x18\x06 \x01(\x05\x12\x18\n\x10twirp_error_code\x18\x07 \x01(\t\x12\x1b\n\x13twirp_error_message\x18\x08 \x01(\t\x12\x11\n\troom_name\x18\t \x01(\t\x12\x1a\n\x07room_id\x18\n \x01(\tB\t\xbaP\x06roomID\x12\x1c\n\x14participant_identity\x18\x0b \x01(\t\x12(\n\x0eparticipant_id\x18\x0c \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\r \x01(\tB\n\xbaP\x07trackID\x12.\n\nstarted_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x64uration_ns\x18\x0f \x01(\x03\"\x89\x05\n\x0bWebhookInfo\x12\x1c\n\x08\x65vent_id\x18\x01 \x01(\tB\n\xbaP\x07\x65ventID\x12\r\n\x05\x65vent\x18\x02 \x01(\t\x12 \n\nproject_id\x18\x03 \x01(\tB\x0c\xbaP\tprojectID\x12\x11\n\troom_name\x18\x04 \x01(\t\x12\x1a\n\x07room_id\x18\x05 \x01(\tB\t\xbaP\x06roomID\x12\x1c\n\x14participant_identity\x18\x06 \x01(\t\x12(\n\x0eparticipant_id\x18\x07 \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\x08 \x01(\tB\n\xbaP\x07trackID\x12\x1e\n\tegress_id\x18\t \x01(\tB\x0b\xbaP\x08\x65gressID\x12 \n\ningress_id\x18\n \x01(\tB\x0c\xbaP\tingressID\x12.\n\ncreated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\tqueued_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11queue_duration_ns\x18\r \x01(\x03\x12+\n\x07sent_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10send_duration_ns\x18\x0f \x01(\x03\x12\x0b\n\x03url\x18\x10 \x01(\t\x12\x13\n\x0bnum_dropped\x18\x11 \x01(\x05\x12\x12\n\nis_dropped\x18\x12 \x01(\x08\x12\x16\n\x0eservice_status\x18\x13 \x01(\t\x12\x1a\n\x12service_error_code\x18\x14 \x01(\x05\x12\x15\n\rservice_error\x18\x15 \x01(\t\x12\x12\n\nsend_error\x18\x16 \x01(\t**\n\nStreamType\x12\x0c\n\x08UPSTREAM\x10\x00\x12\x0e\n\nDOWNSTREAM\x10\x01*\xc6\x08\n\x12\x41nalyticsEventType\x12\x10\n\x0cROOM_CREATED\x10\x00\x12\x0e\n\nROOM_ENDED\x10\x01\x12\x16\n\x12PARTICIPANT_JOINED\x10\x02\x12\x14\n\x10PARTICIPANT_LEFT\x10\x03\x12\"\n\x1ePARTICIPANT_CONNECTION_ABORTED\x10-\x12\x13\n\x0fTRACK_PUBLISHED\x10\x04\x12\x1b\n\x17TRACK_PUBLISH_REQUESTED\x10\x14\x12\x15\n\x11TRACK_UNPUBLISHED\x10\x05\x12\x14\n\x10TRACK_SUBSCRIBED\x10\x06\x12\x1d\n\x19TRACK_SUBSCRIBE_REQUESTED\x10\x15\x12\x1a\n\x16TRACK_SUBSCRIBE_FAILED\x10\x19\x12\x16\n\x12TRACK_UNSUBSCRIBED\x10\x07\x12\x1a\n\x16TRACK_PUBLISHED_UPDATE\x10\n\x12\x0f\n\x0bTRACK_MUTED\x10\x17\x12\x11\n\rTRACK_UNMUTED\x10\x18\x12\x17\n\x13TRACK_PUBLISH_STATS\x10\x1a\x12\x19\n\x15TRACK_SUBSCRIBE_STATS\x10\x1b\x12\x16\n\x12PARTICIPANT_ACTIVE\x10\x0b\x12\x17\n\x13PARTICIPANT_RESUMED\x10\x16\x12\x12\n\x0e\x45GRESS_STARTED\x10\x0c\x12\x10\n\x0c\x45GRESS_ENDED\x10\r\x12\x12\n\x0e\x45GRESS_UPDATED\x10\x1c\x12&\n\"TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY\x10\x0e\x12\x0f\n\x0bRECONNECTED\x10\x0f\x12\x13\n\x0fINGRESS_CREATED\x10\x12\x12\x13\n\x0fINGRESS_DELETED\x10\x13\x12\x13\n\x0fINGRESS_STARTED\x10\x10\x12\x11\n\rINGRESS_ENDED\x10\x11\x12\x13\n\x0fINGRESS_UPDATED\x10\x1d\x12\x1d\n\x19SIP_INBOUND_TRUNK_CREATED\x10\x1e\x12\x1d\n\x19SIP_INBOUND_TRUNK_DELETED\x10\x1f\x12\x1e\n\x1aSIP_OUTBOUND_TRUNK_CREATED\x10 \x12\x1e\n\x1aSIP_OUTBOUND_TRUNK_DELETED\x10!\x12\x1d\n\x19SIP_DISPATCH_RULE_CREATED\x10\"\x12\x1d\n\x19SIP_DISPATCH_RULE_DELETED\x10#\x12\x1b\n\x17SIP_PARTICIPANT_CREATED\x10$\x12\x15\n\x11SIP_CALL_INCOMING\x10%\x12\x14\n\x10SIP_CALL_STARTED\x10&\x12\x12\n\x0eSIP_CALL_ENDED\x10\'\x12\x1a\n\x16SIP_TRANSFER_REQUESTED\x10+\x12\x19\n\x15SIP_TRANSFER_COMPLETE\x10,\x12\x13\n\x0fSIP_CALL_UPDATE\x10.\x12\n\n\x06REPORT\x10(\x12\x0c\n\x08\x41PI_CALL\x10)\x12\x0b\n\x07WEBHOOK\x10*BFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17livekit_analytics.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x14livekit_egress.proto\x1a\x15livekit_ingress.proto\x1a\x14livekit_models.proto\x1a\x12livekit_room.proto\x1a\x11livekit_sip.proto\x1a\x14logger/options.proto\"T\n\x13\x41nalyticsVideoLayer\x12\r\n\x05layer\x18\x01 \x01(\x05\x12\x0f\n\x07packets\x18\x02 \x01(\r\x12\r\n\x05\x62ytes\x18\x03 \x01(\x04\x12\x0e\n\x06\x66rames\x18\x04 \x01(\r\"\xd3\x03\n\x0f\x41nalyticsStream\x12\x0c\n\x04ssrc\x18\x01 \x01(\r\x12\x17\n\x0fprimary_packets\x18\x02 \x01(\r\x12\x15\n\rprimary_bytes\x18\x03 \x01(\x04\x12\x1a\n\x12retransmit_packets\x18\x04 \x01(\r\x12\x18\n\x10retransmit_bytes\x18\x05 \x01(\x04\x12\x17\n\x0fpadding_packets\x18\x06 \x01(\r\x12\x15\n\rpadding_bytes\x18\x07 \x01(\x04\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x0e\n\x06\x66rames\x18\t \x01(\r\x12\x0b\n\x03rtt\x18\n \x01(\r\x12\x0e\n\x06jitter\x18\x0b \x01(\r\x12\r\n\x05nacks\x18\x0c \x01(\r\x12\x0c\n\x04plis\x18\r \x01(\r\x12\x0c\n\x04\x66irs\x18\x0e \x01(\r\x12\x32\n\x0cvideo_layers\x18\x0f \x03(\x0b\x32\x1c.livekit.AnalyticsVideoLayer\x12.\n\nstart_time\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1c\n\x14packets_out_of_order\x18\x13 \x01(\r\"\xfb\x02\n\rAnalyticsStat\x12\n\n\x02id\x18\x0e \x01(\t\x12\x15\n\ranalytics_key\x18\x01 \x01(\t\x12!\n\x04kind\x18\x02 \x01(\x0e\x32\x13.livekit.StreamType\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04node\x18\x04 \x01(\t\x12\x1a\n\x07room_id\x18\x05 \x01(\tB\t\xbaP\x06roomID\x12\x11\n\troom_name\x18\x06 \x01(\t\x12(\n\x0eparticipant_id\x18\x07 \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\x08 \x01(\tB\n\xbaP\x07trackID\x12\r\n\x05score\x18\t \x01(\x02\x12)\n\x07streams\x18\n \x03(\x0b\x32\x18.livekit.AnalyticsStream\x12\x0c\n\x04mime\x18\x0b \x01(\t\x12\x11\n\tmin_score\x18\x0c \x01(\x02\x12\x14\n\x0cmedian_score\x18\r \x01(\x02\"7\n\x0e\x41nalyticsStats\x12%\n\x05stats\x18\x01 \x03(\x0b\x32\x16.livekit.AnalyticsStat\"\x9a\x02\n\x13\x41nalyticsClientMeta\x12\x0e\n\x06region\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x13\n\x0b\x63lient_addr\x18\x03 \x01(\t\x12\x1b\n\x13\x63lient_connect_time\x18\x04 \x01(\r\x12\x17\n\x0f\x63onnection_type\x18\x05 \x01(\t\x12\x32\n\x10reconnect_reason\x18\x06 \x01(\x0e\x32\x18.livekit.ReconnectReason\x12\x15\n\x08geo_hash\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x63ountry\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07isp_asn\x18\t \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_geo_hashB\n\n\x08_countryB\n\n\x08_isp_asn\"\x9e\n\n\x0e\x41nalyticsEvent\x12\n\n\x02id\x18\x19 \x01(\t\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.livekit.AnalyticsEventType\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1a\n\x07room_id\x18\x03 \x01(\tB\t\xbaP\x06roomID\x12\x1b\n\x04room\x18\x04 \x01(\x0b\x32\r.livekit.Room\x12(\n\x0eparticipant_id\x18\x05 \x01(\tB\x10\xbaP\rparticipantID\x12-\n\x0bparticipant\x18\x06 \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x1c\n\x08track_id\x18\x07 \x01(\tB\n\xbaP\x07trackID\x12!\n\x05track\x18\x08 \x01(\x0b\x32\x12.livekit.TrackInfo\x12\x15\n\ranalytics_key\x18\n \x01(\t\x12(\n\x0b\x63lient_info\x18\x0b \x01(\x0b\x32\x13.livekit.ClientInfo\x12\x31\n\x0b\x63lient_meta\x18\x0c \x01(\x0b\x32\x1c.livekit.AnalyticsClientMeta\x12\x1e\n\tegress_id\x18\r \x01(\tB\x0b\xbaP\x08\x65gressID\x12 \n\ningress_id\x18\x13 \x01(\tB\x0c\xbaP\tingressID\x12;\n\x1cmax_subscribed_video_quality\x18\x0e \x01(\x0e\x32\x15.livekit.VideoQuality\x12+\n\tpublisher\x18\x0f \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x0c\n\x04mime\x18\x10 \x01(\t\x12#\n\x06\x65gress\x18\x11 \x01(\x0b\x32\x13.livekit.EgressInfo\x12%\n\x07ingress\x18\x12 \x01(\x0b\x32\x14.livekit.IngressInfo\x12\r\n\x05\x65rror\x18\x14 \x01(\t\x12$\n\trtp_stats\x18\x15 \x01(\x0b\x32\x11.livekit.RTPStats\x12\x13\n\x0bvideo_layer\x18\x16 \x01(\x05\x12\x1a\n\x07node_id\x18\x18 \x01(\tB\t\xbaP\x06nodeID\x12!\n\x0bsip_call_id\x18\x1a \x01(\tB\x0c\xbaP\tsipCallID\x12&\n\x08sip_call\x18\x1b \x01(\x0b\x32\x14.livekit.SIPCallInfo\x12#\n\x0csip_trunk_id\x18\x1c \x01(\tB\r\xbaP\nsipTrunkID\x12\x37\n\x11sip_inbound_trunk\x18\x1d \x01(\x0b\x32\x1c.livekit.SIPInboundTrunkInfo\x12\x39\n\x12sip_outbound_trunk\x18\x1e \x01(\x0b\x32\x1d.livekit.SIPOutboundTrunkInfo\x12\x32\n\x14sip_dispatch_rule_id\x18\x1f \x01(\tB\x14\xbaP\x11sipDispatchRuleID\x12\x37\n\x11sip_dispatch_rule\x18 \x01(\x0b\x32\x1c.livekit.SIPDispatchRuleInfo\x12.\n\x0csip_transfer\x18$ \x01(\x0b\x32\x18.livekit.SIPTransferInfo\x12#\n\x06report\x18! \x01(\x0b\x32\x13.livekit.ReportInfo\x12&\n\x08\x61pi_call\x18\" \x01(\x0b\x32\x14.livekit.APICallInfo\x12%\n\x07webhook\x18# \x01(\x0b\x32\x14.livekit.WebhookInfo\":\n\x0f\x41nalyticsEvents\x12\'\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x17.livekit.AnalyticsEvent\"\xa4\x01\n\x18\x41nalyticsRoomParticipant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12-\n\x05state\x18\x04 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12-\n\tjoined_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xb4\x01\n\rAnalyticsRoom\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12 \n\nproject_id\x18\x05 \x01(\tB\x0c\xbaP\tprojectID\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x0cparticipants\x18\x04 \x03(\x0b\x32!.livekit.AnalyticsRoomParticipant\"\x9f\x01\n\x12\x41nalyticsNodeRooms\x12\x1a\n\x07node_id\x18\x01 \x01(\tB\t\xbaP\x06nodeID\x12\x17\n\x0fsequence_number\x18\x02 \x01(\x04\x12-\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x05rooms\x18\x04 \x03(\x0b\x32\x16.livekit.AnalyticsRoom\"K\n\nReportInfo\x12\x32\n\rfeature_usage\x18\x01 \x01(\x0b\x32\x19.livekit.FeatureUsageInfoH\x00\x42\t\n\x07message\"i\n\tTimeRange\x12.\n\nstarted_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nded_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x99\x04\n\x10\x46\x65\x61tureUsageInfo\x12\x32\n\x07\x66\x65\x61ture\x18\x01 \x01(\x0e\x32!.livekit.FeatureUsageInfo.Feature\x12 \n\nproject_id\x18\x02 \x01(\tB\x0c\xbaP\tprojectID\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1a\n\x07room_id\x18\x04 \x01(\tB\t\xbaP\x06roomID\x12\x1c\n\x14participant_identity\x18\x05 \x01(\t\x12(\n\x0eparticipant_id\x18\x06 \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\x07 \x01(\tB\n\xbaP\x07trackID\x12\'\n\x0btime_ranges\x18\x08 \x03(\x0b\x32\x12.livekit.TimeRange\x12@\n\x0c\x66\x65\x61ture_info\x18\t \x03(\x0b\x32*.livekit.FeatureUsageInfo.FeatureInfoEntry\x1a\x32\n\x10\x46\x65\x61tureInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"{\n\x07\x46\x65\x61ture\x12\x1c\n\x18KRISP_NOISE_CANCELLATION\x10\x00\x12\'\n#KRISP_BACKGROUND_VOICE_CANCELLATION\x10\x01\x12\x19\n\x15\x41IC_AUDIO_ENHANCEMENT\x10\x02\x12\x0e\n\nKRISP_VIVA\x10\x03\"\xb3\x05\n\x0e\x41PICallRequest\x12\x39\n\x13\x63reate_room_request\x18\x01 \x01(\x0b\x32\x1a.livekit.CreateRoomRequestH\x00\x12\x37\n\x12list_rooms_request\x18\x02 \x01(\x0b\x32\x19.livekit.ListRoomsRequestH\x00\x12\x39\n\x13\x64\x65lete_room_request\x18\x03 \x01(\x0b\x32\x1a.livekit.DeleteRoomRequestH\x00\x12\x45\n\x19list_participants_request\x18\x04 \x01(\x0b\x32 .livekit.ListParticipantsRequestH\x00\x12\x45\n\x19room_participant_identity\x18\x05 \x01(\x0b\x32 .livekit.RoomParticipantIdentityH\x00\x12@\n\x17mute_room_track_request\x18\x06 \x01(\x0b\x32\x1d.livekit.MuteRoomTrackRequestH\x00\x12G\n\x1aupdate_participant_request\x18\x07 \x01(\x0b\x32!.livekit.UpdateParticipantRequestH\x00\x12K\n\x1cupdate_subscriptions_request\x18\x08 \x01(\x0b\x32#.livekit.UpdateSubscriptionsRequestH\x00\x12\x35\n\x11send_data_request\x18\t \x01(\x0b\x32\x18.livekit.SendDataRequestH\x00\x12J\n\x1cupdate_room_metadata_request\x18\n \x01(\x0b\x32\".livekit.UpdateRoomMetadataRequestH\x00\x42\t\n\x07message\"\xb7\x03\n\x0b\x41PICallInfo\x12 \n\nproject_id\x18\x01 \x01(\tB\x0c\xbaP\tprojectID\x12(\n\x07request\x18\x02 \x01(\x0b\x32\x17.livekit.APICallRequest\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x1a\n\x07node_id\x18\x05 \x01(\tB\t\xbaP\x06nodeID\x12\x0e\n\x06status\x18\x06 \x01(\x05\x12\x18\n\x10twirp_error_code\x18\x07 \x01(\t\x12\x1b\n\x13twirp_error_message\x18\x08 \x01(\t\x12\x11\n\troom_name\x18\t \x01(\t\x12\x1a\n\x07room_id\x18\n \x01(\tB\t\xbaP\x06roomID\x12\x1c\n\x14participant_identity\x18\x0b \x01(\t\x12(\n\x0eparticipant_id\x18\x0c \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\r \x01(\tB\n\xbaP\x07trackID\x12.\n\nstarted_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x64uration_ns\x18\x0f \x01(\x03\"\xa3\x05\n\x0bWebhookInfo\x12\x1c\n\x08\x65vent_id\x18\x01 \x01(\tB\n\xbaP\x07\x65ventID\x12\r\n\x05\x65vent\x18\x02 \x01(\t\x12 \n\nproject_id\x18\x03 \x01(\tB\x0c\xbaP\tprojectID\x12\x11\n\troom_name\x18\x04 \x01(\t\x12\x1a\n\x07room_id\x18\x05 \x01(\tB\t\xbaP\x06roomID\x12\x1c\n\x14participant_identity\x18\x06 \x01(\t\x12(\n\x0eparticipant_id\x18\x07 \x01(\tB\x10\xbaP\rparticipantID\x12\x1c\n\x08track_id\x18\x08 \x01(\tB\n\xbaP\x07trackID\x12\x1e\n\tegress_id\x18\t \x01(\tB\x0b\xbaP\x08\x65gressID\x12 \n\ningress_id\x18\n \x01(\tB\x0c\xbaP\tingressID\x12.\n\ncreated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\tqueued_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11queue_duration_ns\x18\r \x01(\x03\x12+\n\x07sent_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10send_duration_ns\x18\x0f \x01(\x03\x12\x0b\n\x03url\x18\x10 \x01(\t\x12\x13\n\x0bnum_dropped\x18\x11 \x01(\x05\x12\x12\n\nis_dropped\x18\x12 \x01(\x08\x12\x16\n\x0eservice_status\x18\x13 \x01(\t\x12\x1a\n\x12service_error_code\x18\x14 \x01(\x05\x12\x15\n\rservice_error\x18\x15 \x01(\t\x12\x12\n\nsend_error\x18\x16 \x01(\t\x12\x18\n\x10http_status_code\x18\x17 \x01(\x05**\n\nStreamType\x12\x0c\n\x08UPSTREAM\x10\x00\x12\x0e\n\nDOWNSTREAM\x10\x01*\xc6\x08\n\x12\x41nalyticsEventType\x12\x10\n\x0cROOM_CREATED\x10\x00\x12\x0e\n\nROOM_ENDED\x10\x01\x12\x16\n\x12PARTICIPANT_JOINED\x10\x02\x12\x14\n\x10PARTICIPANT_LEFT\x10\x03\x12\"\n\x1ePARTICIPANT_CONNECTION_ABORTED\x10-\x12\x13\n\x0fTRACK_PUBLISHED\x10\x04\x12\x1b\n\x17TRACK_PUBLISH_REQUESTED\x10\x14\x12\x15\n\x11TRACK_UNPUBLISHED\x10\x05\x12\x14\n\x10TRACK_SUBSCRIBED\x10\x06\x12\x1d\n\x19TRACK_SUBSCRIBE_REQUESTED\x10\x15\x12\x1a\n\x16TRACK_SUBSCRIBE_FAILED\x10\x19\x12\x16\n\x12TRACK_UNSUBSCRIBED\x10\x07\x12\x1a\n\x16TRACK_PUBLISHED_UPDATE\x10\n\x12\x0f\n\x0bTRACK_MUTED\x10\x17\x12\x11\n\rTRACK_UNMUTED\x10\x18\x12\x17\n\x13TRACK_PUBLISH_STATS\x10\x1a\x12\x19\n\x15TRACK_SUBSCRIBE_STATS\x10\x1b\x12\x16\n\x12PARTICIPANT_ACTIVE\x10\x0b\x12\x17\n\x13PARTICIPANT_RESUMED\x10\x16\x12\x12\n\x0e\x45GRESS_STARTED\x10\x0c\x12\x10\n\x0c\x45GRESS_ENDED\x10\r\x12\x12\n\x0e\x45GRESS_UPDATED\x10\x1c\x12&\n\"TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY\x10\x0e\x12\x0f\n\x0bRECONNECTED\x10\x0f\x12\x13\n\x0fINGRESS_CREATED\x10\x12\x12\x13\n\x0fINGRESS_DELETED\x10\x13\x12\x13\n\x0fINGRESS_STARTED\x10\x10\x12\x11\n\rINGRESS_ENDED\x10\x11\x12\x13\n\x0fINGRESS_UPDATED\x10\x1d\x12\x1d\n\x19SIP_INBOUND_TRUNK_CREATED\x10\x1e\x12\x1d\n\x19SIP_INBOUND_TRUNK_DELETED\x10\x1f\x12\x1e\n\x1aSIP_OUTBOUND_TRUNK_CREATED\x10 \x12\x1e\n\x1aSIP_OUTBOUND_TRUNK_DELETED\x10!\x12\x1d\n\x19SIP_DISPATCH_RULE_CREATED\x10\"\x12\x1d\n\x19SIP_DISPATCH_RULE_DELETED\x10#\x12\x1b\n\x17SIP_PARTICIPANT_CREATED\x10$\x12\x15\n\x11SIP_CALL_INCOMING\x10%\x12\x14\n\x10SIP_CALL_STARTED\x10&\x12\x12\n\x0eSIP_CALL_ENDED\x10\'\x12\x1a\n\x16SIP_TRANSFER_REQUESTED\x10+\x12\x19\n\x15SIP_TRANSFER_COMPLETE\x10,\x12\x13\n\x0fSIP_CALL_UPDATE\x10.\x12\n\n\x06REPORT\x10(\x12\x0c\n\x08\x41PI_CALL\x10)\x12\x0b\n\x07WEBHOOK\x10*BFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -101,10 +101,10 @@ _globals['_WEBHOOKINFO'].fields_by_name['egress_id']._serialized_options = b'\272P\010egressID' _globals['_WEBHOOKINFO'].fields_by_name['ingress_id']._loaded_options = None _globals['_WEBHOOKINFO'].fields_by_name['ingress_id']._serialized_options = b'\272P\tingressID' - _globals['_STREAMTYPE']._serialized_start=5874 - _globals['_STREAMTYPE']._serialized_end=5916 - _globals['_ANALYTICSEVENTTYPE']._serialized_start=5919 - _globals['_ANALYTICSEVENTTYPE']._serialized_end=7013 + _globals['_STREAMTYPE']._serialized_start=5900 + _globals['_STREAMTYPE']._serialized_end=5942 + _globals['_ANALYTICSEVENTTYPE']._serialized_start=5945 + _globals['_ANALYTICSEVENTTYPE']._serialized_end=7039 _globals['_ANALYTICSVIDEOLAYER']._serialized_start=197 _globals['_ANALYTICSVIDEOLAYER']._serialized_end=281 _globals['_ANALYTICSSTREAM']._serialized_start=284 @@ -140,5 +140,5 @@ _globals['_APICALLINFO']._serialized_start=4781 _globals['_APICALLINFO']._serialized_end=5220 _globals['_WEBHOOKINFO']._serialized_start=5223 - _globals['_WEBHOOKINFO']._serialized_end=5872 + _globals['_WEBHOOKINFO']._serialized_end=5898 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/analytics.pyi b/livekit-protocol/livekit/protocol/analytics.pyi index f5d22191..3ee817bf 100644 --- a/livekit-protocol/livekit/protocol/analytics.pyi +++ b/livekit-protocol/livekit/protocol/analytics.pyi @@ -455,7 +455,7 @@ class APICallInfo(_message.Message): def __init__(self, project_id: _Optional[str] = ..., request: _Optional[_Union[APICallRequest, _Mapping]] = ..., service: _Optional[str] = ..., method: _Optional[str] = ..., node_id: _Optional[str] = ..., status: _Optional[int] = ..., twirp_error_code: _Optional[str] = ..., twirp_error_message: _Optional[str] = ..., room_name: _Optional[str] = ..., room_id: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_id: _Optional[str] = ..., track_id: _Optional[str] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration_ns: _Optional[int] = ...) -> None: ... class WebhookInfo(_message.Message): - __slots__ = ("event_id", "event", "project_id", "room_name", "room_id", "participant_identity", "participant_id", "track_id", "egress_id", "ingress_id", "created_at", "queued_at", "queue_duration_ns", "sent_at", "send_duration_ns", "url", "num_dropped", "is_dropped", "service_status", "service_error_code", "service_error", "send_error") + __slots__ = ("event_id", "event", "project_id", "room_name", "room_id", "participant_identity", "participant_id", "track_id", "egress_id", "ingress_id", "created_at", "queued_at", "queue_duration_ns", "sent_at", "send_duration_ns", "url", "num_dropped", "is_dropped", "service_status", "service_error_code", "service_error", "send_error", "http_status_code") EVENT_ID_FIELD_NUMBER: _ClassVar[int] EVENT_FIELD_NUMBER: _ClassVar[int] PROJECT_ID_FIELD_NUMBER: _ClassVar[int] @@ -478,6 +478,7 @@ class WebhookInfo(_message.Message): SERVICE_ERROR_CODE_FIELD_NUMBER: _ClassVar[int] SERVICE_ERROR_FIELD_NUMBER: _ClassVar[int] SEND_ERROR_FIELD_NUMBER: _ClassVar[int] + HTTP_STATUS_CODE_FIELD_NUMBER: _ClassVar[int] event_id: str event: str project_id: str @@ -500,4 +501,5 @@ class WebhookInfo(_message.Message): service_error_code: int service_error: str send_error: str - def __init__(self, event_id: _Optional[str] = ..., event: _Optional[str] = ..., project_id: _Optional[str] = ..., room_name: _Optional[str] = ..., room_id: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_id: _Optional[str] = ..., track_id: _Optional[str] = ..., egress_id: _Optional[str] = ..., ingress_id: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., queued_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., queue_duration_ns: _Optional[int] = ..., sent_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., send_duration_ns: _Optional[int] = ..., url: _Optional[str] = ..., num_dropped: _Optional[int] = ..., is_dropped: bool = ..., service_status: _Optional[str] = ..., service_error_code: _Optional[int] = ..., service_error: _Optional[str] = ..., send_error: _Optional[str] = ...) -> None: ... + http_status_code: int + def __init__(self, event_id: _Optional[str] = ..., event: _Optional[str] = ..., project_id: _Optional[str] = ..., room_name: _Optional[str] = ..., room_id: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_id: _Optional[str] = ..., track_id: _Optional[str] = ..., egress_id: _Optional[str] = ..., ingress_id: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., queued_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., queue_duration_ns: _Optional[int] = ..., sent_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., send_duration_ns: _Optional[int] = ..., url: _Optional[str] = ..., num_dropped: _Optional[int] = ..., is_dropped: bool = ..., service_status: _Optional[str] = ..., service_error_code: _Optional[int] = ..., service_error: _Optional[str] = ..., send_error: _Optional[str] = ..., http_status_code: _Optional[int] = ...) -> None: ... diff --git a/livekit-protocol/protocol b/livekit-protocol/protocol index 2172178d..81425864 160000 --- a/livekit-protocol/protocol +++ b/livekit-protocol/protocol @@ -1 +1 @@ -Subproject commit 2172178d20d4c8d14d6873b4e9560cc38cf48c0c +Subproject commit 814258644c5d86fec64a24f5cd617411d3c6890b