@roarkanalytics/cli 0.36.0 → 0.38.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 +21 -0
- package/README.md +38 -30
- package/commands.js +128 -239
- package/completions.js +4 -4
- package/man/roark-credential-create.1 +105 -0
- package/man/roark-credential-list.1 +93 -0
- package/man/roark-credential-revoke.1 +93 -0
- package/man/roark-simulation-plan-create.1 +8 -73
- package/man/roark-simulation-plan-update.1 +2 -2
- package/man/roark.1 +9 -0
- package/npm-shrinkwrap.json +6 -6
- package/package.json +5 -2
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.38.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.37.1...v0.38.0) (2026-10-07)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **cli:** cli update ([#95](https://github.com/roarkhq/cli-roark-analytics/issues/95)) ([f89088e](https://github.com/roarkhq/cli-roark-analytics/commit/f89088eafbadb8985cf42f9feb7cff1c5b76bc93))
|
|
9
|
+
|
|
10
|
+
## [0.37.1](https://github.com/roarkhq/cli-roark-analytics/compare/v0.37.0...v0.37.1) (2026-10-06)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **deps:** raise the @roarkanalytics/sdk floor to the release the credential commands need ([#93](https://github.com/roarkhq/cli-roark-analytics/issues/93)) ([179a331](https://github.com/roarkhq/cli-roark-analytics/commit/179a3319003fda28947bb06593c6e10b1e5af02c))
|
|
16
|
+
|
|
17
|
+
## [0.37.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.36.0...v0.37.0) (2026-10-05)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **cli:** cli update ([#91](https://github.com/roarkhq/cli-roark-analytics/issues/91)) ([430457c](https://github.com/roarkhq/cli-roark-analytics/commit/430457c6a130db45a1125c2f864187f1f5495b3b))
|
|
23
|
+
|
|
3
24
|
## [0.36.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.35.0...v0.36.0) (2026-10-03)
|
|
4
25
|
|
|
5
26
|
|
package/README.md
CHANGED
|
@@ -177,6 +177,14 @@ roark completion fish | source
|
|
|
177
177
|
| `roark config apply [dir]` | Reconcile the project to a config directory (or bundle). Previews and confirms first. |
|
|
178
178
|
| `roark config diff [dir]` | Preview the changes a config directory (or bundle) would make. No writes. |
|
|
179
179
|
|
|
180
|
+
### credential
|
|
181
|
+
|
|
182
|
+
| Command | Description |
|
|
183
|
+
| ----------------------------------------- | --------------------------------------- |
|
|
184
|
+
| `roark credential create --name <value>` | Create a personal credential |
|
|
185
|
+
| `roark credential list` | List your personal credentials |
|
|
186
|
+
| `roark credential revoke <credential-id>` | Revoke one of your personal credentials |
|
|
187
|
+
|
|
180
188
|
### customer-flow
|
|
181
189
|
|
|
182
190
|
| Command | Description |
|
|
@@ -238,36 +246,36 @@ roark completion fish | source
|
|
|
238
246
|
|
|
239
247
|
### simulation
|
|
240
248
|
|
|
241
|
-
| Command
|
|
242
|
-
|
|
|
243
|
-
| `roark simulation environment create --name <value> --background-noise <value>`
|
|
244
|
-
| `roark simulation environment delete <environment-id>`
|
|
245
|
-
| `roark simulation environment get <environment-id>`
|
|
246
|
-
| `roark simulation environment list`
|
|
247
|
-
| `roark simulation environment update <environment-id>`
|
|
248
|
-
| `roark simulation job get <job-id>`
|
|
249
|
-
| `roark simulation job lookup --roark-phone-number <value>`
|
|
250
|
-
| `roark simulation job tool-mock list <job-id>`
|
|
251
|
-
| `roark simulation persona create --name <value> --language <value> --accent <value> --gender <value>`
|
|
252
|
-
| `roark simulation persona get <persona-id>`
|
|
253
|
-
| `roark simulation persona list`
|
|
254
|
-
| `roark simulation persona update <persona-id>`
|
|
255
|
-
| `roark simulation plan create --
|
|
256
|
-
| `roark simulation plan delete <plan-id>`
|
|
257
|
-
| `roark simulation plan get <plan-id>`
|
|
258
|
-
| `roark simulation plan job cancel <job-id>`
|
|
259
|
-
| `roark simulation plan job get <job-id>`
|
|
260
|
-
| `roark simulation plan job list`
|
|
261
|
-
| `roark simulation plan job start <plan-id>`
|
|
262
|
-
| `roark simulation plan list`
|
|
263
|
-
| `roark simulation plan update <plan-id>`
|
|
264
|
-
| `roark simulation run --data '{ ... }'`
|
|
265
|
-
| `roark simulation template list`
|
|
266
|
-
| `roark simulation tool mock --simulation-job-id <value> --tool-name <value>`
|
|
267
|
-
| `roark simulation tool-fixture create --tool-name <value>`
|
|
268
|
-
| `roark simulation tool-fixture delete <fixture-id>`
|
|
269
|
-
| `roark simulation tool-fixture list`
|
|
270
|
-
| `roark simulation tool-fixture update <fixture-id>`
|
|
249
|
+
| Command | Description |
|
|
250
|
+
| ----------------------------------------------------------------------------------------------------- | ----------------------------------- |
|
|
251
|
+
| `roark simulation environment create --name <value> --background-noise <value>` | Create an environment |
|
|
252
|
+
| `roark simulation environment delete <environment-id>` | Delete an environment |
|
|
253
|
+
| `roark simulation environment get <environment-id>` | Get environment by ID |
|
|
254
|
+
| `roark simulation environment list` | List environments |
|
|
255
|
+
| `roark simulation environment update <environment-id>` | Update an environment |
|
|
256
|
+
| `roark simulation job get <job-id>` | Get simulation by ID |
|
|
257
|
+
| `roark simulation job lookup --roark-phone-number <value>` | Lookup by phone number |
|
|
258
|
+
| `roark simulation job tool-mock list <job-id>` | List mocked tool invocations |
|
|
259
|
+
| `roark simulation persona create --name <value> --language <value> --accent <value> --gender <value>` | Create a new persona |
|
|
260
|
+
| `roark simulation persona get <persona-id>` | Get persona by ID |
|
|
261
|
+
| `roark simulation persona list` | List personas |
|
|
262
|
+
| `roark simulation persona update <persona-id>` | Update a persona |
|
|
263
|
+
| `roark simulation plan create --data '{ ... }'` | Create a run plan |
|
|
264
|
+
| `roark simulation plan delete <plan-id>` | Delete a run plan |
|
|
265
|
+
| `roark simulation plan get <plan-id>` | Get run plan by ID |
|
|
266
|
+
| `roark simulation plan job cancel <job-id>` | Cancel a simulation plan job |
|
|
267
|
+
| `roark simulation plan job get <job-id>` | Get simulation plan job |
|
|
268
|
+
| `roark simulation plan job list` | List simulation plan jobs |
|
|
269
|
+
| `roark simulation plan job start <plan-id>` | Run a simulation plan |
|
|
270
|
+
| `roark simulation plan list` | List run plans |
|
|
271
|
+
| `roark simulation plan update <plan-id>` | Update a run plan |
|
|
272
|
+
| `roark simulation run --data '{ ... }'` | Run a simulation |
|
|
273
|
+
| `roark simulation template list` | List simulation templates |
|
|
274
|
+
| `roark simulation tool mock --simulation-job-id <value> --tool-name <value>` | Mock a tool call during a test call |
|
|
275
|
+
| `roark simulation tool-fixture create --tool-name <value>` | Set a tool fixture |
|
|
276
|
+
| `roark simulation tool-fixture delete <fixture-id>` | Delete a tool fixture |
|
|
277
|
+
| `roark simulation tool-fixture list` | List tool fixtures |
|
|
278
|
+
| `roark simulation tool-fixture update <fixture-id>` | Update a tool fixture |
|
|
271
279
|
|
|
272
280
|
### webhook
|
|
273
281
|
|
package/commands.js
CHANGED
|
@@ -30,6 +30,7 @@ exports.GROUPS = {
|
|
|
30
30
|
'call tool-invocation': 'Manage call tool invocations',
|
|
31
31
|
'call transcript': 'Read call transcript',
|
|
32
32
|
config: 'Read configs',
|
|
33
|
+
credential: 'Manage credentials',
|
|
33
34
|
'customer-flow': 'Manage customer flows',
|
|
34
35
|
'customer-flow edge-case': 'Manage customer flow edge cases',
|
|
35
36
|
'customer-flow graph': 'Manage customer flow graph',
|
|
@@ -1895,6 +1896,120 @@ exports.COMMANDS = [
|
|
|
1895
1896
|
acceptsBody: true,
|
|
1896
1897
|
requiresAuth: true,
|
|
1897
1898
|
},
|
|
1899
|
+
{
|
|
1900
|
+
commandPath: ['credential', 'create'],
|
|
1901
|
+
clientProperty: 'me',
|
|
1902
|
+
methodName: 'createAPIKey',
|
|
1903
|
+
httpMethod: 'post',
|
|
1904
|
+
httpPath: '/v1/me/api-keys',
|
|
1905
|
+
summary: 'Create a personal credential',
|
|
1906
|
+
description: 'Mints a credential that acts as you, for a CLI or an automation. The key value is returned exactly once, in the `key` field: capture it now, it is unreadable afterwards. Requires a personal credential (a project API key is refused) and admin on the project the credential defaults to. The new credential can never exceed the one that created it: not in scope, not in permissions, and not in lifetime. Omit a field to copy it from the calling credential.',
|
|
1907
|
+
positionals: [],
|
|
1908
|
+
flags: [
|
|
1909
|
+
{
|
|
1910
|
+
name: 'name',
|
|
1911
|
+
path: ['name'],
|
|
1912
|
+
location: 'body',
|
|
1913
|
+
required: true,
|
|
1914
|
+
description: 'A label you will recognise later. It is the only thing that tells two credentials apart in the list you revoke from.',
|
|
1915
|
+
valueKind: 'string',
|
|
1916
|
+
repeatable: false,
|
|
1917
|
+
},
|
|
1918
|
+
{
|
|
1919
|
+
name: 'project-id',
|
|
1920
|
+
path: ['projectId'],
|
|
1921
|
+
location: 'body',
|
|
1922
|
+
required: false,
|
|
1923
|
+
description: "Project the credential assumes when a request sends no X-Roark-Project-Id header. Defaults to the calling credential's own default project. You must be an admin of whichever project is used.",
|
|
1924
|
+
valueKind: 'string',
|
|
1925
|
+
repeatable: false,
|
|
1926
|
+
},
|
|
1927
|
+
{
|
|
1928
|
+
name: 'scopes',
|
|
1929
|
+
path: ['scopes'],
|
|
1930
|
+
location: 'body',
|
|
1931
|
+
required: false,
|
|
1932
|
+
description: "Coarse tier. Defaults to the calling credential's own tier, and can never exceed it: a READ credential cannot mint a WRITE one.",
|
|
1933
|
+
valueKind: 'array',
|
|
1934
|
+
enumValues: ['READ', 'WRITE'],
|
|
1935
|
+
repeatable: true,
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
name: 'permissions',
|
|
1939
|
+
path: ['permissions'],
|
|
1940
|
+
location: 'body',
|
|
1941
|
+
required: false,
|
|
1942
|
+
description: "Granular 'resource:action' permissions. Defaults to the calling credential's own set, and can never exceed it. A ceiling, not an entitlement: the holder still only reaches what their project membership allows.",
|
|
1943
|
+
valueKind: 'array',
|
|
1944
|
+
repeatable: true,
|
|
1945
|
+
},
|
|
1946
|
+
{
|
|
1947
|
+
name: 'expires-at',
|
|
1948
|
+
path: ['expiresAt'],
|
|
1949
|
+
location: 'body',
|
|
1950
|
+
required: false,
|
|
1951
|
+
description: "ISO 8601 expiry. Defaults to the calling credential's own expiry (no expiry, for a `roark auth login` credential) and may not outlive it, so a short-lived connector credential cannot mint a permanent one.",
|
|
1952
|
+
valueKind: 'string',
|
|
1953
|
+
repeatable: false,
|
|
1954
|
+
},
|
|
1955
|
+
],
|
|
1956
|
+
hasParams: true,
|
|
1957
|
+
paramsAllOptional: false,
|
|
1958
|
+
bodyOpaque: false,
|
|
1959
|
+
bodyVariants: [],
|
|
1960
|
+
acceptsBody: true,
|
|
1961
|
+
requiresAuth: true,
|
|
1962
|
+
},
|
|
1963
|
+
{
|
|
1964
|
+
commandPath: ['credential', 'list'],
|
|
1965
|
+
clientProperty: 'me',
|
|
1966
|
+
methodName: 'listAPIKeys',
|
|
1967
|
+
httpMethod: 'get',
|
|
1968
|
+
httpPath: '/v1/me/api-keys',
|
|
1969
|
+
summary: 'List your personal credentials',
|
|
1970
|
+
description: 'Returns the credentials that act as you: the ones created in the dashboard, from `roark auth login`, and MCP connectors. Requires a personal credential; a project API key is refused. Defaults to ACTIVE, pass ?status=REVOKED to see revoked ones. The key value itself is never returned.',
|
|
1971
|
+
positionals: [],
|
|
1972
|
+
flags: [
|
|
1973
|
+
{
|
|
1974
|
+
name: 'status',
|
|
1975
|
+
path: ['status'],
|
|
1976
|
+
location: 'query',
|
|
1977
|
+
required: false,
|
|
1978
|
+
description: 'Filter by status. Defaults to ACTIVE.',
|
|
1979
|
+
valueKind: 'string',
|
|
1980
|
+
enumValues: ['ACTIVE', 'REVOKED'],
|
|
1981
|
+
repeatable: false,
|
|
1982
|
+
},
|
|
1983
|
+
],
|
|
1984
|
+
hasParams: true,
|
|
1985
|
+
paramsAllOptional: true,
|
|
1986
|
+
bodyOpaque: false,
|
|
1987
|
+
bodyVariants: [],
|
|
1988
|
+
acceptsBody: false,
|
|
1989
|
+
requiresAuth: true,
|
|
1990
|
+
},
|
|
1991
|
+
{
|
|
1992
|
+
commandPath: ['credential', 'revoke'],
|
|
1993
|
+
clientProperty: 'me',
|
|
1994
|
+
methodName: 'revokeAPIKey',
|
|
1995
|
+
httpMethod: 'delete',
|
|
1996
|
+
httpPath: '/v1/me/api-keys/{id}',
|
|
1997
|
+
summary: 'Revoke one of your personal credentials',
|
|
1998
|
+
description: 'Revokes a credential that acts as you. It stops working immediately. A credential may revoke itself, which is what `roark auth logout` does. Repeating the call is safe; an unknown id, or one belonging to someone else, answers 404.',
|
|
1999
|
+
positionals: [
|
|
2000
|
+
{
|
|
2001
|
+
name: 'credential-id',
|
|
2002
|
+
paramKey: 'id',
|
|
2003
|
+
},
|
|
2004
|
+
],
|
|
2005
|
+
flags: [],
|
|
2006
|
+
hasParams: false,
|
|
2007
|
+
paramsAllOptional: true,
|
|
2008
|
+
bodyOpaque: false,
|
|
2009
|
+
bodyVariants: [],
|
|
2010
|
+
acceptsBody: false,
|
|
2011
|
+
requiresAuth: true,
|
|
2012
|
+
},
|
|
1898
2013
|
{
|
|
1899
2014
|
commandPath: ['customer-flow', 'create'],
|
|
1900
2015
|
clientProperty: 'customerFlow',
|
|
@@ -4685,248 +4800,22 @@ exports.COMMANDS = [
|
|
|
4685
4800
|
httpMethod: 'post',
|
|
4686
4801
|
httpPath: '/v1/simulation/plan',
|
|
4687
4802
|
summary: 'Create a run plan',
|
|
4688
|
-
description: 'Creates a new simulation run plan. To run a simulation, use POST /v1/simulation/run instead: it starts a run from a plan or from an inline configuration, and takes runtime variables. Create a plan here when you want a reusable, named one to run later.',
|
|
4803
|
+
description: 'Creates a new simulation run plan. To run a simulation, use POST /v1/simulation/run instead: it starts a run from a plan or from an inline configuration, and takes runtime variables. Create a plan here when you want a reusable, named one to run later. Send `template` instead of a full configuration to save one of the built-in templates as a plan. It takes the same fields as the template variant of POST /v1/simulation/run, builds the same plan, and never starts it. To compare one property, attach the flow once and send `comparisonProperty` with the `comparisonValues` to run: the plan attaches the flow once per value.',
|
|
4689
4804
|
positionals: [],
|
|
4690
|
-
flags: [
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
required: true,
|
|
4696
|
-
description: 'Name of the run plan',
|
|
4697
|
-
valueKind: 'string',
|
|
4698
|
-
repeatable: false,
|
|
4699
|
-
},
|
|
4700
|
-
{
|
|
4701
|
-
name: 'description',
|
|
4702
|
-
path: ['description'],
|
|
4703
|
-
location: 'body',
|
|
4704
|
-
required: false,
|
|
4705
|
-
description: 'Description of the run plan',
|
|
4706
|
-
valueKind: 'string',
|
|
4707
|
-
repeatable: false,
|
|
4708
|
-
},
|
|
4709
|
-
{
|
|
4710
|
-
name: 'direction',
|
|
4711
|
-
path: ['direction'],
|
|
4712
|
-
location: 'body',
|
|
4713
|
-
required: true,
|
|
4714
|
-
description: 'Direction of the simulation (INBOUND or OUTBOUND)',
|
|
4715
|
-
valueKind: 'string',
|
|
4716
|
-
enumValues: ['INBOUND', 'OUTBOUND'],
|
|
4717
|
-
repeatable: false,
|
|
4718
|
-
},
|
|
4719
|
-
{
|
|
4720
|
-
name: 'iteration-count',
|
|
4721
|
-
path: ['iterationCount'],
|
|
4722
|
-
location: 'body',
|
|
4723
|
-
required: false,
|
|
4724
|
-
description: 'Number of iterations to run for each test case (1-10000)',
|
|
4725
|
-
valueKind: 'integer',
|
|
4726
|
-
repeatable: false,
|
|
4727
|
-
},
|
|
4728
|
-
{
|
|
4729
|
-
name: 'max-concurrent-jobs',
|
|
4730
|
-
path: ['maxConcurrentJobs'],
|
|
4731
|
-
location: 'body',
|
|
4732
|
-
required: false,
|
|
4733
|
-
description: 'Maximum number of concurrent simulation jobs',
|
|
4734
|
-
valueKind: 'integer',
|
|
4735
|
-
repeatable: false,
|
|
4736
|
-
},
|
|
4737
|
-
{
|
|
4738
|
-
name: 'max-simulation-duration-seconds',
|
|
4739
|
-
path: ['maxSimulationDurationSeconds'],
|
|
4740
|
-
location: 'body',
|
|
4741
|
-
required: true,
|
|
4742
|
-
description: 'Maximum duration in seconds for each simulation',
|
|
4743
|
-
valueKind: 'integer',
|
|
4744
|
-
repeatable: false,
|
|
4745
|
-
},
|
|
4746
|
-
{
|
|
4747
|
-
name: 'silence-timeout-seconds',
|
|
4748
|
-
path: ['silenceTimeoutSeconds'],
|
|
4749
|
-
location: 'body',
|
|
4750
|
-
required: false,
|
|
4751
|
-
description: 'Timeout in seconds for silence detection',
|
|
4752
|
-
valueKind: 'integer',
|
|
4753
|
-
repeatable: false,
|
|
4754
|
-
},
|
|
4755
|
-
{
|
|
4756
|
-
name: 'max-no-response-retries',
|
|
4757
|
-
path: ['maxNoResponseRetries'],
|
|
4758
|
-
location: 'body',
|
|
4759
|
-
required: false,
|
|
4760
|
-
description: 'How many more times to run a test case when the agent under test never responds: it never speaks on a call or never replies in a chat (0-10). 0 turns retries off. Failed checks and failures on Roark’s side are never retried. Each retry is a separate attempt, billed like any other, so a plan retrying N times can place up to N + 1 calls per test case. Every silent attempt stays on the run with its own call; the run settles once each test case has a final attempt, and the agent never spoke verdict is judged on each test case’s last attempt.',
|
|
4761
|
-
valueKind: 'integer',
|
|
4762
|
-
repeatable: false,
|
|
4763
|
-
},
|
|
4764
|
-
{
|
|
4765
|
-
name: 'no-response-retry-backoff-seconds',
|
|
4766
|
-
path: ['noResponseRetryBackoffSeconds'],
|
|
4767
|
-
location: 'body',
|
|
4768
|
-
required: false,
|
|
4769
|
-
description: 'Seconds a retry waits before it dials (30-600). Only used when `maxNoResponseRetries` is above 0.',
|
|
4770
|
-
valueKind: 'integer',
|
|
4771
|
-
repeatable: false,
|
|
4772
|
-
},
|
|
4773
|
-
{
|
|
4774
|
-
name: 'end-call-phrases',
|
|
4775
|
-
path: ['endCallPhrases'],
|
|
4776
|
-
location: 'body',
|
|
4777
|
-
required: false,
|
|
4778
|
-
description: 'Phrases that trigger end of call. Empty array disables the feature.',
|
|
4779
|
-
valueKind: 'array',
|
|
4780
|
-
repeatable: true,
|
|
4781
|
-
},
|
|
4782
|
-
{
|
|
4783
|
-
name: 'end-call-reasons',
|
|
4784
|
-
path: ['endCallReasons'],
|
|
4785
|
-
location: 'body',
|
|
4786
|
-
required: false,
|
|
4787
|
-
description: 'Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.',
|
|
4788
|
-
valueKind: 'array',
|
|
4789
|
-
repeatable: true,
|
|
4790
|
-
},
|
|
4791
|
-
{
|
|
4792
|
-
name: 'execution-mode',
|
|
4793
|
-
path: ['executionMode'],
|
|
4794
|
-
location: 'body',
|
|
4795
|
-
required: false,
|
|
4796
|
-
description: 'Execution mode (PARALLEL or SEQUENTIAL)',
|
|
4797
|
-
valueKind: 'string',
|
|
4798
|
-
enumValues: ['PARALLEL', 'SEQUENTIAL_SAME_RUN_PLAN', 'SEQUENTIAL_PROJECT'],
|
|
4799
|
-
repeatable: false,
|
|
4800
|
-
},
|
|
4801
|
-
{
|
|
4802
|
-
name: 'scenarios',
|
|
4803
|
-
path: ['scenarios'],
|
|
4804
|
-
location: 'body',
|
|
4805
|
-
required: false,
|
|
4806
|
-
description: 'Deprecated: use `flows` instead. Scenarios to include in this run plan. The same scenario ID can appear multiple times with different variables.',
|
|
4807
|
-
valueKind: 'array',
|
|
4808
|
-
repeatable: false,
|
|
4809
|
-
},
|
|
4810
|
-
{
|
|
4811
|
-
name: 'flows',
|
|
4812
|
-
path: ['flows'],
|
|
4813
|
-
location: 'body',
|
|
4814
|
-
required: false,
|
|
4815
|
-
description: 'Customer flows to include in this run plan. The same flow can appear more than once with a different persona override, different variables, or different `overrides`: attaching it once per value of one property is how you compare that property without a template.',
|
|
4816
|
-
valueKind: 'array',
|
|
4817
|
-
repeatable: false,
|
|
4818
|
-
},
|
|
4819
|
-
{
|
|
4820
|
-
name: 'personas',
|
|
4821
|
-
path: ['personas'],
|
|
4822
|
-
location: 'body',
|
|
4823
|
-
required: false,
|
|
4824
|
-
description: 'Personas to include in this run plan. Required with `scenarios`; ignored with `flows`, where each variant carries its own persona.',
|
|
4825
|
-
valueKind: 'array',
|
|
4826
|
-
repeatable: false,
|
|
4827
|
-
},
|
|
4828
|
-
{
|
|
4829
|
-
name: 'agent-endpoints',
|
|
4830
|
-
path: ['agentEndpoints'],
|
|
4831
|
-
location: 'body',
|
|
4832
|
-
required: true,
|
|
4833
|
-
description: 'Agent endpoints to include in this run plan',
|
|
4834
|
-
valueKind: 'array',
|
|
4835
|
-
repeatable: false,
|
|
4836
|
-
},
|
|
4837
|
-
{
|
|
4838
|
-
name: 'metrics',
|
|
4839
|
-
path: ['metrics'],
|
|
4840
|
-
location: 'body',
|
|
4841
|
-
required: false,
|
|
4842
|
-
description: 'Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`. Optional when the attached `flows` carry the grading: metrics a flow declares itself (with `includeFlowMetrics`), or the Agent Expectations and Keypad Entry metrics a run adds for flows with expectations or expected keypad entries (with `includeAutomaticMetrics`). A plan with nothing to grade is rejected with a 400.',
|
|
4843
|
-
valueKind: 'array',
|
|
4844
|
-
repeatable: false,
|
|
4845
|
-
},
|
|
4846
|
-
{
|
|
4847
|
-
name: 'include-flow-metrics',
|
|
4848
|
-
path: ['includeFlowMetrics'],
|
|
4849
|
-
location: 'body',
|
|
4850
|
-
required: false,
|
|
4851
|
-
description: "Also collect each attached flow's own metrics, on top of the `metrics` named here. Default true, which is what you want when you brought your own flows and their graders. Set false for a run whose metric list is meant to be exhaustive: a template like Load Testing or Voicemail deliberately grades a narrow set, and inheriting every flow metric on top multiplies analysis cost across the volume without adding signal. GET /v1/simulation/template returns the value each template expects.",
|
|
4852
|
-
valueKind: 'boolean',
|
|
4853
|
-
repeatable: false,
|
|
4854
|
-
},
|
|
4855
|
-
{
|
|
4856
|
-
name: 'include-automatic-metrics',
|
|
4857
|
-
path: ['includeAutomaticMetrics'],
|
|
4858
|
-
location: 'body',
|
|
4859
|
-
required: false,
|
|
4860
|
-
description: 'Let the run add metrics by itself off the attached flows, on top of the `metrics` named here. Two attach this way today: Agent Expectations wherever an attached flow has agent expectations written on it, and Keypad Entry wherever one has steps where the agent is expected to press keys. Both grade something authored on the flow that nothing else measures, which is why it is on by default. Set false when the `metrics` list is meant to be exhaustive: a plan testing only whether the caller can complete the flow may not want the agent graded on its expectations as well. False also pins the plan against any automatic metric Roark adds later.',
|
|
4861
|
-
valueKind: 'boolean',
|
|
4862
|
-
repeatable: false,
|
|
4863
|
-
},
|
|
4864
|
-
{
|
|
4865
|
-
name: 'comparison-property',
|
|
4866
|
-
path: ['comparisonProperty'],
|
|
4867
|
-
location: 'body',
|
|
4868
|
-
required: false,
|
|
4869
|
-
description: 'The property this run plan investigates: the one thing its arms differ by. Set it and the run report compares the arms on that property, so a run answers "what did background noise cost" rather than just "what did each arm score". Every value is a field already recorded on each call, so the report can label an arm `CRYING_BABY` rather than repeating a flow variant\'s title. Omit it and the report still compares when it can: it detects which property varies across the arms. Setting it is what tells the written summary what you were trying to find out, which detection cannot infer.',
|
|
4870
|
-
valueKind: 'string',
|
|
4871
|
-
enumValues: [
|
|
4872
|
-
'ACCENT',
|
|
4873
|
-
'AGE',
|
|
4874
|
-
'BACKGROUND_NOISE',
|
|
4875
|
-
'BACKGROUND_NOISE_VOLUME',
|
|
4876
|
-
'BASE_EMOTION',
|
|
4877
|
-
'CONFIRMATION_STYLE',
|
|
4878
|
-
'GENDER',
|
|
4879
|
-
'INTENT_CLARITY',
|
|
4880
|
-
'LANGUAGE',
|
|
4881
|
-
'INTERRUPTION',
|
|
4882
|
-
'MEMORY_RELIABILITY',
|
|
4883
|
-
'RESPONSE_TIMING',
|
|
4884
|
-
'SPEECH_CLARITY',
|
|
4885
|
-
'SPEECH_PACE',
|
|
4886
|
-
],
|
|
4887
|
-
repeatable: false,
|
|
4888
|
-
},
|
|
4889
|
-
{
|
|
4890
|
-
name: 'comparison-baseline',
|
|
4891
|
-
path: ['comparisonBaseline'],
|
|
4892
|
-
location: 'body',
|
|
4893
|
-
required: false,
|
|
4894
|
-
description: 'The reference value of `comparisonProperty`, for example `NONE` for `BACKGROUND_NOISE` or `NORMAL` for `SPEECH_PACE`: shown first in the results. Must be a value that property can take. Whether a value did significantly worse does not depend on it: that is decided against every other value combined (see `sweepAttribution`). Stored rather than assumed, so the report can say "compared against US accent" instead of implying Roark decided which value is normal. Most properties have an obvious baseline and the dashboard prefills it; `GENDER` has none, so choose the one you are testing against.',
|
|
4895
|
-
valueKind: 'string',
|
|
4896
|
-
repeatable: false,
|
|
4897
|
-
},
|
|
4898
|
-
{
|
|
4899
|
-
name: 'comparison-values',
|
|
4900
|
-
path: ['comparisonValues'],
|
|
4901
|
-
location: 'body',
|
|
4902
|
-
required: false,
|
|
4903
|
-
description: 'Which values of `comparisonProperty` to run. This is what the plan costs: the flow is attached once per value, so ten values is ten times the calls of one. Omit it to run every value the property has, which for `ACCENT` is more than twenty. Send a subset to narrow the sweep, for example three accents you actually serve. A `comparisonBaseline` outside this set is rejected, because it would anchor every difference to an arm the run never made. Not stored as a field: the arms are the values. Reading the plan back returns them as its flow attachments.',
|
|
4904
|
-
valueKind: 'array',
|
|
4905
|
-
repeatable: true,
|
|
4906
|
-
},
|
|
4805
|
+
flags: [],
|
|
4806
|
+
hasParams: true,
|
|
4807
|
+
paramsAllOptional: false,
|
|
4808
|
+
bodyOpaque: true,
|
|
4809
|
+
bodyVariants: [
|
|
4907
4810
|
{
|
|
4908
|
-
name: '
|
|
4909
|
-
|
|
4910
|
-
location: 'body',
|
|
4911
|
-
required: false,
|
|
4912
|
-
description: "Merge the customer's own recording of the real call into each simulation, so metrics can be scored against the live leg as well as the simulated one. This is the API equivalent of the dashboard's live-enrichment toggle. With this on, the run provisions a phone number and holds each call open for up to 15 minutes waiting for a matching call to be posted to POST /v1/call. A call matches on the provisioned number (`roarkPhoneNumber` on the job) with a start time inside the simulation window. If nothing arrives, the simulation still completes and any `LIVE`-sourced metric produces no value. Required by any metric whose `requiresLiveConversation` is true: without it that metric is silently skipped.",
|
|
4913
|
-
valueKind: 'boolean',
|
|
4914
|
-
repeatable: false,
|
|
4811
|
+
name: 'CreateRunPlanFromConfig',
|
|
4812
|
+
required: ['name', 'direction', 'maxSimulationDurationSeconds', 'agentEndpoints'],
|
|
4915
4813
|
},
|
|
4916
4814
|
{
|
|
4917
|
-
name: '
|
|
4918
|
-
|
|
4919
|
-
location: 'body',
|
|
4920
|
-
required: false,
|
|
4921
|
-
description: 'Deprecated: use POST /v1/simulation/run, which starts a run and accepts runtime `variables` as well. This flag runs the plan with only the values pinned on it.',
|
|
4922
|
-
valueKind: 'boolean',
|
|
4923
|
-
repeatable: false,
|
|
4815
|
+
name: 'CreateRunPlanFromTemplate',
|
|
4816
|
+
required: ['template', 'agentEndpoints', 'direction'],
|
|
4924
4817
|
},
|
|
4925
4818
|
],
|
|
4926
|
-
hasParams: true,
|
|
4927
|
-
paramsAllOptional: false,
|
|
4928
|
-
bodyOpaque: false,
|
|
4929
|
-
bodyVariants: [],
|
|
4930
4819
|
acceptsBody: true,
|
|
4931
4820
|
requiresAuth: true,
|
|
4932
4821
|
},
|
|
@@ -5407,7 +5296,7 @@ exports.COMMANDS = [
|
|
|
5407
5296
|
path: ['comparisonProperty'],
|
|
5408
5297
|
location: 'body',
|
|
5409
5298
|
required: false,
|
|
5410
|
-
description:
|
|
5299
|
+
description: "The property this plan investigates. Send `null` to clear the comparison; omit the field to leave it unchanged. See `POST /v1/simulation/plan`. The pair moves together. Sending `comparisonProperty` without `comparisonBaseline` keeps the stored baseline when the property is unchanged and the baseline is still one of the values being run. Otherwise it becomes the new property's norm, or `null` when that norm is not being run either, because a baseline is a value of one specific property.",
|
|
5411
5300
|
valueKind: 'string',
|
|
5412
5301
|
enumValues: [
|
|
5413
5302
|
'ACCENT',
|
|
@@ -5441,9 +5330,9 @@ exports.COMMANDS = [
|
|
|
5441
5330
|
path: ['comparisonValues'],
|
|
5442
5331
|
location: 'body',
|
|
5443
5332
|
required: false,
|
|
5444
|
-
description: '
|
|
5333
|
+
description: 'The arms to run. See `POST /v1/simulation/plan`. Omitting it keeps the arms the plan already has, pins included, so an edit that only renames the plan never widens a sweep you deliberately narrowed, and never multiplies what it costs. Send it with `comparisonProperty` and `flows`, which the arms are rebuilt from.',
|
|
5445
5334
|
valueKind: 'array',
|
|
5446
|
-
repeatable:
|
|
5335
|
+
repeatable: false,
|
|
5447
5336
|
},
|
|
5448
5337
|
],
|
|
5449
5338
|
hasParams: true,
|