@roarkanalytics/sdk 2.31.0 → 2.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/CHANGELOG.md +69 -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 +303 -155
  97. package/resources/call.d.mts.map +1 -1
  98. package/resources/call.d.ts +303 -155
  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 +326 -169
  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,2884 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import * as CustomerFlowAPI from './customer-flow';
5
+ import { APIPromise } from '../core/api-promise';
6
+ import { RequestOptions } from '../internal/request-options';
7
+ import { path } from '../internal/utils/path';
8
+
9
+ export class CustomerFlowEdgeCase extends APIResource {
10
+ /**
11
+ * Updates an edge case's title, persona, environment, brief, preceded-by link or
12
+ * expectations. Omitted fields are left alone; `additionalExpectations` replaces
13
+ * the set wholesale rather than appending. Promoting it to the happy path is a
14
+ * separate call, since that also demotes the incumbent.
15
+ */
16
+ update(
17
+ edgeCaseID: string,
18
+ params: CustomerFlowEdgeCaseUpdateParams,
19
+ options?: RequestOptions,
20
+ ): APIPromise<CustomerFlowEdgeCaseUpdateResponse> {
21
+ const { flowId, ...body } = params;
22
+ return this._client.put(path`/v1/customer-flow/${flowId}/edge-case/${edgeCaseID}`, { body, ...options });
23
+ }
24
+
25
+ /**
26
+ * Adds a variant to an IMPROV flow.
27
+ *
28
+ * A scripted flow's variants are owned by the path engine, one per path through
29
+ * the graph, so they are created by editing the graph through PUT
30
+ * /v1/customer-flow/{flowId}/graph rather than here.
31
+ *
32
+ * Leave personaOverrideId or environmentId unset to inherit the happy path's.
33
+ */
34
+ add(
35
+ flowID: string,
36
+ body: CustomerFlowEdgeCaseAddParams,
37
+ options?: RequestOptions,
38
+ ): APIPromise<CustomerFlowEdgeCaseAddResponse> {
39
+ return this._client.post(path`/v1/customer-flow/${flowID}/edge-case`, { body, ...options });
40
+ }
41
+
42
+ /**
43
+ * Makes this edge case the flow's happy path, and the outgoing happy path an edge
44
+ * case. Its persona and environment are baked into it first, so edge cases that
45
+ * were inheriting keep the configuration they had.
46
+ */
47
+ promote(
48
+ edgeCaseID: string,
49
+ params: CustomerFlowEdgeCasePromoteParams,
50
+ options?: RequestOptions,
51
+ ): APIPromise<CustomerFlowEdgeCasePromoteResponse> {
52
+ const { flowId } = params;
53
+ return this._client.post(path`/v1/customer-flow/${flowId}/edge-case/${edgeCaseID}/promote`, options);
54
+ }
55
+
56
+ /**
57
+ * Soft-deletes a variant. On a scripted flow the path engine re-creates a variant
58
+ * for any path still in the graph, so remove the path through PUT /graph instead
59
+ * if that is what you meant.
60
+ */
61
+ remove(
62
+ edgeCaseID: string,
63
+ params: CustomerFlowEdgeCaseRemoveParams,
64
+ options?: RequestOptions,
65
+ ): APIPromise<CustomerFlowEdgeCaseRemoveResponse> {
66
+ const { flowId } = params;
67
+ return this._client.delete(path`/v1/customer-flow/${flowId}/edge-case/${edgeCaseID}`, options);
68
+ }
69
+ }
70
+
71
+ export interface CustomerFlowEdgeCaseUpdateResponse {
72
+ /**
73
+ * One way of running a customer flow.
74
+ */
75
+ data:
76
+ | CustomerFlowEdgeCaseUpdateResponse.ScriptedFlowVariant
77
+ | CustomerFlowEdgeCaseUpdateResponse.ImprovFlowVariant
78
+ | CustomerFlowEdgeCaseUpdateResponse.VoicemailFlowVariant;
79
+ }
80
+
81
+ export namespace CustomerFlowEdgeCaseUpdateResponse {
82
+ /**
83
+ * One path through a scripted flow. The path engine owns which paths exist, so
84
+ * editing the graph is what creates and removes these.
85
+ */
86
+ export interface ScriptedFlowVariant {
87
+ id: string;
88
+
89
+ /**
90
+ * Graded on top of the flow's own expectations, for this variant only.
91
+ */
92
+ additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
93
+
94
+ /**
95
+ * Creation timestamp in ISO 8601 format
96
+ */
97
+ createdAt: string;
98
+
99
+ /**
100
+ * A simulation environment: the ambient conditions a customer flow variant runs
101
+ * under. The list includes both your own and the ones Roark curates for every
102
+ * project.
103
+ */
104
+ environment: ScriptedFlowVariant.Environment | null;
105
+
106
+ isGenerated: boolean;
107
+
108
+ /**
109
+ * The persona this runs as instead of the happy path's. Null means it inherits.
110
+ */
111
+ personaOverride: ScriptedFlowVariant.PersonaOverride | null;
112
+
113
+ precededByCustomerFlowId: string | null;
114
+
115
+ precededByCustomerFlowVariantId: string | null;
116
+
117
+ /**
118
+ * The one path through the graph this variant runs, in order. Linear by
119
+ * construction, so these steps never nest.
120
+ */
121
+ steps: Array<CustomerFlowAPI.FlowStep>;
122
+
123
+ title: string;
124
+
125
+ type: 'SCRIPTED';
126
+
127
+ /**
128
+ * Last update timestamp in ISO 8601 format
129
+ */
130
+ updatedAt: string;
131
+ }
132
+
133
+ export namespace ScriptedFlowVariant {
134
+ /**
135
+ * One thing the agent under test is graded against.
136
+ */
137
+ export interface AdditionalExpectation {
138
+ id: string;
139
+
140
+ /**
141
+ * What the agent under test is graded against.
142
+ */
143
+ prompt: string;
144
+ }
145
+
146
+ /**
147
+ * A simulation environment: the ambient conditions a customer flow variant runs
148
+ * under. The list includes both your own and the ones Roark curates for every
149
+ * project.
150
+ */
151
+ export interface Environment {
152
+ id: string;
153
+
154
+ backgroundNoise:
155
+ | 'NONE'
156
+ | 'AIRPORT'
157
+ | 'CHILDREN_PLAYING'
158
+ | 'CITY'
159
+ | 'COFFEE_SHOP'
160
+ | 'DRIVING'
161
+ | 'OFFICE'
162
+ | 'THUNDERSTORM';
163
+
164
+ /**
165
+ * Creation timestamp in ISO 8601 format
166
+ */
167
+ createdAt: string;
168
+
169
+ name: string;
170
+
171
+ /**
172
+ * Last update timestamp in ISO 8601 format
173
+ */
174
+ updatedAt: string;
175
+
176
+ description?: string | null;
177
+ }
178
+
179
+ /**
180
+ * The persona this runs as instead of the happy path's. Null means it inherits.
181
+ */
182
+ export interface PersonaOverride {
183
+ /**
184
+ * Unique identifier of the persona
185
+ */
186
+ id: string;
187
+
188
+ /**
189
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
190
+ * optional variants
191
+ */
192
+ accent:
193
+ | 'US'
194
+ | 'US_X_SOUTH'
195
+ | 'GB'
196
+ | 'ES'
197
+ | 'DE'
198
+ | 'IN'
199
+ | 'FR'
200
+ | 'NL'
201
+ | 'SA'
202
+ | 'GR'
203
+ | 'AU'
204
+ | 'IT'
205
+ | 'ID'
206
+ | 'TH'
207
+ | 'JP'
208
+ | 'NZ'
209
+ | 'PH'
210
+ | 'SG'
211
+ | 'MY'
212
+ | 'HK'
213
+ | 'TR'
214
+ | 'PT'
215
+ | 'IL';
216
+
217
+ /**
218
+ * Background noise setting
219
+ */
220
+ backgroundNoise:
221
+ | 'NONE'
222
+ | 'AIRPORT'
223
+ | 'CHILDREN_PLAYING'
224
+ | 'CITY'
225
+ | 'COFFEE_SHOP'
226
+ | 'DRIVING'
227
+ | 'OFFICE'
228
+ | 'THUNDERSTORM';
229
+
230
+ /**
231
+ * Base emotional state of the persona
232
+ */
233
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
234
+
235
+ /**
236
+ * How the persona confirms information
237
+ */
238
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
239
+
240
+ /**
241
+ * Creation timestamp
242
+ */
243
+ createdAt: string;
244
+
245
+ /**
246
+ * Gender of the persona
247
+ */
248
+ gender: 'MALE' | 'FEMALE';
249
+
250
+ /**
251
+ * Whether the persona uses filler words like "um" and "uh"
252
+ */
253
+ hasDisfluencies: boolean;
254
+
255
+ /**
256
+ * Maximum number of idle messages the persona will send before giving up
257
+ */
258
+ idleMessageMaxSpokenCount: number;
259
+
260
+ /**
261
+ * Whether the idle message counter resets when the agent speaks
262
+ */
263
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
264
+
265
+ /**
266
+ * Messages the persona will say when the agent goes silent during a call. null =
267
+ * "Automatic": language-appropriate defaults are used at call time.
268
+ */
269
+ idleMessages: Array<string> | null;
270
+
271
+ /**
272
+ * Seconds of silence before the persona sends an idle message
273
+ */
274
+ idleTimeoutSeconds: number;
275
+
276
+ /**
277
+ * How clearly the persona expresses their intentions
278
+ */
279
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
280
+
281
+ /**
282
+ * Primary language ISO 639-1 code for the persona
283
+ */
284
+ language:
285
+ | 'EN'
286
+ | 'ES'
287
+ | 'DE'
288
+ | 'HI'
289
+ | 'FR'
290
+ | 'NL'
291
+ | 'AR'
292
+ | 'EL'
293
+ | 'IT'
294
+ | 'ID'
295
+ | 'TH'
296
+ | 'JA'
297
+ | 'TL'
298
+ | 'MS'
299
+ | 'ZH'
300
+ | 'TR'
301
+ | 'PT'
302
+ | 'HE';
303
+
304
+ /**
305
+ * How reliable the persona's memory is
306
+ */
307
+ memoryReliability: 'HIGH' | 'LOW';
308
+
309
+ /**
310
+ * The name the agent will identify as during conversations
311
+ */
312
+ name: string;
313
+
314
+ /**
315
+ * Additional custom properties about the persona
316
+ */
317
+ properties: { [key: string]: unknown };
318
+
319
+ /**
320
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
321
+ * NORMAL, RELAXED)
322
+ */
323
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
324
+
325
+ /**
326
+ * Speech clarity of the persona
327
+ */
328
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
329
+
330
+ /**
331
+ * Speech pace of the persona
332
+ */
333
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
334
+
335
+ /**
336
+ * Languages the persona can understand. Multilingual combinations are limited by
337
+ * multilingual speech recognition support.
338
+ */
339
+ understoodLanguages: Array<
340
+ | 'EN'
341
+ | 'ES'
342
+ | 'DE'
343
+ | 'HI'
344
+ | 'FR'
345
+ | 'NL'
346
+ | 'AR'
347
+ | 'EL'
348
+ | 'IT'
349
+ | 'ID'
350
+ | 'TH'
351
+ | 'JA'
352
+ | 'TL'
353
+ | 'MS'
354
+ | 'ZH'
355
+ | 'TR'
356
+ | 'PT'
357
+ | 'HE'
358
+ >;
359
+
360
+ /**
361
+ * Last update timestamp
362
+ */
363
+ updatedAt: string;
364
+
365
+ /**
366
+ * Background story and behavioral patterns for the persona
367
+ */
368
+ backstoryPrompt?: string | null;
369
+
370
+ /**
371
+ * Human-readable description of the persona
372
+ */
373
+ description?: string | null;
374
+
375
+ /**
376
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
377
+ */
378
+ secondaryLanguage?: 'EN' | null;
379
+ }
380
+ }
381
+
382
+ /**
383
+ * One brief to run an improv flow with.
384
+ */
385
+ export interface ImprovFlowVariant {
386
+ id: string;
387
+
388
+ /**
389
+ * Graded on top of the flow's own expectations, for this variant only.
390
+ */
391
+ additionalExpectations: Array<ImprovFlowVariant.AdditionalExpectation>;
392
+
393
+ /**
394
+ * Creation timestamp in ISO 8601 format
395
+ */
396
+ createdAt: string;
397
+
398
+ /**
399
+ * A simulation environment: the ambient conditions a customer flow variant runs
400
+ * under. The list includes both your own and the ones Roark curates for every
401
+ * project.
402
+ */
403
+ environment: ImprovFlowVariant.Environment | null;
404
+
405
+ isGenerated: boolean;
406
+
407
+ /**
408
+ * The persona this runs as instead of the happy path's. Null means it inherits.
409
+ */
410
+ personaOverride: ImprovFlowVariant.PersonaOverride | null;
411
+
412
+ precededByCustomerFlowId: string | null;
413
+
414
+ precededByCustomerFlowVariantId: string | null;
415
+
416
+ title: string;
417
+
418
+ type: 'IMPROV';
419
+
420
+ /**
421
+ * Last update timestamp in ISO 8601 format
422
+ */
423
+ updatedAt: string;
424
+
425
+ /**
426
+ * The brief the simulated customer improvises from.
427
+ */
428
+ prompt?: string | null;
429
+ }
430
+
431
+ export namespace ImprovFlowVariant {
432
+ /**
433
+ * One thing the agent under test is graded against.
434
+ */
435
+ export interface AdditionalExpectation {
436
+ id: string;
437
+
438
+ /**
439
+ * What the agent under test is graded against.
440
+ */
441
+ prompt: string;
442
+ }
443
+
444
+ /**
445
+ * A simulation environment: the ambient conditions a customer flow variant runs
446
+ * under. The list includes both your own and the ones Roark curates for every
447
+ * project.
448
+ */
449
+ export interface Environment {
450
+ id: string;
451
+
452
+ backgroundNoise:
453
+ | 'NONE'
454
+ | 'AIRPORT'
455
+ | 'CHILDREN_PLAYING'
456
+ | 'CITY'
457
+ | 'COFFEE_SHOP'
458
+ | 'DRIVING'
459
+ | 'OFFICE'
460
+ | 'THUNDERSTORM';
461
+
462
+ /**
463
+ * Creation timestamp in ISO 8601 format
464
+ */
465
+ createdAt: string;
466
+
467
+ name: string;
468
+
469
+ /**
470
+ * Last update timestamp in ISO 8601 format
471
+ */
472
+ updatedAt: string;
473
+
474
+ description?: string | null;
475
+ }
476
+
477
+ /**
478
+ * The persona this runs as instead of the happy path's. Null means it inherits.
479
+ */
480
+ export interface PersonaOverride {
481
+ /**
482
+ * Unique identifier of the persona
483
+ */
484
+ id: string;
485
+
486
+ /**
487
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
488
+ * optional variants
489
+ */
490
+ accent:
491
+ | 'US'
492
+ | 'US_X_SOUTH'
493
+ | 'GB'
494
+ | 'ES'
495
+ | 'DE'
496
+ | 'IN'
497
+ | 'FR'
498
+ | 'NL'
499
+ | 'SA'
500
+ | 'GR'
501
+ | 'AU'
502
+ | 'IT'
503
+ | 'ID'
504
+ | 'TH'
505
+ | 'JP'
506
+ | 'NZ'
507
+ | 'PH'
508
+ | 'SG'
509
+ | 'MY'
510
+ | 'HK'
511
+ | 'TR'
512
+ | 'PT'
513
+ | 'IL';
514
+
515
+ /**
516
+ * Background noise setting
517
+ */
518
+ backgroundNoise:
519
+ | 'NONE'
520
+ | 'AIRPORT'
521
+ | 'CHILDREN_PLAYING'
522
+ | 'CITY'
523
+ | 'COFFEE_SHOP'
524
+ | 'DRIVING'
525
+ | 'OFFICE'
526
+ | 'THUNDERSTORM';
527
+
528
+ /**
529
+ * Base emotional state of the persona
530
+ */
531
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
532
+
533
+ /**
534
+ * How the persona confirms information
535
+ */
536
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
537
+
538
+ /**
539
+ * Creation timestamp
540
+ */
541
+ createdAt: string;
542
+
543
+ /**
544
+ * Gender of the persona
545
+ */
546
+ gender: 'MALE' | 'FEMALE';
547
+
548
+ /**
549
+ * Whether the persona uses filler words like "um" and "uh"
550
+ */
551
+ hasDisfluencies: boolean;
552
+
553
+ /**
554
+ * Maximum number of idle messages the persona will send before giving up
555
+ */
556
+ idleMessageMaxSpokenCount: number;
557
+
558
+ /**
559
+ * Whether the idle message counter resets when the agent speaks
560
+ */
561
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
562
+
563
+ /**
564
+ * Messages the persona will say when the agent goes silent during a call. null =
565
+ * "Automatic": language-appropriate defaults are used at call time.
566
+ */
567
+ idleMessages: Array<string> | null;
568
+
569
+ /**
570
+ * Seconds of silence before the persona sends an idle message
571
+ */
572
+ idleTimeoutSeconds: number;
573
+
574
+ /**
575
+ * How clearly the persona expresses their intentions
576
+ */
577
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
578
+
579
+ /**
580
+ * Primary language ISO 639-1 code for the persona
581
+ */
582
+ language:
583
+ | 'EN'
584
+ | 'ES'
585
+ | 'DE'
586
+ | 'HI'
587
+ | 'FR'
588
+ | 'NL'
589
+ | 'AR'
590
+ | 'EL'
591
+ | 'IT'
592
+ | 'ID'
593
+ | 'TH'
594
+ | 'JA'
595
+ | 'TL'
596
+ | 'MS'
597
+ | 'ZH'
598
+ | 'TR'
599
+ | 'PT'
600
+ | 'HE';
601
+
602
+ /**
603
+ * How reliable the persona's memory is
604
+ */
605
+ memoryReliability: 'HIGH' | 'LOW';
606
+
607
+ /**
608
+ * The name the agent will identify as during conversations
609
+ */
610
+ name: string;
611
+
612
+ /**
613
+ * Additional custom properties about the persona
614
+ */
615
+ properties: { [key: string]: unknown };
616
+
617
+ /**
618
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
619
+ * NORMAL, RELAXED)
620
+ */
621
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
622
+
623
+ /**
624
+ * Speech clarity of the persona
625
+ */
626
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
627
+
628
+ /**
629
+ * Speech pace of the persona
630
+ */
631
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
632
+
633
+ /**
634
+ * Languages the persona can understand. Multilingual combinations are limited by
635
+ * multilingual speech recognition support.
636
+ */
637
+ understoodLanguages: Array<
638
+ | 'EN'
639
+ | 'ES'
640
+ | 'DE'
641
+ | 'HI'
642
+ | 'FR'
643
+ | 'NL'
644
+ | 'AR'
645
+ | 'EL'
646
+ | 'IT'
647
+ | 'ID'
648
+ | 'TH'
649
+ | 'JA'
650
+ | 'TL'
651
+ | 'MS'
652
+ | 'ZH'
653
+ | 'TR'
654
+ | 'PT'
655
+ | 'HE'
656
+ >;
657
+
658
+ /**
659
+ * Last update timestamp
660
+ */
661
+ updatedAt: string;
662
+
663
+ /**
664
+ * Background story and behavioral patterns for the persona
665
+ */
666
+ backstoryPrompt?: string | null;
667
+
668
+ /**
669
+ * Human-readable description of the persona
670
+ */
671
+ description?: string | null;
672
+
673
+ /**
674
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
675
+ */
676
+ secondaryLanguage?: 'EN' | null;
677
+ }
678
+ }
679
+
680
+ /**
681
+ * One voicemail greeting.
682
+ */
683
+ export interface VoicemailFlowVariant {
684
+ id: string;
685
+
686
+ /**
687
+ * Graded on top of the flow's own expectations, for this variant only.
688
+ */
689
+ additionalExpectations: Array<VoicemailFlowVariant.AdditionalExpectation>;
690
+
691
+ /**
692
+ * Creation timestamp in ISO 8601 format
693
+ */
694
+ createdAt: string;
695
+
696
+ /**
697
+ * A simulation environment: the ambient conditions a customer flow variant runs
698
+ * under. The list includes both your own and the ones Roark curates for every
699
+ * project.
700
+ */
701
+ environment: VoicemailFlowVariant.Environment | null;
702
+
703
+ isGenerated: boolean;
704
+
705
+ /**
706
+ * The persona this runs as instead of the happy path's. Null means it inherits.
707
+ */
708
+ personaOverride: VoicemailFlowVariant.PersonaOverride | null;
709
+
710
+ precededByCustomerFlowId: string | null;
711
+
712
+ precededByCustomerFlowVariantId: string | null;
713
+
714
+ title: string;
715
+
716
+ type: 'VOICEMAIL';
717
+
718
+ /**
719
+ * Last update timestamp in ISO 8601 format
720
+ */
721
+ updatedAt: string;
722
+ }
723
+
724
+ export namespace VoicemailFlowVariant {
725
+ /**
726
+ * One thing the agent under test is graded against.
727
+ */
728
+ export interface AdditionalExpectation {
729
+ id: string;
730
+
731
+ /**
732
+ * What the agent under test is graded against.
733
+ */
734
+ prompt: string;
735
+ }
736
+
737
+ /**
738
+ * A simulation environment: the ambient conditions a customer flow variant runs
739
+ * under. The list includes both your own and the ones Roark curates for every
740
+ * project.
741
+ */
742
+ export interface Environment {
743
+ id: string;
744
+
745
+ backgroundNoise:
746
+ | 'NONE'
747
+ | 'AIRPORT'
748
+ | 'CHILDREN_PLAYING'
749
+ | 'CITY'
750
+ | 'COFFEE_SHOP'
751
+ | 'DRIVING'
752
+ | 'OFFICE'
753
+ | 'THUNDERSTORM';
754
+
755
+ /**
756
+ * Creation timestamp in ISO 8601 format
757
+ */
758
+ createdAt: string;
759
+
760
+ name: string;
761
+
762
+ /**
763
+ * Last update timestamp in ISO 8601 format
764
+ */
765
+ updatedAt: string;
766
+
767
+ description?: string | null;
768
+ }
769
+
770
+ /**
771
+ * The persona this runs as instead of the happy path's. Null means it inherits.
772
+ */
773
+ export interface PersonaOverride {
774
+ /**
775
+ * Unique identifier of the persona
776
+ */
777
+ id: string;
778
+
779
+ /**
780
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
781
+ * optional variants
782
+ */
783
+ accent:
784
+ | 'US'
785
+ | 'US_X_SOUTH'
786
+ | 'GB'
787
+ | 'ES'
788
+ | 'DE'
789
+ | 'IN'
790
+ | 'FR'
791
+ | 'NL'
792
+ | 'SA'
793
+ | 'GR'
794
+ | 'AU'
795
+ | 'IT'
796
+ | 'ID'
797
+ | 'TH'
798
+ | 'JP'
799
+ | 'NZ'
800
+ | 'PH'
801
+ | 'SG'
802
+ | 'MY'
803
+ | 'HK'
804
+ | 'TR'
805
+ | 'PT'
806
+ | 'IL';
807
+
808
+ /**
809
+ * Background noise setting
810
+ */
811
+ backgroundNoise:
812
+ | 'NONE'
813
+ | 'AIRPORT'
814
+ | 'CHILDREN_PLAYING'
815
+ | 'CITY'
816
+ | 'COFFEE_SHOP'
817
+ | 'DRIVING'
818
+ | 'OFFICE'
819
+ | 'THUNDERSTORM';
820
+
821
+ /**
822
+ * Base emotional state of the persona
823
+ */
824
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
825
+
826
+ /**
827
+ * How the persona confirms information
828
+ */
829
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
830
+
831
+ /**
832
+ * Creation timestamp
833
+ */
834
+ createdAt: string;
835
+
836
+ /**
837
+ * Gender of the persona
838
+ */
839
+ gender: 'MALE' | 'FEMALE';
840
+
841
+ /**
842
+ * Whether the persona uses filler words like "um" and "uh"
843
+ */
844
+ hasDisfluencies: boolean;
845
+
846
+ /**
847
+ * Maximum number of idle messages the persona will send before giving up
848
+ */
849
+ idleMessageMaxSpokenCount: number;
850
+
851
+ /**
852
+ * Whether the idle message counter resets when the agent speaks
853
+ */
854
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
855
+
856
+ /**
857
+ * Messages the persona will say when the agent goes silent during a call. null =
858
+ * "Automatic": language-appropriate defaults are used at call time.
859
+ */
860
+ idleMessages: Array<string> | null;
861
+
862
+ /**
863
+ * Seconds of silence before the persona sends an idle message
864
+ */
865
+ idleTimeoutSeconds: number;
866
+
867
+ /**
868
+ * How clearly the persona expresses their intentions
869
+ */
870
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
871
+
872
+ /**
873
+ * Primary language ISO 639-1 code for the persona
874
+ */
875
+ language:
876
+ | 'EN'
877
+ | 'ES'
878
+ | 'DE'
879
+ | 'HI'
880
+ | 'FR'
881
+ | 'NL'
882
+ | 'AR'
883
+ | 'EL'
884
+ | 'IT'
885
+ | 'ID'
886
+ | 'TH'
887
+ | 'JA'
888
+ | 'TL'
889
+ | 'MS'
890
+ | 'ZH'
891
+ | 'TR'
892
+ | 'PT'
893
+ | 'HE';
894
+
895
+ /**
896
+ * How reliable the persona's memory is
897
+ */
898
+ memoryReliability: 'HIGH' | 'LOW';
899
+
900
+ /**
901
+ * The name the agent will identify as during conversations
902
+ */
903
+ name: string;
904
+
905
+ /**
906
+ * Additional custom properties about the persona
907
+ */
908
+ properties: { [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
+ /**
917
+ * Speech clarity of the persona
918
+ */
919
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
920
+
921
+ /**
922
+ * Speech pace of the persona
923
+ */
924
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
925
+
926
+ /**
927
+ * Languages the persona can understand. Multilingual combinations are limited by
928
+ * multilingual speech recognition support.
929
+ */
930
+ understoodLanguages: Array<
931
+ | 'EN'
932
+ | 'ES'
933
+ | 'DE'
934
+ | 'HI'
935
+ | 'FR'
936
+ | 'NL'
937
+ | 'AR'
938
+ | 'EL'
939
+ | 'IT'
940
+ | 'ID'
941
+ | 'TH'
942
+ | 'JA'
943
+ | 'TL'
944
+ | 'MS'
945
+ | 'ZH'
946
+ | 'TR'
947
+ | 'PT'
948
+ | 'HE'
949
+ >;
950
+
951
+ /**
952
+ * Last update timestamp
953
+ */
954
+ updatedAt: string;
955
+
956
+ /**
957
+ * Background story and behavioral patterns for the persona
958
+ */
959
+ backstoryPrompt?: string | null;
960
+
961
+ /**
962
+ * Human-readable description of the persona
963
+ */
964
+ description?: string | null;
965
+
966
+ /**
967
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
968
+ */
969
+ secondaryLanguage?: 'EN' | null;
970
+ }
971
+ }
972
+ }
973
+
974
+ export interface CustomerFlowEdgeCaseAddResponse {
975
+ /**
976
+ * One way of running a customer flow.
977
+ */
978
+ data:
979
+ | CustomerFlowEdgeCaseAddResponse.ScriptedFlowVariant
980
+ | CustomerFlowEdgeCaseAddResponse.ImprovFlowVariant
981
+ | CustomerFlowEdgeCaseAddResponse.VoicemailFlowVariant;
982
+ }
983
+
984
+ export namespace CustomerFlowEdgeCaseAddResponse {
985
+ /**
986
+ * One path through a scripted flow. The path engine owns which paths exist, so
987
+ * editing the graph is what creates and removes these.
988
+ */
989
+ export interface ScriptedFlowVariant {
990
+ id: string;
991
+
992
+ /**
993
+ * Graded on top of the flow's own expectations, for this variant only.
994
+ */
995
+ additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
996
+
997
+ /**
998
+ * Creation timestamp in ISO 8601 format
999
+ */
1000
+ createdAt: string;
1001
+
1002
+ /**
1003
+ * A simulation environment: the ambient conditions a customer flow variant runs
1004
+ * under. The list includes both your own and the ones Roark curates for every
1005
+ * project.
1006
+ */
1007
+ environment: ScriptedFlowVariant.Environment | null;
1008
+
1009
+ isGenerated: boolean;
1010
+
1011
+ /**
1012
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1013
+ */
1014
+ personaOverride: ScriptedFlowVariant.PersonaOverride | null;
1015
+
1016
+ precededByCustomerFlowId: string | null;
1017
+
1018
+ precededByCustomerFlowVariantId: string | null;
1019
+
1020
+ /**
1021
+ * The one path through the graph this variant runs, in order. Linear by
1022
+ * construction, so these steps never nest.
1023
+ */
1024
+ steps: Array<CustomerFlowAPI.FlowStep>;
1025
+
1026
+ title: string;
1027
+
1028
+ type: 'SCRIPTED';
1029
+
1030
+ /**
1031
+ * Last update timestamp in ISO 8601 format
1032
+ */
1033
+ updatedAt: string;
1034
+ }
1035
+
1036
+ export namespace ScriptedFlowVariant {
1037
+ /**
1038
+ * One thing the agent under test is graded against.
1039
+ */
1040
+ export interface AdditionalExpectation {
1041
+ id: string;
1042
+
1043
+ /**
1044
+ * What the agent under test is graded against.
1045
+ */
1046
+ prompt: string;
1047
+ }
1048
+
1049
+ /**
1050
+ * A simulation environment: the ambient conditions a customer flow variant runs
1051
+ * under. The list includes both your own and the ones Roark curates for every
1052
+ * project.
1053
+ */
1054
+ export interface Environment {
1055
+ id: string;
1056
+
1057
+ backgroundNoise:
1058
+ | 'NONE'
1059
+ | 'AIRPORT'
1060
+ | 'CHILDREN_PLAYING'
1061
+ | 'CITY'
1062
+ | 'COFFEE_SHOP'
1063
+ | 'DRIVING'
1064
+ | 'OFFICE'
1065
+ | 'THUNDERSTORM';
1066
+
1067
+ /**
1068
+ * Creation timestamp in ISO 8601 format
1069
+ */
1070
+ createdAt: string;
1071
+
1072
+ name: string;
1073
+
1074
+ /**
1075
+ * Last update timestamp in ISO 8601 format
1076
+ */
1077
+ updatedAt: string;
1078
+
1079
+ description?: string | null;
1080
+ }
1081
+
1082
+ /**
1083
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1084
+ */
1085
+ export interface PersonaOverride {
1086
+ /**
1087
+ * Unique identifier of the persona
1088
+ */
1089
+ id: string;
1090
+
1091
+ /**
1092
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1093
+ * optional variants
1094
+ */
1095
+ accent:
1096
+ | 'US'
1097
+ | 'US_X_SOUTH'
1098
+ | 'GB'
1099
+ | 'ES'
1100
+ | 'DE'
1101
+ | 'IN'
1102
+ | 'FR'
1103
+ | 'NL'
1104
+ | 'SA'
1105
+ | 'GR'
1106
+ | 'AU'
1107
+ | 'IT'
1108
+ | 'ID'
1109
+ | 'TH'
1110
+ | 'JP'
1111
+ | 'NZ'
1112
+ | 'PH'
1113
+ | 'SG'
1114
+ | 'MY'
1115
+ | 'HK'
1116
+ | 'TR'
1117
+ | 'PT'
1118
+ | 'IL';
1119
+
1120
+ /**
1121
+ * Background noise setting
1122
+ */
1123
+ backgroundNoise:
1124
+ | 'NONE'
1125
+ | 'AIRPORT'
1126
+ | 'CHILDREN_PLAYING'
1127
+ | 'CITY'
1128
+ | 'COFFEE_SHOP'
1129
+ | 'DRIVING'
1130
+ | 'OFFICE'
1131
+ | 'THUNDERSTORM';
1132
+
1133
+ /**
1134
+ * Base emotional state of the persona
1135
+ */
1136
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1137
+
1138
+ /**
1139
+ * How the persona confirms information
1140
+ */
1141
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1142
+
1143
+ /**
1144
+ * Creation timestamp
1145
+ */
1146
+ createdAt: string;
1147
+
1148
+ /**
1149
+ * Gender of the persona
1150
+ */
1151
+ gender: 'MALE' | 'FEMALE';
1152
+
1153
+ /**
1154
+ * Whether the persona uses filler words like "um" and "uh"
1155
+ */
1156
+ hasDisfluencies: boolean;
1157
+
1158
+ /**
1159
+ * Maximum number of idle messages the persona will send before giving up
1160
+ */
1161
+ idleMessageMaxSpokenCount: number;
1162
+
1163
+ /**
1164
+ * Whether the idle message counter resets when the agent speaks
1165
+ */
1166
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1167
+
1168
+ /**
1169
+ * Messages the persona will say when the agent goes silent during a call. null =
1170
+ * "Automatic": language-appropriate defaults are used at call time.
1171
+ */
1172
+ idleMessages: Array<string> | null;
1173
+
1174
+ /**
1175
+ * Seconds of silence before the persona sends an idle message
1176
+ */
1177
+ idleTimeoutSeconds: number;
1178
+
1179
+ /**
1180
+ * How clearly the persona expresses their intentions
1181
+ */
1182
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1183
+
1184
+ /**
1185
+ * Primary language ISO 639-1 code for the persona
1186
+ */
1187
+ language:
1188
+ | 'EN'
1189
+ | 'ES'
1190
+ | 'DE'
1191
+ | 'HI'
1192
+ | 'FR'
1193
+ | 'NL'
1194
+ | 'AR'
1195
+ | 'EL'
1196
+ | 'IT'
1197
+ | 'ID'
1198
+ | 'TH'
1199
+ | 'JA'
1200
+ | 'TL'
1201
+ | 'MS'
1202
+ | 'ZH'
1203
+ | 'TR'
1204
+ | 'PT'
1205
+ | 'HE';
1206
+
1207
+ /**
1208
+ * How reliable the persona's memory is
1209
+ */
1210
+ memoryReliability: 'HIGH' | 'LOW';
1211
+
1212
+ /**
1213
+ * The name the agent will identify as during conversations
1214
+ */
1215
+ name: string;
1216
+
1217
+ /**
1218
+ * Additional custom properties about the persona
1219
+ */
1220
+ properties: { [key: string]: unknown };
1221
+
1222
+ /**
1223
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1224
+ * NORMAL, RELAXED)
1225
+ */
1226
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1227
+
1228
+ /**
1229
+ * Speech clarity of the persona
1230
+ */
1231
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1232
+
1233
+ /**
1234
+ * Speech pace of the persona
1235
+ */
1236
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1237
+
1238
+ /**
1239
+ * Languages the persona can understand. Multilingual combinations are limited by
1240
+ * multilingual speech recognition support.
1241
+ */
1242
+ understoodLanguages: Array<
1243
+ | 'EN'
1244
+ | 'ES'
1245
+ | 'DE'
1246
+ | 'HI'
1247
+ | 'FR'
1248
+ | 'NL'
1249
+ | 'AR'
1250
+ | 'EL'
1251
+ | 'IT'
1252
+ | 'ID'
1253
+ | 'TH'
1254
+ | 'JA'
1255
+ | 'TL'
1256
+ | 'MS'
1257
+ | 'ZH'
1258
+ | 'TR'
1259
+ | 'PT'
1260
+ | 'HE'
1261
+ >;
1262
+
1263
+ /**
1264
+ * Last update timestamp
1265
+ */
1266
+ updatedAt: string;
1267
+
1268
+ /**
1269
+ * Background story and behavioral patterns for the persona
1270
+ */
1271
+ backstoryPrompt?: string | null;
1272
+
1273
+ /**
1274
+ * Human-readable description of the persona
1275
+ */
1276
+ description?: string | null;
1277
+
1278
+ /**
1279
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1280
+ */
1281
+ secondaryLanguage?: 'EN' | null;
1282
+ }
1283
+ }
1284
+
1285
+ /**
1286
+ * One brief to run an improv flow with.
1287
+ */
1288
+ export interface ImprovFlowVariant {
1289
+ id: string;
1290
+
1291
+ /**
1292
+ * Graded on top of the flow's own expectations, for this variant only.
1293
+ */
1294
+ additionalExpectations: Array<ImprovFlowVariant.AdditionalExpectation>;
1295
+
1296
+ /**
1297
+ * Creation timestamp in ISO 8601 format
1298
+ */
1299
+ createdAt: string;
1300
+
1301
+ /**
1302
+ * A simulation environment: the ambient conditions a customer flow variant runs
1303
+ * under. The list includes both your own and the ones Roark curates for every
1304
+ * project.
1305
+ */
1306
+ environment: ImprovFlowVariant.Environment | null;
1307
+
1308
+ isGenerated: boolean;
1309
+
1310
+ /**
1311
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1312
+ */
1313
+ personaOverride: ImprovFlowVariant.PersonaOverride | null;
1314
+
1315
+ precededByCustomerFlowId: string | null;
1316
+
1317
+ precededByCustomerFlowVariantId: string | null;
1318
+
1319
+ title: string;
1320
+
1321
+ type: 'IMPROV';
1322
+
1323
+ /**
1324
+ * Last update timestamp in ISO 8601 format
1325
+ */
1326
+ updatedAt: string;
1327
+
1328
+ /**
1329
+ * The brief the simulated customer improvises from.
1330
+ */
1331
+ prompt?: string | null;
1332
+ }
1333
+
1334
+ export namespace ImprovFlowVariant {
1335
+ /**
1336
+ * One thing the agent under test is graded against.
1337
+ */
1338
+ export interface AdditionalExpectation {
1339
+ id: string;
1340
+
1341
+ /**
1342
+ * What the agent under test is graded against.
1343
+ */
1344
+ prompt: string;
1345
+ }
1346
+
1347
+ /**
1348
+ * A simulation environment: the ambient conditions a customer flow variant runs
1349
+ * under. The list includes both your own and the ones Roark curates for every
1350
+ * project.
1351
+ */
1352
+ export interface Environment {
1353
+ id: string;
1354
+
1355
+ backgroundNoise:
1356
+ | 'NONE'
1357
+ | 'AIRPORT'
1358
+ | 'CHILDREN_PLAYING'
1359
+ | 'CITY'
1360
+ | 'COFFEE_SHOP'
1361
+ | 'DRIVING'
1362
+ | 'OFFICE'
1363
+ | 'THUNDERSTORM';
1364
+
1365
+ /**
1366
+ * Creation timestamp in ISO 8601 format
1367
+ */
1368
+ createdAt: string;
1369
+
1370
+ name: string;
1371
+
1372
+ /**
1373
+ * Last update timestamp in ISO 8601 format
1374
+ */
1375
+ updatedAt: string;
1376
+
1377
+ description?: string | null;
1378
+ }
1379
+
1380
+ /**
1381
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1382
+ */
1383
+ export interface PersonaOverride {
1384
+ /**
1385
+ * Unique identifier of the persona
1386
+ */
1387
+ id: string;
1388
+
1389
+ /**
1390
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1391
+ * optional variants
1392
+ */
1393
+ accent:
1394
+ | 'US'
1395
+ | 'US_X_SOUTH'
1396
+ | 'GB'
1397
+ | 'ES'
1398
+ | 'DE'
1399
+ | 'IN'
1400
+ | 'FR'
1401
+ | 'NL'
1402
+ | 'SA'
1403
+ | 'GR'
1404
+ | 'AU'
1405
+ | 'IT'
1406
+ | 'ID'
1407
+ | 'TH'
1408
+ | 'JP'
1409
+ | 'NZ'
1410
+ | 'PH'
1411
+ | 'SG'
1412
+ | 'MY'
1413
+ | 'HK'
1414
+ | 'TR'
1415
+ | 'PT'
1416
+ | 'IL';
1417
+
1418
+ /**
1419
+ * Background noise setting
1420
+ */
1421
+ backgroundNoise:
1422
+ | 'NONE'
1423
+ | 'AIRPORT'
1424
+ | 'CHILDREN_PLAYING'
1425
+ | 'CITY'
1426
+ | 'COFFEE_SHOP'
1427
+ | 'DRIVING'
1428
+ | 'OFFICE'
1429
+ | 'THUNDERSTORM';
1430
+
1431
+ /**
1432
+ * Base emotional state of the persona
1433
+ */
1434
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1435
+
1436
+ /**
1437
+ * How the persona confirms information
1438
+ */
1439
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1440
+
1441
+ /**
1442
+ * Creation timestamp
1443
+ */
1444
+ createdAt: string;
1445
+
1446
+ /**
1447
+ * Gender of the persona
1448
+ */
1449
+ gender: 'MALE' | 'FEMALE';
1450
+
1451
+ /**
1452
+ * Whether the persona uses filler words like "um" and "uh"
1453
+ */
1454
+ hasDisfluencies: boolean;
1455
+
1456
+ /**
1457
+ * Maximum number of idle messages the persona will send before giving up
1458
+ */
1459
+ idleMessageMaxSpokenCount: number;
1460
+
1461
+ /**
1462
+ * Whether the idle message counter resets when the agent speaks
1463
+ */
1464
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1465
+
1466
+ /**
1467
+ * Messages the persona will say when the agent goes silent during a call. null =
1468
+ * "Automatic": language-appropriate defaults are used at call time.
1469
+ */
1470
+ idleMessages: Array<string> | null;
1471
+
1472
+ /**
1473
+ * Seconds of silence before the persona sends an idle message
1474
+ */
1475
+ idleTimeoutSeconds: number;
1476
+
1477
+ /**
1478
+ * How clearly the persona expresses their intentions
1479
+ */
1480
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1481
+
1482
+ /**
1483
+ * Primary language ISO 639-1 code for the persona
1484
+ */
1485
+ language:
1486
+ | 'EN'
1487
+ | 'ES'
1488
+ | 'DE'
1489
+ | 'HI'
1490
+ | 'FR'
1491
+ | 'NL'
1492
+ | 'AR'
1493
+ | 'EL'
1494
+ | 'IT'
1495
+ | 'ID'
1496
+ | 'TH'
1497
+ | 'JA'
1498
+ | 'TL'
1499
+ | 'MS'
1500
+ | 'ZH'
1501
+ | 'TR'
1502
+ | 'PT'
1503
+ | 'HE';
1504
+
1505
+ /**
1506
+ * How reliable the persona's memory is
1507
+ */
1508
+ memoryReliability: 'HIGH' | 'LOW';
1509
+
1510
+ /**
1511
+ * The name the agent will identify as during conversations
1512
+ */
1513
+ name: string;
1514
+
1515
+ /**
1516
+ * Additional custom properties about the persona
1517
+ */
1518
+ properties: { [key: string]: unknown };
1519
+
1520
+ /**
1521
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1522
+ * NORMAL, RELAXED)
1523
+ */
1524
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1525
+
1526
+ /**
1527
+ * Speech clarity of the persona
1528
+ */
1529
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1530
+
1531
+ /**
1532
+ * Speech pace of the persona
1533
+ */
1534
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1535
+
1536
+ /**
1537
+ * Languages the persona can understand. Multilingual combinations are limited by
1538
+ * multilingual speech recognition support.
1539
+ */
1540
+ understoodLanguages: Array<
1541
+ | 'EN'
1542
+ | 'ES'
1543
+ | 'DE'
1544
+ | 'HI'
1545
+ | 'FR'
1546
+ | 'NL'
1547
+ | 'AR'
1548
+ | 'EL'
1549
+ | 'IT'
1550
+ | 'ID'
1551
+ | 'TH'
1552
+ | 'JA'
1553
+ | 'TL'
1554
+ | 'MS'
1555
+ | 'ZH'
1556
+ | 'TR'
1557
+ | 'PT'
1558
+ | 'HE'
1559
+ >;
1560
+
1561
+ /**
1562
+ * Last update timestamp
1563
+ */
1564
+ updatedAt: string;
1565
+
1566
+ /**
1567
+ * Background story and behavioral patterns for the persona
1568
+ */
1569
+ backstoryPrompt?: string | null;
1570
+
1571
+ /**
1572
+ * Human-readable description of the persona
1573
+ */
1574
+ description?: string | null;
1575
+
1576
+ /**
1577
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1578
+ */
1579
+ secondaryLanguage?: 'EN' | null;
1580
+ }
1581
+ }
1582
+
1583
+ /**
1584
+ * One voicemail greeting.
1585
+ */
1586
+ export interface VoicemailFlowVariant {
1587
+ id: string;
1588
+
1589
+ /**
1590
+ * Graded on top of the flow's own expectations, for this variant only.
1591
+ */
1592
+ additionalExpectations: Array<VoicemailFlowVariant.AdditionalExpectation>;
1593
+
1594
+ /**
1595
+ * Creation timestamp in ISO 8601 format
1596
+ */
1597
+ createdAt: string;
1598
+
1599
+ /**
1600
+ * A simulation environment: the ambient conditions a customer flow variant runs
1601
+ * under. The list includes both your own and the ones Roark curates for every
1602
+ * project.
1603
+ */
1604
+ environment: VoicemailFlowVariant.Environment | null;
1605
+
1606
+ isGenerated: boolean;
1607
+
1608
+ /**
1609
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1610
+ */
1611
+ personaOverride: VoicemailFlowVariant.PersonaOverride | null;
1612
+
1613
+ precededByCustomerFlowId: string | null;
1614
+
1615
+ precededByCustomerFlowVariantId: string | null;
1616
+
1617
+ title: string;
1618
+
1619
+ type: 'VOICEMAIL';
1620
+
1621
+ /**
1622
+ * Last update timestamp in ISO 8601 format
1623
+ */
1624
+ updatedAt: string;
1625
+ }
1626
+
1627
+ export namespace VoicemailFlowVariant {
1628
+ /**
1629
+ * One thing the agent under test is graded against.
1630
+ */
1631
+ export interface AdditionalExpectation {
1632
+ id: string;
1633
+
1634
+ /**
1635
+ * What the agent under test is graded against.
1636
+ */
1637
+ prompt: string;
1638
+ }
1639
+
1640
+ /**
1641
+ * A simulation environment: the ambient conditions a customer flow variant runs
1642
+ * under. The list includes both your own and the ones Roark curates for every
1643
+ * project.
1644
+ */
1645
+ export interface Environment {
1646
+ id: string;
1647
+
1648
+ backgroundNoise:
1649
+ | 'NONE'
1650
+ | 'AIRPORT'
1651
+ | 'CHILDREN_PLAYING'
1652
+ | 'CITY'
1653
+ | 'COFFEE_SHOP'
1654
+ | 'DRIVING'
1655
+ | 'OFFICE'
1656
+ | 'THUNDERSTORM';
1657
+
1658
+ /**
1659
+ * Creation timestamp in ISO 8601 format
1660
+ */
1661
+ createdAt: string;
1662
+
1663
+ name: string;
1664
+
1665
+ /**
1666
+ * Last update timestamp in ISO 8601 format
1667
+ */
1668
+ updatedAt: string;
1669
+
1670
+ description?: string | null;
1671
+ }
1672
+
1673
+ /**
1674
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1675
+ */
1676
+ export interface PersonaOverride {
1677
+ /**
1678
+ * Unique identifier of the persona
1679
+ */
1680
+ id: string;
1681
+
1682
+ /**
1683
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1684
+ * optional variants
1685
+ */
1686
+ accent:
1687
+ | 'US'
1688
+ | 'US_X_SOUTH'
1689
+ | 'GB'
1690
+ | 'ES'
1691
+ | 'DE'
1692
+ | 'IN'
1693
+ | 'FR'
1694
+ | 'NL'
1695
+ | 'SA'
1696
+ | 'GR'
1697
+ | 'AU'
1698
+ | 'IT'
1699
+ | 'ID'
1700
+ | 'TH'
1701
+ | 'JP'
1702
+ | 'NZ'
1703
+ | 'PH'
1704
+ | 'SG'
1705
+ | 'MY'
1706
+ | 'HK'
1707
+ | 'TR'
1708
+ | 'PT'
1709
+ | 'IL';
1710
+
1711
+ /**
1712
+ * Background noise setting
1713
+ */
1714
+ backgroundNoise:
1715
+ | 'NONE'
1716
+ | 'AIRPORT'
1717
+ | 'CHILDREN_PLAYING'
1718
+ | 'CITY'
1719
+ | 'COFFEE_SHOP'
1720
+ | 'DRIVING'
1721
+ | 'OFFICE'
1722
+ | 'THUNDERSTORM';
1723
+
1724
+ /**
1725
+ * Base emotional state of the persona
1726
+ */
1727
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
1728
+
1729
+ /**
1730
+ * How the persona confirms information
1731
+ */
1732
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
1733
+
1734
+ /**
1735
+ * Creation timestamp
1736
+ */
1737
+ createdAt: string;
1738
+
1739
+ /**
1740
+ * Gender of the persona
1741
+ */
1742
+ gender: 'MALE' | 'FEMALE';
1743
+
1744
+ /**
1745
+ * Whether the persona uses filler words like "um" and "uh"
1746
+ */
1747
+ hasDisfluencies: boolean;
1748
+
1749
+ /**
1750
+ * Maximum number of idle messages the persona will send before giving up
1751
+ */
1752
+ idleMessageMaxSpokenCount: number;
1753
+
1754
+ /**
1755
+ * Whether the idle message counter resets when the agent speaks
1756
+ */
1757
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
1758
+
1759
+ /**
1760
+ * Messages the persona will say when the agent goes silent during a call. null =
1761
+ * "Automatic": language-appropriate defaults are used at call time.
1762
+ */
1763
+ idleMessages: Array<string> | null;
1764
+
1765
+ /**
1766
+ * Seconds of silence before the persona sends an idle message
1767
+ */
1768
+ idleTimeoutSeconds: number;
1769
+
1770
+ /**
1771
+ * How clearly the persona expresses their intentions
1772
+ */
1773
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
1774
+
1775
+ /**
1776
+ * Primary language ISO 639-1 code for the persona
1777
+ */
1778
+ language:
1779
+ | 'EN'
1780
+ | 'ES'
1781
+ | 'DE'
1782
+ | 'HI'
1783
+ | 'FR'
1784
+ | 'NL'
1785
+ | 'AR'
1786
+ | 'EL'
1787
+ | 'IT'
1788
+ | 'ID'
1789
+ | 'TH'
1790
+ | 'JA'
1791
+ | 'TL'
1792
+ | 'MS'
1793
+ | 'ZH'
1794
+ | 'TR'
1795
+ | 'PT'
1796
+ | 'HE';
1797
+
1798
+ /**
1799
+ * How reliable the persona's memory is
1800
+ */
1801
+ memoryReliability: 'HIGH' | 'LOW';
1802
+
1803
+ /**
1804
+ * The name the agent will identify as during conversations
1805
+ */
1806
+ name: string;
1807
+
1808
+ /**
1809
+ * Additional custom properties about the persona
1810
+ */
1811
+ properties: { [key: string]: unknown };
1812
+
1813
+ /**
1814
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
1815
+ * NORMAL, RELAXED)
1816
+ */
1817
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
1818
+
1819
+ /**
1820
+ * Speech clarity of the persona
1821
+ */
1822
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
1823
+
1824
+ /**
1825
+ * Speech pace of the persona
1826
+ */
1827
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
1828
+
1829
+ /**
1830
+ * Languages the persona can understand. Multilingual combinations are limited by
1831
+ * multilingual speech recognition support.
1832
+ */
1833
+ understoodLanguages: Array<
1834
+ | 'EN'
1835
+ | 'ES'
1836
+ | 'DE'
1837
+ | 'HI'
1838
+ | 'FR'
1839
+ | 'NL'
1840
+ | 'AR'
1841
+ | 'EL'
1842
+ | 'IT'
1843
+ | 'ID'
1844
+ | 'TH'
1845
+ | 'JA'
1846
+ | 'TL'
1847
+ | 'MS'
1848
+ | 'ZH'
1849
+ | 'TR'
1850
+ | 'PT'
1851
+ | 'HE'
1852
+ >;
1853
+
1854
+ /**
1855
+ * Last update timestamp
1856
+ */
1857
+ updatedAt: string;
1858
+
1859
+ /**
1860
+ * Background story and behavioral patterns for the persona
1861
+ */
1862
+ backstoryPrompt?: string | null;
1863
+
1864
+ /**
1865
+ * Human-readable description of the persona
1866
+ */
1867
+ description?: string | null;
1868
+
1869
+ /**
1870
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
1871
+ */
1872
+ secondaryLanguage?: 'EN' | null;
1873
+ }
1874
+ }
1875
+ }
1876
+
1877
+ export interface CustomerFlowEdgeCasePromoteResponse {
1878
+ /**
1879
+ * One way of running a customer flow.
1880
+ */
1881
+ data:
1882
+ | CustomerFlowEdgeCasePromoteResponse.ScriptedFlowVariant
1883
+ | CustomerFlowEdgeCasePromoteResponse.ImprovFlowVariant
1884
+ | CustomerFlowEdgeCasePromoteResponse.VoicemailFlowVariant;
1885
+ }
1886
+
1887
+ export namespace CustomerFlowEdgeCasePromoteResponse {
1888
+ /**
1889
+ * One path through a scripted flow. The path engine owns which paths exist, so
1890
+ * editing the graph is what creates and removes these.
1891
+ */
1892
+ export interface ScriptedFlowVariant {
1893
+ id: string;
1894
+
1895
+ /**
1896
+ * Graded on top of the flow's own expectations, for this variant only.
1897
+ */
1898
+ additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
1899
+
1900
+ /**
1901
+ * Creation timestamp in ISO 8601 format
1902
+ */
1903
+ createdAt: string;
1904
+
1905
+ /**
1906
+ * A simulation environment: the ambient conditions a customer flow variant runs
1907
+ * under. The list includes both your own and the ones Roark curates for every
1908
+ * project.
1909
+ */
1910
+ environment: ScriptedFlowVariant.Environment | null;
1911
+
1912
+ isGenerated: boolean;
1913
+
1914
+ /**
1915
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1916
+ */
1917
+ personaOverride: ScriptedFlowVariant.PersonaOverride | null;
1918
+
1919
+ precededByCustomerFlowId: string | null;
1920
+
1921
+ precededByCustomerFlowVariantId: string | null;
1922
+
1923
+ /**
1924
+ * The one path through the graph this variant runs, in order. Linear by
1925
+ * construction, so these steps never nest.
1926
+ */
1927
+ steps: Array<CustomerFlowAPI.FlowStep>;
1928
+
1929
+ title: string;
1930
+
1931
+ type: 'SCRIPTED';
1932
+
1933
+ /**
1934
+ * Last update timestamp in ISO 8601 format
1935
+ */
1936
+ updatedAt: string;
1937
+ }
1938
+
1939
+ export namespace ScriptedFlowVariant {
1940
+ /**
1941
+ * One thing the agent under test is graded against.
1942
+ */
1943
+ export interface AdditionalExpectation {
1944
+ id: string;
1945
+
1946
+ /**
1947
+ * What the agent under test is graded against.
1948
+ */
1949
+ prompt: string;
1950
+ }
1951
+
1952
+ /**
1953
+ * A simulation environment: the ambient conditions a customer flow variant runs
1954
+ * under. The list includes both your own and the ones Roark curates for every
1955
+ * project.
1956
+ */
1957
+ export interface Environment {
1958
+ id: string;
1959
+
1960
+ backgroundNoise:
1961
+ | 'NONE'
1962
+ | 'AIRPORT'
1963
+ | 'CHILDREN_PLAYING'
1964
+ | 'CITY'
1965
+ | 'COFFEE_SHOP'
1966
+ | 'DRIVING'
1967
+ | 'OFFICE'
1968
+ | 'THUNDERSTORM';
1969
+
1970
+ /**
1971
+ * Creation timestamp in ISO 8601 format
1972
+ */
1973
+ createdAt: string;
1974
+
1975
+ name: string;
1976
+
1977
+ /**
1978
+ * Last update timestamp in ISO 8601 format
1979
+ */
1980
+ updatedAt: string;
1981
+
1982
+ description?: string | null;
1983
+ }
1984
+
1985
+ /**
1986
+ * The persona this runs as instead of the happy path's. Null means it inherits.
1987
+ */
1988
+ export interface PersonaOverride {
1989
+ /**
1990
+ * Unique identifier of the persona
1991
+ */
1992
+ id: string;
1993
+
1994
+ /**
1995
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
1996
+ * optional variants
1997
+ */
1998
+ accent:
1999
+ | 'US'
2000
+ | 'US_X_SOUTH'
2001
+ | 'GB'
2002
+ | 'ES'
2003
+ | 'DE'
2004
+ | 'IN'
2005
+ | 'FR'
2006
+ | 'NL'
2007
+ | 'SA'
2008
+ | 'GR'
2009
+ | 'AU'
2010
+ | 'IT'
2011
+ | 'ID'
2012
+ | 'TH'
2013
+ | 'JP'
2014
+ | 'NZ'
2015
+ | 'PH'
2016
+ | 'SG'
2017
+ | 'MY'
2018
+ | 'HK'
2019
+ | 'TR'
2020
+ | 'PT'
2021
+ | 'IL';
2022
+
2023
+ /**
2024
+ * Background noise setting
2025
+ */
2026
+ backgroundNoise:
2027
+ | 'NONE'
2028
+ | 'AIRPORT'
2029
+ | 'CHILDREN_PLAYING'
2030
+ | 'CITY'
2031
+ | 'COFFEE_SHOP'
2032
+ | 'DRIVING'
2033
+ | 'OFFICE'
2034
+ | 'THUNDERSTORM';
2035
+
2036
+ /**
2037
+ * Base emotional state of the persona
2038
+ */
2039
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
2040
+
2041
+ /**
2042
+ * How the persona confirms information
2043
+ */
2044
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
2045
+
2046
+ /**
2047
+ * Creation timestamp
2048
+ */
2049
+ createdAt: string;
2050
+
2051
+ /**
2052
+ * Gender of the persona
2053
+ */
2054
+ gender: 'MALE' | 'FEMALE';
2055
+
2056
+ /**
2057
+ * Whether the persona uses filler words like "um" and "uh"
2058
+ */
2059
+ hasDisfluencies: boolean;
2060
+
2061
+ /**
2062
+ * Maximum number of idle messages the persona will send before giving up
2063
+ */
2064
+ idleMessageMaxSpokenCount: number;
2065
+
2066
+ /**
2067
+ * Whether the idle message counter resets when the agent speaks
2068
+ */
2069
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
2070
+
2071
+ /**
2072
+ * Messages the persona will say when the agent goes silent during a call. null =
2073
+ * "Automatic": language-appropriate defaults are used at call time.
2074
+ */
2075
+ idleMessages: Array<string> | null;
2076
+
2077
+ /**
2078
+ * Seconds of silence before the persona sends an idle message
2079
+ */
2080
+ idleTimeoutSeconds: number;
2081
+
2082
+ /**
2083
+ * How clearly the persona expresses their intentions
2084
+ */
2085
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
2086
+
2087
+ /**
2088
+ * Primary language ISO 639-1 code for the persona
2089
+ */
2090
+ language:
2091
+ | 'EN'
2092
+ | 'ES'
2093
+ | 'DE'
2094
+ | 'HI'
2095
+ | 'FR'
2096
+ | 'NL'
2097
+ | 'AR'
2098
+ | 'EL'
2099
+ | 'IT'
2100
+ | 'ID'
2101
+ | 'TH'
2102
+ | 'JA'
2103
+ | 'TL'
2104
+ | 'MS'
2105
+ | 'ZH'
2106
+ | 'TR'
2107
+ | 'PT'
2108
+ | 'HE';
2109
+
2110
+ /**
2111
+ * How reliable the persona's memory is
2112
+ */
2113
+ memoryReliability: 'HIGH' | 'LOW';
2114
+
2115
+ /**
2116
+ * The name the agent will identify as during conversations
2117
+ */
2118
+ name: string;
2119
+
2120
+ /**
2121
+ * Additional custom properties about the persona
2122
+ */
2123
+ properties: { [key: string]: unknown };
2124
+
2125
+ /**
2126
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
2127
+ * NORMAL, RELAXED)
2128
+ */
2129
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
2130
+
2131
+ /**
2132
+ * Speech clarity of the persona
2133
+ */
2134
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
2135
+
2136
+ /**
2137
+ * Speech pace of the persona
2138
+ */
2139
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
2140
+
2141
+ /**
2142
+ * Languages the persona can understand. Multilingual combinations are limited by
2143
+ * multilingual speech recognition support.
2144
+ */
2145
+ understoodLanguages: Array<
2146
+ | 'EN'
2147
+ | 'ES'
2148
+ | 'DE'
2149
+ | 'HI'
2150
+ | 'FR'
2151
+ | 'NL'
2152
+ | 'AR'
2153
+ | 'EL'
2154
+ | 'IT'
2155
+ | 'ID'
2156
+ | 'TH'
2157
+ | 'JA'
2158
+ | 'TL'
2159
+ | 'MS'
2160
+ | 'ZH'
2161
+ | 'TR'
2162
+ | 'PT'
2163
+ | 'HE'
2164
+ >;
2165
+
2166
+ /**
2167
+ * Last update timestamp
2168
+ */
2169
+ updatedAt: string;
2170
+
2171
+ /**
2172
+ * Background story and behavioral patterns for the persona
2173
+ */
2174
+ backstoryPrompt?: string | null;
2175
+
2176
+ /**
2177
+ * Human-readable description of the persona
2178
+ */
2179
+ description?: string | null;
2180
+
2181
+ /**
2182
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
2183
+ */
2184
+ secondaryLanguage?: 'EN' | null;
2185
+ }
2186
+ }
2187
+
2188
+ /**
2189
+ * One brief to run an improv flow with.
2190
+ */
2191
+ export interface ImprovFlowVariant {
2192
+ id: string;
2193
+
2194
+ /**
2195
+ * Graded on top of the flow's own expectations, for this variant only.
2196
+ */
2197
+ additionalExpectations: Array<ImprovFlowVariant.AdditionalExpectation>;
2198
+
2199
+ /**
2200
+ * Creation timestamp in ISO 8601 format
2201
+ */
2202
+ createdAt: string;
2203
+
2204
+ /**
2205
+ * A simulation environment: the ambient conditions a customer flow variant runs
2206
+ * under. The list includes both your own and the ones Roark curates for every
2207
+ * project.
2208
+ */
2209
+ environment: ImprovFlowVariant.Environment | null;
2210
+
2211
+ isGenerated: boolean;
2212
+
2213
+ /**
2214
+ * The persona this runs as instead of the happy path's. Null means it inherits.
2215
+ */
2216
+ personaOverride: ImprovFlowVariant.PersonaOverride | null;
2217
+
2218
+ precededByCustomerFlowId: string | null;
2219
+
2220
+ precededByCustomerFlowVariantId: string | null;
2221
+
2222
+ title: string;
2223
+
2224
+ type: 'IMPROV';
2225
+
2226
+ /**
2227
+ * Last update timestamp in ISO 8601 format
2228
+ */
2229
+ updatedAt: string;
2230
+
2231
+ /**
2232
+ * The brief the simulated customer improvises from.
2233
+ */
2234
+ prompt?: string | null;
2235
+ }
2236
+
2237
+ export namespace ImprovFlowVariant {
2238
+ /**
2239
+ * One thing the agent under test is graded against.
2240
+ */
2241
+ export interface AdditionalExpectation {
2242
+ id: string;
2243
+
2244
+ /**
2245
+ * What the agent under test is graded against.
2246
+ */
2247
+ prompt: string;
2248
+ }
2249
+
2250
+ /**
2251
+ * A simulation environment: the ambient conditions a customer flow variant runs
2252
+ * under. The list includes both your own and the ones Roark curates for every
2253
+ * project.
2254
+ */
2255
+ export interface Environment {
2256
+ id: string;
2257
+
2258
+ backgroundNoise:
2259
+ | 'NONE'
2260
+ | 'AIRPORT'
2261
+ | 'CHILDREN_PLAYING'
2262
+ | 'CITY'
2263
+ | 'COFFEE_SHOP'
2264
+ | 'DRIVING'
2265
+ | 'OFFICE'
2266
+ | 'THUNDERSTORM';
2267
+
2268
+ /**
2269
+ * Creation timestamp in ISO 8601 format
2270
+ */
2271
+ createdAt: string;
2272
+
2273
+ name: string;
2274
+
2275
+ /**
2276
+ * Last update timestamp in ISO 8601 format
2277
+ */
2278
+ updatedAt: string;
2279
+
2280
+ description?: string | null;
2281
+ }
2282
+
2283
+ /**
2284
+ * The persona this runs as instead of the happy path's. Null means it inherits.
2285
+ */
2286
+ export interface PersonaOverride {
2287
+ /**
2288
+ * Unique identifier of the persona
2289
+ */
2290
+ id: string;
2291
+
2292
+ /**
2293
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
2294
+ * optional variants
2295
+ */
2296
+ accent:
2297
+ | 'US'
2298
+ | 'US_X_SOUTH'
2299
+ | 'GB'
2300
+ | 'ES'
2301
+ | 'DE'
2302
+ | 'IN'
2303
+ | 'FR'
2304
+ | 'NL'
2305
+ | 'SA'
2306
+ | 'GR'
2307
+ | 'AU'
2308
+ | 'IT'
2309
+ | 'ID'
2310
+ | 'TH'
2311
+ | 'JP'
2312
+ | 'NZ'
2313
+ | 'PH'
2314
+ | 'SG'
2315
+ | 'MY'
2316
+ | 'HK'
2317
+ | 'TR'
2318
+ | 'PT'
2319
+ | 'IL';
2320
+
2321
+ /**
2322
+ * Background noise setting
2323
+ */
2324
+ backgroundNoise:
2325
+ | 'NONE'
2326
+ | 'AIRPORT'
2327
+ | 'CHILDREN_PLAYING'
2328
+ | 'CITY'
2329
+ | 'COFFEE_SHOP'
2330
+ | 'DRIVING'
2331
+ | 'OFFICE'
2332
+ | 'THUNDERSTORM';
2333
+
2334
+ /**
2335
+ * Base emotional state of the persona
2336
+ */
2337
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
2338
+
2339
+ /**
2340
+ * How the persona confirms information
2341
+ */
2342
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
2343
+
2344
+ /**
2345
+ * Creation timestamp
2346
+ */
2347
+ createdAt: string;
2348
+
2349
+ /**
2350
+ * Gender of the persona
2351
+ */
2352
+ gender: 'MALE' | 'FEMALE';
2353
+
2354
+ /**
2355
+ * Whether the persona uses filler words like "um" and "uh"
2356
+ */
2357
+ hasDisfluencies: boolean;
2358
+
2359
+ /**
2360
+ * Maximum number of idle messages the persona will send before giving up
2361
+ */
2362
+ idleMessageMaxSpokenCount: number;
2363
+
2364
+ /**
2365
+ * Whether the idle message counter resets when the agent speaks
2366
+ */
2367
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
2368
+
2369
+ /**
2370
+ * Messages the persona will say when the agent goes silent during a call. null =
2371
+ * "Automatic": language-appropriate defaults are used at call time.
2372
+ */
2373
+ idleMessages: Array<string> | null;
2374
+
2375
+ /**
2376
+ * Seconds of silence before the persona sends an idle message
2377
+ */
2378
+ idleTimeoutSeconds: number;
2379
+
2380
+ /**
2381
+ * How clearly the persona expresses their intentions
2382
+ */
2383
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
2384
+
2385
+ /**
2386
+ * Primary language ISO 639-1 code for the persona
2387
+ */
2388
+ language:
2389
+ | 'EN'
2390
+ | 'ES'
2391
+ | 'DE'
2392
+ | 'HI'
2393
+ | 'FR'
2394
+ | 'NL'
2395
+ | 'AR'
2396
+ | 'EL'
2397
+ | 'IT'
2398
+ | 'ID'
2399
+ | 'TH'
2400
+ | 'JA'
2401
+ | 'TL'
2402
+ | 'MS'
2403
+ | 'ZH'
2404
+ | 'TR'
2405
+ | 'PT'
2406
+ | 'HE';
2407
+
2408
+ /**
2409
+ * How reliable the persona's memory is
2410
+ */
2411
+ memoryReliability: 'HIGH' | 'LOW';
2412
+
2413
+ /**
2414
+ * The name the agent will identify as during conversations
2415
+ */
2416
+ name: string;
2417
+
2418
+ /**
2419
+ * Additional custom properties about the persona
2420
+ */
2421
+ properties: { [key: string]: unknown };
2422
+
2423
+ /**
2424
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
2425
+ * NORMAL, RELAXED)
2426
+ */
2427
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
2428
+
2429
+ /**
2430
+ * Speech clarity of the persona
2431
+ */
2432
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
2433
+
2434
+ /**
2435
+ * Speech pace of the persona
2436
+ */
2437
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
2438
+
2439
+ /**
2440
+ * Languages the persona can understand. Multilingual combinations are limited by
2441
+ * multilingual speech recognition support.
2442
+ */
2443
+ understoodLanguages: Array<
2444
+ | 'EN'
2445
+ | 'ES'
2446
+ | 'DE'
2447
+ | 'HI'
2448
+ | 'FR'
2449
+ | 'NL'
2450
+ | 'AR'
2451
+ | 'EL'
2452
+ | 'IT'
2453
+ | 'ID'
2454
+ | 'TH'
2455
+ | 'JA'
2456
+ | 'TL'
2457
+ | 'MS'
2458
+ | 'ZH'
2459
+ | 'TR'
2460
+ | 'PT'
2461
+ | 'HE'
2462
+ >;
2463
+
2464
+ /**
2465
+ * Last update timestamp
2466
+ */
2467
+ updatedAt: string;
2468
+
2469
+ /**
2470
+ * Background story and behavioral patterns for the persona
2471
+ */
2472
+ backstoryPrompt?: string | null;
2473
+
2474
+ /**
2475
+ * Human-readable description of the persona
2476
+ */
2477
+ description?: string | null;
2478
+
2479
+ /**
2480
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
2481
+ */
2482
+ secondaryLanguage?: 'EN' | null;
2483
+ }
2484
+ }
2485
+
2486
+ /**
2487
+ * One voicemail greeting.
2488
+ */
2489
+ export interface VoicemailFlowVariant {
2490
+ id: string;
2491
+
2492
+ /**
2493
+ * Graded on top of the flow's own expectations, for this variant only.
2494
+ */
2495
+ additionalExpectations: Array<VoicemailFlowVariant.AdditionalExpectation>;
2496
+
2497
+ /**
2498
+ * Creation timestamp in ISO 8601 format
2499
+ */
2500
+ createdAt: string;
2501
+
2502
+ /**
2503
+ * A simulation environment: the ambient conditions a customer flow variant runs
2504
+ * under. The list includes both your own and the ones Roark curates for every
2505
+ * project.
2506
+ */
2507
+ environment: VoicemailFlowVariant.Environment | null;
2508
+
2509
+ isGenerated: boolean;
2510
+
2511
+ /**
2512
+ * The persona this runs as instead of the happy path's. Null means it inherits.
2513
+ */
2514
+ personaOverride: VoicemailFlowVariant.PersonaOverride | null;
2515
+
2516
+ precededByCustomerFlowId: string | null;
2517
+
2518
+ precededByCustomerFlowVariantId: string | null;
2519
+
2520
+ title: string;
2521
+
2522
+ type: 'VOICEMAIL';
2523
+
2524
+ /**
2525
+ * Last update timestamp in ISO 8601 format
2526
+ */
2527
+ updatedAt: string;
2528
+ }
2529
+
2530
+ export namespace VoicemailFlowVariant {
2531
+ /**
2532
+ * One thing the agent under test is graded against.
2533
+ */
2534
+ export interface AdditionalExpectation {
2535
+ id: string;
2536
+
2537
+ /**
2538
+ * What the agent under test is graded against.
2539
+ */
2540
+ prompt: string;
2541
+ }
2542
+
2543
+ /**
2544
+ * A simulation environment: the ambient conditions a customer flow variant runs
2545
+ * under. The list includes both your own and the ones Roark curates for every
2546
+ * project.
2547
+ */
2548
+ export interface Environment {
2549
+ id: string;
2550
+
2551
+ backgroundNoise:
2552
+ | 'NONE'
2553
+ | 'AIRPORT'
2554
+ | 'CHILDREN_PLAYING'
2555
+ | 'CITY'
2556
+ | 'COFFEE_SHOP'
2557
+ | 'DRIVING'
2558
+ | 'OFFICE'
2559
+ | 'THUNDERSTORM';
2560
+
2561
+ /**
2562
+ * Creation timestamp in ISO 8601 format
2563
+ */
2564
+ createdAt: string;
2565
+
2566
+ name: string;
2567
+
2568
+ /**
2569
+ * Last update timestamp in ISO 8601 format
2570
+ */
2571
+ updatedAt: string;
2572
+
2573
+ description?: string | null;
2574
+ }
2575
+
2576
+ /**
2577
+ * The persona this runs as instead of the happy path's. Null means it inherits.
2578
+ */
2579
+ export interface PersonaOverride {
2580
+ /**
2581
+ * Unique identifier of the persona
2582
+ */
2583
+ id: string;
2584
+
2585
+ /**
2586
+ * Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
2587
+ * optional variants
2588
+ */
2589
+ accent:
2590
+ | 'US'
2591
+ | 'US_X_SOUTH'
2592
+ | 'GB'
2593
+ | 'ES'
2594
+ | 'DE'
2595
+ | 'IN'
2596
+ | 'FR'
2597
+ | 'NL'
2598
+ | 'SA'
2599
+ | 'GR'
2600
+ | 'AU'
2601
+ | 'IT'
2602
+ | 'ID'
2603
+ | 'TH'
2604
+ | 'JP'
2605
+ | 'NZ'
2606
+ | 'PH'
2607
+ | 'SG'
2608
+ | 'MY'
2609
+ | 'HK'
2610
+ | 'TR'
2611
+ | 'PT'
2612
+ | 'IL';
2613
+
2614
+ /**
2615
+ * Background noise setting
2616
+ */
2617
+ backgroundNoise:
2618
+ | 'NONE'
2619
+ | 'AIRPORT'
2620
+ | 'CHILDREN_PLAYING'
2621
+ | 'CITY'
2622
+ | 'COFFEE_SHOP'
2623
+ | 'DRIVING'
2624
+ | 'OFFICE'
2625
+ | 'THUNDERSTORM';
2626
+
2627
+ /**
2628
+ * Base emotional state of the persona
2629
+ */
2630
+ baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED';
2631
+
2632
+ /**
2633
+ * How the persona confirms information
2634
+ */
2635
+ confirmationStyle: 'EXPLICIT' | 'VAGUE';
2636
+
2637
+ /**
2638
+ * Creation timestamp
2639
+ */
2640
+ createdAt: string;
2641
+
2642
+ /**
2643
+ * Gender of the persona
2644
+ */
2645
+ gender: 'MALE' | 'FEMALE';
2646
+
2647
+ /**
2648
+ * Whether the persona uses filler words like "um" and "uh"
2649
+ */
2650
+ hasDisfluencies: boolean;
2651
+
2652
+ /**
2653
+ * Maximum number of idle messages the persona will send before giving up
2654
+ */
2655
+ idleMessageMaxSpokenCount: number;
2656
+
2657
+ /**
2658
+ * Whether the idle message counter resets when the agent speaks
2659
+ */
2660
+ idleMessageResetCountOnUserSpeechEnabled: boolean;
2661
+
2662
+ /**
2663
+ * Messages the persona will say when the agent goes silent during a call. null =
2664
+ * "Automatic": language-appropriate defaults are used at call time.
2665
+ */
2666
+ idleMessages: Array<string> | null;
2667
+
2668
+ /**
2669
+ * Seconds of silence before the persona sends an idle message
2670
+ */
2671
+ idleTimeoutSeconds: number;
2672
+
2673
+ /**
2674
+ * How clearly the persona expresses their intentions
2675
+ */
2676
+ intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
2677
+
2678
+ /**
2679
+ * Primary language ISO 639-1 code for the persona
2680
+ */
2681
+ language:
2682
+ | 'EN'
2683
+ | 'ES'
2684
+ | 'DE'
2685
+ | 'HI'
2686
+ | 'FR'
2687
+ | 'NL'
2688
+ | 'AR'
2689
+ | 'EL'
2690
+ | 'IT'
2691
+ | 'ID'
2692
+ | 'TH'
2693
+ | 'JA'
2694
+ | 'TL'
2695
+ | 'MS'
2696
+ | 'ZH'
2697
+ | 'TR'
2698
+ | 'PT'
2699
+ | 'HE';
2700
+
2701
+ /**
2702
+ * How reliable the persona's memory is
2703
+ */
2704
+ memoryReliability: 'HIGH' | 'LOW';
2705
+
2706
+ /**
2707
+ * The name the agent will identify as during conversations
2708
+ */
2709
+ name: string;
2710
+
2711
+ /**
2712
+ * Additional custom properties about the persona
2713
+ */
2714
+ properties: { [key: string]: unknown };
2715
+
2716
+ /**
2717
+ * Controls how quickly the persona responds to pauses in conversation (QUICK,
2718
+ * NORMAL, RELAXED)
2719
+ */
2720
+ responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
2721
+
2722
+ /**
2723
+ * Speech clarity of the persona
2724
+ */
2725
+ speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
2726
+
2727
+ /**
2728
+ * Speech pace of the persona
2729
+ */
2730
+ speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
2731
+
2732
+ /**
2733
+ * Languages the persona can understand. Multilingual combinations are limited by
2734
+ * multilingual speech recognition support.
2735
+ */
2736
+ understoodLanguages: Array<
2737
+ | 'EN'
2738
+ | 'ES'
2739
+ | 'DE'
2740
+ | 'HI'
2741
+ | 'FR'
2742
+ | 'NL'
2743
+ | 'AR'
2744
+ | 'EL'
2745
+ | 'IT'
2746
+ | 'ID'
2747
+ | 'TH'
2748
+ | 'JA'
2749
+ | 'TL'
2750
+ | 'MS'
2751
+ | 'ZH'
2752
+ | 'TR'
2753
+ | 'PT'
2754
+ | 'HE'
2755
+ >;
2756
+
2757
+ /**
2758
+ * Last update timestamp
2759
+ */
2760
+ updatedAt: string;
2761
+
2762
+ /**
2763
+ * Background story and behavioral patterns for the persona
2764
+ */
2765
+ backstoryPrompt?: string | null;
2766
+
2767
+ /**
2768
+ * Human-readable description of the persona
2769
+ */
2770
+ description?: string | null;
2771
+
2772
+ /**
2773
+ * Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
2774
+ */
2775
+ secondaryLanguage?: 'EN' | null;
2776
+ }
2777
+ }
2778
+ }
2779
+
2780
+ export interface CustomerFlowEdgeCaseRemoveResponse {
2781
+ data: CustomerFlowEdgeCaseRemoveResponse.Data;
2782
+ }
2783
+
2784
+ export namespace CustomerFlowEdgeCaseRemoveResponse {
2785
+ export interface Data {
2786
+ /**
2787
+ * Whether the variant was deleted
2788
+ */
2789
+ deleted: boolean;
2790
+ }
2791
+ }
2792
+
2793
+ export interface CustomerFlowEdgeCaseUpdateParams {
2794
+ /**
2795
+ * Path param
2796
+ */
2797
+ flowId: string;
2798
+
2799
+ /**
2800
+ * Body param: Replaces the expectations that apply to this variant on top of the
2801
+ * flow's. Omit to leave them alone, send [] to clear. Improv flows only: a
2802
+ * scripted variant's expectations come from the agent turns on its path and are
2803
+ * rewritten on the next graph edit.
2804
+ */
2805
+ additionalExpectations?: Array<CustomerFlowEdgeCaseUpdateParams.AdditionalExpectation>;
2806
+
2807
+ /**
2808
+ * Body param
2809
+ */
2810
+ environmentId?: string | null;
2811
+
2812
+ /**
2813
+ * Body param: The persona this runs as. Null on an edge case inherits the happy
2814
+ * path's.
2815
+ */
2816
+ personaOverrideId?: string | null;
2817
+
2818
+ /**
2819
+ * Body param
2820
+ */
2821
+ precededByCustomerFlowId?: string | null;
2822
+
2823
+ /**
2824
+ * Body param
2825
+ */
2826
+ precededByCustomerFlowVariantId?: string | null;
2827
+
2828
+ /**
2829
+ * Body param
2830
+ */
2831
+ prompt?: string | null;
2832
+
2833
+ /**
2834
+ * Body param
2835
+ */
2836
+ title?: string;
2837
+ }
2838
+
2839
+ export namespace CustomerFlowEdgeCaseUpdateParams {
2840
+ export interface AdditionalExpectation {
2841
+ /**
2842
+ * What the agent under test is graded against.
2843
+ */
2844
+ prompt: string;
2845
+ }
2846
+ }
2847
+
2848
+ export interface CustomerFlowEdgeCaseAddParams {
2849
+ title: string;
2850
+
2851
+ environmentId?: string | null;
2852
+
2853
+ /**
2854
+ * The persona this runs as. Omit to inherit the happy path's.
2855
+ */
2856
+ personaOverrideId?: string | null;
2857
+
2858
+ precededByCustomerFlowId?: string | null;
2859
+
2860
+ precededByCustomerFlowVariantId?: string | null;
2861
+
2862
+ prompt?: string | null;
2863
+ }
2864
+
2865
+ export interface CustomerFlowEdgeCasePromoteParams {
2866
+ flowId: string;
2867
+ }
2868
+
2869
+ export interface CustomerFlowEdgeCaseRemoveParams {
2870
+ flowId: string;
2871
+ }
2872
+
2873
+ export declare namespace CustomerFlowEdgeCase {
2874
+ export {
2875
+ type CustomerFlowEdgeCaseUpdateResponse as CustomerFlowEdgeCaseUpdateResponse,
2876
+ type CustomerFlowEdgeCaseAddResponse as CustomerFlowEdgeCaseAddResponse,
2877
+ type CustomerFlowEdgeCasePromoteResponse as CustomerFlowEdgeCasePromoteResponse,
2878
+ type CustomerFlowEdgeCaseRemoveResponse as CustomerFlowEdgeCaseRemoveResponse,
2879
+ type CustomerFlowEdgeCaseUpdateParams as CustomerFlowEdgeCaseUpdateParams,
2880
+ type CustomerFlowEdgeCaseAddParams as CustomerFlowEdgeCaseAddParams,
2881
+ type CustomerFlowEdgeCasePromoteParams as CustomerFlowEdgeCasePromoteParams,
2882
+ type CustomerFlowEdgeCaseRemoveParams as CustomerFlowEdgeCaseRemoveParams,
2883
+ };
2884
+ }