@roarkanalytics/cli 0.2.0 → 0.4.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 ADDED
@@ -0,0 +1,43 @@
1
+ # Changelog
2
+
3
+ ## [0.4.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.3.0...v0.4.0) (2026-09-03)
4
+
5
+
6
+ ### Features
7
+
8
+ * **cli:** cli update ([#13](https://github.com/roarkhq/cli-roark-analytics/issues/13)) ([390b149](https://github.com/roarkhq/cli-roark-analytics/commit/390b1493da72b1e2bc5e9bd1fbdb103f9854e476))
9
+
10
+ ## [0.3.0](https://github.com/roarkhq/cli-roark-analytics/compare/v0.2.0...v0.3.0) (2026-09-02)
11
+
12
+
13
+ ### Features
14
+
15
+ * **auth:** browser-based login (OAuth authorization-code + PKCE) ([#6](https://github.com/roarkhq/cli-roark-analytics/issues/6)) ([62c476e](https://github.com/roarkhq/cli-roark-analytics/commit/62c476ea4d383842bf57fe9645ba65a77297d503))
16
+ * **auth:** verify token on login, warn on env-var shadow, clearer errors ([#5](https://github.com/roarkhq/cli-roark-analytics/issues/5)) ([5b7a256](https://github.com/roarkhq/cli-roark-analytics/commit/5b7a2568149cf36d1cabe2cfe84afc63b4ef7939))
17
+ * **cli:** add the roark command line interface ([9ad4541](https://github.com/roarkhq/cli-roark-analytics/commit/9ad45413fca0e0864db5827c9511b4c2757103eb))
18
+ * **cli:** cli update ([e28294f](https://github.com/roarkhq/cli-roark-analytics/commit/e28294fec4df79eb40a184b6996a31f2ed45a7db))
19
+ * **cli:** cli update ([8c16aed](https://github.com/roarkhq/cli-roark-analytics/commit/8c16aed1a2b5fdebfd0303f0905b8d596b4d2acb))
20
+ * **cli:** cli update ([131c7c3](https://github.com/roarkhq/cli-roark-analytics/commit/131c7c37e05b28ea31934708c774c4c512191a60))
21
+ * **cli:** cli update ([c46b935](https://github.com/roarkhq/cli-roark-analytics/commit/c46b935e23f0e40e290a2430879e3c5bb9e7fe77))
22
+ * **cli:** cli update ([35b9b0b](https://github.com/roarkhq/cli-roark-analytics/commit/35b9b0b5eee942b4ed24e4ca6e6aedf5fafa5a54))
23
+ * **cli:** config diff/apply for config-as-code directories ([#1143](https://github.com/roarkhq/cli-roark-analytics/issues/1143)) ([d4ff899](https://github.com/roarkhq/cli-roark-analytics/commit/d4ff8999e223e9c3c0e36c6f910d08058507841b))
24
+ * **cli:** install with a script, not a global npm install ([6db9132](https://github.com/roarkhq/cli-roark-analytics/commit/6db91327c257d38de08dcf816cd103eb13ee3aaa))
25
+ * **cli:** ship a shrinkwrap so an install resolves the same tree twice ([415cc82](https://github.com/roarkhq/cli-roark-analytics/commit/415cc8269939265d9b3a3a9827c4a09a568144bb))
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * **cli:** do not send a stored credential to a base URL a project file chose ([1d50a94](https://github.com/roarkhq/cli-roark-analytics/commit/1d50a9447e1a5bc988e9d2e2d641f58ed5865b87))
31
+ * **cli:** make a truncated download do nothing ([9a52f2f](https://github.com/roarkhq/cli-roark-analytics/commit/9a52f2fb6dc1938bbd6d5919fae2a4673622f15f))
32
+ * **cli:** only read stdin when there is something to read from ([66c7061](https://github.com/roarkhq/cli-roark-analytics/commit/66c706157bee14727b96a1970fa49474755f0812))
33
+ * **cli:** report the version the package actually publishes ([bbaf3ac](https://github.com/roarkhq/cli-roark-analytics/commit/bbaf3ac48a3e39c6f626810547caf9b7329fb4bd))
34
+ * **cli:** warn instead of failing when the shrinkwrap cannot be built ([09f0a2c](https://github.com/roarkhq/cli-roark-analytics/commit/09f0a2c793ec5ab3efdc55608229a7da9bb1f414))
35
+
36
+
37
+ ### Chores
38
+
39
+ * **cli:** 0.2.0 ([cd35004](https://github.com/roarkhq/cli-roark-analytics/commit/cd350040d4dcbbb4eaeaa714ce5a759ffe627c88))
40
+ * **cli:** drop the inert x-release-please-version marker ([e3747f7](https://github.com/roarkhq/cli-roark-analytics/commit/e3747f7b30bb9b345020debc8475a685576a4c60))
41
+ * **cli:** pin shell scripts to LF line endings ([1a65bea](https://github.com/roarkhq/cli-roark-analytics/commit/1a65bea0f823abfa84818646b738031d018cf73c))
42
+ * **cli:** start the CLI at 0.1.0 rather than mirroring the SDK ([e9dad1d](https://github.com/roarkhq/cli-roark-analytics/commit/e9dad1d3e8672a71bfda639599361ef1e2d70c3a))
43
+ * stand the package up on its own ([068005f](https://github.com/roarkhq/cli-roark-analytics/commit/068005f5f6154e7131926328246ec96ae10e0626))
package/commands.js CHANGED
@@ -1375,7 +1375,7 @@ exports.COMMANDS = [
1375
1375
  path: ['branchingMode'],
1376
1376
  location: 'body',
1377
1377
  required: false,
1378
- description: 'Scripted flows only.',
1378
+ description: 'Scripted flows only. How a run walks the graph. DETERMINISTIC ("Simulate every path" in the app) places one call per variant, each following its path exactly whatever the agent says. ADAPTIVE ("Adapt to your agent") collapses the paths into one call PER PERSONA, on which the simulated customer picks a branch from what the agent actually said. Both modes speak the exact authored lines, and neither changes how metrics or expectations grade.',
1379
1379
  valueKind: 'string',
1380
1380
  enumValues: ['DETERMINISTIC', 'ADAPTIVE'],
1381
1381
  repeatable: false,
@@ -2958,6 +2958,15 @@ exports.COMMANDS = [
2958
2958
  valueKind: 'array',
2959
2959
  repeatable: false,
2960
2960
  },
2961
+ {
2962
+ name: 'enrich-with-live-conversation',
2963
+ path: ['enrichWithLiveConversation'],
2964
+ location: 'body',
2965
+ required: false,
2966
+ 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.",
2967
+ valueKind: 'boolean',
2968
+ repeatable: false,
2969
+ },
2961
2970
  {
2962
2971
  name: 'auto-run',
2963
2972
  path: ['autoRun'],
@@ -3379,6 +3388,15 @@ exports.COMMANDS = [
3379
3388
  valueKind: 'array',
3380
3389
  repeatable: false,
3381
3390
  },
3391
+ {
3392
+ name: 'enrich-with-live-conversation',
3393
+ path: ['enrichWithLiveConversation'],
3394
+ location: 'body',
3395
+ required: false,
3396
+ description: "Whether to merge the customer's own live recording into each simulation of this plan.",
3397
+ valueKind: 'boolean',
3398
+ repeatable: false,
3399
+ },
3382
3400
  ],
3383
3401
  hasParams: true,
3384
3402
  paramsAllOptional: true,
package/completions.js CHANGED
@@ -6,8 +6,8 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.COMPLETIONS = void 0;
8
8
  exports.COMPLETIONS = {
9
- bash: "# roark completion for bash. Generated by app-agent-codegen; do not edit.\n\n_roark_is_node() {\n case \"$1\" in\n '') return 0 ;;\n 'agent') return 0 ;;\n 'agent create') return 0 ;;\n 'agent endpoint') return 0 ;;\n 'agent endpoint create') return 0 ;;\n 'agent endpoint get') return 0 ;;\n 'agent endpoint list') return 0 ;;\n 'agent endpoint update') return 0 ;;\n 'agent get') return 0 ;;\n 'agent list') return 0 ;;\n 'agent update') return 0 ;;\n 'call') return 0 ;;\n 'call create') return 0 ;;\n 'call get') return 0 ;;\n 'call list') return 0 ;;\n 'call metric') return 0 ;;\n 'call metric list') return 0 ;;\n 'call sentiment-run') return 0 ;;\n 'call sentiment-run list') return 0 ;;\n 'call transcript') return 0 ;;\n 'call transcript get') return 0 ;;\n 'config') return 0 ;;\n 'config apply') return 0 ;;\n 'config diff') return 0 ;;\n 'customer-flow') return 0 ;;\n 'customer-flow create') return 0 ;;\n 'customer-flow delete') return 0 ;;\n 'customer-flow edge-case') return 0 ;;\n 'customer-flow edge-case create') return 0 ;;\n 'customer-flow edge-case delete') return 0 ;;\n 'customer-flow edge-case promote') return 0 ;;\n 'customer-flow edge-case update') return 0 ;;\n 'customer-flow get') return 0 ;;\n 'customer-flow graph') return 0 ;;\n 'customer-flow graph replace') return 0 ;;\n 'customer-flow happy-path') return 0 ;;\n 'customer-flow happy-path update') return 0 ;;\n 'customer-flow list') return 0 ;;\n 'customer-flow update') return 0 ;;\n 'health') return 0 ;;\n 'http-request-definition') return 0 ;;\n 'http-request-definition create') return 0 ;;\n 'http-request-definition get') return 0 ;;\n 'http-request-definition list') return 0 ;;\n 'http-request-definition update') return 0 ;;\n 'metric') return 0 ;;\n 'metric collection-job') return 0 ;;\n 'metric collection-job create') return 0 ;;\n 'metric collection-job get') return 0 ;;\n 'metric collection-job list') return 0 ;;\n 'metric definition') return 0 ;;\n 'metric definition create') return 0 ;;\n 'metric definition list') return 0 ;;\n 'metric policy') return 0 ;;\n 'metric policy create') return 0 ;;\n 'metric policy delete') return 0 ;;\n 'metric policy get') return 0 ;;\n 'metric policy list') return 0 ;;\n 'metric policy update') return 0 ;;\n 'simulation') return 0 ;;\n 'simulation environment') return 0 ;;\n 'simulation environment get') return 0 ;;\n 'simulation environment list') return 0 ;;\n 'simulation job') return 0 ;;\n 'simulation job get') return 0 ;;\n 'simulation job lookup') return 0 ;;\n 'simulation persona') return 0 ;;\n 'simulation persona create') return 0 ;;\n 'simulation persona get') return 0 ;;\n 'simulation persona list') return 0 ;;\n 'simulation persona update') return 0 ;;\n 'simulation plan') return 0 ;;\n 'simulation plan create') return 0 ;;\n 'simulation plan delete') return 0 ;;\n 'simulation plan get') return 0 ;;\n 'simulation plan job') return 0 ;;\n 'simulation plan job get') return 0 ;;\n 'simulation plan job list') return 0 ;;\n 'simulation plan job start') return 0 ;;\n 'simulation plan list') return 0 ;;\n 'simulation plan update') return 0 ;;\n 'simulation run') return 0 ;;\n 'webhook') return 0 ;;\n 'webhook create') return 0 ;;\n 'webhook delete') return 0 ;;\n 'webhook get') return 0 ;;\n 'webhook list') return 0 ;;\n *) return 1 ;;\n esac\n}\n\n_roark_children() {\n case \"$1\" in\n '') echo 'agent api auth call completion config customer-flow health http-request-definition metric simulation webhook' ;;\n 'agent') echo 'create endpoint get list update' ;;\n 'agent create') echo '' ;;\n 'agent endpoint') echo 'create get list update' ;;\n 'agent endpoint create') echo '' ;;\n 'agent endpoint get') echo '' ;;\n 'agent endpoint list') echo '' ;;\n 'agent endpoint update') echo '' ;;\n 'agent get') echo '' ;;\n 'agent list') echo '' ;;\n 'agent update') echo '' ;;\n 'call') echo 'create get list metric sentiment-run transcript' ;;\n 'call create') echo '' ;;\n 'call get') echo '' ;;\n 'call list') echo '' ;;\n 'call metric') echo 'list' ;;\n 'call metric list') echo '' ;;\n 'call sentiment-run') echo 'list' ;;\n 'call sentiment-run list') echo '' ;;\n 'call transcript') echo 'get' ;;\n 'call transcript get') echo '' ;;\n 'config') echo 'apply diff' ;;\n 'config apply') echo '' ;;\n 'config diff') echo '' ;;\n 'customer-flow') echo 'create delete edge-case get graph happy-path list update' ;;\n 'customer-flow create') echo '' ;;\n 'customer-flow delete') echo '' ;;\n 'customer-flow edge-case') echo 'create delete promote update' ;;\n 'customer-flow edge-case create') echo '' ;;\n 'customer-flow edge-case delete') echo '' ;;\n 'customer-flow edge-case promote') echo '' ;;\n 'customer-flow edge-case update') echo '' ;;\n 'customer-flow get') echo '' ;;\n 'customer-flow graph') echo 'replace' ;;\n 'customer-flow graph replace') echo '' ;;\n 'customer-flow happy-path') echo 'update' ;;\n 'customer-flow happy-path update') echo '' ;;\n 'customer-flow list') echo '' ;;\n 'customer-flow update') echo '' ;;\n 'health') echo '' ;;\n 'http-request-definition') echo 'create get list update' ;;\n 'http-request-definition create') echo '' ;;\n 'http-request-definition get') echo '' ;;\n 'http-request-definition list') echo '' ;;\n 'http-request-definition update') echo '' ;;\n 'metric') echo 'collection-job definition policy' ;;\n 'metric collection-job') echo 'create get list' ;;\n 'metric collection-job create') echo '' ;;\n 'metric collection-job get') echo '' ;;\n 'metric collection-job list') echo '' ;;\n 'metric definition') echo 'create list' ;;\n 'metric definition create') echo '' ;;\n 'metric definition list') echo '' ;;\n 'metric policy') echo 'create delete get list update' ;;\n 'metric policy create') echo '' ;;\n 'metric policy delete') echo '' ;;\n 'metric policy get') echo '' ;;\n 'metric policy list') echo '' ;;\n 'metric policy update') echo '' ;;\n 'simulation') echo 'environment job persona plan run' ;;\n 'simulation environment') echo 'get list' ;;\n 'simulation environment get') echo '' ;;\n 'simulation environment list') echo '' ;;\n 'simulation job') echo 'get lookup' ;;\n 'simulation job get') echo '' ;;\n 'simulation job lookup') echo '' ;;\n 'simulation persona') echo 'create get list update' ;;\n 'simulation persona create') echo '' ;;\n 'simulation persona get') echo '' ;;\n 'simulation persona list') echo '' ;;\n 'simulation persona update') echo '' ;;\n 'simulation plan') echo 'create delete get job list update' ;;\n 'simulation plan create') echo '' ;;\n 'simulation plan delete') echo '' ;;\n 'simulation plan get') echo '' ;;\n 'simulation plan job') echo 'get list start' ;;\n 'simulation plan job get') echo '' ;;\n 'simulation plan job list') echo '' ;;\n 'simulation plan job start') echo '' ;;\n 'simulation plan list') echo '' ;;\n 'simulation plan update') echo '' ;;\n 'simulation run') echo '' ;;\n 'webhook') echo 'create delete get list' ;;\n 'webhook create') echo '' ;;\n 'webhook delete') echo '' ;;\n 'webhook get') echo '' ;;\n 'webhook list') echo '' ;;\n *) echo '' ;;\n esac\n}\n\n_roark_flags() {\n case \"$1\" in\n '') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent create') echo '--name --description --custom-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint create') echo '--agent-id --value --environment --direction --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint list') echo '--limit --after --agent-id --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint update') echo '--environment --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent update') echo '--name --description --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call create') echo '--recording-url --stereo-recording-url --started-at --interface-type --call-direction --ended-status --transcript --tool-invocations --properties --vapi-call-id --livekit-room-id --external-id --agent --agent.endpoint --agent.prompt --agents --customer --customer.label --customer.phone-number-e164 --customers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call list') echo '--limit --after --sort-by --sort-direction --status --search-text --simulation-run-plan-job-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric list') echo '--flatten --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript get') echo '--source --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config apply') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config diff') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case create') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case promote') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph replace') echo '--graph --allow-unmerge --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow list') echo '--limit --after --search-text --type --include-system --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow update') echo '--title --description --branching-mode --agent-ids --agent-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'health') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition create') echo '--scope --url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition update') echo '--url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job create') echo '--call-ids --chat-ids --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy create') echo '--name --status --modality --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy update') echo '--name --status --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job lookup') echo '--roark-phone-number --call-received-at --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona create') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona update') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan create') echo '--name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --auto-run --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job list') echo '--limit --after --status --simulation-run-plan-id --label-id --label-name --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job start') echo '--variables --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan list') echo '--limit --after --search-text --agent-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan update') echo '--is-hidden --name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation run') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook create') echo '--url --description --headers --events --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n *) echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n esac\n}\n\n_roark() {\n local cur path candidate word i\n cur=\"${COMP_WORDS[COMP_CWORD]}\"\n path=\"\"\n\n for (( i = 1; i < COMP_CWORD; i++ )); do\n word=\"${COMP_WORDS[i]}\"\n case \"$word\" in -*) continue ;; esac\n if [ -z \"$path\" ]; then candidate=\"$word\"; else candidate=\"$path $word\"; fi\n if _roark_is_node \"$candidate\"; then path=\"$candidate\"; else break; fi\n done\n\n case \"$cur\" in\n -*) COMPREPLY=( $(compgen -W \"$(_roark_flags \"$path\")\" -- \"$cur\") ) ;;\n *) COMPREPLY=( $(compgen -W \"$(_roark_children \"$path\")\" -- \"$cur\") ) ;;\n esac\n}\n\ncomplete -F _roark roark\n",
10
- zsh: "#compdef roark\n# roark completion for zsh. Generated by app-agent-codegen; do not edit.\n\n_roark_is_node() {\n case \"$1\" in\n '') return 0 ;;\n 'agent') return 0 ;;\n 'agent create') return 0 ;;\n 'agent endpoint') return 0 ;;\n 'agent endpoint create') return 0 ;;\n 'agent endpoint get') return 0 ;;\n 'agent endpoint list') return 0 ;;\n 'agent endpoint update') return 0 ;;\n 'agent get') return 0 ;;\n 'agent list') return 0 ;;\n 'agent update') return 0 ;;\n 'call') return 0 ;;\n 'call create') return 0 ;;\n 'call get') return 0 ;;\n 'call list') return 0 ;;\n 'call metric') return 0 ;;\n 'call metric list') return 0 ;;\n 'call sentiment-run') return 0 ;;\n 'call sentiment-run list') return 0 ;;\n 'call transcript') return 0 ;;\n 'call transcript get') return 0 ;;\n 'config') return 0 ;;\n 'config apply') return 0 ;;\n 'config diff') return 0 ;;\n 'customer-flow') return 0 ;;\n 'customer-flow create') return 0 ;;\n 'customer-flow delete') return 0 ;;\n 'customer-flow edge-case') return 0 ;;\n 'customer-flow edge-case create') return 0 ;;\n 'customer-flow edge-case delete') return 0 ;;\n 'customer-flow edge-case promote') return 0 ;;\n 'customer-flow edge-case update') return 0 ;;\n 'customer-flow get') return 0 ;;\n 'customer-flow graph') return 0 ;;\n 'customer-flow graph replace') return 0 ;;\n 'customer-flow happy-path') return 0 ;;\n 'customer-flow happy-path update') return 0 ;;\n 'customer-flow list') return 0 ;;\n 'customer-flow update') return 0 ;;\n 'health') return 0 ;;\n 'http-request-definition') return 0 ;;\n 'http-request-definition create') return 0 ;;\n 'http-request-definition get') return 0 ;;\n 'http-request-definition list') return 0 ;;\n 'http-request-definition update') return 0 ;;\n 'metric') return 0 ;;\n 'metric collection-job') return 0 ;;\n 'metric collection-job create') return 0 ;;\n 'metric collection-job get') return 0 ;;\n 'metric collection-job list') return 0 ;;\n 'metric definition') return 0 ;;\n 'metric definition create') return 0 ;;\n 'metric definition list') return 0 ;;\n 'metric policy') return 0 ;;\n 'metric policy create') return 0 ;;\n 'metric policy delete') return 0 ;;\n 'metric policy get') return 0 ;;\n 'metric policy list') return 0 ;;\n 'metric policy update') return 0 ;;\n 'simulation') return 0 ;;\n 'simulation environment') return 0 ;;\n 'simulation environment get') return 0 ;;\n 'simulation environment list') return 0 ;;\n 'simulation job') return 0 ;;\n 'simulation job get') return 0 ;;\n 'simulation job lookup') return 0 ;;\n 'simulation persona') return 0 ;;\n 'simulation persona create') return 0 ;;\n 'simulation persona get') return 0 ;;\n 'simulation persona list') return 0 ;;\n 'simulation persona update') return 0 ;;\n 'simulation plan') return 0 ;;\n 'simulation plan create') return 0 ;;\n 'simulation plan delete') return 0 ;;\n 'simulation plan get') return 0 ;;\n 'simulation plan job') return 0 ;;\n 'simulation plan job get') return 0 ;;\n 'simulation plan job list') return 0 ;;\n 'simulation plan job start') return 0 ;;\n 'simulation plan list') return 0 ;;\n 'simulation plan update') return 0 ;;\n 'simulation run') return 0 ;;\n 'webhook') return 0 ;;\n 'webhook create') return 0 ;;\n 'webhook delete') return 0 ;;\n 'webhook get') return 0 ;;\n 'webhook list') return 0 ;;\n *) return 1 ;;\n esac\n}\n\n_roark_children() {\n case \"$1\" in\n '') echo 'agent api auth call completion config customer-flow health http-request-definition metric simulation webhook' ;;\n 'agent') echo 'create endpoint get list update' ;;\n 'agent create') echo '' ;;\n 'agent endpoint') echo 'create get list update' ;;\n 'agent endpoint create') echo '' ;;\n 'agent endpoint get') echo '' ;;\n 'agent endpoint list') echo '' ;;\n 'agent endpoint update') echo '' ;;\n 'agent get') echo '' ;;\n 'agent list') echo '' ;;\n 'agent update') echo '' ;;\n 'call') echo 'create get list metric sentiment-run transcript' ;;\n 'call create') echo '' ;;\n 'call get') echo '' ;;\n 'call list') echo '' ;;\n 'call metric') echo 'list' ;;\n 'call metric list') echo '' ;;\n 'call sentiment-run') echo 'list' ;;\n 'call sentiment-run list') echo '' ;;\n 'call transcript') echo 'get' ;;\n 'call transcript get') echo '' ;;\n 'config') echo 'apply diff' ;;\n 'config apply') echo '' ;;\n 'config diff') echo '' ;;\n 'customer-flow') echo 'create delete edge-case get graph happy-path list update' ;;\n 'customer-flow create') echo '' ;;\n 'customer-flow delete') echo '' ;;\n 'customer-flow edge-case') echo 'create delete promote update' ;;\n 'customer-flow edge-case create') echo '' ;;\n 'customer-flow edge-case delete') echo '' ;;\n 'customer-flow edge-case promote') echo '' ;;\n 'customer-flow edge-case update') echo '' ;;\n 'customer-flow get') echo '' ;;\n 'customer-flow graph') echo 'replace' ;;\n 'customer-flow graph replace') echo '' ;;\n 'customer-flow happy-path') echo 'update' ;;\n 'customer-flow happy-path update') echo '' ;;\n 'customer-flow list') echo '' ;;\n 'customer-flow update') echo '' ;;\n 'health') echo '' ;;\n 'http-request-definition') echo 'create get list update' ;;\n 'http-request-definition create') echo '' ;;\n 'http-request-definition get') echo '' ;;\n 'http-request-definition list') echo '' ;;\n 'http-request-definition update') echo '' ;;\n 'metric') echo 'collection-job definition policy' ;;\n 'metric collection-job') echo 'create get list' ;;\n 'metric collection-job create') echo '' ;;\n 'metric collection-job get') echo '' ;;\n 'metric collection-job list') echo '' ;;\n 'metric definition') echo 'create list' ;;\n 'metric definition create') echo '' ;;\n 'metric definition list') echo '' ;;\n 'metric policy') echo 'create delete get list update' ;;\n 'metric policy create') echo '' ;;\n 'metric policy delete') echo '' ;;\n 'metric policy get') echo '' ;;\n 'metric policy list') echo '' ;;\n 'metric policy update') echo '' ;;\n 'simulation') echo 'environment job persona plan run' ;;\n 'simulation environment') echo 'get list' ;;\n 'simulation environment get') echo '' ;;\n 'simulation environment list') echo '' ;;\n 'simulation job') echo 'get lookup' ;;\n 'simulation job get') echo '' ;;\n 'simulation job lookup') echo '' ;;\n 'simulation persona') echo 'create get list update' ;;\n 'simulation persona create') echo '' ;;\n 'simulation persona get') echo '' ;;\n 'simulation persona list') echo '' ;;\n 'simulation persona update') echo '' ;;\n 'simulation plan') echo 'create delete get job list update' ;;\n 'simulation plan create') echo '' ;;\n 'simulation plan delete') echo '' ;;\n 'simulation plan get') echo '' ;;\n 'simulation plan job') echo 'get list start' ;;\n 'simulation plan job get') echo '' ;;\n 'simulation plan job list') echo '' ;;\n 'simulation plan job start') echo '' ;;\n 'simulation plan list') echo '' ;;\n 'simulation plan update') echo '' ;;\n 'simulation run') echo '' ;;\n 'webhook') echo 'create delete get list' ;;\n 'webhook create') echo '' ;;\n 'webhook delete') echo '' ;;\n 'webhook get') echo '' ;;\n 'webhook list') echo '' ;;\n *) echo '' ;;\n esac\n}\n\n_roark_flags() {\n case \"$1\" in\n '') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent create') echo '--name --description --custom-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint create') echo '--agent-id --value --environment --direction --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint list') echo '--limit --after --agent-id --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint update') echo '--environment --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent update') echo '--name --description --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call create') echo '--recording-url --stereo-recording-url --started-at --interface-type --call-direction --ended-status --transcript --tool-invocations --properties --vapi-call-id --livekit-room-id --external-id --agent --agent.endpoint --agent.prompt --agents --customer --customer.label --customer.phone-number-e164 --customers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call list') echo '--limit --after --sort-by --sort-direction --status --search-text --simulation-run-plan-job-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric list') echo '--flatten --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript get') echo '--source --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config apply') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config diff') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case create') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case promote') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph replace') echo '--graph --allow-unmerge --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow list') echo '--limit --after --search-text --type --include-system --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow update') echo '--title --description --branching-mode --agent-ids --agent-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'health') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition create') echo '--scope --url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition update') echo '--url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job create') echo '--call-ids --chat-ids --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy create') echo '--name --status --modality --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy update') echo '--name --status --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job lookup') echo '--roark-phone-number --call-received-at --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona create') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona update') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan create') echo '--name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --auto-run --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job list') echo '--limit --after --status --simulation-run-plan-id --label-id --label-name --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job start') echo '--variables --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan list') echo '--limit --after --search-text --agent-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan update') echo '--is-hidden --name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation run') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook create') echo '--url --description --headers --events --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n *) echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n esac\n}\n\n_roark() {\n local path candidate word cur\n local -a walked\n path=\"\"\n cur=\"${words[CURRENT]}\"\n\n for (( i = 2; i < CURRENT; i++ )); do\n word=\"${words[i]}\"\n case \"$word\" in -*) continue ;; esac\n if [[ -z \"$path\" ]]; then candidate=\"$word\"; else candidate=\"$path $word\"; fi\n if _roark_is_node \"$candidate\"; then path=\"$candidate\"; else break; fi\n done\n\n if [[ \"$cur\" == -* ]]; then\n compadd -- ${=$(_roark_flags \"$path\")}\n else\n compadd -- ${=$(_roark_children \"$path\")}\n fi\n}\n\ncompdef _roark roark\n",
11
- fish: "# roark completion for fish. Generated by app-agent-codegen; do not edit.\n\nfunction __roark_is_node\n switch \"$argv[1]\"\n case ''; return 0\n case 'agent'; return 0\n case 'agent create'; return 0\n case 'agent endpoint'; return 0\n case 'agent endpoint create'; return 0\n case 'agent endpoint get'; return 0\n case 'agent endpoint list'; return 0\n case 'agent endpoint update'; return 0\n case 'agent get'; return 0\n case 'agent list'; return 0\n case 'agent update'; return 0\n case 'call'; return 0\n case 'call create'; return 0\n case 'call get'; return 0\n case 'call list'; return 0\n case 'call metric'; return 0\n case 'call metric list'; return 0\n case 'call sentiment-run'; return 0\n case 'call sentiment-run list'; return 0\n case 'call transcript'; return 0\n case 'call transcript get'; return 0\n case 'config'; return 0\n case 'config apply'; return 0\n case 'config diff'; return 0\n case 'customer-flow'; return 0\n case 'customer-flow create'; return 0\n case 'customer-flow delete'; return 0\n case 'customer-flow edge-case'; return 0\n case 'customer-flow edge-case create'; return 0\n case 'customer-flow edge-case delete'; return 0\n case 'customer-flow edge-case promote'; return 0\n case 'customer-flow edge-case update'; return 0\n case 'customer-flow get'; return 0\n case 'customer-flow graph'; return 0\n case 'customer-flow graph replace'; return 0\n case 'customer-flow happy-path'; return 0\n case 'customer-flow happy-path update'; return 0\n case 'customer-flow list'; return 0\n case 'customer-flow update'; return 0\n case 'health'; return 0\n case 'http-request-definition'; return 0\n case 'http-request-definition create'; return 0\n case 'http-request-definition get'; return 0\n case 'http-request-definition list'; return 0\n case 'http-request-definition update'; return 0\n case 'metric'; return 0\n case 'metric collection-job'; return 0\n case 'metric collection-job create'; return 0\n case 'metric collection-job get'; return 0\n case 'metric collection-job list'; return 0\n case 'metric definition'; return 0\n case 'metric definition create'; return 0\n case 'metric definition list'; return 0\n case 'metric policy'; return 0\n case 'metric policy create'; return 0\n case 'metric policy delete'; return 0\n case 'metric policy get'; return 0\n case 'metric policy list'; return 0\n case 'metric policy update'; return 0\n case 'simulation'; return 0\n case 'simulation environment'; return 0\n case 'simulation environment get'; return 0\n case 'simulation environment list'; return 0\n case 'simulation job'; return 0\n case 'simulation job get'; return 0\n case 'simulation job lookup'; return 0\n case 'simulation persona'; return 0\n case 'simulation persona create'; return 0\n case 'simulation persona get'; return 0\n case 'simulation persona list'; return 0\n case 'simulation persona update'; return 0\n case 'simulation plan'; return 0\n case 'simulation plan create'; return 0\n case 'simulation plan delete'; return 0\n case 'simulation plan get'; return 0\n case 'simulation plan job'; return 0\n case 'simulation plan job get'; return 0\n case 'simulation plan job list'; return 0\n case 'simulation plan job start'; return 0\n case 'simulation plan list'; return 0\n case 'simulation plan update'; return 0\n case 'simulation run'; return 0\n case 'webhook'; return 0\n case 'webhook create'; return 0\n case 'webhook delete'; return 0\n case 'webhook get'; return 0\n case 'webhook list'; return 0\n case '*'; return 1\n end\nend\n\nfunction __roark_children\n switch \"$argv[1]\"\n case ''; echo 'agent\napi\nauth\ncall\ncompletion\nconfig\ncustomer-flow\nhealth\nhttp-request-definition\nmetric\nsimulation\nwebhook'\n case 'agent'; echo 'create\nendpoint\nget\nlist\nupdate'\n case 'agent create'; echo ''\n case 'agent endpoint'; echo 'create\nget\nlist\nupdate'\n case 'agent endpoint create'; echo ''\n case 'agent endpoint get'; echo ''\n case 'agent endpoint list'; echo ''\n case 'agent endpoint update'; echo ''\n case 'agent get'; echo ''\n case 'agent list'; echo ''\n case 'agent update'; echo ''\n case 'call'; echo 'create\nget\nlist\nmetric\nsentiment-run\ntranscript'\n case 'call create'; echo ''\n case 'call get'; echo ''\n case 'call list'; echo ''\n case 'call metric'; echo 'list'\n case 'call metric list'; echo ''\n case 'call sentiment-run'; echo 'list'\n case 'call sentiment-run list'; echo ''\n case 'call transcript'; echo 'get'\n case 'call transcript get'; echo ''\n case 'config'; echo 'apply\ndiff'\n case 'config apply'; echo ''\n case 'config diff'; echo ''\n case 'customer-flow'; echo 'create\ndelete\nedge-case\nget\ngraph\nhappy-path\nlist\nupdate'\n case 'customer-flow create'; echo ''\n case 'customer-flow delete'; echo ''\n case 'customer-flow edge-case'; echo 'create\ndelete\npromote\nupdate'\n case 'customer-flow edge-case create'; echo ''\n case 'customer-flow edge-case delete'; echo ''\n case 'customer-flow edge-case promote'; echo ''\n case 'customer-flow edge-case update'; echo ''\n case 'customer-flow get'; echo ''\n case 'customer-flow graph'; echo 'replace'\n case 'customer-flow graph replace'; echo ''\n case 'customer-flow happy-path'; echo 'update'\n case 'customer-flow happy-path update'; echo ''\n case 'customer-flow list'; echo ''\n case 'customer-flow update'; echo ''\n case 'health'; echo ''\n case 'http-request-definition'; echo 'create\nget\nlist\nupdate'\n case 'http-request-definition create'; echo ''\n case 'http-request-definition get'; echo ''\n case 'http-request-definition list'; echo ''\n case 'http-request-definition update'; echo ''\n case 'metric'; echo 'collection-job\ndefinition\npolicy'\n case 'metric collection-job'; echo 'create\nget\nlist'\n case 'metric collection-job create'; echo ''\n case 'metric collection-job get'; echo ''\n case 'metric collection-job list'; echo ''\n case 'metric definition'; echo 'create\nlist'\n case 'metric definition create'; echo ''\n case 'metric definition list'; echo ''\n case 'metric policy'; echo 'create\ndelete\nget\nlist\nupdate'\n case 'metric policy create'; echo ''\n case 'metric policy delete'; echo ''\n case 'metric policy get'; echo ''\n case 'metric policy list'; echo ''\n case 'metric policy update'; echo ''\n case 'simulation'; echo 'environment\njob\npersona\nplan\nrun'\n case 'simulation environment'; echo 'get\nlist'\n case 'simulation environment get'; echo ''\n case 'simulation environment list'; echo ''\n case 'simulation job'; echo 'get\nlookup'\n case 'simulation job get'; echo ''\n case 'simulation job lookup'; echo ''\n case 'simulation persona'; echo 'create\nget\nlist\nupdate'\n case 'simulation persona create'; echo ''\n case 'simulation persona get'; echo ''\n case 'simulation persona list'; echo ''\n case 'simulation persona update'; echo ''\n case 'simulation plan'; echo 'create\ndelete\nget\njob\nlist\nupdate'\n case 'simulation plan create'; echo ''\n case 'simulation plan delete'; echo ''\n case 'simulation plan get'; echo ''\n case 'simulation plan job'; echo 'get\nlist\nstart'\n case 'simulation plan job get'; echo ''\n case 'simulation plan job list'; echo ''\n case 'simulation plan job start'; echo ''\n case 'simulation plan list'; echo ''\n case 'simulation plan update'; echo ''\n case 'simulation run'; echo ''\n case 'webhook'; echo 'create\ndelete\nget\nlist'\n case 'webhook create'; echo ''\n case 'webhook delete'; echo ''\n case 'webhook get'; echo ''\n case 'webhook list'; echo ''\n case '*'; echo ''\n end\nend\n\nfunction __roark_flags\n switch \"$argv[1]\"\n case ''; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent create'; echo '--name\n--description\n--custom-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint create'; echo '--agent-id\n--value\n--environment\n--direction\n--outbound-dial-type\n--outbound-dial-http-request-definition-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint list'; echo '--limit\n--after\n--agent-id\n--search-text\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint update'; echo '--environment\n--outbound-dial-type\n--outbound-dial-http-request-definition-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent list'; echo '--limit\n--after\n--search-text\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent update'; echo '--name\n--description\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call create'; echo '--recording-url\n--stereo-recording-url\n--started-at\n--interface-type\n--call-direction\n--ended-status\n--transcript\n--tool-invocations\n--properties\n--vapi-call-id\n--livekit-room-id\n--external-id\n--agent\n--agent.endpoint\n--agent.prompt\n--agents\n--customer\n--customer.label\n--customer.phone-number-e164\n--customers\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call list'; echo '--limit\n--after\n--sort-by\n--sort-direction\n--status\n--search-text\n--simulation-run-plan-job-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call metric'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call metric list'; echo '--flatten\n--status\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call sentiment-run'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call sentiment-run list'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call transcript'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call transcript get'; echo '--source\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'config'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'config apply'; echo '--no-prune\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'config diff'; echo '--no-prune\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow create'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case create'; echo '--title\n--environment-id\n--prompt\n--preceded-by-customer-flow-id\n--preceded-by-customer-flow-variant-id\n--persona-override-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case promote'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case update'; echo '--title\n--environment-id\n--prompt\n--preceded-by-customer-flow-id\n--preceded-by-customer-flow-variant-id\n--persona-override-id\n--additional-expectations\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow graph'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow graph replace'; echo '--graph\n--allow-unmerge\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow happy-path'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow happy-path update'; echo '--title\n--environment-id\n--prompt\n--preceded-by-customer-flow-id\n--preceded-by-customer-flow-variant-id\n--persona-override-id\n--additional-expectations\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow list'; echo '--limit\n--after\n--search-text\n--type\n--include-system\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow update'; echo '--title\n--description\n--branching-mode\n--agent-ids\n--agent-expectations\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'health'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition create'; echo '--scope\n--url\n--description\n--method\n--body\n--headers\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition list'; echo '--limit\n--after\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition update'; echo '--url\n--description\n--method\n--body\n--headers\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job create'; echo '--call-ids\n--chat-ids\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job list'; echo '--limit\n--after\n--status\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric definition'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric definition create'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric definition list'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy create'; echo '--name\n--status\n--modality\n--conditions\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy list'; echo '--limit\n--after\n--status\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy update'; echo '--name\n--status\n--conditions\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation environment'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation environment get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation environment list'; echo '--limit\n--after\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation job'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation job get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation job lookup'; echo '--roark-phone-number\n--call-received-at\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona create'; echo '--name\n--description\n--language\n--secondary-language\n--understood-languages\n--accent\n--age\n--gender\n--background-noise\n--speech-pace\n--speech-clarity\n--has-disfluencies\n--base-emotion\n--intent-clarity\n--confirmation-style\n--memory-reliability\n--response-timing\n--backstory-prompt\n--idle-messages\n--idle-timeout-seconds\n--idle-message-max-spoken-count\n--idle-message-reset-count-on-user-speech-enabled\n--properties\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona list'; echo '--limit\n--after\n--search-text\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona update'; echo '--name\n--description\n--language\n--secondary-language\n--understood-languages\n--accent\n--age\n--gender\n--background-noise\n--speech-pace\n--speech-clarity\n--has-disfluencies\n--base-emotion\n--intent-clarity\n--confirmation-style\n--memory-reliability\n--response-timing\n--backstory-prompt\n--idle-messages\n--idle-timeout-seconds\n--idle-message-max-spoken-count\n--idle-message-reset-count-on-user-speech-enabled\n--properties\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan create'; echo '--name\n--description\n--direction\n--iteration-count\n--max-concurrent-jobs\n--max-simulation-duration-seconds\n--silence-timeout-seconds\n--end-call-phrases\n--end-call-reasons\n--execution-mode\n--scenarios\n--flows\n--personas\n--agent-endpoints\n--metrics\n--auto-run\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job list'; echo '--limit\n--after\n--status\n--simulation-run-plan-id\n--label-id\n--label-name\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job start'; echo '--variables\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan list'; echo '--limit\n--after\n--search-text\n--agent-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan update'; echo '--is-hidden\n--name\n--description\n--direction\n--iteration-count\n--max-concurrent-jobs\n--max-simulation-duration-seconds\n--silence-timeout-seconds\n--end-call-phrases\n--end-call-reasons\n--execution-mode\n--scenarios\n--flows\n--personas\n--agent-endpoints\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation run'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook create'; echo '--url\n--description\n--headers\n--events\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook list'; echo '--limit\n--after\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case '*'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n end\nend\n\nfunction __roark_path\n set -l tokens (commandline -opc)\n set -l path \"\"\n for word in $tokens[2..-1]\n if string match -q -- '-*' $word\n continue\n end\n set -l candidate\n if test -z \"$path\"\n set candidate $word\n else\n set candidate \"$path $word\"\n end\n if __roark_is_node \"$candidate\"\n set path \"$candidate\"\n else\n break\n end\n end\n echo $path\nend\n\nfunction __roark_complete\n set -l path (__roark_path)\n set -l token (commandline -ct)\n if string match -q -- '-*' $token\n __roark_flags \"$path\"\n else\n __roark_children \"$path\"\n end\nend\n\ncomplete -c roark -f -a \"(__roark_complete)\"\n",
12
- powershell: '# roark completion for PowerShell. Generated by app-agent-codegen; do not edit.\n\n$roarkChildren = @{\n "" = @("agent", "api", "auth", "call", "completion", "config", "customer-flow", "health", "http-request-definition", "metric", "simulation", "webhook")\n "agent" = @("create", "endpoint", "get", "list", "update")\n "agent create" = @()\n "agent endpoint" = @("create", "get", "list", "update")\n "agent endpoint create" = @()\n "agent endpoint get" = @()\n "agent endpoint list" = @()\n "agent endpoint update" = @()\n "agent get" = @()\n "agent list" = @()\n "agent update" = @()\n "call" = @("create", "get", "list", "metric", "sentiment-run", "transcript")\n "call create" = @()\n "call get" = @()\n "call list" = @()\n "call metric" = @("list")\n "call metric list" = @()\n "call sentiment-run" = @("list")\n "call sentiment-run list" = @()\n "call transcript" = @("get")\n "call transcript get" = @()\n "config" = @("apply", "diff")\n "config apply" = @()\n "config diff" = @()\n "customer-flow" = @("create", "delete", "edge-case", "get", "graph", "happy-path", "list", "update")\n "customer-flow create" = @()\n "customer-flow delete" = @()\n "customer-flow edge-case" = @("create", "delete", "promote", "update")\n "customer-flow edge-case create" = @()\n "customer-flow edge-case delete" = @()\n "customer-flow edge-case promote" = @()\n "customer-flow edge-case update" = @()\n "customer-flow get" = @()\n "customer-flow graph" = @("replace")\n "customer-flow graph replace" = @()\n "customer-flow happy-path" = @("update")\n "customer-flow happy-path update" = @()\n "customer-flow list" = @()\n "customer-flow update" = @()\n "health" = @()\n "http-request-definition" = @("create", "get", "list", "update")\n "http-request-definition create" = @()\n "http-request-definition get" = @()\n "http-request-definition list" = @()\n "http-request-definition update" = @()\n "metric" = @("collection-job", "definition", "policy")\n "metric collection-job" = @("create", "get", "list")\n "metric collection-job create" = @()\n "metric collection-job get" = @()\n "metric collection-job list" = @()\n "metric definition" = @("create", "list")\n "metric definition create" = @()\n "metric definition list" = @()\n "metric policy" = @("create", "delete", "get", "list", "update")\n "metric policy create" = @()\n "metric policy delete" = @()\n "metric policy get" = @()\n "metric policy list" = @()\n "metric policy update" = @()\n "simulation" = @("environment", "job", "persona", "plan", "run")\n "simulation environment" = @("get", "list")\n "simulation environment get" = @()\n "simulation environment list" = @()\n "simulation job" = @("get", "lookup")\n "simulation job get" = @()\n "simulation job lookup" = @()\n "simulation persona" = @("create", "get", "list", "update")\n "simulation persona create" = @()\n "simulation persona get" = @()\n "simulation persona list" = @()\n "simulation persona update" = @()\n "simulation plan" = @("create", "delete", "get", "job", "list", "update")\n "simulation plan create" = @()\n "simulation plan delete" = @()\n "simulation plan get" = @()\n "simulation plan job" = @("get", "list", "start")\n "simulation plan job get" = @()\n "simulation plan job list" = @()\n "simulation plan job start" = @()\n "simulation plan list" = @()\n "simulation plan update" = @()\n "simulation run" = @()\n "webhook" = @("create", "delete", "get", "list")\n "webhook create" = @()\n "webhook delete" = @()\n "webhook get" = @()\n "webhook list" = @()\n}\n\n$roarkFlags = @{\n "" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent create" = @("--name", "--description", "--custom-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint create" = @("--agent-id", "--value", "--environment", "--direction", "--outbound-dial-type", "--outbound-dial-http-request-definition-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint list" = @("--limit", "--after", "--agent-id", "--search-text", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint update" = @("--environment", "--outbound-dial-type", "--outbound-dial-http-request-definition-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent list" = @("--limit", "--after", "--search-text", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent update" = @("--name", "--description", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call create" = @("--recording-url", "--stereo-recording-url", "--started-at", "--interface-type", "--call-direction", "--ended-status", "--transcript", "--tool-invocations", "--properties", "--vapi-call-id", "--livekit-room-id", "--external-id", "--agent", "--agent.endpoint", "--agent.prompt", "--agents", "--customer", "--customer.label", "--customer.phone-number-e164", "--customers", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call list" = @("--limit", "--after", "--sort-by", "--sort-direction", "--status", "--search-text", "--simulation-run-plan-job-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call metric" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call metric list" = @("--flatten", "--status", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call sentiment-run" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call sentiment-run list" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call transcript" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call transcript get" = @("--source", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "config" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "config apply" = @("--no-prune", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "config diff" = @("--no-prune", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow create" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case create" = @("--title", "--environment-id", "--prompt", "--preceded-by-customer-flow-id", "--preceded-by-customer-flow-variant-id", "--persona-override-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case promote" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case update" = @("--title", "--environment-id", "--prompt", "--preceded-by-customer-flow-id", "--preceded-by-customer-flow-variant-id", "--persona-override-id", "--additional-expectations", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow graph" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow graph replace" = @("--graph", "--allow-unmerge", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow happy-path" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow happy-path update" = @("--title", "--environment-id", "--prompt", "--preceded-by-customer-flow-id", "--preceded-by-customer-flow-variant-id", "--persona-override-id", "--additional-expectations", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow list" = @("--limit", "--after", "--search-text", "--type", "--include-system", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow update" = @("--title", "--description", "--branching-mode", "--agent-ids", "--agent-expectations", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "health" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition create" = @("--scope", "--url", "--description", "--method", "--body", "--headers", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition list" = @("--limit", "--after", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition update" = @("--url", "--description", "--method", "--body", "--headers", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job create" = @("--call-ids", "--chat-ids", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job list" = @("--limit", "--after", "--status", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric definition" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric definition create" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric definition list" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy create" = @("--name", "--status", "--modality", "--conditions", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy list" = @("--limit", "--after", "--status", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy update" = @("--name", "--status", "--conditions", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation environment" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation environment get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation environment list" = @("--limit", "--after", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation job" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation job get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation job lookup" = @("--roark-phone-number", "--call-received-at", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona create" = @("--name", "--description", "--language", "--secondary-language", "--understood-languages", "--accent", "--age", "--gender", "--background-noise", "--speech-pace", "--speech-clarity", "--has-disfluencies", "--base-emotion", "--intent-clarity", "--confirmation-style", "--memory-reliability", "--response-timing", "--backstory-prompt", "--idle-messages", "--idle-timeout-seconds", "--idle-message-max-spoken-count", "--idle-message-reset-count-on-user-speech-enabled", "--properties", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona list" = @("--limit", "--after", "--search-text", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona update" = @("--name", "--description", "--language", "--secondary-language", "--understood-languages", "--accent", "--age", "--gender", "--background-noise", "--speech-pace", "--speech-clarity", "--has-disfluencies", "--base-emotion", "--intent-clarity", "--confirmation-style", "--memory-reliability", "--response-timing", "--backstory-prompt", "--idle-messages", "--idle-timeout-seconds", "--idle-message-max-spoken-count", "--idle-message-reset-count-on-user-speech-enabled", "--properties", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan create" = @("--name", "--description", "--direction", "--iteration-count", "--max-concurrent-jobs", "--max-simulation-duration-seconds", "--silence-timeout-seconds", "--end-call-phrases", "--end-call-reasons", "--execution-mode", "--scenarios", "--flows", "--personas", "--agent-endpoints", "--metrics", "--auto-run", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job list" = @("--limit", "--after", "--status", "--simulation-run-plan-id", "--label-id", "--label-name", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job start" = @("--variables", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan list" = @("--limit", "--after", "--search-text", "--agent-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan update" = @("--is-hidden", "--name", "--description", "--direction", "--iteration-count", "--max-concurrent-jobs", "--max-simulation-duration-seconds", "--silence-timeout-seconds", "--end-call-phrases", "--end-call-reasons", "--execution-mode", "--scenarios", "--flows", "--personas", "--agent-endpoints", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation run" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook create" = @("--url", "--description", "--headers", "--events", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook list" = @("--limit", "--after", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n}\n\nRegister-ArgumentCompleter -Native -CommandName roark -ScriptBlock {\n param($wordToComplete, $commandAst, $cursorPosition)\n\n $tokens = @($commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $_.ToString() })\n $path = ""\n\n foreach ($token in $tokens) {\n if ($token.StartsWith("-")) { continue }\n if ($path -eq "") { $candidate = $token } else { $candidate = "$path $token" }\n # Extend only while the next word is a known node, so a flag\'s value is\n # never mistaken for a command.\n if ($roarkChildren.ContainsKey($candidate)) { $path = $candidate } else { break }\n }\n\n if ($wordToComplete.StartsWith("-")) {\n $candidates = $roarkFlags[$path]\n } else {\n $candidates = $roarkChildren[$path]\n }\n\n $candidates | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, \'ParameterValue\', $_)\n }\n}\n',
9
+ bash: "# roark completion for bash. Generated by app-agent-codegen; do not edit.\n\n_roark_is_node() {\n case \"$1\" in\n '') return 0 ;;\n 'agent') return 0 ;;\n 'agent create') return 0 ;;\n 'agent endpoint') return 0 ;;\n 'agent endpoint create') return 0 ;;\n 'agent endpoint get') return 0 ;;\n 'agent endpoint list') return 0 ;;\n 'agent endpoint update') return 0 ;;\n 'agent get') return 0 ;;\n 'agent list') return 0 ;;\n 'agent update') return 0 ;;\n 'call') return 0 ;;\n 'call create') return 0 ;;\n 'call get') return 0 ;;\n 'call list') return 0 ;;\n 'call metric') return 0 ;;\n 'call metric list') return 0 ;;\n 'call sentiment-run') return 0 ;;\n 'call sentiment-run list') return 0 ;;\n 'call transcript') return 0 ;;\n 'call transcript get') return 0 ;;\n 'config') return 0 ;;\n 'config apply') return 0 ;;\n 'config diff') return 0 ;;\n 'customer-flow') return 0 ;;\n 'customer-flow create') return 0 ;;\n 'customer-flow delete') return 0 ;;\n 'customer-flow edge-case') return 0 ;;\n 'customer-flow edge-case create') return 0 ;;\n 'customer-flow edge-case delete') return 0 ;;\n 'customer-flow edge-case promote') return 0 ;;\n 'customer-flow edge-case update') return 0 ;;\n 'customer-flow get') return 0 ;;\n 'customer-flow graph') return 0 ;;\n 'customer-flow graph replace') return 0 ;;\n 'customer-flow happy-path') return 0 ;;\n 'customer-flow happy-path update') return 0 ;;\n 'customer-flow list') return 0 ;;\n 'customer-flow update') return 0 ;;\n 'health') return 0 ;;\n 'http-request-definition') return 0 ;;\n 'http-request-definition create') return 0 ;;\n 'http-request-definition get') return 0 ;;\n 'http-request-definition list') return 0 ;;\n 'http-request-definition update') return 0 ;;\n 'metric') return 0 ;;\n 'metric collection-job') return 0 ;;\n 'metric collection-job create') return 0 ;;\n 'metric collection-job get') return 0 ;;\n 'metric collection-job list') return 0 ;;\n 'metric definition') return 0 ;;\n 'metric definition create') return 0 ;;\n 'metric definition list') return 0 ;;\n 'metric policy') return 0 ;;\n 'metric policy create') return 0 ;;\n 'metric policy delete') return 0 ;;\n 'metric policy get') return 0 ;;\n 'metric policy list') return 0 ;;\n 'metric policy update') return 0 ;;\n 'simulation') return 0 ;;\n 'simulation environment') return 0 ;;\n 'simulation environment get') return 0 ;;\n 'simulation environment list') return 0 ;;\n 'simulation job') return 0 ;;\n 'simulation job get') return 0 ;;\n 'simulation job lookup') return 0 ;;\n 'simulation persona') return 0 ;;\n 'simulation persona create') return 0 ;;\n 'simulation persona get') return 0 ;;\n 'simulation persona list') return 0 ;;\n 'simulation persona update') return 0 ;;\n 'simulation plan') return 0 ;;\n 'simulation plan create') return 0 ;;\n 'simulation plan delete') return 0 ;;\n 'simulation plan get') return 0 ;;\n 'simulation plan job') return 0 ;;\n 'simulation plan job get') return 0 ;;\n 'simulation plan job list') return 0 ;;\n 'simulation plan job start') return 0 ;;\n 'simulation plan list') return 0 ;;\n 'simulation plan update') return 0 ;;\n 'simulation run') return 0 ;;\n 'webhook') return 0 ;;\n 'webhook create') return 0 ;;\n 'webhook delete') return 0 ;;\n 'webhook get') return 0 ;;\n 'webhook list') return 0 ;;\n *) return 1 ;;\n esac\n}\n\n_roark_children() {\n case \"$1\" in\n '') echo 'agent api auth call completion config customer-flow health http-request-definition metric simulation webhook' ;;\n 'agent') echo 'create endpoint get list update' ;;\n 'agent create') echo '' ;;\n 'agent endpoint') echo 'create get list update' ;;\n 'agent endpoint create') echo '' ;;\n 'agent endpoint get') echo '' ;;\n 'agent endpoint list') echo '' ;;\n 'agent endpoint update') echo '' ;;\n 'agent get') echo '' ;;\n 'agent list') echo '' ;;\n 'agent update') echo '' ;;\n 'call') echo 'create get list metric sentiment-run transcript' ;;\n 'call create') echo '' ;;\n 'call get') echo '' ;;\n 'call list') echo '' ;;\n 'call metric') echo 'list' ;;\n 'call metric list') echo '' ;;\n 'call sentiment-run') echo 'list' ;;\n 'call sentiment-run list') echo '' ;;\n 'call transcript') echo 'get' ;;\n 'call transcript get') echo '' ;;\n 'config') echo 'apply diff' ;;\n 'config apply') echo '' ;;\n 'config diff') echo '' ;;\n 'customer-flow') echo 'create delete edge-case get graph happy-path list update' ;;\n 'customer-flow create') echo '' ;;\n 'customer-flow delete') echo '' ;;\n 'customer-flow edge-case') echo 'create delete promote update' ;;\n 'customer-flow edge-case create') echo '' ;;\n 'customer-flow edge-case delete') echo '' ;;\n 'customer-flow edge-case promote') echo '' ;;\n 'customer-flow edge-case update') echo '' ;;\n 'customer-flow get') echo '' ;;\n 'customer-flow graph') echo 'replace' ;;\n 'customer-flow graph replace') echo '' ;;\n 'customer-flow happy-path') echo 'update' ;;\n 'customer-flow happy-path update') echo '' ;;\n 'customer-flow list') echo '' ;;\n 'customer-flow update') echo '' ;;\n 'health') echo '' ;;\n 'http-request-definition') echo 'create get list update' ;;\n 'http-request-definition create') echo '' ;;\n 'http-request-definition get') echo '' ;;\n 'http-request-definition list') echo '' ;;\n 'http-request-definition update') echo '' ;;\n 'metric') echo 'collection-job definition policy' ;;\n 'metric collection-job') echo 'create get list' ;;\n 'metric collection-job create') echo '' ;;\n 'metric collection-job get') echo '' ;;\n 'metric collection-job list') echo '' ;;\n 'metric definition') echo 'create list' ;;\n 'metric definition create') echo '' ;;\n 'metric definition list') echo '' ;;\n 'metric policy') echo 'create delete get list update' ;;\n 'metric policy create') echo '' ;;\n 'metric policy delete') echo '' ;;\n 'metric policy get') echo '' ;;\n 'metric policy list') echo '' ;;\n 'metric policy update') echo '' ;;\n 'simulation') echo 'environment job persona plan run' ;;\n 'simulation environment') echo 'get list' ;;\n 'simulation environment get') echo '' ;;\n 'simulation environment list') echo '' ;;\n 'simulation job') echo 'get lookup' ;;\n 'simulation job get') echo '' ;;\n 'simulation job lookup') echo '' ;;\n 'simulation persona') echo 'create get list update' ;;\n 'simulation persona create') echo '' ;;\n 'simulation persona get') echo '' ;;\n 'simulation persona list') echo '' ;;\n 'simulation persona update') echo '' ;;\n 'simulation plan') echo 'create delete get job list update' ;;\n 'simulation plan create') echo '' ;;\n 'simulation plan delete') echo '' ;;\n 'simulation plan get') echo '' ;;\n 'simulation plan job') echo 'get list start' ;;\n 'simulation plan job get') echo '' ;;\n 'simulation plan job list') echo '' ;;\n 'simulation plan job start') echo '' ;;\n 'simulation plan list') echo '' ;;\n 'simulation plan update') echo '' ;;\n 'simulation run') echo '' ;;\n 'webhook') echo 'create delete get list' ;;\n 'webhook create') echo '' ;;\n 'webhook delete') echo '' ;;\n 'webhook get') echo '' ;;\n 'webhook list') echo '' ;;\n *) echo '' ;;\n esac\n}\n\n_roark_flags() {\n case \"$1\" in\n '') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent create') echo '--name --description --custom-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint create') echo '--agent-id --value --environment --direction --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint list') echo '--limit --after --agent-id --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint update') echo '--environment --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent update') echo '--name --description --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call create') echo '--recording-url --stereo-recording-url --started-at --interface-type --call-direction --ended-status --transcript --tool-invocations --properties --vapi-call-id --livekit-room-id --external-id --agent --agent.endpoint --agent.prompt --agents --customer --customer.label --customer.phone-number-e164 --customers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call list') echo '--limit --after --sort-by --sort-direction --status --search-text --simulation-run-plan-job-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric list') echo '--flatten --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript get') echo '--source --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config apply') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config diff') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case create') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case promote') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph replace') echo '--graph --allow-unmerge --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow list') echo '--limit --after --search-text --type --include-system --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow update') echo '--title --description --branching-mode --agent-ids --agent-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'health') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition create') echo '--scope --url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition update') echo '--url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job create') echo '--call-ids --chat-ids --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy create') echo '--name --status --modality --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy update') echo '--name --status --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job lookup') echo '--roark-phone-number --call-received-at --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona create') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona update') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan create') echo '--name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --enrich-with-live-conversation --auto-run --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job list') echo '--limit --after --status --simulation-run-plan-id --label-id --label-name --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job start') echo '--variables --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan list') echo '--limit --after --search-text --agent-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan update') echo '--is-hidden --name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --enrich-with-live-conversation --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation run') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook create') echo '--url --description --headers --events --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n *) echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n esac\n}\n\n_roark() {\n local cur path candidate word i\n cur=\"${COMP_WORDS[COMP_CWORD]}\"\n path=\"\"\n\n for (( i = 1; i < COMP_CWORD; i++ )); do\n word=\"${COMP_WORDS[i]}\"\n case \"$word\" in -*) continue ;; esac\n if [ -z \"$path\" ]; then candidate=\"$word\"; else candidate=\"$path $word\"; fi\n if _roark_is_node \"$candidate\"; then path=\"$candidate\"; else break; fi\n done\n\n case \"$cur\" in\n -*) COMPREPLY=( $(compgen -W \"$(_roark_flags \"$path\")\" -- \"$cur\") ) ;;\n *) COMPREPLY=( $(compgen -W \"$(_roark_children \"$path\")\" -- \"$cur\") ) ;;\n esac\n}\n\ncomplete -F _roark roark\n",
10
+ zsh: "#compdef roark\n# roark completion for zsh. Generated by app-agent-codegen; do not edit.\n\n_roark_is_node() {\n case \"$1\" in\n '') return 0 ;;\n 'agent') return 0 ;;\n 'agent create') return 0 ;;\n 'agent endpoint') return 0 ;;\n 'agent endpoint create') return 0 ;;\n 'agent endpoint get') return 0 ;;\n 'agent endpoint list') return 0 ;;\n 'agent endpoint update') return 0 ;;\n 'agent get') return 0 ;;\n 'agent list') return 0 ;;\n 'agent update') return 0 ;;\n 'call') return 0 ;;\n 'call create') return 0 ;;\n 'call get') return 0 ;;\n 'call list') return 0 ;;\n 'call metric') return 0 ;;\n 'call metric list') return 0 ;;\n 'call sentiment-run') return 0 ;;\n 'call sentiment-run list') return 0 ;;\n 'call transcript') return 0 ;;\n 'call transcript get') return 0 ;;\n 'config') return 0 ;;\n 'config apply') return 0 ;;\n 'config diff') return 0 ;;\n 'customer-flow') return 0 ;;\n 'customer-flow create') return 0 ;;\n 'customer-flow delete') return 0 ;;\n 'customer-flow edge-case') return 0 ;;\n 'customer-flow edge-case create') return 0 ;;\n 'customer-flow edge-case delete') return 0 ;;\n 'customer-flow edge-case promote') return 0 ;;\n 'customer-flow edge-case update') return 0 ;;\n 'customer-flow get') return 0 ;;\n 'customer-flow graph') return 0 ;;\n 'customer-flow graph replace') return 0 ;;\n 'customer-flow happy-path') return 0 ;;\n 'customer-flow happy-path update') return 0 ;;\n 'customer-flow list') return 0 ;;\n 'customer-flow update') return 0 ;;\n 'health') return 0 ;;\n 'http-request-definition') return 0 ;;\n 'http-request-definition create') return 0 ;;\n 'http-request-definition get') return 0 ;;\n 'http-request-definition list') return 0 ;;\n 'http-request-definition update') return 0 ;;\n 'metric') return 0 ;;\n 'metric collection-job') return 0 ;;\n 'metric collection-job create') return 0 ;;\n 'metric collection-job get') return 0 ;;\n 'metric collection-job list') return 0 ;;\n 'metric definition') return 0 ;;\n 'metric definition create') return 0 ;;\n 'metric definition list') return 0 ;;\n 'metric policy') return 0 ;;\n 'metric policy create') return 0 ;;\n 'metric policy delete') return 0 ;;\n 'metric policy get') return 0 ;;\n 'metric policy list') return 0 ;;\n 'metric policy update') return 0 ;;\n 'simulation') return 0 ;;\n 'simulation environment') return 0 ;;\n 'simulation environment get') return 0 ;;\n 'simulation environment list') return 0 ;;\n 'simulation job') return 0 ;;\n 'simulation job get') return 0 ;;\n 'simulation job lookup') return 0 ;;\n 'simulation persona') return 0 ;;\n 'simulation persona create') return 0 ;;\n 'simulation persona get') return 0 ;;\n 'simulation persona list') return 0 ;;\n 'simulation persona update') return 0 ;;\n 'simulation plan') return 0 ;;\n 'simulation plan create') return 0 ;;\n 'simulation plan delete') return 0 ;;\n 'simulation plan get') return 0 ;;\n 'simulation plan job') return 0 ;;\n 'simulation plan job get') return 0 ;;\n 'simulation plan job list') return 0 ;;\n 'simulation plan job start') return 0 ;;\n 'simulation plan list') return 0 ;;\n 'simulation plan update') return 0 ;;\n 'simulation run') return 0 ;;\n 'webhook') return 0 ;;\n 'webhook create') return 0 ;;\n 'webhook delete') return 0 ;;\n 'webhook get') return 0 ;;\n 'webhook list') return 0 ;;\n *) return 1 ;;\n esac\n}\n\n_roark_children() {\n case \"$1\" in\n '') echo 'agent api auth call completion config customer-flow health http-request-definition metric simulation webhook' ;;\n 'agent') echo 'create endpoint get list update' ;;\n 'agent create') echo '' ;;\n 'agent endpoint') echo 'create get list update' ;;\n 'agent endpoint create') echo '' ;;\n 'agent endpoint get') echo '' ;;\n 'agent endpoint list') echo '' ;;\n 'agent endpoint update') echo '' ;;\n 'agent get') echo '' ;;\n 'agent list') echo '' ;;\n 'agent update') echo '' ;;\n 'call') echo 'create get list metric sentiment-run transcript' ;;\n 'call create') echo '' ;;\n 'call get') echo '' ;;\n 'call list') echo '' ;;\n 'call metric') echo 'list' ;;\n 'call metric list') echo '' ;;\n 'call sentiment-run') echo 'list' ;;\n 'call sentiment-run list') echo '' ;;\n 'call transcript') echo 'get' ;;\n 'call transcript get') echo '' ;;\n 'config') echo 'apply diff' ;;\n 'config apply') echo '' ;;\n 'config diff') echo '' ;;\n 'customer-flow') echo 'create delete edge-case get graph happy-path list update' ;;\n 'customer-flow create') echo '' ;;\n 'customer-flow delete') echo '' ;;\n 'customer-flow edge-case') echo 'create delete promote update' ;;\n 'customer-flow edge-case create') echo '' ;;\n 'customer-flow edge-case delete') echo '' ;;\n 'customer-flow edge-case promote') echo '' ;;\n 'customer-flow edge-case update') echo '' ;;\n 'customer-flow get') echo '' ;;\n 'customer-flow graph') echo 'replace' ;;\n 'customer-flow graph replace') echo '' ;;\n 'customer-flow happy-path') echo 'update' ;;\n 'customer-flow happy-path update') echo '' ;;\n 'customer-flow list') echo '' ;;\n 'customer-flow update') echo '' ;;\n 'health') echo '' ;;\n 'http-request-definition') echo 'create get list update' ;;\n 'http-request-definition create') echo '' ;;\n 'http-request-definition get') echo '' ;;\n 'http-request-definition list') echo '' ;;\n 'http-request-definition update') echo '' ;;\n 'metric') echo 'collection-job definition policy' ;;\n 'metric collection-job') echo 'create get list' ;;\n 'metric collection-job create') echo '' ;;\n 'metric collection-job get') echo '' ;;\n 'metric collection-job list') echo '' ;;\n 'metric definition') echo 'create list' ;;\n 'metric definition create') echo '' ;;\n 'metric definition list') echo '' ;;\n 'metric policy') echo 'create delete get list update' ;;\n 'metric policy create') echo '' ;;\n 'metric policy delete') echo '' ;;\n 'metric policy get') echo '' ;;\n 'metric policy list') echo '' ;;\n 'metric policy update') echo '' ;;\n 'simulation') echo 'environment job persona plan run' ;;\n 'simulation environment') echo 'get list' ;;\n 'simulation environment get') echo '' ;;\n 'simulation environment list') echo '' ;;\n 'simulation job') echo 'get lookup' ;;\n 'simulation job get') echo '' ;;\n 'simulation job lookup') echo '' ;;\n 'simulation persona') echo 'create get list update' ;;\n 'simulation persona create') echo '' ;;\n 'simulation persona get') echo '' ;;\n 'simulation persona list') echo '' ;;\n 'simulation persona update') echo '' ;;\n 'simulation plan') echo 'create delete get job list update' ;;\n 'simulation plan create') echo '' ;;\n 'simulation plan delete') echo '' ;;\n 'simulation plan get') echo '' ;;\n 'simulation plan job') echo 'get list start' ;;\n 'simulation plan job get') echo '' ;;\n 'simulation plan job list') echo '' ;;\n 'simulation plan job start') echo '' ;;\n 'simulation plan list') echo '' ;;\n 'simulation plan update') echo '' ;;\n 'simulation run') echo '' ;;\n 'webhook') echo 'create delete get list' ;;\n 'webhook create') echo '' ;;\n 'webhook delete') echo '' ;;\n 'webhook get') echo '' ;;\n 'webhook list') echo '' ;;\n *) echo '' ;;\n esac\n}\n\n_roark_flags() {\n case \"$1\" in\n '') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent create') echo '--name --description --custom-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint create') echo '--agent-id --value --environment --direction --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint list') echo '--limit --after --agent-id --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent endpoint update') echo '--environment --outbound-dial-type --outbound-dial-http-request-definition-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'agent update') echo '--name --description --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call create') echo '--recording-url --stereo-recording-url --started-at --interface-type --call-direction --ended-status --transcript --tool-invocations --properties --vapi-call-id --livekit-room-id --external-id --agent --agent.endpoint --agent.prompt --agents --customer --customer.label --customer.phone-number-e164 --customers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call list') echo '--limit --after --sort-by --sort-direction --status --search-text --simulation-run-plan-job-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call metric list') echo '--flatten --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call sentiment-run list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'call transcript get') echo '--source --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config apply') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'config diff') echo '--no-prune --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case create') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case promote') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow edge-case update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow graph replace') echo '--graph --allow-unmerge --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow happy-path update') echo '--title --environment-id --prompt --preceded-by-customer-flow-id --preceded-by-customer-flow-variant-id --persona-override-id --additional-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow list') echo '--limit --after --search-text --type --include-system --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'customer-flow update') echo '--title --description --branching-mode --agent-ids --agent-expectations --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'health') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition create') echo '--scope --url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'http-request-definition update') echo '--url --description --method --body --headers --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job create') echo '--call-ids --chat-ids --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric collection-job list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition create') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric definition list') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy create') echo '--name --status --modality --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy list') echo '--limit --after --status --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'metric policy update') echo '--name --status --conditions --metrics --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation environment list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation job lookup') echo '--roark-phone-number --call-received-at --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona create') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona list') echo '--limit --after --search-text --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation persona update') echo '--name --description --language --secondary-language --understood-languages --accent --age --gender --background-noise --speech-pace --speech-clarity --has-disfluencies --base-emotion --intent-clarity --confirmation-style --memory-reliability --response-timing --backstory-prompt --idle-messages --idle-timeout-seconds --idle-message-max-spoken-count --idle-message-reset-count-on-user-speech-enabled --properties --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan create') echo '--name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --enrich-with-live-conversation --auto-run --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job list') echo '--limit --after --status --simulation-run-plan-id --label-id --label-name --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan job start') echo '--variables --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan list') echo '--limit --after --search-text --agent-id --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation plan update') echo '--is-hidden --name --description --direction --iteration-count --max-concurrent-jobs --max-simulation-duration-seconds --silence-timeout-seconds --end-call-phrases --end-call-reasons --execution-mode --scenarios --flows --personas --agent-endpoints --metrics --enrich-with-live-conversation --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'simulation run') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook') echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook create') echo '--url --description --headers --events --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook delete') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook get') echo '--data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n 'webhook list') echo '--limit --after --data --yes --no-input --base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n *) echo '--base-url --token --timeout --max-retries --format --json --no-color --quiet --help' ;;\n esac\n}\n\n_roark() {\n local path candidate word cur\n local -a walked\n path=\"\"\n cur=\"${words[CURRENT]}\"\n\n for (( i = 2; i < CURRENT; i++ )); do\n word=\"${words[i]}\"\n case \"$word\" in -*) continue ;; esac\n if [[ -z \"$path\" ]]; then candidate=\"$word\"; else candidate=\"$path $word\"; fi\n if _roark_is_node \"$candidate\"; then path=\"$candidate\"; else break; fi\n done\n\n if [[ \"$cur\" == -* ]]; then\n compadd -- ${=$(_roark_flags \"$path\")}\n else\n compadd -- ${=$(_roark_children \"$path\")}\n fi\n}\n\ncompdef _roark roark\n",
11
+ fish: "# roark completion for fish. Generated by app-agent-codegen; do not edit.\n\nfunction __roark_is_node\n switch \"$argv[1]\"\n case ''; return 0\n case 'agent'; return 0\n case 'agent create'; return 0\n case 'agent endpoint'; return 0\n case 'agent endpoint create'; return 0\n case 'agent endpoint get'; return 0\n case 'agent endpoint list'; return 0\n case 'agent endpoint update'; return 0\n case 'agent get'; return 0\n case 'agent list'; return 0\n case 'agent update'; return 0\n case 'call'; return 0\n case 'call create'; return 0\n case 'call get'; return 0\n case 'call list'; return 0\n case 'call metric'; return 0\n case 'call metric list'; return 0\n case 'call sentiment-run'; return 0\n case 'call sentiment-run list'; return 0\n case 'call transcript'; return 0\n case 'call transcript get'; return 0\n case 'config'; return 0\n case 'config apply'; return 0\n case 'config diff'; return 0\n case 'customer-flow'; return 0\n case 'customer-flow create'; return 0\n case 'customer-flow delete'; return 0\n case 'customer-flow edge-case'; return 0\n case 'customer-flow edge-case create'; return 0\n case 'customer-flow edge-case delete'; return 0\n case 'customer-flow edge-case promote'; return 0\n case 'customer-flow edge-case update'; return 0\n case 'customer-flow get'; return 0\n case 'customer-flow graph'; return 0\n case 'customer-flow graph replace'; return 0\n case 'customer-flow happy-path'; return 0\n case 'customer-flow happy-path update'; return 0\n case 'customer-flow list'; return 0\n case 'customer-flow update'; return 0\n case 'health'; return 0\n case 'http-request-definition'; return 0\n case 'http-request-definition create'; return 0\n case 'http-request-definition get'; return 0\n case 'http-request-definition list'; return 0\n case 'http-request-definition update'; return 0\n case 'metric'; return 0\n case 'metric collection-job'; return 0\n case 'metric collection-job create'; return 0\n case 'metric collection-job get'; return 0\n case 'metric collection-job list'; return 0\n case 'metric definition'; return 0\n case 'metric definition create'; return 0\n case 'metric definition list'; return 0\n case 'metric policy'; return 0\n case 'metric policy create'; return 0\n case 'metric policy delete'; return 0\n case 'metric policy get'; return 0\n case 'metric policy list'; return 0\n case 'metric policy update'; return 0\n case 'simulation'; return 0\n case 'simulation environment'; return 0\n case 'simulation environment get'; return 0\n case 'simulation environment list'; return 0\n case 'simulation job'; return 0\n case 'simulation job get'; return 0\n case 'simulation job lookup'; return 0\n case 'simulation persona'; return 0\n case 'simulation persona create'; return 0\n case 'simulation persona get'; return 0\n case 'simulation persona list'; return 0\n case 'simulation persona update'; return 0\n case 'simulation plan'; return 0\n case 'simulation plan create'; return 0\n case 'simulation plan delete'; return 0\n case 'simulation plan get'; return 0\n case 'simulation plan job'; return 0\n case 'simulation plan job get'; return 0\n case 'simulation plan job list'; return 0\n case 'simulation plan job start'; return 0\n case 'simulation plan list'; return 0\n case 'simulation plan update'; return 0\n case 'simulation run'; return 0\n case 'webhook'; return 0\n case 'webhook create'; return 0\n case 'webhook delete'; return 0\n case 'webhook get'; return 0\n case 'webhook list'; return 0\n case '*'; return 1\n end\nend\n\nfunction __roark_children\n switch \"$argv[1]\"\n case ''; echo 'agent\napi\nauth\ncall\ncompletion\nconfig\ncustomer-flow\nhealth\nhttp-request-definition\nmetric\nsimulation\nwebhook'\n case 'agent'; echo 'create\nendpoint\nget\nlist\nupdate'\n case 'agent create'; echo ''\n case 'agent endpoint'; echo 'create\nget\nlist\nupdate'\n case 'agent endpoint create'; echo ''\n case 'agent endpoint get'; echo ''\n case 'agent endpoint list'; echo ''\n case 'agent endpoint update'; echo ''\n case 'agent get'; echo ''\n case 'agent list'; echo ''\n case 'agent update'; echo ''\n case 'call'; echo 'create\nget\nlist\nmetric\nsentiment-run\ntranscript'\n case 'call create'; echo ''\n case 'call get'; echo ''\n case 'call list'; echo ''\n case 'call metric'; echo 'list'\n case 'call metric list'; echo ''\n case 'call sentiment-run'; echo 'list'\n case 'call sentiment-run list'; echo ''\n case 'call transcript'; echo 'get'\n case 'call transcript get'; echo ''\n case 'config'; echo 'apply\ndiff'\n case 'config apply'; echo ''\n case 'config diff'; echo ''\n case 'customer-flow'; echo 'create\ndelete\nedge-case\nget\ngraph\nhappy-path\nlist\nupdate'\n case 'customer-flow create'; echo ''\n case 'customer-flow delete'; echo ''\n case 'customer-flow edge-case'; echo 'create\ndelete\npromote\nupdate'\n case 'customer-flow edge-case create'; echo ''\n case 'customer-flow edge-case delete'; echo ''\n case 'customer-flow edge-case promote'; echo ''\n case 'customer-flow edge-case update'; echo ''\n case 'customer-flow get'; echo ''\n case 'customer-flow graph'; echo 'replace'\n case 'customer-flow graph replace'; echo ''\n case 'customer-flow happy-path'; echo 'update'\n case 'customer-flow happy-path update'; echo ''\n case 'customer-flow list'; echo ''\n case 'customer-flow update'; echo ''\n case 'health'; echo ''\n case 'http-request-definition'; echo 'create\nget\nlist\nupdate'\n case 'http-request-definition create'; echo ''\n case 'http-request-definition get'; echo ''\n case 'http-request-definition list'; echo ''\n case 'http-request-definition update'; echo ''\n case 'metric'; echo 'collection-job\ndefinition\npolicy'\n case 'metric collection-job'; echo 'create\nget\nlist'\n case 'metric collection-job create'; echo ''\n case 'metric collection-job get'; echo ''\n case 'metric collection-job list'; echo ''\n case 'metric definition'; echo 'create\nlist'\n case 'metric definition create'; echo ''\n case 'metric definition list'; echo ''\n case 'metric policy'; echo 'create\ndelete\nget\nlist\nupdate'\n case 'metric policy create'; echo ''\n case 'metric policy delete'; echo ''\n case 'metric policy get'; echo ''\n case 'metric policy list'; echo ''\n case 'metric policy update'; echo ''\n case 'simulation'; echo 'environment\njob\npersona\nplan\nrun'\n case 'simulation environment'; echo 'get\nlist'\n case 'simulation environment get'; echo ''\n case 'simulation environment list'; echo ''\n case 'simulation job'; echo 'get\nlookup'\n case 'simulation job get'; echo ''\n case 'simulation job lookup'; echo ''\n case 'simulation persona'; echo 'create\nget\nlist\nupdate'\n case 'simulation persona create'; echo ''\n case 'simulation persona get'; echo ''\n case 'simulation persona list'; echo ''\n case 'simulation persona update'; echo ''\n case 'simulation plan'; echo 'create\ndelete\nget\njob\nlist\nupdate'\n case 'simulation plan create'; echo ''\n case 'simulation plan delete'; echo ''\n case 'simulation plan get'; echo ''\n case 'simulation plan job'; echo 'get\nlist\nstart'\n case 'simulation plan job get'; echo ''\n case 'simulation plan job list'; echo ''\n case 'simulation plan job start'; echo ''\n case 'simulation plan list'; echo ''\n case 'simulation plan update'; echo ''\n case 'simulation run'; echo ''\n case 'webhook'; echo 'create\ndelete\nget\nlist'\n case 'webhook create'; echo ''\n case 'webhook delete'; echo ''\n case 'webhook get'; echo ''\n case 'webhook list'; echo ''\n case '*'; echo ''\n end\nend\n\nfunction __roark_flags\n switch \"$argv[1]\"\n case ''; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent create'; echo '--name\n--description\n--custom-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint create'; echo '--agent-id\n--value\n--environment\n--direction\n--outbound-dial-type\n--outbound-dial-http-request-definition-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint list'; echo '--limit\n--after\n--agent-id\n--search-text\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent endpoint update'; echo '--environment\n--outbound-dial-type\n--outbound-dial-http-request-definition-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent list'; echo '--limit\n--after\n--search-text\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'agent update'; echo '--name\n--description\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call create'; echo '--recording-url\n--stereo-recording-url\n--started-at\n--interface-type\n--call-direction\n--ended-status\n--transcript\n--tool-invocations\n--properties\n--vapi-call-id\n--livekit-room-id\n--external-id\n--agent\n--agent.endpoint\n--agent.prompt\n--agents\n--customer\n--customer.label\n--customer.phone-number-e164\n--customers\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call list'; echo '--limit\n--after\n--sort-by\n--sort-direction\n--status\n--search-text\n--simulation-run-plan-job-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call metric'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call metric list'; echo '--flatten\n--status\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call sentiment-run'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call sentiment-run list'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call transcript'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'call transcript get'; echo '--source\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'config'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'config apply'; echo '--no-prune\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'config diff'; echo '--no-prune\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow create'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case create'; echo '--title\n--environment-id\n--prompt\n--preceded-by-customer-flow-id\n--preceded-by-customer-flow-variant-id\n--persona-override-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case promote'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow edge-case update'; echo '--title\n--environment-id\n--prompt\n--preceded-by-customer-flow-id\n--preceded-by-customer-flow-variant-id\n--persona-override-id\n--additional-expectations\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow graph'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow graph replace'; echo '--graph\n--allow-unmerge\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow happy-path'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow happy-path update'; echo '--title\n--environment-id\n--prompt\n--preceded-by-customer-flow-id\n--preceded-by-customer-flow-variant-id\n--persona-override-id\n--additional-expectations\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow list'; echo '--limit\n--after\n--search-text\n--type\n--include-system\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'customer-flow update'; echo '--title\n--description\n--branching-mode\n--agent-ids\n--agent-expectations\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'health'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition create'; echo '--scope\n--url\n--description\n--method\n--body\n--headers\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition list'; echo '--limit\n--after\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'http-request-definition update'; echo '--url\n--description\n--method\n--body\n--headers\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job create'; echo '--call-ids\n--chat-ids\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric collection-job list'; echo '--limit\n--after\n--status\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric definition'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric definition create'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric definition list'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy create'; echo '--name\n--status\n--modality\n--conditions\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy list'; echo '--limit\n--after\n--status\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'metric policy update'; echo '--name\n--status\n--conditions\n--metrics\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation environment'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation environment get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation environment list'; echo '--limit\n--after\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation job'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation job get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation job lookup'; echo '--roark-phone-number\n--call-received-at\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona create'; echo '--name\n--description\n--language\n--secondary-language\n--understood-languages\n--accent\n--age\n--gender\n--background-noise\n--speech-pace\n--speech-clarity\n--has-disfluencies\n--base-emotion\n--intent-clarity\n--confirmation-style\n--memory-reliability\n--response-timing\n--backstory-prompt\n--idle-messages\n--idle-timeout-seconds\n--idle-message-max-spoken-count\n--idle-message-reset-count-on-user-speech-enabled\n--properties\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona list'; echo '--limit\n--after\n--search-text\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation persona update'; echo '--name\n--description\n--language\n--secondary-language\n--understood-languages\n--accent\n--age\n--gender\n--background-noise\n--speech-pace\n--speech-clarity\n--has-disfluencies\n--base-emotion\n--intent-clarity\n--confirmation-style\n--memory-reliability\n--response-timing\n--backstory-prompt\n--idle-messages\n--idle-timeout-seconds\n--idle-message-max-spoken-count\n--idle-message-reset-count-on-user-speech-enabled\n--properties\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan create'; echo '--name\n--description\n--direction\n--iteration-count\n--max-concurrent-jobs\n--max-simulation-duration-seconds\n--silence-timeout-seconds\n--end-call-phrases\n--end-call-reasons\n--execution-mode\n--scenarios\n--flows\n--personas\n--agent-endpoints\n--metrics\n--enrich-with-live-conversation\n--auto-run\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job list'; echo '--limit\n--after\n--status\n--simulation-run-plan-id\n--label-id\n--label-name\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan job start'; echo '--variables\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan list'; echo '--limit\n--after\n--search-text\n--agent-id\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation plan update'; echo '--is-hidden\n--name\n--description\n--direction\n--iteration-count\n--max-concurrent-jobs\n--max-simulation-duration-seconds\n--silence-timeout-seconds\n--end-call-phrases\n--end-call-reasons\n--execution-mode\n--scenarios\n--flows\n--personas\n--agent-endpoints\n--metrics\n--enrich-with-live-conversation\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'simulation run'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook create'; echo '--url\n--description\n--headers\n--events\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook delete'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook get'; echo '--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case 'webhook list'; echo '--limit\n--after\n--data\n--yes\n--no-input\n--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n case '*'; echo '--base-url\n--token\n--timeout\n--max-retries\n--format\n--json\n--no-color\n--quiet\n--help'\n end\nend\n\nfunction __roark_path\n set -l tokens (commandline -opc)\n set -l path \"\"\n for word in $tokens[2..-1]\n if string match -q -- '-*' $word\n continue\n end\n set -l candidate\n if test -z \"$path\"\n set candidate $word\n else\n set candidate \"$path $word\"\n end\n if __roark_is_node \"$candidate\"\n set path \"$candidate\"\n else\n break\n end\n end\n echo $path\nend\n\nfunction __roark_complete\n set -l path (__roark_path)\n set -l token (commandline -ct)\n if string match -q -- '-*' $token\n __roark_flags \"$path\"\n else\n __roark_children \"$path\"\n end\nend\n\ncomplete -c roark -f -a \"(__roark_complete)\"\n",
12
+ powershell: '# roark completion for PowerShell. Generated by app-agent-codegen; do not edit.\n\n$roarkChildren = @{\n "" = @("agent", "api", "auth", "call", "completion", "config", "customer-flow", "health", "http-request-definition", "metric", "simulation", "webhook")\n "agent" = @("create", "endpoint", "get", "list", "update")\n "agent create" = @()\n "agent endpoint" = @("create", "get", "list", "update")\n "agent endpoint create" = @()\n "agent endpoint get" = @()\n "agent endpoint list" = @()\n "agent endpoint update" = @()\n "agent get" = @()\n "agent list" = @()\n "agent update" = @()\n "call" = @("create", "get", "list", "metric", "sentiment-run", "transcript")\n "call create" = @()\n "call get" = @()\n "call list" = @()\n "call metric" = @("list")\n "call metric list" = @()\n "call sentiment-run" = @("list")\n "call sentiment-run list" = @()\n "call transcript" = @("get")\n "call transcript get" = @()\n "config" = @("apply", "diff")\n "config apply" = @()\n "config diff" = @()\n "customer-flow" = @("create", "delete", "edge-case", "get", "graph", "happy-path", "list", "update")\n "customer-flow create" = @()\n "customer-flow delete" = @()\n "customer-flow edge-case" = @("create", "delete", "promote", "update")\n "customer-flow edge-case create" = @()\n "customer-flow edge-case delete" = @()\n "customer-flow edge-case promote" = @()\n "customer-flow edge-case update" = @()\n "customer-flow get" = @()\n "customer-flow graph" = @("replace")\n "customer-flow graph replace" = @()\n "customer-flow happy-path" = @("update")\n "customer-flow happy-path update" = @()\n "customer-flow list" = @()\n "customer-flow update" = @()\n "health" = @()\n "http-request-definition" = @("create", "get", "list", "update")\n "http-request-definition create" = @()\n "http-request-definition get" = @()\n "http-request-definition list" = @()\n "http-request-definition update" = @()\n "metric" = @("collection-job", "definition", "policy")\n "metric collection-job" = @("create", "get", "list")\n "metric collection-job create" = @()\n "metric collection-job get" = @()\n "metric collection-job list" = @()\n "metric definition" = @("create", "list")\n "metric definition create" = @()\n "metric definition list" = @()\n "metric policy" = @("create", "delete", "get", "list", "update")\n "metric policy create" = @()\n "metric policy delete" = @()\n "metric policy get" = @()\n "metric policy list" = @()\n "metric policy update" = @()\n "simulation" = @("environment", "job", "persona", "plan", "run")\n "simulation environment" = @("get", "list")\n "simulation environment get" = @()\n "simulation environment list" = @()\n "simulation job" = @("get", "lookup")\n "simulation job get" = @()\n "simulation job lookup" = @()\n "simulation persona" = @("create", "get", "list", "update")\n "simulation persona create" = @()\n "simulation persona get" = @()\n "simulation persona list" = @()\n "simulation persona update" = @()\n "simulation plan" = @("create", "delete", "get", "job", "list", "update")\n "simulation plan create" = @()\n "simulation plan delete" = @()\n "simulation plan get" = @()\n "simulation plan job" = @("get", "list", "start")\n "simulation plan job get" = @()\n "simulation plan job list" = @()\n "simulation plan job start" = @()\n "simulation plan list" = @()\n "simulation plan update" = @()\n "simulation run" = @()\n "webhook" = @("create", "delete", "get", "list")\n "webhook create" = @()\n "webhook delete" = @()\n "webhook get" = @()\n "webhook list" = @()\n}\n\n$roarkFlags = @{\n "" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent create" = @("--name", "--description", "--custom-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint create" = @("--agent-id", "--value", "--environment", "--direction", "--outbound-dial-type", "--outbound-dial-http-request-definition-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint list" = @("--limit", "--after", "--agent-id", "--search-text", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent endpoint update" = @("--environment", "--outbound-dial-type", "--outbound-dial-http-request-definition-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent list" = @("--limit", "--after", "--search-text", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "agent update" = @("--name", "--description", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call create" = @("--recording-url", "--stereo-recording-url", "--started-at", "--interface-type", "--call-direction", "--ended-status", "--transcript", "--tool-invocations", "--properties", "--vapi-call-id", "--livekit-room-id", "--external-id", "--agent", "--agent.endpoint", "--agent.prompt", "--agents", "--customer", "--customer.label", "--customer.phone-number-e164", "--customers", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call list" = @("--limit", "--after", "--sort-by", "--sort-direction", "--status", "--search-text", "--simulation-run-plan-job-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call metric" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call metric list" = @("--flatten", "--status", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call sentiment-run" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call sentiment-run list" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call transcript" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "call transcript get" = @("--source", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "config" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "config apply" = @("--no-prune", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "config diff" = @("--no-prune", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow create" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case create" = @("--title", "--environment-id", "--prompt", "--preceded-by-customer-flow-id", "--preceded-by-customer-flow-variant-id", "--persona-override-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case promote" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow edge-case update" = @("--title", "--environment-id", "--prompt", "--preceded-by-customer-flow-id", "--preceded-by-customer-flow-variant-id", "--persona-override-id", "--additional-expectations", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow graph" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow graph replace" = @("--graph", "--allow-unmerge", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow happy-path" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow happy-path update" = @("--title", "--environment-id", "--prompt", "--preceded-by-customer-flow-id", "--preceded-by-customer-flow-variant-id", "--persona-override-id", "--additional-expectations", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow list" = @("--limit", "--after", "--search-text", "--type", "--include-system", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "customer-flow update" = @("--title", "--description", "--branching-mode", "--agent-ids", "--agent-expectations", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "health" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition create" = @("--scope", "--url", "--description", "--method", "--body", "--headers", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition list" = @("--limit", "--after", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "http-request-definition update" = @("--url", "--description", "--method", "--body", "--headers", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job create" = @("--call-ids", "--chat-ids", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric collection-job list" = @("--limit", "--after", "--status", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric definition" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric definition create" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric definition list" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy create" = @("--name", "--status", "--modality", "--conditions", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy list" = @("--limit", "--after", "--status", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "metric policy update" = @("--name", "--status", "--conditions", "--metrics", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation environment" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation environment get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation environment list" = @("--limit", "--after", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation job" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation job get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation job lookup" = @("--roark-phone-number", "--call-received-at", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona create" = @("--name", "--description", "--language", "--secondary-language", "--understood-languages", "--accent", "--age", "--gender", "--background-noise", "--speech-pace", "--speech-clarity", "--has-disfluencies", "--base-emotion", "--intent-clarity", "--confirmation-style", "--memory-reliability", "--response-timing", "--backstory-prompt", "--idle-messages", "--idle-timeout-seconds", "--idle-message-max-spoken-count", "--idle-message-reset-count-on-user-speech-enabled", "--properties", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona list" = @("--limit", "--after", "--search-text", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation persona update" = @("--name", "--description", "--language", "--secondary-language", "--understood-languages", "--accent", "--age", "--gender", "--background-noise", "--speech-pace", "--speech-clarity", "--has-disfluencies", "--base-emotion", "--intent-clarity", "--confirmation-style", "--memory-reliability", "--response-timing", "--backstory-prompt", "--idle-messages", "--idle-timeout-seconds", "--idle-message-max-spoken-count", "--idle-message-reset-count-on-user-speech-enabled", "--properties", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan create" = @("--name", "--description", "--direction", "--iteration-count", "--max-concurrent-jobs", "--max-simulation-duration-seconds", "--silence-timeout-seconds", "--end-call-phrases", "--end-call-reasons", "--execution-mode", "--scenarios", "--flows", "--personas", "--agent-endpoints", "--metrics", "--enrich-with-live-conversation", "--auto-run", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job list" = @("--limit", "--after", "--status", "--simulation-run-plan-id", "--label-id", "--label-name", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan job start" = @("--variables", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan list" = @("--limit", "--after", "--search-text", "--agent-id", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation plan update" = @("--is-hidden", "--name", "--description", "--direction", "--iteration-count", "--max-concurrent-jobs", "--max-simulation-duration-seconds", "--silence-timeout-seconds", "--end-call-phrases", "--end-call-reasons", "--execution-mode", "--scenarios", "--flows", "--personas", "--agent-endpoints", "--metrics", "--enrich-with-live-conversation", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "simulation run" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook" = @("--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook create" = @("--url", "--description", "--headers", "--events", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook delete" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook get" = @("--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n "webhook list" = @("--limit", "--after", "--data", "--yes", "--no-input", "--base-url", "--token", "--timeout", "--max-retries", "--format", "--json", "--no-color", "--quiet", "--help")\n}\n\nRegister-ArgumentCompleter -Native -CommandName roark -ScriptBlock {\n param($wordToComplete, $commandAst, $cursorPosition)\n\n $tokens = @($commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $_.ToString() })\n $path = ""\n\n foreach ($token in $tokens) {\n if ($token.StartsWith("-")) { continue }\n if ($path -eq "") { $candidate = $token } else { $candidate = "$path $token" }\n # Extend only while the next word is a known node, so a flag\'s value is\n # never mistaken for a command.\n if ($roarkChildren.ContainsKey($candidate)) { $path = $candidate } else { break }\n }\n\n if ($wordToComplete.StartsWith("-")) {\n $candidates = $roarkFlags[$path]\n } else {\n $candidates = $roarkChildren[$path]\n }\n\n $candidates | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, \'ParameterValue\', $_)\n }\n}\n',
13
13
  };
@@ -22,7 +22,7 @@ Optional.
22
22
  Optional.
23
23
  .TP
24
24
  \fB\-\-branching\-mode\fR \fI<value>\fR
25
- Scripted flows only. One of: DETERMINISTIC, ADAPTIVE. Optional.
25
+ Scripted flows only. How a run walks the graph. DETERMINISTIC ("Simulate every path" in the app) places one call per variant, each following its path exactly whatever the agent says. ADAPTIVE ("Adapt to your agent") collapses the paths into one call PER PERSONA, on which the simulated customer picks a branch from what the agent actually said. Both modes speak the exact authored lines, and neither changes how metrics or expectations grade. One of: DETERMINISTIC, ADAPTIVE. Optional.
26
26
  .TP
27
27
  \fB\-\-agent\-ids\fR \fI<value>\fR
28
28
  Replaces the linked agents. Omit to leave them unchanged. An improv flow must keep at least one; a scripted flow can be left with none. Repeatable. Optional.
@@ -56,6 +56,9 @@ Agent endpoints to include in this run plan Required.
56
56
  \fB\-\-metrics\fR \fI<value>\fR
57
57
  Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`. Required.
58
58
  .TP
59
+ \fB\-\-enrich\-with\-live\-conversation\fR
60
+ 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. Optional.
61
+ .TP
59
62
  \fB\-\-auto\-run\fR
60
63
  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. Optional.
61
64
  .SH "GLOBAL OPTIONS"
@@ -62,6 +62,9 @@ Agent endpoints to include in this run plan Optional.
62
62
  .TP
63
63
  \fB\-\-metrics\fR \fI<value>\fR
64
64
  Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`. Optional.
65
+ .TP
66
+ \fB\-\-enrich\-with\-live\-conversation\fR
67
+ Whether to merge the customer's own live recording into each simulation of this plan. Optional.
65
68
  .SH "GLOBAL OPTIONS"
66
69
  .TP
67
70
  \fB\-\-data\fR \fI<json>\fR
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@roarkanalytics/cli",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@roarkanalytics/cli",
9
- "version": "0.2.0",
9
+ "version": "0.4.0",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
- "@roarkanalytics/sdk": "^3.2.0",
12
+ "@roarkanalytics/sdk": "^3.2.1",
13
13
  "commander": "^14.0.3",
14
14
  "yaml": "^2.9.0"
15
15
  },
@@ -21,9 +21,9 @@
21
21
  }
22
22
  },
23
23
  "node_modules/@roarkanalytics/sdk": {
24
- "version": "3.2.0",
25
- "resolved": "https://registry.npmjs.org/@roarkanalytics/sdk/-/sdk-3.2.0.tgz",
26
- "integrity": "sha512-dZm7nhil+zSvh1jGWOp12znFbn1HYx5SocvzrDS82ljPQUATVqyLkloc0ANft3pSb3SiaaNuWd/Z46z912lTxg==",
24
+ "version": "3.4.0",
25
+ "resolved": "https://registry.npmjs.org/@roarkanalytics/sdk/-/sdk-3.4.0.tgz",
26
+ "integrity": "sha512-PZZSBfg80KBdp/2kgNVX4uMJ7fQ/Jp2EYL6BaIZDGLgL8kY/BSmgIg7NqBF8ctCY44bwpYWg9CJqZMGtEprG5Q==",
27
27
  "license": "Apache-2.0"
28
28
  },
29
29
  "node_modules/commander": {
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "@roarkanalytics/cli",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "The official command line interface for the Roark API",
5
5
  "author": "Roark <james@roark.ai>",
6
6
  "type": "commonjs",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/roarkhq/sdk-roark-analytics-node.git",
10
- "directory": "packages/cli"
9
+ "url": "git+https://github.com/roarkhq/cli-roark-analytics.git"
11
10
  },
12
- "homepage": "https://github.com/roarkhq/sdk-roark-analytics-node/tree/main/packages/cli#readme",
11
+ "homepage": "https://github.com/roarkhq/cli-roark-analytics#readme",
13
12
  "license": "Apache-2.0",
14
13
  "packageManager": "pnpm@10.30.1",
15
14
  "private": false,
@@ -26,11 +25,11 @@
26
25
  "build": "./build",
27
26
  "typecheck": "tsc -p tsconfig.json --noEmit",
28
27
  "test": "jest",
29
- "lint": "eslint .",
30
- "fix": "eslint --fix ."
28
+ "lint": "eslint . && prettier --check .",
29
+ "fix": "eslint --fix . && prettier --write ."
31
30
  },
32
31
  "dependencies": {
33
- "@roarkanalytics/sdk": "^3.2.0",
32
+ "@roarkanalytics/sdk": "^3.2.1",
34
33
  "commander": "^14.0.3",
35
34
  "yaml": "^2.9.0"
36
35
  },
@@ -100,4 +99,4 @@
100
99
  "./man/roark-webhook-get.1",
101
100
  "./man/roark-webhook-list.1"
102
101
  ]
103
- }
102
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Browser-based `auth login` (OAuth authorization-code + PKCE over a loopback redirect).
3
+ *
4
+ * The CLI starts a throwaway `127.0.0.1` listener, opens the platform's consent page, and waits for
5
+ * the approved code to come back to that listener. It then exchanges the code (with its PKCE
6
+ * verifier) for a freshly minted API key at the public token endpoint. No token is ever typed or
7
+ * pasted; the secret only exists in the final exchange response.
8
+ */
9
+ export declare const generatePkce: () => {
10
+ verifier: string;
11
+ challenge: string;
12
+ };
13
+ /**
14
+ * Where the consent page lives, derived from the API base URL. `api.roark.ai` -> `platform.roark.ai`.
15
+ * `ROARK_PLATFORM_URL` overrides for local/self-hosted stages where the mapping doesn't hold.
16
+ */
17
+ export declare const platformOriginFor: (apiBaseUrl: string) => string;
18
+ export interface BrowserLoginOptions {
19
+ apiBaseUrl: string;
20
+ platformOrigin: string;
21
+ clientName: string;
22
+ timeoutMs?: number;
23
+ onAuthorizeUrl?: (url: string) => void;
24
+ open?: (url: string) => void;
25
+ }
26
+ export declare const browserLogin: (options: BrowserLoginOptions) => Promise<string>;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * Browser-based `auth login` (OAuth authorization-code + PKCE over a loopback redirect).
4
+ *
5
+ * The CLI starts a throwaway `127.0.0.1` listener, opens the platform's consent page, and waits for
6
+ * the approved code to come back to that listener. It then exchanges the code (with its PKCE
7
+ * verifier) for a freshly minted API key at the public token endpoint. No token is ever typed or
8
+ * pasted; the secret only exists in the final exchange response.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.browserLogin = exports.platformOriginFor = exports.generatePkce = void 0;
12
+ const node_child_process_1 = require("node:child_process");
13
+ const node_crypto_1 = require("node:crypto");
14
+ const node_http_1 = require("node:http");
15
+ const base64url = (buf) => buf.toString('base64url');
16
+ // A PKCE pair: a random verifier and its S256 challenge (base64url(sha256(verifier))).
17
+ const generatePkce = () => {
18
+ const verifier = base64url((0, node_crypto_1.randomBytes)(32));
19
+ const challenge = base64url((0, node_crypto_1.createHash)('sha256').update(verifier).digest());
20
+ return { verifier, challenge };
21
+ };
22
+ exports.generatePkce = generatePkce;
23
+ /**
24
+ * Where the consent page lives, derived from the API base URL. `api.roark.ai` -> `platform.roark.ai`.
25
+ * `ROARK_PLATFORM_URL` overrides for local/self-hosted stages where the mapping doesn't hold.
26
+ */
27
+ const platformOriginFor = (apiBaseUrl) => {
28
+ const override = process.env['ROARK_PLATFORM_URL'];
29
+ if (override && override.trim().length > 0)
30
+ return override.replace(/\/+$/, '');
31
+ try {
32
+ const url = new URL(apiBaseUrl);
33
+ if (url.hostname === 'api.roark.ai')
34
+ return 'https://platform.roark.ai';
35
+ if (url.hostname.startsWith('api.'))
36
+ return `${url.protocol}//platform.${url.hostname.slice('api.'.length)}`;
37
+ // localhost / an unrecognised host: assume the web app shares the origin.
38
+ return url.origin;
39
+ }
40
+ catch {
41
+ return 'https://platform.roark.ai';
42
+ }
43
+ };
44
+ exports.platformOriginFor = platformOriginFor;
45
+ const closeHtml = (title, body) => `<!doctype html><meta charset="utf-8"><title>${title}</title>` +
46
+ `<body style="font:15px system-ui;margin:4rem auto;max-width:28rem;text-align:center;color:#222">` +
47
+ `<h2 style="margin:0 0 .5rem">${title}</h2><p style="color:#666">${body}</p></body>`;
48
+ // Best-effort browser open. If it fails, the caller has already printed the URL to open by hand.
49
+ const openBrowser = (url) => {
50
+ const [command, args] = process.platform === 'darwin' ? ['open', [url]]
51
+ : process.platform === 'win32' ? ['cmd', ['/c', 'start', '', url]]
52
+ : ['xdg-open', [url]];
53
+ try {
54
+ const child = (0, node_child_process_1.spawn)(command, [...args], { stdio: 'ignore', detached: true });
55
+ child.on('error', () => undefined);
56
+ child.unref();
57
+ }
58
+ catch {
59
+ /* the printed URL is the fallback */
60
+ }
61
+ };
62
+ // Run the full loopback + PKCE flow and return the minted bearer token.
63
+ const browserLogin = async (options) => {
64
+ const { verifier, challenge } = (0, exports.generatePkce)();
65
+ const state = base64url((0, node_crypto_1.randomBytes)(16));
66
+ const code = await new Promise((resolve, reject) => {
67
+ let settled = false;
68
+ const finish = (fn) => {
69
+ if (settled)
70
+ return;
71
+ settled = true;
72
+ clearTimeout(timer);
73
+ server.close();
74
+ // This is a one-shot listener; drop any keep-alive socket so nothing lingers after we're done.
75
+ server.closeAllConnections?.();
76
+ fn();
77
+ };
78
+ const server = (0, node_http_1.createServer)((req, res) => {
79
+ const url = new URL(req.url ?? '/', 'http://127.0.0.1');
80
+ if (url.pathname !== '/callback') {
81
+ res.writeHead(404);
82
+ res.end();
83
+ return;
84
+ }
85
+ const returnedCode = url.searchParams.get('code');
86
+ const returnedState = url.searchParams.get('state');
87
+ const errorParam = url.searchParams.get('error');
88
+ const ok = !errorParam && returnedCode && returnedState === state;
89
+ res.writeHead(200, { 'Content-Type': 'text/html' });
90
+ res.end(ok ?
91
+ closeHtml('Logged in', 'You can close this tab and return to your terminal.')
92
+ : closeHtml('Login failed', 'You can close this tab and return to your terminal.'));
93
+ if (ok)
94
+ finish(() => resolve(returnedCode));
95
+ else if (errorParam)
96
+ finish(() => reject(new Error(`authorization was ${errorParam}`)));
97
+ else
98
+ finish(() => reject(new Error('authorization response was invalid')));
99
+ });
100
+ const timer = setTimeout(() => finish(() => reject(new Error('timed out waiting for authorization in the browser'))), options.timeoutMs ?? 300_000);
101
+ timer.unref?.();
102
+ server.on('error', (error) => finish(() => reject(error)));
103
+ server.listen(0, '127.0.0.1', () => {
104
+ const { port } = server.address();
105
+ const redirectUri = `http://127.0.0.1:${port}/callback`;
106
+ const authorizeUrl = `${options.platformOrigin}/cli/authorize?` +
107
+ new URLSearchParams({
108
+ code_challenge: challenge,
109
+ state,
110
+ redirect_uri: redirectUri,
111
+ name: options.clientName,
112
+ }).toString();
113
+ options.onAuthorizeUrl?.(authorizeUrl);
114
+ (options.open ?? openBrowser)(authorizeUrl);
115
+ });
116
+ });
117
+ const response = await fetch(`${options.apiBaseUrl.replace(/\/+$/, '')}/v1/cli/auth/token`, {
118
+ method: 'POST',
119
+ headers: { 'Content-Type': 'application/json' },
120
+ body: JSON.stringify({ code, code_verifier: verifier }),
121
+ });
122
+ if (!response.ok) {
123
+ const detail = await response.text().catch(() => '');
124
+ throw new Error(`token exchange failed (${response.status})${detail ? `: ${detail}` : ''}`);
125
+ }
126
+ const body = (await response.json());
127
+ const token = body.data?.token;
128
+ if (!token)
129
+ throw new Error('token exchange returned no token');
130
+ return token;
131
+ };
132
+ exports.browserLogin = browserLogin;
@@ -1,9 +1,16 @@
1
1
  /**
2
2
  * `roark auth login | logout | status`
3
3
  *
4
- * The token is never accepted as a flag value: flags land in shell history and
5
- * in the process table, where a bearer token has no business being. It is read
6
- * from a prompt with echo off, or from stdin so CI can pipe it in.
4
+ * `login` defaults to a browser flow (OAuth authorization-code + PKCE): it opens the platform's
5
+ * consent page, mints a key on approval, and stores it. Non-interactive/piped input, `--paste`, or
6
+ * `--no-browser` fall back to taking a bearer token. A token is never accepted as a flag value:
7
+ * flags land in shell history and the process table, where a bearer token has no business being; it
8
+ * is read from a prompt with echo off, or from stdin so CI can pipe it in.
7
9
  */
8
10
  import { Command } from 'commander';
9
- export declare const registerAuthCommands: (root: Command, binaryName: string) => void;
11
+ import type Roark from '@roarkanalytics/sdk';
12
+ /** How the program builds an authenticated client; injected so tests can stub it (and skip the
13
+ * network entirely by omitting it). Matches the factory the other commands receive. */
14
+ type ClientFor = (options: never) => Roark;
15
+ export declare const registerAuthCommands: (root: Command, binaryName: string, clientFor?: ClientFor) => void;
16
+ export {};
@@ -2,18 +2,67 @@
2
2
  /**
3
3
  * `roark auth login | logout | status`
4
4
  *
5
- * The token is never accepted as a flag value: flags land in shell history and
6
- * in the process table, where a bearer token has no business being. It is read
7
- * from a prompt with echo off, or from stdin so CI can pipe it in.
5
+ * `login` defaults to a browser flow (OAuth authorization-code + PKCE): it opens the platform's
6
+ * consent page, mints a key on approval, and stores it. Non-interactive/piped input, `--paste`, or
7
+ * `--no-browser` fall back to taking a bearer token. A token is never accepted as a flag value:
8
+ * flags land in shell history and the process table, where a bearer token has no business being; it
9
+ * is read from a prompt with echo off, or from stdin so CI can pipe it in.
8
10
  */
9
11
  Object.defineProperty(exports, "__esModule", { value: true });
10
12
  exports.registerAuthCommands = void 0;
11
13
  const commander_1 = require("commander");
14
+ const node_os_1 = require("node:os");
12
15
  const node_readline_1 = require("node:readline");
16
+ const browser_login_1 = require("../browser-login");
13
17
  const errors_1 = require("../errors");
14
18
  const config_1 = require("../config");
15
19
  const output_1 = require("../output");
16
20
  const confirm_1 = require("../confirm");
21
+ // The SDK's default when no base URL is configured; the token exchange targets the same host.
22
+ const DEFAULT_BASE_URL = 'https://api.roark.ai';
23
+ // Any authenticated endpoint works as a liveness probe: `requireAuth` runs first, so a bad token is
24
+ // a 401 while a valid one that merely lacks this endpoint's permission is a 403 — both prove the
25
+ // token authenticates. `/v1/agent` is a stable GET that every project has.
26
+ const AUTH_PROBE_PATH = '/v1/agent';
27
+ /**
28
+ * Confirm the stored credential actually authenticates, so a mistyped or half-pasted token is caught
29
+ * here instead of on the user's next real command. Best-effort: it never fails the login (the token
30
+ * is already saved) and stays quiet-but-honest when offline.
31
+ */
32
+ const verifyCredential = async (clientFor, binaryName, color) => {
33
+ let client;
34
+ try {
35
+ // Resolve the client the same way a real command would (no forced --token), so the base-url
36
+ // trust guard still applies: we must not send the credential to a host a checked-in .roark.json
37
+ // chose. This verifies the effective credential, which is exactly what the next command will use.
38
+ client = clientFor({});
39
+ }
40
+ catch (error) {
41
+ // e.g. the trust guard refused, or config is malformed. Don't fail the login, but say the check
42
+ // was skipped so it doesn't look like the feature silently didn't run.
43
+ const reason = error.message.split('\n')[0];
44
+ (0, output_1.write)((0, output_1.paint)(`Saved, but skipped the token check (${reason}).`, 'dim', color), process.stderr);
45
+ return;
46
+ }
47
+ const verified = () => (0, output_1.write)(`${(0, output_1.paint)('Verified', 'green', color)} the token authenticates.`, process.stderr);
48
+ try {
49
+ await client.get(AUTH_PROBE_PATH, { query: { limit: '1' } });
50
+ verified();
51
+ }
52
+ catch (error) {
53
+ const status = error.status;
54
+ if (status === 401) {
55
+ (0, output_1.write)((0, output_1.paint)(`Warning: the token was rejected (401). It may be wrong, expired, or revoked. It is still saved; run \`${binaryName} auth login\` again to replace it.`, 'yellow', color), process.stderr);
56
+ }
57
+ else if (status !== undefined && status < 500) {
58
+ // 403 (authenticated, lacks agent:read) or any other client-level response: auth succeeded.
59
+ verified();
60
+ }
61
+ else {
62
+ (0, output_1.write)((0, output_1.paint)(`Saved, but could not verify it right now (${error.message}). It will be used as-is.`, 'dim', color), process.stderr);
63
+ }
64
+ }
65
+ };
17
66
  /** Reads a secret without echoing it, so it is not left on screen or in a scrollback. */
18
67
  const promptSecret = async (prompt) => {
19
68
  const input = process.stdin;
@@ -39,7 +88,7 @@ const promptSecret = async (prompt) => {
39
88
  output.write('\n');
40
89
  }
41
90
  };
42
- const readToken = async () => {
91
+ const readToken = async (binaryName) => {
43
92
  if (!(0, confirm_1.isInteractive)()) {
44
93
  const piped = await new Promise((resolve, reject) => {
45
94
  let buffer = '';
@@ -50,33 +99,81 @@ const readToken = async () => {
50
99
  });
51
100
  const token = piped.trim();
52
101
  if (token.length === 0) {
53
- throw new errors_1.UsageError('No token on stdin. Pipe one in, or run this in a terminal.');
102
+ throw new errors_1.UsageError(`No token on stdin. Pipe one in (echo "$ROARK_API_BEARER_TOKEN" | ${binaryName} auth login), or run this in a terminal to be prompted.`);
54
103
  }
55
104
  return token;
56
105
  }
57
106
  const token = (await promptSecret('Bearer token: ')).trim();
58
- if (token.length === 0)
59
- throw new errors_1.UsageError('No token entered.');
107
+ if (token.length === 0) {
108
+ // The most common cause: a paste that the hidden prompt did not capture. Point at the reliable
109
+ // path rather than just saying "nothing entered".
110
+ throw new errors_1.UsageError(`No token entered. If you pasted and nothing happened, pipe it instead: echo "$ROARK_API_BEARER_TOKEN" | ${binaryName} auth login`);
111
+ }
60
112
  return token;
61
113
  };
62
- const registerAuthCommands = (root, binaryName) => {
114
+ // Save the token and report where it went (masked). Shared by the browser and paste paths.
115
+ const persistToken = (token) => {
116
+ const path = (0, config_1.writeUserConfig)({ ...(0, config_1.readUserConfig)(), bearerToken: token });
117
+ const color = (0, output_1.supportsColor)(process.stderr);
118
+ (0, output_1.write)(`${(0, output_1.paint)('Saved', 'green', color)} ${(0, config_1.maskToken)(token)} to ${path}`, process.stderr);
119
+ return { color };
120
+ };
121
+ // A set environment variable outranks the stored token (see the precedence in config.ts), so without
122
+ // this a login looks like it "did nothing" when a stale export shadows what we just saved.
123
+ const warnEnvShadow = (token, color) => {
124
+ const fromEnv = process.env['ROARK_API_BEARER_TOKEN'];
125
+ if (fromEnv && fromEnv !== token) {
126
+ (0, output_1.write)((0, output_1.paint)(`Note: ROARK_API_BEARER_TOKEN is set and overrides this stored token. Unset it to use the credential you just saved.`, 'yellow', color), process.stderr);
127
+ }
128
+ };
129
+ const registerAuthCommands = (root, binaryName, clientFor) => {
63
130
  const auth = new commander_1.Command('auth').description('Manage the stored credential').showHelpAfterError();
64
131
  auth.action(() => auth.outputHelp());
65
132
  auth
66
133
  .command('login')
67
- .description('Store a bearer token for future commands')
134
+ .description('Authorize this CLI in your browser, or store a bearer token')
135
+ .option('--no-browser', 'do not open a browser; paste or pipe a token instead')
136
+ .option('--paste', 'paste or pipe a bearer token instead of using the browser')
68
137
  .addHelpText('after', [
69
138
  '',
70
- 'The token is read from a hidden prompt, or from stdin when not a terminal:',
139
+ 'By default an interactive terminal opens your browser to approve access and stores the',
140
+ 'minted key. Non-interactive (piped) input always takes a token, so CI keeps working:',
71
141
  '',
72
142
  ` ${binaryName} auth login`,
143
+ ` ${binaryName} auth login --paste`,
73
144
  ` echo "$ROARK_API_BEARER_TOKEN" | ${binaryName} auth login`,
74
145
  ].join('\n'))
75
- .action(async () => {
76
- const token = await readToken();
77
- const path = (0, config_1.writeUserConfig)({ ...(0, config_1.readUserConfig)(), bearerToken: token });
78
- const color = (0, output_1.supportsColor)(process.stderr);
79
- (0, output_1.write)(`${(0, output_1.paint)('Saved', 'green', color)} ${(0, config_1.maskToken)(token)} to ${path}`, process.stderr);
146
+ .action(async (options) => {
147
+ // Browser flow when we're an interactive terminal and it wasn't opted out. A piped /
148
+ // non-interactive invocation always uses the token path so `echo "$TOKEN" | auth login` works.
149
+ const useBrowser = options.browser !== false && options.paste !== true && (0, confirm_1.isInteractive)();
150
+ if (useBrowser) {
151
+ const color = (0, output_1.supportsColor)(process.stderr);
152
+ const apiBaseUrl = (0, config_1.resolveConfig)({}).config.baseURL ?? DEFAULT_BASE_URL;
153
+ (0, output_1.write)((0, output_1.paint)('Opening your browser to authorize this CLI…', 'dim', color), process.stderr);
154
+ let token;
155
+ try {
156
+ token = await (0, browser_login_1.browserLogin)({
157
+ apiBaseUrl,
158
+ platformOrigin: (0, browser_login_1.platformOriginFor)(apiBaseUrl),
159
+ clientName: `CLI on ${(0, node_os_1.hostname)()}`,
160
+ onAuthorizeUrl: (url) => (0, output_1.write)((0, output_1.paint)(`If your browser didn't open, visit:\n ${url}`, 'dim', color), process.stderr),
161
+ });
162
+ }
163
+ catch (error) {
164
+ throw new errors_1.UsageError(`Browser login failed: ${error.message}\n` +
165
+ `Run \`${binaryName} auth login --paste\` to paste or pipe a token instead.`);
166
+ }
167
+ const { color: savedColor } = persistToken(token);
168
+ warnEnvShadow(token, savedColor);
169
+ return;
170
+ }
171
+ const token = await readToken(binaryName);
172
+ const { color } = persistToken(token);
173
+ // Confirm the token actually works, so a bad paste surfaces now rather than on the next command.
174
+ if (clientFor)
175
+ await verifyCredential(clientFor, binaryName, color);
176
+ warnEnvShadow(token, color);
80
177
  });
81
178
  auth
82
179
  .command('logout')
@@ -258,7 +258,7 @@ const createProgram = (options) => {
258
258
  continue;
259
259
  addApiCommand(root, options, definition);
260
260
  }
261
- (0, auth_1.registerAuthCommands)(root, options.binaryName);
261
+ (0, auth_1.registerAuthCommands)(root, options.binaryName, clientFor);
262
262
  (0, config_as_code_1.registerConfigAsCodeCommands)(root, options.binaryName, clientFor, exports.resolveOutput);
263
263
  (0, config_1.registerConfigCommands)(root, options.binaryName);
264
264
  (0, api_1.registerApiCommand)(root, options.binaryName, clientFor, exports.resolveOutput);
package/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "0.2.0";
1
+ export declare const version = "0.4.0";
package/version.js CHANGED
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- // Generated by scripts/sync-version.cjs from this package's package.json, which
5
- // the build runs before tsc. Do not edit: an edit here is overwritten, and the
6
- // published number is whatever package.json says.
4
+ // Kept in step with this package's package.json two ways. Release-please rewrites
5
+ // the annotated line below in the release PR, because src/version.ts is in
6
+ // `extra-files` in release-please-config.json - without that the release PR bumps
7
+ // package.json alone and src/version.test.ts fails on it. scripts/sync-version.cjs
8
+ // then rewrites the same line before tsc, so nothing stale can reach dist even if
9
+ // the two ever drift.
7
10
  //
8
- // It exists at all because the CLI is not in release-please-config.json's
9
- // `extra-files` - it ships from publish-cli.yml rather than the vendor's
10
- // release train - so nothing else keeps this in step.
11
- exports.version = '0.2.0';
11
+ // Do not edit: an edit here is overwritten, and the published number is whatever
12
+ // package.json says.
13
+ exports.version = '0.4.0'; // x-release-please-version