@mux/ai 0.1.1 → 0.1.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.
Files changed (48) hide show
  1. package/dist/index.cjs +1773 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +164 -0
  4. package/dist/index.d.ts +164 -9
  5. package/dist/index.js +1757 -8
  6. package/dist/index.js.map +1 -1
  7. package/package.json +8 -6
  8. package/dist/audio-translation.d.ts +0 -21
  9. package/dist/audio-translation.d.ts.map +0 -1
  10. package/dist/audio-translation.js +0 -229
  11. package/dist/audio-translation.js.map +0 -1
  12. package/dist/burned-in-captions.d.ts +0 -19
  13. package/dist/burned-in-captions.d.ts.map +0 -1
  14. package/dist/burned-in-captions.js +0 -243
  15. package/dist/burned-in-captions.js.map +0 -1
  16. package/dist/chapters.d.ts +0 -18
  17. package/dist/chapters.d.ts.map +0 -1
  18. package/dist/chapters.js +0 -255
  19. package/dist/chapters.js.map +0 -1
  20. package/dist/index.d.ts.map +0 -1
  21. package/dist/moderation.d.ts +0 -39
  22. package/dist/moderation.d.ts.map +0 -1
  23. package/dist/moderation.js +0 -341
  24. package/dist/moderation.js.map +0 -1
  25. package/dist/summarization.d.ts +0 -26
  26. package/dist/summarization.d.ts.map +0 -1
  27. package/dist/summarization.js +0 -337
  28. package/dist/summarization.js.map +0 -1
  29. package/dist/translation.d.ts +0 -22
  30. package/dist/translation.d.ts.map +0 -1
  31. package/dist/translation.js +0 -196
  32. package/dist/translation.js.map +0 -1
  33. package/dist/types.d.ts +0 -12
  34. package/dist/types.d.ts.map +0 -1
  35. package/dist/types.js +0 -2
  36. package/dist/types.js.map +0 -1
  37. package/dist/utils/image-download.d.ts +0 -65
  38. package/dist/utils/image-download.d.ts.map +0 -1
  39. package/dist/utils/image-download.js +0 -150
  40. package/dist/utils/image-download.js.map +0 -1
  41. package/dist/utils/storyboard-processor.d.ts +0 -40
  42. package/dist/utils/storyboard-processor.d.ts.map +0 -1
  43. package/dist/utils/storyboard-processor.js +0 -202
  44. package/dist/utils/storyboard-processor.js.map +0 -1
  45. package/dist/utils/vtt-parser.d.ts +0 -8
  46. package/dist/utils/vtt-parser.d.ts.map +0 -1
  47. package/dist/utils/vtt-parser.js +0 -43
  48. package/dist/utils/vtt-parser.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"moderation.js","sourceRoot":"","sources":["../src/moderation.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { MuxAIOptions, ToneType } from './types';
2
- import { ImageDownloadOptions } from './utils/image-download';
3
- export interface SummaryAndTagsResult {
4
- assetId: string;
5
- title: string;
6
- description: string;
7
- tags: string[];
8
- storyboardUrl?: string;
9
- }
10
- export interface SummarizationOptions extends MuxAIOptions {
11
- provider?: 'openai' | 'anthropic';
12
- model?: string;
13
- maxSummaryLength?: number;
14
- maxTags?: number;
15
- customPrompt?: string;
16
- tone?: ToneType;
17
- includeTranscript?: boolean;
18
- /** Whether to clean VTT timestamps and formatting from transcript (default: true) */
19
- cleanTranscript?: boolean;
20
- /** Method for submitting storyboard to AI providers (default: 'url') */
21
- imageSubmissionMode?: 'url' | 'base64';
22
- /** Options for image download when using base64 submission mode */
23
- imageDownloadOptions?: ImageDownloadOptions;
24
- }
25
- export declare function getSummaryAndTags(assetId: string, promptOrOptions?: string | SummarizationOptions, options?: SummarizationOptions): Promise<SummaryAndTagsResult>;
26
- //# sourceMappingURL=summarization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summarization.d.ts","sourceRoot":"","sources":["../src/summarization.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAsD,MAAM,wBAAwB,CAAC;AAGlH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qFAAqF;IACrF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvC,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAmBD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GAAG,oBAAoB,EAC/C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CA+V/B"}
@@ -1,337 +0,0 @@
1
- import Mux from '@mux/mux-node';
2
- import OpenAI from 'openai';
3
- import Anthropic from '@anthropic-ai/sdk';
4
- import { z } from 'zod';
5
- import { zodTextFormat } from 'openai/helpers/zod';
6
- import { downloadImageAsBase64, uploadImageToAnthropicFiles } from './utils/image-download';
7
- import { extractTextFromVTT } from './utils/vtt-parser';
8
- const summarySchema = z.object({
9
- keywords: z.array(z.string()).max(10),
10
- title: z.string().max(100),
11
- description: z.string().max(1000)
12
- });
13
- const DEFAULT_PROMPT = "Generate a short title (max 100 characters) and description (max 500 characters) for what happens. Start immediately with the action or subject - never reference that this is a video, content, or storyboard. Example: Title: 'Cooking Pasta Tutorial' Description: 'Someone cooks pasta by boiling water and adding noodles.'";
14
- const ANTHROPIC_JSON_PROMPT = `You must respond with valid JSON in exactly this format:
15
- {
16
- "title": "Your title here (max 100 characters)",
17
- "description": "Your description here (max 500 characters)",
18
- "keywords": ["keyword1", "keyword2", "keyword3"]
19
- }
20
-
21
- Do not include any text before or after the JSON. The JSON must be valid and parseable.`;
22
- export async function getSummaryAndTags(assetId, promptOrOptions, options) {
23
- // Handle overloaded parameters
24
- let prompt;
25
- let actualOptions;
26
- if (typeof promptOrOptions === 'string') {
27
- prompt = promptOrOptions;
28
- actualOptions = options || {};
29
- }
30
- else {
31
- prompt = DEFAULT_PROMPT;
32
- actualOptions = promptOrOptions || {};
33
- }
34
- const { provider = 'openai', model, tone = 'normal', includeTranscript = true, cleanTranscript = true, imageSubmissionMode = 'url', imageDownloadOptions, muxTokenId, muxTokenSecret, openaiApiKey, anthropicApiKey, ...config } = actualOptions;
35
- // Set default models based on provider
36
- const defaultModel = provider === 'anthropic' ? 'claude-3-5-haiku-20241022' : 'gpt-4o-mini';
37
- const finalModel = model || defaultModel;
38
- // Validate required credentials
39
- const muxId = muxTokenId || process.env.MUX_TOKEN_ID;
40
- const muxSecret = muxTokenSecret || process.env.MUX_TOKEN_SECRET;
41
- const openaiKey = openaiApiKey || process.env.OPENAI_API_KEY;
42
- const anthropicKey = anthropicApiKey || process.env.ANTHROPIC_API_KEY;
43
- if (!muxId || !muxSecret) {
44
- throw new Error('Mux credentials are required. Provide muxTokenId and muxTokenSecret in options or set MUX_TOKEN_ID and MUX_TOKEN_SECRET environment variables.');
45
- }
46
- if (provider === 'openai' && !openaiKey) {
47
- throw new Error('OpenAI API key is required. Provide openaiApiKey in options or set OPENAI_API_KEY environment variable.');
48
- }
49
- if (provider === 'anthropic' && !anthropicKey) {
50
- throw new Error('Anthropic API key is required. Provide anthropicApiKey in options or set ANTHROPIC_API_KEY environment variable.');
51
- }
52
- // Initialize clients
53
- const mux = new Mux({
54
- tokenId: muxId,
55
- tokenSecret: muxSecret,
56
- });
57
- let openaiClient;
58
- let anthropicClient;
59
- if (provider === 'openai') {
60
- openaiClient = new OpenAI({
61
- apiKey: openaiKey,
62
- });
63
- }
64
- else if (provider === 'anthropic') {
65
- anthropicClient = new Anthropic({
66
- apiKey: anthropicKey,
67
- });
68
- }
69
- // Fetch asset data from Mux
70
- let assetData;
71
- try {
72
- const asset = await mux.video.assets.retrieve(assetId);
73
- assetData = asset;
74
- }
75
- catch (error) {
76
- throw new Error(`Failed to fetch asset from Mux: ${error instanceof Error ? error.message : 'Unknown error'}`);
77
- }
78
- // Get playback ID for storyboard URL
79
- const playbackId = assetData.playback_ids?.[0]?.id;
80
- if (!playbackId) {
81
- throw new Error('No playback ID found for this asset');
82
- }
83
- // Check for text tracks and fetch transcript if available
84
- let transcriptText = '';
85
- if (includeTranscript && assetData.tracks) {
86
- const textTrack = assetData.tracks.find((track) => track.type === 'text' && track.status === 'ready');
87
- if (textTrack) {
88
- const transcriptUrl = `https://stream.mux.com/${playbackId}/text/${textTrack.id}.vtt`;
89
- try {
90
- const transcriptResponse = await fetch(transcriptUrl);
91
- if (transcriptResponse.ok) {
92
- const rawVttContent = await transcriptResponse.text();
93
- // Use clean text or raw VTT based on user preference
94
- transcriptText = cleanTranscript
95
- ? extractTextFromVTT(rawVttContent)
96
- : rawVttContent;
97
- }
98
- }
99
- catch (error) {
100
- console.warn('Failed to fetch transcript:', error);
101
- }
102
- }
103
- }
104
- // Create tone-informed prompt
105
- let toneInstruction = '';
106
- switch (tone) {
107
- case 'sassy':
108
- toneInstruction = ' Answer with a sassy, playful attitude and personality.';
109
- break;
110
- case 'professional':
111
- toneInstruction = ' Provide a professional, executive-level analysis suitable for business reporting.';
112
- break;
113
- default: // normal
114
- toneInstruction = ' Provide a clear, straightforward analysis.';
115
- }
116
- // Add transcript context to prompt if available
117
- let contextualPrompt = prompt + toneInstruction;
118
- if (transcriptText) {
119
- const transcriptType = cleanTranscript ? 'transcript' : 'WebVTT transcript';
120
- contextualPrompt += ` Use the following ${transcriptType} for additional context: "${transcriptText}"`;
121
- }
122
- // Analyze storyboard with AI provider
123
- const imageUrl = `https://image.mux.com/${playbackId}/storyboard.png?width=640`;
124
- let aiAnalysis = null;
125
- let retryAttempt = 0;
126
- const maxRetries = 3;
127
- if (provider === 'openai') {
128
- // Handle base64 vs URL submission modes
129
- if (imageSubmissionMode === 'base64') {
130
- try {
131
- const downloadResult = await downloadImageAsBase64(imageUrl, imageDownloadOptions);
132
- const response = await openaiClient.responses.parse({
133
- model: finalModel,
134
- input: [
135
- {
136
- role: "system",
137
- content: "You are an image analysis tool. You will be given a storyboard image from a video showing multiple frames/scenes, and be expected to return structured data about the contents across all the frames.",
138
- },
139
- {
140
- role: "user",
141
- content: [
142
- {
143
- type: "input_text",
144
- text: contextualPrompt,
145
- },
146
- {
147
- type: "input_image",
148
- image_url: downloadResult.base64Data, // Use base64 data URI
149
- detail: "high",
150
- },
151
- ],
152
- },
153
- ],
154
- text: {
155
- format: zodTextFormat(summarySchema, "analysis"),
156
- },
157
- });
158
- aiAnalysis = response.output_parsed;
159
- }
160
- catch (error) {
161
- throw new Error(`Failed to analyze video content with OpenAI in base64 mode: ${error instanceof Error ? error.message : 'Unknown error'}`);
162
- }
163
- }
164
- else {
165
- // Original URL-based submission with retry logic
166
- while (retryAttempt <= maxRetries) {
167
- try {
168
- const response = await openaiClient.responses.parse({
169
- model: finalModel,
170
- input: [
171
- {
172
- role: "system",
173
- content: "You are an image analysis tool. You will be given a storyboard image from a video showing multiple frames/scenes, and be expected to return structured data about the contents across all the frames.",
174
- },
175
- {
176
- role: "user",
177
- content: [
178
- {
179
- type: "input_text",
180
- text: contextualPrompt,
181
- },
182
- {
183
- type: "input_image",
184
- image_url: imageUrl,
185
- detail: "high",
186
- },
187
- ],
188
- },
189
- ],
190
- text: {
191
- format: zodTextFormat(summarySchema, "analysis"),
192
- },
193
- });
194
- aiAnalysis = response.output_parsed;
195
- break; // Success, exit retry loop
196
- }
197
- catch (error) {
198
- const isTimeoutError = error instanceof Error && error.message && error.message.includes('Timeout while downloading');
199
- if (isTimeoutError && retryAttempt < maxRetries) {
200
- await new Promise(resolve => setTimeout(resolve, 5000));
201
- retryAttempt++;
202
- continue;
203
- }
204
- throw new Error(`Failed to analyze video content with OpenAI: ${error instanceof Error ? error.message : 'Unknown error'}`);
205
- }
206
- }
207
- }
208
- }
209
- else if (provider === 'anthropic') {
210
- // Anthropic doesn't have structured outputs, so we use prompt engineering
211
- const anthropicPrompt = `${contextualPrompt}
212
-
213
- ${ANTHROPIC_JSON_PROMPT}`;
214
- // Handle base64 vs URL submission modes
215
- if (imageSubmissionMode === 'base64') {
216
- try {
217
- // Upload to Files API instead of using base64 inline (no 5MB limit)
218
- const fileUploadResult = await uploadImageToAnthropicFiles(imageUrl, anthropicKey, imageDownloadOptions);
219
- const response = await anthropicClient.messages.create({
220
- model: finalModel,
221
- max_tokens: 1000,
222
- messages: [
223
- {
224
- role: "user",
225
- content: [
226
- {
227
- type: "image",
228
- source: {
229
- type: "file",
230
- file_id: fileUploadResult.fileId,
231
- }, // Type assertion for Files API support
232
- },
233
- {
234
- type: "text",
235
- text: anthropicPrompt,
236
- },
237
- ],
238
- },
239
- ],
240
- }, {
241
- headers: {
242
- 'anthropic-beta': 'files-api-2025-04-14'
243
- }
244
- });
245
- const content = response.content[0];
246
- if (content.type === 'text') {
247
- const jsonText = content.text.trim();
248
- try {
249
- aiAnalysis = JSON.parse(jsonText);
250
- }
251
- catch (parseError) {
252
- throw new Error(`Failed to parse JSON response from Anthropic: ${parseError instanceof Error ? parseError.message : 'Unknown error'}`);
253
- }
254
- }
255
- else {
256
- throw new Error('Unexpected response type from Anthropic');
257
- }
258
- }
259
- catch (error) {
260
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
261
- throw new Error(`Failed to analyze video content with Anthropic Files API: ${errorMessage}`);
262
- }
263
- }
264
- else {
265
- // URL-based submission with retry logic
266
- while (retryAttempt <= maxRetries) {
267
- try {
268
- const response = await anthropicClient.messages.create({
269
- model: finalModel,
270
- max_tokens: 1000,
271
- messages: [
272
- {
273
- role: "user",
274
- content: [
275
- {
276
- type: "image",
277
- source: {
278
- type: "url",
279
- url: imageUrl,
280
- }, // Type assertion to work around SDK type definitions
281
- },
282
- {
283
- type: "text",
284
- text: anthropicPrompt,
285
- },
286
- ],
287
- },
288
- ],
289
- });
290
- const content = response.content[0];
291
- if (content.type === 'text') {
292
- // Parse JSON from Anthropic response
293
- const jsonText = content.text.trim();
294
- try {
295
- aiAnalysis = JSON.parse(jsonText);
296
- break; // Success, exit retry loop
297
- }
298
- catch (parseError) {
299
- if (retryAttempt < maxRetries) {
300
- console.warn(`Failed to parse JSON from Anthropic (attempt ${retryAttempt + 1}):`, jsonText);
301
- retryAttempt++;
302
- await new Promise(resolve => setTimeout(resolve, 2000));
303
- continue;
304
- }
305
- throw new Error(`Failed to parse JSON response from Anthropic: ${parseError instanceof Error ? parseError.message : 'Unknown error'}`);
306
- }
307
- }
308
- else {
309
- throw new Error('Unexpected response type from Anthropic');
310
- }
311
- }
312
- catch (error) {
313
- if (retryAttempt < maxRetries) {
314
- await new Promise(resolve => setTimeout(resolve, 5000));
315
- retryAttempt++;
316
- continue;
317
- }
318
- throw new Error(`Failed to analyze video content with Anthropic: ${error instanceof Error ? error.message : 'Unknown error'}`);
319
- }
320
- }
321
- }
322
- }
323
- else {
324
- throw new Error(`Unsupported provider: ${provider}`);
325
- }
326
- if (!aiAnalysis) {
327
- throw new Error('No analysis result received from AI provider');
328
- }
329
- return {
330
- assetId,
331
- title: aiAnalysis.title || 'No title available',
332
- description: aiAnalysis.description || 'No description available',
333
- tags: aiAnalysis.keywords || [],
334
- storyboardUrl: imageUrl,
335
- };
336
- }
337
- //# sourceMappingURL=summarization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summarization.js","sourceRoot":"","sources":["../src/summarization.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { MuxAIOptions } from './types';
2
- export interface TranslationResult {
3
- assetId: string;
4
- sourceLanguageCode: string;
5
- targetLanguageCode: string;
6
- originalVtt: string;
7
- translatedVtt: string;
8
- uploadedTrackId?: string;
9
- presignedUrl?: string;
10
- }
11
- export interface TranslationOptions extends MuxAIOptions {
12
- provider?: 'anthropic';
13
- model?: string;
14
- s3Endpoint?: string;
15
- s3Region?: string;
16
- s3Bucket?: string;
17
- s3AccessKeyId?: string;
18
- s3SecretAccessKey?: string;
19
- uploadToMux?: boolean;
20
- }
21
- export declare function translateCaptions(assetId: string, fromLanguageCode: string, toLanguageCode: string, options?: TranslationOptions): Promise<TranslationResult>;
22
- //# sourceMappingURL=translation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../src/translation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAqO5B"}
@@ -1,196 +0,0 @@
1
- import Mux from '@mux/mux-node';
2
- import Anthropic from '@anthropic-ai/sdk';
3
- import { S3Client } from '@aws-sdk/client-s3';
4
- import { Upload } from '@aws-sdk/lib-storage';
5
- import { GetObjectCommand } from '@aws-sdk/client-s3';
6
- import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
7
- export async function translateCaptions(assetId, fromLanguageCode, toLanguageCode, options = {}) {
8
- const { provider = 'anthropic', model = 'claude-sonnet-4-20250514', muxTokenId, muxTokenSecret, anthropicApiKey, ...config } = options;
9
- if (provider !== 'anthropic') {
10
- throw new Error('Only Anthropic provider is currently supported for translation');
11
- }
12
- // Validate required credentials
13
- const muxId = muxTokenId || process.env.MUX_TOKEN_ID;
14
- const muxSecret = muxTokenSecret || process.env.MUX_TOKEN_SECRET;
15
- const anthropicKey = anthropicApiKey || process.env.ANTHROPIC_API_KEY;
16
- // S3 configuration
17
- const s3Endpoint = options.s3Endpoint || process.env.S3_ENDPOINT;
18
- const s3Region = options.s3Region || process.env.S3_REGION || 'auto';
19
- const s3Bucket = options.s3Bucket || process.env.S3_BUCKET;
20
- const s3AccessKeyId = options.s3AccessKeyId || process.env.S3_ACCESS_KEY_ID;
21
- const s3SecretAccessKey = options.s3SecretAccessKey || process.env.S3_SECRET_ACCESS_KEY;
22
- const uploadToMux = options.uploadToMux !== false; // Default to true
23
- if (!muxId || !muxSecret) {
24
- throw new Error('Mux credentials are required. Provide muxTokenId and muxTokenSecret in options or set MUX_TOKEN_ID and MUX_TOKEN_SECRET environment variables.');
25
- }
26
- if (!anthropicKey) {
27
- throw new Error('Anthropic API key is required. Provide anthropicApiKey in options or set ANTHROPIC_API_KEY environment variable.');
28
- }
29
- if (uploadToMux && (!s3Endpoint || !s3Bucket || !s3AccessKeyId || !s3SecretAccessKey)) {
30
- throw new Error('S3 configuration is required for uploading to Mux. Provide s3Endpoint, s3Bucket, s3AccessKeyId, and s3SecretAccessKey in options or set S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, and S3_SECRET_ACCESS_KEY environment variables.');
31
- }
32
- // Initialize clients
33
- const mux = new Mux({
34
- tokenId: muxId,
35
- tokenSecret: muxSecret,
36
- });
37
- const anthropicClient = new Anthropic({
38
- apiKey: anthropicKey,
39
- });
40
- // Fetch asset data from Mux
41
- let assetData;
42
- try {
43
- const asset = await mux.video.assets.retrieve(assetId);
44
- assetData = asset;
45
- }
46
- catch (error) {
47
- throw new Error(`Failed to fetch asset from Mux: ${error instanceof Error ? error.message : 'Unknown error'}`);
48
- }
49
- // Get playback ID for caption URL
50
- const playbackId = assetData.playback_ids?.[0]?.id;
51
- if (!playbackId) {
52
- throw new Error('No playback ID found for this asset');
53
- }
54
- // Find text track with the source language
55
- if (!assetData.tracks) {
56
- throw new Error('No tracks found for this asset');
57
- }
58
- const sourceTextTrack = assetData.tracks.find((track) => track.type === 'text' &&
59
- track.status === 'ready' &&
60
- track.language_code === fromLanguageCode);
61
- if (!sourceTextTrack) {
62
- throw new Error(`No ready text track found with language code '${fromLanguageCode}' for this asset`);
63
- }
64
- // Fetch the VTT file content
65
- const vttUrl = `https://stream.mux.com/${playbackId}/text/${sourceTextTrack.id}.vtt`;
66
- let vttContent;
67
- try {
68
- const vttResponse = await fetch(vttUrl);
69
- if (!vttResponse.ok) {
70
- throw new Error(`Failed to fetch VTT file: ${vttResponse.statusText}`);
71
- }
72
- vttContent = await vttResponse.text();
73
- }
74
- catch (error) {
75
- throw new Error(`Failed to fetch VTT content: ${error instanceof Error ? error.message : 'Unknown error'}`);
76
- }
77
- console.log(`✅ Found VTT content for language '${fromLanguageCode}'`);
78
- // Translate VTT content using Anthropic
79
- let translatedVtt;
80
- try {
81
- const response = await anthropicClient.messages.create({
82
- model,
83
- max_tokens: 4000,
84
- messages: [
85
- {
86
- role: 'user',
87
- content: `Translate the following VTT subtitle file from ${fromLanguageCode} to ${toLanguageCode}. Return the translated VTT in JSON format with the key 'translation'. Preserve all timestamps and VTT formatting exactly as they appear.\n\n${vttContent}`
88
- }
89
- ]
90
- });
91
- const content = response.content[0];
92
- if (content.type === 'text') {
93
- // Parse JSON from Anthropic response
94
- const responseText = content.text.trim();
95
- try {
96
- // Remove code block markers if present
97
- const cleanedResponse = responseText.replace(/```json/g, '').replace(/```/g, '').trim();
98
- const parsed = JSON.parse(cleanedResponse);
99
- translatedVtt = parsed.translation;
100
- }
101
- catch (parseError) {
102
- throw new Error(`Failed to parse JSON response from Anthropic: ${parseError instanceof Error ? parseError.message : 'Unknown error'}`);
103
- }
104
- }
105
- else {
106
- throw new Error('Unexpected response type from Anthropic');
107
- }
108
- }
109
- catch (error) {
110
- throw new Error(`Failed to translate VTT with Anthropic: ${error instanceof Error ? error.message : 'Unknown error'}`);
111
- }
112
- console.log(`\n✅ Translation completed successfully!`);
113
- // If uploadToMux is false, just return the translation
114
- if (!uploadToMux) {
115
- console.log(`✅ VTT translated to ${toLanguageCode} successfully!`);
116
- return {
117
- assetId,
118
- sourceLanguageCode: fromLanguageCode,
119
- targetLanguageCode: toLanguageCode,
120
- originalVtt: vttContent,
121
- translatedVtt: translatedVtt
122
- };
123
- }
124
- // Upload translated VTT to S3-compatible storage
125
- console.log('📤 Uploading translated VTT to S3-compatible storage...');
126
- const s3Client = new S3Client({
127
- region: s3Region,
128
- endpoint: s3Endpoint,
129
- credentials: {
130
- accessKeyId: s3AccessKeyId,
131
- secretAccessKey: s3SecretAccessKey
132
- },
133
- forcePathStyle: true // Often needed for non-AWS S3 services
134
- });
135
- // Create unique key for the VTT file
136
- const vttKey = `translations/${assetId}/${fromLanguageCode}-to-${toLanguageCode}-${Date.now()}.vtt`;
137
- let presignedUrl;
138
- try {
139
- // Upload VTT to S3
140
- const upload = new Upload({
141
- client: s3Client,
142
- params: {
143
- Bucket: s3Bucket,
144
- Key: vttKey,
145
- Body: translatedVtt,
146
- ContentType: 'text/vtt'
147
- }
148
- });
149
- await upload.done();
150
- console.log(`✅ VTT uploaded successfully to: ${vttKey}`);
151
- // Generate presigned URL (valid for 1 hour)
152
- const getObjectCommand = new GetObjectCommand({
153
- Bucket: s3Bucket,
154
- Key: vttKey
155
- });
156
- presignedUrl = await getSignedUrl(s3Client, getObjectCommand, {
157
- expiresIn: 3600 // 1 hour
158
- });
159
- console.log(`🔗 Generated presigned URL (expires in 1 hour)`);
160
- }
161
- catch (error) {
162
- throw new Error(`Failed to upload VTT to S3: ${error instanceof Error ? error.message : 'Unknown error'}`);
163
- }
164
- // Add translated track to Mux asset
165
- console.log('📹 Adding translated track to Mux asset...');
166
- let uploadedTrackId;
167
- try {
168
- const languageName = new Intl.DisplayNames(['en'], { type: 'language' }).of(toLanguageCode) || toLanguageCode.toUpperCase();
169
- const trackName = `${languageName} (auto-translated)`;
170
- const trackResponse = await mux.video.assets.createTrack(assetId, {
171
- type: 'text',
172
- text_type: 'subtitles',
173
- language_code: toLanguageCode,
174
- name: trackName,
175
- url: presignedUrl
176
- });
177
- uploadedTrackId = trackResponse.id;
178
- console.log(`✅ Track added to Mux asset with ID: ${uploadedTrackId}`);
179
- console.log(`📋 Track name: "${trackName}"`);
180
- }
181
- catch (error) {
182
- console.warn(`⚠️ Failed to add track to Mux asset: ${error instanceof Error ? error.message : 'Unknown error'}`);
183
- console.log('🔗 You can manually add the track using this presigned URL:');
184
- console.log(presignedUrl);
185
- }
186
- return {
187
- assetId,
188
- sourceLanguageCode: fromLanguageCode,
189
- targetLanguageCode: toLanguageCode,
190
- originalVtt: vttContent,
191
- translatedVtt: translatedVtt,
192
- uploadedTrackId,
193
- presignedUrl
194
- };
195
- }
196
- //# sourceMappingURL=translation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"translation.js","sourceRoot":"","sources":["../src/translation.ts"],"names":[],"mappings":"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"}