@roarkanalytics/cli 0.26.1 → 0.29.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,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.29.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.28.0...v0.29.0) (2026-09-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * **cli:** cli update ([#72](https://github.com/roarkhq/cli-roark-analytics/issues/72)) ([1ecc3a1](https://github.com/roarkhq/cli-roark-analytics/commit/1ecc3a1162173d6d6ac974e8c8acc89945f7d6ce))
9
+
10
+ ## [0.28.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.27.0...v0.28.0) (2026-09-24)
11
+
12
+
13
+ ### Features
14
+
15
+ * **cli:** cli update ([#70](https://github.com/roarkhq/cli-roark-analytics/issues/70)) ([2f058da](https://github.com/roarkhq/cli-roark-analytics/commit/2f058da3433004f93cb6b24b33f2a97dd8042fe7))
16
+
17
+ ## [0.27.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.26.1...v0.27.0) (2026-09-23)
18
+
19
+
20
+ ### Features
21
+
22
+ * **cli:** cli update ([#68](https://github.com/roarkhq/cli-roark-analytics/issues/68)) ([077cb61](https://github.com/roarkhq/cli-roark-analytics/commit/077cb6105816c02b6595e92b604d8751520d09a4))
23
+
3
24
  ## [0.26.1](https://github.com/roarkhq/cli-roark-analytics/compare/v0.26.0...v0.26.1) (2026-09-23)
4
25
 
5
26
 
package/README.md CHANGED
@@ -241,6 +241,7 @@ roark completion fish | source
241
241
  | `roark simulation environment update <environment-id>` | Update an environment |
242
242
  | `roark simulation job get <job-id>` | Get simulation by ID |
243
243
  | `roark simulation job lookup --roark-phone-number <value>` | Lookup by phone number |
244
+ | `roark simulation job tool-mock list <job-id>` | List mocked tool invocations |
244
245
  | `roark simulation persona create --name <value> --language <value> --accent <value> --gender <value>` | Create a new persona |
245
246
  | `roark simulation persona get <persona-id>` | Get persona by ID |
246
247
  | `roark simulation persona list` | List personas |
@@ -257,6 +258,10 @@ roark completion fish | source
257
258
  | `roark simulation run --data '{ ... }'` | Run a simulation |
258
259
  | `roark simulation template list` | List simulation templates |
259
260
  | `roark simulation tool mock --simulation-job-id <value> --tool-name <value>` | Mock a tool call during a test call |
261
+ | `roark simulation tool-fixture create --tool-name <value>` | Set a tool fixture |
262
+ | `roark simulation tool-fixture delete <fixture-id>` | Delete a tool fixture |
263
+ | `roark simulation tool-fixture list` | List tool fixtures |
264
+ | `roark simulation tool-fixture update <fixture-id>` | Update a tool fixture |
260
265
 
261
266
  ### webhook
262
267
 
package/commands.js CHANGED
@@ -43,11 +43,13 @@ exports.GROUPS = {
43
43
  simulation: 'Manage simulations',
44
44
  'simulation environment': 'Manage simulation environments',
45
45
  'simulation job': 'Read simulation jobs',
46
+ 'simulation job tool-mock': 'Read simulation job tool mocks',
46
47
  'simulation persona': 'Manage simulation personas',
47
48
  'simulation plan': 'Manage simulation plans',
48
49
  'simulation plan job': 'Manage simulation plan jobs',
49
50
  'simulation template': 'Read simulation templates',
50
51
  'simulation tool': 'Read simulation tool',
52
+ 'simulation tool-fixture': 'Manage simulation tool fixtures',
51
53
  webhook: 'Manage webhooks',
52
54
  };
53
55
  exports.COMMANDS = [
@@ -1998,6 +2000,15 @@ exports.COMMANDS = [
1998
2000
  valueKind: 'string',
1999
2001
  repeatable: false,
2000
2002
  },
2003
+ {
2004
+ name: 'additional-expectations',
2005
+ path: ['additionalExpectations'],
2006
+ location: 'body',
2007
+ required: false,
2008
+ description: "The expectations graded on this variant only, on top of the flow's own. Sent as the complete set: it replaces whatever the variant had, so omit it to leave the set alone and send [] to clear it. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on every graph edit.",
2009
+ valueKind: 'array',
2010
+ repeatable: false,
2011
+ },
2001
2012
  {
2002
2013
  name: 'persona-override-id',
2003
2014
  path: ['personaOverrideId'],
@@ -2140,7 +2151,7 @@ exports.COMMANDS = [
2140
2151
  path: ['additionalExpectations'],
2141
2152
  location: 'body',
2142
2153
  required: false,
2143
- description: "Replaces the expectations that apply to this variant on top of the flow's. Omit to leave them alone, send [] to clear. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on the next graph edit.",
2154
+ description: "The expectations graded on this variant only, on top of the flow's own. Sent as the complete set: it replaces whatever the variant had, so omit it to leave the set alone and send [] to clear it. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on every graph edit.",
2144
2155
  valueKind: 'array',
2145
2156
  repeatable: false,
2146
2157
  },
@@ -2284,7 +2295,7 @@ exports.COMMANDS = [
2284
2295
  path: ['additionalExpectations'],
2285
2296
  location: 'body',
2286
2297
  required: false,
2287
- description: "Replaces the expectations that apply to this variant on top of the flow's. Omit to leave them alone, send [] to clear. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on the next graph edit.",
2298
+ description: "The expectations graded on this variant only, on top of the flow's own. Sent as the complete set: it replaces whatever the variant had, so omit it to leave the set alone and send [] to clear it. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on every graph edit.",
2288
2299
  valueKind: 'array',
2289
2300
  repeatable: false,
2290
2301
  },
@@ -3829,6 +3840,29 @@ exports.COMMANDS = [
3829
3840
  acceptsBody: false,
3830
3841
  requiresAuth: true,
3831
3842
  },
3843
+ {
3844
+ commandPath: ['simulation', 'job', 'tool-mock', 'list'],
3845
+ clientProperty: 'simulationJobToolMock',
3846
+ methodName: 'list',
3847
+ httpMethod: 'get',
3848
+ httpPath: '/v1/simulation/job/{jobId}/tool-mock',
3849
+ summary: 'List mocked tool invocations',
3850
+ description: "Every guarded tool invocation Roark answered during this simulation: what the agent tried to call, with what arguments, and the simulated response it received. Use this to assert tool behavior in CI after a test call, with zero real side effects. Empty when the agent's tools are not guarded (see the tool guard docs).",
3851
+ positionals: [
3852
+ {
3853
+ name: 'job-id',
3854
+ paramKey: 'jobId',
3855
+ description: 'Simulation job ID',
3856
+ },
3857
+ ],
3858
+ flags: [],
3859
+ hasParams: false,
3860
+ paramsAllOptional: true,
3861
+ bodyOpaque: false,
3862
+ bodyVariants: [],
3863
+ acceptsBody: false,
3864
+ requiresAuth: true,
3865
+ },
3832
3866
  {
3833
3867
  commandPath: ['simulation', 'persona', 'create'],
3834
3868
  clientProperty: 'simulationPersona',
@@ -4783,7 +4817,7 @@ exports.COMMANDS = [
4783
4817
  path: ['comparisonBaseline'],
4784
4818
  location: 'body',
4785
4819
  required: false,
4786
- description: 'The value of `comparisonProperty` every other value is measured against, for example `NONE` for `BACKGROUND_NOISE` or `NORMAL` for `SPEECH_PACE`. Must be a value that property can take. 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.',
4820
+ 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.',
4787
4821
  valueKind: 'string',
4788
4822
  repeatable: false,
4789
4823
  },
@@ -5306,7 +5340,7 @@ exports.COMMANDS = [
5306
5340
  path: ['comparisonBaseline'],
5307
5341
  location: 'body',
5308
5342
  required: false,
5309
- description: 'The value every other value is measured against. See `POST /v1/simulation/plan`. A real value cannot be sent on its own: the property it belongs to decides which values are legal, and an omitted property means "leave unchanged", which this endpoint cannot check a baseline against. Send `comparisonProperty` with it, or get a `400`. `null` on its own IS allowed, and clears just the baseline while leaving the property set. Nothing needs validating when clearing, and a property with no baseline is a real state: the report falls back to that property\'s own norm, and `GENDER` has no norm to fall back to.',
5343
+ description: 'The reference value, shown first in the results. See `POST /v1/simulation/plan`. A real value cannot be sent on its own: the property it belongs to decides which values are legal, and an omitted property means "leave unchanged", which this endpoint cannot check a baseline against. Send `comparisonProperty` with it, or get a `400`. `null` on its own IS allowed, and clears just the baseline while leaving the property set. Nothing needs validating when clearing, and a property with no baseline is a real state: the report falls back to that property\'s own norm, and `GENDER` has no norm to fall back to.',
5310
5344
  valueKind: 'string',
5311
5345
  repeatable: false,
5312
5346
  },
@@ -5437,6 +5471,165 @@ exports.COMMANDS = [
5437
5471
  acceptsBody: true,
5438
5472
  requiresAuth: true,
5439
5473
  },
5474
+ {
5475
+ commandPath: ['simulation', 'tool-fixture', 'create'],
5476
+ clientProperty: 'simulationToolFixture',
5477
+ methodName: 'create',
5478
+ httpMethod: 'post',
5479
+ httpPath: '/v1/simulation/tool-fixture',
5480
+ summary: 'Set a tool fixture',
5481
+ description: 'Create-or-replace by scope: one fixture per tool project-wide, plus one per (tool, flow variant). Setting the same scope twice replaces the response, so CI can apply fixtures idempotently. During Roark test calls the tool guard answers with the fixture verbatim instead of generating a response; real callers are never affected.',
5482
+ positionals: [],
5483
+ flags: [
5484
+ {
5485
+ name: 'tool-name',
5486
+ path: ['toolName'],
5487
+ location: 'body',
5488
+ required: true,
5489
+ description: 'The tool this fixture answers for.',
5490
+ valueKind: 'string',
5491
+ repeatable: false,
5492
+ },
5493
+ {
5494
+ name: 'response',
5495
+ path: ['response'],
5496
+ location: 'body',
5497
+ required: false,
5498
+ description: 'The exact JSON to return.',
5499
+ valueKind: 'string',
5500
+ repeatable: false,
5501
+ },
5502
+ {
5503
+ name: 'customer-flow-variant-id',
5504
+ path: ['customerFlowVariantId'],
5505
+ location: 'body',
5506
+ required: false,
5507
+ description: 'Pin the fixture to one flow variant (scenario). Omit for a project-wide fixture. A variant-pinned fixture beats the project-wide one.',
5508
+ valueKind: 'string',
5509
+ repeatable: false,
5510
+ },
5511
+ {
5512
+ name: 'description',
5513
+ path: ['description'],
5514
+ location: 'body',
5515
+ required: false,
5516
+ description: 'Why this fixture exists.',
5517
+ valueKind: 'string',
5518
+ repeatable: false,
5519
+ },
5520
+ {
5521
+ name: 'enabled',
5522
+ path: ['enabled'],
5523
+ location: 'body',
5524
+ required: false,
5525
+ description: 'Defaults to true.',
5526
+ valueKind: 'boolean',
5527
+ repeatable: false,
5528
+ },
5529
+ ],
5530
+ hasParams: true,
5531
+ paramsAllOptional: false,
5532
+ bodyOpaque: false,
5533
+ bodyVariants: [],
5534
+ acceptsBody: true,
5535
+ requiresAuth: true,
5536
+ },
5537
+ {
5538
+ commandPath: ['simulation', 'tool-fixture', 'delete'],
5539
+ clientProperty: 'simulationToolFixture',
5540
+ methodName: 'delete',
5541
+ httpMethod: 'delete',
5542
+ httpPath: '/v1/simulation/tool-fixture/{fixtureId}',
5543
+ summary: 'Delete a tool fixture',
5544
+ description: 'The tool goes back to scenario-aware generated responses in test calls.',
5545
+ positionals: [
5546
+ {
5547
+ name: 'fixture-id',
5548
+ paramKey: 'fixtureId',
5549
+ },
5550
+ ],
5551
+ flags: [],
5552
+ hasParams: false,
5553
+ paramsAllOptional: true,
5554
+ bodyOpaque: false,
5555
+ bodyVariants: [],
5556
+ acceptsBody: false,
5557
+ requiresAuth: true,
5558
+ },
5559
+ {
5560
+ commandPath: ['simulation', 'tool-fixture', 'list'],
5561
+ clientProperty: 'simulationToolFixture',
5562
+ methodName: 'list',
5563
+ httpMethod: 'get',
5564
+ httpPath: '/v1/simulation/tool-fixture',
5565
+ summary: 'List tool fixtures',
5566
+ description: 'All deterministic tool responses configured for this project, optionally filtered by tool.',
5567
+ positionals: [],
5568
+ flags: [
5569
+ {
5570
+ name: 'tool-name',
5571
+ path: ['toolName'],
5572
+ location: 'query',
5573
+ required: false,
5574
+ description: 'Only fixtures for this tool.',
5575
+ valueKind: 'string',
5576
+ repeatable: false,
5577
+ },
5578
+ ],
5579
+ hasParams: true,
5580
+ paramsAllOptional: true,
5581
+ bodyOpaque: false,
5582
+ bodyVariants: [],
5583
+ acceptsBody: false,
5584
+ requiresAuth: true,
5585
+ },
5586
+ {
5587
+ commandPath: ['simulation', 'tool-fixture', 'update'],
5588
+ clientProperty: 'simulationToolFixture',
5589
+ methodName: 'update',
5590
+ httpMethod: 'put',
5591
+ httpPath: '/v1/simulation/tool-fixture/{fixtureId}',
5592
+ summary: 'Update a tool fixture',
5593
+ description: 'Change the response, description, or enabled state of an existing fixture.',
5594
+ positionals: [
5595
+ {
5596
+ name: 'fixture-id',
5597
+ paramKey: 'fixtureId',
5598
+ },
5599
+ ],
5600
+ flags: [
5601
+ {
5602
+ name: 'response',
5603
+ path: ['response'],
5604
+ location: 'body',
5605
+ required: false,
5606
+ valueKind: 'string',
5607
+ repeatable: false,
5608
+ },
5609
+ {
5610
+ name: 'description',
5611
+ path: ['description'],
5612
+ location: 'body',
5613
+ required: false,
5614
+ valueKind: 'string',
5615
+ repeatable: false,
5616
+ },
5617
+ {
5618
+ name: 'enabled',
5619
+ path: ['enabled'],
5620
+ location: 'body',
5621
+ required: false,
5622
+ valueKind: 'boolean',
5623
+ repeatable: false,
5624
+ },
5625
+ ],
5626
+ hasParams: true,
5627
+ paramsAllOptional: true,
5628
+ bodyOpaque: false,
5629
+ bodyVariants: [],
5630
+ acceptsBody: true,
5631
+ requiresAuth: true,
5632
+ },
5440
5633
  {
5441
5634
  commandPath: ['webhook', 'create'],
5442
5635
  clientProperty: 'webhook',