@quonfig/cli 0.0.5 → 0.0.7

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.
Files changed (37) hide show
  1. package/README.md +209 -161
  2. package/dist/codegen/local-config-reader.d.ts +6 -0
  3. package/dist/codegen/local-config-reader.js +113 -0
  4. package/dist/commands/create.js +3 -0
  5. package/dist/commands/generate.d.ts +3 -2
  6. package/dist/commands/generate.js +18 -10
  7. package/dist/commands/login.js +22 -15
  8. package/dist/commands/profile.d.ts +1 -0
  9. package/dist/commands/profile.js +6 -42
  10. package/dist/commands/sdk-key/create.d.ts +11 -0
  11. package/dist/commands/sdk-key/create.js +100 -0
  12. package/dist/commands/sdk-key/list.d.ts +10 -0
  13. package/dist/commands/sdk-key/list.js +48 -0
  14. package/dist/commands/sdk-key/revoke.d.ts +10 -0
  15. package/dist/commands/sdk-key/revoke.js +30 -0
  16. package/dist/commands/sdk-key.d.ts +6 -0
  17. package/dist/commands/sdk-key.js +15 -0
  18. package/dist/commands/whoami.js +8 -8
  19. package/dist/commands/workspace/switch.d.ts +7 -0
  20. package/dist/commands/workspace/switch.js +90 -0
  21. package/dist/commands/workspace.js +14 -23
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +9 -2
  24. package/dist/interactive-prompt.js +0 -4
  25. package/dist/ui/get-value.js +4 -1
  26. package/dist/util/get-client.js +34 -11
  27. package/dist/util/token-storage.d.ts +6 -0
  28. package/dist/util/token-storage.js +17 -0
  29. package/dist/verify/validate.js +28 -8
  30. package/oclif.manifest.json +433 -118
  31. package/package.json +1 -1
  32. package/dist/codegen/config-downloader.d.ts +0 -7
  33. package/dist/codegen/config-downloader.js +0 -26
  34. package/dist/commands/download.d.ts +0 -13
  35. package/dist/commands/download.js +0 -63
  36. package/dist/commands/serve.d.ts +0 -13
  37. package/dist/commands/serve.js +0 -101
package/README.md CHANGED
@@ -14,7 +14,7 @@ $ npm install -g @quonfig/cli
14
14
  $ qfg COMMAND
15
15
  running command...
16
16
  $ qfg (--version)
17
- @quonfig/cli/0.0.5 linux-x64 node-v24.4.1
17
+ @quonfig/cli/0.0.7 linux-x64 node-v24.4.1
18
18
  $ qfg --help [COMMAND]
19
19
  USAGE
20
20
  $ qfg COMMAND
@@ -27,7 +27,6 @@ USAGE
27
27
  <!-- commands -->
28
28
  * [`qfg config-schema`](#qfg-config-schema)
29
29
  * [`qfg create NAME`](#qfg-create-name)
30
- * [`qfg download`](#qfg-download)
31
30
  * [`qfg generate`](#qfg-generate)
32
31
  * [`qfg generate-new-hex-key`](#qfg-generate-new-hex-key)
33
32
  * [`qfg get [NAME]`](#qfg-get-name)
@@ -39,10 +38,12 @@ USAGE
39
38
  * [`qfg logout`](#qfg-logout)
40
39
  * [`qfg mcp`](#qfg-mcp)
41
40
  * [`qfg override [NAME]`](#qfg-override-name)
42
- * [`qfg profile`](#qfg-profile)
43
41
  * [`qfg pull`](#qfg-pull)
44
42
  * [`qfg schema NAME`](#qfg-schema-name)
45
- * [`qfg serve DATA-FILE`](#qfg-serve-data-file)
43
+ * [`qfg sdk-key`](#qfg-sdk-key)
44
+ * [`qfg sdk-key create`](#qfg-sdk-key-create)
45
+ * [`qfg sdk-key list`](#qfg-sdk-key-list)
46
+ * [`qfg sdk-key revoke KEYID`](#qfg-sdk-key-revoke-keyid)
46
47
  * [`qfg set-default [NAME]`](#qfg-set-default-name)
47
48
  * [`qfg set-rollout [NAME]`](#qfg-set-rollout-name)
48
49
  * [`qfg sync`](#qfg-sync)
@@ -50,6 +51,7 @@ USAGE
50
51
  * [`qfg whoami`](#qfg-whoami)
51
52
  * [`qfg workspace`](#qfg-workspace)
52
53
  * [`qfg workspace bootstrap`](#qfg-workspace-bootstrap)
54
+ * [`qfg workspace switch`](#qfg-workspace-switch)
53
55
 
54
56
  ## `qfg config-schema`
55
57
 
@@ -78,7 +80,7 @@ EXAMPLES
78
80
  $ qfg config-schema --json-schema # full JSON Schema document (copy into your editor)
79
81
  ```
80
82
 
81
- _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/config-schema.ts)_
83
+ _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/config-schema.ts)_
82
84
 
83
85
  ## `qfg create NAME`
84
86
 
@@ -87,7 +89,7 @@ Create a new feature flag, config value, or other item.
87
89
  ```
88
90
  USAGE
89
91
  $ qfg create NAME --type boolean-flag|boolean|string|double|int|string-list|json [--json] [--interactive]
90
- [--no-color] [--verbose] [-p <value>] [--confidential] [--env-var <value>] [--value <value>] [--secret]
92
+ [--no-color] [--verbose] [-w <value>] [--confidential] [--env-var <value>] [--value <value>] [--secret]
91
93
  [--secret-key-name <value>]
92
94
 
93
95
  ARGUMENTS
@@ -104,11 +106,11 @@ FLAGS
104
106
  --value=<value> default value for your new item
105
107
 
106
108
  GLOBAL FLAGS
107
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
108
- --[no-]interactive Force interactive mode
109
- --json Format output as json.
110
- --no-color Do not colorize output
111
- --verbose Verbose output
109
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
110
+ --[no-]interactive Force interactive mode
111
+ --json Format output as json.
112
+ --no-color Do not colorize output
113
+ --verbose Verbose output
112
114
 
113
115
  DESCRIPTION
114
116
  Create a new feature flag, config value, or other item.
@@ -150,40 +152,7 @@ EXAMPLES
150
152
  $ qfg set-rollout my.new.flag --environment production --true-percent 20
151
153
  ```
152
154
 
153
- _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/create.ts)_
154
-
155
- ## `qfg download`
156
-
157
- Download a Datafile for a given environment
158
-
159
- ```
160
- USAGE
161
- $ qfg download [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
162
- [--sdk-key <value>]
163
-
164
- FLAGS
165
- --environment=<value> environment to download
166
- --sdk-key=<value> SDK key for authentication (uses legacy download endpoint)
167
-
168
- GLOBAL FLAGS
169
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
170
- --[no-]interactive Force interactive mode
171
- --json Format output as json.
172
- --no-color Do not colorize output
173
- --verbose Verbose output
174
-
175
- DESCRIPTION
176
- Download a Datafile for a given environment
177
-
178
- You can serve a datafile using the `serve` command.
179
-
180
- EXAMPLES
181
- $ qfg download --environment=test
182
-
183
- $ qfg download --environment=test --sdk-key=YOUR_SDK_KEY
184
- ```
185
-
186
- _See code: [src/commands/download.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/download.ts)_
155
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/create.ts)_
187
156
 
188
157
  ## `qfg generate`
189
158
 
@@ -191,20 +160,20 @@ Generate type definitions for your Quonfig configuration
191
160
 
192
161
  ```
193
162
  USAGE
194
- $ qfg generate [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [-o <value>] [--targets
163
+ $ qfg generate [--json] [--interactive] [--no-color] [--verbose] [--dir <value>] [-o <value>] [--targets
195
164
  <value>]
196
165
 
197
166
  FLAGS
198
167
  -o, --output-directory=<value> Override the output directory for generated files
168
+ --dir=<value> Path to local QUONFIG_DIR (defaults to QUONFIG_DIR env var)
199
169
  --targets=<value> [default: react-ts] Determines for language/framework to generate code for (node-ts,
200
170
  react-ts)
201
171
 
202
172
  GLOBAL FLAGS
203
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
204
- --[no-]interactive Force interactive mode
205
- --json Format output as json.
206
- --no-color Do not colorize output
207
- --verbose Verbose output
173
+ --[no-]interactive Force interactive mode
174
+ --json Format output as json.
175
+ --no-color Do not colorize output
176
+ --verbose Verbose output
208
177
 
209
178
  DESCRIPTION
210
179
  Generate type definitions for your Quonfig configuration
@@ -253,7 +222,7 @@ EXAMPLES
253
222
  $ qfg generate --targets node-ts -o ./dist # combine with targets
254
223
  ```
255
224
 
256
- _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/generate.ts)_
225
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/generate.ts)_
257
226
 
258
227
  ## `qfg generate-new-hex-key`
259
228
 
@@ -276,7 +245,7 @@ EXAMPLES
276
245
  $ qfg generate-new-hex-key
277
246
  ```
278
247
 
279
- _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/generate-new-hex-key.ts)_
248
+ _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/generate-new-hex-key.ts)_
280
249
 
281
250
  ## `qfg get [NAME]`
282
251
 
@@ -284,7 +253,7 @@ Get the value of a config/feature-flag/etc.
284
253
 
285
254
  ```
286
255
  USAGE
287
- $ qfg get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
256
+ $ qfg get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--environment <value>]
288
257
 
289
258
  ARGUMENTS
290
259
  NAME config/feature-flag/etc. name
@@ -293,11 +262,11 @@ FLAGS
293
262
  --environment=<value> environment to evaluate in
294
263
 
295
264
  GLOBAL FLAGS
296
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
297
- --[no-]interactive Force interactive mode
298
- --json Format output as json.
299
- --no-color Do not colorize output
300
- --verbose Verbose output
265
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
266
+ --[no-]interactive Force interactive mode
267
+ --json Format output as json.
268
+ --no-color Do not colorize output
269
+ --verbose Verbose output
301
270
 
302
271
  DESCRIPTION
303
272
  Get the value of a config/feature-flag/etc.
@@ -308,7 +277,7 @@ EXAMPLES
308
277
  $ qfg get my.config.name --environment=production
309
278
  ```
310
279
 
311
- _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/get.ts)_
280
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/get.ts)_
312
281
 
313
282
  ## `qfg info [NAME]`
314
283
 
@@ -316,7 +285,7 @@ Show current values, rules, and evaluation stats for a flag or config.
316
285
 
317
286
  ```
318
287
  USAGE
319
- $ qfg info [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--exclude-evaluations]
288
+ $ qfg info [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--exclude-evaluations]
320
289
 
321
290
  ARGUMENTS
322
291
  NAME config/feature-flag/etc. name
@@ -325,11 +294,11 @@ FLAGS
325
294
  --exclude-evaluations Exclude evaluation data
326
295
 
327
296
  GLOBAL FLAGS
328
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
329
- --[no-]interactive Force interactive mode
330
- --json Format output as json.
331
- --no-color Do not colorize output
332
- --verbose Verbose output
297
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
298
+ --[no-]interactive Force interactive mode
299
+ --json Format output as json.
300
+ --no-color Do not colorize output
301
+ --verbose Verbose output
333
302
 
334
303
  DESCRIPTION
335
304
  Show current values, rules, and evaluation stats for a flag or config.
@@ -352,7 +321,7 @@ EXAMPLES
352
321
  $ qfg info my.config.name --exclude-evaluations # skip 24h stats
353
322
  ```
354
323
 
355
- _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/info.ts)_
324
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/info.ts)_
356
325
 
357
326
  ## `qfg init [DIRECTORY]`
358
327
 
@@ -390,7 +359,7 @@ EXAMPLES
390
359
  $ qfg init --dry-run
391
360
  ```
392
361
 
393
- _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/init.ts)_
362
+ _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/init.ts)_
394
363
 
395
364
  ## `qfg interactive`
396
365
 
@@ -408,7 +377,7 @@ EXAMPLES
408
377
  $ qfg
409
378
  ```
410
379
 
411
- _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/interactive.ts)_
380
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/interactive.ts)_
412
381
 
413
382
  ## `qfg list`
414
383
 
@@ -416,7 +385,7 @@ Show keys for your config/feature flags/etc.
416
385
 
417
386
  ```
418
387
  USAGE
419
- $ qfg list [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--configs] [--feature-flags]
388
+ $ qfg list [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--configs] [--feature-flags]
420
389
  [--log-levels] [--schemas] [--segments]
421
390
 
422
391
  FLAGS
@@ -427,11 +396,11 @@ FLAGS
427
396
  --segments include segments
428
397
 
429
398
  GLOBAL FLAGS
430
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
431
- --[no-]interactive Force interactive mode
432
- --json Format output as json.
433
- --no-color Do not colorize output
434
- --verbose Verbose output
399
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
400
+ --[no-]interactive Force interactive mode
401
+ --json Format output as json.
402
+ --no-color Do not colorize output
403
+ --verbose Verbose output
435
404
 
436
405
  DESCRIPTION
437
406
  Show keys for your config/feature flags/etc.
@@ -445,7 +414,7 @@ EXAMPLES
445
414
  $ qfg list --feature-flags
446
415
  ```
447
416
 
448
- _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/list.ts)_
417
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/list.ts)_
449
418
 
450
419
  ## `qfg login`
451
420
 
@@ -453,10 +422,7 @@ Log in to Quonfig via WorkOS device authorization
453
422
 
454
423
  ```
455
424
  USAGE
456
- $ qfg login [--json] [--interactive] [--no-color] [--verbose] [-p <value>]
457
-
458
- FLAGS
459
- -p, --profile=<value> Profile name to create or update (defaults to "default")
425
+ $ qfg login [--json] [--interactive] [--no-color] [--verbose]
460
426
 
461
427
  GLOBAL FLAGS
462
428
  --[no-]interactive Force interactive mode
@@ -473,7 +439,7 @@ EXAMPLES
473
439
  $ qfg login --profile myprofile
474
440
  ```
475
441
 
476
- _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/login.ts)_
442
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/login.ts)_
477
443
 
478
444
  ## `qfg logout`
479
445
 
@@ -496,7 +462,7 @@ EXAMPLES
496
462
  $ qfg logout
497
463
  ```
498
464
 
499
- _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/logout.ts)_
465
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/logout.ts)_
500
466
 
501
467
  ## `qfg mcp`
502
468
 
@@ -529,7 +495,7 @@ EXAMPLES
529
495
  $ qfg mcp --url http://local-app.quonfig-staging.com:3003/api/v1/mcp
530
496
  ```
531
497
 
532
- _See code: [src/commands/mcp.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/mcp.ts)_
498
+ _See code: [src/commands/mcp.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/mcp.ts)_
533
499
 
534
500
  ## `qfg override [NAME]`
535
501
 
@@ -537,7 +503,7 @@ Override the value of an item for your user/SDK key combo
537
503
 
538
504
  ```
539
505
  USAGE
540
- $ qfg override [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
506
+ $ qfg override [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--environment <value>]
541
507
  [--remove] [--value <value>]
542
508
 
543
509
  ARGUMENTS
@@ -549,11 +515,11 @@ FLAGS
549
515
  --value=<value> value to use for your override
550
516
 
551
517
  GLOBAL FLAGS
552
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
553
- --[no-]interactive Force interactive mode
554
- --json Format output as json.
555
- --no-color Do not colorize output
556
- --verbose Verbose output
518
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
519
+ --[no-]interactive Force interactive mode
520
+ --json Format output as json.
521
+ --no-color Do not colorize output
522
+ --verbose Verbose output
557
523
 
558
524
  DESCRIPTION
559
525
  Override the value of an item for your user/SDK key combo
@@ -568,30 +534,7 @@ EXAMPLES
568
534
  $ qfg override my.double.config --value=3.14159
569
535
  ```
570
536
 
571
- _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/override.ts)_
572
-
573
- ## `qfg profile`
574
-
575
- Manage profiles and set default profile
576
-
577
- ```
578
- USAGE
579
- $ qfg profile [--json] [--interactive] [--no-color] [--verbose]
580
-
581
- GLOBAL FLAGS
582
- --[no-]interactive Force interactive mode
583
- --json Format output as json.
584
- --no-color Do not colorize output
585
- --verbose Verbose output
586
-
587
- DESCRIPTION
588
- Manage profiles and set default profile
589
-
590
- EXAMPLES
591
- $ qfg profile
592
- ```
593
-
594
- _See code: [src/commands/profile.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/profile.ts)_
537
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/override.ts)_
595
538
 
596
539
  ## `qfg pull`
597
540
 
@@ -635,7 +578,7 @@ EXAMPLES
635
578
  $ qfg pull # uses QUONFIG_DIR env var
636
579
  ```
637
580
 
638
- _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/pull.ts)_
581
+ _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/pull.ts)_
639
582
 
640
583
  ## `qfg schema NAME`
641
584
 
@@ -643,7 +586,7 @@ Get or update first-class schema documents
643
586
 
644
587
  ```
645
588
  USAGE
646
- $ qfg schema NAME [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--get] [--protected]
589
+ $ qfg schema NAME [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--get] [--protected]
647
590
  [--set-json-schema <value>] [--set-zod <value>]
648
591
 
649
592
  ARGUMENTS
@@ -656,11 +599,11 @@ FLAGS
656
599
  --set-zod=<value> compatibility alias for --set-json-schema; now expects plain JSON Schema
657
600
 
658
601
  GLOBAL FLAGS
659
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
660
- --[no-]interactive Force interactive mode
661
- --json Format output as json.
662
- --no-color Do not colorize output
663
- --verbose Verbose output
602
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
603
+ --[no-]interactive Force interactive mode
604
+ --json Format output as json.
605
+ --no-color Do not colorize output
606
+ --verbose Verbose output
664
607
 
665
608
  DESCRIPTION
666
609
  Get or update first-class schema documents
@@ -673,21 +616,15 @@ EXAMPLES
673
616
  $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
674
617
  ```
675
618
 
676
- _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/schema.ts)_
619
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/schema.ts)_
677
620
 
678
- ## `qfg serve DATA-FILE`
621
+ ## `qfg sdk-key`
679
622
 
680
- Serve a datafile on a local port
623
+ Manage SDK keys for your workspace
681
624
 
682
625
  ```
683
626
  USAGE
684
- $ qfg serve DATA-FILE [--json] [--interactive] [--no-color] [--verbose] [--port <value>]
685
-
686
- ARGUMENTS
687
- DATA-FILE file to read
688
-
689
- FLAGS
690
- --port=<value> [default: 3099] port to serve on
627
+ $ qfg sdk-key [--json] [--interactive] [--no-color] [--verbose]
691
628
 
692
629
  GLOBAL FLAGS
693
630
  --[no-]interactive Force interactive mode
@@ -696,20 +633,105 @@ GLOBAL FLAGS
696
633
  --verbose Verbose output
697
634
 
698
635
  DESCRIPTION
699
- Serve a datafile on a local port
636
+ Manage SDK keys for your workspace
637
+
638
+ EXAMPLES
639
+ $ qfg sdk-key list
640
+
641
+ $ qfg sdk-key create --environment production --type server
642
+
643
+ $ qfg sdk-key revoke <key-id>
644
+ ```
645
+
646
+ _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/sdk-key.ts)_
647
+
648
+ ## `qfg sdk-key create`
649
+
650
+ Create a new SDK key
651
+
652
+ ```
653
+ USAGE
654
+ $ qfg sdk-key create [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [-e <value>] [-t
655
+ server|browser]
656
+
657
+ FLAGS
658
+ -e, --environment=<value> Environment name (e.g. production, staging)
659
+ -t, --type=<option> Key type: server (backend) or browser (frontend)
660
+ <options: server|browser>
661
+
662
+ GLOBAL FLAGS
663
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
664
+ --[no-]interactive Force interactive mode
665
+ --json Format output as json.
666
+ --no-color Do not colorize output
667
+ --verbose Verbose output
668
+
669
+ DESCRIPTION
670
+ Create a new SDK key
671
+
672
+ EXAMPLES
673
+ $ qfg sdk-key create --environment production --type server
674
+
675
+ $ qfg sdk-key create --environment staging --type browser
676
+ ```
677
+
678
+ _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/sdk-key/create.ts)_
700
679
 
701
- You can download a datafile using the `download` command.
680
+ ## `qfg sdk-key list`
681
+
682
+ List SDK keys for your workspace
683
+
684
+ ```
685
+ USAGE
686
+ $ qfg sdk-key list [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [-e <value>]
702
687
 
703
- You'll need to update your JavaScript (or React) client to point to this server.
688
+ FLAGS
689
+ -e, --environment=<value> Filter by environment name
704
690
 
705
- e.g. `endpoints: ["http://localhost:3099"],`
691
+ GLOBAL FLAGS
692
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
693
+ --[no-]interactive Force interactive mode
694
+ --json Format output as json.
695
+ --no-color Do not colorize output
696
+ --verbose Verbose output
706
697
 
698
+ DESCRIPTION
699
+ List SDK keys for your workspace
707
700
 
708
701
  EXAMPLES
709
- $ qfg serve ./quonfig.test.588.config.json --port=3099
702
+ $ qfg sdk-key list
703
+
704
+ $ qfg sdk-key list --environment production
705
+ ```
706
+
707
+ _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/sdk-key/list.ts)_
708
+
709
+ ## `qfg sdk-key revoke KEYID`
710
+
711
+ Revoke an SDK key by its ID
712
+
710
713
  ```
714
+ USAGE
715
+ $ qfg sdk-key revoke KEYID [--json] [--interactive] [--no-color] [--verbose] [-w <value>]
711
716
 
712
- _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/serve.ts)_
717
+ ARGUMENTS
718
+ KEYID ID of the SDK key to revoke
719
+
720
+ GLOBAL FLAGS
721
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
722
+ --[no-]interactive Force interactive mode
723
+ --json Format output as json.
724
+ --no-color Do not colorize output
725
+ --verbose Verbose output
726
+
727
+ DESCRIPTION
728
+ Revoke an SDK key by its ID
729
+
730
+ EXAMPLES
731
+ $ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
732
+ ```
733
+
734
+ _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/sdk-key/revoke.ts)_
713
735
 
714
736
  ## `qfg set-default [NAME]`
715
737
 
@@ -717,7 +739,7 @@ Set the unconditional fallback value for a flag or config in a specific environm
717
739
 
718
740
  ```
719
741
  USAGE
720
- $ qfg set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--confidential]
742
+ $ qfg set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
721
743
  [--env-var <value>] [--environment <value>] [--value <value>] [--confirm] [--secret] [--secret-key-name <value>]
722
744
 
723
745
  ARGUMENTS
@@ -734,11 +756,11 @@ FLAGS
734
756
  --value=<value> new default value
735
757
 
736
758
  GLOBAL FLAGS
737
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
738
- --[no-]interactive Force interactive mode
739
- --json Format output as json.
740
- --no-color Do not colorize output
741
- --verbose Verbose output
759
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
760
+ --[no-]interactive Force interactive mode
761
+ --json Format output as json.
762
+ --no-color Do not colorize output
763
+ --verbose Verbose output
742
764
 
743
765
  DESCRIPTION
744
766
  Set the unconditional fallback value for a flag or config in a specific environment.
@@ -773,7 +795,7 @@ EXAMPLES
773
795
  $ qfg set-rollout my.flag.name --environment production --true-percent 20
774
796
  ```
775
797
 
776
- _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/set-default.ts)_
798
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/set-default.ts)_
777
799
 
778
800
  ## `qfg set-rollout [NAME]`
779
801
 
@@ -781,7 +803,7 @@ Configure a percentage rollout (gradual rollout / A/B test / canary deploy) for
781
803
 
782
804
  ```
783
805
  USAGE
784
- $ qfg set-rollout [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
806
+ $ qfg set-rollout [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--environment <value>]
785
807
  [--hash-by <value>] [--true-percent <value>] [--weights <value>] [--confirm]
786
808
 
787
809
  ARGUMENTS
@@ -797,11 +819,11 @@ FLAGS
797
819
  "red:33,green:33,blue:34")
798
820
 
799
821
  GLOBAL FLAGS
800
- -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
801
- --[no-]interactive Force interactive mode
802
- --json Format output as json.
803
- --no-color Do not colorize output
804
- --verbose Verbose output
822
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
823
+ --[no-]interactive Force interactive mode
824
+ --json Format output as json.
825
+ --no-color Do not colorize output
826
+ --verbose Verbose output
805
827
 
806
828
  DESCRIPTION
807
829
  Configure a percentage rollout (gradual rollout / A/B test / canary deploy) for a flag.
@@ -850,7 +872,7 @@ EXAMPLES
850
872
  $ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
851
873
  ```
852
874
 
853
- _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/set-rollout.ts)_
875
+ _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/set-rollout.ts)_
854
876
 
855
877
  ## `qfg sync`
856
878
 
@@ -882,7 +904,7 @@ EXAMPLES
882
904
  $ qfg sync --watch --dir ./our-config --interval 30
883
905
  ```
884
906
 
885
- _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/sync.ts)_
907
+ _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/sync.ts)_
886
908
 
887
909
  ## `qfg verify [PATH]`
888
910
 
@@ -915,7 +937,7 @@ EXAMPLES
915
937
  $ qfg verify --json
916
938
  ```
917
939
 
918
- _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/verify.ts)_
940
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/verify.ts)_
919
941
 
920
942
  ## `qfg whoami`
921
943
 
@@ -938,11 +960,11 @@ EXAMPLES
938
960
  $ qfg whoami
939
961
  ```
940
962
 
941
- _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/whoami.ts)_
963
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/whoami.ts)_
942
964
 
943
965
  ## `qfg workspace`
944
966
 
945
- Display current workspace. To switch workspaces, run `qfg login --profile <name>`.
967
+ Show the current workspace
946
968
 
947
969
  ```
948
970
  USAGE
@@ -955,13 +977,13 @@ GLOBAL FLAGS
955
977
  --verbose Verbose output
956
978
 
957
979
  DESCRIPTION
958
- Display current workspace. To switch workspaces, run `qfg login --profile <name>`.
980
+ Show the current workspace
959
981
 
960
982
  EXAMPLES
961
983
  $ qfg workspace
962
984
  ```
963
985
 
964
- _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/workspace.ts)_
986
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/workspace.ts)_
965
987
 
966
988
  ## `qfg workspace bootstrap`
967
989
 
@@ -994,7 +1016,30 @@ EXAMPLES
994
1016
  $ qfg workspace bootstrap --dir ./our-config --skip-validate
995
1017
  ```
996
1018
 
997
- _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.5/src/commands/workspace/bootstrap.ts)_
1019
+ _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/workspace/bootstrap.ts)_
1020
+
1021
+ ## `qfg workspace switch`
1022
+
1023
+ Switch to a different workspace
1024
+
1025
+ ```
1026
+ USAGE
1027
+ $ qfg workspace switch [--json] [--interactive] [--no-color] [--verbose]
1028
+
1029
+ GLOBAL FLAGS
1030
+ --[no-]interactive Force interactive mode
1031
+ --json Format output as json.
1032
+ --no-color Do not colorize output
1033
+ --verbose Verbose output
1034
+
1035
+ DESCRIPTION
1036
+ Switch to a different workspace
1037
+
1038
+ EXAMPLES
1039
+ $ qfg workspace switch
1040
+ ```
1041
+
1042
+ _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.7/src/commands/workspace/switch.ts)_
998
1043
  <!-- commandsstop -->
999
1044
 
1000
1045
  ## Local Development
@@ -1011,10 +1056,13 @@ fish -c "cd ../../quonfig/cli;bin/dev.js"
1011
1056
 
1012
1057
  ## Releasing
1013
1058
 
1014
- ```
1015
- yarn version
1016
- npm publish --access public
1017
- ```
1059
+ Publishing is fully automated via CI. To ship a new version:
1060
+
1061
+ 1. Bump the version in `package.json`
1062
+ 2. Add an entry to `CHANGELOG.md`
1063
+ 3. Commit and push to `main`
1064
+
1065
+ The [release workflow](.github/workflows/release.yaml) detects that the version in `package.json` is not yet on npm and publishes automatically using GitHub OIDC (no npm token or OTP needed locally).
1018
1066
 
1019
1067
  ## Contributing
1020
1068