faces-cli 1.5.10 → 1.5.12

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.
@@ -28,7 +28,9 @@ export default class AuthWhoami extends BaseCommand {
28
28
  process.stderr.write(` api_key: not configured\n`);
29
29
  process.stderr.write(` status: not authenticated\n`);
30
30
  }
31
- return diag;
31
+ if (json)
32
+ process.stdout.write(JSON.stringify(diag, null, 2) + '\n');
33
+ process.exit(1);
32
34
  }
33
35
  // Try API key first (priority), then JWT. Always try both and report.
34
36
  let apiKeyResult = null;
@@ -95,6 +97,11 @@ export default class AuthWhoami extends BaseCommand {
95
97
  process.stderr.write(` name: ${winner.data.name}\n`);
96
98
  }
97
99
  }
100
+ if (!diag.authenticated) {
101
+ if (json)
102
+ process.stdout.write(JSON.stringify(diag, null, 2) + '\n');
103
+ process.exit(1);
104
+ }
98
105
  return diag;
99
106
  }
100
107
  }
@@ -14,7 +14,7 @@ export default class BillingTopup extends BaseCommand {
14
14
  const amount = Number.parseFloat(flags.amount);
15
15
  if (Number.isNaN(amount) || amount < 1.0)
16
16
  this.error('Minimum topup is $1.00 (--amount)');
17
- const payload = { amount };
17
+ const payload = { amount_usd: amount };
18
18
  if (flags['payment-ref'])
19
19
  payload.payment_ref = flags['payment-ref'];
20
20
  let data;
@@ -53,23 +53,10 @@
53
53
  "state.js"
54
54
  ]
55
55
  },
56
- "auth:connect": {
56
+ "billing:balance": {
57
57
  "aliases": [],
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
- ],
58
+ "args": {},
59
+ "description": "Show credit balance and payment method status",
73
60
  "flags": {
74
61
  "json": {
75
62
  "description": "Format output as json.",
@@ -101,17 +88,11 @@
101
88
  "hasDynamicHelp": false,
102
89
  "multiple": false,
103
90
  "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"
110
91
  }
111
92
  },
112
93
  "hasDynamicHelp": false,
113
94
  "hiddenAliases": [],
114
- "id": "auth:connect",
95
+ "id": "billing:balance",
115
96
  "pluginAlias": "faces-cli",
116
97
  "pluginName": "faces-cli",
117
98
  "pluginType": "core",
@@ -121,18 +102,14 @@
121
102
  "relativePath": [
122
103
  "dist",
123
104
  "commands",
124
- "auth",
125
- "connect.js"
105
+ "billing",
106
+ "balance.js"
126
107
  ]
127
108
  },
128
- "auth:connections": {
109
+ "billing:card-setup": {
129
110
  "aliases": [],
130
111
  "args": {},
131
- "description": "List connected OAuth provider accounts",
132
- "examples": [
133
- "<%= config.bin %> auth connections",
134
- "<%= config.bin %> auth connections --json"
135
- ],
112
+ "description": "Get a Stripe card setup URL to save a payment method",
136
113
  "flags": {
137
114
  "json": {
138
115
  "description": "Format output as json.",
@@ -168,7 +145,7 @@
168
145
  },
169
146
  "hasDynamicHelp": false,
170
147
  "hiddenAliases": [],
171
- "id": "auth:connections",
148
+ "id": "billing:card-setup",
172
149
  "pluginAlias": "faces-cli",
173
150
  "pluginName": "faces-cli",
174
151
  "pluginType": "core",
@@ -178,26 +155,14 @@
178
155
  "relativePath": [
179
156
  "dist",
180
157
  "commands",
181
- "auth",
182
- "connections.js"
158
+ "billing",
159
+ "card-setup.js"
183
160
  ]
184
161
  },
185
- "auth:disconnect": {
162
+ "billing:checkout": {
186
163
  "aliases": [],
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
- ],
164
+ "args": {},
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.",
@@ -229,11 +194,22 @@
229
194
  "hasDynamicHelp": false,
230
195
  "multiple": false,
231
196
  "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"
232
208
  }
233
209
  },
234
210
  "hasDynamicHelp": false,
235
211
  "hiddenAliases": [],
236
- "id": "auth:disconnect",
212
+ "id": "billing:checkout",
237
213
  "pluginAlias": "faces-cli",
238
214
  "pluginName": "faces-cli",
239
215
  "pluginType": "core",
@@ -243,14 +219,14 @@
243
219
  "relativePath": [
244
220
  "dist",
245
221
  "commands",
246
- "auth",
247
- "disconnect.js"
222
+ "billing",
223
+ "checkout.js"
248
224
  ]
249
225
  },
250
- "auth:login": {
226
+ "billing:llm-costs": {
251
227
  "aliases": [],
252
228
  "args": {},
253
- "description": "Login and save JWT credentials",
229
+ "description": "List available LLMs and their per-token costs",
254
230
  "flags": {
255
231
  "json": {
256
232
  "description": "Format output as json.",
@@ -283,18 +259,9 @@
283
259
  "multiple": false,
284
260
  "type": "option"
285
261
  },
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,
262
+ "provider": {
263
+ "description": "Filter by provider (e.g. openai, anthropic)",
264
+ "name": "provider",
298
265
  "hasDynamicHelp": false,
299
266
  "multiple": false,
300
267
  "type": "option"
@@ -302,7 +269,7 @@
302
269
  },
303
270
  "hasDynamicHelp": false,
304
271
  "hiddenAliases": [],
305
- "id": "auth:login",
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
- "login.js"
282
+ "billing",
283
+ "llm-costs.js"
317
284
  ]
318
285
  },
319
- "auth:logout": {
286
+ "billing:quota": {
320
287
  "aliases": [],
321
288
  "args": {},
322
- "description": "Clear saved credentials",
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:logout",
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
- "logout.js"
335
+ "billing",
336
+ "quota.js"
370
337
  ]
371
338
  },
372
- "auth:refresh": {
339
+ "billing:subscription": {
373
340
  "aliases": [],
374
341
  "args": {},
375
- "description": "Exchange current JWT for a fresh one",
342
+ "description": "Show current plan, face count, and renewal date",
376
343
  "flags": {
377
344
  "json": {
378
345
  "description": "Format output as json.",
@@ -408,7 +375,7 @@
408
375
  },
409
376
  "hasDynamicHelp": false,
410
377
  "hiddenAliases": [],
411
- "id": "auth:refresh",
378
+ "id": "billing:subscription",
412
379
  "pluginAlias": "faces-cli",
413
380
  "pluginName": "faces-cli",
414
381
  "pluginType": "core",
@@ -418,14 +385,14 @@
418
385
  "relativePath": [
419
386
  "dist",
420
387
  "commands",
421
- "auth",
422
- "refresh.js"
388
+ "billing",
389
+ "subscription.js"
423
390
  ]
424
391
  },
425
- "auth:register": {
392
+ "billing:topup": {
426
393
  "aliases": [],
427
394
  "args": {},
428
- "description": "Create a new Faces account",
395
+ "description": "Top up credit balance using saved payment method",
429
396
  "flags": {
430
397
  "json": {
431
398
  "description": "Format output as json.",
@@ -458,60 +425,25 @@
458
425
  "multiple": false,
459
426
  "type": "option"
460
427
  },
461
- "email": {
462
- "description": "Email address",
463
- "name": "email",
464
- "required": true,
465
- "hasDynamicHelp": false,
466
- "multiple": false,
467
- "type": "option"
468
- },
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",
428
+ "amount": {
429
+ "description": "Top-up amount in USD (min $1)",
430
+ "name": "amount",
487
431
  "required": true,
488
432
  "hasDynamicHelp": false,
489
433
  "multiple": false,
490
434
  "type": "option"
491
435
  },
492
- "invite-key": {
493
- "description": "Invite key (if required)",
494
- "name": "invite-key",
495
- "hasDynamicHelp": false,
496
- "multiple": false,
497
- "type": "option"
498
- },
499
- "plan": {
500
- "description": "Plan to subscribe to: \"free\" ($5 activation) or \"connect\" ($17/mo, no activation fee)",
501
- "name": "plan",
502
- "default": "free",
436
+ "payment-ref": {
437
+ "description": "Payment reference (admin/test path)",
438
+ "name": "payment-ref",
503
439
  "hasDynamicHelp": false,
504
440
  "multiple": false,
505
- "options": [
506
- "free",
507
- "connect"
508
- ],
509
441
  "type": "option"
510
442
  }
511
443
  },
512
444
  "hasDynamicHelp": false,
513
445
  "hiddenAliases": [],
514
- "id": "auth:register",
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
- "register.js"
456
+ "billing",
457
+ "topup.js"
526
458
  ]
527
459
  },
528
- "auth:whoami": {
460
+ "billing:usage": {
529
461
  "aliases": [],
530
462
  "args": {},
531
- "description": "Print current user profile and auth diagnostic",
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": "auth:whoami",
526
+ "id": "billing:usage",
568
527
  "pluginAlias": "faces-cli",
569
528
  "pluginName": "faces-cli",
570
529
  "pluginType": "core",
@@ -574,14 +533,14 @@
574
533
  "relativePath": [
575
534
  "dist",
576
535
  "commands",
577
- "auth",
578
- "whoami.js"
536
+ "billing",
537
+ "usage.js"
579
538
  ]
580
539
  },
581
- "billing:balance": {
540
+ "catalog:doctor": {
582
541
  "aliases": [],
583
542
  "args": {},
584
- "description": "Show credit balance and payment method status",
543
+ "description": "Diagnose and repair the local face catalog",
585
544
  "flags": {
586
545
  "json": {
587
546
  "description": "Format output as json.",
@@ -613,11 +572,23 @@
613
572
  "hasDynamicHelp": false,
614
573
  "multiple": false,
615
574
  "type": "option"
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"
616
587
  }
617
588
  },
618
589
  "hasDynamicHelp": false,
619
590
  "hiddenAliases": [],
620
- "id": "billing:balance",
591
+ "id": "catalog:doctor",
621
592
  "pluginAlias": "faces-cli",
622
593
  "pluginName": "faces-cli",
623
594
  "pluginType": "core",
@@ -627,14 +598,14 @@
627
598
  "relativePath": [
628
599
  "dist",
629
600
  "commands",
630
- "billing",
631
- "balance.js"
601
+ "catalog",
602
+ "doctor.js"
632
603
  ]
633
604
  },
634
- "billing:card-setup": {
605
+ "catalog:list": {
635
606
  "aliases": [],
636
607
  "args": {},
637
- "description": "Get a Stripe card setup URL to save a payment method",
608
+ "description": "List all faces in the local catalog",
638
609
  "flags": {
639
610
  "json": {
640
611
  "description": "Format output as json.",
@@ -670,7 +641,7 @@
670
641
  },
671
642
  "hasDynamicHelp": false,
672
643
  "hiddenAliases": [],
673
- "id": "billing:card-setup",
644
+ "id": "catalog:list",
674
645
  "pluginAlias": "faces-cli",
675
646
  "pluginName": "faces-cli",
676
647
  "pluginType": "core",
@@ -680,14 +651,14 @@
680
651
  "relativePath": [
681
652
  "dist",
682
653
  "commands",
683
- "billing",
684
- "card-setup.js"
654
+ "catalog",
655
+ "list.js"
685
656
  ]
686
657
  },
687
- "billing:checkout": {
658
+ "catalog:manyfaced": {
688
659
  "aliases": [],
689
660
  "args": {},
690
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
661
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
691
662
  "flags": {
692
663
  "json": {
693
664
  "description": "Format output as json.",
@@ -720,21 +691,37 @@
720
691
  "multiple": false,
721
692
  "type": "option"
722
693
  },
723
- "plan": {
724
- "description": "Plan to subscribe to",
725
- "name": "plan",
726
- "default": "connect",
694
+ "skill": {
695
+ "description": "Show details for a specific skill",
696
+ "name": "skill",
697
+ "hasDynamicHelp": false,
698
+ "multiple": false,
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",
727
711
  "hasDynamicHelp": false,
728
712
  "multiple": false,
729
- "options": [
730
- "connect"
731
- ],
732
713
  "type": "option"
714
+ },
715
+ "refresh": {
716
+ "description": "Force refresh the skill index (ignore cache)",
717
+ "name": "refresh",
718
+ "allowNo": false,
719
+ "type": "boolean"
733
720
  }
734
721
  },
735
722
  "hasDynamicHelp": false,
736
723
  "hiddenAliases": [],
737
- "id": "billing:checkout",
724
+ "id": "catalog:manyfaced",
738
725
  "pluginAlias": "faces-cli",
739
726
  "pluginName": "faces-cli",
740
727
  "pluginType": "core",
@@ -744,14 +731,27 @@
744
731
  "relativePath": [
745
732
  "dist",
746
733
  "commands",
747
- "billing",
748
- "checkout.js"
734
+ "catalog",
735
+ "manyfaced.js"
749
736
  ]
750
737
  },
751
- "billing:llm-costs": {
738
+ "auth:connect": {
752
739
  "aliases": [],
753
- "args": {},
754
- "description": "List available LLMs and their per-token costs",
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
+ ],
755
755
  "flags": {
756
756
  "json": {
757
757
  "description": "Format output as json.",
@@ -784,17 +784,16 @@
784
784
  "multiple": false,
785
785
  "type": "option"
786
786
  },
787
- "provider": {
788
- "description": "Filter by provider (e.g. openai, anthropic)",
789
- "name": "provider",
790
- "hasDynamicHelp": false,
791
- "multiple": false,
792
- "type": "option"
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:llm-costs",
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
- "llm-costs.js"
806
+ "auth",
807
+ "connect.js"
809
808
  ]
810
809
  },
811
- "billing:quota": {
810
+ "auth:connections": {
812
811
  "aliases": [],
813
812
  "args": {},
814
- "description": "Show compile token quota and per-face stats",
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:quota",
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
- "quota.js"
863
+ "auth",
864
+ "connections.js"
862
865
  ]
863
866
  },
864
- "billing:subscription": {
867
+ "auth:disconnect": {
865
868
  "aliases": [],
866
- "args": {},
867
- "description": "Show current plan, face count, and renewal date",
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.",
@@ -900,7 +915,7 @@
900
915
  },
901
916
  "hasDynamicHelp": false,
902
917
  "hiddenAliases": [],
903
- "id": "billing:subscription",
918
+ "id": "auth:disconnect",
904
919
  "pluginAlias": "faces-cli",
905
920
  "pluginName": "faces-cli",
906
921
  "pluginType": "core",
@@ -910,14 +925,14 @@
910
925
  "relativePath": [
911
926
  "dist",
912
927
  "commands",
913
- "billing",
914
- "subscription.js"
928
+ "auth",
929
+ "disconnect.js"
915
930
  ]
916
931
  },
917
- "billing:topup": {
932
+ "auth:login": {
918
933
  "aliases": [],
919
934
  "args": {},
920
- "description": "Top up credit balance using saved payment method",
935
+ "description": "Login and save JWT credentials",
921
936
  "flags": {
922
937
  "json": {
923
938
  "description": "Format output as json.",
@@ -950,17 +965,18 @@
950
965
  "multiple": false,
951
966
  "type": "option"
952
967
  },
953
- "amount": {
954
- "description": "Top-up amount in USD (min $1)",
955
- "name": "amount",
968
+ "email": {
969
+ "description": "Account email",
970
+ "name": "email",
956
971
  "required": true,
957
972
  "hasDynamicHelp": false,
958
973
  "multiple": false,
959
974
  "type": "option"
960
975
  },
961
- "payment-ref": {
962
- "description": "Payment reference (admin/test path)",
963
- "name": "payment-ref",
976
+ "password": {
977
+ "description": "Account password",
978
+ "name": "password",
979
+ "required": true,
964
980
  "hasDynamicHelp": false,
965
981
  "multiple": false,
966
982
  "type": "option"
@@ -968,7 +984,7 @@
968
984
  },
969
985
  "hasDynamicHelp": false,
970
986
  "hiddenAliases": [],
971
- "id": "billing:topup",
987
+ "id": "auth:login",
972
988
  "pluginAlias": "faces-cli",
973
989
  "pluginName": "faces-cli",
974
990
  "pluginType": "core",
@@ -978,14 +994,14 @@
978
994
  "relativePath": [
979
995
  "dist",
980
996
  "commands",
981
- "billing",
982
- "topup.js"
997
+ "auth",
998
+ "login.js"
983
999
  ]
984
1000
  },
985
- "billing:usage": {
1001
+ "auth:logout": {
986
1002
  "aliases": [],
987
1003
  "args": {},
988
- "description": "Aggregated usage analytics",
1004
+ "description": "Clear saved credentials",
989
1005
  "flags": {
990
1006
  "json": {
991
1007
  "description": "Format output as json.",
@@ -1017,38 +1033,11 @@
1017
1033
  "hasDynamicHelp": false,
1018
1034
  "multiple": false,
1019
1035
  "type": "option"
1020
- },
1021
- "group-by": {
1022
- "description": "Group results",
1023
- "name": "group-by",
1024
- "hasDynamicHelp": false,
1025
- "multiple": false,
1026
- "options": [
1027
- "api_key",
1028
- "model",
1029
- "llm",
1030
- "date"
1031
- ],
1032
- "type": "option"
1033
- },
1034
- "from": {
1035
- "description": "Start date (YYYY-MM-DD)",
1036
- "name": "from",
1037
- "hasDynamicHelp": false,
1038
- "multiple": false,
1039
- "type": "option"
1040
- },
1041
- "to": {
1042
- "description": "End date (YYYY-MM-DD)",
1043
- "name": "to",
1044
- "hasDynamicHelp": false,
1045
- "multiple": false,
1046
- "type": "option"
1047
1036
  }
1048
1037
  },
1049
1038
  "hasDynamicHelp": false,
1050
1039
  "hiddenAliases": [],
1051
- "id": "billing:usage",
1040
+ "id": "auth:logout",
1052
1041
  "pluginAlias": "faces-cli",
1053
1042
  "pluginName": "faces-cli",
1054
1043
  "pluginType": "core",
@@ -1058,14 +1047,14 @@
1058
1047
  "relativePath": [
1059
1048
  "dist",
1060
1049
  "commands",
1061
- "billing",
1062
- "usage.js"
1050
+ "auth",
1051
+ "logout.js"
1063
1052
  ]
1064
1053
  },
1065
- "catalog:doctor": {
1054
+ "auth:refresh": {
1066
1055
  "aliases": [],
1067
1056
  "args": {},
1068
- "description": "Diagnose and repair the local face catalog",
1057
+ "description": "Exchange current JWT for a fresh one",
1069
1058
  "flags": {
1070
1059
  "json": {
1071
1060
  "description": "Format output as json.",
@@ -1097,23 +1086,11 @@
1097
1086
  "hasDynamicHelp": false,
1098
1087
  "multiple": false,
1099
1088
  "type": "option"
1100
- },
1101
- "fix": {
1102
- "description": "Rebuild missing or stale catalog entries from API",
1103
- "name": "fix",
1104
- "allowNo": false,
1105
- "type": "boolean"
1106
- },
1107
- "generate": {
1108
- "description": "Fix + generate missing descriptions via LLM",
1109
- "name": "generate",
1110
- "allowNo": false,
1111
- "type": "boolean"
1112
1089
  }
1113
1090
  },
1114
1091
  "hasDynamicHelp": false,
1115
1092
  "hiddenAliases": [],
1116
- "id": "catalog:doctor",
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
- "doctor.js"
1103
+ "auth",
1104
+ "refresh.js"
1128
1105
  ]
1129
1106
  },
1130
- "catalog:list": {
1107
+ "auth:register": {
1131
1108
  "aliases": [],
1132
1109
  "args": {},
1133
- "description": "List all faces in the local catalog",
1110
+ "description": "Create a new Faces account",
1134
1111
  "flags": {
1135
1112
  "json": {
1136
1113
  "description": "Format output as json.",
@@ -1162,11 +1139,61 @@
1162
1139
  "hasDynamicHelp": false,
1163
1140
  "multiple": false,
1164
1141
  "type": "option"
1142
+ },
1143
+ "email": {
1144
+ "description": "Email address",
1145
+ "name": "email",
1146
+ "required": true,
1147
+ "hasDynamicHelp": false,
1148
+ "multiple": false,
1149
+ "type": "option"
1150
+ },
1151
+ "password": {
1152
+ "description": "Password",
1153
+ "name": "password",
1154
+ "required": true,
1155
+ "hasDynamicHelp": false,
1156
+ "multiple": false,
1157
+ "type": "option"
1158
+ },
1159
+ "name": {
1160
+ "description": "Display name (defaults to username)",
1161
+ "name": "name",
1162
+ "hasDynamicHelp": false,
1163
+ "multiple": false,
1164
+ "type": "option"
1165
+ },
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"
1165
1192
  }
1166
1193
  },
1167
1194
  "hasDynamicHelp": false,
1168
1195
  "hiddenAliases": [],
1169
- "id": "catalog:list",
1196
+ "id": "auth:register",
1170
1197
  "pluginAlias": "faces-cli",
1171
1198
  "pluginName": "faces-cli",
1172
1199
  "pluginType": "core",
@@ -1176,14 +1203,14 @@
1176
1203
  "relativePath": [
1177
1204
  "dist",
1178
1205
  "commands",
1179
- "catalog",
1180
- "list.js"
1206
+ "auth",
1207
+ "register.js"
1181
1208
  ]
1182
1209
  },
1183
- "catalog:manyfaced": {
1210
+ "auth:whoami": {
1184
1211
  "aliases": [],
1185
1212
  "args": {},
1186
- "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
1213
+ "description": "Print current user profile and auth diagnostic",
1187
1214
  "flags": {
1188
1215
  "json": {
1189
1216
  "description": "Format output as json.",
@@ -1215,38 +1242,11 @@
1215
1242
  "hasDynamicHelp": false,
1216
1243
  "multiple": false,
1217
1244
  "type": "option"
1218
- },
1219
- "skill": {
1220
- "description": "Show details for a specific skill",
1221
- "name": "skill",
1222
- "hasDynamicHelp": false,
1223
- "multiple": false,
1224
- "type": "option"
1225
- },
1226
- "install": {
1227
- "description": "Install a skill by name",
1228
- "name": "install",
1229
- "hasDynamicHelp": false,
1230
- "multiple": false,
1231
- "type": "option"
1232
- },
1233
- "skills-dir": {
1234
- "description": "Directory to install skills into (required for --install)",
1235
- "name": "skills-dir",
1236
- "hasDynamicHelp": false,
1237
- "multiple": false,
1238
- "type": "option"
1239
- },
1240
- "refresh": {
1241
- "description": "Force refresh the skill index (ignore cache)",
1242
- "name": "refresh",
1243
- "allowNo": false,
1244
- "type": "boolean"
1245
1245
  }
1246
1246
  },
1247
1247
  "hasDynamicHelp": false,
1248
1248
  "hiddenAliases": [],
1249
- "id": "catalog:manyfaced",
1249
+ "id": "auth:whoami",
1250
1250
  "pluginAlias": "faces-cli",
1251
1251
  "pluginName": "faces-cli",
1252
1252
  "pluginType": "core",
@@ -1256,8 +1256,8 @@
1256
1256
  "relativePath": [
1257
1257
  "dist",
1258
1258
  "commands",
1259
- "catalog",
1260
- "manyfaced.js"
1259
+ "auth",
1260
+ "whoami.js"
1261
1261
  ]
1262
1262
  },
1263
1263
  "chat:chat": {
@@ -4231,5 +4231,5 @@
4231
4231
  ]
4232
4232
  }
4233
4233
  },
4234
- "version": "1.5.10"
4234
+ "version": "1.5.12"
4235
4235
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "faces-cli",
3
- "version": "1.5.10",
3
+ "version": "1.5.12",
4
4
  "description": "CLI for the Faces AI platform",
5
5
  "type": "module",
6
6
  "author": "sybileak <sybileak@proton.me>",