faces-cli 1.7.6 → 1.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/commands/chat/chat.js +8 -0
  2. package/dist/utils.d.ts +0 -15
  3. package/dist/utils.js +0 -75
  4. package/oclif.manifest.json +484 -1394
  5. package/package.json +1 -1
  6. package/dist/commands/billing/quota.d.ts +0 -10
  7. package/dist/commands/billing/quota.js +0 -12
  8. package/dist/commands/billing/subscription.d.ts +0 -10
  9. package/dist/commands/billing/subscription.js +0 -24
  10. package/dist/commands/face/upload.d.ts +0 -17
  11. package/dist/commands/face/upload.js +0 -66
  12. package/dist/commands/voiceprint/build-status.d.ts +0 -14
  13. package/dist/commands/voiceprint/build-status.js +0 -46
  14. package/dist/commands/voiceprint/build.d.ts +0 -23
  15. package/dist/commands/voiceprint/build.js +0 -109
  16. package/dist/commands/voiceprint/get.d.ts +0 -14
  17. package/dist/commands/voiceprint/get.js +0 -47
  18. package/dist/commands/voiceprint/refine-status.d.ts +0 -14
  19. package/dist/commands/voiceprint/refine-status.js +0 -43
  20. package/dist/commands/voiceprint/refine.d.ts +0 -23
  21. package/dist/commands/voiceprint/refine.js +0 -88
  22. package/dist/commands/voiceprint/revert.d.ts +0 -14
  23. package/dist/commands/voiceprint/revert.js +0 -36
  24. package/dist/commands/voiceprint/score-status.d.ts +0 -14
  25. package/dist/commands/voiceprint/score-status.js +0 -46
  26. package/dist/commands/voiceprint/score.d.ts +0 -24
  27. package/dist/commands/voiceprint/score.js +0 -114
  28. package/dist/commands/voiceprint/upload.d.ts +0 -17
  29. package/dist/commands/voiceprint/upload.js +0 -66
  30. package/dist/commands/voiceprint/versions.d.ts +0 -14
  31. package/dist/commands/voiceprint/versions.js +0 -44
  32. package/dist/voiceprint.d.ts +0 -28
  33. package/dist/voiceprint.js +0 -55
@@ -1113,112 +1113,6 @@
1113
1113
  "llm-costs.js"
1114
1114
  ]
1115
1115
  },
1116
- "billing:quota": {
1117
- "aliases": [],
1118
- "args": {},
1119
- "description": "Show compilation stats per face (deprecated — use compile:stats)",
1120
- "flags": {
1121
- "json": {
1122
- "description": "Format output as json.",
1123
- "helpGroup": "GLOBAL",
1124
- "name": "json",
1125
- "allowNo": false,
1126
- "type": "boolean"
1127
- },
1128
- "base-url": {
1129
- "description": "API base URL",
1130
- "env": "FACES_BASE_URL",
1131
- "name": "base-url",
1132
- "hasDynamicHelp": false,
1133
- "multiple": false,
1134
- "type": "option"
1135
- },
1136
- "token": {
1137
- "description": "JWT bearer token",
1138
- "env": "FACES_TOKEN",
1139
- "name": "token",
1140
- "hasDynamicHelp": false,
1141
- "multiple": false,
1142
- "type": "option"
1143
- },
1144
- "api-key": {
1145
- "description": "API key",
1146
- "env": "FACES_API_KEY",
1147
- "name": "api-key",
1148
- "hasDynamicHelp": false,
1149
- "multiple": false,
1150
- "type": "option"
1151
- }
1152
- },
1153
- "hasDynamicHelp": false,
1154
- "hiddenAliases": [],
1155
- "id": "billing:quota",
1156
- "pluginAlias": "faces-cli",
1157
- "pluginName": "faces-cli",
1158
- "pluginType": "core",
1159
- "strict": true,
1160
- "enableJsonFlag": true,
1161
- "isESM": true,
1162
- "relativePath": [
1163
- "dist",
1164
- "commands",
1165
- "billing",
1166
- "quota.js"
1167
- ]
1168
- },
1169
- "billing:subscription": {
1170
- "aliases": [],
1171
- "args": {},
1172
- "description": "Show current plan, face count, and renewal date",
1173
- "flags": {
1174
- "json": {
1175
- "description": "Format output as json.",
1176
- "helpGroup": "GLOBAL",
1177
- "name": "json",
1178
- "allowNo": false,
1179
- "type": "boolean"
1180
- },
1181
- "base-url": {
1182
- "description": "API base URL",
1183
- "env": "FACES_BASE_URL",
1184
- "name": "base-url",
1185
- "hasDynamicHelp": false,
1186
- "multiple": false,
1187
- "type": "option"
1188
- },
1189
- "token": {
1190
- "description": "JWT bearer token",
1191
- "env": "FACES_TOKEN",
1192
- "name": "token",
1193
- "hasDynamicHelp": false,
1194
- "multiple": false,
1195
- "type": "option"
1196
- },
1197
- "api-key": {
1198
- "description": "API key",
1199
- "env": "FACES_API_KEY",
1200
- "name": "api-key",
1201
- "hasDynamicHelp": false,
1202
- "multiple": false,
1203
- "type": "option"
1204
- }
1205
- },
1206
- "hasDynamicHelp": false,
1207
- "hiddenAliases": [],
1208
- "id": "billing:subscription",
1209
- "pluginAlias": "faces-cli",
1210
- "pluginName": "faces-cli",
1211
- "pluginType": "core",
1212
- "strict": true,
1213
- "enableJsonFlag": true,
1214
- "isESM": true,
1215
- "relativePath": [
1216
- "dist",
1217
- "commands",
1218
- "billing",
1219
- "subscription.js"
1220
- ]
1221
- },
1222
1116
  "billing:topup": {
1223
1117
  "aliases": [],
1224
1118
  "args": {},
@@ -2326,10 +2220,10 @@
2326
2220
  "show.js"
2327
2221
  ]
2328
2222
  },
2329
- "keys:create": {
2223
+ "face:attributes": {
2330
2224
  "aliases": [],
2331
2225
  "args": {},
2332
- "description": "Create a new API key (JWT required). The new key is saved to ~/.faces/config.json as api_key by default; pass --no-save to skip.",
2226
+ "description": "List all supported attribute keys",
2333
2227
  "flags": {
2334
2228
  "json": {
2335
2229
  "description": "Format output as json.",
@@ -2361,53 +2255,11 @@
2361
2255
  "hasDynamicHelp": false,
2362
2256
  "multiple": false,
2363
2257
  "type": "option"
2364
- },
2365
- "name": {
2366
- "description": "Key name/label",
2367
- "name": "name",
2368
- "required": true,
2369
- "hasDynamicHelp": false,
2370
- "multiple": false,
2371
- "type": "option"
2372
- },
2373
- "expires-days": {
2374
- "description": "Expiry in days (omit for no expiry)",
2375
- "name": "expires-days",
2376
- "hasDynamicHelp": false,
2377
- "multiple": false,
2378
- "type": "option"
2379
- },
2380
- "budget": {
2381
- "description": "Spend budget in USD",
2382
- "name": "budget",
2383
- "hasDynamicHelp": false,
2384
- "multiple": false,
2385
- "type": "option"
2386
- },
2387
- "face": {
2388
- "description": "Allowed face alias (repeatable)",
2389
- "name": "face",
2390
- "hasDynamicHelp": false,
2391
- "multiple": true,
2392
- "type": "option"
2393
- },
2394
- "model": {
2395
- "description": "Allowed model name (repeatable)",
2396
- "name": "model",
2397
- "hasDynamicHelp": false,
2398
- "multiple": true,
2399
- "type": "option"
2400
- },
2401
- "save": {
2402
- "description": "Save the new key to ~/.faces/config.json as api_key (default: true; use --no-save to skip)",
2403
- "name": "save",
2404
- "allowNo": true,
2405
- "type": "boolean"
2406
2258
  }
2407
2259
  },
2408
2260
  "hasDynamicHelp": false,
2409
2261
  "hiddenAliases": [],
2410
- "id": "keys:create",
2262
+ "id": "face:attributes",
2411
2263
  "pluginAlias": "faces-cli",
2412
2264
  "pluginName": "faces-cli",
2413
2265
  "pluginType": "core",
@@ -2417,14 +2269,14 @@
2417
2269
  "relativePath": [
2418
2270
  "dist",
2419
2271
  "commands",
2420
- "keys",
2421
- "create.js"
2272
+ "face",
2273
+ "attributes.js"
2422
2274
  ]
2423
2275
  },
2424
- "keys:list": {
2276
+ "face:create": {
2425
2277
  "aliases": [],
2426
2278
  "args": {},
2427
- "description": "List all API keys (JWT required)",
2279
+ "description": "Create a new face",
2428
2280
  "flags": {
2429
2281
  "json": {
2430
2282
  "description": "Format output as json.",
@@ -2456,11 +2308,86 @@
2456
2308
  "hasDynamicHelp": false,
2457
2309
  "multiple": false,
2458
2310
  "type": "option"
2311
+ },
2312
+ "name": {
2313
+ "description": "Display name",
2314
+ "name": "name",
2315
+ "required": true,
2316
+ "hasDynamicHelp": false,
2317
+ "multiple": false,
2318
+ "type": "option"
2319
+ },
2320
+ "alias": {
2321
+ "description": "Unique alias slug",
2322
+ "name": "alias",
2323
+ "required": true,
2324
+ "hasDynamicHelp": false,
2325
+ "multiple": false,
2326
+ "type": "option"
2327
+ },
2328
+ "description": {
2329
+ "description": "Plain-text description / bio (max 1500 chars)",
2330
+ "name": "description",
2331
+ "hasDynamicHelp": false,
2332
+ "multiple": false,
2333
+ "type": "option"
2334
+ },
2335
+ "tag": {
2336
+ "description": "Tag label (repeatable, lowercase)",
2337
+ "name": "tag",
2338
+ "hasDynamicHelp": false,
2339
+ "multiple": true,
2340
+ "type": "option"
2341
+ },
2342
+ "default-model": {
2343
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2344
+ "name": "default-model",
2345
+ "hasDynamicHelp": false,
2346
+ "multiple": false,
2347
+ "type": "option"
2348
+ },
2349
+ "formula": {
2350
+ "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
2351
+ "name": "formula",
2352
+ "hasDynamicHelp": false,
2353
+ "multiple": false,
2354
+ "type": "option"
2355
+ },
2356
+ "attr": {
2357
+ "description": "Attribute KEY=VALUE (repeatable)",
2358
+ "name": "attr",
2359
+ "hasDynamicHelp": false,
2360
+ "multiple": true,
2361
+ "type": "option"
2362
+ },
2363
+ "tool": {
2364
+ "description": "Tool name to enable (repeatable)",
2365
+ "name": "tool",
2366
+ "hasDynamicHelp": false,
2367
+ "multiple": true,
2368
+ "type": "option"
2369
+ },
2370
+ "profile-addendum": {
2371
+ "description": "Per-face system prompt, injected after the persona profile and before any per-request system prompt (max 100,000 chars).",
2372
+ "name": "profile-addendum",
2373
+ "hasDynamicHelp": false,
2374
+ "multiple": false,
2375
+ "type": "option"
2376
+ },
2377
+ "profile-addendum-file": {
2378
+ "description": "Read the per-face system prompt from a file (alternative to --profile-addendum).",
2379
+ "exclusive": [
2380
+ "profile-addendum"
2381
+ ],
2382
+ "name": "profile-addendum-file",
2383
+ "hasDynamicHelp": false,
2384
+ "multiple": false,
2385
+ "type": "option"
2459
2386
  }
2460
2387
  },
2461
2388
  "hasDynamicHelp": false,
2462
2389
  "hiddenAliases": [],
2463
- "id": "keys:list",
2390
+ "id": "face:create",
2464
2391
  "pluginAlias": "faces-cli",
2465
2392
  "pluginName": "faces-cli",
2466
2393
  "pluginType": "core",
@@ -2470,20 +2397,20 @@
2470
2397
  "relativePath": [
2471
2398
  "dist",
2472
2399
  "commands",
2473
- "keys",
2474
- "list.js"
2400
+ "face",
2401
+ "create.js"
2475
2402
  ]
2476
2403
  },
2477
- "keys:revoke": {
2404
+ "face:delete": {
2478
2405
  "aliases": [],
2479
2406
  "args": {
2480
- "key_id": {
2481
- "description": "Key ID",
2482
- "name": "key_id",
2407
+ "face_id": {
2408
+ "description": "Face alias",
2409
+ "name": "face_id",
2483
2410
  "required": true
2484
2411
  }
2485
2412
  },
2486
- "description": "Revoke an API key (JWT required)",
2413
+ "description": "Delete a face permanently",
2487
2414
  "flags": {
2488
2415
  "json": {
2489
2416
  "description": "Format output as json.",
@@ -2525,7 +2452,7 @@
2525
2452
  },
2526
2453
  "hasDynamicHelp": false,
2527
2454
  "hiddenAliases": [],
2528
- "id": "keys:revoke",
2455
+ "id": "face:delete",
2529
2456
  "pluginAlias": "faces-cli",
2530
2457
  "pluginName": "faces-cli",
2531
2458
  "pluginType": "core",
@@ -2535,879 +2462,11 @@
2535
2462
  "relativePath": [
2536
2463
  "dist",
2537
2464
  "commands",
2538
- "keys",
2539
- "revoke.js"
2465
+ "face",
2466
+ "delete.js"
2540
2467
  ]
2541
2468
  },
2542
- "keys:update": {
2543
- "aliases": [],
2544
- "args": {
2545
- "key_id": {
2546
- "description": "Key ID",
2547
- "name": "key_id",
2548
- "required": true
2549
- }
2550
- },
2551
- "description": "Update API key metadata (JWT required)",
2552
- "flags": {
2553
- "json": {
2554
- "description": "Format output as json.",
2555
- "helpGroup": "GLOBAL",
2556
- "name": "json",
2557
- "allowNo": false,
2558
- "type": "boolean"
2559
- },
2560
- "base-url": {
2561
- "description": "API base URL",
2562
- "env": "FACES_BASE_URL",
2563
- "name": "base-url",
2564
- "hasDynamicHelp": false,
2565
- "multiple": false,
2566
- "type": "option"
2567
- },
2568
- "token": {
2569
- "description": "JWT bearer token",
2570
- "env": "FACES_TOKEN",
2571
- "name": "token",
2572
- "hasDynamicHelp": false,
2573
- "multiple": false,
2574
- "type": "option"
2575
- },
2576
- "api-key": {
2577
- "description": "API key",
2578
- "env": "FACES_API_KEY",
2579
- "name": "api-key",
2580
- "hasDynamicHelp": false,
2581
- "multiple": false,
2582
- "type": "option"
2583
- },
2584
- "name": {
2585
- "description": "New key name",
2586
- "name": "name",
2587
- "hasDynamicHelp": false,
2588
- "multiple": false,
2589
- "type": "option"
2590
- },
2591
- "budget": {
2592
- "description": "New spend budget in USD",
2593
- "name": "budget",
2594
- "hasDynamicHelp": false,
2595
- "multiple": false,
2596
- "type": "option"
2597
- },
2598
- "reset-spent": {
2599
- "description": "Reset spent amount to zero",
2600
- "name": "reset-spent",
2601
- "allowNo": false,
2602
- "type": "boolean"
2603
- }
2604
- },
2605
- "hasDynamicHelp": false,
2606
- "hiddenAliases": [],
2607
- "id": "keys:update",
2608
- "pluginAlias": "faces-cli",
2609
- "pluginName": "faces-cli",
2610
- "pluginType": "core",
2611
- "strict": true,
2612
- "enableJsonFlag": true,
2613
- "isESM": true,
2614
- "relativePath": [
2615
- "dist",
2616
- "commands",
2617
- "keys",
2618
- "update.js"
2619
- ]
2620
- },
2621
- "team:add": {
2622
- "aliases": [],
2623
- "args": {
2624
- "team_id": {
2625
- "description": "Team ID",
2626
- "name": "team_id",
2627
- "required": true
2628
- }
2629
- },
2630
- "description": "Add face(s) to a team",
2631
- "flags": {
2632
- "json": {
2633
- "description": "Format output as json.",
2634
- "helpGroup": "GLOBAL",
2635
- "name": "json",
2636
- "allowNo": false,
2637
- "type": "boolean"
2638
- },
2639
- "base-url": {
2640
- "description": "API base URL",
2641
- "env": "FACES_BASE_URL",
2642
- "name": "base-url",
2643
- "hasDynamicHelp": false,
2644
- "multiple": false,
2645
- "type": "option"
2646
- },
2647
- "token": {
2648
- "description": "JWT bearer token",
2649
- "env": "FACES_TOKEN",
2650
- "name": "token",
2651
- "hasDynamicHelp": false,
2652
- "multiple": false,
2653
- "type": "option"
2654
- },
2655
- "api-key": {
2656
- "description": "API key",
2657
- "env": "FACES_API_KEY",
2658
- "name": "api-key",
2659
- "hasDynamicHelp": false,
2660
- "multiple": false,
2661
- "type": "option"
2662
- },
2663
- "face": {
2664
- "description": "Face alias to add (repeatable)",
2665
- "name": "face",
2666
- "required": true,
2667
- "hasDynamicHelp": false,
2668
- "multiple": true,
2669
- "type": "option"
2670
- }
2671
- },
2672
- "hasDynamicHelp": false,
2673
- "hiddenAliases": [],
2674
- "id": "team:add",
2675
- "pluginAlias": "faces-cli",
2676
- "pluginName": "faces-cli",
2677
- "pluginType": "core",
2678
- "strict": true,
2679
- "enableJsonFlag": true,
2680
- "isESM": true,
2681
- "relativePath": [
2682
- "dist",
2683
- "commands",
2684
- "team",
2685
- "add.js"
2686
- ]
2687
- },
2688
- "team:create": {
2689
- "aliases": [],
2690
- "args": {},
2691
- "description": "Create a new team",
2692
- "flags": {
2693
- "json": {
2694
- "description": "Format output as json.",
2695
- "helpGroup": "GLOBAL",
2696
- "name": "json",
2697
- "allowNo": false,
2698
- "type": "boolean"
2699
- },
2700
- "base-url": {
2701
- "description": "API base URL",
2702
- "env": "FACES_BASE_URL",
2703
- "name": "base-url",
2704
- "hasDynamicHelp": false,
2705
- "multiple": false,
2706
- "type": "option"
2707
- },
2708
- "token": {
2709
- "description": "JWT bearer token",
2710
- "env": "FACES_TOKEN",
2711
- "name": "token",
2712
- "hasDynamicHelp": false,
2713
- "multiple": false,
2714
- "type": "option"
2715
- },
2716
- "api-key": {
2717
- "description": "API key",
2718
- "env": "FACES_API_KEY",
2719
- "name": "api-key",
2720
- "hasDynamicHelp": false,
2721
- "multiple": false,
2722
- "type": "option"
2723
- },
2724
- "name": {
2725
- "description": "Team name",
2726
- "name": "name",
2727
- "required": true,
2728
- "hasDynamicHelp": false,
2729
- "multiple": false,
2730
- "type": "option"
2731
- },
2732
- "description": {
2733
- "description": "Plain-text team description (max 1500 chars)",
2734
- "name": "description",
2735
- "hasDynamicHelp": false,
2736
- "multiple": false,
2737
- "type": "option"
2738
- },
2739
- "protocol": {
2740
- "description": "Protocol content (mermaid diagram or markdown, max 1000 words)",
2741
- "name": "protocol",
2742
- "hasDynamicHelp": false,
2743
- "multiple": false,
2744
- "type": "option"
2745
- },
2746
- "protocol-file": {
2747
- "description": "Read protocol from file",
2748
- "name": "protocol-file",
2749
- "hasDynamicHelp": false,
2750
- "multiple": false,
2751
- "type": "option"
2752
- },
2753
- "tag": {
2754
- "description": "Tag label (repeatable, lowercase)",
2755
- "name": "tag",
2756
- "hasDynamicHelp": false,
2757
- "multiple": true,
2758
- "type": "option"
2759
- }
2760
- },
2761
- "hasDynamicHelp": false,
2762
- "hiddenAliases": [],
2763
- "id": "team:create",
2764
- "pluginAlias": "faces-cli",
2765
- "pluginName": "faces-cli",
2766
- "pluginType": "core",
2767
- "strict": true,
2768
- "enableJsonFlag": true,
2769
- "isESM": true,
2770
- "relativePath": [
2771
- "dist",
2772
- "commands",
2773
- "team",
2774
- "create.js"
2775
- ]
2776
- },
2777
- "team:delete": {
2778
- "aliases": [],
2779
- "args": {
2780
- "team_id": {
2781
- "description": "Team ID",
2782
- "name": "team_id",
2783
- "required": true
2784
- }
2785
- },
2786
- "description": "Delete a team",
2787
- "flags": {
2788
- "json": {
2789
- "description": "Format output as json.",
2790
- "helpGroup": "GLOBAL",
2791
- "name": "json",
2792
- "allowNo": false,
2793
- "type": "boolean"
2794
- },
2795
- "base-url": {
2796
- "description": "API base URL",
2797
- "env": "FACES_BASE_URL",
2798
- "name": "base-url",
2799
- "hasDynamicHelp": false,
2800
- "multiple": false,
2801
- "type": "option"
2802
- },
2803
- "token": {
2804
- "description": "JWT bearer token",
2805
- "env": "FACES_TOKEN",
2806
- "name": "token",
2807
- "hasDynamicHelp": false,
2808
- "multiple": false,
2809
- "type": "option"
2810
- },
2811
- "api-key": {
2812
- "description": "API key",
2813
- "env": "FACES_API_KEY",
2814
- "name": "api-key",
2815
- "hasDynamicHelp": false,
2816
- "multiple": false,
2817
- "type": "option"
2818
- },
2819
- "yes": {
2820
- "description": "Skip confirmation",
2821
- "name": "yes",
2822
- "allowNo": false,
2823
- "type": "boolean"
2824
- }
2825
- },
2826
- "hasDynamicHelp": false,
2827
- "hiddenAliases": [],
2828
- "id": "team:delete",
2829
- "pluginAlias": "faces-cli",
2830
- "pluginName": "faces-cli",
2831
- "pluginType": "core",
2832
- "strict": true,
2833
- "enableJsonFlag": true,
2834
- "isESM": true,
2835
- "relativePath": [
2836
- "dist",
2837
- "commands",
2838
- "team",
2839
- "delete.js"
2840
- ]
2841
- },
2842
- "team:edit": {
2843
- "aliases": [],
2844
- "args": {
2845
- "team_id": {
2846
- "description": "Team ID",
2847
- "name": "team_id",
2848
- "required": true
2849
- }
2850
- },
2851
- "description": "Edit a team",
2852
- "flags": {
2853
- "json": {
2854
- "description": "Format output as json.",
2855
- "helpGroup": "GLOBAL",
2856
- "name": "json",
2857
- "allowNo": false,
2858
- "type": "boolean"
2859
- },
2860
- "base-url": {
2861
- "description": "API base URL",
2862
- "env": "FACES_BASE_URL",
2863
- "name": "base-url",
2864
- "hasDynamicHelp": false,
2865
- "multiple": false,
2866
- "type": "option"
2867
- },
2868
- "token": {
2869
- "description": "JWT bearer token",
2870
- "env": "FACES_TOKEN",
2871
- "name": "token",
2872
- "hasDynamicHelp": false,
2873
- "multiple": false,
2874
- "type": "option"
2875
- },
2876
- "api-key": {
2877
- "description": "API key",
2878
- "env": "FACES_API_KEY",
2879
- "name": "api-key",
2880
- "hasDynamicHelp": false,
2881
- "multiple": false,
2882
- "type": "option"
2883
- },
2884
- "name": {
2885
- "description": "New team name",
2886
- "name": "name",
2887
- "hasDynamicHelp": false,
2888
- "multiple": false,
2889
- "type": "option"
2890
- },
2891
- "description": {
2892
- "description": "New description (max 1500 chars)",
2893
- "name": "description",
2894
- "hasDynamicHelp": false,
2895
- "multiple": false,
2896
- "type": "option"
2897
- },
2898
- "protocol": {
2899
- "description": "New protocol content",
2900
- "name": "protocol",
2901
- "hasDynamicHelp": false,
2902
- "multiple": false,
2903
- "type": "option"
2904
- },
2905
- "protocol-file": {
2906
- "description": "Read protocol from file",
2907
- "name": "protocol-file",
2908
- "hasDynamicHelp": false,
2909
- "multiple": false,
2910
- "type": "option"
2911
- }
2912
- },
2913
- "hasDynamicHelp": false,
2914
- "hiddenAliases": [],
2915
- "id": "team:edit",
2916
- "pluginAlias": "faces-cli",
2917
- "pluginName": "faces-cli",
2918
- "pluginType": "core",
2919
- "strict": true,
2920
- "enableJsonFlag": true,
2921
- "isESM": true,
2922
- "relativePath": [
2923
- "dist",
2924
- "commands",
2925
- "team",
2926
- "edit.js"
2927
- ]
2928
- },
2929
- "team:get": {
2930
- "aliases": [],
2931
- "args": {
2932
- "team_id": {
2933
- "description": "Team ID",
2934
- "name": "team_id",
2935
- "required": true
2936
- }
2937
- },
2938
- "description": "Get a team by ID",
2939
- "flags": {
2940
- "json": {
2941
- "description": "Format output as json.",
2942
- "helpGroup": "GLOBAL",
2943
- "name": "json",
2944
- "allowNo": false,
2945
- "type": "boolean"
2946
- },
2947
- "base-url": {
2948
- "description": "API base URL",
2949
- "env": "FACES_BASE_URL",
2950
- "name": "base-url",
2951
- "hasDynamicHelp": false,
2952
- "multiple": false,
2953
- "type": "option"
2954
- },
2955
- "token": {
2956
- "description": "JWT bearer token",
2957
- "env": "FACES_TOKEN",
2958
- "name": "token",
2959
- "hasDynamicHelp": false,
2960
- "multiple": false,
2961
- "type": "option"
2962
- },
2963
- "api-key": {
2964
- "description": "API key",
2965
- "env": "FACES_API_KEY",
2966
- "name": "api-key",
2967
- "hasDynamicHelp": false,
2968
- "multiple": false,
2969
- "type": "option"
2970
- }
2971
- },
2972
- "hasDynamicHelp": false,
2973
- "hiddenAliases": [],
2974
- "id": "team:get",
2975
- "pluginAlias": "faces-cli",
2976
- "pluginName": "faces-cli",
2977
- "pluginType": "core",
2978
- "strict": true,
2979
- "enableJsonFlag": true,
2980
- "isESM": true,
2981
- "relativePath": [
2982
- "dist",
2983
- "commands",
2984
- "team",
2985
- "get.js"
2986
- ]
2987
- },
2988
- "team:list": {
2989
- "aliases": [],
2990
- "args": {},
2991
- "description": "List your teams",
2992
- "flags": {
2993
- "json": {
2994
- "description": "Format output as json.",
2995
- "helpGroup": "GLOBAL",
2996
- "name": "json",
2997
- "allowNo": false,
2998
- "type": "boolean"
2999
- },
3000
- "base-url": {
3001
- "description": "API base URL",
3002
- "env": "FACES_BASE_URL",
3003
- "name": "base-url",
3004
- "hasDynamicHelp": false,
3005
- "multiple": false,
3006
- "type": "option"
3007
- },
3008
- "token": {
3009
- "description": "JWT bearer token",
3010
- "env": "FACES_TOKEN",
3011
- "name": "token",
3012
- "hasDynamicHelp": false,
3013
- "multiple": false,
3014
- "type": "option"
3015
- },
3016
- "api-key": {
3017
- "description": "API key",
3018
- "env": "FACES_API_KEY",
3019
- "name": "api-key",
3020
- "hasDynamicHelp": false,
3021
- "multiple": false,
3022
- "type": "option"
3023
- }
3024
- },
3025
- "hasDynamicHelp": false,
3026
- "hiddenAliases": [],
3027
- "id": "team:list",
3028
- "pluginAlias": "faces-cli",
3029
- "pluginName": "faces-cli",
3030
- "pluginType": "core",
3031
- "strict": true,
3032
- "enableJsonFlag": true,
3033
- "isESM": true,
3034
- "relativePath": [
3035
- "dist",
3036
- "commands",
3037
- "team",
3038
- "list.js"
3039
- ]
3040
- },
3041
- "team:members": {
3042
- "aliases": [],
3043
- "args": {
3044
- "team_id": {
3045
- "description": "Team ID",
3046
- "name": "team_id",
3047
- "required": true
3048
- }
3049
- },
3050
- "description": "List members of a team",
3051
- "flags": {
3052
- "json": {
3053
- "description": "Format output as json.",
3054
- "helpGroup": "GLOBAL",
3055
- "name": "json",
3056
- "allowNo": false,
3057
- "type": "boolean"
3058
- },
3059
- "base-url": {
3060
- "description": "API base URL",
3061
- "env": "FACES_BASE_URL",
3062
- "name": "base-url",
3063
- "hasDynamicHelp": false,
3064
- "multiple": false,
3065
- "type": "option"
3066
- },
3067
- "token": {
3068
- "description": "JWT bearer token",
3069
- "env": "FACES_TOKEN",
3070
- "name": "token",
3071
- "hasDynamicHelp": false,
3072
- "multiple": false,
3073
- "type": "option"
3074
- },
3075
- "api-key": {
3076
- "description": "API key",
3077
- "env": "FACES_API_KEY",
3078
- "name": "api-key",
3079
- "hasDynamicHelp": false,
3080
- "multiple": false,
3081
- "type": "option"
3082
- }
3083
- },
3084
- "hasDynamicHelp": false,
3085
- "hiddenAliases": [],
3086
- "id": "team:members",
3087
- "pluginAlias": "faces-cli",
3088
- "pluginName": "faces-cli",
3089
- "pluginType": "core",
3090
- "strict": true,
3091
- "enableJsonFlag": true,
3092
- "isESM": true,
3093
- "relativePath": [
3094
- "dist",
3095
- "commands",
3096
- "team",
3097
- "members.js"
3098
- ]
3099
- },
3100
- "team:remove": {
3101
- "aliases": [],
3102
- "args": {
3103
- "team_id": {
3104
- "description": "Team ID",
3105
- "name": "team_id",
3106
- "required": true
3107
- },
3108
- "alias": {
3109
- "description": "Face alias to remove",
3110
- "name": "alias",
3111
- "required": true
3112
- }
3113
- },
3114
- "description": "Remove a face from a team",
3115
- "flags": {
3116
- "json": {
3117
- "description": "Format output as json.",
3118
- "helpGroup": "GLOBAL",
3119
- "name": "json",
3120
- "allowNo": false,
3121
- "type": "boolean"
3122
- },
3123
- "base-url": {
3124
- "description": "API base URL",
3125
- "env": "FACES_BASE_URL",
3126
- "name": "base-url",
3127
- "hasDynamicHelp": false,
3128
- "multiple": false,
3129
- "type": "option"
3130
- },
3131
- "token": {
3132
- "description": "JWT bearer token",
3133
- "env": "FACES_TOKEN",
3134
- "name": "token",
3135
- "hasDynamicHelp": false,
3136
- "multiple": false,
3137
- "type": "option"
3138
- },
3139
- "api-key": {
3140
- "description": "API key",
3141
- "env": "FACES_API_KEY",
3142
- "name": "api-key",
3143
- "hasDynamicHelp": false,
3144
- "multiple": false,
3145
- "type": "option"
3146
- }
3147
- },
3148
- "hasDynamicHelp": false,
3149
- "hiddenAliases": [],
3150
- "id": "team:remove",
3151
- "pluginAlias": "faces-cli",
3152
- "pluginName": "faces-cli",
3153
- "pluginType": "core",
3154
- "strict": true,
3155
- "enableJsonFlag": true,
3156
- "isESM": true,
3157
- "relativePath": [
3158
- "dist",
3159
- "commands",
3160
- "team",
3161
- "remove.js"
3162
- ]
3163
- },
3164
- "face:attributes": {
3165
- "aliases": [],
3166
- "args": {},
3167
- "description": "List all supported attribute keys",
3168
- "flags": {
3169
- "json": {
3170
- "description": "Format output as json.",
3171
- "helpGroup": "GLOBAL",
3172
- "name": "json",
3173
- "allowNo": false,
3174
- "type": "boolean"
3175
- },
3176
- "base-url": {
3177
- "description": "API base URL",
3178
- "env": "FACES_BASE_URL",
3179
- "name": "base-url",
3180
- "hasDynamicHelp": false,
3181
- "multiple": false,
3182
- "type": "option"
3183
- },
3184
- "token": {
3185
- "description": "JWT bearer token",
3186
- "env": "FACES_TOKEN",
3187
- "name": "token",
3188
- "hasDynamicHelp": false,
3189
- "multiple": false,
3190
- "type": "option"
3191
- },
3192
- "api-key": {
3193
- "description": "API key",
3194
- "env": "FACES_API_KEY",
3195
- "name": "api-key",
3196
- "hasDynamicHelp": false,
3197
- "multiple": false,
3198
- "type": "option"
3199
- }
3200
- },
3201
- "hasDynamicHelp": false,
3202
- "hiddenAliases": [],
3203
- "id": "face:attributes",
3204
- "pluginAlias": "faces-cli",
3205
- "pluginName": "faces-cli",
3206
- "pluginType": "core",
3207
- "strict": true,
3208
- "enableJsonFlag": true,
3209
- "isESM": true,
3210
- "relativePath": [
3211
- "dist",
3212
- "commands",
3213
- "face",
3214
- "attributes.js"
3215
- ]
3216
- },
3217
- "face:create": {
3218
- "aliases": [],
3219
- "args": {},
3220
- "description": "Create a new face",
3221
- "flags": {
3222
- "json": {
3223
- "description": "Format output as json.",
3224
- "helpGroup": "GLOBAL",
3225
- "name": "json",
3226
- "allowNo": false,
3227
- "type": "boolean"
3228
- },
3229
- "base-url": {
3230
- "description": "API base URL",
3231
- "env": "FACES_BASE_URL",
3232
- "name": "base-url",
3233
- "hasDynamicHelp": false,
3234
- "multiple": false,
3235
- "type": "option"
3236
- },
3237
- "token": {
3238
- "description": "JWT bearer token",
3239
- "env": "FACES_TOKEN",
3240
- "name": "token",
3241
- "hasDynamicHelp": false,
3242
- "multiple": false,
3243
- "type": "option"
3244
- },
3245
- "api-key": {
3246
- "description": "API key",
3247
- "env": "FACES_API_KEY",
3248
- "name": "api-key",
3249
- "hasDynamicHelp": false,
3250
- "multiple": false,
3251
- "type": "option"
3252
- },
3253
- "name": {
3254
- "description": "Display name",
3255
- "name": "name",
3256
- "required": true,
3257
- "hasDynamicHelp": false,
3258
- "multiple": false,
3259
- "type": "option"
3260
- },
3261
- "alias": {
3262
- "description": "Unique alias slug",
3263
- "name": "alias",
3264
- "required": true,
3265
- "hasDynamicHelp": false,
3266
- "multiple": false,
3267
- "type": "option"
3268
- },
3269
- "description": {
3270
- "description": "Plain-text description / bio (max 1500 chars)",
3271
- "name": "description",
3272
- "hasDynamicHelp": false,
3273
- "multiple": false,
3274
- "type": "option"
3275
- },
3276
- "tag": {
3277
- "description": "Tag label (repeatable, lowercase)",
3278
- "name": "tag",
3279
- "hasDynamicHelp": false,
3280
- "multiple": true,
3281
- "type": "option"
3282
- },
3283
- "default-model": {
3284
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
3285
- "name": "default-model",
3286
- "hasDynamicHelp": false,
3287
- "multiple": false,
3288
- "type": "option"
3289
- },
3290
- "formula": {
3291
- "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
3292
- "name": "formula",
3293
- "hasDynamicHelp": false,
3294
- "multiple": false,
3295
- "type": "option"
3296
- },
3297
- "attr": {
3298
- "description": "Attribute KEY=VALUE (repeatable)",
3299
- "name": "attr",
3300
- "hasDynamicHelp": false,
3301
- "multiple": true,
3302
- "type": "option"
3303
- },
3304
- "tool": {
3305
- "description": "Tool name to enable (repeatable)",
3306
- "name": "tool",
3307
- "hasDynamicHelp": false,
3308
- "multiple": true,
3309
- "type": "option"
3310
- },
3311
- "profile-addendum": {
3312
- "description": "Per-face system prompt, injected after the persona profile and before any per-request system prompt (max 100,000 chars).",
3313
- "name": "profile-addendum",
3314
- "hasDynamicHelp": false,
3315
- "multiple": false,
3316
- "type": "option"
3317
- },
3318
- "profile-addendum-file": {
3319
- "description": "Read the per-face system prompt from a file (alternative to --profile-addendum).",
3320
- "exclusive": [
3321
- "profile-addendum"
3322
- ],
3323
- "name": "profile-addendum-file",
3324
- "hasDynamicHelp": false,
3325
- "multiple": false,
3326
- "type": "option"
3327
- }
3328
- },
3329
- "hasDynamicHelp": false,
3330
- "hiddenAliases": [],
3331
- "id": "face:create",
3332
- "pluginAlias": "faces-cli",
3333
- "pluginName": "faces-cli",
3334
- "pluginType": "core",
3335
- "strict": true,
3336
- "enableJsonFlag": true,
3337
- "isESM": true,
3338
- "relativePath": [
3339
- "dist",
3340
- "commands",
3341
- "face",
3342
- "create.js"
3343
- ]
3344
- },
3345
- "face:delete": {
3346
- "aliases": [],
3347
- "args": {
3348
- "face_id": {
3349
- "description": "Face alias",
3350
- "name": "face_id",
3351
- "required": true
3352
- }
3353
- },
3354
- "description": "Delete a face permanently",
3355
- "flags": {
3356
- "json": {
3357
- "description": "Format output as json.",
3358
- "helpGroup": "GLOBAL",
3359
- "name": "json",
3360
- "allowNo": false,
3361
- "type": "boolean"
3362
- },
3363
- "base-url": {
3364
- "description": "API base URL",
3365
- "env": "FACES_BASE_URL",
3366
- "name": "base-url",
3367
- "hasDynamicHelp": false,
3368
- "multiple": false,
3369
- "type": "option"
3370
- },
3371
- "token": {
3372
- "description": "JWT bearer token",
3373
- "env": "FACES_TOKEN",
3374
- "name": "token",
3375
- "hasDynamicHelp": false,
3376
- "multiple": false,
3377
- "type": "option"
3378
- },
3379
- "api-key": {
3380
- "description": "API key",
3381
- "env": "FACES_API_KEY",
3382
- "name": "api-key",
3383
- "hasDynamicHelp": false,
3384
- "multiple": false,
3385
- "type": "option"
3386
- },
3387
- "yes": {
3388
- "description": "Skip confirmation",
3389
- "name": "yes",
3390
- "allowNo": false,
3391
- "type": "boolean"
3392
- }
3393
- },
3394
- "hasDynamicHelp": false,
3395
- "hiddenAliases": [],
3396
- "id": "face:delete",
3397
- "pluginAlias": "faces-cli",
3398
- "pluginName": "faces-cli",
3399
- "pluginType": "core",
3400
- "strict": true,
3401
- "enableJsonFlag": true,
3402
- "isESM": true,
3403
- "relativePath": [
3404
- "dist",
3405
- "commands",
3406
- "face",
3407
- "delete.js"
3408
- ]
3409
- },
3410
- "face:diff": {
2469
+ "face:diff": {
3411
2470
  "aliases": [],
3412
2471
  "args": {},
3413
2472
  "description": "Compare owned faces pairwise across all centroid components",
@@ -4112,16 +3171,10 @@
4112
3171
  "unlock.js"
4113
3172
  ]
4114
3173
  },
4115
- "face:upload": {
3174
+ "keys:create": {
4116
3175
  "aliases": [],
4117
- "args": {
4118
- "face_id": {
4119
- "description": "Face alias",
4120
- "name": "face_id",
4121
- "required": true
4122
- }
4123
- },
4124
- "description": "Upload a file (text/PDF/audio/video) to a face",
3176
+ "args": {},
3177
+ "description": "Create a new API key (JWT required). The new key is saved to ~/.faces/config.json as api_key by default; pass --no-save to skip.",
4125
3178
  "flags": {
4126
3179
  "json": {
4127
3180
  "description": "Format output as json.",
@@ -4154,41 +3207,97 @@
4154
3207
  "multiple": false,
4155
3208
  "type": "option"
4156
3209
  },
4157
- "file": {
4158
- "description": "File to upload",
4159
- "name": "file",
3210
+ "name": {
3211
+ "description": "Key name/label",
3212
+ "name": "name",
4160
3213
  "required": true,
4161
3214
  "hasDynamicHelp": false,
4162
3215
  "multiple": false,
4163
3216
  "type": "option"
4164
3217
  },
4165
- "kind": {
4166
- "description": "Upload kind: document or thread",
4167
- "name": "kind",
4168
- "default": "document",
3218
+ "expires-days": {
3219
+ "description": "Expiry in days (omit for no expiry)",
3220
+ "name": "expires-days",
4169
3221
  "hasDynamicHelp": false,
4170
3222
  "multiple": false,
4171
- "options": [
4172
- "document",
4173
- "thread"
4174
- ],
4175
3223
  "type": "option"
4176
3224
  },
4177
- "perspective": {
4178
- "description": "Perspective (document only)",
4179
- "name": "perspective",
4180
- "default": "third-person",
3225
+ "budget": {
3226
+ "description": "Spend budget in USD",
3227
+ "name": "budget",
3228
+ "hasDynamicHelp": false,
3229
+ "multiple": false,
3230
+ "type": "option"
3231
+ },
3232
+ "face": {
3233
+ "description": "Allowed face alias (repeatable)",
3234
+ "name": "face",
3235
+ "hasDynamicHelp": false,
3236
+ "multiple": true,
3237
+ "type": "option"
3238
+ },
3239
+ "model": {
3240
+ "description": "Allowed model name (repeatable)",
3241
+ "name": "model",
3242
+ "hasDynamicHelp": false,
3243
+ "multiple": true,
3244
+ "type": "option"
3245
+ },
3246
+ "save": {
3247
+ "description": "Save the new key to ~/.faces/config.json as api_key (default: true; use --no-save to skip)",
3248
+ "name": "save",
3249
+ "allowNo": true,
3250
+ "type": "boolean"
3251
+ }
3252
+ },
3253
+ "hasDynamicHelp": false,
3254
+ "hiddenAliases": [],
3255
+ "id": "keys:create",
3256
+ "pluginAlias": "faces-cli",
3257
+ "pluginName": "faces-cli",
3258
+ "pluginType": "core",
3259
+ "strict": true,
3260
+ "enableJsonFlag": true,
3261
+ "isESM": true,
3262
+ "relativePath": [
3263
+ "dist",
3264
+ "commands",
3265
+ "keys",
3266
+ "create.js"
3267
+ ]
3268
+ },
3269
+ "keys:list": {
3270
+ "aliases": [],
3271
+ "args": {},
3272
+ "description": "List all API keys (JWT required)",
3273
+ "flags": {
3274
+ "json": {
3275
+ "description": "Format output as json.",
3276
+ "helpGroup": "GLOBAL",
3277
+ "name": "json",
3278
+ "allowNo": false,
3279
+ "type": "boolean"
3280
+ },
3281
+ "base-url": {
3282
+ "description": "API base URL",
3283
+ "env": "FACES_BASE_URL",
3284
+ "name": "base-url",
3285
+ "hasDynamicHelp": false,
3286
+ "multiple": false,
3287
+ "type": "option"
3288
+ },
3289
+ "token": {
3290
+ "description": "JWT bearer token",
3291
+ "env": "FACES_TOKEN",
3292
+ "name": "token",
4181
3293
  "hasDynamicHelp": false,
4182
3294
  "multiple": false,
4183
- "options": [
4184
- "first-person",
4185
- "third-person"
4186
- ],
4187
3295
  "type": "option"
4188
3296
  },
4189
- "face-speaker": {
4190
- "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
4191
- "name": "face-speaker",
3297
+ "api-key": {
3298
+ "description": "API key",
3299
+ "env": "FACES_API_KEY",
3300
+ "name": "api-key",
4192
3301
  "hasDynamicHelp": false,
4193
3302
  "multiple": false,
4194
3303
  "type": "option"
@@ -4196,7 +3305,7 @@
4196
3305
  },
4197
3306
  "hasDynamicHelp": false,
4198
3307
  "hiddenAliases": [],
4199
- "id": "face:upload",
3308
+ "id": "keys:list",
4200
3309
  "pluginAlias": "faces-cli",
4201
3310
  "pluginName": "faces-cli",
4202
3311
  "pluginType": "core",
@@ -4206,23 +3315,20 @@
4206
3315
  "relativePath": [
4207
3316
  "dist",
4208
3317
  "commands",
4209
- "face",
4210
- "upload.js"
3318
+ "keys",
3319
+ "list.js"
4211
3320
  ]
4212
3321
  },
4213
- "voiceprint:build-status": {
3322
+ "keys:revoke": {
4214
3323
  "aliases": [],
4215
3324
  "args": {
4216
- "job_id": {
4217
- "description": "Build job id",
4218
- "name": "job_id",
3325
+ "key_id": {
3326
+ "description": "Key ID",
3327
+ "name": "key_id",
4219
3328
  "required": true
4220
3329
  }
4221
3330
  },
4222
- "description": "Get the status/result of a voiceprint build job (from voiceprint:build without --wait)",
4223
- "examples": [
4224
- "<%= config.bin %> <%= command.id %> 4e13bf03-fbc1-4ad0-92ae-16984e2f9a1d"
4225
- ],
3331
+ "description": "Revoke an API key (JWT required)",
4226
3332
  "flags": {
4227
3333
  "json": {
4228
3334
  "description": "Format output as json.",
@@ -4254,11 +3360,17 @@
4254
3360
  "hasDynamicHelp": false,
4255
3361
  "multiple": false,
4256
3362
  "type": "option"
3363
+ },
3364
+ "yes": {
3365
+ "description": "Skip confirmation",
3366
+ "name": "yes",
3367
+ "allowNo": false,
3368
+ "type": "boolean"
4257
3369
  }
4258
3370
  },
4259
3371
  "hasDynamicHelp": false,
4260
3372
  "hiddenAliases": [],
4261
- "id": "voiceprint:build-status",
3373
+ "id": "keys:revoke",
4262
3374
  "pluginAlias": "faces-cli",
4263
3375
  "pluginName": "faces-cli",
4264
3376
  "pluginType": "core",
@@ -4268,24 +3380,20 @@
4268
3380
  "relativePath": [
4269
3381
  "dist",
4270
3382
  "commands",
4271
- "voiceprint",
4272
- "build-status.js"
3383
+ "keys",
3384
+ "revoke.js"
4273
3385
  ]
4274
3386
  },
4275
- "voiceprint:build": {
3387
+ "keys:update": {
4276
3388
  "aliases": [],
4277
3389
  "args": {
4278
- "self_alias": {
4279
- "description": "Self face alias",
4280
- "name": "self_alias",
3390
+ "key_id": {
3391
+ "description": "Key ID",
3392
+ "name": "key_id",
4281
3393
  "required": true
4282
3394
  }
4283
3395
  },
4284
- "description": "Build a self face's voice map from its uploaded corpus. Auto-creates the hidden <self>-voiceprint face and installs the map. Async — use --wait to block.",
4285
- "examples": [
4286
- "<%= config.bin %> <%= command.id %> alice --wait",
4287
- "<%= config.bin %> <%= command.id %> alice --holdout-count 120 --oauth-only --wait"
4288
- ],
3396
+ "description": "Update API key metadata (JWT required)",
4289
3397
  "flags": {
4290
3398
  "json": {
4291
3399
  "description": "Format output as json.",
@@ -4318,43 +3426,30 @@
4318
3426
  "multiple": false,
4319
3427
  "type": "option"
4320
3428
  },
4321
- "model": {
4322
- "description": "Model that forges the voice map (default: gpt-5.4)",
4323
- "name": "model",
4324
- "hasDynamicHelp": false,
4325
- "multiple": false,
4326
- "type": "option"
4327
- },
4328
- "holdout-count": {
4329
- "description": "Stratified scoring holdout size (default: 120)",
4330
- "name": "holdout-count",
3429
+ "name": {
3430
+ "description": "New key name",
3431
+ "name": "name",
4331
3432
  "hasDynamicHelp": false,
4332
3433
  "multiple": false,
4333
3434
  "type": "option"
4334
3435
  },
4335
- "min-valid": {
4336
- "description": "Corpus floor below which no holdout is split — train on all (default: 550)",
4337
- "name": "min-valid",
3436
+ "budget": {
3437
+ "description": "New spend budget in USD",
3438
+ "name": "budget",
4338
3439
  "hasDynamicHelp": false,
4339
3440
  "multiple": false,
4340
3441
  "type": "option"
4341
3442
  },
4342
- "oauth-only": {
4343
- "description": "Only run on a free (OAuth) route; never fall back to billed inference",
4344
- "name": "oauth-only",
4345
- "allowNo": false,
4346
- "type": "boolean"
4347
- },
4348
- "wait": {
4349
- "description": "Block and poll until the build finishes (default: print the job_id and return)",
4350
- "name": "wait",
3443
+ "reset-spent": {
3444
+ "description": "Reset spent amount to zero",
3445
+ "name": "reset-spent",
4351
3446
  "allowNo": false,
4352
3447
  "type": "boolean"
4353
3448
  }
4354
3449
  },
4355
3450
  "hasDynamicHelp": false,
4356
3451
  "hiddenAliases": [],
4357
- "id": "voiceprint:build",
3452
+ "id": "keys:update",
4358
3453
  "pluginAlias": "faces-cli",
4359
3454
  "pluginName": "faces-cli",
4360
3455
  "pluginType": "core",
@@ -4364,23 +3459,20 @@
4364
3459
  "relativePath": [
4365
3460
  "dist",
4366
3461
  "commands",
4367
- "voiceprint",
4368
- "build.js"
3462
+ "keys",
3463
+ "update.js"
4369
3464
  ]
4370
3465
  },
4371
- "voiceprint:get": {
3466
+ "team:add": {
4372
3467
  "aliases": [],
4373
3468
  "args": {
4374
- "job_id": {
4375
- "description": "Scoring job id (from voiceprint:score --no-wait)",
4376
- "name": "job_id",
3469
+ "team_id": {
3470
+ "description": "Team ID",
3471
+ "name": "team_id",
4377
3472
  "required": true
4378
3473
  }
4379
3474
  },
4380
- "description": "Get the status/result of a voiceprint scoring job started with voiceprint:score --no-wait",
4381
- "examples": [
4382
- "<%= config.bin %> <%= command.id %> 4e13bf03-fbc1-4ad0-92ae-16984e2f9a1d"
4383
- ],
3475
+ "description": "Add face(s) to a team",
4384
3476
  "flags": {
4385
3477
  "json": {
4386
3478
  "description": "Format output as json.",
@@ -4412,11 +3504,19 @@
4412
3504
  "hasDynamicHelp": false,
4413
3505
  "multiple": false,
4414
3506
  "type": "option"
3507
+ },
3508
+ "face": {
3509
+ "description": "Face alias to add (repeatable)",
3510
+ "name": "face",
3511
+ "required": true,
3512
+ "hasDynamicHelp": false,
3513
+ "multiple": true,
3514
+ "type": "option"
4415
3515
  }
4416
3516
  },
4417
3517
  "hasDynamicHelp": false,
4418
3518
  "hiddenAliases": [],
4419
- "id": "voiceprint:get",
3519
+ "id": "team:add",
4420
3520
  "pluginAlias": "faces-cli",
4421
3521
  "pluginName": "faces-cli",
4422
3522
  "pluginType": "core",
@@ -4426,23 +3526,14 @@
4426
3526
  "relativePath": [
4427
3527
  "dist",
4428
3528
  "commands",
4429
- "voiceprint",
4430
- "get.js"
3529
+ "team",
3530
+ "add.js"
4431
3531
  ]
4432
3532
  },
4433
- "voiceprint:refine-status": {
3533
+ "team:create": {
4434
3534
  "aliases": [],
4435
- "args": {
4436
- "job_id": {
4437
- "description": "Refine job id",
4438
- "name": "job_id",
4439
- "required": true
4440
- }
4441
- },
4442
- "description": "Get the status/result of a voiceprint refine job (from voiceprint:refine without --wait)",
4443
- "examples": [
4444
- "<%= config.bin %> <%= command.id %> 4e13bf03-fbc1-4ad0-92ae-16984e2f9a1d"
4445
- ],
3535
+ "args": {},
3536
+ "description": "Create a new team",
4446
3537
  "flags": {
4447
3538
  "json": {
4448
3539
  "description": "Format output as json.",
@@ -4474,11 +3565,47 @@
4474
3565
  "hasDynamicHelp": false,
4475
3566
  "multiple": false,
4476
3567
  "type": "option"
3568
+ },
3569
+ "name": {
3570
+ "description": "Team name",
3571
+ "name": "name",
3572
+ "required": true,
3573
+ "hasDynamicHelp": false,
3574
+ "multiple": false,
3575
+ "type": "option"
3576
+ },
3577
+ "description": {
3578
+ "description": "Plain-text team description (max 1500 chars)",
3579
+ "name": "description",
3580
+ "hasDynamicHelp": false,
3581
+ "multiple": false,
3582
+ "type": "option"
3583
+ },
3584
+ "protocol": {
3585
+ "description": "Protocol content (mermaid diagram or markdown, max 1000 words)",
3586
+ "name": "protocol",
3587
+ "hasDynamicHelp": false,
3588
+ "multiple": false,
3589
+ "type": "option"
3590
+ },
3591
+ "protocol-file": {
3592
+ "description": "Read protocol from file",
3593
+ "name": "protocol-file",
3594
+ "hasDynamicHelp": false,
3595
+ "multiple": false,
3596
+ "type": "option"
3597
+ },
3598
+ "tag": {
3599
+ "description": "Tag label (repeatable, lowercase)",
3600
+ "name": "tag",
3601
+ "hasDynamicHelp": false,
3602
+ "multiple": true,
3603
+ "type": "option"
4477
3604
  }
4478
3605
  },
4479
3606
  "hasDynamicHelp": false,
4480
3607
  "hiddenAliases": [],
4481
- "id": "voiceprint:refine-status",
3608
+ "id": "team:create",
4482
3609
  "pluginAlias": "faces-cli",
4483
3610
  "pluginName": "faces-cli",
4484
3611
  "pluginType": "core",
@@ -4488,24 +3615,20 @@
4488
3615
  "relativePath": [
4489
3616
  "dist",
4490
3617
  "commands",
4491
- "voiceprint",
4492
- "refine-status.js"
3618
+ "team",
3619
+ "create.js"
4493
3620
  ]
4494
3621
  },
4495
- "voiceprint:refine": {
3622
+ "team:delete": {
4496
3623
  "aliases": [],
4497
3624
  "args": {
4498
- "self_alias": {
4499
- "description": "Self face alias",
4500
- "name": "self_alias",
3625
+ "team_id": {
3626
+ "description": "Team ID",
3627
+ "name": "team_id",
4501
3628
  "required": true
4502
3629
  }
4503
3630
  },
4504
- "description": "Tune the active version's post-processing recipe and promote it only if it beats the current one. Requires an existing build with a holdout ≥ 20. Undo with voiceprint:revert.",
4505
- "examples": [
4506
- "<%= config.bin %> <%= command.id %> alice --wait",
4507
- "<%= config.bin %> <%= command.id %> alice --temperature 0.4 --n-samples 6 --wait"
4508
- ],
3631
+ "description": "Delete a team",
4509
3632
  "flags": {
4510
3633
  "json": {
4511
3634
  "description": "Format output as json.",
@@ -4538,43 +3661,16 @@
4538
3661
  "multiple": false,
4539
3662
  "type": "option"
4540
3663
  },
4541
- "model": {
4542
- "description": "Model used to forge candidate drafts (default: the active version's build model)",
4543
- "name": "model",
4544
- "hasDynamicHelp": false,
4545
- "multiple": false,
4546
- "type": "option"
4547
- },
4548
- "temperature": {
4549
- "description": "Sampling temperature for candidate drafts (default: 0.4)",
4550
- "name": "temperature",
4551
- "hasDynamicHelp": false,
4552
- "multiple": false,
4553
- "type": "option"
4554
- },
4555
- "n-samples": {
4556
- "description": "Drafts forged per holdout pair (default: 6)",
4557
- "name": "n-samples",
4558
- "hasDynamicHelp": false,
4559
- "multiple": false,
4560
- "type": "option"
4561
- },
4562
- "oauth-only": {
4563
- "description": "Only run on a free (OAuth) route; never fall back to billed inference",
4564
- "name": "oauth-only",
4565
- "allowNo": false,
4566
- "type": "boolean"
4567
- },
4568
- "wait": {
4569
- "description": "Block and poll until refine finishes (default: print the job_id and return)",
4570
- "name": "wait",
3664
+ "yes": {
3665
+ "description": "Skip confirmation",
3666
+ "name": "yes",
4571
3667
  "allowNo": false,
4572
3668
  "type": "boolean"
4573
3669
  }
4574
3670
  },
4575
3671
  "hasDynamicHelp": false,
4576
3672
  "hiddenAliases": [],
4577
- "id": "voiceprint:refine",
3673
+ "id": "team:delete",
4578
3674
  "pluginAlias": "faces-cli",
4579
3675
  "pluginName": "faces-cli",
4580
3676
  "pluginType": "core",
@@ -4584,23 +3680,20 @@
4584
3680
  "relativePath": [
4585
3681
  "dist",
4586
3682
  "commands",
4587
- "voiceprint",
4588
- "refine.js"
3683
+ "team",
3684
+ "delete.js"
4589
3685
  ]
4590
3686
  },
4591
- "voiceprint:revert": {
3687
+ "team:edit": {
4592
3688
  "aliases": [],
4593
3689
  "args": {
4594
- "self_alias": {
4595
- "description": "Self face alias",
4596
- "name": "self_alias",
3690
+ "team_id": {
3691
+ "description": "Team ID",
3692
+ "name": "team_id",
4597
3693
  "required": true
4598
3694
  }
4599
3695
  },
4600
- "description": "Revert a self face's voice map to its prior version (one-deep undo; re-running toggles back). Only changes which stored recipe/baseline is active — the map text is frozen.",
4601
- "examples": [
4602
- "<%= config.bin %> <%= command.id %> alice"
4603
- ],
3696
+ "description": "Edit a team",
4604
3697
  "flags": {
4605
3698
  "json": {
4606
3699
  "description": "Format output as json.",
@@ -4632,11 +3725,39 @@
4632
3725
  "hasDynamicHelp": false,
4633
3726
  "multiple": false,
4634
3727
  "type": "option"
3728
+ },
3729
+ "name": {
3730
+ "description": "New team name",
3731
+ "name": "name",
3732
+ "hasDynamicHelp": false,
3733
+ "multiple": false,
3734
+ "type": "option"
3735
+ },
3736
+ "description": {
3737
+ "description": "New description (max 1500 chars)",
3738
+ "name": "description",
3739
+ "hasDynamicHelp": false,
3740
+ "multiple": false,
3741
+ "type": "option"
3742
+ },
3743
+ "protocol": {
3744
+ "description": "New protocol content",
3745
+ "name": "protocol",
3746
+ "hasDynamicHelp": false,
3747
+ "multiple": false,
3748
+ "type": "option"
3749
+ },
3750
+ "protocol-file": {
3751
+ "description": "Read protocol from file",
3752
+ "name": "protocol-file",
3753
+ "hasDynamicHelp": false,
3754
+ "multiple": false,
3755
+ "type": "option"
4635
3756
  }
4636
3757
  },
4637
3758
  "hasDynamicHelp": false,
4638
3759
  "hiddenAliases": [],
4639
- "id": "voiceprint:revert",
3760
+ "id": "team:edit",
4640
3761
  "pluginAlias": "faces-cli",
4641
3762
  "pluginName": "faces-cli",
4642
3763
  "pluginType": "core",
@@ -4646,23 +3767,20 @@
4646
3767
  "relativePath": [
4647
3768
  "dist",
4648
3769
  "commands",
4649
- "voiceprint",
4650
- "revert.js"
3770
+ "team",
3771
+ "edit.js"
4651
3772
  ]
4652
3773
  },
4653
- "voiceprint:score-status": {
3774
+ "team:get": {
4654
3775
  "aliases": [],
4655
3776
  "args": {
4656
- "job_id": {
4657
- "description": "Scoring job id",
4658
- "name": "job_id",
3777
+ "team_id": {
3778
+ "description": "Team ID",
3779
+ "name": "team_id",
4659
3780
  "required": true
4660
3781
  }
4661
3782
  },
4662
- "description": "Get the status/result of a voiceprint scoring job (from voiceprint:score without --wait)",
4663
- "examples": [
4664
- "<%= config.bin %> <%= command.id %> 4e13bf03-fbc1-4ad0-92ae-16984e2f9a1d"
4665
- ],
3783
+ "description": "Get a team by ID",
4666
3784
  "flags": {
4667
3785
  "json": {
4668
3786
  "description": "Format output as json.",
@@ -4698,7 +3816,7 @@
4698
3816
  },
4699
3817
  "hasDynamicHelp": false,
4700
3818
  "hiddenAliases": [],
4701
- "id": "voiceprint:score-status",
3819
+ "id": "team:get",
4702
3820
  "pluginAlias": "faces-cli",
4703
3821
  "pluginName": "faces-cli",
4704
3822
  "pluginType": "core",
@@ -4708,25 +3826,14 @@
4708
3826
  "relativePath": [
4709
3827
  "dist",
4710
3828
  "commands",
4711
- "voiceprint",
4712
- "score-status.js"
3829
+ "team",
3830
+ "get.js"
4713
3831
  ]
4714
3832
  },
4715
- "voiceprint:score": {
3833
+ "team:list": {
4716
3834
  "aliases": [],
4717
- "args": {
4718
- "face": {
4719
- "description": "Face to score (alias, owner:alias, or a union like \"(alice-voiceprint | alice)\")",
4720
- "name": "face",
4721
- "required": true
4722
- }
4723
- },
4724
- "description": "Score how closely a face writes like a specific person. Returns VCI (closeness, 0–100) and VFI (voice captured vs a generic baseline, 0–100). Deterministic — ideal for before/after tuning.",
4725
- "examples": [
4726
- "<%= config.bin %> <%= command.id %> \"(alice-voiceprint | alice)\" --emails ./sent.jsonl --wait",
4727
- "<%= config.bin %> <%= command.id %> alice --emails-dir ./sent-emails/ --wait",
4728
- "<%= config.bin %> <%= command.id %> alice --emails ./sent.json # prints job_id; poll with voiceprint:score-status"
4729
- ],
3835
+ "args": {},
3836
+ "description": "List your teams",
4730
3837
  "flags": {
4731
3838
  "json": {
4732
3839
  "description": "Format output as json.",
@@ -4758,55 +3865,11 @@
4758
3865
  "hasDynamicHelp": false,
4759
3866
  "multiple": false,
4760
3867
  "type": "option"
4761
- },
4762
- "emails": {
4763
- "description": "JSON or JSONL file of the person's real writing — {id?, text} objects or plain strings (provide at least 20)",
4764
- "name": "emails",
4765
- "hasDynamicHelp": false,
4766
- "multiple": false,
4767
- "type": "option"
4768
- },
4769
- "emails-dir": {
4770
- "description": "Directory with one sample per file (id = filename). Alternative to --emails.",
4771
- "exclusive": [
4772
- "emails"
4773
- ],
4774
- "name": "emails-dir",
4775
- "hasDynamicHelp": false,
4776
- "multiple": false,
4777
- "type": "option"
4778
- },
4779
- "author-corpus": {
4780
- "description": "Optional larger reference of the person's writing (JSON/JSONL/dir) used to define their voice; defaults to --emails",
4781
- "name": "author-corpus",
4782
- "hasDynamicHelp": false,
4783
- "multiple": false,
4784
- "type": "option"
4785
- },
4786
- "model": {
4787
- "description": "Model used to generate comparison drafts",
4788
- "name": "model",
4789
- "default": "gpt-5.4",
4790
- "hasDynamicHelp": false,
4791
- "multiple": false,
4792
- "type": "option"
4793
- },
4794
- "oauth-only": {
4795
- "description": "Only run when a free (OAuth) model route is available; never fall back to billed inference",
4796
- "name": "oauth-only",
4797
- "allowNo": false,
4798
- "type": "boolean"
4799
- },
4800
- "wait": {
4801
- "description": "Block and poll until the score is ready, then print it (default: print the job_id and return)",
4802
- "name": "wait",
4803
- "allowNo": false,
4804
- "type": "boolean"
4805
3868
  }
4806
3869
  },
4807
3870
  "hasDynamicHelp": false,
4808
3871
  "hiddenAliases": [],
4809
- "id": "voiceprint:score",
3872
+ "id": "team:list",
4810
3873
  "pluginAlias": "faces-cli",
4811
3874
  "pluginName": "faces-cli",
4812
3875
  "pluginType": "core",
@@ -4816,29 +3879,20 @@
4816
3879
  "relativePath": [
4817
3880
  "dist",
4818
3881
  "commands",
4819
- "voiceprint",
4820
- "score.js"
3882
+ "team",
3883
+ "list.js"
4821
3884
  ]
4822
3885
  },
4823
- "voiceprint:upload": {
3886
+ "team:members": {
4824
3887
  "aliases": [],
4825
3888
  "args": {
4826
- "self_alias": {
4827
- "description": "Self face alias",
4828
- "name": "self_alias",
4829
- "required": true
4830
- },
4831
- "file": {
4832
- "description": "Corpus file (JSON array for thread_json, JSONL for email_jsonl)",
4833
- "name": "file",
3889
+ "team_id": {
3890
+ "description": "Team ID",
3891
+ "name": "team_id",
4834
3892
  "required": true
4835
3893
  }
4836
3894
  },
4837
- "description": "Write a self face's email corpus as threads (the source for a voiceprint build). Pure data write — no compilation, no per-message billing.",
4838
- "examples": [
4839
- "<%= config.bin %> <%= command.id %> alice ./corpus.json",
4840
- "<%= config.bin %> <%= command.id %> alice ./mail.jsonl --type email_jsonl --emails-per-thread 50"
4841
- ],
3895
+ "description": "List members of a team",
4842
3896
  "flags": {
4843
3897
  "json": {
4844
3898
  "description": "Format output as json.",
@@ -4870,31 +3924,11 @@
4870
3924
  "hasDynamicHelp": false,
4871
3925
  "multiple": false,
4872
3926
  "type": "option"
4873
- },
4874
- "type": {
4875
- "description": "thread_json: a JSON array of canonical email objects → one room. email_jsonl: JSONL (one email/line) → chunked into several rooms.",
4876
- "name": "type",
4877
- "default": "thread_json",
4878
- "hasDynamicHelp": false,
4879
- "multiple": false,
4880
- "options": [
4881
- "thread_json",
4882
- "email_jsonl"
4883
- ],
4884
- "type": "option"
4885
- },
4886
- "emails-per-thread": {
4887
- "description": "For --type email_jsonl: emails per room (default 50)",
4888
- "name": "emails-per-thread",
4889
- "default": 50,
4890
- "hasDynamicHelp": false,
4891
- "multiple": false,
4892
- "type": "option"
4893
3927
  }
4894
3928
  },
4895
3929
  "hasDynamicHelp": false,
4896
3930
  "hiddenAliases": [],
4897
- "id": "voiceprint:upload",
3931
+ "id": "team:members",
4898
3932
  "pluginAlias": "faces-cli",
4899
3933
  "pluginName": "faces-cli",
4900
3934
  "pluginType": "core",
@@ -4904,23 +3938,25 @@
4904
3938
  "relativePath": [
4905
3939
  "dist",
4906
3940
  "commands",
4907
- "voiceprint",
4908
- "upload.js"
3941
+ "team",
3942
+ "members.js"
4909
3943
  ]
4910
3944
  },
4911
- "voiceprint:versions": {
3945
+ "team:remove": {
4912
3946
  "aliases": [],
4913
3947
  "args": {
4914
- "self_alias": {
4915
- "description": "Self face alias",
4916
- "name": "self_alias",
3948
+ "team_id": {
3949
+ "description": "Team ID",
3950
+ "name": "team_id",
3951
+ "required": true
3952
+ },
3953
+ "alias": {
3954
+ "description": "Face alias to remove",
3955
+ "name": "alias",
4917
3956
  "required": true
4918
3957
  }
4919
3958
  },
4920
- "description": "List a self face's voice-map versions (active + one prior). Retention is one-deep; toggle with voiceprint:revert.",
4921
- "examples": [
4922
- "<%= config.bin %> <%= command.id %> alice"
4923
- ],
3959
+ "description": "Remove a face from a team",
4924
3960
  "flags": {
4925
3961
  "json": {
4926
3962
  "description": "Format output as json.",
@@ -4956,7 +3992,7 @@
4956
3992
  },
4957
3993
  "hasDynamicHelp": false,
4958
3994
  "hiddenAliases": [],
4959
- "id": "voiceprint:versions",
3995
+ "id": "team:remove",
4960
3996
  "pluginAlias": "faces-cli",
4961
3997
  "pluginName": "faces-cli",
4962
3998
  "pluginType": "core",
@@ -4966,8 +4002,8 @@
4966
4002
  "relativePath": [
4967
4003
  "dist",
4968
4004
  "commands",
4969
- "voiceprint",
4970
- "versions.js"
4005
+ "team",
4006
+ "remove.js"
4971
4007
  ]
4972
4008
  },
4973
4009
  "billing:subscription:activate": {
@@ -5095,6 +4131,60 @@
5095
4131
  "cancel.js"
5096
4132
  ]
5097
4133
  },
4134
+ "billing:subscription": {
4135
+ "aliases": [],
4136
+ "args": {},
4137
+ "description": "Show current plan, face count, and renewal date",
4138
+ "flags": {
4139
+ "json": {
4140
+ "description": "Format output as json.",
4141
+ "helpGroup": "GLOBAL",
4142
+ "name": "json",
4143
+ "allowNo": false,
4144
+ "type": "boolean"
4145
+ },
4146
+ "base-url": {
4147
+ "description": "API base URL",
4148
+ "env": "FACES_BASE_URL",
4149
+ "name": "base-url",
4150
+ "hasDynamicHelp": false,
4151
+ "multiple": false,
4152
+ "type": "option"
4153
+ },
4154
+ "token": {
4155
+ "description": "JWT bearer token",
4156
+ "env": "FACES_TOKEN",
4157
+ "name": "token",
4158
+ "hasDynamicHelp": false,
4159
+ "multiple": false,
4160
+ "type": "option"
4161
+ },
4162
+ "api-key": {
4163
+ "description": "API key",
4164
+ "env": "FACES_API_KEY",
4165
+ "name": "api-key",
4166
+ "hasDynamicHelp": false,
4167
+ "multiple": false,
4168
+ "type": "option"
4169
+ }
4170
+ },
4171
+ "hasDynamicHelp": false,
4172
+ "hiddenAliases": [],
4173
+ "id": "billing:subscription",
4174
+ "pluginAlias": "faces-cli",
4175
+ "pluginName": "faces-cli",
4176
+ "pluginType": "core",
4177
+ "strict": true,
4178
+ "enableJsonFlag": true,
4179
+ "isESM": true,
4180
+ "relativePath": [
4181
+ "dist",
4182
+ "commands",
4183
+ "billing",
4184
+ "subscription",
4185
+ "index.js"
4186
+ ]
4187
+ },
5098
4188
  "compile:doc:create": {
5099
4189
  "aliases": [],
5100
4190
  "args": {
@@ -6435,16 +5525,16 @@
6435
5525
  "sync.js"
6436
5526
  ]
6437
5527
  },
6438
- "team:tag:add": {
5528
+ "face:tag:add": {
6439
5529
  "aliases": [],
6440
5530
  "args": {
6441
- "team_id": {
6442
- "description": "Team ID",
6443
- "name": "team_id",
5531
+ "alias": {
5532
+ "description": "Face alias",
5533
+ "name": "alias",
6444
5534
  "required": true
6445
5535
  }
6446
5536
  },
6447
- "description": "Add tags to a team (appends, idempotent)",
5537
+ "description": "Add tags to a face (appends, idempotent)",
6448
5538
  "flags": {
6449
5539
  "json": {
6450
5540
  "description": "Format output as json.",
@@ -6488,7 +5578,7 @@
6488
5578
  },
6489
5579
  "hasDynamicHelp": false,
6490
5580
  "hiddenAliases": [],
6491
- "id": "team:tag:add",
5581
+ "id": "face:tag:add",
6492
5582
  "pluginAlias": "faces-cli",
6493
5583
  "pluginName": "faces-cli",
6494
5584
  "pluginType": "core",
@@ -6498,21 +5588,15 @@
6498
5588
  "relativePath": [
6499
5589
  "dist",
6500
5590
  "commands",
6501
- "team",
5591
+ "face",
6502
5592
  "tag",
6503
5593
  "add.js"
6504
5594
  ]
6505
5595
  },
6506
- "team:tag:list": {
5596
+ "face:tag:all": {
6507
5597
  "aliases": [],
6508
- "args": {
6509
- "team_id": {
6510
- "description": "Team ID",
6511
- "name": "team_id",
6512
- "required": true
6513
- }
6514
- },
6515
- "description": "List tags on a team",
5598
+ "args": {},
5599
+ "description": "List all tags across all your faces",
6516
5600
  "flags": {
6517
5601
  "json": {
6518
5602
  "description": "Format output as json.",
@@ -6548,7 +5632,7 @@
6548
5632
  },
6549
5633
  "hasDynamicHelp": false,
6550
5634
  "hiddenAliases": [],
6551
- "id": "team:tag:list",
5635
+ "id": "face:tag:all",
6552
5636
  "pluginAlias": "faces-cli",
6553
5637
  "pluginName": "faces-cli",
6554
5638
  "pluginType": "core",
@@ -6558,26 +5642,21 @@
6558
5642
  "relativePath": [
6559
5643
  "dist",
6560
5644
  "commands",
6561
- "team",
5645
+ "face",
6562
5646
  "tag",
6563
- "list.js"
5647
+ "all.js"
6564
5648
  ]
6565
5649
  },
6566
- "team:tag:remove": {
5650
+ "face:tag:list": {
6567
5651
  "aliases": [],
6568
5652
  "args": {
6569
- "team_id": {
6570
- "description": "Team ID",
6571
- "name": "team_id",
6572
- "required": true
6573
- },
6574
- "tag": {
6575
- "description": "Tag to remove",
6576
- "name": "tag",
5653
+ "alias": {
5654
+ "description": "Face alias",
5655
+ "name": "alias",
6577
5656
  "required": true
6578
5657
  }
6579
5658
  },
6580
- "description": "Remove a tag from a team",
5659
+ "description": "List tags on a face",
6581
5660
  "flags": {
6582
5661
  "json": {
6583
5662
  "description": "Format output as json.",
@@ -6613,7 +5692,7 @@
6613
5692
  },
6614
5693
  "hasDynamicHelp": false,
6615
5694
  "hiddenAliases": [],
6616
- "id": "team:tag:remove",
5695
+ "id": "face:tag:list",
6617
5696
  "pluginAlias": "faces-cli",
6618
5697
  "pluginName": "faces-cli",
6619
5698
  "pluginType": "core",
@@ -6623,21 +5702,26 @@
6623
5702
  "relativePath": [
6624
5703
  "dist",
6625
5704
  "commands",
6626
- "team",
5705
+ "face",
6627
5706
  "tag",
6628
- "remove.js"
5707
+ "list.js"
6629
5708
  ]
6630
5709
  },
6631
- "team:tag:set": {
5710
+ "face:tag:remove": {
6632
5711
  "aliases": [],
6633
5712
  "args": {
6634
- "team_id": {
6635
- "description": "Team ID",
6636
- "name": "team_id",
5713
+ "alias": {
5714
+ "description": "Face alias",
5715
+ "name": "alias",
5716
+ "required": true
5717
+ },
5718
+ "tag": {
5719
+ "description": "Tag to remove",
5720
+ "name": "tag",
6637
5721
  "required": true
6638
5722
  }
6639
5723
  },
6640
- "description": "Replace all tags on a team",
5724
+ "description": "Remove a tag from a face",
6641
5725
  "flags": {
6642
5726
  "json": {
6643
5727
  "description": "Format output as json.",
@@ -6669,19 +5753,11 @@
6669
5753
  "hasDynamicHelp": false,
6670
5754
  "multiple": false,
6671
5755
  "type": "option"
6672
- },
6673
- "tag": {
6674
- "description": "Tag to set (repeatable, replaces all)",
6675
- "name": "tag",
6676
- "required": true,
6677
- "hasDynamicHelp": false,
6678
- "multiple": true,
6679
- "type": "option"
6680
5756
  }
6681
5757
  },
6682
5758
  "hasDynamicHelp": false,
6683
5759
  "hiddenAliases": [],
6684
- "id": "team:tag:set",
5760
+ "id": "face:tag:remove",
6685
5761
  "pluginAlias": "faces-cli",
6686
5762
  "pluginName": "faces-cli",
6687
5763
  "pluginType": "core",
@@ -6691,12 +5767,12 @@
6691
5767
  "relativePath": [
6692
5768
  "dist",
6693
5769
  "commands",
6694
- "team",
5770
+ "face",
6695
5771
  "tag",
6696
- "set.js"
5772
+ "remove.js"
6697
5773
  ]
6698
5774
  },
6699
- "face:tag:add": {
5775
+ "face:tag:set": {
6700
5776
  "aliases": [],
6701
5777
  "args": {
6702
5778
  "alias": {
@@ -6705,7 +5781,7 @@
6705
5781
  "required": true
6706
5782
  }
6707
5783
  },
6708
- "description": "Add tags to a face (appends, idempotent)",
5784
+ "description": "Replace all tags on a face",
6709
5785
  "flags": {
6710
5786
  "json": {
6711
5787
  "description": "Format output as json.",
@@ -6739,7 +5815,7 @@
6739
5815
  "type": "option"
6740
5816
  },
6741
5817
  "tag": {
6742
- "description": "Tag to add (repeatable)",
5818
+ "description": "Tag to set (repeatable, replaces all)",
6743
5819
  "name": "tag",
6744
5820
  "required": true,
6745
5821
  "hasDynamicHelp": false,
@@ -6749,7 +5825,7 @@
6749
5825
  },
6750
5826
  "hasDynamicHelp": false,
6751
5827
  "hiddenAliases": [],
6752
- "id": "face:tag:add",
5828
+ "id": "face:tag:set",
6753
5829
  "pluginAlias": "faces-cli",
6754
5830
  "pluginName": "faces-cli",
6755
5831
  "pluginType": "core",
@@ -6761,13 +5837,19 @@
6761
5837
  "commands",
6762
5838
  "face",
6763
5839
  "tag",
6764
- "add.js"
5840
+ "set.js"
6765
5841
  ]
6766
5842
  },
6767
- "face:tag:all": {
5843
+ "team:tag:add": {
6768
5844
  "aliases": [],
6769
- "args": {},
6770
- "description": "List all tags across all your faces",
5845
+ "args": {
5846
+ "team_id": {
5847
+ "description": "Team ID",
5848
+ "name": "team_id",
5849
+ "required": true
5850
+ }
5851
+ },
5852
+ "description": "Add tags to a team (appends, idempotent)",
6771
5853
  "flags": {
6772
5854
  "json": {
6773
5855
  "description": "Format output as json.",
@@ -6799,11 +5881,19 @@
6799
5881
  "hasDynamicHelp": false,
6800
5882
  "multiple": false,
6801
5883
  "type": "option"
5884
+ },
5885
+ "tag": {
5886
+ "description": "Tag to add (repeatable)",
5887
+ "name": "tag",
5888
+ "required": true,
5889
+ "hasDynamicHelp": false,
5890
+ "multiple": true,
5891
+ "type": "option"
6802
5892
  }
6803
5893
  },
6804
5894
  "hasDynamicHelp": false,
6805
5895
  "hiddenAliases": [],
6806
- "id": "face:tag:all",
5896
+ "id": "team:tag:add",
6807
5897
  "pluginAlias": "faces-cli",
6808
5898
  "pluginName": "faces-cli",
6809
5899
  "pluginType": "core",
@@ -6813,21 +5903,21 @@
6813
5903
  "relativePath": [
6814
5904
  "dist",
6815
5905
  "commands",
6816
- "face",
5906
+ "team",
6817
5907
  "tag",
6818
- "all.js"
5908
+ "add.js"
6819
5909
  ]
6820
5910
  },
6821
- "face:tag:list": {
5911
+ "team:tag:list": {
6822
5912
  "aliases": [],
6823
5913
  "args": {
6824
- "alias": {
6825
- "description": "Face alias",
6826
- "name": "alias",
5914
+ "team_id": {
5915
+ "description": "Team ID",
5916
+ "name": "team_id",
6827
5917
  "required": true
6828
5918
  }
6829
5919
  },
6830
- "description": "List tags on a face",
5920
+ "description": "List tags on a team",
6831
5921
  "flags": {
6832
5922
  "json": {
6833
5923
  "description": "Format output as json.",
@@ -6863,7 +5953,7 @@
6863
5953
  },
6864
5954
  "hasDynamicHelp": false,
6865
5955
  "hiddenAliases": [],
6866
- "id": "face:tag:list",
5956
+ "id": "team:tag:list",
6867
5957
  "pluginAlias": "faces-cli",
6868
5958
  "pluginName": "faces-cli",
6869
5959
  "pluginType": "core",
@@ -6873,17 +5963,17 @@
6873
5963
  "relativePath": [
6874
5964
  "dist",
6875
5965
  "commands",
6876
- "face",
5966
+ "team",
6877
5967
  "tag",
6878
5968
  "list.js"
6879
5969
  ]
6880
5970
  },
6881
- "face:tag:remove": {
5971
+ "team:tag:remove": {
6882
5972
  "aliases": [],
6883
5973
  "args": {
6884
- "alias": {
6885
- "description": "Face alias",
6886
- "name": "alias",
5974
+ "team_id": {
5975
+ "description": "Team ID",
5976
+ "name": "team_id",
6887
5977
  "required": true
6888
5978
  },
6889
5979
  "tag": {
@@ -6892,7 +5982,7 @@
6892
5982
  "required": true
6893
5983
  }
6894
5984
  },
6895
- "description": "Remove a tag from a face",
5985
+ "description": "Remove a tag from a team",
6896
5986
  "flags": {
6897
5987
  "json": {
6898
5988
  "description": "Format output as json.",
@@ -6928,7 +6018,7 @@
6928
6018
  },
6929
6019
  "hasDynamicHelp": false,
6930
6020
  "hiddenAliases": [],
6931
- "id": "face:tag:remove",
6021
+ "id": "team:tag:remove",
6932
6022
  "pluginAlias": "faces-cli",
6933
6023
  "pluginName": "faces-cli",
6934
6024
  "pluginType": "core",
@@ -6938,21 +6028,21 @@
6938
6028
  "relativePath": [
6939
6029
  "dist",
6940
6030
  "commands",
6941
- "face",
6031
+ "team",
6942
6032
  "tag",
6943
6033
  "remove.js"
6944
6034
  ]
6945
6035
  },
6946
- "face:tag:set": {
6036
+ "team:tag:set": {
6947
6037
  "aliases": [],
6948
6038
  "args": {
6949
- "alias": {
6950
- "description": "Face alias",
6951
- "name": "alias",
6039
+ "team_id": {
6040
+ "description": "Team ID",
6041
+ "name": "team_id",
6952
6042
  "required": true
6953
6043
  }
6954
6044
  },
6955
- "description": "Replace all tags on a face",
6045
+ "description": "Replace all tags on a team",
6956
6046
  "flags": {
6957
6047
  "json": {
6958
6048
  "description": "Format output as json.",
@@ -6996,7 +6086,7 @@
6996
6086
  },
6997
6087
  "hasDynamicHelp": false,
6998
6088
  "hiddenAliases": [],
6999
- "id": "face:tag:set",
6089
+ "id": "team:tag:set",
7000
6090
  "pluginAlias": "faces-cli",
7001
6091
  "pluginName": "faces-cli",
7002
6092
  "pluginType": "core",
@@ -7006,11 +6096,11 @@
7006
6096
  "relativePath": [
7007
6097
  "dist",
7008
6098
  "commands",
7009
- "face",
6099
+ "team",
7010
6100
  "tag",
7011
6101
  "set.js"
7012
6102
  ]
7013
6103
  }
7014
6104
  },
7015
- "version": "1.7.6"
6105
+ "version": "1.7.7"
7016
6106
  }