@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,21 +1,25 @@
1
1
  import ora from 'ora';
2
2
  import { ComfyAPIClient } from '../services/api.js';
3
3
  import { loadWorkflow, getBuiltinWorkflowPath, replaceVariables } from '../utils/workflow.js';
4
- import { success, error, info } from '../utils/logger.js';
4
+ import { success, info } from '../utils/logger.js';
5
+ import { outputSuccess, outputError, isPrettyMode } from '../utils/output.js';
5
6
  import { monitorProgress } from '../services/websocket.js';
7
+ import { addEnhancedHelp } from '../utils/helpText.js';
6
8
  export function registerGenerateCommand(program) {
7
- program
9
+ const cmd = program
8
10
  .command('generate')
9
- .description('生成图像(文生图)')
11
+ .description('生成图像(文生图)- 使用 FLUX 模型从文本生成高质量图像')
10
12
  .argument('<prompt>', '图像描述提示词')
11
- .option('-o, --output <dir>', '输出目录', './output')
12
- .option('--width <number>', '图像宽度', '1024')
13
- .option('--height <number>', '图像高度', '1024')
14
- .option('--no-wait', '提交任务后立即返回(不等待完成)')
15
- .option('--json', '输出 JSON 格式')
13
+ .option('-o, --output <dir>', '输出目录 (默认: ./output)', './output')
14
+ .option('--width <number>', '图像宽度 (默认: 1024)', '1024')
15
+ .option('--height <number>', '图像高度 (默认: 1024)', '1024')
16
+ .option('--no-wait', '提交任务后立即返回,不等待生成完成')
16
17
  .action(async (prompt, options) => {
18
+ const pretty = isPrettyMode(options);
17
19
  try {
18
- info(`正在生成图像: "${prompt}"`);
20
+ if (pretty) {
21
+ info(`正在生成图像: "${prompt}"`);
22
+ }
19
23
  // 加载内置 workflow
20
24
  const workflowPath = getBuiltinWorkflowPath('flux_text_to_image.json');
21
25
  const workflow = loadWorkflow(workflowPath);
@@ -39,10 +43,7 @@ export function registerGenerateCommand(program) {
39
43
  // 提交到 ComfyUI
40
44
  const client = new ComfyAPIClient();
41
45
  const result = await client.submitWorkflow(processedWorkflow);
42
- if (options.json) {
43
- console.log(JSON.stringify(result, null, 2));
44
- }
45
- else {
46
+ if (pretty) {
46
47
  success(`图像生成任务已提交`);
47
48
  info(`Prompt ID: ${result.prompt_id}`);
48
49
  // 默认等待完成,除非指定了 --no-wait
@@ -73,11 +74,62 @@ export function registerGenerateCommand(program) {
73
74
  info(`使用 'comfy download ${result.prompt_id}' 下载结果`);
74
75
  }
75
76
  }
77
+ else {
78
+ // JSON 模式:输出简洁的结果
79
+ outputSuccess({
80
+ prompt_id: result.prompt_id,
81
+ prompt,
82
+ width: params.width,
83
+ height: params.height,
84
+ status: options.wait !== false ? 'submitted_waiting' : 'submitted',
85
+ });
86
+ }
76
87
  }
77
88
  catch (err) {
78
- error(`生成失败: ${err}`);
79
- process.exit(1);
89
+ outputError('GENERATE_FAILED', `生成失败: ${err}`, options);
80
90
  }
81
91
  });
92
+ // Add enhanced help text
93
+ addEnhancedHelp(cmd, {
94
+ examples: [
95
+ '# 基础用法:生成图像(默认 JSON 输出)',
96
+ '$ comfy generate "a beautiful sunset over mountains"',
97
+ '',
98
+ '# 生成图像并等待完成',
99
+ '$ comfy generate "a cat wearing a hat"',
100
+ '',
101
+ '# 生成图像但不等待(立即返回 prompt_id)',
102
+ '$ comfy generate "a dog" --no-wait',
103
+ '',
104
+ '# 指定图像尺寸',
105
+ '$ comfy generate "a landscape" --width 1920 --height 1080',
106
+ '',
107
+ '# Pretty 模式(人类可读)',
108
+ '$ comfy generate "a sunset" --pretty',
109
+ ],
110
+ outputJson: `{
111
+ "success": true,
112
+ "data": {
113
+ "prompt_id": "abc-123-def",
114
+ "prompt": "a beautiful sunset",
115
+ "width": 1024,
116
+ "height": 1024,
117
+ "status": "submitted_waiting"
118
+ }
119
+ }`,
120
+ relatedCommands: [
121
+ { command: 'download <prompt_id>', description: '下载生成的图像' },
122
+ { command: 'workflow list', description: '查看生成历史' },
123
+ { command: 'queue status', description: '查看队列状态' },
124
+ { command: 'edit <image> <prompt>', description: '编辑已有图像' },
125
+ ],
126
+ notes: [
127
+ '默认使用 FLUX1-dev-fp8 模型,生成高质量图像',
128
+ '默认会等待生成完成,使用 --no-wait 可立即返回',
129
+ '生成完成后使用 "comfy download <prompt_id>" 下载图像',
130
+ '图像默认保存到 ./output 目录',
131
+ '默认输出 JSON 格式,使用 --pretty 可显示进度条',
132
+ ],
133
+ });
82
134
  }
83
135
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interrupt.d.ts","sourceRoot":"","sources":["../../src/commands/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,QAexD"}
1
+ {"version":3,"file":"interrupt.d.ts","sourceRoot":"","sources":["../../src/commands/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,QAiDxD"}
@@ -1,19 +1,54 @@
1
1
  import { ComfyAPIClient } from '../services/api.js';
2
- import { error, success } from '../utils/logger.js';
2
+ import { success } from '../utils/logger.js';
3
+ import { outputSuccess, outputError, isPrettyMode } from '../utils/output.js';
4
+ import { addEnhancedHelp } from '../utils/helpText.js';
3
5
  export function registerInterruptCommand(program) {
4
- program
6
+ const cmd = program
5
7
  .command('interrupt')
6
- .description('中断当前执行')
7
- .action(async () => {
8
+ .description('中断当前执行 - 立即停止 ComfyUI 当前正在执行的任务')
9
+ .action(async (options) => {
10
+ const pretty = isPrettyMode(options);
8
11
  try {
9
12
  const client = new ComfyAPIClient();
10
13
  await client.interrupt();
11
- success('已发送中断信号');
14
+ if (pretty) {
15
+ success('已发送中断信号');
16
+ }
17
+ else {
18
+ outputSuccess({
19
+ message: '已发送中断信号',
20
+ });
21
+ }
12
22
  }
13
23
  catch (err) {
14
- error(`中断失败: ${err}`);
15
- process.exit(1);
24
+ outputError('INTERRUPT_FAILED', `中断失败: ${err}`, options);
16
25
  }
17
26
  });
27
+ // Add enhanced help for interrupt command
28
+ addEnhancedHelp(cmd, {
29
+ examples: [
30
+ '# 中断当前执行的任务',
31
+ '$ comfy interrupt',
32
+ '',
33
+ '# Pretty 模式',
34
+ '$ comfy interrupt --pretty',
35
+ ],
36
+ outputJson: `{
37
+ "success": true,
38
+ "data": {
39
+ "message": "已发送中断信号"
40
+ }
41
+ }`,
42
+ relatedCommands: [
43
+ { command: 'queue status', description: '查看队列状态' },
44
+ { command: 'queue clear --confirm', description: '清空等待队列' },
45
+ { command: 'queue delete <id>', description: '删除队列中的任务' },
46
+ ],
47
+ notes: [
48
+ '立即停止当前正在执行的任务',
49
+ '只影响正在执行的任务,不影响队列中等待的任务',
50
+ '若要清空队列,使用 queue clear 命令',
51
+ ],
52
+ });
18
53
  }
19
54
  //# sourceMappingURL=interrupt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../../src/commands/interrupt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAEzB,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,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":"interrupt.js","sourceRoot":"","sources":["../../src/commands/interrupt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAS,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAEzB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC;oBACZ,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,kBAAkB,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,0CAA0C;IAC1C,eAAe,CAAC,GAAG,EAAE;QACnB,QAAQ,EAAE;YACR,aAAa;YACb,mBAAmB;YACnB,EAAE;YACF,aAAa;YACb,4BAA4B;SAC7B;QACD,UAAU,EAAE;;;;;EAKd;QACE,eAAe,EAAE;YACf,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE;YAClD,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,QAAQ,EAAE;YAC3D,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE;SAC1D;QACD,KAAK,EAAE;YACL,eAAe;YACf,wBAAwB;YACxB,0BAA0B;SAC3B;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/commands/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA2CpD"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/commands/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAiFpD"}
@@ -1,25 +1,24 @@
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 registerModelCommand(program) {
5
7
  const modelCmd = program
6
8
  .command('model')
7
9
  .description('模型管理');
8
10
  // comfy model list
9
- modelCmd
11
+ const listCmd = modelCmd
10
12
  .command('list')
11
- .description('列出可用模型')
13
+ .description('列出可用模型 - 查看 ComfyUI 服务器上已安装的所有模型')
12
14
  .option('--type <type>', '模型类型 (checkpoints, loras, vae, etc.)')
13
- .option('--json', '输出 JSON 格式')
14
15
  .action(async (options) => {
16
+ const pretty = isPrettyMode(options);
15
17
  try {
16
18
  const client = new ComfyAPIClient();
17
19
  const models = await client.listModels(options.type);
18
- if (options.json) {
19
- console.log(JSON.stringify(models, null, 2));
20
- }
21
- else {
22
- const modelList = Array.isArray(models) ? models : Object.values(models).flat();
20
+ const modelList = Array.isArray(models) ? models : Object.values(models).flat();
21
+ if (pretty) {
23
22
  if (modelList.length === 0) {
24
23
  info('未找到模型');
25
24
  return;
@@ -34,11 +33,50 @@ export function registerModelCommand(program) {
34
33
  console.log(table.toString());
35
34
  info(`共 ${modelList.length} 个模型${options.type ? ` (${options.type})` : ''}`);
36
35
  }
36
+ else {
37
+ outputSuccess({
38
+ models: modelList,
39
+ total: modelList.length,
40
+ type: options.type || null,
41
+ });
42
+ }
37
43
  }
38
44
  catch (err) {
39
- error(`获取模型列表失败: ${err}`);
40
- process.exit(1);
45
+ outputError('MODEL_LIST_FAILED', `获取模型列表失败: ${err}`, options);
41
46
  }
42
47
  });
48
+ // Add enhanced help for list command
49
+ addEnhancedHelp(listCmd, {
50
+ examples: [
51
+ '# 列出所有模型(JSON 模式)',
52
+ '$ comfy model list',
53
+ '',
54
+ '# 列出指定类型的模型',
55
+ '$ comfy model list --type checkpoints',
56
+ '',
57
+ '# Pretty 模式',
58
+ '$ comfy model list --pretty',
59
+ ],
60
+ outputJson: `{
61
+ "success": true,
62
+ "data": {
63
+ "models": [
64
+ "flux1-dev-kontext_fp8_scaled.safetensors",
65
+ "wan2.1_i2v_720p_14B_fp8_scaled.safetensors"
66
+ ],
67
+ "total": 2,
68
+ "type": null
69
+ }
70
+ }`,
71
+ relatedCommands: [
72
+ { command: 'node list', description: '列出所有节点类型' },
73
+ { command: 'system stats', description: '查看系统信息' },
74
+ ],
75
+ notes: [
76
+ '返回 ComfyUI 服务器上已安装的模型列表',
77
+ '可通过 --type 参数过滤特定类型',
78
+ '常见类型: checkpoints, loras, vae, upscale_models, embeddings',
79
+ ],
80
+ });
43
81
  }
44
82
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/commands/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB,mBAAmB;IACnB,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;SAC/D,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,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAErD,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,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEhF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;oBACtB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;oBACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;iBACnB,CAAC,CAAC;gBAEH,SAAS,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;oBACjD,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/E,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":"model.js","sourceRoot":"","sources":["../../src/commands/model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAwEnD"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAwJnD"}
@@ -1,17 +1,19 @@
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 registerNodeCommand(program) {
5
7
  const nodeCmd = program
6
8
  .command('node')
7
9
  .description('节点信息查询');
8
10
  // comfy node list
9
- nodeCmd
11
+ const listCmd = nodeCmd
10
12
  .command('list')
11
- .description('列出所有节点类型')
13
+ .description('列出所有节点类型 - 查看 ComfyUI 中可用的所有节点类型')
12
14
  .option('--filter <text>', '过滤节点名称')
13
- .option('--json', '输出 JSON 格式')
14
15
  .action(async (options) => {
16
+ const pretty = isPrettyMode(options);
15
17
  try {
16
18
  const client = new ComfyAPIClient();
17
19
  const nodeInfo = await client.getObjectInfo();
@@ -19,10 +21,7 @@ export function registerNodeCommand(program) {
19
21
  if (options.filter) {
20
22
  nodeList = nodeList.filter((name) => name.toLowerCase().includes(options.filter.toLowerCase()));
21
23
  }
22
- if (options.json) {
23
- console.log(JSON.stringify(nodeList, null, 2));
24
- }
25
- else {
24
+ if (pretty) {
26
25
  if (nodeList.length === 0) {
27
26
  info('未找到节点');
28
27
  return;
@@ -37,34 +36,113 @@ export function registerNodeCommand(program) {
37
36
  console.log(table.toString());
38
37
  info(`共 ${nodeList.length} 个节点类型`);
39
38
  }
39
+ else {
40
+ outputSuccess({
41
+ nodes: nodeList,
42
+ total: nodeList.length,
43
+ filter: options.filter || null,
44
+ });
45
+ }
40
46
  }
41
47
  catch (err) {
42
- error(`获取节点列表失败: ${err}`);
43
- process.exit(1);
48
+ outputError('NODE_LIST_FAILED', `获取节点列表失败: ${err}`, options);
44
49
  }
45
50
  });
51
+ // Add enhanced help for list command
52
+ addEnhancedHelp(listCmd, {
53
+ examples: [
54
+ '# 列出所有节点类型',
55
+ '$ comfy node list',
56
+ '',
57
+ '# 过滤包含 "Load" 的节点',
58
+ '$ comfy node list --filter Load',
59
+ '',
60
+ '# Pretty 模式',
61
+ '$ comfy node list --pretty',
62
+ ],
63
+ outputJson: `{
64
+ "success": true,
65
+ "data": {
66
+ "nodes": [
67
+ "KSampler",
68
+ "LoadImage",
69
+ "SaveImage",
70
+ "CLIPTextEncode"
71
+ ],
72
+ "total": 4,
73
+ "filter": null
74
+ }
75
+ }`,
76
+ relatedCommands: [
77
+ { command: 'node info <class>', description: '查看特定节点的详细信息' },
78
+ { command: 'model list', description: '列出可用模型' },
79
+ ],
80
+ notes: [
81
+ '返回 ComfyUI 中所有可用节点类型',
82
+ '使用 --filter 参数进行模糊搜索',
83
+ '配合 node info 命令查看节点详细信息',
84
+ ],
85
+ });
46
86
  // comfy node info
47
- nodeCmd
87
+ const infoCmd = nodeCmd
48
88
  .command('info')
49
- .description('查看节点详情')
89
+ .description('查看节点详情 - 查看指定节点的输入输出参数和配置')
50
90
  .argument('<class>', '节点类名')
51
- .option('--json', '输出 JSON 格式')
52
91
  .action(async (nodeClass, options) => {
92
+ const pretty = isPrettyMode(options);
53
93
  try {
54
94
  const client = new ComfyAPIClient();
55
95
  const nodeInfo = await client.getObjectInfo(nodeClass);
56
- if (options.json) {
96
+ if (pretty) {
97
+ console.log(`\n📦 节点: ${nodeClass}\n`);
57
98
  console.log(JSON.stringify(nodeInfo, null, 2));
58
99
  }
59
100
  else {
60
- console.log(`\n📦 节点: ${nodeClass}\n`);
61
- console.log(JSON.stringify(nodeInfo, null, 2));
101
+ outputSuccess({
102
+ class: nodeClass,
103
+ info: nodeInfo,
104
+ });
62
105
  }
63
106
  }
64
107
  catch (err) {
65
- error(`获取节点信息失败: ${err}`);
66
- process.exit(1);
108
+ outputError('NODE_INFO_FAILED', `获取节点信息失败: ${err}`, options);
67
109
  }
68
110
  });
111
+ // Add enhanced help for info command
112
+ addEnhancedHelp(infoCmd, {
113
+ examples: [
114
+ '# 查看 KSampler 节点详情',
115
+ '$ comfy node info KSampler',
116
+ '',
117
+ '# 查看 LoadImage 节点详情',
118
+ '$ comfy node info LoadImage',
119
+ '',
120
+ '# Pretty 模式',
121
+ '$ comfy node info SaveImage --pretty',
122
+ ],
123
+ outputJson: `{
124
+ "success": true,
125
+ "data": {
126
+ "class": "KSampler",
127
+ "info": {
128
+ "input": {
129
+ "required": {...},
130
+ "optional": {...}
131
+ },
132
+ "output": [...],
133
+ "category": "sampling"
134
+ }
135
+ }
136
+ }`,
137
+ relatedCommands: [
138
+ { command: 'node list', description: '列出所有节点类型' },
139
+ { command: 'node list --filter <text>', description: '搜索节点' },
140
+ ],
141
+ notes: [
142
+ '返回节点的完整定义信息',
143
+ '包含输入参数、输出类型、分类等',
144
+ '用于构建自定义 workflow 时了解节点接口',
145
+ ],
146
+ });
69
147
  }
70
148
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEzB,kBAAkB;IAClB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,UAAU,CAAC;SACvB,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC;SACnC,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,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAE9C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC1D,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;oBACtB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;oBACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;iBACnB,CAAC,CAAC;gBAEH,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;oBACnC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;YACrC,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;IAEL,kBAAkB;IAClB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,QAAQ,CAAC;SACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;SAC3B,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAO,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAEvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,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":"node.js","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAqGpD"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA+MpD"}