demofly 0.2.1 → 0.2.3

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 (86) hide show
  1. package/dist/commands/auth/login.js +1 -1
  2. package/dist/commands/auth/login.js.map +1 -1
  3. package/dist/commands/demos/list.d.ts.map +1 -1
  4. package/dist/commands/demos/list.js +9 -6
  5. package/dist/commands/demos/list.js.map +1 -1
  6. package/dist/commands/generate.d.ts.map +1 -1
  7. package/dist/commands/generate.js +346 -35
  8. package/dist/commands/generate.js.map +1 -1
  9. package/dist/commands/init.d.ts +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +349 -187
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/push.d.ts.map +1 -1
  14. package/dist/commands/push.js +12 -1
  15. package/dist/commands/push.js.map +1 -1
  16. package/dist/commands/render.d.ts.map +1 -1
  17. package/dist/commands/render.js +32 -4
  18. package/dist/commands/render.js.map +1 -1
  19. package/dist/commands/update.d.ts +3 -0
  20. package/dist/commands/update.d.ts.map +1 -0
  21. package/dist/commands/update.js +54 -0
  22. package/dist/commands/update.js.map +1 -0
  23. package/dist/commands/version.d.ts.map +1 -1
  24. package/dist/commands/version.js +9 -0
  25. package/dist/commands/version.js.map +1 -1
  26. package/dist/commands/voices/index.d.ts +3 -0
  27. package/dist/commands/voices/index.d.ts.map +1 -0
  28. package/dist/commands/voices/index.js +11 -0
  29. package/dist/commands/voices/index.js.map +1 -0
  30. package/dist/commands/voices/list.d.ts +3 -0
  31. package/dist/commands/voices/list.d.ts.map +1 -0
  32. package/dist/commands/voices/list.js +72 -0
  33. package/dist/commands/voices/list.js.map +1 -0
  34. package/dist/commands/voices/select.d.ts +3 -0
  35. package/dist/commands/voices/select.d.ts.map +1 -0
  36. package/dist/commands/voices/select.js +79 -0
  37. package/dist/commands/voices/select.js.map +1 -0
  38. package/dist/index.js +12 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/alignment.d.ts +47 -0
  41. package/dist/lib/alignment.d.ts.map +1 -0
  42. package/dist/lib/alignment.js +122 -0
  43. package/dist/lib/alignment.js.map +1 -0
  44. package/dist/lib/api-client.d.ts +2 -0
  45. package/dist/lib/api-client.d.ts.map +1 -1
  46. package/dist/lib/api-client.js +6 -2
  47. package/dist/lib/api-client.js.map +1 -1
  48. package/dist/lib/api-types.d.ts +15 -0
  49. package/dist/lib/api-types.d.ts.map +1 -0
  50. package/dist/lib/api-types.js +2 -0
  51. package/dist/lib/api-types.js.map +1 -0
  52. package/dist/lib/cloud-tts.d.ts +21 -0
  53. package/dist/lib/cloud-tts.d.ts.map +1 -0
  54. package/dist/lib/cloud-tts.js +42 -0
  55. package/dist/lib/cloud-tts.js.map +1 -0
  56. package/dist/lib/credentials.js +1 -1
  57. package/dist/lib/credentials.js.map +1 -1
  58. package/dist/lib/demo-config.d.ts +8 -0
  59. package/dist/lib/demo-config.d.ts.map +1 -0
  60. package/dist/lib/demo-config.js +29 -0
  61. package/dist/lib/demo-config.js.map +1 -0
  62. package/dist/lib/edit-proposals.d.ts +46 -0
  63. package/dist/lib/edit-proposals.d.ts.map +1 -0
  64. package/dist/lib/edit-proposals.js +159 -0
  65. package/dist/lib/edit-proposals.js.map +1 -0
  66. package/dist/lib/retiming.d.ts +19 -0
  67. package/dist/lib/retiming.d.ts.map +1 -0
  68. package/dist/lib/retiming.js +215 -0
  69. package/dist/lib/retiming.js.map +1 -0
  70. package/dist/lib/timestamps.d.ts +43 -0
  71. package/dist/lib/timestamps.d.ts.map +1 -0
  72. package/dist/lib/timestamps.js +199 -0
  73. package/dist/lib/timestamps.js.map +1 -0
  74. package/dist/lib/tts.d.ts +7 -4
  75. package/dist/lib/tts.d.ts.map +1 -1
  76. package/dist/lib/tts.js +15 -8
  77. package/dist/lib/tts.js.map +1 -1
  78. package/dist/lib/voice-config.d.ts +7 -0
  79. package/dist/lib/voice-config.d.ts.map +1 -0
  80. package/dist/lib/voice-config.js +29 -0
  81. package/dist/lib/voice-config.js.map +1 -0
  82. package/dist/lib/voice-resolver.d.ts +82 -0
  83. package/dist/lib/voice-resolver.d.ts.map +1 -0
  84. package/dist/lib/voice-resolver.js +108 -0
  85. package/dist/lib/voice-resolver.js.map +1 -0
  86. package/package.json +5 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../../src/lib/timestamps.ts"],"names":[],"mappings":"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"}
package/dist/lib/tts.d.ts CHANGED
@@ -1,14 +1,15 @@
1
1
  /**
2
2
  * Demofly TTS integration — Kokoro via sherpa-onnx-node native bindings.
3
3
  *
4
- * Parses transcript.md, generates per-scene WAV files using OfflineTts,
5
- * outputs to <projectDir>/audio/<sceneId>.wav.
4
+ * Parses narration.md (or legacy transcript.md), generates per-scene WAV
5
+ * files using OfflineTts, outputs to <projectDir>/audio/<sceneId>.wav.
6
6
  */
7
7
  export interface TtsOptions {
8
8
  voice?: string;
9
9
  speed?: number;
10
10
  lang?: string;
11
11
  modelDir?: string;
12
+ sceneFilter?: string;
12
13
  }
13
14
  export interface TtsResult {
14
15
  sceneId: string;
@@ -47,8 +48,10 @@ export declare function parseTranscript(content: string): TranscriptScene[];
47
48
  */
48
49
  export declare function generateAudio(text: string, outputPath: string, options?: TtsOptions, ttsInstance?: any): TtsResult;
49
50
  /**
50
- * Generate TTS for all scenes in a transcript.
51
+ * Generate TTS for all scenes in a narration document.
52
+ * Accepts narration.md (preferred) or legacy transcript.md — both use the
53
+ * same `<narration>` tag format.
51
54
  * Returns array of results and writes WAV files to <projectDir>/audio/.
52
55
  */
53
- export declare function generateAllAudio(transcriptPath: string, projectDir: string, options?: TtsOptions): TtsResult[];
56
+ export declare function generateAllAudio(narrationPath: string, projectDir: string, options?: TtsOptions): TtsResult[];
54
57
  //# sourceMappingURL=tts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/lib/tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkCH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAsElE;AAmFD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,UAAe,EACxB,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAsBX;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,UAAe,GACvB,SAAS,EAAE,CAmCb"}
1
+ {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/lib/tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkCH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAwElE;AAmFD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,UAAe,EACxB,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAsBX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,UAAe,GACvB,SAAS,EAAE,CAuCb"}
package/dist/lib/tts.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Demofly TTS integration — Kokoro via sherpa-onnx-node native bindings.
3
3
  *
4
- * Parses transcript.md, generates per-scene WAV files using OfflineTts,
5
- * outputs to <projectDir>/audio/<sceneId>.wav.
4
+ * Parses narration.md (or legacy transcript.md), generates per-scene WAV
5
+ * files using OfflineTts, outputs to <projectDir>/audio/<sceneId>.wav.
6
6
  */
7
7
  import { createRequire } from "node:module";
8
8
  import { existsSync, mkdirSync, readFileSync } from "node:fs";
@@ -68,7 +68,9 @@ export function parseTranscript(content) {
68
68
  sceneIndex++;
69
69
  const title = sceneMatch[2].trim();
70
70
  const idOverride = title.match(/\{#([^}]+)\}/);
71
- const id = idOverride ? idOverride[1] : `scene-${sceneIndex}`;
71
+ const rawId = idOverride ? idOverride[1] : `scene-${sceneIndex}`;
72
+ // Sanitize: strip path separators and parent-directory traversals
73
+ const id = rawId.replace(/[\/\\]/g, "-").replace(/\.\./g, "");
72
74
  currentScene = { id, lines: [] };
73
75
  insideNarration = false;
74
76
  continue;
@@ -205,14 +207,19 @@ export function generateAudio(text, outputPath, options = {}, ttsInstance) {
205
207
  };
206
208
  }
207
209
  /**
208
- * Generate TTS for all scenes in a transcript.
210
+ * Generate TTS for all scenes in a narration document.
211
+ * Accepts narration.md (preferred) or legacy transcript.md — both use the
212
+ * same `<narration>` tag format.
209
213
  * Returns array of results and writes WAV files to <projectDir>/audio/.
210
214
  */
211
- export function generateAllAudio(transcriptPath, projectDir, options = {}) {
212
- const content = readFileSync(transcriptPath, "utf-8");
213
- const scenes = parseTranscript(content);
215
+ export function generateAllAudio(narrationPath, projectDir, options = {}) {
216
+ const content = readFileSync(narrationPath, "utf-8");
217
+ let scenes = parseTranscript(content);
218
+ if (options.sceneFilter) {
219
+ scenes = scenes.filter(s => s.sceneId === options.sceneFilter);
220
+ }
214
221
  if (scenes.length === 0) {
215
- console.warn("No narration text found in transcript.");
222
+ console.warn("No narration text found in narration document.");
216
223
  return [];
217
224
  }
218
225
  const audioDir = resolve(projectDir, "audio");
@@ -1 +1 @@
1
- {"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/lib/tts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/lib/tts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface VoiceSelection {
2
+ name: string;
3
+ provider: string;
4
+ }
5
+ export declare function getDefaultVoice(): VoiceSelection;
6
+ export declare function setDefaultVoice(name: string, provider: string): void;
7
+ //# sourceMappingURL=voice-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-config.d.ts","sourceRoot":"","sources":["../../src/lib/voice-config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoBD,wBAAgB,eAAe,IAAI,cAAc,CAGhD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIpE"}
@@ -0,0 +1,29 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ const CONFIG_DIR = join(homedir(), ".config", "demofly");
5
+ const CONFIG_FILE = join(CONFIG_DIR, "config.json");
6
+ function readConfig() {
7
+ try {
8
+ if (!existsSync(CONFIG_FILE))
9
+ return {};
10
+ return JSON.parse(readFileSync(CONFIG_FILE, "utf-8"));
11
+ }
12
+ catch {
13
+ return {};
14
+ }
15
+ }
16
+ function writeConfig(config) {
17
+ mkdirSync(CONFIG_DIR, { recursive: true });
18
+ writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2) + "\n", { mode: 0o600 });
19
+ }
20
+ export function getDefaultVoice() {
21
+ const config = readConfig();
22
+ return config.defaultVoice ?? { name: "heart", provider: "kokoro" };
23
+ }
24
+ export function setDefaultVoice(name, provider) {
25
+ const config = readConfig();
26
+ config.defaultVoice = { name, provider };
27
+ writeConfig(config);
28
+ }
29
+ //# sourceMappingURL=voice-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-config.js","sourceRoot":"","sources":["../../src/lib/voice-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACzD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAWpD,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,YAAY,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzC,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Voice resolution logic — maps --voice / --provider flags to a concrete
3
+ * voice identity (name + provider) that can be used for TTS generation.
4
+ */
5
+ /** Kokoro voices available locally without any API access. */
6
+ export declare const KOKORO_VOICES: readonly [{
7
+ readonly name: "heart";
8
+ readonly kokoroId: "af_heart";
9
+ }, {
10
+ readonly name: "bella";
11
+ readonly kokoroId: "af_bella";
12
+ }, {
13
+ readonly name: "nicole";
14
+ readonly kokoroId: "af_nicole";
15
+ }, {
16
+ readonly name: "nova";
17
+ readonly kokoroId: "af_nova";
18
+ }, {
19
+ readonly name: "sarah";
20
+ readonly kokoroId: "af_sarah";
21
+ }, {
22
+ readonly name: "adam";
23
+ readonly kokoroId: "am_adam";
24
+ }, {
25
+ readonly name: "michael";
26
+ readonly kokoroId: "am_michael";
27
+ }];
28
+ export interface ResolvedVoice {
29
+ name: string;
30
+ provider: string;
31
+ /** Provider-specific voice ID (e.g., "af_heart" for Kokoro, "aria" for ElevenLabs) */
32
+ providerId: string;
33
+ tier: "free" | "premium";
34
+ }
35
+ export interface AvailableVoice {
36
+ name: string;
37
+ provider: string;
38
+ providerId: string;
39
+ tier: "free" | "premium";
40
+ }
41
+ /**
42
+ * Build the full list of available voices — local Kokoro + optional API voices.
43
+ */
44
+ export declare function buildAvailableVoices(apiVoices?: {
45
+ voiceName: string;
46
+ provider: string;
47
+ voiceId: string;
48
+ providerId: string;
49
+ tier: "free" | "premium";
50
+ }[]): AvailableVoice[];
51
+ /**
52
+ * Resolve a voice by name and optional provider.
53
+ *
54
+ * Resolution strategy:
55
+ * 1. If --provider specified: match name within that provider
56
+ * 2. If no --provider: match name across all providers, prefer free/kokoro on collision
57
+ * 3. If no match: return null
58
+ */
59
+ export declare function resolveVoice(name: string, provider: string | undefined, availableVoices: AvailableVoice[]): ResolvedVoice | null;
60
+ /**
61
+ * Check if a resolved voice requires cloud TTS (non-kokoro provider).
62
+ */
63
+ export declare function isCloudVoice(voice: ResolvedVoice): boolean;
64
+ /** Default Kokoro voice used as fallback. */
65
+ export declare const KOKORO_DEFAULT_VOICE: ResolvedVoice;
66
+ /**
67
+ * Resolve voice from CLI flags, fetching API voices if authenticated.
68
+ * Falls back to default Kokoro voice if voice not found.
69
+ *
70
+ * Shared by generate and render commands.
71
+ */
72
+ export declare function resolveVoiceFromFlags(voiceName: string | undefined, providerName: string | undefined, deps: {
73
+ getDefaultVoice: () => {
74
+ name: string;
75
+ provider?: string;
76
+ };
77
+ getToken: () => Promise<string | null>;
78
+ createApiClient: (token: string) => {
79
+ get<T>(path: string): Promise<T>;
80
+ };
81
+ }): Promise<ResolvedVoice>;
82
+ //# sourceMappingURL=voice-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/voice-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;EAQhB,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,GACnH,cAAc,EAAE,CAsBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,eAAe,EAAE,cAAc,EAAE,GAChC,aAAa,GAAG,IAAI,CAwBtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE1D;AAED,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,EAAE,aAKlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE;IACJ,eAAe,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAC1E,GACA,OAAO,CAAC,aAAa,CAAC,CA0BxB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Voice resolution logic — maps --voice / --provider flags to a concrete
3
+ * voice identity (name + provider) that can be used for TTS generation.
4
+ */
5
+ /** Kokoro voices available locally without any API access. */
6
+ export const KOKORO_VOICES = [
7
+ { name: "heart", kokoroId: "af_heart" },
8
+ { name: "bella", kokoroId: "af_bella" },
9
+ { name: "nicole", kokoroId: "af_nicole" },
10
+ { name: "nova", kokoroId: "af_nova" },
11
+ { name: "sarah", kokoroId: "af_sarah" },
12
+ { name: "adam", kokoroId: "am_adam" },
13
+ { name: "michael", kokoroId: "am_michael" },
14
+ ];
15
+ /**
16
+ * Build the full list of available voices — local Kokoro + optional API voices.
17
+ */
18
+ export function buildAvailableVoices(apiVoices) {
19
+ const voices = KOKORO_VOICES.map((v) => ({
20
+ name: v.name,
21
+ provider: "kokoro",
22
+ providerId: v.kokoroId,
23
+ tier: "free",
24
+ }));
25
+ if (apiVoices) {
26
+ for (const v of apiVoices) {
27
+ // Skip orpheus/kokoro from API — we already have them locally
28
+ if (v.provider === "kokoro" || v.provider === "orpheus")
29
+ continue;
30
+ voices.push({
31
+ name: v.voiceName,
32
+ provider: v.provider,
33
+ providerId: v.providerId,
34
+ tier: v.tier,
35
+ });
36
+ }
37
+ }
38
+ return voices;
39
+ }
40
+ /**
41
+ * Resolve a voice by name and optional provider.
42
+ *
43
+ * Resolution strategy:
44
+ * 1. If --provider specified: match name within that provider
45
+ * 2. If no --provider: match name across all providers, prefer free/kokoro on collision
46
+ * 3. If no match: return null
47
+ */
48
+ export function resolveVoice(name, provider, availableVoices) {
49
+ const nameLower = name.toLowerCase();
50
+ if (provider) {
51
+ const providerLower = provider.toLowerCase();
52
+ const match = availableVoices.find((v) => v.name.toLowerCase() === nameLower &&
53
+ v.provider.toLowerCase() === providerLower);
54
+ return match ?? null;
55
+ }
56
+ // No provider specified — find all matches and prefer cheapest/free
57
+ const matches = availableVoices.filter((v) => v.name.toLowerCase() === nameLower);
58
+ if (matches.length === 0)
59
+ return null;
60
+ if (matches.length === 1)
61
+ return matches[0];
62
+ // Prefer free voices (kokoro) over premium
63
+ const free = matches.find((v) => v.tier === "free");
64
+ return free ?? matches[0];
65
+ }
66
+ /**
67
+ * Check if a resolved voice requires cloud TTS (non-kokoro provider).
68
+ */
69
+ export function isCloudVoice(voice) {
70
+ return voice.provider !== "kokoro";
71
+ }
72
+ /** Default Kokoro voice used as fallback. */
73
+ export const KOKORO_DEFAULT_VOICE = {
74
+ name: KOKORO_VOICES[0].name,
75
+ provider: "kokoro",
76
+ providerId: KOKORO_VOICES[0].kokoroId,
77
+ tier: "free",
78
+ };
79
+ /**
80
+ * Resolve voice from CLI flags, fetching API voices if authenticated.
81
+ * Falls back to default Kokoro voice if voice not found.
82
+ *
83
+ * Shared by generate and render commands.
84
+ */
85
+ export async function resolveVoiceFromFlags(voiceName, providerName, deps) {
86
+ const defaultVoice = deps.getDefaultVoice();
87
+ const name = voiceName ?? defaultVoice.name;
88
+ const provider = providerName ?? (voiceName ? undefined : defaultVoice.provider);
89
+ const token = await deps.getToken();
90
+ let apiVoices;
91
+ if (token) {
92
+ try {
93
+ const api = deps.createApiClient(token);
94
+ apiVoices = (await api.get("/voices")) ?? undefined;
95
+ }
96
+ catch {
97
+ // API unreachable — proceed with local voices only
98
+ }
99
+ }
100
+ const available = buildAvailableVoices(apiVoices);
101
+ const resolved = resolveVoice(name, provider, available);
102
+ if (!resolved) {
103
+ console.warn(`Voice "${name}" not found. Using default Kokoro voice.\n`);
104
+ return KOKORO_DEFAULT_VOICE;
105
+ }
106
+ return resolved;
107
+ }
108
+ //# sourceMappingURL=voice-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-resolver.js","sourceRoot":"","sources":["../../src/lib/voice-resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "demofly",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "CLI for demofly — automated demo video generation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -24,8 +24,11 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@playwright/test": "^1.58.2",
27
+ "chalk": "^5.4.1",
27
28
  "commander": "^13.0.0",
28
- "sherpa-onnx-node": "^1.12.25"
29
+ "ora": "^9.0.0",
30
+ "sherpa-onnx-node": "^1.12.25",
31
+ "update-notifier": "^7.3.1"
29
32
  },
30
33
  "devDependencies": {
31
34
  "@release-it/conventional-changelog": "^10.0.0",