@agent-media/providers 0.1.0 → 0.3.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.
- package/dist/fal/index.d.ts.map +1 -1
- package/dist/fal/index.js +182 -5
- package/dist/fal/index.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/local/index.d.ts +3 -3
- package/dist/local/index.d.ts.map +1 -1
- package/dist/local/index.js +22 -4
- package/dist/local/index.js.map +1 -1
- package/dist/replicate/index.d.ts.map +1 -1
- package/dist/replicate/index.js +249 -6
- package/dist/replicate/index.js.map +1 -1
- package/dist/transformers/background-removal.d.ts +10 -0
- package/dist/transformers/background-removal.d.ts.map +1 -0
- package/dist/transformers/background-removal.js +112 -0
- package/dist/transformers/background-removal.js.map +1 -0
- package/dist/transformers/index.d.ts +15 -0
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +52 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/transcribe.d.ts +10 -0
- package/dist/transformers/transcribe.d.ts.map +1 -0
- package/dist/transformers/transcribe.js +140 -0
- package/dist/transformers/transcribe.js.map +1 -0
- package/package.json +12 -3
- package/dist/file/index.d.ts +0 -8
- package/dist/file/index.d.ts.map +0 -1
- package/dist/file/index.js +0 -25
- package/dist/file/index.js.map +0 -1
package/dist/fal/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fal/index.ts"],"names":[],"mappings":"
|
|
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
|
|
54
|
+
const falClient = createFal({ apiKey });
|
|
55
|
+
const modelId = model || 'fal-ai/flux-2';
|
|
49
56
|
const { image } = await generateImage({
|
|
50
|
-
model:
|
|
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
|
package/dist/fal/index.js.map
CHANGED
|
@@ -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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { localProvider } from './local/index.js';
|
|
2
|
+
export { transformersProvider } from './transformers/index.js';
|
|
2
3
|
export { falProvider } from './fal/index.js';
|
|
3
4
|
export { replicateProvider } from './replicate/index.js';
|
|
4
5
|
export { runpodProvider } from './runpod/index.js';
|
|
@@ -7,12 +8,15 @@ export { runpodProvider } from './runpod/index.js';
|
|
|
7
8
|
*/
|
|
8
9
|
export declare const providers: {
|
|
9
10
|
local: import("@agent-media/core").MediaProvider;
|
|
11
|
+
transformers: import("@agent-media/core").MediaProvider;
|
|
10
12
|
fal: import("@agent-media/core").MediaProvider;
|
|
11
13
|
replicate: import("@agent-media/core").MediaProvider;
|
|
12
14
|
runpod: import("@agent-media/core").MediaProvider;
|
|
13
15
|
};
|
|
14
16
|
/**
|
|
15
17
|
* Register all providers with the global registry
|
|
18
|
+
* Order matters: local providers (local, transformers) are registered first
|
|
19
|
+
* so they are preferred for actions they support when no explicit provider is specified.
|
|
16
20
|
*/
|
|
17
21
|
export declare function registerAllProviders(): void;
|
|
18
22
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { globalRegistry } from '@agent-media/core';
|
|
2
2
|
import { localProvider } from './local/index.js';
|
|
3
|
+
import { transformersProvider } from './transformers/index.js';
|
|
3
4
|
import { falProvider } from './fal/index.js';
|
|
4
5
|
import { replicateProvider } from './replicate/index.js';
|
|
5
6
|
import { runpodProvider } from './runpod/index.js';
|
|
6
7
|
// Export individual providers
|
|
7
8
|
export { localProvider } from './local/index.js';
|
|
9
|
+
export { transformersProvider } from './transformers/index.js';
|
|
8
10
|
export { falProvider } from './fal/index.js';
|
|
9
11
|
export { replicateProvider } from './replicate/index.js';
|
|
10
12
|
export { runpodProvider } from './runpod/index.js';
|
|
@@ -13,15 +15,19 @@ export { runpodProvider } from './runpod/index.js';
|
|
|
13
15
|
*/
|
|
14
16
|
export const providers = {
|
|
15
17
|
local: localProvider,
|
|
18
|
+
transformers: transformersProvider,
|
|
16
19
|
fal: falProvider,
|
|
17
20
|
replicate: replicateProvider,
|
|
18
21
|
runpod: runpodProvider,
|
|
19
22
|
};
|
|
20
23
|
/**
|
|
21
24
|
* Register all providers with the global registry
|
|
25
|
+
* Order matters: local providers (local, transformers) are registered first
|
|
26
|
+
* so they are preferred for actions they support when no explicit provider is specified.
|
|
22
27
|
*/
|
|
23
28
|
export function registerAllProviders() {
|
|
24
29
|
globalRegistry.register(localProvider);
|
|
30
|
+
globalRegistry.register(transformersProvider);
|
|
25
31
|
globalRegistry.register(falProvider);
|
|
26
32
|
globalRegistry.register(replicateProvider);
|
|
27
33
|
globalRegistry.register(runpodProvider);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,aAAa;IACpB,GAAG,EAAE,WAAW;IAChB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,aAAa;IACpB,YAAY,EAAE,oBAAoB;IAClC,GAAG,EAAE,WAAW;IAChB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC9C,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC3C,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/local/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { MediaProvider } from '@agent-media/core';
|
|
2
2
|
/**
|
|
3
|
-
* Local provider
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Local provider for zero-API-key operations
|
|
4
|
+
* - Sharp: resize, convert, extend
|
|
5
|
+
* - Transformers.js: remove-background, transcribe
|
|
6
6
|
*/
|
|
7
7
|
export declare const localProvider: MediaProvider;
|
|
8
8
|
export default localProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAQd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAQd,MAAM,mBAAmB,CAAC;AA8D3B;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aA8C3B,CAAC;AAsOF,eAAe,aAAa,CAAC"}
|
package/dist/local/index.js
CHANGED
|
@@ -2,10 +2,14 @@ import sharp from 'sharp';
|
|
|
2
2
|
import { stat } from 'node:fs/promises';
|
|
3
3
|
import { createReadStream } from 'node:fs';
|
|
4
4
|
import { createSuccess, createError, ensureOutputDir, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
|
|
5
|
+
import { executeBackgroundRemoval } from '../transformers/background-removal.js';
|
|
6
|
+
import { executeTranscribe } from '../transformers/transcribe.js';
|
|
5
7
|
/**
|
|
6
8
|
* Actions supported by the local provider
|
|
9
|
+
* - Sharp: resize, convert, extend
|
|
10
|
+
* - Transformers.js: remove-background, transcribe
|
|
7
11
|
*/
|
|
8
|
-
const SUPPORTED_ACTIONS = ['resize', 'convert', 'extend'];
|
|
12
|
+
const SUPPORTED_ACTIONS = ['resize', 'convert', 'extend', 'remove-background', 'transcribe'];
|
|
9
13
|
/**
|
|
10
14
|
* MIME types for image formats
|
|
11
15
|
*/
|
|
@@ -43,9 +47,9 @@ async function getInputBuffer(source, isUrl) {
|
|
|
43
47
|
});
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
46
|
-
* Local provider
|
|
47
|
-
*
|
|
48
|
-
*
|
|
50
|
+
* Local provider for zero-API-key operations
|
|
51
|
+
* - Sharp: resize, convert, extend
|
|
52
|
+
* - Transformers.js: remove-background, transcribe
|
|
49
53
|
*/
|
|
50
54
|
export const localProvider = {
|
|
51
55
|
name: 'local',
|
|
@@ -62,6 +66,20 @@ export const localProvider = {
|
|
|
62
66
|
return await executeConvert(actionConfig.options, context);
|
|
63
67
|
case 'extend':
|
|
64
68
|
return await executeExtend(actionConfig.options, context);
|
|
69
|
+
case 'remove-background': {
|
|
70
|
+
const result = await executeBackgroundRemoval(actionConfig.options, context);
|
|
71
|
+
if (result.ok) {
|
|
72
|
+
return { ...result, provider: 'local' };
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
case 'transcribe': {
|
|
77
|
+
const result = await executeTranscribe(actionConfig.options, context);
|
|
78
|
+
if (result.ok) {
|
|
79
|
+
return { ...result, provider: 'local' };
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
65
83
|
default:
|
|
66
84
|
return createError(ErrorCodes.INVALID_INPUT, `Action '${actionConfig.action}' not supported by local provider`);
|
|
67
85
|
}
|
package/dist/local/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,UAAU,GAAgC;IAC9C,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;CACnB,CAAC;AAEF;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAmB;IAC7C,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,KAAc;IAEd,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB;IACjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,IAAI,EAAE,OAAO;IAEb,QAAQ,CAAC,MAAc;QACrB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,YAA2B,EAC3B,OAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC5B,KAAK,QAAQ;oBACX,OAAO,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC5D,KAAK,SAAS;oBACZ,OAAO,MAAM,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7D,KAAK,QAAQ;oBACX,OAAO,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC5D,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7E,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;wBACd,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAC1C,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACtE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;wBACd,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAC1C,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD;oBACE,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,WAAW,YAAY,CAAC,MAAM,mCAAmC,CAClE,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,OAAsB,EACtB,OAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAErE,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAElC,mDAAmD;IACnD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAI,QAAQ,CAAC,MAAsB,IAAI,KAAK,CAAC;IAE/D,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QAC5C,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,sBAAsB,CAC3C,kBAAkB,CAAC,YAAY,CAAC,EAChC,SAAS,CACV,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEpE,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IAErC,OAAO,aAAa,CAAC;QACnB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,0BAA0B;QAC5D,KAAK,EAAE,KAAK,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAuB,EACvB,OAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEzE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpE,kEAAkE;IAClE,iDAAiD;IACjD,IAAI,QAAqB,CAAC;IAE1B,IAAI,KAAK,EAAE,CAAC;QACV,+DAA+D;QAC/D,0DAA0D;QAC1D,MAAM,YAAY,GAAuB;YACvC,OAAO,EAAE,GAAG;SACb,CAAC;QACF,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE5C,kEAAkE;QAClE,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACzB,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,QAAQ;gBACb,kBAAkB,EAAE,KAAK,EAAE,wCAAwC;aACpE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,4CAA4C;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM;QACR,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACtC,MAAM;QACR;YACE,OAAO,WAAW,CAChB,UAAU,CAAC,cAAc,EACzB,8BAA8B,MAAM,EAAE,CACvC,CAAC;IACN,CAAC;IAED,6CAA6C;IAC7C,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,sBAAsB,CAC3C,kBAAkB,CAAC,MAAM,CAAC,EAC1B,WAAW,CACZ,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEpE,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IAErC,OAAO,aAAa,CAAC;QACnB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,0BAA0B;QACtD,KAAK,EAAE,KAAK,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,OAAsB,EACtB,OAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpE,6BAA6B;IAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAErC,uBAAuB;IACvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAEzC,0CAA0C;IAC1C,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;IAE9C,4DAA4D;IAC5D,2DAA2D;IAC3D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC;QAC7B,MAAM,EAAE;YACN,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE;SACzD;KACF,CAAC;SACC,GAAG,EAAE;SACL,QAAQ,EAAE,CAAC;IAEd,2EAA2E;IAC3E,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;SAC5C,OAAO,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;SACrE,GAAG,EAAE;SACL,QAAQ,EAAE,CAAC;IAEd,wEAAwE;IACxE,IAAI,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;QACzC;YACE,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,OAAO;SACd;KACF,CAAC,CAAC;IAEH,4CAA4C;IAC5C,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;IAExC,mBAAmB;IACnB,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEpE,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IAErC,OAAO,aAAa,CAAC;QACnB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,KAAK,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replicate/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,
|
|
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"}
|
package/dist/replicate/index.js
CHANGED
|
@@ -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
|
|
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
|
|
53
|
+
const replicateClient = createReplicate({ apiToken });
|
|
54
|
+
const modelId = model || 'black-forest-labs/flux-2-dev';
|
|
49
55
|
const { image } = await generateImage({
|
|
50
|
-
model:
|
|
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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MediaResult, ActionContext, RemoveBackgroundOptions } from '@agent-media/core';
|
|
2
|
+
/**
|
|
3
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
4
|
+
*/
|
|
5
|
+
export declare function disposePipeline(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Execute background removal using Transformers.js background-removal pipeline
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeBackgroundRemoval(options: RemoveBackgroundOptions, context: ActionContext): Promise<MediaResult>;
|
|
10
|
+
//# sourceMappingURL=background-removal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-removal.d.ts","sourceRoot":"","sources":["../../src/transformers/background-removal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAuC3B;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AA8BD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAuEtB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { pipeline, env } from '@huggingface/transformers';
|
|
2
|
+
import sharp from 'sharp';
|
|
3
|
+
import { stat } from 'node:fs/promises';
|
|
4
|
+
import { createSuccess, createError, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
|
|
5
|
+
// Disable local model loading from disk cache check warnings
|
|
6
|
+
env.allowLocalModels = false;
|
|
7
|
+
/**
|
|
8
|
+
* Default model for background removal
|
|
9
|
+
* Xenova/modnet is publicly accessible (~25MB)
|
|
10
|
+
* briaai/RMBG-2.0 requires HuggingFace authentication
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_MODEL = 'Xenova/modnet';
|
|
13
|
+
/**
|
|
14
|
+
* Model aliases for user-friendly selection
|
|
15
|
+
*/
|
|
16
|
+
const MODEL_ALIASES = {
|
|
17
|
+
'modnet': 'Xenova/modnet',
|
|
18
|
+
'rmbg-2.0': 'briaai/RMBG-2.0',
|
|
19
|
+
'rmbg-1.4': 'briaai/RMBG-1.4',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Cache for loaded pipelines to avoid reloading models
|
|
23
|
+
*/
|
|
24
|
+
let cachedPipeline = null;
|
|
25
|
+
let cachedModelId = null;
|
|
26
|
+
/**
|
|
27
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
28
|
+
*/
|
|
29
|
+
export async function disposePipeline() {
|
|
30
|
+
if (cachedPipeline && typeof cachedPipeline.dispose === 'function') {
|
|
31
|
+
await cachedPipeline.dispose();
|
|
32
|
+
}
|
|
33
|
+
cachedPipeline = null;
|
|
34
|
+
cachedModelId = null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get or create pipeline for background removal
|
|
38
|
+
*/
|
|
39
|
+
async function getBackgroundRemovalPipeline(modelId) {
|
|
40
|
+
if (cachedPipeline && cachedModelId === modelId) {
|
|
41
|
+
return cachedPipeline;
|
|
42
|
+
}
|
|
43
|
+
cachedPipeline = await pipeline('background-removal', modelId, {
|
|
44
|
+
device: 'cpu',
|
|
45
|
+
});
|
|
46
|
+
cachedModelId = modelId;
|
|
47
|
+
return cachedPipeline;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve model name from alias or use as-is
|
|
51
|
+
*/
|
|
52
|
+
function resolveModel(model) {
|
|
53
|
+
if (!model) {
|
|
54
|
+
return DEFAULT_MODEL;
|
|
55
|
+
}
|
|
56
|
+
const lowerModel = model.toLowerCase();
|
|
57
|
+
return MODEL_ALIASES[lowerModel] || model;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Execute background removal using Transformers.js background-removal pipeline
|
|
61
|
+
*/
|
|
62
|
+
export async function executeBackgroundRemoval(options, context) {
|
|
63
|
+
const { input, model } = options;
|
|
64
|
+
if (!input?.source) {
|
|
65
|
+
return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for background removal');
|
|
66
|
+
}
|
|
67
|
+
const modelId = resolveModel(model);
|
|
68
|
+
try {
|
|
69
|
+
// Get or create the background removal pipeline
|
|
70
|
+
const remover = await getBackgroundRemovalPipeline(modelId);
|
|
71
|
+
// Run background removal - accepts URL or file path
|
|
72
|
+
const result = await remover(input.source);
|
|
73
|
+
// Result is an array of RawImage objects with transparency
|
|
74
|
+
const outputImage = Array.isArray(result) ? result[0] : result;
|
|
75
|
+
if (!outputImage) {
|
|
76
|
+
return createError(ErrorCodes.PROVIDER_ERROR, 'No image returned from background removal');
|
|
77
|
+
}
|
|
78
|
+
// Convert RawImage to PNG using sharp (toBlob only works in browser)
|
|
79
|
+
// RawImage has data (Uint8ClampedArray), width, height, and channels properties
|
|
80
|
+
const { data, width, height, channels } = outputImage;
|
|
81
|
+
// Create sharp instance from raw pixel data
|
|
82
|
+
const sharpInstance = sharp(Buffer.from(data.buffer), {
|
|
83
|
+
raw: {
|
|
84
|
+
width,
|
|
85
|
+
height,
|
|
86
|
+
channels: channels,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
const outputFilename = generateOutputFilename('png', 'nobg');
|
|
90
|
+
const outputPath = getOutputPath(context.outputDir, outputFilename);
|
|
91
|
+
// Save as PNG
|
|
92
|
+
await sharpInstance.png().toFile(outputPath);
|
|
93
|
+
const stats = await stat(outputPath);
|
|
94
|
+
return createSuccess({
|
|
95
|
+
mediaType: 'image',
|
|
96
|
+
action: 'remove-background',
|
|
97
|
+
provider: 'transformers',
|
|
98
|
+
outputPath: outputPath,
|
|
99
|
+
mime: 'image/png',
|
|
100
|
+
bytes: stats.size,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
105
|
+
// Provide helpful error for model download issues
|
|
106
|
+
if (message.includes('fetch') || message.includes('network')) {
|
|
107
|
+
return createError(ErrorCodes.NETWORK_ERROR, `Failed to download model ${modelId}. Ensure you have internet connectivity. Models are cached after first download.`);
|
|
108
|
+
}
|
|
109
|
+
return createError(ErrorCodes.PROVIDER_ERROR, message);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=background-removal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-removal.js","sourceRoot":"","sources":["../../src/transformers/background-removal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MediaProvider } from '@agent-media/core';
|
|
2
|
+
/**
|
|
3
|
+
* Transformers.js provider for local ML inference
|
|
4
|
+
* Uses @huggingface/transformers for zero-API-key operations
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - remove-background: Xenova/modnet (default), briaai/RMBG-2.0 (requires HF auth)
|
|
8
|
+
* - transcribe: Moonshine (default, 5x faster than Whisper), Whisper, Distil-Whisper
|
|
9
|
+
*
|
|
10
|
+
* Models are downloaded on first use and cached locally (~/.cache/huggingface/).
|
|
11
|
+
* No API keys required.
|
|
12
|
+
*/
|
|
13
|
+
export declare const transformersProvider: MediaProvider;
|
|
14
|
+
export default transformersProvider;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAgB3B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAmClC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createError, ensureOutputDir, ErrorCodes } from '@agent-media/core';
|
|
2
|
+
import { executeBackgroundRemoval } from './background-removal.js';
|
|
3
|
+
import { executeTranscribe } from './transcribe.js';
|
|
4
|
+
/**
|
|
5
|
+
* Note: ONNX runtime on macOS may cause a mutex error during cleanup.
|
|
6
|
+
* This does not affect output - the JSON result and saved files are correct.
|
|
7
|
+
* The error "mutex lock failed: Invalid argument" can be safely ignored.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Actions supported by the transformers provider
|
|
11
|
+
*/
|
|
12
|
+
const SUPPORTED_ACTIONS = ['remove-background', 'transcribe'];
|
|
13
|
+
/**
|
|
14
|
+
* Transformers.js provider for local ML inference
|
|
15
|
+
* Uses @huggingface/transformers for zero-API-key operations
|
|
16
|
+
*
|
|
17
|
+
* Supports:
|
|
18
|
+
* - remove-background: Xenova/modnet (default), briaai/RMBG-2.0 (requires HF auth)
|
|
19
|
+
* - transcribe: Moonshine (default, 5x faster than Whisper), Whisper, Distil-Whisper
|
|
20
|
+
*
|
|
21
|
+
* Models are downloaded on first use and cached locally (~/.cache/huggingface/).
|
|
22
|
+
* No API keys required.
|
|
23
|
+
*/
|
|
24
|
+
export const transformersProvider = {
|
|
25
|
+
name: 'transformers',
|
|
26
|
+
supports(action) {
|
|
27
|
+
return SUPPORTED_ACTIONS.includes(action);
|
|
28
|
+
},
|
|
29
|
+
async execute(actionConfig, context) {
|
|
30
|
+
try {
|
|
31
|
+
await ensureOutputDir(context.outputDir);
|
|
32
|
+
let result;
|
|
33
|
+
switch (actionConfig.action) {
|
|
34
|
+
case 'remove-background':
|
|
35
|
+
result = await executeBackgroundRemoval(actionConfig.options, context);
|
|
36
|
+
break;
|
|
37
|
+
case 'transcribe':
|
|
38
|
+
result = await executeTranscribe(actionConfig.options, context);
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
return createError(ErrorCodes.INVALID_INPUT, `Action '${actionConfig.action}' not supported by transformers provider`);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
return createError(ErrorCodes.PROVIDER_ERROR, message);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
export default transformersProvider;
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AAEH;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,IAAI,EAAE,cAAc;IAEpB,QAAQ,CAAC,MAAc;QACrB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,YAA2B,EAC3B,OAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAI,MAAmB,CAAC;YACxB,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC5B,KAAK,mBAAmB;oBACtB,MAAM,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACvE,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAChE,MAAM;gBACR;oBACE,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,WAAW,YAAY,CAAC,MAAM,0CAA0C,CACzE,CAAC;YACN,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MediaResult, ActionContext, TranscribeOptions } from '@agent-media/core';
|
|
2
|
+
/**
|
|
3
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
4
|
+
*/
|
|
5
|
+
export declare function disposePipeline(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Execute transcription using Transformers.js automatic-speech-recognition pipeline
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeTranscribe(options: TranscribeOptions, context: ActionContext): Promise<MediaResult>;
|
|
10
|
+
//# sourceMappingURL=transcribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../src/transformers/transcribe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AA0D3B;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AA8BD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAqGtB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { pipeline, env } from '@huggingface/transformers';
|
|
2
|
+
import { writeFile } from 'node:fs/promises';
|
|
3
|
+
import { createError, createTranscriptionSuccess, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
|
|
4
|
+
// Disable local model loading from disk cache check warnings
|
|
5
|
+
env.allowLocalModels = false;
|
|
6
|
+
/**
|
|
7
|
+
* Default model for transcription
|
|
8
|
+
* Moonshine is 5x faster than Whisper for short audio with better accuracy
|
|
9
|
+
* https://huggingface.co/onnx-community/moonshine-base-ONNX
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_MODEL = 'onnx-community/moonshine-base-ONNX';
|
|
12
|
+
/**
|
|
13
|
+
* Model aliases for user-friendly selection
|
|
14
|
+
*/
|
|
15
|
+
const MODEL_ALIASES = {
|
|
16
|
+
// Moonshine models (recommended - faster and more accurate)
|
|
17
|
+
'moonshine-tiny': 'onnx-community/moonshine-tiny-ONNX',
|
|
18
|
+
'moonshine-base': 'onnx-community/moonshine-base-ONNX',
|
|
19
|
+
// Whisper models (for compatibility)
|
|
20
|
+
'whisper-tiny': 'Xenova/whisper-tiny',
|
|
21
|
+
'whisper-base': 'Xenova/whisper-base',
|
|
22
|
+
'whisper-small': 'Xenova/whisper-small',
|
|
23
|
+
'whisper-medium': 'Xenova/whisper-medium',
|
|
24
|
+
'whisper-large-v3-turbo': 'onnx-community/whisper-large-v3-turbo',
|
|
25
|
+
// Distil-Whisper (fast, English only)
|
|
26
|
+
'distil-whisper': 'distil-whisper/distil-large-v3.5-ONNX',
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Cache for loaded pipelines to avoid reloading models
|
|
30
|
+
*/
|
|
31
|
+
let cachedPipeline = null;
|
|
32
|
+
let cachedModelId = null;
|
|
33
|
+
/**
|
|
34
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
35
|
+
*/
|
|
36
|
+
export async function disposePipeline() {
|
|
37
|
+
if (cachedPipeline && typeof cachedPipeline.dispose === 'function') {
|
|
38
|
+
await cachedPipeline.dispose();
|
|
39
|
+
}
|
|
40
|
+
cachedPipeline = null;
|
|
41
|
+
cachedModelId = null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get or create pipeline for automatic speech recognition
|
|
45
|
+
*/
|
|
46
|
+
async function getASRPipeline(modelId) {
|
|
47
|
+
if (cachedPipeline && cachedModelId === modelId) {
|
|
48
|
+
return cachedPipeline;
|
|
49
|
+
}
|
|
50
|
+
cachedPipeline = await pipeline('automatic-speech-recognition', modelId, {
|
|
51
|
+
device: 'cpu',
|
|
52
|
+
});
|
|
53
|
+
cachedModelId = modelId;
|
|
54
|
+
return cachedPipeline;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve model name from alias or use as-is
|
|
58
|
+
*/
|
|
59
|
+
function resolveModel(model) {
|
|
60
|
+
if (!model) {
|
|
61
|
+
return DEFAULT_MODEL;
|
|
62
|
+
}
|
|
63
|
+
const lowerModel = model.toLowerCase();
|
|
64
|
+
return MODEL_ALIASES[lowerModel] || model;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute transcription using Transformers.js automatic-speech-recognition pipeline
|
|
68
|
+
*/
|
|
69
|
+
export async function executeTranscribe(options, context) {
|
|
70
|
+
const { input, diarize = false, language, model } = options;
|
|
71
|
+
if (!input?.source) {
|
|
72
|
+
return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for transcription');
|
|
73
|
+
}
|
|
74
|
+
// Diarization is not supported locally - return helpful error
|
|
75
|
+
if (diarize) {
|
|
76
|
+
return createError(ErrorCodes.INVALID_INPUT, 'Diarization (speaker identification) is not supported by the local transformers provider. Use --provider fal or --provider replicate for diarization support.');
|
|
77
|
+
}
|
|
78
|
+
const modelId = resolveModel(model);
|
|
79
|
+
try {
|
|
80
|
+
// Get or create the ASR pipeline
|
|
81
|
+
const transcriber = await getASRPipeline(modelId);
|
|
82
|
+
// Run transcription with timestamp chunks
|
|
83
|
+
// The pipeline accepts URL or file path directly
|
|
84
|
+
const result = await transcriber(input.source, {
|
|
85
|
+
return_timestamps: 'word',
|
|
86
|
+
chunk_length_s: 30,
|
|
87
|
+
stride_length_s: 5,
|
|
88
|
+
language: language || undefined,
|
|
89
|
+
});
|
|
90
|
+
// Result can be a single object or array
|
|
91
|
+
const output = (Array.isArray(result) ? result[0] : result);
|
|
92
|
+
if (!output || typeof output.text !== 'string') {
|
|
93
|
+
return createError(ErrorCodes.PROVIDER_ERROR, 'No transcription output returned from model');
|
|
94
|
+
}
|
|
95
|
+
// Build transcription data
|
|
96
|
+
const chunks = output.chunks;
|
|
97
|
+
const transcription = {
|
|
98
|
+
text: output.text.trim(),
|
|
99
|
+
language: language || 'auto',
|
|
100
|
+
segments: chunks
|
|
101
|
+
? chunks.map((chunk) => ({
|
|
102
|
+
start: chunk.timestamp[0] ?? 0,
|
|
103
|
+
end: chunk.timestamp[1] ?? 0,
|
|
104
|
+
text: chunk.text.trim(),
|
|
105
|
+
}))
|
|
106
|
+
: [
|
|
107
|
+
{
|
|
108
|
+
start: 0,
|
|
109
|
+
end: 0,
|
|
110
|
+
text: output.text.trim(),
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
};
|
|
114
|
+
// Save transcription to JSON file
|
|
115
|
+
const outputFilename = generateOutputFilename('json', 'transcription');
|
|
116
|
+
const outputPath = getOutputPath(context.outputDir, outputFilename);
|
|
117
|
+
await writeFile(outputPath, JSON.stringify(transcription, null, 2));
|
|
118
|
+
return createTranscriptionSuccess({
|
|
119
|
+
mediaType: 'audio',
|
|
120
|
+
provider: 'transformers',
|
|
121
|
+
outputPath: outputPath,
|
|
122
|
+
transcription,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
127
|
+
// Provide helpful error for model download issues
|
|
128
|
+
if (message.includes('fetch') || message.includes('network')) {
|
|
129
|
+
return createError(ErrorCodes.NETWORK_ERROR, `Failed to download model ${modelId}. Ensure you have internet connectivity. Models are cached after first download.`);
|
|
130
|
+
}
|
|
131
|
+
// Handle audio format issues
|
|
132
|
+
if (message.includes('audio') ||
|
|
133
|
+
message.includes('decode') ||
|
|
134
|
+
message.includes('format')) {
|
|
135
|
+
return createError(ErrorCodes.INVALID_FORMAT, `Failed to process audio file. Supported formats: mp3, wav, mp4, m4a, webm, ogg. Error: ${message}`);
|
|
136
|
+
}
|
|
137
|
+
return createError(ErrorCodes.PROVIDER_ERROR, message);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=transcribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../src/transformers/transcribe.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.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Media providers for agent-media toolkit",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
"./runpod": {
|
|
32
32
|
"types": "./dist/runpod/index.d.ts",
|
|
33
33
|
"import": "./dist/runpod/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./transformers": {
|
|
36
|
+
"types": "./dist/transformers/index.d.ts",
|
|
37
|
+
"import": "./dist/transformers/index.js"
|
|
34
38
|
}
|
|
35
39
|
},
|
|
36
40
|
"files": [
|
|
@@ -38,16 +42,21 @@
|
|
|
38
42
|
],
|
|
39
43
|
"dependencies": {
|
|
40
44
|
"@ai-sdk/fal": "^2.0.6",
|
|
45
|
+
"@huggingface/transformers": "^3.3.3",
|
|
41
46
|
"@ai-sdk/replicate": "^2.0.6",
|
|
47
|
+
"@fal-ai/client": "^1.8.3",
|
|
42
48
|
"@runpod/ai-sdk-provider": "^1.1.0",
|
|
43
49
|
"ai": "^6.0.33",
|
|
44
|
-
"sharp": "^0.
|
|
45
|
-
"@agent-media/core": "0.
|
|
50
|
+
"sharp": "^0.34.1",
|
|
51
|
+
"@agent-media/core": "0.3.0"
|
|
46
52
|
},
|
|
47
53
|
"devDependencies": {
|
|
48
54
|
"@types/node": "^22.0.0",
|
|
49
55
|
"typescript": "^5.7.0"
|
|
50
56
|
},
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"access": "public"
|
|
59
|
+
},
|
|
51
60
|
"scripts": {
|
|
52
61
|
"build": "tsc",
|
|
53
62
|
"clean": "rm -rf dist",
|
package/dist/file/index.d.ts
DELETED
|
@@ -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
|
package/dist/file/index.d.ts.map
DELETED
|
@@ -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"}
|
package/dist/file/index.js
DELETED
|
@@ -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
|
package/dist/file/index.js.map
DELETED
|
@@ -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"}
|