@roarkanalytics/cli 0.15.0 → 0.17.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,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.17.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.16.0...v0.17.0) (2026-09-15)
4
+
5
+
6
+ ### Features
7
+
8
+ * **cli:** cli update ([#42](https://github.com/roarkhq/cli-roark-analytics/issues/42)) ([0937776](https://github.com/roarkhq/cli-roark-analytics/commit/0937776bf83b3916b72133cfb20a07e76b5fc8dd))
9
+
10
+ ## [0.16.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.15.0...v0.16.0) (2026-09-15)
11
+
12
+
13
+ ### Features
14
+
15
+ * **cli:** cli update ([#40](https://github.com/roarkhq/cli-roark-analytics/issues/40)) ([ec92dff](https://github.com/roarkhq/cli-roark-analytics/commit/ec92dff3dc45f4a53f5c7166e4b9d89babcd1625))
16
+
3
17
  ## [0.15.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.14.0...v0.15.0) (2026-09-14)
4
18
 
5
19
 
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,
@@ -2723,9 +3063,13 @@ exports.COMMANDS = [
2723
3063
  'CHILDREN_PLAYING',
2724
3064
  'CITY',
2725
3065
  'COFFEE_SHOP',
3066
+ 'CONSTRUCTION',
3067
+ 'CRYING_BABY',
2726
3068
  'DRIVING',
3069
+ 'LIBRARY',
2727
3070
  'OFFICE',
2728
3071
  'THUNDERSTORM',
3072
+ 'TRAIN',
2729
3073
  ],
2730
3074
  repeatable: false,
2731
3075
  },
@@ -2870,9 +3214,13 @@ exports.COMMANDS = [
2870
3214
  'CHILDREN_PLAYING',
2871
3215
  'CITY',
2872
3216
  'COFFEE_SHOP',
3217
+ 'CONSTRUCTION',
3218
+ 'CRYING_BABY',
2873
3219
  'DRIVING',
3220
+ 'LIBRARY',
2874
3221
  'OFFICE',
2875
3222
  'THUNDERSTORM',
3223
+ 'TRAIN',
2876
3224
  ],
2877
3225
  repeatable: false,
2878
3226
  },
@@ -3124,9 +3472,13 @@ exports.COMMANDS = [
3124
3472
  'CHILDREN_PLAYING',
3125
3473
  'CITY',
3126
3474
  'COFFEE_SHOP',
3475
+ 'CONSTRUCTION',
3476
+ 'CRYING_BABY',
3127
3477
  'DRIVING',
3478
+ 'LIBRARY',
3128
3479
  'OFFICE',
3129
3480
  'THUNDERSTORM',
3481
+ 'TRAIN',
3130
3482
  ],
3131
3483
  repeatable: false,
3132
3484
  },
@@ -3215,9 +3567,9 @@ exports.COMMANDS = [
3215
3567
  path: ['responseTiming'],
3216
3568
  location: 'body',
3217
3569
  required: false,
3218
- description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED)',
3570
+ 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
3571
  valueKind: 'string',
3220
- enumValues: ['RELAXED', 'NORMAL', 'QUICK'],
3572
+ enumValues: ['RELAXED', 'NORMAL', 'QUICK', 'BARGE_IN'],
3221
3573
  repeatable: false,
3222
3574
  },
3223
3575
  {
@@ -3525,9 +3877,13 @@ exports.COMMANDS = [
3525
3877
  'CHILDREN_PLAYING',
3526
3878
  'CITY',
3527
3879
  'COFFEE_SHOP',
3880
+ 'CONSTRUCTION',
3881
+ 'CRYING_BABY',
3528
3882
  'DRIVING',
3883
+ 'LIBRARY',
3529
3884
  'OFFICE',
3530
3885
  'THUNDERSTORM',
3886
+ 'TRAIN',
3531
3887
  ],
3532
3888
  repeatable: false,
3533
3889
  },
@@ -3616,9 +3972,9 @@ exports.COMMANDS = [
3616
3972
  path: ['responseTiming'],
3617
3973
  location: 'body',
3618
3974
  required: false,
3619
- description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED)',
3975
+ 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
3976
  valueKind: 'string',
3621
- enumValues: ['RELAXED', 'NORMAL', 'QUICK'],
3977
+ enumValues: ['RELAXED', 'NORMAL', 'QUICK', 'BARGE_IN'],
3622
3978
  repeatable: false,
3623
3979
  },
3624
3980
  {
@@ -3920,6 +4276,29 @@ exports.COMMANDS = [
3920
4276
  acceptsBody: false,
3921
4277
  requiresAuth: true,
3922
4278
  },
4279
+ {
4280
+ commandPath: ['simulation', 'plan', 'job', 'cancel'],
4281
+ clientProperty: 'simulationRunPlanJob',
4282
+ methodName: 'cancel',
4283
+ httpMethod: 'post',
4284
+ httpPath: '/v1/simulation/plan/job/{jobId}/cancel',
4285
+ summary: 'Cancel a simulation plan job',
4286
+ 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.',
4287
+ positionals: [
4288
+ {
4289
+ name: 'job-id',
4290
+ paramKey: 'jobId',
4291
+ description: 'Simulation run plan job ID',
4292
+ },
4293
+ ],
4294
+ flags: [],
4295
+ hasParams: false,
4296
+ paramsAllOptional: true,
4297
+ bodyOpaque: false,
4298
+ bodyVariants: [],
4299
+ acceptsBody: false,
4300
+ requiresAuth: true,
4301
+ },
3923
4302
  {
3924
4303
  commandPath: ['simulation', 'plan', 'job', 'get'],
3925
4304
  clientProperty: 'simulationRunPlanJob',