@roarkanalytics/sdk 5.1.0 → 5.2.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.
- package/CHANGELOG.md +12 -0
- package/client.d.mts +2 -2
- package/client.d.mts.map +1 -1
- package/client.d.ts +2 -2
- package/client.d.ts.map +1 -1
- package/client.js.map +1 -1
- package/client.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/index.d.mts +1 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +1 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs.map +1 -1
- package/resources/simulation-run-plan-job.d.mts +1062 -43
- package/resources/simulation-run-plan-job.d.mts.map +1 -1
- package/resources/simulation-run-plan-job.d.ts +1062 -43
- package/resources/simulation-run-plan-job.d.ts.map +1 -1
- package/resources/simulation-run-plan-job.js +43 -0
- package/resources/simulation-run-plan-job.js.map +1 -1
- package/resources/simulation-run-plan-job.mjs +43 -0
- package/resources/simulation-run-plan-job.mjs.map +1 -1
- package/src/client.ts +8 -0
- package/src/resources/index.ts +4 -0
- package/src/resources/simulation-run-plan-job.ts +1482 -66
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -40,6 +40,32 @@ export class SimulationRunPlanJob extends APIResource {
|
|
|
40
40
|
return this._client.post(path`/v1/simulation/plan/job/${jobID}/cancel`, options);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Request the written debrief for a settled run: executive summary, failure themes
|
|
45
|
+
* and recommendations. Runs with graded calls get one automatically, so this is
|
|
46
|
+
* for regenerating one (`regenerate: true`) or retrying one that failed.
|
|
47
|
+
*
|
|
48
|
+
* Returns immediately. Generation takes a few minutes: poll GET
|
|
49
|
+
* /v1/simulation/plan/job/{jobId}/results until `debrief.status` is READY or
|
|
50
|
+
* FAILED. Without `regenerate`, a debrief that is ready or already being written
|
|
51
|
+
* is returned as-is.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* const response =
|
|
56
|
+
* await client.simulationRunPlanJob.createDebrief(
|
|
57
|
+
* '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
|
|
58
|
+
* );
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
createDebrief(
|
|
62
|
+
jobID: string,
|
|
63
|
+
body: SimulationRunPlanJobCreateDebriefParams | null | undefined = {},
|
|
64
|
+
options?: RequestOptions,
|
|
65
|
+
): APIPromise<SimulationRunPlanJobCreateDebriefResponse> {
|
|
66
|
+
return this._client.post(path`/v1/simulation/plan/job/${jobID}/debrief`, { body, ...options });
|
|
67
|
+
}
|
|
68
|
+
|
|
43
69
|
/**
|
|
44
70
|
* Retrieve details of a simulation plan job including all associated simulation
|
|
45
71
|
* jobs (calls)
|
|
@@ -55,6 +81,33 @@ export class SimulationRunPlanJob extends APIResource {
|
|
|
55
81
|
return this._client.get(path`/v1/simulation/plan/job/${jobID}`, options);
|
|
56
82
|
}
|
|
57
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Everything the run report shows, in one request: the summary and score, the
|
|
86
|
+
* pass/fail verdict, per-metric aggregates, every simulation with its check
|
|
87
|
+
* results, breakdowns by agent and persona, the comparison against the previous
|
|
88
|
+
* run (or `compareToJobId`), the sweep attribution, and the written debrief with
|
|
89
|
+
* its executive summary, failure themes and recommendations.
|
|
90
|
+
*
|
|
91
|
+
* Safe to call while the run is in progress: counts reflect what has landed so
|
|
92
|
+
* far. `verdict` and `sweepAttribution` stay null until the run ends. The debrief
|
|
93
|
+
* is generated automatically a few minutes after a run with graded calls settles;
|
|
94
|
+
* poll until `debrief.status` is READY, or request one with POST
|
|
95
|
+
* /v1/simulation/plan/job/{jobId}/debrief.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const response =
|
|
100
|
+
* await client.simulationRunPlanJob.getResults('jobId');
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
getResults(
|
|
104
|
+
jobID: string,
|
|
105
|
+
query: SimulationRunPlanJobGetResultsParams | null | undefined = {},
|
|
106
|
+
options?: RequestOptions,
|
|
107
|
+
): APIPromise<SimulationRunPlanJobGetResultsResponse> {
|
|
108
|
+
return this._client.get(path`/v1/simulation/plan/job/${jobID}/results`, { query, ...options });
|
|
109
|
+
}
|
|
110
|
+
|
|
58
111
|
/**
|
|
59
112
|
* Deprecated: use POST /v1/simulation/run, which does the same thing and can also
|
|
60
113
|
* take the plan configuration inline, so a one-off run does not have to create a
|
|
@@ -200,6 +253,202 @@ export namespace SimulationRunPlanJobCancelResponse {
|
|
|
200
253
|
}
|
|
201
254
|
}
|
|
202
255
|
|
|
256
|
+
export interface SimulationRunPlanJobCreateDebriefResponse {
|
|
257
|
+
/**
|
|
258
|
+
* The run’s written debrief: executive summary, failure themes and
|
|
259
|
+
* recommendations. Generated automatically when a run with graded calls settles.
|
|
260
|
+
*/
|
|
261
|
+
data: SimulationRunPlanJobCreateDebriefResponse.Data;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export namespace SimulationRunPlanJobCreateDebriefResponse {
|
|
265
|
+
/**
|
|
266
|
+
* The run’s written debrief: executive summary, failure themes and
|
|
267
|
+
* recommendations. Generated automatically when a run with graded calls settles.
|
|
268
|
+
*/
|
|
269
|
+
export interface Data {
|
|
270
|
+
completedAt: string | null;
|
|
271
|
+
|
|
272
|
+
createdAt: string;
|
|
273
|
+
|
|
274
|
+
debriefId: string;
|
|
275
|
+
|
|
276
|
+
errorMessage: string | null;
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Present once READY.
|
|
280
|
+
*/
|
|
281
|
+
report: Data.Report | null;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* PENDING and GENERATING while it is written (usually a few minutes), then READY
|
|
285
|
+
* or FAILED.
|
|
286
|
+
*/
|
|
287
|
+
status: 'PENDING' | 'GENERATING' | 'READY' | 'FAILED';
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export namespace Data {
|
|
291
|
+
/**
|
|
292
|
+
* Present once READY.
|
|
293
|
+
*/
|
|
294
|
+
export interface Report {
|
|
295
|
+
executiveSummary: Report.ExecutiveSummary;
|
|
296
|
+
|
|
297
|
+
generatedAt: string;
|
|
298
|
+
|
|
299
|
+
keyFindings: Array<Report.KeyFinding>;
|
|
300
|
+
|
|
301
|
+
recommendations: Array<Report.Recommendation>;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Failure themes, clustered across the run’s failing calls.
|
|
305
|
+
*/
|
|
306
|
+
themes: Array<Report.Theme>;
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* The checks against the previous run, as of generation.
|
|
310
|
+
*/
|
|
311
|
+
trend: Report.Trend | null;
|
|
312
|
+
|
|
313
|
+
verdict: 'PASSED' | 'THRESHOLD_FAILED';
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* One-paragraph verdict, e.g. "Not ready to promote. ..."
|
|
317
|
+
*/
|
|
318
|
+
verdictSummary: string;
|
|
319
|
+
|
|
320
|
+
wentWell: Array<Report.WentWell>;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export namespace Report {
|
|
324
|
+
export interface ExecutiveSummary {
|
|
325
|
+
paragraphs: Array<string>;
|
|
326
|
+
|
|
327
|
+
sections: Array<ExecutiveSummary.Section>;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
export namespace ExecutiveSummary {
|
|
331
|
+
export interface Section {
|
|
332
|
+
body: string;
|
|
333
|
+
|
|
334
|
+
heading: string | null;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
export interface KeyFinding {
|
|
339
|
+
body: string;
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* The calls the finding is about.
|
|
343
|
+
*/
|
|
344
|
+
callIds: Array<string>;
|
|
345
|
+
|
|
346
|
+
title: string;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
export interface Recommendation {
|
|
350
|
+
body: string;
|
|
351
|
+
|
|
352
|
+
channel:
|
|
353
|
+
| 'PROMPT'
|
|
354
|
+
| 'VOICE_CONFIG'
|
|
355
|
+
| 'STT'
|
|
356
|
+
| 'SPEECH_MODEL'
|
|
357
|
+
| 'LLM_MODEL'
|
|
358
|
+
| 'INFRA'
|
|
359
|
+
| 'EXTERNAL'
|
|
360
|
+
| null;
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* For a prompt fix: the text to replace.
|
|
364
|
+
*/
|
|
365
|
+
currentText: string | null;
|
|
366
|
+
|
|
367
|
+
order: number;
|
|
368
|
+
|
|
369
|
+
severity: 'HIGH' | 'MEDIUM' | 'LOW' | null;
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* For a prompt fix: the replacement.
|
|
373
|
+
*/
|
|
374
|
+
suggestedText: string | null;
|
|
375
|
+
|
|
376
|
+
themeSlugs: Array<string>;
|
|
377
|
+
|
|
378
|
+
title: string;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
export interface Theme {
|
|
382
|
+
affectedCallCount: number;
|
|
383
|
+
|
|
384
|
+
analysis: string;
|
|
385
|
+
|
|
386
|
+
callIds: Array<string>;
|
|
387
|
+
|
|
388
|
+
checkNames: Array<string>;
|
|
389
|
+
|
|
390
|
+
impact: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | null;
|
|
391
|
+
|
|
392
|
+
lifecycle: 'NEW' | 'PERSISTENT' | 'IMPROVING' | 'FIXED' | null;
|
|
393
|
+
|
|
394
|
+
prevalence: 'WIDESPREAD' | 'RECURRING' | 'ISOLATED' | null;
|
|
395
|
+
|
|
396
|
+
rootCauseChannel:
|
|
397
|
+
| 'PROMPT'
|
|
398
|
+
| 'VOICE_CONFIG'
|
|
399
|
+
| 'STT'
|
|
400
|
+
| 'SPEECH_MODEL'
|
|
401
|
+
| 'LLM_MODEL'
|
|
402
|
+
| 'INFRA'
|
|
403
|
+
| 'EXTERNAL'
|
|
404
|
+
| null;
|
|
405
|
+
|
|
406
|
+
severity: 'HIGH' | 'MEDIUM' | 'LOW';
|
|
407
|
+
|
|
408
|
+
slug: string;
|
|
409
|
+
|
|
410
|
+
title: string;
|
|
411
|
+
|
|
412
|
+
totalCallCount: number;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* The checks against the previous run, as of generation.
|
|
417
|
+
*/
|
|
418
|
+
export interface Trend {
|
|
419
|
+
baselineRunNumber: number | null;
|
|
420
|
+
|
|
421
|
+
baselineRunPlanJobId: string;
|
|
422
|
+
|
|
423
|
+
rows: Array<Trend.Row>;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
export namespace Trend {
|
|
427
|
+
export interface Row {
|
|
428
|
+
checkName: string;
|
|
429
|
+
|
|
430
|
+
currentPassRate: number | null;
|
|
431
|
+
|
|
432
|
+
lifecycle: 'NEW' | 'PERSISTENT' | 'IMPROVING' | 'FIXED' | null;
|
|
433
|
+
|
|
434
|
+
previousPassRate: number | null;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export interface WentWell {
|
|
439
|
+
body: string;
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* The calls the finding is about.
|
|
443
|
+
*/
|
|
444
|
+
callIds: Array<string>;
|
|
445
|
+
|
|
446
|
+
title: string;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
203
452
|
export interface SimulationRunPlanJobGetByIDResponse {
|
|
204
453
|
/**
|
|
205
454
|
* Simulation run plan job with all associated simulation jobs
|
|
@@ -1303,97 +1552,1260 @@ export namespace SimulationRunPlanJobGetByIDResponse {
|
|
|
1303
1552
|
}
|
|
1304
1553
|
}
|
|
1305
1554
|
|
|
1306
|
-
export interface
|
|
1555
|
+
export interface SimulationRunPlanJobGetResultsResponse {
|
|
1307
1556
|
/**
|
|
1308
|
-
*
|
|
1557
|
+
* Everything the run report shows, in one response.
|
|
1309
1558
|
*/
|
|
1310
|
-
data:
|
|
1559
|
+
data: SimulationRunPlanJobGetResultsResponse.Data;
|
|
1311
1560
|
}
|
|
1312
1561
|
|
|
1313
|
-
export namespace
|
|
1562
|
+
export namespace SimulationRunPlanJobGetResultsResponse {
|
|
1314
1563
|
/**
|
|
1315
|
-
*
|
|
1564
|
+
* Everything the run report shows, in one response.
|
|
1316
1565
|
*/
|
|
1317
1566
|
export interface Data {
|
|
1318
1567
|
/**
|
|
1319
|
-
*
|
|
1568
|
+
* The run’s simulations against its test cases. Differs from a plain job count
|
|
1569
|
+
* only when the plan retries simulations your agent never spoke on.
|
|
1320
1570
|
*/
|
|
1321
|
-
|
|
1571
|
+
attemptSummary: Data.AttemptSummary;
|
|
1572
|
+
|
|
1573
|
+
breakdowns: Data.Breakdowns;
|
|
1574
|
+
|
|
1575
|
+
calls: Array<Data.Call>;
|
|
1322
1576
|
|
|
1323
1577
|
/**
|
|
1324
|
-
*
|
|
1578
|
+
* Null when there is no earlier run of the plan to compare against.
|
|
1325
1579
|
*/
|
|
1326
|
-
|
|
1580
|
+
comparison: Data.Comparison | null;
|
|
1327
1581
|
|
|
1328
1582
|
/**
|
|
1329
|
-
*
|
|
1583
|
+
* The run’s written debrief: executive summary, failure themes and
|
|
1584
|
+
* recommendations. Generated automatically when a run with graded calls settles.
|
|
1330
1585
|
*/
|
|
1331
|
-
|
|
1586
|
+
debrief: Data.Debrief | null;
|
|
1332
1587
|
|
|
1333
1588
|
/**
|
|
1334
|
-
*
|
|
1589
|
+
* Checks first, then other metrics.
|
|
1335
1590
|
*/
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1591
|
+
metrics: Array<Data.Metric>;
|
|
1592
|
+
|
|
1593
|
+
run: Data.Run;
|
|
1594
|
+
|
|
1595
|
+
summary: Data.Summary;
|
|
1596
|
+
|
|
1597
|
+
/**
|
|
1598
|
+
* For a run that swept a property (accent, background noise, speech pace and so
|
|
1599
|
+
* on): which check failures the property caused.
|
|
1600
|
+
*
|
|
1601
|
+
* Each value is compared with every other value combined using a one-sided Fisher
|
|
1602
|
+
* exact test, and every comparison in the run is corrected together with
|
|
1603
|
+
* Benjamini-Hochberg. A value is only called worse when the difference is
|
|
1604
|
+
* statistically significant, so a value that happened to fail a few more
|
|
1605
|
+
* simulations by chance is not reported as a problem. Invalidated simulations and
|
|
1606
|
+
* simulations that failed on the Roark platform are left out.
|
|
1607
|
+
*/
|
|
1608
|
+
sweepAttribution: Data.SweepAttribution | null;
|
|
1609
|
+
|
|
1610
|
+
/**
|
|
1611
|
+
* Pass/fail verdict for the run, judged against the success criteria pinned on the
|
|
1612
|
+
* run plan when the run started.
|
|
1613
|
+
*/
|
|
1614
|
+
verdict: Data.Verdict | null;
|
|
1349
1615
|
}
|
|
1350
|
-
}
|
|
1351
1616
|
|
|
1352
|
-
export
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1617
|
+
export namespace Data {
|
|
1618
|
+
/**
|
|
1619
|
+
* The run’s simulations against its test cases. Differs from a plain job count
|
|
1620
|
+
* only when the plan retries simulations your agent never spoke on.
|
|
1621
|
+
*/
|
|
1622
|
+
export interface AttemptSummary {
|
|
1623
|
+
/**
|
|
1624
|
+
* Every simulation placed, retries included. Each is a separate, billed call.
|
|
1625
|
+
*/
|
|
1626
|
+
attemptCount: number;
|
|
1357
1627
|
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1628
|
+
/**
|
|
1629
|
+
* Simulations placed as a retry of one your agent never spoke on.
|
|
1630
|
+
*/
|
|
1631
|
+
retryCount: number;
|
|
1362
1632
|
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
labelName?: string;
|
|
1633
|
+
/**
|
|
1634
|
+
* Simulations your agent never spoke on, including the ones a retry replaced.
|
|
1635
|
+
*/
|
|
1636
|
+
silentAttemptCount: number;
|
|
1368
1637
|
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1638
|
+
/**
|
|
1639
|
+
* Test cases whose final attempt your agent still never spoke on. This is what the
|
|
1640
|
+
* `AGENT_NEVER_SPOKE` verdict failure counts.
|
|
1641
|
+
*/
|
|
1642
|
+
stillSilentTestCaseCount: number;
|
|
1373
1643
|
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1644
|
+
/**
|
|
1645
|
+
* Test cases in the run. Each one has a single final attempt that its result is
|
|
1646
|
+
* read from.
|
|
1647
|
+
*/
|
|
1648
|
+
testCaseCount: number;
|
|
1649
|
+
}
|
|
1378
1650
|
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1651
|
+
export interface Breakdowns {
|
|
1652
|
+
byAgent: Array<Breakdowns.ByAgent>;
|
|
1653
|
+
|
|
1654
|
+
byPersona: Array<Breakdowns.ByPersona>;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
export namespace Breakdowns {
|
|
1658
|
+
export interface ByAgent {
|
|
1659
|
+
/**
|
|
1660
|
+
* 0-100. Null when nothing was evaluated.
|
|
1661
|
+
*/
|
|
1662
|
+
callPassRate: number | null;
|
|
1663
|
+
|
|
1664
|
+
/**
|
|
1665
|
+
* Counted simulations in the group.
|
|
1666
|
+
*/
|
|
1667
|
+
calls: number;
|
|
1668
|
+
|
|
1669
|
+
evaluatedCalls: number;
|
|
1670
|
+
|
|
1671
|
+
/**
|
|
1672
|
+
* The agent or persona ID.
|
|
1673
|
+
*/
|
|
1674
|
+
key: string;
|
|
1675
|
+
|
|
1676
|
+
label: string;
|
|
1677
|
+
|
|
1678
|
+
passedCalls: number;
|
|
1679
|
+
|
|
1680
|
+
/**
|
|
1681
|
+
* The group’s own score. 0-100. Null when nothing was evaluated.
|
|
1682
|
+
*/
|
|
1683
|
+
score: number | null;
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
export interface ByPersona {
|
|
1687
|
+
/**
|
|
1688
|
+
* 0-100. Null when nothing was evaluated.
|
|
1689
|
+
*/
|
|
1690
|
+
callPassRate: number | null;
|
|
1691
|
+
|
|
1692
|
+
/**
|
|
1693
|
+
* Counted simulations in the group.
|
|
1694
|
+
*/
|
|
1695
|
+
calls: number;
|
|
1696
|
+
|
|
1697
|
+
evaluatedCalls: number;
|
|
1698
|
+
|
|
1699
|
+
/**
|
|
1700
|
+
* The agent or persona ID.
|
|
1701
|
+
*/
|
|
1702
|
+
key: string;
|
|
1703
|
+
|
|
1704
|
+
label: string;
|
|
1705
|
+
|
|
1706
|
+
passedCalls: number;
|
|
1707
|
+
|
|
1708
|
+
/**
|
|
1709
|
+
* The group’s own score. 0-100. Null when nothing was evaluated.
|
|
1710
|
+
*/
|
|
1711
|
+
score: number | null;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
export interface Call {
|
|
1716
|
+
agentName: string | null;
|
|
1717
|
+
|
|
1718
|
+
attemptNumber: number;
|
|
1719
|
+
|
|
1720
|
+
/**
|
|
1721
|
+
* Use with GET /v1/call/{callId} for the transcript, recording and every metric
|
|
1722
|
+
* value.
|
|
1723
|
+
*/
|
|
1724
|
+
callId: string | null;
|
|
1725
|
+
|
|
1726
|
+
checks: Array<Call.Check>;
|
|
1727
|
+
|
|
1728
|
+
/**
|
|
1729
|
+
* False for an invalidated simulation: listed, never scored.
|
|
1730
|
+
*/
|
|
1731
|
+
counted: boolean;
|
|
1732
|
+
|
|
1733
|
+
durationMs: number | null;
|
|
1734
|
+
|
|
1735
|
+
/**
|
|
1736
|
+
* Passed every check that graded it. Null when no check graded it, or it does not
|
|
1737
|
+
* count.
|
|
1738
|
+
*/
|
|
1739
|
+
passed: boolean | null;
|
|
1740
|
+
|
|
1741
|
+
personaName: string | null;
|
|
1742
|
+
|
|
1743
|
+
retryOfSimulationJobId: string | null;
|
|
1744
|
+
|
|
1745
|
+
simulationJobId: string;
|
|
1746
|
+
|
|
1747
|
+
/**
|
|
1748
|
+
* QUEUED, CONNECTING, IN_CALL and PROCESSING while the simulation runs. Once
|
|
1749
|
+
* settled: COMPLETED, TIMED_OUT (ran to the maximum duration, still graded), ERROR
|
|
1750
|
+
* (failed on the agent’s side), NOT_RUN (failed on Roark’s side), CANCELLED, or
|
|
1751
|
+
* INVALIDATED (ran, but does not count).
|
|
1752
|
+
*/
|
|
1753
|
+
status:
|
|
1754
|
+
| 'QUEUED'
|
|
1755
|
+
| 'CONNECTING'
|
|
1756
|
+
| 'IN_CALL'
|
|
1757
|
+
| 'PROCESSING'
|
|
1758
|
+
| 'COMPLETED'
|
|
1759
|
+
| 'ERROR'
|
|
1760
|
+
| 'TIMED_OUT'
|
|
1761
|
+
| 'CANCELLED'
|
|
1762
|
+
| 'INVALIDATED'
|
|
1763
|
+
| 'NOT_RUN';
|
|
1764
|
+
|
|
1765
|
+
/**
|
|
1766
|
+
* Call-level values of the run’s other metrics. Empty without the `metric:read`
|
|
1767
|
+
* permission. Per-turn values are on GET /v1/call/{callId}/metrics.
|
|
1768
|
+
*/
|
|
1769
|
+
values: Array<Call.Value>;
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
export namespace Call {
|
|
1773
|
+
export interface Check {
|
|
1774
|
+
metricDefinitionId: string;
|
|
1775
|
+
|
|
1776
|
+
metricName: string;
|
|
1777
|
+
|
|
1778
|
+
passed: boolean;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
export interface Value {
|
|
1782
|
+
metricDefinitionId: string;
|
|
1783
|
+
|
|
1784
|
+
metricName: string;
|
|
1785
|
+
|
|
1786
|
+
outputType: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET';
|
|
1787
|
+
|
|
1788
|
+
participantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER' | null;
|
|
1789
|
+
|
|
1790
|
+
reasoning: string | null;
|
|
1791
|
+
|
|
1792
|
+
value: number | boolean | string | null;
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1796
|
+
/**
|
|
1797
|
+
* Null when there is no earlier run of the plan to compare against.
|
|
1798
|
+
*/
|
|
1799
|
+
export interface Comparison {
|
|
1800
|
+
baselineCallPassRate: number | null;
|
|
1801
|
+
|
|
1802
|
+
baselineRun: Comparison.BaselineRun;
|
|
1803
|
+
|
|
1804
|
+
baselineScore: number | null;
|
|
1805
|
+
|
|
1806
|
+
/**
|
|
1807
|
+
* REQUESTED when `compareToJobId` picked the baseline, PREVIOUS_RUN otherwise.
|
|
1808
|
+
*/
|
|
1809
|
+
baselineSource: 'PREVIOUS_RUN' | 'REQUESTED';
|
|
1810
|
+
|
|
1811
|
+
callPassRateDelta: number | null;
|
|
1812
|
+
|
|
1813
|
+
/**
|
|
1814
|
+
* Every check either run was graded on. A side that did not grade it reads null.
|
|
1815
|
+
*/
|
|
1816
|
+
checks: Array<Comparison.Check>;
|
|
1817
|
+
|
|
1818
|
+
currentCallPassRate: number | null;
|
|
1819
|
+
|
|
1820
|
+
currentScore: number | null;
|
|
1821
|
+
|
|
1822
|
+
/**
|
|
1823
|
+
* Current minus baseline, in points.
|
|
1824
|
+
*/
|
|
1825
|
+
scoreDelta: number | null;
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
export namespace Comparison {
|
|
1829
|
+
export interface BaselineRun {
|
|
1830
|
+
endedAt: string | null;
|
|
1831
|
+
|
|
1832
|
+
runNumber: number | null;
|
|
1833
|
+
|
|
1834
|
+
simulationRunPlanJobId: string;
|
|
1835
|
+
|
|
1836
|
+
status:
|
|
1837
|
+
| 'PENDING'
|
|
1838
|
+
| 'QUEUED'
|
|
1839
|
+
| 'CREATING_SNAPSHOTS'
|
|
1840
|
+
| 'CREATING_SIMULATIONS'
|
|
1841
|
+
| 'PREPARING_CAPACITY'
|
|
1842
|
+
| 'RUNNING_SIMULATIONS'
|
|
1843
|
+
| 'COMPLETED'
|
|
1844
|
+
| 'FAILED'
|
|
1845
|
+
| 'TIMED_OUT'
|
|
1846
|
+
| 'CANCELLED'
|
|
1847
|
+
| 'CANCELLING'
|
|
1848
|
+
| 'ENDING_SIMULATIONS';
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1851
|
+
export interface Check {
|
|
1852
|
+
baselinePassRate: number | null;
|
|
1853
|
+
|
|
1854
|
+
currentPassRate: number | null;
|
|
1855
|
+
|
|
1856
|
+
delta: number | null;
|
|
1857
|
+
|
|
1858
|
+
metricDefinitionId: string;
|
|
1859
|
+
|
|
1860
|
+
metricName: string;
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
|
|
1864
|
+
/**
|
|
1865
|
+
* The run’s written debrief: executive summary, failure themes and
|
|
1866
|
+
* recommendations. Generated automatically when a run with graded calls settles.
|
|
1867
|
+
*/
|
|
1868
|
+
export interface Debrief {
|
|
1869
|
+
completedAt: string | null;
|
|
1870
|
+
|
|
1871
|
+
createdAt: string;
|
|
1872
|
+
|
|
1873
|
+
debriefId: string;
|
|
1874
|
+
|
|
1875
|
+
errorMessage: string | null;
|
|
1876
|
+
|
|
1877
|
+
/**
|
|
1878
|
+
* Present once READY.
|
|
1879
|
+
*/
|
|
1880
|
+
report: Debrief.Report | null;
|
|
1881
|
+
|
|
1882
|
+
/**
|
|
1883
|
+
* PENDING and GENERATING while it is written (usually a few minutes), then READY
|
|
1884
|
+
* or FAILED.
|
|
1885
|
+
*/
|
|
1886
|
+
status: 'PENDING' | 'GENERATING' | 'READY' | 'FAILED';
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
export namespace Debrief {
|
|
1890
|
+
/**
|
|
1891
|
+
* Present once READY.
|
|
1892
|
+
*/
|
|
1893
|
+
export interface Report {
|
|
1894
|
+
executiveSummary: Report.ExecutiveSummary;
|
|
1895
|
+
|
|
1896
|
+
generatedAt: string;
|
|
1897
|
+
|
|
1898
|
+
keyFindings: Array<Report.KeyFinding>;
|
|
1899
|
+
|
|
1900
|
+
recommendations: Array<Report.Recommendation>;
|
|
1901
|
+
|
|
1902
|
+
/**
|
|
1903
|
+
* Failure themes, clustered across the run’s failing calls.
|
|
1904
|
+
*/
|
|
1905
|
+
themes: Array<Report.Theme>;
|
|
1906
|
+
|
|
1907
|
+
/**
|
|
1908
|
+
* The checks against the previous run, as of generation.
|
|
1909
|
+
*/
|
|
1910
|
+
trend: Report.Trend | null;
|
|
1911
|
+
|
|
1912
|
+
verdict: 'PASSED' | 'THRESHOLD_FAILED';
|
|
1913
|
+
|
|
1914
|
+
/**
|
|
1915
|
+
* One-paragraph verdict, e.g. "Not ready to promote. ..."
|
|
1916
|
+
*/
|
|
1917
|
+
verdictSummary: string;
|
|
1918
|
+
|
|
1919
|
+
wentWell: Array<Report.WentWell>;
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
export namespace Report {
|
|
1923
|
+
export interface ExecutiveSummary {
|
|
1924
|
+
paragraphs: Array<string>;
|
|
1925
|
+
|
|
1926
|
+
sections: Array<ExecutiveSummary.Section>;
|
|
1927
|
+
}
|
|
1928
|
+
|
|
1929
|
+
export namespace ExecutiveSummary {
|
|
1930
|
+
export interface Section {
|
|
1931
|
+
body: string;
|
|
1932
|
+
|
|
1933
|
+
heading: string | null;
|
|
1934
|
+
}
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
export interface KeyFinding {
|
|
1938
|
+
body: string;
|
|
1939
|
+
|
|
1940
|
+
/**
|
|
1941
|
+
* The calls the finding is about.
|
|
1942
|
+
*/
|
|
1943
|
+
callIds: Array<string>;
|
|
1944
|
+
|
|
1945
|
+
title: string;
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
export interface Recommendation {
|
|
1949
|
+
body: string;
|
|
1950
|
+
|
|
1951
|
+
channel:
|
|
1952
|
+
| 'PROMPT'
|
|
1953
|
+
| 'VOICE_CONFIG'
|
|
1954
|
+
| 'STT'
|
|
1955
|
+
| 'SPEECH_MODEL'
|
|
1956
|
+
| 'LLM_MODEL'
|
|
1957
|
+
| 'INFRA'
|
|
1958
|
+
| 'EXTERNAL'
|
|
1959
|
+
| null;
|
|
1960
|
+
|
|
1961
|
+
/**
|
|
1962
|
+
* For a prompt fix: the text to replace.
|
|
1963
|
+
*/
|
|
1964
|
+
currentText: string | null;
|
|
1965
|
+
|
|
1966
|
+
order: number;
|
|
1967
|
+
|
|
1968
|
+
severity: 'HIGH' | 'MEDIUM' | 'LOW' | null;
|
|
1969
|
+
|
|
1970
|
+
/**
|
|
1971
|
+
* For a prompt fix: the replacement.
|
|
1972
|
+
*/
|
|
1973
|
+
suggestedText: string | null;
|
|
1974
|
+
|
|
1975
|
+
themeSlugs: Array<string>;
|
|
1976
|
+
|
|
1977
|
+
title: string;
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
export interface Theme {
|
|
1981
|
+
affectedCallCount: number;
|
|
1982
|
+
|
|
1983
|
+
analysis: string;
|
|
1984
|
+
|
|
1985
|
+
callIds: Array<string>;
|
|
1986
|
+
|
|
1987
|
+
checkNames: Array<string>;
|
|
1988
|
+
|
|
1989
|
+
impact: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | null;
|
|
1990
|
+
|
|
1991
|
+
lifecycle: 'NEW' | 'PERSISTENT' | 'IMPROVING' | 'FIXED' | null;
|
|
1992
|
+
|
|
1993
|
+
prevalence: 'WIDESPREAD' | 'RECURRING' | 'ISOLATED' | null;
|
|
1994
|
+
|
|
1995
|
+
rootCauseChannel:
|
|
1996
|
+
| 'PROMPT'
|
|
1997
|
+
| 'VOICE_CONFIG'
|
|
1998
|
+
| 'STT'
|
|
1999
|
+
| 'SPEECH_MODEL'
|
|
2000
|
+
| 'LLM_MODEL'
|
|
2001
|
+
| 'INFRA'
|
|
2002
|
+
| 'EXTERNAL'
|
|
2003
|
+
| null;
|
|
2004
|
+
|
|
2005
|
+
severity: 'HIGH' | 'MEDIUM' | 'LOW';
|
|
2006
|
+
|
|
2007
|
+
slug: string;
|
|
2008
|
+
|
|
2009
|
+
title: string;
|
|
2010
|
+
|
|
2011
|
+
totalCallCount: number;
|
|
2012
|
+
}
|
|
2013
|
+
|
|
2014
|
+
/**
|
|
2015
|
+
* The checks against the previous run, as of generation.
|
|
2016
|
+
*/
|
|
2017
|
+
export interface Trend {
|
|
2018
|
+
baselineRunNumber: number | null;
|
|
2019
|
+
|
|
2020
|
+
baselineRunPlanJobId: string;
|
|
2021
|
+
|
|
2022
|
+
rows: Array<Trend.Row>;
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
export namespace Trend {
|
|
2026
|
+
export interface Row {
|
|
2027
|
+
checkName: string;
|
|
2028
|
+
|
|
2029
|
+
currentPassRate: number | null;
|
|
2030
|
+
|
|
2031
|
+
lifecycle: 'NEW' | 'PERSISTENT' | 'IMPROVING' | 'FIXED' | null;
|
|
2032
|
+
|
|
2033
|
+
previousPassRate: number | null;
|
|
2034
|
+
}
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
export interface WentWell {
|
|
2038
|
+
body: string;
|
|
2039
|
+
|
|
2040
|
+
/**
|
|
2041
|
+
* The calls the finding is about.
|
|
2042
|
+
*/
|
|
2043
|
+
callIds: Array<string>;
|
|
2044
|
+
|
|
2045
|
+
title: string;
|
|
2046
|
+
}
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
export interface Metric {
|
|
2051
|
+
/**
|
|
2052
|
+
* The check’s tally. Null for a metric that is not a check.
|
|
2053
|
+
*/
|
|
2054
|
+
check: Metric.Check | null;
|
|
2055
|
+
|
|
2056
|
+
/**
|
|
2057
|
+
* How many values took each reading, for BOOLEAN, SCALE and CLASSIFICATION
|
|
2058
|
+
* metrics. Null without the `metric:read` permission.
|
|
2059
|
+
*/
|
|
2060
|
+
distribution: Array<Metric.Distribution> | null;
|
|
2061
|
+
|
|
2062
|
+
/**
|
|
2063
|
+
* Counted simulations with at least one value.
|
|
2064
|
+
*/
|
|
2065
|
+
evaluatedCalls: number;
|
|
2066
|
+
|
|
2067
|
+
/**
|
|
2068
|
+
* A threshold: one of the checks the run is judged on.
|
|
2069
|
+
*/
|
|
2070
|
+
isCheck: boolean;
|
|
2071
|
+
|
|
2072
|
+
metricDefinitionId: string;
|
|
2073
|
+
|
|
2074
|
+
/**
|
|
2075
|
+
* The metric’s slug.
|
|
2076
|
+
*/
|
|
2077
|
+
metricId: string;
|
|
2078
|
+
|
|
2079
|
+
name: string;
|
|
2080
|
+
|
|
2081
|
+
/**
|
|
2082
|
+
* For NUMERIC, SCALE, COUNT and OFFSET metrics. Null when nothing was captured, or
|
|
2083
|
+
* without the `metric:read` permission.
|
|
2084
|
+
*/
|
|
2085
|
+
numeric: Metric.Numeric | null;
|
|
2086
|
+
|
|
2087
|
+
outputType: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET';
|
|
2088
|
+
|
|
2089
|
+
/**
|
|
2090
|
+
* Values across those simulations. A per-turn metric has several per call.
|
|
2091
|
+
*/
|
|
2092
|
+
sampleSize: number;
|
|
2093
|
+
|
|
2094
|
+
/**
|
|
2095
|
+
* Unit of `numeric`, e.g. `ms`.
|
|
2096
|
+
*/
|
|
2097
|
+
unitSymbol: string | null;
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
export namespace Metric {
|
|
2101
|
+
/**
|
|
2102
|
+
* The check’s tally. Null for a metric that is not a check.
|
|
2103
|
+
*/
|
|
2104
|
+
export interface Check {
|
|
2105
|
+
evaluatedCalls: number;
|
|
2106
|
+
|
|
2107
|
+
failedCalls: number;
|
|
2108
|
+
|
|
2109
|
+
/**
|
|
2110
|
+
* 0-100. Null when nothing was evaluated.
|
|
2111
|
+
*/
|
|
2112
|
+
passRate: number | null;
|
|
2113
|
+
|
|
2114
|
+
passedCalls: number;
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
export interface Distribution {
|
|
2118
|
+
count: number;
|
|
2119
|
+
|
|
2120
|
+
value: string;
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
/**
|
|
2124
|
+
* For NUMERIC, SCALE, COUNT and OFFSET metrics. Null when nothing was captured, or
|
|
2125
|
+
* without the `metric:read` permission.
|
|
2126
|
+
*/
|
|
2127
|
+
export interface Numeric {
|
|
2128
|
+
average: number;
|
|
2129
|
+
|
|
2130
|
+
max: number;
|
|
2131
|
+
|
|
2132
|
+
median: number;
|
|
2133
|
+
|
|
2134
|
+
min: number;
|
|
2135
|
+
|
|
2136
|
+
p95: number;
|
|
2137
|
+
}
|
|
2138
|
+
}
|
|
2139
|
+
|
|
2140
|
+
export interface Run {
|
|
2141
|
+
createdAt: string;
|
|
2142
|
+
|
|
2143
|
+
/**
|
|
2144
|
+
* Wall-clock run time. Null until the run ends.
|
|
2145
|
+
*/
|
|
2146
|
+
durationMs: number | null;
|
|
2147
|
+
|
|
2148
|
+
endedAt: string | null;
|
|
2149
|
+
|
|
2150
|
+
/**
|
|
2151
|
+
* Per-project run number, shown as SR-42 in the app.
|
|
2152
|
+
*/
|
|
2153
|
+
runNumber: number | null;
|
|
2154
|
+
|
|
2155
|
+
simulationRunPlanId: string;
|
|
2156
|
+
|
|
2157
|
+
simulationRunPlanJobId: string;
|
|
2158
|
+
|
|
2159
|
+
/**
|
|
2160
|
+
* The run plan’s name. Null when the plan has since been deleted.
|
|
2161
|
+
*/
|
|
2162
|
+
simulationRunPlanName: string | null;
|
|
2163
|
+
|
|
2164
|
+
startedAt: string | null;
|
|
2165
|
+
|
|
2166
|
+
status:
|
|
2167
|
+
| 'PENDING'
|
|
2168
|
+
| 'QUEUED'
|
|
2169
|
+
| 'CREATING_SNAPSHOTS'
|
|
2170
|
+
| 'CREATING_SIMULATIONS'
|
|
2171
|
+
| 'PREPARING_CAPACITY'
|
|
2172
|
+
| 'RUNNING_SIMULATIONS'
|
|
2173
|
+
| 'COMPLETED'
|
|
2174
|
+
| 'FAILED'
|
|
2175
|
+
| 'TIMED_OUT'
|
|
2176
|
+
| 'CANCELLED'
|
|
2177
|
+
| 'CANCELLING'
|
|
2178
|
+
| 'ENDING_SIMULATIONS';
|
|
2179
|
+
|
|
2180
|
+
triggeredBy: 'SCHEDULED' | 'USER_TRIGGERED_FROM_UI' | 'RE_RUN' | 'TRIGGERED_FROM_API' | 'SYSTEM';
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2183
|
+
export interface Summary {
|
|
2184
|
+
/**
|
|
2185
|
+
* passedCalls / evaluatedCalls, 0-100. Null when nothing was evaluated.
|
|
2186
|
+
*/
|
|
2187
|
+
callPassRate: number | null;
|
|
2188
|
+
|
|
2189
|
+
/**
|
|
2190
|
+
* Every (check, simulation) verdict pooled. 0-100. Null when nothing was
|
|
2191
|
+
* evaluated.
|
|
2192
|
+
*/
|
|
2193
|
+
checkPassRate: number | null;
|
|
2194
|
+
|
|
2195
|
+
/**
|
|
2196
|
+
* Counted simulations that connected and produced a conversation.
|
|
2197
|
+
*/
|
|
2198
|
+
completedCalls: number;
|
|
2199
|
+
|
|
2200
|
+
/**
|
|
2201
|
+
* Simulations whose results count: all but the invalidated ones.
|
|
2202
|
+
*/
|
|
2203
|
+
countedCalls: number;
|
|
2204
|
+
|
|
2205
|
+
/**
|
|
2206
|
+
* Counted simulations at least one check graded.
|
|
2207
|
+
*/
|
|
2208
|
+
evaluatedCalls: number;
|
|
2209
|
+
|
|
2210
|
+
/**
|
|
2211
|
+
* Evaluated simulations that failed at least one check.
|
|
2212
|
+
*/
|
|
2213
|
+
failedCalls: number;
|
|
2214
|
+
|
|
2215
|
+
/**
|
|
2216
|
+
* Evaluated simulations that passed every check.
|
|
2217
|
+
*/
|
|
2218
|
+
passedCalls: number;
|
|
2219
|
+
|
|
2220
|
+
/**
|
|
2221
|
+
* The run’s score: the mean of each check’s pass rate, the same number as
|
|
2222
|
+
* `verdict.score`. 0-100. Null when nothing was evaluated.
|
|
2223
|
+
*/
|
|
2224
|
+
score: number | null;
|
|
2225
|
+
|
|
2226
|
+
/**
|
|
2227
|
+
* Every simulation of the run, retries included.
|
|
2228
|
+
*/
|
|
2229
|
+
totalCalls: number;
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
/**
|
|
2233
|
+
* For a run that swept a property (accent, background noise, speech pace and so
|
|
2234
|
+
* on): which check failures the property caused.
|
|
2235
|
+
*
|
|
2236
|
+
* Each value is compared with every other value combined using a one-sided Fisher
|
|
2237
|
+
* exact test, and every comparison in the run is corrected together with
|
|
2238
|
+
* Benjamini-Hochberg. A value is only called worse when the difference is
|
|
2239
|
+
* statistically significant, so a value that happened to fail a few more
|
|
2240
|
+
* simulations by chance is not reported as a problem. Invalidated simulations and
|
|
2241
|
+
* simulations that failed on the Roark platform are left out.
|
|
2242
|
+
*/
|
|
2243
|
+
export interface SweepAttribution {
|
|
2244
|
+
/**
|
|
2245
|
+
* Plain sentences on what this run could not see, ready to show to a reader.
|
|
2246
|
+
*/
|
|
2247
|
+
caveats: Array<string>;
|
|
2248
|
+
|
|
2249
|
+
/**
|
|
2250
|
+
* Every check the run was graded on: `PROPERTY_ATTRIBUTABLE` first, then
|
|
2251
|
+
* `FOUND_UNATTRIBUTED`, then `WITHIN_NOISE`.
|
|
2252
|
+
*/
|
|
2253
|
+
checks: Array<SweepAttribution.Check>;
|
|
2254
|
+
|
|
2255
|
+
/**
|
|
2256
|
+
* The Benjamini-Hochberg false discovery rate the comparisons are held to.
|
|
2257
|
+
*/
|
|
2258
|
+
falseDiscoveryRate: number;
|
|
2259
|
+
|
|
2260
|
+
/**
|
|
2261
|
+
* The overall failure rate, 0-100, at which a check with no standout value is
|
|
2262
|
+
* reported as `FOUND_UNATTRIBUTED`.
|
|
2263
|
+
*/
|
|
2264
|
+
foundUnattributedFailureRate: number;
|
|
2265
|
+
|
|
2266
|
+
/**
|
|
2267
|
+
* Counted simulations a value needs before it is compared.
|
|
2268
|
+
*/
|
|
2269
|
+
minArmCalls: number;
|
|
2270
|
+
|
|
2271
|
+
/**
|
|
2272
|
+
* Roughly how many percentage points more often a value would need to fail than
|
|
2273
|
+
* the rest of the run to be flagged at this sample size. Optimistic: it uses
|
|
2274
|
+
* simulation counts rather than the verdicts on each check and ignores the
|
|
2275
|
+
* correction, so checks graded on fewer simulations need larger gaps. Large when
|
|
2276
|
+
* few simulations ran per value: finding no significant difference then means the
|
|
2277
|
+
* run could not see one, not that none exists.
|
|
2278
|
+
*/
|
|
2279
|
+
minimumDetectableGap: number | null;
|
|
2280
|
+
|
|
2281
|
+
/**
|
|
2282
|
+
* The values your agent never spoke on significantly more often than the rest of
|
|
2283
|
+
* the run, most significant first, tested the same way as `worseValues`. Empty on
|
|
2284
|
+
* a run with no silent simulations.
|
|
2285
|
+
*/
|
|
2286
|
+
neverSpokeValues: Array<SweepAttribution.NeverSpokeValue>;
|
|
2287
|
+
|
|
2288
|
+
/**
|
|
2289
|
+
* How many values had enough counted simulations to be compared.
|
|
2290
|
+
*/
|
|
2291
|
+
testableValueCount: number;
|
|
2292
|
+
|
|
2293
|
+
/**
|
|
2294
|
+
* How many value and check pairs were actually tested. A value can have enough
|
|
2295
|
+
* simulations and still go untested (no other value graded that check, or too few
|
|
2296
|
+
* verdicts on it). When this is 0 no comparison ran, so an empty `worseValues`
|
|
2297
|
+
* everywhere means nothing was tested, not that no value did worse.
|
|
2298
|
+
*/
|
|
2299
|
+
testedComparisonCount: number;
|
|
2300
|
+
|
|
2301
|
+
/**
|
|
2302
|
+
* Every value of the swept property, baseline first.
|
|
2303
|
+
*/
|
|
2304
|
+
values: Array<SweepAttribution.Value>;
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2307
|
+
export namespace SweepAttribution {
|
|
2308
|
+
/**
|
|
2309
|
+
* How one check's failures relate to the swept property.
|
|
2310
|
+
*/
|
|
2311
|
+
export interface Check {
|
|
2312
|
+
/**
|
|
2313
|
+
* How this check relates to the swept property:
|
|
2314
|
+
*
|
|
2315
|
+
* - `PROPERTY_ATTRIBUTABLE`: at least one value failed it significantly more often
|
|
2316
|
+
* than every other value combined. `worseValues` names them. This is the only
|
|
2317
|
+
* case in which a value is called worse.
|
|
2318
|
+
* - `FOUND_UNATTRIBUTED`: no value stands out, but the check failed on at least
|
|
2319
|
+
* `foundUnattributedFailureRate`% of counted simulations overall. A real issue
|
|
2320
|
+
* with the agent on which no value stood out, so the run cannot tie it to the
|
|
2321
|
+
* property. It does not show the property had no effect: a small run may be
|
|
2322
|
+
* unable to see one.
|
|
2323
|
+
* - `WITHIN_NOISE`: neither. Any differences between values are within what chance
|
|
2324
|
+
* produces.
|
|
2325
|
+
*/
|
|
2326
|
+
attribution: 'PROPERTY_ATTRIBUTABLE' | 'FOUND_UNATTRIBUTED' | 'WITHIN_NOISE';
|
|
2327
|
+
|
|
2328
|
+
evaluated: number;
|
|
2329
|
+
|
|
2330
|
+
failed: number;
|
|
2331
|
+
|
|
2332
|
+
/**
|
|
2333
|
+
* Share of counted simulations across every value that failed the check, 0-100.
|
|
2334
|
+
*/
|
|
2335
|
+
failureRate: number | null;
|
|
2336
|
+
|
|
2337
|
+
metricDefinitionId: string;
|
|
2338
|
+
|
|
2339
|
+
metricName: string;
|
|
2340
|
+
|
|
2341
|
+
/**
|
|
2342
|
+
* The values significantly worse than the rest, most significant first. Empty
|
|
2343
|
+
* unless `attribution` is `PROPERTY_ATTRIBUTABLE`.
|
|
2344
|
+
*/
|
|
2345
|
+
worseValues: Array<Check.WorseValue>;
|
|
2346
|
+
}
|
|
2347
|
+
|
|
2348
|
+
export namespace Check {
|
|
2349
|
+
/**
|
|
2350
|
+
* A value that failed a check significantly more often than the rest of the run.
|
|
2351
|
+
*/
|
|
2352
|
+
export interface WorseValue {
|
|
2353
|
+
/**
|
|
2354
|
+
* How likely a difference at least this large would be by chance alone, after
|
|
2355
|
+
* correcting for every comparison in the run (Benjamini-Hochberg). The value is
|
|
2356
|
+
* called worse only when this is at most `falseDiscoveryRate`.
|
|
2357
|
+
*/
|
|
2358
|
+
adjustedPValue: number;
|
|
2359
|
+
|
|
2360
|
+
evaluated: number;
|
|
2361
|
+
|
|
2362
|
+
failed: number;
|
|
2363
|
+
|
|
2364
|
+
/**
|
|
2365
|
+
* Share of the counted simulations at this value that failed the check, 0-100.
|
|
2366
|
+
*/
|
|
2367
|
+
failureRate: number | null;
|
|
2368
|
+
|
|
2369
|
+
/**
|
|
2370
|
+
* The arm's identity: the override signature its calls ran with, e.g.
|
|
2371
|
+
* `BACKGROUND_NOISE=DRIVING;BACKGROUND_NOISE_VOLUME=0.7`. Join on this rather than
|
|
2372
|
+
* on `value`: a sweep can run one value as several arms (Driving at 70% and at
|
|
2373
|
+
* 100%), and those share a value.
|
|
2374
|
+
*/
|
|
2375
|
+
key: string;
|
|
2376
|
+
|
|
2377
|
+
label: string;
|
|
2378
|
+
|
|
2379
|
+
/**
|
|
2380
|
+
* The same share across every other value combined, 0-100. This is what the value
|
|
2381
|
+
* is compared with.
|
|
2382
|
+
*/
|
|
2383
|
+
restFailureRate: number | null;
|
|
2384
|
+
|
|
2385
|
+
value: string;
|
|
2386
|
+
}
|
|
2387
|
+
}
|
|
2388
|
+
|
|
2389
|
+
/**
|
|
2390
|
+
* A value your agent never spoke on significantly more often than the rest of the
|
|
2391
|
+
* run.
|
|
2392
|
+
*/
|
|
2393
|
+
export interface NeverSpokeValue {
|
|
2394
|
+
/**
|
|
2395
|
+
* How likely a difference at least this large would be by chance alone, after
|
|
2396
|
+
* correcting across the values (Benjamini-Hochberg).
|
|
2397
|
+
*/
|
|
2398
|
+
adjustedPValue: number;
|
|
2399
|
+
|
|
2400
|
+
/**
|
|
2401
|
+
* Simulations run at this value.
|
|
2402
|
+
*/
|
|
2403
|
+
attempted: number;
|
|
2404
|
+
|
|
2405
|
+
/**
|
|
2406
|
+
* The arm's identity: the override signature its calls ran with, e.g.
|
|
2407
|
+
* `BACKGROUND_NOISE=DRIVING;BACKGROUND_NOISE_VOLUME=0.7`. Join on this rather than
|
|
2408
|
+
* on `value`: a sweep can run one value as several arms (Driving at 70% and at
|
|
2409
|
+
* 100%), and those share a value.
|
|
2410
|
+
*/
|
|
2411
|
+
key: string;
|
|
2412
|
+
|
|
2413
|
+
label: string;
|
|
2414
|
+
|
|
2415
|
+
/**
|
|
2416
|
+
* Simulations run across every other value combined.
|
|
2417
|
+
*/
|
|
2418
|
+
restAttempted: number;
|
|
2419
|
+
|
|
2420
|
+
/**
|
|
2421
|
+
* Simulations your agent never spoke on across every other value combined.
|
|
2422
|
+
*/
|
|
2423
|
+
restSilentAttempts: number;
|
|
2424
|
+
|
|
2425
|
+
/**
|
|
2426
|
+
* Retries placed at this value because your agent never spoke.
|
|
2427
|
+
*/
|
|
2428
|
+
retries: number;
|
|
2429
|
+
|
|
2430
|
+
/**
|
|
2431
|
+
* Simulations at this value your agent never spoke on, retried or not.
|
|
2432
|
+
*/
|
|
2433
|
+
silentAttempts: number;
|
|
2434
|
+
|
|
2435
|
+
value: string;
|
|
2436
|
+
}
|
|
2437
|
+
|
|
2438
|
+
/**
|
|
2439
|
+
* One value of the swept property.
|
|
2440
|
+
*/
|
|
2441
|
+
export interface Value {
|
|
2442
|
+
/**
|
|
2443
|
+
* Simulations run at this value. Simulations that failed on the Roark platform are
|
|
2444
|
+
* left out, since they say nothing about your agent.
|
|
2445
|
+
*/
|
|
2446
|
+
attempted: number;
|
|
2447
|
+
|
|
2448
|
+
/**
|
|
2449
|
+
* Simulations that actually tested the property: not invalidated, and graded by at
|
|
2450
|
+
* least one check. Only these are used in the comparison.
|
|
2451
|
+
*/
|
|
2452
|
+
counted: number;
|
|
2453
|
+
|
|
2454
|
+
/**
|
|
2455
|
+
* Whether this is the baseline the plan named.
|
|
2456
|
+
*/
|
|
2457
|
+
isBaseline: boolean;
|
|
2458
|
+
|
|
2459
|
+
/**
|
|
2460
|
+
* The arm's identity: the override signature its calls ran with, e.g.
|
|
2461
|
+
* `BACKGROUND_NOISE=DRIVING;BACKGROUND_NOISE_VOLUME=0.7`. Join on this rather than
|
|
2462
|
+
* on `value`: a sweep can run one value as several arms (Driving at 70% and at
|
|
2463
|
+
* 100%), and those share a value.
|
|
2464
|
+
*/
|
|
2465
|
+
key: string;
|
|
2466
|
+
|
|
2467
|
+
/**
|
|
2468
|
+
* The value in words, with what else the arm pinned, e.g. `American` or
|
|
2469
|
+
* `Driving (70% noise)`.
|
|
2470
|
+
*/
|
|
2471
|
+
label: string;
|
|
2472
|
+
|
|
2473
|
+
/**
|
|
2474
|
+
* Of `attempted`, the retries of simulations your agent never spoke on. Zero
|
|
2475
|
+
* unless the plan retries silent simulations.
|
|
2476
|
+
*/
|
|
2477
|
+
retries: number;
|
|
2478
|
+
|
|
2479
|
+
/**
|
|
2480
|
+
* The mean of each check's pass rate at this value, 0-100, the same rule as the
|
|
2481
|
+
* run's `score`. Descriptive only: a lower score alone never makes a value worse.
|
|
2482
|
+
* Null when nothing counted.
|
|
2483
|
+
*/
|
|
2484
|
+
score: number | null;
|
|
2485
|
+
|
|
2486
|
+
/**
|
|
2487
|
+
* Of `attempted`, the simulations your agent never spoke on, whether or not a
|
|
2488
|
+
* retry followed. They are invalidated, so they are never in `counted`.
|
|
2489
|
+
*/
|
|
2490
|
+
silentAttempts: number;
|
|
2491
|
+
|
|
2492
|
+
/**
|
|
2493
|
+
* Whether this value had at least `minArmCalls` counted simulations. A value below
|
|
2494
|
+
* that is "insufficient data": it is reported with its numbers but never compared
|
|
2495
|
+
* or ranked, because a rate from one or two calls cannot be told apart from luck.
|
|
2496
|
+
*/
|
|
2497
|
+
testable: boolean;
|
|
2498
|
+
|
|
2499
|
+
/**
|
|
2500
|
+
* The stored value of the swept property, e.g. `US`.
|
|
2501
|
+
*/
|
|
2502
|
+
value: string;
|
|
2503
|
+
}
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
/**
|
|
2507
|
+
* Pass/fail verdict for the run, judged against the success criteria pinned on the
|
|
2508
|
+
* run plan when the run started.
|
|
2509
|
+
*/
|
|
2510
|
+
export interface Verdict {
|
|
2511
|
+
/**
|
|
2512
|
+
* Every check the run was judged on, with its rate and the minimum it had to
|
|
2513
|
+
* reach.
|
|
2514
|
+
*
|
|
2515
|
+
* Thresholds and authored yes/no metrics only. See `SimulationRunPlanJobCheck` for
|
|
2516
|
+
* why a provider reading is not one.
|
|
2517
|
+
*/
|
|
2518
|
+
checks: Array<Verdict.Check>;
|
|
2519
|
+
|
|
2520
|
+
/**
|
|
2521
|
+
* Every criterion the run missed. Empty when it passed.
|
|
2522
|
+
*/
|
|
2523
|
+
failures: Array<
|
|
2524
|
+
| Verdict.UnionMember0
|
|
2525
|
+
| Verdict.UnionMember1
|
|
2526
|
+
| Verdict.UnionMember2
|
|
2527
|
+
| Verdict.UnionMember3
|
|
2528
|
+
| Verdict.UnionMember4
|
|
2529
|
+
>;
|
|
2530
|
+
|
|
2531
|
+
/**
|
|
2532
|
+
* Whether every check cleared its own `minPassRate` (and the run completed with
|
|
2533
|
+
* full coverage). Use this as the CI exit status.
|
|
2534
|
+
*
|
|
2535
|
+
* Never derived from `score`: a run can score 95 and still fail, or score 40 and
|
|
2536
|
+
* still pass.
|
|
2537
|
+
*/
|
|
2538
|
+
passed: boolean;
|
|
2539
|
+
|
|
2540
|
+
/**
|
|
2541
|
+
* The run's headline quality number, 0-100: the mean of each check's own pass
|
|
2542
|
+
* rate.
|
|
2543
|
+
*
|
|
2544
|
+
* Every check weighs the same, however many simulations it evaluated, which is the
|
|
2545
|
+
* same way `passed` treats them. It is the number the Roark dashboard shows for
|
|
2546
|
+
* this run.
|
|
2547
|
+
*
|
|
2548
|
+
* REPORTING ONLY, for dashboards and trend lines. Nothing is judged against it.
|
|
2549
|
+
* Null when nothing was evaluated.
|
|
2550
|
+
*/
|
|
2551
|
+
score: number | null;
|
|
2552
|
+
}
|
|
2553
|
+
|
|
2554
|
+
export namespace Verdict {
|
|
2555
|
+
/**
|
|
2556
|
+
* How one check did. Present for every check the run was judged on, passing or
|
|
2557
|
+
* not.
|
|
2558
|
+
*
|
|
2559
|
+
* A check is a metric that yields a pass/fail: a threshold
|
|
2560
|
+
* (`Silence Duration <= 2s`) or a yes/no metric you authored. Provider readings
|
|
2561
|
+
* such as `Comprehension Failure` are observations, not checks: their `true` is
|
|
2562
|
+
* whatever the underlying field happens to mean, so they carry no passing side and
|
|
2563
|
+
* never appear here. Put a threshold on one to judge it.
|
|
2564
|
+
*/
|
|
2565
|
+
export interface Check {
|
|
2566
|
+
evaluatedSims: number;
|
|
2567
|
+
|
|
2568
|
+
/**
|
|
2569
|
+
* Whether `minPassRate` is the 80% default (`true`) or a minimum this metric set
|
|
2570
|
+
* for itself.
|
|
2571
|
+
*/
|
|
2572
|
+
inherited: boolean;
|
|
2573
|
+
|
|
2574
|
+
metricDefinitionId: string;
|
|
2575
|
+
|
|
2576
|
+
/**
|
|
2577
|
+
* THE BAR it was judged against: the share of the run's simulations it had to
|
|
2578
|
+
* pass.
|
|
2579
|
+
*/
|
|
2580
|
+
minPassRate: number;
|
|
2581
|
+
|
|
2582
|
+
/**
|
|
2583
|
+
* This check's own pass rate, 0-100: the share of sims it evaluated that passed
|
|
2584
|
+
* it. Null when it evaluated nothing.
|
|
2585
|
+
*/
|
|
2586
|
+
passRate: number | null;
|
|
2587
|
+
|
|
2588
|
+
/**
|
|
2589
|
+
* `passRate >= minPassRate`.
|
|
2590
|
+
*/
|
|
2591
|
+
passed: boolean;
|
|
2592
|
+
|
|
2593
|
+
passedSims: number;
|
|
2594
|
+
|
|
2595
|
+
metricName?: string | null;
|
|
2596
|
+
}
|
|
2597
|
+
|
|
2598
|
+
export interface UnionMember0 {
|
|
2599
|
+
/**
|
|
2600
|
+
* The status the run actually ended in.
|
|
2601
|
+
*/
|
|
2602
|
+
status:
|
|
2603
|
+
| 'PENDING'
|
|
2604
|
+
| 'QUEUED'
|
|
2605
|
+
| 'CREATING_SNAPSHOTS'
|
|
2606
|
+
| 'CREATING_SIMULATIONS'
|
|
2607
|
+
| 'PREPARING_CAPACITY'
|
|
2608
|
+
| 'RUNNING_SIMULATIONS'
|
|
2609
|
+
| 'COMPLETED'
|
|
2610
|
+
| 'FAILED'
|
|
2611
|
+
| 'TIMED_OUT'
|
|
2612
|
+
| 'CANCELLED'
|
|
2613
|
+
| 'CANCELLING'
|
|
2614
|
+
| 'ENDING_SIMULATIONS';
|
|
2615
|
+
|
|
2616
|
+
type: 'RUN_NOT_COMPLETED';
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2619
|
+
export interface UnionMember1 {
|
|
2620
|
+
evaluatedCalls: number;
|
|
2621
|
+
|
|
2622
|
+
expectedCalls: number;
|
|
2623
|
+
|
|
2624
|
+
type: 'INCOMPLETE_COVERAGE';
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2627
|
+
/**
|
|
2628
|
+
* Your agent never spoke on more than `maxShare` percent of the run. Those
|
|
2629
|
+
* simulations are left out of every check, so the run fails on them whatever the
|
|
2630
|
+
* checks say.
|
|
2631
|
+
*/
|
|
2632
|
+
export interface UnionMember2 {
|
|
2633
|
+
/**
|
|
2634
|
+
* The largest share of simulations, 0-100, your agent may never speak on while the
|
|
2635
|
+
* run can pass.
|
|
2636
|
+
*/
|
|
2637
|
+
maxShare: number;
|
|
2638
|
+
|
|
2639
|
+
/**
|
|
2640
|
+
* Test cases your agent never spoke on, judged on each test case’s last attempt: a
|
|
2641
|
+
* silent simulation a retry later reached your agent on does not count here.
|
|
2642
|
+
*/
|
|
2643
|
+
neverSpokeCalls: number;
|
|
2644
|
+
|
|
2645
|
+
/**
|
|
2646
|
+
* Every test case of the run whose last attempt reached your agent.
|
|
2647
|
+
*/
|
|
2648
|
+
totalCalls: number;
|
|
2649
|
+
|
|
2650
|
+
type: 'AGENT_NEVER_SPOKE';
|
|
2651
|
+
|
|
2652
|
+
/**
|
|
2653
|
+
* The agent as the run tested it. Null when the simulations tested more than one
|
|
2654
|
+
* agent.
|
|
2655
|
+
*/
|
|
2656
|
+
agentName?: string | null;
|
|
2657
|
+
|
|
2658
|
+
/**
|
|
2659
|
+
* Every simulation your agent never spoke on, including the ones a retry replaced.
|
|
2660
|
+
* Above `neverSpokeCalls` only when the plan retries silent simulations
|
|
2661
|
+
* (`maxNoResponseRetries`).
|
|
2662
|
+
*/
|
|
2663
|
+
silentAttempts?: number;
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
export interface UnionMember3 {
|
|
2667
|
+
metricDefinitionId: string;
|
|
2668
|
+
|
|
2669
|
+
type: 'METRIC_NOT_EVALUATED';
|
|
2670
|
+
|
|
2671
|
+
/**
|
|
2672
|
+
* The check’s name, for rendering the failure.
|
|
2673
|
+
*/
|
|
2674
|
+
metricName?: string | null;
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2677
|
+
export interface UnionMember4 {
|
|
2678
|
+
/**
|
|
2679
|
+
* Whether the missed minimum was the 80% default (`true`) or this metric's own.
|
|
2680
|
+
*/
|
|
2681
|
+
inherited: boolean;
|
|
2682
|
+
|
|
2683
|
+
metricDefinitionId: string;
|
|
2684
|
+
|
|
2685
|
+
minPassRate: number;
|
|
2686
|
+
|
|
2687
|
+
passRate: number;
|
|
2688
|
+
|
|
2689
|
+
type: 'METRIC_BELOW_MIN_PASS_RATE';
|
|
2690
|
+
|
|
2691
|
+
/**
|
|
2692
|
+
* The check’s name, for rendering the failure.
|
|
2693
|
+
*/
|
|
2694
|
+
metricName?: string | null;
|
|
2695
|
+
}
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
|
|
2700
|
+
export interface SimulationRunPlanJobStartResponse {
|
|
2701
|
+
/**
|
|
2702
|
+
* Response when triggering a simulation run plan
|
|
2703
|
+
*/
|
|
2704
|
+
data: SimulationRunPlanJobStartResponse.Data;
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
export namespace SimulationRunPlanJobStartResponse {
|
|
2708
|
+
/**
|
|
2709
|
+
* Response when triggering a simulation run plan
|
|
2710
|
+
*/
|
|
2711
|
+
export interface Data {
|
|
2712
|
+
/**
|
|
2713
|
+
* When the job was created
|
|
2714
|
+
*/
|
|
2715
|
+
createdAt: string;
|
|
2716
|
+
|
|
2717
|
+
/**
|
|
2718
|
+
* ID of the simulation run plan that was executed
|
|
2719
|
+
*/
|
|
2720
|
+
simulationRunPlanId: string;
|
|
2721
|
+
|
|
2722
|
+
/**
|
|
2723
|
+
* ID of the simulation run plan job that was created
|
|
2724
|
+
*/
|
|
2725
|
+
simulationRunPlanJobId: string;
|
|
2726
|
+
|
|
2727
|
+
/**
|
|
2728
|
+
* Initial status of the job
|
|
2729
|
+
*/
|
|
2730
|
+
status:
|
|
2731
|
+
| 'PENDING'
|
|
2732
|
+
| 'QUEUED'
|
|
2733
|
+
| 'CREATING_SNAPSHOTS'
|
|
2734
|
+
| 'CREATING_SIMULATIONS'
|
|
2735
|
+
| 'PREPARING_CAPACITY'
|
|
2736
|
+
| 'RUNNING_SIMULATIONS'
|
|
2737
|
+
| 'COMPLETED'
|
|
2738
|
+
| 'FAILED'
|
|
2739
|
+
| 'TIMED_OUT'
|
|
2740
|
+
| 'CANCELLED'
|
|
2741
|
+
| 'CANCELLING'
|
|
2742
|
+
| 'ENDING_SIMULATIONS';
|
|
2743
|
+
}
|
|
2744
|
+
}
|
|
2745
|
+
|
|
2746
|
+
export interface SimulationRunPlanJobListParams {
|
|
2747
|
+
/**
|
|
2748
|
+
* Cursor for pagination - use the nextCursor value from a previous response
|
|
2749
|
+
*/
|
|
2750
|
+
after?: string;
|
|
2751
|
+
|
|
2752
|
+
/**
|
|
2753
|
+
* Filter by label ID attached to the plan job. Use this if you know the label ID.
|
|
2754
|
+
*/
|
|
2755
|
+
labelId?: string;
|
|
2756
|
+
|
|
2757
|
+
/**
|
|
2758
|
+
* Filter by label name attached to the plan job. More user-friendly alternative to
|
|
2759
|
+
* labelId. Case-insensitive.
|
|
2760
|
+
*/
|
|
2761
|
+
labelName?: string;
|
|
2762
|
+
|
|
2763
|
+
/**
|
|
2764
|
+
* Maximum number of plan jobs to return (default: 20, max: 50)
|
|
2765
|
+
*/
|
|
2766
|
+
limit?: number;
|
|
2767
|
+
|
|
2768
|
+
/**
|
|
2769
|
+
* Filter by simulation run plan ID
|
|
2770
|
+
*/
|
|
2771
|
+
simulationRunPlanId?: string;
|
|
2772
|
+
|
|
2773
|
+
/**
|
|
2774
|
+
* Filter by plan job status (PENDING, QUEUED, CREATING_SNAPSHOTS,
|
|
2775
|
+
* CREATING_SIMULATIONS, PREPARING_CAPACITY, RUNNING_SIMULATIONS, COMPLETED,
|
|
2776
|
+
* FAILED, TIMED_OUT, CANCELLED, CANCELLING, ENDING_SIMULATIONS)
|
|
2777
|
+
*/
|
|
2778
|
+
status?:
|
|
2779
|
+
| 'PENDING'
|
|
2780
|
+
| 'QUEUED'
|
|
2781
|
+
| 'CREATING_SNAPSHOTS'
|
|
2782
|
+
| 'CREATING_SIMULATIONS'
|
|
2783
|
+
| 'PREPARING_CAPACITY'
|
|
2784
|
+
| 'RUNNING_SIMULATIONS'
|
|
2785
|
+
| 'COMPLETED'
|
|
2786
|
+
| 'FAILED'
|
|
2787
|
+
| 'TIMED_OUT'
|
|
2788
|
+
| 'CANCELLED'
|
|
2789
|
+
| 'CANCELLING'
|
|
2790
|
+
| 'ENDING_SIMULATIONS';
|
|
2791
|
+
}
|
|
2792
|
+
|
|
2793
|
+
export interface SimulationRunPlanJobCreateDebriefParams {
|
|
2794
|
+
/**
|
|
2795
|
+
* Generate a new debrief even when a ready one exists. Without it, an existing
|
|
2796
|
+
* ready or in-progress debrief is returned as-is.
|
|
2797
|
+
*/
|
|
2798
|
+
regenerate?: boolean;
|
|
2799
|
+
}
|
|
2800
|
+
|
|
2801
|
+
export interface SimulationRunPlanJobGetResultsParams {
|
|
2802
|
+
/**
|
|
2803
|
+
* Simulation run plan job to compare this run against, e.g. the last run on your
|
|
2804
|
+
* main branch. Defaults to the plan's previous settled run. Any run in the project
|
|
2805
|
+
* works, including another plan's: checks are matched by metric, and a check only
|
|
2806
|
+
* one run graded reads null on the other side.
|
|
2807
|
+
*/
|
|
2808
|
+
compareToJobId?: string;
|
|
1397
2809
|
}
|
|
1398
2810
|
|
|
1399
2811
|
export interface SimulationRunPlanJobStartParams {
|
|
@@ -1468,9 +2880,13 @@ export declare namespace SimulationRunPlanJob {
|
|
|
1468
2880
|
export {
|
|
1469
2881
|
type SimulationRunPlanJobListResponse as SimulationRunPlanJobListResponse,
|
|
1470
2882
|
type SimulationRunPlanJobCancelResponse as SimulationRunPlanJobCancelResponse,
|
|
2883
|
+
type SimulationRunPlanJobCreateDebriefResponse as SimulationRunPlanJobCreateDebriefResponse,
|
|
1471
2884
|
type SimulationRunPlanJobGetByIDResponse as SimulationRunPlanJobGetByIDResponse,
|
|
2885
|
+
type SimulationRunPlanJobGetResultsResponse as SimulationRunPlanJobGetResultsResponse,
|
|
1472
2886
|
type SimulationRunPlanJobStartResponse as SimulationRunPlanJobStartResponse,
|
|
1473
2887
|
type SimulationRunPlanJobListParams as SimulationRunPlanJobListParams,
|
|
2888
|
+
type SimulationRunPlanJobCreateDebriefParams as SimulationRunPlanJobCreateDebriefParams,
|
|
2889
|
+
type SimulationRunPlanJobGetResultsParams as SimulationRunPlanJobGetResultsParams,
|
|
1474
2890
|
type SimulationRunPlanJobStartParams as SimulationRunPlanJobStartParams,
|
|
1475
2891
|
};
|
|
1476
2892
|
}
|