@roarkanalytics/sdk 4.15.0 → 4.17.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.
@@ -4,10 +4,12 @@ import { APIPromise } from "../core/api-promise.js";
4
4
  import { RequestOptions } from "../internal/request-options.js";
5
5
  export declare class Config extends APIResource {
6
6
  /**
7
- * Reconcile a config-as-code bundle into the project. Submit the full desired set
8
- * of resources; resources already managed by config are updated, new ones created,
9
- * and (unless prune is false) config-managed resources absent from the bundle are
10
- * deleted. Identity is by name — no ids in the bundle.
7
+ * Reconcile a config-as-code bundle. With a PROJECT API key, submit project-scoped
8
+ * resources (agents, personas, flows, collectors, metrics, ...). With an
9
+ * ORGANIZATION API key, submit `kind: project` resources, each optionally carrying
10
+ * its members and its own nested `resources`. Submit the full desired set; managed
11
+ * resources are updated, new ones created, and (unless prune is false) managed
12
+ * resources absent from the bundle are deleted. Identity is by name.
11
13
  *
12
14
  * @example
13
15
  * ```ts
@@ -18,10 +20,9 @@ export declare class Config extends APIResource {
18
20
  */
19
21
  apply(body: ConfigApplyParams, options?: RequestOptions): APIPromise<ConfigApplyResponse>;
20
22
  /**
21
- * Dry run for a config-as-code apply: returns the projected changes (create /
22
- * update / delete) for the submitted bundle without writing anything. Submit the
23
- * full desired set of resources; identity is by name — no ids in the bundle. Run
24
- * this before apply to preview what would change.
23
+ * Dry run for an apply: returns the projected changes (create / update / delete)
24
+ * for the submitted bundle without writing anything. Works for both project and
25
+ * organization keys.
25
26
  *
26
27
  * @example
27
28
  * ```ts
@@ -33,7 +34,7 @@ export declare class Config extends APIResource {
33
34
  diff(body: ConfigDiffParams, options?: RequestOptions): APIPromise<ConfigDiffResponse>;
34
35
  }
35
36
  export interface Bundle {
36
- resources: Array<Bundle.AgentConfig | Bundle.HTTPRequestDefinitionConfig | Bundle.PersonaConfig | Bundle.ImprovFlowConfig | Bundle.ScriptedFlowConfig | Bundle.CollectorConfig | Bundle.MetricConfig | Bundle.SimulationPlanConfig | Bundle.QaSimulationPlanConfig | Bundle.AlertConfig | Bundle.ToolConfig>;
37
+ resources: Array<Bundle.AgentConfig | Bundle.HTTPRequestDefinitionConfig | Bundle.PersonaConfig | Bundle.ImprovFlowConfig | Bundle.ScriptedFlowConfig | Bundle.CollectorConfig | Bundle.MetricConfig | Bundle.SimulationPlanConfig | Bundle.QaSimulationPlanConfig | Bundle.AlertConfig | Bundle.ToolConfig | Bundle.ProjectConfig>;
37
38
  prune?: boolean;
38
39
  }
39
40
  export declare namespace Bundle {
@@ -324,6 +325,309 @@ export declare namespace Bundle {
324
325
  [key: string]: 'string' | 'number' | 'boolean';
325
326
  };
326
327
  }
328
+ interface ProjectConfig {
329
+ kind: 'project';
330
+ name: string;
331
+ category?: 'HEALTHCARE' | 'FINANCIAL' | 'RETAIL' | 'HOSPITALITY' | 'AUTOMOTIVE' | 'GOVERNMENT' | 'EDUCATION' | 'REAL_ESTATE' | 'OTHER';
332
+ dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1';
333
+ description?: string;
334
+ displayName?: string;
335
+ members?: Array<ProjectConfig.Member>;
336
+ resources?: Array<ProjectConfig.AgentConfig | ProjectConfig.HTTPRequestDefinitionConfig | ProjectConfig.PersonaConfig | ProjectConfig.ImprovFlowConfig | ProjectConfig.ScriptedFlowConfig | ProjectConfig.CollectorConfig | ProjectConfig.MetricConfig | ProjectConfig.SimulationPlanConfig | ProjectConfig.QaSimulationPlanConfig | ProjectConfig.AlertConfig | ProjectConfig.ToolConfig>;
337
+ }
338
+ namespace ProjectConfig {
339
+ interface Member {
340
+ email: string;
341
+ role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER';
342
+ }
343
+ interface AgentConfig {
344
+ kind: 'agent';
345
+ name: string;
346
+ customId?: string | null;
347
+ description?: string | null;
348
+ displayName?: string;
349
+ endpoints?: Array<AgentConfig.Endpoint>;
350
+ prompt?: string | null;
351
+ }
352
+ namespace AgentConfig {
353
+ interface Endpoint {
354
+ value: string;
355
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
356
+ environment?: string;
357
+ outboundDialHttpRequestDefinition?: string;
358
+ outboundDialType?: 'NONE' | 'HTTP_REQUEST';
359
+ type?: 'PHONE' | 'WEBSOCKET';
360
+ }
361
+ }
362
+ interface HTTPRequestDefinitionConfig {
363
+ kind: 'httpRequestDefinition';
364
+ name: string;
365
+ url: string;
366
+ body?: string;
367
+ description?: string | null;
368
+ headers?: {
369
+ [key: string]: string;
370
+ };
371
+ method?: 'POST' | 'PUT' | 'PATCH' | 'GET';
372
+ }
373
+ interface PersonaConfig {
374
+ accent: 'US' | 'US_X_SOUTH' | 'GB' | 'ES' | 'DE' | 'IN' | 'FR' | 'NL' | 'SA' | 'GR' | 'AU' | 'IT' | 'ID' | 'TH' | 'JP' | 'NZ' | 'PH' | 'SG' | 'MY' | 'HK' | 'TR' | 'PT' | 'IL';
375
+ gender: 'MALE' | 'FEMALE';
376
+ kind: 'persona';
377
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
378
+ name: string;
379
+ age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
380
+ backgroundNoise?: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'CONSTRUCTION' | 'CRYING_BABY' | 'DRIVING' | 'LIBRARY' | 'OFFICE' | 'THUNDERSTORM' | 'TRAIN';
381
+ backstoryPrompt?: string | null;
382
+ baseEmotion?: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED' | 'ANGRY' | 'ANXIOUS' | 'SAD';
383
+ confirmationStyle?: 'EXPLICIT' | 'VAGUE';
384
+ description?: string | null;
385
+ displayName?: string;
386
+ hasDisfluencies?: boolean;
387
+ idleMessageMaxSpokenCount?: number;
388
+ idleMessageResetCountOnUserSpeechEnabled?: boolean;
389
+ idleMessages?: Array<string> | null;
390
+ idleTimeoutSeconds?: number;
391
+ intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE';
392
+ interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
393
+ memoryReliability?: 'HIGH' | 'LOW';
394
+ properties?: {
395
+ [key: string]: unknown;
396
+ };
397
+ responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
398
+ secondaryLanguage?: 'EN';
399
+ speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING';
400
+ speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
401
+ understoodLanguages?: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
402
+ }
403
+ interface ImprovFlowConfig {
404
+ agents: Array<string>;
405
+ happyPath: ImprovFlowConfig.HappyPath;
406
+ kind: 'flow';
407
+ name: string;
408
+ type: 'improv';
409
+ description?: string | null;
410
+ edgeCases?: Array<ImprovFlowConfig.EdgeCase>;
411
+ expectations?: Array<string>;
412
+ title?: string;
413
+ }
414
+ namespace ImprovFlowConfig {
415
+ interface HappyPath {
416
+ environment: string;
417
+ persona: string;
418
+ expectations?: Array<string>;
419
+ prompt?: string;
420
+ title?: string;
421
+ }
422
+ interface EdgeCase {
423
+ name: string;
424
+ environment?: string;
425
+ expectations?: Array<string>;
426
+ persona?: string;
427
+ prompt?: string;
428
+ title?: string;
429
+ }
430
+ }
431
+ interface ScriptedFlowConfig {
432
+ graph: Array<ConfigAPI.ConfigFlowStep>;
433
+ kind: 'flow';
434
+ name: string;
435
+ type: 'scripted';
436
+ adherence?: 'LOOSE' | 'STRICT';
437
+ agents?: Array<string>;
438
+ branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE';
439
+ description?: string | null;
440
+ expectations?: Array<string>;
441
+ offScript?: ScriptedFlowConfig.OffScript;
442
+ title?: string;
443
+ }
444
+ namespace ScriptedFlowConfig {
445
+ interface OffScript {
446
+ maxAttempts?: number;
447
+ reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
448
+ sayLine?: string;
449
+ then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
450
+ waitSeconds?: number;
451
+ }
452
+ }
453
+ interface CollectorConfig {
454
+ kind: 'collector';
455
+ metrics: Array<string>;
456
+ modality: 'call' | 'chat';
457
+ name: string;
458
+ displayName?: string;
459
+ filters?: Array<CollectorConfig.Filter>;
460
+ status?: 'ACTIVE' | 'INACTIVE';
461
+ }
462
+ namespace CollectorConfig {
463
+ interface Filter {
464
+ conditions: Array<Filter.Condition>;
465
+ }
466
+ namespace Filter {
467
+ interface Condition {
468
+ key: string;
469
+ type: 'AGENT' | 'CALL_SOURCE' | 'CALL_PROPERTY' | 'INTEGRATION';
470
+ operator?: 'EQUALS' | 'NOT_EQUALS' | 'CONTAINS' | 'STARTS_WITH' | 'GREATER_THAN' | 'LESS_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN_OR_EQUALS';
471
+ value?: string;
472
+ }
473
+ }
474
+ }
475
+ interface MetricConfig {
476
+ kind: 'metric';
477
+ name: string;
478
+ prompt: string;
479
+ type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION';
480
+ contexts?: Array<'CALL' | 'SEGMENT' | 'TURN'>;
481
+ displayName?: string;
482
+ falseLabel?: string;
483
+ maxSelections?: number;
484
+ options?: Array<MetricConfig.Option>;
485
+ participantRole?: 'AGENT' | 'CUSTOMER';
486
+ scaleLabels?: Array<MetricConfig.ScaleLabel>;
487
+ scaleMax?: number;
488
+ scaleMin?: number;
489
+ scope?: 'GLOBAL' | 'PER_PARTICIPANT';
490
+ trueLabel?: string;
491
+ }
492
+ namespace MetricConfig {
493
+ interface Option {
494
+ displayOrder: number;
495
+ label: string;
496
+ description?: string;
497
+ }
498
+ interface ScaleLabel {
499
+ displayOrder: number;
500
+ label: string;
501
+ rangeMax: number;
502
+ rangeMin: number;
503
+ colorHex?: string;
504
+ description?: string;
505
+ }
506
+ }
507
+ interface SimulationPlanConfig {
508
+ agentEndpoints: Array<SimulationPlanConfig.AgentEndpoint>;
509
+ direction: 'INBOUND' | 'OUTBOUND';
510
+ flows: Array<SimulationPlanConfig.Flow>;
511
+ kind: 'simulationPlan';
512
+ maxDurationSeconds: number;
513
+ metrics: Array<string>;
514
+ name: string;
515
+ description?: string | null;
516
+ endCallPhrases?: Array<string>;
517
+ endCallReasons?: Array<string>;
518
+ enrichWithLiveConversation?: boolean;
519
+ executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
520
+ includeAutomaticMetrics?: boolean;
521
+ includeFlowMetrics?: boolean;
522
+ iterations?: number;
523
+ maxConcurrentJobs?: number;
524
+ silenceTimeoutSeconds?: number;
525
+ template?: 'manual';
526
+ }
527
+ namespace SimulationPlanConfig {
528
+ interface AgentEndpoint {
529
+ agent: string;
530
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
531
+ value?: string;
532
+ }
533
+ interface Flow {
534
+ edgeCases?: Array<string>;
535
+ flow?: string;
536
+ happyPath?: boolean;
537
+ personaOverride?: string;
538
+ system?: string;
539
+ }
540
+ }
541
+ interface QaSimulationPlanConfig {
542
+ agentEndpoints: Array<QaSimulationPlanConfig.AgentEndpoint>;
543
+ direction: 'INBOUND' | 'OUTBOUND';
544
+ environment: string;
545
+ kind: 'simulationPlan';
546
+ maxDurationSeconds: number;
547
+ name: string;
548
+ persona: string;
549
+ questions: Array<QaSimulationPlanConfig.Question>;
550
+ template: 'question-answer-check';
551
+ description?: string | null;
552
+ endCallPhrases?: Array<string>;
553
+ endCallReasons?: Array<string>;
554
+ enrichWithLiveConversation?: boolean;
555
+ executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
556
+ gradeWithKnowledgeBase?: boolean;
557
+ includeAutomaticMetrics?: boolean;
558
+ includeFlowMetrics?: boolean;
559
+ iterations?: number;
560
+ maxConcurrentJobs?: number;
561
+ metrics?: Array<string>;
562
+ silenceTimeoutSeconds?: number;
563
+ }
564
+ namespace QaSimulationPlanConfig {
565
+ interface AgentEndpoint {
566
+ agent: string;
567
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
568
+ value?: string;
569
+ }
570
+ interface Question {
571
+ ask: string;
572
+ expect?: string;
573
+ name?: string;
574
+ }
575
+ }
576
+ interface AlertConfig {
577
+ kind: 'alert';
578
+ name: string;
579
+ trigger: AlertConfig.AlertThresholdTrigger | AlertConfig.AlertEventTrigger | AlertConfig.AlertSimulationTrigger;
580
+ actions?: AlertConfig.Actions;
581
+ displayName?: string;
582
+ enabled?: boolean;
583
+ }
584
+ namespace AlertConfig {
585
+ interface AlertThresholdTrigger {
586
+ aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN';
587
+ metric: string;
588
+ operator: 'GT' | 'GTE' | 'LT' | 'LTE';
589
+ thresholdValue: number;
590
+ type: 'threshold';
591
+ windowMinutes: number;
592
+ consecutiveOpen?: number;
593
+ consecutiveResolve?: number;
594
+ grouping?: 'NONE' | 'BY_AGENT';
595
+ metricVariant?: string;
596
+ minSampleSize?: number;
597
+ }
598
+ interface AlertEventTrigger {
599
+ events: Array<'CALL_ANALYSIS_COMPLETED' | 'CALL_ANALYSIS_FAILED' | 'CALL_ANALYSIS_CANCELLED' | 'SIMULATION_RUN_PLAN_JOB_STARTED' | 'SIMULATION_RUN_PLAN_JOB_COMPLETED' | 'SIMULATION_RUN_PLAN_JOB_FAILED' | 'SIMULATION_RUN_PLAN_JOB_CANCELLED' | 'SIMULATION_JOB_STARTED' | 'SIMULATION_JOB_COMPLETED' | 'SIMULATION_JOB_FAILED' | 'SIMULATION_JOB_CANCELLED' | 'METRIC_COLLECTION_JOB_COMPLETED' | 'METRIC_COLLECTION_JOB_FAILED' | 'CHAT_ANALYSIS_COMPLETED' | 'CHAT_ANALYSIS_FAILED' | 'ISSUE_OPENED' | 'ISSUE_RESOLVED'>;
600
+ type: 'event';
601
+ }
602
+ interface AlertSimulationTrigger {
603
+ conditions: Array<'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'>;
604
+ type: 'simulation';
605
+ deliveryFormat?: 'MESSAGE' | 'PDF';
606
+ plan?: string;
607
+ }
608
+ interface Actions {
609
+ slack?: Array<Actions.Slack>;
610
+ webhooks?: Array<string>;
611
+ }
612
+ namespace Actions {
613
+ interface Slack {
614
+ channelId: string;
615
+ channelName: string;
616
+ }
617
+ }
618
+ }
619
+ interface ToolConfig {
620
+ kind: 'tool';
621
+ name: string;
622
+ agent?: string;
623
+ description?: string | null;
624
+ expectedResult?: string | null;
625
+ invocationCriteria?: string | null;
626
+ parameters?: {
627
+ [key: string]: 'string' | 'number' | 'boolean';
628
+ };
629
+ }
630
+ }
327
631
  }
328
632
  export interface ConfigFlowStep {
329
633
  type: 'AGENT_TURN' | 'CUSTOMER_TURN' | 'CUSTOMER_FIRST_MESSAGE' | 'CUSTOMER_VERBATIM_TURN' | 'CUSTOMER_SILENCE' | 'CUSTOMER_DTMF' | 'AGENT_DTMF' | 'VOICEMAIL' | 'SCENARIO_LINK' | 'CUSTOMER_HANDOFF';
@@ -367,13 +671,14 @@ export declare namespace ConfigApplyResponse {
367
671
  namespace Data {
368
672
  interface Change {
369
673
  configKey: string;
370
- kind: 'agent' | 'persona' | 'httpRequestDefinition' | 'flow' | 'collector' | 'metric' | 'simulationPlan' | 'alert' | 'tool';
674
+ kind: 'agent' | 'persona' | 'httpRequestDefinition' | 'flow' | 'collector' | 'metric' | 'simulationPlan' | 'alert' | 'tool' | 'project' | 'member';
371
675
  name: string;
372
676
  op: 'create' | 'update' | 'delete' | 'noop';
373
677
  status: 'applied' | 'skipped' | 'failed';
374
678
  id?: string;
375
679
  detail?: string;
376
680
  error?: string;
681
+ project?: string;
377
682
  signingSecret?: string;
378
683
  }
379
684
  interface Summary {
@@ -396,10 +701,11 @@ export declare namespace ConfigDiffResponse {
396
701
  namespace Data {
397
702
  interface Change {
398
703
  configKey: string;
399
- kind: 'agent' | 'persona' | 'httpRequestDefinition' | 'flow' | 'collector' | 'metric' | 'simulationPlan' | 'alert' | 'tool';
704
+ kind: 'agent' | 'persona' | 'httpRequestDefinition' | 'flow' | 'collector' | 'metric' | 'simulationPlan' | 'alert' | 'tool' | 'project' | 'member';
400
705
  name: string;
401
706
  op: 'create' | 'update' | 'delete' | 'noop';
402
707
  detail?: string;
708
+ project?: string;
403
709
  }
404
710
  interface Summary {
405
711
  create: number;
@@ -410,7 +716,7 @@ export declare namespace ConfigDiffResponse {
410
716
  }
411
717
  }
412
718
  export interface ConfigApplyParams {
413
- resources: Array<ConfigApplyParams.AgentConfig | ConfigApplyParams.HTTPRequestDefinitionConfig | ConfigApplyParams.PersonaConfig | ConfigApplyParams.ImprovFlowConfig | ConfigApplyParams.ScriptedFlowConfig | ConfigApplyParams.CollectorConfig | ConfigApplyParams.MetricConfig | ConfigApplyParams.SimulationPlanConfig | ConfigApplyParams.QaSimulationPlanConfig | ConfigApplyParams.AlertConfig | ConfigApplyParams.ToolConfig>;
719
+ resources: Array<ConfigApplyParams.AgentConfig | ConfigApplyParams.HTTPRequestDefinitionConfig | ConfigApplyParams.PersonaConfig | ConfigApplyParams.ImprovFlowConfig | ConfigApplyParams.ScriptedFlowConfig | ConfigApplyParams.CollectorConfig | ConfigApplyParams.MetricConfig | ConfigApplyParams.SimulationPlanConfig | ConfigApplyParams.QaSimulationPlanConfig | ConfigApplyParams.AlertConfig | ConfigApplyParams.ToolConfig | ConfigApplyParams.ProjectConfig>;
414
720
  prune?: boolean;
415
721
  }
416
722
  export declare namespace ConfigApplyParams {
@@ -701,9 +1007,312 @@ export declare namespace ConfigApplyParams {
701
1007
  [key: string]: 'string' | 'number' | 'boolean';
702
1008
  };
703
1009
  }
1010
+ interface ProjectConfig {
1011
+ kind: 'project';
1012
+ name: string;
1013
+ category?: 'HEALTHCARE' | 'FINANCIAL' | 'RETAIL' | 'HOSPITALITY' | 'AUTOMOTIVE' | 'GOVERNMENT' | 'EDUCATION' | 'REAL_ESTATE' | 'OTHER';
1014
+ dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1';
1015
+ description?: string;
1016
+ displayName?: string;
1017
+ members?: Array<ProjectConfig.Member>;
1018
+ resources?: Array<ProjectConfig.AgentConfig | ProjectConfig.HTTPRequestDefinitionConfig | ProjectConfig.PersonaConfig | ProjectConfig.ImprovFlowConfig | ProjectConfig.ScriptedFlowConfig | ProjectConfig.CollectorConfig | ProjectConfig.MetricConfig | ProjectConfig.SimulationPlanConfig | ProjectConfig.QaSimulationPlanConfig | ProjectConfig.AlertConfig | ProjectConfig.ToolConfig>;
1019
+ }
1020
+ namespace ProjectConfig {
1021
+ interface Member {
1022
+ email: string;
1023
+ role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER';
1024
+ }
1025
+ interface AgentConfig {
1026
+ kind: 'agent';
1027
+ name: string;
1028
+ customId?: string | null;
1029
+ description?: string | null;
1030
+ displayName?: string;
1031
+ endpoints?: Array<AgentConfig.Endpoint>;
1032
+ prompt?: string | null;
1033
+ }
1034
+ namespace AgentConfig {
1035
+ interface Endpoint {
1036
+ value: string;
1037
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
1038
+ environment?: string;
1039
+ outboundDialHttpRequestDefinition?: string;
1040
+ outboundDialType?: 'NONE' | 'HTTP_REQUEST';
1041
+ type?: 'PHONE' | 'WEBSOCKET';
1042
+ }
1043
+ }
1044
+ interface HTTPRequestDefinitionConfig {
1045
+ kind: 'httpRequestDefinition';
1046
+ name: string;
1047
+ url: string;
1048
+ body?: string;
1049
+ description?: string | null;
1050
+ headers?: {
1051
+ [key: string]: string;
1052
+ };
1053
+ method?: 'POST' | 'PUT' | 'PATCH' | 'GET';
1054
+ }
1055
+ interface PersonaConfig {
1056
+ accent: 'US' | 'US_X_SOUTH' | 'GB' | 'ES' | 'DE' | 'IN' | 'FR' | 'NL' | 'SA' | 'GR' | 'AU' | 'IT' | 'ID' | 'TH' | 'JP' | 'NZ' | 'PH' | 'SG' | 'MY' | 'HK' | 'TR' | 'PT' | 'IL';
1057
+ gender: 'MALE' | 'FEMALE';
1058
+ kind: 'persona';
1059
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
1060
+ name: string;
1061
+ age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
1062
+ backgroundNoise?: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'CONSTRUCTION' | 'CRYING_BABY' | 'DRIVING' | 'LIBRARY' | 'OFFICE' | 'THUNDERSTORM' | 'TRAIN';
1063
+ backstoryPrompt?: string | null;
1064
+ baseEmotion?: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED' | 'ANGRY' | 'ANXIOUS' | 'SAD';
1065
+ confirmationStyle?: 'EXPLICIT' | 'VAGUE';
1066
+ description?: string | null;
1067
+ displayName?: string;
1068
+ hasDisfluencies?: boolean;
1069
+ idleMessageMaxSpokenCount?: number;
1070
+ idleMessageResetCountOnUserSpeechEnabled?: boolean;
1071
+ idleMessages?: Array<string> | null;
1072
+ idleTimeoutSeconds?: number;
1073
+ intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1074
+ interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
1075
+ memoryReliability?: 'HIGH' | 'LOW';
1076
+ properties?: {
1077
+ [key: string]: unknown;
1078
+ };
1079
+ responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
1080
+ secondaryLanguage?: 'EN';
1081
+ speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1082
+ speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1083
+ understoodLanguages?: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
1084
+ }
1085
+ interface ImprovFlowConfig {
1086
+ agents: Array<string>;
1087
+ happyPath: ImprovFlowConfig.HappyPath;
1088
+ kind: 'flow';
1089
+ name: string;
1090
+ type: 'improv';
1091
+ description?: string | null;
1092
+ edgeCases?: Array<ImprovFlowConfig.EdgeCase>;
1093
+ expectations?: Array<string>;
1094
+ title?: string;
1095
+ }
1096
+ namespace ImprovFlowConfig {
1097
+ interface HappyPath {
1098
+ environment: string;
1099
+ persona: string;
1100
+ expectations?: Array<string>;
1101
+ prompt?: string;
1102
+ title?: string;
1103
+ }
1104
+ interface EdgeCase {
1105
+ name: string;
1106
+ environment?: string;
1107
+ expectations?: Array<string>;
1108
+ persona?: string;
1109
+ prompt?: string;
1110
+ title?: string;
1111
+ }
1112
+ }
1113
+ interface ScriptedFlowConfig {
1114
+ graph: Array<ConfigFlowStep>;
1115
+ kind: 'flow';
1116
+ name: string;
1117
+ type: 'scripted';
1118
+ adherence?: 'LOOSE' | 'STRICT';
1119
+ agents?: Array<string>;
1120
+ branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE';
1121
+ description?: string | null;
1122
+ expectations?: Array<string>;
1123
+ offScript?: ScriptedFlowConfig.OffScript;
1124
+ title?: string;
1125
+ }
1126
+ namespace ScriptedFlowConfig {
1127
+ interface OffScript {
1128
+ maxAttempts?: number;
1129
+ reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
1130
+ sayLine?: string;
1131
+ then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
1132
+ waitSeconds?: number;
1133
+ }
1134
+ }
1135
+ interface CollectorConfig {
1136
+ kind: 'collector';
1137
+ metrics: Array<string>;
1138
+ modality: 'call' | 'chat';
1139
+ name: string;
1140
+ displayName?: string;
1141
+ filters?: Array<CollectorConfig.Filter>;
1142
+ status?: 'ACTIVE' | 'INACTIVE';
1143
+ }
1144
+ namespace CollectorConfig {
1145
+ interface Filter {
1146
+ conditions: Array<Filter.Condition>;
1147
+ }
1148
+ namespace Filter {
1149
+ interface Condition {
1150
+ key: string;
1151
+ type: 'AGENT' | 'CALL_SOURCE' | 'CALL_PROPERTY' | 'INTEGRATION';
1152
+ operator?: 'EQUALS' | 'NOT_EQUALS' | 'CONTAINS' | 'STARTS_WITH' | 'GREATER_THAN' | 'LESS_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN_OR_EQUALS';
1153
+ value?: string;
1154
+ }
1155
+ }
1156
+ }
1157
+ interface MetricConfig {
1158
+ kind: 'metric';
1159
+ name: string;
1160
+ prompt: string;
1161
+ type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION';
1162
+ contexts?: Array<'CALL' | 'SEGMENT' | 'TURN'>;
1163
+ displayName?: string;
1164
+ falseLabel?: string;
1165
+ maxSelections?: number;
1166
+ options?: Array<MetricConfig.Option>;
1167
+ participantRole?: 'AGENT' | 'CUSTOMER';
1168
+ scaleLabels?: Array<MetricConfig.ScaleLabel>;
1169
+ scaleMax?: number;
1170
+ scaleMin?: number;
1171
+ scope?: 'GLOBAL' | 'PER_PARTICIPANT';
1172
+ trueLabel?: string;
1173
+ }
1174
+ namespace MetricConfig {
1175
+ interface Option {
1176
+ displayOrder: number;
1177
+ label: string;
1178
+ description?: string;
1179
+ }
1180
+ interface ScaleLabel {
1181
+ displayOrder: number;
1182
+ label: string;
1183
+ rangeMax: number;
1184
+ rangeMin: number;
1185
+ colorHex?: string;
1186
+ description?: string;
1187
+ }
1188
+ }
1189
+ interface SimulationPlanConfig {
1190
+ agentEndpoints: Array<SimulationPlanConfig.AgentEndpoint>;
1191
+ direction: 'INBOUND' | 'OUTBOUND';
1192
+ flows: Array<SimulationPlanConfig.Flow>;
1193
+ kind: 'simulationPlan';
1194
+ maxDurationSeconds: number;
1195
+ metrics: Array<string>;
1196
+ name: string;
1197
+ description?: string | null;
1198
+ endCallPhrases?: Array<string>;
1199
+ endCallReasons?: Array<string>;
1200
+ enrichWithLiveConversation?: boolean;
1201
+ executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
1202
+ includeAutomaticMetrics?: boolean;
1203
+ includeFlowMetrics?: boolean;
1204
+ iterations?: number;
1205
+ maxConcurrentJobs?: number;
1206
+ silenceTimeoutSeconds?: number;
1207
+ template?: 'manual';
1208
+ }
1209
+ namespace SimulationPlanConfig {
1210
+ interface AgentEndpoint {
1211
+ agent: string;
1212
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
1213
+ value?: string;
1214
+ }
1215
+ interface Flow {
1216
+ edgeCases?: Array<string>;
1217
+ flow?: string;
1218
+ happyPath?: boolean;
1219
+ personaOverride?: string;
1220
+ system?: string;
1221
+ }
1222
+ }
1223
+ interface QaSimulationPlanConfig {
1224
+ agentEndpoints: Array<QaSimulationPlanConfig.AgentEndpoint>;
1225
+ direction: 'INBOUND' | 'OUTBOUND';
1226
+ environment: string;
1227
+ kind: 'simulationPlan';
1228
+ maxDurationSeconds: number;
1229
+ name: string;
1230
+ persona: string;
1231
+ questions: Array<QaSimulationPlanConfig.Question>;
1232
+ template: 'question-answer-check';
1233
+ description?: string | null;
1234
+ endCallPhrases?: Array<string>;
1235
+ endCallReasons?: Array<string>;
1236
+ enrichWithLiveConversation?: boolean;
1237
+ executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
1238
+ gradeWithKnowledgeBase?: boolean;
1239
+ includeAutomaticMetrics?: boolean;
1240
+ includeFlowMetrics?: boolean;
1241
+ iterations?: number;
1242
+ maxConcurrentJobs?: number;
1243
+ metrics?: Array<string>;
1244
+ silenceTimeoutSeconds?: number;
1245
+ }
1246
+ namespace QaSimulationPlanConfig {
1247
+ interface AgentEndpoint {
1248
+ agent: string;
1249
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
1250
+ value?: string;
1251
+ }
1252
+ interface Question {
1253
+ ask: string;
1254
+ expect?: string;
1255
+ name?: string;
1256
+ }
1257
+ }
1258
+ interface AlertConfig {
1259
+ kind: 'alert';
1260
+ name: string;
1261
+ trigger: AlertConfig.AlertThresholdTrigger | AlertConfig.AlertEventTrigger | AlertConfig.AlertSimulationTrigger;
1262
+ actions?: AlertConfig.Actions;
1263
+ displayName?: string;
1264
+ enabled?: boolean;
1265
+ }
1266
+ namespace AlertConfig {
1267
+ interface AlertThresholdTrigger {
1268
+ aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN';
1269
+ metric: string;
1270
+ operator: 'GT' | 'GTE' | 'LT' | 'LTE';
1271
+ thresholdValue: number;
1272
+ type: 'threshold';
1273
+ windowMinutes: number;
1274
+ consecutiveOpen?: number;
1275
+ consecutiveResolve?: number;
1276
+ grouping?: 'NONE' | 'BY_AGENT';
1277
+ metricVariant?: string;
1278
+ minSampleSize?: number;
1279
+ }
1280
+ interface AlertEventTrigger {
1281
+ events: Array<'CALL_ANALYSIS_COMPLETED' | 'CALL_ANALYSIS_FAILED' | 'CALL_ANALYSIS_CANCELLED' | 'SIMULATION_RUN_PLAN_JOB_STARTED' | 'SIMULATION_RUN_PLAN_JOB_COMPLETED' | 'SIMULATION_RUN_PLAN_JOB_FAILED' | 'SIMULATION_RUN_PLAN_JOB_CANCELLED' | 'SIMULATION_JOB_STARTED' | 'SIMULATION_JOB_COMPLETED' | 'SIMULATION_JOB_FAILED' | 'SIMULATION_JOB_CANCELLED' | 'METRIC_COLLECTION_JOB_COMPLETED' | 'METRIC_COLLECTION_JOB_FAILED' | 'CHAT_ANALYSIS_COMPLETED' | 'CHAT_ANALYSIS_FAILED' | 'ISSUE_OPENED' | 'ISSUE_RESOLVED'>;
1282
+ type: 'event';
1283
+ }
1284
+ interface AlertSimulationTrigger {
1285
+ conditions: Array<'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'>;
1286
+ type: 'simulation';
1287
+ deliveryFormat?: 'MESSAGE' | 'PDF';
1288
+ plan?: string;
1289
+ }
1290
+ interface Actions {
1291
+ slack?: Array<Actions.Slack>;
1292
+ webhooks?: Array<string>;
1293
+ }
1294
+ namespace Actions {
1295
+ interface Slack {
1296
+ channelId: string;
1297
+ channelName: string;
1298
+ }
1299
+ }
1300
+ }
1301
+ interface ToolConfig {
1302
+ kind: 'tool';
1303
+ name: string;
1304
+ agent?: string;
1305
+ description?: string | null;
1306
+ expectedResult?: string | null;
1307
+ invocationCriteria?: string | null;
1308
+ parameters?: {
1309
+ [key: string]: 'string' | 'number' | 'boolean';
1310
+ };
1311
+ }
1312
+ }
704
1313
  }
705
1314
  export interface ConfigDiffParams {
706
- resources: Array<ConfigDiffParams.AgentConfig | ConfigDiffParams.HTTPRequestDefinitionConfig | ConfigDiffParams.PersonaConfig | ConfigDiffParams.ImprovFlowConfig | ConfigDiffParams.ScriptedFlowConfig | ConfigDiffParams.CollectorConfig | ConfigDiffParams.MetricConfig | ConfigDiffParams.SimulationPlanConfig | ConfigDiffParams.QaSimulationPlanConfig | ConfigDiffParams.AlertConfig | ConfigDiffParams.ToolConfig>;
1315
+ resources: Array<ConfigDiffParams.AgentConfig | ConfigDiffParams.HTTPRequestDefinitionConfig | ConfigDiffParams.PersonaConfig | ConfigDiffParams.ImprovFlowConfig | ConfigDiffParams.ScriptedFlowConfig | ConfigDiffParams.CollectorConfig | ConfigDiffParams.MetricConfig | ConfigDiffParams.SimulationPlanConfig | ConfigDiffParams.QaSimulationPlanConfig | ConfigDiffParams.AlertConfig | ConfigDiffParams.ToolConfig | ConfigDiffParams.ProjectConfig>;
707
1316
  prune?: boolean;
708
1317
  }
709
1318
  export declare namespace ConfigDiffParams {
@@ -994,6 +1603,309 @@ export declare namespace ConfigDiffParams {
994
1603
  [key: string]: 'string' | 'number' | 'boolean';
995
1604
  };
996
1605
  }
1606
+ interface ProjectConfig {
1607
+ kind: 'project';
1608
+ name: string;
1609
+ category?: 'HEALTHCARE' | 'FINANCIAL' | 'RETAIL' | 'HOSPITALITY' | 'AUTOMOTIVE' | 'GOVERNMENT' | 'EDUCATION' | 'REAL_ESTATE' | 'OTHER';
1610
+ dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1';
1611
+ description?: string;
1612
+ displayName?: string;
1613
+ members?: Array<ProjectConfig.Member>;
1614
+ resources?: Array<ProjectConfig.AgentConfig | ProjectConfig.HTTPRequestDefinitionConfig | ProjectConfig.PersonaConfig | ProjectConfig.ImprovFlowConfig | ProjectConfig.ScriptedFlowConfig | ProjectConfig.CollectorConfig | ProjectConfig.MetricConfig | ProjectConfig.SimulationPlanConfig | ProjectConfig.QaSimulationPlanConfig | ProjectConfig.AlertConfig | ProjectConfig.ToolConfig>;
1615
+ }
1616
+ namespace ProjectConfig {
1617
+ interface Member {
1618
+ email: string;
1619
+ role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER';
1620
+ }
1621
+ interface AgentConfig {
1622
+ kind: 'agent';
1623
+ name: string;
1624
+ customId?: string | null;
1625
+ description?: string | null;
1626
+ displayName?: string;
1627
+ endpoints?: Array<AgentConfig.Endpoint>;
1628
+ prompt?: string | null;
1629
+ }
1630
+ namespace AgentConfig {
1631
+ interface Endpoint {
1632
+ value: string;
1633
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
1634
+ environment?: string;
1635
+ outboundDialHttpRequestDefinition?: string;
1636
+ outboundDialType?: 'NONE' | 'HTTP_REQUEST';
1637
+ type?: 'PHONE' | 'WEBSOCKET';
1638
+ }
1639
+ }
1640
+ interface HTTPRequestDefinitionConfig {
1641
+ kind: 'httpRequestDefinition';
1642
+ name: string;
1643
+ url: string;
1644
+ body?: string;
1645
+ description?: string | null;
1646
+ headers?: {
1647
+ [key: string]: string;
1648
+ };
1649
+ method?: 'POST' | 'PUT' | 'PATCH' | 'GET';
1650
+ }
1651
+ interface PersonaConfig {
1652
+ accent: 'US' | 'US_X_SOUTH' | 'GB' | 'ES' | 'DE' | 'IN' | 'FR' | 'NL' | 'SA' | 'GR' | 'AU' | 'IT' | 'ID' | 'TH' | 'JP' | 'NZ' | 'PH' | 'SG' | 'MY' | 'HK' | 'TR' | 'PT' | 'IL';
1653
+ gender: 'MALE' | 'FEMALE';
1654
+ kind: 'persona';
1655
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
1656
+ name: string;
1657
+ age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
1658
+ backgroundNoise?: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'CONSTRUCTION' | 'CRYING_BABY' | 'DRIVING' | 'LIBRARY' | 'OFFICE' | 'THUNDERSTORM' | 'TRAIN';
1659
+ backstoryPrompt?: string | null;
1660
+ baseEmotion?: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED' | 'ANGRY' | 'ANXIOUS' | 'SAD';
1661
+ confirmationStyle?: 'EXPLICIT' | 'VAGUE';
1662
+ description?: string | null;
1663
+ displayName?: string;
1664
+ hasDisfluencies?: boolean;
1665
+ idleMessageMaxSpokenCount?: number;
1666
+ idleMessageResetCountOnUserSpeechEnabled?: boolean;
1667
+ idleMessages?: Array<string> | null;
1668
+ idleTimeoutSeconds?: number;
1669
+ intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1670
+ interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY';
1671
+ memoryReliability?: 'HIGH' | 'LOW';
1672
+ properties?: {
1673
+ [key: string]: unknown;
1674
+ };
1675
+ responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN';
1676
+ secondaryLanguage?: 'EN';
1677
+ speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1678
+ speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1679
+ understoodLanguages?: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
1680
+ }
1681
+ interface ImprovFlowConfig {
1682
+ agents: Array<string>;
1683
+ happyPath: ImprovFlowConfig.HappyPath;
1684
+ kind: 'flow';
1685
+ name: string;
1686
+ type: 'improv';
1687
+ description?: string | null;
1688
+ edgeCases?: Array<ImprovFlowConfig.EdgeCase>;
1689
+ expectations?: Array<string>;
1690
+ title?: string;
1691
+ }
1692
+ namespace ImprovFlowConfig {
1693
+ interface HappyPath {
1694
+ environment: string;
1695
+ persona: string;
1696
+ expectations?: Array<string>;
1697
+ prompt?: string;
1698
+ title?: string;
1699
+ }
1700
+ interface EdgeCase {
1701
+ name: string;
1702
+ environment?: string;
1703
+ expectations?: Array<string>;
1704
+ persona?: string;
1705
+ prompt?: string;
1706
+ title?: string;
1707
+ }
1708
+ }
1709
+ interface ScriptedFlowConfig {
1710
+ graph: Array<ConfigFlowStep>;
1711
+ kind: 'flow';
1712
+ name: string;
1713
+ type: 'scripted';
1714
+ adherence?: 'LOOSE' | 'STRICT';
1715
+ agents?: Array<string>;
1716
+ branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE';
1717
+ description?: string | null;
1718
+ expectations?: Array<string>;
1719
+ offScript?: ScriptedFlowConfig.OffScript;
1720
+ title?: string;
1721
+ }
1722
+ namespace ScriptedFlowConfig {
1723
+ interface OffScript {
1724
+ maxAttempts?: number;
1725
+ reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
1726
+ sayLine?: string;
1727
+ then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
1728
+ waitSeconds?: number;
1729
+ }
1730
+ }
1731
+ interface CollectorConfig {
1732
+ kind: 'collector';
1733
+ metrics: Array<string>;
1734
+ modality: 'call' | 'chat';
1735
+ name: string;
1736
+ displayName?: string;
1737
+ filters?: Array<CollectorConfig.Filter>;
1738
+ status?: 'ACTIVE' | 'INACTIVE';
1739
+ }
1740
+ namespace CollectorConfig {
1741
+ interface Filter {
1742
+ conditions: Array<Filter.Condition>;
1743
+ }
1744
+ namespace Filter {
1745
+ interface Condition {
1746
+ key: string;
1747
+ type: 'AGENT' | 'CALL_SOURCE' | 'CALL_PROPERTY' | 'INTEGRATION';
1748
+ operator?: 'EQUALS' | 'NOT_EQUALS' | 'CONTAINS' | 'STARTS_WITH' | 'GREATER_THAN' | 'LESS_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN_OR_EQUALS';
1749
+ value?: string;
1750
+ }
1751
+ }
1752
+ }
1753
+ interface MetricConfig {
1754
+ kind: 'metric';
1755
+ name: string;
1756
+ prompt: string;
1757
+ type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION';
1758
+ contexts?: Array<'CALL' | 'SEGMENT' | 'TURN'>;
1759
+ displayName?: string;
1760
+ falseLabel?: string;
1761
+ maxSelections?: number;
1762
+ options?: Array<MetricConfig.Option>;
1763
+ participantRole?: 'AGENT' | 'CUSTOMER';
1764
+ scaleLabels?: Array<MetricConfig.ScaleLabel>;
1765
+ scaleMax?: number;
1766
+ scaleMin?: number;
1767
+ scope?: 'GLOBAL' | 'PER_PARTICIPANT';
1768
+ trueLabel?: string;
1769
+ }
1770
+ namespace MetricConfig {
1771
+ interface Option {
1772
+ displayOrder: number;
1773
+ label: string;
1774
+ description?: string;
1775
+ }
1776
+ interface ScaleLabel {
1777
+ displayOrder: number;
1778
+ label: string;
1779
+ rangeMax: number;
1780
+ rangeMin: number;
1781
+ colorHex?: string;
1782
+ description?: string;
1783
+ }
1784
+ }
1785
+ interface SimulationPlanConfig {
1786
+ agentEndpoints: Array<SimulationPlanConfig.AgentEndpoint>;
1787
+ direction: 'INBOUND' | 'OUTBOUND';
1788
+ flows: Array<SimulationPlanConfig.Flow>;
1789
+ kind: 'simulationPlan';
1790
+ maxDurationSeconds: number;
1791
+ metrics: Array<string>;
1792
+ name: string;
1793
+ description?: string | null;
1794
+ endCallPhrases?: Array<string>;
1795
+ endCallReasons?: Array<string>;
1796
+ enrichWithLiveConversation?: boolean;
1797
+ executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
1798
+ includeAutomaticMetrics?: boolean;
1799
+ includeFlowMetrics?: boolean;
1800
+ iterations?: number;
1801
+ maxConcurrentJobs?: number;
1802
+ silenceTimeoutSeconds?: number;
1803
+ template?: 'manual';
1804
+ }
1805
+ namespace SimulationPlanConfig {
1806
+ interface AgentEndpoint {
1807
+ agent: string;
1808
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
1809
+ value?: string;
1810
+ }
1811
+ interface Flow {
1812
+ edgeCases?: Array<string>;
1813
+ flow?: string;
1814
+ happyPath?: boolean;
1815
+ personaOverride?: string;
1816
+ system?: string;
1817
+ }
1818
+ }
1819
+ interface QaSimulationPlanConfig {
1820
+ agentEndpoints: Array<QaSimulationPlanConfig.AgentEndpoint>;
1821
+ direction: 'INBOUND' | 'OUTBOUND';
1822
+ environment: string;
1823
+ kind: 'simulationPlan';
1824
+ maxDurationSeconds: number;
1825
+ name: string;
1826
+ persona: string;
1827
+ questions: Array<QaSimulationPlanConfig.Question>;
1828
+ template: 'question-answer-check';
1829
+ description?: string | null;
1830
+ endCallPhrases?: Array<string>;
1831
+ endCallReasons?: Array<string>;
1832
+ enrichWithLiveConversation?: boolean;
1833
+ executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
1834
+ gradeWithKnowledgeBase?: boolean;
1835
+ includeAutomaticMetrics?: boolean;
1836
+ includeFlowMetrics?: boolean;
1837
+ iterations?: number;
1838
+ maxConcurrentJobs?: number;
1839
+ metrics?: Array<string>;
1840
+ silenceTimeoutSeconds?: number;
1841
+ }
1842
+ namespace QaSimulationPlanConfig {
1843
+ interface AgentEndpoint {
1844
+ agent: string;
1845
+ direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING';
1846
+ value?: string;
1847
+ }
1848
+ interface Question {
1849
+ ask: string;
1850
+ expect?: string;
1851
+ name?: string;
1852
+ }
1853
+ }
1854
+ interface AlertConfig {
1855
+ kind: 'alert';
1856
+ name: string;
1857
+ trigger: AlertConfig.AlertThresholdTrigger | AlertConfig.AlertEventTrigger | AlertConfig.AlertSimulationTrigger;
1858
+ actions?: AlertConfig.Actions;
1859
+ displayName?: string;
1860
+ enabled?: boolean;
1861
+ }
1862
+ namespace AlertConfig {
1863
+ interface AlertThresholdTrigger {
1864
+ aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN';
1865
+ metric: string;
1866
+ operator: 'GT' | 'GTE' | 'LT' | 'LTE';
1867
+ thresholdValue: number;
1868
+ type: 'threshold';
1869
+ windowMinutes: number;
1870
+ consecutiveOpen?: number;
1871
+ consecutiveResolve?: number;
1872
+ grouping?: 'NONE' | 'BY_AGENT';
1873
+ metricVariant?: string;
1874
+ minSampleSize?: number;
1875
+ }
1876
+ interface AlertEventTrigger {
1877
+ events: Array<'CALL_ANALYSIS_COMPLETED' | 'CALL_ANALYSIS_FAILED' | 'CALL_ANALYSIS_CANCELLED' | 'SIMULATION_RUN_PLAN_JOB_STARTED' | 'SIMULATION_RUN_PLAN_JOB_COMPLETED' | 'SIMULATION_RUN_PLAN_JOB_FAILED' | 'SIMULATION_RUN_PLAN_JOB_CANCELLED' | 'SIMULATION_JOB_STARTED' | 'SIMULATION_JOB_COMPLETED' | 'SIMULATION_JOB_FAILED' | 'SIMULATION_JOB_CANCELLED' | 'METRIC_COLLECTION_JOB_COMPLETED' | 'METRIC_COLLECTION_JOB_FAILED' | 'CHAT_ANALYSIS_COMPLETED' | 'CHAT_ANALYSIS_FAILED' | 'ISSUE_OPENED' | 'ISSUE_RESOLVED'>;
1878
+ type: 'event';
1879
+ }
1880
+ interface AlertSimulationTrigger {
1881
+ conditions: Array<'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'>;
1882
+ type: 'simulation';
1883
+ deliveryFormat?: 'MESSAGE' | 'PDF';
1884
+ plan?: string;
1885
+ }
1886
+ interface Actions {
1887
+ slack?: Array<Actions.Slack>;
1888
+ webhooks?: Array<string>;
1889
+ }
1890
+ namespace Actions {
1891
+ interface Slack {
1892
+ channelId: string;
1893
+ channelName: string;
1894
+ }
1895
+ }
1896
+ }
1897
+ interface ToolConfig {
1898
+ kind: 'tool';
1899
+ name: string;
1900
+ agent?: string;
1901
+ description?: string | null;
1902
+ expectedResult?: string | null;
1903
+ invocationCriteria?: string | null;
1904
+ parameters?: {
1905
+ [key: string]: 'string' | 'number' | 'boolean';
1906
+ };
1907
+ }
1908
+ }
997
1909
  }
998
1910
  export declare namespace Config {
999
1911
  export { type Bundle as Bundle, type ConfigFlowStep as ConfigFlowStep, type ConfigApplyResponse as ConfigApplyResponse, type ConfigDiffResponse as ConfigDiffResponse, type ConfigApplyParams as ConfigApplyParams, type ConfigDiffParams as ConfigDiffParams, };