faces-cli 1.5.13 → 1.5.14

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.
@@ -1,22 +1,9 @@
1
1
  {
2
2
  "commands": {
3
- "auth:connect": {
3
+ "account:state": {
4
4
  "aliases": [],
5
- "args": {
6
- "provider": {
7
- "description": "OAuth provider to connect",
8
- "name": "provider",
9
- "options": [
10
- "openai"
11
- ],
12
- "required": true
13
- }
14
- },
15
- "description": "Connect an OAuth provider account to Faces (e.g. ChatGPT Plus/Pro)",
16
- "examples": [
17
- "<%= config.bin %> auth connect openai",
18
- "<%= config.bin %> auth connect openai --manual"
19
- ],
5
+ "args": {},
6
+ "description": "Full account routing state (plan, balance, onboarding)",
20
7
  "flags": {
21
8
  "json": {
22
9
  "description": "Format output as json.",
@@ -48,17 +35,11 @@
48
35
  "hasDynamicHelp": false,
49
36
  "multiple": false,
50
37
  "type": "option"
51
- },
52
- "manual": {
53
- "description": "Manual mode for headless environments: prints the authorize URL and prompts you to paste the callback URL after approving in any browser.",
54
- "name": "manual",
55
- "allowNo": false,
56
- "type": "boolean"
57
38
  }
58
39
  },
59
40
  "hasDynamicHelp": false,
60
41
  "hiddenAliases": [],
61
- "id": "auth:connect",
42
+ "id": "account:state",
62
43
  "pluginAlias": "faces-cli",
63
44
  "pluginName": "faces-cli",
64
45
  "pluginType": "core",
@@ -68,18 +49,14 @@
68
49
  "relativePath": [
69
50
  "dist",
70
51
  "commands",
71
- "auth",
72
- "connect.js"
52
+ "account",
53
+ "state.js"
73
54
  ]
74
55
  },
75
- "auth:connections": {
56
+ "billing:balance": {
76
57
  "aliases": [],
77
58
  "args": {},
78
- "description": "List connected OAuth provider accounts",
79
- "examples": [
80
- "<%= config.bin %> auth connections",
81
- "<%= config.bin %> auth connections --json"
82
- ],
59
+ "description": "Show credit balance and payment method status",
83
60
  "flags": {
84
61
  "json": {
85
62
  "description": "Format output as json.",
@@ -115,7 +92,7 @@
115
92
  },
116
93
  "hasDynamicHelp": false,
117
94
  "hiddenAliases": [],
118
- "id": "auth:connections",
95
+ "id": "billing:balance",
119
96
  "pluginAlias": "faces-cli",
120
97
  "pluginName": "faces-cli",
121
98
  "pluginType": "core",
@@ -125,26 +102,14 @@
125
102
  "relativePath": [
126
103
  "dist",
127
104
  "commands",
128
- "auth",
129
- "connections.js"
105
+ "billing",
106
+ "balance.js"
130
107
  ]
131
108
  },
132
- "auth:disconnect": {
109
+ "billing:card-setup": {
133
110
  "aliases": [],
134
- "args": {
135
- "provider": {
136
- "description": "OAuth provider to disconnect",
137
- "name": "provider",
138
- "options": [
139
- "openai"
140
- ],
141
- "required": true
142
- }
143
- },
144
- "description": "Disconnect a linked OAuth provider account",
145
- "examples": [
146
- "<%= config.bin %> auth disconnect openai"
147
- ],
111
+ "args": {},
112
+ "description": "Get a Stripe card setup URL to save a payment method",
148
113
  "flags": {
149
114
  "json": {
150
115
  "description": "Format output as json.",
@@ -180,7 +145,7 @@
180
145
  },
181
146
  "hasDynamicHelp": false,
182
147
  "hiddenAliases": [],
183
- "id": "auth:disconnect",
148
+ "id": "billing:card-setup",
184
149
  "pluginAlias": "faces-cli",
185
150
  "pluginName": "faces-cli",
186
151
  "pluginType": "core",
@@ -190,14 +155,14 @@
190
155
  "relativePath": [
191
156
  "dist",
192
157
  "commands",
193
- "auth",
194
- "disconnect.js"
158
+ "billing",
159
+ "card-setup.js"
195
160
  ]
196
161
  },
197
- "auth:login": {
162
+ "billing:checkout": {
198
163
  "aliases": [],
199
164
  "args": {},
200
- "description": "Login and save JWT credentials",
165
+ "description": "Get a Stripe checkout URL to upgrade your subscription plan",
201
166
  "flags": {
202
167
  "json": {
203
168
  "description": "Format output as json.",
@@ -230,26 +195,21 @@
230
195
  "multiple": false,
231
196
  "type": "option"
232
197
  },
233
- "email": {
234
- "description": "Account email",
235
- "name": "email",
236
- "required": true,
237
- "hasDynamicHelp": false,
238
- "multiple": false,
239
- "type": "option"
240
- },
241
- "password": {
242
- "description": "Account password",
243
- "name": "password",
244
- "required": true,
198
+ "plan": {
199
+ "description": "Plan to subscribe to",
200
+ "name": "plan",
201
+ "default": "connect",
245
202
  "hasDynamicHelp": false,
246
203
  "multiple": false,
204
+ "options": [
205
+ "connect"
206
+ ],
247
207
  "type": "option"
248
208
  }
249
209
  },
250
210
  "hasDynamicHelp": false,
251
211
  "hiddenAliases": [],
252
- "id": "auth:login",
212
+ "id": "billing:checkout",
253
213
  "pluginAlias": "faces-cli",
254
214
  "pluginName": "faces-cli",
255
215
  "pluginType": "core",
@@ -259,14 +219,14 @@
259
219
  "relativePath": [
260
220
  "dist",
261
221
  "commands",
262
- "auth",
263
- "login.js"
222
+ "billing",
223
+ "checkout.js"
264
224
  ]
265
225
  },
266
- "auth:logout": {
226
+ "billing:llm-costs": {
267
227
  "aliases": [],
268
228
  "args": {},
269
- "description": "Clear saved credentials",
229
+ "description": "List available LLMs and their per-token costs",
270
230
  "flags": {
271
231
  "json": {
272
232
  "description": "Format output as json.",
@@ -298,11 +258,18 @@
298
258
  "hasDynamicHelp": false,
299
259
  "multiple": false,
300
260
  "type": "option"
261
+ },
262
+ "provider": {
263
+ "description": "Filter by provider (e.g. openai, anthropic)",
264
+ "name": "provider",
265
+ "hasDynamicHelp": false,
266
+ "multiple": false,
267
+ "type": "option"
301
268
  }
302
269
  },
303
270
  "hasDynamicHelp": false,
304
271
  "hiddenAliases": [],
305
- "id": "auth:logout",
272
+ "id": "billing:llm-costs",
306
273
  "pluginAlias": "faces-cli",
307
274
  "pluginName": "faces-cli",
308
275
  "pluginType": "core",
@@ -312,14 +279,14 @@
312
279
  "relativePath": [
313
280
  "dist",
314
281
  "commands",
315
- "auth",
316
- "logout.js"
282
+ "billing",
283
+ "llm-costs.js"
317
284
  ]
318
285
  },
319
- "auth:refresh": {
286
+ "billing:quota": {
320
287
  "aliases": [],
321
288
  "args": {},
322
- "description": "Exchange current JWT for a fresh one",
289
+ "description": "Show compile token quota and per-face stats",
323
290
  "flags": {
324
291
  "json": {
325
292
  "description": "Format output as json.",
@@ -355,7 +322,7 @@
355
322
  },
356
323
  "hasDynamicHelp": false,
357
324
  "hiddenAliases": [],
358
- "id": "auth:refresh",
325
+ "id": "billing:quota",
359
326
  "pluginAlias": "faces-cli",
360
327
  "pluginName": "faces-cli",
361
328
  "pluginType": "core",
@@ -365,14 +332,14 @@
365
332
  "relativePath": [
366
333
  "dist",
367
334
  "commands",
368
- "auth",
369
- "refresh.js"
335
+ "billing",
336
+ "quota.js"
370
337
  ]
371
338
  },
372
- "auth:register": {
339
+ "billing:subscription": {
373
340
  "aliases": [],
374
341
  "args": {},
375
- "description": "Create a new Faces account",
342
+ "description": "Show current plan, face count, and renewal date",
376
343
  "flags": {
377
344
  "json": {
378
345
  "description": "Format output as json.",
@@ -404,61 +371,11 @@
404
371
  "hasDynamicHelp": false,
405
372
  "multiple": false,
406
373
  "type": "option"
407
- },
408
- "email": {
409
- "description": "Email address",
410
- "name": "email",
411
- "required": true,
412
- "hasDynamicHelp": false,
413
- "multiple": false,
414
- "type": "option"
415
- },
416
- "password": {
417
- "description": "Password",
418
- "name": "password",
419
- "required": true,
420
- "hasDynamicHelp": false,
421
- "multiple": false,
422
- "type": "option"
423
- },
424
- "name": {
425
- "description": "Display name (defaults to username)",
426
- "name": "name",
427
- "hasDynamicHelp": false,
428
- "multiple": false,
429
- "type": "option"
430
- },
431
- "username": {
432
- "description": "Username (lowercase, dashes, numbers)",
433
- "name": "username",
434
- "required": true,
435
- "hasDynamicHelp": false,
436
- "multiple": false,
437
- "type": "option"
438
- },
439
- "invite-key": {
440
- "description": "Invite key (if required)",
441
- "name": "invite-key",
442
- "hasDynamicHelp": false,
443
- "multiple": false,
444
- "type": "option"
445
- },
446
- "plan": {
447
- "description": "Plan to subscribe to: \"free\" ($5 activation) or \"connect\" ($17/mo, no activation fee)",
448
- "name": "plan",
449
- "default": "free",
450
- "hasDynamicHelp": false,
451
- "multiple": false,
452
- "options": [
453
- "free",
454
- "connect"
455
- ],
456
- "type": "option"
457
374
  }
458
375
  },
459
376
  "hasDynamicHelp": false,
460
377
  "hiddenAliases": [],
461
- "id": "auth:register",
378
+ "id": "billing:subscription",
462
379
  "pluginAlias": "faces-cli",
463
380
  "pluginName": "faces-cli",
464
381
  "pluginType": "core",
@@ -468,14 +385,14 @@
468
385
  "relativePath": [
469
386
  "dist",
470
387
  "commands",
471
- "auth",
472
- "register.js"
388
+ "billing",
389
+ "subscription.js"
473
390
  ]
474
391
  },
475
- "auth:whoami": {
392
+ "billing:topup": {
476
393
  "aliases": [],
477
394
  "args": {},
478
- "description": "Print current user profile and auth diagnostic",
395
+ "description": "Top up credit balance using saved payment method",
479
396
  "flags": {
480
397
  "json": {
481
398
  "description": "Format output as json.",
@@ -507,11 +424,26 @@
507
424
  "hasDynamicHelp": false,
508
425
  "multiple": false,
509
426
  "type": "option"
427
+ },
428
+ "amount": {
429
+ "description": "Top-up amount in USD (min $1)",
430
+ "name": "amount",
431
+ "required": true,
432
+ "hasDynamicHelp": false,
433
+ "multiple": false,
434
+ "type": "option"
435
+ },
436
+ "payment-ref": {
437
+ "description": "Payment reference (admin/test path)",
438
+ "name": "payment-ref",
439
+ "hasDynamicHelp": false,
440
+ "multiple": false,
441
+ "type": "option"
510
442
  }
511
443
  },
512
444
  "hasDynamicHelp": false,
513
445
  "hiddenAliases": [],
514
- "id": "auth:whoami",
446
+ "id": "billing:topup",
515
447
  "pluginAlias": "faces-cli",
516
448
  "pluginName": "faces-cli",
517
449
  "pluginType": "core",
@@ -521,14 +453,14 @@
521
453
  "relativePath": [
522
454
  "dist",
523
455
  "commands",
524
- "auth",
525
- "whoami.js"
456
+ "billing",
457
+ "topup.js"
526
458
  ]
527
459
  },
528
- "billing:balance": {
460
+ "billing:usage": {
529
461
  "aliases": [],
530
462
  "args": {},
531
- "description": "Show credit balance and payment method status",
463
+ "description": "Aggregated usage analytics",
532
464
  "flags": {
533
465
  "json": {
534
466
  "description": "Format output as json.",
@@ -560,11 +492,38 @@
560
492
  "hasDynamicHelp": false,
561
493
  "multiple": false,
562
494
  "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"
563
522
  }
564
523
  },
565
524
  "hasDynamicHelp": false,
566
525
  "hiddenAliases": [],
567
- "id": "billing:balance",
526
+ "id": "billing:usage",
568
527
  "pluginAlias": "faces-cli",
569
528
  "pluginName": "faces-cli",
570
529
  "pluginType": "core",
@@ -575,13 +534,13 @@
575
534
  "dist",
576
535
  "commands",
577
536
  "billing",
578
- "balance.js"
537
+ "usage.js"
579
538
  ]
580
539
  },
581
- "billing:card-setup": {
540
+ "catalog:doctor": {
582
541
  "aliases": [],
583
542
  "args": {},
584
- "description": "Get a Stripe card setup URL to save a payment method",
543
+ "description": "Diagnose and repair the local face catalog",
585
544
  "flags": {
586
545
  "json": {
587
546
  "description": "Format output as json.",
@@ -613,13 +572,25 @@
613
572
  "hasDynamicHelp": false,
614
573
  "multiple": false,
615
574
  "type": "option"
616
- }
617
- },
618
- "hasDynamicHelp": false,
619
- "hiddenAliases": [],
620
- "id": "billing:card-setup",
621
- "pluginAlias": "faces-cli",
622
- "pluginName": "faces-cli",
575
+ },
576
+ "fix": {
577
+ "description": "Rebuild missing or stale catalog entries from API",
578
+ "name": "fix",
579
+ "allowNo": false,
580
+ "type": "boolean"
581
+ },
582
+ "generate": {
583
+ "description": "Fix + generate missing descriptions via LLM",
584
+ "name": "generate",
585
+ "allowNo": false,
586
+ "type": "boolean"
587
+ }
588
+ },
589
+ "hasDynamicHelp": false,
590
+ "hiddenAliases": [],
591
+ "id": "catalog:doctor",
592
+ "pluginAlias": "faces-cli",
593
+ "pluginName": "faces-cli",
623
594
  "pluginType": "core",
624
595
  "strict": true,
625
596
  "enableJsonFlag": true,
@@ -627,14 +598,14 @@
627
598
  "relativePath": [
628
599
  "dist",
629
600
  "commands",
630
- "billing",
631
- "card-setup.js"
601
+ "catalog",
602
+ "doctor.js"
632
603
  ]
633
604
  },
634
- "billing:checkout": {
605
+ "catalog:list": {
635
606
  "aliases": [],
636
607
  "args": {},
637
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
608
+ "description": "List all faces in the local catalog",
638
609
  "flags": {
639
610
  "json": {
640
611
  "description": "Format output as json.",
@@ -666,22 +637,11 @@
666
637
  "hasDynamicHelp": false,
667
638
  "multiple": false,
668
639
  "type": "option"
669
- },
670
- "plan": {
671
- "description": "Plan to subscribe to",
672
- "name": "plan",
673
- "default": "connect",
674
- "hasDynamicHelp": false,
675
- "multiple": false,
676
- "options": [
677
- "connect"
678
- ],
679
- "type": "option"
680
640
  }
681
641
  },
682
642
  "hasDynamicHelp": false,
683
643
  "hiddenAliases": [],
684
- "id": "billing:checkout",
644
+ "id": "catalog:list",
685
645
  "pluginAlias": "faces-cli",
686
646
  "pluginName": "faces-cli",
687
647
  "pluginType": "core",
@@ -691,14 +651,14 @@
691
651
  "relativePath": [
692
652
  "dist",
693
653
  "commands",
694
- "billing",
695
- "checkout.js"
654
+ "catalog",
655
+ "list.js"
696
656
  ]
697
657
  },
698
- "billing:llm-costs": {
658
+ "catalog:manyfaced": {
699
659
  "aliases": [],
700
660
  "args": {},
701
- "description": "List available LLMs and their per-token costs",
661
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
702
662
  "flags": {
703
663
  "json": {
704
664
  "description": "Format output as json.",
@@ -731,17 +691,37 @@
731
691
  "multiple": false,
732
692
  "type": "option"
733
693
  },
734
- "provider": {
735
- "description": "Filter by provider (e.g. openai, anthropic)",
736
- "name": "provider",
694
+ "skill": {
695
+ "description": "Show details for a specific skill",
696
+ "name": "skill",
737
697
  "hasDynamicHelp": false,
738
698
  "multiple": false,
739
699
  "type": "option"
700
+ },
701
+ "install": {
702
+ "description": "Install a skill by name",
703
+ "name": "install",
704
+ "hasDynamicHelp": false,
705
+ "multiple": false,
706
+ "type": "option"
707
+ },
708
+ "skills-dir": {
709
+ "description": "Directory to install skills into (required for --install)",
710
+ "name": "skills-dir",
711
+ "hasDynamicHelp": false,
712
+ "multiple": false,
713
+ "type": "option"
714
+ },
715
+ "refresh": {
716
+ "description": "Force refresh the skill index (ignore cache)",
717
+ "name": "refresh",
718
+ "allowNo": false,
719
+ "type": "boolean"
740
720
  }
741
721
  },
742
722
  "hasDynamicHelp": false,
743
723
  "hiddenAliases": [],
744
- "id": "billing:llm-costs",
724
+ "id": "catalog:manyfaced",
745
725
  "pluginAlias": "faces-cli",
746
726
  "pluginName": "faces-cli",
747
727
  "pluginType": "core",
@@ -751,14 +731,27 @@
751
731
  "relativePath": [
752
732
  "dist",
753
733
  "commands",
754
- "billing",
755
- "llm-costs.js"
734
+ "catalog",
735
+ "manyfaced.js"
756
736
  ]
757
737
  },
758
- "billing:quota": {
738
+ "auth:connect": {
759
739
  "aliases": [],
760
- "args": {},
761
- "description": "Show compile token quota and per-face stats",
740
+ "args": {
741
+ "provider": {
742
+ "description": "OAuth provider to connect",
743
+ "name": "provider",
744
+ "options": [
745
+ "openai"
746
+ ],
747
+ "required": true
748
+ }
749
+ },
750
+ "description": "Connect an OAuth provider account to Faces (e.g. ChatGPT Plus/Pro)",
751
+ "examples": [
752
+ "<%= config.bin %> auth connect openai",
753
+ "<%= config.bin %> auth connect openai --manual"
754
+ ],
762
755
  "flags": {
763
756
  "json": {
764
757
  "description": "Format output as json.",
@@ -790,11 +783,17 @@
790
783
  "hasDynamicHelp": false,
791
784
  "multiple": false,
792
785
  "type": "option"
786
+ },
787
+ "manual": {
788
+ "description": "Manual mode for headless environments: prints the authorize URL and prompts you to paste the callback URL after approving in any browser.",
789
+ "name": "manual",
790
+ "allowNo": false,
791
+ "type": "boolean"
793
792
  }
794
793
  },
795
794
  "hasDynamicHelp": false,
796
795
  "hiddenAliases": [],
797
- "id": "billing:quota",
796
+ "id": "auth:connect",
798
797
  "pluginAlias": "faces-cli",
799
798
  "pluginName": "faces-cli",
800
799
  "pluginType": "core",
@@ -804,14 +803,18 @@
804
803
  "relativePath": [
805
804
  "dist",
806
805
  "commands",
807
- "billing",
808
- "quota.js"
806
+ "auth",
807
+ "connect.js"
809
808
  ]
810
809
  },
811
- "billing:subscription": {
810
+ "auth:connections": {
812
811
  "aliases": [],
813
812
  "args": {},
814
- "description": "Show current plan, face count, and renewal date",
813
+ "description": "List connected OAuth provider accounts",
814
+ "examples": [
815
+ "<%= config.bin %> auth connections",
816
+ "<%= config.bin %> auth connections --json"
817
+ ],
815
818
  "flags": {
816
819
  "json": {
817
820
  "description": "Format output as json.",
@@ -847,7 +850,7 @@
847
850
  },
848
851
  "hasDynamicHelp": false,
849
852
  "hiddenAliases": [],
850
- "id": "billing:subscription",
853
+ "id": "auth:connections",
851
854
  "pluginAlias": "faces-cli",
852
855
  "pluginName": "faces-cli",
853
856
  "pluginType": "core",
@@ -857,14 +860,26 @@
857
860
  "relativePath": [
858
861
  "dist",
859
862
  "commands",
860
- "billing",
861
- "subscription.js"
863
+ "auth",
864
+ "connections.js"
862
865
  ]
863
866
  },
864
- "billing:topup": {
867
+ "auth:disconnect": {
865
868
  "aliases": [],
866
- "args": {},
867
- "description": "Top up credit balance using saved payment method",
869
+ "args": {
870
+ "provider": {
871
+ "description": "OAuth provider to disconnect",
872
+ "name": "provider",
873
+ "options": [
874
+ "openai"
875
+ ],
876
+ "required": true
877
+ }
878
+ },
879
+ "description": "Disconnect a linked OAuth provider account",
880
+ "examples": [
881
+ "<%= config.bin %> auth disconnect openai"
882
+ ],
868
883
  "flags": {
869
884
  "json": {
870
885
  "description": "Format output as json.",
@@ -896,26 +911,11 @@
896
911
  "hasDynamicHelp": false,
897
912
  "multiple": false,
898
913
  "type": "option"
899
- },
900
- "amount": {
901
- "description": "Top-up amount in USD (min $1)",
902
- "name": "amount",
903
- "required": true,
904
- "hasDynamicHelp": false,
905
- "multiple": false,
906
- "type": "option"
907
- },
908
- "payment-ref": {
909
- "description": "Payment reference (admin/test path)",
910
- "name": "payment-ref",
911
- "hasDynamicHelp": false,
912
- "multiple": false,
913
- "type": "option"
914
914
  }
915
915
  },
916
916
  "hasDynamicHelp": false,
917
917
  "hiddenAliases": [],
918
- "id": "billing:topup",
918
+ "id": "auth:disconnect",
919
919
  "pluginAlias": "faces-cli",
920
920
  "pluginName": "faces-cli",
921
921
  "pluginType": "core",
@@ -925,14 +925,14 @@
925
925
  "relativePath": [
926
926
  "dist",
927
927
  "commands",
928
- "billing",
929
- "topup.js"
928
+ "auth",
929
+ "disconnect.js"
930
930
  ]
931
931
  },
932
- "billing:usage": {
932
+ "auth:login": {
933
933
  "aliases": [],
934
934
  "args": {},
935
- "description": "Aggregated usage analytics",
935
+ "description": "Login and save JWT credentials",
936
936
  "flags": {
937
937
  "json": {
938
938
  "description": "Format output as json.",
@@ -965,29 +965,18 @@
965
965
  "multiple": false,
966
966
  "type": "option"
967
967
  },
968
- "group-by": {
969
- "description": "Group results",
970
- "name": "group-by",
971
- "hasDynamicHelp": false,
972
- "multiple": false,
973
- "options": [
974
- "api_key",
975
- "model",
976
- "llm",
977
- "date"
978
- ],
979
- "type": "option"
980
- },
981
- "from": {
982
- "description": "Start date (YYYY-MM-DD)",
983
- "name": "from",
968
+ "email": {
969
+ "description": "Account email",
970
+ "name": "email",
971
+ "required": true,
984
972
  "hasDynamicHelp": false,
985
973
  "multiple": false,
986
974
  "type": "option"
987
975
  },
988
- "to": {
989
- "description": "End date (YYYY-MM-DD)",
990
- "name": "to",
976
+ "password": {
977
+ "description": "Account password",
978
+ "name": "password",
979
+ "required": true,
991
980
  "hasDynamicHelp": false,
992
981
  "multiple": false,
993
982
  "type": "option"
@@ -995,7 +984,7 @@
995
984
  },
996
985
  "hasDynamicHelp": false,
997
986
  "hiddenAliases": [],
998
- "id": "billing:usage",
987
+ "id": "auth:login",
999
988
  "pluginAlias": "faces-cli",
1000
989
  "pluginName": "faces-cli",
1001
990
  "pluginType": "core",
@@ -1005,14 +994,14 @@
1005
994
  "relativePath": [
1006
995
  "dist",
1007
996
  "commands",
1008
- "billing",
1009
- "usage.js"
997
+ "auth",
998
+ "login.js"
1010
999
  ]
1011
1000
  },
1012
- "catalog:doctor": {
1001
+ "auth:logout": {
1013
1002
  "aliases": [],
1014
1003
  "args": {},
1015
- "description": "Diagnose and repair the local face catalog",
1004
+ "description": "Clear saved credentials",
1016
1005
  "flags": {
1017
1006
  "json": {
1018
1007
  "description": "Format output as json.",
@@ -1044,23 +1033,11 @@
1044
1033
  "hasDynamicHelp": false,
1045
1034
  "multiple": false,
1046
1035
  "type": "option"
1047
- },
1048
- "fix": {
1049
- "description": "Rebuild missing or stale catalog entries from API",
1050
- "name": "fix",
1051
- "allowNo": false,
1052
- "type": "boolean"
1053
- },
1054
- "generate": {
1055
- "description": "Fix + generate missing descriptions via LLM",
1056
- "name": "generate",
1057
- "allowNo": false,
1058
- "type": "boolean"
1059
1036
  }
1060
1037
  },
1061
1038
  "hasDynamicHelp": false,
1062
1039
  "hiddenAliases": [],
1063
- "id": "catalog:doctor",
1040
+ "id": "auth:logout",
1064
1041
  "pluginAlias": "faces-cli",
1065
1042
  "pluginName": "faces-cli",
1066
1043
  "pluginType": "core",
@@ -1070,14 +1047,14 @@
1070
1047
  "relativePath": [
1071
1048
  "dist",
1072
1049
  "commands",
1073
- "catalog",
1074
- "doctor.js"
1050
+ "auth",
1051
+ "logout.js"
1075
1052
  ]
1076
1053
  },
1077
- "catalog:list": {
1054
+ "auth:refresh": {
1078
1055
  "aliases": [],
1079
1056
  "args": {},
1080
- "description": "List all faces in the local catalog",
1057
+ "description": "Exchange current JWT for a fresh one",
1081
1058
  "flags": {
1082
1059
  "json": {
1083
1060
  "description": "Format output as json.",
@@ -1113,7 +1090,7 @@
1113
1090
  },
1114
1091
  "hasDynamicHelp": false,
1115
1092
  "hiddenAliases": [],
1116
- "id": "catalog:list",
1093
+ "id": "auth:refresh",
1117
1094
  "pluginAlias": "faces-cli",
1118
1095
  "pluginName": "faces-cli",
1119
1096
  "pluginType": "core",
@@ -1123,14 +1100,14 @@
1123
1100
  "relativePath": [
1124
1101
  "dist",
1125
1102
  "commands",
1126
- "catalog",
1127
- "list.js"
1103
+ "auth",
1104
+ "refresh.js"
1128
1105
  ]
1129
1106
  },
1130
- "catalog:manyfaced": {
1107
+ "auth:register": {
1131
1108
  "aliases": [],
1132
1109
  "args": {},
1133
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1110
+ "description": "Create a new Faces account",
1134
1111
  "flags": {
1135
1112
  "json": {
1136
1113
  "description": "Format output as json.",
@@ -1163,37 +1140,60 @@
1163
1140
  "multiple": false,
1164
1141
  "type": "option"
1165
1142
  },
1166
- "skill": {
1167
- "description": "Show details for a specific skill",
1168
- "name": "skill",
1143
+ "email": {
1144
+ "description": "Email address",
1145
+ "name": "email",
1146
+ "required": true,
1169
1147
  "hasDynamicHelp": false,
1170
1148
  "multiple": false,
1171
1149
  "type": "option"
1172
1150
  },
1173
- "install": {
1174
- "description": "Install a skill by name",
1175
- "name": "install",
1151
+ "password": {
1152
+ "description": "Password",
1153
+ "name": "password",
1154
+ "required": true,
1176
1155
  "hasDynamicHelp": false,
1177
1156
  "multiple": false,
1178
1157
  "type": "option"
1179
1158
  },
1180
- "skills-dir": {
1181
- "description": "Directory to install skills into (required for --install)",
1182
- "name": "skills-dir",
1159
+ "name": {
1160
+ "description": "Display name (defaults to username)",
1161
+ "name": "name",
1183
1162
  "hasDynamicHelp": false,
1184
1163
  "multiple": false,
1185
1164
  "type": "option"
1186
1165
  },
1187
- "refresh": {
1188
- "description": "Force refresh the skill index (ignore cache)",
1189
- "name": "refresh",
1190
- "allowNo": false,
1191
- "type": "boolean"
1166
+ "username": {
1167
+ "description": "Username (lowercase, dashes, numbers)",
1168
+ "name": "username",
1169
+ "required": true,
1170
+ "hasDynamicHelp": false,
1171
+ "multiple": false,
1172
+ "type": "option"
1173
+ },
1174
+ "invite-key": {
1175
+ "description": "Invite key (if required)",
1176
+ "name": "invite-key",
1177
+ "hasDynamicHelp": false,
1178
+ "multiple": false,
1179
+ "type": "option"
1180
+ },
1181
+ "plan": {
1182
+ "description": "Plan to subscribe to: \"free\" ($5 activation) or \"connect\" ($17/mo, no activation fee)",
1183
+ "name": "plan",
1184
+ "default": "free",
1185
+ "hasDynamicHelp": false,
1186
+ "multiple": false,
1187
+ "options": [
1188
+ "free",
1189
+ "connect"
1190
+ ],
1191
+ "type": "option"
1192
1192
  }
1193
1193
  },
1194
1194
  "hasDynamicHelp": false,
1195
1195
  "hiddenAliases": [],
1196
- "id": "catalog:manyfaced",
1196
+ "id": "auth:register",
1197
1197
  "pluginAlias": "faces-cli",
1198
1198
  "pluginName": "faces-cli",
1199
1199
  "pluginType": "core",
@@ -1203,20 +1203,14 @@
1203
1203
  "relativePath": [
1204
1204
  "dist",
1205
1205
  "commands",
1206
- "catalog",
1207
- "manyfaced.js"
1206
+ "auth",
1207
+ "register.js"
1208
1208
  ]
1209
1209
  },
1210
- "chat:chat": {
1210
+ "auth:whoami": {
1211
1211
  "aliases": [],
1212
- "args": {
1213
- "face_username": {
1214
- "description": "Face alias (or alias@model)",
1215
- "name": "face_username",
1216
- "required": true
1217
- }
1218
- },
1219
- "description": "Chat via a face. Auto-routes to the correct API endpoint based on model provider.",
1212
+ "args": {},
1213
+ "description": "Print current user profile and auth diagnostic",
1220
1214
  "flags": {
1221
1215
  "json": {
1222
1216
  "description": "Format output as json.",
@@ -1248,67 +1242,115 @@
1248
1242
  "hasDynamicHelp": false,
1249
1243
  "multiple": false,
1250
1244
  "type": "option"
1245
+ }
1246
+ },
1247
+ "hasDynamicHelp": false,
1248
+ "hiddenAliases": [],
1249
+ "id": "auth:whoami",
1250
+ "pluginAlias": "faces-cli",
1251
+ "pluginName": "faces-cli",
1252
+ "pluginType": "core",
1253
+ "strict": true,
1254
+ "enableJsonFlag": true,
1255
+ "isESM": true,
1256
+ "relativePath": [
1257
+ "dist",
1258
+ "commands",
1259
+ "auth",
1260
+ "whoami.js"
1261
+ ]
1262
+ },
1263
+ "compile:import": {
1264
+ "aliases": [],
1265
+ "args": {
1266
+ "face_id": {
1267
+ "description": "Face alias",
1268
+ "name": "face_id",
1269
+ "required": true
1270
+ }
1271
+ },
1272
+ "description": "Import a YouTube video into a face via server-side download and transcription",
1273
+ "flags": {
1274
+ "json": {
1275
+ "description": "Format output as json.",
1276
+ "helpGroup": "GLOBAL",
1277
+ "name": "json",
1278
+ "allowNo": false,
1279
+ "type": "boolean"
1251
1280
  },
1252
- "message": {
1253
- "char": "m",
1254
- "description": "User message (repeatable)",
1255
- "name": "message",
1256
- "required": false,
1281
+ "base-url": {
1282
+ "description": "API base URL",
1283
+ "env": "FACES_BASE_URL",
1284
+ "name": "base-url",
1257
1285
  "hasDynamicHelp": false,
1258
- "multiple": true,
1286
+ "multiple": false,
1259
1287
  "type": "option"
1260
1288
  },
1261
- "llm": {
1262
- "description": "LLM override (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1263
- "name": "llm",
1289
+ "token": {
1290
+ "description": "JWT bearer token",
1291
+ "env": "FACES_TOKEN",
1292
+ "name": "token",
1264
1293
  "hasDynamicHelp": false,
1265
1294
  "multiple": false,
1266
1295
  "type": "option"
1267
1296
  },
1268
- "system": {
1269
- "description": "System prompt / instructions",
1270
- "name": "system",
1297
+ "api-key": {
1298
+ "description": "API key",
1299
+ "env": "FACES_API_KEY",
1300
+ "name": "api-key",
1271
1301
  "hasDynamicHelp": false,
1272
1302
  "multiple": false,
1273
1303
  "type": "option"
1274
1304
  },
1275
- "stream": {
1276
- "description": "Stream the response",
1277
- "name": "stream",
1278
- "allowNo": false,
1279
- "type": "boolean"
1305
+ "url": {
1306
+ "description": "YouTube URL (youtube.com/watch?v=... or youtu.be/...)",
1307
+ "name": "url",
1308
+ "required": true,
1309
+ "hasDynamicHelp": false,
1310
+ "multiple": false,
1311
+ "type": "option"
1280
1312
  },
1281
- "max-tokens": {
1282
- "description": "Max tokens",
1283
- "name": "max-tokens",
1313
+ "type": {
1314
+ "description": "\"document\" for solo talks, lectures, monologues; \"thread\" for interviews or multi-speaker conversations",
1315
+ "name": "type",
1316
+ "default": "document",
1284
1317
  "hasDynamicHelp": false,
1285
1318
  "multiple": false,
1319
+ "options": [
1320
+ "document",
1321
+ "thread"
1322
+ ],
1286
1323
  "type": "option"
1287
1324
  },
1288
- "temperature": {
1289
- "description": "Temperature (0.0-2.0)",
1290
- "name": "temperature",
1325
+ "perspective": {
1326
+ "description": "\"first-person\" if the face is the speaker; \"third-person\" if the video is about the face",
1327
+ "name": "perspective",
1328
+ "default": "third-person",
1291
1329
  "hasDynamicHelp": false,
1292
1330
  "multiple": false,
1331
+ "options": [
1332
+ "first-person",
1333
+ "third-person"
1334
+ ],
1293
1335
  "type": "option"
1294
1336
  },
1295
- "file": {
1296
- "description": "Read message from file",
1297
- "name": "file",
1337
+ "face-speaker": {
1338
+ "description": "For --type thread: AssemblyAI speaker label (e.g. \"A\") that corresponds to the face. Defaults to first detected speaker.",
1339
+ "name": "face-speaker",
1298
1340
  "hasDynamicHelp": false,
1299
1341
  "multiple": false,
1300
1342
  "type": "option"
1301
1343
  },
1302
- "responses": {
1303
- "description": "Use OpenAI Responses API instead of Chat Completions",
1304
- "name": "responses",
1344
+ "no-wait": {
1345
+ "description": "Return immediately after import starts (do not poll for transcription). Prints the ID for manual polling.",
1346
+ "name": "no-wait",
1305
1347
  "allowNo": false,
1306
1348
  "type": "boolean"
1307
1349
  }
1308
1350
  },
1309
1351
  "hasDynamicHelp": false,
1310
1352
  "hiddenAliases": [],
1311
- "id": "chat:chat",
1353
+ "id": "compile:import",
1312
1354
  "pluginAlias": "faces-cli",
1313
1355
  "pluginName": "faces-cli",
1314
1356
  "pluginType": "core",
@@ -1318,20 +1360,20 @@
1318
1360
  "relativePath": [
1319
1361
  "dist",
1320
1362
  "commands",
1321
- "chat",
1322
- "chat.js"
1363
+ "compile",
1364
+ "import.js"
1323
1365
  ]
1324
1366
  },
1325
- "chat:messages": {
1367
+ "compile:upload": {
1326
1368
  "aliases": [],
1327
1369
  "args": {
1328
- "face_model": {
1329
- "description": "Face model (e.g. myface or myface@claude-sonnet-4-6)",
1330
- "name": "face_model",
1370
+ "alias": {
1371
+ "description": "Face alias",
1372
+ "name": "alias",
1331
1373
  "required": true
1332
1374
  }
1333
1375
  },
1334
- "description": "Anthropic Messages API proxy via a face (alias: chat:chat auto-routes Anthropic models here)",
1376
+ "description": "Upload a file (text/PDF/audio/video) to compile into a face",
1335
1377
  "flags": {
1336
1378
  "json": {
1337
1379
  "description": "Format output as json.",
@@ -1364,40 +1406,55 @@
1364
1406
  "multiple": false,
1365
1407
  "type": "option"
1366
1408
  },
1367
- "message": {
1368
- "char": "m",
1369
- "description": "User message (repeatable)",
1370
- "name": "message",
1409
+ "file": {
1410
+ "description": "File to upload",
1411
+ "name": "file",
1371
1412
  "required": true,
1372
1413
  "hasDynamicHelp": false,
1373
- "multiple": true,
1414
+ "multiple": false,
1374
1415
  "type": "option"
1375
1416
  },
1376
- "system": {
1377
- "description": "System prompt",
1378
- "name": "system",
1417
+ "kind": {
1418
+ "description": "Upload kind: document or thread",
1419
+ "name": "kind",
1420
+ "default": "document",
1421
+ "hasDynamicHelp": false,
1422
+ "multiple": false,
1423
+ "options": [
1424
+ "document",
1425
+ "thread"
1426
+ ],
1427
+ "type": "option"
1428
+ },
1429
+ "perspective": {
1430
+ "description": "Perspective (document only)",
1431
+ "name": "perspective",
1432
+ "default": "third-person",
1433
+ "hasDynamicHelp": false,
1434
+ "multiple": false,
1435
+ "options": [
1436
+ "first-person",
1437
+ "third-person"
1438
+ ],
1439
+ "type": "option"
1440
+ },
1441
+ "face-speaker": {
1442
+ "description": "Speaker name to map to the face (thread only). If omitted, auto-detected from face name.",
1443
+ "name": "face-speaker",
1379
1444
  "hasDynamicHelp": false,
1380
1445
  "multiple": false,
1381
1446
  "type": "option"
1382
1447
  },
1383
- "stream": {
1384
- "description": "Stream the response",
1385
- "name": "stream",
1448
+ "no-wait": {
1449
+ "description": "Return immediately after upload (do not poll for transcription). Prints the ID for manual polling.",
1450
+ "name": "no-wait",
1386
1451
  "allowNo": false,
1387
1452
  "type": "boolean"
1388
- },
1389
- "max-tokens": {
1390
- "description": "Max tokens",
1391
- "name": "max-tokens",
1392
- "default": 1024,
1393
- "hasDynamicHelp": false,
1394
- "multiple": false,
1395
- "type": "option"
1396
1453
  }
1397
1454
  },
1398
1455
  "hasDynamicHelp": false,
1399
1456
  "hiddenAliases": [],
1400
- "id": "chat:messages",
1457
+ "id": "compile:upload",
1401
1458
  "pluginAlias": "faces-cli",
1402
1459
  "pluginName": "faces-cli",
1403
1460
  "pluginType": "core",
@@ -1407,20 +1464,20 @@
1407
1464
  "relativePath": [
1408
1465
  "dist",
1409
1466
  "commands",
1410
- "chat",
1411
- "messages.js"
1467
+ "compile",
1468
+ "upload.js"
1412
1469
  ]
1413
1470
  },
1414
- "chat:responses": {
1471
+ "chat:chat": {
1415
1472
  "aliases": [],
1416
1473
  "args": {
1417
- "face_model": {
1418
- "description": "Face model (e.g. myface or myface@gpt-4o)",
1419
- "name": "face_model",
1474
+ "face_username": {
1475
+ "description": "Face alias (or alias@model)",
1476
+ "name": "face_username",
1420
1477
  "required": true
1421
1478
  }
1422
1479
  },
1423
- "description": "OpenAI Responses API proxy via a face (alias: chat:chat --responses)",
1480
+ "description": "Chat via a face. Auto-routes to the correct API endpoint based on model provider.",
1424
1481
  "flags": {
1425
1482
  "json": {
1426
1483
  "description": "Format output as json.",
@@ -1455,16 +1512,23 @@
1455
1512
  },
1456
1513
  "message": {
1457
1514
  "char": "m",
1458
- "description": "User input message",
1515
+ "description": "User message (repeatable)",
1459
1516
  "name": "message",
1460
- "required": true,
1517
+ "required": false,
1518
+ "hasDynamicHelp": false,
1519
+ "multiple": true,
1520
+ "type": "option"
1521
+ },
1522
+ "llm": {
1523
+ "description": "LLM override (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1524
+ "name": "llm",
1461
1525
  "hasDynamicHelp": false,
1462
1526
  "multiple": false,
1463
1527
  "type": "option"
1464
1528
  },
1465
- "instructions": {
1466
- "description": "System instructions",
1467
- "name": "instructions",
1529
+ "system": {
1530
+ "description": "System prompt / instructions",
1531
+ "name": "system",
1468
1532
  "hasDynamicHelp": false,
1469
1533
  "multiple": false,
1470
1534
  "type": "option"
@@ -1474,11 +1538,38 @@
1474
1538
  "name": "stream",
1475
1539
  "allowNo": false,
1476
1540
  "type": "boolean"
1541
+ },
1542
+ "max-tokens": {
1543
+ "description": "Max tokens",
1544
+ "name": "max-tokens",
1545
+ "hasDynamicHelp": false,
1546
+ "multiple": false,
1547
+ "type": "option"
1548
+ },
1549
+ "temperature": {
1550
+ "description": "Temperature (0.0-2.0)",
1551
+ "name": "temperature",
1552
+ "hasDynamicHelp": false,
1553
+ "multiple": false,
1554
+ "type": "option"
1555
+ },
1556
+ "file": {
1557
+ "description": "Read message from file",
1558
+ "name": "file",
1559
+ "hasDynamicHelp": false,
1560
+ "multiple": false,
1561
+ "type": "option"
1562
+ },
1563
+ "responses": {
1564
+ "description": "Use OpenAI Responses API instead of Chat Completions",
1565
+ "name": "responses",
1566
+ "allowNo": false,
1567
+ "type": "boolean"
1477
1568
  }
1478
1569
  },
1479
1570
  "hasDynamicHelp": false,
1480
1571
  "hiddenAliases": [],
1481
- "id": "chat:responses",
1572
+ "id": "chat:chat",
1482
1573
  "pluginAlias": "faces-cli",
1483
1574
  "pluginName": "faces-cli",
1484
1575
  "pluginType": "core",
@@ -1489,19 +1580,19 @@
1489
1580
  "dist",
1490
1581
  "commands",
1491
1582
  "chat",
1492
- "responses.js"
1583
+ "chat.js"
1493
1584
  ]
1494
1585
  },
1495
- "compile:import": {
1586
+ "chat:messages": {
1496
1587
  "aliases": [],
1497
1588
  "args": {
1498
- "face_id": {
1499
- "description": "Face alias",
1500
- "name": "face_id",
1589
+ "face_model": {
1590
+ "description": "Face model (e.g. myface or myface@claude-sonnet-4-6)",
1591
+ "name": "face_model",
1501
1592
  "required": true
1502
1593
  }
1503
1594
  },
1504
- "description": "Import a YouTube video into a face via server-side download and transcription",
1595
+ "description": "Anthropic Messages API proxy via a face (alias: chat:chat auto-routes Anthropic models here)",
1505
1596
  "flags": {
1506
1597
  "json": {
1507
1598
  "description": "Format output as json.",
@@ -1534,55 +1625,40 @@
1534
1625
  "multiple": false,
1535
1626
  "type": "option"
1536
1627
  },
1537
- "url": {
1538
- "description": "YouTube URL (youtube.com/watch?v=... or youtu.be/...)",
1539
- "name": "url",
1628
+ "message": {
1629
+ "char": "m",
1630
+ "description": "User message (repeatable)",
1631
+ "name": "message",
1540
1632
  "required": true,
1541
1633
  "hasDynamicHelp": false,
1542
- "multiple": false,
1634
+ "multiple": true,
1543
1635
  "type": "option"
1544
1636
  },
1545
- "type": {
1546
- "description": "\"document\" for solo talks, lectures, monologues; \"thread\" for interviews or multi-speaker conversations",
1547
- "name": "type",
1548
- "default": "document",
1637
+ "system": {
1638
+ "description": "System prompt",
1639
+ "name": "system",
1549
1640
  "hasDynamicHelp": false,
1550
1641
  "multiple": false,
1551
- "options": [
1552
- "document",
1553
- "thread"
1554
- ],
1555
1642
  "type": "option"
1556
1643
  },
1557
- "perspective": {
1558
- "description": "\"first-person\" if the face is the speaker; \"third-person\" if the video is about the face",
1559
- "name": "perspective",
1560
- "default": "third-person",
1561
- "hasDynamicHelp": false,
1562
- "multiple": false,
1563
- "options": [
1564
- "first-person",
1565
- "third-person"
1566
- ],
1567
- "type": "option"
1644
+ "stream": {
1645
+ "description": "Stream the response",
1646
+ "name": "stream",
1647
+ "allowNo": false,
1648
+ "type": "boolean"
1568
1649
  },
1569
- "face-speaker": {
1570
- "description": "For --type thread: AssemblyAI speaker label (e.g. \"A\") that corresponds to the face. Defaults to first detected speaker.",
1571
- "name": "face-speaker",
1650
+ "max-tokens": {
1651
+ "description": "Max tokens",
1652
+ "name": "max-tokens",
1653
+ "default": 1024,
1572
1654
  "hasDynamicHelp": false,
1573
1655
  "multiple": false,
1574
1656
  "type": "option"
1575
- },
1576
- "no-wait": {
1577
- "description": "Return immediately after import starts (do not poll for transcription). Prints the ID for manual polling.",
1578
- "name": "no-wait",
1579
- "allowNo": false,
1580
- "type": "boolean"
1581
1657
  }
1582
1658
  },
1583
1659
  "hasDynamicHelp": false,
1584
1660
  "hiddenAliases": [],
1585
- "id": "compile:import",
1661
+ "id": "chat:messages",
1586
1662
  "pluginAlias": "faces-cli",
1587
1663
  "pluginName": "faces-cli",
1588
1664
  "pluginType": "core",
@@ -1592,20 +1668,20 @@
1592
1668
  "relativePath": [
1593
1669
  "dist",
1594
1670
  "commands",
1595
- "compile",
1596
- "import.js"
1671
+ "chat",
1672
+ "messages.js"
1597
1673
  ]
1598
1674
  },
1599
- "compile:upload": {
1675
+ "chat:responses": {
1600
1676
  "aliases": [],
1601
1677
  "args": {
1602
- "alias": {
1603
- "description": "Face alias",
1604
- "name": "alias",
1678
+ "face_model": {
1679
+ "description": "Face model (e.g. myface or myface@gpt-4o)",
1680
+ "name": "face_model",
1605
1681
  "required": true
1606
1682
  }
1607
1683
  },
1608
- "description": "Upload a file (text/PDF/audio/video) to compile into a face",
1684
+ "description": "OpenAI Responses API proxy via a face (alias: chat:chat --responses)",
1609
1685
  "flags": {
1610
1686
  "json": {
1611
1687
  "description": "Format output as json.",
@@ -1638,55 +1714,32 @@
1638
1714
  "multiple": false,
1639
1715
  "type": "option"
1640
1716
  },
1641
- "file": {
1642
- "description": "File to upload",
1643
- "name": "file",
1717
+ "message": {
1718
+ "char": "m",
1719
+ "description": "User input message",
1720
+ "name": "message",
1644
1721
  "required": true,
1645
1722
  "hasDynamicHelp": false,
1646
1723
  "multiple": false,
1647
1724
  "type": "option"
1648
1725
  },
1649
- "kind": {
1650
- "description": "Upload kind: document or thread",
1651
- "name": "kind",
1652
- "default": "document",
1653
- "hasDynamicHelp": false,
1654
- "multiple": false,
1655
- "options": [
1656
- "document",
1657
- "thread"
1658
- ],
1659
- "type": "option"
1660
- },
1661
- "perspective": {
1662
- "description": "Perspective (document only)",
1663
- "name": "perspective",
1664
- "default": "third-person",
1665
- "hasDynamicHelp": false,
1666
- "multiple": false,
1667
- "options": [
1668
- "first-person",
1669
- "third-person"
1670
- ],
1671
- "type": "option"
1672
- },
1673
- "face-speaker": {
1674
- "description": "Speaker name to map to the face (thread only). If omitted, auto-detected from face name.",
1675
- "name": "face-speaker",
1726
+ "instructions": {
1727
+ "description": "System instructions",
1728
+ "name": "instructions",
1676
1729
  "hasDynamicHelp": false,
1677
1730
  "multiple": false,
1678
1731
  "type": "option"
1679
1732
  },
1680
- "no-wait": {
1681
- "description": "Return immediately after upload (do not poll for transcription). Prints the ID for manual polling.",
1682
- "name": "no-wait",
1733
+ "stream": {
1734
+ "description": "Stream the response",
1735
+ "name": "stream",
1683
1736
  "allowNo": false,
1684
1737
  "type": "boolean"
1685
1738
  }
1686
1739
  },
1687
1740
  "hasDynamicHelp": false,
1688
1741
  "hiddenAliases": [],
1689
- "id": "compile:upload",
1742
+ "id": "chat:responses",
1690
1743
  "pluginAlias": "faces-cli",
1691
1744
  "pluginName": "faces-cli",
1692
1745
  "pluginType": "core",
@@ -1696,8 +1749,8 @@
1696
1749
  "relativePath": [
1697
1750
  "dist",
1698
1751
  "commands",
1699
- "compile",
1700
- "upload.js"
1752
+ "chat",
1753
+ "responses.js"
1701
1754
  ]
1702
1755
  },
1703
1756
  "config:clear": {
@@ -2162,59 +2215,6 @@
2162
2215
  "update.js"
2163
2216
  ]
2164
2217
  },
2165
- "account:state": {
2166
- "aliases": [],
2167
- "args": {},
2168
- "description": "Full account routing state (plan, balance, onboarding)",
2169
- "flags": {
2170
- "json": {
2171
- "description": "Format output as json.",
2172
- "helpGroup": "GLOBAL",
2173
- "name": "json",
2174
- "allowNo": false,
2175
- "type": "boolean"
2176
- },
2177
- "base-url": {
2178
- "description": "API base URL",
2179
- "env": "FACES_BASE_URL",
2180
- "name": "base-url",
2181
- "hasDynamicHelp": false,
2182
- "multiple": false,
2183
- "type": "option"
2184
- },
2185
- "token": {
2186
- "description": "JWT bearer token",
2187
- "env": "FACES_TOKEN",
2188
- "name": "token",
2189
- "hasDynamicHelp": false,
2190
- "multiple": false,
2191
- "type": "option"
2192
- },
2193
- "api-key": {
2194
- "description": "API key",
2195
- "env": "FACES_API_KEY",
2196
- "name": "api-key",
2197
- "hasDynamicHelp": false,
2198
- "multiple": false,
2199
- "type": "option"
2200
- }
2201
- },
2202
- "hasDynamicHelp": false,
2203
- "hiddenAliases": [],
2204
- "id": "account:state",
2205
- "pluginAlias": "faces-cli",
2206
- "pluginName": "faces-cli",
2207
- "pluginType": "core",
2208
- "strict": true,
2209
- "enableJsonFlag": true,
2210
- "isESM": true,
2211
- "relativePath": [
2212
- "dist",
2213
- "commands",
2214
- "account",
2215
- "state.js"
2216
- ]
2217
- },
2218
2218
  "face:attributes": {
2219
2219
  "aliases": [],
2220
2220
  "args": {},
@@ -4284,5 +4284,5 @@
4284
4284
  ]
4285
4285
  }
4286
4286
  },
4287
- "version": "1.5.13"
4287
+ "version": "1.5.14"
4288
4288
  }