@livekit/protocol 1.52.1 → 1.53.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -53,6 +53,21 @@ export const JobStatus = /*@__PURE__*/ proto3.makeEnum(
53
53
  {no: 1, name: "JS_RUNNING"},
54
54
  {no: 2, name: "JS_SUCCESS"},
55
55
  {no: 3, name: "JS_FAILED"},
56
+ {no: 4, name: "JS_CANCELLED"},
57
+ ],
58
+ );
59
+
60
+ /**
61
+ * @generated from enum livekit.JobStateReason
62
+ */
63
+ export const JobStateReason = /*@__PURE__*/ proto3.makeEnum(
64
+ "livekit.JobStateReason",
65
+ [
66
+ {no: 0, name: "JSR_UNSPECIFIED"},
67
+ {no: 1, name: "JSR_NO_CAPACITY"},
68
+ {no: 2, name: "JSR_ROOM_CLOSED"},
69
+ {no: 3, name: "JSR_DISPATCH_DELETED"},
70
+ {no: 4, name: "JSR_RETRYING"},
56
71
  ],
57
72
  );
58
73
 
@@ -92,6 +107,7 @@ export const JobState = /*@__PURE__*/ proto3.makeMessageType(
92
107
  { no: 6, name: "participant_identity", kind: "scalar", T: 9 /* ScalarType.STRING */ },
93
108
  { no: 7, name: "worker_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
94
109
  { no: 8, name: "agent_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
110
+ { no: 9, name: "reason", kind: "enum", T: proto3.getEnumType(JobStateReason) },
95
111
  ],
96
112
  );
97
113
 
@@ -126,6 +142,7 @@ export const ServerMessage = /*@__PURE__*/ proto3.makeMessageType(
126
142
  { no: 3, name: "assignment", kind: "message", T: JobAssignment, oneof: "message" },
127
143
  { no: 5, name: "termination", kind: "message", T: JobTermination, oneof: "message" },
128
144
  { no: 4, name: "pong", kind: "message", T: WorkerPong, oneof: "message" },
145
+ { no: 6, name: "go_away", kind: "message", T: AgentHttp_GoAway, oneof: "message" },
129
146
  ],
130
147
  );
131
148
 
@@ -175,6 +192,9 @@ export const RegisterWorkerRequest = /*@__PURE__*/ proto3.makeMessageType(
175
192
  { no: 6, name: "namespace", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
176
193
  { no: 7, name: "allowed_permissions", kind: "message", T: ParticipantPermission },
177
194
  { no: 9, name: "deployment", kind: "scalar", T: 9 /* ScalarType.STRING */ },
195
+ { no: 10, name: "endpoints", kind: "message", T: AgentHttp_AgentEndpoint, repeated: true },
196
+ { no: 11, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
197
+ { no: 12, name: "endpoint_protocol", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
178
198
  ],
179
199
  );
180
200
 
@@ -186,6 +206,7 @@ export const RegisterWorkerResponse = /*@__PURE__*/ proto3.makeMessageType(
186
206
  () => [
187
207
  { no: 1, name: "worker_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
188
208
  { no: 3, name: "server_info", kind: "message", T: ServerInfo },
209
+ { no: 4, name: "endpoint_settings", kind: "message", T: AgentHttp_AgentEndpointSettings },
189
210
  ],
190
211
  );
191
212
 
@@ -196,6 +217,7 @@ export const MigrateJobRequest = /*@__PURE__*/ proto3.makeMessageType(
196
217
  "livekit.MigrateJobRequest",
197
218
  () => [
198
219
  { no: 2, name: "job_ids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
220
+ { no: 3, name: "jobs", kind: "message", T: Job, repeated: true },
199
221
  ],
200
222
  );
201
223
 
@@ -248,6 +270,8 @@ export const UpdateWorkerStatus = /*@__PURE__*/ proto3.makeMessageType(
248
270
  { no: 1, name: "status", kind: "enum", T: proto3.getEnumType(WorkerStatus), opt: true },
249
271
  { no: 3, name: "load", kind: "scalar", T: 2 /* ScalarType.FLOAT */ },
250
272
  { no: 4, name: "job_count", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
273
+ { no: 5, name: "draining", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
274
+ { no: 6, name: "seq", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
251
275
  ],
252
276
  );
253
277
 
@@ -273,3 +297,149 @@ export const JobTermination = /*@__PURE__*/ proto3.makeMessageType(
273
297
  ],
274
298
  );
275
299
 
300
+ /**
301
+ * ----- agent HTTP endpoints data plane -----
302
+ *
303
+ * AgentHttp namespaces the data plane: workers expose HTTP endpoints served at
304
+ * /agents/{agent_name}/{deployment}/{path} without binding any local listener.
305
+ * The worker opens ONE WebTransport (QUIC) session to /agent that carries both
306
+ * its control stream (the same WorkerMessage/ServerMessage exchange as the
307
+ * WebSocket control connection, length-delimited) and every HTTP exchange: the
308
+ * node opens one bidirectional QUIC stream per request. QUIC provides the
309
+ * multiplexing and per-stream flow control, so there is no credit accounting
310
+ * and no attach handshake.
311
+ *
312
+ * Each exchange stream is:
313
+ *
314
+ * [len:u32be][StreamPreamble] the only LiveKit framing
315
+ * [ ... opaque bytes ... ] one HTTP/1.1 exchange, to FIN or RESET_STREAM
316
+ *
317
+ * After the preamble the stream is byte-transparent: the node writes a
318
+ * canonical HTTP/1.1 request and the worker replies with an HTTP/1.1 response,
319
+ * each parsed by whatever HTTP implementation the side already has. A WebSocket
320
+ * upgrade is therefore an ordinary request whose response is a 101, after which
321
+ * the stream is a byte pipe. The protocol evolves by version negotiation at
322
+ * registration, so the preamble carries no version of its own.
323
+ *
324
+ * Bodies use ordinary HTTP/1.1 framing, Content-Length or chunked, and are
325
+ * unbounded: a body may be many gigabytes and must be streamed. Request and
326
+ * response size limits are policy for the layer above.
327
+ *
328
+ * How one direction ends:
329
+ *
330
+ * success end of message per the body's own framing, then FIN.
331
+ * failed mid-body chunked trailer fields x-lk-completion and x-lk-error,
332
+ * in band, so the outcome cannot race the bytes it
333
+ * describes.
334
+ * failed before any RESET_STREAM carrying an HttpStreamResetCode, sound
335
+ * bytes only here, where nothing is in flight.
336
+ *
337
+ * FIN before the body's own framing says it is complete is truncation, and a
338
+ * receiver must surface it as such.
339
+ *
340
+ * The x-lk- header prefix is reserved for this signalling in both directions.
341
+ * A node strips it from client-supplied request headers, so a client cannot
342
+ * forge one, and strips it from responses, so it never reaches the end client.
343
+ *
344
+ * @generated from message livekit.AgentHttp
345
+ */
346
+ export const AgentHttp = /*@__PURE__*/ proto3.makeMessageType(
347
+ "livekit.AgentHttp",
348
+ [],
349
+ );
350
+
351
+ /**
352
+ * @generated from enum livekit.AgentHttp.AgentEndpointKind
353
+ */
354
+ export const AgentHttp_AgentEndpointKind = /*@__PURE__*/ proto3.makeEnum(
355
+ "livekit.AgentHttp.AgentEndpointKind",
356
+ [
357
+ {no: 0, name: "AEK_HTTP"},
358
+ {no: 1, name: "AEK_TEXT"},
359
+ ],
360
+ );
361
+
362
+ /**
363
+ * why a stream was reset before any HTTP bytes flowed. This travels as the
364
+ * QUIC RESET_STREAM / STOP_SENDING error code, so it is a number with no room
365
+ * for detail: the reason string is logged by the side that reset and joined
366
+ * to this by request_id. An outcome after bytes have flowed travels in
367
+ * trailers instead, where it cannot race them.
368
+ *
369
+ * @generated from enum livekit.AgentHttp.HttpStreamResetCode
370
+ */
371
+ export const AgentHttp_HttpStreamResetCode = /*@__PURE__*/ proto3.makeEnum(
372
+ "livekit.AgentHttp.HttpStreamResetCode",
373
+ [
374
+ {no: 0, name: "HSR_ABORT"},
375
+ {no: 1, name: "HSR_REFUSED"},
376
+ {no: 2, name: "HSR_INTERNAL"},
377
+ {no: 3, name: "HSR_TIMEOUT"},
378
+ {no: 4, name: "HSR_PROTOCOL"},
379
+ ],
380
+ );
381
+
382
+ /**
383
+ * @generated from message livekit.AgentHttp.AgentEndpoint
384
+ */
385
+ export const AgentHttp_AgentEndpoint = /*@__PURE__*/ proto3.makeMessageType(
386
+ "livekit.AgentHttp.AgentEndpoint",
387
+ () => [
388
+ { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ },
389
+ { no: 2, name: "methods", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
390
+ { no: 3, name: "kind", kind: "enum", T: proto3.getEnumType(AgentHttp_AgentEndpointKind) },
391
+ { no: 4, name: "public", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
392
+ ],
393
+ {localName: "AgentHttp_AgentEndpoint"},
394
+ );
395
+
396
+ /**
397
+ * registration-level settings negotiated on the control connection, returned
398
+ * in RegisterWorkerResponse when the worker declares endpoints and the server
399
+ * supports the data plane.
400
+ *
401
+ * @generated from message livekit.AgentHttp.AgentEndpointSettings
402
+ */
403
+ export const AgentHttp_AgentEndpointSettings = /*@__PURE__*/ proto3.makeMessageType(
404
+ "livekit.AgentHttp.AgentEndpointSettings",
405
+ () => [
406
+ { no: 1, name: "protocol", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
407
+ ],
408
+ {localName: "AgentHttp_AgentEndpointSettings"},
409
+ );
410
+
411
+ /**
412
+ * the first thing on every exchange stream, node -> worker. It carries only
413
+ * what the worker cannot derive from the HTTP bytes that follow and what it
414
+ * must not infer from client-supplied headers - identity above all.
415
+ *
416
+ * @generated from message livekit.AgentHttp.StreamPreamble
417
+ */
418
+ export const AgentHttp_StreamPreamble = /*@__PURE__*/ proto3.makeMessageType(
419
+ "livekit.AgentHttp.StreamPreamble",
420
+ () => [
421
+ { no: 1, name: "kind", kind: "enum", T: proto3.getEnumType(AgentHttp_AgentEndpointKind) },
422
+ { no: 2, name: "request_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
423
+ { no: 3, name: "authorized", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
424
+ { no: 4, name: "route", kind: "scalar", T: 9 /* ScalarType.STRING */ },
425
+ { no: 5, name: "timeout_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
426
+ { no: 6, name: "client_addr", kind: "scalar", T: 9 /* ScalarType.STRING */ },
427
+ { no: 7, name: "scheme", kind: "scalar", T: 9 /* ScalarType.STRING */ },
428
+ ],
429
+ {localName: "AgentHttp_StreamPreamble"},
430
+ );
431
+
432
+ /**
433
+ * the server is draining: the worker should re-register elsewhere; in-flight
434
+ * HTTP exchanges run to completion
435
+ *
436
+ * @generated from message livekit.AgentHttp.GoAway
437
+ */
438
+ export const AgentHttp_GoAway = /*@__PURE__*/ proto3.makeMessageType(
439
+ "livekit.AgentHttp.GoAway",
440
+ () => [
441
+ { no: 1, name: "reason", kind: "scalar", T: 9 /* ScalarType.STRING */ },
442
+ ],
443
+ {localName: "AgentHttp_GoAway"},
444
+ );
445
+
@@ -261,9 +261,9 @@ export declare class SimulationRun extends Message<SimulationRun> {
261
261
  /**
262
262
  * Absent when the run ran each scenario once and required it to pass.
263
263
  *
264
- * @generated from field: optional livekit.SimulationRun.Sampling sampling = 23;
264
+ * @generated from field: optional livekit.SimulationRun.SamplingOptions sampling = 23;
265
265
  */
266
- sampling?: SimulationRun_Sampling;
266
+ sampling?: SimulationRun_SamplingOptions;
267
267
 
268
268
  constructor(data?: PartialMessage<SimulationRun>);
269
269
 
@@ -407,6 +407,13 @@ export declare class SimulationRun_Job extends Message<SimulationRun_Job> {
407
407
  */
408
408
  sample: number;
409
409
 
410
+ /**
411
+ * Set on a failed job whose cause is known; error stays the detail.
412
+ *
413
+ * @generated from field: livekit.SimulationRun.Job.FailureReason failure_reason = 19;
414
+ */
415
+ failureReason: SimulationRun_Job_FailureReason;
416
+
410
417
  constructor(data?: PartialMessage<SimulationRun_Job>);
411
418
 
412
419
  static readonly runtime: typeof proto3;
@@ -452,6 +459,23 @@ export declare enum SimulationRun_Job_Status {
452
459
  CANCELLED = 4,
453
460
  }
454
461
 
462
+ /**
463
+ * @generated from enum livekit.SimulationRun.Job.FailureReason
464
+ */
465
+ export declare enum SimulationRun_Job_FailureReason {
466
+ /**
467
+ * @generated from enum value: FAILURE_REASON_UNSPECIFIED = 0;
468
+ */
469
+ UNSPECIFIED = 0,
470
+
471
+ /**
472
+ * The agent under test never joined the simulation's room.
473
+ *
474
+ * @generated from enum value: FAILURE_REASON_AGENT_JOIN_TIMEOUT = 1;
475
+ */
476
+ AGENT_JOIN_TIMEOUT = 1,
477
+ }
478
+
455
479
  /**
456
480
  * @generated from message livekit.SimulationRun.Job.Usage
457
481
  */
@@ -585,6 +609,36 @@ export declare class SimulationRun_JobMetrics extends Message<SimulationRun_JobM
585
609
  */
586
610
  conversationProgression?: number;
587
611
 
612
+ /**
613
+ * How the call ended. A failing end also sets the job's error.
614
+ *
615
+ * @generated from field: livekit.SimulationRun.JobMetrics.EndReason end_reason = 21;
616
+ */
617
+ endReason: SimulationRun_JobMetrics_EndReason;
618
+
619
+ /**
620
+ * The simulated caller's language, as a language tag: what it spoke or wrote.
621
+ *
622
+ * @generated from field: string caller_language = 22;
623
+ */
624
+ callerLanguage: string;
625
+
626
+ /**
627
+ * Audio only: the language the caller transcribed the agent in; "" means
628
+ * caller_language.
629
+ *
630
+ * @generated from field: string caller_listen_language = 23;
631
+ */
632
+ callerListenLanguage: string;
633
+
634
+ /**
635
+ * Audio only: what the caller's audio went through before the agent heard
636
+ * it. Absent for a clean call.
637
+ *
638
+ * @generated from field: livekit.SimulationImpairments impairments = 24;
639
+ */
640
+ impairments?: SimulationImpairments;
641
+
588
642
  constructor(data?: PartialMessage<SimulationRun_JobMetrics>);
589
643
 
590
644
  static readonly runtime: typeof proto3;
@@ -600,6 +654,58 @@ export declare class SimulationRun_JobMetrics extends Message<SimulationRun_JobM
600
654
  static equals(a: SimulationRun_JobMetrics | PlainMessage<SimulationRun_JobMetrics> | undefined, b: SimulationRun_JobMetrics | PlainMessage<SimulationRun_JobMetrics> | undefined): boolean;
601
655
  }
602
656
 
657
+ /**
658
+ * @generated from enum livekit.SimulationRun.JobMetrics.EndReason
659
+ */
660
+ export declare enum SimulationRun_JobMetrics_EndReason {
661
+ /**
662
+ * @generated from enum value: END_REASON_UNSPECIFIED = 0;
663
+ */
664
+ UNSPECIFIED = 0,
665
+
666
+ /**
667
+ * the caller finished the scenario
668
+ *
669
+ * @generated from enum value: END_REASON_SCENARIO_COMPLETED = 1;
670
+ */
671
+ SCENARIO_COMPLETED = 1,
672
+
673
+ /**
674
+ * the agent under test ended the call
675
+ *
676
+ * @generated from enum value: END_REASON_AGENT_ENDED = 2;
677
+ */
678
+ AGENT_ENDED = 2,
679
+
680
+ /**
681
+ * the agent under test went silent
682
+ *
683
+ * @generated from enum value: END_REASON_INACTIVITY = 3;
684
+ */
685
+ INACTIVITY = 3,
686
+
687
+ /**
688
+ * the caller ran out of turns
689
+ *
690
+ * @generated from enum value: END_REASON_TURN_LIMIT = 4;
691
+ */
692
+ TURN_LIMIT = 4,
693
+
694
+ /**
695
+ * the agent under test kept replying with nothing
696
+ *
697
+ * @generated from enum value: END_REASON_EMPTY_RESPONSE = 5;
698
+ */
699
+ EMPTY_RESPONSE = 5,
700
+
701
+ /**
702
+ * the agent under test failed mid-call
703
+ *
704
+ * @generated from enum value: END_REASON_AGENT_ERROR = 6;
705
+ */
706
+ AGENT_ERROR = 6,
707
+ }
708
+
603
709
  /**
604
710
  * The agent's perception of the caller. Audio only.
605
711
  *
@@ -947,6 +1053,13 @@ export declare class SimulationRun_JobMetrics_Conversation extends Message<Simul
947
1053
  */
948
1054
  e2eLatencyMs?: number;
949
1055
 
1056
+ /**
1057
+ * the caller's acknowledgements over the agent's speech
1058
+ *
1059
+ * @generated from field: optional uint32 backchannel_count = 16;
1060
+ */
1061
+ backchannelCount?: number;
1062
+
950
1063
  constructor(data?: PartialMessage<SimulationRun_JobMetrics_Conversation>);
951
1064
 
952
1065
  static readonly runtime: typeof proto3;
@@ -983,6 +1096,15 @@ export declare class SimulationRun_JobMetrics_Turn extends Message<SimulationRun
983
1096
  */
984
1097
  role: ChatRole;
985
1098
 
1099
+ /**
1100
+ * The words the judges read for this turn: the speaker's own, or as the
1101
+ * other side heard them when those are unknown (the agent's, without a
1102
+ * RemoteSession).
1103
+ *
1104
+ * @generated from field: string text = 18;
1105
+ */
1106
+ text: string;
1107
+
986
1108
  /**
987
1109
  * audio only; relative to t0; unset if the turn could not be aligned to the audio
988
1110
  *
@@ -1221,9 +1343,9 @@ export declare class SimulationRun_CI extends Message<SimulationRun_CI> {
1221
1343
  * Runs each scenario more than once, so a flaky sample is distinguishable
1222
1344
  * from a broken scenario. Both fields are required when it is present.
1223
1345
  *
1224
- * @generated from message livekit.SimulationRun.Sampling
1346
+ * @generated from message livekit.SimulationRun.SamplingOptions
1225
1347
  */
1226
- export declare class SimulationRun_Sampling extends Message<SimulationRun_Sampling> {
1348
+ export declare class SimulationRun_SamplingOptions extends Message<SimulationRun_SamplingOptions> {
1227
1349
  /**
1228
1350
  * Samples per scenario, > 1. The run holds scenarios × samples jobs,
1229
1351
  * subject to the usual job cap.
@@ -1241,19 +1363,19 @@ export declare class SimulationRun_Sampling extends Message<SimulationRun_Sampli
1241
1363
  */
1242
1364
  passRate: number;
1243
1365
 
1244
- constructor(data?: PartialMessage<SimulationRun_Sampling>);
1366
+ constructor(data?: PartialMessage<SimulationRun_SamplingOptions>);
1245
1367
 
1246
1368
  static readonly runtime: typeof proto3;
1247
- static readonly typeName = "livekit.SimulationRun.Sampling";
1369
+ static readonly typeName = "livekit.SimulationRun.SamplingOptions";
1248
1370
  static readonly fields: FieldList;
1249
1371
 
1250
- static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SimulationRun_Sampling;
1372
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SimulationRun_SamplingOptions;
1251
1373
 
1252
- static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SimulationRun_Sampling;
1374
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SimulationRun_SamplingOptions;
1253
1375
 
1254
- static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SimulationRun_Sampling;
1376
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SimulationRun_SamplingOptions;
1255
1377
 
1256
- static equals(a: SimulationRun_Sampling | PlainMessage<SimulationRun_Sampling> | undefined, b: SimulationRun_Sampling | PlainMessage<SimulationRun_Sampling> | undefined): boolean;
1378
+ static equals(a: SimulationRun_SamplingOptions | PlainMessage<SimulationRun_SamplingOptions> | undefined, b: SimulationRun_SamplingOptions | PlainMessage<SimulationRun_SamplingOptions> | undefined): boolean;
1257
1379
  }
1258
1380
 
1259
1381
  /**
@@ -1324,6 +1446,7 @@ export declare class SimulationRun_Create_Request extends Message<SimulationRun_
1324
1446
 
1325
1447
  /**
1326
1448
  * Impairments applied to the simulated user's audio; AUDIO mode only.
1449
+ * TODO(u9g): migrate these to SimulationImpairments.
1327
1450
  *
1328
1451
  * @generated from field: bool background_noise = 10;
1329
1452
  */
@@ -1349,9 +1472,9 @@ export declare class SimulationRun_Create_Request extends Message<SimulationRun_
1349
1472
  * scenario_group. The run fails if any scenario fails; pass@k and
1350
1473
  * pass^k report over scenarios and neither gates.
1351
1474
  *
1352
- * @generated from field: optional livekit.SimulationRun.Sampling sampling = 14;
1475
+ * @generated from field: optional livekit.SimulationRun.SamplingOptions sampling = 14;
1353
1476
  */
1354
- sampling?: SimulationRun_Sampling;
1477
+ sampling?: SimulationRun_SamplingOptions;
1355
1478
 
1356
1479
  constructor(data?: PartialMessage<SimulationRun_Create_Request>);
1357
1480
 
@@ -1914,7 +2037,7 @@ export declare class Scenario extends Message<Scenario> {
1914
2037
  agentExpectations: string;
1915
2038
 
1916
2039
  /**
1917
- * Set as participant attributes on the simulation participant's access token.
2040
+ * Surfaced to the agent under test as SimulationContext scenario tags.
1918
2041
  *
1919
2042
  * @generated from field: map<string, string> tags = 4;
1920
2043
  */
@@ -2068,8 +2191,45 @@ export declare class ScenarioGroup extends Message<ScenarioGroup> {
2068
2191
  }
2069
2192
 
2070
2193
  /**
2071
- * Carried (protojson-encoded) in the simulation room's metadata so the agent
2072
- * under test can read the scenario + run identity synchronously at connect.
2194
+ * What the simulated caller's audio went through before the agent heard it.
2195
+ *
2196
+ * @generated from message livekit.SimulationImpairments
2197
+ */
2198
+ export declare class SimulationImpairments extends Message<SimulationImpairments> {
2199
+ /**
2200
+ * @generated from field: bool background_noise = 1;
2201
+ */
2202
+ backgroundNoise: boolean;
2203
+
2204
+ /**
2205
+ * @generated from field: bool low_quality_microphone = 2;
2206
+ */
2207
+ lowQualityMicrophone: boolean;
2208
+
2209
+ /**
2210
+ * @generated from field: bool packet_loss = 3;
2211
+ */
2212
+ packetLoss: boolean;
2213
+
2214
+ constructor(data?: PartialMessage<SimulationImpairments>);
2215
+
2216
+ static readonly runtime: typeof proto3;
2217
+ static readonly typeName = "livekit.SimulationImpairments";
2218
+ static readonly fields: FieldList;
2219
+
2220
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SimulationImpairments;
2221
+
2222
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SimulationImpairments;
2223
+
2224
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SimulationImpairments;
2225
+
2226
+ static equals(a: SimulationImpairments | PlainMessage<SimulationImpairments> | undefined, b: SimulationImpairments | PlainMessage<SimulationImpairments> | undefined): boolean;
2227
+ }
2228
+
2229
+ /**
2230
+ * Carried (protojson-encoded) in the Job's lk.simulator.dispatch attribute, set
2231
+ * on the agent dispatch, so the agent under test can read the scenario + run
2232
+ * identity synchronously at job start.
2073
2233
  *
2074
2234
  * @generated from message livekit.SimulationDispatch
2075
2235
  */
@@ -91,7 +91,7 @@ export const SimulationRun = /*@__PURE__*/ proto3.makeMessageType(
91
91
  { no: 20, name: "summary_zstd", kind: "scalar", T: 12 /* ScalarType.BYTES */ },
92
92
  { no: 21, name: "issue_count", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true },
93
93
  { no: 22, name: "ci", kind: "message", T: SimulationRun_CI, opt: true },
94
- { no: 23, name: "sampling", kind: "message", T: SimulationRun_Sampling, opt: true },
94
+ { no: 23, name: "sampling", kind: "message", T: SimulationRun_SamplingOptions, opt: true },
95
95
  ],
96
96
  );
97
97
 
@@ -132,6 +132,7 @@ export const SimulationRun_Job = /*@__PURE__*/ proto3.makeMessageType(
132
132
  { no: 14, name: "metrics", kind: "message", T: SimulationRun_JobMetrics },
133
133
  { no: 15, name: "scenario_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
134
134
  { no: 16, name: "sample", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
135
+ { no: 19, name: "failure_reason", kind: "enum", T: proto3.getEnumType(SimulationRun_Job_FailureReason) },
135
136
  ],
136
137
  {localName: "SimulationRun_Job"},
137
138
  );
@@ -150,6 +151,17 @@ export const SimulationRun_Job_Status = /*@__PURE__*/ proto3.makeEnum(
150
151
  ],
151
152
  );
152
153
 
154
+ /**
155
+ * @generated from enum livekit.SimulationRun.Job.FailureReason
156
+ */
157
+ export const SimulationRun_Job_FailureReason = /*@__PURE__*/ proto3.makeEnum(
158
+ "livekit.SimulationRun.Job.FailureReason",
159
+ [
160
+ {no: 0, name: "FAILURE_REASON_UNSPECIFIED", localName: "UNSPECIFIED"},
161
+ {no: 1, name: "FAILURE_REASON_AGENT_JOIN_TIMEOUT", localName: "AGENT_JOIN_TIMEOUT"},
162
+ ],
163
+ );
164
+
153
165
  /**
154
166
  * @generated from message livekit.SimulationRun.Job.Usage
155
167
  */
@@ -184,10 +196,30 @@ export const SimulationRun_JobMetrics = /*@__PURE__*/ proto3.makeMessageType(
184
196
  { no: 17, name: "redundant_statements", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
185
197
  { no: 18, name: "poor_question_quality", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
186
198
  { no: 19, name: "conversation_progression", kind: "scalar", T: 2 /* ScalarType.FLOAT */, opt: true },
199
+ { no: 21, name: "end_reason", kind: "enum", T: proto3.getEnumType(SimulationRun_JobMetrics_EndReason) },
200
+ { no: 22, name: "caller_language", kind: "scalar", T: 9 /* ScalarType.STRING */ },
201
+ { no: 23, name: "caller_listen_language", kind: "scalar", T: 9 /* ScalarType.STRING */ },
202
+ { no: 24, name: "impairments", kind: "message", T: SimulationImpairments },
187
203
  ],
188
204
  {localName: "SimulationRun_JobMetrics"},
189
205
  );
190
206
 
207
+ /**
208
+ * @generated from enum livekit.SimulationRun.JobMetrics.EndReason
209
+ */
210
+ export const SimulationRun_JobMetrics_EndReason = /*@__PURE__*/ proto3.makeEnum(
211
+ "livekit.SimulationRun.JobMetrics.EndReason",
212
+ [
213
+ {no: 0, name: "END_REASON_UNSPECIFIED", localName: "UNSPECIFIED"},
214
+ {no: 1, name: "END_REASON_SCENARIO_COMPLETED", localName: "SCENARIO_COMPLETED"},
215
+ {no: 2, name: "END_REASON_AGENT_ENDED", localName: "AGENT_ENDED"},
216
+ {no: 3, name: "END_REASON_INACTIVITY", localName: "INACTIVITY"},
217
+ {no: 4, name: "END_REASON_TURN_LIMIT", localName: "TURN_LIMIT"},
218
+ {no: 5, name: "END_REASON_EMPTY_RESPONSE", localName: "EMPTY_RESPONSE"},
219
+ {no: 6, name: "END_REASON_AGENT_ERROR", localName: "AGENT_ERROR"},
220
+ ],
221
+ );
222
+
191
223
  /**
192
224
  * The agent's perception of the caller. Audio only.
193
225
  *
@@ -272,6 +304,7 @@ export const SimulationRun_JobMetrics_Conversation = /*@__PURE__*/ proto3.makeMe
272
304
  { no: 12, name: "unanswered_turns", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
273
305
  { no: 13, name: "false_interruption_count", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
274
306
  { no: 15, name: "e2e_latency_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
307
+ { no: 16, name: "backchannel_count", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
275
308
  ],
276
309
  {localName: "SimulationRun_JobMetrics_Conversation"},
277
310
  );
@@ -287,6 +320,7 @@ export const SimulationRun_JobMetrics_Turn = /*@__PURE__*/ proto3.makeMessageTyp
287
320
  () => [
288
321
  { no: 1, name: "index", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
289
322
  { no: 2, name: "role", kind: "enum", T: proto3.getEnumType(ChatRole) },
323
+ { no: 18, name: "text", kind: "scalar", T: 9 /* ScalarType.STRING */ },
290
324
  { no: 3, name: "start_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
291
325
  { no: 4, name: "end_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
292
326
  { no: 5, name: "stt_delay_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true },
@@ -350,15 +384,15 @@ export const SimulationRun_CI = /*@__PURE__*/ proto3.makeMessageType(
350
384
  * Runs each scenario more than once, so a flaky sample is distinguishable
351
385
  * from a broken scenario. Both fields are required when it is present.
352
386
  *
353
- * @generated from message livekit.SimulationRun.Sampling
387
+ * @generated from message livekit.SimulationRun.SamplingOptions
354
388
  */
355
- export const SimulationRun_Sampling = /*@__PURE__*/ proto3.makeMessageType(
356
- "livekit.SimulationRun.Sampling",
389
+ export const SimulationRun_SamplingOptions = /*@__PURE__*/ proto3.makeMessageType(
390
+ "livekit.SimulationRun.SamplingOptions",
357
391
  () => [
358
392
  { no: 1, name: "samples", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
359
393
  { no: 2, name: "pass_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
360
394
  ],
361
- {localName: "SimulationRun_Sampling"},
395
+ {localName: "SimulationRun_SamplingOptions"},
362
396
  );
363
397
 
364
398
  /**
@@ -387,7 +421,7 @@ export const SimulationRun_Create_Request = /*@__PURE__*/ proto3.makeMessageType
387
421
  { no: 11, name: "low_quality_microphone", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
388
422
  { no: 12, name: "packet_loss", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
389
423
  { no: 13, name: "ci", kind: "message", T: SimulationRun_CI, opt: true },
390
- { no: 14, name: "sampling", kind: "message", T: SimulationRun_Sampling, opt: true },
424
+ { no: 14, name: "sampling", kind: "message", T: SimulationRun_SamplingOptions, opt: true },
391
425
  ],
392
426
  {localName: "SimulationRun_Create_Request"},
393
427
  );
@@ -665,8 +699,23 @@ export const ScenarioGroup = /*@__PURE__*/ proto3.makeMessageType(
665
699
  );
666
700
 
667
701
  /**
668
- * Carried (protojson-encoded) in the simulation room's metadata so the agent
669
- * under test can read the scenario + run identity synchronously at connect.
702
+ * What the simulated caller's audio went through before the agent heard it.
703
+ *
704
+ * @generated from message livekit.SimulationImpairments
705
+ */
706
+ export const SimulationImpairments = /*@__PURE__*/ proto3.makeMessageType(
707
+ "livekit.SimulationImpairments",
708
+ () => [
709
+ { no: 1, name: "background_noise", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
710
+ { no: 2, name: "low_quality_microphone", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
711
+ { no: 3, name: "packet_loss", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
712
+ ],
713
+ );
714
+
715
+ /**
716
+ * Carried (protojson-encoded) in the Job's lk.simulator.dispatch attribute, set
717
+ * on the agent dispatch, so the agent under test can read the scenario + run
718
+ * identity synchronously at job start.
670
719
  *
671
720
  * @generated from message livekit.SimulationDispatch
672
721
  */