@optima-chat/comfy-cli 0.7.2 → 0.9.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.
Files changed (50) hide show
  1. package/.claude/settings.local.json +5 -1
  2. package/dist/backends/bfl.d.ts +18 -0
  3. package/dist/backends/bfl.d.ts.map +1 -0
  4. package/dist/backends/bfl.js +115 -0
  5. package/dist/backends/bfl.js.map +1 -0
  6. package/dist/backends/comfyui.d.ts +10 -0
  7. package/dist/backends/comfyui.d.ts.map +1 -0
  8. package/dist/backends/comfyui.js +108 -0
  9. package/dist/backends/comfyui.js.map +1 -0
  10. package/dist/backends/index.d.ts +24 -0
  11. package/dist/backends/index.d.ts.map +1 -0
  12. package/dist/backends/index.js +59 -0
  13. package/dist/backends/index.js.map +1 -0
  14. package/dist/backends/types.d.ts +97 -0
  15. package/dist/backends/types.d.ts.map +1 -0
  16. package/dist/backends/types.js +2 -0
  17. package/dist/backends/types.js.map +1 -0
  18. package/dist/backends/video-dashscope.d.ts +10 -0
  19. package/dist/backends/video-dashscope.d.ts.map +1 -0
  20. package/dist/backends/video-dashscope.js +94 -0
  21. package/dist/backends/video-dashscope.js.map +1 -0
  22. package/dist/backends/video-index.d.ts +23 -0
  23. package/dist/backends/video-index.d.ts.map +1 -0
  24. package/dist/backends/video-index.js +57 -0
  25. package/dist/backends/video-index.js.map +1 -0
  26. package/dist/commands/config.d.ts.map +1 -1
  27. package/dist/commands/config.js +22 -17
  28. package/dist/commands/config.js.map +1 -1
  29. package/dist/commands/image.d.ts +3 -0
  30. package/dist/commands/image.d.ts.map +1 -0
  31. package/dist/commands/image.js +148 -0
  32. package/dist/commands/image.js.map +1 -0
  33. package/dist/commands/video.d.ts.map +1 -1
  34. package/dist/commands/video.js +205 -119
  35. package/dist/commands/video.js.map +1 -1
  36. package/dist/index.js +2 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/services/bfl-api.d.ts +67 -0
  39. package/dist/services/bfl-api.d.ts.map +1 -0
  40. package/dist/services/bfl-api.js +99 -0
  41. package/dist/services/bfl-api.js.map +1 -0
  42. package/dist/services/config.d.ts +21 -1
  43. package/dist/services/config.d.ts.map +1 -1
  44. package/dist/services/config.js +41 -0
  45. package/dist/services/config.js.map +1 -1
  46. package/dist/services/dashscope-api.d.ts +69 -0
  47. package/dist/services/dashscope-api.d.ts.map +1 -0
  48. package/dist/services/dashscope-api.js +134 -0
  49. package/dist/services/dashscope-api.js.map +1 -0
  50. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,eAAO,MAAM,MAAM,mBAGjB,CAAC;AAEH,wBAAgB,SAAS,IAAI,WAAW,CAEvC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,WAAW,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAElE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC1C,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CACtD;AAsBD,eAAO,MAAM,MAAM,mBAGjB,CAAC;AAEH,wBAAgB,SAAS,IAAI,WAAW,CAEvC;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAEvD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAE/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmBrD"}
@@ -4,6 +4,19 @@ const defaultConfig = {
4
4
  timeout: 30000,
5
5
  autoConnect: true,
6
6
  outputDir: './comfy-output',
7
+ bfl: {
8
+ safetyTolerance: 2,
9
+ outputFormat: 'png',
10
+ },
11
+ dashscope: {
12
+ resolution: '1080P',
13
+ duration: 5,
14
+ promptExtend: true,
15
+ audio: true,
16
+ shotType: 'single',
17
+ },
18
+ preferBackend: 'auto',
19
+ preferVideoBackend: 'auto',
7
20
  };
8
21
  export const config = new Conf({
9
22
  projectName: 'comfy-cli',
@@ -12,10 +25,38 @@ export const config = new Conf({
12
25
  export function getConfig() {
13
26
  return config.store;
14
27
  }
28
+ // 支持嵌套键,如 'bfl.apiKey'
15
29
  export function setConfig(key, value) {
16
30
  config.set(key, value);
17
31
  }
32
+ export function getConfigValue(key) {
33
+ return config.get(key);
34
+ }
35
+ export function deleteConfig(key) {
36
+ config.delete(key);
37
+ }
18
38
  export function resetConfig() {
19
39
  config.clear();
20
40
  }
41
+ // 验证配置键是否有效
42
+ export function isValidConfigKey(key) {
43
+ const validKeys = [
44
+ 'server',
45
+ 'timeout',
46
+ 'autoConnect',
47
+ 'outputDir',
48
+ 'bfl.apiKey',
49
+ 'bfl.safetyTolerance',
50
+ 'bfl.outputFormat',
51
+ 'dashscope.apiKey',
52
+ 'dashscope.resolution',
53
+ 'dashscope.duration',
54
+ 'dashscope.promptExtend',
55
+ 'dashscope.audio',
56
+ 'dashscope.shotType',
57
+ 'preferBackend',
58
+ 'preferVideoBackend',
59
+ ];
60
+ return validKeys.includes(key);
61
+ }
21
62
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB,MAAM,aAAa,GAAgB;IACjC,MAAM,EAAE,6BAA6B;IACrC,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,gBAAgB;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAc;IAC1C,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,aAAa;CACxB,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAsB,EAAE,KAAU;IAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AA4BxB,MAAM,aAAa,GAAgB;IACjC,MAAM,EAAE,6BAA6B;IACrC,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,gBAAgB;IAC3B,GAAG,EAAE;QACH,eAAe,EAAE,CAAC;QAClB,YAAY,EAAE,KAAK;KACpB;IACD,SAAS,EAAE;QACT,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,QAAQ;KACnB;IACD,aAAa,EAAE,MAAM;IACrB,kBAAkB,EAAE,MAAM;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAc;IAC1C,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,aAAa;CACxB,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAU;IAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,CAAC,MAAM,CAAC,GAAwB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC;AAED,YAAY;AACZ,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,SAAS,GAAG;QAChB,QAAQ;QACR,SAAS;QACT,aAAa;QACb,WAAW;QACX,YAAY;QACZ,qBAAqB;QACrB,kBAAkB;QAClB,kBAAkB;QAClB,sBAAsB;QACtB,oBAAoB;QACpB,wBAAwB;QACxB,iBAAiB;QACjB,oBAAoB;QACpB,eAAe;QACf,oBAAoB;KACrB,CAAC;IACF,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,69 @@
1
+ export interface DashScopeSubmitParams {
2
+ prompt?: string;
3
+ negativePrompt?: string;
4
+ imgUrl: string;
5
+ audioUrl?: string;
6
+ resolution?: '720P' | '1080P';
7
+ duration?: 5 | 10 | 15;
8
+ promptExtend?: boolean;
9
+ audio?: boolean;
10
+ shotType?: 'single' | 'multi';
11
+ watermark?: boolean;
12
+ seed?: number;
13
+ }
14
+ export interface DashScopeSubmitResponse {
15
+ output: {
16
+ task_id: string;
17
+ task_status: string;
18
+ };
19
+ request_id: string;
20
+ }
21
+ export interface DashScopeTaskResult {
22
+ output: {
23
+ task_id: string;
24
+ task_status: 'PENDING' | 'RUNNING' | 'SUCCEEDED' | 'FAILED' | 'CANCELED' | 'UNKNOWN';
25
+ video_url?: string;
26
+ orig_prompt?: string;
27
+ actual_prompt?: string;
28
+ submit_time?: string;
29
+ end_time?: string;
30
+ };
31
+ usage?: {
32
+ duration?: number;
33
+ SR?: number;
34
+ video_count?: number;
35
+ };
36
+ request_id: string;
37
+ }
38
+ export interface PollOptions {
39
+ interval?: number;
40
+ timeout?: number;
41
+ onProgress?: (status: string) => void;
42
+ }
43
+ export declare class DashScopeClient {
44
+ private client;
45
+ private baseUrl;
46
+ constructor(apiKey: string);
47
+ /**
48
+ * 提交视频生成任务 (wan2.6-i2v)
49
+ */
50
+ submit(params: DashScopeSubmitParams): Promise<DashScopeSubmitResponse>;
51
+ /**
52
+ * 获取任务结果
53
+ */
54
+ getResult(taskId: string): Promise<DashScopeTaskResult>;
55
+ /**
56
+ * 轮询等待结果
57
+ */
58
+ poll(taskId: string, options?: PollOptions): Promise<DashScopeTaskResult>;
59
+ /**
60
+ * 将本地图像转换为 base64 data URL
61
+ */
62
+ imageToBase64(filePath: string): Promise<string>;
63
+ /**
64
+ * 下载视频到本地
65
+ */
66
+ downloadVideo(url: string, outputDir: string, filename?: string): Promise<string>;
67
+ private sleep;
68
+ }
69
+ //# sourceMappingURL=dashscope-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashscope-api.d.ts","sourceRoot":"","sources":["../../src/services/dashscope-api.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QACrF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAA2C;gBAE9C,MAAM,EAAE,MAAM;IAY1B;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiC7E;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAW7D;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6CnF;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAStD;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBvF,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,134 @@
1
+ import axios from 'axios';
2
+ import * as fs from 'fs/promises';
3
+ import * as path from 'path';
4
+ export class DashScopeClient {
5
+ client;
6
+ baseUrl = 'https://dashscope.aliyuncs.com/api/v1';
7
+ constructor(apiKey) {
8
+ this.client = axios.create({
9
+ baseURL: this.baseUrl,
10
+ headers: {
11
+ 'Authorization': `Bearer ${apiKey}`,
12
+ 'Content-Type': 'application/json',
13
+ 'X-DashScope-Async': 'enable',
14
+ },
15
+ timeout: 30000,
16
+ });
17
+ }
18
+ /**
19
+ * 提交视频生成任务 (wan2.6-i2v)
20
+ */
21
+ async submit(params) {
22
+ const requestBody = {
23
+ model: 'wan2.6-i2v',
24
+ input: {
25
+ prompt: params.prompt,
26
+ negative_prompt: params.negativePrompt,
27
+ img_url: params.imgUrl,
28
+ audio_url: params.audioUrl,
29
+ },
30
+ parameters: {
31
+ resolution: params.resolution || '1080P',
32
+ duration: params.duration || 5,
33
+ prompt_extend: params.promptExtend ?? true,
34
+ audio: params.audio ?? true,
35
+ shot_type: params.shotType || 'single',
36
+ watermark: params.watermark ?? false,
37
+ seed: params.seed,
38
+ },
39
+ };
40
+ // 移除 undefined 值
41
+ if (!requestBody.input.prompt)
42
+ delete requestBody.input.prompt;
43
+ if (!requestBody.input.negative_prompt)
44
+ delete requestBody.input.negative_prompt;
45
+ if (!requestBody.input.audio_url)
46
+ delete requestBody.input.audio_url;
47
+ if (requestBody.parameters.seed === undefined)
48
+ delete requestBody.parameters.seed;
49
+ const response = await this.client.post('/services/aigc/video-generation/video-synthesis', requestBody);
50
+ return response.data;
51
+ }
52
+ /**
53
+ * 获取任务结果
54
+ */
55
+ async getResult(taskId) {
56
+ // 查询任务不需要 X-DashScope-Async 头
57
+ const response = await axios.get(`${this.baseUrl}/tasks/${taskId}`, {
58
+ headers: {
59
+ 'Authorization': this.client.defaults.headers['Authorization'],
60
+ },
61
+ timeout: 30000,
62
+ });
63
+ return response.data;
64
+ }
65
+ /**
66
+ * 轮询等待结果
67
+ */
68
+ async poll(taskId, options = {}) {
69
+ const { interval = 15000, // DashScope 建议 15 秒轮询一次
70
+ timeout = 600000, // 10 分钟超时(视频生成较慢)
71
+ onProgress, } = options;
72
+ const startTime = Date.now();
73
+ while (true) {
74
+ // 检查超时
75
+ if (Date.now() - startTime > timeout) {
76
+ throw new Error('DashScope polling timeout exceeded');
77
+ }
78
+ // 获取状态
79
+ const result = await this.getResult(taskId);
80
+ const status = result.output.task_status;
81
+ // 通知进度
82
+ onProgress?.(status);
83
+ // 完成
84
+ if (status === 'SUCCEEDED') {
85
+ return result;
86
+ }
87
+ // 失败
88
+ if (status === 'FAILED') {
89
+ throw new Error('DashScope video generation failed');
90
+ }
91
+ if (status === 'CANCELED') {
92
+ throw new Error('DashScope task was canceled');
93
+ }
94
+ if (status === 'UNKNOWN') {
95
+ throw new Error('DashScope task status unknown');
96
+ }
97
+ // 等待后继续轮询
98
+ await this.sleep(interval);
99
+ }
100
+ }
101
+ /**
102
+ * 将本地图像转换为 base64 data URL
103
+ */
104
+ async imageToBase64(filePath) {
105
+ const absolutePath = path.resolve(filePath);
106
+ const buffer = await fs.readFile(absolutePath);
107
+ const base64 = buffer.toString('base64');
108
+ const ext = path.extname(filePath).toLowerCase();
109
+ const mimeType = ext === '.png' ? 'image/png' : 'image/jpeg';
110
+ return `data:${mimeType};base64,${base64}`;
111
+ }
112
+ /**
113
+ * 下载视频到本地
114
+ */
115
+ async downloadVideo(url, outputDir, filename) {
116
+ // 确保输出目录存在
117
+ await fs.mkdir(outputDir, { recursive: true });
118
+ // 下载视频
119
+ const response = await axios.get(url, {
120
+ responseType: 'arraybuffer',
121
+ timeout: 300000, // 5 分钟(视频文件较大)
122
+ });
123
+ // 确定文件名
124
+ const finalFilename = filename || `dashscope_${Date.now()}.mp4`;
125
+ const outputPath = path.join(outputDir, finalFilename);
126
+ // 写入文件
127
+ await fs.writeFile(outputPath, response.data);
128
+ return outputPath;
129
+ }
130
+ sleep(ms) {
131
+ return new Promise(resolve => setTimeout(resolve, ms));
132
+ }
133
+ }
134
+ //# sourceMappingURL=dashscope-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashscope-api.js","sourceRoot":"","sources":["../../src/services/dashscope-api.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/comfy-cli",
3
- "version": "0.7.2",
3
+ "version": "0.9.0",
4
4
  "description": "A CLI tool for ComfyUI designed for LLM interactions",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",