@wavespeed/cli 0.4.6 → 0.4.8

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 CHANGED
@@ -84,8 +84,8 @@ wavespeed run ... -p "..." --json | jq '.outputs[0]'
84
84
  "input": { "aspect_ratio": "16:9", "resolution": "2k" } },
85
85
  "social": { "model": "bytedance/seedream-v5.0-pro",
86
86
  "input": { "aspect_ratio": "1:1", "resolution": "1k" } },
87
- "vid": { "model": "bytedance/seedance-2.5/text-to-video",
88
- "input": { "resolution": "720p", "duration": 5 } }
87
+ "vid": { "model": "wavespeed-ai/minimax-h3/text-to-video",
88
+ "input": { "resolution": "768p", "duration": 5 } }
89
89
  }
90
90
  }
91
91
  ```
@@ -103,27 +103,31 @@ Resolution: positional with `/` is a model ID; otherwise looked up as an alias.
103
103
  |---|---|
104
104
  | Text → image | `bytedance/seedream-v5.0-pro` |
105
105
  | Image edit | `bytedance/seedream-v5.0-pro/edit` |
106
- | Text → video | `bytedance/seedance-2.5/text-to-video` |
107
- | Image → video | `bytedance/seedance-2.5/image-to-video` |
108
- | Video edit | `bytedance/seedance-2.5/video-edit` |
109
- | Video extend | `bytedance/seedance-2.5/video-extend` |
106
+ | Text → video | `wavespeed-ai/minimax-h3/text-to-video` |
107
+ | Image → video | `wavespeed-ai/minimax-h3/image-to-video` |
108
+ | Video edit | `wavespeed-ai/minimax-h3/video-edit` |
109
+ | Video extend | `wavespeed-ai/minimax-h3/video-extend` |
110
110
 
111
- Browse alternatives with `wavespeed models <query>`.
111
+ MiniMax H3 is the open-weights default: cheap, fast, and native stereo audio — the best place to start. When you need the highest quality, switch to `bytedance/seedance-2.5/*` (text-to-video, image-to-video, video-edit, video-extend). Browse alternatives with `wavespeed models <query>`.
112
112
 
113
113
  ## Use from coding agents
114
114
 
115
115
  No MCP server, no daemon. The CLI **is** the interface — agents already know how to run shell commands.
116
116
 
117
117
  ```bash
118
- wavespeed skill install # writes .claude/skills/wavespeed/SKILL.md
118
+ wavespeed skill install # writes .claude/skills/wavespeed/SKILL.md and .agents/skills/wavespeed/SKILL.md
119
119
  ```
120
120
 
121
121
  The skill teaches the agent the three-step pattern: `models` to find, `run <id> -h` to discover params, `run <id> -p "…" --json` to execute. Every command supports `--json` for clean piping.
122
122
 
123
123
  **OpenCode** loads the same file with no extra steps — `.claude/skills/` is on its skill search path.
124
124
 
125
+ **Codex** reads `.agents/skills/`, which the same command writes. For a one-line install that also wires up the MCP server: `codex plugin marketplace add WaveSpeedAI/codex-plugin-wavespeed-cli` ([WaveSpeedAI/codex-plugin-wavespeed-cli](https://github.com/WaveSpeedAI/codex-plugin-wavespeed-cli)).
126
+
125
127
  **DeepSeek Harness (dsh)**: the same skill is packaged for dsh's `.dsh/skills` layout at [WaveSpeedAI/wavespeed-dsh-skill](https://github.com/WaveSpeedAI/wavespeed-dsh-skill).
126
128
 
129
+ **Kimi Code CLI** reads `.claude/skills/` too, so `wavespeed skill install` is enough. For a one-line install that also wires up the MCP server, use the plugin: `/plugins install https://github.com/WaveSpeedAI/wavespeed-kimi-plugin` ([WaveSpeedAI/wavespeed-kimi-plugin](https://github.com/WaveSpeedAI/wavespeed-kimi-plugin)).
130
+
127
131
  ## Commands
128
132
 
129
133
  ```
package/dist/cli.js CHANGED
@@ -44,7 +44,7 @@ ${chalk.bold('Quick start:')}
44
44
  ${chalk.cyan('$ wavespeed models # browse the catalog')}
45
45
  ${chalk.cyan('$ wavespeed run wavespeed-ai/z-image/turbo -h # see the model\'s flags')}
46
46
  ${chalk.cyan('$ wavespeed run wavespeed-ai/z-image/turbo -p "a cyberpunk skyline" # ~5s')}
47
- ${chalk.cyan('$ wavespeed run bytedance/seedance-2.5/text-to-video -p "drone shot over snowy peaks"')}
47
+ ${chalk.cyan('$ wavespeed run wavespeed-ai/minimax-h3/text-to-video -p "drone shot over snowy peaks"')}
48
48
 
49
49
  ${chalk.bold('Use from any coding agent (Claude Code, Cursor, Codex):')}
50
50
  ${chalk.cyan('$ wavespeed skill install')} ${chalk.gray('# drops a SKILL.md so the agent knows how to call wavespeed')}
@@ -109,7 +109,7 @@ async function loginFlow(opts) {
109
109
  console.log(chalk.bold('Try it:'));
110
110
  console.log(' ' + chalk.cyan('wavespeed models # browse the catalog'));
111
111
  console.log(' ' + chalk.cyan('wavespeed run wavespeed-ai/z-image/turbo -p "a cyberpunk skyline at golden hour"'));
112
- console.log(' ' + chalk.cyan('wavespeed run bytedance/seedance-2.5/text-to-video -p "drone shot over snowy peaks"'));
112
+ console.log(' ' + chalk.cyan('wavespeed run wavespeed-ai/minimax-h3/text-to-video -p "drone shot over snowy peaks"'));
113
113
  console.log();
114
114
  }
115
115
  export function registerAuth(program) {
@@ -7,11 +7,22 @@ function skillSourcePath() {
7
7
  // dist/commands/skill.js -> ../../skills/SKILL.md
8
8
  return path.resolve(here, '..', '..', 'skills', 'SKILL.md');
9
9
  }
10
+ // Two discovery roots cover every agent we target: Claude Code, Cursor and
11
+ // OpenCode read `.claude/skills/`; Codex, Kimi Code and the wider agents.md
12
+ // ecosystem read `.agents/skills/`. Writing both keeps a single install
13
+ // command working everywhere.
14
+ export const SKILL_ROOTS = ['.claude', '.agents'];
15
+ export function writeSkills(cwd = process.cwd()) {
16
+ return SKILL_ROOTS.map((root) => {
17
+ const dest = path.join(cwd, root, 'skills', 'wavespeed', 'SKILL.md');
18
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
19
+ fs.copyFileSync(skillSourcePath(), dest);
20
+ return dest;
21
+ });
22
+ }
23
+ /** @deprecated use writeSkills — kept for callers that expect the Claude path. */
10
24
  export function writeSkill(cwd = process.cwd()) {
11
- const dest = path.join(cwd, '.claude', 'skills', 'wavespeed', 'SKILL.md');
12
- fs.mkdirSync(path.dirname(dest), { recursive: true });
13
- fs.copyFileSync(skillSourcePath(), dest);
14
- return dest;
25
+ return writeSkills(cwd)[0];
15
26
  }
16
27
  export function registerSkill(program) {
17
28
  const skill = program
@@ -19,19 +30,21 @@ export function registerSkill(program) {
19
30
  .description('Install a Wavespeed skill for Claude Code, Cursor, Codex, and other coding agents');
20
31
  skill
21
32
  .command('install', { isDefault: true })
22
- .description('Drop a SKILL.md into .claude/skills/wavespeed/ so Claude Code, Cursor, and Codex know how to call the CLI')
33
+ .description('Drop a SKILL.md into .claude/skills/ and .agents/skills/ so Claude Code, Cursor, Codex, Kimi Code and other agents know how to call the CLI')
23
34
  .option('--print', 'Print the skill body to stdout instead of writing a file')
24
35
  .action((opts) => {
25
36
  if (opts.print) {
26
37
  process.stdout.write(fs.readFileSync(skillSourcePath(), 'utf8'));
27
38
  return;
28
39
  }
29
- const dest = writeSkill();
40
+ const dests = writeSkills();
30
41
  console.log();
31
- console.log(chalk.green('Installed skill: ') + chalk.cyan(path.relative(process.cwd(), dest)));
42
+ for (const dest of dests) {
43
+ console.log(chalk.green('Installed skill: ') + chalk.cyan(path.relative(process.cwd(), dest)));
44
+ }
32
45
  console.log();
33
46
  console.log(chalk.bold('You\'re set.'));
34
- console.log(chalk.gray(' Claude Code, Cursor, and other agents auto-discover .claude/skills/*.'));
47
+ console.log(chalk.gray(' Claude Code, Cursor and OpenCode read .claude/skills/*; Codex, Kimi Code and other agents read .agents/skills/*.'));
35
48
  console.log(chalk.gray(' Agents will call the CLI directly — no MCP server, no extra config.'));
36
49
  console.log();
37
50
  console.log(chalk.gray(' Quick check: ask the agent to run ') + chalk.cyan('wavespeed models') + chalk.gray('.'));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wavespeed/cli",
3
- "version": "0.4.6",
4
- "description": "WaveSpeed CLI \u2014 one command to run any WaveSpeed AI model from your terminal.",
3
+ "version": "0.4.8",
4
+ "description": "WaveSpeed CLI — one command to run any WaveSpeed AI model from your terminal.",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
package/skills/SKILL.md CHANGED
@@ -31,12 +31,12 @@ wavespeed run bytedance/seedream-v5.0-pro \
31
31
  |---|---|
32
32
  | Text → image | `bytedance/seedream-v5.0-pro` |
33
33
  | Image edit (instruction-driven) | `bytedance/seedream-v5.0-pro/edit` — requires `images: [url, ...]` |
34
- | Text → video | `bytedance/seedance-2.5/text-to-video` |
35
- | Image → video | `bytedance/seedance-2.5/image-to-video` — requires `image: url` |
36
- | Video edit (instruction-driven) | `bytedance/seedance-2.5/video-edit` — requires `video: url` |
37
- | Video extend | `bytedance/seedance-2.5/video-extend` — requires `video: url` |
34
+ | Text → video | `wavespeed-ai/minimax-h3/text-to-video` |
35
+ | Image → video | `wavespeed-ai/minimax-h3/image-to-video` — requires `image: url` |
36
+ | Video edit (instruction-driven) | `wavespeed-ai/minimax-h3/video-edit` — requires `video: url` |
37
+ | Video extend | `wavespeed-ai/minimax-h3/video-extend` — requires `video: url` |
38
38
 
39
- These are good starting points. Browse alternatives with `wavespeed models <query>`.
39
+ These are good starting points. MiniMax H3 is the open-weights default: cheap, fast, and native stereo audio — the best place to start. When you need the highest quality, switch to `bytedance/seedance-2.5/*` (text-to-video, image-to-video, video-edit, video-extend). Browse alternatives with `wavespeed models <query>`.
40
40
 
41
41
  ## Common recipes
42
42
 
@@ -47,7 +47,7 @@ wavespeed run bytedance/seedream-v5.0-pro/edit \
47
47
  -i images='["@./input.jpg"]' --json
48
48
 
49
49
  # Image-to-video — same @ marker for single-URL fields
50
- wavespeed run bytedance/seedance-2.5/image-to-video \
50
+ wavespeed run wavespeed-ai/minimax-h3/image-to-video \
51
51
  -p "subtle parallax, gentle wind" \
52
52
  -i image=@./hero.jpg -i duration=5 --json
53
53