@quonfig/cli 0.0.59 → 0.0.60

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.59 linux-x64 node-v24.4.1
20
+ @quonfig/cli/0.0.60 linux-x64 node-v24.4.1
21
21
  $ qfg --help [COMMAND]
22
22
  USAGE
23
23
  $ qfg COMMAND
@@ -201,7 +201,7 @@ EXAMPLES
201
201
  $ qfg activity restore my.flag --yes
202
202
  ```
203
203
 
204
- _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/activity.ts)_
204
+ _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/activity.ts)_
205
205
 
206
206
  ## `qfg activity deleted`
207
207
 
@@ -230,7 +230,7 @@ EXAMPLES
230
230
  $ qfg activity deleted --json
231
231
  ```
232
232
 
233
- _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/activity/deleted.ts)_
233
+ _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/activity/deleted.ts)_
234
234
 
235
235
  ## `qfg activity feed`
236
236
 
@@ -265,7 +265,7 @@ EXAMPLES
265
265
  $ qfg activity feed --json
266
266
  ```
267
267
 
268
- _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/activity/feed.ts)_
268
+ _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/activity/feed.ts)_
269
269
 
270
270
  ## `qfg activity history [NAME]`
271
271
 
@@ -299,7 +299,7 @@ EXAMPLES
299
299
  $ qfg activity history request.timeout --json
300
300
  ```
301
301
 
302
- _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/activity/history.ts)_
302
+ _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/activity/history.ts)_
303
303
 
304
304
  ## `qfg activity restore [NAME]`
305
305
 
@@ -338,7 +338,7 @@ EXAMPLES
338
338
  $ qfg activity restore request.timeout --type config --yes
339
339
  ```
340
340
 
341
- _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/activity/restore.ts)_
341
+ _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/activity/restore.ts)_
342
342
 
343
343
  ## `qfg audit-log [NAME]`
344
344
 
@@ -366,7 +366,7 @@ EXAMPLES
366
366
  $ qfg audit-log my.flag
367
367
  ```
368
368
 
369
- _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/audit-log.ts)_
369
+ _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/audit-log.ts)_
370
370
 
371
371
  ## `qfg cleanup`
372
372
 
@@ -407,7 +407,7 @@ EXAMPLES
407
407
  $ qfg cleanup status my.flag.key
408
408
  ```
409
409
 
410
- _See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/cleanup.ts)_
410
+ _See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/cleanup.ts)_
411
411
 
412
412
  ## `qfg cleanup list`
413
413
 
@@ -453,7 +453,7 @@ EXAMPLES
453
453
  $ qfg cleanup list --json
454
454
  ```
455
455
 
456
- _See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/cleanup/list.ts)_
456
+ _See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/cleanup/list.ts)_
457
457
 
458
458
  ## `qfg cleanup remove [NAME]`
459
459
 
@@ -498,7 +498,7 @@ EXAMPLES
498
498
  $ qfg cleanup remove my.flag.key --json
499
499
  ```
500
500
 
501
- _See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/cleanup/remove.ts)_
501
+ _See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/cleanup/remove.ts)_
502
502
 
503
503
  ## `qfg cleanup status [NAME]`
504
504
 
@@ -538,7 +538,7 @@ EXAMPLES
538
538
  $ qfg cleanup status my.flag.key --json
539
539
  ```
540
540
 
541
- _See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/cleanup/status.ts)_
541
+ _See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/cleanup/status.ts)_
542
542
 
543
543
  ## `qfg cleanup verify [NAME]`
544
544
 
@@ -584,7 +584,7 @@ EXAMPLES
584
584
  $ qfg cleanup verify my.flag.key && qfg delete my.flag.key
585
585
  ```
586
586
 
587
- _See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/cleanup/verify.ts)_
587
+ _See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/cleanup/verify.ts)_
588
588
 
589
589
  ## `qfg config-schema`
590
590
 
@@ -613,7 +613,7 @@ EXAMPLES
613
613
  $ qfg config-schema --json-schema # full JSON Schema document (copy into your editor)
614
614
  ```
615
615
 
616
- _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/config-schema.ts)_
616
+ _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/config-schema.ts)_
617
617
 
618
618
  ## `qfg create NAME`
619
619
 
@@ -700,7 +700,7 @@ EXAMPLES
700
700
  $ qfg set-rollout my.new.flag --environment production --true-percent 20
701
701
  ```
702
702
 
703
- _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/create.ts)_
703
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/create.ts)_
704
704
 
705
705
  ## `qfg delete NAME`
706
706
 
@@ -746,7 +746,7 @@ EXAMPLES
746
746
  $ qfg delete my.config --yes
747
747
  ```
748
748
 
749
- _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/delete.ts)_
749
+ _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/delete.ts)_
750
750
 
751
751
  ## `qfg flag info [NAME]`
752
752
 
@@ -950,7 +950,7 @@ EXAMPLES
950
950
  $ qfg generate --targets node-ts -o ./dist # combine with targets
951
951
  ```
952
952
 
953
- _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/generate.ts)_
953
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/generate.ts)_
954
954
 
955
955
  ## `qfg generate-new-hex-key`
956
956
 
@@ -973,7 +973,7 @@ EXAMPLES
973
973
  $ qfg generate-new-hex-key
974
974
  ```
975
975
 
976
- _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/generate-new-hex-key.ts)_
976
+ _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/generate-new-hex-key.ts)_
977
977
 
978
978
  ## `qfg get [NAME]`
979
979
 
@@ -1005,7 +1005,7 @@ EXAMPLES
1005
1005
  $ qfg get my.config.name --environment=production
1006
1006
  ```
1007
1007
 
1008
- _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/get.ts)_
1008
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/get.ts)_
1009
1009
 
1010
1010
  ## `qfg history NAME`
1011
1011
 
@@ -1031,7 +1031,7 @@ EXAMPLES
1031
1031
  $ qfg history my.flag
1032
1032
  ```
1033
1033
 
1034
- _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/history.ts)_
1034
+ _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/history.ts)_
1035
1035
 
1036
1036
  ## `qfg info [NAME]`
1037
1037
 
@@ -1079,7 +1079,7 @@ EXAMPLES
1079
1079
  $ qfg info my.config.name --exclude-evaluations # skip 24h stats
1080
1080
  ```
1081
1081
 
1082
- _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/info.ts)_
1082
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/info.ts)_
1083
1083
 
1084
1084
  ## `qfg init [DIRECTORY]`
1085
1085
 
@@ -1119,7 +1119,7 @@ EXAMPLES
1119
1119
  $ qfg init --dry-run
1120
1120
  ```
1121
1121
 
1122
- _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/init.ts)_
1122
+ _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/init.ts)_
1123
1123
 
1124
1124
  ## `qfg interactive`
1125
1125
 
@@ -1149,7 +1149,7 @@ EXAMPLES
1149
1149
  $ qfg
1150
1150
  ```
1151
1151
 
1152
- _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/interactive.ts)_
1152
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/interactive.ts)_
1153
1153
 
1154
1154
  ## `qfg list`
1155
1155
 
@@ -1189,7 +1189,7 @@ EXAMPLES
1189
1189
  $ qfg list --feature-flags
1190
1190
  ```
1191
1191
 
1192
- _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/list.ts)_
1192
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/list.ts)_
1193
1193
 
1194
1194
  ## `qfg log`
1195
1195
 
@@ -1214,7 +1214,7 @@ EXAMPLES
1214
1214
  $ qfg log --limit 5
1215
1215
  ```
1216
1216
 
1217
- _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/log.ts)_
1217
+ _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/log.ts)_
1218
1218
 
1219
1219
  ## `qfg log-level NAME`
1220
1220
 
@@ -1279,7 +1279,7 @@ EXAMPLES
1279
1279
  $ qfg log-level log-level.my-app --target=Chatty --value=INFO --environment=production
1280
1280
  ```
1281
1281
 
1282
- _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/log-level.ts)_
1282
+ _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/log-level.ts)_
1283
1283
 
1284
1284
  ## `qfg login`
1285
1285
 
@@ -1304,7 +1304,7 @@ EXAMPLES
1304
1304
  $ qfg login --profile myprofile
1305
1305
  ```
1306
1306
 
1307
- _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/login.ts)_
1307
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/login.ts)_
1308
1308
 
1309
1309
  ## `qfg logout`
1310
1310
 
@@ -1327,7 +1327,7 @@ EXAMPLES
1327
1327
  $ qfg logout
1328
1328
  ```
1329
1329
 
1330
- _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/logout.ts)_
1330
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/logout.ts)_
1331
1331
 
1332
1332
  ## `qfg migrate`
1333
1333
 
@@ -1390,7 +1390,7 @@ EXAMPLES
1390
1390
  $ qfg migrate --from launch --source-api-key $LAUNCH_API_KEY --dir ./quonfig-repo --staging
1391
1391
  ```
1392
1392
 
1393
- _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/migrate.ts)_
1393
+ _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/migrate.ts)_
1394
1394
 
1395
1395
  ## `qfg migrate doctor`
1396
1396
 
@@ -1428,7 +1428,7 @@ EXAMPLES
1428
1428
  $ qfg migrate doctor --json
1429
1429
  ```
1430
1430
 
1431
- _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/migrate/doctor.ts)_
1431
+ _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/migrate/doctor.ts)_
1432
1432
 
1433
1433
  ## `qfg migrate my-code`
1434
1434
 
@@ -1460,7 +1460,7 @@ EXAMPLES
1460
1460
  $ qfg migrate my-code --dry-run
1461
1461
  ```
1462
1462
 
1463
- _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/migrate/my-code.ts)_
1463
+ _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/migrate/my-code.ts)_
1464
1464
 
1465
1465
  ## `qfg migrate status`
1466
1466
 
@@ -1491,7 +1491,7 @@ EXAMPLES
1491
1491
  $ qfg migrate status --json
1492
1492
  ```
1493
1493
 
1494
- _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/migrate/status.ts)_
1494
+ _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/migrate/status.ts)_
1495
1495
 
1496
1496
  ## `qfg override [NAME] [VALUE]`
1497
1497
 
@@ -1546,7 +1546,7 @@ EXAMPLES
1546
1546
  $ qfg override my.flag true --env=staging
1547
1547
  ```
1548
1548
 
1549
- _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/override.ts)_
1549
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/override.ts)_
1550
1550
 
1551
1551
  ## `qfg pull`
1552
1552
 
@@ -1594,7 +1594,7 @@ EXAMPLES
1594
1594
  $ qfg pull # uses QUONFIG_DIR env var
1595
1595
  ```
1596
1596
 
1597
- _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/pull.ts)_
1597
+ _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/pull.ts)_
1598
1598
 
1599
1599
  ## `qfg push`
1600
1600
 
@@ -1643,7 +1643,7 @@ EXAMPLES
1643
1643
  $ qfg push --dir ./our-config --yes
1644
1644
  ```
1645
1645
 
1646
- _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/push.ts)_
1646
+ _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/push.ts)_
1647
1647
 
1648
1648
  ## `qfg run [COMMAND]`
1649
1649
 
@@ -1694,7 +1694,7 @@ EXAMPLES
1694
1694
  $ qfg run --env DATABASE_URL=db.url --preserve-env --environment=staging -- npm test
1695
1695
  ```
1696
1696
 
1697
- _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/run.ts)_
1697
+ _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/run.ts)_
1698
1698
 
1699
1699
  ## `qfg schema NAME`
1700
1700
 
@@ -1732,7 +1732,7 @@ EXAMPLES
1732
1732
  $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
1733
1733
  ```
1734
1734
 
1735
- _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/schema.ts)_
1735
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/schema.ts)_
1736
1736
 
1737
1737
  ## `qfg sdk-key`
1738
1738
 
@@ -1759,7 +1759,7 @@ EXAMPLES
1759
1759
  $ qfg sdk-key revoke <key-id>
1760
1760
  ```
1761
1761
 
1762
- _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/sdk-key.ts)_
1762
+ _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/sdk-key.ts)_
1763
1763
 
1764
1764
  ## `qfg sdk-key create`
1765
1765
 
@@ -1791,7 +1791,7 @@ EXAMPLES
1791
1791
  $ qfg sdk-key create --environment staging --type browser
1792
1792
  ```
1793
1793
 
1794
- _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/sdk-key/create.ts)_
1794
+ _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/sdk-key/create.ts)_
1795
1795
 
1796
1796
  ## `qfg sdk-key list`
1797
1797
 
@@ -1820,7 +1820,7 @@ EXAMPLES
1820
1820
  $ qfg sdk-key list --environment production
1821
1821
  ```
1822
1822
 
1823
- _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/sdk-key/list.ts)_
1823
+ _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/sdk-key/list.ts)_
1824
1824
 
1825
1825
  ## `qfg sdk-key revoke KEYID`
1826
1826
 
@@ -1847,7 +1847,7 @@ EXAMPLES
1847
1847
  $ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
1848
1848
  ```
1849
1849
 
1850
- _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/sdk-key/revoke.ts)_
1850
+ _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/sdk-key/revoke.ts)_
1851
1851
 
1852
1852
  ## `qfg serve`
1853
1853
 
@@ -1904,7 +1904,7 @@ EXAMPLES
1904
1904
  $ qfg serve --port 6581 --frontend-sdk-key PUBLIC_KEY
1905
1905
  ```
1906
1906
 
1907
- _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/serve.ts)_
1907
+ _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/serve.ts)_
1908
1908
 
1909
1909
  ## `qfg set-default [NAME]`
1910
1910
 
@@ -1975,7 +1975,7 @@ EXAMPLES
1975
1975
  $ qfg pull && qfg config-schema
1976
1976
  ```
1977
1977
 
1978
- _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/set-default.ts)_
1978
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/set-default.ts)_
1979
1979
 
1980
1980
  ## `qfg set-rollout [NAME]`
1981
1981
 
@@ -2052,7 +2052,7 @@ EXAMPLES
2052
2052
  $ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
2053
2053
  ```
2054
2054
 
2055
- _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/set-rollout.ts)_
2055
+ _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/set-rollout.ts)_
2056
2056
 
2057
2057
  ## `qfg sync`
2058
2058
 
@@ -2084,7 +2084,7 @@ EXAMPLES
2084
2084
  $ qfg sync --watch --dir ./our-config --interval 30
2085
2085
  ```
2086
2086
 
2087
- _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/sync.ts)_
2087
+ _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/sync.ts)_
2088
2088
 
2089
2089
  ## `qfg toggle [NAME]`
2090
2090
 
@@ -2186,7 +2186,7 @@ EXAMPLES
2186
2186
  $ qfg verify --json
2187
2187
  ```
2188
2188
 
2189
- _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/verify.ts)_
2189
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/verify.ts)_
2190
2190
 
2191
2191
  ## `qfg whoami`
2192
2192
 
@@ -2209,7 +2209,7 @@ EXAMPLES
2209
2209
  $ qfg whoami
2210
2210
  ```
2211
2211
 
2212
- _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/whoami.ts)_
2212
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/whoami.ts)_
2213
2213
 
2214
2214
  ## `qfg workspace`
2215
2215
 
@@ -2232,7 +2232,7 @@ EXAMPLES
2232
2232
  $ qfg workspace
2233
2233
  ```
2234
2234
 
2235
- _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/workspace.ts)_
2235
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/workspace.ts)_
2236
2236
 
2237
2237
  ## `qfg workspace bootstrap`
2238
2238
 
@@ -2265,7 +2265,7 @@ EXAMPLES
2265
2265
  $ qfg workspace bootstrap --dir ./our-config --skip-validate
2266
2266
  ```
2267
2267
 
2268
- _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/workspace/bootstrap.ts)_
2268
+ _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/workspace/bootstrap.ts)_
2269
2269
 
2270
2270
  ## `qfg workspace create SLUG`
2271
2271
 
@@ -2299,7 +2299,7 @@ EXAMPLES
2299
2299
  $ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
2300
2300
  ```
2301
2301
 
2302
- _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/workspace/create.ts)_
2302
+ _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/workspace/create.ts)_
2303
2303
 
2304
2304
  ## `qfg workspace switch [SLUG]`
2305
2305
 
@@ -2327,7 +2327,7 @@ EXAMPLES
2327
2327
  $ qfg workspace switch acme/production
2328
2328
  ```
2329
2329
 
2330
- _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.59/src/commands/workspace/switch.ts)_
2330
+ _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.60/src/commands/workspace/switch.ts)_
2331
2331
  <!-- commandsstop -->
2332
2332
 
2333
2333
  ## Local Development
@@ -39,7 +39,7 @@ const getClient = async (command, sdkKey, profile) => {
39
39
  }
40
40
  const workspaceOverride = profile ?? process.env.QUONFIG_WORKSPACE;
41
41
  if (!workspaceOverride) {
42
- command.error('QUONFIG_API_KEY is set but QUONFIG_WORKSPACE is not. Set QUONFIG_WORKSPACE=<workspace-slug> (UUIDs also work).', { exit: 1 });
42
+ command.error('QUONFIG_API_KEY is set but QUONFIG_WORKSPACE is not. Set QUONFIG_WORKSPACE=<org>/<workspace> (e.g. acme/foo). (UUIDs also work.)', { exit: 1 });
43
43
  }
44
44
  const uuidPattern = /^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$/i;
45
45
  if (uuidPattern.test(workspaceOverride)) {
@@ -47,6 +47,13 @@ const getClient = async (command, sdkKey, profile) => {
47
47
  command.verboseLog('ApiKey auth', { source: 'uuid', workspaceId });
48
48
  }
49
49
  else {
50
+ // QUONFIG_WORKSPACE must be org-qualified, the same single form used by
51
+ // quonfig.json, the interactive shell, and error messages (qfg-dl87).
52
+ // Bare slugs are rejected so there is no per-surface special case.
53
+ const pin = tryParseWorkspacePin(workspaceOverride);
54
+ if (!pin) {
55
+ command.error(BARE_SLUG_ENV_MIGRATION_MESSAGE, { exit: 1 });
56
+ }
50
57
  let res;
51
58
  try {
52
59
  res = await fetch(`${getApiUrl()}/api/v1/userWorkspaces/list`, {
@@ -56,20 +63,24 @@ const getClient = async (command, sdkKey, profile) => {
56
63
  });
57
64
  }
58
65
  catch (error) {
59
- command.error(`Failed to resolve workspace slug "${workspaceOverride}": ${error instanceof Error ? error.message : String(error)}`, { exit: 1 });
66
+ command.error(`Failed to resolve workspace "${workspaceOverride}": ${error instanceof Error ? error.message : String(error)}`, { exit: 1 });
60
67
  }
61
68
  if (!res.ok) {
62
- command.error(`Failed to resolve workspace slug "${workspaceOverride}" (HTTP ${res.status}). Check that QUONFIG_API_KEY is valid.`, { exit: 1 });
69
+ command.error(`Failed to resolve workspace "${workspaceOverride}" (HTTP ${res.status}). Check that QUONFIG_API_KEY is valid.`, { exit: 1 });
63
70
  }
64
71
  const body = (await res.json());
65
72
  const entries = body.json ?? body ?? [];
66
- const match = entries.find((w) => w.workspaceSlug === workspaceOverride);
73
+ // Match on the org-qualified pin so a slug shared across orgs resolves
74
+ // to the right workspace.
75
+ const match = entries.find((w) => w.organizationSlug === pin.orgSlug && w.workspaceSlug === pin.workspaceSlug);
67
76
  if (!match) {
68
- const available = entries.map((w) => w.workspaceSlug).join(', ') || '(none)';
69
- command.error(`No workspace with slug "${workspaceOverride}" is accessible with this API key. Available: ${available}.`, { exit: 1 });
77
+ const available = entries
78
+ .map((w) => (w.organizationSlug ? `${w.organizationSlug}/${w.workspaceSlug}` : w.workspaceSlug))
79
+ .join(', ') || '(none)';
80
+ command.error(`No workspace matching "${workspaceOverride}" is accessible with this API key. Available: ${available}.`, { exit: 1 });
70
81
  }
71
82
  workspaceId = match.workspaceId;
72
- command.verboseLog('ApiKey auth', { source: 'slug', slug: workspaceOverride, workspaceId });
83
+ command.verboseLog('ApiKey auth', { source: 'org/ws', pin, workspaceId });
73
84
  }
74
85
  }
75
86
  else {
@@ -22,13 +22,20 @@ export async function resolveWorkspaceUuid(command, flagOverride) {
22
22
  const apiKey = process.env.QUONFIG_API_KEY;
23
23
  if (apiKey && apiKey.length > 0) {
24
24
  if (!override) {
25
- command.error('QUONFIG_API_KEY is set but QUONFIG_WORKSPACE is not. Set QUONFIG_WORKSPACE=<workspace-slug> or pass --workspace=<slug>. (UUIDs also work.)', { exit: 1 });
25
+ command.error('QUONFIG_API_KEY is set but QUONFIG_WORKSPACE is not. Set QUONFIG_WORKSPACE=<org>/<workspace> (e.g. acme/foo) or pass --workspace=<org>/<workspace>. (UUIDs also work.)', { exit: 1 });
26
26
  }
27
27
  if (UUID_PATTERN.test(override)) {
28
28
  command.verboseLog('ApiKey auth', { source: 'uuid', workspaceId: override });
29
29
  return { workspaceId: override, orgSlug: '' };
30
30
  }
31
- // Slug — resolve via the server since there's no local auth config in CI mode.
31
+ // QUONFIG_WORKSPACE must be org-qualified, the same single form used by
32
+ // quonfig.json, the interactive shell, and every error message (qfg-dl87).
33
+ // Bare slugs are rejected here too so there is no per-surface special case.
34
+ const pin = tryParseWorkspacePin(override);
35
+ if (!pin) {
36
+ command.error(BARE_SLUG_ENV_MIGRATION_MESSAGE, { exit: 1 });
37
+ }
38
+ // Resolve via the server since there's no local auth config in CI mode.
32
39
  // API-key path short-circuits before consulting the orgId.
33
40
  const jwt = await getValidAccessToken('', command.verboseLog);
34
41
  let res;
@@ -40,21 +47,25 @@ export async function resolveWorkspaceUuid(command, flagOverride) {
40
47
  });
41
48
  }
42
49
  catch (error) {
43
- command.error(`Failed to resolve workspace slug "${override}": ${error instanceof Error ? error.message : String(error)}`, { exit: 1 });
50
+ command.error(`Failed to resolve workspace "${override}": ${error instanceof Error ? error.message : String(error)}`, { exit: 1 });
44
51
  }
45
52
  if (!res.ok) {
46
- command.error(`Failed to resolve workspace slug "${override}" (HTTP ${res.status}). Check that QUONFIG_API_KEY is valid.`, { exit: 1 });
53
+ command.error(`Failed to resolve workspace "${override}" (HTTP ${res.status}). Check that QUONFIG_API_KEY is valid.`, { exit: 1 });
47
54
  }
48
55
  const body = (await res.json());
49
56
  const entries = body.json ?? body ?? [];
50
- const match = entries.find((w) => w.workspaceSlug === override);
57
+ // Match on the org-qualified pin so a slug shared across orgs resolves
58
+ // to the right workspace.
59
+ const match = entries.find((w) => w.organizationSlug === pin.orgSlug && w.workspaceSlug === pin.workspaceSlug);
51
60
  if (!match) {
52
- const available = entries.map((w) => w.workspaceSlug).join(', ') || '(none)';
53
- command.error(`No workspace with slug "${override}" is accessible with this API key. Available: ${available}.`, {
61
+ const available = entries
62
+ .map((w) => (w.organizationSlug ? `${w.organizationSlug}/${w.workspaceSlug}` : w.workspaceSlug))
63
+ .join(', ') || '(none)';
64
+ command.error(`No workspace matching "${override}" is accessible with this API key. Available: ${available}.`, {
54
65
  exit: 1,
55
66
  });
56
67
  }
57
- command.verboseLog('ApiKey auth', { source: 'slug', slug: override, workspaceId: match.workspaceId });
68
+ command.verboseLog('ApiKey auth', { source: 'org/ws', pin, workspaceId: match.workspaceId });
58
69
  return { workspaceId: match.workspaceId, orgSlug: '' };
59
70
  }
60
71
  // OAuth path with an explicit override → must be in org/ws form.
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "0.0.59";
1
+ declare const _default: "0.0.60";
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.59';
2
+ export default '0.0.60';
@@ -3417,15 +3417,13 @@
3417
3417
  "verify.js"
3418
3418
  ]
3419
3419
  },
3420
- "migrate:doctor": {
3420
+ "sdk-key:create": {
3421
3421
  "aliases": [],
3422
3422
  "args": {},
3423
- "description": "Preflight health checks for `qfg migrate`. Verifies auth, workspace provisioning, working tree, and identifier collisions.",
3423
+ "description": "Create a new SDK key",
3424
3424
  "examples": [
3425
- "<%= config.bin %> <%= command.id %>",
3426
- "<%= config.bin %> <%= command.id %> --from launch --api-key $LAUNCH_API_KEY",
3427
- "<%= config.bin %> <%= command.id %> --dir ./my-workspace --language node",
3428
- "<%= config.bin %> <%= command.id %> --json"
3425
+ "<%= config.bin %> <%= command.id %> --environment production --type server",
3426
+ "<%= config.bin %> <%= command.id %> --environment staging --type browser"
3429
3427
  ],
3430
3428
  "flags": {
3431
3429
  "json": {
@@ -3457,45 +3455,53 @@
3457
3455
  "allowNo": false,
3458
3456
  "type": "boolean"
3459
3457
  },
3460
- "api-key": {
3461
- "description": "Legacy SDK API key to validate against the source",
3462
- "name": "api-key",
3458
+ "workspace": {
3459
+ "char": "w",
3460
+ "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3461
+ "helpGroup": "GLOBAL",
3462
+ "name": "workspace",
3463
3463
  "required": false,
3464
3464
  "hasDynamicHelp": false,
3465
3465
  "multiple": false,
3466
3466
  "type": "option"
3467
3467
  },
3468
- "dir": {
3469
- "description": "Workspace directory to check (git clean / identifier map)",
3470
- "name": "dir",
3471
- "default": ".",
3468
+ "profile": {
3469
+ "char": "p",
3470
+ "description": "Deprecated: use --workspace instead",
3471
+ "helpGroup": "GLOBAL",
3472
+ "hidden": true,
3473
+ "name": "profile",
3474
+ "required": false,
3472
3475
  "hasDynamicHelp": false,
3473
3476
  "multiple": false,
3474
3477
  "type": "option"
3475
3478
  },
3476
- "from": {
3477
- "description": "Legacy SDK to migrate from",
3478
- "name": "from",
3479
- "default": "launch",
3479
+ "environment": {
3480
+ "char": "e",
3481
+ "description": "Environment name (e.g. production, staging)",
3482
+ "name": "environment",
3483
+ "required": false,
3480
3484
  "hasDynamicHelp": false,
3481
3485
  "multiple": false,
3482
- "options": [
3483
- "launch"
3484
- ],
3485
3486
  "type": "option"
3486
3487
  },
3487
- "language": {
3488
- "description": "Customer SDK language — used to warn when datadir mode is unavailable (e.g. javascript-browser)",
3489
- "name": "language",
3488
+ "type": {
3489
+ "char": "t",
3490
+ "description": "Key type: server (backend) or browser (frontend)",
3491
+ "name": "type",
3490
3492
  "required": false,
3491
3493
  "hasDynamicHelp": false,
3492
3494
  "multiple": false,
3495
+ "options": [
3496
+ "server",
3497
+ "browser"
3498
+ ],
3493
3499
  "type": "option"
3494
3500
  }
3495
3501
  },
3496
3502
  "hasDynamicHelp": false,
3497
3503
  "hiddenAliases": [],
3498
- "id": "migrate:doctor",
3504
+ "id": "sdk-key:create",
3499
3505
  "pluginAlias": "@quonfig/cli",
3500
3506
  "pluginName": "@quonfig/cli",
3501
3507
  "pluginType": "core",
@@ -3505,18 +3511,17 @@
3505
3511
  "relativePath": [
3506
3512
  "dist",
3507
3513
  "commands",
3508
- "migrate",
3509
- "doctor.js"
3514
+ "sdk-key",
3515
+ "create.js"
3510
3516
  ]
3511
3517
  },
3512
- "migrate:my-code": {
3518
+ "sdk-key:list": {
3513
3519
  "aliases": [],
3514
3520
  "args": {},
3515
- "description": "Migrate Launch SDK call sites in your codebase to Quonfig SDK call sites (invokes the qfg-migrate-code Claude skill)",
3521
+ "description": "List SDK keys for your workspace",
3516
3522
  "examples": [
3517
3523
  "<%= config.bin %> <%= command.id %>",
3518
- "<%= config.bin %> <%= command.id %> --from launch",
3519
- "<%= config.bin %> <%= command.id %> --dry-run"
3524
+ "<%= config.bin %> <%= command.id %> --environment production"
3520
3525
  ],
3521
3526
  "flags": {
3522
3527
  "json": {
@@ -3548,27 +3553,40 @@
3548
3553
  "allowNo": false,
3549
3554
  "type": "boolean"
3550
3555
  },
3551
- "dry-run": {
3552
- "description": "Show what would be migrated without editing any files",
3553
- "name": "dry-run",
3554
- "allowNo": false,
3555
- "type": "boolean"
3556
+ "workspace": {
3557
+ "char": "w",
3558
+ "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3559
+ "helpGroup": "GLOBAL",
3560
+ "name": "workspace",
3561
+ "required": false,
3562
+ "hasDynamicHelp": false,
3563
+ "multiple": false,
3564
+ "type": "option"
3556
3565
  },
3557
- "from": {
3558
- "description": "Legacy SDK to migrate from",
3559
- "name": "from",
3560
- "default": "launch",
3566
+ "profile": {
3567
+ "char": "p",
3568
+ "description": "Deprecated: use --workspace instead",
3569
+ "helpGroup": "GLOBAL",
3570
+ "hidden": true,
3571
+ "name": "profile",
3572
+ "required": false,
3573
+ "hasDynamicHelp": false,
3574
+ "multiple": false,
3575
+ "type": "option"
3576
+ },
3577
+ "environment": {
3578
+ "char": "e",
3579
+ "description": "Filter by environment name",
3580
+ "name": "environment",
3581
+ "required": false,
3561
3582
  "hasDynamicHelp": false,
3562
3583
  "multiple": false,
3563
- "options": [
3564
- "launch"
3565
- ],
3566
3584
  "type": "option"
3567
3585
  }
3568
3586
  },
3569
3587
  "hasDynamicHelp": false,
3570
3588
  "hiddenAliases": [],
3571
- "id": "migrate:my-code",
3589
+ "id": "sdk-key:list",
3572
3590
  "pluginAlias": "@quonfig/cli",
3573
3591
  "pluginName": "@quonfig/cli",
3574
3592
  "pluginType": "core",
@@ -3578,18 +3596,22 @@
3578
3596
  "relativePath": [
3579
3597
  "dist",
3580
3598
  "commands",
3581
- "migrate",
3582
- "my-code.js"
3599
+ "sdk-key",
3600
+ "list.js"
3583
3601
  ]
3584
3602
  },
3585
- "migrate:status": {
3603
+ "sdk-key:revoke": {
3586
3604
  "aliases": [],
3587
- "args": {},
3588
- "description": "Show the status of a workspace migrated with `qfg migrate`. Reads .qf/import-state.json and summarizes source, counts, and next steps.",
3605
+ "args": {
3606
+ "keyId": {
3607
+ "description": "ID of the SDK key to revoke",
3608
+ "name": "keyId",
3609
+ "required": true
3610
+ }
3611
+ },
3612
+ "description": "Revoke an SDK key by its ID",
3589
3613
  "examples": [
3590
- "<%= config.bin %> <%= command.id %>",
3591
- "<%= config.bin %> <%= command.id %> --dir ./my-workspace",
3592
- "<%= config.bin %> <%= command.id %> --json"
3614
+ "<%= config.bin %> <%= command.id %> a1b2c3d4-e5f6-7890-abcd-ef1234567890"
3593
3615
  ],
3594
3616
  "flags": {
3595
3617
  "json": {
@@ -3621,10 +3643,23 @@
3621
3643
  "allowNo": false,
3622
3644
  "type": "boolean"
3623
3645
  },
3624
- "dir": {
3625
- "description": "Workspace directory to inspect",
3626
- "name": "dir",
3627
- "default": ".",
3646
+ "workspace": {
3647
+ "char": "w",
3648
+ "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3649
+ "helpGroup": "GLOBAL",
3650
+ "name": "workspace",
3651
+ "required": false,
3652
+ "hasDynamicHelp": false,
3653
+ "multiple": false,
3654
+ "type": "option"
3655
+ },
3656
+ "profile": {
3657
+ "char": "p",
3658
+ "description": "Deprecated: use --workspace instead",
3659
+ "helpGroup": "GLOBAL",
3660
+ "hidden": true,
3661
+ "name": "profile",
3662
+ "required": false,
3628
3663
  "hasDynamicHelp": false,
3629
3664
  "multiple": false,
3630
3665
  "type": "option"
@@ -3632,7 +3667,7 @@
3632
3667
  },
3633
3668
  "hasDynamicHelp": false,
3634
3669
  "hiddenAliases": [],
3635
- "id": "migrate:status",
3670
+ "id": "sdk-key:revoke",
3636
3671
  "pluginAlias": "@quonfig/cli",
3637
3672
  "pluginName": "@quonfig/cli",
3638
3673
  "pluginType": "core",
@@ -3642,18 +3677,19 @@
3642
3677
  "relativePath": [
3643
3678
  "dist",
3644
3679
  "commands",
3645
- "migrate",
3646
- "status.js"
3680
+ "sdk-key",
3681
+ "revoke.js"
3647
3682
  ]
3648
3683
  },
3649
- "workspace:bootstrap": {
3684
+ "migrate:doctor": {
3650
3685
  "aliases": [],
3651
3686
  "args": {},
3652
- "description": "Push a local git repo to Gitea as this workspace's config repository",
3687
+ "description": "Preflight health checks for `qfg migrate`. Verifies auth, workspace provisioning, working tree, and identifier collisions.",
3653
3688
  "examples": [
3654
- "<%= config.bin %> workspace bootstrap --dir ./our-config",
3655
- "<%= config.bin %> workspace bootstrap --dir ./launch-migrator/output",
3656
- "<%= config.bin %> workspace bootstrap --dir ./our-config --skip-validate"
3689
+ "<%= config.bin %> <%= command.id %>",
3690
+ "<%= config.bin %> <%= command.id %> --from launch --api-key $LAUNCH_API_KEY",
3691
+ "<%= config.bin %> <%= command.id %> --dir ./my-workspace --language node",
3692
+ "<%= config.bin %> <%= command.id %> --json"
3657
3693
  ],
3658
3694
  "flags": {
3659
3695
  "json": {
@@ -3685,30 +3721,45 @@
3685
3721
  "allowNo": false,
3686
3722
  "type": "boolean"
3687
3723
  },
3724
+ "api-key": {
3725
+ "description": "Legacy SDK API key to validate against the source",
3726
+ "name": "api-key",
3727
+ "required": false,
3728
+ "hasDynamicHelp": false,
3729
+ "multiple": false,
3730
+ "type": "option"
3731
+ },
3688
3732
  "dir": {
3689
- "description": "Local directory to push (defaults to current directory)",
3733
+ "description": "Workspace directory to check (git clean / identifier map)",
3690
3734
  "name": "dir",
3691
- "required": false,
3735
+ "default": ".",
3692
3736
  "hasDynamicHelp": false,
3693
3737
  "multiple": false,
3694
3738
  "type": "option"
3695
3739
  },
3696
- "force": {
3697
- "description": "Force push even if remote already has commits",
3698
- "name": "force",
3699
- "allowNo": false,
3700
- "type": "boolean"
3740
+ "from": {
3741
+ "description": "Legacy SDK to migrate from",
3742
+ "name": "from",
3743
+ "default": "launch",
3744
+ "hasDynamicHelp": false,
3745
+ "multiple": false,
3746
+ "options": [
3747
+ "launch"
3748
+ ],
3749
+ "type": "option"
3701
3750
  },
3702
- "skip-validate": {
3703
- "description": "Skip config validation before pushing",
3704
- "name": "skip-validate",
3705
- "allowNo": false,
3706
- "type": "boolean"
3751
+ "language": {
3752
+ "description": "Customer SDK language — used to warn when datadir mode is unavailable (e.g. javascript-browser)",
3753
+ "name": "language",
3754
+ "required": false,
3755
+ "hasDynamicHelp": false,
3756
+ "multiple": false,
3757
+ "type": "option"
3707
3758
  }
3708
3759
  },
3709
3760
  "hasDynamicHelp": false,
3710
3761
  "hiddenAliases": [],
3711
- "id": "workspace:bootstrap",
3762
+ "id": "migrate:doctor",
3712
3763
  "pluginAlias": "@quonfig/cli",
3713
3764
  "pluginName": "@quonfig/cli",
3714
3765
  "pluginType": "core",
@@ -3718,24 +3769,18 @@
3718
3769
  "relativePath": [
3719
3770
  "dist",
3720
3771
  "commands",
3721
- "workspace",
3722
- "bootstrap.js"
3772
+ "migrate",
3773
+ "doctor.js"
3723
3774
  ]
3724
3775
  },
3725
- "workspace:create": {
3776
+ "migrate:my-code": {
3726
3777
  "aliases": [],
3727
- "args": {
3728
- "slug": {
3729
- "description": "Workspace slug (lowercase letters, numbers, hyphens)",
3730
- "name": "slug",
3731
- "required": true
3732
- }
3733
- },
3734
- "description": "Create a new workspace. Provisions the Gitea repo and default environments, identical to the app's New Workspace UI.",
3778
+ "args": {},
3779
+ "description": "Migrate Launch SDK call sites in your codebase to Quonfig SDK call sites (invokes the qfg-migrate-code Claude skill)",
3735
3780
  "examples": [
3736
- "<%= config.bin %> <%= command.id %> my-team",
3737
- "<%= config.bin %> <%= command.id %> lt-21-smoke --name \"Load Test 21\"",
3738
- "<%= config.bin %> <%= command.id %> my-team --org 11111111-1111-1111-1111-111111111111"
3781
+ "<%= config.bin %> <%= command.id %>",
3782
+ "<%= config.bin %> <%= command.id %> --from launch",
3783
+ "<%= config.bin %> <%= command.id %> --dry-run"
3739
3784
  ],
3740
3785
  "flags": {
3741
3786
  "json": {
@@ -3767,26 +3812,27 @@
3767
3812
  "allowNo": false,
3768
3813
  "type": "boolean"
3769
3814
  },
3770
- "name": {
3771
- "description": "Human-readable display name (defaults to the slug)",
3772
- "name": "name",
3773
- "required": false,
3774
- "hasDynamicHelp": false,
3775
- "multiple": false,
3776
- "type": "option"
3815
+ "dry-run": {
3816
+ "description": "Show what would be migrated without editing any files",
3817
+ "name": "dry-run",
3818
+ "allowNo": false,
3819
+ "type": "boolean"
3777
3820
  },
3778
- "org": {
3779
- "description": "Organization UUID or slug. Required when you belong to more than one organization; inferred otherwise.",
3780
- "name": "org",
3781
- "required": false,
3821
+ "from": {
3822
+ "description": "Legacy SDK to migrate from",
3823
+ "name": "from",
3824
+ "default": "launch",
3782
3825
  "hasDynamicHelp": false,
3783
3826
  "multiple": false,
3827
+ "options": [
3828
+ "launch"
3829
+ ],
3784
3830
  "type": "option"
3785
3831
  }
3786
3832
  },
3787
3833
  "hasDynamicHelp": false,
3788
3834
  "hiddenAliases": [],
3789
- "id": "workspace:create",
3835
+ "id": "migrate:my-code",
3790
3836
  "pluginAlias": "@quonfig/cli",
3791
3837
  "pluginName": "@quonfig/cli",
3792
3838
  "pluginType": "core",
@@ -3796,23 +3842,18 @@
3796
3842
  "relativePath": [
3797
3843
  "dist",
3798
3844
  "commands",
3799
- "workspace",
3800
- "create.js"
3845
+ "migrate",
3846
+ "my-code.js"
3801
3847
  ]
3802
3848
  },
3803
- "workspace:switch": {
3849
+ "migrate:status": {
3804
3850
  "aliases": [],
3805
- "args": {
3806
- "slug": {
3807
- "description": "Workspace pin in `<org-slug>/<workspace-slug>` form. Omit for an interactive picker.",
3808
- "name": "slug",
3809
- "required": false
3810
- }
3811
- },
3812
- "description": "Switch the saved default profile to a different (org, workspace) pair",
3851
+ "args": {},
3852
+ "description": "Show the status of a workspace migrated with `qfg migrate`. Reads .qf/import-state.json and summarizes source, counts, and next steps.",
3813
3853
  "examples": [
3814
3854
  "<%= config.bin %> <%= command.id %>",
3815
- "<%= config.bin %> <%= command.id %> acme/production"
3855
+ "<%= config.bin %> <%= command.id %> --dir ./my-workspace",
3856
+ "<%= config.bin %> <%= command.id %> --json"
3816
3857
  ],
3817
3858
  "flags": {
3818
3859
  "json": {
@@ -3843,11 +3884,19 @@
3843
3884
  "name": "verbose",
3844
3885
  "allowNo": false,
3845
3886
  "type": "boolean"
3887
+ },
3888
+ "dir": {
3889
+ "description": "Workspace directory to inspect",
3890
+ "name": "dir",
3891
+ "default": ".",
3892
+ "hasDynamicHelp": false,
3893
+ "multiple": false,
3894
+ "type": "option"
3846
3895
  }
3847
3896
  },
3848
3897
  "hasDynamicHelp": false,
3849
3898
  "hiddenAliases": [],
3850
- "id": "workspace:switch",
3899
+ "id": "migrate:status",
3851
3900
  "pluginAlias": "@quonfig/cli",
3852
3901
  "pluginName": "@quonfig/cli",
3853
3902
  "pluginType": "core",
@@ -3857,17 +3906,18 @@
3857
3906
  "relativePath": [
3858
3907
  "dist",
3859
3908
  "commands",
3860
- "workspace",
3861
- "switch.js"
3909
+ "migrate",
3910
+ "status.js"
3862
3911
  ]
3863
3912
  },
3864
- "sdk-key:create": {
3913
+ "workspace:bootstrap": {
3865
3914
  "aliases": [],
3866
3915
  "args": {},
3867
- "description": "Create a new SDK key",
3916
+ "description": "Push a local git repo to Gitea as this workspace's config repository",
3868
3917
  "examples": [
3869
- "<%= config.bin %> <%= command.id %> --environment production --type server",
3870
- "<%= config.bin %> <%= command.id %> --environment staging --type browser"
3918
+ "<%= config.bin %> workspace bootstrap --dir ./our-config",
3919
+ "<%= config.bin %> workspace bootstrap --dir ./launch-migrator/output",
3920
+ "<%= config.bin %> workspace bootstrap --dir ./our-config --skip-validate"
3871
3921
  ],
3872
3922
  "flags": {
3873
3923
  "json": {
@@ -3899,53 +3949,30 @@
3899
3949
  "allowNo": false,
3900
3950
  "type": "boolean"
3901
3951
  },
3902
- "workspace": {
3903
- "char": "w",
3904
- "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
3905
- "helpGroup": "GLOBAL",
3906
- "name": "workspace",
3907
- "required": false,
3908
- "hasDynamicHelp": false,
3909
- "multiple": false,
3910
- "type": "option"
3911
- },
3912
- "profile": {
3913
- "char": "p",
3914
- "description": "Deprecated: use --workspace instead",
3915
- "helpGroup": "GLOBAL",
3916
- "hidden": true,
3917
- "name": "profile",
3952
+ "dir": {
3953
+ "description": "Local directory to push (defaults to current directory)",
3954
+ "name": "dir",
3918
3955
  "required": false,
3919
3956
  "hasDynamicHelp": false,
3920
3957
  "multiple": false,
3921
3958
  "type": "option"
3922
3959
  },
3923
- "environment": {
3924
- "char": "e",
3925
- "description": "Environment name (e.g. production, staging)",
3926
- "name": "environment",
3927
- "required": false,
3928
- "hasDynamicHelp": false,
3929
- "multiple": false,
3930
- "type": "option"
3960
+ "force": {
3961
+ "description": "Force push even if remote already has commits",
3962
+ "name": "force",
3963
+ "allowNo": false,
3964
+ "type": "boolean"
3931
3965
  },
3932
- "type": {
3933
- "char": "t",
3934
- "description": "Key type: server (backend) or browser (frontend)",
3935
- "name": "type",
3936
- "required": false,
3937
- "hasDynamicHelp": false,
3938
- "multiple": false,
3939
- "options": [
3940
- "server",
3941
- "browser"
3942
- ],
3943
- "type": "option"
3966
+ "skip-validate": {
3967
+ "description": "Skip config validation before pushing",
3968
+ "name": "skip-validate",
3969
+ "allowNo": false,
3970
+ "type": "boolean"
3944
3971
  }
3945
3972
  },
3946
3973
  "hasDynamicHelp": false,
3947
3974
  "hiddenAliases": [],
3948
- "id": "sdk-key:create",
3975
+ "id": "workspace:bootstrap",
3949
3976
  "pluginAlias": "@quonfig/cli",
3950
3977
  "pluginName": "@quonfig/cli",
3951
3978
  "pluginType": "core",
@@ -3955,17 +3982,24 @@
3955
3982
  "relativePath": [
3956
3983
  "dist",
3957
3984
  "commands",
3958
- "sdk-key",
3959
- "create.js"
3985
+ "workspace",
3986
+ "bootstrap.js"
3960
3987
  ]
3961
3988
  },
3962
- "sdk-key:list": {
3989
+ "workspace:create": {
3963
3990
  "aliases": [],
3964
- "args": {},
3965
- "description": "List SDK keys for your workspace",
3991
+ "args": {
3992
+ "slug": {
3993
+ "description": "Workspace slug (lowercase letters, numbers, hyphens)",
3994
+ "name": "slug",
3995
+ "required": true
3996
+ }
3997
+ },
3998
+ "description": "Create a new workspace. Provisions the Gitea repo and default environments, identical to the app's New Workspace UI.",
3966
3999
  "examples": [
3967
- "<%= config.bin %> <%= command.id %>",
3968
- "<%= config.bin %> <%= command.id %> --environment production"
4000
+ "<%= config.bin %> <%= command.id %> my-team",
4001
+ "<%= config.bin %> <%= command.id %> lt-21-smoke --name \"Load Test 21\"",
4002
+ "<%= config.bin %> <%= command.id %> my-team --org 11111111-1111-1111-1111-111111111111"
3969
4003
  ],
3970
4004
  "flags": {
3971
4005
  "json": {
@@ -3997,31 +4031,17 @@
3997
4031
  "allowNo": false,
3998
4032
  "type": "boolean"
3999
4033
  },
4000
- "workspace": {
4001
- "char": "w",
4002
- "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
4003
- "helpGroup": "GLOBAL",
4004
- "name": "workspace",
4005
- "required": false,
4006
- "hasDynamicHelp": false,
4007
- "multiple": false,
4008
- "type": "option"
4009
- },
4010
- "profile": {
4011
- "char": "p",
4012
- "description": "Deprecated: use --workspace instead",
4013
- "helpGroup": "GLOBAL",
4014
- "hidden": true,
4015
- "name": "profile",
4034
+ "name": {
4035
+ "description": "Human-readable display name (defaults to the slug)",
4036
+ "name": "name",
4016
4037
  "required": false,
4017
4038
  "hasDynamicHelp": false,
4018
4039
  "multiple": false,
4019
4040
  "type": "option"
4020
4041
  },
4021
- "environment": {
4022
- "char": "e",
4023
- "description": "Filter by environment name",
4024
- "name": "environment",
4042
+ "org": {
4043
+ "description": "Organization UUID or slug. Required when you belong to more than one organization; inferred otherwise.",
4044
+ "name": "org",
4025
4045
  "required": false,
4026
4046
  "hasDynamicHelp": false,
4027
4047
  "multiple": false,
@@ -4030,7 +4050,7 @@
4030
4050
  },
4031
4051
  "hasDynamicHelp": false,
4032
4052
  "hiddenAliases": [],
4033
- "id": "sdk-key:list",
4053
+ "id": "workspace:create",
4034
4054
  "pluginAlias": "@quonfig/cli",
4035
4055
  "pluginName": "@quonfig/cli",
4036
4056
  "pluginType": "core",
@@ -4040,22 +4060,23 @@
4040
4060
  "relativePath": [
4041
4061
  "dist",
4042
4062
  "commands",
4043
- "sdk-key",
4044
- "list.js"
4063
+ "workspace",
4064
+ "create.js"
4045
4065
  ]
4046
4066
  },
4047
- "sdk-key:revoke": {
4067
+ "workspace:switch": {
4048
4068
  "aliases": [],
4049
4069
  "args": {
4050
- "keyId": {
4051
- "description": "ID of the SDK key to revoke",
4052
- "name": "keyId",
4053
- "required": true
4070
+ "slug": {
4071
+ "description": "Workspace pin in `<org-slug>/<workspace-slug>` form. Omit for an interactive picker.",
4072
+ "name": "slug",
4073
+ "required": false
4054
4074
  }
4055
4075
  },
4056
- "description": "Revoke an SDK key by its ID",
4076
+ "description": "Switch the saved default profile to a different (org, workspace) pair",
4057
4077
  "examples": [
4058
- "<%= config.bin %> <%= command.id %> a1b2c3d4-e5f6-7890-abcd-ef1234567890"
4078
+ "<%= config.bin %> <%= command.id %>",
4079
+ "<%= config.bin %> <%= command.id %> acme/production"
4059
4080
  ],
4060
4081
  "flags": {
4061
4082
  "json": {
@@ -4086,32 +4107,11 @@
4086
4107
  "name": "verbose",
4087
4108
  "allowNo": false,
4088
4109
  "type": "boolean"
4089
- },
4090
- "workspace": {
4091
- "char": "w",
4092
- "description": "Workspace slug to use (overrides QUONFIG_WORKSPACE env var and saved default)",
4093
- "helpGroup": "GLOBAL",
4094
- "name": "workspace",
4095
- "required": false,
4096
- "hasDynamicHelp": false,
4097
- "multiple": false,
4098
- "type": "option"
4099
- },
4100
- "profile": {
4101
- "char": "p",
4102
- "description": "Deprecated: use --workspace instead",
4103
- "helpGroup": "GLOBAL",
4104
- "hidden": true,
4105
- "name": "profile",
4106
- "required": false,
4107
- "hasDynamicHelp": false,
4108
- "multiple": false,
4109
- "type": "option"
4110
4110
  }
4111
4111
  },
4112
4112
  "hasDynamicHelp": false,
4113
4113
  "hiddenAliases": [],
4114
- "id": "sdk-key:revoke",
4114
+ "id": "workspace:switch",
4115
4115
  "pluginAlias": "@quonfig/cli",
4116
4116
  "pluginName": "@quonfig/cli",
4117
4117
  "pluginType": "core",
@@ -4121,10 +4121,10 @@
4121
4121
  "relativePath": [
4122
4122
  "dist",
4123
4123
  "commands",
4124
- "sdk-key",
4125
- "revoke.js"
4124
+ "workspace",
4125
+ "switch.js"
4126
4126
  ]
4127
4127
  }
4128
4128
  },
4129
- "version": "0.0.59"
4129
+ "version": "0.0.60"
4130
4130
  }
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.59",
4
+ "version": "0.0.60",
5
5
  "bugs": {
6
6
  "url": "https://github.com/quonfig/cli/issues"
7
7
  },