agent-media 0.4.0 → 0.6.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/README.md +73 -43
- package/dist/index.js +58 -7
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Media processing CLI for AI agents.
|
|
4
4
|
|
|
5
5
|
- **Image**: generate, edit, remove-background, resize, convert, extend
|
|
6
|
-
- **Video**:
|
|
7
|
-
- **Audio**: transcribe (with speaker identification)
|
|
6
|
+
- **Video**: generate (text-to-video and image-to-video)
|
|
7
|
+
- **Audio**: extract from video, transcribe (with speaker identification)
|
|
8
8
|
|
|
9
9
|
## Quick Start
|
|
10
10
|
|
|
@@ -16,12 +16,14 @@ Uses [Sharp](https://sharp.pixelplumbing.com/) for image operations and [transfo
|
|
|
16
16
|
bunx agent-media@latest image resize --in sunset-mountains.jpg --width 800
|
|
17
17
|
bunx agent-media@latest image convert --in sunset-mountains.png --format webp
|
|
18
18
|
bunx agent-media@latest image extend --in sunset-mountains.jpg --padding 50 --color "#FFFFFF"
|
|
19
|
-
bunx agent-media@latest image remove-background --in portrait-headshot.png
|
|
19
|
+
bunx agent-media@latest image remove-background --in portrait-headshot.png
|
|
20
20
|
bunx agent-media@latest audio extract --in video.mp4
|
|
21
|
-
bunx agent-media@latest audio transcribe --in audio.mp3
|
|
21
|
+
bunx agent-media@latest audio transcribe --in audio.mp3
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
> **Note**: You may see a `mutex lock failed` error with
|
|
24
|
+
> **Note**: You may see a `mutex lock failed` error with local AI processing — ignore it, the output is correct if JSON shows `"ok": true`.
|
|
25
|
+
|
|
26
|
+
**Provider auto-selection**: Without an API key, local processing is used. With an API key (`FAL_API_KEY`, `REPLICATE_API_TOKEN`, or `RUNPOD_API_KEY`), cloud providers are used. Override with `--provider <name>`.
|
|
25
27
|
|
|
26
28
|
### AI-powered features
|
|
27
29
|
|
|
@@ -43,6 +45,12 @@ bunx agent-media@latest image edit --in .agent-media/generated_*.png --prompt "a
|
|
|
43
45
|
# Remove background
|
|
44
46
|
bunx agent-media@latest image remove-background --in .agent-media/edited_*.png
|
|
45
47
|
|
|
48
|
+
# Generate a video from text
|
|
49
|
+
bunx agent-media@latest video generate --prompt "ocean waves crashing on rocks"
|
|
50
|
+
|
|
51
|
+
# Generate a video from an image (image-to-video with audio)
|
|
52
|
+
bunx agent-media@latest video generate --in portrait.png --prompt "person smiles and waves hello" --audio
|
|
53
|
+
|
|
46
54
|
# Transcribe with speaker identification
|
|
47
55
|
bunx agent-media@latest audio transcribe --in audio.mp3 --diarize
|
|
48
56
|
```
|
|
@@ -59,6 +67,12 @@ npx agent-media@latest image edit --in .agent-media/generated_*.png --prompt "ad
|
|
|
59
67
|
# Remove background
|
|
60
68
|
npx agent-media@latest image remove-background --in .agent-media/edited_*.png
|
|
61
69
|
|
|
70
|
+
# Generate a video from text
|
|
71
|
+
npx agent-media@latest video generate --prompt "ocean waves crashing on rocks"
|
|
72
|
+
|
|
73
|
+
# Generate a video from an image (image-to-video with audio)
|
|
74
|
+
npx agent-media@latest video generate --in portrait.png --prompt "person smiles and waves hello" --audio
|
|
75
|
+
|
|
62
76
|
# Transcribe with speaker identification
|
|
63
77
|
npx agent-media@latest audio transcribe --in audio.mp3 --diarize
|
|
64
78
|
```
|
|
@@ -87,7 +101,7 @@ pnpm install && pnpm build && pnpm link --global
|
|
|
87
101
|
## Requirements
|
|
88
102
|
|
|
89
103
|
- Node.js >= 18.0.0
|
|
90
|
-
- API key for AI features (generate,
|
|
104
|
+
- API key for AI features (image generate/edit, video generate, remove-background, transcribe)
|
|
91
105
|
|
|
92
106
|
---
|
|
93
107
|
|
|
@@ -220,6 +234,51 @@ agent-media@latest image remove-background --in https://ytrzap04kkm0giml.public.
|
|
|
220
234
|
|
|
221
235
|
---
|
|
222
236
|
|
|
237
|
+
## video
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# Generate video from text
|
|
241
|
+
agent-media@latest video generate --prompt <text>
|
|
242
|
+
|
|
243
|
+
# Generate video from image (animate an image)
|
|
244
|
+
agent-media@latest video generate --in <image> --prompt <text>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### generate
|
|
248
|
+
|
|
249
|
+
*API key required*
|
|
250
|
+
|
|
251
|
+
Generate video from a text prompt. Optionally provide an input image to animate it (image-to-video). The prompt describes what should happen in the video.
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Text-to-video
|
|
255
|
+
agent-media@latest video generate --prompt "a cat walking through a garden"
|
|
256
|
+
|
|
257
|
+
# Image-to-video (animate an image)
|
|
258
|
+
agent-media@latest video generate --in portrait.png --prompt "person smiles and waves hello"
|
|
259
|
+
|
|
260
|
+
# With audio generation
|
|
261
|
+
agent-media@latest video generate --prompt "fireworks in the night sky" --audio --duration 10
|
|
262
|
+
|
|
263
|
+
# Higher resolution
|
|
264
|
+
agent-media@latest video generate --prompt "ocean waves" --resolution 1080p
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
| Option | Description |
|
|
268
|
+
|--------|-------------|
|
|
269
|
+
| `--prompt <text>` | Text description of the video (required) |
|
|
270
|
+
| `--in <path>` | Input image for image-to-video (optional) |
|
|
271
|
+
| `--duration <s>` | Duration: 6, 8, 10, 12, 14, 16, 18, 20 (default: 6) |
|
|
272
|
+
| `--resolution <r>` | Resolution: 720p, 1080p, 1440p, 2160p (default: 720p) |
|
|
273
|
+
| `--fps <n>` | Frame rate: 25, 50 (default: 25) |
|
|
274
|
+
| `--audio` | Generate audio track |
|
|
275
|
+
| `--out <dir>` | Output directory |
|
|
276
|
+
| `--name <filename>` | Output filename (extension auto-added) |
|
|
277
|
+
| `--provider <name>` | Provider (fal, replicate) |
|
|
278
|
+
| `--model <name>` | Model override |
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
223
282
|
## audio
|
|
224
283
|
|
|
225
284
|
```bash
|
|
@@ -304,13 +363,13 @@ Exit code is `0` on success, `1` on error.
|
|
|
304
363
|
|
|
305
364
|
### Default Models
|
|
306
365
|
|
|
307
|
-
| Provider | resize | convert | extend | generate | edit | remove-background | transcribe |
|
|
308
|
-
|
|
309
|
-
| **local** | ✓ | ✓ | ✓ | - | - | - | - |
|
|
310
|
-
| **transformers** | - | - | - | - | - | `Xenova/modnet` | `moonshine-base` |
|
|
311
|
-
| **fal** | - | - | - | `fal-ai/flux-2` | `fal-ai/flux-2/edit` | `fal-ai/birefnet/v2` | `fal-ai/wizper` |
|
|
312
|
-
| **replicate** | - | - | - | `black-forest-labs/flux-2-dev` | `black-forest-labs/flux-kontext-dev` | `men1scus/birefnet` | WhisperX |
|
|
313
|
-
| **runpod** | - | - | - | `alibaba/wan-2.6` | `google/nano-banana-pro-edit` | - | - |
|
|
366
|
+
| Provider | resize | convert | extend | image generate | image edit | remove-background | video generate | transcribe |
|
|
367
|
+
|----------|--------|---------|--------|----------------|------------|-------------------|----------------|------------|
|
|
368
|
+
| **local** | ✓ | ✓ | ✓ | - | - | - | - | - |
|
|
369
|
+
| **transformers** | - | - | - | - | - | `Xenova/modnet` | - | `moonshine-base` |
|
|
370
|
+
| **fal** | - | - | - | `fal-ai/flux-2` | `fal-ai/flux-2/edit` | `fal-ai/birefnet/v2` | `fal-ai/ltx-2` | `fal-ai/wizper` |
|
|
371
|
+
| **replicate** | - | - | - | `black-forest-labs/flux-2-dev` | `black-forest-labs/flux-kontext-dev` | `men1scus/birefnet` | `lightricks/ltx-video` | WhisperX |
|
|
372
|
+
| **runpod** | - | - | - | `alibaba/wan-2.6` | `google/nano-banana-pro-edit` | - | - | - |
|
|
314
373
|
|
|
315
374
|
Use `--model <name>` to override the default model for any command.
|
|
316
375
|
|
|
@@ -331,38 +390,9 @@ Use `--model <name>` to override the default model for any command.
|
|
|
331
390
|
| `HUGGINGFACE_ACCESS_TOKEN` | For transcription with speaker ID (replicate only) | [huggingface.co](https://huggingface.co/settings/tokens) |
|
|
332
391
|
| `AGENT_MEDIA_DIR` | Output directory (default: `.agent-media/`) | - |
|
|
333
392
|
|
|
334
|
-
## Usage with AI Agents
|
|
335
|
-
|
|
336
|
-
### Just ask the agent
|
|
337
|
-
|
|
338
|
-
```
|
|
339
|
-
Use agent-media@latest to resize this image to 800px wide.
|
|
340
|
-
Run agent-media@latest --help to see available commands.
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
### AGENTS.md / CLAUDE.md
|
|
344
|
-
|
|
345
|
-
Add to your project instructions:
|
|
346
|
-
|
|
347
|
-
```markdown
|
|
348
|
-
## Media Processing
|
|
349
|
-
|
|
350
|
-
Use `agent-media@latest` for image and audio operations. Run `agent-media@latest --help` for commands.
|
|
351
|
-
|
|
352
|
-
- `agent-media@latest image resize --in <path> --width <px>` - Resize image
|
|
353
|
-
- `agent-media@latest image convert --in <path> --format <f>` - Convert format
|
|
354
|
-
- `agent-media@latest image generate --prompt <text>` - Generate image
|
|
355
|
-
- `agent-media@latest image edit --in <path> --prompt <text>` - Edit image
|
|
356
|
-
- `agent-media@latest image remove-background --in <path>` - Remove background
|
|
357
|
-
- `agent-media@latest audio extract --in <video>` - Extract audio from video
|
|
358
|
-
- `agent-media@latest audio transcribe --in <audio>` - Transcribe audio
|
|
359
|
-
|
|
360
|
-
All commands output JSON with `ok: true/false` and exit 0/1.
|
|
361
|
-
```
|
|
362
|
-
|
|
363
393
|
## Roadmap
|
|
364
394
|
|
|
365
395
|
- [x] Local CPU background removal via transformers.js/ONNX (zero API keys)
|
|
366
396
|
- [x] Local CPU transcription via transformers.js/ONNX (zero API keys)
|
|
367
|
-
- [
|
|
397
|
+
- [x] Video generation (text-to-video and image-to-video)
|
|
368
398
|
- [ ] Batch processing support
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { Command } from 'commander';
|
|
|
4
4
|
import { registerAllProviders } from '@agent-media/providers';
|
|
5
5
|
import { resize, convert, removeBackground, generate, extend, edit, printResult } from '@agent-media/image';
|
|
6
6
|
import { extract, transcribe } from '@agent-media/audio';
|
|
7
|
+
import { generate as videoGenerate } from '@agent-media/video';
|
|
7
8
|
import { getConfig, mergeConfig } from '@agent-media/core';
|
|
8
9
|
// Register all providers on startup
|
|
9
10
|
registerAllProviders();
|
|
@@ -24,15 +25,17 @@ imageCommand
|
|
|
24
25
|
.option('--width <pixels>', 'Target width in pixels', parseInt)
|
|
25
26
|
.option('--height <pixels>', 'Target height in pixels', parseInt)
|
|
26
27
|
.option('--out <path>', 'Output directory')
|
|
28
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
27
29
|
.option('--provider <name>', 'Provider to use (local, fal, replicate, runpod)')
|
|
28
30
|
.action(async (options) => {
|
|
29
31
|
const config = getConfig();
|
|
30
|
-
const merged = mergeConfig(config, { out: options.out, provider: options.provider });
|
|
32
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
31
33
|
const result = await resize({
|
|
32
34
|
input: options.in,
|
|
33
35
|
width: options.width,
|
|
34
36
|
height: options.height,
|
|
35
37
|
out: merged.outputDir,
|
|
38
|
+
name: merged.outputName,
|
|
36
39
|
provider: merged.provider,
|
|
37
40
|
});
|
|
38
41
|
printResult(result);
|
|
@@ -49,10 +52,11 @@ imageCommand
|
|
|
49
52
|
.option('--width <pixels>', 'Target width in pixels', parseInt)
|
|
50
53
|
.option('--height <pixels>', 'Target height in pixels', parseInt)
|
|
51
54
|
.option('--out <path>', 'Output directory')
|
|
55
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
52
56
|
.option('--provider <name>', 'Provider to use (local, fal, replicate, runpod)')
|
|
53
57
|
.action(async (options) => {
|
|
54
58
|
const config = getConfig();
|
|
55
|
-
const merged = mergeConfig(config, { out: options.out, provider: options.provider });
|
|
59
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
56
60
|
const result = await convert({
|
|
57
61
|
input: options.in,
|
|
58
62
|
format: options.format,
|
|
@@ -61,6 +65,7 @@ imageCommand
|
|
|
61
65
|
width: options.width,
|
|
62
66
|
height: options.height,
|
|
63
67
|
out: merged.outputDir,
|
|
68
|
+
name: merged.outputName,
|
|
64
69
|
provider: merged.provider,
|
|
65
70
|
});
|
|
66
71
|
printResult(result);
|
|
@@ -72,14 +77,16 @@ imageCommand
|
|
|
72
77
|
.description('Remove the background from an image')
|
|
73
78
|
.requiredOption('--in <path>', 'Input file path or URL')
|
|
74
79
|
.option('--out <path>', 'Output directory')
|
|
80
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
75
81
|
.option('--provider <name>', 'Provider to use (fal, replicate)')
|
|
76
82
|
.option('--model <name>', 'Model to use (overrides provider default)')
|
|
77
83
|
.action(async (options) => {
|
|
78
84
|
const config = getConfig();
|
|
79
|
-
const merged = mergeConfig(config, { out: options.out, provider: options.provider });
|
|
85
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
80
86
|
const result = await removeBackground({
|
|
81
87
|
input: options.in,
|
|
82
88
|
out: merged.outputDir,
|
|
89
|
+
name: merged.outputName,
|
|
83
90
|
provider: merged.provider,
|
|
84
91
|
model: options.model,
|
|
85
92
|
});
|
|
@@ -95,17 +102,19 @@ imageCommand
|
|
|
95
102
|
.option('--height <pixels>', 'Height of the generated image', parseInt)
|
|
96
103
|
.option('--count <number>', 'Number of images to generate', parseInt)
|
|
97
104
|
.option('--out <path>', 'Output directory')
|
|
105
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
98
106
|
.option('--provider <name>', 'Provider to use (fal, replicate, runpod)')
|
|
99
107
|
.option('--model <name>', 'Model to use (overrides provider default, e.g., fal-ai/flux-2)')
|
|
100
108
|
.action(async (options) => {
|
|
101
109
|
const config = getConfig();
|
|
102
|
-
const merged = mergeConfig(config, { out: options.out, provider: options.provider });
|
|
110
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
103
111
|
const result = await generate({
|
|
104
112
|
prompt: options.prompt,
|
|
105
113
|
width: options.width,
|
|
106
114
|
height: options.height,
|
|
107
115
|
count: options.count,
|
|
108
116
|
out: merged.outputDir,
|
|
117
|
+
name: merged.outputName,
|
|
109
118
|
provider: merged.provider,
|
|
110
119
|
model: options.model,
|
|
111
120
|
});
|
|
@@ -121,16 +130,18 @@ imageCommand
|
|
|
121
130
|
.requiredOption('--color <hex>', 'Background color for extended area (e.g., "#E4ECF8"). Also flattens transparency.')
|
|
122
131
|
.option('--dpi <number>', 'DPI/density for output image (default: 300)', parseInt)
|
|
123
132
|
.option('--out <path>', 'Output directory')
|
|
133
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
124
134
|
.option('--provider <name>', 'Provider to use (local)')
|
|
125
135
|
.action(async (options) => {
|
|
126
136
|
const config = getConfig();
|
|
127
|
-
const merged = mergeConfig(config, { out: options.out, provider: options.provider });
|
|
137
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
128
138
|
const result = await extend({
|
|
129
139
|
input: options.in,
|
|
130
140
|
padding: options.padding,
|
|
131
141
|
color: options.color,
|
|
132
142
|
dpi: options.dpi,
|
|
133
143
|
out: merged.outputDir,
|
|
144
|
+
name: merged.outputName,
|
|
134
145
|
provider: merged.provider,
|
|
135
146
|
});
|
|
136
147
|
printResult(result);
|
|
@@ -143,15 +154,17 @@ imageCommand
|
|
|
143
154
|
.requiredOption('--in <path>', 'Input file path or URL')
|
|
144
155
|
.requiredOption('--prompt <text>', 'Text description of the desired edit')
|
|
145
156
|
.option('--out <path>', 'Output directory')
|
|
157
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
146
158
|
.option('--provider <name>', 'Provider to use (fal, replicate, runpod)')
|
|
147
159
|
.option('--model <name>', 'Model to use (overrides provider default, e.g., fal-ai/flux-2/edit)')
|
|
148
160
|
.action(async (options) => {
|
|
149
161
|
const config = getConfig();
|
|
150
|
-
const merged = mergeConfig(config, { out: options.out, provider: options.provider });
|
|
162
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
151
163
|
const result = await edit({
|
|
152
164
|
input: options.in,
|
|
153
165
|
prompt: options.prompt,
|
|
154
166
|
out: merged.outputDir,
|
|
167
|
+
name: merged.outputName,
|
|
155
168
|
provider: merged.provider,
|
|
156
169
|
model: options.model,
|
|
157
170
|
});
|
|
@@ -169,13 +182,15 @@ audioCommand
|
|
|
169
182
|
.requiredOption('--in <path>', 'Input video file path or URL')
|
|
170
183
|
.option('--format <format>', 'Output audio format (mp3, wav)', 'mp3')
|
|
171
184
|
.option('--out <path>', 'Output directory')
|
|
185
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
172
186
|
.action(async (options) => {
|
|
173
187
|
const config = getConfig();
|
|
174
|
-
const merged = mergeConfig(config, { out: options.out });
|
|
188
|
+
const merged = mergeConfig(config, { out: options.out, name: options.name });
|
|
175
189
|
const result = await extract({
|
|
176
190
|
input: options.in,
|
|
177
191
|
format: options.format || 'mp3',
|
|
178
192
|
out: merged.outputDir,
|
|
193
|
+
name: merged.outputName,
|
|
179
194
|
});
|
|
180
195
|
printResult(result);
|
|
181
196
|
process.exit(result.ok ? 0 : 1);
|
|
@@ -206,6 +221,42 @@ audioCommand
|
|
|
206
221
|
printResult(result);
|
|
207
222
|
process.exit(result.ok ? 0 : 1);
|
|
208
223
|
});
|
|
224
|
+
// Video command group
|
|
225
|
+
const videoCommand = program
|
|
226
|
+
.command('video')
|
|
227
|
+
.description('Video processing commands');
|
|
228
|
+
// Video generate command
|
|
229
|
+
videoCommand
|
|
230
|
+
.command('generate')
|
|
231
|
+
.description('Generate video from a text prompt, optionally animating an input image')
|
|
232
|
+
.requiredOption('--prompt <text>', 'Text description of the video to generate')
|
|
233
|
+
.option('--in <path>', 'Input image for image-to-video')
|
|
234
|
+
.option('--duration <seconds>', 'Duration in seconds (6, 8, 10, 12, 14, 16, 18, 20)', parseInt)
|
|
235
|
+
.option('--resolution <res>', 'Video resolution (720p, 1080p, 1440p, 2160p)')
|
|
236
|
+
.option('--fps <rate>', 'Frame rate (25 or 50)', parseInt)
|
|
237
|
+
.option('--audio', 'Generate audio track')
|
|
238
|
+
.option('--out <path>', 'Output directory')
|
|
239
|
+
.option('--name <filename>', 'Output filename (extension auto-added if missing)')
|
|
240
|
+
.option('--provider <name>', 'Provider to use (fal, replicate)')
|
|
241
|
+
.option('--model <name>', 'Model to use (overrides provider default)')
|
|
242
|
+
.action(async (options) => {
|
|
243
|
+
const config = getConfig();
|
|
244
|
+
const merged = mergeConfig(config, { out: options.out, provider: options.provider, name: options.name });
|
|
245
|
+
const result = await videoGenerate({
|
|
246
|
+
prompt: options.prompt,
|
|
247
|
+
input: options.in,
|
|
248
|
+
duration: options.duration,
|
|
249
|
+
resolution: options.resolution,
|
|
250
|
+
fps: options.fps,
|
|
251
|
+
audio: options.audio,
|
|
252
|
+
out: merged.outputDir,
|
|
253
|
+
name: merged.outputName,
|
|
254
|
+
provider: merged.provider,
|
|
255
|
+
model: options.model,
|
|
256
|
+
});
|
|
257
|
+
printResult(result);
|
|
258
|
+
process.exit(result.ok ? 0 : 1);
|
|
259
|
+
});
|
|
209
260
|
// Parse and execute
|
|
210
261
|
program.parse();
|
|
211
262
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-media",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Agent-first media toolkit CLI",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -34,10 +34,11 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"commander": "^12.0.0",
|
|
36
36
|
"dotenv": "^17.2.3",
|
|
37
|
-
"@agent-media/audio": "0.
|
|
38
|
-
"@agent-media/
|
|
39
|
-
"@agent-media/
|
|
40
|
-
"@agent-media/providers": "0.
|
|
37
|
+
"@agent-media/audio": "0.4.1",
|
|
38
|
+
"@agent-media/core": "0.5.0",
|
|
39
|
+
"@agent-media/image": "0.3.1",
|
|
40
|
+
"@agent-media/providers": "0.5.0",
|
|
41
|
+
"@agent-media/video": "0.2.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"@types/node": "^22.0.0",
|