@roarkanalytics/sdk 3.9.0 → 3.11.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 +24 -0
- package/client.d.mts +3 -0
- package/client.d.mts.map +1 -1
- package/client.d.ts +3 -0
- package/client.d.ts.map +1 -1
- package/client.js +3 -0
- package/client.js.map +1 -1
- package/client.mjs +3 -0
- package/client.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/customer-flow-edge-case.d.mts +9 -0
- package/resources/customer-flow-edge-case.d.mts.map +1 -1
- package/resources/customer-flow-edge-case.d.ts +9 -0
- package/resources/customer-flow-edge-case.d.ts.map +1 -1
- package/resources/customer-flow.d.mts +30 -0
- package/resources/customer-flow.d.mts.map +1 -1
- package/resources/customer-flow.d.ts +30 -0
- package/resources/customer-flow.d.ts.map +1 -1
- package/resources/index.d.mts +1 -0
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +1 -0
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +3 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/simulation-run-plan.d.mts +128 -12
- package/resources/simulation-run-plan.d.mts.map +1 -1
- package/resources/simulation-run-plan.d.ts +128 -12
- package/resources/simulation-run-plan.d.ts.map +1 -1
- package/resources/simulation-template.d.mts +162 -0
- package/resources/simulation-template.d.mts.map +1 -0
- package/resources/simulation-template.d.ts +162 -0
- package/resources/simulation-template.d.ts.map +1 -0
- package/resources/simulation-template.js +31 -0
- package/resources/simulation-template.js.map +1 -0
- package/resources/simulation-template.mjs +27 -0
- package/resources/simulation-template.mjs.map +1 -0
- package/resources/simulation.d.mts +218 -6
- package/resources/simulation.d.mts.map +1 -1
- package/resources/simulation.d.ts +218 -6
- package/resources/simulation.d.ts.map +1 -1
- package/resources/simulation.js +10 -3
- package/resources/simulation.js.map +1 -1
- package/resources/simulation.mjs +10 -3
- package/resources/simulation.mjs.map +1 -1
- package/src/client.ts +8 -0
- package/src/resources/customer-flow-edge-case.ts +18 -0
- package/src/resources/customer-flow.ts +60 -0
- package/src/resources/index.ts +1 -0
- package/src/resources/simulation-run-plan.ts +146 -12
- package/src/resources/simulation-template.ts +190 -0
- package/src/resources/simulation.ts +244 -6
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.mts.map +1 -1
- package/version.d.ts +1 -1
- package/version.d.ts.map +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/version.mjs +1 -1
- package/version.mjs.map +1 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { APIResource } from "../core/resource.js";
|
|
2
|
+
import { APIPromise } from "../core/api-promise.js";
|
|
3
|
+
import { RequestOptions } from "../internal/request-options.js";
|
|
4
|
+
export declare class SimulationTemplate extends APIResource {
|
|
5
|
+
/**
|
|
6
|
+
* Returns the built-in simulation templates, each resolved against this project:
|
|
7
|
+
* the metric and check definitions it collects, and the flows it runs with the
|
|
8
|
+
* variants it covers.
|
|
9
|
+
*
|
|
10
|
+
* A template is a preset rather than a stored object, so building a run from one
|
|
11
|
+
* produces an ordinary run plan you own and can edit afterwards. Pass a `slug` as
|
|
12
|
+
* `template` to POST /v1/simulation/run.
|
|
13
|
+
*
|
|
14
|
+
* Every entry is complete, so there is no per-template endpoint to follow up with,
|
|
15
|
+
* and the list is a fixed catalogue rather than a paginated one. Only templates a
|
|
16
|
+
* request can actually run are listed.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const simulationTemplates =
|
|
21
|
+
* await client.simulationTemplate.list();
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
list(options?: RequestOptions): APIPromise<SimulationTemplateListResponse>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The built-in simulation templates.
|
|
28
|
+
*/
|
|
29
|
+
export interface SimulationTemplateListResponse {
|
|
30
|
+
data: Array<SimulationTemplateListResponse.Data>;
|
|
31
|
+
}
|
|
32
|
+
export declare namespace SimulationTemplateListResponse {
|
|
33
|
+
/**
|
|
34
|
+
* A built-in simulation template, resolved against this project: what it measures
|
|
35
|
+
* and what it runs.
|
|
36
|
+
*/
|
|
37
|
+
interface Data {
|
|
38
|
+
/**
|
|
39
|
+
* Grouping used in the dashboard library
|
|
40
|
+
*/
|
|
41
|
+
category: string;
|
|
42
|
+
/**
|
|
43
|
+
* The per-simulation cap a run from this template uses unless the request sets its
|
|
44
|
+
* own.
|
|
45
|
+
*/
|
|
46
|
+
defaultMaxSimulationDurationSeconds: number;
|
|
47
|
+
/**
|
|
48
|
+
* What this template tests
|
|
49
|
+
*/
|
|
50
|
+
description: string;
|
|
51
|
+
/**
|
|
52
|
+
* The flows this template runs, and which of their ways of running it covers.
|
|
53
|
+
*
|
|
54
|
+
* Empty means the template presets only what to measure, and a run has to say what
|
|
55
|
+
* to measure it on: pass `flows` to POST /v1/simulation/run. When it is not empty
|
|
56
|
+
* you can still pass `flows` to narrow it, naming a subset of the ids listed here.
|
|
57
|
+
*/
|
|
58
|
+
flows: Array<Data.Flow>;
|
|
59
|
+
/**
|
|
60
|
+
* Whether runs from this template also collect each attached flow's own metrics,
|
|
61
|
+
* on top of the template's set.
|
|
62
|
+
*/
|
|
63
|
+
includeFlowMetrics: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* The metrics this template collects, resolved to this project's definitions.
|
|
66
|
+
*/
|
|
67
|
+
metrics: Array<Data.Metric>;
|
|
68
|
+
/**
|
|
69
|
+
* Stable identifier. Name this in a run request.
|
|
70
|
+
*/
|
|
71
|
+
slug: string;
|
|
72
|
+
/**
|
|
73
|
+
* The Pass/Fail checks this template attaches alongside its metrics.
|
|
74
|
+
*/
|
|
75
|
+
thresholds: Array<Data.Threshold>;
|
|
76
|
+
/**
|
|
77
|
+
* Display name
|
|
78
|
+
*/
|
|
79
|
+
title: string;
|
|
80
|
+
}
|
|
81
|
+
namespace Data {
|
|
82
|
+
interface Flow {
|
|
83
|
+
/**
|
|
84
|
+
* Customer flow ID
|
|
85
|
+
*/
|
|
86
|
+
id: string;
|
|
87
|
+
/**
|
|
88
|
+
* The other ways of running this flow that this template covers.
|
|
89
|
+
*/
|
|
90
|
+
edgeCases: Array<Flow.EdgeCase>;
|
|
91
|
+
/**
|
|
92
|
+
* The flow's default way of running, when this template covers it. Null when it
|
|
93
|
+
* does not, or the flow has none.
|
|
94
|
+
*/
|
|
95
|
+
happyPath: Flow.HappyPath | null;
|
|
96
|
+
/**
|
|
97
|
+
* The stable slug of a Roark-curated flow, null for one of your own.
|
|
98
|
+
*
|
|
99
|
+
* Prefer this over `id` when you are storing a run in version control: a curated
|
|
100
|
+
* flow is a global row, so its id is the same for every project but differs
|
|
101
|
+
* between deployments, while the slug is stable wherever the flow exists. Both are
|
|
102
|
+
* accepted by a run request.
|
|
103
|
+
*/
|
|
104
|
+
slug: string | null;
|
|
105
|
+
/**
|
|
106
|
+
* Flow title
|
|
107
|
+
*/
|
|
108
|
+
title: string;
|
|
109
|
+
}
|
|
110
|
+
namespace Flow {
|
|
111
|
+
interface EdgeCase {
|
|
112
|
+
/**
|
|
113
|
+
* Customer flow variant ID
|
|
114
|
+
*/
|
|
115
|
+
id: string;
|
|
116
|
+
/**
|
|
117
|
+
* The stable slug of a Roark-curated edge case, null for one of your own.
|
|
118
|
+
*
|
|
119
|
+
* Prefer this over `id` in a run you keep in version control. A curated edge case
|
|
120
|
+
* is a global row, so its id differs between deployments, and renaming one
|
|
121
|
+
* replaces the row and its id outright. The slug survives both.
|
|
122
|
+
*/
|
|
123
|
+
slug: string | null;
|
|
124
|
+
/**
|
|
125
|
+
* What this way of running the flow is called
|
|
126
|
+
*/
|
|
127
|
+
title: string;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The flow's default way of running, when this template covers it. Null when it
|
|
131
|
+
* does not, or the flow has none.
|
|
132
|
+
*/
|
|
133
|
+
interface HappyPath {
|
|
134
|
+
title: string;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
interface Metric {
|
|
138
|
+
/**
|
|
139
|
+
* Metric definition ID
|
|
140
|
+
*/
|
|
141
|
+
id: string;
|
|
142
|
+
/**
|
|
143
|
+
* Stable metric slug, e.g. "response_time"
|
|
144
|
+
*/
|
|
145
|
+
slug: string;
|
|
146
|
+
}
|
|
147
|
+
interface Threshold {
|
|
148
|
+
/**
|
|
149
|
+
* Metric definition ID
|
|
150
|
+
*/
|
|
151
|
+
id: string;
|
|
152
|
+
/**
|
|
153
|
+
* Stable metric slug, e.g. "response_time"
|
|
154
|
+
*/
|
|
155
|
+
slug: string;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export declare namespace SimulationTemplate {
|
|
160
|
+
export { type SimulationTemplateListResponse as SimulationTemplateListResponse };
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=simulation-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulation-template.d.ts","sourceRoot":"","sources":["../src/resources/simulation-template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,4BAAyB;AAC/C,OAAO,EAAE,UAAU,EAAE,+BAA4B;AACjD,OAAO,EAAE,cAAc,EAAE,uCAAoC;AAE7D,qBAAa,kBAAmB,SAAQ,WAAW;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,8BAA8B,CAAC;CAG3E;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,KAAK,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,yBAAiB,8BAA8B,CAAC;IAC9C;;;OAGG;IACH,UAAiB,IAAI;QACnB;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;WAGG;QACH,mCAAmC,EAAE,MAAM,CAAC;QAE5C;;WAEG;QACH,WAAW,EAAE,MAAM,CAAC;QAEpB;;;;;;WAMG;QACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB;;;WAGG;QACH,kBAAkB,EAAE,OAAO,CAAC;QAE5B;;WAEG;QACH,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QAEb;;WAEG;QACH,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElC;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,IAAI,CAAC;QACpB,UAAiB,IAAI;YACnB;;eAEG;YACH,EAAE,EAAE,MAAM,CAAC;YAEX;;eAEG;YACH,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEhC;;;eAGG;YACH,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEjC;;;;;;;eAOG;YACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;YAEpB;;eAEG;YACH,KAAK,EAAE,MAAM,CAAC;SACf;QAED,UAAiB,IAAI,CAAC;YACpB,UAAiB,QAAQ;gBACvB;;mBAEG;gBACH,EAAE,EAAE,MAAM,CAAC;gBAEX;;;;;;mBAMG;gBACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEpB;;mBAEG;gBACH,KAAK,EAAE,MAAM,CAAC;aACf;YAED;;;eAGG;YACH,UAAiB,SAAS;gBACxB,KAAK,EAAE,MAAM,CAAC;aACf;SACF;QAED,UAAiB,MAAM;YACrB;;eAEG;YACH,EAAE,EAAE,MAAM,CAAC;YAEX;;eAEG;YACH,IAAI,EAAE,MAAM,CAAC;SACd;QAED,UAAiB,SAAS;YACxB;;eAEG;YACH,EAAE,EAAE,MAAM,CAAC;YAEX;;eAEG;YACH,IAAI,EAAE,MAAM,CAAC;SACd;KACF;CACF;AAED,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC;IAC1C,OAAO,EAAE,KAAK,8BAA8B,IAAI,8BAA8B,EAAE,CAAC;CAClF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SimulationTemplate = void 0;
|
|
5
|
+
const resource_1 = require("../core/resource.js");
|
|
6
|
+
class SimulationTemplate extends resource_1.APIResource {
|
|
7
|
+
/**
|
|
8
|
+
* Returns the built-in simulation templates, each resolved against this project:
|
|
9
|
+
* the metric and check definitions it collects, and the flows it runs with the
|
|
10
|
+
* variants it covers.
|
|
11
|
+
*
|
|
12
|
+
* A template is a preset rather than a stored object, so building a run from one
|
|
13
|
+
* produces an ordinary run plan you own and can edit afterwards. Pass a `slug` as
|
|
14
|
+
* `template` to POST /v1/simulation/run.
|
|
15
|
+
*
|
|
16
|
+
* Every entry is complete, so there is no per-template endpoint to follow up with,
|
|
17
|
+
* and the list is a fixed catalogue rather than a paginated one. Only templates a
|
|
18
|
+
* request can actually run are listed.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const simulationTemplates =
|
|
23
|
+
* await client.simulationTemplate.list();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
list(options) {
|
|
27
|
+
return this._client.get('/v1/simulation/template', options);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.SimulationTemplate = SimulationTemplate;
|
|
31
|
+
//# sourceMappingURL=simulation-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulation-template.js","sourceRoot":"","sources":["../src/resources/simulation-template.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,kDAA+C;AAI/C,MAAa,kBAAmB,SAAQ,sBAAW;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,CAAC,OAAwB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF;AAvBD,gDAuBC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
import { APIResource } from "../core/resource.mjs";
|
|
3
|
+
export class SimulationTemplate extends APIResource {
|
|
4
|
+
/**
|
|
5
|
+
* Returns the built-in simulation templates, each resolved against this project:
|
|
6
|
+
* the metric and check definitions it collects, and the flows it runs with the
|
|
7
|
+
* variants it covers.
|
|
8
|
+
*
|
|
9
|
+
* A template is a preset rather than a stored object, so building a run from one
|
|
10
|
+
* produces an ordinary run plan you own and can edit afterwards. Pass a `slug` as
|
|
11
|
+
* `template` to POST /v1/simulation/run.
|
|
12
|
+
*
|
|
13
|
+
* Every entry is complete, so there is no per-template endpoint to follow up with,
|
|
14
|
+
* and the list is a fixed catalogue rather than a paginated one. Only templates a
|
|
15
|
+
* request can actually run are listed.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const simulationTemplates =
|
|
20
|
+
* await client.simulationTemplate.list();
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
list(options) {
|
|
24
|
+
return this._client.get('/v1/simulation/template', options);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=simulation-template.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulation-template.mjs","sourceRoot":"","sources":["../src/resources/simulation-template.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,WAAW,EAAE,6BAAyB;AAI/C,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,CAAC,OAAwB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -5,9 +5,16 @@ export declare class Simulation extends APIResource {
|
|
|
5
5
|
/**
|
|
6
6
|
* Starts a simulation and returns the run.
|
|
7
7
|
*
|
|
8
|
-
* Send `
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Send `template` to run one of the built-in templates: it supplies the metrics
|
|
9
|
+
* and checks, and for some templates the flows too, so the request only names the
|
|
10
|
+
* agent and the direction. Send `plan` to describe a simulation yourself and run
|
|
11
|
+
* it once. Send `planId` to run a plan you already have.
|
|
12
|
+
*
|
|
13
|
+
* `template` and `plan` both resolve to a run plan, returned as
|
|
14
|
+
* `simulationRunPlanId`. Add `saveAsPlan` to keep it, or read it back to see
|
|
15
|
+
* exactly what ran. A plan built from a template is a snapshot: retuning the
|
|
16
|
+
* template later never changes what that plan runs, which is what makes a saved
|
|
17
|
+
* one safe to pin in CI.
|
|
11
18
|
*
|
|
12
19
|
* @example
|
|
13
20
|
* ```ts
|
|
@@ -65,7 +72,7 @@ export declare namespace SimulationRunResponse {
|
|
|
65
72
|
status: 'PENDING' | 'QUEUED' | 'CREATING_SNAPSHOTS' | 'CREATING_SIMULATIONS' | 'PREPARING_CAPACITY' | 'RUNNING_SIMULATIONS' | 'COMPLETED' | 'FAILED' | 'TIMED_OUT' | 'CANCELLED' | 'CANCELLING' | 'ENDING_SIMULATIONS';
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
|
-
export type SimulationRunParams = SimulationRunParams.RunSimulationFromConfig | SimulationRunParams.RunSimulationFromPlanID;
|
|
75
|
+
export type SimulationRunParams = SimulationRunParams.RunSimulationFromConfig | SimulationRunParams.RunSimulationFromPlanID | SimulationRunParams.RunSimulationFromTemplate;
|
|
69
76
|
export declare namespace SimulationRunParams {
|
|
70
77
|
interface RunSimulationFromConfig {
|
|
71
78
|
/**
|
|
@@ -169,6 +176,19 @@ export declare namespace SimulationRunParams {
|
|
|
169
176
|
* once with a different persona override or different variables.
|
|
170
177
|
*/
|
|
171
178
|
flows?: Array<Plan.Flow>;
|
|
179
|
+
/**
|
|
180
|
+
* Also collect each attached flow's own metrics, on top of the `metrics` named
|
|
181
|
+
* here.
|
|
182
|
+
*
|
|
183
|
+
* Default true, which is what you want when you brought your own flows and their
|
|
184
|
+
* graders. Set false for a run whose metric list is meant to be exhaustive: a
|
|
185
|
+
* template like Load Testing or Voicemail deliberately grades a narrow set, and
|
|
186
|
+
* inheriting every flow metric on top multiplies analysis cost across the volume
|
|
187
|
+
* without adding signal.
|
|
188
|
+
*
|
|
189
|
+
* GET /v1/simulation/template returns the value each template expects.
|
|
190
|
+
*/
|
|
191
|
+
includeFlowMetrics?: boolean;
|
|
172
192
|
/**
|
|
173
193
|
* Number of iterations to run for each test case (1-10000)
|
|
174
194
|
*/
|
|
@@ -239,7 +259,7 @@ export declare namespace SimulationRunParams {
|
|
|
239
259
|
/**
|
|
240
260
|
* The customer flow to run.
|
|
241
261
|
*/
|
|
242
|
-
id
|
|
262
|
+
id?: string;
|
|
243
263
|
/**
|
|
244
264
|
* `"ALL"` runs every edge case the flow has when the run starts, so one added
|
|
245
265
|
* later is covered. An array runs only the ones you name, each able to carry its
|
|
@@ -254,6 +274,12 @@ export declare namespace SimulationRunParams {
|
|
|
254
274
|
* Runs everything this attachment resolves as that persona instead of its own.
|
|
255
275
|
*/
|
|
256
276
|
personaOverrideId?: string | null;
|
|
277
|
+
/**
|
|
278
|
+
* The Roark-curated flow to run, by its stable slug. Use instead of `id` for a run
|
|
279
|
+
* you keep in version control: a curated flow’s id differs between deployments,
|
|
280
|
+
* its slug does not. Your own flows have no slug and are named by `id`.
|
|
281
|
+
*/
|
|
282
|
+
slug?: string;
|
|
257
283
|
/**
|
|
258
284
|
* Values for everything it resolves.
|
|
259
285
|
*/
|
|
@@ -266,11 +292,18 @@ export declare namespace SimulationRunParams {
|
|
|
266
292
|
/**
|
|
267
293
|
* The edge case to run.
|
|
268
294
|
*/
|
|
269
|
-
id
|
|
295
|
+
id?: string;
|
|
270
296
|
/**
|
|
271
297
|
* Run this one as that persona instead of its own.
|
|
272
298
|
*/
|
|
273
299
|
personaOverrideId?: string | null;
|
|
300
|
+
/**
|
|
301
|
+
* The edge case to run, by its stable slug, matched within this flow. Use instead
|
|
302
|
+
* of `id` for a run you keep in version control: a curated edge case’s id differs
|
|
303
|
+
* between deployments and changes outright if it is renamed. Your own edge cases
|
|
304
|
+
* have no slug and are named by `id`.
|
|
305
|
+
*/
|
|
306
|
+
slug?: string;
|
|
274
307
|
/**
|
|
275
308
|
* Values for this one only.
|
|
276
309
|
*/
|
|
@@ -398,6 +431,185 @@ export declare namespace SimulationRunParams {
|
|
|
398
431
|
};
|
|
399
432
|
}
|
|
400
433
|
}
|
|
434
|
+
interface RunSimulationFromTemplate {
|
|
435
|
+
/**
|
|
436
|
+
* The agent endpoints to call. No template can know these.
|
|
437
|
+
*/
|
|
438
|
+
agentEndpoints: Array<RunSimulationFromTemplate.AgentEndpoint>;
|
|
439
|
+
/**
|
|
440
|
+
* Direction of the simulation (INBOUND or OUTBOUND)
|
|
441
|
+
*/
|
|
442
|
+
direction: 'INBOUND' | 'OUTBOUND';
|
|
443
|
+
/**
|
|
444
|
+
* The template to run, as listed by GET /v1/simulation/template.
|
|
445
|
+
*/
|
|
446
|
+
template: string;
|
|
447
|
+
/**
|
|
448
|
+
* Phrases that trigger end of call. Empty array disables the feature.
|
|
449
|
+
*/
|
|
450
|
+
endCallPhrases?: Array<string>;
|
|
451
|
+
/**
|
|
452
|
+
* Semantic conditions that trigger end of call. The LLM evaluates the conversation
|
|
453
|
+
* against these conditions. Empty array disables the feature.
|
|
454
|
+
*/
|
|
455
|
+
endCallReasons?: Array<string>;
|
|
456
|
+
/**
|
|
457
|
+
* Merge the customer's own recording of the real call into each simulation, so
|
|
458
|
+
* metrics can be scored against the live leg as well as the simulated one. This is
|
|
459
|
+
* the API equivalent of the dashboard's live-enrichment toggle.
|
|
460
|
+
*
|
|
461
|
+
* With this on, the run provisions a phone number and holds each call open for up
|
|
462
|
+
* to 15 minutes waiting for a matching call to be posted to POST /v1/call. A call
|
|
463
|
+
* matches on the provisioned number (`roarkPhoneNumber` on the job) with a start
|
|
464
|
+
* time inside the simulation window. If nothing arrives, the simulation still
|
|
465
|
+
* completes and any `LIVE`-sourced metric produces no value.
|
|
466
|
+
*
|
|
467
|
+
* Required by any metric whose `requiresLiveConversation` is true: without it that
|
|
468
|
+
* metric is silently skipped.
|
|
469
|
+
*/
|
|
470
|
+
enrichWithLiveConversation?: boolean;
|
|
471
|
+
/**
|
|
472
|
+
* Execution mode (PARALLEL or SEQUENTIAL)
|
|
473
|
+
*/
|
|
474
|
+
executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';
|
|
475
|
+
/**
|
|
476
|
+
* The flows to run, in the same shape a run plan takes them.
|
|
477
|
+
*
|
|
478
|
+
* Required when the template lists no flows of its own: it presets what to
|
|
479
|
+
* measure, and this says what to measure it on. Optional when it does, where these
|
|
480
|
+
* REPLACE the ones it would have run, so you can narrow a suite to the cases you
|
|
481
|
+
* care about. Either way, GET /v1/simulation/template lists the flows and variant
|
|
482
|
+
* ids each template covers.
|
|
483
|
+
*/
|
|
484
|
+
flows?: Array<RunSimulationFromTemplate.Flow>;
|
|
485
|
+
/**
|
|
486
|
+
* Number of iterations to run for each test case (1-10000)
|
|
487
|
+
*/
|
|
488
|
+
iterationCount?: number;
|
|
489
|
+
/**
|
|
490
|
+
* Maximum number of concurrent simulation jobs
|
|
491
|
+
*/
|
|
492
|
+
maxConcurrentJobs?: number;
|
|
493
|
+
/**
|
|
494
|
+
* Defaults to the template's `defaultMaxSimulationDurationSeconds`, as returned by
|
|
495
|
+
* GET /v1/simulation/template.
|
|
496
|
+
*/
|
|
497
|
+
maxSimulationDurationSeconds?: number;
|
|
498
|
+
/**
|
|
499
|
+
* What to call this. Defaults to the template's name and the date, and required
|
|
500
|
+
* with `saveAsPlan`.
|
|
501
|
+
*/
|
|
502
|
+
name?: string;
|
|
503
|
+
/**
|
|
504
|
+
* Keeps the resolved configuration as a run plan, listed by GET
|
|
505
|
+
* /v1/simulation/plan and re-runnable with `planId`. Requires `name`.
|
|
506
|
+
*/
|
|
507
|
+
saveAsPlan?: boolean;
|
|
508
|
+
/**
|
|
509
|
+
* Timeout in seconds for silence detection
|
|
510
|
+
*/
|
|
511
|
+
silenceTimeoutSeconds?: number;
|
|
512
|
+
/**
|
|
513
|
+
* Values for the {{variables}} the run resolves. An object applies them
|
|
514
|
+
* everywhere; an array targets a flow, its happy path, or one of its edge cases
|
|
515
|
+
* with `flowId`.
|
|
516
|
+
*
|
|
517
|
+
* The scenario-scoped form the other variants accept is not valid here: a template
|
|
518
|
+
* run is always flow-based, so there would be no scenario for it to reach.
|
|
519
|
+
*/
|
|
520
|
+
variables?: {
|
|
521
|
+
[key: string]: string;
|
|
522
|
+
} | Array<RunSimulationFromTemplate.UnionMember1>;
|
|
523
|
+
}
|
|
524
|
+
namespace RunSimulationFromTemplate {
|
|
525
|
+
interface AgentEndpoint {
|
|
526
|
+
id: string;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* One customer flow attached to a run plan, and which of its ways of running you
|
|
530
|
+
* cover.
|
|
531
|
+
*
|
|
532
|
+
* Attaching the same flow more than once with different overrides is how you fan
|
|
533
|
+
* it out across personas or values.
|
|
534
|
+
*/
|
|
535
|
+
interface Flow {
|
|
536
|
+
/**
|
|
537
|
+
* The customer flow to run.
|
|
538
|
+
*/
|
|
539
|
+
id?: string;
|
|
540
|
+
/**
|
|
541
|
+
* `"ALL"` runs every edge case the flow has when the run starts, so one added
|
|
542
|
+
* later is covered. An array runs only the ones you name, each able to carry its
|
|
543
|
+
* own persona override and values.
|
|
544
|
+
*/
|
|
545
|
+
edgeCases?: 'ALL' | Array<Flow.UnionMember1>;
|
|
546
|
+
/**
|
|
547
|
+
* Run the flow's happy path. Resolved when the run starts, so it follows the flow.
|
|
548
|
+
*/
|
|
549
|
+
happyPath?: boolean;
|
|
550
|
+
/**
|
|
551
|
+
* Runs everything this attachment resolves as that persona instead of its own.
|
|
552
|
+
*/
|
|
553
|
+
personaOverrideId?: string | null;
|
|
554
|
+
/**
|
|
555
|
+
* The Roark-curated flow to run, by its stable slug. Use instead of `id` for a run
|
|
556
|
+
* you keep in version control: a curated flow’s id differs between deployments,
|
|
557
|
+
* its slug does not. Your own flows have no slug and are named by `id`.
|
|
558
|
+
*/
|
|
559
|
+
slug?: string;
|
|
560
|
+
/**
|
|
561
|
+
* Values for everything it resolves.
|
|
562
|
+
*/
|
|
563
|
+
variables?: {
|
|
564
|
+
[key: string]: string;
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
namespace Flow {
|
|
568
|
+
interface UnionMember1 {
|
|
569
|
+
/**
|
|
570
|
+
* The edge case to run.
|
|
571
|
+
*/
|
|
572
|
+
id?: string;
|
|
573
|
+
/**
|
|
574
|
+
* Run this one as that persona instead of its own.
|
|
575
|
+
*/
|
|
576
|
+
personaOverrideId?: string | null;
|
|
577
|
+
/**
|
|
578
|
+
* The edge case to run, by its stable slug, matched within this flow. Use instead
|
|
579
|
+
* of `id` for a run you keep in version control: a curated edge case’s id differs
|
|
580
|
+
* between deployments and changes outright if it is renamed. Your own edge cases
|
|
581
|
+
* have no slug and are named by `id`.
|
|
582
|
+
*/
|
|
583
|
+
slug?: string;
|
|
584
|
+
/**
|
|
585
|
+
* Values for this one only.
|
|
586
|
+
*/
|
|
587
|
+
variables?: {
|
|
588
|
+
[key: string]: string;
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
interface UnionMember1 {
|
|
593
|
+
/**
|
|
594
|
+
* A customer flow this plan runs.
|
|
595
|
+
*/
|
|
596
|
+
flowId: string;
|
|
597
|
+
/**
|
|
598
|
+
* The values to apply.
|
|
599
|
+
*/
|
|
600
|
+
variables: {
|
|
601
|
+
[key: string]: string;
|
|
602
|
+
};
|
|
603
|
+
/**
|
|
604
|
+
* Narrow to one edge case of that flow.
|
|
605
|
+
*/
|
|
606
|
+
edgeCaseId?: string;
|
|
607
|
+
/**
|
|
608
|
+
* Narrow to the flow's happy path.
|
|
609
|
+
*/
|
|
610
|
+
happyPath?: true;
|
|
611
|
+
}
|
|
612
|
+
}
|
|
401
613
|
}
|
|
402
614
|
export declare namespace Simulation {
|
|
403
615
|
export { type SimulationRunResponse as SimulationRunResponse, type SimulationRunParams as SimulationRunParams, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulation.d.mts","sourceRoot":"","sources":["../src/resources/simulation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,6BAAyB;AAC/C,OAAO,EAAE,UAAU,EAAE,gCAA4B;AACjD,OAAO,EAAE,cAAc,EAAE,wCAAoC;AAE7D,qBAAa,UAAW,SAAQ,WAAW;IACzC
|
|
1
|
+
{"version":3,"file":"simulation.d.mts","sourceRoot":"","sources":["../src/resources/simulation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,6BAAyB;AAC/C,OAAO,EAAE,UAAU,EAAE,gCAA4B;AACjD,OAAO,EAAE,cAAc,EAAE,wCAAoC;AAE7D,qBAAa,UAAW,SAAQ,WAAW;IACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,qBAAqB,CAAC;CAG5F;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;CAClC;AAED,yBAAiB,qBAAqB,CAAC;IACrC;;OAEG;IACH,UAAiB,IAAI;QACnB;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC;QAElB;;;WAGG;QACH,WAAW,EAAE,OAAO,CAAC;QAErB;;WAEG;QACH,kBAAkB,EAAE,MAAM,CAAC;QAE3B;;;WAGG;QACH,mBAAmB,EAAE,MAAM,CAAC;QAE5B;;WAEG;QACH,sBAAsB,EAAE,MAAM,CAAC;QAE/B;;;WAGG;QACH,MAAM,EACF,SAAS,GACT,QAAQ,GACR,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,qBAAqB,GACrB,WAAW,GACX,QAAQ,GACR,WAAW,GACX,WAAW,GACX,YAAY,GACZ,oBAAoB,CAAC;KAC1B;CACF;AAED,MAAM,MAAM,mBAAmB,GAC3B,mBAAmB,CAAC,uBAAuB,GAC3C,mBAAmB,CAAC,uBAAuB,GAC3C,mBAAmB,CAAC,yBAAyB,CAAC;AAElD,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,uBAAuB;QACtC;;WAEG;QACH,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;QAEnC;;;;;;;WAOG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB;;;;;;;;;;;;;;;;;;;;;;;;WAwBG;QACH,SAAS,CAAC,EACN;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,GACzB,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,GAC3C,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;KACjD;IAED,UAAiB,uBAAuB,CAAC;QACvC;;WAEG;QACH,UAAiB,IAAI;YACnB;;eAEG;YACH,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE1C;;eAEG;YACH,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;YAElC;;eAEG;YACH,4BAA4B,EAAE,MAAM,CAAC;YAErC;;;eAGG;YACH,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE5B;;eAEG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YAErB;;eAEG;YACH,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAE/B;;;eAGG;YACH,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAE/B;;;;;;;;;;;;;eAaG;YACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;YAErC;;eAEG;YACH,aAAa,CAAC,EAAE,UAAU,GAAG,0BAA0B,GAAG,oBAAoB,CAAC;YAE/E;;;eAGG;YACH,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzB;;;;;;;;;;;eAWG;YACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAE7B;;eAEG;YACH,cAAc,CAAC,EAAE,MAAM,CAAC;YAExB;;eAEG;YACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAE3B;;;eAGG;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YAEd;;;eAGG;YACH,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE/B;;;eAGG;YACH,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjC;;eAEG;YACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;SAChC;QAED,UAAiB,IAAI,CAAC;YACpB,UAAiB,aAAa;gBAC5B,EAAE,EAAE,MAAM,CAAC;aACZ;YAED,UAAiB,MAAM;gBACrB;;mBAEG;gBACH,EAAE,CAAC,EAAE,MAAM,CAAC;gBAEZ;;;;;;;;;mBASG;gBACH,kBAAkB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;gBAEjD;;;mBAGG;gBACH,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAElB;;;mBAGG;gBACH,IAAI,CAAC,EAAE,MAAM,CAAC;aACf;YAED;;;;;;eAMG;YACH,UAAiB,IAAI;gBACnB;;mBAEG;gBACH,EAAE,CAAC,EAAE,MAAM,CAAC;gBAEZ;;;;mBAIG;gBACH,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE7C;;mBAEG;gBACH,SAAS,CAAC,EAAE,OAAO,CAAC;gBAEpB;;mBAEG;gBACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAElC;;;;mBAIG;gBACH,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEd;;mBAEG;gBACH,SAAS,CAAC,EAAE;oBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;iBAAE,CAAC;aACvC;YAED,UAAiB,IAAI,CAAC;gBACpB,UAAiB,YAAY;oBAC3B;;uBAEG;oBACH,EAAE,CAAC,EAAE,MAAM,CAAC;oBAEZ;;uBAEG;oBACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;oBAElC;;;;;uBAKG;oBACH,IAAI,CAAC,EAAE,MAAM,CAAC;oBAEd;;uBAEG;oBACH,SAAS,CAAC,EAAE;wBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;qBAAE,CAAC;iBACvC;aACF;YAED,UAAiB,OAAO;gBACtB,EAAE,EAAE,MAAM,CAAC;aACZ;YAED,UAAiB,QAAQ;gBACvB;;mBAEG;gBACH,EAAE,EAAE,MAAM,CAAC;gBAEX;;;mBAGG;gBACH,SAAS,CAAC,EAAE;oBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;iBAAE,CAAC;aACvC;SACF;QAED,UAAiB,YAAY;YAC3B;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YAEf;;eAEG;YACH,SAAS,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;aAAE,CAAC;YAErC;;eAEG;YACH,UAAU,CAAC,EAAE,MAAM,CAAC;YAEpB;;eAEG;YACH,SAAS,CAAC,EAAE,IAAI,CAAC;SAClB;QAED,UAAiB,YAAY;YAC3B;;eAEG;YACH,UAAU,EAAE,MAAM,CAAC;YAEnB;;eAEG;YACH,SAAS,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;aAAE,CAAC;SACtC;KACF;IAED,UAAiB,uBAAuB;QACtC;;;WAGG;QACH,MAAM,EAAE,MAAM,CAAC;QAEf;;;;;;;;;;;;;;;;;;;;;;;;WAwBG;QACH,SAAS,CAAC,EACN;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,GACzB,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,GAC3C,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;KACjD;IAED,UAAiB,uBAAuB,CAAC;QACvC,UAAiB,YAAY;YAC3B;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YAEf;;eAEG;YACH,SAAS,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;aAAE,CAAC;YAErC;;eAEG;YACH,UAAU,CAAC,EAAE,MAAM,CAAC;YAEpB;;eAEG;YACH,SAAS,CAAC,EAAE,IAAI,CAAC;SAClB;QAED,UAAiB,YAAY;YAC3B;;eAEG;YACH,UAAU,EAAE,MAAM,CAAC;YAEnB;;eAEG;YACH,SAAS,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;aAAE,CAAC;SACtC;KACF;IAED,UAAiB,yBAAyB;QACxC;;WAEG;QACH,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAE/D;;WAEG;QACH,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;QAElC;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;WAEG;QACH,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAE/B;;;WAGG;QACH,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAE/B;;;;;;;;;;;;;WAaG;QACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;QAErC;;WAEG;QACH,aAAa,CAAC,EAAE,UAAU,GAAG,0BAA0B,GAAG,oBAAoB,CAAC;QAE/E;;;;;;;;WAQG;QACH,KAAK,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAE9C;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB;;WAEG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B;;;WAGG;QACH,4BAA4B,CAAC,EAAE,MAAM,CAAC;QAEtC;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;WAGG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB;;WAEG;QACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAE/B;;;;;;;WAOG;QACH,SAAS,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,GAAG,KAAK,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;KACvF;IAED,UAAiB,yBAAyB,CAAC;QACzC,UAAiB,aAAa;YAC5B,EAAE,EAAE,MAAM,CAAC;SACZ;QAED;;;;;;WAMG;QACH,UAAiB,IAAI;YACnB;;eAEG;YACH,EAAE,CAAC,EAAE,MAAM,CAAC;YAEZ;;;;eAIG;YACH,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE7C;;eAEG;YACH,SAAS,CAAC,EAAE,OAAO,CAAC;YAEpB;;eAEG;YACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAElC;;;;eAIG;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YAEd;;eAEG;YACH,SAAS,CAAC,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;aAAE,CAAC;SACvC;QAED,UAAiB,IAAI,CAAC;YACpB,UAAiB,YAAY;gBAC3B;;mBAEG;gBACH,EAAE,CAAC,EAAE,MAAM,CAAC;gBAEZ;;mBAEG;gBACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAElC;;;;;mBAKG;gBACH,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEd;;mBAEG;gBACH,SAAS,CAAC,EAAE;oBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;iBAAE,CAAC;aACvC;SACF;QAED,UAAiB,YAAY;YAC3B;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YAEf;;eAEG;YACH,SAAS,EAAE;gBAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;aAAE,CAAC;YAErC;;eAEG;YACH,UAAU,CAAC,EAAE,MAAM,CAAC;YAEpB;;eAEG;YACH,SAAS,CAAC,EAAE,IAAI,CAAC;SAClB;KACF;CACF;AAED,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,OAAO,EACL,KAAK,qBAAqB,IAAI,qBAAqB,EACnD,KAAK,mBAAmB,IAAI,mBAAmB,GAChD,CAAC;CACH"}
|