faces-cli 1.6.2 → 1.6.4

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.
@@ -638,10 +638,10 @@
638
638
  "whoami.js"
639
639
  ]
640
640
  },
641
- "catalog:backup": {
641
+ "billing:balance": {
642
642
  "aliases": [],
643
643
  "args": {},
644
- "description": "Snapshot all faces, teams, and source material for migration",
644
+ "description": "Show credit balance and payment method status",
645
645
  "flags": {
646
646
  "json": {
647
647
  "description": "Format output as json.",
@@ -677,7 +677,7 @@
677
677
  },
678
678
  "hasDynamicHelp": false,
679
679
  "hiddenAliases": [],
680
- "id": "catalog:backup",
680
+ "id": "billing:balance",
681
681
  "pluginAlias": "faces-cli",
682
682
  "pluginName": "faces-cli",
683
683
  "pluginType": "core",
@@ -687,14 +687,14 @@
687
687
  "relativePath": [
688
688
  "dist",
689
689
  "commands",
690
- "catalog",
691
- "backup.js"
690
+ "billing",
691
+ "balance.js"
692
692
  ]
693
693
  },
694
- "catalog:doctor": {
694
+ "billing:card-setup": {
695
695
  "aliases": [],
696
696
  "args": {},
697
- "description": "Diagnose and repair the local face catalog",
697
+ "description": "Get a Stripe card setup URL to save a payment method",
698
698
  "flags": {
699
699
  "json": {
700
700
  "description": "Format output as json.",
@@ -726,23 +726,11 @@
726
726
  "hasDynamicHelp": false,
727
727
  "multiple": false,
728
728
  "type": "option"
729
- },
730
- "fix": {
731
- "description": "Rebuild missing or stale catalog entries from API",
732
- "name": "fix",
733
- "allowNo": false,
734
- "type": "boolean"
735
- },
736
- "generate": {
737
- "description": "Fix + generate missing descriptions via LLM",
738
- "name": "generate",
739
- "allowNo": false,
740
- "type": "boolean"
741
729
  }
742
730
  },
743
731
  "hasDynamicHelp": false,
744
732
  "hiddenAliases": [],
745
- "id": "catalog:doctor",
733
+ "id": "billing:card-setup",
746
734
  "pluginAlias": "faces-cli",
747
735
  "pluginName": "faces-cli",
748
736
  "pluginType": "core",
@@ -752,14 +740,14 @@
752
740
  "relativePath": [
753
741
  "dist",
754
742
  "commands",
755
- "catalog",
756
- "doctor.js"
743
+ "billing",
744
+ "card-setup.js"
757
745
  ]
758
746
  },
759
- "catalog:list": {
747
+ "billing:checkout": {
760
748
  "aliases": [],
761
749
  "args": {},
762
- "description": "List all faces in the local catalog",
750
+ "description": "Get a Stripe checkout URL to upgrade your subscription plan",
763
751
  "flags": {
764
752
  "json": {
765
753
  "description": "Format output as json.",
@@ -791,11 +779,22 @@
791
779
  "hasDynamicHelp": false,
792
780
  "multiple": false,
793
781
  "type": "option"
782
+ },
783
+ "plan": {
784
+ "description": "Plan to subscribe to",
785
+ "name": "plan",
786
+ "default": "connect",
787
+ "hasDynamicHelp": false,
788
+ "multiple": false,
789
+ "options": [
790
+ "connect"
791
+ ],
792
+ "type": "option"
794
793
  }
795
794
  },
796
795
  "hasDynamicHelp": false,
797
796
  "hiddenAliases": [],
798
- "id": "catalog:list",
797
+ "id": "billing:checkout",
799
798
  "pluginAlias": "faces-cli",
800
799
  "pluginName": "faces-cli",
801
800
  "pluginType": "core",
@@ -805,14 +804,14 @@
805
804
  "relativePath": [
806
805
  "dist",
807
806
  "commands",
808
- "catalog",
809
- "list.js"
807
+ "billing",
808
+ "checkout.js"
810
809
  ]
811
810
  },
812
- "catalog:manyfaced": {
811
+ "billing:llm-costs": {
813
812
  "aliases": [],
814
813
  "args": {},
815
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
814
+ "description": "List available LLMs and their per-token costs",
816
815
  "flags": {
817
816
  "json": {
818
817
  "description": "Format output as json.",
@@ -845,37 +844,17 @@
845
844
  "multiple": false,
846
845
  "type": "option"
847
846
  },
848
- "skill": {
849
- "description": "Show details for a specific skill",
850
- "name": "skill",
851
- "hasDynamicHelp": false,
852
- "multiple": false,
853
- "type": "option"
854
- },
855
- "install": {
856
- "description": "Install a skill by name",
857
- "name": "install",
858
- "hasDynamicHelp": false,
859
- "multiple": false,
860
- "type": "option"
861
- },
862
- "skills-dir": {
863
- "description": "Directory to install skills into (required for --install)",
864
- "name": "skills-dir",
847
+ "provider": {
848
+ "description": "Filter by provider (e.g. openai, anthropic)",
849
+ "name": "provider",
865
850
  "hasDynamicHelp": false,
866
851
  "multiple": false,
867
852
  "type": "option"
868
- },
869
- "refresh": {
870
- "description": "Force refresh the skill index (ignore cache)",
871
- "name": "refresh",
872
- "allowNo": false,
873
- "type": "boolean"
874
853
  }
875
854
  },
876
855
  "hasDynamicHelp": false,
877
856
  "hiddenAliases": [],
878
- "id": "catalog:manyfaced",
857
+ "id": "billing:llm-costs",
879
858
  "pluginAlias": "faces-cli",
880
859
  "pluginName": "faces-cli",
881
860
  "pluginType": "core",
@@ -885,19 +864,14 @@
885
864
  "relativePath": [
886
865
  "dist",
887
866
  "commands",
888
- "catalog",
889
- "manyfaced.js"
867
+ "billing",
868
+ "llm-costs.js"
890
869
  ]
891
870
  },
892
- "catalog:restore": {
871
+ "billing:quota": {
893
872
  "aliases": [],
894
- "args": {
895
- "file": {
896
- "description": "Backup file path (default: most recent in ~/.faces/backups/)",
897
- "name": "file"
898
- }
899
- },
900
- "description": "Restore faces, teams, and source material from a backup snapshot",
873
+ "args": {},
874
+ "description": "Show compile token quota and per-face stats",
901
875
  "flags": {
902
876
  "json": {
903
877
  "description": "Format output as json.",
@@ -929,17 +903,11 @@
929
903
  "hasDynamicHelp": false,
930
904
  "multiple": false,
931
905
  "type": "option"
932
- },
933
- "compile": {
934
- "description": "Run compile:all after restoring",
935
- "name": "compile",
936
- "allowNo": false,
937
- "type": "boolean"
938
906
  }
939
907
  },
940
908
  "hasDynamicHelp": false,
941
909
  "hiddenAliases": [],
942
- "id": "catalog:restore",
910
+ "id": "billing:quota",
943
911
  "pluginAlias": "faces-cli",
944
912
  "pluginName": "faces-cli",
945
913
  "pluginType": "core",
@@ -949,14 +917,14 @@
949
917
  "relativePath": [
950
918
  "dist",
951
919
  "commands",
952
- "catalog",
953
- "restore.js"
920
+ "billing",
921
+ "quota.js"
954
922
  ]
955
923
  },
956
- "billing:balance": {
924
+ "billing:subscription": {
957
925
  "aliases": [],
958
926
  "args": {},
959
- "description": "Show credit balance and payment method status",
927
+ "description": "Show current plan, face count, and renewal date",
960
928
  "flags": {
961
929
  "json": {
962
930
  "description": "Format output as json.",
@@ -992,7 +960,7 @@
992
960
  },
993
961
  "hasDynamicHelp": false,
994
962
  "hiddenAliases": [],
995
- "id": "billing:balance",
963
+ "id": "billing:subscription",
996
964
  "pluginAlias": "faces-cli",
997
965
  "pluginName": "faces-cli",
998
966
  "pluginType": "core",
@@ -1003,13 +971,13 @@
1003
971
  "dist",
1004
972
  "commands",
1005
973
  "billing",
1006
- "balance.js"
974
+ "subscription.js"
1007
975
  ]
1008
976
  },
1009
- "billing:card-setup": {
977
+ "billing:topup": {
1010
978
  "aliases": [],
1011
979
  "args": {},
1012
- "description": "Get a Stripe card setup URL to save a payment method",
980
+ "description": "Top up credit balance using saved payment method",
1013
981
  "flags": {
1014
982
  "json": {
1015
983
  "description": "Format output as json.",
@@ -1041,11 +1009,26 @@
1041
1009
  "hasDynamicHelp": false,
1042
1010
  "multiple": false,
1043
1011
  "type": "option"
1012
+ },
1013
+ "amount": {
1014
+ "description": "Top-up amount in USD (min $1)",
1015
+ "name": "amount",
1016
+ "required": true,
1017
+ "hasDynamicHelp": false,
1018
+ "multiple": false,
1019
+ "type": "option"
1020
+ },
1021
+ "payment-ref": {
1022
+ "description": "Payment reference (admin/test path)",
1023
+ "name": "payment-ref",
1024
+ "hasDynamicHelp": false,
1025
+ "multiple": false,
1026
+ "type": "option"
1044
1027
  }
1045
1028
  },
1046
1029
  "hasDynamicHelp": false,
1047
1030
  "hiddenAliases": [],
1048
- "id": "billing:card-setup",
1031
+ "id": "billing:topup",
1049
1032
  "pluginAlias": "faces-cli",
1050
1033
  "pluginName": "faces-cli",
1051
1034
  "pluginType": "core",
@@ -1056,13 +1039,13 @@
1056
1039
  "dist",
1057
1040
  "commands",
1058
1041
  "billing",
1059
- "card-setup.js"
1042
+ "topup.js"
1060
1043
  ]
1061
1044
  },
1062
- "billing:checkout": {
1045
+ "billing:usage": {
1063
1046
  "aliases": [],
1064
1047
  "args": {},
1065
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
1048
+ "description": "Aggregated usage analytics",
1066
1049
  "flags": {
1067
1050
  "json": {
1068
1051
  "description": "Format output as json.",
@@ -1095,21 +1078,37 @@
1095
1078
  "multiple": false,
1096
1079
  "type": "option"
1097
1080
  },
1098
- "plan": {
1099
- "description": "Plan to subscribe to",
1100
- "name": "plan",
1101
- "default": "connect",
1081
+ "group-by": {
1082
+ "description": "Group results",
1083
+ "name": "group-by",
1102
1084
  "hasDynamicHelp": false,
1103
1085
  "multiple": false,
1104
1086
  "options": [
1105
- "connect"
1087
+ "api_key",
1088
+ "model",
1089
+ "llm",
1090
+ "date"
1106
1091
  ],
1107
1092
  "type": "option"
1093
+ },
1094
+ "from": {
1095
+ "description": "Start date (YYYY-MM-DD)",
1096
+ "name": "from",
1097
+ "hasDynamicHelp": false,
1098
+ "multiple": false,
1099
+ "type": "option"
1100
+ },
1101
+ "to": {
1102
+ "description": "End date (YYYY-MM-DD)",
1103
+ "name": "to",
1104
+ "hasDynamicHelp": false,
1105
+ "multiple": false,
1106
+ "type": "option"
1108
1107
  }
1109
1108
  },
1110
1109
  "hasDynamicHelp": false,
1111
1110
  "hiddenAliases": [],
1112
- "id": "billing:checkout",
1111
+ "id": "billing:usage",
1113
1112
  "pluginAlias": "faces-cli",
1114
1113
  "pluginName": "faces-cli",
1115
1114
  "pluginType": "core",
@@ -1120,13 +1119,13 @@
1120
1119
  "dist",
1121
1120
  "commands",
1122
1121
  "billing",
1123
- "checkout.js"
1122
+ "usage.js"
1124
1123
  ]
1125
1124
  },
1126
- "billing:llm-costs": {
1125
+ "catalog:backup": {
1127
1126
  "aliases": [],
1128
1127
  "args": {},
1129
- "description": "List available LLMs and their per-token costs",
1128
+ "description": "Snapshot all faces, teams, and source material for migration",
1130
1129
  "flags": {
1131
1130
  "json": {
1132
1131
  "description": "Format output as json.",
@@ -1158,18 +1157,11 @@
1158
1157
  "hasDynamicHelp": false,
1159
1158
  "multiple": false,
1160
1159
  "type": "option"
1161
- },
1162
- "provider": {
1163
- "description": "Filter by provider (e.g. openai, anthropic)",
1164
- "name": "provider",
1165
- "hasDynamicHelp": false,
1166
- "multiple": false,
1167
- "type": "option"
1168
1160
  }
1169
1161
  },
1170
1162
  "hasDynamicHelp": false,
1171
1163
  "hiddenAliases": [],
1172
- "id": "billing:llm-costs",
1164
+ "id": "catalog:backup",
1173
1165
  "pluginAlias": "faces-cli",
1174
1166
  "pluginName": "faces-cli",
1175
1167
  "pluginType": "core",
@@ -1179,14 +1171,14 @@
1179
1171
  "relativePath": [
1180
1172
  "dist",
1181
1173
  "commands",
1182
- "billing",
1183
- "llm-costs.js"
1174
+ "catalog",
1175
+ "backup.js"
1184
1176
  ]
1185
1177
  },
1186
- "billing:quota": {
1178
+ "catalog:doctor": {
1187
1179
  "aliases": [],
1188
1180
  "args": {},
1189
- "description": "Show compile token quota and per-face stats",
1181
+ "description": "Diagnose and repair the local face and team catalog",
1190
1182
  "flags": {
1191
1183
  "json": {
1192
1184
  "description": "Format output as json.",
@@ -1218,11 +1210,23 @@
1218
1210
  "hasDynamicHelp": false,
1219
1211
  "multiple": false,
1220
1212
  "type": "option"
1213
+ },
1214
+ "fix": {
1215
+ "description": "Rebuild missing or stale catalog entries from API",
1216
+ "name": "fix",
1217
+ "allowNo": false,
1218
+ "type": "boolean"
1219
+ },
1220
+ "generate": {
1221
+ "description": "Fix + generate missing descriptions via LLM",
1222
+ "name": "generate",
1223
+ "allowNo": false,
1224
+ "type": "boolean"
1221
1225
  }
1222
1226
  },
1223
1227
  "hasDynamicHelp": false,
1224
1228
  "hiddenAliases": [],
1225
- "id": "billing:quota",
1229
+ "id": "catalog:doctor",
1226
1230
  "pluginAlias": "faces-cli",
1227
1231
  "pluginName": "faces-cli",
1228
1232
  "pluginType": "core",
@@ -1232,14 +1236,14 @@
1232
1236
  "relativePath": [
1233
1237
  "dist",
1234
1238
  "commands",
1235
- "billing",
1236
- "quota.js"
1239
+ "catalog",
1240
+ "doctor.js"
1237
1241
  ]
1238
1242
  },
1239
- "billing:subscription": {
1243
+ "catalog:list": {
1240
1244
  "aliases": [],
1241
1245
  "args": {},
1242
- "description": "Show current plan, face count, and renewal date",
1246
+ "description": "List all faces in the local catalog",
1243
1247
  "flags": {
1244
1248
  "json": {
1245
1249
  "description": "Format output as json.",
@@ -1275,7 +1279,7 @@
1275
1279
  },
1276
1280
  "hasDynamicHelp": false,
1277
1281
  "hiddenAliases": [],
1278
- "id": "billing:subscription",
1282
+ "id": "catalog:list",
1279
1283
  "pluginAlias": "faces-cli",
1280
1284
  "pluginName": "faces-cli",
1281
1285
  "pluginType": "core",
@@ -1285,14 +1289,14 @@
1285
1289
  "relativePath": [
1286
1290
  "dist",
1287
1291
  "commands",
1288
- "billing",
1289
- "subscription.js"
1292
+ "catalog",
1293
+ "list.js"
1290
1294
  ]
1291
1295
  },
1292
- "billing:topup": {
1296
+ "catalog:manyfaced": {
1293
1297
  "aliases": [],
1294
1298
  "args": {},
1295
- "description": "Top up credit balance using saved payment method",
1299
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1296
1300
  "flags": {
1297
1301
  "json": {
1298
1302
  "description": "Format output as json.",
@@ -1325,25 +1329,37 @@
1325
1329
  "multiple": false,
1326
1330
  "type": "option"
1327
1331
  },
1328
- "amount": {
1329
- "description": "Top-up amount in USD (min $1)",
1330
- "name": "amount",
1331
- "required": true,
1332
+ "skill": {
1333
+ "description": "Show details for a specific skill",
1334
+ "name": "skill",
1332
1335
  "hasDynamicHelp": false,
1333
1336
  "multiple": false,
1334
1337
  "type": "option"
1335
1338
  },
1336
- "payment-ref": {
1337
- "description": "Payment reference (admin/test path)",
1338
- "name": "payment-ref",
1339
+ "install": {
1340
+ "description": "Install a skill by name",
1341
+ "name": "install",
1342
+ "hasDynamicHelp": false,
1343
+ "multiple": false,
1344
+ "type": "option"
1345
+ },
1346
+ "skills-dir": {
1347
+ "description": "Directory to install skills into (required for --install)",
1348
+ "name": "skills-dir",
1339
1349
  "hasDynamicHelp": false,
1340
1350
  "multiple": false,
1341
1351
  "type": "option"
1352
+ },
1353
+ "refresh": {
1354
+ "description": "Force refresh the skill index (ignore cache)",
1355
+ "name": "refresh",
1356
+ "allowNo": false,
1357
+ "type": "boolean"
1342
1358
  }
1343
1359
  },
1344
1360
  "hasDynamicHelp": false,
1345
1361
  "hiddenAliases": [],
1346
- "id": "billing:topup",
1362
+ "id": "catalog:manyfaced",
1347
1363
  "pluginAlias": "faces-cli",
1348
1364
  "pluginName": "faces-cli",
1349
1365
  "pluginType": "core",
@@ -1353,14 +1369,19 @@
1353
1369
  "relativePath": [
1354
1370
  "dist",
1355
1371
  "commands",
1356
- "billing",
1357
- "topup.js"
1372
+ "catalog",
1373
+ "manyfaced.js"
1358
1374
  ]
1359
1375
  },
1360
- "billing:usage": {
1376
+ "catalog:restore": {
1361
1377
  "aliases": [],
1362
- "args": {},
1363
- "description": "Aggregated usage analytics",
1378
+ "args": {
1379
+ "file": {
1380
+ "description": "Backup file path (default: most recent in ~/.faces/backups/)",
1381
+ "name": "file"
1382
+ }
1383
+ },
1384
+ "description": "Restore faces, teams, and source material from a backup snapshot",
1364
1385
  "flags": {
1365
1386
  "json": {
1366
1387
  "description": "Format output as json.",
@@ -1393,37 +1414,16 @@
1393
1414
  "multiple": false,
1394
1415
  "type": "option"
1395
1416
  },
1396
- "group-by": {
1397
- "description": "Group results",
1398
- "name": "group-by",
1399
- "hasDynamicHelp": false,
1400
- "multiple": false,
1401
- "options": [
1402
- "api_key",
1403
- "model",
1404
- "llm",
1405
- "date"
1406
- ],
1407
- "type": "option"
1408
- },
1409
- "from": {
1410
- "description": "Start date (YYYY-MM-DD)",
1411
- "name": "from",
1412
- "hasDynamicHelp": false,
1413
- "multiple": false,
1414
- "type": "option"
1415
- },
1416
- "to": {
1417
- "description": "End date (YYYY-MM-DD)",
1418
- "name": "to",
1419
- "hasDynamicHelp": false,
1420
- "multiple": false,
1421
- "type": "option"
1417
+ "compile": {
1418
+ "description": "Run compile:all after restoring",
1419
+ "name": "compile",
1420
+ "allowNo": false,
1421
+ "type": "boolean"
1422
1422
  }
1423
1423
  },
1424
1424
  "hasDynamicHelp": false,
1425
1425
  "hiddenAliases": [],
1426
- "id": "billing:usage",
1426
+ "id": "catalog:restore",
1427
1427
  "pluginAlias": "faces-cli",
1428
1428
  "pluginName": "faces-cli",
1429
1429
  "pluginType": "core",
@@ -1433,8 +1433,8 @@
1433
1433
  "relativePath": [
1434
1434
  "dist",
1435
1435
  "commands",
1436
- "billing",
1437
- "usage.js"
1436
+ "catalog",
1437
+ "restore.js"
1438
1438
  ]
1439
1439
  },
1440
1440
  "chat:chat": {
@@ -1740,182 +1740,6 @@
1740
1740
  "responses.js"
1741
1741
  ]
1742
1742
  },
1743
- "config:clear": {
1744
- "aliases": [],
1745
- "args": {},
1746
- "description": "Delete all saved credentials and config",
1747
- "flags": {
1748
- "json": {
1749
- "description": "Format output as json.",
1750
- "helpGroup": "GLOBAL",
1751
- "name": "json",
1752
- "allowNo": false,
1753
- "type": "boolean"
1754
- },
1755
- "base-url": {
1756
- "description": "API base URL",
1757
- "env": "FACES_BASE_URL",
1758
- "name": "base-url",
1759
- "hasDynamicHelp": false,
1760
- "multiple": false,
1761
- "type": "option"
1762
- },
1763
- "token": {
1764
- "description": "JWT bearer token",
1765
- "env": "FACES_TOKEN",
1766
- "name": "token",
1767
- "hasDynamicHelp": false,
1768
- "multiple": false,
1769
- "type": "option"
1770
- },
1771
- "api-key": {
1772
- "description": "API key",
1773
- "env": "FACES_API_KEY",
1774
- "name": "api-key",
1775
- "hasDynamicHelp": false,
1776
- "multiple": false,
1777
- "type": "option"
1778
- },
1779
- "yes": {
1780
- "description": "Skip confirmation",
1781
- "name": "yes",
1782
- "allowNo": false,
1783
- "type": "boolean"
1784
- }
1785
- },
1786
- "hasDynamicHelp": false,
1787
- "hiddenAliases": [],
1788
- "id": "config:clear",
1789
- "pluginAlias": "faces-cli",
1790
- "pluginName": "faces-cli",
1791
- "pluginType": "core",
1792
- "strict": true,
1793
- "enableJsonFlag": true,
1794
- "isESM": true,
1795
- "relativePath": [
1796
- "dist",
1797
- "commands",
1798
- "config",
1799
- "clear.js"
1800
- ]
1801
- },
1802
- "config:set": {
1803
- "aliases": [],
1804
- "args": {
1805
- "key": {
1806
- "description": "Config key",
1807
- "name": "key",
1808
- "required": true
1809
- },
1810
- "value": {
1811
- "description": "Config value",
1812
- "name": "value",
1813
- "required": true
1814
- }
1815
- },
1816
- "description": "Set a config value (e.g. base_url, api_key, token)",
1817
- "flags": {
1818
- "json": {
1819
- "description": "Format output as json.",
1820
- "helpGroup": "GLOBAL",
1821
- "name": "json",
1822
- "allowNo": false,
1823
- "type": "boolean"
1824
- },
1825
- "base-url": {
1826
- "description": "API base URL",
1827
- "env": "FACES_BASE_URL",
1828
- "name": "base-url",
1829
- "hasDynamicHelp": false,
1830
- "multiple": false,
1831
- "type": "option"
1832
- },
1833
- "token": {
1834
- "description": "JWT bearer token",
1835
- "env": "FACES_TOKEN",
1836
- "name": "token",
1837
- "hasDynamicHelp": false,
1838
- "multiple": false,
1839
- "type": "option"
1840
- },
1841
- "api-key": {
1842
- "description": "API key",
1843
- "env": "FACES_API_KEY",
1844
- "name": "api-key",
1845
- "hasDynamicHelp": false,
1846
- "multiple": false,
1847
- "type": "option"
1848
- }
1849
- },
1850
- "hasDynamicHelp": false,
1851
- "hiddenAliases": [],
1852
- "id": "config:set",
1853
- "pluginAlias": "faces-cli",
1854
- "pluginName": "faces-cli",
1855
- "pluginType": "core",
1856
- "strict": true,
1857
- "enableJsonFlag": true,
1858
- "isESM": true,
1859
- "relativePath": [
1860
- "dist",
1861
- "commands",
1862
- "config",
1863
- "set.js"
1864
- ]
1865
- },
1866
- "config:show": {
1867
- "aliases": [],
1868
- "args": {},
1869
- "description": "Print current config (credentials are masked)",
1870
- "flags": {
1871
- "json": {
1872
- "description": "Format output as json.",
1873
- "helpGroup": "GLOBAL",
1874
- "name": "json",
1875
- "allowNo": false,
1876
- "type": "boolean"
1877
- },
1878
- "base-url": {
1879
- "description": "API base URL",
1880
- "env": "FACES_BASE_URL",
1881
- "name": "base-url",
1882
- "hasDynamicHelp": false,
1883
- "multiple": false,
1884
- "type": "option"
1885
- },
1886
- "token": {
1887
- "description": "JWT bearer token",
1888
- "env": "FACES_TOKEN",
1889
- "name": "token",
1890
- "hasDynamicHelp": false,
1891
- "multiple": false,
1892
- "type": "option"
1893
- },
1894
- "api-key": {
1895
- "description": "API key",
1896
- "env": "FACES_API_KEY",
1897
- "name": "api-key",
1898
- "hasDynamicHelp": false,
1899
- "multiple": false,
1900
- "type": "option"
1901
- }
1902
- },
1903
- "hasDynamicHelp": false,
1904
- "hiddenAliases": [],
1905
- "id": "config:show",
1906
- "pluginAlias": "faces-cli",
1907
- "pluginName": "faces-cli",
1908
- "pluginType": "core",
1909
- "strict": true,
1910
- "enableJsonFlag": true,
1911
- "isESM": true,
1912
- "relativePath": [
1913
- "dist",
1914
- "commands",
1915
- "config",
1916
- "show.js"
1917
- ]
1918
- },
1919
1743
  "compile:all": {
1920
1744
  "aliases": [],
1921
1745
  "args": {},
@@ -2185,10 +2009,10 @@
2185
2009
  "upload.js"
2186
2010
  ]
2187
2011
  },
2188
- "keys:create": {
2012
+ "config:clear": {
2189
2013
  "aliases": [],
2190
2014
  "args": {},
2191
- "description": "Create a new API key (JWT required)",
2015
+ "description": "Delete all saved credentials and config",
2192
2016
  "flags": {
2193
2017
  "json": {
2194
2018
  "description": "Format output as json.",
@@ -2221,99 +2045,16 @@
2221
2045
  "multiple": false,
2222
2046
  "type": "option"
2223
2047
  },
2224
- "name": {
2225
- "description": "Key name/label",
2226
- "name": "name",
2227
- "required": true,
2228
- "hasDynamicHelp": false,
2229
- "multiple": false,
2230
- "type": "option"
2231
- },
2232
- "expires-days": {
2233
- "description": "Expiry in days (omit for no expiry)",
2234
- "name": "expires-days",
2235
- "hasDynamicHelp": false,
2236
- "multiple": false,
2237
- "type": "option"
2238
- },
2239
- "budget": {
2240
- "description": "Spend budget in USD",
2241
- "name": "budget",
2242
- "hasDynamicHelp": false,
2243
- "multiple": false,
2244
- "type": "option"
2245
- },
2246
- "face": {
2247
- "description": "Allowed face alias (repeatable)",
2248
- "name": "face",
2249
- "hasDynamicHelp": false,
2250
- "multiple": true,
2251
- "type": "option"
2252
- },
2253
- "model": {
2254
- "description": "Allowed model name (repeatable)",
2255
- "name": "model",
2256
- "hasDynamicHelp": false,
2257
- "multiple": true,
2258
- "type": "option"
2259
- }
2260
- },
2261
- "hasDynamicHelp": false,
2262
- "hiddenAliases": [],
2263
- "id": "keys:create",
2264
- "pluginAlias": "faces-cli",
2265
- "pluginName": "faces-cli",
2266
- "pluginType": "core",
2267
- "strict": true,
2268
- "enableJsonFlag": true,
2269
- "isESM": true,
2270
- "relativePath": [
2271
- "dist",
2272
- "commands",
2273
- "keys",
2274
- "create.js"
2275
- ]
2276
- },
2277
- "keys:list": {
2278
- "aliases": [],
2279
- "args": {},
2280
- "description": "List all API keys (JWT required)",
2281
- "flags": {
2282
- "json": {
2283
- "description": "Format output as json.",
2284
- "helpGroup": "GLOBAL",
2285
- "name": "json",
2048
+ "yes": {
2049
+ "description": "Skip confirmation",
2050
+ "name": "yes",
2286
2051
  "allowNo": false,
2287
2052
  "type": "boolean"
2288
- },
2289
- "base-url": {
2290
- "description": "API base URL",
2291
- "env": "FACES_BASE_URL",
2292
- "name": "base-url",
2293
- "hasDynamicHelp": false,
2294
- "multiple": false,
2295
- "type": "option"
2296
- },
2297
- "token": {
2298
- "description": "JWT bearer token",
2299
- "env": "FACES_TOKEN",
2300
- "name": "token",
2301
- "hasDynamicHelp": false,
2302
- "multiple": false,
2303
- "type": "option"
2304
- },
2305
- "api-key": {
2306
- "description": "API key",
2307
- "env": "FACES_API_KEY",
2308
- "name": "api-key",
2309
- "hasDynamicHelp": false,
2310
- "multiple": false,
2311
- "type": "option"
2312
2053
  }
2313
2054
  },
2314
2055
  "hasDynamicHelp": false,
2315
2056
  "hiddenAliases": [],
2316
- "id": "keys:list",
2057
+ "id": "config:clear",
2317
2058
  "pluginAlias": "faces-cli",
2318
2059
  "pluginName": "faces-cli",
2319
2060
  "pluginType": "core",
@@ -2323,20 +2064,25 @@
2323
2064
  "relativePath": [
2324
2065
  "dist",
2325
2066
  "commands",
2326
- "keys",
2327
- "list.js"
2067
+ "config",
2068
+ "clear.js"
2328
2069
  ]
2329
2070
  },
2330
- "keys:revoke": {
2071
+ "config:set": {
2331
2072
  "aliases": [],
2332
2073
  "args": {
2333
- "key_id": {
2334
- "description": "Key ID",
2335
- "name": "key_id",
2074
+ "key": {
2075
+ "description": "Config key",
2076
+ "name": "key",
2077
+ "required": true
2078
+ },
2079
+ "value": {
2080
+ "description": "Config value",
2081
+ "name": "value",
2336
2082
  "required": true
2337
2083
  }
2338
2084
  },
2339
- "description": "Revoke an API key (JWT required)",
2085
+ "description": "Set a config value (e.g. base_url, api_key, token)",
2340
2086
  "flags": {
2341
2087
  "json": {
2342
2088
  "description": "Format output as json.",
@@ -2368,17 +2114,11 @@
2368
2114
  "hasDynamicHelp": false,
2369
2115
  "multiple": false,
2370
2116
  "type": "option"
2371
- },
2372
- "yes": {
2373
- "description": "Skip confirmation",
2374
- "name": "yes",
2375
- "allowNo": false,
2376
- "type": "boolean"
2377
2117
  }
2378
2118
  },
2379
2119
  "hasDynamicHelp": false,
2380
2120
  "hiddenAliases": [],
2381
- "id": "keys:revoke",
2121
+ "id": "config:set",
2382
2122
  "pluginAlias": "faces-cli",
2383
2123
  "pluginName": "faces-cli",
2384
2124
  "pluginType": "core",
@@ -2388,20 +2128,14 @@
2388
2128
  "relativePath": [
2389
2129
  "dist",
2390
2130
  "commands",
2391
- "keys",
2392
- "revoke.js"
2131
+ "config",
2132
+ "set.js"
2393
2133
  ]
2394
2134
  },
2395
- "keys:update": {
2135
+ "config:show": {
2396
2136
  "aliases": [],
2397
- "args": {
2398
- "key_id": {
2399
- "description": "Key ID",
2400
- "name": "key_id",
2401
- "required": true
2402
- }
2403
- },
2404
- "description": "Update API key metadata (JWT required)",
2137
+ "args": {},
2138
+ "description": "Print current config (credentials are masked)",
2405
2139
  "flags": {
2406
2140
  "json": {
2407
2141
  "description": "Format output as json.",
@@ -2433,31 +2167,11 @@
2433
2167
  "hasDynamicHelp": false,
2434
2168
  "multiple": false,
2435
2169
  "type": "option"
2436
- },
2437
- "name": {
2438
- "description": "New key name",
2439
- "name": "name",
2440
- "hasDynamicHelp": false,
2441
- "multiple": false,
2442
- "type": "option"
2443
- },
2444
- "budget": {
2445
- "description": "New spend budget in USD",
2446
- "name": "budget",
2447
- "hasDynamicHelp": false,
2448
- "multiple": false,
2449
- "type": "option"
2450
- },
2451
- "reset-spent": {
2452
- "description": "Reset spent amount to zero",
2453
- "name": "reset-spent",
2454
- "allowNo": false,
2455
- "type": "boolean"
2456
2170
  }
2457
2171
  },
2458
2172
  "hasDynamicHelp": false,
2459
2173
  "hiddenAliases": [],
2460
- "id": "keys:update",
2174
+ "id": "config:show",
2461
2175
  "pluginAlias": "faces-cli",
2462
2176
  "pluginName": "faces-cli",
2463
2177
  "pluginType": "core",
@@ -2467,8 +2181,8 @@
2467
2181
  "relativePath": [
2468
2182
  "dist",
2469
2183
  "commands",
2470
- "keys",
2471
- "update.js"
2184
+ "config",
2185
+ "show.js"
2472
2186
  ]
2473
2187
  },
2474
2188
  "face:attributes": {
@@ -2802,6 +2516,13 @@
2802
2516
  "hasDynamicHelp": false,
2803
2517
  "multiple": false,
2804
2518
  "type": "option"
2519
+ },
2520
+ "include": {
2521
+ "description": "Include extra fields: tags, teams (comma-separated)",
2522
+ "name": "include",
2523
+ "hasDynamicHelp": false,
2524
+ "multiple": false,
2525
+ "type": "option"
2805
2526
  }
2806
2527
  },
2807
2528
  "hasDynamicHelp": false,
@@ -2862,11 +2583,444 @@
2862
2583
  "hasDynamicHelp": false,
2863
2584
  "multiple": true,
2864
2585
  "type": "option"
2586
+ },
2587
+ "team": {
2588
+ "description": "Filter by team ID (repeatable, OR logic)",
2589
+ "name": "team",
2590
+ "hasDynamicHelp": false,
2591
+ "multiple": true,
2592
+ "type": "option"
2593
+ },
2594
+ "include": {
2595
+ "description": "Include extra fields: tags, teams (comma-separated)",
2596
+ "name": "include",
2597
+ "hasDynamicHelp": false,
2598
+ "multiple": false,
2599
+ "type": "option"
2600
+ }
2601
+ },
2602
+ "hasDynamicHelp": false,
2603
+ "hiddenAliases": [],
2604
+ "id": "face:list",
2605
+ "pluginAlias": "faces-cli",
2606
+ "pluginName": "faces-cli",
2607
+ "pluginType": "core",
2608
+ "strict": true,
2609
+ "enableJsonFlag": true,
2610
+ "isESM": true,
2611
+ "relativePath": [
2612
+ "dist",
2613
+ "commands",
2614
+ "face",
2615
+ "list.js"
2616
+ ]
2617
+ },
2618
+ "face:neighbors": {
2619
+ "aliases": [],
2620
+ "args": {
2621
+ "face_id": {
2622
+ "description": "Face alias",
2623
+ "name": "face_id",
2624
+ "required": true
2625
+ }
2626
+ },
2627
+ "description": "Find the most similar or dissimilar owned faces to a given face",
2628
+ "flags": {
2629
+ "json": {
2630
+ "description": "Format output as json.",
2631
+ "helpGroup": "GLOBAL",
2632
+ "name": "json",
2633
+ "allowNo": false,
2634
+ "type": "boolean"
2635
+ },
2636
+ "base-url": {
2637
+ "description": "API base URL",
2638
+ "env": "FACES_BASE_URL",
2639
+ "name": "base-url",
2640
+ "hasDynamicHelp": false,
2641
+ "multiple": false,
2642
+ "type": "option"
2643
+ },
2644
+ "token": {
2645
+ "description": "JWT bearer token",
2646
+ "env": "FACES_TOKEN",
2647
+ "name": "token",
2648
+ "hasDynamicHelp": false,
2649
+ "multiple": false,
2650
+ "type": "option"
2651
+ },
2652
+ "api-key": {
2653
+ "description": "API key",
2654
+ "env": "FACES_API_KEY",
2655
+ "name": "api-key",
2656
+ "hasDynamicHelp": false,
2657
+ "multiple": false,
2658
+ "type": "option"
2659
+ },
2660
+ "k": {
2661
+ "description": "Number of results (1–20)",
2662
+ "name": "k",
2663
+ "default": 5,
2664
+ "hasDynamicHelp": false,
2665
+ "multiple": false,
2666
+ "type": "option"
2667
+ },
2668
+ "component": {
2669
+ "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2670
+ "name": "component",
2671
+ "default": "face",
2672
+ "hasDynamicHelp": false,
2673
+ "multiple": false,
2674
+ "options": [
2675
+ "face",
2676
+ "beta",
2677
+ "delta",
2678
+ "epsilon"
2679
+ ],
2680
+ "type": "option"
2681
+ },
2682
+ "direction": {
2683
+ "description": "nearest (most similar) or furthest (most dissimilar)",
2684
+ "name": "direction",
2685
+ "default": "nearest",
2686
+ "hasDynamicHelp": false,
2687
+ "multiple": false,
2688
+ "options": [
2689
+ "nearest",
2690
+ "furthest"
2691
+ ],
2692
+ "type": "option"
2693
+ }
2694
+ },
2695
+ "hasDynamicHelp": false,
2696
+ "hiddenAliases": [],
2697
+ "id": "face:neighbors",
2698
+ "pluginAlias": "faces-cli",
2699
+ "pluginName": "faces-cli",
2700
+ "pluginType": "core",
2701
+ "strict": true,
2702
+ "enableJsonFlag": true,
2703
+ "isESM": true,
2704
+ "relativePath": [
2705
+ "dist",
2706
+ "commands",
2707
+ "face",
2708
+ "neighbors.js"
2709
+ ]
2710
+ },
2711
+ "face:stats": {
2712
+ "aliases": [],
2713
+ "args": {},
2714
+ "description": "Compile and chat stats for all owned faces",
2715
+ "flags": {
2716
+ "json": {
2717
+ "description": "Format output as json.",
2718
+ "helpGroup": "GLOBAL",
2719
+ "name": "json",
2720
+ "allowNo": false,
2721
+ "type": "boolean"
2722
+ },
2723
+ "base-url": {
2724
+ "description": "API base URL",
2725
+ "env": "FACES_BASE_URL",
2726
+ "name": "base-url",
2727
+ "hasDynamicHelp": false,
2728
+ "multiple": false,
2729
+ "type": "option"
2730
+ },
2731
+ "token": {
2732
+ "description": "JWT bearer token",
2733
+ "env": "FACES_TOKEN",
2734
+ "name": "token",
2735
+ "hasDynamicHelp": false,
2736
+ "multiple": false,
2737
+ "type": "option"
2738
+ },
2739
+ "api-key": {
2740
+ "description": "API key",
2741
+ "env": "FACES_API_KEY",
2742
+ "name": "api-key",
2743
+ "hasDynamicHelp": false,
2744
+ "multiple": false,
2745
+ "type": "option"
2746
+ }
2747
+ },
2748
+ "hasDynamicHelp": false,
2749
+ "hiddenAliases": [],
2750
+ "id": "face:stats",
2751
+ "pluginAlias": "faces-cli",
2752
+ "pluginName": "faces-cli",
2753
+ "pluginType": "core",
2754
+ "strict": true,
2755
+ "enableJsonFlag": true,
2756
+ "isESM": true,
2757
+ "relativePath": [
2758
+ "dist",
2759
+ "commands",
2760
+ "face",
2761
+ "stats.js"
2762
+ ]
2763
+ },
2764
+ "face:teams": {
2765
+ "aliases": [],
2766
+ "args": {
2767
+ "alias": {
2768
+ "description": "Face alias",
2769
+ "name": "alias",
2770
+ "required": true
2771
+ }
2772
+ },
2773
+ "description": "Set a face's team memberships (replaces all)",
2774
+ "flags": {
2775
+ "json": {
2776
+ "description": "Format output as json.",
2777
+ "helpGroup": "GLOBAL",
2778
+ "name": "json",
2779
+ "allowNo": false,
2780
+ "type": "boolean"
2781
+ },
2782
+ "base-url": {
2783
+ "description": "API base URL",
2784
+ "env": "FACES_BASE_URL",
2785
+ "name": "base-url",
2786
+ "hasDynamicHelp": false,
2787
+ "multiple": false,
2788
+ "type": "option"
2789
+ },
2790
+ "token": {
2791
+ "description": "JWT bearer token",
2792
+ "env": "FACES_TOKEN",
2793
+ "name": "token",
2794
+ "hasDynamicHelp": false,
2795
+ "multiple": false,
2796
+ "type": "option"
2797
+ },
2798
+ "api-key": {
2799
+ "description": "API key",
2800
+ "env": "FACES_API_KEY",
2801
+ "name": "api-key",
2802
+ "hasDynamicHelp": false,
2803
+ "multiple": false,
2804
+ "type": "option"
2805
+ },
2806
+ "team": {
2807
+ "description": "Team ID (repeatable, replaces all memberships)",
2808
+ "name": "team",
2809
+ "required": true,
2810
+ "hasDynamicHelp": false,
2811
+ "multiple": true,
2812
+ "type": "option"
2813
+ }
2814
+ },
2815
+ "hasDynamicHelp": false,
2816
+ "hiddenAliases": [],
2817
+ "id": "face:teams",
2818
+ "pluginAlias": "faces-cli",
2819
+ "pluginName": "faces-cli",
2820
+ "pluginType": "core",
2821
+ "strict": true,
2822
+ "enableJsonFlag": true,
2823
+ "isESM": true,
2824
+ "relativePath": [
2825
+ "dist",
2826
+ "commands",
2827
+ "face",
2828
+ "teams.js"
2829
+ ]
2830
+ },
2831
+ "face:update": {
2832
+ "aliases": [],
2833
+ "args": {
2834
+ "face_id": {
2835
+ "description": "Face alias",
2836
+ "name": "face_id",
2837
+ "required": true
2838
+ }
2839
+ },
2840
+ "description": "Update a face's metadata",
2841
+ "flags": {
2842
+ "json": {
2843
+ "description": "Format output as json.",
2844
+ "helpGroup": "GLOBAL",
2845
+ "name": "json",
2846
+ "allowNo": false,
2847
+ "type": "boolean"
2848
+ },
2849
+ "base-url": {
2850
+ "description": "API base URL",
2851
+ "env": "FACES_BASE_URL",
2852
+ "name": "base-url",
2853
+ "hasDynamicHelp": false,
2854
+ "multiple": false,
2855
+ "type": "option"
2856
+ },
2857
+ "token": {
2858
+ "description": "JWT bearer token",
2859
+ "env": "FACES_TOKEN",
2860
+ "name": "token",
2861
+ "hasDynamicHelp": false,
2862
+ "multiple": false,
2863
+ "type": "option"
2864
+ },
2865
+ "api-key": {
2866
+ "description": "API key",
2867
+ "env": "FACES_API_KEY",
2868
+ "name": "api-key",
2869
+ "hasDynamicHelp": false,
2870
+ "multiple": false,
2871
+ "type": "option"
2872
+ },
2873
+ "name": {
2874
+ "description": "New display name",
2875
+ "name": "name",
2876
+ "hasDynamicHelp": false,
2877
+ "multiple": false,
2878
+ "type": "option"
2879
+ },
2880
+ "description": {
2881
+ "description": "Plain-text description / bio (max 1500 chars)",
2882
+ "name": "description",
2883
+ "hasDynamicHelp": false,
2884
+ "multiple": false,
2885
+ "type": "option"
2886
+ },
2887
+ "tag": {
2888
+ "description": "Replace all tags (repeatable, lowercase)",
2889
+ "name": "tag",
2890
+ "hasDynamicHelp": false,
2891
+ "multiple": true,
2892
+ "type": "option"
2893
+ },
2894
+ "default-model": {
2895
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2896
+ "name": "default-model",
2897
+ "hasDynamicHelp": false,
2898
+ "multiple": false,
2899
+ "type": "option"
2900
+ },
2901
+ "formula": {
2902
+ "description": "New boolean formula (synthetic faces only)",
2903
+ "name": "formula",
2904
+ "hasDynamicHelp": false,
2905
+ "multiple": false,
2906
+ "type": "option"
2907
+ },
2908
+ "attr": {
2909
+ "description": "Update attribute KEY=VALUE (repeatable)",
2910
+ "name": "attr",
2911
+ "hasDynamicHelp": false,
2912
+ "multiple": true,
2913
+ "type": "option"
2914
+ },
2915
+ "tool": {
2916
+ "description": "Tool names to set (replaces list, repeatable)",
2917
+ "name": "tool",
2918
+ "hasDynamicHelp": false,
2919
+ "multiple": true,
2920
+ "type": "option"
2921
+ }
2922
+ },
2923
+ "hasDynamicHelp": false,
2924
+ "hiddenAliases": [],
2925
+ "id": "face:update",
2926
+ "pluginAlias": "faces-cli",
2927
+ "pluginName": "faces-cli",
2928
+ "pluginType": "core",
2929
+ "strict": true,
2930
+ "enableJsonFlag": true,
2931
+ "isESM": true,
2932
+ "relativePath": [
2933
+ "dist",
2934
+ "commands",
2935
+ "face",
2936
+ "update.js"
2937
+ ]
2938
+ },
2939
+ "face:upload": {
2940
+ "aliases": [],
2941
+ "args": {
2942
+ "face_id": {
2943
+ "description": "Face alias",
2944
+ "name": "face_id",
2945
+ "required": true
2946
+ }
2947
+ },
2948
+ "description": "Upload a file (text/PDF/audio/video) to a face",
2949
+ "flags": {
2950
+ "json": {
2951
+ "description": "Format output as json.",
2952
+ "helpGroup": "GLOBAL",
2953
+ "name": "json",
2954
+ "allowNo": false,
2955
+ "type": "boolean"
2956
+ },
2957
+ "base-url": {
2958
+ "description": "API base URL",
2959
+ "env": "FACES_BASE_URL",
2960
+ "name": "base-url",
2961
+ "hasDynamicHelp": false,
2962
+ "multiple": false,
2963
+ "type": "option"
2964
+ },
2965
+ "token": {
2966
+ "description": "JWT bearer token",
2967
+ "env": "FACES_TOKEN",
2968
+ "name": "token",
2969
+ "hasDynamicHelp": false,
2970
+ "multiple": false,
2971
+ "type": "option"
2972
+ },
2973
+ "api-key": {
2974
+ "description": "API key",
2975
+ "env": "FACES_API_KEY",
2976
+ "name": "api-key",
2977
+ "hasDynamicHelp": false,
2978
+ "multiple": false,
2979
+ "type": "option"
2980
+ },
2981
+ "file": {
2982
+ "description": "File to upload",
2983
+ "name": "file",
2984
+ "required": true,
2985
+ "hasDynamicHelp": false,
2986
+ "multiple": false,
2987
+ "type": "option"
2988
+ },
2989
+ "kind": {
2990
+ "description": "Upload kind: document or thread",
2991
+ "name": "kind",
2992
+ "default": "document",
2993
+ "hasDynamicHelp": false,
2994
+ "multiple": false,
2995
+ "options": [
2996
+ "document",
2997
+ "thread"
2998
+ ],
2999
+ "type": "option"
3000
+ },
3001
+ "perspective": {
3002
+ "description": "Perspective (document only)",
3003
+ "name": "perspective",
3004
+ "default": "third-person",
3005
+ "hasDynamicHelp": false,
3006
+ "multiple": false,
3007
+ "options": [
3008
+ "first-person",
3009
+ "third-person"
3010
+ ],
3011
+ "type": "option"
3012
+ },
3013
+ "face-speaker": {
3014
+ "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
3015
+ "name": "face-speaker",
3016
+ "hasDynamicHelp": false,
3017
+ "multiple": false,
3018
+ "type": "option"
2865
3019
  }
2866
3020
  },
2867
3021
  "hasDynamicHelp": false,
2868
3022
  "hiddenAliases": [],
2869
- "id": "face:list",
3023
+ "id": "face:upload",
2870
3024
  "pluginAlias": "faces-cli",
2871
3025
  "pluginName": "faces-cli",
2872
3026
  "pluginType": "core",
@@ -2877,19 +3031,13 @@
2877
3031
  "dist",
2878
3032
  "commands",
2879
3033
  "face",
2880
- "list.js"
3034
+ "upload.js"
2881
3035
  ]
2882
3036
  },
2883
- "face:neighbors": {
3037
+ "keys:create": {
2884
3038
  "aliases": [],
2885
- "args": {
2886
- "face_id": {
2887
- "description": "Face alias",
2888
- "name": "face_id",
2889
- "required": true
2890
- }
2891
- },
2892
- "description": "Find the most similar or dissimilar owned faces to a given face",
3039
+ "args": {},
3040
+ "description": "Create a new API key (JWT required)",
2893
3041
  "flags": {
2894
3042
  "json": {
2895
3043
  "description": "Format output as json.",
@@ -2922,44 +3070,46 @@
2922
3070
  "multiple": false,
2923
3071
  "type": "option"
2924
3072
  },
2925
- "k": {
2926
- "description": "Number of results (1–20)",
2927
- "name": "k",
2928
- "default": 5,
3073
+ "name": {
3074
+ "description": "Key name/label",
3075
+ "name": "name",
3076
+ "required": true,
2929
3077
  "hasDynamicHelp": false,
2930
3078
  "multiple": false,
2931
3079
  "type": "option"
2932
3080
  },
2933
- "component": {
2934
- "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2935
- "name": "component",
2936
- "default": "face",
3081
+ "expires-days": {
3082
+ "description": "Expiry in days (omit for no expiry)",
3083
+ "name": "expires-days",
2937
3084
  "hasDynamicHelp": false,
2938
3085
  "multiple": false,
2939
- "options": [
2940
- "face",
2941
- "beta",
2942
- "delta",
2943
- "epsilon"
2944
- ],
2945
3086
  "type": "option"
2946
3087
  },
2947
- "direction": {
2948
- "description": "nearest (most similar) or furthest (most dissimilar)",
2949
- "name": "direction",
2950
- "default": "nearest",
3088
+ "budget": {
3089
+ "description": "Spend budget in USD",
3090
+ "name": "budget",
2951
3091
  "hasDynamicHelp": false,
2952
3092
  "multiple": false,
2953
- "options": [
2954
- "nearest",
2955
- "furthest"
2956
- ],
3093
+ "type": "option"
3094
+ },
3095
+ "face": {
3096
+ "description": "Allowed face alias (repeatable)",
3097
+ "name": "face",
3098
+ "hasDynamicHelp": false,
3099
+ "multiple": true,
3100
+ "type": "option"
3101
+ },
3102
+ "model": {
3103
+ "description": "Allowed model name (repeatable)",
3104
+ "name": "model",
3105
+ "hasDynamicHelp": false,
3106
+ "multiple": true,
2957
3107
  "type": "option"
2958
3108
  }
2959
3109
  },
2960
3110
  "hasDynamicHelp": false,
2961
3111
  "hiddenAliases": [],
2962
- "id": "face:neighbors",
3112
+ "id": "keys:create",
2963
3113
  "pluginAlias": "faces-cli",
2964
3114
  "pluginName": "faces-cli",
2965
3115
  "pluginType": "core",
@@ -2969,14 +3119,14 @@
2969
3119
  "relativePath": [
2970
3120
  "dist",
2971
3121
  "commands",
2972
- "face",
2973
- "neighbors.js"
3122
+ "keys",
3123
+ "create.js"
2974
3124
  ]
2975
3125
  },
2976
- "face:stats": {
3126
+ "keys:list": {
2977
3127
  "aliases": [],
2978
3128
  "args": {},
2979
- "description": "Compile and chat stats for all owned faces",
3129
+ "description": "List all API keys (JWT required)",
2980
3130
  "flags": {
2981
3131
  "json": {
2982
3132
  "description": "Format output as json.",
@@ -3012,7 +3162,7 @@
3012
3162
  },
3013
3163
  "hasDynamicHelp": false,
3014
3164
  "hiddenAliases": [],
3015
- "id": "face:stats",
3165
+ "id": "keys:list",
3016
3166
  "pluginAlias": "faces-cli",
3017
3167
  "pluginName": "faces-cli",
3018
3168
  "pluginType": "core",
@@ -3022,20 +3172,20 @@
3022
3172
  "relativePath": [
3023
3173
  "dist",
3024
3174
  "commands",
3025
- "face",
3026
- "stats.js"
3175
+ "keys",
3176
+ "list.js"
3027
3177
  ]
3028
3178
  },
3029
- "face:update": {
3179
+ "keys:revoke": {
3030
3180
  "aliases": [],
3031
3181
  "args": {
3032
- "face_id": {
3033
- "description": "Face alias",
3034
- "name": "face_id",
3182
+ "key_id": {
3183
+ "description": "Key ID",
3184
+ "name": "key_id",
3035
3185
  "required": true
3036
3186
  }
3037
3187
  },
3038
- "description": "Update a face's metadata",
3188
+ "description": "Revoke an API key (JWT required)",
3039
3189
  "flags": {
3040
3190
  "json": {
3041
3191
  "description": "Format output as json.",
@@ -3068,59 +3218,16 @@
3068
3218
  "multiple": false,
3069
3219
  "type": "option"
3070
3220
  },
3071
- "name": {
3072
- "description": "New display name",
3073
- "name": "name",
3074
- "hasDynamicHelp": false,
3075
- "multiple": false,
3076
- "type": "option"
3077
- },
3078
- "description": {
3079
- "description": "Plain-text description / bio (max 1500 chars)",
3080
- "name": "description",
3081
- "hasDynamicHelp": false,
3082
- "multiple": false,
3083
- "type": "option"
3084
- },
3085
- "tag": {
3086
- "description": "Replace all tags (repeatable, lowercase)",
3087
- "name": "tag",
3088
- "hasDynamicHelp": false,
3089
- "multiple": true,
3090
- "type": "option"
3091
- },
3092
- "default-model": {
3093
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
3094
- "name": "default-model",
3095
- "hasDynamicHelp": false,
3096
- "multiple": false,
3097
- "type": "option"
3098
- },
3099
- "formula": {
3100
- "description": "New boolean formula (synthetic faces only)",
3101
- "name": "formula",
3102
- "hasDynamicHelp": false,
3103
- "multiple": false,
3104
- "type": "option"
3105
- },
3106
- "attr": {
3107
- "description": "Update attribute KEY=VALUE (repeatable)",
3108
- "name": "attr",
3109
- "hasDynamicHelp": false,
3110
- "multiple": true,
3111
- "type": "option"
3112
- },
3113
- "tool": {
3114
- "description": "Tool names to set (replaces list, repeatable)",
3115
- "name": "tool",
3116
- "hasDynamicHelp": false,
3117
- "multiple": true,
3118
- "type": "option"
3221
+ "yes": {
3222
+ "description": "Skip confirmation",
3223
+ "name": "yes",
3224
+ "allowNo": false,
3225
+ "type": "boolean"
3119
3226
  }
3120
3227
  },
3121
3228
  "hasDynamicHelp": false,
3122
3229
  "hiddenAliases": [],
3123
- "id": "face:update",
3230
+ "id": "keys:revoke",
3124
3231
  "pluginAlias": "faces-cli",
3125
3232
  "pluginName": "faces-cli",
3126
3233
  "pluginType": "core",
@@ -3130,20 +3237,20 @@
3130
3237
  "relativePath": [
3131
3238
  "dist",
3132
3239
  "commands",
3133
- "face",
3134
- "update.js"
3240
+ "keys",
3241
+ "revoke.js"
3135
3242
  ]
3136
3243
  },
3137
- "face:upload": {
3244
+ "keys:update": {
3138
3245
  "aliases": [],
3139
3246
  "args": {
3140
- "face_id": {
3141
- "description": "Face alias",
3142
- "name": "face_id",
3247
+ "key_id": {
3248
+ "description": "Key ID",
3249
+ "name": "key_id",
3143
3250
  "required": true
3144
3251
  }
3145
3252
  },
3146
- "description": "Upload a file (text/PDF/audio/video) to a face",
3253
+ "description": "Update API key metadata (JWT required)",
3147
3254
  "flags": {
3148
3255
  "json": {
3149
3256
  "description": "Format output as json.",
@@ -3176,49 +3283,30 @@
3176
3283
  "multiple": false,
3177
3284
  "type": "option"
3178
3285
  },
3179
- "file": {
3180
- "description": "File to upload",
3181
- "name": "file",
3182
- "required": true,
3183
- "hasDynamicHelp": false,
3184
- "multiple": false,
3185
- "type": "option"
3186
- },
3187
- "kind": {
3188
- "description": "Upload kind: document or thread",
3189
- "name": "kind",
3190
- "default": "document",
3286
+ "name": {
3287
+ "description": "New key name",
3288
+ "name": "name",
3191
3289
  "hasDynamicHelp": false,
3192
3290
  "multiple": false,
3193
- "options": [
3194
- "document",
3195
- "thread"
3196
- ],
3197
3291
  "type": "option"
3198
3292
  },
3199
- "perspective": {
3200
- "description": "Perspective (document only)",
3201
- "name": "perspective",
3202
- "default": "third-person",
3293
+ "budget": {
3294
+ "description": "New spend budget in USD",
3295
+ "name": "budget",
3203
3296
  "hasDynamicHelp": false,
3204
3297
  "multiple": false,
3205
- "options": [
3206
- "first-person",
3207
- "third-person"
3208
- ],
3209
3298
  "type": "option"
3210
3299
  },
3211
- "face-speaker": {
3212
- "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
3213
- "name": "face-speaker",
3214
- "hasDynamicHelp": false,
3215
- "multiple": false,
3216
- "type": "option"
3300
+ "reset-spent": {
3301
+ "description": "Reset spent amount to zero",
3302
+ "name": "reset-spent",
3303
+ "allowNo": false,
3304
+ "type": "boolean"
3217
3305
  }
3218
3306
  },
3219
3307
  "hasDynamicHelp": false,
3220
3308
  "hiddenAliases": [],
3221
- "id": "face:upload",
3309
+ "id": "keys:update",
3222
3310
  "pluginAlias": "faces-cli",
3223
3311
  "pluginName": "faces-cli",
3224
3312
  "pluginType": "core",
@@ -3228,8 +3316,8 @@
3228
3316
  "relativePath": [
3229
3317
  "dist",
3230
3318
  "commands",
3231
- "face",
3232
- "upload.js"
3319
+ "keys",
3320
+ "update.js"
3233
3321
  ]
3234
3322
  },
3235
3323
  "team:add": {
@@ -5183,6 +5271,60 @@
5183
5271
  "add.js"
5184
5272
  ]
5185
5273
  },
5274
+ "face:tag:all": {
5275
+ "aliases": [],
5276
+ "args": {},
5277
+ "description": "List all tags across all your faces",
5278
+ "flags": {
5279
+ "json": {
5280
+ "description": "Format output as json.",
5281
+ "helpGroup": "GLOBAL",
5282
+ "name": "json",
5283
+ "allowNo": false,
5284
+ "type": "boolean"
5285
+ },
5286
+ "base-url": {
5287
+ "description": "API base URL",
5288
+ "env": "FACES_BASE_URL",
5289
+ "name": "base-url",
5290
+ "hasDynamicHelp": false,
5291
+ "multiple": false,
5292
+ "type": "option"
5293
+ },
5294
+ "token": {
5295
+ "description": "JWT bearer token",
5296
+ "env": "FACES_TOKEN",
5297
+ "name": "token",
5298
+ "hasDynamicHelp": false,
5299
+ "multiple": false,
5300
+ "type": "option"
5301
+ },
5302
+ "api-key": {
5303
+ "description": "API key",
5304
+ "env": "FACES_API_KEY",
5305
+ "name": "api-key",
5306
+ "hasDynamicHelp": false,
5307
+ "multiple": false,
5308
+ "type": "option"
5309
+ }
5310
+ },
5311
+ "hasDynamicHelp": false,
5312
+ "hiddenAliases": [],
5313
+ "id": "face:tag:all",
5314
+ "pluginAlias": "faces-cli",
5315
+ "pluginName": "faces-cli",
5316
+ "pluginType": "core",
5317
+ "strict": true,
5318
+ "enableJsonFlag": true,
5319
+ "isESM": true,
5320
+ "relativePath": [
5321
+ "dist",
5322
+ "commands",
5323
+ "face",
5324
+ "tag",
5325
+ "all.js"
5326
+ ]
5327
+ },
5186
5328
  "face:tag:list": {
5187
5329
  "aliases": [],
5188
5330
  "args": {
@@ -5638,5 +5780,5 @@
5638
5780
  ]
5639
5781
  }
5640
5782
  },
5641
- "version": "1.6.2"
5783
+ "version": "1.6.4"
5642
5784
  }