faces-cli 1.6.0 → 1.6.2

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 (51) hide show
  1. package/README.md +50 -17
  2. package/dist/client.d.ts +4 -0
  3. package/dist/client.js +16 -0
  4. package/dist/commands/auth/register.d.ts +0 -1
  5. package/dist/commands/auth/register.js +1 -3
  6. package/dist/commands/billing/checkout.js +1 -1
  7. package/dist/commands/catalog/backup.js +84 -19
  8. package/dist/commands/catalog/doctor.js +10 -4
  9. package/dist/commands/catalog/restore.js +64 -11
  10. package/dist/commands/face/create.d.ts +1 -0
  11. package/dist/commands/face/create.js +14 -1
  12. package/dist/commands/face/list.d.ts +1 -0
  13. package/dist/commands/face/list.js +11 -1
  14. package/dist/commands/face/tag/add.d.ts +14 -0
  15. package/dist/commands/face/tag/add.js +29 -0
  16. package/dist/commands/face/tag/list.d.ts +13 -0
  17. package/dist/commands/face/tag/list.js +35 -0
  18. package/dist/commands/face/tag/remove.d.ts +14 -0
  19. package/dist/commands/face/tag/remove.js +29 -0
  20. package/dist/commands/face/tag/set.d.ts +14 -0
  21. package/dist/commands/face/tag/set.js +29 -0
  22. package/dist/commands/face/update.d.ts +1 -0
  23. package/dist/commands/face/update.js +17 -6
  24. package/dist/commands/team/add.d.ts +14 -0
  25. package/dist/commands/team/add.js +51 -0
  26. package/dist/commands/team/create.d.ts +15 -0
  27. package/dist/commands/team/create.js +53 -0
  28. package/dist/commands/team/delete.d.ts +15 -0
  29. package/dist/commands/team/delete.js +44 -0
  30. package/dist/commands/team/get.d.ts +13 -0
  31. package/dist/commands/team/get.js +28 -0
  32. package/dist/commands/team/list.d.ts +10 -0
  33. package/dist/commands/team/list.js +49 -0
  34. package/dist/commands/team/members.d.ts +13 -0
  35. package/dist/commands/team/members.js +28 -0
  36. package/dist/commands/team/remove.d.ts +14 -0
  37. package/dist/commands/team/remove.js +42 -0
  38. package/dist/commands/team/tag/add.d.ts +14 -0
  39. package/dist/commands/team/tag/add.js +29 -0
  40. package/dist/commands/team/tag/list.d.ts +13 -0
  41. package/dist/commands/team/tag/list.js +35 -0
  42. package/dist/commands/team/tag/remove.d.ts +14 -0
  43. package/dist/commands/team/tag/remove.js +29 -0
  44. package/dist/commands/team/tag/set.d.ts +14 -0
  45. package/dist/commands/team/tag/set.js +29 -0
  46. package/dist/commands/team/update.d.ts +17 -0
  47. package/dist/commands/team/update.js +48 -0
  48. package/dist/team-catalog.d.ts +16 -0
  49. package/dist/team-catalog.js +99 -0
  50. package/oclif.manifest.json +1693 -614
  51. package/package.json +1 -1
@@ -541,13 +541,6 @@
541
541
  "multiple": false,
542
542
  "type": "option"
543
543
  },
544
- "name": {
545
- "description": "Display name (defaults to username)",
546
- "name": "name",
547
- "hasDynamicHelp": false,
548
- "multiple": false,
549
- "type": "option"
550
- },
551
544
  "username": {
552
545
  "description": "Username (lowercase, dashes, numbers)",
553
546
  "name": "username",
@@ -645,10 +638,10 @@
645
638
  "whoami.js"
646
639
  ]
647
640
  },
648
- "billing:balance": {
641
+ "catalog:backup": {
649
642
  "aliases": [],
650
643
  "args": {},
651
- "description": "Show credit balance and payment method status",
644
+ "description": "Snapshot all faces, teams, and source material for migration",
652
645
  "flags": {
653
646
  "json": {
654
647
  "description": "Format output as json.",
@@ -684,7 +677,7 @@
684
677
  },
685
678
  "hasDynamicHelp": false,
686
679
  "hiddenAliases": [],
687
- "id": "billing:balance",
680
+ "id": "catalog:backup",
688
681
  "pluginAlias": "faces-cli",
689
682
  "pluginName": "faces-cli",
690
683
  "pluginType": "core",
@@ -694,14 +687,14 @@
694
687
  "relativePath": [
695
688
  "dist",
696
689
  "commands",
697
- "billing",
698
- "balance.js"
690
+ "catalog",
691
+ "backup.js"
699
692
  ]
700
693
  },
701
- "billing:card-setup": {
694
+ "catalog:doctor": {
702
695
  "aliases": [],
703
696
  "args": {},
704
- "description": "Get a Stripe card setup URL to save a payment method",
697
+ "description": "Diagnose and repair the local face catalog",
705
698
  "flags": {
706
699
  "json": {
707
700
  "description": "Format output as json.",
@@ -733,11 +726,23 @@
733
726
  "hasDynamicHelp": false,
734
727
  "multiple": false,
735
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"
736
741
  }
737
742
  },
738
743
  "hasDynamicHelp": false,
739
744
  "hiddenAliases": [],
740
- "id": "billing:card-setup",
745
+ "id": "catalog:doctor",
741
746
  "pluginAlias": "faces-cli",
742
747
  "pluginName": "faces-cli",
743
748
  "pluginType": "core",
@@ -747,14 +752,14 @@
747
752
  "relativePath": [
748
753
  "dist",
749
754
  "commands",
750
- "billing",
751
- "card-setup.js"
755
+ "catalog",
756
+ "doctor.js"
752
757
  ]
753
758
  },
754
- "billing:checkout": {
759
+ "catalog:list": {
755
760
  "aliases": [],
756
761
  "args": {},
757
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
762
+ "description": "List all faces in the local catalog",
758
763
  "flags": {
759
764
  "json": {
760
765
  "description": "Format output as json.",
@@ -786,22 +791,11 @@
786
791
  "hasDynamicHelp": false,
787
792
  "multiple": false,
788
793
  "type": "option"
789
- },
790
- "plan": {
791
- "description": "Plan to subscribe to",
792
- "name": "plan",
793
- "default": "connect",
794
- "hasDynamicHelp": false,
795
- "multiple": false,
796
- "options": [
797
- "connect"
798
- ],
799
- "type": "option"
800
794
  }
801
795
  },
802
796
  "hasDynamicHelp": false,
803
797
  "hiddenAliases": [],
804
- "id": "billing:checkout",
798
+ "id": "catalog:list",
805
799
  "pluginAlias": "faces-cli",
806
800
  "pluginName": "faces-cli",
807
801
  "pluginType": "core",
@@ -811,14 +805,14 @@
811
805
  "relativePath": [
812
806
  "dist",
813
807
  "commands",
814
- "billing",
815
- "checkout.js"
808
+ "catalog",
809
+ "list.js"
816
810
  ]
817
811
  },
818
- "billing:llm-costs": {
812
+ "catalog:manyfaced": {
819
813
  "aliases": [],
820
814
  "args": {},
821
- "description": "List available LLMs and their per-token costs",
815
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
822
816
  "flags": {
823
817
  "json": {
824
818
  "description": "Format output as json.",
@@ -851,17 +845,37 @@
851
845
  "multiple": false,
852
846
  "type": "option"
853
847
  },
854
- "provider": {
855
- "description": "Filter by provider (e.g. openai, anthropic)",
856
- "name": "provider",
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",
857
865
  "hasDynamicHelp": false,
858
866
  "multiple": false,
859
867
  "type": "option"
868
+ },
869
+ "refresh": {
870
+ "description": "Force refresh the skill index (ignore cache)",
871
+ "name": "refresh",
872
+ "allowNo": false,
873
+ "type": "boolean"
860
874
  }
861
875
  },
862
876
  "hasDynamicHelp": false,
863
877
  "hiddenAliases": [],
864
- "id": "billing:llm-costs",
878
+ "id": "catalog:manyfaced",
865
879
  "pluginAlias": "faces-cli",
866
880
  "pluginName": "faces-cli",
867
881
  "pluginType": "core",
@@ -871,14 +885,19 @@
871
885
  "relativePath": [
872
886
  "dist",
873
887
  "commands",
874
- "billing",
875
- "llm-costs.js"
888
+ "catalog",
889
+ "manyfaced.js"
876
890
  ]
877
891
  },
878
- "billing:quota": {
892
+ "catalog:restore": {
879
893
  "aliases": [],
880
- "args": {},
881
- "description": "Show compile token quota and per-face stats",
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",
882
901
  "flags": {
883
902
  "json": {
884
903
  "description": "Format output as json.",
@@ -910,11 +929,17 @@
910
929
  "hasDynamicHelp": false,
911
930
  "multiple": false,
912
931
  "type": "option"
932
+ },
933
+ "compile": {
934
+ "description": "Run compile:all after restoring",
935
+ "name": "compile",
936
+ "allowNo": false,
937
+ "type": "boolean"
913
938
  }
914
939
  },
915
940
  "hasDynamicHelp": false,
916
941
  "hiddenAliases": [],
917
- "id": "billing:quota",
942
+ "id": "catalog:restore",
918
943
  "pluginAlias": "faces-cli",
919
944
  "pluginName": "faces-cli",
920
945
  "pluginType": "core",
@@ -924,14 +949,14 @@
924
949
  "relativePath": [
925
950
  "dist",
926
951
  "commands",
927
- "billing",
928
- "quota.js"
952
+ "catalog",
953
+ "restore.js"
929
954
  ]
930
955
  },
931
- "billing:subscription": {
956
+ "billing:balance": {
932
957
  "aliases": [],
933
958
  "args": {},
934
- "description": "Show current plan, face count, and renewal date",
959
+ "description": "Show credit balance and payment method status",
935
960
  "flags": {
936
961
  "json": {
937
962
  "description": "Format output as json.",
@@ -967,7 +992,7 @@
967
992
  },
968
993
  "hasDynamicHelp": false,
969
994
  "hiddenAliases": [],
970
- "id": "billing:subscription",
995
+ "id": "billing:balance",
971
996
  "pluginAlias": "faces-cli",
972
997
  "pluginName": "faces-cli",
973
998
  "pluginType": "core",
@@ -978,13 +1003,13 @@
978
1003
  "dist",
979
1004
  "commands",
980
1005
  "billing",
981
- "subscription.js"
1006
+ "balance.js"
982
1007
  ]
983
1008
  },
984
- "billing:topup": {
1009
+ "billing:card-setup": {
985
1010
  "aliases": [],
986
1011
  "args": {},
987
- "description": "Top up credit balance using saved payment method",
1012
+ "description": "Get a Stripe card setup URL to save a payment method",
988
1013
  "flags": {
989
1014
  "json": {
990
1015
  "description": "Format output as json.",
@@ -1016,26 +1041,11 @@
1016
1041
  "hasDynamicHelp": false,
1017
1042
  "multiple": false,
1018
1043
  "type": "option"
1019
- },
1020
- "amount": {
1021
- "description": "Top-up amount in USD (min $1)",
1022
- "name": "amount",
1023
- "required": true,
1024
- "hasDynamicHelp": false,
1025
- "multiple": false,
1026
- "type": "option"
1027
- },
1028
- "payment-ref": {
1029
- "description": "Payment reference (admin/test path)",
1030
- "name": "payment-ref",
1031
- "hasDynamicHelp": false,
1032
- "multiple": false,
1033
- "type": "option"
1034
1044
  }
1035
1045
  },
1036
1046
  "hasDynamicHelp": false,
1037
1047
  "hiddenAliases": [],
1038
- "id": "billing:topup",
1048
+ "id": "billing:card-setup",
1039
1049
  "pluginAlias": "faces-cli",
1040
1050
  "pluginName": "faces-cli",
1041
1051
  "pluginType": "core",
@@ -1046,13 +1056,13 @@
1046
1056
  "dist",
1047
1057
  "commands",
1048
1058
  "billing",
1049
- "topup.js"
1059
+ "card-setup.js"
1050
1060
  ]
1051
1061
  },
1052
- "billing:usage": {
1062
+ "billing:checkout": {
1053
1063
  "aliases": [],
1054
1064
  "args": {},
1055
- "description": "Aggregated usage analytics",
1065
+ "description": "Get a Stripe checkout URL to upgrade your subscription plan",
1056
1066
  "flags": {
1057
1067
  "json": {
1058
1068
  "description": "Format output as json.",
@@ -1085,37 +1095,21 @@
1085
1095
  "multiple": false,
1086
1096
  "type": "option"
1087
1097
  },
1088
- "group-by": {
1089
- "description": "Group results",
1090
- "name": "group-by",
1098
+ "plan": {
1099
+ "description": "Plan to subscribe to",
1100
+ "name": "plan",
1101
+ "default": "connect",
1091
1102
  "hasDynamicHelp": false,
1092
1103
  "multiple": false,
1093
1104
  "options": [
1094
- "api_key",
1095
- "model",
1096
- "llm",
1097
- "date"
1105
+ "connect"
1098
1106
  ],
1099
1107
  "type": "option"
1100
- },
1101
- "from": {
1102
- "description": "Start date (YYYY-MM-DD)",
1103
- "name": "from",
1104
- "hasDynamicHelp": false,
1105
- "multiple": false,
1106
- "type": "option"
1107
- },
1108
- "to": {
1109
- "description": "End date (YYYY-MM-DD)",
1110
- "name": "to",
1111
- "hasDynamicHelp": false,
1112
- "multiple": false,
1113
- "type": "option"
1114
1108
  }
1115
1109
  },
1116
1110
  "hasDynamicHelp": false,
1117
1111
  "hiddenAliases": [],
1118
- "id": "billing:usage",
1112
+ "id": "billing:checkout",
1119
1113
  "pluginAlias": "faces-cli",
1120
1114
  "pluginName": "faces-cli",
1121
1115
  "pluginType": "core",
@@ -1126,13 +1120,13 @@
1126
1120
  "dist",
1127
1121
  "commands",
1128
1122
  "billing",
1129
- "usage.js"
1123
+ "checkout.js"
1130
1124
  ]
1131
1125
  },
1132
- "catalog:backup": {
1126
+ "billing:llm-costs": {
1133
1127
  "aliases": [],
1134
1128
  "args": {},
1135
- "description": "Snapshot all faces and source material for migration",
1129
+ "description": "List available LLMs and their per-token costs",
1136
1130
  "flags": {
1137
1131
  "json": {
1138
1132
  "description": "Format output as json.",
@@ -1164,11 +1158,18 @@
1164
1158
  "hasDynamicHelp": false,
1165
1159
  "multiple": false,
1166
1160
  "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"
1167
1168
  }
1168
1169
  },
1169
1170
  "hasDynamicHelp": false,
1170
1171
  "hiddenAliases": [],
1171
- "id": "catalog:backup",
1172
+ "id": "billing:llm-costs",
1172
1173
  "pluginAlias": "faces-cli",
1173
1174
  "pluginName": "faces-cli",
1174
1175
  "pluginType": "core",
@@ -1178,14 +1179,14 @@
1178
1179
  "relativePath": [
1179
1180
  "dist",
1180
1181
  "commands",
1181
- "catalog",
1182
- "backup.js"
1182
+ "billing",
1183
+ "llm-costs.js"
1183
1184
  ]
1184
1185
  },
1185
- "catalog:doctor": {
1186
+ "billing:quota": {
1186
1187
  "aliases": [],
1187
1188
  "args": {},
1188
- "description": "Diagnose and repair the local face catalog",
1189
+ "description": "Show compile token quota and per-face stats",
1189
1190
  "flags": {
1190
1191
  "json": {
1191
1192
  "description": "Format output as json.",
@@ -1217,23 +1218,11 @@
1217
1218
  "hasDynamicHelp": false,
1218
1219
  "multiple": false,
1219
1220
  "type": "option"
1220
- },
1221
- "fix": {
1222
- "description": "Rebuild missing or stale catalog entries from API",
1223
- "name": "fix",
1224
- "allowNo": false,
1225
- "type": "boolean"
1226
- },
1227
- "generate": {
1228
- "description": "Fix + generate missing descriptions via LLM",
1229
- "name": "generate",
1230
- "allowNo": false,
1231
- "type": "boolean"
1232
1221
  }
1233
1222
  },
1234
1223
  "hasDynamicHelp": false,
1235
1224
  "hiddenAliases": [],
1236
- "id": "catalog:doctor",
1225
+ "id": "billing:quota",
1237
1226
  "pluginAlias": "faces-cli",
1238
1227
  "pluginName": "faces-cli",
1239
1228
  "pluginType": "core",
@@ -1243,14 +1232,14 @@
1243
1232
  "relativePath": [
1244
1233
  "dist",
1245
1234
  "commands",
1246
- "catalog",
1247
- "doctor.js"
1235
+ "billing",
1236
+ "quota.js"
1248
1237
  ]
1249
1238
  },
1250
- "catalog:list": {
1239
+ "billing:subscription": {
1251
1240
  "aliases": [],
1252
1241
  "args": {},
1253
- "description": "List all faces in the local catalog",
1242
+ "description": "Show current plan, face count, and renewal date",
1254
1243
  "flags": {
1255
1244
  "json": {
1256
1245
  "description": "Format output as json.",
@@ -1286,7 +1275,7 @@
1286
1275
  },
1287
1276
  "hasDynamicHelp": false,
1288
1277
  "hiddenAliases": [],
1289
- "id": "catalog:list",
1278
+ "id": "billing:subscription",
1290
1279
  "pluginAlias": "faces-cli",
1291
1280
  "pluginName": "faces-cli",
1292
1281
  "pluginType": "core",
@@ -1296,14 +1285,14 @@
1296
1285
  "relativePath": [
1297
1286
  "dist",
1298
1287
  "commands",
1299
- "catalog",
1300
- "list.js"
1288
+ "billing",
1289
+ "subscription.js"
1301
1290
  ]
1302
1291
  },
1303
- "catalog:manyfaced": {
1292
+ "billing:topup": {
1304
1293
  "aliases": [],
1305
1294
  "args": {},
1306
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1295
+ "description": "Top up credit balance using saved payment method",
1307
1296
  "flags": {
1308
1297
  "json": {
1309
1298
  "description": "Format output as json.",
@@ -1336,37 +1325,25 @@
1336
1325
  "multiple": false,
1337
1326
  "type": "option"
1338
1327
  },
1339
- "skill": {
1340
- "description": "Show details for a specific skill",
1341
- "name": "skill",
1342
- "hasDynamicHelp": false,
1343
- "multiple": false,
1344
- "type": "option"
1345
- },
1346
- "install": {
1347
- "description": "Install a skill by name",
1348
- "name": "install",
1328
+ "amount": {
1329
+ "description": "Top-up amount in USD (min $1)",
1330
+ "name": "amount",
1331
+ "required": true,
1349
1332
  "hasDynamicHelp": false,
1350
1333
  "multiple": false,
1351
1334
  "type": "option"
1352
1335
  },
1353
- "skills-dir": {
1354
- "description": "Directory to install skills into (required for --install)",
1355
- "name": "skills-dir",
1336
+ "payment-ref": {
1337
+ "description": "Payment reference (admin/test path)",
1338
+ "name": "payment-ref",
1356
1339
  "hasDynamicHelp": false,
1357
1340
  "multiple": false,
1358
1341
  "type": "option"
1359
- },
1360
- "refresh": {
1361
- "description": "Force refresh the skill index (ignore cache)",
1362
- "name": "refresh",
1363
- "allowNo": false,
1364
- "type": "boolean"
1365
1342
  }
1366
1343
  },
1367
1344
  "hasDynamicHelp": false,
1368
1345
  "hiddenAliases": [],
1369
- "id": "catalog:manyfaced",
1346
+ "id": "billing:topup",
1370
1347
  "pluginAlias": "faces-cli",
1371
1348
  "pluginName": "faces-cli",
1372
1349
  "pluginType": "core",
@@ -1376,19 +1353,14 @@
1376
1353
  "relativePath": [
1377
1354
  "dist",
1378
1355
  "commands",
1379
- "catalog",
1380
- "manyfaced.js"
1356
+ "billing",
1357
+ "topup.js"
1381
1358
  ]
1382
1359
  },
1383
- "catalog:restore": {
1360
+ "billing:usage": {
1384
1361
  "aliases": [],
1385
- "args": {
1386
- "file": {
1387
- "description": "Backup file path (default: most recent in ~/.faces/backups/)",
1388
- "name": "file"
1389
- }
1390
- },
1391
- "description": "Restore faces and source material from a backup snapshot",
1362
+ "args": {},
1363
+ "description": "Aggregated usage analytics",
1392
1364
  "flags": {
1393
1365
  "json": {
1394
1366
  "description": "Format output as json.",
@@ -1421,16 +1393,37 @@
1421
1393
  "multiple": false,
1422
1394
  "type": "option"
1423
1395
  },
1424
- "compile": {
1425
- "description": "Run compile:all after restoring",
1426
- "name": "compile",
1427
- "allowNo": false,
1428
- "type": "boolean"
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"
1429
1422
  }
1430
1423
  },
1431
1424
  "hasDynamicHelp": false,
1432
1425
  "hiddenAliases": [],
1433
- "id": "catalog:restore",
1426
+ "id": "billing:usage",
1434
1427
  "pluginAlias": "faces-cli",
1435
1428
  "pluginName": "faces-cli",
1436
1429
  "pluginType": "core",
@@ -1440,8 +1433,8 @@
1440
1433
  "relativePath": [
1441
1434
  "dist",
1442
1435
  "commands",
1443
- "catalog",
1444
- "restore.js"
1436
+ "billing",
1437
+ "usage.js"
1445
1438
  ]
1446
1439
  },
1447
1440
  "chat:chat": {
@@ -1747,6 +1740,182 @@
1747
1740
  "responses.js"
1748
1741
  ]
1749
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
+ },
1750
1919
  "compile:all": {
1751
1920
  "aliases": [],
1752
1921
  "args": {},
@@ -2016,186 +2185,10 @@
2016
2185
  "upload.js"
2017
2186
  ]
2018
2187
  },
2019
- "config:clear": {
2188
+ "keys:create": {
2020
2189
  "aliases": [],
2021
2190
  "args": {},
2022
- "description": "Delete all saved credentials and config",
2023
- "flags": {
2024
- "json": {
2025
- "description": "Format output as json.",
2026
- "helpGroup": "GLOBAL",
2027
- "name": "json",
2028
- "allowNo": false,
2029
- "type": "boolean"
2030
- },
2031
- "base-url": {
2032
- "description": "API base URL",
2033
- "env": "FACES_BASE_URL",
2034
- "name": "base-url",
2035
- "hasDynamicHelp": false,
2036
- "multiple": false,
2037
- "type": "option"
2038
- },
2039
- "token": {
2040
- "description": "JWT bearer token",
2041
- "env": "FACES_TOKEN",
2042
- "name": "token",
2043
- "hasDynamicHelp": false,
2044
- "multiple": false,
2045
- "type": "option"
2046
- },
2047
- "api-key": {
2048
- "description": "API key",
2049
- "env": "FACES_API_KEY",
2050
- "name": "api-key",
2051
- "hasDynamicHelp": false,
2052
- "multiple": false,
2053
- "type": "option"
2054
- },
2055
- "yes": {
2056
- "description": "Skip confirmation",
2057
- "name": "yes",
2058
- "allowNo": false,
2059
- "type": "boolean"
2060
- }
2061
- },
2062
- "hasDynamicHelp": false,
2063
- "hiddenAliases": [],
2064
- "id": "config:clear",
2065
- "pluginAlias": "faces-cli",
2066
- "pluginName": "faces-cli",
2067
- "pluginType": "core",
2068
- "strict": true,
2069
- "enableJsonFlag": true,
2070
- "isESM": true,
2071
- "relativePath": [
2072
- "dist",
2073
- "commands",
2074
- "config",
2075
- "clear.js"
2076
- ]
2077
- },
2078
- "config:set": {
2079
- "aliases": [],
2080
- "args": {
2081
- "key": {
2082
- "description": "Config key",
2083
- "name": "key",
2084
- "required": true
2085
- },
2086
- "value": {
2087
- "description": "Config value",
2088
- "name": "value",
2089
- "required": true
2090
- }
2091
- },
2092
- "description": "Set a config value (e.g. base_url, api_key, token)",
2093
- "flags": {
2094
- "json": {
2095
- "description": "Format output as json.",
2096
- "helpGroup": "GLOBAL",
2097
- "name": "json",
2098
- "allowNo": false,
2099
- "type": "boolean"
2100
- },
2101
- "base-url": {
2102
- "description": "API base URL",
2103
- "env": "FACES_BASE_URL",
2104
- "name": "base-url",
2105
- "hasDynamicHelp": false,
2106
- "multiple": false,
2107
- "type": "option"
2108
- },
2109
- "token": {
2110
- "description": "JWT bearer token",
2111
- "env": "FACES_TOKEN",
2112
- "name": "token",
2113
- "hasDynamicHelp": false,
2114
- "multiple": false,
2115
- "type": "option"
2116
- },
2117
- "api-key": {
2118
- "description": "API key",
2119
- "env": "FACES_API_KEY",
2120
- "name": "api-key",
2121
- "hasDynamicHelp": false,
2122
- "multiple": false,
2123
- "type": "option"
2124
- }
2125
- },
2126
- "hasDynamicHelp": false,
2127
- "hiddenAliases": [],
2128
- "id": "config:set",
2129
- "pluginAlias": "faces-cli",
2130
- "pluginName": "faces-cli",
2131
- "pluginType": "core",
2132
- "strict": true,
2133
- "enableJsonFlag": true,
2134
- "isESM": true,
2135
- "relativePath": [
2136
- "dist",
2137
- "commands",
2138
- "config",
2139
- "set.js"
2140
- ]
2141
- },
2142
- "config:show": {
2143
- "aliases": [],
2144
- "args": {},
2145
- "description": "Print current config (credentials are masked)",
2146
- "flags": {
2147
- "json": {
2148
- "description": "Format output as json.",
2149
- "helpGroup": "GLOBAL",
2150
- "name": "json",
2151
- "allowNo": false,
2152
- "type": "boolean"
2153
- },
2154
- "base-url": {
2155
- "description": "API base URL",
2156
- "env": "FACES_BASE_URL",
2157
- "name": "base-url",
2158
- "hasDynamicHelp": false,
2159
- "multiple": false,
2160
- "type": "option"
2161
- },
2162
- "token": {
2163
- "description": "JWT bearer token",
2164
- "env": "FACES_TOKEN",
2165
- "name": "token",
2166
- "hasDynamicHelp": false,
2167
- "multiple": false,
2168
- "type": "option"
2169
- },
2170
- "api-key": {
2171
- "description": "API key",
2172
- "env": "FACES_API_KEY",
2173
- "name": "api-key",
2174
- "hasDynamicHelp": false,
2175
- "multiple": false,
2176
- "type": "option"
2177
- }
2178
- },
2179
- "hasDynamicHelp": false,
2180
- "hiddenAliases": [],
2181
- "id": "config:show",
2182
- "pluginAlias": "faces-cli",
2183
- "pluginName": "faces-cli",
2184
- "pluginType": "core",
2185
- "strict": true,
2186
- "enableJsonFlag": true,
2187
- "isESM": true,
2188
- "relativePath": [
2189
- "dist",
2190
- "commands",
2191
- "config",
2192
- "show.js"
2193
- ]
2194
- },
2195
- "keys:create": {
2196
- "aliases": [],
2197
- "args": {},
2198
- "description": "Create a new API key (JWT required)",
2191
+ "description": "Create a new API key (JWT required)",
2199
2192
  "flags": {
2200
2193
  "json": {
2201
2194
  "description": "Format output as json.",
@@ -2584,12 +2577,19 @@
2584
2577
  "type": "option"
2585
2578
  },
2586
2579
  "description": {
2587
- "description": "Description for local catalog",
2580
+ "description": "Plain-text description / bio (max 1500 chars)",
2588
2581
  "name": "description",
2589
2582
  "hasDynamicHelp": false,
2590
2583
  "multiple": false,
2591
2584
  "type": "option"
2592
2585
  },
2586
+ "tag": {
2587
+ "description": "Tag label (repeatable, lowercase)",
2588
+ "name": "tag",
2589
+ "hasDynamicHelp": false,
2590
+ "multiple": true,
2591
+ "type": "option"
2592
+ },
2593
2593
  "default-model": {
2594
2594
  "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2595
2595
  "name": "default-model",
@@ -2855,6 +2855,13 @@
2855
2855
  "hasDynamicHelp": false,
2856
2856
  "multiple": false,
2857
2857
  "type": "option"
2858
+ },
2859
+ "tag": {
2860
+ "description": "Filter by tag (repeatable, AND logic)",
2861
+ "name": "tag",
2862
+ "hasDynamicHelp": false,
2863
+ "multiple": true,
2864
+ "type": "option"
2858
2865
  }
2859
2866
  },
2860
2867
  "hasDynamicHelp": false,
@@ -3069,12 +3076,19 @@
3069
3076
  "type": "option"
3070
3077
  },
3071
3078
  "description": {
3072
- "description": "Description for local catalog",
3079
+ "description": "Plain-text description / bio (max 1500 chars)",
3073
3080
  "name": "description",
3074
3081
  "hasDynamicHelp": false,
3075
3082
  "multiple": false,
3076
3083
  "type": "option"
3077
3084
  },
3085
+ "tag": {
3086
+ "description": "Replace all tags (repeatable, lowercase)",
3087
+ "name": "tag",
3088
+ "hasDynamicHelp": false,
3089
+ "multiple": true,
3090
+ "type": "option"
3091
+ },
3078
3092
  "default-model": {
3079
3093
  "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
3080
3094
  "name": "default-model",
@@ -3218,16 +3232,16 @@
3218
3232
  "upload.js"
3219
3233
  ]
3220
3234
  },
3221
- "compile:doc:create": {
3235
+ "team:add": {
3222
3236
  "aliases": [],
3223
3237
  "args": {
3224
- "face_id": {
3225
- "description": "Face alias",
3226
- "name": "face_id",
3238
+ "team_id": {
3239
+ "description": "Team ID",
3240
+ "name": "team_id",
3227
3241
  "required": true
3228
3242
  }
3229
3243
  },
3230
- "description": "Submit a document to a face",
3244
+ "description": "Add face(s) to a team",
3231
3245
  "flags": {
3232
3246
  "json": {
3233
3247
  "description": "Format output as json.",
@@ -3260,43 +3274,18 @@
3260
3274
  "multiple": false,
3261
3275
  "type": "option"
3262
3276
  },
3263
- "label": {
3264
- "description": "Document label/title",
3265
- "name": "label",
3266
- "hasDynamicHelp": false,
3267
- "multiple": false,
3268
- "type": "option"
3269
- },
3270
- "content": {
3271
- "description": "Inline text content",
3272
- "name": "content",
3273
- "hasDynamicHelp": false,
3274
- "multiple": false,
3275
- "type": "option"
3276
- },
3277
- "file": {
3278
- "description": "Read content from file",
3279
- "name": "file",
3280
- "hasDynamicHelp": false,
3281
- "multiple": false,
3282
- "type": "option"
3283
- },
3284
- "perspective": {
3285
- "description": "Perspective (first-person or third-person)",
3286
- "name": "perspective",
3287
- "default": "first-person",
3277
+ "face": {
3278
+ "description": "Face alias to add (repeatable)",
3279
+ "name": "face",
3280
+ "required": true,
3288
3281
  "hasDynamicHelp": false,
3289
- "multiple": false,
3290
- "options": [
3291
- "first-person",
3292
- "third-person"
3293
- ],
3282
+ "multiple": true,
3294
3283
  "type": "option"
3295
3284
  }
3296
3285
  },
3297
3286
  "hasDynamicHelp": false,
3298
3287
  "hiddenAliases": [],
3299
- "id": "compile:doc:create",
3288
+ "id": "team:add",
3300
3289
  "pluginAlias": "faces-cli",
3301
3290
  "pluginName": "faces-cli",
3302
3291
  "pluginType": "core",
@@ -3306,21 +3295,14 @@
3306
3295
  "relativePath": [
3307
3296
  "dist",
3308
3297
  "commands",
3309
- "compile",
3310
- "doc",
3311
- "create.js"
3298
+ "team",
3299
+ "add.js"
3312
3300
  ]
3313
3301
  },
3314
- "compile:doc:delete": {
3302
+ "team:create": {
3315
3303
  "aliases": [],
3316
- "args": {
3317
- "doc_id": {
3318
- "description": "Document ID",
3319
- "name": "doc_id",
3320
- "required": true
3321
- }
3322
- },
3323
- "description": "Delete a document",
3304
+ "args": {},
3305
+ "description": "Create a new team",
3324
3306
  "flags": {
3325
3307
  "json": {
3326
3308
  "description": "Format output as json.",
@@ -3352,11 +3334,47 @@
3352
3334
  "hasDynamicHelp": false,
3353
3335
  "multiple": false,
3354
3336
  "type": "option"
3337
+ },
3338
+ "name": {
3339
+ "description": "Team name",
3340
+ "name": "name",
3341
+ "required": true,
3342
+ "hasDynamicHelp": false,
3343
+ "multiple": false,
3344
+ "type": "option"
3345
+ },
3346
+ "description": {
3347
+ "description": "Plain-text team description (max 1500 chars)",
3348
+ "name": "description",
3349
+ "hasDynamicHelp": false,
3350
+ "multiple": false,
3351
+ "type": "option"
3352
+ },
3353
+ "protocol": {
3354
+ "description": "Protocol content (mermaid diagram or markdown, max 1000 words)",
3355
+ "name": "protocol",
3356
+ "hasDynamicHelp": false,
3357
+ "multiple": false,
3358
+ "type": "option"
3359
+ },
3360
+ "protocol-file": {
3361
+ "description": "Read protocol from file",
3362
+ "name": "protocol-file",
3363
+ "hasDynamicHelp": false,
3364
+ "multiple": false,
3365
+ "type": "option"
3366
+ },
3367
+ "tag": {
3368
+ "description": "Tag label (repeatable, lowercase)",
3369
+ "name": "tag",
3370
+ "hasDynamicHelp": false,
3371
+ "multiple": true,
3372
+ "type": "option"
3355
3373
  }
3356
3374
  },
3357
3375
  "hasDynamicHelp": false,
3358
3376
  "hiddenAliases": [],
3359
- "id": "compile:doc:delete",
3377
+ "id": "team:create",
3360
3378
  "pluginAlias": "faces-cli",
3361
3379
  "pluginName": "faces-cli",
3362
3380
  "pluginType": "core",
@@ -3366,21 +3384,712 @@
3366
3384
  "relativePath": [
3367
3385
  "dist",
3368
3386
  "commands",
3369
- "compile",
3370
- "doc",
3371
- "delete.js"
3387
+ "team",
3388
+ "create.js"
3372
3389
  ]
3373
3390
  },
3374
- "compile:doc:edit": {
3391
+ "team:delete": {
3375
3392
  "aliases": [],
3376
3393
  "args": {
3377
- "doc_id": {
3378
- "description": "Document ID",
3379
- "name": "doc_id",
3394
+ "team_id": {
3395
+ "description": "Team ID",
3396
+ "name": "team_id",
3380
3397
  "required": true
3381
3398
  }
3382
3399
  },
3383
- "description": "Edit a document (label, content, or perspective)",
3400
+ "description": "Delete a team",
3401
+ "flags": {
3402
+ "json": {
3403
+ "description": "Format output as json.",
3404
+ "helpGroup": "GLOBAL",
3405
+ "name": "json",
3406
+ "allowNo": false,
3407
+ "type": "boolean"
3408
+ },
3409
+ "base-url": {
3410
+ "description": "API base URL",
3411
+ "env": "FACES_BASE_URL",
3412
+ "name": "base-url",
3413
+ "hasDynamicHelp": false,
3414
+ "multiple": false,
3415
+ "type": "option"
3416
+ },
3417
+ "token": {
3418
+ "description": "JWT bearer token",
3419
+ "env": "FACES_TOKEN",
3420
+ "name": "token",
3421
+ "hasDynamicHelp": false,
3422
+ "multiple": false,
3423
+ "type": "option"
3424
+ },
3425
+ "api-key": {
3426
+ "description": "API key",
3427
+ "env": "FACES_API_KEY",
3428
+ "name": "api-key",
3429
+ "hasDynamicHelp": false,
3430
+ "multiple": false,
3431
+ "type": "option"
3432
+ },
3433
+ "yes": {
3434
+ "description": "Skip confirmation",
3435
+ "name": "yes",
3436
+ "allowNo": false,
3437
+ "type": "boolean"
3438
+ }
3439
+ },
3440
+ "hasDynamicHelp": false,
3441
+ "hiddenAliases": [],
3442
+ "id": "team:delete",
3443
+ "pluginAlias": "faces-cli",
3444
+ "pluginName": "faces-cli",
3445
+ "pluginType": "core",
3446
+ "strict": true,
3447
+ "enableJsonFlag": true,
3448
+ "isESM": true,
3449
+ "relativePath": [
3450
+ "dist",
3451
+ "commands",
3452
+ "team",
3453
+ "delete.js"
3454
+ ]
3455
+ },
3456
+ "team:get": {
3457
+ "aliases": [],
3458
+ "args": {
3459
+ "team_id": {
3460
+ "description": "Team ID",
3461
+ "name": "team_id",
3462
+ "required": true
3463
+ }
3464
+ },
3465
+ "description": "Get a team by ID",
3466
+ "flags": {
3467
+ "json": {
3468
+ "description": "Format output as json.",
3469
+ "helpGroup": "GLOBAL",
3470
+ "name": "json",
3471
+ "allowNo": false,
3472
+ "type": "boolean"
3473
+ },
3474
+ "base-url": {
3475
+ "description": "API base URL",
3476
+ "env": "FACES_BASE_URL",
3477
+ "name": "base-url",
3478
+ "hasDynamicHelp": false,
3479
+ "multiple": false,
3480
+ "type": "option"
3481
+ },
3482
+ "token": {
3483
+ "description": "JWT bearer token",
3484
+ "env": "FACES_TOKEN",
3485
+ "name": "token",
3486
+ "hasDynamicHelp": false,
3487
+ "multiple": false,
3488
+ "type": "option"
3489
+ },
3490
+ "api-key": {
3491
+ "description": "API key",
3492
+ "env": "FACES_API_KEY",
3493
+ "name": "api-key",
3494
+ "hasDynamicHelp": false,
3495
+ "multiple": false,
3496
+ "type": "option"
3497
+ }
3498
+ },
3499
+ "hasDynamicHelp": false,
3500
+ "hiddenAliases": [],
3501
+ "id": "team:get",
3502
+ "pluginAlias": "faces-cli",
3503
+ "pluginName": "faces-cli",
3504
+ "pluginType": "core",
3505
+ "strict": true,
3506
+ "enableJsonFlag": true,
3507
+ "isESM": true,
3508
+ "relativePath": [
3509
+ "dist",
3510
+ "commands",
3511
+ "team",
3512
+ "get.js"
3513
+ ]
3514
+ },
3515
+ "team:list": {
3516
+ "aliases": [],
3517
+ "args": {},
3518
+ "description": "List your teams",
3519
+ "flags": {
3520
+ "json": {
3521
+ "description": "Format output as json.",
3522
+ "helpGroup": "GLOBAL",
3523
+ "name": "json",
3524
+ "allowNo": false,
3525
+ "type": "boolean"
3526
+ },
3527
+ "base-url": {
3528
+ "description": "API base URL",
3529
+ "env": "FACES_BASE_URL",
3530
+ "name": "base-url",
3531
+ "hasDynamicHelp": false,
3532
+ "multiple": false,
3533
+ "type": "option"
3534
+ },
3535
+ "token": {
3536
+ "description": "JWT bearer token",
3537
+ "env": "FACES_TOKEN",
3538
+ "name": "token",
3539
+ "hasDynamicHelp": false,
3540
+ "multiple": false,
3541
+ "type": "option"
3542
+ },
3543
+ "api-key": {
3544
+ "description": "API key",
3545
+ "env": "FACES_API_KEY",
3546
+ "name": "api-key",
3547
+ "hasDynamicHelp": false,
3548
+ "multiple": false,
3549
+ "type": "option"
3550
+ }
3551
+ },
3552
+ "hasDynamicHelp": false,
3553
+ "hiddenAliases": [],
3554
+ "id": "team:list",
3555
+ "pluginAlias": "faces-cli",
3556
+ "pluginName": "faces-cli",
3557
+ "pluginType": "core",
3558
+ "strict": true,
3559
+ "enableJsonFlag": true,
3560
+ "isESM": true,
3561
+ "relativePath": [
3562
+ "dist",
3563
+ "commands",
3564
+ "team",
3565
+ "list.js"
3566
+ ]
3567
+ },
3568
+ "team:members": {
3569
+ "aliases": [],
3570
+ "args": {
3571
+ "team_id": {
3572
+ "description": "Team ID",
3573
+ "name": "team_id",
3574
+ "required": true
3575
+ }
3576
+ },
3577
+ "description": "List members of a team",
3578
+ "flags": {
3579
+ "json": {
3580
+ "description": "Format output as json.",
3581
+ "helpGroup": "GLOBAL",
3582
+ "name": "json",
3583
+ "allowNo": false,
3584
+ "type": "boolean"
3585
+ },
3586
+ "base-url": {
3587
+ "description": "API base URL",
3588
+ "env": "FACES_BASE_URL",
3589
+ "name": "base-url",
3590
+ "hasDynamicHelp": false,
3591
+ "multiple": false,
3592
+ "type": "option"
3593
+ },
3594
+ "token": {
3595
+ "description": "JWT bearer token",
3596
+ "env": "FACES_TOKEN",
3597
+ "name": "token",
3598
+ "hasDynamicHelp": false,
3599
+ "multiple": false,
3600
+ "type": "option"
3601
+ },
3602
+ "api-key": {
3603
+ "description": "API key",
3604
+ "env": "FACES_API_KEY",
3605
+ "name": "api-key",
3606
+ "hasDynamicHelp": false,
3607
+ "multiple": false,
3608
+ "type": "option"
3609
+ }
3610
+ },
3611
+ "hasDynamicHelp": false,
3612
+ "hiddenAliases": [],
3613
+ "id": "team:members",
3614
+ "pluginAlias": "faces-cli",
3615
+ "pluginName": "faces-cli",
3616
+ "pluginType": "core",
3617
+ "strict": true,
3618
+ "enableJsonFlag": true,
3619
+ "isESM": true,
3620
+ "relativePath": [
3621
+ "dist",
3622
+ "commands",
3623
+ "team",
3624
+ "members.js"
3625
+ ]
3626
+ },
3627
+ "team:remove": {
3628
+ "aliases": [],
3629
+ "args": {
3630
+ "team_id": {
3631
+ "description": "Team ID",
3632
+ "name": "team_id",
3633
+ "required": true
3634
+ },
3635
+ "alias": {
3636
+ "description": "Face alias to remove",
3637
+ "name": "alias",
3638
+ "required": true
3639
+ }
3640
+ },
3641
+ "description": "Remove a face from a team",
3642
+ "flags": {
3643
+ "json": {
3644
+ "description": "Format output as json.",
3645
+ "helpGroup": "GLOBAL",
3646
+ "name": "json",
3647
+ "allowNo": false,
3648
+ "type": "boolean"
3649
+ },
3650
+ "base-url": {
3651
+ "description": "API base URL",
3652
+ "env": "FACES_BASE_URL",
3653
+ "name": "base-url",
3654
+ "hasDynamicHelp": false,
3655
+ "multiple": false,
3656
+ "type": "option"
3657
+ },
3658
+ "token": {
3659
+ "description": "JWT bearer token",
3660
+ "env": "FACES_TOKEN",
3661
+ "name": "token",
3662
+ "hasDynamicHelp": false,
3663
+ "multiple": false,
3664
+ "type": "option"
3665
+ },
3666
+ "api-key": {
3667
+ "description": "API key",
3668
+ "env": "FACES_API_KEY",
3669
+ "name": "api-key",
3670
+ "hasDynamicHelp": false,
3671
+ "multiple": false,
3672
+ "type": "option"
3673
+ }
3674
+ },
3675
+ "hasDynamicHelp": false,
3676
+ "hiddenAliases": [],
3677
+ "id": "team:remove",
3678
+ "pluginAlias": "faces-cli",
3679
+ "pluginName": "faces-cli",
3680
+ "pluginType": "core",
3681
+ "strict": true,
3682
+ "enableJsonFlag": true,
3683
+ "isESM": true,
3684
+ "relativePath": [
3685
+ "dist",
3686
+ "commands",
3687
+ "team",
3688
+ "remove.js"
3689
+ ]
3690
+ },
3691
+ "team:update": {
3692
+ "aliases": [],
3693
+ "args": {
3694
+ "team_id": {
3695
+ "description": "Team ID",
3696
+ "name": "team_id",
3697
+ "required": true
3698
+ }
3699
+ },
3700
+ "description": "Update a team",
3701
+ "flags": {
3702
+ "json": {
3703
+ "description": "Format output as json.",
3704
+ "helpGroup": "GLOBAL",
3705
+ "name": "json",
3706
+ "allowNo": false,
3707
+ "type": "boolean"
3708
+ },
3709
+ "base-url": {
3710
+ "description": "API base URL",
3711
+ "env": "FACES_BASE_URL",
3712
+ "name": "base-url",
3713
+ "hasDynamicHelp": false,
3714
+ "multiple": false,
3715
+ "type": "option"
3716
+ },
3717
+ "token": {
3718
+ "description": "JWT bearer token",
3719
+ "env": "FACES_TOKEN",
3720
+ "name": "token",
3721
+ "hasDynamicHelp": false,
3722
+ "multiple": false,
3723
+ "type": "option"
3724
+ },
3725
+ "api-key": {
3726
+ "description": "API key",
3727
+ "env": "FACES_API_KEY",
3728
+ "name": "api-key",
3729
+ "hasDynamicHelp": false,
3730
+ "multiple": false,
3731
+ "type": "option"
3732
+ },
3733
+ "name": {
3734
+ "description": "New team name",
3735
+ "name": "name",
3736
+ "hasDynamicHelp": false,
3737
+ "multiple": false,
3738
+ "type": "option"
3739
+ },
3740
+ "description": {
3741
+ "description": "New description (max 1500 chars)",
3742
+ "name": "description",
3743
+ "hasDynamicHelp": false,
3744
+ "multiple": false,
3745
+ "type": "option"
3746
+ },
3747
+ "protocol": {
3748
+ "description": "New protocol content",
3749
+ "name": "protocol",
3750
+ "hasDynamicHelp": false,
3751
+ "multiple": false,
3752
+ "type": "option"
3753
+ },
3754
+ "protocol-file": {
3755
+ "description": "Read protocol from file",
3756
+ "name": "protocol-file",
3757
+ "hasDynamicHelp": false,
3758
+ "multiple": false,
3759
+ "type": "option"
3760
+ }
3761
+ },
3762
+ "hasDynamicHelp": false,
3763
+ "hiddenAliases": [],
3764
+ "id": "team:update",
3765
+ "pluginAlias": "faces-cli",
3766
+ "pluginName": "faces-cli",
3767
+ "pluginType": "core",
3768
+ "strict": true,
3769
+ "enableJsonFlag": true,
3770
+ "isESM": true,
3771
+ "relativePath": [
3772
+ "dist",
3773
+ "commands",
3774
+ "team",
3775
+ "update.js"
3776
+ ]
3777
+ },
3778
+ "compile:doc:create": {
3779
+ "aliases": [],
3780
+ "args": {
3781
+ "face_id": {
3782
+ "description": "Face alias",
3783
+ "name": "face_id",
3784
+ "required": true
3785
+ }
3786
+ },
3787
+ "description": "Submit a document to a face",
3788
+ "flags": {
3789
+ "json": {
3790
+ "description": "Format output as json.",
3791
+ "helpGroup": "GLOBAL",
3792
+ "name": "json",
3793
+ "allowNo": false,
3794
+ "type": "boolean"
3795
+ },
3796
+ "base-url": {
3797
+ "description": "API base URL",
3798
+ "env": "FACES_BASE_URL",
3799
+ "name": "base-url",
3800
+ "hasDynamicHelp": false,
3801
+ "multiple": false,
3802
+ "type": "option"
3803
+ },
3804
+ "token": {
3805
+ "description": "JWT bearer token",
3806
+ "env": "FACES_TOKEN",
3807
+ "name": "token",
3808
+ "hasDynamicHelp": false,
3809
+ "multiple": false,
3810
+ "type": "option"
3811
+ },
3812
+ "api-key": {
3813
+ "description": "API key",
3814
+ "env": "FACES_API_KEY",
3815
+ "name": "api-key",
3816
+ "hasDynamicHelp": false,
3817
+ "multiple": false,
3818
+ "type": "option"
3819
+ },
3820
+ "label": {
3821
+ "description": "Document label/title",
3822
+ "name": "label",
3823
+ "hasDynamicHelp": false,
3824
+ "multiple": false,
3825
+ "type": "option"
3826
+ },
3827
+ "content": {
3828
+ "description": "Inline text content",
3829
+ "name": "content",
3830
+ "hasDynamicHelp": false,
3831
+ "multiple": false,
3832
+ "type": "option"
3833
+ },
3834
+ "file": {
3835
+ "description": "Read content from file",
3836
+ "name": "file",
3837
+ "hasDynamicHelp": false,
3838
+ "multiple": false,
3839
+ "type": "option"
3840
+ },
3841
+ "perspective": {
3842
+ "description": "Perspective (first-person or third-person)",
3843
+ "name": "perspective",
3844
+ "default": "first-person",
3845
+ "hasDynamicHelp": false,
3846
+ "multiple": false,
3847
+ "options": [
3848
+ "first-person",
3849
+ "third-person"
3850
+ ],
3851
+ "type": "option"
3852
+ }
3853
+ },
3854
+ "hasDynamicHelp": false,
3855
+ "hiddenAliases": [],
3856
+ "id": "compile:doc:create",
3857
+ "pluginAlias": "faces-cli",
3858
+ "pluginName": "faces-cli",
3859
+ "pluginType": "core",
3860
+ "strict": true,
3861
+ "enableJsonFlag": true,
3862
+ "isESM": true,
3863
+ "relativePath": [
3864
+ "dist",
3865
+ "commands",
3866
+ "compile",
3867
+ "doc",
3868
+ "create.js"
3869
+ ]
3870
+ },
3871
+ "compile:doc:delete": {
3872
+ "aliases": [],
3873
+ "args": {
3874
+ "doc_id": {
3875
+ "description": "Document ID",
3876
+ "name": "doc_id",
3877
+ "required": true
3878
+ }
3879
+ },
3880
+ "description": "Delete a document",
3881
+ "flags": {
3882
+ "json": {
3883
+ "description": "Format output as json.",
3884
+ "helpGroup": "GLOBAL",
3885
+ "name": "json",
3886
+ "allowNo": false,
3887
+ "type": "boolean"
3888
+ },
3889
+ "base-url": {
3890
+ "description": "API base URL",
3891
+ "env": "FACES_BASE_URL",
3892
+ "name": "base-url",
3893
+ "hasDynamicHelp": false,
3894
+ "multiple": false,
3895
+ "type": "option"
3896
+ },
3897
+ "token": {
3898
+ "description": "JWT bearer token",
3899
+ "env": "FACES_TOKEN",
3900
+ "name": "token",
3901
+ "hasDynamicHelp": false,
3902
+ "multiple": false,
3903
+ "type": "option"
3904
+ },
3905
+ "api-key": {
3906
+ "description": "API key",
3907
+ "env": "FACES_API_KEY",
3908
+ "name": "api-key",
3909
+ "hasDynamicHelp": false,
3910
+ "multiple": false,
3911
+ "type": "option"
3912
+ }
3913
+ },
3914
+ "hasDynamicHelp": false,
3915
+ "hiddenAliases": [],
3916
+ "id": "compile:doc:delete",
3917
+ "pluginAlias": "faces-cli",
3918
+ "pluginName": "faces-cli",
3919
+ "pluginType": "core",
3920
+ "strict": true,
3921
+ "enableJsonFlag": true,
3922
+ "isESM": true,
3923
+ "relativePath": [
3924
+ "dist",
3925
+ "commands",
3926
+ "compile",
3927
+ "doc",
3928
+ "delete.js"
3929
+ ]
3930
+ },
3931
+ "compile:doc:edit": {
3932
+ "aliases": [],
3933
+ "args": {
3934
+ "doc_id": {
3935
+ "description": "Document ID",
3936
+ "name": "doc_id",
3937
+ "required": true
3938
+ }
3939
+ },
3940
+ "description": "Edit a document (label, content, or perspective)",
3941
+ "flags": {
3942
+ "json": {
3943
+ "description": "Format output as json.",
3944
+ "helpGroup": "GLOBAL",
3945
+ "name": "json",
3946
+ "allowNo": false,
3947
+ "type": "boolean"
3948
+ },
3949
+ "base-url": {
3950
+ "description": "API base URL",
3951
+ "env": "FACES_BASE_URL",
3952
+ "name": "base-url",
3953
+ "hasDynamicHelp": false,
3954
+ "multiple": false,
3955
+ "type": "option"
3956
+ },
3957
+ "token": {
3958
+ "description": "JWT bearer token",
3959
+ "env": "FACES_TOKEN",
3960
+ "name": "token",
3961
+ "hasDynamicHelp": false,
3962
+ "multiple": false,
3963
+ "type": "option"
3964
+ },
3965
+ "api-key": {
3966
+ "description": "API key",
3967
+ "env": "FACES_API_KEY",
3968
+ "name": "api-key",
3969
+ "hasDynamicHelp": false,
3970
+ "multiple": false,
3971
+ "type": "option"
3972
+ },
3973
+ "label": {
3974
+ "description": "New label/title",
3975
+ "name": "label",
3976
+ "hasDynamicHelp": false,
3977
+ "multiple": false,
3978
+ "type": "option"
3979
+ },
3980
+ "content": {
3981
+ "description": "New inline text content",
3982
+ "name": "content",
3983
+ "hasDynamicHelp": false,
3984
+ "multiple": false,
3985
+ "type": "option"
3986
+ },
3987
+ "file": {
3988
+ "description": "Read new content from file",
3989
+ "name": "file",
3990
+ "hasDynamicHelp": false,
3991
+ "multiple": false,
3992
+ "type": "option"
3993
+ },
3994
+ "perspective": {
3995
+ "description": "Perspective (first-person or third-person)",
3996
+ "name": "perspective",
3997
+ "hasDynamicHelp": false,
3998
+ "multiple": false,
3999
+ "options": [
4000
+ "first-person",
4001
+ "third-person"
4002
+ ],
4003
+ "type": "option"
4004
+ }
4005
+ },
4006
+ "hasDynamicHelp": false,
4007
+ "hiddenAliases": [],
4008
+ "id": "compile:doc:edit",
4009
+ "pluginAlias": "faces-cli",
4010
+ "pluginName": "faces-cli",
4011
+ "pluginType": "core",
4012
+ "strict": true,
4013
+ "enableJsonFlag": true,
4014
+ "isESM": true,
4015
+ "relativePath": [
4016
+ "dist",
4017
+ "commands",
4018
+ "compile",
4019
+ "doc",
4020
+ "edit.js"
4021
+ ]
4022
+ },
4023
+ "compile:doc:get": {
4024
+ "aliases": [],
4025
+ "args": {
4026
+ "doc_id": {
4027
+ "description": "Document ID",
4028
+ "name": "doc_id",
4029
+ "required": true
4030
+ }
4031
+ },
4032
+ "description": "Get a document by ID",
4033
+ "flags": {
4034
+ "json": {
4035
+ "description": "Format output as json.",
4036
+ "helpGroup": "GLOBAL",
4037
+ "name": "json",
4038
+ "allowNo": false,
4039
+ "type": "boolean"
4040
+ },
4041
+ "base-url": {
4042
+ "description": "API base URL",
4043
+ "env": "FACES_BASE_URL",
4044
+ "name": "base-url",
4045
+ "hasDynamicHelp": false,
4046
+ "multiple": false,
4047
+ "type": "option"
4048
+ },
4049
+ "token": {
4050
+ "description": "JWT bearer token",
4051
+ "env": "FACES_TOKEN",
4052
+ "name": "token",
4053
+ "hasDynamicHelp": false,
4054
+ "multiple": false,
4055
+ "type": "option"
4056
+ },
4057
+ "api-key": {
4058
+ "description": "API key",
4059
+ "env": "FACES_API_KEY",
4060
+ "name": "api-key",
4061
+ "hasDynamicHelp": false,
4062
+ "multiple": false,
4063
+ "type": "option"
4064
+ }
4065
+ },
4066
+ "hasDynamicHelp": false,
4067
+ "hiddenAliases": [],
4068
+ "id": "compile:doc:get",
4069
+ "pluginAlias": "faces-cli",
4070
+ "pluginName": "faces-cli",
4071
+ "pluginType": "core",
4072
+ "strict": true,
4073
+ "enableJsonFlag": true,
4074
+ "isESM": true,
4075
+ "relativePath": [
4076
+ "dist",
4077
+ "commands",
4078
+ "compile",
4079
+ "doc",
4080
+ "get.js"
4081
+ ]
4082
+ },
4083
+ "compile:doc": {
4084
+ "aliases": [],
4085
+ "args": {
4086
+ "face_id": {
4087
+ "description": "Face alias",
4088
+ "name": "face_id",
4089
+ "required": true
4090
+ }
4091
+ },
4092
+ "description": "Compile a document into a face (create → make in one step)",
3384
4093
  "flags": {
3385
4094
  "json": {
3386
4095
  "description": "Format output as json.",
@@ -3414,41 +4123,250 @@
3414
4123
  "type": "option"
3415
4124
  },
3416
4125
  "label": {
3417
- "description": "New label/title",
4126
+ "description": "Document label/title",
3418
4127
  "name": "label",
3419
4128
  "hasDynamicHelp": false,
3420
4129
  "multiple": false,
3421
4130
  "type": "option"
3422
4131
  },
3423
4132
  "content": {
3424
- "description": "New inline text content",
4133
+ "description": "Inline text content",
3425
4134
  "name": "content",
3426
4135
  "hasDynamicHelp": false,
3427
4136
  "multiple": false,
3428
4137
  "type": "option"
3429
4138
  },
3430
4139
  "file": {
3431
- "description": "Read new content from file",
4140
+ "description": "Read content from file",
3432
4141
  "name": "file",
3433
4142
  "hasDynamicHelp": false,
3434
4143
  "multiple": false,
3435
4144
  "type": "option"
3436
4145
  },
3437
- "perspective": {
3438
- "description": "Perspective (first-person or third-person)",
3439
- "name": "perspective",
4146
+ "perspective": {
4147
+ "description": "Perspective",
4148
+ "name": "perspective",
4149
+ "default": "first-person",
4150
+ "hasDynamicHelp": false,
4151
+ "multiple": false,
4152
+ "options": [
4153
+ "first-person",
4154
+ "third-person"
4155
+ ],
4156
+ "type": "option"
4157
+ },
4158
+ "timeout": {
4159
+ "description": "Compile timeout in seconds (default: 600)",
4160
+ "name": "timeout",
4161
+ "default": 600,
4162
+ "hasDynamicHelp": false,
4163
+ "multiple": false,
4164
+ "type": "option"
4165
+ },
4166
+ "no-wait": {
4167
+ "description": "Create and trigger compilation, then return immediately without polling.",
4168
+ "name": "no-wait",
4169
+ "allowNo": false,
4170
+ "type": "boolean"
4171
+ }
4172
+ },
4173
+ "hasDynamicHelp": false,
4174
+ "hiddenAliases": [],
4175
+ "id": "compile:doc",
4176
+ "pluginAlias": "faces-cli",
4177
+ "pluginName": "faces-cli",
4178
+ "pluginType": "core",
4179
+ "strict": true,
4180
+ "enableJsonFlag": true,
4181
+ "isESM": true,
4182
+ "relativePath": [
4183
+ "dist",
4184
+ "commands",
4185
+ "compile",
4186
+ "doc",
4187
+ "index.js"
4188
+ ]
4189
+ },
4190
+ "compile:doc:list": {
4191
+ "aliases": [],
4192
+ "args": {
4193
+ "face_id": {
4194
+ "description": "Face alias",
4195
+ "name": "face_id",
4196
+ "required": true
4197
+ }
4198
+ },
4199
+ "description": "List documents for a face",
4200
+ "flags": {
4201
+ "json": {
4202
+ "description": "Format output as json.",
4203
+ "helpGroup": "GLOBAL",
4204
+ "name": "json",
4205
+ "allowNo": false,
4206
+ "type": "boolean"
4207
+ },
4208
+ "base-url": {
4209
+ "description": "API base URL",
4210
+ "env": "FACES_BASE_URL",
4211
+ "name": "base-url",
4212
+ "hasDynamicHelp": false,
4213
+ "multiple": false,
4214
+ "type": "option"
4215
+ },
4216
+ "token": {
4217
+ "description": "JWT bearer token",
4218
+ "env": "FACES_TOKEN",
4219
+ "name": "token",
4220
+ "hasDynamicHelp": false,
4221
+ "multiple": false,
4222
+ "type": "option"
4223
+ },
4224
+ "api-key": {
4225
+ "description": "API key",
4226
+ "env": "FACES_API_KEY",
4227
+ "name": "api-key",
4228
+ "hasDynamicHelp": false,
4229
+ "multiple": false,
4230
+ "type": "option"
4231
+ }
4232
+ },
4233
+ "hasDynamicHelp": false,
4234
+ "hiddenAliases": [],
4235
+ "id": "compile:doc:list",
4236
+ "pluginAlias": "faces-cli",
4237
+ "pluginName": "faces-cli",
4238
+ "pluginType": "core",
4239
+ "strict": true,
4240
+ "enableJsonFlag": true,
4241
+ "isESM": true,
4242
+ "relativePath": [
4243
+ "dist",
4244
+ "commands",
4245
+ "compile",
4246
+ "doc",
4247
+ "list.js"
4248
+ ]
4249
+ },
4250
+ "compile:doc:make": {
4251
+ "aliases": [],
4252
+ "args": {
4253
+ "doc_id": {
4254
+ "description": "Document ID",
4255
+ "name": "doc_id",
4256
+ "required": true
4257
+ }
4258
+ },
4259
+ "description": "Compile an existing document (prepare + sync in one step)",
4260
+ "flags": {
4261
+ "json": {
4262
+ "description": "Format output as json.",
4263
+ "helpGroup": "GLOBAL",
4264
+ "name": "json",
4265
+ "allowNo": false,
4266
+ "type": "boolean"
4267
+ },
4268
+ "base-url": {
4269
+ "description": "API base URL",
4270
+ "env": "FACES_BASE_URL",
4271
+ "name": "base-url",
4272
+ "hasDynamicHelp": false,
4273
+ "multiple": false,
4274
+ "type": "option"
4275
+ },
4276
+ "token": {
4277
+ "description": "JWT bearer token",
4278
+ "env": "FACES_TOKEN",
4279
+ "name": "token",
4280
+ "hasDynamicHelp": false,
4281
+ "multiple": false,
4282
+ "type": "option"
4283
+ },
4284
+ "api-key": {
4285
+ "description": "API key",
4286
+ "env": "FACES_API_KEY",
4287
+ "name": "api-key",
4288
+ "hasDynamicHelp": false,
4289
+ "multiple": false,
4290
+ "type": "option"
4291
+ },
4292
+ "timeout": {
4293
+ "description": "Compile timeout in seconds (default: 600)",
4294
+ "name": "timeout",
4295
+ "default": 600,
4296
+ "hasDynamicHelp": false,
4297
+ "multiple": false,
4298
+ "type": "option"
4299
+ },
4300
+ "no-wait": {
4301
+ "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
4302
+ "name": "no-wait",
4303
+ "allowNo": false,
4304
+ "type": "boolean"
4305
+ }
4306
+ },
4307
+ "hasDynamicHelp": false,
4308
+ "hiddenAliases": [],
4309
+ "id": "compile:doc:make",
4310
+ "pluginAlias": "faces-cli",
4311
+ "pluginName": "faces-cli",
4312
+ "pluginType": "core",
4313
+ "strict": true,
4314
+ "enableJsonFlag": true,
4315
+ "isESM": true,
4316
+ "relativePath": [
4317
+ "dist",
4318
+ "commands",
4319
+ "compile",
4320
+ "doc",
4321
+ "make.js"
4322
+ ]
4323
+ },
4324
+ "compile:doc:pause": {
4325
+ "aliases": [],
4326
+ "args": {
4327
+ "doc_id": {
4328
+ "description": "Document ID",
4329
+ "name": "doc_id",
4330
+ "required": true
4331
+ }
4332
+ },
4333
+ "description": "Pause a running document compilation (preserves progress, resume with make)",
4334
+ "flags": {
4335
+ "json": {
4336
+ "description": "Format output as json.",
4337
+ "helpGroup": "GLOBAL",
4338
+ "name": "json",
4339
+ "allowNo": false,
4340
+ "type": "boolean"
4341
+ },
4342
+ "base-url": {
4343
+ "description": "API base URL",
4344
+ "env": "FACES_BASE_URL",
4345
+ "name": "base-url",
4346
+ "hasDynamicHelp": false,
4347
+ "multiple": false,
4348
+ "type": "option"
4349
+ },
4350
+ "token": {
4351
+ "description": "JWT bearer token",
4352
+ "env": "FACES_TOKEN",
4353
+ "name": "token",
4354
+ "hasDynamicHelp": false,
4355
+ "multiple": false,
4356
+ "type": "option"
4357
+ },
4358
+ "api-key": {
4359
+ "description": "API key",
4360
+ "env": "FACES_API_KEY",
4361
+ "name": "api-key",
3440
4362
  "hasDynamicHelp": false,
3441
4363
  "multiple": false,
3442
- "options": [
3443
- "first-person",
3444
- "third-person"
3445
- ],
3446
4364
  "type": "option"
3447
4365
  }
3448
4366
  },
3449
4367
  "hasDynamicHelp": false,
3450
4368
  "hiddenAliases": [],
3451
- "id": "compile:doc:edit",
4369
+ "id": "compile:doc:pause",
3452
4370
  "pluginAlias": "faces-cli",
3453
4371
  "pluginName": "faces-cli",
3454
4372
  "pluginType": "core",
@@ -3460,10 +4378,10 @@
3460
4378
  "commands",
3461
4379
  "compile",
3462
4380
  "doc",
3463
- "edit.js"
4381
+ "pause.js"
3464
4382
  ]
3465
4383
  },
3466
- "compile:doc:get": {
4384
+ "compile:doc:reset": {
3467
4385
  "aliases": [],
3468
4386
  "args": {
3469
4387
  "doc_id": {
@@ -3472,7 +4390,7 @@
3472
4390
  "required": true
3473
4391
  }
3474
4392
  },
3475
- "description": "Get a document by ID",
4393
+ "description": "Reset document compilation progress (wipe extraction, keep content)",
3476
4394
  "flags": {
3477
4395
  "json": {
3478
4396
  "description": "Format output as json.",
@@ -3504,11 +4422,17 @@
3504
4422
  "hasDynamicHelp": false,
3505
4423
  "multiple": false,
3506
4424
  "type": "option"
4425
+ },
4426
+ "yes": {
4427
+ "description": "Skip confirmation",
4428
+ "name": "yes",
4429
+ "allowNo": false,
4430
+ "type": "boolean"
3507
4431
  }
3508
4432
  },
3509
4433
  "hasDynamicHelp": false,
3510
4434
  "hiddenAliases": [],
3511
- "id": "compile:doc:get",
4435
+ "id": "compile:doc:reset",
3512
4436
  "pluginAlias": "faces-cli",
3513
4437
  "pluginName": "faces-cli",
3514
4438
  "pluginType": "core",
@@ -3520,10 +4444,10 @@
3520
4444
  "commands",
3521
4445
  "compile",
3522
4446
  "doc",
3523
- "get.js"
4447
+ "reset.js"
3524
4448
  ]
3525
4449
  },
3526
- "compile:doc": {
4450
+ "compile:thread:create": {
3527
4451
  "aliases": [],
3528
4452
  "args": {
3529
4453
  "face_id": {
@@ -3532,7 +4456,7 @@
3532
4456
  "required": true
3533
4457
  }
3534
4458
  },
3535
- "description": "Compile a document into a face (create → make in one step)",
4459
+ "description": "Start a new thread for a face",
3536
4460
  "flags": {
3537
4461
  "json": {
3538
4462
  "description": "Format output as json.",
@@ -3566,56 +4490,222 @@
3566
4490
  "type": "option"
3567
4491
  },
3568
4492
  "label": {
3569
- "description": "Document label/title",
4493
+ "description": "Thread label",
3570
4494
  "name": "label",
3571
4495
  "hasDynamicHelp": false,
3572
4496
  "multiple": false,
3573
4497
  "type": "option"
3574
4498
  },
3575
- "content": {
3576
- "description": "Inline text content",
3577
- "name": "content",
4499
+ "oauth-only": {
4500
+ "description": "Prevent fallback to paid system key (use OAuth only)",
4501
+ "name": "oauth-only",
4502
+ "allowNo": false,
4503
+ "type": "boolean"
4504
+ }
4505
+ },
4506
+ "hasDynamicHelp": false,
4507
+ "hiddenAliases": [],
4508
+ "id": "compile:thread:create",
4509
+ "pluginAlias": "faces-cli",
4510
+ "pluginName": "faces-cli",
4511
+ "pluginType": "core",
4512
+ "strict": true,
4513
+ "enableJsonFlag": true,
4514
+ "isESM": true,
4515
+ "relativePath": [
4516
+ "dist",
4517
+ "commands",
4518
+ "compile",
4519
+ "thread",
4520
+ "create.js"
4521
+ ]
4522
+ },
4523
+ "compile:thread:delete": {
4524
+ "aliases": [],
4525
+ "args": {
4526
+ "thread_id": {
4527
+ "description": "Thread ID",
4528
+ "name": "thread_id",
4529
+ "required": true
4530
+ }
4531
+ },
4532
+ "description": "Delete a thread",
4533
+ "flags": {
4534
+ "json": {
4535
+ "description": "Format output as json.",
4536
+ "helpGroup": "GLOBAL",
4537
+ "name": "json",
4538
+ "allowNo": false,
4539
+ "type": "boolean"
4540
+ },
4541
+ "base-url": {
4542
+ "description": "API base URL",
4543
+ "env": "FACES_BASE_URL",
4544
+ "name": "base-url",
3578
4545
  "hasDynamicHelp": false,
3579
4546
  "multiple": false,
3580
4547
  "type": "option"
3581
4548
  },
3582
- "file": {
3583
- "description": "Read content from file",
3584
- "name": "file",
4549
+ "token": {
4550
+ "description": "JWT bearer token",
4551
+ "env": "FACES_TOKEN",
4552
+ "name": "token",
3585
4553
  "hasDynamicHelp": false,
3586
4554
  "multiple": false,
3587
4555
  "type": "option"
3588
4556
  },
3589
- "perspective": {
3590
- "description": "Perspective",
3591
- "name": "perspective",
3592
- "default": "first-person",
4557
+ "api-key": {
4558
+ "description": "API key",
4559
+ "env": "FACES_API_KEY",
4560
+ "name": "api-key",
3593
4561
  "hasDynamicHelp": false,
3594
4562
  "multiple": false,
3595
- "options": [
3596
- "first-person",
3597
- "third-person"
3598
- ],
3599
4563
  "type": "option"
3600
4564
  },
3601
- "timeout": {
3602
- "description": "Compile timeout in seconds (default: 600)",
3603
- "name": "timeout",
3604
- "default": 600,
4565
+ "yes": {
4566
+ "description": "Skip confirmation",
4567
+ "name": "yes",
4568
+ "allowNo": false,
4569
+ "type": "boolean"
4570
+ }
4571
+ },
4572
+ "hasDynamicHelp": false,
4573
+ "hiddenAliases": [],
4574
+ "id": "compile:thread:delete",
4575
+ "pluginAlias": "faces-cli",
4576
+ "pluginName": "faces-cli",
4577
+ "pluginType": "core",
4578
+ "strict": true,
4579
+ "enableJsonFlag": true,
4580
+ "isESM": true,
4581
+ "relativePath": [
4582
+ "dist",
4583
+ "commands",
4584
+ "compile",
4585
+ "thread",
4586
+ "delete.js"
4587
+ ]
4588
+ },
4589
+ "compile:thread:edit": {
4590
+ "aliases": [],
4591
+ "args": {
4592
+ "thread_id": {
4593
+ "description": "Thread ID",
4594
+ "name": "thread_id",
4595
+ "required": true
4596
+ }
4597
+ },
4598
+ "description": "Edit a thread (label and/or reassign face speaker)",
4599
+ "flags": {
4600
+ "json": {
4601
+ "description": "Format output as json.",
4602
+ "helpGroup": "GLOBAL",
4603
+ "name": "json",
4604
+ "allowNo": false,
4605
+ "type": "boolean"
4606
+ },
4607
+ "base-url": {
4608
+ "description": "API base URL",
4609
+ "env": "FACES_BASE_URL",
4610
+ "name": "base-url",
3605
4611
  "hasDynamicHelp": false,
3606
4612
  "multiple": false,
3607
4613
  "type": "option"
3608
4614
  },
3609
- "no-wait": {
3610
- "description": "Create and trigger compilation, then return immediately without polling.",
3611
- "name": "no-wait",
4615
+ "token": {
4616
+ "description": "JWT bearer token",
4617
+ "env": "FACES_TOKEN",
4618
+ "name": "token",
4619
+ "hasDynamicHelp": false,
4620
+ "multiple": false,
4621
+ "type": "option"
4622
+ },
4623
+ "api-key": {
4624
+ "description": "API key",
4625
+ "env": "FACES_API_KEY",
4626
+ "name": "api-key",
4627
+ "hasDynamicHelp": false,
4628
+ "multiple": false,
4629
+ "type": "option"
4630
+ },
4631
+ "label": {
4632
+ "description": "New thread label",
4633
+ "name": "label",
4634
+ "hasDynamicHelp": false,
4635
+ "multiple": false,
4636
+ "type": "option"
4637
+ },
4638
+ "face-speaker": {
4639
+ "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
4640
+ "name": "face-speaker",
4641
+ "hasDynamicHelp": false,
4642
+ "multiple": false,
4643
+ "type": "option"
4644
+ }
4645
+ },
4646
+ "hasDynamicHelp": false,
4647
+ "hiddenAliases": [],
4648
+ "id": "compile:thread:edit",
4649
+ "pluginAlias": "faces-cli",
4650
+ "pluginName": "faces-cli",
4651
+ "pluginType": "core",
4652
+ "strict": true,
4653
+ "enableJsonFlag": true,
4654
+ "isESM": true,
4655
+ "relativePath": [
4656
+ "dist",
4657
+ "commands",
4658
+ "compile",
4659
+ "thread",
4660
+ "edit.js"
4661
+ ]
4662
+ },
4663
+ "compile:thread:get": {
4664
+ "aliases": [],
4665
+ "args": {
4666
+ "thread_id": {
4667
+ "description": "Thread ID",
4668
+ "name": "thread_id",
4669
+ "required": true
4670
+ }
4671
+ },
4672
+ "description": "Get a thread by ID",
4673
+ "flags": {
4674
+ "json": {
4675
+ "description": "Format output as json.",
4676
+ "helpGroup": "GLOBAL",
4677
+ "name": "json",
3612
4678
  "allowNo": false,
3613
4679
  "type": "boolean"
4680
+ },
4681
+ "base-url": {
4682
+ "description": "API base URL",
4683
+ "env": "FACES_BASE_URL",
4684
+ "name": "base-url",
4685
+ "hasDynamicHelp": false,
4686
+ "multiple": false,
4687
+ "type": "option"
4688
+ },
4689
+ "token": {
4690
+ "description": "JWT bearer token",
4691
+ "env": "FACES_TOKEN",
4692
+ "name": "token",
4693
+ "hasDynamicHelp": false,
4694
+ "multiple": false,
4695
+ "type": "option"
4696
+ },
4697
+ "api-key": {
4698
+ "description": "API key",
4699
+ "env": "FACES_API_KEY",
4700
+ "name": "api-key",
4701
+ "hasDynamicHelp": false,
4702
+ "multiple": false,
4703
+ "type": "option"
3614
4704
  }
3615
4705
  },
3616
4706
  "hasDynamicHelp": false,
3617
4707
  "hiddenAliases": [],
3618
- "id": "compile:doc",
4708
+ "id": "compile:thread:get",
3619
4709
  "pluginAlias": "faces-cli",
3620
4710
  "pluginName": "faces-cli",
3621
4711
  "pluginType": "core",
@@ -3626,11 +4716,11 @@
3626
4716
  "dist",
3627
4717
  "commands",
3628
4718
  "compile",
3629
- "doc",
3630
- "index.js"
4719
+ "thread",
4720
+ "get.js"
3631
4721
  ]
3632
4722
  },
3633
- "compile:doc:list": {
4723
+ "compile:thread:list": {
3634
4724
  "aliases": [],
3635
4725
  "args": {
3636
4726
  "face_id": {
@@ -3639,7 +4729,7 @@
3639
4729
  "required": true
3640
4730
  }
3641
4731
  },
3642
- "description": "List documents for a face",
4732
+ "description": "List threads for a face",
3643
4733
  "flags": {
3644
4734
  "json": {
3645
4735
  "description": "Format output as json.",
@@ -3675,7 +4765,7 @@
3675
4765
  },
3676
4766
  "hasDynamicHelp": false,
3677
4767
  "hiddenAliases": [],
3678
- "id": "compile:doc:list",
4768
+ "id": "compile:thread:list",
3679
4769
  "pluginAlias": "faces-cli",
3680
4770
  "pluginName": "faces-cli",
3681
4771
  "pluginType": "core",
@@ -3686,20 +4776,20 @@
3686
4776
  "dist",
3687
4777
  "commands",
3688
4778
  "compile",
3689
- "doc",
4779
+ "thread",
3690
4780
  "list.js"
3691
4781
  ]
3692
4782
  },
3693
- "compile:doc:make": {
4783
+ "compile:thread:make": {
3694
4784
  "aliases": [],
3695
4785
  "args": {
3696
- "doc_id": {
3697
- "description": "Document ID",
3698
- "name": "doc_id",
4786
+ "thread_id": {
4787
+ "description": "Thread ID",
4788
+ "name": "thread_id",
3699
4789
  "required": true
3700
4790
  }
3701
4791
  },
3702
- "description": "Compile an existing document (prepare + sync in one step)",
4792
+ "description": "Compile an existing thread (prepare + sync in one step)",
3703
4793
  "flags": {
3704
4794
  "json": {
3705
4795
  "description": "Format output as json.",
@@ -3741,7 +4831,7 @@
3741
4831
  "type": "option"
3742
4832
  },
3743
4833
  "no-wait": {
3744
- "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
4834
+ "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
3745
4835
  "name": "no-wait",
3746
4836
  "allowNo": false,
3747
4837
  "type": "boolean"
@@ -3749,7 +4839,7 @@
3749
4839
  },
3750
4840
  "hasDynamicHelp": false,
3751
4841
  "hiddenAliases": [],
3752
- "id": "compile:doc:make",
4842
+ "id": "compile:thread:make",
3753
4843
  "pluginAlias": "faces-cli",
3754
4844
  "pluginName": "faces-cli",
3755
4845
  "pluginType": "core",
@@ -3760,20 +4850,20 @@
3760
4850
  "dist",
3761
4851
  "commands",
3762
4852
  "compile",
3763
- "doc",
4853
+ "thread",
3764
4854
  "make.js"
3765
4855
  ]
3766
4856
  },
3767
- "compile:doc:pause": {
4857
+ "compile:thread:message": {
3768
4858
  "aliases": [],
3769
4859
  "args": {
3770
- "doc_id": {
3771
- "description": "Document ID",
3772
- "name": "doc_id",
4860
+ "thread_id": {
4861
+ "description": "Thread ID",
4862
+ "name": "thread_id",
3773
4863
  "required": true
3774
4864
  }
3775
4865
  },
3776
- "description": "Pause a running document compilation (preserves progress, resume with make)",
4866
+ "description": "Send a user message to a thread",
3777
4867
  "flags": {
3778
4868
  "json": {
3779
4869
  "description": "Format output as json.",
@@ -3805,11 +4895,26 @@
3805
4895
  "hasDynamicHelp": false,
3806
4896
  "multiple": false,
3807
4897
  "type": "option"
4898
+ },
4899
+ "message": {
4900
+ "char": "m",
4901
+ "description": "User message to append",
4902
+ "name": "message",
4903
+ "required": true,
4904
+ "hasDynamicHelp": false,
4905
+ "multiple": false,
4906
+ "type": "option"
4907
+ },
4908
+ "oauth-only": {
4909
+ "description": "Prevent fallback to paid system key (use OAuth only)",
4910
+ "name": "oauth-only",
4911
+ "allowNo": false,
4912
+ "type": "boolean"
3808
4913
  }
3809
4914
  },
3810
4915
  "hasDynamicHelp": false,
3811
4916
  "hiddenAliases": [],
3812
- "id": "compile:doc:pause",
4917
+ "id": "compile:thread:message",
3813
4918
  "pluginAlias": "faces-cli",
3814
4919
  "pluginName": "faces-cli",
3815
4920
  "pluginType": "core",
@@ -3820,20 +4925,20 @@
3820
4925
  "dist",
3821
4926
  "commands",
3822
4927
  "compile",
3823
- "doc",
3824
- "pause.js"
4928
+ "thread",
4929
+ "message.js"
3825
4930
  ]
3826
4931
  },
3827
- "compile:doc:reset": {
4932
+ "compile:thread:pause": {
3828
4933
  "aliases": [],
3829
4934
  "args": {
3830
- "doc_id": {
3831
- "description": "Document ID",
3832
- "name": "doc_id",
4935
+ "thread_id": {
4936
+ "description": "Thread ID",
4937
+ "name": "thread_id",
3833
4938
  "required": true
3834
4939
  }
3835
4940
  },
3836
- "description": "Reset document compilation progress (wipe extraction, keep content)",
4941
+ "description": "Pause a running thread compilation (preserves progress, resume with make)",
3837
4942
  "flags": {
3838
4943
  "json": {
3839
4944
  "description": "Format output as json.",
@@ -3865,17 +4970,11 @@
3865
4970
  "hasDynamicHelp": false,
3866
4971
  "multiple": false,
3867
4972
  "type": "option"
3868
- },
3869
- "yes": {
3870
- "description": "Skip confirmation",
3871
- "name": "yes",
3872
- "allowNo": false,
3873
- "type": "boolean"
3874
4973
  }
3875
4974
  },
3876
4975
  "hasDynamicHelp": false,
3877
4976
  "hiddenAliases": [],
3878
- "id": "compile:doc:reset",
4977
+ "id": "compile:thread:pause",
3879
4978
  "pluginAlias": "faces-cli",
3880
4979
  "pluginName": "faces-cli",
3881
4980
  "pluginType": "core",
@@ -3886,20 +4985,20 @@
3886
4985
  "dist",
3887
4986
  "commands",
3888
4987
  "compile",
3889
- "doc",
3890
- "reset.js"
4988
+ "thread",
4989
+ "pause.js"
3891
4990
  ]
3892
4991
  },
3893
- "compile:thread:create": {
4992
+ "compile:thread:reset": {
3894
4993
  "aliases": [],
3895
4994
  "args": {
3896
- "face_id": {
3897
- "description": "Face alias",
3898
- "name": "face_id",
4995
+ "thread_id": {
4996
+ "description": "Thread ID",
4997
+ "name": "thread_id",
3899
4998
  "required": true
3900
4999
  }
3901
5000
  },
3902
- "description": "Start a new thread for a face",
5001
+ "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
3903
5002
  "flags": {
3904
5003
  "json": {
3905
5004
  "description": "Format output as json.",
@@ -3932,23 +5031,16 @@
3932
5031
  "multiple": false,
3933
5032
  "type": "option"
3934
5033
  },
3935
- "label": {
3936
- "description": "Thread label",
3937
- "name": "label",
3938
- "hasDynamicHelp": false,
3939
- "multiple": false,
3940
- "type": "option"
3941
- },
3942
- "oauth-only": {
3943
- "description": "Prevent fallback to paid system key (use OAuth only)",
3944
- "name": "oauth-only",
5034
+ "yes": {
5035
+ "description": "Skip confirmation",
5036
+ "name": "yes",
3945
5037
  "allowNo": false,
3946
5038
  "type": "boolean"
3947
5039
  }
3948
5040
  },
3949
5041
  "hasDynamicHelp": false,
3950
5042
  "hiddenAliases": [],
3951
- "id": "compile:thread:create",
5043
+ "id": "compile:thread:reset",
3952
5044
  "pluginAlias": "faces-cli",
3953
5045
  "pluginName": "faces-cli",
3954
5046
  "pluginType": "core",
@@ -3960,10 +5052,10 @@
3960
5052
  "commands",
3961
5053
  "compile",
3962
5054
  "thread",
3963
- "create.js"
5055
+ "reset.js"
3964
5056
  ]
3965
5057
  },
3966
- "compile:thread:delete": {
5058
+ "compile:thread:sync": {
3967
5059
  "aliases": [],
3968
5060
  "args": {
3969
5061
  "thread_id": {
@@ -3972,7 +5064,7 @@
3972
5064
  "required": true
3973
5065
  }
3974
5066
  },
3975
- "description": "Delete a thread",
5067
+ "description": "Archive and sync a thread into a face",
3976
5068
  "flags": {
3977
5069
  "json": {
3978
5070
  "description": "Format output as json.",
@@ -4004,17 +5096,11 @@
4004
5096
  "hasDynamicHelp": false,
4005
5097
  "multiple": false,
4006
5098
  "type": "option"
4007
- },
4008
- "yes": {
4009
- "description": "Skip confirmation",
4010
- "name": "yes",
4011
- "allowNo": false,
4012
- "type": "boolean"
4013
5099
  }
4014
5100
  },
4015
5101
  "hasDynamicHelp": false,
4016
5102
  "hiddenAliases": [],
4017
- "id": "compile:thread:delete",
5103
+ "id": "compile:thread:sync",
4018
5104
  "pluginAlias": "faces-cli",
4019
5105
  "pluginName": "faces-cli",
4020
5106
  "pluginType": "core",
@@ -4026,19 +5112,19 @@
4026
5112
  "commands",
4027
5113
  "compile",
4028
5114
  "thread",
4029
- "delete.js"
5115
+ "sync.js"
4030
5116
  ]
4031
5117
  },
4032
- "compile:thread:edit": {
5118
+ "face:tag:add": {
4033
5119
  "aliases": [],
4034
5120
  "args": {
4035
- "thread_id": {
4036
- "description": "Thread ID",
4037
- "name": "thread_id",
5121
+ "alias": {
5122
+ "description": "Face alias",
5123
+ "name": "alias",
4038
5124
  "required": true
4039
5125
  }
4040
5126
  },
4041
- "description": "Edit a thread (label and/or reassign face speaker)",
5127
+ "description": "Add tags to a face (appends, idempotent)",
4042
5128
  "flags": {
4043
5129
  "json": {
4044
5130
  "description": "Format output as json.",
@@ -4071,24 +5157,18 @@
4071
5157
  "multiple": false,
4072
5158
  "type": "option"
4073
5159
  },
4074
- "label": {
4075
- "description": "New thread label",
4076
- "name": "label",
4077
- "hasDynamicHelp": false,
4078
- "multiple": false,
4079
- "type": "option"
4080
- },
4081
- "face-speaker": {
4082
- "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
4083
- "name": "face-speaker",
5160
+ "tag": {
5161
+ "description": "Tag to add (repeatable)",
5162
+ "name": "tag",
5163
+ "required": true,
4084
5164
  "hasDynamicHelp": false,
4085
- "multiple": false,
5165
+ "multiple": true,
4086
5166
  "type": "option"
4087
5167
  }
4088
5168
  },
4089
5169
  "hasDynamicHelp": false,
4090
5170
  "hiddenAliases": [],
4091
- "id": "compile:thread:edit",
5171
+ "id": "face:tag:add",
4092
5172
  "pluginAlias": "faces-cli",
4093
5173
  "pluginName": "faces-cli",
4094
5174
  "pluginType": "core",
@@ -4098,21 +5178,21 @@
4098
5178
  "relativePath": [
4099
5179
  "dist",
4100
5180
  "commands",
4101
- "compile",
4102
- "thread",
4103
- "edit.js"
5181
+ "face",
5182
+ "tag",
5183
+ "add.js"
4104
5184
  ]
4105
5185
  },
4106
- "compile:thread:get": {
5186
+ "face:tag:list": {
4107
5187
  "aliases": [],
4108
5188
  "args": {
4109
- "thread_id": {
4110
- "description": "Thread ID",
4111
- "name": "thread_id",
5189
+ "alias": {
5190
+ "description": "Face alias",
5191
+ "name": "alias",
4112
5192
  "required": true
4113
5193
  }
4114
5194
  },
4115
- "description": "Get a thread by ID",
5195
+ "description": "List tags on a face",
4116
5196
  "flags": {
4117
5197
  "json": {
4118
5198
  "description": "Format output as json.",
@@ -4148,7 +5228,7 @@
4148
5228
  },
4149
5229
  "hasDynamicHelp": false,
4150
5230
  "hiddenAliases": [],
4151
- "id": "compile:thread:get",
5231
+ "id": "face:tag:list",
4152
5232
  "pluginAlias": "faces-cli",
4153
5233
  "pluginName": "faces-cli",
4154
5234
  "pluginType": "core",
@@ -4158,21 +5238,26 @@
4158
5238
  "relativePath": [
4159
5239
  "dist",
4160
5240
  "commands",
4161
- "compile",
4162
- "thread",
4163
- "get.js"
5241
+ "face",
5242
+ "tag",
5243
+ "list.js"
4164
5244
  ]
4165
5245
  },
4166
- "compile:thread:list": {
5246
+ "face:tag:remove": {
4167
5247
  "aliases": [],
4168
5248
  "args": {
4169
- "face_id": {
5249
+ "alias": {
4170
5250
  "description": "Face alias",
4171
- "name": "face_id",
5251
+ "name": "alias",
5252
+ "required": true
5253
+ },
5254
+ "tag": {
5255
+ "description": "Tag to remove",
5256
+ "name": "tag",
4172
5257
  "required": true
4173
5258
  }
4174
5259
  },
4175
- "description": "List threads for a face",
5260
+ "description": "Remove a tag from a face",
4176
5261
  "flags": {
4177
5262
  "json": {
4178
5263
  "description": "Format output as json.",
@@ -4208,7 +5293,7 @@
4208
5293
  },
4209
5294
  "hasDynamicHelp": false,
4210
5295
  "hiddenAliases": [],
4211
- "id": "compile:thread:list",
5296
+ "id": "face:tag:remove",
4212
5297
  "pluginAlias": "faces-cli",
4213
5298
  "pluginName": "faces-cli",
4214
5299
  "pluginType": "core",
@@ -4218,21 +5303,21 @@
4218
5303
  "relativePath": [
4219
5304
  "dist",
4220
5305
  "commands",
4221
- "compile",
4222
- "thread",
4223
- "list.js"
5306
+ "face",
5307
+ "tag",
5308
+ "remove.js"
4224
5309
  ]
4225
5310
  },
4226
- "compile:thread:make": {
5311
+ "face:tag:set": {
4227
5312
  "aliases": [],
4228
5313
  "args": {
4229
- "thread_id": {
4230
- "description": "Thread ID",
4231
- "name": "thread_id",
5314
+ "alias": {
5315
+ "description": "Face alias",
5316
+ "name": "alias",
4232
5317
  "required": true
4233
5318
  }
4234
5319
  },
4235
- "description": "Compile an existing thread (prepare + sync in one step)",
5320
+ "description": "Replace all tags on a face",
4236
5321
  "flags": {
4237
5322
  "json": {
4238
5323
  "description": "Format output as json.",
@@ -4265,24 +5350,18 @@
4265
5350
  "multiple": false,
4266
5351
  "type": "option"
4267
5352
  },
4268
- "timeout": {
4269
- "description": "Compile timeout in seconds (default: 600)",
4270
- "name": "timeout",
4271
- "default": 600,
5353
+ "tag": {
5354
+ "description": "Tag to set (repeatable, replaces all)",
5355
+ "name": "tag",
5356
+ "required": true,
4272
5357
  "hasDynamicHelp": false,
4273
- "multiple": false,
5358
+ "multiple": true,
4274
5359
  "type": "option"
4275
- },
4276
- "no-wait": {
4277
- "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
4278
- "name": "no-wait",
4279
- "allowNo": false,
4280
- "type": "boolean"
4281
5360
  }
4282
5361
  },
4283
5362
  "hasDynamicHelp": false,
4284
5363
  "hiddenAliases": [],
4285
- "id": "compile:thread:make",
5364
+ "id": "face:tag:set",
4286
5365
  "pluginAlias": "faces-cli",
4287
5366
  "pluginName": "faces-cli",
4288
5367
  "pluginType": "core",
@@ -4292,21 +5371,21 @@
4292
5371
  "relativePath": [
4293
5372
  "dist",
4294
5373
  "commands",
4295
- "compile",
4296
- "thread",
4297
- "make.js"
5374
+ "face",
5375
+ "tag",
5376
+ "set.js"
4298
5377
  ]
4299
5378
  },
4300
- "compile:thread:message": {
5379
+ "team:tag:add": {
4301
5380
  "aliases": [],
4302
5381
  "args": {
4303
- "thread_id": {
4304
- "description": "Thread ID",
4305
- "name": "thread_id",
5382
+ "team_id": {
5383
+ "description": "Team ID",
5384
+ "name": "team_id",
4306
5385
  "required": true
4307
5386
  }
4308
5387
  },
4309
- "description": "Send a user message to a thread",
5388
+ "description": "Add tags to a team (appends, idempotent)",
4310
5389
  "flags": {
4311
5390
  "json": {
4312
5391
  "description": "Format output as json.",
@@ -4339,25 +5418,18 @@
4339
5418
  "multiple": false,
4340
5419
  "type": "option"
4341
5420
  },
4342
- "message": {
4343
- "char": "m",
4344
- "description": "User message to append",
4345
- "name": "message",
5421
+ "tag": {
5422
+ "description": "Tag to add (repeatable)",
5423
+ "name": "tag",
4346
5424
  "required": true,
4347
5425
  "hasDynamicHelp": false,
4348
- "multiple": false,
5426
+ "multiple": true,
4349
5427
  "type": "option"
4350
- },
4351
- "oauth-only": {
4352
- "description": "Prevent fallback to paid system key (use OAuth only)",
4353
- "name": "oauth-only",
4354
- "allowNo": false,
4355
- "type": "boolean"
4356
5428
  }
4357
5429
  },
4358
5430
  "hasDynamicHelp": false,
4359
5431
  "hiddenAliases": [],
4360
- "id": "compile:thread:message",
5432
+ "id": "team:tag:add",
4361
5433
  "pluginAlias": "faces-cli",
4362
5434
  "pluginName": "faces-cli",
4363
5435
  "pluginType": "core",
@@ -4367,21 +5439,21 @@
4367
5439
  "relativePath": [
4368
5440
  "dist",
4369
5441
  "commands",
4370
- "compile",
4371
- "thread",
4372
- "message.js"
5442
+ "team",
5443
+ "tag",
5444
+ "add.js"
4373
5445
  ]
4374
5446
  },
4375
- "compile:thread:pause": {
5447
+ "team:tag:list": {
4376
5448
  "aliases": [],
4377
5449
  "args": {
4378
- "thread_id": {
4379
- "description": "Thread ID",
4380
- "name": "thread_id",
5450
+ "team_id": {
5451
+ "description": "Team ID",
5452
+ "name": "team_id",
4381
5453
  "required": true
4382
5454
  }
4383
5455
  },
4384
- "description": "Pause a running thread compilation (preserves progress, resume with make)",
5456
+ "description": "List tags on a team",
4385
5457
  "flags": {
4386
5458
  "json": {
4387
5459
  "description": "Format output as json.",
@@ -4417,7 +5489,7 @@
4417
5489
  },
4418
5490
  "hasDynamicHelp": false,
4419
5491
  "hiddenAliases": [],
4420
- "id": "compile:thread:pause",
5492
+ "id": "team:tag:list",
4421
5493
  "pluginAlias": "faces-cli",
4422
5494
  "pluginName": "faces-cli",
4423
5495
  "pluginType": "core",
@@ -4427,21 +5499,26 @@
4427
5499
  "relativePath": [
4428
5500
  "dist",
4429
5501
  "commands",
4430
- "compile",
4431
- "thread",
4432
- "pause.js"
5502
+ "team",
5503
+ "tag",
5504
+ "list.js"
4433
5505
  ]
4434
5506
  },
4435
- "compile:thread:reset": {
5507
+ "team:tag:remove": {
4436
5508
  "aliases": [],
4437
5509
  "args": {
4438
- "thread_id": {
4439
- "description": "Thread ID",
4440
- "name": "thread_id",
5510
+ "team_id": {
5511
+ "description": "Team ID",
5512
+ "name": "team_id",
5513
+ "required": true
5514
+ },
5515
+ "tag": {
5516
+ "description": "Tag to remove",
5517
+ "name": "tag",
4441
5518
  "required": true
4442
5519
  }
4443
5520
  },
4444
- "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
5521
+ "description": "Remove a tag from a team",
4445
5522
  "flags": {
4446
5523
  "json": {
4447
5524
  "description": "Format output as json.",
@@ -4473,17 +5550,11 @@
4473
5550
  "hasDynamicHelp": false,
4474
5551
  "multiple": false,
4475
5552
  "type": "option"
4476
- },
4477
- "yes": {
4478
- "description": "Skip confirmation",
4479
- "name": "yes",
4480
- "allowNo": false,
4481
- "type": "boolean"
4482
5553
  }
4483
5554
  },
4484
5555
  "hasDynamicHelp": false,
4485
5556
  "hiddenAliases": [],
4486
- "id": "compile:thread:reset",
5557
+ "id": "team:tag:remove",
4487
5558
  "pluginAlias": "faces-cli",
4488
5559
  "pluginName": "faces-cli",
4489
5560
  "pluginType": "core",
@@ -4493,21 +5564,21 @@
4493
5564
  "relativePath": [
4494
5565
  "dist",
4495
5566
  "commands",
4496
- "compile",
4497
- "thread",
4498
- "reset.js"
5567
+ "team",
5568
+ "tag",
5569
+ "remove.js"
4499
5570
  ]
4500
5571
  },
4501
- "compile:thread:sync": {
5572
+ "team:tag:set": {
4502
5573
  "aliases": [],
4503
5574
  "args": {
4504
- "thread_id": {
4505
- "description": "Thread ID",
4506
- "name": "thread_id",
5575
+ "team_id": {
5576
+ "description": "Team ID",
5577
+ "name": "team_id",
4507
5578
  "required": true
4508
5579
  }
4509
5580
  },
4510
- "description": "Archive and sync a thread into a face",
5581
+ "description": "Replace all tags on a team",
4511
5582
  "flags": {
4512
5583
  "json": {
4513
5584
  "description": "Format output as json.",
@@ -4539,11 +5610,19 @@
4539
5610
  "hasDynamicHelp": false,
4540
5611
  "multiple": false,
4541
5612
  "type": "option"
5613
+ },
5614
+ "tag": {
5615
+ "description": "Tag to set (repeatable, replaces all)",
5616
+ "name": "tag",
5617
+ "required": true,
5618
+ "hasDynamicHelp": false,
5619
+ "multiple": true,
5620
+ "type": "option"
4542
5621
  }
4543
5622
  },
4544
5623
  "hasDynamicHelp": false,
4545
5624
  "hiddenAliases": [],
4546
- "id": "compile:thread:sync",
5625
+ "id": "team:tag:set",
4547
5626
  "pluginAlias": "faces-cli",
4548
5627
  "pluginName": "faces-cli",
4549
5628
  "pluginType": "core",
@@ -4553,11 +5632,11 @@
4553
5632
  "relativePath": [
4554
5633
  "dist",
4555
5634
  "commands",
4556
- "compile",
4557
- "thread",
4558
- "sync.js"
5635
+ "team",
5636
+ "tag",
5637
+ "set.js"
4559
5638
  ]
4560
5639
  }
4561
5640
  },
4562
- "version": "1.6.0"
5641
+ "version": "1.6.2"
4563
5642
  }