@agent-media/providers 0.1.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fal/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,mBAAmB,CAAC;AAe3B;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,aAuCzB,CAAC;AA+HF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fal/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EASd,MAAM,mBAAmB,CAAC;AAgB3B;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,aA2CzB,CAAC;AA4VF,eAAe,WAAW,CAAC"}
package/dist/fal/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { createFal } from '@ai-sdk/fal';
2
+ import { fal } from '@fal-ai/client';
2
3
  import { generateImage } from 'ai';
3
4
  import { writeFile, readFile, stat } from 'node:fs/promises';
4
- import { createSuccess, createError, ensureOutputDir, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
5
+ import { createSuccess, createError, createTranscriptionSuccess, ensureOutputDir, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
5
6
  /**
6
7
  * Actions supported by the fal provider
7
8
  */
8
- const SUPPORTED_ACTIONS = ['generate', 'remove-background'];
9
+ const SUPPORTED_ACTIONS = ['generate', 'remove-background', 'transcribe', 'edit'];
9
10
  /**
10
11
  * Fal.ai provider for image generation and processing
11
12
  * Requires FAL_API_KEY environment variable
@@ -27,6 +28,10 @@ export const falProvider = {
27
28
  return await executeGenerate(actionConfig.options, context, apiKey);
28
29
  case 'remove-background':
29
30
  return await executeRemoveBackground(actionConfig.options, context, apiKey);
31
+ case 'transcribe':
32
+ return await executeTranscribe(actionConfig.options, context, apiKey);
33
+ case 'edit':
34
+ return await executeEdit(actionConfig.options, context, apiKey);
30
35
  default:
31
36
  return createError(ErrorCodes.INVALID_INPUT, `Action '${actionConfig.action}' not supported by fal provider`);
32
37
  }
@@ -39,15 +44,17 @@ export const falProvider = {
39
44
  };
40
45
  /**
41
46
  * Execute generate action using fal.ai flux model via AI SDK
47
+ * Default model: fal-ai/flux-2 (FLUX.2 Dev)
42
48
  */
43
49
  async function executeGenerate(options, context, apiKey) {
44
- const { prompt, width = 1024, height = 1024 } = options;
50
+ const { prompt, width = 1024, height = 1024, model } = options;
45
51
  if (!prompt) {
46
52
  return createError(ErrorCodes.INVALID_INPUT, 'Prompt is required for image generation');
47
53
  }
48
- const fal = createFal({ apiKey });
54
+ const falClient = createFal({ apiKey });
55
+ const modelId = model || 'fal-ai/flux-2';
49
56
  const { image } = await generateImage({
50
- model: fal.image('fal-ai/flux/schnell'),
57
+ model: falClient.image(modelId),
51
58
  prompt,
52
59
  size: `${width}x${height}`,
53
60
  });
@@ -64,6 +71,74 @@ async function executeGenerate(options, context, apiKey) {
64
71
  bytes: stats.size,
65
72
  });
66
73
  }
74
+ /**
75
+ * Execute edit action using fal.ai flux-2 edit model
76
+ * Default model: fal-ai/flux-2/edit
77
+ */
78
+ async function executeEdit(options, context, apiKey) {
79
+ const { input, prompt, model } = options;
80
+ if (!input?.source) {
81
+ return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for image editing');
82
+ }
83
+ if (!prompt) {
84
+ return createError(ErrorCodes.INVALID_INPUT, 'Prompt is required for image editing');
85
+ }
86
+ // Prepare the image URL - edit model requires a URL
87
+ let imageUrl;
88
+ if (input.isUrl) {
89
+ imageUrl = input.source;
90
+ }
91
+ else {
92
+ // Convert local file to data URI
93
+ const buffer = await readFile(input.source);
94
+ const base64 = buffer.toString('base64');
95
+ const ext = input.source.toLowerCase().split('.').pop();
96
+ const mimeType = ext === 'png' ? 'image/png' : ext === 'webp' ? 'image/webp' : 'image/jpeg';
97
+ imageUrl = `data:${mimeType};base64,${base64}`;
98
+ }
99
+ const modelId = model || 'fal-ai/flux-2/edit';
100
+ // Call the edit model via fal.run API
101
+ const response = await fetch(`https://fal.run/${modelId}`, {
102
+ method: 'POST',
103
+ headers: {
104
+ 'Authorization': `Key ${apiKey}`,
105
+ 'Content-Type': 'application/json',
106
+ },
107
+ body: JSON.stringify({
108
+ image_url: imageUrl,
109
+ prompt,
110
+ }),
111
+ });
112
+ if (!response.ok) {
113
+ const errorText = await response.text();
114
+ return createError(ErrorCodes.API_ERROR, `Fal API error: ${response.status} - ${errorText}`);
115
+ }
116
+ const result = await response.json();
117
+ // Handle both single image and array responses
118
+ const outputImageUrl = result.images?.[0]?.url || result.image?.url;
119
+ if (!outputImageUrl) {
120
+ return createError(ErrorCodes.PROVIDER_ERROR, 'No image returned from edit operation');
121
+ }
122
+ // Download the edited image
123
+ const imageResponse = await fetch(outputImageUrl);
124
+ if (!imageResponse.ok) {
125
+ return createError(ErrorCodes.NETWORK_ERROR, `Failed to download edited image: ${imageResponse.statusText}`);
126
+ }
127
+ const arrayBuffer = await imageResponse.arrayBuffer();
128
+ const buffer = Buffer.from(arrayBuffer);
129
+ const outputFilename = generateOutputFilename('png', 'edited');
130
+ const outputPath = getOutputPath(context.outputDir, outputFilename);
131
+ await writeFile(outputPath, buffer);
132
+ const stats = await stat(outputPath);
133
+ return createSuccess({
134
+ mediaType: 'image',
135
+ action: 'edit',
136
+ provider: 'fal',
137
+ outputPath: outputPath,
138
+ mime: 'image/png',
139
+ bytes: stats.size,
140
+ });
141
+ }
67
142
  /**
68
143
  * Execute remove-background action using fal.ai birefnet/v2 model
69
144
  * Uses direct API call since birefnet is an image processing model, not generative
@@ -129,5 +204,107 @@ async function executeRemoveBackground(options, context, apiKey) {
129
204
  bytes: stats.size,
130
205
  });
131
206
  }
207
+ /**
208
+ * Execute transcribe action using fal.ai whisper models
209
+ * Uses wizper (faster) when diarize=false, whisper when diarize=true
210
+ */
211
+ async function executeTranscribe(options, context, apiKey) {
212
+ const { input, diarize = false, language, numSpeakers } = options;
213
+ if (!input?.source) {
214
+ return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for transcription');
215
+ }
216
+ // Configure fal client with API key
217
+ fal.config({ credentials: apiKey });
218
+ // Prepare the audio URL
219
+ let audioUrl;
220
+ if (input.isUrl) {
221
+ audioUrl = input.source;
222
+ }
223
+ else {
224
+ // Upload local file using fal client
225
+ const buffer = await readFile(input.source);
226
+ const ext = input.source.toLowerCase().split('.').pop();
227
+ let mimeType;
228
+ switch (ext) {
229
+ case 'mp3':
230
+ mimeType = 'audio/mpeg';
231
+ break;
232
+ case 'wav':
233
+ mimeType = 'audio/wav';
234
+ break;
235
+ case 'mp4':
236
+ mimeType = 'video/mp4';
237
+ break;
238
+ case 'm4a':
239
+ mimeType = 'audio/mp4';
240
+ break;
241
+ case 'webm':
242
+ mimeType = 'video/webm';
243
+ break;
244
+ case 'ogg':
245
+ mimeType = 'audio/ogg';
246
+ break;
247
+ default:
248
+ mimeType = 'application/octet-stream';
249
+ }
250
+ // Create a Blob from the buffer and upload via fal client
251
+ const filename = input.source.split('/').pop() || 'audio';
252
+ const blob = new Blob([buffer], { type: mimeType });
253
+ const file = new File([blob], filename, { type: mimeType });
254
+ audioUrl = await fal.storage.upload(file);
255
+ }
256
+ // Select model based on diarize flag
257
+ // wizper is 2x faster but doesn't support diarization
258
+ // whisper supports diarization
259
+ const model = diarize ? 'fal-ai/whisper' : 'fal-ai/wizper';
260
+ // Build request body
261
+ const requestBody = {
262
+ audio_url: audioUrl,
263
+ chunk_level: 'segment',
264
+ };
265
+ if (diarize) {
266
+ requestBody['diarize'] = true;
267
+ if (numSpeakers) {
268
+ requestBody['num_speakers'] = numSpeakers;
269
+ }
270
+ }
271
+ if (language) {
272
+ requestBody['language'] = language;
273
+ }
274
+ const response = await fetch(`https://fal.run/${model}`, {
275
+ method: 'POST',
276
+ headers: {
277
+ 'Authorization': `Key ${apiKey}`,
278
+ 'Content-Type': 'application/json',
279
+ },
280
+ body: JSON.stringify(requestBody),
281
+ });
282
+ if (!response.ok) {
283
+ const errorText = await response.text();
284
+ return createError(ErrorCodes.API_ERROR, `Fal API error: ${response.status} - ${errorText}`);
285
+ }
286
+ const result = await response.json();
287
+ // Transform to our TranscriptionData format
288
+ const transcription = {
289
+ text: result.text || '',
290
+ language: result.inferred_languages?.[0] || language || 'unknown',
291
+ segments: (result.chunks || []).map(chunk => ({
292
+ start: chunk.timestamp[0],
293
+ end: chunk.timestamp[1],
294
+ text: chunk.text,
295
+ ...(chunk.speaker ? { speaker: chunk.speaker } : {}),
296
+ })),
297
+ };
298
+ // Save transcription to JSON file
299
+ const outputFilename = generateOutputFilename('json', 'transcription');
300
+ const outputPath = getOutputPath(context.outputDir, outputFilename);
301
+ await writeFile(outputPath, JSON.stringify(transcription, null, 2));
302
+ return createTranscriptionSuccess({
303
+ mediaType: 'audio',
304
+ provider: 'fal',
305
+ outputPath: outputPath,
306
+ transcription,
307
+ });
308
+ }
132
309
  export default falProvider;
133
310
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fal/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fal/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replicate/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,mBAAmB,CAAC;AAe3B;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAuC/B,CAAC;AAgGF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replicate/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EASd,MAAM,mBAAmB,CAAC;AAgB3B;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,aA2C/B,CAAC;AA6YF,eAAe,iBAAiB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { createReplicate } from '@ai-sdk/replicate';
2
2
  import { generateImage } from 'ai';
3
3
  import { writeFile, readFile, stat } from 'node:fs/promises';
4
- import { createSuccess, createError, ensureOutputDir, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
4
+ import { createSuccess, createError, createTranscriptionSuccess, ensureOutputDir, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
5
5
  /**
6
6
  * Actions supported by the replicate provider
7
7
  */
8
- const SUPPORTED_ACTIONS = ['generate', 'remove-background'];
8
+ const SUPPORTED_ACTIONS = ['generate', 'remove-background', 'transcribe', 'edit'];
9
9
  /**
10
10
  * Replicate provider for image generation and processing
11
11
  * Requires REPLICATE_API_TOKEN environment variable
@@ -27,6 +27,10 @@ export const replicateProvider = {
27
27
  return await executeGenerate(actionConfig.options, context, apiToken);
28
28
  case 'remove-background':
29
29
  return await executeRemoveBackground(actionConfig.options, context, apiToken);
30
+ case 'transcribe':
31
+ return await executeTranscribe(actionConfig.options, context, apiToken);
32
+ case 'edit':
33
+ return await executeEdit(actionConfig.options, context, apiToken);
30
34
  default:
31
35
  return createError(ErrorCodes.INVALID_INPUT, `Action '${actionConfig.action}' not supported by replicate provider`);
32
36
  }
@@ -38,16 +42,18 @@ export const replicateProvider = {
38
42
  },
39
43
  };
40
44
  /**
41
- * Execute generate action using Replicate flux-schnell model via AI SDK
45
+ * Execute generate action using Replicate flux model via AI SDK
46
+ * Default model: black-forest-labs/flux-2-dev (FLUX.2 Dev)
42
47
  */
43
48
  async function executeGenerate(options, context, apiToken) {
44
- const { prompt, width = 1024, height = 1024 } = options;
49
+ const { prompt, width = 1024, height = 1024, model } = options;
45
50
  if (!prompt) {
46
51
  return createError(ErrorCodes.INVALID_INPUT, 'Prompt is required for image generation');
47
52
  }
48
- const replicate = createReplicate({ apiToken });
53
+ const replicateClient = createReplicate({ apiToken });
54
+ const modelId = model || 'black-forest-labs/flux-2-dev';
49
55
  const { image } = await generateImage({
50
- model: replicate.image('black-forest-labs/flux-schnell'),
56
+ model: replicateClient.image(modelId),
51
57
  prompt,
52
58
  size: `${width}x${height}`,
53
59
  });
@@ -64,6 +70,107 @@ async function executeGenerate(options, context, apiToken) {
64
70
  bytes: stats.size,
65
71
  });
66
72
  }
73
+ /**
74
+ * Execute edit action using Replicate flux-kontext model
75
+ * Default model: black-forest-labs/flux-kontext-dev
76
+ */
77
+ async function executeEdit(options, context, apiToken) {
78
+ const { input, prompt, model } = options;
79
+ if (!input?.source) {
80
+ return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for image editing');
81
+ }
82
+ if (!prompt) {
83
+ return createError(ErrorCodes.INVALID_INPUT, 'Prompt is required for image editing');
84
+ }
85
+ // Prepare the image input
86
+ let imageUrl;
87
+ if (input.isUrl) {
88
+ imageUrl = input.source;
89
+ }
90
+ else {
91
+ // Convert local file to data URI
92
+ const buffer = await readFile(input.source);
93
+ const base64 = buffer.toString('base64');
94
+ const ext = input.source.toLowerCase().split('.').pop();
95
+ const mimeType = ext === 'png' ? 'image/png' : ext === 'webp' ? 'image/webp' : 'image/jpeg';
96
+ imageUrl = `data:${mimeType};base64,${base64}`;
97
+ }
98
+ const modelId = model || 'black-forest-labs/flux-kontext-dev';
99
+ // Call the edit model via Replicate API
100
+ const response = await fetch('https://api.replicate.com/v1/predictions', {
101
+ method: 'POST',
102
+ headers: {
103
+ 'Authorization': `Bearer ${apiToken}`,
104
+ 'Content-Type': 'application/json',
105
+ 'Prefer': 'wait',
106
+ },
107
+ body: JSON.stringify({
108
+ model: modelId,
109
+ input: {
110
+ image: imageUrl,
111
+ prompt,
112
+ },
113
+ }),
114
+ });
115
+ if (!response.ok) {
116
+ const errorText = await response.text();
117
+ return createError(ErrorCodes.API_ERROR, `Replicate API error: ${response.status} - ${errorText}`);
118
+ }
119
+ const result = await response.json();
120
+ // Handle async predictions (poll if needed)
121
+ let outputUrl;
122
+ if (result.status === 'succeeded' && result.output) {
123
+ outputUrl = Array.isArray(result.output) ? result.output[0] : result.output;
124
+ }
125
+ else if (result.status === 'processing' && result.urls?.get) {
126
+ // Poll for completion
127
+ const maxAttempts = 60;
128
+ let attempts = 0;
129
+ while (attempts < maxAttempts) {
130
+ const pollResponse = await fetch(result.urls.get, {
131
+ headers: { 'Authorization': `Bearer ${apiToken}` },
132
+ });
133
+ const pollResult = await pollResponse.json();
134
+ if (pollResult.status === 'succeeded' && pollResult.output) {
135
+ outputUrl = Array.isArray(pollResult.output) ? pollResult.output[0] : pollResult.output;
136
+ break;
137
+ }
138
+ else if (pollResult.status === 'failed') {
139
+ return createError(ErrorCodes.PROVIDER_ERROR, pollResult.error || 'Edit failed');
140
+ }
141
+ await new Promise(resolve => setTimeout(resolve, 2000));
142
+ attempts++;
143
+ }
144
+ if (!outputUrl) {
145
+ return createError(ErrorCodes.PROVIDER_ERROR, 'Edit timed out');
146
+ }
147
+ }
148
+ else if (result.output) {
149
+ outputUrl = Array.isArray(result.output) ? result.output[0] : result.output;
150
+ }
151
+ if (!outputUrl) {
152
+ return createError(ErrorCodes.PROVIDER_ERROR, 'No image returned from edit operation');
153
+ }
154
+ // Download the edited image
155
+ const imageResponse = await fetch(outputUrl);
156
+ if (!imageResponse.ok) {
157
+ return createError(ErrorCodes.NETWORK_ERROR, `Failed to download edited image: ${imageResponse.statusText}`);
158
+ }
159
+ const arrayBuffer = await imageResponse.arrayBuffer();
160
+ const buffer = Buffer.from(arrayBuffer);
161
+ const outputFilename = generateOutputFilename('webp', 'edited');
162
+ const outputPath = getOutputPath(context.outputDir, outputFilename);
163
+ await writeFile(outputPath, buffer);
164
+ const stats = await stat(outputPath);
165
+ return createSuccess({
166
+ mediaType: 'image',
167
+ action: 'edit',
168
+ provider: 'replicate',
169
+ outputPath: outputPath,
170
+ mime: 'image/webp',
171
+ bytes: stats.size,
172
+ });
173
+ }
67
174
  /**
68
175
  * Execute remove-background action using Replicate BiRefNet model via AI SDK
69
176
  */
@@ -107,5 +214,141 @@ async function executeRemoveBackground(options, context, apiToken) {
107
214
  bytes: stats.size,
108
215
  });
109
216
  }
217
+ /**
218
+ * Execute transcribe action using Replicate whisperx model
219
+ * Supports diarization (requires HUGGINGFACE_ACCESS_TOKEN for pyannote model)
220
+ */
221
+ async function executeTranscribe(options, context, apiToken) {
222
+ const { input, diarize = false, language, numSpeakers } = options;
223
+ if (!input?.source) {
224
+ return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for transcription');
225
+ }
226
+ // Prepare the audio input
227
+ let audioUrl;
228
+ if (input.isUrl) {
229
+ audioUrl = input.source;
230
+ }
231
+ else {
232
+ // Convert local file to data URI
233
+ const buffer = await readFile(input.source);
234
+ const base64 = buffer.toString('base64');
235
+ // Detect mime type from extension
236
+ const ext = input.source.toLowerCase().split('.').pop();
237
+ let mimeType;
238
+ switch (ext) {
239
+ case 'mp3':
240
+ mimeType = 'audio/mpeg';
241
+ break;
242
+ case 'wav':
243
+ mimeType = 'audio/wav';
244
+ break;
245
+ case 'mp4':
246
+ case 'm4a':
247
+ mimeType = 'audio/mp4';
248
+ break;
249
+ case 'webm':
250
+ mimeType = 'audio/webm';
251
+ break;
252
+ case 'ogg':
253
+ mimeType = 'audio/ogg';
254
+ break;
255
+ default:
256
+ mimeType = 'audio/mpeg';
257
+ }
258
+ audioUrl = `data:${mimeType};base64,${base64}`;
259
+ }
260
+ // Build request body for whisperx
261
+ const requestBody = {
262
+ audio_file: audioUrl,
263
+ align_output: true,
264
+ };
265
+ if (diarize) {
266
+ requestBody['diarization'] = true;
267
+ // Note: Diarization requires HUGGINGFACE_ACCESS_TOKEN env var
268
+ const hfToken = process.env['HUGGINGFACE_ACCESS_TOKEN'];
269
+ if (hfToken) {
270
+ requestBody['huggingface_access_token'] = hfToken;
271
+ }
272
+ if (numSpeakers) {
273
+ requestBody['min_speakers'] = numSpeakers;
274
+ requestBody['max_speakers'] = numSpeakers;
275
+ }
276
+ }
277
+ if (language) {
278
+ requestBody['language'] = language;
279
+ }
280
+ // Call whisperx via Replicate API
281
+ const response = await fetch('https://api.replicate.com/v1/predictions', {
282
+ method: 'POST',
283
+ headers: {
284
+ 'Authorization': `Bearer ${apiToken}`,
285
+ 'Content-Type': 'application/json',
286
+ },
287
+ body: JSON.stringify({
288
+ version: '84d2ad2d6194fe98a17d2b60bef1c7f910c46b2f6fd38996ca457afd9c8abfcb',
289
+ input: requestBody,
290
+ }),
291
+ });
292
+ if (!response.ok) {
293
+ const errorText = await response.text();
294
+ return createError(ErrorCodes.API_ERROR, `Replicate API error: ${response.status} - ${errorText}`);
295
+ }
296
+ const prediction = await response.json();
297
+ // Poll for completion
298
+ let result;
299
+ const maxAttempts = 120; // 10 minutes max
300
+ let attempts = 0;
301
+ while (attempts < maxAttempts) {
302
+ const pollResponse = await fetch(prediction.urls.get, {
303
+ headers: {
304
+ 'Authorization': `Bearer ${apiToken}`,
305
+ },
306
+ });
307
+ if (!pollResponse.ok) {
308
+ return createError(ErrorCodes.API_ERROR, `Failed to poll prediction status`);
309
+ }
310
+ result = await pollResponse.json();
311
+ if (result.status === 'succeeded') {
312
+ break;
313
+ }
314
+ else if (result.status === 'failed') {
315
+ return createError(ErrorCodes.PROVIDER_ERROR, result.error || 'Transcription failed');
316
+ }
317
+ else if (result.status === 'canceled') {
318
+ return createError(ErrorCodes.PROVIDER_ERROR, 'Transcription was canceled');
319
+ }
320
+ // Wait 5 seconds before polling again
321
+ await new Promise(resolve => setTimeout(resolve, 5000));
322
+ attempts++;
323
+ }
324
+ if (attempts >= maxAttempts) {
325
+ return createError(ErrorCodes.PROVIDER_ERROR, 'Transcription timed out');
326
+ }
327
+ if (!result.output) {
328
+ return createError(ErrorCodes.PROVIDER_ERROR, 'No output from transcription');
329
+ }
330
+ // Transform to our TranscriptionData format
331
+ const segments = result.output.segments || [];
332
+ const transcription = {
333
+ text: segments.map(s => s.text).join(' '),
334
+ language: result.output.detected_language || language || 'unknown',
335
+ segments: segments.map(segment => ({
336
+ start: segment.start,
337
+ end: segment.end,
338
+ text: segment.text,
339
+ ...(segment.speaker ? { speaker: segment.speaker } : {}),
340
+ })),
341
+ };
342
+ // Save transcription to JSON file
343
+ const outputFilename = generateOutputFilename('json', 'transcription');
344
+ const outputPath = getOutputPath(context.outputDir, outputFilename);
345
+ await writeFile(outputPath, JSON.stringify(transcription, null, 2));
346
+ return createTranscriptionSuccess({
347
+ mediaType: 'audio',
348
+ provider: 'replicate',
349
+ outputPath: outputPath,
350
+ transcription,
351
+ });
352
+ }
110
353
  export default replicateProvider;
111
354
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/replicate/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/replicate/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-media/providers",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Media providers for agent-media toolkit",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -39,10 +39,11 @@
39
39
  "dependencies": {
40
40
  "@ai-sdk/fal": "^2.0.6",
41
41
  "@ai-sdk/replicate": "^2.0.6",
42
+ "@fal-ai/client": "^1.8.3",
42
43
  "@runpod/ai-sdk-provider": "^1.1.0",
43
44
  "ai": "^6.0.33",
44
45
  "sharp": "^0.33.0",
45
- "@agent-media/core": "0.1.0"
46
+ "@agent-media/core": "0.3.0"
46
47
  },
47
48
  "devDependencies": {
48
49
  "@types/node": "^22.0.0",
@@ -1,8 +0,0 @@
1
- import type { MediaProvider } from '@agent-media/core';
2
- /**
3
- * File provider (fal.ai) for image generation and processing
4
- * Requires FILE_API_KEY environment variable
5
- */
6
- export declare const fileProvider: MediaProvider;
7
- export default fileProvider;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/file/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAQ3B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,aA0B1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,25 +0,0 @@
1
- import { createError, ErrorCodes } from '@agent-media/core';
2
- /**
3
- * Actions supported by the file provider
4
- */
5
- const SUPPORTED_ACTIONS = ['generate', 'remove-background'];
6
- /**
7
- * File provider (fal.ai) for image generation and processing
8
- * Requires FILE_API_KEY environment variable
9
- */
10
- export const fileProvider = {
11
- name: 'file',
12
- supports(action) {
13
- return SUPPORTED_ACTIONS.includes(action);
14
- },
15
- async execute(actionConfig, _context) {
16
- const apiKey = process.env['FILE_API_KEY'];
17
- if (!apiKey) {
18
- return createError(ErrorCodes.API_ERROR, 'FILE_API_KEY environment variable is not set');
19
- }
20
- // TODO: Implement file provider API calls
21
- return createError(ErrorCodes.PROVIDER_ERROR, `File provider not yet implemented for action: ${actionConfig.action}`);
22
- },
23
- };
24
- export default fileProvider;
25
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/file/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,IAAI,EAAE,MAAM;IAEZ,QAAQ,CAAC,MAAc;QACrB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,YAA2B,EAC3B,QAAuB;QAEvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,WAAW,CAChB,UAAU,CAAC,SAAS,EACpB,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,OAAO,WAAW,CAChB,UAAU,CAAC,cAAc,EACzB,iDAAiD,YAAY,CAAC,MAAM,EAAE,CACvE,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,YAAY,CAAC"}