@quonfig/cli 0.0.66 → 0.0.68

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.66 linux-x64 node-v24.4.1
20
+ @quonfig/cli/0.0.68 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.66/src/commands/activity.ts)_
204
+ _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/activity/deleted.ts)_
233
+ _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/activity/feed.ts)_
268
+ _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/activity/history.ts)_
302
+ _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/activity/restore.ts)_
341
+ _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/audit-log.ts)_
369
+ _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/cleanup.ts)_
410
+ _See code: [src/commands/cleanup.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/cleanup/list.ts)_
456
+ _See code: [src/commands/cleanup/list.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/cleanup/remove.ts)_
501
+ _See code: [src/commands/cleanup/remove.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/cleanup/status.ts)_
541
+ _See code: [src/commands/cleanup/status.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/cleanup/verify.ts)_
587
+ _See code: [src/commands/cleanup/verify.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/config-schema.ts)_
616
+ _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/create.ts)_
703
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/delete.ts)_
749
+ _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/generate.ts)_
953
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/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.68/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.66/src/commands/get.ts)_
1008
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/history.ts)_
1034
+ _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/info.ts)_
1082
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/info.ts)_
1083
1083
 
1084
1084
  ## `qfg init [DIRECTORY]`
1085
1085
 
@@ -1087,16 +1087,16 @@ Initialize or update a Quonfig workspace
1087
1087
 
1088
1088
  ```
1089
1089
  USAGE
1090
- $ qfg init [DIRECTORY] [--json] [--interactive] [--no-color] [--verbose] [--dry-run] [--samples]
1091
- [--workspace <value>]
1090
+ $ qfg init [DIRECTORY] [--json] [--interactive] [--no-color] [--verbose] [--dry-run] [--samples] [-w
1091
+ <value>]
1092
1092
 
1093
1093
  ARGUMENTS
1094
1094
  DIRECTORY [default: .] Target directory (default: current directory)
1095
1095
 
1096
1096
  FLAGS
1097
- --dry-run Show what would be done without writing anything
1098
- --[no-]samples Include sample configs (default: yes on first init, no on update)
1099
- --workspace=<value> Workspace pin in <org-slug>/<workspace-slug> form (Guard 1). If omitted, no pin is written.
1097
+ -w, --workspace=<value> Workspace pin in <org-slug>/<workspace-slug> form (Guard 1). If omitted, no pin is written.
1098
+ --dry-run Show what would be done without writing anything
1099
+ --[no-]samples Include sample configs (default: yes on first init, no on update)
1100
1100
 
1101
1101
  GLOBAL FLAGS
1102
1102
  --[no-]interactive Force interactive mode
@@ -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.66/src/commands/init.ts)_
1122
+ _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/interactive.ts)_
1152
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/list.ts)_
1192
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/log.ts)_
1217
+ _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/log-level.ts)_
1282
+ _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/login.ts)_
1307
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.68/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.66/src/commands/logout.ts)_
1330
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/logout.ts)_
1331
1331
 
1332
1332
  ## `qfg migrate`
1333
1333
 
@@ -1337,33 +1337,33 @@ Migrate flags and configs from a legacy feature-flag system into a Quonfig works
1337
1337
  USAGE
1338
1338
  $ qfg migrate --from launch|launchdarkly|flagsmith [--json] [--interactive] [--no-color] [--verbose]
1339
1339
  [--api-key <value>] [--dir <value>] [--dry-run] [--full-summary] [--project <value>] [--push] [--recent <value>]
1340
- [--reset] [--since <value>] [--source-api-key <value>] [--staging] [--strict-keys] [--workspace <value>]
1340
+ [--reset] [--since <value>] [--source-api-key <value>] [--staging] [--strict-keys] [-w <value>]
1341
1341
 
1342
1342
  FLAGS
1343
- --api-key=<value> Deprecated alias for --source-api-key, kept for the `launch` source (or set LAUNCH_API_KEY).
1344
- Prefer --source-api-key.
1345
- --dir=<value> Target local workspace directory. Defaults to cwd if it looks like a Quonfig workspace,
1346
- otherwise ./quonfig-repo.
1347
- --dry-run Fetch and summarize changes without writing anything
1348
- --from=<option> (required) Legacy source to migrate from
1349
- <options: launch|launchdarkly|flagsmith>
1350
- --full-summary Reify the full source-side audit log into per-change git commits (author = original user,
1351
- date = original timestamp, message = change summary). Only valid on first-run imports — pass
1352
- --reset to re-import everything from scratch with this flag.
1353
- --project=<value> Source-system project identifier. For --from launchdarkly this is the project KEY (default:
1354
- "default"; env: LAUNCHDARKLY_PROJECT_KEY). For --from flagsmith this is the numeric project
1355
- ID (env: FLAGSMITH_PROJECT_ID). Ignored by --from launch.
1356
- --push After migrating to a local dir, also push to the given --workspace on Quonfig cloud
1357
- --recent=<value> Import only the last N changes (useful for tire-kicking)
1358
- --reset Ignore the delta cursor and re-import everything from scratch
1359
- --since=<value> Override the delta cursor (epoch milliseconds or ISO-8601 timestamp)
1360
- --source-api-key=<value> API key for the legacy source. Set this, QUONFIG_MIGRATE_API_KEY, or the per-provider env
1361
- var (LAUNCHDARKLY_API_KEY, LAUNCH_API_KEY, FLAGSMITH_API_KEY).
1362
- --staging Hit the staging API for the source (dev-only)
1363
- --strict-keys Refuse to migrate if any source key would need rewriting to satisfy Quonfig key rules
1364
- (Policy A), instead of rewriting it. Use when you require byte-identical keys.
1365
- --workspace=<value> Quonfig cloud workspace slug to push to. Requires `qfg login` and is typically combined with
1366
- --push.
1343
+ -w, --workspace=<value> Quonfig cloud workspace slug to push to. Requires `qfg login` and is typically combined
1344
+ with --push.
1345
+ --api-key=<value> Deprecated alias for --source-api-key, kept for the `launch` source (or set
1346
+ LAUNCH_API_KEY). Prefer --source-api-key.
1347
+ --dir=<value> Target local workspace directory. Defaults to cwd if it looks like a Quonfig workspace,
1348
+ otherwise ./quonfig-repo.
1349
+ --dry-run Fetch and summarize changes without writing anything
1350
+ --from=<option> (required) Legacy source to migrate from
1351
+ <options: launch|launchdarkly|flagsmith>
1352
+ --full-summary Reify the full source-side audit log into per-change git commits (author = original
1353
+ user, date = original timestamp, message = change summary). Only valid on first-run
1354
+ imports — pass --reset to re-import everything from scratch with this flag.
1355
+ --project=<value> Source-system project identifier. For --from launchdarkly this is the project KEY
1356
+ (default: "default"; env: LAUNCHDARKLY_PROJECT_KEY). For --from flagsmith this is the
1357
+ numeric project ID (env: FLAGSMITH_PROJECT_ID). Ignored by --from launch.
1358
+ --push After migrating to a local dir, also push to the given --workspace on Quonfig cloud
1359
+ --recent=<value> Import only the last N changes (useful for tire-kicking)
1360
+ --reset Ignore the delta cursor and re-import everything from scratch
1361
+ --since=<value> Override the delta cursor (epoch milliseconds or ISO-8601 timestamp)
1362
+ --source-api-key=<value> API key for the legacy source. Set this, QUONFIG_MIGRATE_API_KEY, or the per-provider
1363
+ env var (LAUNCHDARKLY_API_KEY, LAUNCH_API_KEY, FLAGSMITH_API_KEY).
1364
+ --staging Hit the staging API for the source (dev-only)
1365
+ --strict-keys Refuse to migrate if any source key would need rewriting to satisfy Quonfig key rules
1366
+ (Policy A), instead of rewriting it. Use when you require byte-identical keys.
1367
1367
 
1368
1368
  GLOBAL FLAGS
1369
1369
  --[no-]interactive Force interactive mode
@@ -1392,7 +1392,7 @@ EXAMPLES
1392
1392
  $ qfg migrate --from launch --source-api-key $LAUNCH_API_KEY --dir ./quonfig-repo --staging
1393
1393
  ```
1394
1394
 
1395
- _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/migrate.ts)_
1395
+ _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/migrate.ts)_
1396
1396
 
1397
1397
  ## `qfg migrate doctor`
1398
1398
 
@@ -1430,7 +1430,7 @@ EXAMPLES
1430
1430
  $ qfg migrate doctor --json
1431
1431
  ```
1432
1432
 
1433
- _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/migrate/doctor.ts)_
1433
+ _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/migrate/doctor.ts)_
1434
1434
 
1435
1435
  ## `qfg migrate my-code`
1436
1436
 
@@ -1462,7 +1462,7 @@ EXAMPLES
1462
1462
  $ qfg migrate my-code --dry-run
1463
1463
  ```
1464
1464
 
1465
- _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/migrate/my-code.ts)_
1465
+ _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/migrate/my-code.ts)_
1466
1466
 
1467
1467
  ## `qfg migrate status`
1468
1468
 
@@ -1493,7 +1493,7 @@ EXAMPLES
1493
1493
  $ qfg migrate status --json
1494
1494
  ```
1495
1495
 
1496
- _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/migrate/status.ts)_
1496
+ _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/migrate/status.ts)_
1497
1497
 
1498
1498
  ## `qfg override [NAME] [VALUE]`
1499
1499
 
@@ -1548,7 +1548,7 @@ EXAMPLES
1548
1548
  $ qfg override my.flag true --env=staging
1549
1549
  ```
1550
1550
 
1551
- _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/override.ts)_
1551
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/override.ts)_
1552
1552
 
1553
1553
  ## `qfg pull`
1554
1554
 
@@ -1556,15 +1556,14 @@ Clone or update a local copy of your workspace config files.
1556
1556
 
1557
1557
  ```
1558
1558
  USAGE
1559
- $ qfg pull [--json] [--interactive] [--no-color] [--verbose] [--dir <value>] [--rebase] [--workspace
1560
- <value>]
1559
+ $ qfg pull [--json] [--interactive] [--no-color] [--verbose] [--dir <value>] [--rebase] [-w <value>]
1561
1560
 
1562
1561
  FLAGS
1563
- --dir=<value> Local directory to clone/update (defaults to cwd / nearest ancestor with quonfig.json /
1564
- QUONFIG_DIR env var)
1565
- --rebase Replay local commits on top of origin/main when the two have diverged. Conflicts are surfaced via
1566
- standard git markers; resolve with `git rebase --continue`.
1567
- --workspace=<value> Workspace ID (defaults to active profile)
1562
+ -w, --workspace=<value> Workspace ID (defaults to active profile)
1563
+ --dir=<value> Local directory to clone/update (defaults to cwd / nearest ancestor with quonfig.json /
1564
+ QUONFIG_DIR env var)
1565
+ --rebase Replay local commits on top of origin/main when the two have diverged. Conflicts are surfaced
1566
+ via standard git markers; resolve with `git rebase --continue`.
1568
1567
 
1569
1568
  GLOBAL FLAGS
1570
1569
  --[no-]interactive Force interactive mode
@@ -1596,7 +1595,7 @@ EXAMPLES
1596
1595
  $ qfg pull # uses QUONFIG_DIR env var
1597
1596
  ```
1598
1597
 
1599
- _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/pull.ts)_
1598
+ _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/pull.ts)_
1600
1599
 
1601
1600
  ## `qfg push`
1602
1601
 
@@ -1604,16 +1603,16 @@ Push local config changes up to your workspace on Quonfig cloud.
1604
1603
 
1605
1604
  ```
1606
1605
  USAGE
1607
- $ qfg push [--json] [--interactive] [--no-color] [--verbose] [--dir <value>] [--workspace <value>]
1608
- [--yes] [--skip-validate] [--no-pin-write] [-m <value>]
1606
+ $ qfg push [--json] [--interactive] [--no-color] [--verbose] [--dir <value>] [-w <value>] [--yes]
1607
+ [--skip-validate] [--no-pin-write] [-m <value>]
1609
1608
 
1610
1609
  FLAGS
1611
1610
  -m, --message=<value> Commit message for bare-path pushes (ignored on clone-path; push what is already committed)
1611
+ -w, --workspace=<value> Workspace slug or UUID (defaults to active profile)
1612
1612
  --dir=<value> Local directory to push (defaults to cwd / nearest ancestor with quonfig.json / QUONFIG_DIR
1613
1613
  env var)
1614
1614
  --no-pin-write Do not offer to write workspace slug into quonfig.json on success
1615
1615
  --skip-validate Skip `qfg validate` preflight
1616
- --workspace=<value> Workspace slug or UUID (defaults to active profile)
1617
1616
  --yes Skip the standard Y/N confirm. Never skips typed-slug prompts.
1618
1617
 
1619
1618
  GLOBAL FLAGS
@@ -1645,7 +1644,7 @@ EXAMPLES
1645
1644
  $ qfg push --dir ./our-config --yes
1646
1645
  ```
1647
1646
 
1648
- _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/push.ts)_
1647
+ _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/push.ts)_
1649
1648
 
1650
1649
  ## `qfg run [COMMAND]`
1651
1650
 
@@ -1696,7 +1695,7 @@ EXAMPLES
1696
1695
  $ qfg run --env DATABASE_URL=db.url --preserve-env --environment=staging -- npm test
1697
1696
  ```
1698
1697
 
1699
- _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/run.ts)_
1698
+ _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/run.ts)_
1700
1699
 
1701
1700
  ## `qfg schema NAME`
1702
1701
 
@@ -1734,7 +1733,7 @@ EXAMPLES
1734
1733
  $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
1735
1734
  ```
1736
1735
 
1737
- _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/schema.ts)_
1736
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/schema.ts)_
1738
1737
 
1739
1738
  ## `qfg sdk-key`
1740
1739
 
@@ -1761,7 +1760,7 @@ EXAMPLES
1761
1760
  $ qfg sdk-key revoke <key-id>
1762
1761
  ```
1763
1762
 
1764
- _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/sdk-key.ts)_
1763
+ _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/sdk-key.ts)_
1765
1764
 
1766
1765
  ## `qfg sdk-key create`
1767
1766
 
@@ -1793,7 +1792,7 @@ EXAMPLES
1793
1792
  $ qfg sdk-key create --environment staging --type browser
1794
1793
  ```
1795
1794
 
1796
- _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/sdk-key/create.ts)_
1795
+ _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/sdk-key/create.ts)_
1797
1796
 
1798
1797
  ## `qfg sdk-key list`
1799
1798
 
@@ -1822,7 +1821,7 @@ EXAMPLES
1822
1821
  $ qfg sdk-key list --environment production
1823
1822
  ```
1824
1823
 
1825
- _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/sdk-key/list.ts)_
1824
+ _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/sdk-key/list.ts)_
1826
1825
 
1827
1826
  ## `qfg sdk-key revoke KEYID`
1828
1827
 
@@ -1849,7 +1848,7 @@ EXAMPLES
1849
1848
  $ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
1850
1849
  ```
1851
1850
 
1852
- _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/sdk-key/revoke.ts)_
1851
+ _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/sdk-key/revoke.ts)_
1853
1852
 
1854
1853
  ## `qfg serve`
1855
1854
 
@@ -1906,7 +1905,7 @@ EXAMPLES
1906
1905
  $ qfg serve --port 6581 --frontend-sdk-key PUBLIC_KEY
1907
1906
  ```
1908
1907
 
1909
- _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/serve.ts)_
1908
+ _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/serve.ts)_
1910
1909
 
1911
1910
  ## `qfg set-default [NAME]`
1912
1911
 
@@ -1977,7 +1976,7 @@ EXAMPLES
1977
1976
  $ qfg pull && qfg config-schema
1978
1977
  ```
1979
1978
 
1980
- _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/set-default.ts)_
1979
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/set-default.ts)_
1981
1980
 
1982
1981
  ## `qfg set-rollout [NAME]`
1983
1982
 
@@ -2054,7 +2053,7 @@ EXAMPLES
2054
2053
  $ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
2055
2054
  ```
2056
2055
 
2057
- _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/set-rollout.ts)_
2056
+ _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/set-rollout.ts)_
2058
2057
 
2059
2058
  ## `qfg sync`
2060
2059
 
@@ -2086,7 +2085,7 @@ EXAMPLES
2086
2085
  $ qfg sync --watch --dir ./our-config --interval 30
2087
2086
  ```
2088
2087
 
2089
- _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/sync.ts)_
2088
+ _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/sync.ts)_
2090
2089
 
2091
2090
  ## `qfg toggle [NAME]`
2092
2091
 
@@ -2188,7 +2187,7 @@ EXAMPLES
2188
2187
  $ qfg verify --json
2189
2188
  ```
2190
2189
 
2191
- _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/verify.ts)_
2190
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/verify.ts)_
2192
2191
 
2193
2192
  ## `qfg whoami`
2194
2193
 
@@ -2211,7 +2210,7 @@ EXAMPLES
2211
2210
  $ qfg whoami
2212
2211
  ```
2213
2212
 
2214
- _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/whoami.ts)_
2213
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/whoami.ts)_
2215
2214
 
2216
2215
  ## `qfg workspace`
2217
2216
 
@@ -2234,7 +2233,7 @@ EXAMPLES
2234
2233
  $ qfg workspace
2235
2234
  ```
2236
2235
 
2237
- _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/workspace.ts)_
2236
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/workspace.ts)_
2238
2237
 
2239
2238
  ## `qfg workspace bootstrap`
2240
2239
 
@@ -2267,7 +2266,7 @@ EXAMPLES
2267
2266
  $ qfg workspace bootstrap --dir ./our-config --skip-validate
2268
2267
  ```
2269
2268
 
2270
- _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/workspace/bootstrap.ts)_
2269
+ _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/workspace/bootstrap.ts)_
2271
2270
 
2272
2271
  ## `qfg workspace create SLUG`
2273
2272
 
@@ -2301,7 +2300,7 @@ EXAMPLES
2301
2300
  $ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
2302
2301
  ```
2303
2302
 
2304
- _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/workspace/create.ts)_
2303
+ _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/workspace/create.ts)_
2305
2304
 
2306
2305
  ## `qfg workspace switch [SLUG]`
2307
2306
 
@@ -2329,7 +2328,7 @@ EXAMPLES
2329
2328
  $ qfg workspace switch acme/production
2330
2329
  ```
2331
2330
 
2332
- _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.66/src/commands/workspace/switch.ts)_
2331
+ _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.68/src/commands/workspace/switch.ts)_
2333
2332
  <!-- commandsstop -->
2334
2333
 
2335
2334
  ## Local Development
@@ -27,6 +27,7 @@ export default class Init extends BaseCommand {
27
27
  description: 'Include sample configs (default: yes on first init, no on update)',
28
28
  }),
29
29
  workspace: Flags.string({
30
+ char: 'w',
30
31
  description: 'Workspace pin in <org-slug>/<workspace-slug> form (Guard 1). If omitted, no pin is written.',
31
32
  required: false,
32
33
  }),
@@ -96,6 +96,7 @@ export default class Migrate extends BaseCommand {
96
96
  '(Policy A), instead of rewriting it. Use when you require byte-identical keys.',
97
97
  }),
98
98
  workspace: Flags.string({
99
+ char: 'w',
99
100
  description: 'Quonfig cloud workspace slug to push to. Requires `qfg login` and is typically combined with --push.',
100
101
  }),
101
102
  };
@@ -35,6 +35,7 @@ CLI shortcuts (no JSON editing needed for simple cases):
35
35
  description: 'Replay local commits on top of origin/main when the two have diverged. Conflicts are surfaced via standard git markers; resolve with `git rebase --continue`.',
36
36
  }),
37
37
  workspace: Flags.string({
38
+ char: 'w',
38
39
  description: 'Workspace ID (defaults to active profile)',
39
40
  }),
40
41
  };
@@ -33,6 +33,7 @@ Enforces three guards before touching the remote:
33
33
  description: 'Local directory to push (defaults to cwd / nearest ancestor with quonfig.json / QUONFIG_DIR env var)',
34
34
  }),
35
35
  workspace: Flags.string({
36
+ char: 'w',
36
37
  description: 'Workspace slug or UUID (defaults to active profile)',
37
38
  }),
38
39
  yes: Flags.boolean({
@@ -10,5 +10,8 @@ export declare class CrossSourceError extends Error {
10
10
  }
11
11
  export declare function writeImportState(outputDir: string, state: ImportState): void;
12
12
  export declare function readImportState(outputDir: string): ImportState | null;
13
+ export declare function writeKeyPlan(outputDir: string, keys: Record<string, string>): void;
14
+ /** The persisted plan, or null when absent/unreadable (treat as first run). */
15
+ export declare function readKeyPlan(outputDir: string): null | Record<string, string>;
13
16
  export declare function assertSourceMatches(outputDir: string, requestedSource: string): void;
14
17
  export declare function removeQfFromGitignore(outputDir: string): void;
@@ -35,6 +35,38 @@ export function readImportState(outputDir) {
35
35
  return null;
36
36
  return parsed;
37
37
  }
38
+ function keyPlanPath(outputDir) {
39
+ return path.join(outputDir, '.qf', 'key-plan.json');
40
+ }
41
+ export function writeKeyPlan(outputDir, keys) {
42
+ const filePath = keyPlanPath(outputDir);
43
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
44
+ const sorted = {};
45
+ for (const source of Object.keys(keys).sort())
46
+ sorted[source] = keys[source];
47
+ const serialized = { keys: sorted, version: 1 };
48
+ fs.writeFileSync(filePath, JSON.stringify(serialized, null, 2) + '\n', 'utf8');
49
+ }
50
+ /** The persisted plan, or null when absent/unreadable (treat as first run). */
51
+ export function readKeyPlan(outputDir) {
52
+ const filePath = keyPlanPath(outputDir);
53
+ if (!fs.existsSync(filePath))
54
+ return null;
55
+ try {
56
+ const parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
57
+ if (typeof parsed?.keys !== 'object' || parsed.keys === null || Array.isArray(parsed.keys))
58
+ return null;
59
+ const out = {};
60
+ for (const [source, final] of Object.entries(parsed.keys)) {
61
+ if (typeof final === 'string')
62
+ out[source] = final;
63
+ }
64
+ return out;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
38
70
  export function assertSourceMatches(outputDir, requestedSource) {
39
71
  const state = readImportState(outputDir);
40
72
  if (!state)