@roarkanalytics/cli 0.15.0 → 0.16.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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.16.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.15.0...v0.16.0) (2026-09-15)
4
+
5
+
6
+ ### Features
7
+
8
+ * **cli:** cli update ([#40](https://github.com/roarkhq/cli-roark-analytics/issues/40)) ([ec92dff](https://github.com/roarkhq/cli-roark-analytics/commit/ec92dff3dc45f4a53f5c7166e4b9d89babcd1625))
9
+
3
10
  ## [0.15.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.14.0...v0.15.0) (2026-09-14)
4
11
 
5
12
 
package/README.md CHANGED
@@ -122,6 +122,17 @@ roark completion fish | source
122
122
  | `roark agent prompt version list <agent-id> <prompt-id>` | List a prompt's versions |
123
123
  | `roark agent update <agent-id>` | Update an agent |
124
124
 
125
+ ### benchmark
126
+
127
+ | Command | Description |
128
+ | ----------------------------------------------------------------------- | ------------------------------------- |
129
+ | `roark benchmark leaderboard get --suite <value>` | Get the benchmark leaderboard |
130
+ | `roark benchmark metric list --suite <value>` | List benchmark metrics |
131
+ | `roark benchmark suite list` | List benchmark suites |
132
+ | `roark benchmark target get <target-key> --suite <value>` | Get a benchmark target |
133
+ | `roark benchmark target history list <target-key> --suite <value>` | List a target’s published generations |
134
+ | `roark benchmark target score-sample list <target-key> --suite <value>` | List score samples for a target |
135
+
125
136
  ### call
126
137
 
127
138
  | Command | Description |
@@ -196,29 +207,30 @@ roark completion fish | source
196
207
 
197
208
  ### simulation
198
209
 
199
- | Command | Description |
200
- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
201
- | `roark simulation environment create --name <value> --background-noise <value>` | Create an environment |
202
- | `roark simulation environment delete <environment-id>` | Delete an environment |
203
- | `roark simulation environment get <environment-id>` | Get environment by ID |
204
- | `roark simulation environment list` | List environments |
205
- | `roark simulation environment update <environment-id>` | Update an environment |
206
- | `roark simulation job get <job-id>` | Get simulation by ID |
207
- | `roark simulation job lookup --roark-phone-number <value>` | Lookup by phone number |
208
- | `roark simulation persona create --name <value> --language <value> --accent <value> --gender <value>` | Create a new persona |
209
- | `roark simulation persona get <persona-id>` | Get persona by ID |
210
- | `roark simulation persona list` | List personas |
211
- | `roark simulation persona update <persona-id>` | Update a persona |
212
- | `roark simulation plan create --name <value> --direction <value> --max-simulation-duration-seconds <value> --agent-endpoints <value> --metrics <value>` | Create a run plan |
213
- | `roark simulation plan delete <plan-id>` | Delete a run plan |
214
- | `roark simulation plan get <plan-id>` | Get run plan by ID |
215
- | `roark simulation plan job get <job-id>` | Get simulation plan job |
216
- | `roark simulation plan job list` | List simulation plan jobs |
217
- | `roark simulation plan job start <plan-id>` | Run a simulation plan |
218
- | `roark simulation plan list` | List run plans |
219
- | `roark simulation plan update <plan-id>` | Update a run plan |
220
- | `roark simulation run --data '{ ... }'` | Run a simulation |
221
- | `roark simulation template list` | List simulation templates |
210
+ | Command | Description |
211
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
212
+ | `roark simulation environment create --name <value> --background-noise <value>` | Create an environment |
213
+ | `roark simulation environment delete <environment-id>` | Delete an environment |
214
+ | `roark simulation environment get <environment-id>` | Get environment by ID |
215
+ | `roark simulation environment list` | List environments |
216
+ | `roark simulation environment update <environment-id>` | Update an environment |
217
+ | `roark simulation job get <job-id>` | Get simulation by ID |
218
+ | `roark simulation job lookup --roark-phone-number <value>` | Lookup by phone number |
219
+ | `roark simulation persona create --name <value> --language <value> --accent <value> --gender <value>` | Create a new persona |
220
+ | `roark simulation persona get <persona-id>` | Get persona by ID |
221
+ | `roark simulation persona list` | List personas |
222
+ | `roark simulation persona update <persona-id>` | Update a persona |
223
+ | `roark simulation plan create --name <value> --direction <value> --max-simulation-duration-seconds <value> --agent-endpoints <value> --metrics <value>` | Create a run plan |
224
+ | `roark simulation plan delete <plan-id>` | Delete a run plan |
225
+ | `roark simulation plan get <plan-id>` | Get run plan by ID |
226
+ | `roark simulation plan job cancel <job-id>` | Cancel a simulation plan job |
227
+ | `roark simulation plan job get <job-id>` | Get simulation plan job |
228
+ | `roark simulation plan job list` | List simulation plan jobs |
229
+ | `roark simulation plan job start <plan-id>` | Run a simulation plan |
230
+ | `roark simulation plan list` | List run plans |
231
+ | `roark simulation plan update <plan-id>` | Update a run plan |
232
+ | `roark simulation run --data '{ ... }'` | Run a simulation |
233
+ | `roark simulation template list` | List simulation templates |
222
234
 
223
235
  ### webhook
224
236
 
package/commands.js CHANGED
@@ -12,6 +12,13 @@ exports.GROUPS = {
12
12
  'agent endpoint': 'Manage agent endpoints',
13
13
  'agent prompt': 'Manage agent prompts',
14
14
  'agent prompt version': 'Read agent prompt versions',
15
+ benchmark: 'Read benchmarks',
16
+ 'benchmark leaderboard': 'Read benchmark leaderboard',
17
+ 'benchmark metric': 'Read benchmark metrics',
18
+ 'benchmark suite': 'Read benchmark suites',
19
+ 'benchmark target': 'Read benchmark targets',
20
+ 'benchmark target history': 'Read benchmark target histories',
21
+ 'benchmark target score-sample': 'Read benchmark target score samples',
15
22
  call: 'Manage calls',
16
23
  'call metric': 'Read call metrics',
17
24
  'call sentiment-run': 'Read call sentiment runs',
@@ -473,6 +480,320 @@ exports.COMMANDS = [
473
480
  acceptsBody: true,
474
481
  requiresAuth: true,
475
482
  },
483
+ {
484
+ commandPath: ['benchmark', 'leaderboard', 'get'],
485
+ clientProperty: 'benchmark',
486
+ methodName: 'getLeaderboard',
487
+ httpMethod: 'get',
488
+ httpPath: '/v1/benchmark/leaderboard',
489
+ summary: 'Get the benchmark leaderboard',
490
+ description: 'Returns one ranked page of a suite version’s published targets, each with the metric cells it is judged on. Ranking happens in the database, so paging through the board is consistent. Every default the server applies (suite version, condition, sort metric, sort direction) is echoed on the response, so a page can be cited without guessing how it was ordered.',
491
+ positionals: [],
492
+ flags: [
493
+ {
494
+ name: 'suite',
495
+ path: ['suite'],
496
+ location: 'query',
497
+ required: true,
498
+ valueKind: 'string',
499
+ repeatable: false,
500
+ },
501
+ {
502
+ name: 'suite-version',
503
+ path: ['suiteVersion'],
504
+ location: 'query',
505
+ required: false,
506
+ valueKind: 'string',
507
+ repeatable: false,
508
+ },
509
+ {
510
+ name: 'condition-key',
511
+ path: ['conditionKey'],
512
+ location: 'query',
513
+ required: false,
514
+ valueKind: 'string',
515
+ repeatable: false,
516
+ },
517
+ {
518
+ name: 'sort-by',
519
+ path: ['sortBy'],
520
+ location: 'query',
521
+ required: false,
522
+ valueKind: 'string',
523
+ repeatable: false,
524
+ },
525
+ {
526
+ name: 'order',
527
+ path: ['order'],
528
+ location: 'query',
529
+ required: false,
530
+ valueKind: 'string',
531
+ enumValues: ['asc', 'desc'],
532
+ repeatable: false,
533
+ },
534
+ {
535
+ name: 'metrics',
536
+ path: ['metrics'],
537
+ location: 'query',
538
+ required: false,
539
+ description: 'Comma-separated metric keys to project per row. Defaults to the headline set.',
540
+ valueKind: 'string',
541
+ repeatable: false,
542
+ },
543
+ {
544
+ name: 'limit',
545
+ path: ['limit'],
546
+ location: 'query',
547
+ required: false,
548
+ description: 'Maximum number of records to return (default: 20, max: 100)',
549
+ valueKind: 'integer',
550
+ repeatable: false,
551
+ },
552
+ {
553
+ name: 'offset',
554
+ path: ['offset'],
555
+ location: 'query',
556
+ required: false,
557
+ description: 'Pagination offset',
558
+ valueKind: 'integer',
559
+ repeatable: false,
560
+ },
561
+ ],
562
+ hasParams: true,
563
+ paramsAllOptional: false,
564
+ bodyOpaque: false,
565
+ bodyVariants: [],
566
+ acceptsBody: false,
567
+ requiresAuth: true,
568
+ },
569
+ {
570
+ commandPath: ['benchmark', 'metric', 'list'],
571
+ clientProperty: 'benchmark',
572
+ methodName: 'listMetrics',
573
+ httpMethod: 'get',
574
+ httpPath: '/v1/benchmark/metric',
575
+ summary: 'List benchmark metrics',
576
+ description: 'Returns the metrics a suite version published, each with the direction that counts as better. Use it to pick a valid `sortBy` for the leaderboard: a metric key outside this list is rejected rather than silently ranking every target null.',
577
+ positionals: [],
578
+ flags: [
579
+ {
580
+ name: 'suite',
581
+ path: ['suite'],
582
+ location: 'query',
583
+ required: true,
584
+ valueKind: 'string',
585
+ repeatable: false,
586
+ },
587
+ {
588
+ name: 'suite-version',
589
+ path: ['suiteVersion'],
590
+ location: 'query',
591
+ required: false,
592
+ valueKind: 'string',
593
+ repeatable: false,
594
+ },
595
+ ],
596
+ hasParams: true,
597
+ paramsAllOptional: false,
598
+ bodyOpaque: false,
599
+ bodyVariants: [],
600
+ acceptsBody: false,
601
+ requiresAuth: true,
602
+ },
603
+ {
604
+ commandPath: ['benchmark', 'suite', 'list'],
605
+ clientProperty: 'benchmark',
606
+ methodName: 'listSuites',
607
+ httpMethod: 'get',
608
+ httpPath: '/v1/benchmark/suite',
609
+ summary: 'List benchmark suites',
610
+ description: 'Returns every benchmark suite with published results, along with the suite version the other endpoints default to. Start here: the suite name is a required parameter everywhere else and there is no other way to discover it.',
611
+ positionals: [],
612
+ flags: [],
613
+ hasParams: false,
614
+ paramsAllOptional: true,
615
+ bodyOpaque: false,
616
+ bodyVariants: [],
617
+ acceptsBody: false,
618
+ requiresAuth: true,
619
+ },
620
+ {
621
+ commandPath: ['benchmark', 'target', 'get'],
622
+ clientProperty: 'benchmark',
623
+ methodName: 'getTarget',
624
+ httpMethod: 'get',
625
+ httpPath: '/v1/benchmark/target/{targetKey}',
626
+ summary: 'Get a benchmark target',
627
+ description: 'Returns a target’s published sweep and every one of its aggregate cells: the overall rollup plus a set per condition. Defaults to the current sweep; pass `publicationId` from the history endpoint to read a superseded one, which is how a regression is compared generation to generation. Numbers only — no transcript and no audio.',
628
+ positionals: [
629
+ {
630
+ name: 'target-key',
631
+ paramKey: 'targetKey',
632
+ },
633
+ ],
634
+ flags: [
635
+ {
636
+ name: 'suite',
637
+ path: ['suite'],
638
+ location: 'query',
639
+ required: true,
640
+ valueKind: 'string',
641
+ repeatable: false,
642
+ },
643
+ {
644
+ name: 'suite-version',
645
+ path: ['suiteVersion'],
646
+ location: 'query',
647
+ required: false,
648
+ valueKind: 'string',
649
+ repeatable: false,
650
+ },
651
+ {
652
+ name: 'publication-id',
653
+ path: ['publicationId'],
654
+ location: 'query',
655
+ required: false,
656
+ valueKind: 'string',
657
+ repeatable: false,
658
+ },
659
+ ],
660
+ hasParams: true,
661
+ paramsAllOptional: false,
662
+ bodyOpaque: false,
663
+ bodyVariants: [],
664
+ acceptsBody: false,
665
+ requiresAuth: true,
666
+ },
667
+ {
668
+ commandPath: ['benchmark', 'target', 'history', 'list'],
669
+ clientProperty: 'benchmark',
670
+ methodName: 'listTargetHistory',
671
+ httpMethod: 'get',
672
+ httpPath: '/v1/benchmark/target/{targetKey}/history',
673
+ summary: 'List a target’s published generations',
674
+ description: 'Returns every sweep published for a target, newest first, including superseded ones. This is the trend read: it answers "did this model regress?" from Roark’s own published record. Metadata only — pass a row’s `publicationId` to GET /v1/benchmark/target/{targetKey} for that generation’s numbers.',
675
+ positionals: [
676
+ {
677
+ name: 'target-key',
678
+ paramKey: 'targetKey',
679
+ },
680
+ ],
681
+ flags: [
682
+ {
683
+ name: 'suite',
684
+ path: ['suite'],
685
+ location: 'query',
686
+ required: true,
687
+ valueKind: 'string',
688
+ repeatable: false,
689
+ },
690
+ {
691
+ name: 'suite-version',
692
+ path: ['suiteVersion'],
693
+ location: 'query',
694
+ required: false,
695
+ valueKind: 'string',
696
+ repeatable: false,
697
+ },
698
+ {
699
+ name: 'limit',
700
+ path: ['limit'],
701
+ location: 'query',
702
+ required: false,
703
+ description: 'Maximum number of records to return (default: 20, max: 100)',
704
+ valueKind: 'integer',
705
+ repeatable: false,
706
+ },
707
+ {
708
+ name: 'offset',
709
+ path: ['offset'],
710
+ location: 'query',
711
+ required: false,
712
+ description: 'Pagination offset',
713
+ valueKind: 'integer',
714
+ repeatable: false,
715
+ },
716
+ ],
717
+ hasParams: true,
718
+ paramsAllOptional: false,
719
+ bodyOpaque: false,
720
+ bodyVariants: [],
721
+ acceptsBody: false,
722
+ requiresAuth: true,
723
+ },
724
+ {
725
+ commandPath: ['benchmark', 'target', 'score-sample', 'list'],
726
+ clientProperty: 'benchmark',
727
+ methodName: 'listTargetScoreSamples',
728
+ httpMethod: 'get',
729
+ httpPath: '/v1/benchmark/target/{targetKey}/score-sample',
730
+ summary: 'List score samples for a target',
731
+ description: 'Returns the individual scored calls behind a target’s aggregate cells, each with the scorer’s rationale — the "why is this number what it is" read. Filter to one cell with `conditionKey` and `metricKey`. Metrics computed without a rationale (latencies, counts) contribute no samples. Returns reasoning only: no transcript and no audio.',
732
+ positionals: [
733
+ {
734
+ name: 'target-key',
735
+ paramKey: 'targetKey',
736
+ },
737
+ ],
738
+ flags: [
739
+ {
740
+ name: 'suite',
741
+ path: ['suite'],
742
+ location: 'query',
743
+ required: true,
744
+ valueKind: 'string',
745
+ repeatable: false,
746
+ },
747
+ {
748
+ name: 'suite-version',
749
+ path: ['suiteVersion'],
750
+ location: 'query',
751
+ required: false,
752
+ valueKind: 'string',
753
+ repeatable: false,
754
+ },
755
+ {
756
+ name: 'condition-key',
757
+ path: ['conditionKey'],
758
+ location: 'query',
759
+ required: false,
760
+ valueKind: 'string',
761
+ repeatable: false,
762
+ },
763
+ {
764
+ name: 'metric-key',
765
+ path: ['metricKey'],
766
+ location: 'query',
767
+ required: false,
768
+ valueKind: 'string',
769
+ repeatable: false,
770
+ },
771
+ {
772
+ name: 'limit',
773
+ path: ['limit'],
774
+ location: 'query',
775
+ required: false,
776
+ description: 'Maximum number of records to return (default: 20, max: 100)',
777
+ valueKind: 'integer',
778
+ repeatable: false,
779
+ },
780
+ {
781
+ name: 'offset',
782
+ path: ['offset'],
783
+ location: 'query',
784
+ required: false,
785
+ description: 'Pagination offset',
786
+ valueKind: 'integer',
787
+ repeatable: false,
788
+ },
789
+ ],
790
+ hasParams: true,
791
+ paramsAllOptional: false,
792
+ bodyOpaque: false,
793
+ bodyVariants: [],
794
+ acceptsBody: false,
795
+ requiresAuth: true,
796
+ },
476
797
  {
477
798
  commandPath: ['call', 'create'],
478
799
  clientProperty: 'call',
@@ -1066,7 +1387,26 @@ exports.COMMANDS = [
1066
1387
  paramKey: 'flowId',
1067
1388
  },
1068
1389
  ],
1069
- flags: [],
1390
+ flags: [
1391
+ {
1392
+ name: 'title',
1393
+ path: ['title'],
1394
+ location: 'body',
1395
+ required: false,
1396
+ description: 'Title for the copy. Defaults to "Copy of" the source flow.',
1397
+ valueKind: 'string',
1398
+ repeatable: false,
1399
+ },
1400
+ {
1401
+ name: 'agent-ids',
1402
+ path: ['agentIds'],
1403
+ location: 'body',
1404
+ required: false,
1405
+ description: "Agents to link on the copy. Omit to carry the source flow's agents over. Required when the source is a Roark-managed flow with no agents of its own.",
1406
+ valueKind: 'array',
1407
+ repeatable: true,
1408
+ },
1409
+ ],
1070
1410
  hasParams: true,
1071
1411
  paramsAllOptional: true,
1072
1412
  bodyOpaque: false,
@@ -3215,9 +3555,9 @@ exports.COMMANDS = [
3215
3555
  path: ['responseTiming'],
3216
3556
  location: 'body',
3217
3557
  required: false,
3218
- description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED)',
3558
+ description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor for several seconds.',
3219
3559
  valueKind: 'string',
3220
- enumValues: ['RELAXED', 'NORMAL', 'QUICK'],
3560
+ enumValues: ['RELAXED', 'NORMAL', 'QUICK', 'BARGE_IN'],
3221
3561
  repeatable: false,
3222
3562
  },
3223
3563
  {
@@ -3616,9 +3956,9 @@ exports.COMMANDS = [
3616
3956
  path: ['responseTiming'],
3617
3957
  location: 'body',
3618
3958
  required: false,
3619
- description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED)',
3959
+ description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED). BARGE_IN also talks over the agent once it has held the floor for several seconds.',
3620
3960
  valueKind: 'string',
3621
- enumValues: ['RELAXED', 'NORMAL', 'QUICK'],
3961
+ enumValues: ['RELAXED', 'NORMAL', 'QUICK', 'BARGE_IN'],
3622
3962
  repeatable: false,
3623
3963
  },
3624
3964
  {
@@ -3920,6 +4260,29 @@ exports.COMMANDS = [
3920
4260
  acceptsBody: false,
3921
4261
  requiresAuth: true,
3922
4262
  },
4263
+ {
4264
+ commandPath: ['simulation', 'plan', 'job', 'cancel'],
4265
+ clientProperty: 'simulationRunPlanJob',
4266
+ methodName: 'cancel',
4267
+ httpMethod: 'post',
4268
+ httpPath: '/v1/simulation/plan/job/{jobId}/cancel',
4269
+ summary: 'Cancel a simulation plan job',
4270
+ description: 'Stops a run that has not finished yet. Already-finished runs are left alone. Intended for CI: when a pipeline is cancelled or superseded, cancelling the run stops it placing calls you no longer need. Safe to call more than once.',
4271
+ positionals: [
4272
+ {
4273
+ name: 'job-id',
4274
+ paramKey: 'jobId',
4275
+ description: 'Simulation run plan job ID',
4276
+ },
4277
+ ],
4278
+ flags: [],
4279
+ hasParams: false,
4280
+ paramsAllOptional: true,
4281
+ bodyOpaque: false,
4282
+ bodyVariants: [],
4283
+ acceptsBody: false,
4284
+ requiresAuth: true,
4285
+ },
3923
4286
  {
3924
4287
  commandPath: ['simulation', 'plan', 'job', 'get'],
3925
4288
  clientProperty: 'simulationRunPlanJob',