@roarkanalytics/sdk 3.19.0 → 3.21.0

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/client.d.mts +3 -0
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +3 -0
  5. package/client.d.ts.map +1 -1
  6. package/client.js +3 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +3 -0
  9. package/client.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/resources/autoimprove-fix.d.mts +495 -0
  12. package/resources/autoimprove-fix.d.mts.map +1 -0
  13. package/resources/autoimprove-fix.d.ts +495 -0
  14. package/resources/autoimprove-fix.d.ts.map +1 -0
  15. package/resources/autoimprove-fix.js +151 -0
  16. package/resources/autoimprove-fix.js.map +1 -0
  17. package/resources/autoimprove-fix.mjs +147 -0
  18. package/resources/autoimprove-fix.mjs.map +1 -0
  19. package/resources/config.d.mts +3 -0
  20. package/resources/config.d.mts.map +1 -1
  21. package/resources/config.d.ts +3 -0
  22. package/resources/config.d.ts.map +1 -1
  23. package/resources/customer-flow-edge-case.d.mts +192 -36
  24. package/resources/customer-flow-edge-case.d.mts.map +1 -1
  25. package/resources/customer-flow-edge-case.d.ts +192 -36
  26. package/resources/customer-flow-edge-case.d.ts.map +1 -1
  27. package/resources/customer-flow.d.mts +768 -144
  28. package/resources/customer-flow.d.mts.map +1 -1
  29. package/resources/customer-flow.d.ts +768 -144
  30. package/resources/customer-flow.d.ts.map +1 -1
  31. package/resources/index.d.mts +1 -0
  32. package/resources/index.d.mts.map +1 -1
  33. package/resources/index.d.ts +1 -0
  34. package/resources/index.d.ts.map +1 -1
  35. package/resources/index.js +3 -1
  36. package/resources/index.js.map +1 -1
  37. package/resources/index.mjs +1 -0
  38. package/resources/index.mjs.map +1 -1
  39. package/resources/simulation-job.d.mts +32 -6
  40. package/resources/simulation-job.d.mts.map +1 -1
  41. package/resources/simulation-job.d.ts +32 -6
  42. package/resources/simulation-job.d.ts.map +1 -1
  43. package/resources/simulation-persona.d.mts +92 -18
  44. package/resources/simulation-persona.d.mts.map +1 -1
  45. package/resources/simulation-persona.d.ts +92 -18
  46. package/resources/simulation-persona.d.ts.map +1 -1
  47. package/resources/simulation-run-plan-job.d.mts +16 -3
  48. package/resources/simulation-run-plan-job.d.mts.map +1 -1
  49. package/resources/simulation-run-plan-job.d.ts +16 -3
  50. package/resources/simulation-run-plan-job.d.ts.map +1 -1
  51. package/resources/simulation-run-plan.d.mts +117 -7
  52. package/resources/simulation-run-plan.d.mts.map +1 -1
  53. package/resources/simulation-run-plan.d.ts +117 -7
  54. package/resources/simulation-run-plan.d.ts.map +1 -1
  55. package/resources/simulation-template.d.mts +1 -1
  56. package/resources/simulation-template.d.mts.map +1 -1
  57. package/resources/simulation-template.d.ts +1 -1
  58. package/resources/simulation-template.d.ts.map +1 -1
  59. package/resources/simulation.d.mts +62 -2
  60. package/resources/simulation.d.mts.map +1 -1
  61. package/resources/simulation.d.ts +62 -2
  62. package/resources/simulation.d.ts.map +1 -1
  63. package/src/client.ts +33 -0
  64. package/src/resources/autoimprove-fix.ts +766 -0
  65. package/src/resources/config.ts +6 -0
  66. package/src/resources/customer-flow-edge-case.ts +204 -36
  67. package/src/resources/customer-flow.ts +816 -144
  68. package/src/resources/index.ts +15 -0
  69. package/src/resources/simulation-job.ts +34 -6
  70. package/src/resources/simulation-persona.ts +98 -18
  71. package/src/resources/simulation-run-plan-job.ts +17 -3
  72. package/src/resources/simulation-run-plan.ts +219 -1
  73. package/src/resources/simulation-template.ts +1 -0
  74. package/src/resources/simulation.ts +98 -1
  75. package/src/version.ts +1 -1
  76. package/version.d.mts +1 -1
  77. package/version.d.ts +1 -1
  78. package/version.js +1 -1
  79. package/version.mjs +1 -1
@@ -28,6 +28,21 @@ export {
28
28
  type AgentPromptUpdateParams,
29
29
  type AgentPromptListVersionsParams,
30
30
  } from './agent-prompt';
31
+ export {
32
+ AutoimproveFix,
33
+ type AutoimproveLogEntry,
34
+ type AutoimproveFixCreateResponse,
35
+ type AutoimproveFixListResponse,
36
+ type AutoimproveFixAnswerQuestionResponse,
37
+ type AutoimproveFixCancelResponse,
38
+ type AutoimproveFixDismissResponse,
39
+ type AutoimproveFixGetByIDResponse,
40
+ type AutoimproveFixPromoteResponse,
41
+ type AutoimproveFixSendGuidanceResponse,
42
+ type AutoimproveFixCreateParams,
43
+ type AutoimproveFixAnswerQuestionParams,
44
+ type AutoimproveFixSendGuidanceParams,
45
+ } from './autoimprove-fix';
31
46
  export {
32
47
  Benchmark,
33
48
  type BenchmarkGetLeaderboardResponse,
@@ -346,6 +346,16 @@ export namespace SimulationJobGetByIDResponse {
346
346
  */
347
347
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
348
348
 
349
+ /**
350
+ * How much the persona talks over the agent while it is still speaking. OFF waits
351
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
352
+ * taking the floor, which tests whether the agent wrongly stops for them.
353
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
354
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
355
+ * at identical moments.
356
+ */
357
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
358
+
349
359
  /**
350
360
  * Primary language ISO 639-1 code for the persona
351
361
  */
@@ -385,9 +395,13 @@ export namespace SimulationJobGetByIDResponse {
385
395
  properties: { [key: string]: unknown };
386
396
 
387
397
  /**
388
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
389
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
390
- * for several seconds.
398
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
399
+ * waited once the agent stopped talking, and measured across production
400
+ * simulations it moved the reply gap by less than the noise floor, because model
401
+ * and speech latency dominate it. Every persona now uses one voice-activity
402
+ * profile. Use `interruption` for a caller who talks over the agent. Still
403
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
404
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
391
405
  */
392
406
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
393
407
 
@@ -795,6 +809,16 @@ export namespace SimulationJobLookupResponse {
795
809
  */
796
810
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
797
811
 
812
+ /**
813
+ * How much the persona talks over the agent while it is still speaking. OFF waits
814
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
815
+ * taking the floor, which tests whether the agent wrongly stops for them.
816
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
817
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
818
+ * at identical moments.
819
+ */
820
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
821
+
798
822
  /**
799
823
  * Primary language ISO 639-1 code for the persona
800
824
  */
@@ -834,9 +858,13 @@ export namespace SimulationJobLookupResponse {
834
858
  properties: { [key: string]: unknown };
835
859
 
836
860
  /**
837
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
838
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
839
- * for several seconds.
861
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
862
+ * waited once the agent stopped talking, and measured across production
863
+ * simulations it moved the reply gap by less than the noise floor, because model
864
+ * and speech latency dominate it. Every persona now uses one voice-activity
865
+ * profile. Use `interruption` for a caller who talks over the agent. Still
866
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
867
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
840
868
  */
841
869
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
842
870
 
@@ -198,6 +198,16 @@ export namespace SimulationPersonaCreateResponse {
198
198
  */
199
199
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
200
200
 
201
+ /**
202
+ * How much the persona talks over the agent while it is still speaking. OFF waits
203
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
204
+ * taking the floor, which tests whether the agent wrongly stops for them.
205
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
206
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
207
+ * at identical moments.
208
+ */
209
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
210
+
201
211
  /**
202
212
  * Primary language ISO 639-1 code for the persona
203
213
  */
@@ -237,9 +247,13 @@ export namespace SimulationPersonaCreateResponse {
237
247
  properties: { [key: string]: unknown };
238
248
 
239
249
  /**
240
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
241
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
242
- * for several seconds.
250
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
251
+ * waited once the agent stopped talking, and measured across production
252
+ * simulations it moved the reply gap by less than the noise floor, because model
253
+ * and speech latency dominate it. Every persona now uses one voice-activity
254
+ * profile. Use `interruption` for a caller who talks over the agent. Still
255
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
256
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
243
257
  */
244
258
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
245
259
 
@@ -431,6 +445,16 @@ export namespace SimulationPersonaUpdateResponse {
431
445
  */
432
446
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
433
447
 
448
+ /**
449
+ * How much the persona talks over the agent while it is still speaking. OFF waits
450
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
451
+ * taking the floor, which tests whether the agent wrongly stops for them.
452
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
453
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
454
+ * at identical moments.
455
+ */
456
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
457
+
434
458
  /**
435
459
  * Primary language ISO 639-1 code for the persona
436
460
  */
@@ -470,9 +494,13 @@ export namespace SimulationPersonaUpdateResponse {
470
494
  properties: { [key: string]: unknown };
471
495
 
472
496
  /**
473
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
474
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
475
- * for several seconds.
497
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
498
+ * waited once the agent stopped talking, and measured across production
499
+ * simulations it moved the reply gap by less than the noise floor, because model
500
+ * and speech latency dominate it. Every persona now uses one voice-activity
501
+ * profile. Use `interruption` for a caller who talks over the agent. Still
502
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
503
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
476
504
  */
477
505
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
478
506
 
@@ -666,6 +694,16 @@ export namespace SimulationPersonaListResponse {
666
694
  */
667
695
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
668
696
 
697
+ /**
698
+ * How much the persona talks over the agent while it is still speaking. OFF waits
699
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
700
+ * taking the floor, which tests whether the agent wrongly stops for them.
701
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
702
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
703
+ * at identical moments.
704
+ */
705
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
706
+
669
707
  /**
670
708
  * Primary language ISO 639-1 code for the persona
671
709
  */
@@ -705,9 +743,13 @@ export namespace SimulationPersonaListResponse {
705
743
  properties: { [key: string]: unknown };
706
744
 
707
745
  /**
708
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
709
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
710
- * for several seconds.
746
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
747
+ * waited once the agent stopped talking, and measured across production
748
+ * simulations it moved the reply gap by less than the noise floor, because model
749
+ * and speech latency dominate it. Every persona now uses one voice-activity
750
+ * profile. Use `interruption` for a caller who talks over the agent. Still
751
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
752
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
711
753
  */
712
754
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
713
755
 
@@ -916,6 +958,16 @@ export namespace SimulationPersonaGetByIDResponse {
916
958
  */
917
959
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
918
960
 
961
+ /**
962
+ * How much the persona talks over the agent while it is still speaking. OFF waits
963
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
964
+ * taking the floor, which tests whether the agent wrongly stops for them.
965
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
966
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
967
+ * at identical moments.
968
+ */
969
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
970
+
919
971
  /**
920
972
  * Primary language ISO 639-1 code for the persona
921
973
  */
@@ -955,9 +1007,13 @@ export namespace SimulationPersonaGetByIDResponse {
955
1007
  properties: { [key: string]: unknown };
956
1008
 
957
1009
  /**
958
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
959
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
960
- * for several seconds.
1010
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
1011
+ * waited once the agent stopped talking, and measured across production
1012
+ * simulations it moved the reply gap by less than the noise floor, because model
1013
+ * and speech latency dominate it. Every persona now uses one voice-activity
1014
+ * profile. Use `interruption` for a caller who talks over the agent. Still
1015
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
1016
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
961
1017
  */
962
1018
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
963
1019
 
@@ -1179,6 +1235,12 @@ export interface SimulationPersonaCreateParams {
1179
1235
  */
1180
1236
  intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1181
1237
 
1238
+ /**
1239
+ * How much the persona talks over the agent. Defaults to OFF, a caller that waits
1240
+ * its turn.
1241
+ */
1242
+ interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
1243
+
1182
1244
  /**
1183
1245
  * How reliable the persona's memory is
1184
1246
  */
@@ -1190,9 +1252,13 @@ export interface SimulationPersonaCreateParams {
1190
1252
  properties?: { [key: string]: unknown };
1191
1253
 
1192
1254
  /**
1193
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
1194
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
1195
- * for several seconds.
1255
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
1256
+ * waited once the agent stopped talking, and measured across production
1257
+ * simulations it moved the reply gap by less than the noise floor, because model
1258
+ * and speech latency dominate it. Every persona now uses one voice-activity
1259
+ * profile. Use `interruption` for a caller who talks over the agent. Still
1260
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
1261
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
1196
1262
  */
1197
1263
  responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
1198
1264
 
@@ -1363,6 +1429,16 @@ export interface SimulationPersonaUpdateParams {
1363
1429
  */
1364
1430
  intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1365
1431
 
1432
+ /**
1433
+ * How much the persona talks over the agent while it is still speaking. OFF waits
1434
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
1435
+ * taking the floor, which tests whether the agent wrongly stops for them.
1436
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
1437
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
1438
+ * at identical moments.
1439
+ */
1440
+ interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
1441
+
1366
1442
  /**
1367
1443
  * Primary language ISO 639-1 code for the persona
1368
1444
  */
@@ -1402,9 +1478,13 @@ export interface SimulationPersonaUpdateParams {
1402
1478
  properties?: { [key: string]: unknown };
1403
1479
 
1404
1480
  /**
1405
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
1406
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
1407
- * for several seconds.
1481
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
1482
+ * waited once the agent stopped talking, and measured across production
1483
+ * simulations it moved the reply gap by less than the noise floor, because model
1484
+ * and speech latency dominate it. Every persona now uses one voice-activity
1485
+ * profile. Use `interruption` for a caller who talks over the agent. Still
1486
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
1487
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
1408
1488
  */
1409
1489
  responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
1410
1490
 
@@ -526,6 +526,16 @@ export namespace SimulationRunPlanJobGetByIDResponse {
526
526
  */
527
527
  intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
528
528
 
529
+ /**
530
+ * How much the persona talks over the agent while it is still speaking. OFF waits
531
+ * its turn. BACKCHANNEL makes listening noises ("mm-hm") over the agent without
532
+ * taking the floor, which tests whether the agent wrongly stops for them.
533
+ * OCCASIONAL adds cutting in on some long agent turns, HEAVY on most of them.
534
+ * Timing is randomised per turn, so two runs of the same persona do not interrupt
535
+ * at identical moments.
536
+ */
537
+ interruption: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
538
+
529
539
  /**
530
540
  * Primary language ISO 639-1 code for the persona
531
541
  */
@@ -565,9 +575,13 @@ export namespace SimulationRunPlanJobGetByIDResponse {
565
575
  properties: { [key: string]: unknown };
566
576
 
567
577
  /**
568
- * Controls how quickly the persona responds to pauses in conversation (QUICK,
569
- * NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor
570
- * for several seconds.
578
+ * Deprecated and inert: it no longer affects the call. It set how long the persona
579
+ * waited once the agent stopped talking, and measured across production
580
+ * simulations it moved the reply gap by less than the noise floor, because model
581
+ * and speech latency dominate it. Every persona now uses one voice-activity
582
+ * profile. Use `interruption` for a caller who talks over the agent. Still
583
+ * accepted and stored so existing clients keep working. BARGE_IN is stored as
584
+ * `responseTiming: QUICK` with `interruption: OCCASIONAL`.
571
585
  */
572
586
  responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
573
587
 
@@ -160,6 +160,7 @@ export namespace SimulationRunPlanCreateResponse {
160
160
  | 'GENDER'
161
161
  | 'INTENT_CLARITY'
162
162
  | 'LANGUAGE'
163
+ | 'INTERRUPTION'
163
164
  | 'MEMORY_RELIABILITY'
164
165
  | 'RESPONSE_TIMING'
165
166
  | 'SPEECH_CLARITY'
@@ -317,6 +318,18 @@ export namespace SimulationRunPlanCreateResponse {
317
318
  */
318
319
  happyPath?: boolean;
319
320
 
321
+ /**
322
+ * Persona and environment properties to change for this attachment only, without
323
+ * editing the persona or the environment themselves. Each entry patches the
324
+ * per-run snapshot this attachment records, so the flow runs as a caller with that
325
+ * accent, or over that background noise, and everything else stays as authored.
326
+ *
327
+ * This is how you attach the same flow twice and vary one thing between them,
328
+ * which is what a sweep template builds for you. One value per property; a
329
+ * property named twice is rejected.
330
+ */
331
+ overrides?: Array<Flow.Override>;
332
+
320
333
  /**
321
334
  * Runs everything this attachment resolves as that persona instead of its own.
322
335
  */
@@ -360,6 +373,29 @@ export namespace SimulationRunPlanCreateResponse {
360
373
  */
361
374
  variables?: { [key: string]: string };
362
375
  }
376
+
377
+ /**
378
+ * One persona or environment property, changed for this flow attachment only.
379
+ */
380
+ export interface Override {
381
+ property:
382
+ | 'ACCENT'
383
+ | 'AGE'
384
+ | 'BACKGROUND_NOISE'
385
+ | 'BACKGROUND_NOISE_VOLUME'
386
+ | 'BASE_EMOTION'
387
+ | 'CONFIRMATION_STYLE'
388
+ | 'GENDER'
389
+ | 'INTENT_CLARITY'
390
+ | 'LANGUAGE'
391
+ | 'INTERRUPTION'
392
+ | 'MEMORY_RELIABILITY'
393
+ | 'RESPONSE_TIMING'
394
+ | 'SPEECH_CLARITY'
395
+ | 'SPEECH_PACE';
396
+
397
+ value: string;
398
+ }
363
399
  }
364
400
 
365
401
  export interface Metric {
@@ -476,6 +512,7 @@ export namespace SimulationRunPlanUpdateResponse {
476
512
  | 'GENDER'
477
513
  | 'INTENT_CLARITY'
478
514
  | 'LANGUAGE'
515
+ | 'INTERRUPTION'
479
516
  | 'MEMORY_RELIABILITY'
480
517
  | 'RESPONSE_TIMING'
481
518
  | 'SPEECH_CLARITY'
@@ -633,6 +670,18 @@ export namespace SimulationRunPlanUpdateResponse {
633
670
  */
634
671
  happyPath?: boolean;
635
672
 
673
+ /**
674
+ * Persona and environment properties to change for this attachment only, without
675
+ * editing the persona or the environment themselves. Each entry patches the
676
+ * per-run snapshot this attachment records, so the flow runs as a caller with that
677
+ * accent, or over that background noise, and everything else stays as authored.
678
+ *
679
+ * This is how you attach the same flow twice and vary one thing between them,
680
+ * which is what a sweep template builds for you. One value per property; a
681
+ * property named twice is rejected.
682
+ */
683
+ overrides?: Array<Flow.Override>;
684
+
636
685
  /**
637
686
  * Runs everything this attachment resolves as that persona instead of its own.
638
687
  */
@@ -676,6 +725,29 @@ export namespace SimulationRunPlanUpdateResponse {
676
725
  */
677
726
  variables?: { [key: string]: string };
678
727
  }
728
+
729
+ /**
730
+ * One persona or environment property, changed for this flow attachment only.
731
+ */
732
+ export interface Override {
733
+ property:
734
+ | 'ACCENT'
735
+ | 'AGE'
736
+ | 'BACKGROUND_NOISE'
737
+ | 'BACKGROUND_NOISE_VOLUME'
738
+ | 'BASE_EMOTION'
739
+ | 'CONFIRMATION_STYLE'
740
+ | 'GENDER'
741
+ | 'INTENT_CLARITY'
742
+ | 'LANGUAGE'
743
+ | 'INTERRUPTION'
744
+ | 'MEMORY_RELIABILITY'
745
+ | 'RESPONSE_TIMING'
746
+ | 'SPEECH_CLARITY'
747
+ | 'SPEECH_PACE';
748
+
749
+ value: string;
750
+ }
679
751
  }
680
752
 
681
753
  export interface Metric {
@@ -756,6 +828,7 @@ export namespace SimulationRunPlanListResponse {
756
828
  | 'GENDER'
757
829
  | 'INTENT_CLARITY'
758
830
  | 'LANGUAGE'
831
+ | 'INTERRUPTION'
759
832
  | 'MEMORY_RELIABILITY'
760
833
  | 'RESPONSE_TIMING'
761
834
  | 'SPEECH_CLARITY'
@@ -913,6 +986,18 @@ export namespace SimulationRunPlanListResponse {
913
986
  */
914
987
  happyPath?: boolean;
915
988
 
989
+ /**
990
+ * Persona and environment properties to change for this attachment only, without
991
+ * editing the persona or the environment themselves. Each entry patches the
992
+ * per-run snapshot this attachment records, so the flow runs as a caller with that
993
+ * accent, or over that background noise, and everything else stays as authored.
994
+ *
995
+ * This is how you attach the same flow twice and vary one thing between them,
996
+ * which is what a sweep template builds for you. One value per property; a
997
+ * property named twice is rejected.
998
+ */
999
+ overrides?: Array<Flow.Override>;
1000
+
916
1001
  /**
917
1002
  * Runs everything this attachment resolves as that persona instead of its own.
918
1003
  */
@@ -956,6 +1041,29 @@ export namespace SimulationRunPlanListResponse {
956
1041
  */
957
1042
  variables?: { [key: string]: string };
958
1043
  }
1044
+
1045
+ /**
1046
+ * One persona or environment property, changed for this flow attachment only.
1047
+ */
1048
+ export interface Override {
1049
+ property:
1050
+ | 'ACCENT'
1051
+ | 'AGE'
1052
+ | 'BACKGROUND_NOISE'
1053
+ | 'BACKGROUND_NOISE_VOLUME'
1054
+ | 'BASE_EMOTION'
1055
+ | 'CONFIRMATION_STYLE'
1056
+ | 'GENDER'
1057
+ | 'INTENT_CLARITY'
1058
+ | 'LANGUAGE'
1059
+ | 'INTERRUPTION'
1060
+ | 'MEMORY_RELIABILITY'
1061
+ | 'RESPONSE_TIMING'
1062
+ | 'SPEECH_CLARITY'
1063
+ | 'SPEECH_PACE';
1064
+
1065
+ value: string;
1066
+ }
959
1067
  }
960
1068
 
961
1069
  export interface Metric {
@@ -1064,6 +1172,7 @@ export namespace SimulationRunPlanGetByIDResponse {
1064
1172
  | 'GENDER'
1065
1173
  | 'INTENT_CLARITY'
1066
1174
  | 'LANGUAGE'
1175
+ | 'INTERRUPTION'
1067
1176
  | 'MEMORY_RELIABILITY'
1068
1177
  | 'RESPONSE_TIMING'
1069
1178
  | 'SPEECH_CLARITY'
@@ -1221,6 +1330,18 @@ export namespace SimulationRunPlanGetByIDResponse {
1221
1330
  */
1222
1331
  happyPath?: boolean;
1223
1332
 
1333
+ /**
1334
+ * Persona and environment properties to change for this attachment only, without
1335
+ * editing the persona or the environment themselves. Each entry patches the
1336
+ * per-run snapshot this attachment records, so the flow runs as a caller with that
1337
+ * accent, or over that background noise, and everything else stays as authored.
1338
+ *
1339
+ * This is how you attach the same flow twice and vary one thing between them,
1340
+ * which is what a sweep template builds for you. One value per property; a
1341
+ * property named twice is rejected.
1342
+ */
1343
+ overrides?: Array<Flow.Override>;
1344
+
1224
1345
  /**
1225
1346
  * Runs everything this attachment resolves as that persona instead of its own.
1226
1347
  */
@@ -1264,6 +1385,29 @@ export namespace SimulationRunPlanGetByIDResponse {
1264
1385
  */
1265
1386
  variables?: { [key: string]: string };
1266
1387
  }
1388
+
1389
+ /**
1390
+ * One persona or environment property, changed for this flow attachment only.
1391
+ */
1392
+ export interface Override {
1393
+ property:
1394
+ | 'ACCENT'
1395
+ | 'AGE'
1396
+ | 'BACKGROUND_NOISE'
1397
+ | 'BACKGROUND_NOISE_VOLUME'
1398
+ | 'BASE_EMOTION'
1399
+ | 'CONFIRMATION_STYLE'
1400
+ | 'GENDER'
1401
+ | 'INTENT_CLARITY'
1402
+ | 'LANGUAGE'
1403
+ | 'INTERRUPTION'
1404
+ | 'MEMORY_RELIABILITY'
1405
+ | 'RESPONSE_TIMING'
1406
+ | 'SPEECH_CLARITY'
1407
+ | 'SPEECH_PACE';
1408
+
1409
+ value: string;
1410
+ }
1267
1411
  }
1268
1412
 
1269
1413
  export interface Metric {
@@ -1366,6 +1510,7 @@ export interface SimulationRunPlanCreateParams {
1366
1510
  | 'GENDER'
1367
1511
  | 'INTENT_CLARITY'
1368
1512
  | 'LANGUAGE'
1513
+ | 'INTERRUPTION'
1369
1514
  | 'MEMORY_RELIABILITY'
1370
1515
  | 'RESPONSE_TIMING'
1371
1516
  | 'SPEECH_CLARITY'
@@ -1425,7 +1570,9 @@ export interface SimulationRunPlanCreateParams {
1425
1570
 
1426
1571
  /**
1427
1572
  * Customer flows to include in this run plan. The same flow can appear more than
1428
- * once with a different persona override or different variables.
1573
+ * once with a different persona override, different variables, or different
1574
+ * `overrides`: attaching it once per value of one property is how you compare that
1575
+ * property without a template.
1429
1576
  */
1430
1577
  flows?: Array<SimulationRunPlanCreateParams.Flow>;
1431
1578
 
@@ -1558,6 +1705,18 @@ export namespace SimulationRunPlanCreateParams {
1558
1705
  */
1559
1706
  happyPath?: boolean;
1560
1707
 
1708
+ /**
1709
+ * Persona and environment properties to change for this attachment only, without
1710
+ * editing the persona or the environment themselves. Each entry patches the
1711
+ * per-run snapshot this attachment records, so the flow runs as a caller with that
1712
+ * accent, or over that background noise, and everything else stays as authored.
1713
+ *
1714
+ * This is how you attach the same flow twice and vary one thing between them,
1715
+ * which is what a sweep template builds for you. One value per property; a
1716
+ * property named twice is rejected.
1717
+ */
1718
+ overrides?: Array<Flow.Override>;
1719
+
1561
1720
  /**
1562
1721
  * Runs everything this attachment resolves as that persona instead of its own.
1563
1722
  */
@@ -1601,6 +1760,29 @@ export namespace SimulationRunPlanCreateParams {
1601
1760
  */
1602
1761
  variables?: { [key: string]: string };
1603
1762
  }
1763
+
1764
+ /**
1765
+ * One persona or environment property, changed for this flow attachment only.
1766
+ */
1767
+ export interface Override {
1768
+ property:
1769
+ | 'ACCENT'
1770
+ | 'AGE'
1771
+ | 'BACKGROUND_NOISE'
1772
+ | 'BACKGROUND_NOISE_VOLUME'
1773
+ | 'BASE_EMOTION'
1774
+ | 'CONFIRMATION_STYLE'
1775
+ | 'GENDER'
1776
+ | 'INTENT_CLARITY'
1777
+ | 'LANGUAGE'
1778
+ | 'INTERRUPTION'
1779
+ | 'MEMORY_RELIABILITY'
1780
+ | 'RESPONSE_TIMING'
1781
+ | 'SPEECH_CLARITY'
1782
+ | 'SPEECH_PACE';
1783
+
1784
+ value: string;
1785
+ }
1604
1786
  }
1605
1787
 
1606
1788
  export interface Persona {
@@ -1661,6 +1843,7 @@ export interface SimulationRunPlanUpdateParams {
1661
1843
  | 'GENDER'
1662
1844
  | 'INTENT_CLARITY'
1663
1845
  | 'LANGUAGE'
1846
+ | 'INTERRUPTION'
1664
1847
  | 'MEMORY_RELIABILITY'
1665
1848
  | 'RESPONSE_TIMING'
1666
1849
  | 'SPEECH_CLARITY'
@@ -1809,6 +1992,18 @@ export namespace SimulationRunPlanUpdateParams {
1809
1992
  */
1810
1993
  happyPath?: boolean;
1811
1994
 
1995
+ /**
1996
+ * Persona and environment properties to change for this attachment only, without
1997
+ * editing the persona or the environment themselves. Each entry patches the
1998
+ * per-run snapshot this attachment records, so the flow runs as a caller with that
1999
+ * accent, or over that background noise, and everything else stays as authored.
2000
+ *
2001
+ * This is how you attach the same flow twice and vary one thing between them,
2002
+ * which is what a sweep template builds for you. One value per property; a
2003
+ * property named twice is rejected.
2004
+ */
2005
+ overrides?: Array<Flow.Override>;
2006
+
1812
2007
  /**
1813
2008
  * Runs everything this attachment resolves as that persona instead of its own.
1814
2009
  */
@@ -1852,6 +2047,29 @@ export namespace SimulationRunPlanUpdateParams {
1852
2047
  */
1853
2048
  variables?: { [key: string]: string };
1854
2049
  }
2050
+
2051
+ /**
2052
+ * One persona or environment property, changed for this flow attachment only.
2053
+ */
2054
+ export interface Override {
2055
+ property:
2056
+ | 'ACCENT'
2057
+ | 'AGE'
2058
+ | 'BACKGROUND_NOISE'
2059
+ | 'BACKGROUND_NOISE_VOLUME'
2060
+ | 'BASE_EMOTION'
2061
+ | 'CONFIRMATION_STYLE'
2062
+ | 'GENDER'
2063
+ | 'INTENT_CLARITY'
2064
+ | 'LANGUAGE'
2065
+ | 'INTERRUPTION'
2066
+ | 'MEMORY_RELIABILITY'
2067
+ | 'RESPONSE_TIMING'
2068
+ | 'SPEECH_CLARITY'
2069
+ | 'SPEECH_PACE';
2070
+
2071
+ value: string;
2072
+ }
1855
2073
  }
1856
2074
 
1857
2075
  export interface Metric {
@@ -229,6 +229,7 @@ export namespace SimulationTemplateListResponse {
229
229
  | 'GENDER'
230
230
  | 'INTENT_CLARITY'
231
231
  | 'LANGUAGE'
232
+ | 'INTERRUPTION'
232
233
  | 'MEMORY_RELIABILITY'
233
234
  | 'RESPONSE_TIMING'
234
235
  | 'SPEECH_CLARITY'