faces-cli 1.6.1 → 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 (48) 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/catalog/backup.js +84 -19
  5. package/dist/commands/catalog/doctor.js +10 -4
  6. package/dist/commands/catalog/restore.js +64 -11
  7. package/dist/commands/face/create.d.ts +1 -0
  8. package/dist/commands/face/create.js +14 -1
  9. package/dist/commands/face/list.d.ts +1 -0
  10. package/dist/commands/face/list.js +11 -1
  11. package/dist/commands/face/tag/add.d.ts +14 -0
  12. package/dist/commands/face/tag/add.js +29 -0
  13. package/dist/commands/face/tag/list.d.ts +13 -0
  14. package/dist/commands/face/tag/list.js +35 -0
  15. package/dist/commands/face/tag/remove.d.ts +14 -0
  16. package/dist/commands/face/tag/remove.js +29 -0
  17. package/dist/commands/face/tag/set.d.ts +14 -0
  18. package/dist/commands/face/tag/set.js +29 -0
  19. package/dist/commands/face/update.d.ts +1 -0
  20. package/dist/commands/face/update.js +17 -6
  21. package/dist/commands/team/add.d.ts +14 -0
  22. package/dist/commands/team/add.js +51 -0
  23. package/dist/commands/team/create.d.ts +15 -0
  24. package/dist/commands/team/create.js +53 -0
  25. package/dist/commands/team/delete.d.ts +15 -0
  26. package/dist/commands/team/delete.js +44 -0
  27. package/dist/commands/team/get.d.ts +13 -0
  28. package/dist/commands/team/get.js +28 -0
  29. package/dist/commands/team/list.d.ts +10 -0
  30. package/dist/commands/team/list.js +49 -0
  31. package/dist/commands/team/members.d.ts +13 -0
  32. package/dist/commands/team/members.js +28 -0
  33. package/dist/commands/team/remove.d.ts +14 -0
  34. package/dist/commands/team/remove.js +42 -0
  35. package/dist/commands/team/tag/add.d.ts +14 -0
  36. package/dist/commands/team/tag/add.js +29 -0
  37. package/dist/commands/team/tag/list.d.ts +13 -0
  38. package/dist/commands/team/tag/list.js +35 -0
  39. package/dist/commands/team/tag/remove.d.ts +14 -0
  40. package/dist/commands/team/tag/remove.js +29 -0
  41. package/dist/commands/team/tag/set.d.ts +14 -0
  42. package/dist/commands/team/tag/set.js +29 -0
  43. package/dist/commands/team/update.d.ts +17 -0
  44. package/dist/commands/team/update.js +48 -0
  45. package/dist/team-catalog.d.ts +16 -0
  46. package/dist/team-catalog.js +99 -0
  47. package/oclif.manifest.json +1522 -436
  48. package/package.json +1 -1
@@ -638,10 +638,10 @@
638
638
  "whoami.js"
639
639
  ]
640
640
  },
641
- "billing:balance": {
641
+ "catalog:backup": {
642
642
  "aliases": [],
643
643
  "args": {},
644
- "description": "Show credit balance and payment method status",
644
+ "description": "Snapshot all faces, teams, and source material for migration",
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": "billing:balance",
680
+ "id": "catalog:backup",
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
- "billing",
691
- "balance.js"
690
+ "catalog",
691
+ "backup.js"
692
692
  ]
693
693
  },
694
- "billing:card-setup": {
694
+ "catalog:doctor": {
695
695
  "aliases": [],
696
696
  "args": {},
697
- "description": "Get a Stripe card setup URL to save a payment method",
697
+ "description": "Diagnose and repair the local face catalog",
698
698
  "flags": {
699
699
  "json": {
700
700
  "description": "Format output as json.",
@@ -726,11 +726,23 @@
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"
729
741
  }
730
742
  },
731
743
  "hasDynamicHelp": false,
732
744
  "hiddenAliases": [],
733
- "id": "billing:card-setup",
745
+ "id": "catalog:doctor",
734
746
  "pluginAlias": "faces-cli",
735
747
  "pluginName": "faces-cli",
736
748
  "pluginType": "core",
@@ -740,14 +752,14 @@
740
752
  "relativePath": [
741
753
  "dist",
742
754
  "commands",
743
- "billing",
744
- "card-setup.js"
755
+ "catalog",
756
+ "doctor.js"
745
757
  ]
746
758
  },
747
- "billing:checkout": {
759
+ "catalog:list": {
748
760
  "aliases": [],
749
761
  "args": {},
750
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
762
+ "description": "List all faces in the local catalog",
751
763
  "flags": {
752
764
  "json": {
753
765
  "description": "Format output as json.",
@@ -779,22 +791,11 @@
779
791
  "hasDynamicHelp": false,
780
792
  "multiple": false,
781
793
  "type": "option"
782
- },
783
- "plan": {
784
- "description": "Plan to subscribe to",
785
- "name": "plan",
786
- "default": "connect",
787
- "hasDynamicHelp": false,
788
- "multiple": false,
789
- "options": [
790
- "connect"
791
- ],
792
- "type": "option"
793
794
  }
794
795
  },
795
796
  "hasDynamicHelp": false,
796
797
  "hiddenAliases": [],
797
- "id": "billing:checkout",
798
+ "id": "catalog:list",
798
799
  "pluginAlias": "faces-cli",
799
800
  "pluginName": "faces-cli",
800
801
  "pluginType": "core",
@@ -804,14 +805,14 @@
804
805
  "relativePath": [
805
806
  "dist",
806
807
  "commands",
807
- "billing",
808
- "checkout.js"
808
+ "catalog",
809
+ "list.js"
809
810
  ]
810
811
  },
811
- "billing:llm-costs": {
812
+ "catalog:manyfaced": {
812
813
  "aliases": [],
813
814
  "args": {},
814
- "description": "List available LLMs and their per-token costs",
815
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
815
816
  "flags": {
816
817
  "json": {
817
818
  "description": "Format output as json.",
@@ -844,17 +845,37 @@
844
845
  "multiple": false,
845
846
  "type": "option"
846
847
  },
847
- "provider": {
848
- "description": "Filter by provider (e.g. openai, anthropic)",
849
- "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",
850
865
  "hasDynamicHelp": false,
851
866
  "multiple": false,
852
867
  "type": "option"
868
+ },
869
+ "refresh": {
870
+ "description": "Force refresh the skill index (ignore cache)",
871
+ "name": "refresh",
872
+ "allowNo": false,
873
+ "type": "boolean"
853
874
  }
854
875
  },
855
876
  "hasDynamicHelp": false,
856
877
  "hiddenAliases": [],
857
- "id": "billing:llm-costs",
878
+ "id": "catalog:manyfaced",
858
879
  "pluginAlias": "faces-cli",
859
880
  "pluginName": "faces-cli",
860
881
  "pluginType": "core",
@@ -864,14 +885,19 @@
864
885
  "relativePath": [
865
886
  "dist",
866
887
  "commands",
867
- "billing",
868
- "llm-costs.js"
888
+ "catalog",
889
+ "manyfaced.js"
869
890
  ]
870
891
  },
871
- "billing:quota": {
892
+ "catalog:restore": {
872
893
  "aliases": [],
873
- "args": {},
874
- "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",
875
901
  "flags": {
876
902
  "json": {
877
903
  "description": "Format output as json.",
@@ -903,11 +929,17 @@
903
929
  "hasDynamicHelp": false,
904
930
  "multiple": false,
905
931
  "type": "option"
932
+ },
933
+ "compile": {
934
+ "description": "Run compile:all after restoring",
935
+ "name": "compile",
936
+ "allowNo": false,
937
+ "type": "boolean"
906
938
  }
907
939
  },
908
940
  "hasDynamicHelp": false,
909
941
  "hiddenAliases": [],
910
- "id": "billing:quota",
942
+ "id": "catalog:restore",
911
943
  "pluginAlias": "faces-cli",
912
944
  "pluginName": "faces-cli",
913
945
  "pluginType": "core",
@@ -917,14 +949,14 @@
917
949
  "relativePath": [
918
950
  "dist",
919
951
  "commands",
920
- "billing",
921
- "quota.js"
952
+ "catalog",
953
+ "restore.js"
922
954
  ]
923
955
  },
924
- "billing:subscription": {
956
+ "billing:balance": {
925
957
  "aliases": [],
926
958
  "args": {},
927
- "description": "Show current plan, face count, and renewal date",
959
+ "description": "Show credit balance and payment method status",
928
960
  "flags": {
929
961
  "json": {
930
962
  "description": "Format output as json.",
@@ -960,7 +992,7 @@
960
992
  },
961
993
  "hasDynamicHelp": false,
962
994
  "hiddenAliases": [],
963
- "id": "billing:subscription",
995
+ "id": "billing:balance",
964
996
  "pluginAlias": "faces-cli",
965
997
  "pluginName": "faces-cli",
966
998
  "pluginType": "core",
@@ -971,13 +1003,13 @@
971
1003
  "dist",
972
1004
  "commands",
973
1005
  "billing",
974
- "subscription.js"
1006
+ "balance.js"
975
1007
  ]
976
1008
  },
977
- "billing:topup": {
1009
+ "billing:card-setup": {
978
1010
  "aliases": [],
979
1011
  "args": {},
980
- "description": "Top up credit balance using saved payment method",
1012
+ "description": "Get a Stripe card setup URL to save a payment method",
981
1013
  "flags": {
982
1014
  "json": {
983
1015
  "description": "Format output as json.",
@@ -1009,26 +1041,11 @@
1009
1041
  "hasDynamicHelp": false,
1010
1042
  "multiple": false,
1011
1043
  "type": "option"
1012
- },
1013
- "amount": {
1014
- "description": "Top-up amount in USD (min $1)",
1015
- "name": "amount",
1016
- "required": true,
1017
- "hasDynamicHelp": false,
1018
- "multiple": false,
1019
- "type": "option"
1020
- },
1021
- "payment-ref": {
1022
- "description": "Payment reference (admin/test path)",
1023
- "name": "payment-ref",
1024
- "hasDynamicHelp": false,
1025
- "multiple": false,
1026
- "type": "option"
1027
1044
  }
1028
1045
  },
1029
1046
  "hasDynamicHelp": false,
1030
1047
  "hiddenAliases": [],
1031
- "id": "billing:topup",
1048
+ "id": "billing:card-setup",
1032
1049
  "pluginAlias": "faces-cli",
1033
1050
  "pluginName": "faces-cli",
1034
1051
  "pluginType": "core",
@@ -1039,13 +1056,13 @@
1039
1056
  "dist",
1040
1057
  "commands",
1041
1058
  "billing",
1042
- "topup.js"
1059
+ "card-setup.js"
1043
1060
  ]
1044
1061
  },
1045
- "billing:usage": {
1062
+ "billing:checkout": {
1046
1063
  "aliases": [],
1047
1064
  "args": {},
1048
- "description": "Aggregated usage analytics",
1065
+ "description": "Get a Stripe checkout URL to upgrade your subscription plan",
1049
1066
  "flags": {
1050
1067
  "json": {
1051
1068
  "description": "Format output as json.",
@@ -1078,37 +1095,21 @@
1078
1095
  "multiple": false,
1079
1096
  "type": "option"
1080
1097
  },
1081
- "group-by": {
1082
- "description": "Group results",
1083
- "name": "group-by",
1098
+ "plan": {
1099
+ "description": "Plan to subscribe to",
1100
+ "name": "plan",
1101
+ "default": "connect",
1084
1102
  "hasDynamicHelp": false,
1085
1103
  "multiple": false,
1086
1104
  "options": [
1087
- "api_key",
1088
- "model",
1089
- "llm",
1090
- "date"
1105
+ "connect"
1091
1106
  ],
1092
1107
  "type": "option"
1093
- },
1094
- "from": {
1095
- "description": "Start date (YYYY-MM-DD)",
1096
- "name": "from",
1097
- "hasDynamicHelp": false,
1098
- "multiple": false,
1099
- "type": "option"
1100
- },
1101
- "to": {
1102
- "description": "End date (YYYY-MM-DD)",
1103
- "name": "to",
1104
- "hasDynamicHelp": false,
1105
- "multiple": false,
1106
- "type": "option"
1107
1108
  }
1108
1109
  },
1109
1110
  "hasDynamicHelp": false,
1110
1111
  "hiddenAliases": [],
1111
- "id": "billing:usage",
1112
+ "id": "billing:checkout",
1112
1113
  "pluginAlias": "faces-cli",
1113
1114
  "pluginName": "faces-cli",
1114
1115
  "pluginType": "core",
@@ -1119,13 +1120,13 @@
1119
1120
  "dist",
1120
1121
  "commands",
1121
1122
  "billing",
1122
- "usage.js"
1123
+ "checkout.js"
1123
1124
  ]
1124
1125
  },
1125
- "catalog:backup": {
1126
+ "billing:llm-costs": {
1126
1127
  "aliases": [],
1127
1128
  "args": {},
1128
- "description": "Snapshot all faces and source material for migration",
1129
+ "description": "List available LLMs and their per-token costs",
1129
1130
  "flags": {
1130
1131
  "json": {
1131
1132
  "description": "Format output as json.",
@@ -1157,11 +1158,18 @@
1157
1158
  "hasDynamicHelp": false,
1158
1159
  "multiple": false,
1159
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"
1160
1168
  }
1161
1169
  },
1162
1170
  "hasDynamicHelp": false,
1163
1171
  "hiddenAliases": [],
1164
- "id": "catalog:backup",
1172
+ "id": "billing:llm-costs",
1165
1173
  "pluginAlias": "faces-cli",
1166
1174
  "pluginName": "faces-cli",
1167
1175
  "pluginType": "core",
@@ -1171,14 +1179,14 @@
1171
1179
  "relativePath": [
1172
1180
  "dist",
1173
1181
  "commands",
1174
- "catalog",
1175
- "backup.js"
1182
+ "billing",
1183
+ "llm-costs.js"
1176
1184
  ]
1177
1185
  },
1178
- "catalog:doctor": {
1186
+ "billing:quota": {
1179
1187
  "aliases": [],
1180
1188
  "args": {},
1181
- "description": "Diagnose and repair the local face catalog",
1189
+ "description": "Show compile token quota and per-face stats",
1182
1190
  "flags": {
1183
1191
  "json": {
1184
1192
  "description": "Format output as json.",
@@ -1210,23 +1218,11 @@
1210
1218
  "hasDynamicHelp": false,
1211
1219
  "multiple": false,
1212
1220
  "type": "option"
1213
- },
1214
- "fix": {
1215
- "description": "Rebuild missing or stale catalog entries from API",
1216
- "name": "fix",
1217
- "allowNo": false,
1218
- "type": "boolean"
1219
- },
1220
- "generate": {
1221
- "description": "Fix + generate missing descriptions via LLM",
1222
- "name": "generate",
1223
- "allowNo": false,
1224
- "type": "boolean"
1225
1221
  }
1226
1222
  },
1227
1223
  "hasDynamicHelp": false,
1228
1224
  "hiddenAliases": [],
1229
- "id": "catalog:doctor",
1225
+ "id": "billing:quota",
1230
1226
  "pluginAlias": "faces-cli",
1231
1227
  "pluginName": "faces-cli",
1232
1228
  "pluginType": "core",
@@ -1236,14 +1232,14 @@
1236
1232
  "relativePath": [
1237
1233
  "dist",
1238
1234
  "commands",
1239
- "catalog",
1240
- "doctor.js"
1235
+ "billing",
1236
+ "quota.js"
1241
1237
  ]
1242
1238
  },
1243
- "catalog:list": {
1239
+ "billing:subscription": {
1244
1240
  "aliases": [],
1245
1241
  "args": {},
1246
- "description": "List all faces in the local catalog",
1242
+ "description": "Show current plan, face count, and renewal date",
1247
1243
  "flags": {
1248
1244
  "json": {
1249
1245
  "description": "Format output as json.",
@@ -1279,7 +1275,7 @@
1279
1275
  },
1280
1276
  "hasDynamicHelp": false,
1281
1277
  "hiddenAliases": [],
1282
- "id": "catalog:list",
1278
+ "id": "billing:subscription",
1283
1279
  "pluginAlias": "faces-cli",
1284
1280
  "pluginName": "faces-cli",
1285
1281
  "pluginType": "core",
@@ -1289,14 +1285,14 @@
1289
1285
  "relativePath": [
1290
1286
  "dist",
1291
1287
  "commands",
1292
- "catalog",
1293
- "list.js"
1288
+ "billing",
1289
+ "subscription.js"
1294
1290
  ]
1295
1291
  },
1296
- "catalog:manyfaced": {
1292
+ "billing:topup": {
1297
1293
  "aliases": [],
1298
1294
  "args": {},
1299
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1295
+ "description": "Top up credit balance using saved payment method",
1300
1296
  "flags": {
1301
1297
  "json": {
1302
1298
  "description": "Format output as json.",
@@ -1329,37 +1325,25 @@
1329
1325
  "multiple": false,
1330
1326
  "type": "option"
1331
1327
  },
1332
- "skill": {
1333
- "description": "Show details for a specific skill",
1334
- "name": "skill",
1335
- "hasDynamicHelp": false,
1336
- "multiple": false,
1337
- "type": "option"
1338
- },
1339
- "install": {
1340
- "description": "Install a skill by name",
1341
- "name": "install",
1328
+ "amount": {
1329
+ "description": "Top-up amount in USD (min $1)",
1330
+ "name": "amount",
1331
+ "required": true,
1342
1332
  "hasDynamicHelp": false,
1343
1333
  "multiple": false,
1344
1334
  "type": "option"
1345
1335
  },
1346
- "skills-dir": {
1347
- "description": "Directory to install skills into (required for --install)",
1348
- "name": "skills-dir",
1336
+ "payment-ref": {
1337
+ "description": "Payment reference (admin/test path)",
1338
+ "name": "payment-ref",
1349
1339
  "hasDynamicHelp": false,
1350
1340
  "multiple": false,
1351
1341
  "type": "option"
1352
- },
1353
- "refresh": {
1354
- "description": "Force refresh the skill index (ignore cache)",
1355
- "name": "refresh",
1356
- "allowNo": false,
1357
- "type": "boolean"
1358
1342
  }
1359
1343
  },
1360
1344
  "hasDynamicHelp": false,
1361
1345
  "hiddenAliases": [],
1362
- "id": "catalog:manyfaced",
1346
+ "id": "billing:topup",
1363
1347
  "pluginAlias": "faces-cli",
1364
1348
  "pluginName": "faces-cli",
1365
1349
  "pluginType": "core",
@@ -1369,19 +1353,14 @@
1369
1353
  "relativePath": [
1370
1354
  "dist",
1371
1355
  "commands",
1372
- "catalog",
1373
- "manyfaced.js"
1356
+ "billing",
1357
+ "topup.js"
1374
1358
  ]
1375
1359
  },
1376
- "catalog:restore": {
1360
+ "billing:usage": {
1377
1361
  "aliases": [],
1378
- "args": {
1379
- "file": {
1380
- "description": "Backup file path (default: most recent in ~/.faces/backups/)",
1381
- "name": "file"
1382
- }
1383
- },
1384
- "description": "Restore faces and source material from a backup snapshot",
1362
+ "args": {},
1363
+ "description": "Aggregated usage analytics",
1385
1364
  "flags": {
1386
1365
  "json": {
1387
1366
  "description": "Format output as json.",
@@ -1414,16 +1393,37 @@
1414
1393
  "multiple": false,
1415
1394
  "type": "option"
1416
1395
  },
1417
- "compile": {
1418
- "description": "Run compile:all after restoring",
1419
- "name": "compile",
1420
- "allowNo": false,
1421
- "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"
1422
1422
  }
1423
1423
  },
1424
1424
  "hasDynamicHelp": false,
1425
1425
  "hiddenAliases": [],
1426
- "id": "catalog:restore",
1426
+ "id": "billing:usage",
1427
1427
  "pluginAlias": "faces-cli",
1428
1428
  "pluginName": "faces-cli",
1429
1429
  "pluginType": "core",
@@ -1433,8 +1433,8 @@
1433
1433
  "relativePath": [
1434
1434
  "dist",
1435
1435
  "commands",
1436
- "catalog",
1437
- "restore.js"
1436
+ "billing",
1437
+ "usage.js"
1438
1438
  ]
1439
1439
  },
1440
1440
  "chat:chat": {
@@ -1740,6 +1740,182 @@
1740
1740
  "responses.js"
1741
1741
  ]
1742
1742
  },
1743
+ "config:clear": {
1744
+ "aliases": [],
1745
+ "args": {},
1746
+ "description": "Delete all saved credentials and config",
1747
+ "flags": {
1748
+ "json": {
1749
+ "description": "Format output as json.",
1750
+ "helpGroup": "GLOBAL",
1751
+ "name": "json",
1752
+ "allowNo": false,
1753
+ "type": "boolean"
1754
+ },
1755
+ "base-url": {
1756
+ "description": "API base URL",
1757
+ "env": "FACES_BASE_URL",
1758
+ "name": "base-url",
1759
+ "hasDynamicHelp": false,
1760
+ "multiple": false,
1761
+ "type": "option"
1762
+ },
1763
+ "token": {
1764
+ "description": "JWT bearer token",
1765
+ "env": "FACES_TOKEN",
1766
+ "name": "token",
1767
+ "hasDynamicHelp": false,
1768
+ "multiple": false,
1769
+ "type": "option"
1770
+ },
1771
+ "api-key": {
1772
+ "description": "API key",
1773
+ "env": "FACES_API_KEY",
1774
+ "name": "api-key",
1775
+ "hasDynamicHelp": false,
1776
+ "multiple": false,
1777
+ "type": "option"
1778
+ },
1779
+ "yes": {
1780
+ "description": "Skip confirmation",
1781
+ "name": "yes",
1782
+ "allowNo": false,
1783
+ "type": "boolean"
1784
+ }
1785
+ },
1786
+ "hasDynamicHelp": false,
1787
+ "hiddenAliases": [],
1788
+ "id": "config:clear",
1789
+ "pluginAlias": "faces-cli",
1790
+ "pluginName": "faces-cli",
1791
+ "pluginType": "core",
1792
+ "strict": true,
1793
+ "enableJsonFlag": true,
1794
+ "isESM": true,
1795
+ "relativePath": [
1796
+ "dist",
1797
+ "commands",
1798
+ "config",
1799
+ "clear.js"
1800
+ ]
1801
+ },
1802
+ "config:set": {
1803
+ "aliases": [],
1804
+ "args": {
1805
+ "key": {
1806
+ "description": "Config key",
1807
+ "name": "key",
1808
+ "required": true
1809
+ },
1810
+ "value": {
1811
+ "description": "Config value",
1812
+ "name": "value",
1813
+ "required": true
1814
+ }
1815
+ },
1816
+ "description": "Set a config value (e.g. base_url, api_key, token)",
1817
+ "flags": {
1818
+ "json": {
1819
+ "description": "Format output as json.",
1820
+ "helpGroup": "GLOBAL",
1821
+ "name": "json",
1822
+ "allowNo": false,
1823
+ "type": "boolean"
1824
+ },
1825
+ "base-url": {
1826
+ "description": "API base URL",
1827
+ "env": "FACES_BASE_URL",
1828
+ "name": "base-url",
1829
+ "hasDynamicHelp": false,
1830
+ "multiple": false,
1831
+ "type": "option"
1832
+ },
1833
+ "token": {
1834
+ "description": "JWT bearer token",
1835
+ "env": "FACES_TOKEN",
1836
+ "name": "token",
1837
+ "hasDynamicHelp": false,
1838
+ "multiple": false,
1839
+ "type": "option"
1840
+ },
1841
+ "api-key": {
1842
+ "description": "API key",
1843
+ "env": "FACES_API_KEY",
1844
+ "name": "api-key",
1845
+ "hasDynamicHelp": false,
1846
+ "multiple": false,
1847
+ "type": "option"
1848
+ }
1849
+ },
1850
+ "hasDynamicHelp": false,
1851
+ "hiddenAliases": [],
1852
+ "id": "config:set",
1853
+ "pluginAlias": "faces-cli",
1854
+ "pluginName": "faces-cli",
1855
+ "pluginType": "core",
1856
+ "strict": true,
1857
+ "enableJsonFlag": true,
1858
+ "isESM": true,
1859
+ "relativePath": [
1860
+ "dist",
1861
+ "commands",
1862
+ "config",
1863
+ "set.js"
1864
+ ]
1865
+ },
1866
+ "config:show": {
1867
+ "aliases": [],
1868
+ "args": {},
1869
+ "description": "Print current config (credentials are masked)",
1870
+ "flags": {
1871
+ "json": {
1872
+ "description": "Format output as json.",
1873
+ "helpGroup": "GLOBAL",
1874
+ "name": "json",
1875
+ "allowNo": false,
1876
+ "type": "boolean"
1877
+ },
1878
+ "base-url": {
1879
+ "description": "API base URL",
1880
+ "env": "FACES_BASE_URL",
1881
+ "name": "base-url",
1882
+ "hasDynamicHelp": false,
1883
+ "multiple": false,
1884
+ "type": "option"
1885
+ },
1886
+ "token": {
1887
+ "description": "JWT bearer token",
1888
+ "env": "FACES_TOKEN",
1889
+ "name": "token",
1890
+ "hasDynamicHelp": false,
1891
+ "multiple": false,
1892
+ "type": "option"
1893
+ },
1894
+ "api-key": {
1895
+ "description": "API key",
1896
+ "env": "FACES_API_KEY",
1897
+ "name": "api-key",
1898
+ "hasDynamicHelp": false,
1899
+ "multiple": false,
1900
+ "type": "option"
1901
+ }
1902
+ },
1903
+ "hasDynamicHelp": false,
1904
+ "hiddenAliases": [],
1905
+ "id": "config:show",
1906
+ "pluginAlias": "faces-cli",
1907
+ "pluginName": "faces-cli",
1908
+ "pluginType": "core",
1909
+ "strict": true,
1910
+ "enableJsonFlag": true,
1911
+ "isESM": true,
1912
+ "relativePath": [
1913
+ "dist",
1914
+ "commands",
1915
+ "config",
1916
+ "show.js"
1917
+ ]
1918
+ },
1743
1919
  "compile:all": {
1744
1920
  "aliases": [],
1745
1921
  "args": {},
@@ -2009,10 +2185,10 @@
2009
2185
  "upload.js"
2010
2186
  ]
2011
2187
  },
2012
- "config:clear": {
2188
+ "keys:create": {
2013
2189
  "aliases": [],
2014
2190
  "args": {},
2015
- "description": "Delete all saved credentials and config",
2191
+ "description": "Create a new API key (JWT required)",
2016
2192
  "flags": {
2017
2193
  "json": {
2018
2194
  "description": "Format output as json.",
@@ -2045,44 +2221,122 @@
2045
2221
  "multiple": false,
2046
2222
  "type": "option"
2047
2223
  },
2048
- "yes": {
2049
- "description": "Skip confirmation",
2050
- "name": "yes",
2051
- "allowNo": false,
2052
- "type": "boolean"
2053
- }
2054
- },
2055
- "hasDynamicHelp": false,
2056
- "hiddenAliases": [],
2057
- "id": "config:clear",
2058
- "pluginAlias": "faces-cli",
2059
- "pluginName": "faces-cli",
2060
- "pluginType": "core",
2061
- "strict": true,
2062
- "enableJsonFlag": true,
2063
- "isESM": true,
2064
- "relativePath": [
2065
- "dist",
2066
- "commands",
2067
- "config",
2068
- "clear.js"
2069
- ]
2070
- },
2071
- "config:set": {
2072
- "aliases": [],
2073
- "args": {
2074
- "key": {
2075
- "description": "Config key",
2076
- "name": "key",
2077
- "required": true
2224
+ "name": {
2225
+ "description": "Key name/label",
2226
+ "name": "name",
2227
+ "required": true,
2228
+ "hasDynamicHelp": false,
2229
+ "multiple": false,
2230
+ "type": "option"
2078
2231
  },
2079
- "value": {
2080
- "description": "Config value",
2081
- "name": "value",
2232
+ "expires-days": {
2233
+ "description": "Expiry in days (omit for no expiry)",
2234
+ "name": "expires-days",
2235
+ "hasDynamicHelp": false,
2236
+ "multiple": false,
2237
+ "type": "option"
2238
+ },
2239
+ "budget": {
2240
+ "description": "Spend budget in USD",
2241
+ "name": "budget",
2242
+ "hasDynamicHelp": false,
2243
+ "multiple": false,
2244
+ "type": "option"
2245
+ },
2246
+ "face": {
2247
+ "description": "Allowed face alias (repeatable)",
2248
+ "name": "face",
2249
+ "hasDynamicHelp": false,
2250
+ "multiple": true,
2251
+ "type": "option"
2252
+ },
2253
+ "model": {
2254
+ "description": "Allowed model name (repeatable)",
2255
+ "name": "model",
2256
+ "hasDynamicHelp": false,
2257
+ "multiple": true,
2258
+ "type": "option"
2259
+ }
2260
+ },
2261
+ "hasDynamicHelp": false,
2262
+ "hiddenAliases": [],
2263
+ "id": "keys:create",
2264
+ "pluginAlias": "faces-cli",
2265
+ "pluginName": "faces-cli",
2266
+ "pluginType": "core",
2267
+ "strict": true,
2268
+ "enableJsonFlag": true,
2269
+ "isESM": true,
2270
+ "relativePath": [
2271
+ "dist",
2272
+ "commands",
2273
+ "keys",
2274
+ "create.js"
2275
+ ]
2276
+ },
2277
+ "keys:list": {
2278
+ "aliases": [],
2279
+ "args": {},
2280
+ "description": "List all API keys (JWT required)",
2281
+ "flags": {
2282
+ "json": {
2283
+ "description": "Format output as json.",
2284
+ "helpGroup": "GLOBAL",
2285
+ "name": "json",
2286
+ "allowNo": false,
2287
+ "type": "boolean"
2288
+ },
2289
+ "base-url": {
2290
+ "description": "API base URL",
2291
+ "env": "FACES_BASE_URL",
2292
+ "name": "base-url",
2293
+ "hasDynamicHelp": false,
2294
+ "multiple": false,
2295
+ "type": "option"
2296
+ },
2297
+ "token": {
2298
+ "description": "JWT bearer token",
2299
+ "env": "FACES_TOKEN",
2300
+ "name": "token",
2301
+ "hasDynamicHelp": false,
2302
+ "multiple": false,
2303
+ "type": "option"
2304
+ },
2305
+ "api-key": {
2306
+ "description": "API key",
2307
+ "env": "FACES_API_KEY",
2308
+ "name": "api-key",
2309
+ "hasDynamicHelp": false,
2310
+ "multiple": false,
2311
+ "type": "option"
2312
+ }
2313
+ },
2314
+ "hasDynamicHelp": false,
2315
+ "hiddenAliases": [],
2316
+ "id": "keys:list",
2317
+ "pluginAlias": "faces-cli",
2318
+ "pluginName": "faces-cli",
2319
+ "pluginType": "core",
2320
+ "strict": true,
2321
+ "enableJsonFlag": true,
2322
+ "isESM": true,
2323
+ "relativePath": [
2324
+ "dist",
2325
+ "commands",
2326
+ "keys",
2327
+ "list.js"
2328
+ ]
2329
+ },
2330
+ "keys:revoke": {
2331
+ "aliases": [],
2332
+ "args": {
2333
+ "key_id": {
2334
+ "description": "Key ID",
2335
+ "name": "key_id",
2082
2336
  "required": true
2083
2337
  }
2084
2338
  },
2085
- "description": "Set a config value (e.g. base_url, api_key, token)",
2339
+ "description": "Revoke an API key (JWT required)",
2086
2340
  "flags": {
2087
2341
  "json": {
2088
2342
  "description": "Format output as json.",
@@ -2114,11 +2368,17 @@
2114
2368
  "hasDynamicHelp": false,
2115
2369
  "multiple": false,
2116
2370
  "type": "option"
2371
+ },
2372
+ "yes": {
2373
+ "description": "Skip confirmation",
2374
+ "name": "yes",
2375
+ "allowNo": false,
2376
+ "type": "boolean"
2117
2377
  }
2118
2378
  },
2119
2379
  "hasDynamicHelp": false,
2120
2380
  "hiddenAliases": [],
2121
- "id": "config:set",
2381
+ "id": "keys:revoke",
2122
2382
  "pluginAlias": "faces-cli",
2123
2383
  "pluginName": "faces-cli",
2124
2384
  "pluginType": "core",
@@ -2128,14 +2388,20 @@
2128
2388
  "relativePath": [
2129
2389
  "dist",
2130
2390
  "commands",
2131
- "config",
2132
- "set.js"
2391
+ "keys",
2392
+ "revoke.js"
2133
2393
  ]
2134
2394
  },
2135
- "config:show": {
2395
+ "keys:update": {
2136
2396
  "aliases": [],
2137
- "args": {},
2138
- "description": "Print current config (credentials are masked)",
2397
+ "args": {
2398
+ "key_id": {
2399
+ "description": "Key ID",
2400
+ "name": "key_id",
2401
+ "required": true
2402
+ }
2403
+ },
2404
+ "description": "Update API key metadata (JWT required)",
2139
2405
  "flags": {
2140
2406
  "json": {
2141
2407
  "description": "Format output as json.",
@@ -2167,11 +2433,31 @@
2167
2433
  "hasDynamicHelp": false,
2168
2434
  "multiple": false,
2169
2435
  "type": "option"
2436
+ },
2437
+ "name": {
2438
+ "description": "New key name",
2439
+ "name": "name",
2440
+ "hasDynamicHelp": false,
2441
+ "multiple": false,
2442
+ "type": "option"
2443
+ },
2444
+ "budget": {
2445
+ "description": "New spend budget in USD",
2446
+ "name": "budget",
2447
+ "hasDynamicHelp": false,
2448
+ "multiple": false,
2449
+ "type": "option"
2450
+ },
2451
+ "reset-spent": {
2452
+ "description": "Reset spent amount to zero",
2453
+ "name": "reset-spent",
2454
+ "allowNo": false,
2455
+ "type": "boolean"
2170
2456
  }
2171
2457
  },
2172
2458
  "hasDynamicHelp": false,
2173
2459
  "hiddenAliases": [],
2174
- "id": "config:show",
2460
+ "id": "keys:update",
2175
2461
  "pluginAlias": "faces-cli",
2176
2462
  "pluginName": "faces-cli",
2177
2463
  "pluginType": "core",
@@ -2181,8 +2467,8 @@
2181
2467
  "relativePath": [
2182
2468
  "dist",
2183
2469
  "commands",
2184
- "config",
2185
- "show.js"
2470
+ "keys",
2471
+ "update.js"
2186
2472
  ]
2187
2473
  },
2188
2474
  "face:attributes": {
@@ -2291,12 +2577,19 @@
2291
2577
  "type": "option"
2292
2578
  },
2293
2579
  "description": {
2294
- "description": "Description for local catalog",
2580
+ "description": "Plain-text description / bio (max 1500 chars)",
2295
2581
  "name": "description",
2296
2582
  "hasDynamicHelp": false,
2297
2583
  "multiple": false,
2298
2584
  "type": "option"
2299
2585
  },
2586
+ "tag": {
2587
+ "description": "Tag label (repeatable, lowercase)",
2588
+ "name": "tag",
2589
+ "hasDynamicHelp": false,
2590
+ "multiple": true,
2591
+ "type": "option"
2592
+ },
2300
2593
  "default-model": {
2301
2594
  "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2302
2595
  "name": "default-model",
@@ -2562,6 +2855,13 @@
2562
2855
  "hasDynamicHelp": false,
2563
2856
  "multiple": false,
2564
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"
2565
2865
  }
2566
2866
  },
2567
2867
  "hasDynamicHelp": false,
@@ -2776,12 +3076,19 @@
2776
3076
  "type": "option"
2777
3077
  },
2778
3078
  "description": {
2779
- "description": "Description for local catalog",
3079
+ "description": "Plain-text description / bio (max 1500 chars)",
2780
3080
  "name": "description",
2781
3081
  "hasDynamicHelp": false,
2782
3082
  "multiple": false,
2783
3083
  "type": "option"
2784
3084
  },
3085
+ "tag": {
3086
+ "description": "Replace all tags (repeatable, lowercase)",
3087
+ "name": "tag",
3088
+ "hasDynamicHelp": false,
3089
+ "multiple": true,
3090
+ "type": "option"
3091
+ },
2785
3092
  "default-model": {
2786
3093
  "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2787
3094
  "name": "default-model",
@@ -2925,10 +3232,16 @@
2925
3232
  "upload.js"
2926
3233
  ]
2927
3234
  },
2928
- "keys:create": {
3235
+ "team:add": {
2929
3236
  "aliases": [],
2930
- "args": {},
2931
- "description": "Create a new API key (JWT required)",
3237
+ "args": {
3238
+ "team_id": {
3239
+ "description": "Team ID",
3240
+ "name": "team_id",
3241
+ "required": true
3242
+ }
3243
+ },
3244
+ "description": "Add face(s) to a team",
2932
3245
  "flags": {
2933
3246
  "json": {
2934
3247
  "description": "Format output as json.",
@@ -2961,38 +3274,10 @@
2961
3274
  "multiple": false,
2962
3275
  "type": "option"
2963
3276
  },
2964
- "name": {
2965
- "description": "Key name/label",
2966
- "name": "name",
2967
- "required": true,
2968
- "hasDynamicHelp": false,
2969
- "multiple": false,
2970
- "type": "option"
2971
- },
2972
- "expires-days": {
2973
- "description": "Expiry in days (omit for no expiry)",
2974
- "name": "expires-days",
2975
- "hasDynamicHelp": false,
2976
- "multiple": false,
2977
- "type": "option"
2978
- },
2979
- "budget": {
2980
- "description": "Spend budget in USD",
2981
- "name": "budget",
2982
- "hasDynamicHelp": false,
2983
- "multiple": false,
2984
- "type": "option"
2985
- },
2986
3277
  "face": {
2987
- "description": "Allowed face alias (repeatable)",
3278
+ "description": "Face alias to add (repeatable)",
2988
3279
  "name": "face",
2989
- "hasDynamicHelp": false,
2990
- "multiple": true,
2991
- "type": "option"
2992
- },
2993
- "model": {
2994
- "description": "Allowed model name (repeatable)",
2995
- "name": "model",
3280
+ "required": true,
2996
3281
  "hasDynamicHelp": false,
2997
3282
  "multiple": true,
2998
3283
  "type": "option"
@@ -3000,7 +3285,7 @@
3000
3285
  },
3001
3286
  "hasDynamicHelp": false,
3002
3287
  "hiddenAliases": [],
3003
- "id": "keys:create",
3288
+ "id": "team:add",
3004
3289
  "pluginAlias": "faces-cli",
3005
3290
  "pluginName": "faces-cli",
3006
3291
  "pluginType": "core",
@@ -3010,14 +3295,14 @@
3010
3295
  "relativePath": [
3011
3296
  "dist",
3012
3297
  "commands",
3013
- "keys",
3014
- "create.js"
3298
+ "team",
3299
+ "add.js"
3015
3300
  ]
3016
3301
  },
3017
- "keys:list": {
3302
+ "team:create": {
3018
3303
  "aliases": [],
3019
3304
  "args": {},
3020
- "description": "List all API keys (JWT required)",
3305
+ "description": "Create a new team",
3021
3306
  "flags": {
3022
3307
  "json": {
3023
3308
  "description": "Format output as json.",
@@ -3049,11 +3334,47 @@
3049
3334
  "hasDynamicHelp": false,
3050
3335
  "multiple": false,
3051
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"
3052
3373
  }
3053
3374
  },
3054
3375
  "hasDynamicHelp": false,
3055
3376
  "hiddenAliases": [],
3056
- "id": "keys:list",
3377
+ "id": "team:create",
3057
3378
  "pluginAlias": "faces-cli",
3058
3379
  "pluginName": "faces-cli",
3059
3380
  "pluginType": "core",
@@ -3063,20 +3384,20 @@
3063
3384
  "relativePath": [
3064
3385
  "dist",
3065
3386
  "commands",
3066
- "keys",
3067
- "list.js"
3387
+ "team",
3388
+ "create.js"
3068
3389
  ]
3069
3390
  },
3070
- "keys:revoke": {
3391
+ "team:delete": {
3071
3392
  "aliases": [],
3072
3393
  "args": {
3073
- "key_id": {
3074
- "description": "Key ID",
3075
- "name": "key_id",
3394
+ "team_id": {
3395
+ "description": "Team ID",
3396
+ "name": "team_id",
3076
3397
  "required": true
3077
3398
  }
3078
3399
  },
3079
- "description": "Revoke an API key (JWT required)",
3400
+ "description": "Delete a team",
3080
3401
  "flags": {
3081
3402
  "json": {
3082
3403
  "description": "Format output as json.",
@@ -3118,7 +3439,7 @@
3118
3439
  },
3119
3440
  "hasDynamicHelp": false,
3120
3441
  "hiddenAliases": [],
3121
- "id": "keys:revoke",
3442
+ "id": "team:delete",
3122
3443
  "pluginAlias": "faces-cli",
3123
3444
  "pluginName": "faces-cli",
3124
3445
  "pluginType": "core",
@@ -3128,20 +3449,20 @@
3128
3449
  "relativePath": [
3129
3450
  "dist",
3130
3451
  "commands",
3131
- "keys",
3132
- "revoke.js"
3452
+ "team",
3453
+ "delete.js"
3133
3454
  ]
3134
3455
  },
3135
- "keys:update": {
3456
+ "team:get": {
3136
3457
  "aliases": [],
3137
3458
  "args": {
3138
- "key_id": {
3139
- "description": "Key ID",
3140
- "name": "key_id",
3459
+ "team_id": {
3460
+ "description": "Team ID",
3461
+ "name": "team_id",
3141
3462
  "required": true
3142
3463
  }
3143
3464
  },
3144
- "description": "Update API key metadata (JWT required)",
3465
+ "description": "Get a team by ID",
3145
3466
  "flags": {
3146
3467
  "json": {
3147
3468
  "description": "Format output as json.",
@@ -3173,31 +3494,123 @@
3173
3494
  "hasDynamicHelp": false,
3174
3495
  "multiple": false,
3175
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"
3176
3526
  },
3177
- "name": {
3178
- "description": "New key name",
3179
- "name": "name",
3527
+ "base-url": {
3528
+ "description": "API base URL",
3529
+ "env": "FACES_BASE_URL",
3530
+ "name": "base-url",
3180
3531
  "hasDynamicHelp": false,
3181
3532
  "multiple": false,
3182
3533
  "type": "option"
3183
3534
  },
3184
- "budget": {
3185
- "description": "New spend budget in USD",
3186
- "name": "budget",
3535
+ "token": {
3536
+ "description": "JWT bearer token",
3537
+ "env": "FACES_TOKEN",
3538
+ "name": "token",
3187
3539
  "hasDynamicHelp": false,
3188
3540
  "multiple": false,
3189
3541
  "type": "option"
3190
3542
  },
3191
- "reset-spent": {
3192
- "description": "Reset spent amount to zero",
3193
- "name": "reset-spent",
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",
3194
3583
  "allowNo": false,
3195
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"
3196
3609
  }
3197
3610
  },
3198
3611
  "hasDynamicHelp": false,
3199
3612
  "hiddenAliases": [],
3200
- "id": "keys:update",
3613
+ "id": "team:members",
3201
3614
  "pluginAlias": "faces-cli",
3202
3615
  "pluginName": "faces-cli",
3203
3616
  "pluginType": "core",
@@ -3207,7 +3620,158 @@
3207
3620
  "relativePath": [
3208
3621
  "dist",
3209
3622
  "commands",
3210
- "keys",
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",
3211
3775
  "update.js"
3212
3776
  ]
3213
3777
  },
@@ -3679,20 +4243,553 @@
3679
4243
  "dist",
3680
4244
  "commands",
3681
4245
  "compile",
3682
- "doc",
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",
4362
+ "hasDynamicHelp": false,
4363
+ "multiple": false,
4364
+ "type": "option"
4365
+ }
4366
+ },
4367
+ "hasDynamicHelp": false,
4368
+ "hiddenAliases": [],
4369
+ "id": "compile:doc:pause",
4370
+ "pluginAlias": "faces-cli",
4371
+ "pluginName": "faces-cli",
4372
+ "pluginType": "core",
4373
+ "strict": true,
4374
+ "enableJsonFlag": true,
4375
+ "isESM": true,
4376
+ "relativePath": [
4377
+ "dist",
4378
+ "commands",
4379
+ "compile",
4380
+ "doc",
4381
+ "pause.js"
4382
+ ]
4383
+ },
4384
+ "compile:doc:reset": {
4385
+ "aliases": [],
4386
+ "args": {
4387
+ "doc_id": {
4388
+ "description": "Document ID",
4389
+ "name": "doc_id",
4390
+ "required": true
4391
+ }
4392
+ },
4393
+ "description": "Reset document compilation progress (wipe extraction, keep content)",
4394
+ "flags": {
4395
+ "json": {
4396
+ "description": "Format output as json.",
4397
+ "helpGroup": "GLOBAL",
4398
+ "name": "json",
4399
+ "allowNo": false,
4400
+ "type": "boolean"
4401
+ },
4402
+ "base-url": {
4403
+ "description": "API base URL",
4404
+ "env": "FACES_BASE_URL",
4405
+ "name": "base-url",
4406
+ "hasDynamicHelp": false,
4407
+ "multiple": false,
4408
+ "type": "option"
4409
+ },
4410
+ "token": {
4411
+ "description": "JWT bearer token",
4412
+ "env": "FACES_TOKEN",
4413
+ "name": "token",
4414
+ "hasDynamicHelp": false,
4415
+ "multiple": false,
4416
+ "type": "option"
4417
+ },
4418
+ "api-key": {
4419
+ "description": "API key",
4420
+ "env": "FACES_API_KEY",
4421
+ "name": "api-key",
4422
+ "hasDynamicHelp": false,
4423
+ "multiple": false,
4424
+ "type": "option"
4425
+ },
4426
+ "yes": {
4427
+ "description": "Skip confirmation",
4428
+ "name": "yes",
4429
+ "allowNo": false,
4430
+ "type": "boolean"
4431
+ }
4432
+ },
4433
+ "hasDynamicHelp": false,
4434
+ "hiddenAliases": [],
4435
+ "id": "compile:doc:reset",
4436
+ "pluginAlias": "faces-cli",
4437
+ "pluginName": "faces-cli",
4438
+ "pluginType": "core",
4439
+ "strict": true,
4440
+ "enableJsonFlag": true,
4441
+ "isESM": true,
4442
+ "relativePath": [
4443
+ "dist",
4444
+ "commands",
4445
+ "compile",
4446
+ "doc",
4447
+ "reset.js"
4448
+ ]
4449
+ },
4450
+ "compile:thread:create": {
4451
+ "aliases": [],
4452
+ "args": {
4453
+ "face_id": {
4454
+ "description": "Face alias",
4455
+ "name": "face_id",
4456
+ "required": true
4457
+ }
4458
+ },
4459
+ "description": "Start a new thread for a face",
4460
+ "flags": {
4461
+ "json": {
4462
+ "description": "Format output as json.",
4463
+ "helpGroup": "GLOBAL",
4464
+ "name": "json",
4465
+ "allowNo": false,
4466
+ "type": "boolean"
4467
+ },
4468
+ "base-url": {
4469
+ "description": "API base URL",
4470
+ "env": "FACES_BASE_URL",
4471
+ "name": "base-url",
4472
+ "hasDynamicHelp": false,
4473
+ "multiple": false,
4474
+ "type": "option"
4475
+ },
4476
+ "token": {
4477
+ "description": "JWT bearer token",
4478
+ "env": "FACES_TOKEN",
4479
+ "name": "token",
4480
+ "hasDynamicHelp": false,
4481
+ "multiple": false,
4482
+ "type": "option"
4483
+ },
4484
+ "api-key": {
4485
+ "description": "API key",
4486
+ "env": "FACES_API_KEY",
4487
+ "name": "api-key",
4488
+ "hasDynamicHelp": false,
4489
+ "multiple": false,
4490
+ "type": "option"
4491
+ },
4492
+ "label": {
4493
+ "description": "Thread label",
4494
+ "name": "label",
4495
+ "hasDynamicHelp": false,
4496
+ "multiple": false,
4497
+ "type": "option"
4498
+ },
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",
4545
+ "hasDynamicHelp": false,
4546
+ "multiple": false,
4547
+ "type": "option"
4548
+ },
4549
+ "token": {
4550
+ "description": "JWT bearer token",
4551
+ "env": "FACES_TOKEN",
4552
+ "name": "token",
4553
+ "hasDynamicHelp": false,
4554
+ "multiple": false,
4555
+ "type": "option"
4556
+ },
4557
+ "api-key": {
4558
+ "description": "API key",
4559
+ "env": "FACES_API_KEY",
4560
+ "name": "api-key",
4561
+ "hasDynamicHelp": false,
4562
+ "multiple": false,
4563
+ "type": "option"
4564
+ },
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",
4611
+ "hasDynamicHelp": false,
4612
+ "multiple": false,
4613
+ "type": "option"
4614
+ },
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",
4678
+ "allowNo": false,
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"
4704
+ }
4705
+ },
4706
+ "hasDynamicHelp": false,
4707
+ "hiddenAliases": [],
4708
+ "id": "compile:thread:get",
4709
+ "pluginAlias": "faces-cli",
4710
+ "pluginName": "faces-cli",
4711
+ "pluginType": "core",
4712
+ "strict": true,
4713
+ "enableJsonFlag": true,
4714
+ "isESM": true,
4715
+ "relativePath": [
4716
+ "dist",
4717
+ "commands",
4718
+ "compile",
4719
+ "thread",
4720
+ "get.js"
4721
+ ]
4722
+ },
4723
+ "compile:thread:list": {
4724
+ "aliases": [],
4725
+ "args": {
4726
+ "face_id": {
4727
+ "description": "Face alias",
4728
+ "name": "face_id",
4729
+ "required": true
4730
+ }
4731
+ },
4732
+ "description": "List threads for a face",
4733
+ "flags": {
4734
+ "json": {
4735
+ "description": "Format output as json.",
4736
+ "helpGroup": "GLOBAL",
4737
+ "name": "json",
4738
+ "allowNo": false,
4739
+ "type": "boolean"
4740
+ },
4741
+ "base-url": {
4742
+ "description": "API base URL",
4743
+ "env": "FACES_BASE_URL",
4744
+ "name": "base-url",
4745
+ "hasDynamicHelp": false,
4746
+ "multiple": false,
4747
+ "type": "option"
4748
+ },
4749
+ "token": {
4750
+ "description": "JWT bearer token",
4751
+ "env": "FACES_TOKEN",
4752
+ "name": "token",
4753
+ "hasDynamicHelp": false,
4754
+ "multiple": false,
4755
+ "type": "option"
4756
+ },
4757
+ "api-key": {
4758
+ "description": "API key",
4759
+ "env": "FACES_API_KEY",
4760
+ "name": "api-key",
4761
+ "hasDynamicHelp": false,
4762
+ "multiple": false,
4763
+ "type": "option"
4764
+ }
4765
+ },
4766
+ "hasDynamicHelp": false,
4767
+ "hiddenAliases": [],
4768
+ "id": "compile:thread:list",
4769
+ "pluginAlias": "faces-cli",
4770
+ "pluginName": "faces-cli",
4771
+ "pluginType": "core",
4772
+ "strict": true,
4773
+ "enableJsonFlag": true,
4774
+ "isESM": true,
4775
+ "relativePath": [
4776
+ "dist",
4777
+ "commands",
4778
+ "compile",
4779
+ "thread",
3683
4780
  "list.js"
3684
4781
  ]
3685
4782
  },
3686
- "compile:doc:make": {
4783
+ "compile:thread:make": {
3687
4784
  "aliases": [],
3688
4785
  "args": {
3689
- "doc_id": {
3690
- "description": "Document ID",
3691
- "name": "doc_id",
4786
+ "thread_id": {
4787
+ "description": "Thread ID",
4788
+ "name": "thread_id",
3692
4789
  "required": true
3693
4790
  }
3694
4791
  },
3695
- "description": "Compile an existing document (prepare + sync in one step)",
4792
+ "description": "Compile an existing thread (prepare + sync in one step)",
3696
4793
  "flags": {
3697
4794
  "json": {
3698
4795
  "description": "Format output as json.",
@@ -3734,7 +4831,7 @@
3734
4831
  "type": "option"
3735
4832
  },
3736
4833
  "no-wait": {
3737
- "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.",
3738
4835
  "name": "no-wait",
3739
4836
  "allowNo": false,
3740
4837
  "type": "boolean"
@@ -3742,7 +4839,7 @@
3742
4839
  },
3743
4840
  "hasDynamicHelp": false,
3744
4841
  "hiddenAliases": [],
3745
- "id": "compile:doc:make",
4842
+ "id": "compile:thread:make",
3746
4843
  "pluginAlias": "faces-cli",
3747
4844
  "pluginName": "faces-cli",
3748
4845
  "pluginType": "core",
@@ -3753,20 +4850,20 @@
3753
4850
  "dist",
3754
4851
  "commands",
3755
4852
  "compile",
3756
- "doc",
4853
+ "thread",
3757
4854
  "make.js"
3758
4855
  ]
3759
4856
  },
3760
- "compile:doc:pause": {
4857
+ "compile:thread:message": {
3761
4858
  "aliases": [],
3762
4859
  "args": {
3763
- "doc_id": {
3764
- "description": "Document ID",
3765
- "name": "doc_id",
4860
+ "thread_id": {
4861
+ "description": "Thread ID",
4862
+ "name": "thread_id",
3766
4863
  "required": true
3767
4864
  }
3768
4865
  },
3769
- "description": "Pause a running document compilation (preserves progress, resume with make)",
4866
+ "description": "Send a user message to a thread",
3770
4867
  "flags": {
3771
4868
  "json": {
3772
4869
  "description": "Format output as json.",
@@ -3798,11 +4895,26 @@
3798
4895
  "hasDynamicHelp": false,
3799
4896
  "multiple": false,
3800
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"
3801
4913
  }
3802
4914
  },
3803
4915
  "hasDynamicHelp": false,
3804
4916
  "hiddenAliases": [],
3805
- "id": "compile:doc:pause",
4917
+ "id": "compile:thread:message",
3806
4918
  "pluginAlias": "faces-cli",
3807
4919
  "pluginName": "faces-cli",
3808
4920
  "pluginType": "core",
@@ -3813,20 +4925,20 @@
3813
4925
  "dist",
3814
4926
  "commands",
3815
4927
  "compile",
3816
- "doc",
3817
- "pause.js"
4928
+ "thread",
4929
+ "message.js"
3818
4930
  ]
3819
4931
  },
3820
- "compile:doc:reset": {
4932
+ "compile:thread:pause": {
3821
4933
  "aliases": [],
3822
4934
  "args": {
3823
- "doc_id": {
3824
- "description": "Document ID",
3825
- "name": "doc_id",
4935
+ "thread_id": {
4936
+ "description": "Thread ID",
4937
+ "name": "thread_id",
3826
4938
  "required": true
3827
4939
  }
3828
4940
  },
3829
- "description": "Reset document compilation progress (wipe extraction, keep content)",
4941
+ "description": "Pause a running thread compilation (preserves progress, resume with make)",
3830
4942
  "flags": {
3831
4943
  "json": {
3832
4944
  "description": "Format output as json.",
@@ -3858,17 +4970,11 @@
3858
4970
  "hasDynamicHelp": false,
3859
4971
  "multiple": false,
3860
4972
  "type": "option"
3861
- },
3862
- "yes": {
3863
- "description": "Skip confirmation",
3864
- "name": "yes",
3865
- "allowNo": false,
3866
- "type": "boolean"
3867
4973
  }
3868
4974
  },
3869
4975
  "hasDynamicHelp": false,
3870
4976
  "hiddenAliases": [],
3871
- "id": "compile:doc:reset",
4977
+ "id": "compile:thread:pause",
3872
4978
  "pluginAlias": "faces-cli",
3873
4979
  "pluginName": "faces-cli",
3874
4980
  "pluginType": "core",
@@ -3879,20 +4985,20 @@
3879
4985
  "dist",
3880
4986
  "commands",
3881
4987
  "compile",
3882
- "doc",
3883
- "reset.js"
4988
+ "thread",
4989
+ "pause.js"
3884
4990
  ]
3885
4991
  },
3886
- "compile:thread:create": {
4992
+ "compile:thread:reset": {
3887
4993
  "aliases": [],
3888
4994
  "args": {
3889
- "face_id": {
3890
- "description": "Face alias",
3891
- "name": "face_id",
4995
+ "thread_id": {
4996
+ "description": "Thread ID",
4997
+ "name": "thread_id",
3892
4998
  "required": true
3893
4999
  }
3894
5000
  },
3895
- "description": "Start a new thread for a face",
5001
+ "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
3896
5002
  "flags": {
3897
5003
  "json": {
3898
5004
  "description": "Format output as json.",
@@ -3925,23 +5031,16 @@
3925
5031
  "multiple": false,
3926
5032
  "type": "option"
3927
5033
  },
3928
- "label": {
3929
- "description": "Thread label",
3930
- "name": "label",
3931
- "hasDynamicHelp": false,
3932
- "multiple": false,
3933
- "type": "option"
3934
- },
3935
- "oauth-only": {
3936
- "description": "Prevent fallback to paid system key (use OAuth only)",
3937
- "name": "oauth-only",
5034
+ "yes": {
5035
+ "description": "Skip confirmation",
5036
+ "name": "yes",
3938
5037
  "allowNo": false,
3939
5038
  "type": "boolean"
3940
5039
  }
3941
5040
  },
3942
5041
  "hasDynamicHelp": false,
3943
5042
  "hiddenAliases": [],
3944
- "id": "compile:thread:create",
5043
+ "id": "compile:thread:reset",
3945
5044
  "pluginAlias": "faces-cli",
3946
5045
  "pluginName": "faces-cli",
3947
5046
  "pluginType": "core",
@@ -3953,10 +5052,10 @@
3953
5052
  "commands",
3954
5053
  "compile",
3955
5054
  "thread",
3956
- "create.js"
5055
+ "reset.js"
3957
5056
  ]
3958
5057
  },
3959
- "compile:thread:delete": {
5058
+ "compile:thread:sync": {
3960
5059
  "aliases": [],
3961
5060
  "args": {
3962
5061
  "thread_id": {
@@ -3965,7 +5064,7 @@
3965
5064
  "required": true
3966
5065
  }
3967
5066
  },
3968
- "description": "Delete a thread",
5067
+ "description": "Archive and sync a thread into a face",
3969
5068
  "flags": {
3970
5069
  "json": {
3971
5070
  "description": "Format output as json.",
@@ -3997,17 +5096,11 @@
3997
5096
  "hasDynamicHelp": false,
3998
5097
  "multiple": false,
3999
5098
  "type": "option"
4000
- },
4001
- "yes": {
4002
- "description": "Skip confirmation",
4003
- "name": "yes",
4004
- "allowNo": false,
4005
- "type": "boolean"
4006
5099
  }
4007
5100
  },
4008
5101
  "hasDynamicHelp": false,
4009
5102
  "hiddenAliases": [],
4010
- "id": "compile:thread:delete",
5103
+ "id": "compile:thread:sync",
4011
5104
  "pluginAlias": "faces-cli",
4012
5105
  "pluginName": "faces-cli",
4013
5106
  "pluginType": "core",
@@ -4019,19 +5112,19 @@
4019
5112
  "commands",
4020
5113
  "compile",
4021
5114
  "thread",
4022
- "delete.js"
5115
+ "sync.js"
4023
5116
  ]
4024
5117
  },
4025
- "compile:thread:edit": {
5118
+ "face:tag:add": {
4026
5119
  "aliases": [],
4027
5120
  "args": {
4028
- "thread_id": {
4029
- "description": "Thread ID",
4030
- "name": "thread_id",
5121
+ "alias": {
5122
+ "description": "Face alias",
5123
+ "name": "alias",
4031
5124
  "required": true
4032
5125
  }
4033
5126
  },
4034
- "description": "Edit a thread (label and/or reassign face speaker)",
5127
+ "description": "Add tags to a face (appends, idempotent)",
4035
5128
  "flags": {
4036
5129
  "json": {
4037
5130
  "description": "Format output as json.",
@@ -4064,24 +5157,18 @@
4064
5157
  "multiple": false,
4065
5158
  "type": "option"
4066
5159
  },
4067
- "label": {
4068
- "description": "New thread label",
4069
- "name": "label",
4070
- "hasDynamicHelp": false,
4071
- "multiple": false,
4072
- "type": "option"
4073
- },
4074
- "face-speaker": {
4075
- "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
4076
- "name": "face-speaker",
5160
+ "tag": {
5161
+ "description": "Tag to add (repeatable)",
5162
+ "name": "tag",
5163
+ "required": true,
4077
5164
  "hasDynamicHelp": false,
4078
- "multiple": false,
5165
+ "multiple": true,
4079
5166
  "type": "option"
4080
5167
  }
4081
5168
  },
4082
5169
  "hasDynamicHelp": false,
4083
5170
  "hiddenAliases": [],
4084
- "id": "compile:thread:edit",
5171
+ "id": "face:tag:add",
4085
5172
  "pluginAlias": "faces-cli",
4086
5173
  "pluginName": "faces-cli",
4087
5174
  "pluginType": "core",
@@ -4091,21 +5178,21 @@
4091
5178
  "relativePath": [
4092
5179
  "dist",
4093
5180
  "commands",
4094
- "compile",
4095
- "thread",
4096
- "edit.js"
5181
+ "face",
5182
+ "tag",
5183
+ "add.js"
4097
5184
  ]
4098
5185
  },
4099
- "compile:thread:get": {
5186
+ "face:tag:list": {
4100
5187
  "aliases": [],
4101
5188
  "args": {
4102
- "thread_id": {
4103
- "description": "Thread ID",
4104
- "name": "thread_id",
5189
+ "alias": {
5190
+ "description": "Face alias",
5191
+ "name": "alias",
4105
5192
  "required": true
4106
5193
  }
4107
5194
  },
4108
- "description": "Get a thread by ID",
5195
+ "description": "List tags on a face",
4109
5196
  "flags": {
4110
5197
  "json": {
4111
5198
  "description": "Format output as json.",
@@ -4141,7 +5228,7 @@
4141
5228
  },
4142
5229
  "hasDynamicHelp": false,
4143
5230
  "hiddenAliases": [],
4144
- "id": "compile:thread:get",
5231
+ "id": "face:tag:list",
4145
5232
  "pluginAlias": "faces-cli",
4146
5233
  "pluginName": "faces-cli",
4147
5234
  "pluginType": "core",
@@ -4151,21 +5238,26 @@
4151
5238
  "relativePath": [
4152
5239
  "dist",
4153
5240
  "commands",
4154
- "compile",
4155
- "thread",
4156
- "get.js"
5241
+ "face",
5242
+ "tag",
5243
+ "list.js"
4157
5244
  ]
4158
5245
  },
4159
- "compile:thread:list": {
5246
+ "face:tag:remove": {
4160
5247
  "aliases": [],
4161
5248
  "args": {
4162
- "face_id": {
5249
+ "alias": {
4163
5250
  "description": "Face alias",
4164
- "name": "face_id",
5251
+ "name": "alias",
5252
+ "required": true
5253
+ },
5254
+ "tag": {
5255
+ "description": "Tag to remove",
5256
+ "name": "tag",
4165
5257
  "required": true
4166
5258
  }
4167
5259
  },
4168
- "description": "List threads for a face",
5260
+ "description": "Remove a tag from a face",
4169
5261
  "flags": {
4170
5262
  "json": {
4171
5263
  "description": "Format output as json.",
@@ -4201,7 +5293,7 @@
4201
5293
  },
4202
5294
  "hasDynamicHelp": false,
4203
5295
  "hiddenAliases": [],
4204
- "id": "compile:thread:list",
5296
+ "id": "face:tag:remove",
4205
5297
  "pluginAlias": "faces-cli",
4206
5298
  "pluginName": "faces-cli",
4207
5299
  "pluginType": "core",
@@ -4211,21 +5303,21 @@
4211
5303
  "relativePath": [
4212
5304
  "dist",
4213
5305
  "commands",
4214
- "compile",
4215
- "thread",
4216
- "list.js"
5306
+ "face",
5307
+ "tag",
5308
+ "remove.js"
4217
5309
  ]
4218
5310
  },
4219
- "compile:thread:make": {
5311
+ "face:tag:set": {
4220
5312
  "aliases": [],
4221
5313
  "args": {
4222
- "thread_id": {
4223
- "description": "Thread ID",
4224
- "name": "thread_id",
5314
+ "alias": {
5315
+ "description": "Face alias",
5316
+ "name": "alias",
4225
5317
  "required": true
4226
5318
  }
4227
5319
  },
4228
- "description": "Compile an existing thread (prepare + sync in one step)",
5320
+ "description": "Replace all tags on a face",
4229
5321
  "flags": {
4230
5322
  "json": {
4231
5323
  "description": "Format output as json.",
@@ -4258,24 +5350,18 @@
4258
5350
  "multiple": false,
4259
5351
  "type": "option"
4260
5352
  },
4261
- "timeout": {
4262
- "description": "Compile timeout in seconds (default: 600)",
4263
- "name": "timeout",
4264
- "default": 600,
5353
+ "tag": {
5354
+ "description": "Tag to set (repeatable, replaces all)",
5355
+ "name": "tag",
5356
+ "required": true,
4265
5357
  "hasDynamicHelp": false,
4266
- "multiple": false,
5358
+ "multiple": true,
4267
5359
  "type": "option"
4268
- },
4269
- "no-wait": {
4270
- "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
4271
- "name": "no-wait",
4272
- "allowNo": false,
4273
- "type": "boolean"
4274
5360
  }
4275
5361
  },
4276
5362
  "hasDynamicHelp": false,
4277
5363
  "hiddenAliases": [],
4278
- "id": "compile:thread:make",
5364
+ "id": "face:tag:set",
4279
5365
  "pluginAlias": "faces-cli",
4280
5366
  "pluginName": "faces-cli",
4281
5367
  "pluginType": "core",
@@ -4285,21 +5371,21 @@
4285
5371
  "relativePath": [
4286
5372
  "dist",
4287
5373
  "commands",
4288
- "compile",
4289
- "thread",
4290
- "make.js"
5374
+ "face",
5375
+ "tag",
5376
+ "set.js"
4291
5377
  ]
4292
5378
  },
4293
- "compile:thread:message": {
5379
+ "team:tag:add": {
4294
5380
  "aliases": [],
4295
5381
  "args": {
4296
- "thread_id": {
4297
- "description": "Thread ID",
4298
- "name": "thread_id",
5382
+ "team_id": {
5383
+ "description": "Team ID",
5384
+ "name": "team_id",
4299
5385
  "required": true
4300
5386
  }
4301
5387
  },
4302
- "description": "Send a user message to a thread",
5388
+ "description": "Add tags to a team (appends, idempotent)",
4303
5389
  "flags": {
4304
5390
  "json": {
4305
5391
  "description": "Format output as json.",
@@ -4332,25 +5418,18 @@
4332
5418
  "multiple": false,
4333
5419
  "type": "option"
4334
5420
  },
4335
- "message": {
4336
- "char": "m",
4337
- "description": "User message to append",
4338
- "name": "message",
5421
+ "tag": {
5422
+ "description": "Tag to add (repeatable)",
5423
+ "name": "tag",
4339
5424
  "required": true,
4340
5425
  "hasDynamicHelp": false,
4341
- "multiple": false,
5426
+ "multiple": true,
4342
5427
  "type": "option"
4343
- },
4344
- "oauth-only": {
4345
- "description": "Prevent fallback to paid system key (use OAuth only)",
4346
- "name": "oauth-only",
4347
- "allowNo": false,
4348
- "type": "boolean"
4349
5428
  }
4350
5429
  },
4351
5430
  "hasDynamicHelp": false,
4352
5431
  "hiddenAliases": [],
4353
- "id": "compile:thread:message",
5432
+ "id": "team:tag:add",
4354
5433
  "pluginAlias": "faces-cli",
4355
5434
  "pluginName": "faces-cli",
4356
5435
  "pluginType": "core",
@@ -4360,21 +5439,21 @@
4360
5439
  "relativePath": [
4361
5440
  "dist",
4362
5441
  "commands",
4363
- "compile",
4364
- "thread",
4365
- "message.js"
5442
+ "team",
5443
+ "tag",
5444
+ "add.js"
4366
5445
  ]
4367
5446
  },
4368
- "compile:thread:pause": {
5447
+ "team:tag:list": {
4369
5448
  "aliases": [],
4370
5449
  "args": {
4371
- "thread_id": {
4372
- "description": "Thread ID",
4373
- "name": "thread_id",
5450
+ "team_id": {
5451
+ "description": "Team ID",
5452
+ "name": "team_id",
4374
5453
  "required": true
4375
5454
  }
4376
5455
  },
4377
- "description": "Pause a running thread compilation (preserves progress, resume with make)",
5456
+ "description": "List tags on a team",
4378
5457
  "flags": {
4379
5458
  "json": {
4380
5459
  "description": "Format output as json.",
@@ -4410,7 +5489,7 @@
4410
5489
  },
4411
5490
  "hasDynamicHelp": false,
4412
5491
  "hiddenAliases": [],
4413
- "id": "compile:thread:pause",
5492
+ "id": "team:tag:list",
4414
5493
  "pluginAlias": "faces-cli",
4415
5494
  "pluginName": "faces-cli",
4416
5495
  "pluginType": "core",
@@ -4420,21 +5499,26 @@
4420
5499
  "relativePath": [
4421
5500
  "dist",
4422
5501
  "commands",
4423
- "compile",
4424
- "thread",
4425
- "pause.js"
5502
+ "team",
5503
+ "tag",
5504
+ "list.js"
4426
5505
  ]
4427
5506
  },
4428
- "compile:thread:reset": {
5507
+ "team:tag:remove": {
4429
5508
  "aliases": [],
4430
5509
  "args": {
4431
- "thread_id": {
4432
- "description": "Thread ID",
4433
- "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",
4434
5518
  "required": true
4435
5519
  }
4436
5520
  },
4437
- "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
5521
+ "description": "Remove a tag from a team",
4438
5522
  "flags": {
4439
5523
  "json": {
4440
5524
  "description": "Format output as json.",
@@ -4466,17 +5550,11 @@
4466
5550
  "hasDynamicHelp": false,
4467
5551
  "multiple": false,
4468
5552
  "type": "option"
4469
- },
4470
- "yes": {
4471
- "description": "Skip confirmation",
4472
- "name": "yes",
4473
- "allowNo": false,
4474
- "type": "boolean"
4475
5553
  }
4476
5554
  },
4477
5555
  "hasDynamicHelp": false,
4478
5556
  "hiddenAliases": [],
4479
- "id": "compile:thread:reset",
5557
+ "id": "team:tag:remove",
4480
5558
  "pluginAlias": "faces-cli",
4481
5559
  "pluginName": "faces-cli",
4482
5560
  "pluginType": "core",
@@ -4486,21 +5564,21 @@
4486
5564
  "relativePath": [
4487
5565
  "dist",
4488
5566
  "commands",
4489
- "compile",
4490
- "thread",
4491
- "reset.js"
5567
+ "team",
5568
+ "tag",
5569
+ "remove.js"
4492
5570
  ]
4493
5571
  },
4494
- "compile:thread:sync": {
5572
+ "team:tag:set": {
4495
5573
  "aliases": [],
4496
5574
  "args": {
4497
- "thread_id": {
4498
- "description": "Thread ID",
4499
- "name": "thread_id",
5575
+ "team_id": {
5576
+ "description": "Team ID",
5577
+ "name": "team_id",
4500
5578
  "required": true
4501
5579
  }
4502
5580
  },
4503
- "description": "Archive and sync a thread into a face",
5581
+ "description": "Replace all tags on a team",
4504
5582
  "flags": {
4505
5583
  "json": {
4506
5584
  "description": "Format output as json.",
@@ -4532,11 +5610,19 @@
4532
5610
  "hasDynamicHelp": false,
4533
5611
  "multiple": false,
4534
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"
4535
5621
  }
4536
5622
  },
4537
5623
  "hasDynamicHelp": false,
4538
5624
  "hiddenAliases": [],
4539
- "id": "compile:thread:sync",
5625
+ "id": "team:tag:set",
4540
5626
  "pluginAlias": "faces-cli",
4541
5627
  "pluginName": "faces-cli",
4542
5628
  "pluginType": "core",
@@ -4546,11 +5632,11 @@
4546
5632
  "relativePath": [
4547
5633
  "dist",
4548
5634
  "commands",
4549
- "compile",
4550
- "thread",
4551
- "sync.js"
5635
+ "team",
5636
+ "tag",
5637
+ "set.js"
4552
5638
  ]
4553
5639
  }
4554
5640
  },
4555
- "version": "1.6.1"
5641
+ "version": "1.6.2"
4556
5642
  }