faces-cli 1.5.1 → 1.5.2

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.
@@ -3,6 +3,7 @@ export default class CompileDocMake extends BaseCommand {
3
3
  static description: string;
4
4
  static flags: {
5
5
  timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ 'no-wait': import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
7
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
8
  token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
9
  'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -7,6 +7,10 @@ export default class CompileDocMake extends BaseCommand {
7
7
  static flags = {
8
8
  ...BaseCommand.baseFlags,
9
9
  timeout: Flags.integer({ description: 'Compile timeout in seconds (default: 600)', default: 600 }),
10
+ 'no-wait': Flags.boolean({
11
+ description: 'Return immediately after triggering compilation. Prints the document ID for manual polling.',
12
+ default: false,
13
+ }),
10
14
  };
11
15
  static args = {
12
16
  doc_id: Args.string({ description: 'Document ID', required: true }),
@@ -25,6 +29,13 @@ export default class CompileDocMake extends BaseCommand {
25
29
  throw err;
26
30
  }
27
31
  const chunksTotal = makeResponse.chunks_total;
32
+ if (flags['no-wait']) {
33
+ if (!json) {
34
+ process.stderr.write(`Compilation started in background${chunksTotal ? ` (${chunksTotal} chunks)` : ''}.\n`);
35
+ process.stderr.write(`Poll with: faces compile:doc:get ${args.doc_id} --json\n`);
36
+ }
37
+ return makeResponse;
38
+ }
28
39
  if (!json)
29
40
  process.stderr.write(`Compiling${chunksTotal ? ` (${chunksTotal} chunks)` : ''}:\n`);
30
41
  let result;
@@ -6,6 +6,7 @@ export default class CompileImport extends BaseCommand {
6
6
  type: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
7
  perspective: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
8
  'face-speaker': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'no-wait': import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
10
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
11
  token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
12
  'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -25,6 +25,10 @@ export default class CompileImport extends BaseCommand {
25
25
  'face-speaker': Flags.string({
26
26
  description: 'For --type thread: AssemblyAI speaker label (e.g. "A") that corresponds to the face. Defaults to first detected speaker.',
27
27
  }),
28
+ 'no-wait': Flags.boolean({
29
+ description: 'Return immediately after import starts (do not poll for transcription). Prints the ID for manual polling.',
30
+ default: false,
31
+ }),
28
32
  };
29
33
  static args = {
30
34
  face_id: Args.string({ description: 'Face alias', required: true }),
@@ -58,7 +62,15 @@ export default class CompileImport extends BaseCommand {
58
62
  }
59
63
  throw err;
60
64
  }
61
- // Poll until transcription completes
65
+ // Poll until transcription completes — unless --no-wait
66
+ if (data.prepare_status === 'transcribing' && flags['no-wait']) {
67
+ const id = (data.thread_id ?? data.document_id);
68
+ if (!json) {
69
+ process.stderr.write(`Import started in background (downloading + transcribing).\n`);
70
+ process.stderr.write(`Poll with: faces compile:${flags.type === 'thread' ? 'thread' : 'doc'}:get ${id} --json\n`);
71
+ }
72
+ return data;
73
+ }
62
74
  if (data.prepare_status === 'transcribing') {
63
75
  const id = (data.thread_id ?? data.document_id);
64
76
  const endpoint = flags.type === 'thread'
@@ -3,6 +3,7 @@ export default class CompileThreadMake extends BaseCommand {
3
3
  static description: string;
4
4
  static flags: {
5
5
  timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ 'no-wait': import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
7
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
8
  token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
9
  'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -7,6 +7,10 @@ export default class CompileThreadMake extends BaseCommand {
7
7
  static flags = {
8
8
  ...BaseCommand.baseFlags,
9
9
  timeout: Flags.integer({ description: 'Compile timeout in seconds (default: 600)', default: 600 }),
10
+ 'no-wait': Flags.boolean({
11
+ description: 'Return immediately after triggering compilation. Prints the thread ID for manual polling.',
12
+ default: false,
13
+ }),
10
14
  };
11
15
  static args = {
12
16
  thread_id: Args.string({ description: 'Thread ID', required: true }),
@@ -25,6 +29,13 @@ export default class CompileThreadMake extends BaseCommand {
25
29
  throw err;
26
30
  }
27
31
  const chunksTotal = makeResponse.chunks_total;
32
+ if (flags['no-wait']) {
33
+ if (!json) {
34
+ process.stderr.write(`Compilation started in background${chunksTotal ? ` (${chunksTotal} chunks)` : ''}.\n`);
35
+ process.stderr.write(`Poll with: faces compile:thread:get ${args.thread_id} --json\n`);
36
+ }
37
+ return makeResponse;
38
+ }
28
39
  if (!json)
29
40
  process.stderr.write(`Compiling${chunksTotal ? ` (${chunksTotal} chunks)` : ''}:\n`);
30
41
  let result;
@@ -6,6 +6,7 @@ export default class CompileUpload extends BaseCommand {
6
6
  kind: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
7
  perspective: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
8
  'face-speaker': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'no-wait': import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
10
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
11
  token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
12
  'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -24,6 +24,10 @@ export default class CompileUpload extends BaseCommand {
24
24
  'face-speaker': Flags.string({
25
25
  description: 'Speaker name to map to the face (thread only). If omitted, auto-detected from face name.',
26
26
  }),
27
+ 'no-wait': Flags.boolean({
28
+ description: 'Return immediately after upload (do not poll for transcription). Prints the ID for manual polling.',
29
+ default: false,
30
+ }),
27
31
  };
28
32
  static args = {
29
33
  alias: Args.string({ description: 'Face alias', required: true }),
@@ -52,7 +56,15 @@ export default class CompileUpload extends BaseCommand {
52
56
  this.error(`Error (${err.statusCode}): ${err.message}`);
53
57
  throw err;
54
58
  }
55
- // If transcribing (audio/video upload), poll until complete
59
+ // If transcribing (audio/video upload), poll until complete — unless --no-wait
60
+ if (data.prepare_status === 'transcribing' && flags['no-wait']) {
61
+ const id = (data.thread_id ?? data.document_id);
62
+ if (!json) {
63
+ process.stderr.write(`Transcription started in background.\n`);
64
+ process.stderr.write(`Poll with: faces compile:${flags.kind === 'thread' ? 'thread' : 'doc'}:get ${id} --json\n`);
65
+ }
66
+ return data;
67
+ }
56
68
  if (data.prepare_status === 'transcribing') {
57
69
  const id = (data.thread_id ?? data.document_id);
58
70
  const endpoint = flags.kind === 'thread'
@@ -566,10 +566,10 @@
566
566
  "whoami.js"
567
567
  ]
568
568
  },
569
- "billing:balance": {
569
+ "catalog:doctor": {
570
570
  "aliases": [],
571
571
  "args": {},
572
- "description": "Show credit balance and payment method status",
572
+ "description": "Diagnose and repair the local face catalog",
573
573
  "flags": {
574
574
  "json": {
575
575
  "description": "Format output as json.",
@@ -601,11 +601,23 @@
601
601
  "hasDynamicHelp": false,
602
602
  "multiple": false,
603
603
  "type": "option"
604
+ },
605
+ "fix": {
606
+ "description": "Rebuild missing or stale catalog entries from API",
607
+ "name": "fix",
608
+ "allowNo": false,
609
+ "type": "boolean"
610
+ },
611
+ "generate": {
612
+ "description": "Fix + generate missing descriptions via LLM",
613
+ "name": "generate",
614
+ "allowNo": false,
615
+ "type": "boolean"
604
616
  }
605
617
  },
606
618
  "hasDynamicHelp": false,
607
619
  "hiddenAliases": [],
608
- "id": "billing:balance",
620
+ "id": "catalog:doctor",
609
621
  "pluginAlias": "faces-cli",
610
622
  "pluginName": "faces-cli",
611
623
  "pluginType": "core",
@@ -615,14 +627,14 @@
615
627
  "relativePath": [
616
628
  "dist",
617
629
  "commands",
618
- "billing",
619
- "balance.js"
630
+ "catalog",
631
+ "doctor.js"
620
632
  ]
621
633
  },
622
- "billing:card-setup": {
634
+ "catalog:list": {
623
635
  "aliases": [],
624
636
  "args": {},
625
- "description": "Get a Stripe card setup URL to save a payment method",
637
+ "description": "List all faces in the local catalog",
626
638
  "flags": {
627
639
  "json": {
628
640
  "description": "Format output as json.",
@@ -658,7 +670,7 @@
658
670
  },
659
671
  "hasDynamicHelp": false,
660
672
  "hiddenAliases": [],
661
- "id": "billing:card-setup",
673
+ "id": "catalog:list",
662
674
  "pluginAlias": "faces-cli",
663
675
  "pluginName": "faces-cli",
664
676
  "pluginType": "core",
@@ -668,14 +680,14 @@
668
680
  "relativePath": [
669
681
  "dist",
670
682
  "commands",
671
- "billing",
672
- "card-setup.js"
683
+ "catalog",
684
+ "list.js"
673
685
  ]
674
686
  },
675
- "billing:checkout": {
687
+ "billing:balance": {
676
688
  "aliases": [],
677
689
  "args": {},
678
- "description": "Get a Stripe checkout URL to upgrade your subscription plan",
690
+ "description": "Show credit balance and payment method status",
679
691
  "flags": {
680
692
  "json": {
681
693
  "description": "Format output as json.",
@@ -707,22 +719,11 @@
707
719
  "hasDynamicHelp": false,
708
720
  "multiple": false,
709
721
  "type": "option"
710
- },
711
- "plan": {
712
- "description": "Plan to subscribe to",
713
- "name": "plan",
714
- "default": "connect",
715
- "hasDynamicHelp": false,
716
- "multiple": false,
717
- "options": [
718
- "connect"
719
- ],
720
- "type": "option"
721
722
  }
722
723
  },
723
724
  "hasDynamicHelp": false,
724
725
  "hiddenAliases": [],
725
- "id": "billing:checkout",
726
+ "id": "billing:balance",
726
727
  "pluginAlias": "faces-cli",
727
728
  "pluginName": "faces-cli",
728
729
  "pluginType": "core",
@@ -733,13 +734,13 @@
733
734
  "dist",
734
735
  "commands",
735
736
  "billing",
736
- "checkout.js"
737
+ "balance.js"
737
738
  ]
738
739
  },
739
- "billing:llm-costs": {
740
+ "billing:card-setup": {
740
741
  "aliases": [],
741
742
  "args": {},
742
- "description": "List available LLMs and their per-token costs",
743
+ "description": "Get a Stripe card setup URL to save a payment method",
743
744
  "flags": {
744
745
  "json": {
745
746
  "description": "Format output as json.",
@@ -771,18 +772,11 @@
771
772
  "hasDynamicHelp": false,
772
773
  "multiple": false,
773
774
  "type": "option"
774
- },
775
- "provider": {
776
- "description": "Filter by provider (e.g. openai, anthropic)",
777
- "name": "provider",
778
- "hasDynamicHelp": false,
779
- "multiple": false,
780
- "type": "option"
781
775
  }
782
776
  },
783
777
  "hasDynamicHelp": false,
784
778
  "hiddenAliases": [],
785
- "id": "billing:llm-costs",
779
+ "id": "billing:card-setup",
786
780
  "pluginAlias": "faces-cli",
787
781
  "pluginName": "faces-cli",
788
782
  "pluginType": "core",
@@ -793,13 +787,13 @@
793
787
  "dist",
794
788
  "commands",
795
789
  "billing",
796
- "llm-costs.js"
790
+ "card-setup.js"
797
791
  ]
798
792
  },
799
- "billing:quota": {
793
+ "billing:checkout": {
800
794
  "aliases": [],
801
795
  "args": {},
802
- "description": "Show compile token quota and per-face stats",
796
+ "description": "Get a Stripe checkout URL to upgrade your subscription plan",
803
797
  "flags": {
804
798
  "json": {
805
799
  "description": "Format output as json.",
@@ -831,11 +825,22 @@
831
825
  "hasDynamicHelp": false,
832
826
  "multiple": false,
833
827
  "type": "option"
828
+ },
829
+ "plan": {
830
+ "description": "Plan to subscribe to",
831
+ "name": "plan",
832
+ "default": "connect",
833
+ "hasDynamicHelp": false,
834
+ "multiple": false,
835
+ "options": [
836
+ "connect"
837
+ ],
838
+ "type": "option"
834
839
  }
835
840
  },
836
841
  "hasDynamicHelp": false,
837
842
  "hiddenAliases": [],
838
- "id": "billing:quota",
843
+ "id": "billing:checkout",
839
844
  "pluginAlias": "faces-cli",
840
845
  "pluginName": "faces-cli",
841
846
  "pluginType": "core",
@@ -846,13 +851,13 @@
846
851
  "dist",
847
852
  "commands",
848
853
  "billing",
849
- "quota.js"
854
+ "checkout.js"
850
855
  ]
851
856
  },
852
- "billing:subscription": {
857
+ "billing:llm-costs": {
853
858
  "aliases": [],
854
859
  "args": {},
855
- "description": "Show current plan, face count, and renewal date",
860
+ "description": "List available LLMs and their per-token costs",
856
861
  "flags": {
857
862
  "json": {
858
863
  "description": "Format output as json.",
@@ -884,11 +889,18 @@
884
889
  "hasDynamicHelp": false,
885
890
  "multiple": false,
886
891
  "type": "option"
892
+ },
893
+ "provider": {
894
+ "description": "Filter by provider (e.g. openai, anthropic)",
895
+ "name": "provider",
896
+ "hasDynamicHelp": false,
897
+ "multiple": false,
898
+ "type": "option"
887
899
  }
888
900
  },
889
901
  "hasDynamicHelp": false,
890
902
  "hiddenAliases": [],
891
- "id": "billing:subscription",
903
+ "id": "billing:llm-costs",
892
904
  "pluginAlias": "faces-cli",
893
905
  "pluginName": "faces-cli",
894
906
  "pluginType": "core",
@@ -899,13 +911,13 @@
899
911
  "dist",
900
912
  "commands",
901
913
  "billing",
902
- "subscription.js"
914
+ "llm-costs.js"
903
915
  ]
904
916
  },
905
- "billing:topup": {
917
+ "billing:quota": {
906
918
  "aliases": [],
907
919
  "args": {},
908
- "description": "Top up credit balance using saved payment method",
920
+ "description": "Show compile token quota and per-face stats",
909
921
  "flags": {
910
922
  "json": {
911
923
  "description": "Format output as json.",
@@ -937,26 +949,11 @@
937
949
  "hasDynamicHelp": false,
938
950
  "multiple": false,
939
951
  "type": "option"
940
- },
941
- "amount": {
942
- "description": "Top-up amount in USD (min $1)",
943
- "name": "amount",
944
- "required": true,
945
- "hasDynamicHelp": false,
946
- "multiple": false,
947
- "type": "option"
948
- },
949
- "payment-ref": {
950
- "description": "Payment reference (admin/test path)",
951
- "name": "payment-ref",
952
- "hasDynamicHelp": false,
953
- "multiple": false,
954
- "type": "option"
955
952
  }
956
953
  },
957
954
  "hasDynamicHelp": false,
958
955
  "hiddenAliases": [],
959
- "id": "billing:topup",
956
+ "id": "billing:quota",
960
957
  "pluginAlias": "faces-cli",
961
958
  "pluginName": "faces-cli",
962
959
  "pluginType": "core",
@@ -967,13 +964,13 @@
967
964
  "dist",
968
965
  "commands",
969
966
  "billing",
970
- "topup.js"
967
+ "quota.js"
971
968
  ]
972
969
  },
973
- "billing:usage": {
970
+ "billing:subscription": {
974
971
  "aliases": [],
975
972
  "args": {},
976
- "description": "Aggregated usage analytics",
973
+ "description": "Show current plan, face count, and renewal date",
977
974
  "flags": {
978
975
  "json": {
979
976
  "description": "Format output as json.",
@@ -1005,38 +1002,11 @@
1005
1002
  "hasDynamicHelp": false,
1006
1003
  "multiple": false,
1007
1004
  "type": "option"
1008
- },
1009
- "group-by": {
1010
- "description": "Group results",
1011
- "name": "group-by",
1012
- "hasDynamicHelp": false,
1013
- "multiple": false,
1014
- "options": [
1015
- "api_key",
1016
- "model",
1017
- "llm",
1018
- "date"
1019
- ],
1020
- "type": "option"
1021
- },
1022
- "from": {
1023
- "description": "Start date (YYYY-MM-DD)",
1024
- "name": "from",
1025
- "hasDynamicHelp": false,
1026
- "multiple": false,
1027
- "type": "option"
1028
- },
1029
- "to": {
1030
- "description": "End date (YYYY-MM-DD)",
1031
- "name": "to",
1032
- "hasDynamicHelp": false,
1033
- "multiple": false,
1034
- "type": "option"
1035
1005
  }
1036
1006
  },
1037
1007
  "hasDynamicHelp": false,
1038
1008
  "hiddenAliases": [],
1039
- "id": "billing:usage",
1009
+ "id": "billing:subscription",
1040
1010
  "pluginAlias": "faces-cli",
1041
1011
  "pluginName": "faces-cli",
1042
1012
  "pluginType": "core",
@@ -1047,13 +1017,13 @@
1047
1017
  "dist",
1048
1018
  "commands",
1049
1019
  "billing",
1050
- "usage.js"
1020
+ "subscription.js"
1051
1021
  ]
1052
1022
  },
1053
- "catalog:doctor": {
1023
+ "billing:topup": {
1054
1024
  "aliases": [],
1055
1025
  "args": {},
1056
- "description": "Diagnose and repair the local face catalog",
1026
+ "description": "Top up credit balance using saved payment method",
1057
1027
  "flags": {
1058
1028
  "json": {
1059
1029
  "description": "Format output as json.",
@@ -1086,22 +1056,25 @@
1086
1056
  "multiple": false,
1087
1057
  "type": "option"
1088
1058
  },
1089
- "fix": {
1090
- "description": "Rebuild missing or stale catalog entries from API",
1091
- "name": "fix",
1092
- "allowNo": false,
1093
- "type": "boolean"
1059
+ "amount": {
1060
+ "description": "Top-up amount in USD (min $1)",
1061
+ "name": "amount",
1062
+ "required": true,
1063
+ "hasDynamicHelp": false,
1064
+ "multiple": false,
1065
+ "type": "option"
1094
1066
  },
1095
- "generate": {
1096
- "description": "Fix + generate missing descriptions via LLM",
1097
- "name": "generate",
1098
- "allowNo": false,
1099
- "type": "boolean"
1067
+ "payment-ref": {
1068
+ "description": "Payment reference (admin/test path)",
1069
+ "name": "payment-ref",
1070
+ "hasDynamicHelp": false,
1071
+ "multiple": false,
1072
+ "type": "option"
1100
1073
  }
1101
1074
  },
1102
1075
  "hasDynamicHelp": false,
1103
1076
  "hiddenAliases": [],
1104
- "id": "catalog:doctor",
1077
+ "id": "billing:topup",
1105
1078
  "pluginAlias": "faces-cli",
1106
1079
  "pluginName": "faces-cli",
1107
1080
  "pluginType": "core",
@@ -1111,14 +1084,14 @@
1111
1084
  "relativePath": [
1112
1085
  "dist",
1113
1086
  "commands",
1114
- "catalog",
1115
- "doctor.js"
1087
+ "billing",
1088
+ "topup.js"
1116
1089
  ]
1117
1090
  },
1118
- "catalog:list": {
1091
+ "billing:usage": {
1119
1092
  "aliases": [],
1120
1093
  "args": {},
1121
- "description": "List all faces in the local catalog",
1094
+ "description": "Aggregated usage analytics",
1122
1095
  "flags": {
1123
1096
  "json": {
1124
1097
  "description": "Format output as json.",
@@ -1150,11 +1123,38 @@
1150
1123
  "hasDynamicHelp": false,
1151
1124
  "multiple": false,
1152
1125
  "type": "option"
1126
+ },
1127
+ "group-by": {
1128
+ "description": "Group results",
1129
+ "name": "group-by",
1130
+ "hasDynamicHelp": false,
1131
+ "multiple": false,
1132
+ "options": [
1133
+ "api_key",
1134
+ "model",
1135
+ "llm",
1136
+ "date"
1137
+ ],
1138
+ "type": "option"
1139
+ },
1140
+ "from": {
1141
+ "description": "Start date (YYYY-MM-DD)",
1142
+ "name": "from",
1143
+ "hasDynamicHelp": false,
1144
+ "multiple": false,
1145
+ "type": "option"
1146
+ },
1147
+ "to": {
1148
+ "description": "End date (YYYY-MM-DD)",
1149
+ "name": "to",
1150
+ "hasDynamicHelp": false,
1151
+ "multiple": false,
1152
+ "type": "option"
1153
1153
  }
1154
1154
  },
1155
1155
  "hasDynamicHelp": false,
1156
1156
  "hiddenAliases": [],
1157
- "id": "catalog:list",
1157
+ "id": "billing:usage",
1158
1158
  "pluginAlias": "faces-cli",
1159
1159
  "pluginName": "faces-cli",
1160
1160
  "pluginType": "core",
@@ -1164,8 +1164,8 @@
1164
1164
  "relativePath": [
1165
1165
  "dist",
1166
1166
  "commands",
1167
- "catalog",
1168
- "list.js"
1167
+ "billing",
1168
+ "usage.js"
1169
1169
  ]
1170
1170
  },
1171
1171
  "chat:chat": {
@@ -1453,16 +1453,10 @@
1453
1453
  "responses.js"
1454
1454
  ]
1455
1455
  },
1456
- "compile:import": {
1456
+ "config:clear": {
1457
1457
  "aliases": [],
1458
- "args": {
1459
- "face_id": {
1460
- "description": "Face alias",
1461
- "name": "face_id",
1462
- "required": true
1463
- }
1464
- },
1465
- "description": "Import a YouTube video into a face via server-side download and transcription",
1458
+ "args": {},
1459
+ "description": "Delete all saved credentials and config",
1466
1460
  "flags": {
1467
1461
  "json": {
1468
1462
  "description": "Format output as json.",
@@ -1495,49 +1489,16 @@
1495
1489
  "multiple": false,
1496
1490
  "type": "option"
1497
1491
  },
1498
- "url": {
1499
- "description": "YouTube URL (youtube.com/watch?v=... or youtu.be/...)",
1500
- "name": "url",
1501
- "required": true,
1502
- "hasDynamicHelp": false,
1503
- "multiple": false,
1504
- "type": "option"
1505
- },
1506
- "type": {
1507
- "description": "\"document\" for solo talks, lectures, monologues; \"thread\" for interviews or multi-speaker conversations",
1508
- "name": "type",
1509
- "default": "document",
1510
- "hasDynamicHelp": false,
1511
- "multiple": false,
1512
- "options": [
1513
- "document",
1514
- "thread"
1515
- ],
1516
- "type": "option"
1517
- },
1518
- "perspective": {
1519
- "description": "\"first-person\" if the face is the speaker; \"third-person\" if the video is about the face",
1520
- "name": "perspective",
1521
- "default": "third-person",
1522
- "hasDynamicHelp": false,
1523
- "multiple": false,
1524
- "options": [
1525
- "first-person",
1526
- "third-person"
1527
- ],
1528
- "type": "option"
1529
- },
1530
- "face-speaker": {
1531
- "description": "For --type thread: AssemblyAI speaker label (e.g. \"A\") that corresponds to the face. Defaults to first detected speaker.",
1532
- "name": "face-speaker",
1533
- "hasDynamicHelp": false,
1534
- "multiple": false,
1535
- "type": "option"
1492
+ "yes": {
1493
+ "description": "Skip confirmation",
1494
+ "name": "yes",
1495
+ "allowNo": false,
1496
+ "type": "boolean"
1536
1497
  }
1537
1498
  },
1538
1499
  "hasDynamicHelp": false,
1539
1500
  "hiddenAliases": [],
1540
- "id": "compile:import",
1501
+ "id": "config:clear",
1541
1502
  "pluginAlias": "faces-cli",
1542
1503
  "pluginName": "faces-cli",
1543
1504
  "pluginType": "core",
@@ -1547,20 +1508,25 @@
1547
1508
  "relativePath": [
1548
1509
  "dist",
1549
1510
  "commands",
1550
- "compile",
1551
- "import.js"
1511
+ "config",
1512
+ "clear.js"
1552
1513
  ]
1553
1514
  },
1554
- "compile:upload": {
1515
+ "config:set": {
1555
1516
  "aliases": [],
1556
1517
  "args": {
1557
- "alias": {
1558
- "description": "Face alias",
1559
- "name": "alias",
1518
+ "key": {
1519
+ "description": "Config key",
1520
+ "name": "key",
1521
+ "required": true
1522
+ },
1523
+ "value": {
1524
+ "description": "Config value",
1525
+ "name": "value",
1560
1526
  "required": true
1561
1527
  }
1562
1528
  },
1563
- "description": "Upload a file (text/PDF/audio/video) to compile into a face",
1529
+ "description": "Set a config value (e.g. base_url, api_key, token)",
1564
1530
  "flags": {
1565
1531
  "json": {
1566
1532
  "description": "Format output as json.",
@@ -1592,50 +1558,11 @@
1592
1558
  "hasDynamicHelp": false,
1593
1559
  "multiple": false,
1594
1560
  "type": "option"
1595
- },
1596
- "file": {
1597
- "description": "File to upload",
1598
- "name": "file",
1599
- "required": true,
1600
- "hasDynamicHelp": false,
1601
- "multiple": false,
1602
- "type": "option"
1603
- },
1604
- "kind": {
1605
- "description": "Upload kind: document or thread",
1606
- "name": "kind",
1607
- "default": "document",
1608
- "hasDynamicHelp": false,
1609
- "multiple": false,
1610
- "options": [
1611
- "document",
1612
- "thread"
1613
- ],
1614
- "type": "option"
1615
- },
1616
- "perspective": {
1617
- "description": "Perspective (document only)",
1618
- "name": "perspective",
1619
- "default": "third-person",
1620
- "hasDynamicHelp": false,
1621
- "multiple": false,
1622
- "options": [
1623
- "first-person",
1624
- "third-person"
1625
- ],
1626
- "type": "option"
1627
- },
1628
- "face-speaker": {
1629
- "description": "Speaker name to map to the face (thread only). If omitted, auto-detected from face name.",
1630
- "name": "face-speaker",
1631
- "hasDynamicHelp": false,
1632
- "multiple": false,
1633
- "type": "option"
1634
1561
  }
1635
1562
  },
1636
1563
  "hasDynamicHelp": false,
1637
1564
  "hiddenAliases": [],
1638
- "id": "compile:upload",
1565
+ "id": "config:set",
1639
1566
  "pluginAlias": "faces-cli",
1640
1567
  "pluginName": "faces-cli",
1641
1568
  "pluginType": "core",
@@ -1645,14 +1572,14 @@
1645
1572
  "relativePath": [
1646
1573
  "dist",
1647
1574
  "commands",
1648
- "compile",
1649
- "upload.js"
1575
+ "config",
1576
+ "set.js"
1650
1577
  ]
1651
1578
  },
1652
- "config:clear": {
1579
+ "config:show": {
1653
1580
  "aliases": [],
1654
1581
  "args": {},
1655
- "description": "Delete all saved credentials and config",
1582
+ "description": "Print current config (credentials are masked)",
1656
1583
  "flags": {
1657
1584
  "json": {
1658
1585
  "description": "Format output as json.",
@@ -1684,17 +1611,11 @@
1684
1611
  "hasDynamicHelp": false,
1685
1612
  "multiple": false,
1686
1613
  "type": "option"
1687
- },
1688
- "yes": {
1689
- "description": "Skip confirmation",
1690
- "name": "yes",
1691
- "allowNo": false,
1692
- "type": "boolean"
1693
1614
  }
1694
1615
  },
1695
1616
  "hasDynamicHelp": false,
1696
1617
  "hiddenAliases": [],
1697
- "id": "config:clear",
1618
+ "id": "config:show",
1698
1619
  "pluginAlias": "faces-cli",
1699
1620
  "pluginName": "faces-cli",
1700
1621
  "pluginType": "core",
@@ -1705,24 +1626,19 @@
1705
1626
  "dist",
1706
1627
  "commands",
1707
1628
  "config",
1708
- "clear.js"
1629
+ "show.js"
1709
1630
  ]
1710
1631
  },
1711
- "config:set": {
1632
+ "compile:import": {
1712
1633
  "aliases": [],
1713
1634
  "args": {
1714
- "key": {
1715
- "description": "Config key",
1716
- "name": "key",
1717
- "required": true
1718
- },
1719
- "value": {
1720
- "description": "Config value",
1721
- "name": "value",
1635
+ "face_id": {
1636
+ "description": "Face alias",
1637
+ "name": "face_id",
1722
1638
  "required": true
1723
1639
  }
1724
1640
  },
1725
- "description": "Set a config value (e.g. base_url, api_key, token)",
1641
+ "description": "Import a YouTube video into a face via server-side download and transcription",
1726
1642
  "flags": {
1727
1643
  "json": {
1728
1644
  "description": "Format output as json.",
@@ -1754,11 +1670,56 @@
1754
1670
  "hasDynamicHelp": false,
1755
1671
  "multiple": false,
1756
1672
  "type": "option"
1673
+ },
1674
+ "url": {
1675
+ "description": "YouTube URL (youtube.com/watch?v=... or youtu.be/...)",
1676
+ "name": "url",
1677
+ "required": true,
1678
+ "hasDynamicHelp": false,
1679
+ "multiple": false,
1680
+ "type": "option"
1681
+ },
1682
+ "type": {
1683
+ "description": "\"document\" for solo talks, lectures, monologues; \"thread\" for interviews or multi-speaker conversations",
1684
+ "name": "type",
1685
+ "default": "document",
1686
+ "hasDynamicHelp": false,
1687
+ "multiple": false,
1688
+ "options": [
1689
+ "document",
1690
+ "thread"
1691
+ ],
1692
+ "type": "option"
1693
+ },
1694
+ "perspective": {
1695
+ "description": "\"first-person\" if the face is the speaker; \"third-person\" if the video is about the face",
1696
+ "name": "perspective",
1697
+ "default": "third-person",
1698
+ "hasDynamicHelp": false,
1699
+ "multiple": false,
1700
+ "options": [
1701
+ "first-person",
1702
+ "third-person"
1703
+ ],
1704
+ "type": "option"
1705
+ },
1706
+ "face-speaker": {
1707
+ "description": "For --type thread: AssemblyAI speaker label (e.g. \"A\") that corresponds to the face. Defaults to first detected speaker.",
1708
+ "name": "face-speaker",
1709
+ "hasDynamicHelp": false,
1710
+ "multiple": false,
1711
+ "type": "option"
1712
+ },
1713
+ "no-wait": {
1714
+ "description": "Return immediately after import starts (do not poll for transcription). Prints the ID for manual polling.",
1715
+ "name": "no-wait",
1716
+ "allowNo": false,
1717
+ "type": "boolean"
1757
1718
  }
1758
1719
  },
1759
1720
  "hasDynamicHelp": false,
1760
1721
  "hiddenAliases": [],
1761
- "id": "config:set",
1722
+ "id": "compile:import",
1762
1723
  "pluginAlias": "faces-cli",
1763
1724
  "pluginName": "faces-cli",
1764
1725
  "pluginType": "core",
@@ -1768,14 +1729,20 @@
1768
1729
  "relativePath": [
1769
1730
  "dist",
1770
1731
  "commands",
1771
- "config",
1772
- "set.js"
1732
+ "compile",
1733
+ "import.js"
1773
1734
  ]
1774
1735
  },
1775
- "config:show": {
1736
+ "compile:upload": {
1776
1737
  "aliases": [],
1777
- "args": {},
1778
- "description": "Print current config (credentials are masked)",
1738
+ "args": {
1739
+ "alias": {
1740
+ "description": "Face alias",
1741
+ "name": "alias",
1742
+ "required": true
1743
+ }
1744
+ },
1745
+ "description": "Upload a file (text/PDF/audio/video) to compile into a face",
1779
1746
  "flags": {
1780
1747
  "json": {
1781
1748
  "description": "Format output as json.",
@@ -1807,11 +1774,56 @@
1807
1774
  "hasDynamicHelp": false,
1808
1775
  "multiple": false,
1809
1776
  "type": "option"
1777
+ },
1778
+ "file": {
1779
+ "description": "File to upload",
1780
+ "name": "file",
1781
+ "required": true,
1782
+ "hasDynamicHelp": false,
1783
+ "multiple": false,
1784
+ "type": "option"
1785
+ },
1786
+ "kind": {
1787
+ "description": "Upload kind: document or thread",
1788
+ "name": "kind",
1789
+ "default": "document",
1790
+ "hasDynamicHelp": false,
1791
+ "multiple": false,
1792
+ "options": [
1793
+ "document",
1794
+ "thread"
1795
+ ],
1796
+ "type": "option"
1797
+ },
1798
+ "perspective": {
1799
+ "description": "Perspective (document only)",
1800
+ "name": "perspective",
1801
+ "default": "third-person",
1802
+ "hasDynamicHelp": false,
1803
+ "multiple": false,
1804
+ "options": [
1805
+ "first-person",
1806
+ "third-person"
1807
+ ],
1808
+ "type": "option"
1809
+ },
1810
+ "face-speaker": {
1811
+ "description": "Speaker name to map to the face (thread only). If omitted, auto-detected from face name.",
1812
+ "name": "face-speaker",
1813
+ "hasDynamicHelp": false,
1814
+ "multiple": false,
1815
+ "type": "option"
1816
+ },
1817
+ "no-wait": {
1818
+ "description": "Return immediately after upload (do not poll for transcription). Prints the ID for manual polling.",
1819
+ "name": "no-wait",
1820
+ "allowNo": false,
1821
+ "type": "boolean"
1810
1822
  }
1811
1823
  },
1812
1824
  "hasDynamicHelp": false,
1813
1825
  "hiddenAliases": [],
1814
- "id": "config:show",
1826
+ "id": "compile:upload",
1815
1827
  "pluginAlias": "faces-cli",
1816
1828
  "pluginName": "faces-cli",
1817
1829
  "pluginType": "core",
@@ -1821,8 +1833,8 @@
1821
1833
  "relativePath": [
1822
1834
  "dist",
1823
1835
  "commands",
1824
- "config",
1825
- "show.js"
1836
+ "compile",
1837
+ "upload.js"
1826
1838
  ]
1827
1839
  },
1828
1840
  "face:create": {
@@ -3313,6 +3325,12 @@
3313
3325
  "hasDynamicHelp": false,
3314
3326
  "multiple": false,
3315
3327
  "type": "option"
3328
+ },
3329
+ "no-wait": {
3330
+ "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
3331
+ "name": "no-wait",
3332
+ "allowNo": false,
3333
+ "type": "boolean"
3316
3334
  }
3317
3335
  },
3318
3336
  "hasDynamicHelp": false,
@@ -3708,6 +3726,12 @@
3708
3726
  "hasDynamicHelp": false,
3709
3727
  "multiple": false,
3710
3728
  "type": "option"
3729
+ },
3730
+ "no-wait": {
3731
+ "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
3732
+ "name": "no-wait",
3733
+ "allowNo": false,
3734
+ "type": "boolean"
3711
3735
  }
3712
3736
  },
3713
3737
  "hasDynamicHelp": false,
@@ -3857,5 +3881,5 @@
3857
3881
  ]
3858
3882
  }
3859
3883
  },
3860
- "version": "1.5.1"
3884
+ "version": "1.5.2"
3861
3885
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "faces-cli",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "CLI for the Faces AI platform",
5
5
  "type": "module",
6
6
  "author": "sybileak <sybileak@proton.me>",