@optima-chat/comfy-cli 0.3.3 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/commands/config.d.ts.map +1 -1
  2. package/dist/commands/config.js +129 -28
  3. package/dist/commands/config.js.map +1 -1
  4. package/dist/commands/download.d.ts.map +1 -1
  5. package/dist/commands/download.js +119 -33
  6. package/dist/commands/download.js.map +1 -1
  7. package/dist/commands/edit.d.ts.map +1 -1
  8. package/dist/commands/edit.js +73 -23
  9. package/dist/commands/edit.js.map +1 -1
  10. package/dist/commands/generate.d.ts.map +1 -1
  11. package/dist/commands/generate.js +67 -15
  12. package/dist/commands/generate.js.map +1 -1
  13. package/dist/commands/interrupt.d.ts.map +1 -1
  14. package/dist/commands/interrupt.js +42 -7
  15. package/dist/commands/interrupt.js.map +1 -1
  16. package/dist/commands/model.d.ts.map +1 -1
  17. package/dist/commands/model.js +49 -11
  18. package/dist/commands/model.js.map +1 -1
  19. package/dist/commands/node.d.ts.map +1 -1
  20. package/dist/commands/node.js +96 -18
  21. package/dist/commands/node.js.map +1 -1
  22. package/dist/commands/queue.d.ts.map +1 -1
  23. package/dist/commands/queue.js +127 -25
  24. package/dist/commands/queue.js.map +1 -1
  25. package/dist/commands/system.d.ts.map +1 -1
  26. package/dist/commands/system.js +48 -10
  27. package/dist/commands/system.js.map +1 -1
  28. package/dist/commands/video.d.ts.map +1 -1
  29. package/dist/commands/video.js +86 -25
  30. package/dist/commands/video.js.map +1 -1
  31. package/dist/commands/workflow.d.ts.map +1 -1
  32. package/dist/commands/workflow.js +141 -34
  33. package/dist/commands/workflow.js.map +1 -1
  34. package/dist/index.js +35 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/utils/helpText.d.ts +15 -0
  37. package/dist/utils/helpText.d.ts.map +1 -0
  38. package/dist/utils/helpText.js +37 -0
  39. package/dist/utils/helpText.js.map +1 -0
  40. package/dist/utils/output.d.ts +54 -0
  41. package/dist/utils/output.d.ts.map +1 -0
  42. package/dist/utils/output.js +76 -0
  43. package/dist/utils/output.js.map +1 -0
  44. package/package.json +1 -1
@@ -1,23 +1,22 @@
1
1
  import { ComfyAPIClient } from '../services/api.js';
2
- import { success, error, info } from '../utils/logger.js';
2
+ import { success, info } from '../utils/logger.js';
3
+ import { outputSuccess, outputError, isPrettyMode } from '../utils/output.js';
4
+ import { addEnhancedHelp } from '../utils/helpText.js';
3
5
  import Table from 'cli-table3';
4
6
  export function registerQueueCommand(program) {
5
7
  const queueCmd = program
6
8
  .command('queue')
7
9
  .description('队列管理');
8
10
  // comfy queue status
9
- queueCmd
11
+ const statusCmd = queueCmd
10
12
  .command('status')
11
- .description('查看队列状态')
12
- .option('--json', '输出 JSON 格式')
13
+ .description('查看队列状态 - 查看 ComfyUI 当前正在执行和等待的任务')
13
14
  .action(async (options) => {
15
+ const pretty = isPrettyMode(options);
14
16
  try {
15
17
  const client = new ComfyAPIClient();
16
18
  const queue = await client.getQueue();
17
- if (options.json) {
18
- console.log(JSON.stringify(queue, null, 2));
19
- }
20
- else {
19
+ if (pretty) {
21
20
  const running = queue.queue_running || [];
22
21
  const pending = queue.queue_pending || [];
23
22
  console.log(`\n📊 队列状态\n`);
@@ -51,47 +50,150 @@ export function registerQueueCommand(program) {
51
50
  info('✓ 无等待任务');
52
51
  }
53
52
  }
53
+ else {
54
+ const running = (queue.queue_running || []).map((item, index) => ({
55
+ position: index + 1,
56
+ prompt_id: item[1] || null,
57
+ node_count: item[2]?.length || 0,
58
+ }));
59
+ const pending = (queue.queue_pending || []).map((item, index) => ({
60
+ position: index + 1,
61
+ prompt_id: item[1] || null,
62
+ node_count: item[2]?.length || 0,
63
+ }));
64
+ outputSuccess({
65
+ running,
66
+ pending,
67
+ running_count: running.length,
68
+ pending_count: pending.length,
69
+ });
70
+ }
54
71
  }
55
72
  catch (err) {
56
- error(`获取队列状态失败: ${err}`);
57
- process.exit(1);
73
+ outputError('QUEUE_STATUS_FAILED', `获取队列状态失败: ${err}`, options);
58
74
  }
59
75
  });
76
+ // Add enhanced help for status command
77
+ addEnhancedHelp(statusCmd, {
78
+ examples: [
79
+ '# 查看队列状态(JSON 模式)',
80
+ '$ comfy queue status',
81
+ '',
82
+ '# Pretty 模式',
83
+ '$ comfy queue status --pretty',
84
+ ],
85
+ outputJson: `{
86
+ "success": true,
87
+ "data": {
88
+ "running": [],
89
+ "pending": [],
90
+ "running_count": 0,
91
+ "pending_count": 0
92
+ }
93
+ }`,
94
+ relatedCommands: [
95
+ { command: 'queue clear --confirm', description: '清空队列' },
96
+ { command: 'queue delete <id>', description: '删除指定任务' },
97
+ { command: 'interrupt', description: '中断当前执行' },
98
+ ],
99
+ notes: [
100
+ 'running: 正在执行的任务列表',
101
+ 'pending: 等待执行的任务列表',
102
+ '每个任务包含 prompt_id 和节点数量信息',
103
+ ],
104
+ });
60
105
  // comfy queue clear
61
- queueCmd
106
+ const clearCmd = queueCmd
62
107
  .command('clear')
63
- .description('清空队列')
64
- .option('--confirm', '确认清空')
108
+ .description('清空队列 - 清空所有等待中的任务(需要确认)')
109
+ .option('--confirm', '确认清空(必需)')
65
110
  .action(async (options) => {
111
+ const pretty = isPrettyMode(options);
66
112
  try {
67
113
  if (!options.confirm) {
68
- error('请使用 --confirm 确认清空操作');
69
- process.exit(1);
114
+ outputError('CONFIRM_REQUIRED', '请使用 --confirm 确认清空操作', options);
70
115
  }
71
116
  const client = new ComfyAPIClient();
72
117
  await client.clearQueue();
73
- success('队列已清空');
118
+ if (pretty) {
119
+ success('队列已清空');
120
+ }
121
+ else {
122
+ outputSuccess({ message: '队列已清空' });
123
+ }
74
124
  }
75
125
  catch (err) {
76
- error(`清空队列失败: ${err}`);
77
- process.exit(1);
126
+ outputError('QUEUE_CLEAR_FAILED', `清空队列失败: ${err}`, options);
78
127
  }
79
128
  });
129
+ // Add enhanced help for clear command
130
+ addEnhancedHelp(clearCmd, {
131
+ examples: [
132
+ '# 清空队列(需要 --confirm)',
133
+ '$ comfy queue clear --confirm',
134
+ ],
135
+ outputJson: `{
136
+ "success": true,
137
+ "data": {
138
+ "message": "队列已清空"
139
+ }
140
+ }`,
141
+ relatedCommands: [
142
+ { command: 'queue status', description: '查看队列状态' },
143
+ { command: 'queue delete <id>', description: '删除单个任务' },
144
+ ],
145
+ notes: [
146
+ '必须使用 --confirm 选项才能执行',
147
+ '只清空等待中的任务,不影响正在执行的任务',
148
+ '此操作不可撤销',
149
+ ],
150
+ });
80
151
  // comfy queue delete
81
- queueCmd
152
+ const deleteCmd = queueCmd
82
153
  .command('delete')
83
- .description('删除指定队列项')
84
- .argument('<item_id>', '队列项 ID')
85
- .action(async (itemId) => {
154
+ .description('删除指定队列项 - 从队列中删除指定的任务')
155
+ .argument('<item_id>', '队列项 ID(从 queue status 获取)')
156
+ .action(async (itemId, options) => {
157
+ const pretty = isPrettyMode(options);
86
158
  try {
87
159
  const client = new ComfyAPIClient();
88
160
  await client.deleteQueueItem(itemId);
89
- success(`已删除队列项: ${itemId}`);
161
+ if (pretty) {
162
+ success(`已删除队列项: ${itemId}`);
163
+ }
164
+ else {
165
+ outputSuccess({
166
+ message: '已删除队列项',
167
+ item_id: itemId
168
+ });
169
+ }
90
170
  }
91
171
  catch (err) {
92
- error(`删除失败: ${err}`);
93
- process.exit(1);
172
+ outputError('QUEUE_DELETE_FAILED', `删除失败: ${err}`, options);
94
173
  }
95
174
  });
175
+ // Add enhanced help for delete command
176
+ addEnhancedHelp(deleteCmd, {
177
+ examples: [
178
+ '# 删除指定队列项',
179
+ '$ comfy queue delete abc-123-def',
180
+ ],
181
+ outputJson: `{
182
+ "success": true,
183
+ "data": {
184
+ "message": "已删除队列项",
185
+ "item_id": "abc-123-def"
186
+ }
187
+ }`,
188
+ relatedCommands: [
189
+ { command: 'queue status', description: '查看队列获取 item_id' },
190
+ { command: 'queue clear --confirm', description: '清空所有队列' },
191
+ ],
192
+ notes: [
193
+ 'item_id 从 queue status 命令获取',
194
+ '只能删除等待中的任务',
195
+ '正在执行的任务需要使用 interrupt 命令',
196
+ ],
197
+ });
96
198
  }
97
199
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/commands/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA8CrD"}
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/commands/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAoFrD"}
@@ -1,23 +1,22 @@
1
1
  import { ComfyAPIClient } from '../services/api.js';
2
- import { error, info } from '../utils/logger.js';
2
+ import { info } from '../utils/logger.js';
3
+ import { outputSuccess, outputError, isPrettyMode } from '../utils/output.js';
4
+ import { addEnhancedHelp } from '../utils/helpText.js';
3
5
  import Table from 'cli-table3';
4
6
  export function registerSystemCommand(program) {
5
7
  const systemCmd = program
6
8
  .command('system')
7
9
  .description('系统信息');
8
10
  // comfy system stats
9
- systemCmd
11
+ const statsCmd = systemCmd
10
12
  .command('stats')
11
- .description('查看系统统计信息')
12
- .option('--json', '输出 JSON 格式')
13
+ .description('查看系统统计信息 - 查看 ComfyUI 服务器的系统资源和设备状态')
13
14
  .action(async (options) => {
15
+ const pretty = isPrettyMode(options);
14
16
  try {
15
17
  const client = new ComfyAPIClient();
16
18
  const stats = await client.getSystemStats();
17
- if (options.json) {
18
- console.log(JSON.stringify(stats, null, 2));
19
- }
20
- else {
19
+ if (pretty) {
21
20
  console.log(`\n💻 系统状态\n`);
22
21
  if (stats.system) {
23
22
  const table = new Table({
@@ -37,11 +36,50 @@ export function registerSystemCommand(program) {
37
36
  });
38
37
  }
39
38
  }
39
+ else {
40
+ outputSuccess(stats);
41
+ }
40
42
  }
41
43
  catch (err) {
42
- error(`获取系统信息失败: ${err}`);
43
- process.exit(1);
44
+ outputError('SYSTEM_STATS_FAILED', `获取系统信息失败: ${err}`, options);
44
45
  }
45
46
  });
47
+ // Add enhanced help for stats command
48
+ addEnhancedHelp(statsCmd, {
49
+ examples: [
50
+ '# 查看系统统计信息',
51
+ '$ comfy system stats',
52
+ '',
53
+ '# Pretty 模式',
54
+ '$ comfy system stats --pretty',
55
+ ],
56
+ outputJson: `{
57
+ "success": true,
58
+ "data": {
59
+ "system": {
60
+ "os": "linux",
61
+ "python_version": "3.10.12",
62
+ "pytorch_version": "2.0.1"
63
+ },
64
+ "devices": [
65
+ {
66
+ "name": "NVIDIA GeForce RTX 4090",
67
+ "type": "cuda",
68
+ "vram_total": 24564,
69
+ "vram_free": 18432
70
+ }
71
+ ]
72
+ }
73
+ }`,
74
+ relatedCommands: [
75
+ { command: 'queue status', description: '查看队列状态' },
76
+ { command: 'model list', description: '列出可用模型' },
77
+ ],
78
+ notes: [
79
+ '显示 ComfyUI 服务器的系统信息',
80
+ '包含 CPU、内存、GPU 等硬件信息',
81
+ '用于诊断性能问题和资源使用情况',
82
+ ],
83
+ });
46
84
  }
47
85
  //# sourceMappingURL=system.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/commands/system.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAW,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB,qBAAqB;IACrB,SAAS;SACN,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,UAAU,CAAC;SACvB,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;YAE5C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAE3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;wBACtB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;wBACjB,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;qBACpB,CAAC,CAAC;oBAEH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBACpD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChC,CAAC;gBAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC5B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;wBACnD,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/commands/system.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA8GpD"}
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA2KpD"}
@@ -3,41 +3,50 @@ import * as fs from 'fs';
3
3
  import ora from 'ora';
4
4
  import { ComfyAPIClient } from '../services/api.js';
5
5
  import { loadWorkflow, getBuiltinWorkflowPath, replaceVariables } from '../utils/workflow.js';
6
- import { success, error, info } from '../utils/logger.js';
6
+ import { success, info } from '../utils/logger.js';
7
+ import { outputSuccess, outputError, isPrettyMode } from '../utils/output.js';
8
+ import { addEnhancedHelp } from '../utils/helpText.js';
7
9
  import { monitorProgress } from '../services/websocket.js';
8
10
  export function registerVideoCommand(program) {
9
- program
11
+ const cmd = program
10
12
  .command('video')
11
- .description('生成视频(图生视频)')
13
+ .description('生成视频(图生视频)- 使用 Wan2.1 模型将静态图像转换为动态视频')
12
14
  .argument('<image>', '输入图像路径')
13
- .option('-p, --prompt <text>', '运动描述提示词', '')
15
+ .option('-p, --prompt <text>', '运动描述提示词(如 "camera zoom in")', '')
14
16
  .option('-n, --negative <text>', '负向提示词', '')
15
- .option('-o, --output <dir>', '输出目录', './output')
16
- .option('--width <number>', '视频宽度', '512')
17
- .option('--height <number>', '视频高度', '512')
18
- .option('--no-wait', '提交任务后立即返回(不等待完成)')
19
- .option('--json', '输出 JSON 格式')
17
+ .option('-o, --output <dir>', '输出目录 (默认: ./output)', './output')
18
+ .option('--width <number>', '视频宽度 (默认: 512)', '512')
19
+ .option('--height <number>', '视频高度 (默认: 512)', '512')
20
+ .option('--no-wait', '提交任务后立即返回,不等待生成完成')
20
21
  .action(async (image, options) => {
22
+ const pretty = isPrettyMode(options);
21
23
  try {
22
24
  // 检查图像文件是否存在
23
25
  const imagePath = path.resolve(image);
24
26
  if (!fs.existsSync(imagePath)) {
25
- error(`图像文件不存在: ${imagePath}`);
26
- process.exit(1);
27
+ outputError('IMAGE_NOT_FOUND', `图像文件不存在: ${imagePath}`, options);
28
+ }
29
+ if (pretty) {
30
+ info(`正在生成视频: "${path.basename(image)}"`);
27
31
  }
28
- info(`正在生成视频: "${path.basename(image)}"`);
29
32
  // 先上传图像
30
- const uploadSpinner = ora('正在上传图像...').start();
31
33
  const client = new ComfyAPIClient();
32
34
  let uploadResult;
33
- try {
35
+ if (pretty) {
36
+ const uploadSpinner = ora('正在上传图像...').start();
37
+ try {
38
+ const imageBuffer = fs.readFileSync(imagePath);
39
+ uploadResult = await client.uploadImage(imageBuffer, path.basename(imagePath));
40
+ uploadSpinner.succeed('图像上传完成');
41
+ }
42
+ catch (err) {
43
+ uploadSpinner.fail('图像上传失败');
44
+ throw err;
45
+ }
46
+ }
47
+ else {
34
48
  const imageBuffer = fs.readFileSync(imagePath);
35
49
  uploadResult = await client.uploadImage(imageBuffer, path.basename(imagePath));
36
- uploadSpinner.succeed('图像上传完成');
37
- }
38
- catch (err) {
39
- uploadSpinner.fail('图像上传失败');
40
- throw err;
41
50
  }
42
51
  // 加载内置 workflow
43
52
  const workflowPath = getBuiltinWorkflowPath('wan_image_to_video.json');
@@ -67,10 +76,7 @@ export function registerVideoCommand(program) {
67
76
  const processedWorkflow = replaceVariables(workflow, params);
68
77
  // 提交到 ComfyUI
69
78
  const result = await client.submitWorkflow(processedWorkflow);
70
- if (options.json) {
71
- console.log(JSON.stringify(result, null, 2));
72
- }
73
- else {
79
+ if (pretty) {
74
80
  success(`视频生成任务已提交`);
75
81
  info(`Prompt ID: ${result.prompt_id}`);
76
82
  info(`帧数: ${params.frames}, FPS: ${params.fps}, 时长: ${(params.frames / params.fps).toFixed(1)}秒`);
@@ -102,11 +108,66 @@ export function registerVideoCommand(program) {
102
108
  info(`使用 'comfy download ${result.prompt_id}' 下载结果`);
103
109
  }
104
110
  }
111
+ else {
112
+ outputSuccess({
113
+ prompt_id: result.prompt_id,
114
+ image: path.basename(image),
115
+ width: params.width,
116
+ height: params.height,
117
+ frames: params.frames,
118
+ fps: params.fps,
119
+ duration: parseFloat((params.frames / params.fps).toFixed(1)),
120
+ status: options.wait !== false ? 'submitted_waiting' : 'submitted',
121
+ });
122
+ }
105
123
  }
106
124
  catch (err) {
107
- error(`生成失败: ${err}`);
108
- process.exit(1);
125
+ outputError('VIDEO_FAILED', `生成失败: ${err}`, options);
109
126
  }
110
127
  });
128
+ // Add enhanced help text
129
+ addEnhancedHelp(cmd, {
130
+ examples: [
131
+ '# 基础用法:图像转视频',
132
+ '$ comfy video landscape.png',
133
+ '',
134
+ '# 添加运动提示词',
135
+ '$ comfy video photo.jpg --prompt "camera zoom in"',
136
+ '',
137
+ '# 指定视频尺寸',
138
+ '$ comfy video image.png --width 720 --height 480',
139
+ '',
140
+ '# 不等待完成',
141
+ '$ comfy video sunset.png --no-wait',
142
+ '',
143
+ '# Pretty 模式',
144
+ '$ comfy video cat.png --prompt "cat walking" --pretty',
145
+ ],
146
+ outputJson: `{
147
+ "success": true,
148
+ "data": {
149
+ "prompt_id": "abc-123-def",
150
+ "image": "landscape.png",
151
+ "width": 512,
152
+ "height": 512,
153
+ "frames": 33,
154
+ "fps": 8,
155
+ "duration": 4.1,
156
+ "status": "submitted_waiting"
157
+ }
158
+ }`,
159
+ relatedCommands: [
160
+ { command: 'download <prompt_id>', description: '下载生成的视频' },
161
+ { command: 'generate <prompt>', description: '生成新图像' },
162
+ { command: 'edit <image> <prompt>', description: '编辑现有图像' },
163
+ ],
164
+ notes: [
165
+ '默认使用 Wan2.1 模型,生成 4.1 秒视频(33 帧 @ 8 FPS)',
166
+ '图像会先上传到 ComfyUI 服务器',
167
+ '支持常见图像格式:PNG, JPG, JPEG',
168
+ '建议图像尺寸为 512x512 以获得最佳效果',
169
+ '视频生成时间较长,建议使用 --no-wait 立即返回',
170
+ ],
171
+ });
111
172
  }
112
173
  //# sourceMappingURL=video.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,YAAY,CAAC;SACzB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC7B,MAAM,CAAC,qBAAqB,EAAE,SAAS,EAAE,EAAE,CAAC;SAC5C,MAAM,CAAC,uBAAuB,EAAE,OAAO,EAAE,EAAE,CAAC;SAC5C,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,UAAU,CAAC;SAChD,MAAM,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,CAAC;SACzC,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC;SAC1C,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC;SACvC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAO,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,aAAa;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE1C,QAAQ;YACR,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,YAAY,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC/C,YAAY,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/E,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,gBAAgB;YAChB,MAAM,YAAY,GAAG,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAE5C,OAAO;YACP,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,YAAY,CAAC,IAAI;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,QAAQ,IAAI,2IAA2I;gBAChL,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC9B,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gBAChC,MAAM,EAAE,EAAE,EAAG,QAAQ;gBACrB,GAAG,EAAE,CAAC,EAAG,QAAQ;gBACjB,KAAK,EAAE,EAAE,EAAG,QAAQ;gBACpB,SAAS,EAAE,GAAG,EAAG,QAAQ;gBACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAG,OAAO;gBACnD,OAAO,EAAE,QAAQ;gBACjB,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,mDAAmD;gBAC/D,UAAU,EAAE,wCAAwC;gBACpD,iBAAiB,EAAE,2BAA2B;gBAC9C,SAAS,EAAE,yBAAyB;gBACpC,KAAK,EAAE,GAAG;gBACV,eAAe,EAAE,iBAAiB;aACnC,CAAC;YAEF,OAAO;YACP,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAE7D,cAAc;YACd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAE9D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,WAAW,CAAC,CAAC;gBACrB,IAAI,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAElG,yBAAyB;gBACzB,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;oBAEjD,IAAI,CAAC;wBACH,MAAM,eAAe,CACnB,MAAM,CAAC,SAAS,EAChB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;4BAC1B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gCACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gCACpD,OAAO,CAAC,IAAI,GAAG,QAAQ,OAAO,MAAM,OAAO,IAAI,KAAK,GAAG,CAAC;gCACxD,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;gCACvB,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,CAAC;wBACH,CAAC,EACD,GAAG,EAAE;4BACH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC7B,CAAC,CACF,CAAC;wBACF,IAAI,CAAC,sBAAsB,MAAM,CAAC,SAAS,QAAQ,CAAC,CAAC;oBACvD,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;wBAC/C,IAAI,CAAC,sBAAsB,MAAM,CAAC,SAAS,QAAQ,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,sBAAsB,MAAM,CAAC,SAAS,QAAQ,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA0IvD"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QAyPvD"}