@quonfig/cli 0.0.51 → 0.0.52

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/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.0.51 linux-x64 node-v24.4.1
20
+ @quonfig/cli/0.0.52 linux-x64 node-v24.4.1
21
21
  $ qfg --help [COMMAND]
22
22
  USAGE
23
23
  $ qfg COMMAND
@@ -195,7 +195,7 @@ EXAMPLES
195
195
  $ qfg activity restore my.flag --yes
196
196
  ```
197
197
 
198
- _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/activity.ts)_
198
+ _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/activity.ts)_
199
199
 
200
200
  ## `qfg activity deleted`
201
201
 
@@ -224,7 +224,7 @@ EXAMPLES
224
224
  $ qfg activity deleted --json
225
225
  ```
226
226
 
227
- _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/activity/deleted.ts)_
227
+ _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/activity/deleted.ts)_
228
228
 
229
229
  ## `qfg activity feed`
230
230
 
@@ -259,7 +259,7 @@ EXAMPLES
259
259
  $ qfg activity feed --json
260
260
  ```
261
261
 
262
- _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/activity/feed.ts)_
262
+ _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/activity/feed.ts)_
263
263
 
264
264
  ## `qfg activity history [NAME]`
265
265
 
@@ -293,7 +293,7 @@ EXAMPLES
293
293
  $ qfg activity history request.timeout --json
294
294
  ```
295
295
 
296
- _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/activity/history.ts)_
296
+ _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/activity/history.ts)_
297
297
 
298
298
  ## `qfg activity restore [NAME]`
299
299
 
@@ -332,7 +332,7 @@ EXAMPLES
332
332
  $ qfg activity restore request.timeout --type config --yes
333
333
  ```
334
334
 
335
- _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/activity/restore.ts)_
335
+ _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/activity/restore.ts)_
336
336
 
337
337
  ## `qfg audit-log [NAME]`
338
338
 
@@ -360,7 +360,7 @@ EXAMPLES
360
360
  $ qfg audit-log my.flag
361
361
  ```
362
362
 
363
- _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/audit-log.ts)_
363
+ _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/audit-log.ts)_
364
364
 
365
365
  ## `qfg config-schema`
366
366
 
@@ -389,7 +389,7 @@ EXAMPLES
389
389
  $ qfg config-schema --json-schema # full JSON Schema document (copy into your editor)
390
390
  ```
391
391
 
392
- _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/config-schema.ts)_
392
+ _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/config-schema.ts)_
393
393
 
394
394
  ## `qfg create NAME`
395
395
 
@@ -474,7 +474,7 @@ EXAMPLES
474
474
  $ qfg set-rollout my.new.flag --environment production --true-percent 20
475
475
  ```
476
476
 
477
- _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/create.ts)_
477
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/create.ts)_
478
478
 
479
479
  ## `qfg delete NAME`
480
480
 
@@ -520,7 +520,7 @@ EXAMPLES
520
520
  $ qfg delete my.config --yes
521
521
  ```
522
522
 
523
- _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/delete.ts)_
523
+ _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/delete.ts)_
524
524
 
525
525
  ## `qfg flag info [NAME]`
526
526
 
@@ -724,7 +724,7 @@ EXAMPLES
724
724
  $ qfg generate --targets node-ts -o ./dist # combine with targets
725
725
  ```
726
726
 
727
- _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/generate.ts)_
727
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/generate.ts)_
728
728
 
729
729
  ## `qfg generate-new-hex-key`
730
730
 
@@ -747,7 +747,7 @@ EXAMPLES
747
747
  $ qfg generate-new-hex-key
748
748
  ```
749
749
 
750
- _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/generate-new-hex-key.ts)_
750
+ _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/generate-new-hex-key.ts)_
751
751
 
752
752
  ## `qfg get [NAME]`
753
753
 
@@ -779,7 +779,7 @@ EXAMPLES
779
779
  $ qfg get my.config.name --environment=production
780
780
  ```
781
781
 
782
- _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/get.ts)_
782
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/get.ts)_
783
783
 
784
784
  ## `qfg history NAME`
785
785
 
@@ -805,7 +805,7 @@ EXAMPLES
805
805
  $ qfg history my.flag
806
806
  ```
807
807
 
808
- _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/history.ts)_
808
+ _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/history.ts)_
809
809
 
810
810
  ## `qfg info [NAME]`
811
811
 
@@ -853,7 +853,7 @@ EXAMPLES
853
853
  $ qfg info my.config.name --exclude-evaluations # skip 24h stats
854
854
  ```
855
855
 
856
- _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/info.ts)_
856
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/info.ts)_
857
857
 
858
858
  ## `qfg init [DIRECTORY]`
859
859
 
@@ -893,7 +893,7 @@ EXAMPLES
893
893
  $ qfg init --dry-run
894
894
  ```
895
895
 
896
- _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/init.ts)_
896
+ _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/init.ts)_
897
897
 
898
898
  ## `qfg interactive`
899
899
 
@@ -923,7 +923,7 @@ EXAMPLES
923
923
  $ qfg
924
924
  ```
925
925
 
926
- _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/interactive.ts)_
926
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/interactive.ts)_
927
927
 
928
928
  ## `qfg list`
929
929
 
@@ -963,7 +963,7 @@ EXAMPLES
963
963
  $ qfg list --feature-flags
964
964
  ```
965
965
 
966
- _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/list.ts)_
966
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/list.ts)_
967
967
 
968
968
  ## `qfg log`
969
969
 
@@ -988,7 +988,7 @@ EXAMPLES
988
988
  $ qfg log --limit 5
989
989
  ```
990
990
 
991
- _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/log.ts)_
991
+ _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/log.ts)_
992
992
 
993
993
  ## `qfg log-level NAME`
994
994
 
@@ -1053,7 +1053,7 @@ EXAMPLES
1053
1053
  $ qfg log-level log-level.my-app --target=Chatty --value=INFO --environment=production
1054
1054
  ```
1055
1055
 
1056
- _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/log-level.ts)_
1056
+ _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/log-level.ts)_
1057
1057
 
1058
1058
  ## `qfg login`
1059
1059
 
@@ -1078,7 +1078,7 @@ EXAMPLES
1078
1078
  $ qfg login --profile myprofile
1079
1079
  ```
1080
1080
 
1081
- _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/login.ts)_
1081
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/login.ts)_
1082
1082
 
1083
1083
  ## `qfg logout`
1084
1084
 
@@ -1101,7 +1101,7 @@ EXAMPLES
1101
1101
  $ qfg logout
1102
1102
  ```
1103
1103
 
1104
- _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/logout.ts)_
1104
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/logout.ts)_
1105
1105
 
1106
1106
  ## `qfg migrate`
1107
1107
 
@@ -1164,7 +1164,7 @@ EXAMPLES
1164
1164
  $ qfg migrate --from launch --source-api-key $LAUNCH_API_KEY --dir ./quonfig-repo --staging
1165
1165
  ```
1166
1166
 
1167
- _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate.ts)_
1167
+ _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/migrate.ts)_
1168
1168
 
1169
1169
  ## `qfg migrate doctor`
1170
1170
 
@@ -1202,7 +1202,7 @@ EXAMPLES
1202
1202
  $ qfg migrate doctor --json
1203
1203
  ```
1204
1204
 
1205
- _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate/doctor.ts)_
1205
+ _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/migrate/doctor.ts)_
1206
1206
 
1207
1207
  ## `qfg migrate my-code`
1208
1208
 
@@ -1234,7 +1234,7 @@ EXAMPLES
1234
1234
  $ qfg migrate my-code --dry-run
1235
1235
  ```
1236
1236
 
1237
- _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate/my-code.ts)_
1237
+ _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/migrate/my-code.ts)_
1238
1238
 
1239
1239
  ## `qfg migrate status`
1240
1240
 
@@ -1265,7 +1265,7 @@ EXAMPLES
1265
1265
  $ qfg migrate status --json
1266
1266
  ```
1267
1267
 
1268
- _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate/status.ts)_
1268
+ _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/migrate/status.ts)_
1269
1269
 
1270
1270
  ## `qfg override [NAME] [VALUE]`
1271
1271
 
@@ -1320,7 +1320,7 @@ EXAMPLES
1320
1320
  $ qfg override my.flag true --env=staging
1321
1321
  ```
1322
1322
 
1323
- _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/override.ts)_
1323
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/override.ts)_
1324
1324
 
1325
1325
  ## `qfg pull`
1326
1326
 
@@ -1368,7 +1368,7 @@ EXAMPLES
1368
1368
  $ qfg pull # uses QUONFIG_DIR env var
1369
1369
  ```
1370
1370
 
1371
- _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/pull.ts)_
1371
+ _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/pull.ts)_
1372
1372
 
1373
1373
  ## `qfg push`
1374
1374
 
@@ -1417,7 +1417,7 @@ EXAMPLES
1417
1417
  $ qfg push --dir ./our-config --yes
1418
1418
  ```
1419
1419
 
1420
- _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/push.ts)_
1420
+ _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/push.ts)_
1421
1421
 
1422
1422
  ## `qfg run [COMMAND]`
1423
1423
 
@@ -1468,7 +1468,7 @@ EXAMPLES
1468
1468
  $ qfg run --env DATABASE_URL=db.url --preserve-env --environment=staging -- npm test
1469
1469
  ```
1470
1470
 
1471
- _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/run.ts)_
1471
+ _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/run.ts)_
1472
1472
 
1473
1473
  ## `qfg schema NAME`
1474
1474
 
@@ -1506,7 +1506,7 @@ EXAMPLES
1506
1506
  $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
1507
1507
  ```
1508
1508
 
1509
- _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/schema.ts)_
1509
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/schema.ts)_
1510
1510
 
1511
1511
  ## `qfg sdk-key`
1512
1512
 
@@ -1533,7 +1533,7 @@ EXAMPLES
1533
1533
  $ qfg sdk-key revoke <key-id>
1534
1534
  ```
1535
1535
 
1536
- _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key.ts)_
1536
+ _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/sdk-key.ts)_
1537
1537
 
1538
1538
  ## `qfg sdk-key create`
1539
1539
 
@@ -1565,7 +1565,7 @@ EXAMPLES
1565
1565
  $ qfg sdk-key create --environment staging --type browser
1566
1566
  ```
1567
1567
 
1568
- _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key/create.ts)_
1568
+ _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/sdk-key/create.ts)_
1569
1569
 
1570
1570
  ## `qfg sdk-key list`
1571
1571
 
@@ -1594,7 +1594,7 @@ EXAMPLES
1594
1594
  $ qfg sdk-key list --environment production
1595
1595
  ```
1596
1596
 
1597
- _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key/list.ts)_
1597
+ _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/sdk-key/list.ts)_
1598
1598
 
1599
1599
  ## `qfg sdk-key revoke KEYID`
1600
1600
 
@@ -1621,7 +1621,7 @@ EXAMPLES
1621
1621
  $ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
1622
1622
  ```
1623
1623
 
1624
- _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key/revoke.ts)_
1624
+ _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/sdk-key/revoke.ts)_
1625
1625
 
1626
1626
  ## `qfg set-default [NAME]`
1627
1627
 
@@ -1692,7 +1692,7 @@ EXAMPLES
1692
1692
  $ qfg pull && qfg config-schema
1693
1693
  ```
1694
1694
 
1695
- _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/set-default.ts)_
1695
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/set-default.ts)_
1696
1696
 
1697
1697
  ## `qfg set-rollout [NAME]`
1698
1698
 
@@ -1769,7 +1769,7 @@ EXAMPLES
1769
1769
  $ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
1770
1770
  ```
1771
1771
 
1772
- _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/set-rollout.ts)_
1772
+ _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/set-rollout.ts)_
1773
1773
 
1774
1774
  ## `qfg sync`
1775
1775
 
@@ -1801,7 +1801,7 @@ EXAMPLES
1801
1801
  $ qfg sync --watch --dir ./our-config --interval 30
1802
1802
  ```
1803
1803
 
1804
- _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sync.ts)_
1804
+ _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/sync.ts)_
1805
1805
 
1806
1806
  ## `qfg toggle [NAME]`
1807
1807
 
@@ -1903,7 +1903,7 @@ EXAMPLES
1903
1903
  $ qfg verify --json
1904
1904
  ```
1905
1905
 
1906
- _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/verify.ts)_
1906
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/verify.ts)_
1907
1907
 
1908
1908
  ## `qfg whoami`
1909
1909
 
@@ -1926,7 +1926,7 @@ EXAMPLES
1926
1926
  $ qfg whoami
1927
1927
  ```
1928
1928
 
1929
- _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/whoami.ts)_
1929
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/whoami.ts)_
1930
1930
 
1931
1931
  ## `qfg workspace`
1932
1932
 
@@ -1949,7 +1949,7 @@ EXAMPLES
1949
1949
  $ qfg workspace
1950
1950
  ```
1951
1951
 
1952
- _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace.ts)_
1952
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/workspace.ts)_
1953
1953
 
1954
1954
  ## `qfg workspace bootstrap`
1955
1955
 
@@ -1982,7 +1982,7 @@ EXAMPLES
1982
1982
  $ qfg workspace bootstrap --dir ./our-config --skip-validate
1983
1983
  ```
1984
1984
 
1985
- _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace/bootstrap.ts)_
1985
+ _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/workspace/bootstrap.ts)_
1986
1986
 
1987
1987
  ## `qfg workspace create SLUG`
1988
1988
 
@@ -2016,7 +2016,7 @@ EXAMPLES
2016
2016
  $ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
2017
2017
  ```
2018
2018
 
2019
- _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace/create.ts)_
2019
+ _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/workspace/create.ts)_
2020
2020
 
2021
2021
  ## `qfg workspace switch [SLUG]`
2022
2022
 
@@ -2044,7 +2044,7 @@ EXAMPLES
2044
2044
  $ qfg workspace switch acme/production
2045
2045
  ```
2046
2046
 
2047
- _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace/switch.ts)_
2047
+ _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.52/src/commands/workspace/switch.ts)_
2048
2048
  <!-- commandsstop -->
2049
2049
 
2050
2050
  ## Local Development
@@ -76,6 +76,29 @@ function mvOptionValue(opt) {
76
76
  return opt.integer_value ?? 0;
77
77
  return opt.string_value ?? '';
78
78
  }
79
+ /**
80
+ * True when a STANDARD feature has no value payload in any env — every
81
+ * env-default's `feature_state_value` envelope is shaped `{type: 'unicode',
82
+ * boolean_value: null, integer_value: null, string_value: null}` (the default
83
+ * Flagsmith emits for bool-only flags). In that shape the per-env `enabled`
84
+ * bit IS the value; treating the flag as `string` and coercing the empty
85
+ * envelope to `''` would silently lose the bool. The detection is bundle-pure
86
+ * so both `decideValueType` and the value-emission paths can re-check it.
87
+ */
88
+ function isValuelessStandardBool(bundle) {
89
+ const { feature, featurestates_by_env } = bundle;
90
+ if (feature.type !== 'STANDARD')
91
+ return false;
92
+ const envs = Object.values(featurestates_by_env);
93
+ if (envs.length === 0)
94
+ return false;
95
+ return envs.every((env) => {
96
+ const fsv = env.default?.feature_state_value;
97
+ if (!fsv || typeof fsv !== 'object')
98
+ return false;
99
+ return fsv.boolean_value === null && fsv.integer_value === null && fsv.string_value === null;
100
+ });
101
+ }
79
102
  /**
80
103
  * Decide the feature's Quonfig valueType. Multivariate features take their
81
104
  * type from the variation values (all variants share a type in valid Flagsmith
@@ -86,6 +109,9 @@ function mvOptionValue(opt) {
86
109
  function decideValueType(bundle, report) {
87
110
  const { feature, featurestates_by_env } = bundle;
88
111
  const mvOptions = feature.multivariate_options ?? [];
112
+ // Value-less STANDARD feature: enabled IS the bool value (qfg-ybt9).
113
+ if (isValuelessStandardBool(bundle))
114
+ return 'bool';
89
115
  if (feature.type === 'MULTIVARIATE' && mvOptions.length > 0) {
90
116
  const variantValues = mvOptions.map((o) => mvOptionValue(o));
91
117
  const types = new Set(variantValues.map((v) => inferValueType(v)));
@@ -337,6 +363,10 @@ function flattenSegmentRuleForSegment(rule, segment, report) {
337
363
  function envDefaultRuleValue(bundle, envApiKey, fsState, ctx) {
338
364
  const { feature } = bundle;
339
365
  const mvOptions = feature.multivariate_options ?? [];
366
+ // Value-less STANDARD bool (qfg-ybt9): enabled IS the value; envelope is empty.
367
+ if (isValuelessStandardBool(bundle)) {
368
+ return { type: 'bool', value: fsState?.enabled ?? false };
369
+ }
340
370
  // enabled=false (D-F1)
341
371
  if (fsState && !fsState.enabled) {
342
372
  if (ctx.valueType === 'bool') {
@@ -369,6 +399,10 @@ function identityOverrideRuleValue(bundle, override, ctx) {
369
399
  const { feature } = bundle;
370
400
  const mvOptions = feature.multivariate_options ?? [];
371
401
  const mvWeights = override.feature_state.multivariate_feature_state_values ?? [];
402
+ // Value-less STANDARD bool (qfg-ybt9): override's enabled IS the value.
403
+ if (isValuelessStandardBool(bundle)) {
404
+ return { type: 'bool', value: override.feature_state.enabled };
405
+ }
372
406
  // enabled=false on the override: prefer the served value of the override's
373
407
  // own feature_state_value, with the same D-F1 reporting if non-boolean.
374
408
  if (!override.feature_state.enabled) {
@@ -397,6 +431,10 @@ function identityOverrideRuleValue(bundle, override, ctx) {
397
431
  function servedValueSilent(bundle, fsState, ctx) {
398
432
  const { feature } = bundle;
399
433
  const mvOptions = feature.multivariate_options ?? [];
434
+ // Value-less STANDARD bool (qfg-ybt9): enabled IS the value.
435
+ if (isValuelessStandardBool(bundle)) {
436
+ return { type: 'bool', value: fsState?.enabled ?? false };
437
+ }
400
438
  if (fsState && !fsState.enabled && ctx.valueType === 'bool') {
401
439
  return { type: 'bool', value: false };
402
440
  }
@@ -502,6 +540,14 @@ export function translateFeature(bundle, report, options = {}) {
502
540
  segmentIdByFeatureSegmentId[envApiKey] = m;
503
541
  }
504
542
  const ctx = { feature, report, segmentNameById, tagLabelById, valueType };
543
+ // Plan §5.4: every MULTIVARIATE feature triggers a re-bucketing note —
544
+ // Flagsmith and Quonfig hash identities with different salts, so individual
545
+ // identity → variation assignments change post-migration regardless of any
546
+ // per-env override structure. The overall percentage allocation is preserved.
547
+ if (feature.type === 'MULTIVARIATE' && (feature.multivariate_options?.length ?? 0) > 0) {
548
+ report.add('rebucketed-rollout', feature.name, 'multivariate feature; Flagsmith and Quonfig hash identities into buckets with different salts, so ' +
549
+ 'individual identity → variation assignments will change after migration (the overall percentage allocation is preserved)');
550
+ }
505
551
  // Per-env rule list synthesis (plan §5.1, D-F2 ordering): identity overrides
506
552
  // first, then segment overrides (already sorted ASC by priority by the
507
553
  // fetcher), then the trailing ALWAYS_TRUE serving the env default.
@@ -44,7 +44,6 @@ function resolveProjectId() {
44
44
  const state = {
45
45
  apiKey: null,
46
46
  environments: [],
47
- multivariateFeatures: [],
48
47
  project: null,
49
48
  projectId: resolveProjectId(),
50
49
  report: new ConversionReport(),
@@ -95,7 +94,6 @@ async function validateAuthImpl(apiKey) {
95
94
  state.project = project;
96
95
  state.report = new ConversionReport();
97
96
  state.environments = [];
98
- state.multivariateFeatures = [];
99
97
  state.segments = [];
100
98
  state.tags = [];
101
99
  }
@@ -129,9 +127,6 @@ async function* fetchChangesImpl() {
129
127
  state.environments = snapshot.environments;
130
128
  state.segments = snapshot.segments;
131
129
  state.tags = snapshot.tags;
132
- state.multivariateFeatures = snapshot.features
133
- .filter((bundle) => bundle.feature.type === 'MULTIVARIATE' && (bundle.feature.multivariate_options?.length ?? 0) > 0)
134
- .map((bundle) => bundle.feature.name);
135
130
  for (const featureBundle of snapshot.features) {
136
131
  yield {
137
132
  key: featureBundle.feature.name,
@@ -316,20 +311,6 @@ function getConversionNotesImpl() {
316
311
  return out;
317
312
  };
318
313
  const notes = state.report.all().map((n) => ({ ...n, detail: decorate(n.detail) }));
319
- // Synthesize rebucketed-rollout notes for every MULTIVARIATE feature so the
320
- // dedicated "Users will be re-bucketed" section in MIGRATION_REPORT.md
321
- // names each one (plan §5.4). Flagsmith and Quonfig hash buckets with
322
- // different salts; identity-level assignments WILL change post-migration
323
- // for every MV flag, regardless of whether the allocation has any per-env
324
- // overrides.
325
- for (const featureName of state.multivariateFeatures) {
326
- notes.push({
327
- category: 'rebucketed-rollout',
328
- detail: 'multivariate feature; Flagsmith and Quonfig hash identities into buckets with different salts, so ' +
329
- 'individual identity → variation assignments will change after migration (the overall percentage allocation is preserved)',
330
- key: featureName,
331
- });
332
- }
333
314
  // Identity-trait references — pure FYI, no action required server-side, but
334
315
  // every trait must be sent by the SDK caller at eval time or matching rules
335
316
  // will silently miss. Plan §5.5 / D-F6.
@@ -376,7 +357,6 @@ export const flagsmithSource = {
376
357
  export function __resetFlagsmithSourceForTests() {
377
358
  state.apiKey = null;
378
359
  state.environments = [];
379
- state.multivariateFeatures = [];
380
360
  state.project = null;
381
361
  state.projectId = resolveProjectId();
382
362
  state.report = new ConversionReport();
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "0.0.51";
1
+ declare const _default: "0.0.52";
2
2
  export default _default;
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // AUTO-GENERATED from package.json by scripts/generate-version.mjs — do not edit.
2
- export default '0.0.51';
2
+ export default '0.0.52';
@@ -3143,13 +3143,14 @@
3143
3143
  "status.js"
3144
3144
  ]
3145
3145
  },
3146
- "sdk-key:create": {
3146
+ "workspace:bootstrap": {
3147
3147
  "aliases": [],
3148
3148
  "args": {},
3149
- "description": "Create a new SDK key",
3149
+ "description": "Push a local git repo to Gitea as this workspace's config repository",
3150
3150
  "examples": [
3151
- "<%= config.bin %> <%= command.id %> --environment production --type server",
3152
- "<%= config.bin %> <%= command.id %> --environment staging --type browser"
3151
+ "<%= config.bin %> workspace bootstrap --dir ./our-config",
3152
+ "<%= config.bin %> workspace bootstrap --dir ./launch-migrator/output",
3153
+ "<%= config.bin %> workspace bootstrap --dir ./our-config --skip-validate"
3153
3154
  ],
3154
3155
  "flags": {
3155
3156
  "json": {
@@ -3181,53 +3182,30 @@
3181
3182
  "allowNo": false,
3182
3183
  "type": "boolean"
3183
3184
  },
3184
- "workspace": {
3185
- "char": "w",
3186
- "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3187
- "helpGroup": "GLOBAL",
3188
- "name": "workspace",
3189
- "required": false,
3190
- "hasDynamicHelp": false,
3191
- "multiple": false,
3192
- "type": "option"
3193
- },
3194
- "profile": {
3195
- "char": "p",
3196
- "description": "Deprecated: use --workspace instead",
3197
- "helpGroup": "GLOBAL",
3198
- "hidden": true,
3199
- "name": "profile",
3185
+ "dir": {
3186
+ "description": "Local directory to push (defaults to current directory)",
3187
+ "name": "dir",
3200
3188
  "required": false,
3201
3189
  "hasDynamicHelp": false,
3202
3190
  "multiple": false,
3203
3191
  "type": "option"
3204
3192
  },
3205
- "environment": {
3206
- "char": "e",
3207
- "description": "Environment name (e.g. production, staging)",
3208
- "name": "environment",
3209
- "required": false,
3210
- "hasDynamicHelp": false,
3211
- "multiple": false,
3212
- "type": "option"
3193
+ "force": {
3194
+ "description": "Force push even if remote already has commits",
3195
+ "name": "force",
3196
+ "allowNo": false,
3197
+ "type": "boolean"
3213
3198
  },
3214
- "type": {
3215
- "char": "t",
3216
- "description": "Key type: server (backend) or browser (frontend)",
3217
- "name": "type",
3218
- "required": false,
3219
- "hasDynamicHelp": false,
3220
- "multiple": false,
3221
- "options": [
3222
- "server",
3223
- "browser"
3224
- ],
3225
- "type": "option"
3199
+ "skip-validate": {
3200
+ "description": "Skip config validation before pushing",
3201
+ "name": "skip-validate",
3202
+ "allowNo": false,
3203
+ "type": "boolean"
3226
3204
  }
3227
3205
  },
3228
3206
  "hasDynamicHelp": false,
3229
3207
  "hiddenAliases": [],
3230
- "id": "sdk-key:create",
3208
+ "id": "workspace:bootstrap",
3231
3209
  "pluginAlias": "@quonfig/cli",
3232
3210
  "pluginName": "@quonfig/cli",
3233
3211
  "pluginType": "core",
@@ -3237,17 +3215,24 @@
3237
3215
  "relativePath": [
3238
3216
  "dist",
3239
3217
  "commands",
3240
- "sdk-key",
3241
- "create.js"
3218
+ "workspace",
3219
+ "bootstrap.js"
3242
3220
  ]
3243
3221
  },
3244
- "sdk-key:list": {
3222
+ "workspace:create": {
3245
3223
  "aliases": [],
3246
- "args": {},
3247
- "description": "List SDK keys for your workspace",
3224
+ "args": {
3225
+ "slug": {
3226
+ "description": "Workspace slug (lowercase letters, numbers, hyphens)",
3227
+ "name": "slug",
3228
+ "required": true
3229
+ }
3230
+ },
3231
+ "description": "Create a new workspace. Provisions the Gitea repo and default environments, identical to the app's New Workspace UI.",
3248
3232
  "examples": [
3249
- "<%= config.bin %> <%= command.id %>",
3250
- "<%= config.bin %> <%= command.id %> --environment production"
3233
+ "<%= config.bin %> <%= command.id %> my-team",
3234
+ "<%= config.bin %> <%= command.id %> lt-21-smoke --name \"Load Test 21\"",
3235
+ "<%= config.bin %> <%= command.id %> my-team --org 11111111-1111-1111-1111-111111111111"
3251
3236
  ],
3252
3237
  "flags": {
3253
3238
  "json": {
@@ -3279,31 +3264,17 @@
3279
3264
  "allowNo": false,
3280
3265
  "type": "boolean"
3281
3266
  },
3282
- "workspace": {
3283
- "char": "w",
3284
- "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3285
- "helpGroup": "GLOBAL",
3286
- "name": "workspace",
3287
- "required": false,
3288
- "hasDynamicHelp": false,
3289
- "multiple": false,
3290
- "type": "option"
3291
- },
3292
- "profile": {
3293
- "char": "p",
3294
- "description": "Deprecated: use --workspace instead",
3295
- "helpGroup": "GLOBAL",
3296
- "hidden": true,
3297
- "name": "profile",
3267
+ "name": {
3268
+ "description": "Human-readable display name (defaults to the slug)",
3269
+ "name": "name",
3298
3270
  "required": false,
3299
3271
  "hasDynamicHelp": false,
3300
3272
  "multiple": false,
3301
3273
  "type": "option"
3302
3274
  },
3303
- "environment": {
3304
- "char": "e",
3305
- "description": "Filter by environment name",
3306
- "name": "environment",
3275
+ "org": {
3276
+ "description": "Organization UUID or slug. Required when you belong to more than one organization; inferred otherwise.",
3277
+ "name": "org",
3307
3278
  "required": false,
3308
3279
  "hasDynamicHelp": false,
3309
3280
  "multiple": false,
@@ -3312,7 +3283,7 @@
3312
3283
  },
3313
3284
  "hasDynamicHelp": false,
3314
3285
  "hiddenAliases": [],
3315
- "id": "sdk-key:list",
3286
+ "id": "workspace:create",
3316
3287
  "pluginAlias": "@quonfig/cli",
3317
3288
  "pluginName": "@quonfig/cli",
3318
3289
  "pluginType": "core",
@@ -3322,22 +3293,23 @@
3322
3293
  "relativePath": [
3323
3294
  "dist",
3324
3295
  "commands",
3325
- "sdk-key",
3326
- "list.js"
3296
+ "workspace",
3297
+ "create.js"
3327
3298
  ]
3328
3299
  },
3329
- "sdk-key:revoke": {
3300
+ "workspace:switch": {
3330
3301
  "aliases": [],
3331
3302
  "args": {
3332
- "keyId": {
3333
- "description": "ID of the SDK key to revoke",
3334
- "name": "keyId",
3335
- "required": true
3303
+ "slug": {
3304
+ "description": "Workspace pin in `<org-slug>/<workspace-slug>` form. Omit for an interactive picker.",
3305
+ "name": "slug",
3306
+ "required": false
3336
3307
  }
3337
3308
  },
3338
- "description": "Revoke an SDK key by its ID",
3309
+ "description": "Switch the saved default profile to a different (org, workspace) pair",
3339
3310
  "examples": [
3340
- "<%= config.bin %> <%= command.id %> a1b2c3d4-e5f6-7890-abcd-ef1234567890"
3311
+ "<%= config.bin %> <%= command.id %>",
3312
+ "<%= config.bin %> <%= command.id %> acme/production"
3341
3313
  ],
3342
3314
  "flags": {
3343
3315
  "json": {
@@ -3368,32 +3340,11 @@
3368
3340
  "name": "verbose",
3369
3341
  "allowNo": false,
3370
3342
  "type": "boolean"
3371
- },
3372
- "workspace": {
3373
- "char": "w",
3374
- "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3375
- "helpGroup": "GLOBAL",
3376
- "name": "workspace",
3377
- "required": false,
3378
- "hasDynamicHelp": false,
3379
- "multiple": false,
3380
- "type": "option"
3381
- },
3382
- "profile": {
3383
- "char": "p",
3384
- "description": "Deprecated: use --workspace instead",
3385
- "helpGroup": "GLOBAL",
3386
- "hidden": true,
3387
- "name": "profile",
3388
- "required": false,
3389
- "hasDynamicHelp": false,
3390
- "multiple": false,
3391
- "type": "option"
3392
3343
  }
3393
3344
  },
3394
3345
  "hasDynamicHelp": false,
3395
3346
  "hiddenAliases": [],
3396
- "id": "sdk-key:revoke",
3347
+ "id": "workspace:switch",
3397
3348
  "pluginAlias": "@quonfig/cli",
3398
3349
  "pluginName": "@quonfig/cli",
3399
3350
  "pluginType": "core",
@@ -3403,18 +3354,17 @@
3403
3354
  "relativePath": [
3404
3355
  "dist",
3405
3356
  "commands",
3406
- "sdk-key",
3407
- "revoke.js"
3357
+ "workspace",
3358
+ "switch.js"
3408
3359
  ]
3409
3360
  },
3410
- "workspace:bootstrap": {
3361
+ "sdk-key:create": {
3411
3362
  "aliases": [],
3412
3363
  "args": {},
3413
- "description": "Push a local git repo to Gitea as this workspace's config repository",
3364
+ "description": "Create a new SDK key",
3414
3365
  "examples": [
3415
- "<%= config.bin %> workspace bootstrap --dir ./our-config",
3416
- "<%= config.bin %> workspace bootstrap --dir ./launch-migrator/output",
3417
- "<%= config.bin %> workspace bootstrap --dir ./our-config --skip-validate"
3366
+ "<%= config.bin %> <%= command.id %> --environment production --type server",
3367
+ "<%= config.bin %> <%= command.id %> --environment staging --type browser"
3418
3368
  ],
3419
3369
  "flags": {
3420
3370
  "json": {
@@ -3446,30 +3396,53 @@
3446
3396
  "allowNo": false,
3447
3397
  "type": "boolean"
3448
3398
  },
3449
- "dir": {
3450
- "description": "Local directory to push (defaults to current directory)",
3451
- "name": "dir",
3399
+ "workspace": {
3400
+ "char": "w",
3401
+ "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3402
+ "helpGroup": "GLOBAL",
3403
+ "name": "workspace",
3452
3404
  "required": false,
3453
3405
  "hasDynamicHelp": false,
3454
3406
  "multiple": false,
3455
3407
  "type": "option"
3456
3408
  },
3457
- "force": {
3458
- "description": "Force push even if remote already has commits",
3459
- "name": "force",
3460
- "allowNo": false,
3461
- "type": "boolean"
3409
+ "profile": {
3410
+ "char": "p",
3411
+ "description": "Deprecated: use --workspace instead",
3412
+ "helpGroup": "GLOBAL",
3413
+ "hidden": true,
3414
+ "name": "profile",
3415
+ "required": false,
3416
+ "hasDynamicHelp": false,
3417
+ "multiple": false,
3418
+ "type": "option"
3462
3419
  },
3463
- "skip-validate": {
3464
- "description": "Skip config validation before pushing",
3465
- "name": "skip-validate",
3466
- "allowNo": false,
3467
- "type": "boolean"
3420
+ "environment": {
3421
+ "char": "e",
3422
+ "description": "Environment name (e.g. production, staging)",
3423
+ "name": "environment",
3424
+ "required": false,
3425
+ "hasDynamicHelp": false,
3426
+ "multiple": false,
3427
+ "type": "option"
3428
+ },
3429
+ "type": {
3430
+ "char": "t",
3431
+ "description": "Key type: server (backend) or browser (frontend)",
3432
+ "name": "type",
3433
+ "required": false,
3434
+ "hasDynamicHelp": false,
3435
+ "multiple": false,
3436
+ "options": [
3437
+ "server",
3438
+ "browser"
3439
+ ],
3440
+ "type": "option"
3468
3441
  }
3469
3442
  },
3470
3443
  "hasDynamicHelp": false,
3471
3444
  "hiddenAliases": [],
3472
- "id": "workspace:bootstrap",
3445
+ "id": "sdk-key:create",
3473
3446
  "pluginAlias": "@quonfig/cli",
3474
3447
  "pluginName": "@quonfig/cli",
3475
3448
  "pluginType": "core",
@@ -3479,24 +3452,17 @@
3479
3452
  "relativePath": [
3480
3453
  "dist",
3481
3454
  "commands",
3482
- "workspace",
3483
- "bootstrap.js"
3455
+ "sdk-key",
3456
+ "create.js"
3484
3457
  ]
3485
3458
  },
3486
- "workspace:create": {
3459
+ "sdk-key:list": {
3487
3460
  "aliases": [],
3488
- "args": {
3489
- "slug": {
3490
- "description": "Workspace slug (lowercase letters, numbers, hyphens)",
3491
- "name": "slug",
3492
- "required": true
3493
- }
3494
- },
3495
- "description": "Create a new workspace. Provisions the Gitea repo and default environments, identical to the app's New Workspace UI.",
3461
+ "args": {},
3462
+ "description": "List SDK keys for your workspace",
3496
3463
  "examples": [
3497
- "<%= config.bin %> <%= command.id %> my-team",
3498
- "<%= config.bin %> <%= command.id %> lt-21-smoke --name \"Load Test 21\"",
3499
- "<%= config.bin %> <%= command.id %> my-team --org 11111111-1111-1111-1111-111111111111"
3464
+ "<%= config.bin %> <%= command.id %>",
3465
+ "<%= config.bin %> <%= command.id %> --environment production"
3500
3466
  ],
3501
3467
  "flags": {
3502
3468
  "json": {
@@ -3528,17 +3494,31 @@
3528
3494
  "allowNo": false,
3529
3495
  "type": "boolean"
3530
3496
  },
3531
- "name": {
3532
- "description": "Human-readable display name (defaults to the slug)",
3533
- "name": "name",
3497
+ "workspace": {
3498
+ "char": "w",
3499
+ "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3500
+ "helpGroup": "GLOBAL",
3501
+ "name": "workspace",
3534
3502
  "required": false,
3535
3503
  "hasDynamicHelp": false,
3536
3504
  "multiple": false,
3537
3505
  "type": "option"
3538
3506
  },
3539
- "org": {
3540
- "description": "Organization UUID or slug. Required when you belong to more than one organization; inferred otherwise.",
3541
- "name": "org",
3507
+ "profile": {
3508
+ "char": "p",
3509
+ "description": "Deprecated: use --workspace instead",
3510
+ "helpGroup": "GLOBAL",
3511
+ "hidden": true,
3512
+ "name": "profile",
3513
+ "required": false,
3514
+ "hasDynamicHelp": false,
3515
+ "multiple": false,
3516
+ "type": "option"
3517
+ },
3518
+ "environment": {
3519
+ "char": "e",
3520
+ "description": "Filter by environment name",
3521
+ "name": "environment",
3542
3522
  "required": false,
3543
3523
  "hasDynamicHelp": false,
3544
3524
  "multiple": false,
@@ -3547,7 +3527,7 @@
3547
3527
  },
3548
3528
  "hasDynamicHelp": false,
3549
3529
  "hiddenAliases": [],
3550
- "id": "workspace:create",
3530
+ "id": "sdk-key:list",
3551
3531
  "pluginAlias": "@quonfig/cli",
3552
3532
  "pluginName": "@quonfig/cli",
3553
3533
  "pluginType": "core",
@@ -3557,23 +3537,22 @@
3557
3537
  "relativePath": [
3558
3538
  "dist",
3559
3539
  "commands",
3560
- "workspace",
3561
- "create.js"
3540
+ "sdk-key",
3541
+ "list.js"
3562
3542
  ]
3563
3543
  },
3564
- "workspace:switch": {
3544
+ "sdk-key:revoke": {
3565
3545
  "aliases": [],
3566
3546
  "args": {
3567
- "slug": {
3568
- "description": "Workspace pin in `<org-slug>/<workspace-slug>` form. Omit for an interactive picker.",
3569
- "name": "slug",
3570
- "required": false
3547
+ "keyId": {
3548
+ "description": "ID of the SDK key to revoke",
3549
+ "name": "keyId",
3550
+ "required": true
3571
3551
  }
3572
3552
  },
3573
- "description": "Switch the saved default profile to a different (org, workspace) pair",
3553
+ "description": "Revoke an SDK key by its ID",
3574
3554
  "examples": [
3575
- "<%= config.bin %> <%= command.id %>",
3576
- "<%= config.bin %> <%= command.id %> acme/production"
3555
+ "<%= config.bin %> <%= command.id %> a1b2c3d4-e5f6-7890-abcd-ef1234567890"
3577
3556
  ],
3578
3557
  "flags": {
3579
3558
  "json": {
@@ -3604,11 +3583,32 @@
3604
3583
  "name": "verbose",
3605
3584
  "allowNo": false,
3606
3585
  "type": "boolean"
3586
+ },
3587
+ "workspace": {
3588
+ "char": "w",
3589
+ "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3590
+ "helpGroup": "GLOBAL",
3591
+ "name": "workspace",
3592
+ "required": false,
3593
+ "hasDynamicHelp": false,
3594
+ "multiple": false,
3595
+ "type": "option"
3596
+ },
3597
+ "profile": {
3598
+ "char": "p",
3599
+ "description": "Deprecated: use --workspace instead",
3600
+ "helpGroup": "GLOBAL",
3601
+ "hidden": true,
3602
+ "name": "profile",
3603
+ "required": false,
3604
+ "hasDynamicHelp": false,
3605
+ "multiple": false,
3606
+ "type": "option"
3607
3607
  }
3608
3608
  },
3609
3609
  "hasDynamicHelp": false,
3610
3610
  "hiddenAliases": [],
3611
- "id": "workspace:switch",
3611
+ "id": "sdk-key:revoke",
3612
3612
  "pluginAlias": "@quonfig/cli",
3613
3613
  "pluginName": "@quonfig/cli",
3614
3614
  "pluginType": "core",
@@ -3618,10 +3618,10 @@
3618
3618
  "relativePath": [
3619
3619
  "dist",
3620
3620
  "commands",
3621
- "workspace",
3622
- "switch.js"
3621
+ "sdk-key",
3622
+ "revoke.js"
3623
3623
  ]
3624
3624
  }
3625
3625
  },
3626
- "version": "0.0.51"
3626
+ "version": "0.0.52"
3627
3627
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "packageManager": "yarn@4.11.0+sha512.4e54aeace9141df2f0177c266b05ec50dc044638157dae128c471ba65994ac802122d7ab35bcd9e81641228b7dcf24867d28e750e0bcae8a05277d600008ad54",
3
3
  "name": "@quonfig/cli",
4
- "version": "0.0.51",
4
+ "version": "0.0.52",
5
5
  "bugs": {
6
6
  "url": "https://github.com/quonfig/cli/issues"
7
7
  },