@quonfig/cli 0.0.50 → 0.0.51

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.50 linux-x64 node-v24.4.1
20
+ @quonfig/cli/0.0.51 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.50/src/commands/activity.ts)_
198
+ _See code: [src/commands/activity.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/activity/deleted.ts)_
227
+ _See code: [src/commands/activity/deleted.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/activity/feed.ts)_
262
+ _See code: [src/commands/activity/feed.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/activity/history.ts)_
296
+ _See code: [src/commands/activity/history.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/activity/restore.ts)_
335
+ _See code: [src/commands/activity/restore.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/audit-log.ts)_
363
+ _See code: [src/commands/audit-log.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/config-schema.ts)_
392
+ _See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/create.ts)_
477
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.51/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.50/src/commands/delete.ts)_
523
+ _See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/delete.ts)_
524
524
 
525
525
  ## `qfg flag info [NAME]`
526
526
 
@@ -665,8 +665,9 @@ FLAGS
665
665
  -o, --output-directory=<value> Override the output directory for generated files
666
666
  -w, --workspace=<value> Workspace slug or UUID for the remote-fetch path (defaults to QUONFIG_WORKSPACE env
667
667
  var or active profile). Only used when --dir is omitted.
668
- --dir=<value> Path to local QUONFIG_DIR (defaults to QUONFIG_DIR env var). When omitted, fetches the
669
- workspace from the server using your active credentials.
668
+ --dir=<value> Path to local QUONFIG_DIR (defaults to QUONFIG_DIR env var). When omitted,
669
+ auto-detects a quonfig.json in the current directory; if none, fetches the workspace
670
+ from the server.
670
671
  --targets=<value> [default: react-ts] Determines for language/framework to generate code for (node-ts,
671
672
  react-ts)
672
673
 
@@ -723,7 +724,7 @@ EXAMPLES
723
724
  $ qfg generate --targets node-ts -o ./dist # combine with targets
724
725
  ```
725
726
 
726
- _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/generate.ts)_
727
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/generate.ts)_
727
728
 
728
729
  ## `qfg generate-new-hex-key`
729
730
 
@@ -746,7 +747,7 @@ EXAMPLES
746
747
  $ qfg generate-new-hex-key
747
748
  ```
748
749
 
749
- _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.50/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.51/src/commands/generate-new-hex-key.ts)_
750
751
 
751
752
  ## `qfg get [NAME]`
752
753
 
@@ -778,7 +779,7 @@ EXAMPLES
778
779
  $ qfg get my.config.name --environment=production
779
780
  ```
780
781
 
781
- _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/get.ts)_
782
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/get.ts)_
782
783
 
783
784
  ## `qfg history NAME`
784
785
 
@@ -804,7 +805,7 @@ EXAMPLES
804
805
  $ qfg history my.flag
805
806
  ```
806
807
 
807
- _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/history.ts)_
808
+ _See code: [src/commands/history.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/history.ts)_
808
809
 
809
810
  ## `qfg info [NAME]`
810
811
 
@@ -852,7 +853,7 @@ EXAMPLES
852
853
  $ qfg info my.config.name --exclude-evaluations # skip 24h stats
853
854
  ```
854
855
 
855
- _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/info.ts)_
856
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/info.ts)_
856
857
 
857
858
  ## `qfg init [DIRECTORY]`
858
859
 
@@ -892,7 +893,7 @@ EXAMPLES
892
893
  $ qfg init --dry-run
893
894
  ```
894
895
 
895
- _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/init.ts)_
896
+ _See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/init.ts)_
896
897
 
897
898
  ## `qfg interactive`
898
899
 
@@ -922,7 +923,7 @@ EXAMPLES
922
923
  $ qfg
923
924
  ```
924
925
 
925
- _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/interactive.ts)_
926
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/interactive.ts)_
926
927
 
927
928
  ## `qfg list`
928
929
 
@@ -962,7 +963,7 @@ EXAMPLES
962
963
  $ qfg list --feature-flags
963
964
  ```
964
965
 
965
- _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/list.ts)_
966
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/list.ts)_
966
967
 
967
968
  ## `qfg log`
968
969
 
@@ -987,7 +988,7 @@ EXAMPLES
987
988
  $ qfg log --limit 5
988
989
  ```
989
990
 
990
- _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/log.ts)_
991
+ _See code: [src/commands/log.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/log.ts)_
991
992
 
992
993
  ## `qfg log-level NAME`
993
994
 
@@ -1052,7 +1053,7 @@ EXAMPLES
1052
1053
  $ qfg log-level log-level.my-app --target=Chatty --value=INFO --environment=production
1053
1054
  ```
1054
1055
 
1055
- _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/log-level.ts)_
1056
+ _See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/log-level.ts)_
1056
1057
 
1057
1058
  ## `qfg login`
1058
1059
 
@@ -1077,7 +1078,7 @@ EXAMPLES
1077
1078
  $ qfg login --profile myprofile
1078
1079
  ```
1079
1080
 
1080
- _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/login.ts)_
1081
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/login.ts)_
1081
1082
 
1082
1083
  ## `qfg logout`
1083
1084
 
@@ -1100,7 +1101,7 @@ EXAMPLES
1100
1101
  $ qfg logout
1101
1102
  ```
1102
1103
 
1103
- _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/logout.ts)_
1104
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/logout.ts)_
1104
1105
 
1105
1106
  ## `qfg migrate`
1106
1107
 
@@ -1123,8 +1124,9 @@ FLAGS
1123
1124
  --full-summary Reify the full source-side audit log into per-change git commits (author = original user,
1124
1125
  date = original timestamp, message = change summary). Only valid on first-run imports — pass
1125
1126
  --reset to re-import everything from scratch with this flag.
1126
- --project=<value> [default: default] LaunchDarkly project key to migrate from (or set
1127
- LAUNCHDARKLY_PROJECT_KEY). Scoped to `--from launchdarkly`; ignored by other sources.
1127
+ --project=<value> Source-system project identifier. For --from launchdarkly this is the project KEY (default:
1128
+ "default"; env: LAUNCHDARKLY_PROJECT_KEY). For --from flagsmith this is the numeric project
1129
+ ID (env: FLAGSMITH_PROJECT_ID). Ignored by --from launch.
1128
1130
  --push After migrating to a local dir, also push to the given --workspace on Quonfig cloud
1129
1131
  --recent=<value> Import only the last N changes (useful for tire-kicking)
1130
1132
  --reset Ignore the delta cursor and re-import everything from scratch
@@ -1162,7 +1164,7 @@ EXAMPLES
1162
1164
  $ qfg migrate --from launch --source-api-key $LAUNCH_API_KEY --dir ./quonfig-repo --staging
1163
1165
  ```
1164
1166
 
1165
- _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/migrate.ts)_
1167
+ _See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate.ts)_
1166
1168
 
1167
1169
  ## `qfg migrate doctor`
1168
1170
 
@@ -1200,7 +1202,7 @@ EXAMPLES
1200
1202
  $ qfg migrate doctor --json
1201
1203
  ```
1202
1204
 
1203
- _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/migrate/doctor.ts)_
1205
+ _See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate/doctor.ts)_
1204
1206
 
1205
1207
  ## `qfg migrate my-code`
1206
1208
 
@@ -1232,7 +1234,7 @@ EXAMPLES
1232
1234
  $ qfg migrate my-code --dry-run
1233
1235
  ```
1234
1236
 
1235
- _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/migrate/my-code.ts)_
1237
+ _See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate/my-code.ts)_
1236
1238
 
1237
1239
  ## `qfg migrate status`
1238
1240
 
@@ -1263,7 +1265,7 @@ EXAMPLES
1263
1265
  $ qfg migrate status --json
1264
1266
  ```
1265
1267
 
1266
- _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/migrate/status.ts)_
1268
+ _See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/migrate/status.ts)_
1267
1269
 
1268
1270
  ## `qfg override [NAME] [VALUE]`
1269
1271
 
@@ -1318,7 +1320,7 @@ EXAMPLES
1318
1320
  $ qfg override my.flag true --env=staging
1319
1321
  ```
1320
1322
 
1321
- _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/override.ts)_
1323
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/override.ts)_
1322
1324
 
1323
1325
  ## `qfg pull`
1324
1326
 
@@ -1366,7 +1368,7 @@ EXAMPLES
1366
1368
  $ qfg pull # uses QUONFIG_DIR env var
1367
1369
  ```
1368
1370
 
1369
- _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/pull.ts)_
1371
+ _See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/pull.ts)_
1370
1372
 
1371
1373
  ## `qfg push`
1372
1374
 
@@ -1415,7 +1417,7 @@ EXAMPLES
1415
1417
  $ qfg push --dir ./our-config --yes
1416
1418
  ```
1417
1419
 
1418
- _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/push.ts)_
1420
+ _See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/push.ts)_
1419
1421
 
1420
1422
  ## `qfg run [COMMAND]`
1421
1423
 
@@ -1466,7 +1468,7 @@ EXAMPLES
1466
1468
  $ qfg run --env DATABASE_URL=db.url --preserve-env --environment=staging -- npm test
1467
1469
  ```
1468
1470
 
1469
- _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/run.ts)_
1471
+ _See code: [src/commands/run.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/run.ts)_
1470
1472
 
1471
1473
  ## `qfg schema NAME`
1472
1474
 
@@ -1504,7 +1506,7 @@ EXAMPLES
1504
1506
  $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
1505
1507
  ```
1506
1508
 
1507
- _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/schema.ts)_
1509
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/schema.ts)_
1508
1510
 
1509
1511
  ## `qfg sdk-key`
1510
1512
 
@@ -1531,7 +1533,7 @@ EXAMPLES
1531
1533
  $ qfg sdk-key revoke <key-id>
1532
1534
  ```
1533
1535
 
1534
- _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/sdk-key.ts)_
1536
+ _See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key.ts)_
1535
1537
 
1536
1538
  ## `qfg sdk-key create`
1537
1539
 
@@ -1563,7 +1565,7 @@ EXAMPLES
1563
1565
  $ qfg sdk-key create --environment staging --type browser
1564
1566
  ```
1565
1567
 
1566
- _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/sdk-key/create.ts)_
1568
+ _See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key/create.ts)_
1567
1569
 
1568
1570
  ## `qfg sdk-key list`
1569
1571
 
@@ -1592,7 +1594,7 @@ EXAMPLES
1592
1594
  $ qfg sdk-key list --environment production
1593
1595
  ```
1594
1596
 
1595
- _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/sdk-key/list.ts)_
1597
+ _See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key/list.ts)_
1596
1598
 
1597
1599
  ## `qfg sdk-key revoke KEYID`
1598
1600
 
@@ -1619,7 +1621,7 @@ EXAMPLES
1619
1621
  $ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
1620
1622
  ```
1621
1623
 
1622
- _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/sdk-key/revoke.ts)_
1624
+ _See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sdk-key/revoke.ts)_
1623
1625
 
1624
1626
  ## `qfg set-default [NAME]`
1625
1627
 
@@ -1690,7 +1692,7 @@ EXAMPLES
1690
1692
  $ qfg pull && qfg config-schema
1691
1693
  ```
1692
1694
 
1693
- _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/set-default.ts)_
1695
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/set-default.ts)_
1694
1696
 
1695
1697
  ## `qfg set-rollout [NAME]`
1696
1698
 
@@ -1767,7 +1769,7 @@ EXAMPLES
1767
1769
  $ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
1768
1770
  ```
1769
1771
 
1770
- _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/set-rollout.ts)_
1772
+ _See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/set-rollout.ts)_
1771
1773
 
1772
1774
  ## `qfg sync`
1773
1775
 
@@ -1799,7 +1801,7 @@ EXAMPLES
1799
1801
  $ qfg sync --watch --dir ./our-config --interval 30
1800
1802
  ```
1801
1803
 
1802
- _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/sync.ts)_
1804
+ _See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/sync.ts)_
1803
1805
 
1804
1806
  ## `qfg toggle [NAME]`
1805
1807
 
@@ -1901,7 +1903,7 @@ EXAMPLES
1901
1903
  $ qfg verify --json
1902
1904
  ```
1903
1905
 
1904
- _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/verify.ts)_
1906
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/verify.ts)_
1905
1907
 
1906
1908
  ## `qfg whoami`
1907
1909
 
@@ -1924,7 +1926,7 @@ EXAMPLES
1924
1926
  $ qfg whoami
1925
1927
  ```
1926
1928
 
1927
- _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/whoami.ts)_
1929
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/whoami.ts)_
1928
1930
 
1929
1931
  ## `qfg workspace`
1930
1932
 
@@ -1947,7 +1949,7 @@ EXAMPLES
1947
1949
  $ qfg workspace
1948
1950
  ```
1949
1951
 
1950
- _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/workspace.ts)_
1952
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace.ts)_
1951
1953
 
1952
1954
  ## `qfg workspace bootstrap`
1953
1955
 
@@ -1980,7 +1982,7 @@ EXAMPLES
1980
1982
  $ qfg workspace bootstrap --dir ./our-config --skip-validate
1981
1983
  ```
1982
1984
 
1983
- _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/workspace/bootstrap.ts)_
1985
+ _See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace/bootstrap.ts)_
1984
1986
 
1985
1987
  ## `qfg workspace create SLUG`
1986
1988
 
@@ -2014,7 +2016,7 @@ EXAMPLES
2014
2016
  $ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
2015
2017
  ```
2016
2018
 
2017
- _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/workspace/create.ts)_
2019
+ _See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace/create.ts)_
2018
2020
 
2019
2021
  ## `qfg workspace switch [SLUG]`
2020
2022
 
@@ -2042,7 +2044,7 @@ EXAMPLES
2042
2044
  $ qfg workspace switch acme/production
2043
2045
  ```
2044
2046
 
2045
- _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.50/src/commands/workspace/switch.ts)_
2047
+ _See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.51/src/commands/workspace/switch.ts)_
2046
2048
  <!-- commandsstop -->
2047
2049
 
2048
2050
  ## Local Development
@@ -9,6 +9,7 @@ import { LocalConfigReader } from '../codegen/local-config-reader.js';
9
9
  import { SupportedLanguage } from '../codegen/types.js';
10
10
  import { BaseCommand } from '../index.js';
11
11
  import { createFileManager } from '../util/file-manager.js';
12
+ import { resolveWorkspaceDir } from '../util/resolve-workspace-dir.js';
12
13
  // base types
13
14
  const nodeOrReactLanguageSpecificSchema = z.object({
14
15
  clientFileName: z.string().optional(),
@@ -110,7 +111,7 @@ Example quonfig.config.json:
110
111
  ];
111
112
  static flags = {
112
113
  dir: Flags.string({
113
- description: 'Path to local QUONFIG_DIR (defaults to QUONFIG_DIR env var). When omitted, fetches the workspace from the server using your active credentials.',
114
+ description: 'Path to local QUONFIG_DIR (defaults to QUONFIG_DIR env var). When omitted, auto-detects a quonfig.json in the current directory; if none, fetches the workspace from the server.',
114
115
  env: 'QUONFIG_DIR',
115
116
  }),
116
117
  'output-directory': Flags.string({
@@ -132,12 +133,27 @@ Example quonfig.config.json:
132
133
  this.verboseLog('=== GENERATE COMMAND START ===');
133
134
  let snapshot;
134
135
  try {
135
- // When --dir/QUONFIG_DIR is set, read the local checkout (so users
136
- // who edit flag JSON in place keep that workflow). Otherwise clone
137
- // the workspace into a tmp dir for codegen-only callers.
136
+ // Resolution order (qfg-local-codegen):
137
+ // 1. --dir / QUONFIG_DIR (explicit local checkout)
138
+ // 2. Walk up from cwd looking for quonfig.json (no-account/local-only
139
+ // path — same resolver `qfg push` / `qfg pull` use)
140
+ // 3. Server snapshot clone (codegen-only callers without a checkout)
141
+ // --workspace is only meaningful for the server-snapshot path; if the
142
+ // user passed it explicitly, skip the cwd walk and go straight to fetch.
138
143
  let dir = flags.dir;
144
+ if (!dir && !flags.workspace) {
145
+ const resolved = resolveWorkspaceDir({
146
+ cwd: process.cwd(),
147
+ envDir: undefined, // QUONFIG_DIR is already merged into flags.dir by oclif
148
+ flagDir: undefined,
149
+ });
150
+ if (resolved.kind === 'ok') {
151
+ dir = resolved.dir;
152
+ console.log(`Using local workspace at ${dir} (auto-detected quonfig.json).`);
153
+ }
154
+ }
139
155
  if (!dir) {
140
- this.verboseLog('No --dir/QUONFIG_DIR set; fetching workspace snapshot from server...');
156
+ this.verboseLog('No local workspace found; fetching workspace snapshot from server...');
141
157
  snapshot = await fetchWorkspaceSnapshot(this, { workspace: flags.workspace });
142
158
  dir = snapshot.dir;
143
159
  }
@@ -9,7 +9,7 @@ export default class Migrate extends BaseCommand {
9
9
  'dry-run': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
10
  from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
11
  'full-summary': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
12
- project: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ project: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
13
  push: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
14
14
  recent: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
15
15
  reset: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
@@ -10,6 +10,8 @@ import { MigratorVerifyError, pushMigrationToCloud } from '../migrate/push-to-cl
10
10
  import { UnknownSourceError, getSource } from '../migrate/registry.js';
11
11
  import { NotYetImplementedError, } from '../migrate/source.js';
12
12
  import { missingSourceApiKeyMessage, resolveSourceApiKey } from '../migrate/source-api-key.js';
13
+ import { applyFlagsmithBaseUrl } from '../migrate/sources/flagsmith/api.js';
14
+ import { setFlagsmithProjectId } from '../migrate/sources/flagsmith.js';
13
15
  import { applyLaunchBaseUrl } from '../migrate/sources/launch/api.js';
14
16
  import { applyLaunchDarklyBaseUrl } from '../migrate/sources/launchdarkly/api.js';
15
17
  import { getLaunchDarklyRetentionHorizon, setLaunchDarklyFullSummary, setLaunchDarklyProjectKey, } from '../migrate/sources/launchdarkly.js';
@@ -55,10 +57,9 @@ export default class Migrate extends BaseCommand {
55
57
  'Only valid on first-run imports — pass --reset to re-import everything from scratch with this flag.',
56
58
  }),
57
59
  project: Flags.string({
58
- default: 'default',
59
- description: 'LaunchDarkly project key to migrate from (or set LAUNCHDARKLY_PROJECT_KEY). ' +
60
- 'Scoped to `--from launchdarkly`; ignored by other sources.',
61
- env: 'LAUNCHDARKLY_PROJECT_KEY',
60
+ description: 'Source-system project identifier. For --from launchdarkly this is the project KEY (default: "default"; ' +
61
+ 'env: LAUNCHDARKLY_PROJECT_KEY). For --from flagsmith this is the numeric project ID (env: FLAGSMITH_PROJECT_ID). ' +
62
+ 'Ignored by --from launch.',
62
63
  }),
63
64
  push: Flags.boolean({
64
65
  default: false,
@@ -149,9 +150,19 @@ export default class Migrate extends BaseCommand {
149
150
  // --full-summary swaps the snapshot for the Phase-2 audit-log walk (the
150
151
  // walk's own resume cursor lives in os.tmpdir, not in `dir`).
151
152
  applyLaunchDarklyBaseUrl();
152
- setLaunchDarklyProjectKey(flags.project);
153
+ setLaunchDarklyProjectKey(flags.project ?? process.env.LAUNCHDARKLY_PROJECT_KEY ?? 'default');
153
154
  setLaunchDarklyFullSummary(flags['full-summary']);
154
155
  }
156
+ if (flags.from === 'flagsmith') {
157
+ // Flagsmith projects are numeric IDs. --project is a string flag because
158
+ // it's source-shared; we just pass it through. The Flagsmith source's
159
+ // own resolveProjectId() honours FLAGSMITH_PROJECT_ID at module-load if
160
+ // --project isn't passed.
161
+ applyFlagsmithBaseUrl();
162
+ const projectId = flags.project ?? process.env.FLAGSMITH_PROJECT_ID;
163
+ if (projectId)
164
+ setFlagsmithProjectId(projectId);
165
+ }
155
166
  let source;
156
167
  try {
157
168
  source = getSource(flags.from);
@@ -25,22 +25,50 @@ This is a [Quonfig](https://quonfig.com) workspace repository. All configuration
25
25
  | \`schemas/\` | JSON Schemas that configs can reference for validation |
26
26
  | \`schemas-protected/\` | Admin-only schemas |
27
27
 
28
- ## Quick start
28
+ ## Quick start (works fully offline — no account required)
29
+
30
+ This workspace is just a git repo full of JSON files. You can edit those files
31
+ directly, validate them locally, and point any Quonfig SDK at this directory.
32
+ No login, no API call, no internet connection needed.
29
33
 
30
34
  \`\`\`bash
31
- # Validate the workspace
35
+ # 1. Edit a flag — see the sample files in feature-flags/ for the shape.
36
+ $EDITOR feature-flags/my.new.flag.json
37
+
38
+ # 2. Validate the workspace.
32
39
  qfg verify
33
40
 
34
- # Create a new feature flag
35
- qfg create my.new.flag --type=boolean-flag
41
+ # 3. (Optional) Generate TypeScript types for your app.
42
+ qfg generate
36
43
 
37
- # List all configs
38
- qfg list
44
+ # 4. Commit. The pre-commit hook re-runs qfg verify automatically.
45
+ git add . && git commit -m "Add my.new.flag"
39
46
  \`\`\`
40
47
 
48
+ ## Two ways to use this repo
49
+
50
+ **Open-source / fully local.** Edit JSON, run \`qfg verify\`, point your SDK
51
+ at this directory (\`datadir: "./quonfig"\`). Push the repo wherever you want
52
+ (GitHub, self-hosted Gitea, your own server). This is the no-account path.
53
+
54
+ **Hosted Quonfig.** If you also have a Quonfig account, server-side commands
55
+ like \`qfg push\`, \`qfg create\`, \`qfg list\`, \`qfg set-default\`, and
56
+ \`qfg get\` give you a UI, real-time SSE delivery to SDKs, evaluation
57
+ telemetry, and audit history. These all require \`qfg login\`.
58
+
59
+ ## Local-only commands (no login required)
60
+
61
+ | Command | What it does |
62
+ |---------|--------------|
63
+ | \`qfg init\` | Re-initialize this workspace (idempotent, refreshes templates) |
64
+ | \`qfg verify\` | Validate every JSON file against the schema and cross-file rules |
65
+ | \`qfg generate\` | Generate typed SDK client code from the configs in this dir |
66
+ | \`qfg config-schema\` | Print the canonical config schema (great for AI agents) |
67
+ | \`qfg migrate\` | Import flags from LaunchDarkly, Flagsmith, etc. |
68
+
41
69
  ## Schema
42
70
 
43
- Config files reference the hosted JSON Schema at <https://api.quonfig.com/schemas/v1/stored-config.json> via their \`$schema\` field. Editors that support JSON Schema will provide autocomplete and validation automatically.
71
+ Config files reference the hosted JSON Schema at <https://api.quonfig.com/schemas/v1/stored-config.json> via their \`$schema\` field. Editors that support JSON Schema will provide autocomplete and validation automatically. The schema URL is fetched once by your editor's LSP — the CLI and SDK don't need it.
44
72
 
45
73
  ## Validation
46
74
 
@@ -55,7 +83,24 @@ export function claudeMdTemplate() {
55
83
 
56
84
  This is a Quonfig workspace repository. Configuration is stored as JSON files in git.
57
85
 
58
- **After every change to this repo, run \`qfg verify\` to validate.**
86
+ ## How to work in this repo
87
+
88
+ **You edit JSON files directly.** Do not run \`qfg create\`, \`qfg set-default\`,
89
+ \`qfg set-rollout\`, \`qfg override\`, \`qfg push\`, \`qfg pull\`, \`qfg get\`,
90
+ or \`qfg list\` — those commands talk to a hosted Quonfig server. In a local
91
+ workspace, the source of truth is this git repo, so edit JSON in place.
92
+
93
+ The complete local-only toolkit:
94
+
95
+ | Command | When to use |
96
+ |---------|-------------|
97
+ | \`qfg verify\` | After every change. Validates schema + cross-file rules. |
98
+ | \`qfg config-schema\` | Print the canonical schema. Use this to look up field names, operator enums, value-type shapes before you write a new config. |
99
+ | \`qfg generate\` | Regenerate typed SDK client code (consumers ask for this; you usually won't need to run it unless asked). |
100
+ | Read existing files | Look at sibling JSON files in the same directory for the canonical shape before writing a new one. |
101
+
102
+ **After every change to this repo, run \`qfg verify\` to validate.** If it
103
+ fails, fix the JSON until it passes — do not ship a broken workspace.
59
104
 
60
105
  ## JSON Schema
61
106
 
@@ -144,10 +189,12 @@ This is a Quonfig workspace repository. See \`CLAUDE.md\` for the complete schem
144
189
 
145
190
  ## Key rules
146
191
 
147
- 1. **Always validate**: run \`qfg verify\` after any change to this repo.
148
- 2. Filename must match the \`key\` field (e.g. \`my.flag.json\` has \`"key": "my.flag"\`).
149
- 3. Files must be in the correct directory for their \`type\`.
150
- 4. See \`CLAUDE.md\` for the full list of value types, operators, and constraints.
192
+ 1. **Edit JSON files directly.** Do NOT use \`qfg create\`, \`qfg set-default\`, \`qfg push\`, \`qfg get\`, or \`qfg list\` — those require a hosted Quonfig account. The source of truth here is the git repo.
193
+ 2. **Always validate**: run \`qfg verify\` after any change to this repo.
194
+ 3. **Look before you leap**: read sibling JSON files for the canonical shape, and run \`qfg config-schema\` to confirm field names, operator enums, and value types before writing a new config.
195
+ 4. Filename must match the \`key\` field (e.g. \`my.flag.json\` has \`"key": "my.flag"\`).
196
+ 5. Files must be in the correct directory for their \`type\`.
197
+ 6. See \`CLAUDE.md\` for the full list of value types, operators, and constraints.
151
198
  `;
152
199
  }
153
200
  // ── Pre-commit hook ────────────────────────────────────────────────────