faces-cli 1.7.8 → 1.7.9

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.
@@ -632,10 +632,10 @@
632
632
  "whoami.js"
633
633
  ]
634
634
  },
635
- "catalog:backup": {
635
+ "billing:balance": {
636
636
  "aliases": [],
637
637
  "args": {},
638
- "description": "Snapshot all faces, teams, and source material for migration",
638
+ "description": "Show credit balance and payment method status",
639
639
  "flags": {
640
640
  "json": {
641
641
  "description": "Format output as json.",
@@ -671,7 +671,7 @@
671
671
  },
672
672
  "hasDynamicHelp": false,
673
673
  "hiddenAliases": [],
674
- "id": "catalog:backup",
674
+ "id": "billing:balance",
675
675
  "pluginAlias": "faces-cli",
676
676
  "pluginName": "faces-cli",
677
677
  "pluginType": "core",
@@ -681,14 +681,14 @@
681
681
  "relativePath": [
682
682
  "dist",
683
683
  "commands",
684
- "catalog",
685
- "backup.js"
684
+ "billing",
685
+ "balance.js"
686
686
  ]
687
687
  },
688
- "catalog:doctor": {
688
+ "billing:card-setup": {
689
689
  "aliases": [],
690
690
  "args": {},
691
- "description": "Diagnose and repair the local face and team catalog",
691
+ "description": "Get a Stripe card setup URL to save a payment method",
692
692
  "flags": {
693
693
  "json": {
694
694
  "description": "Format output as json.",
@@ -720,23 +720,11 @@
720
720
  "hasDynamicHelp": false,
721
721
  "multiple": false,
722
722
  "type": "option"
723
- },
724
- "fix": {
725
- "description": "Rebuild missing or stale catalog entries from API",
726
- "name": "fix",
727
- "allowNo": false,
728
- "type": "boolean"
729
- },
730
- "generate": {
731
- "description": "Fix + generate missing descriptions via LLM",
732
- "name": "generate",
733
- "allowNo": false,
734
- "type": "boolean"
735
723
  }
736
724
  },
737
725
  "hasDynamicHelp": false,
738
726
  "hiddenAliases": [],
739
- "id": "catalog:doctor",
727
+ "id": "billing:card-setup",
740
728
  "pluginAlias": "faces-cli",
741
729
  "pluginName": "faces-cli",
742
730
  "pluginType": "core",
@@ -746,14 +734,14 @@
746
734
  "relativePath": [
747
735
  "dist",
748
736
  "commands",
749
- "catalog",
750
- "doctor.js"
737
+ "billing",
738
+ "card-setup.js"
751
739
  ]
752
740
  },
753
- "catalog:list": {
741
+ "billing:llm-costs": {
754
742
  "aliases": [],
755
743
  "args": {},
756
- "description": "List all faces in the local catalog",
744
+ "description": "List available LLMs and their per-token costs",
757
745
  "flags": {
758
746
  "json": {
759
747
  "description": "Format output as json.",
@@ -785,11 +773,18 @@
785
773
  "hasDynamicHelp": false,
786
774
  "multiple": false,
787
775
  "type": "option"
776
+ },
777
+ "provider": {
778
+ "description": "Filter by provider (e.g. openai, anthropic)",
779
+ "name": "provider",
780
+ "hasDynamicHelp": false,
781
+ "multiple": false,
782
+ "type": "option"
788
783
  }
789
784
  },
790
785
  "hasDynamicHelp": false,
791
786
  "hiddenAliases": [],
792
- "id": "catalog:list",
787
+ "id": "billing:llm-costs",
793
788
  "pluginAlias": "faces-cli",
794
789
  "pluginName": "faces-cli",
795
790
  "pluginType": "core",
@@ -799,14 +794,14 @@
799
794
  "relativePath": [
800
795
  "dist",
801
796
  "commands",
802
- "catalog",
803
- "list.js"
797
+ "billing",
798
+ "llm-costs.js"
804
799
  ]
805
800
  },
806
- "catalog:manyfaced": {
801
+ "billing:topup": {
807
802
  "aliases": [],
808
803
  "args": {},
809
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
804
+ "description": "Top up credit balance using saved payment method",
810
805
  "flags": {
811
806
  "json": {
812
807
  "description": "Format output as json.",
@@ -839,37 +834,25 @@
839
834
  "multiple": false,
840
835
  "type": "option"
841
836
  },
842
- "skill": {
843
- "description": "Show details for a specific skill",
844
- "name": "skill",
845
- "hasDynamicHelp": false,
846
- "multiple": false,
847
- "type": "option"
848
- },
849
- "install": {
850
- "description": "Install a skill by name",
851
- "name": "install",
837
+ "amount": {
838
+ "description": "Top-up amount in USD (min $1)",
839
+ "name": "amount",
840
+ "required": true,
852
841
  "hasDynamicHelp": false,
853
842
  "multiple": false,
854
843
  "type": "option"
855
844
  },
856
- "skills-dir": {
857
- "description": "Directory to install skills into (required for --install)",
858
- "name": "skills-dir",
845
+ "payment-ref": {
846
+ "description": "Payment reference (admin/test path)",
847
+ "name": "payment-ref",
859
848
  "hasDynamicHelp": false,
860
849
  "multiple": false,
861
850
  "type": "option"
862
- },
863
- "refresh": {
864
- "description": "Force refresh the skill index (ignore cache)",
865
- "name": "refresh",
866
- "allowNo": false,
867
- "type": "boolean"
868
851
  }
869
852
  },
870
853
  "hasDynamicHelp": false,
871
854
  "hiddenAliases": [],
872
- "id": "catalog:manyfaced",
855
+ "id": "billing:topup",
873
856
  "pluginAlias": "faces-cli",
874
857
  "pluginName": "faces-cli",
875
858
  "pluginType": "core",
@@ -879,19 +862,14 @@
879
862
  "relativePath": [
880
863
  "dist",
881
864
  "commands",
882
- "catalog",
883
- "manyfaced.js"
865
+ "billing",
866
+ "topup.js"
884
867
  ]
885
868
  },
886
- "catalog:restore": {
869
+ "billing:usage": {
887
870
  "aliases": [],
888
- "args": {
889
- "file": {
890
- "description": "Backup file path (default: most recent in ~/.faces/backups/)",
891
- "name": "file"
892
- }
893
- },
894
- "description": "Restore faces, teams, and source material from a backup snapshot",
871
+ "args": {},
872
+ "description": "Aggregated usage analytics",
895
873
  "flags": {
896
874
  "json": {
897
875
  "description": "Format output as json.",
@@ -924,16 +902,37 @@
924
902
  "multiple": false,
925
903
  "type": "option"
926
904
  },
927
- "compile": {
928
- "description": "Run compile:all after restoring",
929
- "name": "compile",
930
- "allowNo": false,
931
- "type": "boolean"
905
+ "group-by": {
906
+ "description": "Group results",
907
+ "name": "group-by",
908
+ "hasDynamicHelp": false,
909
+ "multiple": false,
910
+ "options": [
911
+ "api_key",
912
+ "model",
913
+ "llm",
914
+ "date"
915
+ ],
916
+ "type": "option"
917
+ },
918
+ "from": {
919
+ "description": "Start date (YYYY-MM-DD)",
920
+ "name": "from",
921
+ "hasDynamicHelp": false,
922
+ "multiple": false,
923
+ "type": "option"
924
+ },
925
+ "to": {
926
+ "description": "End date (YYYY-MM-DD)",
927
+ "name": "to",
928
+ "hasDynamicHelp": false,
929
+ "multiple": false,
930
+ "type": "option"
932
931
  }
933
932
  },
934
933
  "hasDynamicHelp": false,
935
934
  "hiddenAliases": [],
936
- "id": "catalog:restore",
935
+ "id": "billing:usage",
937
936
  "pluginAlias": "faces-cli",
938
937
  "pluginName": "faces-cli",
939
938
  "pluginType": "core",
@@ -943,14 +942,14 @@
943
942
  "relativePath": [
944
943
  "dist",
945
944
  "commands",
946
- "catalog",
947
- "restore.js"
945
+ "billing",
946
+ "usage.js"
948
947
  ]
949
948
  },
950
- "billing:balance": {
949
+ "catalog:backup": {
951
950
  "aliases": [],
952
951
  "args": {},
953
- "description": "Show credit balance and payment method status",
952
+ "description": "Snapshot all faces, teams, and source material for migration",
954
953
  "flags": {
955
954
  "json": {
956
955
  "description": "Format output as json.",
@@ -986,7 +985,7 @@
986
985
  },
987
986
  "hasDynamicHelp": false,
988
987
  "hiddenAliases": [],
989
- "id": "billing:balance",
988
+ "id": "catalog:backup",
990
989
  "pluginAlias": "faces-cli",
991
990
  "pluginName": "faces-cli",
992
991
  "pluginType": "core",
@@ -996,14 +995,14 @@
996
995
  "relativePath": [
997
996
  "dist",
998
997
  "commands",
999
- "billing",
1000
- "balance.js"
998
+ "catalog",
999
+ "backup.js"
1001
1000
  ]
1002
1001
  },
1003
- "billing:card-setup": {
1002
+ "catalog:doctor": {
1004
1003
  "aliases": [],
1005
1004
  "args": {},
1006
- "description": "Get a Stripe card setup URL to save a payment method",
1005
+ "description": "Diagnose and repair the local face and team catalog",
1007
1006
  "flags": {
1008
1007
  "json": {
1009
1008
  "description": "Format output as json.",
@@ -1035,11 +1034,23 @@
1035
1034
  "hasDynamicHelp": false,
1036
1035
  "multiple": false,
1037
1036
  "type": "option"
1037
+ },
1038
+ "fix": {
1039
+ "description": "Rebuild missing or stale catalog entries from API",
1040
+ "name": "fix",
1041
+ "allowNo": false,
1042
+ "type": "boolean"
1043
+ },
1044
+ "generate": {
1045
+ "description": "Fix + generate missing descriptions via LLM",
1046
+ "name": "generate",
1047
+ "allowNo": false,
1048
+ "type": "boolean"
1038
1049
  }
1039
1050
  },
1040
1051
  "hasDynamicHelp": false,
1041
1052
  "hiddenAliases": [],
1042
- "id": "billing:card-setup",
1053
+ "id": "catalog:doctor",
1043
1054
  "pluginAlias": "faces-cli",
1044
1055
  "pluginName": "faces-cli",
1045
1056
  "pluginType": "core",
@@ -1049,14 +1060,14 @@
1049
1060
  "relativePath": [
1050
1061
  "dist",
1051
1062
  "commands",
1052
- "billing",
1053
- "card-setup.js"
1063
+ "catalog",
1064
+ "doctor.js"
1054
1065
  ]
1055
1066
  },
1056
- "billing:llm-costs": {
1067
+ "catalog:list": {
1057
1068
  "aliases": [],
1058
1069
  "args": {},
1059
- "description": "List available LLMs and their per-token costs",
1070
+ "description": "List all faces in the local catalog",
1060
1071
  "flags": {
1061
1072
  "json": {
1062
1073
  "description": "Format output as json.",
@@ -1088,18 +1099,11 @@
1088
1099
  "hasDynamicHelp": false,
1089
1100
  "multiple": false,
1090
1101
  "type": "option"
1091
- },
1092
- "provider": {
1093
- "description": "Filter by provider (e.g. openai, anthropic)",
1094
- "name": "provider",
1095
- "hasDynamicHelp": false,
1096
- "multiple": false,
1097
- "type": "option"
1098
1102
  }
1099
1103
  },
1100
1104
  "hasDynamicHelp": false,
1101
1105
  "hiddenAliases": [],
1102
- "id": "billing:llm-costs",
1106
+ "id": "catalog:list",
1103
1107
  "pluginAlias": "faces-cli",
1104
1108
  "pluginName": "faces-cli",
1105
1109
  "pluginType": "core",
@@ -1109,14 +1113,14 @@
1109
1113
  "relativePath": [
1110
1114
  "dist",
1111
1115
  "commands",
1112
- "billing",
1113
- "llm-costs.js"
1116
+ "catalog",
1117
+ "list.js"
1114
1118
  ]
1115
1119
  },
1116
- "billing:topup": {
1120
+ "catalog:manyfaced": {
1117
1121
  "aliases": [],
1118
1122
  "args": {},
1119
- "description": "Top up credit balance using saved payment method",
1123
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1120
1124
  "flags": {
1121
1125
  "json": {
1122
1126
  "description": "Format output as json.",
@@ -1149,25 +1153,37 @@
1149
1153
  "multiple": false,
1150
1154
  "type": "option"
1151
1155
  },
1152
- "amount": {
1153
- "description": "Top-up amount in USD (min $1)",
1154
- "name": "amount",
1155
- "required": true,
1156
+ "skill": {
1157
+ "description": "Show details for a specific skill",
1158
+ "name": "skill",
1156
1159
  "hasDynamicHelp": false,
1157
1160
  "multiple": false,
1158
1161
  "type": "option"
1159
1162
  },
1160
- "payment-ref": {
1161
- "description": "Payment reference (admin/test path)",
1162
- "name": "payment-ref",
1163
+ "install": {
1164
+ "description": "Install a skill by name",
1165
+ "name": "install",
1166
+ "hasDynamicHelp": false,
1167
+ "multiple": false,
1168
+ "type": "option"
1169
+ },
1170
+ "skills-dir": {
1171
+ "description": "Directory to install skills into (required for --install)",
1172
+ "name": "skills-dir",
1163
1173
  "hasDynamicHelp": false,
1164
1174
  "multiple": false,
1165
1175
  "type": "option"
1176
+ },
1177
+ "refresh": {
1178
+ "description": "Force refresh the skill index (ignore cache)",
1179
+ "name": "refresh",
1180
+ "allowNo": false,
1181
+ "type": "boolean"
1166
1182
  }
1167
1183
  },
1168
1184
  "hasDynamicHelp": false,
1169
1185
  "hiddenAliases": [],
1170
- "id": "billing:topup",
1186
+ "id": "catalog:manyfaced",
1171
1187
  "pluginAlias": "faces-cli",
1172
1188
  "pluginName": "faces-cli",
1173
1189
  "pluginType": "core",
@@ -1177,14 +1193,19 @@
1177
1193
  "relativePath": [
1178
1194
  "dist",
1179
1195
  "commands",
1180
- "billing",
1181
- "topup.js"
1196
+ "catalog",
1197
+ "manyfaced.js"
1182
1198
  ]
1183
1199
  },
1184
- "billing:usage": {
1200
+ "catalog:restore": {
1185
1201
  "aliases": [],
1186
- "args": {},
1187
- "description": "Aggregated usage analytics",
1202
+ "args": {
1203
+ "file": {
1204
+ "description": "Backup file path (default: most recent in ~/.faces/backups/)",
1205
+ "name": "file"
1206
+ }
1207
+ },
1208
+ "description": "Restore faces, teams, and source material from a backup snapshot",
1188
1209
  "flags": {
1189
1210
  "json": {
1190
1211
  "description": "Format output as json.",
@@ -1217,37 +1238,16 @@
1217
1238
  "multiple": false,
1218
1239
  "type": "option"
1219
1240
  },
1220
- "group-by": {
1221
- "description": "Group results",
1222
- "name": "group-by",
1223
- "hasDynamicHelp": false,
1224
- "multiple": false,
1225
- "options": [
1226
- "api_key",
1227
- "model",
1228
- "llm",
1229
- "date"
1230
- ],
1231
- "type": "option"
1232
- },
1233
- "from": {
1234
- "description": "Start date (YYYY-MM-DD)",
1235
- "name": "from",
1236
- "hasDynamicHelp": false,
1237
- "multiple": false,
1238
- "type": "option"
1239
- },
1240
- "to": {
1241
- "description": "End date (YYYY-MM-DD)",
1242
- "name": "to",
1243
- "hasDynamicHelp": false,
1244
- "multiple": false,
1245
- "type": "option"
1246
- }
1241
+ "compile": {
1242
+ "description": "Run compile:all after restoring",
1243
+ "name": "compile",
1244
+ "allowNo": false,
1245
+ "type": "boolean"
1246
+ }
1247
1247
  },
1248
1248
  "hasDynamicHelp": false,
1249
1249
  "hiddenAliases": [],
1250
- "id": "billing:usage",
1250
+ "id": "catalog:restore",
1251
1251
  "pluginAlias": "faces-cli",
1252
1252
  "pluginName": "faces-cli",
1253
1253
  "pluginType": "core",
@@ -1257,8 +1257,8 @@
1257
1257
  "relativePath": [
1258
1258
  "dist",
1259
1259
  "commands",
1260
- "billing",
1261
- "usage.js"
1260
+ "catalog",
1261
+ "restore.js"
1262
1262
  ]
1263
1263
  },
1264
1264
  "chat:chat": {
@@ -4185,7 +4185,7 @@
4185
4185
  "index.js"
4186
4186
  ]
4187
4187
  },
4188
- "compile:thread:create": {
4188
+ "compile:doc:create": {
4189
4189
  "aliases": [],
4190
4190
  "args": {
4191
4191
  "face_id": {
@@ -4194,7 +4194,7 @@
4194
4194
  "required": true
4195
4195
  }
4196
4196
  },
4197
- "description": "Start a new thread for a face",
4197
+ "description": "Submit a document to a face",
4198
4198
  "flags": {
4199
4199
  "json": {
4200
4200
  "description": "Format output as json.",
@@ -4228,22 +4228,42 @@
4228
4228
  "type": "option"
4229
4229
  },
4230
4230
  "label": {
4231
- "description": "Thread label",
4231
+ "description": "Document label/title",
4232
4232
  "name": "label",
4233
4233
  "hasDynamicHelp": false,
4234
4234
  "multiple": false,
4235
4235
  "type": "option"
4236
4236
  },
4237
- "oauth-only": {
4238
- "description": "Prevent fallback to paid system key (use OAuth only)",
4239
- "name": "oauth-only",
4240
- "allowNo": false,
4241
- "type": "boolean"
4237
+ "content": {
4238
+ "description": "Inline text content",
4239
+ "name": "content",
4240
+ "hasDynamicHelp": false,
4241
+ "multiple": false,
4242
+ "type": "option"
4243
+ },
4244
+ "file": {
4245
+ "description": "Read content from file",
4246
+ "name": "file",
4247
+ "hasDynamicHelp": false,
4248
+ "multiple": false,
4249
+ "type": "option"
4250
+ },
4251
+ "perspective": {
4252
+ "description": "Perspective (first-person or third-person)",
4253
+ "name": "perspective",
4254
+ "default": "first-person",
4255
+ "hasDynamicHelp": false,
4256
+ "multiple": false,
4257
+ "options": [
4258
+ "first-person",
4259
+ "third-person"
4260
+ ],
4261
+ "type": "option"
4242
4262
  }
4243
4263
  },
4244
4264
  "hasDynamicHelp": false,
4245
4265
  "hiddenAliases": [],
4246
- "id": "compile:thread:create",
4266
+ "id": "compile:doc:create",
4247
4267
  "pluginAlias": "faces-cli",
4248
4268
  "pluginName": "faces-cli",
4249
4269
  "pluginType": "core",
@@ -4254,20 +4274,20 @@
4254
4274
  "dist",
4255
4275
  "commands",
4256
4276
  "compile",
4257
- "thread",
4277
+ "doc",
4258
4278
  "create.js"
4259
4279
  ]
4260
4280
  },
4261
- "compile:thread:delete": {
4281
+ "compile:doc:delete": {
4262
4282
  "aliases": [],
4263
4283
  "args": {
4264
- "thread_id": {
4265
- "description": "Thread ID",
4266
- "name": "thread_id",
4284
+ "doc_id": {
4285
+ "description": "Document ID",
4286
+ "name": "doc_id",
4267
4287
  "required": true
4268
4288
  }
4269
4289
  },
4270
- "description": "Delete a thread",
4290
+ "description": "Delete a document",
4271
4291
  "flags": {
4272
4292
  "json": {
4273
4293
  "description": "Format output as json.",
@@ -4299,17 +4319,11 @@
4299
4319
  "hasDynamicHelp": false,
4300
4320
  "multiple": false,
4301
4321
  "type": "option"
4302
- },
4303
- "yes": {
4304
- "description": "Skip confirmation",
4305
- "name": "yes",
4306
- "allowNo": false,
4307
- "type": "boolean"
4308
4322
  }
4309
4323
  },
4310
4324
  "hasDynamicHelp": false,
4311
4325
  "hiddenAliases": [],
4312
- "id": "compile:thread:delete",
4326
+ "id": "compile:doc:delete",
4313
4327
  "pluginAlias": "faces-cli",
4314
4328
  "pluginName": "faces-cli",
4315
4329
  "pluginType": "core",
@@ -4320,20 +4334,20 @@
4320
4334
  "dist",
4321
4335
  "commands",
4322
4336
  "compile",
4323
- "thread",
4337
+ "doc",
4324
4338
  "delete.js"
4325
4339
  ]
4326
4340
  },
4327
- "compile:thread:edit": {
4341
+ "compile:doc:edit": {
4328
4342
  "aliases": [],
4329
4343
  "args": {
4330
- "thread_id": {
4331
- "description": "Thread ID",
4332
- "name": "thread_id",
4344
+ "doc_id": {
4345
+ "description": "Document ID",
4346
+ "name": "doc_id",
4333
4347
  "required": true
4334
4348
  }
4335
4349
  },
4336
- "description": "Edit a thread (label and/or reassign face speaker)",
4350
+ "description": "Edit a document (label, content, or perspective)",
4337
4351
  "flags": {
4338
4352
  "json": {
4339
4353
  "description": "Format output as json.",
@@ -4367,23 +4381,41 @@
4367
4381
  "type": "option"
4368
4382
  },
4369
4383
  "label": {
4370
- "description": "New thread label",
4384
+ "description": "New label/title",
4371
4385
  "name": "label",
4372
4386
  "hasDynamicHelp": false,
4373
4387
  "multiple": false,
4374
4388
  "type": "option"
4375
4389
  },
4376
- "face-speaker": {
4377
- "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
4378
- "name": "face-speaker",
4390
+ "content": {
4391
+ "description": "New inline text content",
4392
+ "name": "content",
4393
+ "hasDynamicHelp": false,
4394
+ "multiple": false,
4395
+ "type": "option"
4396
+ },
4397
+ "file": {
4398
+ "description": "Read new content from file",
4399
+ "name": "file",
4400
+ "hasDynamicHelp": false,
4401
+ "multiple": false,
4402
+ "type": "option"
4403
+ },
4404
+ "perspective": {
4405
+ "description": "Perspective (first-person or third-person)",
4406
+ "name": "perspective",
4379
4407
  "hasDynamicHelp": false,
4380
4408
  "multiple": false,
4409
+ "options": [
4410
+ "first-person",
4411
+ "third-person"
4412
+ ],
4381
4413
  "type": "option"
4382
4414
  }
4383
4415
  },
4384
4416
  "hasDynamicHelp": false,
4385
4417
  "hiddenAliases": [],
4386
- "id": "compile:thread:edit",
4418
+ "id": "compile:doc:edit",
4387
4419
  "pluginAlias": "faces-cli",
4388
4420
  "pluginName": "faces-cli",
4389
4421
  "pluginType": "core",
@@ -4394,20 +4426,20 @@
4394
4426
  "dist",
4395
4427
  "commands",
4396
4428
  "compile",
4397
- "thread",
4429
+ "doc",
4398
4430
  "edit.js"
4399
4431
  ]
4400
4432
  },
4401
- "compile:thread:get": {
4433
+ "compile:doc:get": {
4402
4434
  "aliases": [],
4403
4435
  "args": {
4404
- "thread_id": {
4405
- "description": "Thread ID",
4406
- "name": "thread_id",
4436
+ "doc_id": {
4437
+ "description": "Document ID",
4438
+ "name": "doc_id",
4407
4439
  "required": true
4408
4440
  }
4409
4441
  },
4410
- "description": "Get a thread by ID",
4442
+ "description": "Get a document by ID",
4411
4443
  "flags": {
4412
4444
  "json": {
4413
4445
  "description": "Format output as json.",
@@ -4443,7 +4475,7 @@
4443
4475
  },
4444
4476
  "hasDynamicHelp": false,
4445
4477
  "hiddenAliases": [],
4446
- "id": "compile:thread:get",
4478
+ "id": "compile:doc:get",
4447
4479
  "pluginAlias": "faces-cli",
4448
4480
  "pluginName": "faces-cli",
4449
4481
  "pluginType": "core",
@@ -4454,11 +4486,11 @@
4454
4486
  "dist",
4455
4487
  "commands",
4456
4488
  "compile",
4457
- "thread",
4489
+ "doc",
4458
4490
  "get.js"
4459
4491
  ]
4460
4492
  },
4461
- "compile:thread:list": {
4493
+ "compile:doc": {
4462
4494
  "aliases": [],
4463
4495
  "args": {
4464
4496
  "face_id": {
@@ -4467,7 +4499,11 @@
4467
4499
  "required": true
4468
4500
  }
4469
4501
  },
4470
- "description": "List threads for a face",
4502
+ "description": "Compile one or more documents into a face (create → make in one step). Repeat --file to submit several documents in a single command; each file becomes its own document rather than being concatenated.",
4503
+ "examples": [
4504
+ "<%= config.bin %> <%= command.id %> alice --file notes.txt",
4505
+ "<%= config.bin %> <%= command.id %> alice --file a.txt --file b.txt --file c.txt --no-wait --json"
4506
+ ],
4471
4507
  "flags": {
4472
4508
  "json": {
4473
4509
  "description": "Format output as json.",
@@ -4499,11 +4535,61 @@
4499
4535
  "hasDynamicHelp": false,
4500
4536
  "multiple": false,
4501
4537
  "type": "option"
4538
+ },
4539
+ "label": {
4540
+ "description": "Document label/title (single document only; with several files each is labelled by its filename)",
4541
+ "name": "label",
4542
+ "hasDynamicHelp": false,
4543
+ "multiple": false,
4544
+ "type": "option"
4545
+ },
4546
+ "content": {
4547
+ "description": "Inline text content",
4548
+ "exclusive": [
4549
+ "file"
4550
+ ],
4551
+ "name": "content",
4552
+ "hasDynamicHelp": false,
4553
+ "multiple": false,
4554
+ "type": "option"
4555
+ },
4556
+ "file": {
4557
+ "description": "Read content from file (repeatable — each file becomes its own document)",
4558
+ "name": "file",
4559
+ "hasDynamicHelp": false,
4560
+ "multiple": true,
4561
+ "type": "option"
4562
+ },
4563
+ "perspective": {
4564
+ "description": "Perspective",
4565
+ "name": "perspective",
4566
+ "default": "first-person",
4567
+ "hasDynamicHelp": false,
4568
+ "multiple": false,
4569
+ "options": [
4570
+ "first-person",
4571
+ "third-person"
4572
+ ],
4573
+ "type": "option"
4574
+ },
4575
+ "timeout": {
4576
+ "description": "Compile timeout in seconds, per document (default: 600)",
4577
+ "name": "timeout",
4578
+ "default": 600,
4579
+ "hasDynamicHelp": false,
4580
+ "multiple": false,
4581
+ "type": "option"
4582
+ },
4583
+ "no-wait": {
4584
+ "description": "Create and trigger compilation, then return immediately without polling.",
4585
+ "name": "no-wait",
4586
+ "allowNo": false,
4587
+ "type": "boolean"
4502
4588
  }
4503
4589
  },
4504
4590
  "hasDynamicHelp": false,
4505
4591
  "hiddenAliases": [],
4506
- "id": "compile:thread:list",
4592
+ "id": "compile:doc",
4507
4593
  "pluginAlias": "faces-cli",
4508
4594
  "pluginName": "faces-cli",
4509
4595
  "pluginType": "core",
@@ -4514,20 +4600,20 @@
4514
4600
  "dist",
4515
4601
  "commands",
4516
4602
  "compile",
4517
- "thread",
4518
- "list.js"
4603
+ "doc",
4604
+ "index.js"
4519
4605
  ]
4520
4606
  },
4521
- "compile:thread:make": {
4607
+ "compile:doc:list": {
4522
4608
  "aliases": [],
4523
4609
  "args": {
4524
- "thread_id": {
4525
- "description": "Thread ID",
4526
- "name": "thread_id",
4610
+ "face_id": {
4611
+ "description": "Face alias",
4612
+ "name": "face_id",
4527
4613
  "required": true
4528
4614
  }
4529
4615
  },
4530
- "description": "Compile an existing thread (prepare + sync in one step)",
4616
+ "description": "List documents for a face",
4531
4617
  "flags": {
4532
4618
  "json": {
4533
4619
  "description": "Format output as json.",
@@ -4559,25 +4645,11 @@
4559
4645
  "hasDynamicHelp": false,
4560
4646
  "multiple": false,
4561
4647
  "type": "option"
4562
- },
4563
- "timeout": {
4564
- "description": "Compile timeout in seconds (default: 600)",
4565
- "name": "timeout",
4566
- "default": 600,
4567
- "hasDynamicHelp": false,
4568
- "multiple": false,
4569
- "type": "option"
4570
- },
4571
- "no-wait": {
4572
- "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
4573
- "name": "no-wait",
4574
- "allowNo": false,
4575
- "type": "boolean"
4576
4648
  }
4577
4649
  },
4578
4650
  "hasDynamicHelp": false,
4579
4651
  "hiddenAliases": [],
4580
- "id": "compile:thread:make",
4652
+ "id": "compile:doc:list",
4581
4653
  "pluginAlias": "faces-cli",
4582
4654
  "pluginName": "faces-cli",
4583
4655
  "pluginType": "core",
@@ -4588,20 +4660,20 @@
4588
4660
  "dist",
4589
4661
  "commands",
4590
4662
  "compile",
4591
- "thread",
4592
- "make.js"
4663
+ "doc",
4664
+ "list.js"
4593
4665
  ]
4594
4666
  },
4595
- "compile:thread:message": {
4667
+ "compile:doc:make": {
4596
4668
  "aliases": [],
4597
4669
  "args": {
4598
- "thread_id": {
4599
- "description": "Thread ID",
4600
- "name": "thread_id",
4670
+ "doc_id": {
4671
+ "description": "Document ID",
4672
+ "name": "doc_id",
4601
4673
  "required": true
4602
4674
  }
4603
4675
  },
4604
- "description": "Send a user message to a thread",
4676
+ "description": "Compile an existing document (prepare + sync in one step)",
4605
4677
  "flags": {
4606
4678
  "json": {
4607
4679
  "description": "Format output as json.",
@@ -4634,25 +4706,24 @@
4634
4706
  "multiple": false,
4635
4707
  "type": "option"
4636
4708
  },
4637
- "message": {
4638
- "char": "m",
4639
- "description": "User message to append",
4640
- "name": "message",
4641
- "required": true,
4709
+ "timeout": {
4710
+ "description": "Compile timeout in seconds (default: 600)",
4711
+ "name": "timeout",
4712
+ "default": 600,
4642
4713
  "hasDynamicHelp": false,
4643
4714
  "multiple": false,
4644
4715
  "type": "option"
4645
4716
  },
4646
- "oauth-only": {
4647
- "description": "Prevent fallback to paid system key (use OAuth only)",
4648
- "name": "oauth-only",
4717
+ "no-wait": {
4718
+ "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
4719
+ "name": "no-wait",
4649
4720
  "allowNo": false,
4650
4721
  "type": "boolean"
4651
4722
  }
4652
4723
  },
4653
4724
  "hasDynamicHelp": false,
4654
4725
  "hiddenAliases": [],
4655
- "id": "compile:thread:message",
4726
+ "id": "compile:doc:make",
4656
4727
  "pluginAlias": "faces-cli",
4657
4728
  "pluginName": "faces-cli",
4658
4729
  "pluginType": "core",
@@ -4663,20 +4734,20 @@
4663
4734
  "dist",
4664
4735
  "commands",
4665
4736
  "compile",
4666
- "thread",
4667
- "message.js"
4737
+ "doc",
4738
+ "make.js"
4668
4739
  ]
4669
4740
  },
4670
- "compile:thread:pause": {
4741
+ "compile:doc:pause": {
4671
4742
  "aliases": [],
4672
4743
  "args": {
4673
- "thread_id": {
4674
- "description": "Thread ID",
4675
- "name": "thread_id",
4744
+ "doc_id": {
4745
+ "description": "Document ID",
4746
+ "name": "doc_id",
4676
4747
  "required": true
4677
4748
  }
4678
4749
  },
4679
- "description": "Ask a running thread compilation to stop (preserves progress, resume with make). The compile stops at the next chunk boundary; this waits for it unless --no-wait.",
4750
+ "description": "Ask a running document compilation to stop (preserves progress, resume with make). The compile stops at the next chunk boundary; this waits for it unless --no-wait.",
4680
4751
  "flags": {
4681
4752
  "json": {
4682
4753
  "description": "Format output as json.",
@@ -4726,7 +4797,7 @@
4726
4797
  },
4727
4798
  "hasDynamicHelp": false,
4728
4799
  "hiddenAliases": [],
4729
- "id": "compile:thread:pause",
4800
+ "id": "compile:doc:pause",
4730
4801
  "pluginAlias": "faces-cli",
4731
4802
  "pluginName": "faces-cli",
4732
4803
  "pluginType": "core",
@@ -4737,20 +4808,20 @@
4737
4808
  "dist",
4738
4809
  "commands",
4739
4810
  "compile",
4740
- "thread",
4811
+ "doc",
4741
4812
  "pause.js"
4742
4813
  ]
4743
4814
  },
4744
- "compile:thread:reset": {
4815
+ "compile:doc:reset": {
4745
4816
  "aliases": [],
4746
4817
  "args": {
4747
- "thread_id": {
4748
- "description": "Thread ID",
4749
- "name": "thread_id",
4818
+ "doc_id": {
4819
+ "description": "Document ID",
4820
+ "name": "doc_id",
4750
4821
  "required": true
4751
4822
  }
4752
4823
  },
4753
- "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
4824
+ "description": "Reset document compilation progress (wipe extraction, keep content)",
4754
4825
  "flags": {
4755
4826
  "json": {
4756
4827
  "description": "Format output as json.",
@@ -4792,7 +4863,7 @@
4792
4863
  },
4793
4864
  "hasDynamicHelp": false,
4794
4865
  "hiddenAliases": [],
4795
- "id": "compile:thread:reset",
4866
+ "id": "compile:doc:reset",
4796
4867
  "pluginAlias": "faces-cli",
4797
4868
  "pluginName": "faces-cli",
4798
4869
  "pluginType": "core",
@@ -4803,20 +4874,20 @@
4803
4874
  "dist",
4804
4875
  "commands",
4805
4876
  "compile",
4806
- "thread",
4877
+ "doc",
4807
4878
  "reset.js"
4808
4879
  ]
4809
4880
  },
4810
- "compile:thread:sync": {
4881
+ "compile:thread:create": {
4811
4882
  "aliases": [],
4812
4883
  "args": {
4813
- "thread_id": {
4814
- "description": "Thread ID",
4815
- "name": "thread_id",
4884
+ "face_id": {
4885
+ "description": "Face alias",
4886
+ "name": "face_id",
4816
4887
  "required": true
4817
4888
  }
4818
4889
  },
4819
- "description": "Archive and sync a thread into a face",
4890
+ "description": "Start a new thread for a face",
4820
4891
  "flags": {
4821
4892
  "json": {
4822
4893
  "description": "Format output as json.",
@@ -4848,11 +4919,24 @@
4848
4919
  "hasDynamicHelp": false,
4849
4920
  "multiple": false,
4850
4921
  "type": "option"
4922
+ },
4923
+ "label": {
4924
+ "description": "Thread label",
4925
+ "name": "label",
4926
+ "hasDynamicHelp": false,
4927
+ "multiple": false,
4928
+ "type": "option"
4929
+ },
4930
+ "oauth-only": {
4931
+ "description": "Prevent fallback to paid system key (use OAuth only)",
4932
+ "name": "oauth-only",
4933
+ "allowNo": false,
4934
+ "type": "boolean"
4851
4935
  }
4852
4936
  },
4853
4937
  "hasDynamicHelp": false,
4854
4938
  "hiddenAliases": [],
4855
- "id": "compile:thread:sync",
4939
+ "id": "compile:thread:create",
4856
4940
  "pluginAlias": "faces-cli",
4857
4941
  "pluginName": "faces-cli",
4858
4942
  "pluginType": "core",
@@ -4864,19 +4948,19 @@
4864
4948
  "commands",
4865
4949
  "compile",
4866
4950
  "thread",
4867
- "sync.js"
4951
+ "create.js"
4868
4952
  ]
4869
4953
  },
4870
- "face:tag:add": {
4954
+ "compile:thread:delete": {
4871
4955
  "aliases": [],
4872
4956
  "args": {
4873
- "alias": {
4874
- "description": "Face alias",
4875
- "name": "alias",
4957
+ "thread_id": {
4958
+ "description": "Thread ID",
4959
+ "name": "thread_id",
4876
4960
  "required": true
4877
4961
  }
4878
4962
  },
4879
- "description": "Add tags to a face (appends, idempotent)",
4963
+ "description": "Delete a thread",
4880
4964
  "flags": {
4881
4965
  "json": {
4882
4966
  "description": "Format output as json.",
@@ -4909,18 +4993,16 @@
4909
4993
  "multiple": false,
4910
4994
  "type": "option"
4911
4995
  },
4912
- "tag": {
4913
- "description": "Tag to add (repeatable)",
4914
- "name": "tag",
4915
- "required": true,
4916
- "hasDynamicHelp": false,
4917
- "multiple": true,
4918
- "type": "option"
4996
+ "yes": {
4997
+ "description": "Skip confirmation",
4998
+ "name": "yes",
4999
+ "allowNo": false,
5000
+ "type": "boolean"
4919
5001
  }
4920
5002
  },
4921
5003
  "hasDynamicHelp": false,
4922
5004
  "hiddenAliases": [],
4923
- "id": "face:tag:add",
5005
+ "id": "compile:thread:delete",
4924
5006
  "pluginAlias": "faces-cli",
4925
5007
  "pluginName": "faces-cli",
4926
5008
  "pluginType": "core",
@@ -4930,15 +5012,21 @@
4930
5012
  "relativePath": [
4931
5013
  "dist",
4932
5014
  "commands",
4933
- "face",
4934
- "tag",
4935
- "add.js"
5015
+ "compile",
5016
+ "thread",
5017
+ "delete.js"
4936
5018
  ]
4937
5019
  },
4938
- "face:tag:all": {
5020
+ "compile:thread:edit": {
4939
5021
  "aliases": [],
4940
- "args": {},
4941
- "description": "List all tags across all your faces",
5022
+ "args": {
5023
+ "thread_id": {
5024
+ "description": "Thread ID",
5025
+ "name": "thread_id",
5026
+ "required": true
5027
+ }
5028
+ },
5029
+ "description": "Edit a thread (label and/or reassign face speaker)",
4942
5030
  "flags": {
4943
5031
  "json": {
4944
5032
  "description": "Format output as json.",
@@ -4970,11 +5058,25 @@
4970
5058
  "hasDynamicHelp": false,
4971
5059
  "multiple": false,
4972
5060
  "type": "option"
5061
+ },
5062
+ "label": {
5063
+ "description": "New thread label",
5064
+ "name": "label",
5065
+ "hasDynamicHelp": false,
5066
+ "multiple": false,
5067
+ "type": "option"
5068
+ },
5069
+ "face-speaker": {
5070
+ "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
5071
+ "name": "face-speaker",
5072
+ "hasDynamicHelp": false,
5073
+ "multiple": false,
5074
+ "type": "option"
4973
5075
  }
4974
5076
  },
4975
5077
  "hasDynamicHelp": false,
4976
5078
  "hiddenAliases": [],
4977
- "id": "face:tag:all",
5079
+ "id": "compile:thread:edit",
4978
5080
  "pluginAlias": "faces-cli",
4979
5081
  "pluginName": "faces-cli",
4980
5082
  "pluginType": "core",
@@ -4984,21 +5086,21 @@
4984
5086
  "relativePath": [
4985
5087
  "dist",
4986
5088
  "commands",
4987
- "face",
4988
- "tag",
4989
- "all.js"
5089
+ "compile",
5090
+ "thread",
5091
+ "edit.js"
4990
5092
  ]
4991
5093
  },
4992
- "face:tag:list": {
5094
+ "compile:thread:get": {
4993
5095
  "aliases": [],
4994
5096
  "args": {
4995
- "alias": {
4996
- "description": "Face alias",
4997
- "name": "alias",
5097
+ "thread_id": {
5098
+ "description": "Thread ID",
5099
+ "name": "thread_id",
4998
5100
  "required": true
4999
5101
  }
5000
5102
  },
5001
- "description": "List tags on a face",
5103
+ "description": "Get a thread by ID",
5002
5104
  "flags": {
5003
5105
  "json": {
5004
5106
  "description": "Format output as json.",
@@ -5034,7 +5136,7 @@
5034
5136
  },
5035
5137
  "hasDynamicHelp": false,
5036
5138
  "hiddenAliases": [],
5037
- "id": "face:tag:list",
5139
+ "id": "compile:thread:get",
5038
5140
  "pluginAlias": "faces-cli",
5039
5141
  "pluginName": "faces-cli",
5040
5142
  "pluginType": "core",
@@ -5044,26 +5146,21 @@
5044
5146
  "relativePath": [
5045
5147
  "dist",
5046
5148
  "commands",
5047
- "face",
5048
- "tag",
5049
- "list.js"
5149
+ "compile",
5150
+ "thread",
5151
+ "get.js"
5050
5152
  ]
5051
5153
  },
5052
- "face:tag:remove": {
5154
+ "compile:thread:list": {
5053
5155
  "aliases": [],
5054
5156
  "args": {
5055
- "alias": {
5157
+ "face_id": {
5056
5158
  "description": "Face alias",
5057
- "name": "alias",
5058
- "required": true
5059
- },
5060
- "tag": {
5061
- "description": "Tag to remove",
5062
- "name": "tag",
5159
+ "name": "face_id",
5063
5160
  "required": true
5064
5161
  }
5065
5162
  },
5066
- "description": "Remove a tag from a face",
5163
+ "description": "List threads for a face",
5067
5164
  "flags": {
5068
5165
  "json": {
5069
5166
  "description": "Format output as json.",
@@ -5099,7 +5196,7 @@
5099
5196
  },
5100
5197
  "hasDynamicHelp": false,
5101
5198
  "hiddenAliases": [],
5102
- "id": "face:tag:remove",
5199
+ "id": "compile:thread:list",
5103
5200
  "pluginAlias": "faces-cli",
5104
5201
  "pluginName": "faces-cli",
5105
5202
  "pluginType": "core",
@@ -5109,21 +5206,21 @@
5109
5206
  "relativePath": [
5110
5207
  "dist",
5111
5208
  "commands",
5112
- "face",
5113
- "tag",
5114
- "remove.js"
5209
+ "compile",
5210
+ "thread",
5211
+ "list.js"
5115
5212
  ]
5116
5213
  },
5117
- "face:tag:set": {
5214
+ "compile:thread:make": {
5118
5215
  "aliases": [],
5119
5216
  "args": {
5120
- "alias": {
5121
- "description": "Face alias",
5122
- "name": "alias",
5217
+ "thread_id": {
5218
+ "description": "Thread ID",
5219
+ "name": "thread_id",
5123
5220
  "required": true
5124
5221
  }
5125
5222
  },
5126
- "description": "Replace all tags on a face",
5223
+ "description": "Compile an existing thread (prepare + sync in one step)",
5127
5224
  "flags": {
5128
5225
  "json": {
5129
5226
  "description": "Format output as json.",
@@ -5156,18 +5253,24 @@
5156
5253
  "multiple": false,
5157
5254
  "type": "option"
5158
5255
  },
5159
- "tag": {
5160
- "description": "Tag to set (repeatable, replaces all)",
5161
- "name": "tag",
5162
- "required": true,
5256
+ "timeout": {
5257
+ "description": "Compile timeout in seconds (default: 600)",
5258
+ "name": "timeout",
5259
+ "default": 600,
5163
5260
  "hasDynamicHelp": false,
5164
- "multiple": true,
5261
+ "multiple": false,
5165
5262
  "type": "option"
5263
+ },
5264
+ "no-wait": {
5265
+ "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
5266
+ "name": "no-wait",
5267
+ "allowNo": false,
5268
+ "type": "boolean"
5166
5269
  }
5167
5270
  },
5168
5271
  "hasDynamicHelp": false,
5169
5272
  "hiddenAliases": [],
5170
- "id": "face:tag:set",
5273
+ "id": "compile:thread:make",
5171
5274
  "pluginAlias": "faces-cli",
5172
5275
  "pluginName": "faces-cli",
5173
5276
  "pluginType": "core",
@@ -5177,21 +5280,21 @@
5177
5280
  "relativePath": [
5178
5281
  "dist",
5179
5282
  "commands",
5180
- "face",
5181
- "tag",
5182
- "set.js"
5283
+ "compile",
5284
+ "thread",
5285
+ "make.js"
5183
5286
  ]
5184
5287
  },
5185
- "team:tag:add": {
5288
+ "compile:thread:message": {
5186
5289
  "aliases": [],
5187
5290
  "args": {
5188
- "team_id": {
5189
- "description": "Team ID",
5190
- "name": "team_id",
5291
+ "thread_id": {
5292
+ "description": "Thread ID",
5293
+ "name": "thread_id",
5191
5294
  "required": true
5192
5295
  }
5193
5296
  },
5194
- "description": "Add tags to a team (appends, idempotent)",
5297
+ "description": "Send a user message to a thread",
5195
5298
  "flags": {
5196
5299
  "json": {
5197
5300
  "description": "Format output as json.",
@@ -5224,18 +5327,25 @@
5224
5327
  "multiple": false,
5225
5328
  "type": "option"
5226
5329
  },
5227
- "tag": {
5228
- "description": "Tag to add (repeatable)",
5229
- "name": "tag",
5330
+ "message": {
5331
+ "char": "m",
5332
+ "description": "User message to append",
5333
+ "name": "message",
5230
5334
  "required": true,
5231
5335
  "hasDynamicHelp": false,
5232
- "multiple": true,
5336
+ "multiple": false,
5233
5337
  "type": "option"
5338
+ },
5339
+ "oauth-only": {
5340
+ "description": "Prevent fallback to paid system key (use OAuth only)",
5341
+ "name": "oauth-only",
5342
+ "allowNo": false,
5343
+ "type": "boolean"
5234
5344
  }
5235
5345
  },
5236
5346
  "hasDynamicHelp": false,
5237
5347
  "hiddenAliases": [],
5238
- "id": "team:tag:add",
5348
+ "id": "compile:thread:message",
5239
5349
  "pluginAlias": "faces-cli",
5240
5350
  "pluginName": "faces-cli",
5241
5351
  "pluginType": "core",
@@ -5245,21 +5355,21 @@
5245
5355
  "relativePath": [
5246
5356
  "dist",
5247
5357
  "commands",
5248
- "team",
5249
- "tag",
5250
- "add.js"
5358
+ "compile",
5359
+ "thread",
5360
+ "message.js"
5251
5361
  ]
5252
5362
  },
5253
- "team:tag:list": {
5363
+ "compile:thread:pause": {
5254
5364
  "aliases": [],
5255
5365
  "args": {
5256
- "team_id": {
5257
- "description": "Team ID",
5258
- "name": "team_id",
5366
+ "thread_id": {
5367
+ "description": "Thread ID",
5368
+ "name": "thread_id",
5259
5369
  "required": true
5260
5370
  }
5261
5371
  },
5262
- "description": "List tags on a team",
5372
+ "description": "Ask a running thread compilation to stop (preserves progress, resume with make). The compile stops at the next chunk boundary; this waits for it unless --no-wait.",
5263
5373
  "flags": {
5264
5374
  "json": {
5265
5375
  "description": "Format output as json.",
@@ -5291,11 +5401,25 @@
5291
5401
  "hasDynamicHelp": false,
5292
5402
  "multiple": false,
5293
5403
  "type": "option"
5404
+ },
5405
+ "no-wait": {
5406
+ "description": "Return as soon as the pause is accepted, without waiting for the compile to stop.",
5407
+ "name": "no-wait",
5408
+ "allowNo": false,
5409
+ "type": "boolean"
5410
+ },
5411
+ "timeout": {
5412
+ "description": "Seconds to wait for the compile to stop (default: 60)",
5413
+ "name": "timeout",
5414
+ "default": 60,
5415
+ "hasDynamicHelp": false,
5416
+ "multiple": false,
5417
+ "type": "option"
5294
5418
  }
5295
5419
  },
5296
5420
  "hasDynamicHelp": false,
5297
5421
  "hiddenAliases": [],
5298
- "id": "team:tag:list",
5422
+ "id": "compile:thread:pause",
5299
5423
  "pluginAlias": "faces-cli",
5300
5424
  "pluginName": "faces-cli",
5301
5425
  "pluginType": "core",
@@ -5305,26 +5429,21 @@
5305
5429
  "relativePath": [
5306
5430
  "dist",
5307
5431
  "commands",
5308
- "team",
5309
- "tag",
5310
- "list.js"
5432
+ "compile",
5433
+ "thread",
5434
+ "pause.js"
5311
5435
  ]
5312
5436
  },
5313
- "team:tag:remove": {
5437
+ "compile:thread:reset": {
5314
5438
  "aliases": [],
5315
5439
  "args": {
5316
- "team_id": {
5317
- "description": "Team ID",
5318
- "name": "team_id",
5319
- "required": true
5320
- },
5321
- "tag": {
5322
- "description": "Tag to remove",
5323
- "name": "tag",
5440
+ "thread_id": {
5441
+ "description": "Thread ID",
5442
+ "name": "thread_id",
5324
5443
  "required": true
5325
5444
  }
5326
5445
  },
5327
- "description": "Remove a tag from a team",
5446
+ "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
5328
5447
  "flags": {
5329
5448
  "json": {
5330
5449
  "description": "Format output as json.",
@@ -5356,11 +5475,17 @@
5356
5475
  "hasDynamicHelp": false,
5357
5476
  "multiple": false,
5358
5477
  "type": "option"
5478
+ },
5479
+ "yes": {
5480
+ "description": "Skip confirmation",
5481
+ "name": "yes",
5482
+ "allowNo": false,
5483
+ "type": "boolean"
5359
5484
  }
5360
5485
  },
5361
5486
  "hasDynamicHelp": false,
5362
5487
  "hiddenAliases": [],
5363
- "id": "team:tag:remove",
5488
+ "id": "compile:thread:reset",
5364
5489
  "pluginAlias": "faces-cli",
5365
5490
  "pluginName": "faces-cli",
5366
5491
  "pluginType": "core",
@@ -5370,21 +5495,21 @@
5370
5495
  "relativePath": [
5371
5496
  "dist",
5372
5497
  "commands",
5373
- "team",
5374
- "tag",
5375
- "remove.js"
5498
+ "compile",
5499
+ "thread",
5500
+ "reset.js"
5376
5501
  ]
5377
5502
  },
5378
- "team:tag:set": {
5503
+ "compile:thread:sync": {
5379
5504
  "aliases": [],
5380
5505
  "args": {
5381
- "team_id": {
5382
- "description": "Team ID",
5383
- "name": "team_id",
5506
+ "thread_id": {
5507
+ "description": "Thread ID",
5508
+ "name": "thread_id",
5384
5509
  "required": true
5385
5510
  }
5386
5511
  },
5387
- "description": "Replace all tags on a team",
5512
+ "description": "Archive and sync a thread into a face",
5388
5513
  "flags": {
5389
5514
  "json": {
5390
5515
  "description": "Format output as json.",
@@ -5416,19 +5541,11 @@
5416
5541
  "hasDynamicHelp": false,
5417
5542
  "multiple": false,
5418
5543
  "type": "option"
5419
- },
5420
- "tag": {
5421
- "description": "Tag to set (repeatable, replaces all)",
5422
- "name": "tag",
5423
- "required": true,
5424
- "hasDynamicHelp": false,
5425
- "multiple": true,
5426
- "type": "option"
5427
5544
  }
5428
5545
  },
5429
5546
  "hasDynamicHelp": false,
5430
5547
  "hiddenAliases": [],
5431
- "id": "team:tag:set",
5548
+ "id": "compile:thread:sync",
5432
5549
  "pluginAlias": "faces-cli",
5433
5550
  "pluginName": "faces-cli",
5434
5551
  "pluginType": "core",
@@ -5438,21 +5555,21 @@
5438
5555
  "relativePath": [
5439
5556
  "dist",
5440
5557
  "commands",
5441
- "team",
5442
- "tag",
5443
- "set.js"
5558
+ "compile",
5559
+ "thread",
5560
+ "sync.js"
5444
5561
  ]
5445
5562
  },
5446
- "compile:doc:create": {
5563
+ "face:tag:add": {
5447
5564
  "aliases": [],
5448
5565
  "args": {
5449
- "face_id": {
5566
+ "alias": {
5450
5567
  "description": "Face alias",
5451
- "name": "face_id",
5568
+ "name": "alias",
5452
5569
  "required": true
5453
5570
  }
5454
5571
  },
5455
- "description": "Submit a document to a face",
5572
+ "description": "Add tags to a face (appends, idempotent)",
5456
5573
  "flags": {
5457
5574
  "json": {
5458
5575
  "description": "Format output as json.",
@@ -5485,43 +5602,18 @@
5485
5602
  "multiple": false,
5486
5603
  "type": "option"
5487
5604
  },
5488
- "label": {
5489
- "description": "Document label/title",
5490
- "name": "label",
5491
- "hasDynamicHelp": false,
5492
- "multiple": false,
5493
- "type": "option"
5494
- },
5495
- "content": {
5496
- "description": "Inline text content",
5497
- "name": "content",
5498
- "hasDynamicHelp": false,
5499
- "multiple": false,
5500
- "type": "option"
5501
- },
5502
- "file": {
5503
- "description": "Read content from file",
5504
- "name": "file",
5505
- "hasDynamicHelp": false,
5506
- "multiple": false,
5507
- "type": "option"
5508
- },
5509
- "perspective": {
5510
- "description": "Perspective (first-person or third-person)",
5511
- "name": "perspective",
5512
- "default": "first-person",
5605
+ "tag": {
5606
+ "description": "Tag to add (repeatable)",
5607
+ "name": "tag",
5608
+ "required": true,
5513
5609
  "hasDynamicHelp": false,
5514
- "multiple": false,
5515
- "options": [
5516
- "first-person",
5517
- "third-person"
5518
- ],
5610
+ "multiple": true,
5519
5611
  "type": "option"
5520
5612
  }
5521
5613
  },
5522
5614
  "hasDynamicHelp": false,
5523
5615
  "hiddenAliases": [],
5524
- "id": "compile:doc:create",
5616
+ "id": "face:tag:add",
5525
5617
  "pluginAlias": "faces-cli",
5526
5618
  "pluginName": "faces-cli",
5527
5619
  "pluginType": "core",
@@ -5531,21 +5623,15 @@
5531
5623
  "relativePath": [
5532
5624
  "dist",
5533
5625
  "commands",
5534
- "compile",
5535
- "doc",
5536
- "create.js"
5626
+ "face",
5627
+ "tag",
5628
+ "add.js"
5537
5629
  ]
5538
5630
  },
5539
- "compile:doc:delete": {
5631
+ "face:tag:all": {
5540
5632
  "aliases": [],
5541
- "args": {
5542
- "doc_id": {
5543
- "description": "Document ID",
5544
- "name": "doc_id",
5545
- "required": true
5546
- }
5547
- },
5548
- "description": "Delete a document",
5633
+ "args": {},
5634
+ "description": "List all tags across all your faces",
5549
5635
  "flags": {
5550
5636
  "json": {
5551
5637
  "description": "Format output as json.",
@@ -5581,7 +5667,7 @@
5581
5667
  },
5582
5668
  "hasDynamicHelp": false,
5583
5669
  "hiddenAliases": [],
5584
- "id": "compile:doc:delete",
5670
+ "id": "face:tag:all",
5585
5671
  "pluginAlias": "faces-cli",
5586
5672
  "pluginName": "faces-cli",
5587
5673
  "pluginType": "core",
@@ -5591,21 +5677,21 @@
5591
5677
  "relativePath": [
5592
5678
  "dist",
5593
5679
  "commands",
5594
- "compile",
5595
- "doc",
5596
- "delete.js"
5680
+ "face",
5681
+ "tag",
5682
+ "all.js"
5597
5683
  ]
5598
5684
  },
5599
- "compile:doc:edit": {
5685
+ "face:tag:list": {
5600
5686
  "aliases": [],
5601
5687
  "args": {
5602
- "doc_id": {
5603
- "description": "Document ID",
5604
- "name": "doc_id",
5688
+ "alias": {
5689
+ "description": "Face alias",
5690
+ "name": "alias",
5605
5691
  "required": true
5606
5692
  }
5607
5693
  },
5608
- "description": "Edit a document (label, content, or perspective)",
5694
+ "description": "List tags on a face",
5609
5695
  "flags": {
5610
5696
  "json": {
5611
5697
  "description": "Format output as json.",
@@ -5637,43 +5723,11 @@
5637
5723
  "hasDynamicHelp": false,
5638
5724
  "multiple": false,
5639
5725
  "type": "option"
5640
- },
5641
- "label": {
5642
- "description": "New label/title",
5643
- "name": "label",
5644
- "hasDynamicHelp": false,
5645
- "multiple": false,
5646
- "type": "option"
5647
- },
5648
- "content": {
5649
- "description": "New inline text content",
5650
- "name": "content",
5651
- "hasDynamicHelp": false,
5652
- "multiple": false,
5653
- "type": "option"
5654
- },
5655
- "file": {
5656
- "description": "Read new content from file",
5657
- "name": "file",
5658
- "hasDynamicHelp": false,
5659
- "multiple": false,
5660
- "type": "option"
5661
- },
5662
- "perspective": {
5663
- "description": "Perspective (first-person or third-person)",
5664
- "name": "perspective",
5665
- "hasDynamicHelp": false,
5666
- "multiple": false,
5667
- "options": [
5668
- "first-person",
5669
- "third-person"
5670
- ],
5671
- "type": "option"
5672
5726
  }
5673
5727
  },
5674
5728
  "hasDynamicHelp": false,
5675
5729
  "hiddenAliases": [],
5676
- "id": "compile:doc:edit",
5730
+ "id": "face:tag:list",
5677
5731
  "pluginAlias": "faces-cli",
5678
5732
  "pluginName": "faces-cli",
5679
5733
  "pluginType": "core",
@@ -5683,21 +5737,26 @@
5683
5737
  "relativePath": [
5684
5738
  "dist",
5685
5739
  "commands",
5686
- "compile",
5687
- "doc",
5688
- "edit.js"
5740
+ "face",
5741
+ "tag",
5742
+ "list.js"
5689
5743
  ]
5690
5744
  },
5691
- "compile:doc:get": {
5745
+ "face:tag:remove": {
5692
5746
  "aliases": [],
5693
5747
  "args": {
5694
- "doc_id": {
5695
- "description": "Document ID",
5696
- "name": "doc_id",
5748
+ "alias": {
5749
+ "description": "Face alias",
5750
+ "name": "alias",
5751
+ "required": true
5752
+ },
5753
+ "tag": {
5754
+ "description": "Tag to remove",
5755
+ "name": "tag",
5697
5756
  "required": true
5698
5757
  }
5699
5758
  },
5700
- "description": "Get a document by ID",
5759
+ "description": "Remove a tag from a face",
5701
5760
  "flags": {
5702
5761
  "json": {
5703
5762
  "description": "Format output as json.",
@@ -5733,7 +5792,7 @@
5733
5792
  },
5734
5793
  "hasDynamicHelp": false,
5735
5794
  "hiddenAliases": [],
5736
- "id": "compile:doc:get",
5795
+ "id": "face:tag:remove",
5737
5796
  "pluginAlias": "faces-cli",
5738
5797
  "pluginName": "faces-cli",
5739
5798
  "pluginType": "core",
@@ -5743,21 +5802,21 @@
5743
5802
  "relativePath": [
5744
5803
  "dist",
5745
5804
  "commands",
5746
- "compile",
5747
- "doc",
5748
- "get.js"
5805
+ "face",
5806
+ "tag",
5807
+ "remove.js"
5749
5808
  ]
5750
5809
  },
5751
- "compile:doc": {
5810
+ "face:tag:set": {
5752
5811
  "aliases": [],
5753
5812
  "args": {
5754
- "face_id": {
5813
+ "alias": {
5755
5814
  "description": "Face alias",
5756
- "name": "face_id",
5815
+ "name": "alias",
5757
5816
  "required": true
5758
5817
  }
5759
5818
  },
5760
- "description": "Compile a document into a face (create → make in one step)",
5819
+ "description": "Replace all tags on a face",
5761
5820
  "flags": {
5762
5821
  "json": {
5763
5822
  "description": "Format output as json.",
@@ -5790,57 +5849,18 @@
5790
5849
  "multiple": false,
5791
5850
  "type": "option"
5792
5851
  },
5793
- "label": {
5794
- "description": "Document label/title",
5795
- "name": "label",
5796
- "hasDynamicHelp": false,
5797
- "multiple": false,
5798
- "type": "option"
5799
- },
5800
- "content": {
5801
- "description": "Inline text content",
5802
- "name": "content",
5803
- "hasDynamicHelp": false,
5804
- "multiple": false,
5805
- "type": "option"
5806
- },
5807
- "file": {
5808
- "description": "Read content from file",
5809
- "name": "file",
5810
- "hasDynamicHelp": false,
5811
- "multiple": false,
5812
- "type": "option"
5813
- },
5814
- "perspective": {
5815
- "description": "Perspective",
5816
- "name": "perspective",
5817
- "default": "first-person",
5818
- "hasDynamicHelp": false,
5819
- "multiple": false,
5820
- "options": [
5821
- "first-person",
5822
- "third-person"
5823
- ],
5824
- "type": "option"
5825
- },
5826
- "timeout": {
5827
- "description": "Compile timeout in seconds (default: 600)",
5828
- "name": "timeout",
5829
- "default": 600,
5852
+ "tag": {
5853
+ "description": "Tag to set (repeatable, replaces all)",
5854
+ "name": "tag",
5855
+ "required": true,
5830
5856
  "hasDynamicHelp": false,
5831
- "multiple": false,
5857
+ "multiple": true,
5832
5858
  "type": "option"
5833
- },
5834
- "no-wait": {
5835
- "description": "Create and trigger compilation, then return immediately without polling.",
5836
- "name": "no-wait",
5837
- "allowNo": false,
5838
- "type": "boolean"
5839
5859
  }
5840
5860
  },
5841
5861
  "hasDynamicHelp": false,
5842
5862
  "hiddenAliases": [],
5843
- "id": "compile:doc",
5863
+ "id": "face:tag:set",
5844
5864
  "pluginAlias": "faces-cli",
5845
5865
  "pluginName": "faces-cli",
5846
5866
  "pluginType": "core",
@@ -5850,21 +5870,21 @@
5850
5870
  "relativePath": [
5851
5871
  "dist",
5852
5872
  "commands",
5853
- "compile",
5854
- "doc",
5855
- "index.js"
5873
+ "face",
5874
+ "tag",
5875
+ "set.js"
5856
5876
  ]
5857
5877
  },
5858
- "compile:doc:list": {
5878
+ "team:tag:add": {
5859
5879
  "aliases": [],
5860
5880
  "args": {
5861
- "face_id": {
5862
- "description": "Face alias",
5863
- "name": "face_id",
5881
+ "team_id": {
5882
+ "description": "Team ID",
5883
+ "name": "team_id",
5864
5884
  "required": true
5865
5885
  }
5866
5886
  },
5867
- "description": "List documents for a face",
5887
+ "description": "Add tags to a team (appends, idempotent)",
5868
5888
  "flags": {
5869
5889
  "json": {
5870
5890
  "description": "Format output as json.",
@@ -5896,11 +5916,19 @@
5896
5916
  "hasDynamicHelp": false,
5897
5917
  "multiple": false,
5898
5918
  "type": "option"
5919
+ },
5920
+ "tag": {
5921
+ "description": "Tag to add (repeatable)",
5922
+ "name": "tag",
5923
+ "required": true,
5924
+ "hasDynamicHelp": false,
5925
+ "multiple": true,
5926
+ "type": "option"
5899
5927
  }
5900
5928
  },
5901
5929
  "hasDynamicHelp": false,
5902
5930
  "hiddenAliases": [],
5903
- "id": "compile:doc:list",
5931
+ "id": "team:tag:add",
5904
5932
  "pluginAlias": "faces-cli",
5905
5933
  "pluginName": "faces-cli",
5906
5934
  "pluginType": "core",
@@ -5910,21 +5938,21 @@
5910
5938
  "relativePath": [
5911
5939
  "dist",
5912
5940
  "commands",
5913
- "compile",
5914
- "doc",
5915
- "list.js"
5941
+ "team",
5942
+ "tag",
5943
+ "add.js"
5916
5944
  ]
5917
5945
  },
5918
- "compile:doc:make": {
5946
+ "team:tag:list": {
5919
5947
  "aliases": [],
5920
5948
  "args": {
5921
- "doc_id": {
5922
- "description": "Document ID",
5923
- "name": "doc_id",
5949
+ "team_id": {
5950
+ "description": "Team ID",
5951
+ "name": "team_id",
5924
5952
  "required": true
5925
5953
  }
5926
5954
  },
5927
- "description": "Compile an existing document (prepare + sync in one step)",
5955
+ "description": "List tags on a team",
5928
5956
  "flags": {
5929
5957
  "json": {
5930
5958
  "description": "Format output as json.",
@@ -5956,25 +5984,11 @@
5956
5984
  "hasDynamicHelp": false,
5957
5985
  "multiple": false,
5958
5986
  "type": "option"
5959
- },
5960
- "timeout": {
5961
- "description": "Compile timeout in seconds (default: 600)",
5962
- "name": "timeout",
5963
- "default": 600,
5964
- "hasDynamicHelp": false,
5965
- "multiple": false,
5966
- "type": "option"
5967
- },
5968
- "no-wait": {
5969
- "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
5970
- "name": "no-wait",
5971
- "allowNo": false,
5972
- "type": "boolean"
5973
5987
  }
5974
5988
  },
5975
5989
  "hasDynamicHelp": false,
5976
5990
  "hiddenAliases": [],
5977
- "id": "compile:doc:make",
5991
+ "id": "team:tag:list",
5978
5992
  "pluginAlias": "faces-cli",
5979
5993
  "pluginName": "faces-cli",
5980
5994
  "pluginType": "core",
@@ -5984,21 +5998,26 @@
5984
5998
  "relativePath": [
5985
5999
  "dist",
5986
6000
  "commands",
5987
- "compile",
5988
- "doc",
5989
- "make.js"
6001
+ "team",
6002
+ "tag",
6003
+ "list.js"
5990
6004
  ]
5991
6005
  },
5992
- "compile:doc:pause": {
6006
+ "team:tag:remove": {
5993
6007
  "aliases": [],
5994
6008
  "args": {
5995
- "doc_id": {
5996
- "description": "Document ID",
5997
- "name": "doc_id",
6009
+ "team_id": {
6010
+ "description": "Team ID",
6011
+ "name": "team_id",
6012
+ "required": true
6013
+ },
6014
+ "tag": {
6015
+ "description": "Tag to remove",
6016
+ "name": "tag",
5998
6017
  "required": true
5999
6018
  }
6000
6019
  },
6001
- "description": "Ask a running document compilation to stop (preserves progress, resume with make). The compile stops at the next chunk boundary; this waits for it unless --no-wait.",
6020
+ "description": "Remove a tag from a team",
6002
6021
  "flags": {
6003
6022
  "json": {
6004
6023
  "description": "Format output as json.",
@@ -6030,25 +6049,11 @@
6030
6049
  "hasDynamicHelp": false,
6031
6050
  "multiple": false,
6032
6051
  "type": "option"
6033
- },
6034
- "no-wait": {
6035
- "description": "Return as soon as the pause is accepted, without waiting for the compile to stop.",
6036
- "name": "no-wait",
6037
- "allowNo": false,
6038
- "type": "boolean"
6039
- },
6040
- "timeout": {
6041
- "description": "Seconds to wait for the compile to stop (default: 60)",
6042
- "name": "timeout",
6043
- "default": 60,
6044
- "hasDynamicHelp": false,
6045
- "multiple": false,
6046
- "type": "option"
6047
6052
  }
6048
6053
  },
6049
6054
  "hasDynamicHelp": false,
6050
6055
  "hiddenAliases": [],
6051
- "id": "compile:doc:pause",
6056
+ "id": "team:tag:remove",
6052
6057
  "pluginAlias": "faces-cli",
6053
6058
  "pluginName": "faces-cli",
6054
6059
  "pluginType": "core",
@@ -6058,21 +6063,21 @@
6058
6063
  "relativePath": [
6059
6064
  "dist",
6060
6065
  "commands",
6061
- "compile",
6062
- "doc",
6063
- "pause.js"
6066
+ "team",
6067
+ "tag",
6068
+ "remove.js"
6064
6069
  ]
6065
6070
  },
6066
- "compile:doc:reset": {
6071
+ "team:tag:set": {
6067
6072
  "aliases": [],
6068
6073
  "args": {
6069
- "doc_id": {
6070
- "description": "Document ID",
6071
- "name": "doc_id",
6074
+ "team_id": {
6075
+ "description": "Team ID",
6076
+ "name": "team_id",
6072
6077
  "required": true
6073
6078
  }
6074
6079
  },
6075
- "description": "Reset document compilation progress (wipe extraction, keep content)",
6080
+ "description": "Replace all tags on a team",
6076
6081
  "flags": {
6077
6082
  "json": {
6078
6083
  "description": "Format output as json.",
@@ -6105,16 +6110,18 @@
6105
6110
  "multiple": false,
6106
6111
  "type": "option"
6107
6112
  },
6108
- "yes": {
6109
- "description": "Skip confirmation",
6110
- "name": "yes",
6111
- "allowNo": false,
6112
- "type": "boolean"
6113
+ "tag": {
6114
+ "description": "Tag to set (repeatable, replaces all)",
6115
+ "name": "tag",
6116
+ "required": true,
6117
+ "hasDynamicHelp": false,
6118
+ "multiple": true,
6119
+ "type": "option"
6113
6120
  }
6114
6121
  },
6115
6122
  "hasDynamicHelp": false,
6116
6123
  "hiddenAliases": [],
6117
- "id": "compile:doc:reset",
6124
+ "id": "team:tag:set",
6118
6125
  "pluginAlias": "faces-cli",
6119
6126
  "pluginName": "faces-cli",
6120
6127
  "pluginType": "core",
@@ -6124,11 +6131,11 @@
6124
6131
  "relativePath": [
6125
6132
  "dist",
6126
6133
  "commands",
6127
- "compile",
6128
- "doc",
6129
- "reset.js"
6134
+ "team",
6135
+ "tag",
6136
+ "set.js"
6130
6137
  ]
6131
6138
  }
6132
6139
  },
6133
- "version": "1.7.8"
6140
+ "version": "1.7.9"
6134
6141
  }