@quonfig/cli 0.4.0 → 0.6.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.
Files changed (53) hide show
  1. package/README.md +229 -77
  2. package/dist/agent/skill-bundle.generated.d.ts +1 -1
  3. package/dist/agent/skill-bundle.generated.js +4 -4
  4. package/dist/codegen/code-generators/base-typescript-generator.d.ts +1 -1
  5. package/dist/codegen/schema-extractor.d.ts +1 -1
  6. package/dist/commands/config-schema.js +9 -2
  7. package/dist/commands/create.d.ts +3 -1
  8. package/dist/commands/create.js +93 -20
  9. package/dist/commands/environments.d.ts +8 -0
  10. package/dist/commands/environments.js +32 -0
  11. package/dist/commands/get.d.ts +1 -0
  12. package/dist/commands/get.js +40 -3
  13. package/dist/commands/info.d.ts +1 -0
  14. package/dist/commands/info.js +69 -32
  15. package/dist/commands/set-default.d.ts +2 -0
  16. package/dist/commands/set-default.js +98 -35
  17. package/dist/commands/set-rollout.js +2 -2
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.js +35 -3
  20. package/dist/interactive-prompt.d.ts +18 -0
  21. package/dist/interactive-prompt.js +11 -2
  22. package/dist/migrate/quonfig-target/operators.js +4 -2
  23. package/dist/migrate/quonfig-target/ruleset.d.ts +48 -0
  24. package/dist/migrate/quonfig-target/ruleset.js +132 -8
  25. package/dist/migrate/sources/flagsmith/translate.js +11 -0
  26. package/dist/migrate/sources/launchdarkly/translate.js +19 -16
  27. package/dist/push/git-pack.d.ts +12 -0
  28. package/dist/push/git-pack.js +27 -3
  29. package/dist/push/run-push.d.ts +2 -1
  30. package/dist/push/run-push.js +1 -2
  31. package/dist/ui/get-confirmation.d.ts +10 -1
  32. package/dist/ui/get-confirmation.js +13 -4
  33. package/dist/ui/get-string.d.ts +18 -1
  34. package/dist/ui/get-string.js +20 -5
  35. package/dist/ui/get-value.d.ts +3 -1
  36. package/dist/ui/get-value.js +7 -7
  37. package/dist/util/clone-and-stack-push.js +8 -3
  38. package/dist/util/encryption.js +11 -20
  39. package/dist/util/git-ops.d.ts +4 -2
  40. package/dist/util/git-ops.js +4 -2
  41. package/dist/util/redact.d.ts +56 -0
  42. package/dist/util/redact.js +98 -0
  43. package/dist/util/value-source.d.ts +30 -0
  44. package/dist/util/value-source.js +81 -0
  45. package/dist/verify/regex-dialect.d.ts +39 -0
  46. package/dist/verify/regex-dialect.js +278 -0
  47. package/dist/verify/standalone.d.ts +3 -1
  48. package/dist/verify/standalone.js +4 -19
  49. package/dist/verify/validate.js +20 -0
  50. package/dist/version.d.ts +1 -1
  51. package/dist/version.js +1 -1
  52. package/oclif.manifest.json +218 -97
  53. package/package.json +18 -16
package/README.md CHANGED
@@ -17,7 +17,7 @@ $ npm install -g @quonfig/cli
17
17
  $ qfg COMMAND
18
18
  running command...
19
19
  $ qfg (--version)
20
- @quonfig/cli/0.4.0 linux-x64 node-v24.4.1
20
+ @quonfig/cli/0.6.0 linux-x64 node-v24.4.1
21
21
  $ qfg --help [COMMAND]
22
22
  USAGE
23
23
  $ qfg COMMAND
@@ -137,6 +137,8 @@ script doesn't need to know which env it's running in.
137
137
  * [`qfg contexts search CONTEXTTYPE QUERY`](#qfg-contexts-search-contexttype-query)
138
138
  * [`qfg create NAME`](#qfg-create-name)
139
139
  * [`qfg delete NAME`](#qfg-delete-name)
140
+ * [`qfg environments`](#qfg-environments)
141
+ * [`qfg envs`](#qfg-envs)
140
142
  * [`qfg flag info [NAME]`](#qfg-flag-info-name)
141
143
  * [`qfg flag list`](#qfg-flag-list)
142
144
  * [`qfg flag show [NAME]`](#qfg-flag-show-name)
@@ -204,7 +206,7 @@ EXAMPLES
204
206
  $ qfg activity restore my.flag --yes
205
207
  ```
206
208
 
207
- _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/activity.ts)_
209
+ _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity.ts)_
208
210
 
209
211
  ## `qfg activity deleted`
210
212
 
@@ -233,7 +235,7 @@ EXAMPLES
233
235
  $ qfg activity deleted --json
234
236
  ```
235
237
 
236
- _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/activity/deleted.ts)_
238
+ _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/deleted.ts)_
237
239
 
238
240
  ## `qfg activity feed`
239
241
 
@@ -268,7 +270,7 @@ EXAMPLES
268
270
  $ qfg activity feed --json
269
271
  ```
270
272
 
271
- _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/activity/feed.ts)_
273
+ _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/feed.ts)_
272
274
 
273
275
  ## `qfg activity history [NAME]`
274
276
 
@@ -302,7 +304,7 @@ EXAMPLES
302
304
  $ qfg activity history request.timeout --json
303
305
  ```
304
306
 
305
- _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/activity/history.ts)_
307
+ _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/history.ts)_
306
308
 
307
309
  ## `qfg activity restore [NAME]`
308
310
 
@@ -341,7 +343,7 @@ EXAMPLES
341
343
  $ qfg activity restore request.timeout --type config --yes
342
344
  ```
343
345
 
344
- _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/activity/restore.ts)_
346
+ _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/activity/restore.ts)_
345
347
 
346
348
  ## `qfg agent install-skill`
347
349
 
@@ -386,7 +388,7 @@ EXAMPLES
386
388
  $ qfg agent install-skill --force
387
389
  ```
388
390
 
389
- _See code: [src/commands/agent/install-skill.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/agent/install-skill.ts)_
391
+ _See code: [src/commands/agent/install-skill.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/agent/install-skill.ts)_
390
392
 
391
393
  ## `qfg audit-log [NAME]`
392
394
 
@@ -414,7 +416,7 @@ EXAMPLES
414
416
  $ qfg audit-log my.flag
415
417
  ```
416
418
 
417
- _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/audit-log.ts)_
419
+ _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/audit-log.ts)_
418
420
 
419
421
  ## `qfg cleanup`
420
422
 
@@ -456,7 +458,7 @@ EXAMPLES
456
458
  $ qfg cleanup status my.flag.key
457
459
  ```
458
460
 
459
- _See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/cleanup.ts)_
461
+ _See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup.ts)_
460
462
 
461
463
  ## `qfg cleanup list`
462
464
 
@@ -503,7 +505,7 @@ EXAMPLES
503
505
  $ qfg cleanup list --json
504
506
  ```
505
507
 
506
- _See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/cleanup/list.ts)_
508
+ _See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/list.ts)_
507
509
 
508
510
  ## `qfg cleanup remove [NAME]`
509
511
 
@@ -550,7 +552,7 @@ EXAMPLES
550
552
  $ qfg cleanup remove my.flag.key --json
551
553
  ```
552
554
 
553
- _See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/cleanup/remove.ts)_
555
+ _See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/remove.ts)_
554
556
 
555
557
  ## `qfg cleanup status [NAME]`
556
558
 
@@ -590,7 +592,7 @@ EXAMPLES
590
592
  $ qfg cleanup status my.flag.key --json
591
593
  ```
592
594
 
593
- _See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/cleanup/status.ts)_
595
+ _See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/status.ts)_
594
596
 
595
597
  ## `qfg cleanup verify [NAME]`
596
598
 
@@ -636,7 +638,7 @@ EXAMPLES
636
638
  $ qfg cleanup verify my.flag.key && qfg delete my.flag.key
637
639
  ```
638
640
 
639
- _See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/cleanup/verify.ts)_
641
+ _See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/cleanup/verify.ts)_
640
642
 
641
643
  ## `qfg config-schema`
642
644
 
@@ -665,7 +667,7 @@ EXAMPLES
665
667
  $ qfg config-schema --json-schema # full JSON Schema document (copy into your editor)
666
668
  ```
667
669
 
668
- _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/config-schema.ts)_
670
+ _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/config-schema.ts)_
669
671
 
670
672
  ## `qfg contexts`
671
673
 
@@ -688,7 +690,7 @@ EXAMPLES
688
690
  $ qfg contexts search organization formhealth
689
691
  ```
690
692
 
691
- _See code: [src/commands/contexts.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/contexts.ts)_
693
+ _See code: [src/commands/contexts.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/contexts.ts)_
692
694
 
693
695
  ## `qfg contexts search CONTEXTTYPE QUERY`
694
696
 
@@ -740,7 +742,7 @@ EXAMPLES
740
742
  $ qfg contexts search organization formhealth --json
741
743
  ```
742
744
 
743
- _See code: [src/commands/contexts/search.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/contexts/search.ts)_
745
+ _See code: [src/commands/contexts/search.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/contexts/search.ts)_
744
746
 
745
747
  ## `qfg create NAME`
746
748
 
@@ -748,22 +750,26 @@ Create a new feature flag, config value, or other item.
748
750
 
749
751
  ```
750
752
  USAGE
751
- $ qfg create NAME --type boolean-flag|boolean|string|double|int|string-list|json|duration|log_level
752
- [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential] [--env-var <value>] [--value
753
- <value>] [--secret] [--secret-key-name <value>]
753
+ $ qfg create NAME [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
754
+ [--env-var <value>] [--type boolean-flag|boolean|string|double|int|string-list|json|duration|log_level] [--value
755
+ <value>] [--value-from-env VAR] [--value-stdin] [--secret] [--secret-key-name <value>]
754
756
 
755
757
  ARGUMENTS
756
758
  NAME name for your new item (e.g. my.new.flag)
757
759
 
758
760
  FLAGS
759
761
  --confidential mark the value as confidential
760
- --env-var=<value> environment variable to get value from
761
- --secret encrypt the value of this item
762
+ --env-var=<value> store no value: the SDK reads it from this env var at RUNTIME. To read a value from a local
763
+ env var NOW, use --value-from-env
764
+ --secret encrypt the value of this item (string-only; the CLI never prints the plaintext)
762
765
  --secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
763
766
  encryption/decryption
764
- --type=<option> (required)
767
+ --type=<option> kind of item to create (required, except with --secret, which implies string)
765
768
  <options: boolean-flag|boolean|string|double|int|string-list|json|duration|log_level>
766
- --value=<value> default value for your new item
769
+ --value=<value> default value for your new item (for secrets prefer --value-stdin / --value-from-env)
770
+ --value-from-env=VAR read the value to store from this LOCAL env var now (keeps it out of argv/shell history).
771
+ Not the same as --env-var
772
+ --value-stdin read the value to store from stdin (one trailing newline is stripped). Keeps it out of argv
767
773
 
768
774
  GLOBAL FLAGS
769
775
  -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
@@ -786,6 +792,17 @@ DESCRIPTION
786
792
  duration An ISO 8601 duration string, e.g. PT30S, PT5M, PT1H30M (SDK returns milliseconds)
787
793
  log_level A dynamic log level (value must be one of TRACE/DEBUG/INFO/WARN/ERROR/FATAL)
788
794
 
795
+ Secrets (--secret) are encrypted client-side and are STRING-ONLY: --secret
796
+ implies --type string, so you can leave --type off. To store a JSON secret, store the JSON as a string secret and
797
+ JSON.parse it in your app. The CLI never prints a secret's plaintext: it shows
798
+ a redacted fingerprint like [encrypted *****3fa9c, 51 chars, ends …a1b2].
799
+
800
+ Keep the value out of argv / shell history / agent transcripts with:
801
+ --value-stdin read the value from stdin
802
+ --value-from-env=VAR read the value from a local env var, now
803
+ These are different from --env-var, which stores NO value: it tells the SDK to
804
+ read the value from that env var at runtime.
805
+
789
806
  This sets the global default value. Override per-environment with:
790
807
  qfg set-default my.flag --environment production --value true
791
808
 
@@ -812,7 +829,15 @@ EXAMPLES
812
829
 
813
830
  $ qfg create my.new.string --type string --value="hello world"
814
831
 
815
- $ qfg create my.new.string --type string --value="hello world" --secret
832
+ # Create a secret without the value ever appearing in argv (--secret implies --type string):
833
+
834
+ pbpaste | qfg create stripe.api-key --secret --value-stdin
835
+
836
+ $ qfg create stripe.api-key --secret --value-from-env STRIPE_API_KEY
837
+
838
+ # A JSON secret is a string secret holding JSON (JSON.parse it in your app):
839
+
840
+ $ qfg create gcp.service-account --secret --value-stdin < sa.json
816
841
 
817
842
  $ qfg create my.new.string --type string --env-var=MY_ENV_VAR_NAME
818
843
 
@@ -827,7 +852,7 @@ EXAMPLES
827
852
  $ qfg set-rollout my.new.flag --environment production --true-percent 20
828
853
  ```
829
854
 
830
- _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/create.ts)_
855
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/create.ts)_
831
856
 
832
857
  ## `qfg delete NAME`
833
858
 
@@ -873,7 +898,73 @@ EXAMPLES
873
898
  $ qfg delete my.config --yes
874
899
  ```
875
900
 
876
- _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/delete.ts)_
901
+ _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/delete.ts)_
902
+
903
+ ## `qfg environments`
904
+
905
+ List the environments in your workspace.
906
+
907
+ ```
908
+ USAGE
909
+ $ qfg environments [--json] [--interactive] [--no-color] [--verbose] [-w <value>]
910
+
911
+ GLOBAL FLAGS
912
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
913
+ --[no-]interactive Force interactive mode
914
+ --json Format output as json.
915
+ --no-color Do not colorize output
916
+ --verbose Verbose output
917
+
918
+ DESCRIPTION
919
+ List the environments in your workspace.
920
+
921
+ Use these names with --environment (set-default, set-rollout, get, run, ...).
922
+ "[Default]" is not an environment: it names the default rules that every
923
+ environment without rules of its own inherits. Protected environments may
924
+ require extra permissions to change.
925
+
926
+ ALIASES
927
+ $ qfg envs
928
+
929
+ EXAMPLES
930
+ $ qfg environments
931
+
932
+ $ qfg environments --json
933
+ ```
934
+
935
+ _See code: [src/commands/environments.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/environments.ts)_
936
+
937
+ ## `qfg envs`
938
+
939
+ List the environments in your workspace.
940
+
941
+ ```
942
+ USAGE
943
+ $ qfg envs [--json] [--interactive] [--no-color] [--verbose] [-w <value>]
944
+
945
+ GLOBAL FLAGS
946
+ -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
947
+ --[no-]interactive Force interactive mode
948
+ --json Format output as json.
949
+ --no-color Do not colorize output
950
+ --verbose Verbose output
951
+
952
+ DESCRIPTION
953
+ List the environments in your workspace.
954
+
955
+ Use these names with --environment (set-default, set-rollout, get, run, ...).
956
+ "[Default]" is not an environment: it names the default rules that every
957
+ environment without rules of its own inherits. Protected environments may
958
+ require extra permissions to change.
959
+
960
+ ALIASES
961
+ $ qfg envs
962
+
963
+ EXAMPLES
964
+ $ qfg envs
965
+
966
+ $ qfg envs --json
967
+ ```
877
968
 
878
969
  ## `qfg flag info [NAME]`
879
970
 
@@ -1077,7 +1168,7 @@ EXAMPLES
1077
1168
  $ qfg generate --targets node-ts -o ./dist # combine with targets
1078
1169
  ```
1079
1170
 
1080
- _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/generate.ts)_
1171
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/generate.ts)_
1081
1172
 
1082
1173
  ## `qfg generate-new-hex-key`
1083
1174
 
@@ -1100,7 +1191,7 @@ EXAMPLES
1100
1191
  $ qfg generate-new-hex-key
1101
1192
  ```
1102
1193
 
1103
- _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/generate-new-hex-key.ts)_
1194
+ _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/generate-new-hex-key.ts)_
1104
1195
 
1105
1196
  ## `qfg get [NAME]`
1106
1197
 
@@ -1109,12 +1200,14 @@ Get the value of a config/feature-flag/etc.
1109
1200
  ```
1110
1201
  USAGE
1111
1202
  $ qfg get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--environment <value>]
1203
+ [--reveal]
1112
1204
 
1113
1205
  ARGUMENTS
1114
1206
  NAME config/feature-flag/etc. name
1115
1207
 
1116
1208
  FLAGS
1117
1209
  --environment=<value> environment to evaluate in
1210
+ --reveal print the plaintext of a secret/confidential value (it is redacted by default)
1118
1211
 
1119
1212
  GLOBAL FLAGS
1120
1213
  -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
@@ -1126,13 +1219,24 @@ GLOBAL FLAGS
1126
1219
  DESCRIPTION
1127
1220
  Get the value of a config/feature-flag/etc.
1128
1221
 
1222
+ Secrets (encrypted) and confidential values print REDACTED by default, as a
1223
+ fingerprint plus length (and the last 4 characters for values of 12+ chars):
1224
+ [encrypted *****3fa9c, 51 chars, ends …a1b2]
1225
+ The fingerprint is the same one SDK telemetry and the Quonfig UI show, so you
1226
+ can confirm a rotation landed without printing the secret. Pass --reveal to
1227
+ print the plaintext. To inject secrets into a process, prefer `qfg run`.
1228
+
1129
1229
  EXAMPLES
1130
1230
  $ qfg get my.config.name
1131
1231
 
1132
1232
  $ qfg get my.config.name --environment=production
1233
+
1234
+ $ qfg get stripe.api-key --environment=production # redacted fingerprint
1235
+
1236
+ $ qfg get stripe.api-key --environment=production --reveal # plaintext
1133
1237
  ```
1134
1238
 
1135
- _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/get.ts)_
1239
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/get.ts)_
1136
1240
 
1137
1241
  ## `qfg history NAME`
1138
1242
 
@@ -1158,7 +1262,7 @@ EXAMPLES
1158
1262
  $ qfg history my.flag
1159
1263
  ```
1160
1264
 
1161
- _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/history.ts)_
1265
+ _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/history.ts)_
1162
1266
 
1163
1267
  ## `qfg info [NAME]`
1164
1268
 
@@ -1206,7 +1310,7 @@ EXAMPLES
1206
1310
  $ qfg info my.config.name --exclude-evaluations # skip 24h stats
1207
1311
  ```
1208
1312
 
1209
- _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/info.ts)_
1313
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/info.ts)_
1210
1314
 
1211
1315
  ## `qfg init [DIRECTORY]`
1212
1316
 
@@ -1246,7 +1350,7 @@ EXAMPLES
1246
1350
  $ qfg init --dry-run
1247
1351
  ```
1248
1352
 
1249
- _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/init.ts)_
1353
+ _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/init.ts)_
1250
1354
 
1251
1355
  ## `qfg interactive`
1252
1356
 
@@ -1276,7 +1380,7 @@ EXAMPLES
1276
1380
  $ qfg
1277
1381
  ```
1278
1382
 
1279
- _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/interactive.ts)_
1383
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/interactive.ts)_
1280
1384
 
1281
1385
  ## `qfg list`
1282
1386
 
@@ -1316,7 +1420,7 @@ EXAMPLES
1316
1420
  $ qfg list --feature-flags
1317
1421
  ```
1318
1422
 
1319
- _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/list.ts)_
1423
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/list.ts)_
1320
1424
 
1321
1425
  ## `qfg log`
1322
1426
 
@@ -1341,7 +1445,7 @@ EXAMPLES
1341
1445
  $ qfg log --limit 5
1342
1446
  ```
1343
1447
 
1344
- _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/log.ts)_
1448
+ _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/log.ts)_
1345
1449
 
1346
1450
  ## `qfg log-level NAME`
1347
1451
 
@@ -1406,7 +1510,7 @@ EXAMPLES
1406
1510
  $ qfg log-level log-level.my-app --target=Chatty --value=INFO --environment=production
1407
1511
  ```
1408
1512
 
1409
- _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/log-level.ts)_
1513
+ _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/log-level.ts)_
1410
1514
 
1411
1515
  ## `qfg login`
1412
1516
 
@@ -1431,7 +1535,7 @@ EXAMPLES
1431
1535
  $ qfg login --profile myprofile
1432
1536
  ```
1433
1537
 
1434
- _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/login.ts)_
1538
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/login.ts)_
1435
1539
 
1436
1540
  ## `qfg logout`
1437
1541
 
@@ -1454,7 +1558,7 @@ EXAMPLES
1454
1558
  $ qfg logout
1455
1559
  ```
1456
1560
 
1457
- _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/logout.ts)_
1561
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/logout.ts)_
1458
1562
 
1459
1563
  ## `qfg migrate`
1460
1564
 
@@ -1519,7 +1623,7 @@ EXAMPLES
1519
1623
  $ qfg migrate --from launch --source-api-key $LAUNCH_API_KEY --dir ./quonfig-repo --staging
1520
1624
  ```
1521
1625
 
1522
- _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/migrate.ts)_
1626
+ _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate.ts)_
1523
1627
 
1524
1628
  ## `qfg migrate doctor`
1525
1629
 
@@ -1557,7 +1661,7 @@ EXAMPLES
1557
1661
  $ qfg migrate doctor --json
1558
1662
  ```
1559
1663
 
1560
- _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/migrate/doctor.ts)_
1664
+ _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate/doctor.ts)_
1561
1665
 
1562
1666
  ## `qfg migrate my-code`
1563
1667
 
@@ -1589,7 +1693,7 @@ EXAMPLES
1589
1693
  $ qfg migrate my-code --dry-run
1590
1694
  ```
1591
1695
 
1592
- _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/migrate/my-code.ts)_
1696
+ _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate/my-code.ts)_
1593
1697
 
1594
1698
  ## `qfg migrate status`
1595
1699
 
@@ -1620,7 +1724,7 @@ EXAMPLES
1620
1724
  $ qfg migrate status --json
1621
1725
  ```
1622
1726
 
1623
- _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/migrate/status.ts)_
1727
+ _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/migrate/status.ts)_
1624
1728
 
1625
1729
  ## `qfg override [NAME] [VALUE]`
1626
1730
 
@@ -1675,7 +1779,7 @@ EXAMPLES
1675
1779
  $ qfg override my.flag true --env=staging
1676
1780
  ```
1677
1781
 
1678
- _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/override.ts)_
1782
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/override.ts)_
1679
1783
 
1680
1784
  ## `qfg pull`
1681
1785
 
@@ -1722,7 +1826,7 @@ EXAMPLES
1722
1826
  $ qfg pull # uses QUONFIG_DIR env var
1723
1827
  ```
1724
1828
 
1725
- _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/pull.ts)_
1829
+ _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/pull.ts)_
1726
1830
 
1727
1831
  ## `qfg push`
1728
1832
 
@@ -1771,7 +1875,7 @@ EXAMPLES
1771
1875
  $ qfg push --dir ./our-config --yes
1772
1876
  ```
1773
1877
 
1774
- _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/push.ts)_
1878
+ _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/push.ts)_
1775
1879
 
1776
1880
  ## `qfg run [COMMAND]`
1777
1881
 
@@ -1822,7 +1926,7 @@ EXAMPLES
1822
1926
  $ qfg run --env DATABASE_URL=db.url --preserve-env --environment=staging -- npm test
1823
1927
  ```
1824
1928
 
1825
- _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/run.ts)_
1929
+ _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/run.ts)_
1826
1930
 
1827
1931
  ## `qfg schema NAME`
1828
1932
 
@@ -1860,7 +1964,7 @@ EXAMPLES
1860
1964
  $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
1861
1965
  ```
1862
1966
 
1863
- _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/schema.ts)_
1967
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/schema.ts)_
1864
1968
 
1865
1969
  ## `qfg sdk-key`
1866
1970
 
@@ -1887,7 +1991,7 @@ EXAMPLES
1887
1991
  $ qfg sdk-key revoke <key-id>
1888
1992
  ```
1889
1993
 
1890
- _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/sdk-key.ts)_
1994
+ _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key.ts)_
1891
1995
 
1892
1996
  ## `qfg sdk-key create`
1893
1997
 
@@ -1919,7 +2023,7 @@ EXAMPLES
1919
2023
  $ qfg sdk-key create --environment staging --type browser
1920
2024
  ```
1921
2025
 
1922
- _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/sdk-key/create.ts)_
2026
+ _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key/create.ts)_
1923
2027
 
1924
2028
  ## `qfg sdk-key list`
1925
2029
 
@@ -1948,7 +2052,7 @@ EXAMPLES
1948
2052
  $ qfg sdk-key list --environment production
1949
2053
  ```
1950
2054
 
1951
- _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/sdk-key/list.ts)_
2055
+ _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key/list.ts)_
1952
2056
 
1953
2057
  ## `qfg sdk-key revoke KEYID`
1954
2058
 
@@ -1975,7 +2079,7 @@ EXAMPLES
1975
2079
  $ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
1976
2080
  ```
1977
2081
 
1978
- _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/sdk-key/revoke.ts)_
2082
+ _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sdk-key/revoke.ts)_
1979
2083
 
1980
2084
  ## `qfg serve`
1981
2085
 
@@ -2033,7 +2137,7 @@ EXAMPLES
2033
2137
  $ qfg serve --port 6581 --frontend-sdk-key PUBLIC_KEY
2034
2138
  ```
2035
2139
 
2036
- _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/serve.ts)_
2140
+ _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/serve.ts)_
2037
2141
 
2038
2142
  ## `qfg set-default [NAME]`
2039
2143
 
@@ -2042,23 +2146,29 @@ Set the fallback value for a flag or config in one environment.
2042
2146
  ```
2043
2147
  USAGE
2044
2148
  $ qfg set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
2045
- [--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--confirm] [--secret]
2046
- [--secret-key-name <value>]
2149
+ [--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--value-from-env VAR]
2150
+ [--value-stdin] [--confirm] [--secret] [--secret-key-name <value>]
2047
2151
 
2048
2152
  ARGUMENTS
2049
2153
  NAME config/feature-flag/etc. name
2050
2154
 
2051
2155
  FLAGS
2052
- --confidential mark the value as confidential
2156
+ --[no-]confidential mark the value as confidential. Auto-detected when the key already holds a confidential
2157
+ value; pass --no-confidential to store it in the clear
2053
2158
  --confirm confirm without prompt
2054
- --env-var=<value> environment variable to use as default value
2055
- --environment=<value> environment to change
2159
+ --env-var=<value> store no value: the SDK reads it from this env var at RUNTIME. To read a value from a local
2160
+ env var NOW, use --value-from-env
2161
+ --environment=<value> environment to change, e.g. production. Use "[Default]" for the default rules that every
2162
+ environment without its own rules inherits
2056
2163
  --replace-targeting set the value for EVERYONE: delete this environment's targeting rules instead of keeping
2057
2164
  them (they stay in git history)
2058
- --secret encrypt the value of this item
2165
+ --secret encrypt the value of this item (string-only; the CLI never prints the plaintext)
2059
2166
  --secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
2060
2167
  encryption/decryption
2061
- --value=<value> new default value
2168
+ --value=<value> new default value (for secrets prefer --value-stdin / --value-from-env)
2169
+ --value-from-env=VAR read the value to store from this LOCAL env var now (keeps it out of argv/shell history).
2170
+ Not the same as --env-var
2171
+ --value-stdin read the value to store from stdin (one trailing newline is stripped). Keeps it out of argv
2062
2172
 
2063
2173
  GLOBAL FLAGS
2064
2174
  -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
@@ -2083,6 +2193,16 @@ DESCRIPTION
2083
2193
  To set a percentage rollout (gradual rollout / A/B test / canary deploy) instead:
2084
2194
  qfg set-rollout my.flag --environment production --true-percent 20
2085
2195
 
2196
+ Secrets (--secret, or any config whose value is already encrypted) are
2197
+ STRING-ONLY. To store a JSON secret, make it a string secret holding the JSON
2198
+ and JSON.parse it in your app. The CLI never prints a secret's plaintext; it
2199
+ shows a redacted fingerprint like [encrypted *****3fa9c, 51 chars, ends …a1b2].
2200
+ Rotate a secret without the value entering argv / shell history:
2201
+ pbpaste | qfg set-default stripe.api-key --environment production --secret --value-stdin --confirm
2202
+ qfg set-default stripe.api-key --environment production --secret --value-from-env STRIPE_API_KEY --confirm
2203
+ (--env-var is different: it stores NO value and tells the SDK to read one from
2204
+ that env var at runtime.)
2205
+
2086
2206
  To see all current values and rules for a flag:
2087
2207
  qfg info my.flag
2088
2208
 
@@ -2100,7 +2220,15 @@ EXAMPLES
2100
2220
 
2101
2221
  $ qfg set-default my.flag.name --value=false --environment=production --replace-targeting # kill-switch: off for everyone
2102
2222
 
2103
- $ qfg set-default my.flag.name --value=true --secret
2223
+ # Rotate a secret without the value entering argv:
2224
+
2225
+ pbpaste | qfg set-default my.secret --environment=production --secret --value-stdin --confirm
2226
+
2227
+ $ qfg set-default my.secret --environment=production --secret --value-from-env=MY_SECRET --confirm
2228
+
2229
+ # Write the [Default] rules (inherited by every environment without its own):
2230
+
2231
+ $ qfg set-default my.secret --environment="[Default]" --secret --value-from-env=MY_SECRET --confirm
2104
2232
 
2105
2233
  $ qfg set-default my.config.name --env-var=MY_ENV_VAR_NAME --environment=production
2106
2234
 
@@ -2113,7 +2241,7 @@ EXAMPLES
2113
2241
  $ qfg pull && qfg config-schema
2114
2242
  ```
2115
2243
 
2116
- _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/set-default.ts)_
2244
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/set-default.ts)_
2117
2245
 
2118
2246
  ## `qfg set-rollout [NAME]`
2119
2247
 
@@ -2204,7 +2332,7 @@ EXAMPLES
2204
2332
  $ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
2205
2333
  ```
2206
2334
 
2207
- _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/set-rollout.ts)_
2335
+ _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/set-rollout.ts)_
2208
2336
 
2209
2337
  ## `qfg sync`
2210
2338
 
@@ -2236,7 +2364,7 @@ EXAMPLES
2236
2364
  $ qfg sync --watch --dir ./our-config --interval 30
2237
2365
  ```
2238
2366
 
2239
- _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/sync.ts)_
2367
+ _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/sync.ts)_
2240
2368
 
2241
2369
  ## `qfg toggle [NAME]`
2242
2370
 
@@ -2245,23 +2373,29 @@ Set the fallback value for a flag or config in one environment.
2245
2373
  ```
2246
2374
  USAGE
2247
2375
  $ qfg toggle [NAME] [--json] [--interactive] [--no-color] [--verbose] [-w <value>] [--confidential]
2248
- [--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--confirm] [--secret]
2249
- [--secret-key-name <value>]
2376
+ [--env-var <value>] [--environment <value>] [--replace-targeting] [--value <value>] [--value-from-env VAR]
2377
+ [--value-stdin] [--confirm] [--secret] [--secret-key-name <value>]
2250
2378
 
2251
2379
  ARGUMENTS
2252
2380
  NAME config/feature-flag/etc. name
2253
2381
 
2254
2382
  FLAGS
2255
- --confidential mark the value as confidential
2383
+ --[no-]confidential mark the value as confidential. Auto-detected when the key already holds a confidential
2384
+ value; pass --no-confidential to store it in the clear
2256
2385
  --confirm confirm without prompt
2257
- --env-var=<value> environment variable to use as default value
2258
- --environment=<value> environment to change
2386
+ --env-var=<value> store no value: the SDK reads it from this env var at RUNTIME. To read a value from a local
2387
+ env var NOW, use --value-from-env
2388
+ --environment=<value> environment to change, e.g. production. Use "[Default]" for the default rules that every
2389
+ environment without its own rules inherits
2259
2390
  --replace-targeting set the value for EVERYONE: delete this environment's targeting rules instead of keeping
2260
2391
  them (they stay in git history)
2261
- --secret encrypt the value of this item
2392
+ --secret encrypt the value of this item (string-only; the CLI never prints the plaintext)
2262
2393
  --secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
2263
2394
  encryption/decryption
2264
- --value=<value> new default value
2395
+ --value=<value> new default value (for secrets prefer --value-stdin / --value-from-env)
2396
+ --value-from-env=VAR read the value to store from this LOCAL env var now (keeps it out of argv/shell history).
2397
+ Not the same as --env-var
2398
+ --value-stdin read the value to store from stdin (one trailing newline is stripped). Keeps it out of argv
2265
2399
 
2266
2400
  GLOBAL FLAGS
2267
2401
  -w, --workspace=<value> Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)
@@ -2286,6 +2420,16 @@ DESCRIPTION
2286
2420
  To set a percentage rollout (gradual rollout / A/B test / canary deploy) instead:
2287
2421
  qfg set-rollout my.flag --environment production --true-percent 20
2288
2422
 
2423
+ Secrets (--secret, or any config whose value is already encrypted) are
2424
+ STRING-ONLY. To store a JSON secret, make it a string secret holding the JSON
2425
+ and JSON.parse it in your app. The CLI never prints a secret's plaintext; it
2426
+ shows a redacted fingerprint like [encrypted *****3fa9c, 51 chars, ends …a1b2].
2427
+ Rotate a secret without the value entering argv / shell history:
2428
+ pbpaste | qfg set-default stripe.api-key --environment production --secret --value-stdin --confirm
2429
+ qfg set-default stripe.api-key --environment production --secret --value-from-env STRIPE_API_KEY --confirm
2430
+ (--env-var is different: it stores NO value and tells the SDK to read one from
2431
+ that env var at runtime.)
2432
+
2289
2433
  To see all current values and rules for a flag:
2290
2434
  qfg info my.flag
2291
2435
 
@@ -2303,7 +2447,15 @@ EXAMPLES
2303
2447
 
2304
2448
  $ qfg toggle my.flag.name --value=false --environment=production --replace-targeting # kill-switch: off for everyone
2305
2449
 
2306
- $ qfg toggle my.flag.name --value=true --secret
2450
+ # Rotate a secret without the value entering argv:
2451
+
2452
+ pbpaste | qfg toggle my.secret --environment=production --secret --value-stdin --confirm
2453
+
2454
+ $ qfg toggle my.secret --environment=production --secret --value-from-env=MY_SECRET --confirm
2455
+
2456
+ # Write the [Default] rules (inherited by every environment without its own):
2457
+
2458
+ $ qfg toggle my.secret --environment="[Default]" --secret --value-from-env=MY_SECRET --confirm
2307
2459
 
2308
2460
  $ qfg toggle my.config.name --env-var=MY_ENV_VAR_NAME --environment=production
2309
2461
 
@@ -2347,7 +2499,7 @@ EXAMPLES
2347
2499
  $ qfg verify --json
2348
2500
  ```
2349
2501
 
2350
- _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/verify.ts)_
2502
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/verify.ts)_
2351
2503
 
2352
2504
  ## `qfg whoami`
2353
2505
 
@@ -2370,7 +2522,7 @@ EXAMPLES
2370
2522
  $ qfg whoami
2371
2523
  ```
2372
2524
 
2373
- _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/whoami.ts)_
2525
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/whoami.ts)_
2374
2526
 
2375
2527
  ## `qfg workspace`
2376
2528
 
@@ -2393,7 +2545,7 @@ EXAMPLES
2393
2545
  $ qfg workspace
2394
2546
  ```
2395
2547
 
2396
- _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/workspace.ts)_
2548
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace.ts)_
2397
2549
 
2398
2550
  ## `qfg workspace bootstrap`
2399
2551
 
@@ -2426,7 +2578,7 @@ EXAMPLES
2426
2578
  $ qfg workspace bootstrap --dir ./our-config --skip-validate
2427
2579
  ```
2428
2580
 
2429
- _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/workspace/bootstrap.ts)_
2581
+ _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace/bootstrap.ts)_
2430
2582
 
2431
2583
  ## `qfg workspace create SLUG`
2432
2584
 
@@ -2460,7 +2612,7 @@ EXAMPLES
2460
2612
  $ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
2461
2613
  ```
2462
2614
 
2463
- _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/workspace/create.ts)_
2615
+ _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace/create.ts)_
2464
2616
 
2465
2617
  ## `qfg workspace switch [SLUG]`
2466
2618
 
@@ -2488,7 +2640,7 @@ EXAMPLES
2488
2640
  $ qfg workspace switch acme/production
2489
2641
  ```
2490
2642
 
2491
- _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.4.0/src/commands/workspace/switch.ts)_
2643
+ _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.6.0/src/commands/workspace/switch.ts)_
2492
2644
  <!-- commandsstop -->
2493
2645
 
2494
2646
  ## Local Development