@roarkanalytics/sdk 2.30.0 → 2.33.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 (245) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/api-promise.d.mts +1 -0
  3. package/api-promise.d.mts.map +1 -1
  4. package/api-promise.d.ts +1 -0
  5. package/api-promise.d.ts.map +1 -1
  6. package/api-promise.mjs +1 -0
  7. package/api-promise.mjs.map +1 -1
  8. package/client.d.mts +17 -5
  9. package/client.d.mts.map +1 -1
  10. package/client.d.ts +17 -5
  11. package/client.d.ts.map +1 -1
  12. package/client.js +35 -4
  13. package/client.js.map +1 -1
  14. package/client.mjs +35 -4
  15. package/client.mjs.map +1 -1
  16. package/core/api-promise.d.mts.map +1 -1
  17. package/core/api-promise.d.ts.map +1 -1
  18. package/core/api-promise.mjs.map +1 -1
  19. package/core/error.mjs.map +1 -1
  20. package/core/resource.d.mts.map +1 -1
  21. package/core/resource.d.ts.map +1 -1
  22. package/core/uploads.d.mts.map +1 -1
  23. package/core/uploads.d.ts.map +1 -1
  24. package/core/uploads.mjs.map +1 -1
  25. package/error.d.mts +1 -0
  26. package/error.d.mts.map +1 -1
  27. package/error.d.ts +1 -0
  28. package/error.d.ts.map +1 -1
  29. package/error.mjs +1 -0
  30. package/error.mjs.map +1 -1
  31. package/index.d.mts.map +1 -1
  32. package/index.d.ts.map +1 -1
  33. package/index.mjs.map +1 -1
  34. package/internal/detect-platform.mjs.map +1 -1
  35. package/internal/headers.mjs.map +1 -1
  36. package/internal/parse.d.mts.map +1 -1
  37. package/internal/parse.d.ts.map +1 -1
  38. package/internal/parse.mjs.map +1 -1
  39. package/internal/qs/formats.d.mts.map +1 -1
  40. package/internal/qs/formats.d.ts.map +1 -1
  41. package/internal/qs/index.d.mts +2 -2
  42. package/internal/qs/index.d.mts.map +1 -1
  43. package/internal/qs/index.d.ts +2 -2
  44. package/internal/qs/index.d.ts.map +1 -1
  45. package/internal/qs/index.mjs.map +1 -1
  46. package/internal/qs/stringify.d.mts.map +1 -1
  47. package/internal/qs/stringify.d.ts.map +1 -1
  48. package/internal/qs/stringify.mjs.map +1 -1
  49. package/internal/qs/utils.d.mts.map +1 -1
  50. package/internal/qs/utils.d.ts.map +1 -1
  51. package/internal/qs/utils.mjs.map +1 -1
  52. package/internal/request-options.d.mts.map +1 -1
  53. package/internal/request-options.d.ts.map +1 -1
  54. package/internal/shims.d.mts +6 -0
  55. package/internal/shims.d.mts.map +1 -1
  56. package/internal/shims.d.ts +6 -0
  57. package/internal/shims.d.ts.map +1 -1
  58. package/internal/to-file.d.mts.map +1 -1
  59. package/internal/to-file.d.ts.map +1 -1
  60. package/internal/to-file.mjs.map +1 -1
  61. package/internal/types.d.mts +10 -10
  62. package/internal/types.d.mts.map +1 -1
  63. package/internal/types.d.ts +10 -10
  64. package/internal/types.d.ts.map +1 -1
  65. package/internal/uploads.d.mts.map +1 -1
  66. package/internal/uploads.d.ts.map +1 -1
  67. package/internal/uploads.mjs.map +1 -1
  68. package/internal/utils/base64.mjs.map +1 -1
  69. package/internal/utils/log.d.mts.map +1 -1
  70. package/internal/utils/log.d.ts.map +1 -1
  71. package/internal/utils/log.js +2 -0
  72. package/internal/utils/log.js.map +1 -1
  73. package/internal/utils/log.mjs +2 -0
  74. package/internal/utils/log.mjs.map +1 -1
  75. package/internal/utils/path.mjs.map +1 -1
  76. package/internal/utils/query.mjs.map +1 -1
  77. package/internal/utils/values.mjs.map +1 -1
  78. package/internal/utils.d.mts.map +1 -1
  79. package/internal/utils.d.ts.map +1 -1
  80. package/internal/utils.mjs.map +1 -1
  81. package/package.json +1 -1
  82. package/resource.d.mts +1 -0
  83. package/resource.d.mts.map +1 -1
  84. package/resource.d.ts +1 -0
  85. package/resource.d.ts.map +1 -1
  86. package/resource.mjs +1 -0
  87. package/resource.mjs.map +1 -1
  88. package/resources/agent-endpoint.d.mts +4 -4
  89. package/resources/agent-endpoint.d.mts.map +1 -1
  90. package/resources/agent-endpoint.d.ts +4 -4
  91. package/resources/agent-endpoint.d.ts.map +1 -1
  92. package/resources/agent-endpoint.mjs.map +1 -1
  93. package/resources/agent.d.mts.map +1 -1
  94. package/resources/agent.d.ts.map +1 -1
  95. package/resources/agent.mjs.map +1 -1
  96. package/resources/call.d.mts +310 -162
  97. package/resources/call.d.mts.map +1 -1
  98. package/resources/call.d.ts +310 -162
  99. package/resources/call.d.ts.map +1 -1
  100. package/resources/call.js +6 -7
  101. package/resources/call.js.map +1 -1
  102. package/resources/call.mjs +6 -7
  103. package/resources/call.mjs.map +1 -1
  104. package/resources/config.d.mts +535 -0
  105. package/resources/config.d.mts.map +1 -0
  106. package/resources/config.d.ts +535 -0
  107. package/resources/config.d.ts.map +1 -0
  108. package/resources/config.js +28 -0
  109. package/resources/config.js.map +1 -0
  110. package/resources/config.mjs +24 -0
  111. package/resources/config.mjs.map +1 -0
  112. package/resources/customer-flow-edge-case.d.mts +1742 -0
  113. package/resources/customer-flow-edge-case.d.mts.map +1 -0
  114. package/resources/customer-flow-edge-case.d.ts +1742 -0
  115. package/resources/customer-flow-edge-case.d.ts.map +1 -0
  116. package/resources/customer-flow-edge-case.js +50 -0
  117. package/resources/customer-flow-edge-case.js.map +1 -0
  118. package/resources/customer-flow-edge-case.mjs +46 -0
  119. package/resources/customer-flow-edge-case.mjs.map +1 -0
  120. package/resources/customer-flow.d.mts +7163 -0
  121. package/resources/customer-flow.d.mts.map +1 -0
  122. package/resources/customer-flow.d.ts +7163 -0
  123. package/resources/customer-flow.d.ts.map +1 -0
  124. package/resources/customer-flow.js +87 -0
  125. package/resources/customer-flow.js.map +1 -0
  126. package/resources/customer-flow.mjs +83 -0
  127. package/resources/customer-flow.mjs.map +1 -0
  128. package/resources/health.d.mts.map +1 -1
  129. package/resources/health.d.ts.map +1 -1
  130. package/resources/health.mjs.map +1 -1
  131. package/resources/http-request-definition.d.mts.map +1 -1
  132. package/resources/http-request-definition.d.ts.map +1 -1
  133. package/resources/http-request-definition.mjs.map +1 -1
  134. package/resources/index.d.mts +6 -2
  135. package/resources/index.d.mts.map +1 -1
  136. package/resources/index.d.ts +6 -2
  137. package/resources/index.d.ts.map +1 -1
  138. package/resources/index.js +11 -3
  139. package/resources/index.js.map +1 -1
  140. package/resources/index.mjs +5 -1
  141. package/resources/index.mjs.map +1 -1
  142. package/resources/metric-collection-job.d.mts +5 -3
  143. package/resources/metric-collection-job.d.mts.map +1 -1
  144. package/resources/metric-collection-job.d.ts +5 -3
  145. package/resources/metric-collection-job.d.ts.map +1 -1
  146. package/resources/metric-collection-job.mjs.map +1 -1
  147. package/resources/metric-policy.d.mts.map +1 -1
  148. package/resources/metric-policy.d.ts.map +1 -1
  149. package/resources/metric-policy.mjs.map +1 -1
  150. package/resources/metric.d.mts +804 -109
  151. package/resources/metric.d.mts.map +1 -1
  152. package/resources/metric.d.ts +804 -109
  153. package/resources/metric.d.ts.map +1 -1
  154. package/resources/metric.js +6 -7
  155. package/resources/metric.js.map +1 -1
  156. package/resources/metric.mjs +6 -7
  157. package/resources/metric.mjs.map +1 -1
  158. package/resources/simulation-environment.d.mts +95 -0
  159. package/resources/simulation-environment.d.mts.map +1 -0
  160. package/resources/simulation-environment.d.ts +95 -0
  161. package/resources/simulation-environment.d.ts.map +1 -0
  162. package/resources/simulation-environment.js +24 -0
  163. package/resources/simulation-environment.js.map +1 -0
  164. package/resources/simulation-environment.mjs +20 -0
  165. package/resources/simulation-environment.mjs.map +1 -0
  166. package/resources/simulation-job.d.mts +58 -10
  167. package/resources/simulation-job.d.mts.map +1 -1
  168. package/resources/simulation-job.d.ts +58 -10
  169. package/resources/simulation-job.d.ts.map +1 -1
  170. package/resources/simulation-job.mjs.map +1 -1
  171. package/resources/simulation-persona.d.mts +60 -24
  172. package/resources/simulation-persona.d.mts.map +1 -1
  173. package/resources/simulation-persona.d.ts +60 -24
  174. package/resources/simulation-persona.d.ts.map +1 -1
  175. package/resources/simulation-persona.mjs.map +1 -1
  176. package/resources/simulation-run-plan-job.d.mts +73 -32
  177. package/resources/simulation-run-plan-job.d.mts.map +1 -1
  178. package/resources/simulation-run-plan-job.d.ts +73 -32
  179. package/resources/simulation-run-plan-job.d.ts.map +1 -1
  180. package/resources/simulation-run-plan-job.js +7 -8
  181. package/resources/simulation-run-plan-job.js.map +1 -1
  182. package/resources/simulation-run-plan-job.mjs +7 -8
  183. package/resources/simulation-run-plan-job.mjs.map +1 -1
  184. package/resources/simulation-run-plan.d.mts +408 -39
  185. package/resources/simulation-run-plan.d.mts.map +1 -1
  186. package/resources/simulation-run-plan.d.ts +408 -39
  187. package/resources/simulation-run-plan.d.ts.map +1 -1
  188. package/resources/simulation-run-plan.js +6 -11
  189. package/resources/simulation-run-plan.js.map +1 -1
  190. package/resources/simulation-run-plan.mjs +6 -11
  191. package/resources/simulation-run-plan.mjs.map +1 -1
  192. package/resources/simulation.d.mts +379 -0
  193. package/resources/simulation.d.mts.map +1 -0
  194. package/resources/simulation.d.ts +379 -0
  195. package/resources/simulation.d.ts.map +1 -0
  196. package/resources/simulation.js +33 -0
  197. package/resources/simulation.js.map +1 -0
  198. package/resources/simulation.mjs +29 -0
  199. package/resources/simulation.mjs.map +1 -0
  200. package/resources/webhook.d.mts +4 -4
  201. package/resources/webhook.d.mts.map +1 -1
  202. package/resources/webhook.d.ts +4 -4
  203. package/resources/webhook.d.ts.map +1 -1
  204. package/resources/webhook.mjs.map +1 -1
  205. package/resources.d.mts.map +1 -1
  206. package/resources.d.ts.map +1 -1
  207. package/resources.mjs.map +1 -1
  208. package/src/client.ts +124 -28
  209. package/src/internal/types.ts +6 -8
  210. package/src/internal/utils/log.ts +2 -0
  211. package/src/resources/agent-endpoint.ts +36 -4
  212. package/src/resources/call.ts +333 -176
  213. package/src/resources/config.ts +1162 -0
  214. package/src/resources/customer-flow-edge-case.ts +2884 -0
  215. package/src/resources/customer-flow.ts +11713 -0
  216. package/src/resources/index.ts +42 -12
  217. package/src/resources/metric-collection-job.ts +5 -3
  218. package/src/resources/metric.ts +1057 -115
  219. package/src/resources/simulation-environment.ts +147 -0
  220. package/src/resources/simulation-job.ts +122 -10
  221. package/src/resources/simulation-persona.ts +192 -24
  222. package/src/resources/simulation-run-plan-job.ts +109 -27
  223. package/src/resources/simulation-run-plan.ts +445 -40
  224. package/src/resources/simulation.ts +444 -0
  225. package/src/resources/webhook.ts +8 -0
  226. package/src/version.ts +1 -1
  227. package/uploads.d.mts +1 -0
  228. package/uploads.d.mts.map +1 -1
  229. package/uploads.d.ts +1 -0
  230. package/uploads.d.ts.map +1 -1
  231. package/uploads.mjs +1 -0
  232. package/uploads.mjs.map +1 -1
  233. package/version.d.mts +1 -1
  234. package/version.d.ts +1 -1
  235. package/version.js +1 -1
  236. package/version.mjs +1 -1
  237. package/resources/simulation-scenario.d.mts +0 -424
  238. package/resources/simulation-scenario.d.mts.map +0 -1
  239. package/resources/simulation-scenario.d.ts +0 -424
  240. package/resources/simulation-scenario.d.ts.map +0 -1
  241. package/resources/simulation-scenario.js +0 -40
  242. package/resources/simulation-scenario.js.map +0 -1
  243. package/resources/simulation-scenario.mjs +0 -36
  244. package/resources/simulation-scenario.mjs.map +0 -1
  245. package/src/resources/simulation-scenario.ts +0 -602
@@ -0,0 +1,1742 @@
1
+ import { APIResource } from "../core/resource.js";
2
+ import * as CustomerFlowAPI from "./customer-flow.js";
3
+ import { APIPromise } from "../core/api-promise.js";
4
+ import { RequestOptions } from "../internal/request-options.js";
5
+ export declare class CustomerFlowEdgeCase extends APIResource {
6
+ /**
7
+ * Updates an edge case's title, persona, environment, brief, preceded-by link or
8
+ * expectations. Omitted fields are left alone; `additionalExpectations` replaces
9
+ * the set wholesale rather than appending. Promoting it to the happy path is a
10
+ * separate call, since that also demotes the incumbent.
11
+ */
12
+ update(edgeCaseID: string, params: CustomerFlowEdgeCaseUpdateParams, options?: RequestOptions): APIPromise<CustomerFlowEdgeCaseUpdateResponse>;
13
+ /**
14
+ * Adds a variant to an IMPROV flow.
15
+ *
16
+ * A scripted flow's variants are owned by the path engine, one per path through
17
+ * the graph, so they are created by editing the graph through PUT
18
+ * /v1/customer-flow/{flowId}/graph rather than here.
19
+ *
20
+ * Leave personaOverrideId or environmentId unset to inherit the happy path's.
21
+ */
22
+ add(flowID: string, body: CustomerFlowEdgeCaseAddParams, options?: RequestOptions): APIPromise<CustomerFlowEdgeCaseAddResponse>;
23
+ /**
24
+ * Makes this edge case the flow's happy path, and the outgoing happy path an edge
25
+ * case. Its persona and environment are baked into it first, so edge cases that
26
+ * were inheriting keep the configuration they had.
27
+ */
28
+ promote(edgeCaseID: string, params: CustomerFlowEdgeCasePromoteParams, options?: RequestOptions): APIPromise<CustomerFlowEdgeCasePromoteResponse>;
29
+ /**
30
+ * Soft-deletes a variant. On a scripted flow the path engine re-creates a variant
31
+ * for any path still in the graph, so remove the path through PUT /graph instead
32
+ * if that is what you meant.
33
+ */
34
+ remove(edgeCaseID: string, params: CustomerFlowEdgeCaseRemoveParams, options?: RequestOptions): APIPromise<CustomerFlowEdgeCaseRemoveResponse>;
35
+ }
36
+ export interface CustomerFlowEdgeCaseUpdateResponse {
37
+ /**
38
+ * One way of running a customer flow.
39
+ */
40
+ data: CustomerFlowEdgeCaseUpdateResponse.ScriptedFlowVariant | CustomerFlowEdgeCaseUpdateResponse.ImprovFlowVariant | CustomerFlowEdgeCaseUpdateResponse.VoicemailFlowVariant;
41
+ }
42
+ export declare namespace CustomerFlowEdgeCaseUpdateResponse {
43
+ /**
44
+ * One path through a scripted flow. The path engine owns which paths exist, so
45
+ * editing the graph is what creates and removes these.
46
+ */
47
+ interface ScriptedFlowVariant {
48
+ id: string;
49
+ /**
50
+ * Graded on top of the flow's own expectations, for this variant only.
51
+ */
52
+ additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
53
+ /**
54
+ * Creation timestamp in ISO 8601 format
55
+ */
56
+ createdAt: string;
57
+ /**
58
+ * A simulation environment: the ambient conditions a customer flow variant runs
59
+ * under. The list includes both your own and the ones Roark curates for every
60
+ * project.
61
+ */
62
+ environment: ScriptedFlowVariant.Environment | null;
63
+ isGenerated: boolean;
64
+ /**
65
+ * The persona this runs as instead of the happy path's. Null means it inherits.
66
+ */
67
+ personaOverride: ScriptedFlowVariant.PersonaOverride | null;
68
+ precededByCustomerFlowId: string | null;
69
+ precededByCustomerFlowVariantId: string | null;
70
+ /**
71
+ * The one path through the graph this variant runs, in order. Linear by
72
+ * construction, so these steps never nest.
73
+ */
74
+ steps: Array<CustomerFlowAPI.FlowStep>;
75
+ title: string;
76
+ type: 'SCRIPTED';
77
+ /**
78
+ * Last update timestamp in ISO 8601 format
79
+ */
80
+ updatedAt: string;
81
+ }
82
+ namespace ScriptedFlowVariant {
83
+ /**
84
+ * One thing the agent under test is graded against.
85
+ */
86
+ interface AdditionalExpectation {
87
+ id: string;
88
+ /**
89
+ * What the agent under test is graded against.
90
+ */
91
+ prompt: string;
92
+ }
93
+ /**
94
+ * A simulation environment: the ambient conditions a customer flow variant runs
95
+ * under. The list includes both your own and the ones Roark curates for every
96
+ * project.
97
+ */
98
+ interface Environment {
99
+ id: string;
100
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
101
+ /**
102
+ * Creation timestamp in ISO 8601 format
103
+ */
104
+ createdAt: string;
105
+ name: string;
106
+ /**
107
+ * Last update timestamp in ISO 8601 format
108
+ */
109
+ updatedAt: string;
110
+ description?: string | null;
111
+ }
112
+ /**
113
+ * The persona this runs as instead of the happy path's. Null means it inherits.
114
+ */
115
+ interface PersonaOverride {
116
+ /**
117
+ * Unique identifier of the persona
118
+ */
119
+ id: string;
120
+ /**
121
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
122
+ * optional variants
123
+ */
124
+ 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';
125
+ /**
126
+ * Background noise setting
127
+ */
128
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
129
+ /**
130
+ * Base emotional state of the persona
131
+ */
132
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
133
+ /**
134
+ * How the persona confirms information
135
+ */
136
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
137
+ /**
138
+ * Creation timestamp
139
+ */
140
+ createdAt: string;
141
+ /**
142
+ * Gender of the persona
143
+ */
144
+ gender: 'MALE' | 'FEMALE';
145
+ /**
146
+ * Whether the persona uses filler words like "um" and "uh"
147
+ */
148
+ hasDisfluencies: boolean;
149
+ /**
150
+ * Maximum number of idle messages the persona will send before giving up
151
+ */
152
+ idleMessageMaxSpokenCount: number;
153
+ /**
154
+ * Whether the idle message counter resets when the agent speaks
155
+ */
156
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
157
+ /**
158
+ * Messages the persona will say when the agent goes silent during a call. null =
159
+ * "Automatic": language-appropriate defaults are used at call time.
160
+ */
161
+ idleMessages: Array<string> | null;
162
+ /**
163
+ * Seconds of silence before the persona sends an idle message
164
+ */
165
+ idleTimeoutSeconds: number;
166
+ /**
167
+ * How clearly the persona expresses their intentions
168
+ */
169
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
170
+ /**
171
+ * Primary language ISO 639-1 code for the persona
172
+ */
173
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
174
+ /**
175
+ * How reliable the persona's memory is
176
+ */
177
+ memoryReliability: 'HIGH' | 'LOW';
178
+ /**
179
+ * The name the agent will identify as during conversations
180
+ */
181
+ name: string;
182
+ /**
183
+ * Additional custom properties about the persona
184
+ */
185
+ properties: {
186
+ [key: string]: unknown;
187
+ };
188
+ /**
189
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
190
+ * NORMAL, RELAXED)
191
+ */
192
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
193
+ /**
194
+ * Speech clarity of the persona
195
+ */
196
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
197
+ /**
198
+ * Speech pace of the persona
199
+ */
200
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
201
+ /**
202
+ * Languages the persona can understand. Multilingual combinations are limited by
203
+ * multilingual speech recognition support.
204
+ */
205
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
206
+ /**
207
+ * Last update timestamp
208
+ */
209
+ updatedAt: string;
210
+ /**
211
+ * Background story and behavioral patterns for the persona
212
+ */
213
+ backstoryPrompt?: string | null;
214
+ /**
215
+ * Human-readable description of the persona
216
+ */
217
+ description?: string | null;
218
+ /**
219
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
220
+ */
221
+ secondaryLanguage?: 'EN' | null;
222
+ }
223
+ }
224
+ /**
225
+ * One brief to run an improv flow with.
226
+ */
227
+ interface ImprovFlowVariant {
228
+ id: string;
229
+ /**
230
+ * Graded on top of the flow's own expectations, for this variant only.
231
+ */
232
+ additionalExpectations: Array<ImprovFlowVariant.AdditionalExpectation>;
233
+ /**
234
+ * Creation timestamp in ISO 8601 format
235
+ */
236
+ createdAt: string;
237
+ /**
238
+ * A simulation environment: the ambient conditions a customer flow variant runs
239
+ * under. The list includes both your own and the ones Roark curates for every
240
+ * project.
241
+ */
242
+ environment: ImprovFlowVariant.Environment | null;
243
+ isGenerated: boolean;
244
+ /**
245
+ * The persona this runs as instead of the happy path's. Null means it inherits.
246
+ */
247
+ personaOverride: ImprovFlowVariant.PersonaOverride | null;
248
+ precededByCustomerFlowId: string | null;
249
+ precededByCustomerFlowVariantId: string | null;
250
+ title: string;
251
+ type: 'IMPROV';
252
+ /**
253
+ * Last update timestamp in ISO 8601 format
254
+ */
255
+ updatedAt: string;
256
+ /**
257
+ * The brief the simulated customer improvises from.
258
+ */
259
+ prompt?: string | null;
260
+ }
261
+ namespace ImprovFlowVariant {
262
+ /**
263
+ * One thing the agent under test is graded against.
264
+ */
265
+ interface AdditionalExpectation {
266
+ id: string;
267
+ /**
268
+ * What the agent under test is graded against.
269
+ */
270
+ prompt: string;
271
+ }
272
+ /**
273
+ * A simulation environment: the ambient conditions a customer flow variant runs
274
+ * under. The list includes both your own and the ones Roark curates for every
275
+ * project.
276
+ */
277
+ interface Environment {
278
+ id: string;
279
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
280
+ /**
281
+ * Creation timestamp in ISO 8601 format
282
+ */
283
+ createdAt: string;
284
+ name: string;
285
+ /**
286
+ * Last update timestamp in ISO 8601 format
287
+ */
288
+ updatedAt: string;
289
+ description?: string | null;
290
+ }
291
+ /**
292
+ * The persona this runs as instead of the happy path's. Null means it inherits.
293
+ */
294
+ interface PersonaOverride {
295
+ /**
296
+ * Unique identifier of the persona
297
+ */
298
+ id: string;
299
+ /**
300
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
301
+ * optional variants
302
+ */
303
+ 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';
304
+ /**
305
+ * Background noise setting
306
+ */
307
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
308
+ /**
309
+ * Base emotional state of the persona
310
+ */
311
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
312
+ /**
313
+ * How the persona confirms information
314
+ */
315
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
316
+ /**
317
+ * Creation timestamp
318
+ */
319
+ createdAt: string;
320
+ /**
321
+ * Gender of the persona
322
+ */
323
+ gender: 'MALE' | 'FEMALE';
324
+ /**
325
+ * Whether the persona uses filler words like "um" and "uh"
326
+ */
327
+ hasDisfluencies: boolean;
328
+ /**
329
+ * Maximum number of idle messages the persona will send before giving up
330
+ */
331
+ idleMessageMaxSpokenCount: number;
332
+ /**
333
+ * Whether the idle message counter resets when the agent speaks
334
+ */
335
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
336
+ /**
337
+ * Messages the persona will say when the agent goes silent during a call. null =
338
+ * "Automatic": language-appropriate defaults are used at call time.
339
+ */
340
+ idleMessages: Array<string> | null;
341
+ /**
342
+ * Seconds of silence before the persona sends an idle message
343
+ */
344
+ idleTimeoutSeconds: number;
345
+ /**
346
+ * How clearly the persona expresses their intentions
347
+ */
348
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
349
+ /**
350
+ * Primary language ISO 639-1 code for the persona
351
+ */
352
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
353
+ /**
354
+ * How reliable the persona's memory is
355
+ */
356
+ memoryReliability: 'HIGH' | 'LOW';
357
+ /**
358
+ * The name the agent will identify as during conversations
359
+ */
360
+ name: string;
361
+ /**
362
+ * Additional custom properties about the persona
363
+ */
364
+ properties: {
365
+ [key: string]: unknown;
366
+ };
367
+ /**
368
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
369
+ * NORMAL, RELAXED)
370
+ */
371
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
372
+ /**
373
+ * Speech clarity of the persona
374
+ */
375
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
376
+ /**
377
+ * Speech pace of the persona
378
+ */
379
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
380
+ /**
381
+ * Languages the persona can understand. Multilingual combinations are limited by
382
+ * multilingual speech recognition support.
383
+ */
384
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
385
+ /**
386
+ * Last update timestamp
387
+ */
388
+ updatedAt: string;
389
+ /**
390
+ * Background story and behavioral patterns for the persona
391
+ */
392
+ backstoryPrompt?: string | null;
393
+ /**
394
+ * Human-readable description of the persona
395
+ */
396
+ description?: string | null;
397
+ /**
398
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
399
+ */
400
+ secondaryLanguage?: 'EN' | null;
401
+ }
402
+ }
403
+ /**
404
+ * One voicemail greeting.
405
+ */
406
+ interface VoicemailFlowVariant {
407
+ id: string;
408
+ /**
409
+ * Graded on top of the flow's own expectations, for this variant only.
410
+ */
411
+ additionalExpectations: Array<VoicemailFlowVariant.AdditionalExpectation>;
412
+ /**
413
+ * Creation timestamp in ISO 8601 format
414
+ */
415
+ createdAt: string;
416
+ /**
417
+ * A simulation environment: the ambient conditions a customer flow variant runs
418
+ * under. The list includes both your own and the ones Roark curates for every
419
+ * project.
420
+ */
421
+ environment: VoicemailFlowVariant.Environment | null;
422
+ isGenerated: boolean;
423
+ /**
424
+ * The persona this runs as instead of the happy path's. Null means it inherits.
425
+ */
426
+ personaOverride: VoicemailFlowVariant.PersonaOverride | null;
427
+ precededByCustomerFlowId: string | null;
428
+ precededByCustomerFlowVariantId: string | null;
429
+ title: string;
430
+ type: 'VOICEMAIL';
431
+ /**
432
+ * Last update timestamp in ISO 8601 format
433
+ */
434
+ updatedAt: string;
435
+ }
436
+ namespace VoicemailFlowVariant {
437
+ /**
438
+ * One thing the agent under test is graded against.
439
+ */
440
+ interface AdditionalExpectation {
441
+ id: string;
442
+ /**
443
+ * What the agent under test is graded against.
444
+ */
445
+ prompt: string;
446
+ }
447
+ /**
448
+ * A simulation environment: the ambient conditions a customer flow variant runs
449
+ * under. The list includes both your own and the ones Roark curates for every
450
+ * project.
451
+ */
452
+ interface Environment {
453
+ id: string;
454
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
455
+ /**
456
+ * Creation timestamp in ISO 8601 format
457
+ */
458
+ createdAt: string;
459
+ name: string;
460
+ /**
461
+ * Last update timestamp in ISO 8601 format
462
+ */
463
+ updatedAt: string;
464
+ description?: string | null;
465
+ }
466
+ /**
467
+ * The persona this runs as instead of the happy path's. Null means it inherits.
468
+ */
469
+ interface PersonaOverride {
470
+ /**
471
+ * Unique identifier of the persona
472
+ */
473
+ id: string;
474
+ /**
475
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
476
+ * optional variants
477
+ */
478
+ 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';
479
+ /**
480
+ * Background noise setting
481
+ */
482
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
483
+ /**
484
+ * Base emotional state of the persona
485
+ */
486
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
487
+ /**
488
+ * How the persona confirms information
489
+ */
490
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
491
+ /**
492
+ * Creation timestamp
493
+ */
494
+ createdAt: string;
495
+ /**
496
+ * Gender of the persona
497
+ */
498
+ gender: 'MALE' | 'FEMALE';
499
+ /**
500
+ * Whether the persona uses filler words like "um" and "uh"
501
+ */
502
+ hasDisfluencies: boolean;
503
+ /**
504
+ * Maximum number of idle messages the persona will send before giving up
505
+ */
506
+ idleMessageMaxSpokenCount: number;
507
+ /**
508
+ * Whether the idle message counter resets when the agent speaks
509
+ */
510
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
511
+ /**
512
+ * Messages the persona will say when the agent goes silent during a call. null =
513
+ * "Automatic": language-appropriate defaults are used at call time.
514
+ */
515
+ idleMessages: Array<string> | null;
516
+ /**
517
+ * Seconds of silence before the persona sends an idle message
518
+ */
519
+ idleTimeoutSeconds: number;
520
+ /**
521
+ * How clearly the persona expresses their intentions
522
+ */
523
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
524
+ /**
525
+ * Primary language ISO 639-1 code for the persona
526
+ */
527
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
528
+ /**
529
+ * How reliable the persona's memory is
530
+ */
531
+ memoryReliability: 'HIGH' | 'LOW';
532
+ /**
533
+ * The name the agent will identify as during conversations
534
+ */
535
+ name: string;
536
+ /**
537
+ * Additional custom properties about the persona
538
+ */
539
+ properties: {
540
+ [key: string]: unknown;
541
+ };
542
+ /**
543
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
544
+ * NORMAL, RELAXED)
545
+ */
546
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
547
+ /**
548
+ * Speech clarity of the persona
549
+ */
550
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
551
+ /**
552
+ * Speech pace of the persona
553
+ */
554
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
555
+ /**
556
+ * Languages the persona can understand. Multilingual combinations are limited by
557
+ * multilingual speech recognition support.
558
+ */
559
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
560
+ /**
561
+ * Last update timestamp
562
+ */
563
+ updatedAt: string;
564
+ /**
565
+ * Background story and behavioral patterns for the persona
566
+ */
567
+ backstoryPrompt?: string | null;
568
+ /**
569
+ * Human-readable description of the persona
570
+ */
571
+ description?: string | null;
572
+ /**
573
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
574
+ */
575
+ secondaryLanguage?: 'EN' | null;
576
+ }
577
+ }
578
+ }
579
+ export interface CustomerFlowEdgeCaseAddResponse {
580
+ /**
581
+ * One way of running a customer flow.
582
+ */
583
+ data: CustomerFlowEdgeCaseAddResponse.ScriptedFlowVariant | CustomerFlowEdgeCaseAddResponse.ImprovFlowVariant | CustomerFlowEdgeCaseAddResponse.VoicemailFlowVariant;
584
+ }
585
+ export declare namespace CustomerFlowEdgeCaseAddResponse {
586
+ /**
587
+ * One path through a scripted flow. The path engine owns which paths exist, so
588
+ * editing the graph is what creates and removes these.
589
+ */
590
+ interface ScriptedFlowVariant {
591
+ id: string;
592
+ /**
593
+ * Graded on top of the flow's own expectations, for this variant only.
594
+ */
595
+ additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
596
+ /**
597
+ * Creation timestamp in ISO 8601 format
598
+ */
599
+ createdAt: string;
600
+ /**
601
+ * A simulation environment: the ambient conditions a customer flow variant runs
602
+ * under. The list includes both your own and the ones Roark curates for every
603
+ * project.
604
+ */
605
+ environment: ScriptedFlowVariant.Environment | null;
606
+ isGenerated: boolean;
607
+ /**
608
+ * The persona this runs as instead of the happy path's. Null means it inherits.
609
+ */
610
+ personaOverride: ScriptedFlowVariant.PersonaOverride | null;
611
+ precededByCustomerFlowId: string | null;
612
+ precededByCustomerFlowVariantId: string | null;
613
+ /**
614
+ * The one path through the graph this variant runs, in order. Linear by
615
+ * construction, so these steps never nest.
616
+ */
617
+ steps: Array<CustomerFlowAPI.FlowStep>;
618
+ title: string;
619
+ type: 'SCRIPTED';
620
+ /**
621
+ * Last update timestamp in ISO 8601 format
622
+ */
623
+ updatedAt: string;
624
+ }
625
+ namespace ScriptedFlowVariant {
626
+ /**
627
+ * One thing the agent under test is graded against.
628
+ */
629
+ interface AdditionalExpectation {
630
+ id: string;
631
+ /**
632
+ * What the agent under test is graded against.
633
+ */
634
+ prompt: string;
635
+ }
636
+ /**
637
+ * A simulation environment: the ambient conditions a customer flow variant runs
638
+ * under. The list includes both your own and the ones Roark curates for every
639
+ * project.
640
+ */
641
+ interface Environment {
642
+ id: string;
643
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
644
+ /**
645
+ * Creation timestamp in ISO 8601 format
646
+ */
647
+ createdAt: string;
648
+ name: string;
649
+ /**
650
+ * Last update timestamp in ISO 8601 format
651
+ */
652
+ updatedAt: string;
653
+ description?: string | null;
654
+ }
655
+ /**
656
+ * The persona this runs as instead of the happy path's. Null means it inherits.
657
+ */
658
+ interface PersonaOverride {
659
+ /**
660
+ * Unique identifier of the persona
661
+ */
662
+ id: string;
663
+ /**
664
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
665
+ * optional variants
666
+ */
667
+ 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';
668
+ /**
669
+ * Background noise setting
670
+ */
671
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
672
+ /**
673
+ * Base emotional state of the persona
674
+ */
675
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
676
+ /**
677
+ * How the persona confirms information
678
+ */
679
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
680
+ /**
681
+ * Creation timestamp
682
+ */
683
+ createdAt: string;
684
+ /**
685
+ * Gender of the persona
686
+ */
687
+ gender: 'MALE' | 'FEMALE';
688
+ /**
689
+ * Whether the persona uses filler words like "um" and "uh"
690
+ */
691
+ hasDisfluencies: boolean;
692
+ /**
693
+ * Maximum number of idle messages the persona will send before giving up
694
+ */
695
+ idleMessageMaxSpokenCount: number;
696
+ /**
697
+ * Whether the idle message counter resets when the agent speaks
698
+ */
699
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
700
+ /**
701
+ * Messages the persona will say when the agent goes silent during a call. null =
702
+ * "Automatic": language-appropriate defaults are used at call time.
703
+ */
704
+ idleMessages: Array<string> | null;
705
+ /**
706
+ * Seconds of silence before the persona sends an idle message
707
+ */
708
+ idleTimeoutSeconds: number;
709
+ /**
710
+ * How clearly the persona expresses their intentions
711
+ */
712
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
713
+ /**
714
+ * Primary language ISO 639-1 code for the persona
715
+ */
716
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
717
+ /**
718
+ * How reliable the persona's memory is
719
+ */
720
+ memoryReliability: 'HIGH' | 'LOW';
721
+ /**
722
+ * The name the agent will identify as during conversations
723
+ */
724
+ name: string;
725
+ /**
726
+ * Additional custom properties about the persona
727
+ */
728
+ properties: {
729
+ [key: string]: unknown;
730
+ };
731
+ /**
732
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
733
+ * NORMAL, RELAXED)
734
+ */
735
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
736
+ /**
737
+ * Speech clarity of the persona
738
+ */
739
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
740
+ /**
741
+ * Speech pace of the persona
742
+ */
743
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
744
+ /**
745
+ * Languages the persona can understand. Multilingual combinations are limited by
746
+ * multilingual speech recognition support.
747
+ */
748
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
749
+ /**
750
+ * Last update timestamp
751
+ */
752
+ updatedAt: string;
753
+ /**
754
+ * Background story and behavioral patterns for the persona
755
+ */
756
+ backstoryPrompt?: string | null;
757
+ /**
758
+ * Human-readable description of the persona
759
+ */
760
+ description?: string | null;
761
+ /**
762
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
763
+ */
764
+ secondaryLanguage?: 'EN' | null;
765
+ }
766
+ }
767
+ /**
768
+ * One brief to run an improv flow with.
769
+ */
770
+ interface ImprovFlowVariant {
771
+ id: string;
772
+ /**
773
+ * Graded on top of the flow's own expectations, for this variant only.
774
+ */
775
+ additionalExpectations: Array<ImprovFlowVariant.AdditionalExpectation>;
776
+ /**
777
+ * Creation timestamp in ISO 8601 format
778
+ */
779
+ createdAt: string;
780
+ /**
781
+ * A simulation environment: the ambient conditions a customer flow variant runs
782
+ * under. The list includes both your own and the ones Roark curates for every
783
+ * project.
784
+ */
785
+ environment: ImprovFlowVariant.Environment | null;
786
+ isGenerated: boolean;
787
+ /**
788
+ * The persona this runs as instead of the happy path's. Null means it inherits.
789
+ */
790
+ personaOverride: ImprovFlowVariant.PersonaOverride | null;
791
+ precededByCustomerFlowId: string | null;
792
+ precededByCustomerFlowVariantId: string | null;
793
+ title: string;
794
+ type: 'IMPROV';
795
+ /**
796
+ * Last update timestamp in ISO 8601 format
797
+ */
798
+ updatedAt: string;
799
+ /**
800
+ * The brief the simulated customer improvises from.
801
+ */
802
+ prompt?: string | null;
803
+ }
804
+ namespace ImprovFlowVariant {
805
+ /**
806
+ * One thing the agent under test is graded against.
807
+ */
808
+ interface AdditionalExpectation {
809
+ id: string;
810
+ /**
811
+ * What the agent under test is graded against.
812
+ */
813
+ prompt: string;
814
+ }
815
+ /**
816
+ * A simulation environment: the ambient conditions a customer flow variant runs
817
+ * under. The list includes both your own and the ones Roark curates for every
818
+ * project.
819
+ */
820
+ interface Environment {
821
+ id: string;
822
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
823
+ /**
824
+ * Creation timestamp in ISO 8601 format
825
+ */
826
+ createdAt: string;
827
+ name: string;
828
+ /**
829
+ * Last update timestamp in ISO 8601 format
830
+ */
831
+ updatedAt: string;
832
+ description?: string | null;
833
+ }
834
+ /**
835
+ * The persona this runs as instead of the happy path's. Null means it inherits.
836
+ */
837
+ interface PersonaOverride {
838
+ /**
839
+ * Unique identifier of the persona
840
+ */
841
+ id: string;
842
+ /**
843
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
844
+ * optional variants
845
+ */
846
+ 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';
847
+ /**
848
+ * Background noise setting
849
+ */
850
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
851
+ /**
852
+ * Base emotional state of the persona
853
+ */
854
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
855
+ /**
856
+ * How the persona confirms information
857
+ */
858
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
859
+ /**
860
+ * Creation timestamp
861
+ */
862
+ createdAt: string;
863
+ /**
864
+ * Gender of the persona
865
+ */
866
+ gender: 'MALE' | 'FEMALE';
867
+ /**
868
+ * Whether the persona uses filler words like "um" and "uh"
869
+ */
870
+ hasDisfluencies: boolean;
871
+ /**
872
+ * Maximum number of idle messages the persona will send before giving up
873
+ */
874
+ idleMessageMaxSpokenCount: number;
875
+ /**
876
+ * Whether the idle message counter resets when the agent speaks
877
+ */
878
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
879
+ /**
880
+ * Messages the persona will say when the agent goes silent during a call. null =
881
+ * "Automatic": language-appropriate defaults are used at call time.
882
+ */
883
+ idleMessages: Array<string> | null;
884
+ /**
885
+ * Seconds of silence before the persona sends an idle message
886
+ */
887
+ idleTimeoutSeconds: number;
888
+ /**
889
+ * How clearly the persona expresses their intentions
890
+ */
891
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
892
+ /**
893
+ * Primary language ISO 639-1 code for the persona
894
+ */
895
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
896
+ /**
897
+ * How reliable the persona's memory is
898
+ */
899
+ memoryReliability: 'HIGH' | 'LOW';
900
+ /**
901
+ * The name the agent will identify as during conversations
902
+ */
903
+ name: string;
904
+ /**
905
+ * Additional custom properties about the persona
906
+ */
907
+ properties: {
908
+ [key: string]: unknown;
909
+ };
910
+ /**
911
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
912
+ * NORMAL, RELAXED)
913
+ */
914
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
915
+ /**
916
+ * Speech clarity of the persona
917
+ */
918
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
919
+ /**
920
+ * Speech pace of the persona
921
+ */
922
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
923
+ /**
924
+ * Languages the persona can understand. Multilingual combinations are limited by
925
+ * multilingual speech recognition support.
926
+ */
927
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
928
+ /**
929
+ * Last update timestamp
930
+ */
931
+ updatedAt: string;
932
+ /**
933
+ * Background story and behavioral patterns for the persona
934
+ */
935
+ backstoryPrompt?: string | null;
936
+ /**
937
+ * Human-readable description of the persona
938
+ */
939
+ description?: string | null;
940
+ /**
941
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
942
+ */
943
+ secondaryLanguage?: 'EN' | null;
944
+ }
945
+ }
946
+ /**
947
+ * One voicemail greeting.
948
+ */
949
+ interface VoicemailFlowVariant {
950
+ id: string;
951
+ /**
952
+ * Graded on top of the flow's own expectations, for this variant only.
953
+ */
954
+ additionalExpectations: Array<VoicemailFlowVariant.AdditionalExpectation>;
955
+ /**
956
+ * Creation timestamp in ISO 8601 format
957
+ */
958
+ createdAt: string;
959
+ /**
960
+ * A simulation environment: the ambient conditions a customer flow variant runs
961
+ * under. The list includes both your own and the ones Roark curates for every
962
+ * project.
963
+ */
964
+ environment: VoicemailFlowVariant.Environment | null;
965
+ isGenerated: boolean;
966
+ /**
967
+ * The persona this runs as instead of the happy path's. Null means it inherits.
968
+ */
969
+ personaOverride: VoicemailFlowVariant.PersonaOverride | null;
970
+ precededByCustomerFlowId: string | null;
971
+ precededByCustomerFlowVariantId: string | null;
972
+ title: string;
973
+ type: 'VOICEMAIL';
974
+ /**
975
+ * Last update timestamp in ISO 8601 format
976
+ */
977
+ updatedAt: string;
978
+ }
979
+ namespace VoicemailFlowVariant {
980
+ /**
981
+ * One thing the agent under test is graded against.
982
+ */
983
+ interface AdditionalExpectation {
984
+ id: string;
985
+ /**
986
+ * What the agent under test is graded against.
987
+ */
988
+ prompt: string;
989
+ }
990
+ /**
991
+ * A simulation environment: the ambient conditions a customer flow variant runs
992
+ * under. The list includes both your own and the ones Roark curates for every
993
+ * project.
994
+ */
995
+ interface Environment {
996
+ id: string;
997
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
998
+ /**
999
+ * Creation timestamp in ISO 8601 format
1000
+ */
1001
+ createdAt: string;
1002
+ name: string;
1003
+ /**
1004
+ * Last update timestamp in ISO 8601 format
1005
+ */
1006
+ updatedAt: string;
1007
+ description?: string | null;
1008
+ }
1009
+ /**
1010
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1011
+ */
1012
+ interface PersonaOverride {
1013
+ /**
1014
+ * Unique identifier of the persona
1015
+ */
1016
+ id: string;
1017
+ /**
1018
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1019
+ * optional variants
1020
+ */
1021
+ 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';
1022
+ /**
1023
+ * Background noise setting
1024
+ */
1025
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1026
+ /**
1027
+ * Base emotional state of the persona
1028
+ */
1029
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1030
+ /**
1031
+ * How the persona confirms information
1032
+ */
1033
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1034
+ /**
1035
+ * Creation timestamp
1036
+ */
1037
+ createdAt: string;
1038
+ /**
1039
+ * Gender of the persona
1040
+ */
1041
+ gender: 'MALE' | 'FEMALE';
1042
+ /**
1043
+ * Whether the persona uses filler words like "um" and "uh"
1044
+ */
1045
+ hasDisfluencies: boolean;
1046
+ /**
1047
+ * Maximum number of idle messages the persona will send before giving up
1048
+ */
1049
+ idleMessageMaxSpokenCount: number;
1050
+ /**
1051
+ * Whether the idle message counter resets when the agent speaks
1052
+ */
1053
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1054
+ /**
1055
+ * Messages the persona will say when the agent goes silent during a call. null =
1056
+ * "Automatic": language-appropriate defaults are used at call time.
1057
+ */
1058
+ idleMessages: Array<string> | null;
1059
+ /**
1060
+ * Seconds of silence before the persona sends an idle message
1061
+ */
1062
+ idleTimeoutSeconds: number;
1063
+ /**
1064
+ * How clearly the persona expresses their intentions
1065
+ */
1066
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1067
+ /**
1068
+ * Primary language ISO 639-1 code for the persona
1069
+ */
1070
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
1071
+ /**
1072
+ * How reliable the persona's memory is
1073
+ */
1074
+ memoryReliability: 'HIGH' | 'LOW';
1075
+ /**
1076
+ * The name the agent will identify as during conversations
1077
+ */
1078
+ name: string;
1079
+ /**
1080
+ * Additional custom properties about the persona
1081
+ */
1082
+ properties: {
1083
+ [key: string]: unknown;
1084
+ };
1085
+ /**
1086
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1087
+ * NORMAL, RELAXED)
1088
+ */
1089
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1090
+ /**
1091
+ * Speech clarity of the persona
1092
+ */
1093
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1094
+ /**
1095
+ * Speech pace of the persona
1096
+ */
1097
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1098
+ /**
1099
+ * Languages the persona can understand. Multilingual combinations are limited by
1100
+ * multilingual speech recognition support.
1101
+ */
1102
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
1103
+ /**
1104
+ * Last update timestamp
1105
+ */
1106
+ updatedAt: string;
1107
+ /**
1108
+ * Background story and behavioral patterns for the persona
1109
+ */
1110
+ backstoryPrompt?: string | null;
1111
+ /**
1112
+ * Human-readable description of the persona
1113
+ */
1114
+ description?: string | null;
1115
+ /**
1116
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1117
+ */
1118
+ secondaryLanguage?: 'EN' | null;
1119
+ }
1120
+ }
1121
+ }
1122
+ export interface CustomerFlowEdgeCasePromoteResponse {
1123
+ /**
1124
+ * One way of running a customer flow.
1125
+ */
1126
+ data: CustomerFlowEdgeCasePromoteResponse.ScriptedFlowVariant | CustomerFlowEdgeCasePromoteResponse.ImprovFlowVariant | CustomerFlowEdgeCasePromoteResponse.VoicemailFlowVariant;
1127
+ }
1128
+ export declare namespace CustomerFlowEdgeCasePromoteResponse {
1129
+ /**
1130
+ * One path through a scripted flow. The path engine owns which paths exist, so
1131
+ * editing the graph is what creates and removes these.
1132
+ */
1133
+ interface ScriptedFlowVariant {
1134
+ id: string;
1135
+ /**
1136
+ * Graded on top of the flow's own expectations, for this variant only.
1137
+ */
1138
+ additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
1139
+ /**
1140
+ * Creation timestamp in ISO 8601 format
1141
+ */
1142
+ createdAt: string;
1143
+ /**
1144
+ * A simulation environment: the ambient conditions a customer flow variant runs
1145
+ * under. The list includes both your own and the ones Roark curates for every
1146
+ * project.
1147
+ */
1148
+ environment: ScriptedFlowVariant.Environment | null;
1149
+ isGenerated: boolean;
1150
+ /**
1151
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1152
+ */
1153
+ personaOverride: ScriptedFlowVariant.PersonaOverride | null;
1154
+ precededByCustomerFlowId: string | null;
1155
+ precededByCustomerFlowVariantId: string | null;
1156
+ /**
1157
+ * The one path through the graph this variant runs, in order. Linear by
1158
+ * construction, so these steps never nest.
1159
+ */
1160
+ steps: Array<CustomerFlowAPI.FlowStep>;
1161
+ title: string;
1162
+ type: 'SCRIPTED';
1163
+ /**
1164
+ * Last update timestamp in ISO 8601 format
1165
+ */
1166
+ updatedAt: string;
1167
+ }
1168
+ namespace ScriptedFlowVariant {
1169
+ /**
1170
+ * One thing the agent under test is graded against.
1171
+ */
1172
+ interface AdditionalExpectation {
1173
+ id: string;
1174
+ /**
1175
+ * What the agent under test is graded against.
1176
+ */
1177
+ prompt: string;
1178
+ }
1179
+ /**
1180
+ * A simulation environment: the ambient conditions a customer flow variant runs
1181
+ * under. The list includes both your own and the ones Roark curates for every
1182
+ * project.
1183
+ */
1184
+ interface Environment {
1185
+ id: string;
1186
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1187
+ /**
1188
+ * Creation timestamp in ISO 8601 format
1189
+ */
1190
+ createdAt: string;
1191
+ name: string;
1192
+ /**
1193
+ * Last update timestamp in ISO 8601 format
1194
+ */
1195
+ updatedAt: string;
1196
+ description?: string | null;
1197
+ }
1198
+ /**
1199
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1200
+ */
1201
+ interface PersonaOverride {
1202
+ /**
1203
+ * Unique identifier of the persona
1204
+ */
1205
+ id: string;
1206
+ /**
1207
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1208
+ * optional variants
1209
+ */
1210
+ 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';
1211
+ /**
1212
+ * Background noise setting
1213
+ */
1214
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1215
+ /**
1216
+ * Base emotional state of the persona
1217
+ */
1218
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1219
+ /**
1220
+ * How the persona confirms information
1221
+ */
1222
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1223
+ /**
1224
+ * Creation timestamp
1225
+ */
1226
+ createdAt: string;
1227
+ /**
1228
+ * Gender of the persona
1229
+ */
1230
+ gender: 'MALE' | 'FEMALE';
1231
+ /**
1232
+ * Whether the persona uses filler words like "um" and "uh"
1233
+ */
1234
+ hasDisfluencies: boolean;
1235
+ /**
1236
+ * Maximum number of idle messages the persona will send before giving up
1237
+ */
1238
+ idleMessageMaxSpokenCount: number;
1239
+ /**
1240
+ * Whether the idle message counter resets when the agent speaks
1241
+ */
1242
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1243
+ /**
1244
+ * Messages the persona will say when the agent goes silent during a call. null =
1245
+ * "Automatic": language-appropriate defaults are used at call time.
1246
+ */
1247
+ idleMessages: Array<string> | null;
1248
+ /**
1249
+ * Seconds of silence before the persona sends an idle message
1250
+ */
1251
+ idleTimeoutSeconds: number;
1252
+ /**
1253
+ * How clearly the persona expresses their intentions
1254
+ */
1255
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1256
+ /**
1257
+ * Primary language ISO 639-1 code for the persona
1258
+ */
1259
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
1260
+ /**
1261
+ * How reliable the persona's memory is
1262
+ */
1263
+ memoryReliability: 'HIGH' | 'LOW';
1264
+ /**
1265
+ * The name the agent will identify as during conversations
1266
+ */
1267
+ name: string;
1268
+ /**
1269
+ * Additional custom properties about the persona
1270
+ */
1271
+ properties: {
1272
+ [key: string]: unknown;
1273
+ };
1274
+ /**
1275
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1276
+ * NORMAL, RELAXED)
1277
+ */
1278
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1279
+ /**
1280
+ * Speech clarity of the persona
1281
+ */
1282
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1283
+ /**
1284
+ * Speech pace of the persona
1285
+ */
1286
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1287
+ /**
1288
+ * Languages the persona can understand. Multilingual combinations are limited by
1289
+ * multilingual speech recognition support.
1290
+ */
1291
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
1292
+ /**
1293
+ * Last update timestamp
1294
+ */
1295
+ updatedAt: string;
1296
+ /**
1297
+ * Background story and behavioral patterns for the persona
1298
+ */
1299
+ backstoryPrompt?: string | null;
1300
+ /**
1301
+ * Human-readable description of the persona
1302
+ */
1303
+ description?: string | null;
1304
+ /**
1305
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1306
+ */
1307
+ secondaryLanguage?: 'EN' | null;
1308
+ }
1309
+ }
1310
+ /**
1311
+ * One brief to run an improv flow with.
1312
+ */
1313
+ interface ImprovFlowVariant {
1314
+ id: string;
1315
+ /**
1316
+ * Graded on top of the flow's own expectations, for this variant only.
1317
+ */
1318
+ additionalExpectations: Array<ImprovFlowVariant.AdditionalExpectation>;
1319
+ /**
1320
+ * Creation timestamp in ISO 8601 format
1321
+ */
1322
+ createdAt: string;
1323
+ /**
1324
+ * A simulation environment: the ambient conditions a customer flow variant runs
1325
+ * under. The list includes both your own and the ones Roark curates for every
1326
+ * project.
1327
+ */
1328
+ environment: ImprovFlowVariant.Environment | null;
1329
+ isGenerated: boolean;
1330
+ /**
1331
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1332
+ */
1333
+ personaOverride: ImprovFlowVariant.PersonaOverride | null;
1334
+ precededByCustomerFlowId: string | null;
1335
+ precededByCustomerFlowVariantId: string | null;
1336
+ title: string;
1337
+ type: 'IMPROV';
1338
+ /**
1339
+ * Last update timestamp in ISO 8601 format
1340
+ */
1341
+ updatedAt: string;
1342
+ /**
1343
+ * The brief the simulated customer improvises from.
1344
+ */
1345
+ prompt?: string | null;
1346
+ }
1347
+ namespace ImprovFlowVariant {
1348
+ /**
1349
+ * One thing the agent under test is graded against.
1350
+ */
1351
+ interface AdditionalExpectation {
1352
+ id: string;
1353
+ /**
1354
+ * What the agent under test is graded against.
1355
+ */
1356
+ prompt: string;
1357
+ }
1358
+ /**
1359
+ * A simulation environment: the ambient conditions a customer flow variant runs
1360
+ * under. The list includes both your own and the ones Roark curates for every
1361
+ * project.
1362
+ */
1363
+ interface Environment {
1364
+ id: string;
1365
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1366
+ /**
1367
+ * Creation timestamp in ISO 8601 format
1368
+ */
1369
+ createdAt: string;
1370
+ name: string;
1371
+ /**
1372
+ * Last update timestamp in ISO 8601 format
1373
+ */
1374
+ updatedAt: string;
1375
+ description?: string | null;
1376
+ }
1377
+ /**
1378
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1379
+ */
1380
+ interface PersonaOverride {
1381
+ /**
1382
+ * Unique identifier of the persona
1383
+ */
1384
+ id: string;
1385
+ /**
1386
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1387
+ * optional variants
1388
+ */
1389
+ 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';
1390
+ /**
1391
+ * Background noise setting
1392
+ */
1393
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1394
+ /**
1395
+ * Base emotional state of the persona
1396
+ */
1397
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1398
+ /**
1399
+ * How the persona confirms information
1400
+ */
1401
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1402
+ /**
1403
+ * Creation timestamp
1404
+ */
1405
+ createdAt: string;
1406
+ /**
1407
+ * Gender of the persona
1408
+ */
1409
+ gender: 'MALE' | 'FEMALE';
1410
+ /**
1411
+ * Whether the persona uses filler words like "um" and "uh"
1412
+ */
1413
+ hasDisfluencies: boolean;
1414
+ /**
1415
+ * Maximum number of idle messages the persona will send before giving up
1416
+ */
1417
+ idleMessageMaxSpokenCount: number;
1418
+ /**
1419
+ * Whether the idle message counter resets when the agent speaks
1420
+ */
1421
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1422
+ /**
1423
+ * Messages the persona will say when the agent goes silent during a call. null =
1424
+ * "Automatic": language-appropriate defaults are used at call time.
1425
+ */
1426
+ idleMessages: Array<string> | null;
1427
+ /**
1428
+ * Seconds of silence before the persona sends an idle message
1429
+ */
1430
+ idleTimeoutSeconds: number;
1431
+ /**
1432
+ * How clearly the persona expresses their intentions
1433
+ */
1434
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1435
+ /**
1436
+ * Primary language ISO 639-1 code for the persona
1437
+ */
1438
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
1439
+ /**
1440
+ * How reliable the persona's memory is
1441
+ */
1442
+ memoryReliability: 'HIGH' | 'LOW';
1443
+ /**
1444
+ * The name the agent will identify as during conversations
1445
+ */
1446
+ name: string;
1447
+ /**
1448
+ * Additional custom properties about the persona
1449
+ */
1450
+ properties: {
1451
+ [key: string]: unknown;
1452
+ };
1453
+ /**
1454
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1455
+ * NORMAL, RELAXED)
1456
+ */
1457
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1458
+ /**
1459
+ * Speech clarity of the persona
1460
+ */
1461
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1462
+ /**
1463
+ * Speech pace of the persona
1464
+ */
1465
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1466
+ /**
1467
+ * Languages the persona can understand. Multilingual combinations are limited by
1468
+ * multilingual speech recognition support.
1469
+ */
1470
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
1471
+ /**
1472
+ * Last update timestamp
1473
+ */
1474
+ updatedAt: string;
1475
+ /**
1476
+ * Background story and behavioral patterns for the persona
1477
+ */
1478
+ backstoryPrompt?: string | null;
1479
+ /**
1480
+ * Human-readable description of the persona
1481
+ */
1482
+ description?: string | null;
1483
+ /**
1484
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1485
+ */
1486
+ secondaryLanguage?: 'EN' | null;
1487
+ }
1488
+ }
1489
+ /**
1490
+ * One voicemail greeting.
1491
+ */
1492
+ interface VoicemailFlowVariant {
1493
+ id: string;
1494
+ /**
1495
+ * Graded on top of the flow's own expectations, for this variant only.
1496
+ */
1497
+ additionalExpectations: Array<VoicemailFlowVariant.AdditionalExpectation>;
1498
+ /**
1499
+ * Creation timestamp in ISO 8601 format
1500
+ */
1501
+ createdAt: string;
1502
+ /**
1503
+ * A simulation environment: the ambient conditions a customer flow variant runs
1504
+ * under. The list includes both your own and the ones Roark curates for every
1505
+ * project.
1506
+ */
1507
+ environment: VoicemailFlowVariant.Environment | null;
1508
+ isGenerated: boolean;
1509
+ /**
1510
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1511
+ */
1512
+ personaOverride: VoicemailFlowVariant.PersonaOverride | null;
1513
+ precededByCustomerFlowId: string | null;
1514
+ precededByCustomerFlowVariantId: string | null;
1515
+ title: string;
1516
+ type: 'VOICEMAIL';
1517
+ /**
1518
+ * Last update timestamp in ISO 8601 format
1519
+ */
1520
+ updatedAt: string;
1521
+ }
1522
+ namespace VoicemailFlowVariant {
1523
+ /**
1524
+ * One thing the agent under test is graded against.
1525
+ */
1526
+ interface AdditionalExpectation {
1527
+ id: string;
1528
+ /**
1529
+ * What the agent under test is graded against.
1530
+ */
1531
+ prompt: string;
1532
+ }
1533
+ /**
1534
+ * A simulation environment: the ambient conditions a customer flow variant runs
1535
+ * under. The list includes both your own and the ones Roark curates for every
1536
+ * project.
1537
+ */
1538
+ interface Environment {
1539
+ id: string;
1540
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1541
+ /**
1542
+ * Creation timestamp in ISO 8601 format
1543
+ */
1544
+ createdAt: string;
1545
+ name: string;
1546
+ /**
1547
+ * Last update timestamp in ISO 8601 format
1548
+ */
1549
+ updatedAt: string;
1550
+ description?: string | null;
1551
+ }
1552
+ /**
1553
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1554
+ */
1555
+ interface PersonaOverride {
1556
+ /**
1557
+ * Unique identifier of the persona
1558
+ */
1559
+ id: string;
1560
+ /**
1561
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1562
+ * optional variants
1563
+ */
1564
+ 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';
1565
+ /**
1566
+ * Background noise setting
1567
+ */
1568
+ backgroundNoise: 'NONE' | 'AIRPORT' | 'CHILDREN_PLAYING' | 'CITY' | 'COFFEE_SHOP' | 'DRIVING' | 'OFFICE' | 'THUNDERSTORM';
1569
+ /**
1570
+ * Base emotional state of the persona
1571
+ */
1572
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1573
+ /**
1574
+ * How the persona confirms information
1575
+ */
1576
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1577
+ /**
1578
+ * Creation timestamp
1579
+ */
1580
+ createdAt: string;
1581
+ /**
1582
+ * Gender of the persona
1583
+ */
1584
+ gender: 'MALE' | 'FEMALE';
1585
+ /**
1586
+ * Whether the persona uses filler words like "um" and "uh"
1587
+ */
1588
+ hasDisfluencies: boolean;
1589
+ /**
1590
+ * Maximum number of idle messages the persona will send before giving up
1591
+ */
1592
+ idleMessageMaxSpokenCount: number;
1593
+ /**
1594
+ * Whether the idle message counter resets when the agent speaks
1595
+ */
1596
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1597
+ /**
1598
+ * Messages the persona will say when the agent goes silent during a call. null =
1599
+ * "Automatic": language-appropriate defaults are used at call time.
1600
+ */
1601
+ idleMessages: Array<string> | null;
1602
+ /**
1603
+ * Seconds of silence before the persona sends an idle message
1604
+ */
1605
+ idleTimeoutSeconds: number;
1606
+ /**
1607
+ * How clearly the persona expresses their intentions
1608
+ */
1609
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1610
+ /**
1611
+ * Primary language ISO 639-1 code for the persona
1612
+ */
1613
+ language: 'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE';
1614
+ /**
1615
+ * How reliable the persona's memory is
1616
+ */
1617
+ memoryReliability: 'HIGH' | 'LOW';
1618
+ /**
1619
+ * The name the agent will identify as during conversations
1620
+ */
1621
+ name: string;
1622
+ /**
1623
+ * Additional custom properties about the persona
1624
+ */
1625
+ properties: {
1626
+ [key: string]: unknown;
1627
+ };
1628
+ /**
1629
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1630
+ * NORMAL, RELAXED)
1631
+ */
1632
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1633
+ /**
1634
+ * Speech clarity of the persona
1635
+ */
1636
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1637
+ /**
1638
+ * Speech pace of the persona
1639
+ */
1640
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1641
+ /**
1642
+ * Languages the persona can understand. Multilingual combinations are limited by
1643
+ * multilingual speech recognition support.
1644
+ */
1645
+ understoodLanguages: Array<'EN' | 'ES' | 'DE' | 'HI' | 'FR' | 'NL' | 'AR' | 'EL' | 'IT' | 'ID' | 'TH' | 'JA' | 'TL' | 'MS' | 'ZH' | 'TR' | 'PT' | 'HE'>;
1646
+ /**
1647
+ * Last update timestamp
1648
+ */
1649
+ updatedAt: string;
1650
+ /**
1651
+ * Background story and behavioral patterns for the persona
1652
+ */
1653
+ backstoryPrompt?: string | null;
1654
+ /**
1655
+ * Human-readable description of the persona
1656
+ */
1657
+ description?: string | null;
1658
+ /**
1659
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1660
+ */
1661
+ secondaryLanguage?: 'EN' | null;
1662
+ }
1663
+ }
1664
+ }
1665
+ export interface CustomerFlowEdgeCaseRemoveResponse {
1666
+ data: CustomerFlowEdgeCaseRemoveResponse.Data;
1667
+ }
1668
+ export declare namespace CustomerFlowEdgeCaseRemoveResponse {
1669
+ interface Data {
1670
+ /**
1671
+ * Whether the variant was deleted
1672
+ */
1673
+ deleted: boolean;
1674
+ }
1675
+ }
1676
+ export interface CustomerFlowEdgeCaseUpdateParams {
1677
+ /**
1678
+ * Path param
1679
+ */
1680
+ flowId: string;
1681
+ /**
1682
+ * Body param: Replaces the expectations that apply to this variant on top of the
1683
+ * flow's. Omit to leave them alone, send [] to clear. Improv flows only: a
1684
+ * scripted variant's expectations come from the agent turns on its path and are
1685
+ * rewritten on the next graph edit.
1686
+ */
1687
+ additionalExpectations?: Array<CustomerFlowEdgeCaseUpdateParams.AdditionalExpectation>;
1688
+ /**
1689
+ * Body param
1690
+ */
1691
+ environmentId?: string | null;
1692
+ /**
1693
+ * Body param: The persona this runs as. Null on an edge case inherits the happy
1694
+ * path's.
1695
+ */
1696
+ personaOverrideId?: string | null;
1697
+ /**
1698
+ * Body param
1699
+ */
1700
+ precededByCustomerFlowId?: string | null;
1701
+ /**
1702
+ * Body param
1703
+ */
1704
+ precededByCustomerFlowVariantId?: string | null;
1705
+ /**
1706
+ * Body param
1707
+ */
1708
+ prompt?: string | null;
1709
+ /**
1710
+ * Body param
1711
+ */
1712
+ title?: string;
1713
+ }
1714
+ export declare namespace CustomerFlowEdgeCaseUpdateParams {
1715
+ interface AdditionalExpectation {
1716
+ /**
1717
+ * What the agent under test is graded against.
1718
+ */
1719
+ prompt: string;
1720
+ }
1721
+ }
1722
+ export interface CustomerFlowEdgeCaseAddParams {
1723
+ title: string;
1724
+ environmentId?: string | null;
1725
+ /**
1726
+ * The persona this runs as. Omit to inherit the happy path's.
1727
+ */
1728
+ personaOverrideId?: string | null;
1729
+ precededByCustomerFlowId?: string | null;
1730
+ precededByCustomerFlowVariantId?: string | null;
1731
+ prompt?: string | null;
1732
+ }
1733
+ export interface CustomerFlowEdgeCasePromoteParams {
1734
+ flowId: string;
1735
+ }
1736
+ export interface CustomerFlowEdgeCaseRemoveParams {
1737
+ flowId: string;
1738
+ }
1739
+ export declare namespace CustomerFlowEdgeCase {
1740
+ export { type CustomerFlowEdgeCaseUpdateResponse as CustomerFlowEdgeCaseUpdateResponse, type CustomerFlowEdgeCaseAddResponse as CustomerFlowEdgeCaseAddResponse, type CustomerFlowEdgeCasePromoteResponse as CustomerFlowEdgeCasePromoteResponse, type CustomerFlowEdgeCaseRemoveResponse as CustomerFlowEdgeCaseRemoveResponse, type CustomerFlowEdgeCaseUpdateParams as CustomerFlowEdgeCaseUpdateParams, type CustomerFlowEdgeCaseAddParams as CustomerFlowEdgeCaseAddParams, type CustomerFlowEdgeCasePromoteParams as CustomerFlowEdgeCasePromoteParams, type CustomerFlowEdgeCaseRemoveParams as CustomerFlowEdgeCaseRemoveParams, };
1741
+ }
1742
+ //# sourceMappingURL=customer-flow-edge-case.d.ts.map