egaki 0.5.0 → 0.7.0

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 (280) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/dist/cli/cache-utils.d.ts +33 -0
  3. package/dist/cli/cache-utils.d.ts.map +1 -0
  4. package/dist/cli/cache-utils.js +157 -0
  5. package/dist/cli/cached-generate.d.ts +105 -0
  6. package/dist/cli/cached-generate.d.ts.map +1 -0
  7. package/dist/cli/cached-generate.js +208 -0
  8. package/dist/cli/cached-generate.test.d.ts +11 -0
  9. package/dist/cli/cached-generate.test.d.ts.map +1 -0
  10. package/dist/cli/cached-generate.test.js +431 -0
  11. package/dist/cli/cartesia-provider.d.ts +16 -0
  12. package/dist/cli/cartesia-provider.d.ts.map +1 -0
  13. package/dist/cli/cartesia-provider.js +184 -0
  14. package/dist/cli/chatgpt-auth.d.ts.map +1 -0
  15. package/dist/cli/cli.d.ts +4 -0
  16. package/dist/cli/cli.d.ts.map +1 -0
  17. package/dist/cli/cli.js +1329 -0
  18. package/dist/cli/clone-generate.d.ts +26 -0
  19. package/dist/cli/clone-generate.d.ts.map +1 -0
  20. package/dist/cli/clone-generate.js +148 -0
  21. package/dist/{credentials.d.ts → cli/credentials.d.ts} +11 -2
  22. package/dist/cli/credentials.d.ts.map +1 -0
  23. package/dist/{credentials.js → cli/credentials.js} +88 -5
  24. package/dist/cli/elevenlabs-speech-provider.d.ts +26 -0
  25. package/dist/cli/elevenlabs-speech-provider.d.ts.map +1 -0
  26. package/dist/cli/elevenlabs-speech-provider.js +199 -0
  27. package/dist/cli/generate.d.ts +140 -0
  28. package/dist/cli/generate.d.ts.map +1 -0
  29. package/dist/cli/generate.js +604 -0
  30. package/dist/cli/generate.test.d.ts +2 -0
  31. package/dist/cli/generate.test.d.ts.map +1 -0
  32. package/dist/cli/generate.test.js +131 -0
  33. package/dist/cli/login.d.ts.map +1 -0
  34. package/dist/{login.js → cli/login.js} +45 -4
  35. package/dist/cli/main.d.ts +3 -0
  36. package/dist/cli/main.d.ts.map +1 -0
  37. package/dist/cli/main.js +7 -0
  38. package/dist/cli/model-catalog.d.ts +141 -0
  39. package/dist/cli/model-catalog.d.ts.map +1 -0
  40. package/dist/cli/model-catalog.js +2135 -0
  41. package/dist/{models.d.ts → cli/models.d.ts} +16 -9
  42. package/dist/cli/models.d.ts.map +1 -0
  43. package/dist/cli/models.js +313 -0
  44. package/dist/cli/open-browser.d.ts.map +1 -0
  45. package/dist/cli/openai-speech-provider.d.ts +3 -0
  46. package/dist/cli/openai-speech-provider.d.ts.map +1 -0
  47. package/dist/cli/openai-speech-provider.js +28 -0
  48. package/dist/cli/separation-generate.d.ts +34 -0
  49. package/dist/cli/separation-generate.d.ts.map +1 -0
  50. package/dist/cli/separation-generate.js +117 -0
  51. package/dist/cli/speech-catalog.d.ts +35 -0
  52. package/dist/cli/speech-catalog.d.ts.map +1 -0
  53. package/dist/cli/speech-catalog.js +195 -0
  54. package/dist/cli/speech-generate.d.ts +86 -0
  55. package/dist/cli/speech-generate.d.ts.map +1 -0
  56. package/dist/cli/speech-generate.js +156 -0
  57. package/dist/cli/speech-models.d.ts +8 -0
  58. package/dist/cli/speech-models.d.ts.map +1 -0
  59. package/dist/cli/speech-models.js +109 -0
  60. package/dist/cli/speech-provider.test.d.ts +2 -0
  61. package/dist/cli/speech-provider.test.d.ts.map +1 -0
  62. package/dist/cli/speech-provider.test.js +197 -0
  63. package/dist/cli/subscription.d.ts.map +1 -0
  64. package/dist/cli/transcription-catalog.d.ts +35 -0
  65. package/dist/cli/transcription-catalog.d.ts.map +1 -0
  66. package/dist/cli/transcription-catalog.js +192 -0
  67. package/dist/cli/transcription-generate.d.ts +62 -0
  68. package/dist/cli/transcription-generate.d.ts.map +1 -0
  69. package/dist/cli/transcription-generate.js +144 -0
  70. package/dist/cli/transcription-models.d.ts +9 -0
  71. package/dist/cli/transcription-models.d.ts.map +1 -0
  72. package/dist/cli/transcription-models.js +100 -0
  73. package/dist/cli/transcription-providers.d.ts +22 -0
  74. package/dist/cli/transcription-providers.d.ts.map +1 -0
  75. package/dist/cli/transcription-providers.js +290 -0
  76. package/dist/cli/video-model-catalog.d.ts +2 -0
  77. package/dist/cli/video-model-catalog.d.ts.map +1 -0
  78. package/dist/cli/video-model-catalog.js +5 -0
  79. package/dist/cli/xai-auth.d.ts +29 -0
  80. package/dist/cli/xai-auth.d.ts.map +1 -0
  81. package/dist/cli/xai-auth.js +325 -0
  82. package/dist/vite/angled-screen.d.ts +57 -0
  83. package/dist/vite/angled-screen.d.ts.map +1 -0
  84. package/dist/vite/angled-screen.js +115 -0
  85. package/dist/vite/app.d.ts +51 -0
  86. package/dist/vite/app.d.ts.map +1 -0
  87. package/dist/vite/app.js +150 -0
  88. package/dist/vite/bands-shader.d.ts +47 -0
  89. package/dist/vite/bands-shader.d.ts.map +1 -0
  90. package/dist/vite/bands-shader.js +267 -0
  91. package/dist/vite/code-block.d.ts +107 -0
  92. package/dist/vite/code-block.d.ts.map +1 -0
  93. package/dist/vite/code-block.js +641 -0
  94. package/dist/vite/components.d.ts +36 -0
  95. package/dist/vite/components.d.ts.map +1 -0
  96. package/dist/vite/components.js +113 -0
  97. package/dist/vite/dispersion-rings-shader.d.ts +44 -0
  98. package/dist/vite/dispersion-rings-shader.d.ts.map +1 -0
  99. package/dist/vite/dispersion-rings-shader.js +282 -0
  100. package/dist/vite/easing-curves.d.ts +129 -0
  101. package/dist/vite/easing-curves.d.ts.map +1 -0
  102. package/dist/vite/easing-curves.js +584 -0
  103. package/dist/vite/easing-curves.test.d.ts +2 -0
  104. package/dist/vite/easing-curves.test.d.ts.map +1 -0
  105. package/dist/vite/easing-curves.test.js +200 -0
  106. package/dist/vite/generated-media-client.d.ts +35 -0
  107. package/dist/vite/generated-media-client.d.ts.map +1 -0
  108. package/dist/vite/generated-media-client.js +76 -0
  109. package/dist/vite/keyframes.d.ts +129 -0
  110. package/dist/vite/keyframes.d.ts.map +1 -0
  111. package/dist/vite/keyframes.js +194 -0
  112. package/dist/vite/layout-editor.d.ts +45 -0
  113. package/dist/vite/layout-editor.d.ts.map +1 -0
  114. package/dist/vite/layout-editor.js +587 -0
  115. package/dist/vite/layout-transition.d.ts +136 -0
  116. package/dist/vite/layout-transition.d.ts.map +1 -0
  117. package/dist/vite/layout-transition.js +581 -0
  118. package/dist/vite/liquid-gradient-shader.d.ts +62 -0
  119. package/dist/vite/liquid-gradient-shader.d.ts.map +1 -0
  120. package/dist/vite/liquid-gradient-shader.js +413 -0
  121. package/dist/vite/mdx-client.d.ts +15 -0
  122. package/dist/vite/mdx-client.d.ts.map +1 -0
  123. package/dist/vite/mdx-client.js +265 -0
  124. package/dist/vite/mdx-parse.d.ts +102 -0
  125. package/dist/vite/mdx-parse.d.ts.map +1 -0
  126. package/dist/vite/mdx-parse.js +251 -0
  127. package/dist/vite/mdx-provided-components.d.ts +18 -0
  128. package/dist/vite/mdx-provided-components.d.ts.map +1 -0
  129. package/dist/vite/mdx-provided-components.js +14 -0
  130. package/dist/vite/mdx-video.d.ts +327 -0
  131. package/dist/vite/mdx-video.d.ts.map +1 -0
  132. package/dist/vite/mdx-video.js +596 -0
  133. package/dist/vite/mdx-video.test.d.ts +9 -0
  134. package/dist/vite/mdx-video.test.d.ts.map +1 -0
  135. package/dist/vite/mdx-video.test.js +1945 -0
  136. package/dist/vite/media-components.d.ts +45 -0
  137. package/dist/vite/media-components.d.ts.map +1 -0
  138. package/dist/vite/media-components.js +355 -0
  139. package/dist/vite/media-duration-store.d.ts +66 -0
  140. package/dist/vite/media-duration-store.d.ts.map +1 -0
  141. package/dist/vite/media-duration-store.js +204 -0
  142. package/dist/vite/player-page.d.ts +35 -0
  143. package/dist/vite/player-page.d.ts.map +1 -0
  144. package/dist/vite/player-page.js +720 -0
  145. package/dist/vite/render-client.d.ts +18 -0
  146. package/dist/vite/render-client.d.ts.map +1 -0
  147. package/dist/vite/render-client.js +67 -0
  148. package/dist/vite/sdk.d.ts +221 -0
  149. package/dist/vite/sdk.d.ts.map +1 -0
  150. package/dist/vite/sdk.js +355 -0
  151. package/dist/vite/server-components.d.ts +55 -0
  152. package/dist/vite/server-components.d.ts.map +1 -0
  153. package/dist/vite/server-components.js +156 -0
  154. package/dist/vite/server-mdx.d.ts +74 -0
  155. package/dist/vite/server-mdx.d.ts.map +1 -0
  156. package/dist/vite/server-mdx.js +259 -0
  157. package/dist/vite/shader-renderer.d.ts +48 -0
  158. package/dist/vite/shader-renderer.d.ts.map +1 -0
  159. package/dist/vite/shader-renderer.js +411 -0
  160. package/dist/vite/store-hooks.d.ts +12 -0
  161. package/dist/vite/store-hooks.d.ts.map +1 -0
  162. package/dist/vite/store-hooks.js +93 -0
  163. package/dist/vite/store.d.ts +75 -0
  164. package/dist/vite/store.d.ts.map +1 -0
  165. package/dist/vite/store.js +52 -0
  166. package/dist/vite/store.test.d.ts +6 -0
  167. package/dist/vite/store.test.d.ts.map +1 -0
  168. package/dist/vite/store.test.js +172 -0
  169. package/dist/vite/tweakpane-hook.d.ts +94 -0
  170. package/dist/vite/tweakpane-hook.d.ts.map +1 -0
  171. package/dist/vite/tweakpane-hook.js +450 -0
  172. package/dist/vite/vite-plugin.d.ts +28 -0
  173. package/dist/vite/vite-plugin.d.ts.map +1 -0
  174. package/dist/vite/vite-plugin.js +538 -0
  175. package/dist/vite/wave-gradient-shader.d.ts +41 -0
  176. package/dist/vite/wave-gradient-shader.d.ts.map +1 -0
  177. package/dist/vite/wave-gradient-shader.js +207 -0
  178. package/package.json +103 -25
  179. package/skills/egaki/SKILL.md +162 -1
  180. package/src/cli/cache-utils.ts +169 -0
  181. package/src/cli/cached-generate.test.ts +531 -0
  182. package/src/cli/cached-generate.ts +348 -0
  183. package/src/cli/cartesia-provider.ts +249 -0
  184. package/src/cli/cli.ts +1818 -0
  185. package/src/cli/clone-generate.ts +202 -0
  186. package/src/{credentials.ts → cli/credentials.ts} +90 -7
  187. package/src/cli/elevenlabs-speech-provider.ts +243 -0
  188. package/src/cli/generate.test.ts +166 -0
  189. package/src/cli/generate.ts +912 -0
  190. package/src/{login.ts → cli/login.ts} +48 -3
  191. package/src/cli/main.ts +8 -0
  192. package/src/cli/model-catalog.ts +2336 -0
  193. package/src/cli/models.ts +408 -0
  194. package/src/cli/openai-speech-provider.ts +34 -0
  195. package/src/cli/separation-generate.ts +187 -0
  196. package/src/cli/speech-catalog.ts +253 -0
  197. package/src/cli/speech-generate.ts +275 -0
  198. package/src/cli/speech-models.ts +146 -0
  199. package/src/cli/speech-provider.test.ts +226 -0
  200. package/src/cli/transcription-catalog.ts +250 -0
  201. package/src/cli/transcription-generate.ts +214 -0
  202. package/src/cli/transcription-models.ts +136 -0
  203. package/src/cli/transcription-providers.ts +427 -0
  204. package/src/cli/video-model-catalog.ts +14 -0
  205. package/src/cli/xai-auth.ts +396 -0
  206. package/src/vite/angled-screen.tsx +214 -0
  207. package/src/vite/app.tsx +197 -0
  208. package/src/vite/bands-shader.tsx +319 -0
  209. package/src/vite/code-block.tsx +939 -0
  210. package/src/vite/components.tsx +278 -0
  211. package/src/vite/dispersion-rings-shader.tsx +331 -0
  212. package/src/vite/easing-curves.test.ts +232 -0
  213. package/src/vite/easing-curves.ts +743 -0
  214. package/src/vite/generated-media-client.tsx +121 -0
  215. package/src/vite/keyframes.tsx +347 -0
  216. package/src/vite/layout-editor.tsx +709 -0
  217. package/src/vite/layout-transition.tsx +706 -0
  218. package/src/vite/liquid-gradient-shader.tsx +474 -0
  219. package/src/vite/mdx-client.tsx +420 -0
  220. package/src/vite/mdx-parse.ts +343 -0
  221. package/src/vite/mdx-provided-components.ts +19 -0
  222. package/src/vite/mdx-video.test.tsx +2219 -0
  223. package/src/vite/mdx-video.tsx +976 -0
  224. package/src/vite/media-components.tsx +473 -0
  225. package/src/vite/media-duration-store.ts +225 -0
  226. package/src/vite/motion-timing.ts +194 -0
  227. package/src/vite/player-page.tsx +1107 -0
  228. package/src/vite/render-client.ts +84 -0
  229. package/src/vite/sdk.ts +598 -0
  230. package/src/vite/server-components.tsx +241 -0
  231. package/src/vite/server-mdx.ts +285 -0
  232. package/src/vite/shader-renderer.tsx +535 -0
  233. package/src/vite/store-hooks.ts +117 -0
  234. package/src/vite/store.test.ts +202 -0
  235. package/src/vite/store.ts +115 -0
  236. package/src/vite/styles.css +21 -0
  237. package/src/vite/tweakpane-hook.tsx +593 -0
  238. package/src/vite/virtual-modules.d.ts +30 -0
  239. package/src/vite/vite-plugin.ts +584 -0
  240. package/src/vite/wave-gradient-shader.tsx +253 -0
  241. package/README.md +0 -266
  242. package/dist/antigravity-auth.d.ts +0 -15
  243. package/dist/antigravity-auth.d.ts.map +0 -1
  244. package/dist/antigravity-auth.js +0 -544
  245. package/dist/antigravity-image.d.ts +0 -11
  246. package/dist/antigravity-image.d.ts.map +0 -1
  247. package/dist/antigravity-image.js +0 -285
  248. package/dist/chatgpt-auth.d.ts.map +0 -1
  249. package/dist/cli.d.ts +0 -3
  250. package/dist/cli.d.ts.map +0 -1
  251. package/dist/cli.js +0 -968
  252. package/dist/credentials.d.ts.map +0 -1
  253. package/dist/gateway-model-candidates.generated.d.ts +0 -11
  254. package/dist/gateway-model-candidates.generated.d.ts.map +0 -1
  255. package/dist/gateway-model-candidates.generated.js +0 -64
  256. package/dist/login.d.ts.map +0 -1
  257. package/dist/model-catalog.d.ts +0 -42
  258. package/dist/model-catalog.d.ts.map +0 -1
  259. package/dist/model-catalog.js +0 -1001
  260. package/dist/models.d.ts.map +0 -1
  261. package/dist/models.js +0 -246
  262. package/dist/open-browser.d.ts.map +0 -1
  263. package/dist/subscription.d.ts.map +0 -1
  264. package/dist/video-model-catalog.d.ts +0 -52
  265. package/dist/video-model-catalog.d.ts.map +0 -1
  266. package/dist/video-model-catalog.js +0 -306
  267. package/src/cli.ts +0 -1378
  268. package/src/model-catalog.ts +0 -1077
  269. package/src/models.ts +0 -309
  270. package/src/video-model-catalog.ts +0 -363
  271. /package/dist/{chatgpt-auth.d.ts → cli/chatgpt-auth.d.ts} +0 -0
  272. /package/dist/{chatgpt-auth.js → cli/chatgpt-auth.js} +0 -0
  273. /package/dist/{login.d.ts → cli/login.d.ts} +0 -0
  274. /package/dist/{open-browser.d.ts → cli/open-browser.d.ts} +0 -0
  275. /package/dist/{open-browser.js → cli/open-browser.js} +0 -0
  276. /package/dist/{subscription.d.ts → cli/subscription.d.ts} +0 -0
  277. /package/dist/{subscription.js → cli/subscription.js} +0 -0
  278. /package/src/{chatgpt-auth.ts → cli/chatgpt-auth.ts} +0 -0
  279. /package/src/{open-browser.ts → cli/open-browser.ts} +0 -0
  280. /package/src/{subscription.ts → cli/subscription.ts} +0 -0
@@ -0,0 +1,184 @@
1
+ // Custom Cartesia TTS and STT providers.
2
+ //
3
+ // TTS: POST https://api.cartesia.ai/tts/sse with add_timestamps=true
4
+ // Returns word-level timestamps natively via SSE events.
5
+ // API docs: https://docs.cartesia.ai/api-reference/tts/sse
6
+ //
7
+ // STT: POST https://api.cartesia.ai/stt (Ink models)
8
+ // API docs: https://docs.cartesia.ai/api-reference/stt/transcribe
9
+ //
10
+ // Source of truth for request/response types:
11
+ // JS SDK (auto-generated from OpenAPI spec by Stainless):
12
+ // https://github.com/cartesia-ai/cartesia-js/blob/main/src/resources/stt/stt.ts
13
+ // https://github.com/cartesia-ai/cartesia-js/blob/main/src/resources/tts.ts
14
+ //
15
+ // TTS models: https://docs.cartesia.ai/build-with-cartesia/tts-models/latest
16
+ // STT models: https://docs.cartesia.ai/build-with-cartesia/stt/latest
17
+ // Pricing: https://docs.cartesia.ai/pricing
18
+ const CARTESIA_API_BASE = 'https://api.cartesia.ai';
19
+ const CARTESIA_API_VERSION = '2026-03-01';
20
+ // Default voice: Katie (en-US Female), recommended for voice agents
21
+ const DEFAULT_VOICE_ID = 'f786b574-daa5-4673-aa0c-cbe3e8534c02';
22
+ // ─── shared helpers ──────────────────────────────────────────────────────────
23
+ /**
24
+ * Map user-facing format strings to Cartesia output_format objects.
25
+ * The SSE endpoint only supports raw container (not mp3/wav), so we
26
+ * always use raw PCM for SSE streaming.
27
+ */
28
+ function buildSseOutputFormat(format) {
29
+ // SSE endpoint only supports raw container. We always use PCM s16le
30
+ // and let the caller convert if needed.
31
+ const sampleRate = format === 'pcm_16000' ? 16000
32
+ : format === 'pcm_22050' ? 22050
33
+ : format === 'pcm_24000' ? 24000
34
+ : 44100;
35
+ return { container: 'raw', encoding: 'pcm_s16le', sample_rate: sampleRate };
36
+ }
37
+ // ─── SSE parser ──────────────────────────────────────────────────────────────
38
+ import { EventSourceParserStream } from 'eventsource-parser/stream';
39
+ /**
40
+ * Parse a Cartesia SSE stream into audio chunks and word timestamps.
41
+ * Uses eventsource-parser for robust SSE frame parsing.
42
+ */
43
+ export async function parseCartesiaSseStream(body) {
44
+ const audioChunks = [];
45
+ const timestamps = [];
46
+ const eventStream = body
47
+ .pipeThrough(new TextDecoderStream())
48
+ .pipeThrough(new EventSourceParserStream());
49
+ const reader = eventStream.getReader();
50
+ while (true) {
51
+ const { done, value } = await reader.read();
52
+ if (done)
53
+ break;
54
+ let event;
55
+ try {
56
+ event = JSON.parse(value.data);
57
+ }
58
+ catch {
59
+ continue;
60
+ }
61
+ if (event.type === 'chunk') {
62
+ audioChunks.push(new Uint8Array(Buffer.from(event.data, 'base64')));
63
+ }
64
+ else if (event.type === 'timestamps') {
65
+ const ts = event.word_timestamps;
66
+ for (let i = 0; i < ts.words.length; i++) {
67
+ timestamps.push({
68
+ word: ts.words[i],
69
+ startSecond: ts.start[i],
70
+ endSecond: ts.end[i],
71
+ });
72
+ }
73
+ }
74
+ else if (event.type === 'error') {
75
+ throw new Error(`Cartesia TTS SSE error ${event.status_code}: ${event.message}`);
76
+ }
77
+ }
78
+ return { audioChunks, timestamps };
79
+ }
80
+ /** Concatenate multiple Uint8Array chunks into one. */
81
+ function concatUint8Arrays(chunks) {
82
+ const totalLength = chunks.reduce((sum, c) => sum + c.length, 0);
83
+ const result = new Uint8Array(totalLength);
84
+ let offset = 0;
85
+ for (const chunk of chunks) {
86
+ result.set(chunk, offset);
87
+ offset += chunk.length;
88
+ }
89
+ return result;
90
+ }
91
+ /**
92
+ * Wrap raw PCM s16le mono audio into a WAV container.
93
+ * The SSE endpoint only supports raw PCM output, but browsers need a
94
+ * proper container format. WAV is the simplest lossless wrapper.
95
+ */
96
+ function wavFromPcmS16Le(pcm, sampleRate) {
97
+ const header = new ArrayBuffer(44);
98
+ const view = new DataView(header);
99
+ const channels = 1;
100
+ const bitsPerSample = 16;
101
+ const byteRate = sampleRate * channels * (bitsPerSample / 8);
102
+ const blockAlign = channels * (bitsPerSample / 8);
103
+ const writeStr = (offset, str) => {
104
+ for (let i = 0; i < str.length; i++)
105
+ view.setUint8(offset + i, str.charCodeAt(i));
106
+ };
107
+ writeStr(0, 'RIFF');
108
+ view.setUint32(4, 36 + pcm.byteLength, true);
109
+ writeStr(8, 'WAVE');
110
+ writeStr(12, 'fmt ');
111
+ view.setUint32(16, 16, true); // subchunk1 size (PCM)
112
+ view.setUint16(20, 1, true); // audio format (PCM = 1)
113
+ view.setUint16(22, channels, true);
114
+ view.setUint32(24, sampleRate, true);
115
+ view.setUint32(28, byteRate, true);
116
+ view.setUint16(32, blockAlign, true);
117
+ view.setUint16(34, bitsPerSample, true);
118
+ writeStr(36, 'data');
119
+ view.setUint32(40, pcm.byteLength, true);
120
+ const wav = new Uint8Array(44 + pcm.byteLength);
121
+ wav.set(new Uint8Array(header), 0);
122
+ wav.set(pcm, 44);
123
+ return wav;
124
+ }
125
+ // ─── Cartesia TTS SpeechProvider ─────────────────────────────────────────────
126
+ /**
127
+ * Create a Cartesia speech provider using the SSE endpoint with word timestamps.
128
+ * Returns raw PCM audio (pcm_s16le) since the SSE endpoint only supports raw container.
129
+ */
130
+ export function createCartesiaSpeechProvider() {
131
+ return {
132
+ async generate(options) {
133
+ const apiKey = process.env['CARTESIA_API_KEY'];
134
+ if (!apiKey) {
135
+ throw new Error('Missing CARTESIA_API_KEY. Run: egaki login --provider cartesia --key <key>');
136
+ }
137
+ const voiceId = options.voice || DEFAULT_VOICE_ID;
138
+ const outputFormat = buildSseOutputFormat(options.outputFormat);
139
+ const body = {
140
+ model_id: options.modelId,
141
+ transcript: options.text,
142
+ voice: { mode: 'id', id: voiceId },
143
+ output_format: outputFormat,
144
+ add_timestamps: true,
145
+ };
146
+ if (options.language) {
147
+ body.language = options.language;
148
+ }
149
+ if (options.speed != null) {
150
+ body.generation_config = { speed: options.speed };
151
+ }
152
+ const response = await fetch(`${CARTESIA_API_BASE}/tts/sse`, {
153
+ method: 'POST',
154
+ headers: {
155
+ 'Content-Type': 'application/json',
156
+ 'Cartesia-Version': CARTESIA_API_VERSION,
157
+ 'Authorization': `Bearer ${apiKey}`,
158
+ },
159
+ body: JSON.stringify(body),
160
+ signal: options.abortSignal,
161
+ });
162
+ if (!response.ok) {
163
+ const errorText = await response.text().catch(() => '');
164
+ throw new Error(`Cartesia TTS SSE API error ${response.status}: ${errorText || response.statusText}`);
165
+ }
166
+ if (!response.body) {
167
+ throw new Error('Cartesia TTS SSE response has no body');
168
+ }
169
+ const { audioChunks, timestamps } = await parseCartesiaSseStream(response.body);
170
+ const pcm = concatUint8Arrays(audioChunks);
171
+ // Wrap raw PCM in WAV container so browsers can play the audio.
172
+ const audio = wavFromPcmS16Le(pcm, outputFormat.sample_rate);
173
+ return {
174
+ audio,
175
+ mediaType: 'audio/wav',
176
+ timestamps: timestamps.length > 0 ? timestamps : undefined,
177
+ };
178
+ },
179
+ };
180
+ }
181
+ // Cartesia STT is now implemented as a TranscriptionProvider in
182
+ // transcription-providers.ts (createCartesiaTranscriptionProvider).
183
+ // The old TranscriptionModel-based implementation was removed to drop
184
+ // the AI SDK dependency from the transcription path.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatgpt-auth.d.ts","sourceRoot":"","sources":["../../src/cli/chatgpt-auth.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAgGD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAOrE;AA8JD;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CA8C9D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAyBzF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GACzC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAS9B"}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ declare const cli: import("goke").Goke<{}>;
3
+ export { cli };
4
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AA0FA,QAAA,MAAM,GAAG,yBAAgB,CAAA;AA4pCzB,OAAO,EAAE,GAAG,EAAE,CAAA"}