faces-cli 1.6.13 → 1.6.15

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.
Files changed (2) hide show
  1. package/oclif.manifest.json +472 -472
  2. package/package.json +1 -1
@@ -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 and team 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:llm-costs": {
760
748
  "aliases": [],
761
749
  "args": {},
762
- "description": "List all faces in the local catalog",
750
+ "description": "List available LLMs and their per-token costs",
763
751
  "flags": {
764
752
  "json": {
765
753
  "description": "Format output as json.",
@@ -791,11 +779,18 @@
791
779
  "hasDynamicHelp": false,
792
780
  "multiple": false,
793
781
  "type": "option"
782
+ },
783
+ "provider": {
784
+ "description": "Filter by provider (e.g. openai, anthropic)",
785
+ "name": "provider",
786
+ "hasDynamicHelp": false,
787
+ "multiple": false,
788
+ "type": "option"
794
789
  }
795
790
  },
796
791
  "hasDynamicHelp": false,
797
792
  "hiddenAliases": [],
798
- "id": "catalog:list",
793
+ "id": "billing:llm-costs",
799
794
  "pluginAlias": "faces-cli",
800
795
  "pluginName": "faces-cli",
801
796
  "pluginType": "core",
@@ -805,14 +800,14 @@
805
800
  "relativePath": [
806
801
  "dist",
807
802
  "commands",
808
- "catalog",
809
- "list.js"
803
+ "billing",
804
+ "llm-costs.js"
810
805
  ]
811
806
  },
812
- "catalog:manyfaced": {
807
+ "billing:quota": {
813
808
  "aliases": [],
814
809
  "args": {},
815
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
810
+ "description": "Show compilation stats per face (deprecated use compile:stats)",
816
811
  "flags": {
817
812
  "json": {
818
813
  "description": "Format output as json.",
@@ -844,38 +839,11 @@
844
839
  "hasDynamicHelp": false,
845
840
  "multiple": false,
846
841
  "type": "option"
847
- },
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",
865
- "hasDynamicHelp": false,
866
- "multiple": false,
867
- "type": "option"
868
- },
869
- "refresh": {
870
- "description": "Force refresh the skill index (ignore cache)",
871
- "name": "refresh",
872
- "allowNo": false,
873
- "type": "boolean"
874
842
  }
875
843
  },
876
844
  "hasDynamicHelp": false,
877
845
  "hiddenAliases": [],
878
- "id": "catalog:manyfaced",
846
+ "id": "billing:quota",
879
847
  "pluginAlias": "faces-cli",
880
848
  "pluginName": "faces-cli",
881
849
  "pluginType": "core",
@@ -885,19 +853,14 @@
885
853
  "relativePath": [
886
854
  "dist",
887
855
  "commands",
888
- "catalog",
889
- "manyfaced.js"
856
+ "billing",
857
+ "quota.js"
890
858
  ]
891
859
  },
892
- "catalog:restore": {
860
+ "billing:subscription": {
893
861
  "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",
862
+ "args": {},
863
+ "description": "Show current plan, face count, and renewal date",
901
864
  "flags": {
902
865
  "json": {
903
866
  "description": "Format output as json.",
@@ -929,17 +892,11 @@
929
892
  "hasDynamicHelp": false,
930
893
  "multiple": false,
931
894
  "type": "option"
932
- },
933
- "compile": {
934
- "description": "Run compile:all after restoring",
935
- "name": "compile",
936
- "allowNo": false,
937
- "type": "boolean"
938
895
  }
939
896
  },
940
897
  "hasDynamicHelp": false,
941
898
  "hiddenAliases": [],
942
- "id": "catalog:restore",
899
+ "id": "billing:subscription",
943
900
  "pluginAlias": "faces-cli",
944
901
  "pluginName": "faces-cli",
945
902
  "pluginType": "core",
@@ -949,14 +906,14 @@
949
906
  "relativePath": [
950
907
  "dist",
951
908
  "commands",
952
- "catalog",
953
- "restore.js"
909
+ "billing",
910
+ "subscription.js"
954
911
  ]
955
912
  },
956
- "billing:balance": {
913
+ "billing:topup": {
957
914
  "aliases": [],
958
915
  "args": {},
959
- "description": "Show credit balance and payment method status",
916
+ "description": "Top up credit balance using saved payment method",
960
917
  "flags": {
961
918
  "json": {
962
919
  "description": "Format output as json.",
@@ -988,11 +945,26 @@
988
945
  "hasDynamicHelp": false,
989
946
  "multiple": false,
990
947
  "type": "option"
948
+ },
949
+ "amount": {
950
+ "description": "Top-up amount in USD (min $1)",
951
+ "name": "amount",
952
+ "required": true,
953
+ "hasDynamicHelp": false,
954
+ "multiple": false,
955
+ "type": "option"
956
+ },
957
+ "payment-ref": {
958
+ "description": "Payment reference (admin/test path)",
959
+ "name": "payment-ref",
960
+ "hasDynamicHelp": false,
961
+ "multiple": false,
962
+ "type": "option"
991
963
  }
992
964
  },
993
965
  "hasDynamicHelp": false,
994
966
  "hiddenAliases": [],
995
- "id": "billing:balance",
967
+ "id": "billing:topup",
996
968
  "pluginAlias": "faces-cli",
997
969
  "pluginName": "faces-cli",
998
970
  "pluginType": "core",
@@ -1003,13 +975,13 @@
1003
975
  "dist",
1004
976
  "commands",
1005
977
  "billing",
1006
- "balance.js"
978
+ "topup.js"
1007
979
  ]
1008
980
  },
1009
- "billing:card-setup": {
981
+ "billing:usage": {
1010
982
  "aliases": [],
1011
983
  "args": {},
1012
- "description": "Get a Stripe card setup URL to save a payment method",
984
+ "description": "Aggregated usage analytics",
1013
985
  "flags": {
1014
986
  "json": {
1015
987
  "description": "Format output as json.",
@@ -1041,11 +1013,38 @@
1041
1013
  "hasDynamicHelp": false,
1042
1014
  "multiple": false,
1043
1015
  "type": "option"
1016
+ },
1017
+ "group-by": {
1018
+ "description": "Group results",
1019
+ "name": "group-by",
1020
+ "hasDynamicHelp": false,
1021
+ "multiple": false,
1022
+ "options": [
1023
+ "api_key",
1024
+ "model",
1025
+ "llm",
1026
+ "date"
1027
+ ],
1028
+ "type": "option"
1029
+ },
1030
+ "from": {
1031
+ "description": "Start date (YYYY-MM-DD)",
1032
+ "name": "from",
1033
+ "hasDynamicHelp": false,
1034
+ "multiple": false,
1035
+ "type": "option"
1036
+ },
1037
+ "to": {
1038
+ "description": "End date (YYYY-MM-DD)",
1039
+ "name": "to",
1040
+ "hasDynamicHelp": false,
1041
+ "multiple": false,
1042
+ "type": "option"
1044
1043
  }
1045
1044
  },
1046
1045
  "hasDynamicHelp": false,
1047
1046
  "hiddenAliases": [],
1048
- "id": "billing:card-setup",
1047
+ "id": "billing:usage",
1049
1048
  "pluginAlias": "faces-cli",
1050
1049
  "pluginName": "faces-cli",
1051
1050
  "pluginType": "core",
@@ -1056,13 +1055,13 @@
1056
1055
  "dist",
1057
1056
  "commands",
1058
1057
  "billing",
1059
- "card-setup.js"
1058
+ "usage.js"
1060
1059
  ]
1061
1060
  },
1062
- "billing:llm-costs": {
1061
+ "catalog:backup": {
1063
1062
  "aliases": [],
1064
1063
  "args": {},
1065
- "description": "List available LLMs and their per-token costs",
1064
+ "description": "Snapshot all faces, teams, and source material for migration",
1066
1065
  "flags": {
1067
1066
  "json": {
1068
1067
  "description": "Format output as json.",
@@ -1094,18 +1093,11 @@
1094
1093
  "hasDynamicHelp": false,
1095
1094
  "multiple": false,
1096
1095
  "type": "option"
1097
- },
1098
- "provider": {
1099
- "description": "Filter by provider (e.g. openai, anthropic)",
1100
- "name": "provider",
1101
- "hasDynamicHelp": false,
1102
- "multiple": false,
1103
- "type": "option"
1104
1096
  }
1105
1097
  },
1106
1098
  "hasDynamicHelp": false,
1107
1099
  "hiddenAliases": [],
1108
- "id": "billing:llm-costs",
1100
+ "id": "catalog:backup",
1109
1101
  "pluginAlias": "faces-cli",
1110
1102
  "pluginName": "faces-cli",
1111
1103
  "pluginType": "core",
@@ -1115,14 +1107,14 @@
1115
1107
  "relativePath": [
1116
1108
  "dist",
1117
1109
  "commands",
1118
- "billing",
1119
- "llm-costs.js"
1110
+ "catalog",
1111
+ "backup.js"
1120
1112
  ]
1121
1113
  },
1122
- "billing:quota": {
1114
+ "catalog:doctor": {
1123
1115
  "aliases": [],
1124
1116
  "args": {},
1125
- "description": "Show compilation stats per face (deprecated use compile:stats)",
1117
+ "description": "Diagnose and repair the local face and team catalog",
1126
1118
  "flags": {
1127
1119
  "json": {
1128
1120
  "description": "Format output as json.",
@@ -1154,11 +1146,23 @@
1154
1146
  "hasDynamicHelp": false,
1155
1147
  "multiple": false,
1156
1148
  "type": "option"
1149
+ },
1150
+ "fix": {
1151
+ "description": "Rebuild missing or stale catalog entries from API",
1152
+ "name": "fix",
1153
+ "allowNo": false,
1154
+ "type": "boolean"
1155
+ },
1156
+ "generate": {
1157
+ "description": "Fix + generate missing descriptions via LLM",
1158
+ "name": "generate",
1159
+ "allowNo": false,
1160
+ "type": "boolean"
1157
1161
  }
1158
1162
  },
1159
1163
  "hasDynamicHelp": false,
1160
1164
  "hiddenAliases": [],
1161
- "id": "billing:quota",
1165
+ "id": "catalog:doctor",
1162
1166
  "pluginAlias": "faces-cli",
1163
1167
  "pluginName": "faces-cli",
1164
1168
  "pluginType": "core",
@@ -1168,14 +1172,14 @@
1168
1172
  "relativePath": [
1169
1173
  "dist",
1170
1174
  "commands",
1171
- "billing",
1172
- "quota.js"
1175
+ "catalog",
1176
+ "doctor.js"
1173
1177
  ]
1174
1178
  },
1175
- "billing:subscription": {
1179
+ "catalog:list": {
1176
1180
  "aliases": [],
1177
1181
  "args": {},
1178
- "description": "Show current plan, face count, and renewal date",
1182
+ "description": "List all faces in the local catalog",
1179
1183
  "flags": {
1180
1184
  "json": {
1181
1185
  "description": "Format output as json.",
@@ -1211,7 +1215,7 @@
1211
1215
  },
1212
1216
  "hasDynamicHelp": false,
1213
1217
  "hiddenAliases": [],
1214
- "id": "billing:subscription",
1218
+ "id": "catalog:list",
1215
1219
  "pluginAlias": "faces-cli",
1216
1220
  "pluginName": "faces-cli",
1217
1221
  "pluginType": "core",
@@ -1221,14 +1225,14 @@
1221
1225
  "relativePath": [
1222
1226
  "dist",
1223
1227
  "commands",
1224
- "billing",
1225
- "subscription.js"
1228
+ "catalog",
1229
+ "list.js"
1226
1230
  ]
1227
1231
  },
1228
- "billing:topup": {
1232
+ "catalog:manyfaced": {
1229
1233
  "aliases": [],
1230
1234
  "args": {},
1231
- "description": "Top up credit balance using saved payment method",
1235
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1232
1236
  "flags": {
1233
1237
  "json": {
1234
1238
  "description": "Format output as json.",
@@ -1261,25 +1265,37 @@
1261
1265
  "multiple": false,
1262
1266
  "type": "option"
1263
1267
  },
1264
- "amount": {
1265
- "description": "Top-up amount in USD (min $1)",
1266
- "name": "amount",
1267
- "required": true,
1268
+ "skill": {
1269
+ "description": "Show details for a specific skill",
1270
+ "name": "skill",
1268
1271
  "hasDynamicHelp": false,
1269
1272
  "multiple": false,
1270
1273
  "type": "option"
1271
1274
  },
1272
- "payment-ref": {
1273
- "description": "Payment reference (admin/test path)",
1274
- "name": "payment-ref",
1275
+ "install": {
1276
+ "description": "Install a skill by name",
1277
+ "name": "install",
1278
+ "hasDynamicHelp": false,
1279
+ "multiple": false,
1280
+ "type": "option"
1281
+ },
1282
+ "skills-dir": {
1283
+ "description": "Directory to install skills into (required for --install)",
1284
+ "name": "skills-dir",
1275
1285
  "hasDynamicHelp": false,
1276
1286
  "multiple": false,
1277
1287
  "type": "option"
1288
+ },
1289
+ "refresh": {
1290
+ "description": "Force refresh the skill index (ignore cache)",
1291
+ "name": "refresh",
1292
+ "allowNo": false,
1293
+ "type": "boolean"
1278
1294
  }
1279
1295
  },
1280
1296
  "hasDynamicHelp": false,
1281
1297
  "hiddenAliases": [],
1282
- "id": "billing:topup",
1298
+ "id": "catalog:manyfaced",
1283
1299
  "pluginAlias": "faces-cli",
1284
1300
  "pluginName": "faces-cli",
1285
1301
  "pluginType": "core",
@@ -1289,14 +1305,19 @@
1289
1305
  "relativePath": [
1290
1306
  "dist",
1291
1307
  "commands",
1292
- "billing",
1293
- "topup.js"
1308
+ "catalog",
1309
+ "manyfaced.js"
1294
1310
  ]
1295
1311
  },
1296
- "billing:usage": {
1312
+ "catalog:restore": {
1297
1313
  "aliases": [],
1298
- "args": {},
1299
- "description": "Aggregated usage analytics",
1314
+ "args": {
1315
+ "file": {
1316
+ "description": "Backup file path (default: most recent in ~/.faces/backups/)",
1317
+ "name": "file"
1318
+ }
1319
+ },
1320
+ "description": "Restore faces, teams, and source material from a backup snapshot",
1300
1321
  "flags": {
1301
1322
  "json": {
1302
1323
  "description": "Format output as json.",
@@ -1329,37 +1350,16 @@
1329
1350
  "multiple": false,
1330
1351
  "type": "option"
1331
1352
  },
1332
- "group-by": {
1333
- "description": "Group results",
1334
- "name": "group-by",
1335
- "hasDynamicHelp": false,
1336
- "multiple": false,
1337
- "options": [
1338
- "api_key",
1339
- "model",
1340
- "llm",
1341
- "date"
1342
- ],
1343
- "type": "option"
1344
- },
1345
- "from": {
1346
- "description": "Start date (YYYY-MM-DD)",
1347
- "name": "from",
1348
- "hasDynamicHelp": false,
1349
- "multiple": false,
1350
- "type": "option"
1351
- },
1352
- "to": {
1353
- "description": "End date (YYYY-MM-DD)",
1354
- "name": "to",
1355
- "hasDynamicHelp": false,
1356
- "multiple": false,
1357
- "type": "option"
1353
+ "compile": {
1354
+ "description": "Run compile:all after restoring",
1355
+ "name": "compile",
1356
+ "allowNo": false,
1357
+ "type": "boolean"
1358
1358
  }
1359
1359
  },
1360
1360
  "hasDynamicHelp": false,
1361
1361
  "hiddenAliases": [],
1362
- "id": "billing:usage",
1362
+ "id": "catalog:restore",
1363
1363
  "pluginAlias": "faces-cli",
1364
1364
  "pluginName": "faces-cli",
1365
1365
  "pluginType": "core",
@@ -1369,8 +1369,8 @@
1369
1369
  "relativePath": [
1370
1370
  "dist",
1371
1371
  "commands",
1372
- "billing",
1373
- "usage.js"
1372
+ "catalog",
1373
+ "restore.js"
1374
1374
  ]
1375
1375
  },
1376
1376
  "chat:chat": {
@@ -2174,10 +2174,10 @@
2174
2174
  "show.js"
2175
2175
  ]
2176
2176
  },
2177
- "keys:create": {
2177
+ "face:attributes": {
2178
2178
  "aliases": [],
2179
2179
  "args": {},
2180
- "description": "Create a new API key (JWT required)",
2180
+ "description": "List all supported attribute keys",
2181
2181
  "flags": {
2182
2182
  "json": {
2183
2183
  "description": "Format output as json.",
@@ -2209,47 +2209,11 @@
2209
2209
  "hasDynamicHelp": false,
2210
2210
  "multiple": false,
2211
2211
  "type": "option"
2212
- },
2213
- "name": {
2214
- "description": "Key name/label",
2215
- "name": "name",
2216
- "required": true,
2217
- "hasDynamicHelp": false,
2218
- "multiple": false,
2219
- "type": "option"
2220
- },
2221
- "expires-days": {
2222
- "description": "Expiry in days (omit for no expiry)",
2223
- "name": "expires-days",
2224
- "hasDynamicHelp": false,
2225
- "multiple": false,
2226
- "type": "option"
2227
- },
2228
- "budget": {
2229
- "description": "Spend budget in USD",
2230
- "name": "budget",
2231
- "hasDynamicHelp": false,
2232
- "multiple": false,
2233
- "type": "option"
2234
- },
2235
- "face": {
2236
- "description": "Allowed face alias (repeatable)",
2237
- "name": "face",
2238
- "hasDynamicHelp": false,
2239
- "multiple": true,
2240
- "type": "option"
2241
- },
2242
- "model": {
2243
- "description": "Allowed model name (repeatable)",
2244
- "name": "model",
2245
- "hasDynamicHelp": false,
2246
- "multiple": true,
2247
- "type": "option"
2248
2212
  }
2249
2213
  },
2250
2214
  "hasDynamicHelp": false,
2251
2215
  "hiddenAliases": [],
2252
- "id": "keys:create",
2216
+ "id": "face:attributes",
2253
2217
  "pluginAlias": "faces-cli",
2254
2218
  "pluginName": "faces-cli",
2255
2219
  "pluginType": "core",
@@ -2259,14 +2223,14 @@
2259
2223
  "relativePath": [
2260
2224
  "dist",
2261
2225
  "commands",
2262
- "keys",
2263
- "create.js"
2226
+ "face",
2227
+ "attributes.js"
2264
2228
  ]
2265
2229
  },
2266
- "keys:list": {
2230
+ "face:create": {
2267
2231
  "aliases": [],
2268
2232
  "args": {},
2269
- "description": "List all API keys (JWT required)",
2233
+ "description": "Create a new face",
2270
2234
  "flags": {
2271
2235
  "json": {
2272
2236
  "description": "Format output as json.",
@@ -2298,11 +2262,69 @@
2298
2262
  "hasDynamicHelp": false,
2299
2263
  "multiple": false,
2300
2264
  "type": "option"
2265
+ },
2266
+ "name": {
2267
+ "description": "Display name",
2268
+ "name": "name",
2269
+ "required": true,
2270
+ "hasDynamicHelp": false,
2271
+ "multiple": false,
2272
+ "type": "option"
2273
+ },
2274
+ "alias": {
2275
+ "description": "Unique alias slug",
2276
+ "name": "alias",
2277
+ "required": true,
2278
+ "hasDynamicHelp": false,
2279
+ "multiple": false,
2280
+ "type": "option"
2281
+ },
2282
+ "description": {
2283
+ "description": "Plain-text description / bio (max 1500 chars)",
2284
+ "name": "description",
2285
+ "hasDynamicHelp": false,
2286
+ "multiple": false,
2287
+ "type": "option"
2288
+ },
2289
+ "tag": {
2290
+ "description": "Tag label (repeatable, lowercase)",
2291
+ "name": "tag",
2292
+ "hasDynamicHelp": false,
2293
+ "multiple": true,
2294
+ "type": "option"
2295
+ },
2296
+ "default-model": {
2297
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2298
+ "name": "default-model",
2299
+ "hasDynamicHelp": false,
2300
+ "multiple": false,
2301
+ "type": "option"
2302
+ },
2303
+ "formula": {
2304
+ "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
2305
+ "name": "formula",
2306
+ "hasDynamicHelp": false,
2307
+ "multiple": false,
2308
+ "type": "option"
2309
+ },
2310
+ "attr": {
2311
+ "description": "Attribute KEY=VALUE (repeatable)",
2312
+ "name": "attr",
2313
+ "hasDynamicHelp": false,
2314
+ "multiple": true,
2315
+ "type": "option"
2316
+ },
2317
+ "tool": {
2318
+ "description": "Tool name to enable (repeatable)",
2319
+ "name": "tool",
2320
+ "hasDynamicHelp": false,
2321
+ "multiple": true,
2322
+ "type": "option"
2301
2323
  }
2302
2324
  },
2303
2325
  "hasDynamicHelp": false,
2304
2326
  "hiddenAliases": [],
2305
- "id": "keys:list",
2327
+ "id": "face:create",
2306
2328
  "pluginAlias": "faces-cli",
2307
2329
  "pluginName": "faces-cli",
2308
2330
  "pluginType": "core",
@@ -2312,20 +2334,20 @@
2312
2334
  "relativePath": [
2313
2335
  "dist",
2314
2336
  "commands",
2315
- "keys",
2316
- "list.js"
2337
+ "face",
2338
+ "create.js"
2317
2339
  ]
2318
2340
  },
2319
- "keys:revoke": {
2341
+ "face:delete": {
2320
2342
  "aliases": [],
2321
2343
  "args": {
2322
- "key_id": {
2323
- "description": "Key ID",
2324
- "name": "key_id",
2344
+ "face_id": {
2345
+ "description": "Face alias",
2346
+ "name": "face_id",
2325
2347
  "required": true
2326
2348
  }
2327
2349
  },
2328
- "description": "Revoke an API key (JWT required)",
2350
+ "description": "Delete a face permanently",
2329
2351
  "flags": {
2330
2352
  "json": {
2331
2353
  "description": "Format output as json.",
@@ -2367,7 +2389,7 @@
2367
2389
  },
2368
2390
  "hasDynamicHelp": false,
2369
2391
  "hiddenAliases": [],
2370
- "id": "keys:revoke",
2392
+ "id": "face:delete",
2371
2393
  "pluginAlias": "faces-cli",
2372
2394
  "pluginName": "faces-cli",
2373
2395
  "pluginType": "core",
@@ -2377,20 +2399,14 @@
2377
2399
  "relativePath": [
2378
2400
  "dist",
2379
2401
  "commands",
2380
- "keys",
2381
- "revoke.js"
2402
+ "face",
2403
+ "delete.js"
2382
2404
  ]
2383
2405
  },
2384
- "keys:update": {
2406
+ "face:diff": {
2385
2407
  "aliases": [],
2386
- "args": {
2387
- "key_id": {
2388
- "description": "Key ID",
2389
- "name": "key_id",
2390
- "required": true
2391
- }
2392
- },
2393
- "description": "Update API key metadata (JWT required)",
2408
+ "args": {},
2409
+ "description": "Compare owned faces pairwise across all centroid components",
2394
2410
  "flags": {
2395
2411
  "json": {
2396
2412
  "description": "Format output as json.",
@@ -2423,30 +2439,18 @@
2423
2439
  "multiple": false,
2424
2440
  "type": "option"
2425
2441
  },
2426
- "name": {
2427
- "description": "New key name",
2428
- "name": "name",
2429
- "hasDynamicHelp": false,
2430
- "multiple": false,
2431
- "type": "option"
2432
- },
2433
- "budget": {
2434
- "description": "New spend budget in USD",
2435
- "name": "budget",
2442
+ "face": {
2443
+ "description": "Face alias to include (repeatable, min 2)",
2444
+ "name": "face",
2445
+ "required": true,
2436
2446
  "hasDynamicHelp": false,
2437
- "multiple": false,
2447
+ "multiple": true,
2438
2448
  "type": "option"
2439
- },
2440
- "reset-spent": {
2441
- "description": "Reset spent amount to zero",
2442
- "name": "reset-spent",
2443
- "allowNo": false,
2444
- "type": "boolean"
2445
2449
  }
2446
2450
  },
2447
2451
  "hasDynamicHelp": false,
2448
2452
  "hiddenAliases": [],
2449
- "id": "keys:update",
2453
+ "id": "face:diff",
2450
2454
  "pluginAlias": "faces-cli",
2451
2455
  "pluginName": "faces-cli",
2452
2456
  "pluginType": "core",
@@ -2456,67 +2460,20 @@
2456
2460
  "relativePath": [
2457
2461
  "dist",
2458
2462
  "commands",
2459
- "keys",
2460
- "update.js"
2463
+ "face",
2464
+ "diff.js"
2461
2465
  ]
2462
2466
  },
2463
- "face:attributes": {
2467
+ "face:edit": {
2464
2468
  "aliases": [],
2465
- "args": {},
2466
- "description": "List all supported attribute keys",
2467
- "flags": {
2468
- "json": {
2469
- "description": "Format output as json.",
2470
- "helpGroup": "GLOBAL",
2471
- "name": "json",
2472
- "allowNo": false,
2473
- "type": "boolean"
2474
- },
2475
- "base-url": {
2476
- "description": "API base URL",
2477
- "env": "FACES_BASE_URL",
2478
- "name": "base-url",
2479
- "hasDynamicHelp": false,
2480
- "multiple": false,
2481
- "type": "option"
2482
- },
2483
- "token": {
2484
- "description": "JWT bearer token",
2485
- "env": "FACES_TOKEN",
2486
- "name": "token",
2487
- "hasDynamicHelp": false,
2488
- "multiple": false,
2489
- "type": "option"
2490
- },
2491
- "api-key": {
2492
- "description": "API key",
2493
- "env": "FACES_API_KEY",
2494
- "name": "api-key",
2495
- "hasDynamicHelp": false,
2496
- "multiple": false,
2497
- "type": "option"
2498
- }
2499
- },
2500
- "hasDynamicHelp": false,
2501
- "hiddenAliases": [],
2502
- "id": "face:attributes",
2503
- "pluginAlias": "faces-cli",
2504
- "pluginName": "faces-cli",
2505
- "pluginType": "core",
2506
- "strict": true,
2507
- "enableJsonFlag": true,
2508
- "isESM": true,
2509
- "relativePath": [
2510
- "dist",
2511
- "commands",
2512
- "face",
2513
- "attributes.js"
2514
- ]
2515
- },
2516
- "face:create": {
2517
- "aliases": [],
2518
- "args": {},
2519
- "description": "Create a new face",
2469
+ "args": {
2470
+ "face_id": {
2471
+ "description": "Face alias",
2472
+ "name": "face_id",
2473
+ "required": true
2474
+ }
2475
+ },
2476
+ "description": "Edit a face's metadata",
2520
2477
  "flags": {
2521
2478
  "json": {
2522
2479
  "description": "Format output as json.",
@@ -2550,17 +2507,8 @@
2550
2507
  "type": "option"
2551
2508
  },
2552
2509
  "name": {
2553
- "description": "Display name",
2510
+ "description": "New display name",
2554
2511
  "name": "name",
2555
- "required": true,
2556
- "hasDynamicHelp": false,
2557
- "multiple": false,
2558
- "type": "option"
2559
- },
2560
- "alias": {
2561
- "description": "Unique alias slug",
2562
- "name": "alias",
2563
- "required": true,
2564
2512
  "hasDynamicHelp": false,
2565
2513
  "multiple": false,
2566
2514
  "type": "option"
@@ -2573,7 +2521,7 @@
2573
2521
  "type": "option"
2574
2522
  },
2575
2523
  "tag": {
2576
- "description": "Tag label (repeatable, lowercase)",
2524
+ "description": "Replace all tags (repeatable, lowercase)",
2577
2525
  "name": "tag",
2578
2526
  "hasDynamicHelp": false,
2579
2527
  "multiple": true,
@@ -2587,21 +2535,21 @@
2587
2535
  "type": "option"
2588
2536
  },
2589
2537
  "formula": {
2590
- "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
2538
+ "description": "New boolean formula (synthetic faces only)",
2591
2539
  "name": "formula",
2592
2540
  "hasDynamicHelp": false,
2593
2541
  "multiple": false,
2594
2542
  "type": "option"
2595
2543
  },
2596
2544
  "attr": {
2597
- "description": "Attribute KEY=VALUE (repeatable)",
2545
+ "description": "Update attribute KEY=VALUE (repeatable)",
2598
2546
  "name": "attr",
2599
2547
  "hasDynamicHelp": false,
2600
2548
  "multiple": true,
2601
2549
  "type": "option"
2602
2550
  },
2603
2551
  "tool": {
2604
- "description": "Tool name to enable (repeatable)",
2552
+ "description": "Tool names to set (replaces list, repeatable)",
2605
2553
  "name": "tool",
2606
2554
  "hasDynamicHelp": false,
2607
2555
  "multiple": true,
@@ -2610,7 +2558,7 @@
2610
2558
  },
2611
2559
  "hasDynamicHelp": false,
2612
2560
  "hiddenAliases": [],
2613
- "id": "face:create",
2561
+ "id": "face:edit",
2614
2562
  "pluginAlias": "faces-cli",
2615
2563
  "pluginName": "faces-cli",
2616
2564
  "pluginType": "core",
@@ -2621,10 +2569,10 @@
2621
2569
  "dist",
2622
2570
  "commands",
2623
2571
  "face",
2624
- "create.js"
2572
+ "edit.js"
2625
2573
  ]
2626
2574
  },
2627
- "face:delete": {
2575
+ "face:get": {
2628
2576
  "aliases": [],
2629
2577
  "args": {
2630
2578
  "face_id": {
@@ -2633,7 +2581,7 @@
2633
2581
  "required": true
2634
2582
  }
2635
2583
  },
2636
- "description": "Delete a face permanently",
2584
+ "description": "Get details for a face by alias",
2637
2585
  "flags": {
2638
2586
  "json": {
2639
2587
  "description": "Format output as json.",
@@ -2666,16 +2614,17 @@
2666
2614
  "multiple": false,
2667
2615
  "type": "option"
2668
2616
  },
2669
- "yes": {
2670
- "description": "Skip confirmation",
2671
- "name": "yes",
2672
- "allowNo": false,
2673
- "type": "boolean"
2617
+ "include": {
2618
+ "description": "Include extra fields: tags, teams (comma-separated)",
2619
+ "name": "include",
2620
+ "hasDynamicHelp": false,
2621
+ "multiple": false,
2622
+ "type": "option"
2674
2623
  }
2675
2624
  },
2676
2625
  "hasDynamicHelp": false,
2677
2626
  "hiddenAliases": [],
2678
- "id": "face:delete",
2627
+ "id": "face:get",
2679
2628
  "pluginAlias": "faces-cli",
2680
2629
  "pluginName": "faces-cli",
2681
2630
  "pluginType": "core",
@@ -2686,13 +2635,13 @@
2686
2635
  "dist",
2687
2636
  "commands",
2688
2637
  "face",
2689
- "delete.js"
2638
+ "get.js"
2690
2639
  ]
2691
2640
  },
2692
- "face:diff": {
2641
+ "face:list": {
2693
2642
  "aliases": [],
2694
2643
  "args": {},
2695
- "description": "Compare owned faces pairwise across all centroid components",
2644
+ "description": "List all owned faces",
2696
2645
  "flags": {
2697
2646
  "json": {
2698
2647
  "description": "Format output as json.",
@@ -2725,18 +2674,31 @@
2725
2674
  "multiple": false,
2726
2675
  "type": "option"
2727
2676
  },
2728
- "face": {
2729
- "description": "Face alias to include (repeatable, min 2)",
2730
- "name": "face",
2731
- "required": true,
2677
+ "tag": {
2678
+ "description": "Filter by tag (repeatable, AND logic)",
2679
+ "name": "tag",
2680
+ "hasDynamicHelp": false,
2681
+ "multiple": true,
2682
+ "type": "option"
2683
+ },
2684
+ "team": {
2685
+ "description": "Filter by team ID (repeatable, OR logic)",
2686
+ "name": "team",
2732
2687
  "hasDynamicHelp": false,
2733
2688
  "multiple": true,
2734
2689
  "type": "option"
2690
+ },
2691
+ "include": {
2692
+ "description": "Include extra fields: tags, teams (comma-separated)",
2693
+ "name": "include",
2694
+ "hasDynamicHelp": false,
2695
+ "multiple": false,
2696
+ "type": "option"
2735
2697
  }
2736
2698
  },
2737
2699
  "hasDynamicHelp": false,
2738
2700
  "hiddenAliases": [],
2739
- "id": "face:diff",
2701
+ "id": "face:list",
2740
2702
  "pluginAlias": "faces-cli",
2741
2703
  "pluginName": "faces-cli",
2742
2704
  "pluginType": "core",
@@ -2747,10 +2709,10 @@
2747
2709
  "dist",
2748
2710
  "commands",
2749
2711
  "face",
2750
- "diff.js"
2712
+ "list.js"
2751
2713
  ]
2752
2714
  },
2753
- "face:edit": {
2715
+ "face:neighbors": {
2754
2716
  "aliases": [],
2755
2717
  "args": {
2756
2718
  "face_id": {
@@ -2759,7 +2721,7 @@
2759
2721
  "required": true
2760
2722
  }
2761
2723
  },
2762
- "description": "Edit a face's metadata",
2724
+ "description": "Find the most similar or dissimilar owned faces to a given face",
2763
2725
  "flags": {
2764
2726
  "json": {
2765
2727
  "description": "Format output as json.",
@@ -2792,59 +2754,97 @@
2792
2754
  "multiple": false,
2793
2755
  "type": "option"
2794
2756
  },
2795
- "name": {
2796
- "description": "New display name",
2797
- "name": "name",
2757
+ "k": {
2758
+ "description": "Number of results (1–20)",
2759
+ "name": "k",
2760
+ "default": 5,
2798
2761
  "hasDynamicHelp": false,
2799
2762
  "multiple": false,
2800
2763
  "type": "option"
2801
2764
  },
2802
- "description": {
2803
- "description": "Plain-text description / bio (max 1500 chars)",
2804
- "name": "description",
2765
+ "component": {
2766
+ "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2767
+ "name": "component",
2768
+ "default": "face",
2805
2769
  "hasDynamicHelp": false,
2806
2770
  "multiple": false,
2771
+ "options": [
2772
+ "face",
2773
+ "beta",
2774
+ "delta",
2775
+ "epsilon"
2776
+ ],
2807
2777
  "type": "option"
2808
2778
  },
2809
- "tag": {
2810
- "description": "Replace all tags (repeatable, lowercase)",
2811
- "name": "tag",
2812
- "hasDynamicHelp": false,
2813
- "multiple": true,
2814
- "type": "option"
2815
- },
2816
- "default-model": {
2817
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2818
- "name": "default-model",
2779
+ "direction": {
2780
+ "description": "nearest (most similar) or furthest (most dissimilar)",
2781
+ "name": "direction",
2782
+ "default": "nearest",
2819
2783
  "hasDynamicHelp": false,
2820
2784
  "multiple": false,
2785
+ "options": [
2786
+ "nearest",
2787
+ "furthest"
2788
+ ],
2821
2789
  "type": "option"
2790
+ }
2791
+ },
2792
+ "hasDynamicHelp": false,
2793
+ "hiddenAliases": [],
2794
+ "id": "face:neighbors",
2795
+ "pluginAlias": "faces-cli",
2796
+ "pluginName": "faces-cli",
2797
+ "pluginType": "core",
2798
+ "strict": true,
2799
+ "enableJsonFlag": true,
2800
+ "isESM": true,
2801
+ "relativePath": [
2802
+ "dist",
2803
+ "commands",
2804
+ "face",
2805
+ "neighbors.js"
2806
+ ]
2807
+ },
2808
+ "face:stats": {
2809
+ "aliases": [],
2810
+ "args": {},
2811
+ "description": "Compile and chat stats for all owned faces",
2812
+ "flags": {
2813
+ "json": {
2814
+ "description": "Format output as json.",
2815
+ "helpGroup": "GLOBAL",
2816
+ "name": "json",
2817
+ "allowNo": false,
2818
+ "type": "boolean"
2822
2819
  },
2823
- "formula": {
2824
- "description": "New boolean formula (synthetic faces only)",
2825
- "name": "formula",
2820
+ "base-url": {
2821
+ "description": "API base URL",
2822
+ "env": "FACES_BASE_URL",
2823
+ "name": "base-url",
2826
2824
  "hasDynamicHelp": false,
2827
2825
  "multiple": false,
2828
2826
  "type": "option"
2829
2827
  },
2830
- "attr": {
2831
- "description": "Update attribute KEY=VALUE (repeatable)",
2832
- "name": "attr",
2828
+ "token": {
2829
+ "description": "JWT bearer token",
2830
+ "env": "FACES_TOKEN",
2831
+ "name": "token",
2833
2832
  "hasDynamicHelp": false,
2834
- "multiple": true,
2833
+ "multiple": false,
2835
2834
  "type": "option"
2836
2835
  },
2837
- "tool": {
2838
- "description": "Tool names to set (replaces list, repeatable)",
2839
- "name": "tool",
2836
+ "api-key": {
2837
+ "description": "API key",
2838
+ "env": "FACES_API_KEY",
2839
+ "name": "api-key",
2840
2840
  "hasDynamicHelp": false,
2841
- "multiple": true,
2841
+ "multiple": false,
2842
2842
  "type": "option"
2843
2843
  }
2844
2844
  },
2845
2845
  "hasDynamicHelp": false,
2846
2846
  "hiddenAliases": [],
2847
- "id": "face:edit",
2847
+ "id": "face:stats",
2848
2848
  "pluginAlias": "faces-cli",
2849
2849
  "pluginName": "faces-cli",
2850
2850
  "pluginType": "core",
@@ -2855,19 +2855,19 @@
2855
2855
  "dist",
2856
2856
  "commands",
2857
2857
  "face",
2858
- "edit.js"
2858
+ "stats.js"
2859
2859
  ]
2860
2860
  },
2861
- "face:get": {
2861
+ "face:teams": {
2862
2862
  "aliases": [],
2863
2863
  "args": {
2864
- "face_id": {
2864
+ "alias": {
2865
2865
  "description": "Face alias",
2866
- "name": "face_id",
2866
+ "name": "alias",
2867
2867
  "required": true
2868
2868
  }
2869
2869
  },
2870
- "description": "Get details for a face by alias",
2870
+ "description": "Set a face's team memberships (replaces all)",
2871
2871
  "flags": {
2872
2872
  "json": {
2873
2873
  "description": "Format output as json.",
@@ -2900,17 +2900,18 @@
2900
2900
  "multiple": false,
2901
2901
  "type": "option"
2902
2902
  },
2903
- "include": {
2904
- "description": "Include extra fields: tags, teams (comma-separated)",
2905
- "name": "include",
2903
+ "team": {
2904
+ "description": "Team ID (repeatable, replaces all memberships)",
2905
+ "name": "team",
2906
+ "required": true,
2906
2907
  "hasDynamicHelp": false,
2907
- "multiple": false,
2908
+ "multiple": true,
2908
2909
  "type": "option"
2909
2910
  }
2910
2911
  },
2911
2912
  "hasDynamicHelp": false,
2912
2913
  "hiddenAliases": [],
2913
- "id": "face:get",
2914
+ "id": "face:teams",
2914
2915
  "pluginAlias": "faces-cli",
2915
2916
  "pluginName": "faces-cli",
2916
2917
  "pluginType": "core",
@@ -2921,13 +2922,19 @@
2921
2922
  "dist",
2922
2923
  "commands",
2923
2924
  "face",
2924
- "get.js"
2925
+ "teams.js"
2925
2926
  ]
2926
2927
  },
2927
- "face:list": {
2928
+ "face:upload": {
2928
2929
  "aliases": [],
2929
- "args": {},
2930
- "description": "List all owned faces",
2930
+ "args": {
2931
+ "face_id": {
2932
+ "description": "Face alias",
2933
+ "name": "face_id",
2934
+ "required": true
2935
+ }
2936
+ },
2937
+ "description": "Upload a file (text/PDF/audio/video) to a face",
2931
2938
  "flags": {
2932
2939
  "json": {
2933
2940
  "description": "Format output as json.",
@@ -2960,23 +2967,41 @@
2960
2967
  "multiple": false,
2961
2968
  "type": "option"
2962
2969
  },
2963
- "tag": {
2964
- "description": "Filter by tag (repeatable, AND logic)",
2965
- "name": "tag",
2970
+ "file": {
2971
+ "description": "File to upload",
2972
+ "name": "file",
2973
+ "required": true,
2966
2974
  "hasDynamicHelp": false,
2967
- "multiple": true,
2975
+ "multiple": false,
2968
2976
  "type": "option"
2969
2977
  },
2970
- "team": {
2971
- "description": "Filter by team ID (repeatable, OR logic)",
2972
- "name": "team",
2978
+ "kind": {
2979
+ "description": "Upload kind: document or thread",
2980
+ "name": "kind",
2981
+ "default": "document",
2973
2982
  "hasDynamicHelp": false,
2974
- "multiple": true,
2983
+ "multiple": false,
2984
+ "options": [
2985
+ "document",
2986
+ "thread"
2987
+ ],
2975
2988
  "type": "option"
2976
2989
  },
2977
- "include": {
2978
- "description": "Include extra fields: tags, teams (comma-separated)",
2979
- "name": "include",
2990
+ "perspective": {
2991
+ "description": "Perspective (document only)",
2992
+ "name": "perspective",
2993
+ "default": "third-person",
2994
+ "hasDynamicHelp": false,
2995
+ "multiple": false,
2996
+ "options": [
2997
+ "first-person",
2998
+ "third-person"
2999
+ ],
3000
+ "type": "option"
3001
+ },
3002
+ "face-speaker": {
3003
+ "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
3004
+ "name": "face-speaker",
2980
3005
  "hasDynamicHelp": false,
2981
3006
  "multiple": false,
2982
3007
  "type": "option"
@@ -2984,7 +3009,7 @@
2984
3009
  },
2985
3010
  "hasDynamicHelp": false,
2986
3011
  "hiddenAliases": [],
2987
- "id": "face:list",
3012
+ "id": "face:upload",
2988
3013
  "pluginAlias": "faces-cli",
2989
3014
  "pluginName": "faces-cli",
2990
3015
  "pluginType": "core",
@@ -2995,19 +3020,13 @@
2995
3020
  "dist",
2996
3021
  "commands",
2997
3022
  "face",
2998
- "list.js"
3023
+ "upload.js"
2999
3024
  ]
3000
3025
  },
3001
- "face:neighbors": {
3026
+ "keys:create": {
3002
3027
  "aliases": [],
3003
- "args": {
3004
- "face_id": {
3005
- "description": "Face alias",
3006
- "name": "face_id",
3007
- "required": true
3008
- }
3009
- },
3010
- "description": "Find the most similar or dissimilar owned faces to a given face",
3028
+ "args": {},
3029
+ "description": "Create a new API key (JWT required)",
3011
3030
  "flags": {
3012
3031
  "json": {
3013
3032
  "description": "Format output as json.",
@@ -3040,44 +3059,46 @@
3040
3059
  "multiple": false,
3041
3060
  "type": "option"
3042
3061
  },
3043
- "k": {
3044
- "description": "Number of results (1–20)",
3045
- "name": "k",
3046
- "default": 5,
3062
+ "name": {
3063
+ "description": "Key name/label",
3064
+ "name": "name",
3065
+ "required": true,
3047
3066
  "hasDynamicHelp": false,
3048
3067
  "multiple": false,
3049
3068
  "type": "option"
3050
3069
  },
3051
- "component": {
3052
- "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
3053
- "name": "component",
3054
- "default": "face",
3070
+ "expires-days": {
3071
+ "description": "Expiry in days (omit for no expiry)",
3072
+ "name": "expires-days",
3055
3073
  "hasDynamicHelp": false,
3056
3074
  "multiple": false,
3057
- "options": [
3058
- "face",
3059
- "beta",
3060
- "delta",
3061
- "epsilon"
3062
- ],
3063
3075
  "type": "option"
3064
3076
  },
3065
- "direction": {
3066
- "description": "nearest (most similar) or furthest (most dissimilar)",
3067
- "name": "direction",
3068
- "default": "nearest",
3077
+ "budget": {
3078
+ "description": "Spend budget in USD",
3079
+ "name": "budget",
3069
3080
  "hasDynamicHelp": false,
3070
3081
  "multiple": false,
3071
- "options": [
3072
- "nearest",
3073
- "furthest"
3074
- ],
3082
+ "type": "option"
3083
+ },
3084
+ "face": {
3085
+ "description": "Allowed face alias (repeatable)",
3086
+ "name": "face",
3087
+ "hasDynamicHelp": false,
3088
+ "multiple": true,
3089
+ "type": "option"
3090
+ },
3091
+ "model": {
3092
+ "description": "Allowed model name (repeatable)",
3093
+ "name": "model",
3094
+ "hasDynamicHelp": false,
3095
+ "multiple": true,
3075
3096
  "type": "option"
3076
3097
  }
3077
3098
  },
3078
3099
  "hasDynamicHelp": false,
3079
3100
  "hiddenAliases": [],
3080
- "id": "face:neighbors",
3101
+ "id": "keys:create",
3081
3102
  "pluginAlias": "faces-cli",
3082
3103
  "pluginName": "faces-cli",
3083
3104
  "pluginType": "core",
@@ -3087,14 +3108,14 @@
3087
3108
  "relativePath": [
3088
3109
  "dist",
3089
3110
  "commands",
3090
- "face",
3091
- "neighbors.js"
3111
+ "keys",
3112
+ "create.js"
3092
3113
  ]
3093
3114
  },
3094
- "face:stats": {
3115
+ "keys:list": {
3095
3116
  "aliases": [],
3096
3117
  "args": {},
3097
- "description": "Compile and chat stats for all owned faces",
3118
+ "description": "List all API keys (JWT required)",
3098
3119
  "flags": {
3099
3120
  "json": {
3100
3121
  "description": "Format output as json.",
@@ -3130,7 +3151,7 @@
3130
3151
  },
3131
3152
  "hasDynamicHelp": false,
3132
3153
  "hiddenAliases": [],
3133
- "id": "face:stats",
3154
+ "id": "keys:list",
3134
3155
  "pluginAlias": "faces-cli",
3135
3156
  "pluginName": "faces-cli",
3136
3157
  "pluginType": "core",
@@ -3140,20 +3161,20 @@
3140
3161
  "relativePath": [
3141
3162
  "dist",
3142
3163
  "commands",
3143
- "face",
3144
- "stats.js"
3164
+ "keys",
3165
+ "list.js"
3145
3166
  ]
3146
3167
  },
3147
- "face:teams": {
3168
+ "keys:revoke": {
3148
3169
  "aliases": [],
3149
3170
  "args": {
3150
- "alias": {
3151
- "description": "Face alias",
3152
- "name": "alias",
3171
+ "key_id": {
3172
+ "description": "Key ID",
3173
+ "name": "key_id",
3153
3174
  "required": true
3154
3175
  }
3155
3176
  },
3156
- "description": "Set a face's team memberships (replaces all)",
3177
+ "description": "Revoke an API key (JWT required)",
3157
3178
  "flags": {
3158
3179
  "json": {
3159
3180
  "description": "Format output as json.",
@@ -3186,18 +3207,16 @@
3186
3207
  "multiple": false,
3187
3208
  "type": "option"
3188
3209
  },
3189
- "team": {
3190
- "description": "Team ID (repeatable, replaces all memberships)",
3191
- "name": "team",
3192
- "required": true,
3193
- "hasDynamicHelp": false,
3194
- "multiple": true,
3195
- "type": "option"
3210
+ "yes": {
3211
+ "description": "Skip confirmation",
3212
+ "name": "yes",
3213
+ "allowNo": false,
3214
+ "type": "boolean"
3196
3215
  }
3197
3216
  },
3198
3217
  "hasDynamicHelp": false,
3199
3218
  "hiddenAliases": [],
3200
- "id": "face:teams",
3219
+ "id": "keys:revoke",
3201
3220
  "pluginAlias": "faces-cli",
3202
3221
  "pluginName": "faces-cli",
3203
3222
  "pluginType": "core",
@@ -3207,20 +3226,20 @@
3207
3226
  "relativePath": [
3208
3227
  "dist",
3209
3228
  "commands",
3210
- "face",
3211
- "teams.js"
3229
+ "keys",
3230
+ "revoke.js"
3212
3231
  ]
3213
3232
  },
3214
- "face:upload": {
3233
+ "keys:update": {
3215
3234
  "aliases": [],
3216
3235
  "args": {
3217
- "face_id": {
3218
- "description": "Face alias",
3219
- "name": "face_id",
3236
+ "key_id": {
3237
+ "description": "Key ID",
3238
+ "name": "key_id",
3220
3239
  "required": true
3221
3240
  }
3222
3241
  },
3223
- "description": "Upload a file (text/PDF/audio/video) to a face",
3242
+ "description": "Update API key metadata (JWT required)",
3224
3243
  "flags": {
3225
3244
  "json": {
3226
3245
  "description": "Format output as json.",
@@ -3253,49 +3272,30 @@
3253
3272
  "multiple": false,
3254
3273
  "type": "option"
3255
3274
  },
3256
- "file": {
3257
- "description": "File to upload",
3258
- "name": "file",
3259
- "required": true,
3260
- "hasDynamicHelp": false,
3261
- "multiple": false,
3262
- "type": "option"
3263
- },
3264
- "kind": {
3265
- "description": "Upload kind: document or thread",
3266
- "name": "kind",
3267
- "default": "document",
3275
+ "name": {
3276
+ "description": "New key name",
3277
+ "name": "name",
3268
3278
  "hasDynamicHelp": false,
3269
3279
  "multiple": false,
3270
- "options": [
3271
- "document",
3272
- "thread"
3273
- ],
3274
3280
  "type": "option"
3275
3281
  },
3276
- "perspective": {
3277
- "description": "Perspective (document only)",
3278
- "name": "perspective",
3279
- "default": "third-person",
3282
+ "budget": {
3283
+ "description": "New spend budget in USD",
3284
+ "name": "budget",
3280
3285
  "hasDynamicHelp": false,
3281
3286
  "multiple": false,
3282
- "options": [
3283
- "first-person",
3284
- "third-person"
3285
- ],
3286
3287
  "type": "option"
3287
3288
  },
3288
- "face-speaker": {
3289
- "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
3290
- "name": "face-speaker",
3291
- "hasDynamicHelp": false,
3292
- "multiple": false,
3293
- "type": "option"
3289
+ "reset-spent": {
3290
+ "description": "Reset spent amount to zero",
3291
+ "name": "reset-spent",
3292
+ "allowNo": false,
3293
+ "type": "boolean"
3294
3294
  }
3295
3295
  },
3296
3296
  "hasDynamicHelp": false,
3297
3297
  "hiddenAliases": [],
3298
- "id": "face:upload",
3298
+ "id": "keys:update",
3299
3299
  "pluginAlias": "faces-cli",
3300
3300
  "pluginName": "faces-cli",
3301
3301
  "pluginType": "core",
@@ -3305,8 +3305,8 @@
3305
3305
  "relativePath": [
3306
3306
  "dist",
3307
3307
  "commands",
3308
- "face",
3309
- "upload.js"
3308
+ "keys",
3309
+ "update.js"
3310
3310
  ]
3311
3311
  },
3312
3312
  "team:add": {
@@ -5894,5 +5894,5 @@
5894
5894
  ]
5895
5895
  }
5896
5896
  },
5897
- "version": "1.6.13"
5897
+ "version": "1.6.15"
5898
5898
  }