faces-cli 1.5.0 → 1.5.1

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.
@@ -53,10 +53,23 @@
53
53
  "state.js"
54
54
  ]
55
55
  },
56
- "billing:balance": {
56
+ "auth:connect": {
57
57
  "aliases": [],
58
- "args": {},
59
- "description": "Show credit balance and payment method status",
58
+ "args": {
59
+ "provider": {
60
+ "description": "OAuth provider to connect",
61
+ "name": "provider",
62
+ "options": [
63
+ "openai"
64
+ ],
65
+ "required": true
66
+ }
67
+ },
68
+ "description": "Connect an OAuth provider account to Faces (e.g. ChatGPT Plus/Pro)",
69
+ "examples": [
70
+ "<%= config.bin %> auth connect openai",
71
+ "<%= config.bin %> auth connect openai --manual"
72
+ ],
60
73
  "flags": {
61
74
  "json": {
62
75
  "description": "Format output as json.",
@@ -88,11 +101,17 @@
88
101
  "hasDynamicHelp": false,
89
102
  "multiple": false,
90
103
  "type": "option"
104
+ },
105
+ "manual": {
106
+ "description": "Manual mode for headless environments: prints the authorize URL and prompts you to paste the callback URL after approving in any browser.",
107
+ "name": "manual",
108
+ "allowNo": false,
109
+ "type": "boolean"
91
110
  }
92
111
  },
93
112
  "hasDynamicHelp": false,
94
113
  "hiddenAliases": [],
95
- "id": "billing:balance",
114
+ "id": "auth:connect",
96
115
  "pluginAlias": "faces-cli",
97
116
  "pluginName": "faces-cli",
98
117
  "pluginType": "core",
@@ -102,14 +121,18 @@
102
121
  "relativePath": [
103
122
  "dist",
104
123
  "commands",
105
- "billing",
106
- "balance.js"
124
+ "auth",
125
+ "connect.js"
107
126
  ]
108
127
  },
109
- "billing:card-setup": {
128
+ "auth:connections": {
110
129
  "aliases": [],
111
130
  "args": {},
112
- "description": "Get a Stripe card setup URL to save a payment method",
131
+ "description": "List connected OAuth provider accounts",
132
+ "examples": [
133
+ "<%= config.bin %> auth connections",
134
+ "<%= config.bin %> auth connections --json"
135
+ ],
113
136
  "flags": {
114
137
  "json": {
115
138
  "description": "Format output as json.",
@@ -145,7 +168,7 @@
145
168
  },
146
169
  "hasDynamicHelp": false,
147
170
  "hiddenAliases": [],
148
- "id": "billing:card-setup",
171
+ "id": "auth:connections",
149
172
  "pluginAlias": "faces-cli",
150
173
  "pluginName": "faces-cli",
151
174
  "pluginType": "core",
@@ -155,14 +178,26 @@
155
178
  "relativePath": [
156
179
  "dist",
157
180
  "commands",
158
- "billing",
159
- "card-setup.js"
181
+ "auth",
182
+ "connections.js"
160
183
  ]
161
184
  },
162
- "billing:checkout": {
185
+ "auth:disconnect": {
163
186
  "aliases": [],
164
- "args": {},
165
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
187
+ "args": {
188
+ "provider": {
189
+ "description": "OAuth provider to disconnect",
190
+ "name": "provider",
191
+ "options": [
192
+ "openai"
193
+ ],
194
+ "required": true
195
+ }
196
+ },
197
+ "description": "Disconnect a linked OAuth provider account",
198
+ "examples": [
199
+ "<%= config.bin %> auth disconnect openai"
200
+ ],
166
201
  "flags": {
167
202
  "json": {
168
203
  "description": "Format output as json.",
@@ -194,22 +229,11 @@
194
229
  "hasDynamicHelp": false,
195
230
  "multiple": false,
196
231
  "type": "option"
197
- },
198
- "plan": {
199
- "description": "Plan to subscribe to",
200
- "name": "plan",
201
- "default": "connect",
202
- "hasDynamicHelp": false,
203
- "multiple": false,
204
- "options": [
205
- "connect"
206
- ],
207
- "type": "option"
208
232
  }
209
233
  },
210
234
  "hasDynamicHelp": false,
211
235
  "hiddenAliases": [],
212
- "id": "billing:checkout",
236
+ "id": "auth:disconnect",
213
237
  "pluginAlias": "faces-cli",
214
238
  "pluginName": "faces-cli",
215
239
  "pluginType": "core",
@@ -219,14 +243,14 @@
219
243
  "relativePath": [
220
244
  "dist",
221
245
  "commands",
222
- "billing",
223
- "checkout.js"
246
+ "auth",
247
+ "disconnect.js"
224
248
  ]
225
249
  },
226
- "billing:llm-costs": {
250
+ "auth:login": {
227
251
  "aliases": [],
228
252
  "args": {},
229
- "description": "List available LLMs and their per-token costs",
253
+ "description": "Login and save JWT credentials",
230
254
  "flags": {
231
255
  "json": {
232
256
  "description": "Format output as json.",
@@ -259,9 +283,18 @@
259
283
  "multiple": false,
260
284
  "type": "option"
261
285
  },
262
- "provider": {
263
- "description": "Filter by provider (e.g. openai, anthropic)",
264
- "name": "provider",
286
+ "email": {
287
+ "description": "Account email",
288
+ "name": "email",
289
+ "required": true,
290
+ "hasDynamicHelp": false,
291
+ "multiple": false,
292
+ "type": "option"
293
+ },
294
+ "password": {
295
+ "description": "Account password",
296
+ "name": "password",
297
+ "required": true,
265
298
  "hasDynamicHelp": false,
266
299
  "multiple": false,
267
300
  "type": "option"
@@ -269,7 +302,7 @@
269
302
  },
270
303
  "hasDynamicHelp": false,
271
304
  "hiddenAliases": [],
272
- "id": "billing:llm-costs",
305
+ "id": "auth:login",
273
306
  "pluginAlias": "faces-cli",
274
307
  "pluginName": "faces-cli",
275
308
  "pluginType": "core",
@@ -279,14 +312,14 @@
279
312
  "relativePath": [
280
313
  "dist",
281
314
  "commands",
282
- "billing",
283
- "llm-costs.js"
315
+ "auth",
316
+ "login.js"
284
317
  ]
285
318
  },
286
- "billing:quota": {
319
+ "auth:logout": {
287
320
  "aliases": [],
288
321
  "args": {},
289
- "description": "Show compile token quota and per-face stats",
322
+ "description": "Clear saved credentials",
290
323
  "flags": {
291
324
  "json": {
292
325
  "description": "Format output as json.",
@@ -322,7 +355,7 @@
322
355
  },
323
356
  "hasDynamicHelp": false,
324
357
  "hiddenAliases": [],
325
- "id": "billing:quota",
358
+ "id": "auth:logout",
326
359
  "pluginAlias": "faces-cli",
327
360
  "pluginName": "faces-cli",
328
361
  "pluginType": "core",
@@ -332,14 +365,14 @@
332
365
  "relativePath": [
333
366
  "dist",
334
367
  "commands",
335
- "billing",
336
- "quota.js"
368
+ "auth",
369
+ "logout.js"
337
370
  ]
338
371
  },
339
- "billing:subscription": {
372
+ "auth:refresh": {
340
373
  "aliases": [],
341
374
  "args": {},
342
- "description": "Show current plan, face count, and renewal date",
375
+ "description": "Exchange current JWT for a fresh one",
343
376
  "flags": {
344
377
  "json": {
345
378
  "description": "Format output as json.",
@@ -375,7 +408,7 @@
375
408
  },
376
409
  "hasDynamicHelp": false,
377
410
  "hiddenAliases": [],
378
- "id": "billing:subscription",
411
+ "id": "auth:refresh",
379
412
  "pluginAlias": "faces-cli",
380
413
  "pluginName": "faces-cli",
381
414
  "pluginType": "core",
@@ -385,14 +418,14 @@
385
418
  "relativePath": [
386
419
  "dist",
387
420
  "commands",
388
- "billing",
389
- "subscription.js"
421
+ "auth",
422
+ "refresh.js"
390
423
  ]
391
424
  },
392
- "billing:topup": {
425
+ "auth:register": {
393
426
  "aliases": [],
394
427
  "args": {},
395
- "description": "Top up credit balance using saved payment method",
428
+ "description": "Create a new Faces account",
396
429
  "flags": {
397
430
  "json": {
398
431
  "description": "Format output as json.",
@@ -425,17 +458,40 @@
425
458
  "multiple": false,
426
459
  "type": "option"
427
460
  },
428
- "amount": {
429
- "description": "Top-up amount in USD (min $1)",
430
- "name": "amount",
461
+ "email": {
462
+ "description": "Email address",
463
+ "name": "email",
431
464
  "required": true,
432
465
  "hasDynamicHelp": false,
433
466
  "multiple": false,
434
467
  "type": "option"
435
468
  },
436
- "payment-ref": {
437
- "description": "Payment reference (admin/test path)",
438
- "name": "payment-ref",
469
+ "password": {
470
+ "description": "Password",
471
+ "name": "password",
472
+ "required": true,
473
+ "hasDynamicHelp": false,
474
+ "multiple": false,
475
+ "type": "option"
476
+ },
477
+ "name": {
478
+ "description": "Display name (defaults to username)",
479
+ "name": "name",
480
+ "hasDynamicHelp": false,
481
+ "multiple": false,
482
+ "type": "option"
483
+ },
484
+ "username": {
485
+ "description": "Username (lowercase, dashes, numbers)",
486
+ "name": "username",
487
+ "required": true,
488
+ "hasDynamicHelp": false,
489
+ "multiple": false,
490
+ "type": "option"
491
+ },
492
+ "invite-key": {
493
+ "description": "Invite key (if required)",
494
+ "name": "invite-key",
439
495
  "hasDynamicHelp": false,
440
496
  "multiple": false,
441
497
  "type": "option"
@@ -443,7 +499,7 @@
443
499
  },
444
500
  "hasDynamicHelp": false,
445
501
  "hiddenAliases": [],
446
- "id": "billing:topup",
502
+ "id": "auth:register",
447
503
  "pluginAlias": "faces-cli",
448
504
  "pluginName": "faces-cli",
449
505
  "pluginType": "core",
@@ -453,14 +509,14 @@
453
509
  "relativePath": [
454
510
  "dist",
455
511
  "commands",
456
- "billing",
457
- "topup.js"
512
+ "auth",
513
+ "register.js"
458
514
  ]
459
515
  },
460
- "billing:usage": {
516
+ "auth:whoami": {
461
517
  "aliases": [],
462
518
  "args": {},
463
- "description": "Aggregated usage analytics",
519
+ "description": "Print current user profile",
464
520
  "flags": {
465
521
  "json": {
466
522
  "description": "Format output as json.",
@@ -492,38 +548,11 @@
492
548
  "hasDynamicHelp": false,
493
549
  "multiple": false,
494
550
  "type": "option"
495
- },
496
- "group-by": {
497
- "description": "Group results",
498
- "name": "group-by",
499
- "hasDynamicHelp": false,
500
- "multiple": false,
501
- "options": [
502
- "api_key",
503
- "model",
504
- "llm",
505
- "date"
506
- ],
507
- "type": "option"
508
- },
509
- "from": {
510
- "description": "Start date (YYYY-MM-DD)",
511
- "name": "from",
512
- "hasDynamicHelp": false,
513
- "multiple": false,
514
- "type": "option"
515
- },
516
- "to": {
517
- "description": "End date (YYYY-MM-DD)",
518
- "name": "to",
519
- "hasDynamicHelp": false,
520
- "multiple": false,
521
- "type": "option"
522
551
  }
523
552
  },
524
553
  "hasDynamicHelp": false,
525
554
  "hiddenAliases": [],
526
- "id": "billing:usage",
555
+ "id": "auth:whoami",
527
556
  "pluginAlias": "faces-cli",
528
557
  "pluginName": "faces-cli",
529
558
  "pluginType": "core",
@@ -533,27 +562,14 @@
533
562
  "relativePath": [
534
563
  "dist",
535
564
  "commands",
536
- "billing",
537
- "usage.js"
565
+ "auth",
566
+ "whoami.js"
538
567
  ]
539
568
  },
540
- "auth:connect": {
569
+ "billing:balance": {
541
570
  "aliases": [],
542
- "args": {
543
- "provider": {
544
- "description": "OAuth provider to connect",
545
- "name": "provider",
546
- "options": [
547
- "openai"
548
- ],
549
- "required": true
550
- }
551
- },
552
- "description": "Connect an OAuth provider account to Faces (e.g. ChatGPT Plus/Pro)",
553
- "examples": [
554
- "<%= config.bin %> auth connect openai",
555
- "<%= config.bin %> auth connect openai --manual"
556
- ],
571
+ "args": {},
572
+ "description": "Show credit balance and payment method status",
557
573
  "flags": {
558
574
  "json": {
559
575
  "description": "Format output as json.",
@@ -585,17 +601,11 @@
585
601
  "hasDynamicHelp": false,
586
602
  "multiple": false,
587
603
  "type": "option"
588
- },
589
- "manual": {
590
- "description": "Manual mode for headless environments: prints the authorize URL and prompts you to paste the callback URL after approving in any browser.",
591
- "name": "manual",
592
- "allowNo": false,
593
- "type": "boolean"
594
604
  }
595
605
  },
596
606
  "hasDynamicHelp": false,
597
607
  "hiddenAliases": [],
598
- "id": "auth:connect",
608
+ "id": "billing:balance",
599
609
  "pluginAlias": "faces-cli",
600
610
  "pluginName": "faces-cli",
601
611
  "pluginType": "core",
@@ -605,18 +615,14 @@
605
615
  "relativePath": [
606
616
  "dist",
607
617
  "commands",
608
- "auth",
609
- "connect.js"
618
+ "billing",
619
+ "balance.js"
610
620
  ]
611
621
  },
612
- "auth:connections": {
622
+ "billing:card-setup": {
613
623
  "aliases": [],
614
624
  "args": {},
615
- "description": "List connected OAuth provider accounts",
616
- "examples": [
617
- "<%= config.bin %> auth connections",
618
- "<%= config.bin %> auth connections --json"
619
- ],
625
+ "description": "Get a Stripe card setup URL to save a payment method",
620
626
  "flags": {
621
627
  "json": {
622
628
  "description": "Format output as json.",
@@ -652,7 +658,7 @@
652
658
  },
653
659
  "hasDynamicHelp": false,
654
660
  "hiddenAliases": [],
655
- "id": "auth:connections",
661
+ "id": "billing:card-setup",
656
662
  "pluginAlias": "faces-cli",
657
663
  "pluginName": "faces-cli",
658
664
  "pluginType": "core",
@@ -662,26 +668,14 @@
662
668
  "relativePath": [
663
669
  "dist",
664
670
  "commands",
665
- "auth",
666
- "connections.js"
671
+ "billing",
672
+ "card-setup.js"
667
673
  ]
668
674
  },
669
- "auth:disconnect": {
675
+ "billing:checkout": {
670
676
  "aliases": [],
671
- "args": {
672
- "provider": {
673
- "description": "OAuth provider to disconnect",
674
- "name": "provider",
675
- "options": [
676
- "openai"
677
- ],
678
- "required": true
679
- }
680
- },
681
- "description": "Disconnect a linked OAuth provider account",
682
- "examples": [
683
- "<%= config.bin %> auth disconnect openai"
684
- ],
677
+ "args": {},
678
+ "description": "Get a Stripe checkout URL to upgrade your subscription plan",
685
679
  "flags": {
686
680
  "json": {
687
681
  "description": "Format output as json.",
@@ -713,11 +707,22 @@
713
707
  "hasDynamicHelp": false,
714
708
  "multiple": false,
715
709
  "type": "option"
710
+ },
711
+ "plan": {
712
+ "description": "Plan to subscribe to",
713
+ "name": "plan",
714
+ "default": "connect",
715
+ "hasDynamicHelp": false,
716
+ "multiple": false,
717
+ "options": [
718
+ "connect"
719
+ ],
720
+ "type": "option"
716
721
  }
717
722
  },
718
723
  "hasDynamicHelp": false,
719
724
  "hiddenAliases": [],
720
- "id": "auth:disconnect",
725
+ "id": "billing:checkout",
721
726
  "pluginAlias": "faces-cli",
722
727
  "pluginName": "faces-cli",
723
728
  "pluginType": "core",
@@ -727,14 +732,14 @@
727
732
  "relativePath": [
728
733
  "dist",
729
734
  "commands",
730
- "auth",
731
- "disconnect.js"
735
+ "billing",
736
+ "checkout.js"
732
737
  ]
733
738
  },
734
- "auth:login": {
739
+ "billing:llm-costs": {
735
740
  "aliases": [],
736
741
  "args": {},
737
- "description": "Login and save JWT credentials",
742
+ "description": "List available LLMs and their per-token costs",
738
743
  "flags": {
739
744
  "json": {
740
745
  "description": "Format output as json.",
@@ -767,18 +772,9 @@
767
772
  "multiple": false,
768
773
  "type": "option"
769
774
  },
770
- "email": {
771
- "description": "Account email",
772
- "name": "email",
773
- "required": true,
774
- "hasDynamicHelp": false,
775
- "multiple": false,
776
- "type": "option"
777
- },
778
- "password": {
779
- "description": "Account password",
780
- "name": "password",
781
- "required": true,
775
+ "provider": {
776
+ "description": "Filter by provider (e.g. openai, anthropic)",
777
+ "name": "provider",
782
778
  "hasDynamicHelp": false,
783
779
  "multiple": false,
784
780
  "type": "option"
@@ -786,7 +782,7 @@
786
782
  },
787
783
  "hasDynamicHelp": false,
788
784
  "hiddenAliases": [],
789
- "id": "auth:login",
785
+ "id": "billing:llm-costs",
790
786
  "pluginAlias": "faces-cli",
791
787
  "pluginName": "faces-cli",
792
788
  "pluginType": "core",
@@ -796,14 +792,14 @@
796
792
  "relativePath": [
797
793
  "dist",
798
794
  "commands",
799
- "auth",
800
- "login.js"
795
+ "billing",
796
+ "llm-costs.js"
801
797
  ]
802
798
  },
803
- "auth:logout": {
799
+ "billing:quota": {
804
800
  "aliases": [],
805
801
  "args": {},
806
- "description": "Clear saved credentials",
802
+ "description": "Show compile token quota and per-face stats",
807
803
  "flags": {
808
804
  "json": {
809
805
  "description": "Format output as json.",
@@ -839,7 +835,7 @@
839
835
  },
840
836
  "hasDynamicHelp": false,
841
837
  "hiddenAliases": [],
842
- "id": "auth:logout",
838
+ "id": "billing:quota",
843
839
  "pluginAlias": "faces-cli",
844
840
  "pluginName": "faces-cli",
845
841
  "pluginType": "core",
@@ -849,14 +845,14 @@
849
845
  "relativePath": [
850
846
  "dist",
851
847
  "commands",
852
- "auth",
853
- "logout.js"
848
+ "billing",
849
+ "quota.js"
854
850
  ]
855
851
  },
856
- "auth:refresh": {
852
+ "billing:subscription": {
857
853
  "aliases": [],
858
854
  "args": {},
859
- "description": "Exchange current JWT for a fresh one",
855
+ "description": "Show current plan, face count, and renewal date",
860
856
  "flags": {
861
857
  "json": {
862
858
  "description": "Format output as json.",
@@ -892,7 +888,7 @@
892
888
  },
893
889
  "hasDynamicHelp": false,
894
890
  "hiddenAliases": [],
895
- "id": "auth:refresh",
891
+ "id": "billing:subscription",
896
892
  "pluginAlias": "faces-cli",
897
893
  "pluginName": "faces-cli",
898
894
  "pluginType": "core",
@@ -902,14 +898,14 @@
902
898
  "relativePath": [
903
899
  "dist",
904
900
  "commands",
905
- "auth",
906
- "refresh.js"
901
+ "billing",
902
+ "subscription.js"
907
903
  ]
908
904
  },
909
- "auth:register": {
905
+ "billing:topup": {
910
906
  "aliases": [],
911
907
  "args": {},
912
- "description": "Create a new Faces account",
908
+ "description": "Top up credit balance using saved payment method",
913
909
  "flags": {
914
910
  "json": {
915
911
  "description": "Format output as json.",
@@ -942,40 +938,17 @@
942
938
  "multiple": false,
943
939
  "type": "option"
944
940
  },
945
- "email": {
946
- "description": "Email address",
947
- "name": "email",
948
- "required": true,
949
- "hasDynamicHelp": false,
950
- "multiple": false,
951
- "type": "option"
952
- },
953
- "password": {
954
- "description": "Password",
955
- "name": "password",
956
- "required": true,
957
- "hasDynamicHelp": false,
958
- "multiple": false,
959
- "type": "option"
960
- },
961
- "name": {
962
- "description": "Display name (defaults to username)",
963
- "name": "name",
964
- "hasDynamicHelp": false,
965
- "multiple": false,
966
- "type": "option"
967
- },
968
- "username": {
969
- "description": "Username (lowercase, dashes, numbers)",
970
- "name": "username",
941
+ "amount": {
942
+ "description": "Top-up amount in USD (min $1)",
943
+ "name": "amount",
971
944
  "required": true,
972
945
  "hasDynamicHelp": false,
973
946
  "multiple": false,
974
947
  "type": "option"
975
948
  },
976
- "invite-key": {
977
- "description": "Invite key (if required)",
978
- "name": "invite-key",
949
+ "payment-ref": {
950
+ "description": "Payment reference (admin/test path)",
951
+ "name": "payment-ref",
979
952
  "hasDynamicHelp": false,
980
953
  "multiple": false,
981
954
  "type": "option"
@@ -983,7 +956,7 @@
983
956
  },
984
957
  "hasDynamicHelp": false,
985
958
  "hiddenAliases": [],
986
- "id": "auth:register",
959
+ "id": "billing:topup",
987
960
  "pluginAlias": "faces-cli",
988
961
  "pluginName": "faces-cli",
989
962
  "pluginType": "core",
@@ -993,14 +966,14 @@
993
966
  "relativePath": [
994
967
  "dist",
995
968
  "commands",
996
- "auth",
997
- "register.js"
969
+ "billing",
970
+ "topup.js"
998
971
  ]
999
972
  },
1000
- "auth:whoami": {
973
+ "billing:usage": {
1001
974
  "aliases": [],
1002
975
  "args": {},
1003
- "description": "Print current user profile",
976
+ "description": "Aggregated usage analytics",
1004
977
  "flags": {
1005
978
  "json": {
1006
979
  "description": "Format output as json.",
@@ -1032,11 +1005,38 @@
1032
1005
  "hasDynamicHelp": false,
1033
1006
  "multiple": false,
1034
1007
  "type": "option"
1008
+ },
1009
+ "group-by": {
1010
+ "description": "Group results",
1011
+ "name": "group-by",
1012
+ "hasDynamicHelp": false,
1013
+ "multiple": false,
1014
+ "options": [
1015
+ "api_key",
1016
+ "model",
1017
+ "llm",
1018
+ "date"
1019
+ ],
1020
+ "type": "option"
1021
+ },
1022
+ "from": {
1023
+ "description": "Start date (YYYY-MM-DD)",
1024
+ "name": "from",
1025
+ "hasDynamicHelp": false,
1026
+ "multiple": false,
1027
+ "type": "option"
1028
+ },
1029
+ "to": {
1030
+ "description": "End date (YYYY-MM-DD)",
1031
+ "name": "to",
1032
+ "hasDynamicHelp": false,
1033
+ "multiple": false,
1034
+ "type": "option"
1035
1035
  }
1036
1036
  },
1037
1037
  "hasDynamicHelp": false,
1038
1038
  "hiddenAliases": [],
1039
- "id": "auth:whoami",
1039
+ "id": "billing:usage",
1040
1040
  "pluginAlias": "faces-cli",
1041
1041
  "pluginName": "faces-cli",
1042
1042
  "pluginType": "core",
@@ -1046,8 +1046,8 @@
1046
1046
  "relativePath": [
1047
1047
  "dist",
1048
1048
  "commands",
1049
- "auth",
1050
- "whoami.js"
1049
+ "billing",
1050
+ "usage.js"
1051
1051
  ]
1052
1052
  },
1053
1053
  "catalog:doctor": {
@@ -1825,10 +1825,10 @@
1825
1825
  "show.js"
1826
1826
  ]
1827
1827
  },
1828
- "keys:create": {
1828
+ "face:create": {
1829
1829
  "aliases": [],
1830
1830
  "args": {},
1831
- "description": "Create a new API key (JWT required)",
1831
+ "description": "Create a new face",
1832
1832
  "flags": {
1833
1833
  "json": {
1834
1834
  "description": "Format output as json.",
@@ -1862,37 +1862,52 @@
1862
1862
  "type": "option"
1863
1863
  },
1864
1864
  "name": {
1865
- "description": "Key name/label",
1865
+ "description": "Display name",
1866
1866
  "name": "name",
1867
1867
  "required": true,
1868
1868
  "hasDynamicHelp": false,
1869
1869
  "multiple": false,
1870
1870
  "type": "option"
1871
1871
  },
1872
- "expires-days": {
1873
- "description": "Expiry in days (omit for no expiry)",
1874
- "name": "expires-days",
1872
+ "alias": {
1873
+ "description": "Unique alias slug",
1874
+ "name": "alias",
1875
+ "required": true,
1875
1876
  "hasDynamicHelp": false,
1876
1877
  "multiple": false,
1877
1878
  "type": "option"
1878
1879
  },
1879
- "budget": {
1880
- "description": "Spend budget in USD",
1881
- "name": "budget",
1880
+ "description": {
1881
+ "description": "Description for local catalog",
1882
+ "name": "description",
1882
1883
  "hasDynamicHelp": false,
1883
1884
  "multiple": false,
1884
1885
  "type": "option"
1885
1886
  },
1886
- "face": {
1887
- "description": "Allowed face alias (repeatable)",
1888
- "name": "face",
1887
+ "default-model": {
1888
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1889
+ "name": "default-model",
1890
+ "hasDynamicHelp": false,
1891
+ "multiple": false,
1892
+ "type": "option"
1893
+ },
1894
+ "formula": {
1895
+ "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
1896
+ "name": "formula",
1897
+ "hasDynamicHelp": false,
1898
+ "multiple": false,
1899
+ "type": "option"
1900
+ },
1901
+ "attr": {
1902
+ "description": "Attribute KEY=VALUE (repeatable)",
1903
+ "name": "attr",
1889
1904
  "hasDynamicHelp": false,
1890
1905
  "multiple": true,
1891
1906
  "type": "option"
1892
1907
  },
1893
- "model": {
1894
- "description": "Allowed model name (repeatable)",
1895
- "name": "model",
1908
+ "tool": {
1909
+ "description": "Tool name to enable (repeatable)",
1910
+ "name": "tool",
1896
1911
  "hasDynamicHelp": false,
1897
1912
  "multiple": true,
1898
1913
  "type": "option"
@@ -1900,7 +1915,7 @@
1900
1915
  },
1901
1916
  "hasDynamicHelp": false,
1902
1917
  "hiddenAliases": [],
1903
- "id": "keys:create",
1918
+ "id": "face:create",
1904
1919
  "pluginAlias": "faces-cli",
1905
1920
  "pluginName": "faces-cli",
1906
1921
  "pluginType": "core",
@@ -1910,14 +1925,20 @@
1910
1925
  "relativePath": [
1911
1926
  "dist",
1912
1927
  "commands",
1913
- "keys",
1928
+ "face",
1914
1929
  "create.js"
1915
1930
  ]
1916
1931
  },
1917
- "keys:list": {
1932
+ "face:delete": {
1918
1933
  "aliases": [],
1919
- "args": {},
1920
- "description": "List all API keys (JWT required)",
1934
+ "args": {
1935
+ "face_id": {
1936
+ "description": "Face alias",
1937
+ "name": "face_id",
1938
+ "required": true
1939
+ }
1940
+ },
1941
+ "description": "Delete a face permanently",
1921
1942
  "flags": {
1922
1943
  "json": {
1923
1944
  "description": "Format output as json.",
@@ -1949,11 +1970,17 @@
1949
1970
  "hasDynamicHelp": false,
1950
1971
  "multiple": false,
1951
1972
  "type": "option"
1973
+ },
1974
+ "yes": {
1975
+ "description": "Skip confirmation",
1976
+ "name": "yes",
1977
+ "allowNo": false,
1978
+ "type": "boolean"
1952
1979
  }
1953
1980
  },
1954
1981
  "hasDynamicHelp": false,
1955
1982
  "hiddenAliases": [],
1956
- "id": "keys:list",
1983
+ "id": "face:delete",
1957
1984
  "pluginAlias": "faces-cli",
1958
1985
  "pluginName": "faces-cli",
1959
1986
  "pluginType": "core",
@@ -1963,20 +1990,14 @@
1963
1990
  "relativePath": [
1964
1991
  "dist",
1965
1992
  "commands",
1966
- "keys",
1967
- "list.js"
1993
+ "face",
1994
+ "delete.js"
1968
1995
  ]
1969
1996
  },
1970
- "keys:revoke": {
1997
+ "face:diff": {
1971
1998
  "aliases": [],
1972
- "args": {
1973
- "key_id": {
1974
- "description": "Key ID",
1975
- "name": "key_id",
1976
- "required": true
1977
- }
1978
- },
1979
- "description": "Revoke an API key (JWT required)",
1999
+ "args": {},
2000
+ "description": "Compare owned faces pairwise across all centroid components",
1980
2001
  "flags": {
1981
2002
  "json": {
1982
2003
  "description": "Format output as json.",
@@ -2009,16 +2030,18 @@
2009
2030
  "multiple": false,
2010
2031
  "type": "option"
2011
2032
  },
2012
- "yes": {
2013
- "description": "Skip confirmation",
2014
- "name": "yes",
2015
- "allowNo": false,
2016
- "type": "boolean"
2033
+ "face": {
2034
+ "description": "Face alias to include (repeatable, min 2)",
2035
+ "name": "face",
2036
+ "required": true,
2037
+ "hasDynamicHelp": false,
2038
+ "multiple": true,
2039
+ "type": "option"
2017
2040
  }
2018
2041
  },
2019
2042
  "hasDynamicHelp": false,
2020
2043
  "hiddenAliases": [],
2021
- "id": "keys:revoke",
2044
+ "id": "face:diff",
2022
2045
  "pluginAlias": "faces-cli",
2023
2046
  "pluginName": "faces-cli",
2024
2047
  "pluginType": "core",
@@ -2028,20 +2051,20 @@
2028
2051
  "relativePath": [
2029
2052
  "dist",
2030
2053
  "commands",
2031
- "keys",
2032
- "revoke.js"
2054
+ "face",
2055
+ "diff.js"
2033
2056
  ]
2034
2057
  },
2035
- "keys:update": {
2058
+ "face:get": {
2036
2059
  "aliases": [],
2037
2060
  "args": {
2038
- "key_id": {
2039
- "description": "Key ID",
2040
- "name": "key_id",
2061
+ "face_id": {
2062
+ "description": "Face alias",
2063
+ "name": "face_id",
2041
2064
  "required": true
2042
2065
  }
2043
2066
  },
2044
- "description": "Update API key metadata (JWT required)",
2067
+ "description": "Get details for a face by alias",
2045
2068
  "flags": {
2046
2069
  "json": {
2047
2070
  "description": "Format output as json.",
@@ -2073,31 +2096,11 @@
2073
2096
  "hasDynamicHelp": false,
2074
2097
  "multiple": false,
2075
2098
  "type": "option"
2076
- },
2077
- "name": {
2078
- "description": "New key name",
2079
- "name": "name",
2080
- "hasDynamicHelp": false,
2081
- "multiple": false,
2082
- "type": "option"
2083
- },
2084
- "budget": {
2085
- "description": "New spend budget in USD",
2086
- "name": "budget",
2087
- "hasDynamicHelp": false,
2088
- "multiple": false,
2089
- "type": "option"
2090
- },
2091
- "reset-spent": {
2092
- "description": "Reset spent amount to zero",
2093
- "name": "reset-spent",
2094
- "allowNo": false,
2095
- "type": "boolean"
2096
2099
  }
2097
2100
  },
2098
2101
  "hasDynamicHelp": false,
2099
2102
  "hiddenAliases": [],
2100
- "id": "keys:update",
2103
+ "id": "face:get",
2101
2104
  "pluginAlias": "faces-cli",
2102
2105
  "pluginName": "faces-cli",
2103
2106
  "pluginType": "core",
@@ -2107,14 +2110,14 @@
2107
2110
  "relativePath": [
2108
2111
  "dist",
2109
2112
  "commands",
2110
- "keys",
2111
- "update.js"
2113
+ "face",
2114
+ "get.js"
2112
2115
  ]
2113
2116
  },
2114
- "face:create": {
2117
+ "face:list": {
2115
2118
  "aliases": [],
2116
2119
  "args": {},
2117
- "description": "Create a new face",
2120
+ "description": "List all owned faces",
2118
2121
  "flags": {
2119
2122
  "json": {
2120
2123
  "description": "Format output as json.",
@@ -2146,62 +2149,11 @@
2146
2149
  "hasDynamicHelp": false,
2147
2150
  "multiple": false,
2148
2151
  "type": "option"
2149
- },
2150
- "name": {
2151
- "description": "Display name",
2152
- "name": "name",
2153
- "required": true,
2154
- "hasDynamicHelp": false,
2155
- "multiple": false,
2156
- "type": "option"
2157
- },
2158
- "alias": {
2159
- "description": "Unique alias slug",
2160
- "name": "alias",
2161
- "required": true,
2162
- "hasDynamicHelp": false,
2163
- "multiple": false,
2164
- "type": "option"
2165
- },
2166
- "description": {
2167
- "description": "Description for local catalog",
2168
- "name": "description",
2169
- "hasDynamicHelp": false,
2170
- "multiple": false,
2171
- "type": "option"
2172
- },
2173
- "default-model": {
2174
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2175
- "name": "default-model",
2176
- "hasDynamicHelp": false,
2177
- "multiple": false,
2178
- "type": "option"
2179
- },
2180
- "formula": {
2181
- "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
2182
- "name": "formula",
2183
- "hasDynamicHelp": false,
2184
- "multiple": false,
2185
- "type": "option"
2186
- },
2187
- "attr": {
2188
- "description": "Attribute KEY=VALUE (repeatable)",
2189
- "name": "attr",
2190
- "hasDynamicHelp": false,
2191
- "multiple": true,
2192
- "type": "option"
2193
- },
2194
- "tool": {
2195
- "description": "Tool name to enable (repeatable)",
2196
- "name": "tool",
2197
- "hasDynamicHelp": false,
2198
- "multiple": true,
2199
- "type": "option"
2200
2152
  }
2201
2153
  },
2202
2154
  "hasDynamicHelp": false,
2203
2155
  "hiddenAliases": [],
2204
- "id": "face:create",
2156
+ "id": "face:list",
2205
2157
  "pluginAlias": "faces-cli",
2206
2158
  "pluginName": "faces-cli",
2207
2159
  "pluginType": "core",
@@ -2212,10 +2164,10 @@
2212
2164
  "dist",
2213
2165
  "commands",
2214
2166
  "face",
2215
- "create.js"
2167
+ "list.js"
2216
2168
  ]
2217
2169
  },
2218
- "face:delete": {
2170
+ "face:neighbors": {
2219
2171
  "aliases": [],
2220
2172
  "args": {
2221
2173
  "face_id": {
@@ -2224,7 +2176,7 @@
2224
2176
  "required": true
2225
2177
  }
2226
2178
  },
2227
- "description": "Delete a face permanently",
2179
+ "description": "Find the most similar or dissimilar owned faces to a given face",
2228
2180
  "flags": {
2229
2181
  "json": {
2230
2182
  "description": "Format output as json.",
@@ -2257,16 +2209,44 @@
2257
2209
  "multiple": false,
2258
2210
  "type": "option"
2259
2211
  },
2260
- "yes": {
2261
- "description": "Skip confirmation",
2262
- "name": "yes",
2263
- "allowNo": false,
2264
- "type": "boolean"
2212
+ "k": {
2213
+ "description": "Number of results (1–20)",
2214
+ "name": "k",
2215
+ "default": 5,
2216
+ "hasDynamicHelp": false,
2217
+ "multiple": false,
2218
+ "type": "option"
2219
+ },
2220
+ "component": {
2221
+ "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2222
+ "name": "component",
2223
+ "default": "face",
2224
+ "hasDynamicHelp": false,
2225
+ "multiple": false,
2226
+ "options": [
2227
+ "face",
2228
+ "beta",
2229
+ "delta",
2230
+ "epsilon"
2231
+ ],
2232
+ "type": "option"
2233
+ },
2234
+ "direction": {
2235
+ "description": "nearest (most similar) or furthest (most dissimilar)",
2236
+ "name": "direction",
2237
+ "default": "nearest",
2238
+ "hasDynamicHelp": false,
2239
+ "multiple": false,
2240
+ "options": [
2241
+ "nearest",
2242
+ "furthest"
2243
+ ],
2244
+ "type": "option"
2265
2245
  }
2266
2246
  },
2267
2247
  "hasDynamicHelp": false,
2268
2248
  "hiddenAliases": [],
2269
- "id": "face:delete",
2249
+ "id": "face:neighbors",
2270
2250
  "pluginAlias": "faces-cli",
2271
2251
  "pluginName": "faces-cli",
2272
2252
  "pluginType": "core",
@@ -2277,13 +2257,13 @@
2277
2257
  "dist",
2278
2258
  "commands",
2279
2259
  "face",
2280
- "delete.js"
2260
+ "neighbors.js"
2281
2261
  ]
2282
2262
  },
2283
- "face:diff": {
2263
+ "face:stats": {
2284
2264
  "aliases": [],
2285
2265
  "args": {},
2286
- "description": "Compare owned faces pairwise across all centroid components",
2266
+ "description": "Compile and chat stats for all owned faces",
2287
2267
  "flags": {
2288
2268
  "json": {
2289
2269
  "description": "Format output as json.",
@@ -2315,19 +2295,11 @@
2315
2295
  "hasDynamicHelp": false,
2316
2296
  "multiple": false,
2317
2297
  "type": "option"
2318
- },
2319
- "face": {
2320
- "description": "Face alias to include (repeatable, min 2)",
2321
- "name": "face",
2322
- "required": true,
2323
- "hasDynamicHelp": false,
2324
- "multiple": true,
2325
- "type": "option"
2326
2298
  }
2327
2299
  },
2328
2300
  "hasDynamicHelp": false,
2329
2301
  "hiddenAliases": [],
2330
- "id": "face:diff",
2302
+ "id": "face:stats",
2331
2303
  "pluginAlias": "faces-cli",
2332
2304
  "pluginName": "faces-cli",
2333
2305
  "pluginType": "core",
@@ -2338,10 +2310,10 @@
2338
2310
  "dist",
2339
2311
  "commands",
2340
2312
  "face",
2341
- "diff.js"
2313
+ "stats.js"
2342
2314
  ]
2343
2315
  },
2344
- "face:get": {
2316
+ "face:update": {
2345
2317
  "aliases": [],
2346
2318
  "args": {
2347
2319
  "face_id": {
@@ -2350,7 +2322,7 @@
2350
2322
  "required": true
2351
2323
  }
2352
2324
  },
2353
- "description": "Get details for a face by alias",
2325
+ "description": "Update a face's metadata",
2354
2326
  "flags": {
2355
2327
  "json": {
2356
2328
  "description": "Format output as json.",
@@ -2382,11 +2354,53 @@
2382
2354
  "hasDynamicHelp": false,
2383
2355
  "multiple": false,
2384
2356
  "type": "option"
2357
+ },
2358
+ "name": {
2359
+ "description": "New display name",
2360
+ "name": "name",
2361
+ "hasDynamicHelp": false,
2362
+ "multiple": false,
2363
+ "type": "option"
2364
+ },
2365
+ "description": {
2366
+ "description": "Description for local catalog",
2367
+ "name": "description",
2368
+ "hasDynamicHelp": false,
2369
+ "multiple": false,
2370
+ "type": "option"
2371
+ },
2372
+ "default-model": {
2373
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2374
+ "name": "default-model",
2375
+ "hasDynamicHelp": false,
2376
+ "multiple": false,
2377
+ "type": "option"
2378
+ },
2379
+ "formula": {
2380
+ "description": "New boolean formula (synthetic faces only)",
2381
+ "name": "formula",
2382
+ "hasDynamicHelp": false,
2383
+ "multiple": false,
2384
+ "type": "option"
2385
+ },
2386
+ "attr": {
2387
+ "description": "Update attribute KEY=VALUE (repeatable)",
2388
+ "name": "attr",
2389
+ "hasDynamicHelp": false,
2390
+ "multiple": true,
2391
+ "type": "option"
2392
+ },
2393
+ "tool": {
2394
+ "description": "Tool names to set (replaces list, repeatable)",
2395
+ "name": "tool",
2396
+ "hasDynamicHelp": false,
2397
+ "multiple": true,
2398
+ "type": "option"
2385
2399
  }
2386
2400
  },
2387
2401
  "hasDynamicHelp": false,
2388
2402
  "hiddenAliases": [],
2389
- "id": "face:get",
2403
+ "id": "face:update",
2390
2404
  "pluginAlias": "faces-cli",
2391
2405
  "pluginName": "faces-cli",
2392
2406
  "pluginType": "core",
@@ -2397,13 +2411,19 @@
2397
2411
  "dist",
2398
2412
  "commands",
2399
2413
  "face",
2400
- "get.js"
2414
+ "update.js"
2401
2415
  ]
2402
2416
  },
2403
- "face:list": {
2417
+ "face:upload": {
2404
2418
  "aliases": [],
2405
- "args": {},
2406
- "description": "List all owned faces",
2419
+ "args": {
2420
+ "face_id": {
2421
+ "description": "Face alias",
2422
+ "name": "face_id",
2423
+ "required": true
2424
+ }
2425
+ },
2426
+ "description": "Upload a file (text/PDF/audio/video) to a face",
2407
2427
  "flags": {
2408
2428
  "json": {
2409
2429
  "description": "Format output as json.",
@@ -2435,11 +2455,50 @@
2435
2455
  "hasDynamicHelp": false,
2436
2456
  "multiple": false,
2437
2457
  "type": "option"
2458
+ },
2459
+ "file": {
2460
+ "description": "File to upload",
2461
+ "name": "file",
2462
+ "required": true,
2463
+ "hasDynamicHelp": false,
2464
+ "multiple": false,
2465
+ "type": "option"
2466
+ },
2467
+ "kind": {
2468
+ "description": "Upload kind: document or thread",
2469
+ "name": "kind",
2470
+ "default": "document",
2471
+ "hasDynamicHelp": false,
2472
+ "multiple": false,
2473
+ "options": [
2474
+ "document",
2475
+ "thread"
2476
+ ],
2477
+ "type": "option"
2478
+ },
2479
+ "perspective": {
2480
+ "description": "Perspective (document only)",
2481
+ "name": "perspective",
2482
+ "default": "third-person",
2483
+ "hasDynamicHelp": false,
2484
+ "multiple": false,
2485
+ "options": [
2486
+ "first-person",
2487
+ "third-person"
2488
+ ],
2489
+ "type": "option"
2490
+ },
2491
+ "face-speaker": {
2492
+ "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
2493
+ "name": "face-speaker",
2494
+ "hasDynamicHelp": false,
2495
+ "multiple": false,
2496
+ "type": "option"
2438
2497
  }
2439
2498
  },
2440
2499
  "hasDynamicHelp": false,
2441
2500
  "hiddenAliases": [],
2442
- "id": "face:list",
2501
+ "id": "face:upload",
2443
2502
  "pluginAlias": "faces-cli",
2444
2503
  "pluginName": "faces-cli",
2445
2504
  "pluginType": "core",
@@ -2450,19 +2509,13 @@
2450
2509
  "dist",
2451
2510
  "commands",
2452
2511
  "face",
2453
- "list.js"
2512
+ "upload.js"
2454
2513
  ]
2455
2514
  },
2456
- "face:neighbors": {
2515
+ "keys:create": {
2457
2516
  "aliases": [],
2458
- "args": {
2459
- "face_id": {
2460
- "description": "Face alias",
2461
- "name": "face_id",
2462
- "required": true
2463
- }
2464
- },
2465
- "description": "Find the most similar or dissimilar owned faces to a given face",
2517
+ "args": {},
2518
+ "description": "Create a new API key (JWT required)",
2466
2519
  "flags": {
2467
2520
  "json": {
2468
2521
  "description": "Format output as json.",
@@ -2495,44 +2548,46 @@
2495
2548
  "multiple": false,
2496
2549
  "type": "option"
2497
2550
  },
2498
- "k": {
2499
- "description": "Number of results (1–20)",
2500
- "name": "k",
2501
- "default": 5,
2551
+ "name": {
2552
+ "description": "Key name/label",
2553
+ "name": "name",
2554
+ "required": true,
2502
2555
  "hasDynamicHelp": false,
2503
2556
  "multiple": false,
2504
2557
  "type": "option"
2505
2558
  },
2506
- "component": {
2507
- "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2508
- "name": "component",
2509
- "default": "face",
2559
+ "expires-days": {
2560
+ "description": "Expiry in days (omit for no expiry)",
2561
+ "name": "expires-days",
2510
2562
  "hasDynamicHelp": false,
2511
2563
  "multiple": false,
2512
- "options": [
2513
- "face",
2514
- "beta",
2515
- "delta",
2516
- "epsilon"
2517
- ],
2518
2564
  "type": "option"
2519
2565
  },
2520
- "direction": {
2521
- "description": "nearest (most similar) or furthest (most dissimilar)",
2522
- "name": "direction",
2523
- "default": "nearest",
2566
+ "budget": {
2567
+ "description": "Spend budget in USD",
2568
+ "name": "budget",
2524
2569
  "hasDynamicHelp": false,
2525
2570
  "multiple": false,
2526
- "options": [
2527
- "nearest",
2528
- "furthest"
2529
- ],
2571
+ "type": "option"
2572
+ },
2573
+ "face": {
2574
+ "description": "Allowed face alias (repeatable)",
2575
+ "name": "face",
2576
+ "hasDynamicHelp": false,
2577
+ "multiple": true,
2578
+ "type": "option"
2579
+ },
2580
+ "model": {
2581
+ "description": "Allowed model name (repeatable)",
2582
+ "name": "model",
2583
+ "hasDynamicHelp": false,
2584
+ "multiple": true,
2530
2585
  "type": "option"
2531
2586
  }
2532
2587
  },
2533
2588
  "hasDynamicHelp": false,
2534
2589
  "hiddenAliases": [],
2535
- "id": "face:neighbors",
2590
+ "id": "keys:create",
2536
2591
  "pluginAlias": "faces-cli",
2537
2592
  "pluginName": "faces-cli",
2538
2593
  "pluginType": "core",
@@ -2542,14 +2597,14 @@
2542
2597
  "relativePath": [
2543
2598
  "dist",
2544
2599
  "commands",
2545
- "face",
2546
- "neighbors.js"
2600
+ "keys",
2601
+ "create.js"
2547
2602
  ]
2548
2603
  },
2549
- "face:stats": {
2604
+ "keys:list": {
2550
2605
  "aliases": [],
2551
2606
  "args": {},
2552
- "description": "Compile and chat stats for all owned faces",
2607
+ "description": "List all API keys (JWT required)",
2553
2608
  "flags": {
2554
2609
  "json": {
2555
2610
  "description": "Format output as json.",
@@ -2585,7 +2640,7 @@
2585
2640
  },
2586
2641
  "hasDynamicHelp": false,
2587
2642
  "hiddenAliases": [],
2588
- "id": "face:stats",
2643
+ "id": "keys:list",
2589
2644
  "pluginAlias": "faces-cli",
2590
2645
  "pluginName": "faces-cli",
2591
2646
  "pluginType": "core",
@@ -2595,20 +2650,20 @@
2595
2650
  "relativePath": [
2596
2651
  "dist",
2597
2652
  "commands",
2598
- "face",
2599
- "stats.js"
2653
+ "keys",
2654
+ "list.js"
2600
2655
  ]
2601
2656
  },
2602
- "face:update": {
2657
+ "keys:revoke": {
2603
2658
  "aliases": [],
2604
2659
  "args": {
2605
- "face_id": {
2606
- "description": "Face alias",
2607
- "name": "face_id",
2660
+ "key_id": {
2661
+ "description": "Key ID",
2662
+ "name": "key_id",
2608
2663
  "required": true
2609
2664
  }
2610
2665
  },
2611
- "description": "Update a face's metadata",
2666
+ "description": "Revoke an API key (JWT required)",
2612
2667
  "flags": {
2613
2668
  "json": {
2614
2669
  "description": "Format output as json.",
@@ -2641,52 +2696,16 @@
2641
2696
  "multiple": false,
2642
2697
  "type": "option"
2643
2698
  },
2644
- "name": {
2645
- "description": "New display name",
2646
- "name": "name",
2647
- "hasDynamicHelp": false,
2648
- "multiple": false,
2649
- "type": "option"
2650
- },
2651
- "description": {
2652
- "description": "Description for local catalog",
2653
- "name": "description",
2654
- "hasDynamicHelp": false,
2655
- "multiple": false,
2656
- "type": "option"
2657
- },
2658
- "default-model": {
2659
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2660
- "name": "default-model",
2661
- "hasDynamicHelp": false,
2662
- "multiple": false,
2663
- "type": "option"
2664
- },
2665
- "formula": {
2666
- "description": "New boolean formula (synthetic faces only)",
2667
- "name": "formula",
2668
- "hasDynamicHelp": false,
2669
- "multiple": false,
2670
- "type": "option"
2671
- },
2672
- "attr": {
2673
- "description": "Update attribute KEY=VALUE (repeatable)",
2674
- "name": "attr",
2675
- "hasDynamicHelp": false,
2676
- "multiple": true,
2677
- "type": "option"
2678
- },
2679
- "tool": {
2680
- "description": "Tool names to set (replaces list, repeatable)",
2681
- "name": "tool",
2682
- "hasDynamicHelp": false,
2683
- "multiple": true,
2684
- "type": "option"
2699
+ "yes": {
2700
+ "description": "Skip confirmation",
2701
+ "name": "yes",
2702
+ "allowNo": false,
2703
+ "type": "boolean"
2685
2704
  }
2686
2705
  },
2687
2706
  "hasDynamicHelp": false,
2688
2707
  "hiddenAliases": [],
2689
- "id": "face:update",
2708
+ "id": "keys:revoke",
2690
2709
  "pluginAlias": "faces-cli",
2691
2710
  "pluginName": "faces-cli",
2692
2711
  "pluginType": "core",
@@ -2696,20 +2715,20 @@
2696
2715
  "relativePath": [
2697
2716
  "dist",
2698
2717
  "commands",
2699
- "face",
2700
- "update.js"
2718
+ "keys",
2719
+ "revoke.js"
2701
2720
  ]
2702
2721
  },
2703
- "face:upload": {
2722
+ "keys:update": {
2704
2723
  "aliases": [],
2705
2724
  "args": {
2706
- "face_id": {
2707
- "description": "Face alias",
2708
- "name": "face_id",
2725
+ "key_id": {
2726
+ "description": "Key ID",
2727
+ "name": "key_id",
2709
2728
  "required": true
2710
2729
  }
2711
2730
  },
2712
- "description": "Upload a file (text/PDF/audio/video) to a face",
2731
+ "description": "Update API key metadata (JWT required)",
2713
2732
  "flags": {
2714
2733
  "json": {
2715
2734
  "description": "Format output as json.",
@@ -2742,49 +2761,30 @@
2742
2761
  "multiple": false,
2743
2762
  "type": "option"
2744
2763
  },
2745
- "file": {
2746
- "description": "File to upload",
2747
- "name": "file",
2748
- "required": true,
2749
- "hasDynamicHelp": false,
2750
- "multiple": false,
2751
- "type": "option"
2752
- },
2753
- "kind": {
2754
- "description": "Upload kind: document or thread",
2755
- "name": "kind",
2756
- "default": "document",
2764
+ "name": {
2765
+ "description": "New key name",
2766
+ "name": "name",
2757
2767
  "hasDynamicHelp": false,
2758
2768
  "multiple": false,
2759
- "options": [
2760
- "document",
2761
- "thread"
2762
- ],
2763
2769
  "type": "option"
2764
2770
  },
2765
- "perspective": {
2766
- "description": "Perspective (document only)",
2767
- "name": "perspective",
2768
- "default": "third-person",
2771
+ "budget": {
2772
+ "description": "New spend budget in USD",
2773
+ "name": "budget",
2769
2774
  "hasDynamicHelp": false,
2770
2775
  "multiple": false,
2771
- "options": [
2772
- "first-person",
2773
- "third-person"
2774
- ],
2775
2776
  "type": "option"
2776
2777
  },
2777
- "face-speaker": {
2778
- "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
2779
- "name": "face-speaker",
2780
- "hasDynamicHelp": false,
2781
- "multiple": false,
2782
- "type": "option"
2778
+ "reset-spent": {
2779
+ "description": "Reset spent amount to zero",
2780
+ "name": "reset-spent",
2781
+ "allowNo": false,
2782
+ "type": "boolean"
2783
2783
  }
2784
2784
  },
2785
2785
  "hasDynamicHelp": false,
2786
2786
  "hiddenAliases": [],
2787
- "id": "face:upload",
2787
+ "id": "keys:update",
2788
2788
  "pluginAlias": "faces-cli",
2789
2789
  "pluginName": "faces-cli",
2790
2790
  "pluginType": "core",
@@ -2794,8 +2794,8 @@
2794
2794
  "relativePath": [
2795
2795
  "dist",
2796
2796
  "commands",
2797
- "face",
2798
- "upload.js"
2797
+ "keys",
2798
+ "update.js"
2799
2799
  ]
2800
2800
  },
2801
2801
  "compile:doc:create": {
@@ -3474,7 +3474,7 @@
3474
3474
  "required": true
3475
3475
  }
3476
3476
  },
3477
- "description": "Edit a thread (label)",
3477
+ "description": "Edit a thread (label and/or reassign face speaker)",
3478
3478
  "flags": {
3479
3479
  "json": {
3480
3480
  "description": "Format output as json.",
@@ -3510,7 +3510,13 @@
3510
3510
  "label": {
3511
3511
  "description": "New thread label",
3512
3512
  "name": "label",
3513
- "required": true,
3513
+ "hasDynamicHelp": false,
3514
+ "multiple": false,
3515
+ "type": "option"
3516
+ },
3517
+ "face-speaker": {
3518
+ "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
3519
+ "name": "face-speaker",
3514
3520
  "hasDynamicHelp": false,
3515
3521
  "multiple": false,
3516
3522
  "type": "option"
@@ -3851,5 +3857,5 @@
3851
3857
  ]
3852
3858
  }
3853
3859
  },
3854
- "version": "1.5.0"
3860
+ "version": "1.5.1"
3855
3861
  }