comfyui-node 1.0.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 (128) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +601 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/call-wrapper.d.ts +115 -0
  5. package/dist/call-wrapper.d.ts.map +1 -0
  6. package/dist/call-wrapper.js +432 -0
  7. package/dist/call-wrapper.js.map +1 -0
  8. package/dist/client.d.ts +233 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +719 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/constants.d.ts +4 -0
  13. package/dist/constants.d.ts.map +1 -0
  14. package/dist/constants.js +4 -0
  15. package/dist/constants.js.map +1 -0
  16. package/dist/features/abstract.d.ts +15 -0
  17. package/dist/features/abstract.d.ts.map +1 -0
  18. package/dist/features/abstract.js +19 -0
  19. package/dist/features/abstract.js.map +1 -0
  20. package/dist/features/base.d.ts +9 -0
  21. package/dist/features/base.d.ts.map +1 -0
  22. package/dist/features/base.js +15 -0
  23. package/dist/features/base.js.map +1 -0
  24. package/dist/features/feature-flags.d.ts +14 -0
  25. package/dist/features/feature-flags.d.ts.map +1 -0
  26. package/dist/features/feature-flags.js +27 -0
  27. package/dist/features/feature-flags.js.map +1 -0
  28. package/dist/features/file.d.ts +86 -0
  29. package/dist/features/file.d.ts.map +1 -0
  30. package/dist/features/file.js +160 -0
  31. package/dist/features/file.js.map +1 -0
  32. package/dist/features/history.d.ts +16 -0
  33. package/dist/features/history.d.ts.map +1 -0
  34. package/dist/features/history.js +23 -0
  35. package/dist/features/history.js.map +1 -0
  36. package/dist/features/index.d.ts +14 -0
  37. package/dist/features/index.d.ts.map +1 -0
  38. package/dist/features/index.js +14 -0
  39. package/dist/features/index.js.map +1 -0
  40. package/dist/features/manager.d.ts +154 -0
  41. package/dist/features/manager.d.ts.map +1 -0
  42. package/dist/features/manager.js +309 -0
  43. package/dist/features/manager.js.map +1 -0
  44. package/dist/features/misc.d.ts +17 -0
  45. package/dist/features/misc.d.ts.map +1 -0
  46. package/dist/features/misc.js +52 -0
  47. package/dist/features/misc.js.map +1 -0
  48. package/dist/features/model.d.ts +39 -0
  49. package/dist/features/model.d.ts.map +1 -0
  50. package/dist/features/model.js +79 -0
  51. package/dist/features/model.js.map +1 -0
  52. package/dist/features/monitoring.d.ts +90 -0
  53. package/dist/features/monitoring.d.ts.map +1 -0
  54. package/dist/features/monitoring.js +129 -0
  55. package/dist/features/monitoring.js.map +1 -0
  56. package/dist/features/node.d.ts +42 -0
  57. package/dist/features/node.d.ts.map +1 -0
  58. package/dist/features/node.js +68 -0
  59. package/dist/features/node.js.map +1 -0
  60. package/dist/features/queue.d.ts +23 -0
  61. package/dist/features/queue.d.ts.map +1 -0
  62. package/dist/features/queue.js +68 -0
  63. package/dist/features/queue.js.map +1 -0
  64. package/dist/features/system.d.ts +21 -0
  65. package/dist/features/system.d.ts.map +1 -0
  66. package/dist/features/system.js +45 -0
  67. package/dist/features/system.js.map +1 -0
  68. package/dist/features/terminal.d.ts +25 -0
  69. package/dist/features/terminal.d.ts.map +1 -0
  70. package/dist/features/terminal.js +32 -0
  71. package/dist/features/terminal.js.map +1 -0
  72. package/dist/features/user.d.ts +42 -0
  73. package/dist/features/user.d.ts.map +1 -0
  74. package/dist/features/user.js +76 -0
  75. package/dist/features/user.js.map +1 -0
  76. package/dist/index.d.ts +8 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +6 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/pool.d.ts +171 -0
  81. package/dist/pool.d.ts.map +1 -0
  82. package/dist/pool.js +467 -0
  83. package/dist/pool.js.map +1 -0
  84. package/dist/prompt-builder.d.ts +131 -0
  85. package/dist/prompt-builder.d.ts.map +1 -0
  86. package/dist/prompt-builder.js +266 -0
  87. package/dist/prompt-builder.js.map +1 -0
  88. package/dist/tools.d.ts +10 -0
  89. package/dist/tools.d.ts.map +1 -0
  90. package/dist/tools.js +16 -0
  91. package/dist/tools.js.map +1 -0
  92. package/dist/typed-event-target.d.ts +7 -0
  93. package/dist/typed-event-target.d.ts.map +1 -0
  94. package/dist/typed-event-target.js +19 -0
  95. package/dist/typed-event-target.js.map +1 -0
  96. package/dist/types/api.d.ts +212 -0
  97. package/dist/types/api.d.ts.map +1 -0
  98. package/dist/types/api.js +16 -0
  99. package/dist/types/api.js.map +1 -0
  100. package/dist/types/error.d.ts +72 -0
  101. package/dist/types/error.d.ts.map +1 -0
  102. package/dist/types/error.js +75 -0
  103. package/dist/types/error.js.map +1 -0
  104. package/dist/types/event.d.ts +164 -0
  105. package/dist/types/event.d.ts.map +1 -0
  106. package/dist/types/event.js +2 -0
  107. package/dist/types/event.js.map +1 -0
  108. package/dist/types/manager.d.ts +157 -0
  109. package/dist/types/manager.d.ts.map +1 -0
  110. package/dist/types/manager.js +41 -0
  111. package/dist/types/manager.js.map +1 -0
  112. package/dist/types/sampler.d.ts +3 -0
  113. package/dist/types/sampler.d.ts.map +1 -0
  114. package/dist/types/sampler.js +2 -0
  115. package/dist/types/sampler.js.map +1 -0
  116. package/dist/types/tool.d.ts +10 -0
  117. package/dist/types/tool.d.ts.map +1 -0
  118. package/dist/types/tool.js +2 -0
  119. package/dist/types/tool.js.map +1 -0
  120. package/dist/utils/response-error.d.ts +4 -0
  121. package/dist/utils/response-error.d.ts.map +1 -0
  122. package/dist/utils/response-error.js +62 -0
  123. package/dist/utils/response-error.js.map +1 -0
  124. package/dist/utils/ws-reconnect.d.ts +29 -0
  125. package/dist/utils/ws-reconnect.d.ts.map +1 -0
  126. package/dist/utils/ws-reconnect.js +91 -0
  127. package/dist/utils/ws-reconnect.js.map +1 -0
  128. package/package.json +71 -0
@@ -0,0 +1,154 @@
1
+ import { TDefaultUI, EExtensionUpdateCheckResult, EUpdateResult, IExtensionInfo, TPreviewMethod, IInstallExtensionRequest, EInstallType, IExtensionUninstallRequest, IExtensionUpdateRequest, IExtensionActiveRequest, IModelInstallRequest, INodeMapItem } from "../types/manager.js";
2
+ import { AbstractFeature } from "./abstract.js";
3
+ export interface FetchOptions extends RequestInit {
4
+ headers?: {
5
+ [key: string]: string;
6
+ };
7
+ }
8
+ /** ComfyUI-Manager extension operations (extension lifecycle, updates, preview config, model install). */
9
+ export declare class ManagerFeature extends AbstractFeature {
10
+ checkSupported(): Promise<boolean>;
11
+ destroy(): void;
12
+ private fetchApi;
13
+ /**
14
+ * Set the default state to be displayed in the main menu when the browser starts.
15
+ *
16
+ * We use this api to checking if the manager feature is supported.
17
+ *
18
+ * Default will return the current state.
19
+ * @deprecated Not working anymore
20
+ */
21
+ defaultUi(setUi?: TDefaultUI): Promise<boolean>;
22
+ getVersion(): Promise<string>;
23
+ /**
24
+ * Retrieves a list of extension's nodes based on the specified mode.
25
+ *
26
+ * Useful to find the node suitable for the current workflow.
27
+ *
28
+ * @param mode - The mode to determine the source of the nodes. Defaults to "local".
29
+ * @returns A promise that resolves to an array of extension nodes.
30
+ * @throws An error if the retrieval fails.
31
+ */
32
+ getNodeMapList(mode?: "local" | "nickname"): Promise<Array<INodeMapItem>>;
33
+ /**
34
+ * Checks for extension updates.
35
+ *
36
+ * @param mode - The mode to use for checking updates. Defaults to "local".
37
+ * @returns The result of the extension update check.
38
+ */
39
+ checkExtensionUpdate(mode?: "local" | "cache"): Promise<EExtensionUpdateCheckResult>;
40
+ /**
41
+ * Updates all extensions.
42
+ * @param mode - The update mode. Can be "local" or "cache". Defaults to "local".
43
+ * @returns An object representing the result of the extension update.
44
+ */
45
+ updateAllExtensions(mode?: "local" | "cache"): Promise<{
46
+ type: EUpdateResult;
47
+ readonly data?: undefined;
48
+ } | {
49
+ readonly type: EUpdateResult.SUCCESS;
50
+ readonly data: {
51
+ updated: number;
52
+ failed: number;
53
+ };
54
+ }>;
55
+ /**
56
+ * Updates the ComfyUI.
57
+ *
58
+ * @returns The result of the update operation.
59
+ */
60
+ updateComfyUI(): Promise<EUpdateResult>;
61
+ /**
62
+ * Retrieves the list of extensions.
63
+ *
64
+ * @param mode - The mode to retrieve the extensions from. Can be "local" or "cache". Defaults to "local".
65
+ * @param skipUpdate - Indicates whether to skip updating the extensions. Defaults to true.
66
+ * @returns A promise that resolves to an object containing the channel and custom nodes, or false if the retrieval fails.
67
+ * @throws An error if the retrieval fails.
68
+ */
69
+ getExtensionList(mode?: "local" | "cache", skipUpdate?: boolean): Promise<{
70
+ channel: "local" | "default";
71
+ custom_nodes: IExtensionInfo[];
72
+ } | false>;
73
+ /**
74
+ * Reboots the instance.
75
+ *
76
+ * @returns A promise that resolves to `true` if the instance was successfully rebooted, or `false` otherwise.
77
+ */
78
+ rebootInstance(): Promise<boolean>;
79
+ /**
80
+ * Return the current preview method. Will set to `mode` if provided.
81
+ *
82
+ * @param mode - The preview method mode.
83
+ * @returns The result of the preview method.
84
+ * @throws An error if the preview method fails to set.
85
+ */
86
+ previewMethod(mode?: TPreviewMethod): Promise<TPreviewMethod | undefined>;
87
+ /**
88
+ * Installs an extension based on the provided configuration.
89
+ *
90
+ * @param config - The configuration for the extension installation.
91
+ * @returns A boolean indicating whether the installation was successful.
92
+ * @throws An error if the installation fails.
93
+ */
94
+ installExtension(config: IInstallExtensionRequest): Promise<boolean>;
95
+ /**
96
+ * Try to fix installation of an extension by re-install it again with fixes.
97
+ *
98
+ * @param config - The configuration object for fixing the extension.
99
+ * @returns A boolean indicating whether the extension was fixed successfully.
100
+ * @throws An error if the fix fails.
101
+ */
102
+ fixInstallExtension(config: Omit<IInstallExtensionRequest, "js_path" | "install_type"> & {
103
+ install_type: EInstallType.GIT_CLONE;
104
+ }): Promise<boolean>;
105
+ /**
106
+ * Install an extension from a Git URL.
107
+ *
108
+ * @param url - The URL of the Git repository.
109
+ * @returns A boolean indicating whether the installation was successful.
110
+ * @throws An error if the installation fails.
111
+ */
112
+ installExtensionFromGit(url: string): Promise<boolean>;
113
+ /**
114
+ * Installs pip packages.
115
+ *
116
+ * @param packages - An array of packages to install.
117
+ * @returns A boolean indicating whether the installation was successful.
118
+ * @throws An error if the installation fails.
119
+ */
120
+ installPipPackages(packages: string[]): Promise<boolean>;
121
+ /**
122
+ * Uninstalls an extension.
123
+ *
124
+ * @param config - The configuration for uninstalling the extension.
125
+ * @returns A boolean indicating whether the uninstallation was successful.
126
+ * @throws An error if the uninstallation fails.
127
+ */
128
+ uninstallExtension(config: IExtensionUninstallRequest): Promise<boolean>;
129
+ /**
130
+ * Updates the extension with the provided configuration. Only work with git-clone method
131
+ *
132
+ * @param config - The configuration object for the extension update.
133
+ * @returns A boolean indicating whether the extension update was successful.
134
+ * @throws An error if the extension update fails.
135
+ */
136
+ updateExtension(config: IExtensionUpdateRequest): Promise<boolean>;
137
+ /**
138
+ * Set the activation of extension.
139
+ *
140
+ * @param config - The configuration for the active extension.
141
+ * @returns A boolean indicating whether the active extension was set successfully.
142
+ * @throws An error if setting the active extension fails.
143
+ */
144
+ setActiveExtension(config: IExtensionActiveRequest): Promise<boolean>;
145
+ /**
146
+ * Install a model from given info.
147
+ *
148
+ * @param info - The model installation request information.
149
+ * @returns A boolean indicating whether the model installation was successful.
150
+ * @throws An error if the model installation fails.
151
+ */
152
+ installModel(info: IModelInstallRequest): Promise<boolean>;
153
+ }
154
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/features/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,2BAA2B,EAC3B,aAAa,EACb,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,OAAO,CAAC,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;CACH;AAED,0GAA0G;AAC1G,qBAAa,cAAe,SAAQ,eAAe;IAC3C,cAAc;IAQb,OAAO,IAAI,IAAI;YAIR,QAAQ;IAOtB;;;;;;;OAOG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IASnC;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,GAAE,OAAO,GAAG,UAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAsBxF;;;;;OAKG;IACG,oBAAoB,CAAC,IAAI,GAAE,OAAO,GAAG,OAAiB;IAW5D;;;;OAIG;IACG,mBAAmB,CAAC,IAAI,GAAE,OAAO,GAAG,OAAiB;;;;;uBAQxB;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE;;IAMtE;;;;OAIG;IACG,aAAa;IAenB;;;;;;;OAOG;IACG,gBAAgB,CACpB,IAAI,GAAE,OAAO,GAAG,OAAiB,EACjC,UAAU,GAAE,OAAc,GACzB,OAAO,CACN;QACE,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7B,YAAY,EAAE,cAAc,EAAE,CAAC;KAChC,GACD,KAAK,CACR;IAQD;;;;OAIG;IACG,cAAc;IAQpB;;;;;;OAMG;IACG,aAAa,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAc/E;;;;;;OAMG;IACG,gBAAgB,CAAC,MAAM,EAAE,wBAAwB;IAWvD;;;;;;OAMG;IACG,mBAAmB,CACvB,MAAM,EAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,cAAc,CAAC,GAAG;QACnE,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC;KACtC;IAYH;;;;;;OAMG;IACG,uBAAuB,CAAC,GAAG,EAAE,MAAM;IAWzC;;;;;;OAMG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE;IAW3C;;;;;;OAMG;IACG,kBAAkB,CAAC,MAAM,EAAE,0BAA0B;IAW3D;;;;;;OAMG;IACG,eAAe,CAAC,MAAM,EAAE,uBAAuB;IAWrD;;;;;;OAMG;IACG,kBAAkB,CAAC,MAAM,EAAE,uBAAuB;IAWxD;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,oBAAoB;CAU9C"}
@@ -0,0 +1,309 @@
1
+ import { EExtensionUpdateCheckResult, EUpdateResult } from "../types/manager.js";
2
+ import { AbstractFeature } from "./abstract.js";
3
+ /** ComfyUI-Manager extension operations (extension lifecycle, updates, preview config, model install). */
4
+ export class ManagerFeature extends AbstractFeature {
5
+ async checkSupported() {
6
+ const data = await this.getVersion().catch(() => false);
7
+ if (data !== false) {
8
+ this.supported = true;
9
+ }
10
+ return this.supported;
11
+ }
12
+ destroy() {
13
+ this.supported = false;
14
+ }
15
+ async fetchApi(path, options) {
16
+ if (!this.supported) {
17
+ return false;
18
+ }
19
+ return this.client.fetchApi(path, options);
20
+ }
21
+ /**
22
+ * Set the default state to be displayed in the main menu when the browser starts.
23
+ *
24
+ * We use this api to checking if the manager feature is supported.
25
+ *
26
+ * Default will return the current state.
27
+ * @deprecated Not working anymore
28
+ */
29
+ async defaultUi(setUi) {
30
+ return true;
31
+ }
32
+ async getVersion() {
33
+ const callURL = "/manager/version";
34
+ const data = await this.client.fetchApi(callURL);
35
+ if (data && data.ok) {
36
+ return data.text();
37
+ }
38
+ throw new Error("Failed to get version", { cause: data });
39
+ }
40
+ /**
41
+ * Retrieves a list of extension's nodes based on the specified mode.
42
+ *
43
+ * Useful to find the node suitable for the current workflow.
44
+ *
45
+ * @param mode - The mode to determine the source of the nodes. Defaults to "local".
46
+ * @returns A promise that resolves to an array of extension nodes.
47
+ * @throws An error if the retrieval fails.
48
+ */
49
+ async getNodeMapList(mode = "local") {
50
+ const listNodes = [];
51
+ const data = await this.fetchApi(`/customnode/getmappings?mode=${mode}`);
52
+ if (data && data.ok) {
53
+ const nodes = await data.json();
54
+ for (const url in nodes) {
55
+ const [nodeNames, nodeData] = nodes[url];
56
+ listNodes.push({
57
+ url,
58
+ nodeNames,
59
+ title_aux: nodeData.title_aux,
60
+ title: nodeData.title,
61
+ author: nodeData.author,
62
+ nickname: nodeData.nickname,
63
+ description: nodeData.description
64
+ });
65
+ }
66
+ return listNodes;
67
+ }
68
+ throw new Error("Failed to get node map list", { cause: data });
69
+ }
70
+ /**
71
+ * Checks for extension updates.
72
+ *
73
+ * @param mode - The mode to use for checking updates. Defaults to "local".
74
+ * @returns The result of the extension update check.
75
+ */
76
+ async checkExtensionUpdate(mode = "local") {
77
+ const data = await this.fetchApi(`/customnode/fetch_updates?mode=${mode}`);
78
+ if (data && data.ok) {
79
+ if (data.status === 201) {
80
+ return EExtensionUpdateCheckResult.UPDATE_AVAILABLE;
81
+ }
82
+ return EExtensionUpdateCheckResult.NO_UPDATE;
83
+ }
84
+ return EExtensionUpdateCheckResult.FAILED;
85
+ }
86
+ /**
87
+ * Updates all extensions.
88
+ * @param mode - The update mode. Can be "local" or "cache". Defaults to "local".
89
+ * @returns An object representing the result of the extension update.
90
+ */
91
+ async updateAllExtensions(mode = "local") {
92
+ const data = await this.fetchApi(`/customnode/update_all?mode=${mode}`);
93
+ if (data && data.ok) {
94
+ if (data.status === 200) {
95
+ return { type: EUpdateResult.UNCHANGED };
96
+ }
97
+ return {
98
+ type: EUpdateResult.SUCCESS,
99
+ data: (await data.json())
100
+ };
101
+ }
102
+ return { type: EUpdateResult.FAILED };
103
+ }
104
+ /**
105
+ * Updates the ComfyUI.
106
+ *
107
+ * @returns The result of the update operation.
108
+ */
109
+ async updateComfyUI() {
110
+ const data = await this.fetchApi("/comfyui_manager/update_comfyui");
111
+ if (data) {
112
+ switch (data.status) {
113
+ case 200:
114
+ return EUpdateResult.UNCHANGED;
115
+ case 201:
116
+ return EUpdateResult.SUCCESS;
117
+ default:
118
+ return EUpdateResult.FAILED;
119
+ }
120
+ }
121
+ return EUpdateResult.FAILED;
122
+ }
123
+ /**
124
+ * Retrieves the list of extensions.
125
+ *
126
+ * @param mode - The mode to retrieve the extensions from. Can be "local" or "cache". Defaults to "local".
127
+ * @param skipUpdate - Indicates whether to skip updating the extensions. Defaults to true.
128
+ * @returns A promise that resolves to an object containing the channel and custom nodes, or false if the retrieval fails.
129
+ * @throws An error if the retrieval fails.
130
+ */
131
+ async getExtensionList(mode = "local", skipUpdate = true) {
132
+ const data = await this.fetchApi(`/customnode/getlist?mode=${mode}&skip_update=${skipUpdate}`);
133
+ if (data && data.ok) {
134
+ return data.json();
135
+ }
136
+ throw new Error("Failed to get extension list", { cause: data });
137
+ }
138
+ /**
139
+ * Reboots the instance.
140
+ *
141
+ * @returns A promise that resolves to `true` if the instance was successfully rebooted, or `false` otherwise.
142
+ */
143
+ async rebootInstance() {
144
+ const data = await this.fetchApi("/manager/reboot").catch((e) => {
145
+ return true;
146
+ });
147
+ if (data !== true)
148
+ return false;
149
+ return true;
150
+ }
151
+ /**
152
+ * Return the current preview method. Will set to `mode` if provided.
153
+ *
154
+ * @param mode - The preview method mode.
155
+ * @returns The result of the preview method.
156
+ * @throws An error if the preview method fails to set.
157
+ */
158
+ async previewMethod(mode) {
159
+ let callURL = "/manager/preview_method";
160
+ if (mode) {
161
+ callURL += `?value=${mode}`;
162
+ }
163
+ const data = await this.fetchApi(callURL);
164
+ if (data && data.ok) {
165
+ const result = await data.text();
166
+ if (!result)
167
+ return mode;
168
+ return result;
169
+ }
170
+ throw new Error("Failed to set preview method", { cause: data });
171
+ }
172
+ /**
173
+ * Installs an extension based on the provided configuration.
174
+ *
175
+ * @param config - The configuration for the extension installation.
176
+ * @returns A boolean indicating whether the installation was successful.
177
+ * @throws An error if the installation fails.
178
+ */
179
+ async installExtension(config) {
180
+ const data = await this.fetchApi("/customnode/install", {
181
+ method: "POST",
182
+ body: JSON.stringify(config)
183
+ });
184
+ if (data && data.ok) {
185
+ return true;
186
+ }
187
+ throw new Error("Failed to install extension", { cause: data });
188
+ }
189
+ /**
190
+ * Try to fix installation of an extension by re-install it again with fixes.
191
+ *
192
+ * @param config - The configuration object for fixing the extension.
193
+ * @returns A boolean indicating whether the extension was fixed successfully.
194
+ * @throws An error if the fix fails.
195
+ */
196
+ async fixInstallExtension(config) {
197
+ const data = await this.fetchApi("/customnode/fix", {
198
+ method: "POST",
199
+ body: JSON.stringify(config)
200
+ });
201
+ if (data && data.ok) {
202
+ return true;
203
+ }
204
+ throw new Error("Failed to fix extension installation", { cause: data });
205
+ }
206
+ /**
207
+ * Install an extension from a Git URL.
208
+ *
209
+ * @param url - The URL of the Git repository.
210
+ * @returns A boolean indicating whether the installation was successful.
211
+ * @throws An error if the installation fails.
212
+ */
213
+ async installExtensionFromGit(url) {
214
+ const data = await this.fetchApi("/customnode/install/git_url", {
215
+ method: "POST",
216
+ body: url
217
+ });
218
+ if (data && data.ok) {
219
+ return true;
220
+ }
221
+ throw new Error("Failed to install extension from git", { cause: data });
222
+ }
223
+ /**
224
+ * Installs pip packages.
225
+ *
226
+ * @param packages - An array of packages to install.
227
+ * @returns A boolean indicating whether the installation was successful.
228
+ * @throws An error if the installation fails.
229
+ */
230
+ async installPipPackages(packages) {
231
+ const data = await this.fetchApi("/customnode/install/pip", {
232
+ method: "POST",
233
+ body: packages.join(" ")
234
+ });
235
+ if (data && data.ok) {
236
+ return true;
237
+ }
238
+ throw new Error("Failed to install pip's packages", { cause: data });
239
+ }
240
+ /**
241
+ * Uninstalls an extension.
242
+ *
243
+ * @param config - The configuration for uninstalling the extension.
244
+ * @returns A boolean indicating whether the uninstallation was successful.
245
+ * @throws An error if the uninstallation fails.
246
+ */
247
+ async uninstallExtension(config) {
248
+ const data = await this.fetchApi("/customnode/uninstall", {
249
+ method: "POST",
250
+ body: JSON.stringify(config)
251
+ });
252
+ if (data && data.ok) {
253
+ return true;
254
+ }
255
+ throw new Error("Failed to uninstall extension", { cause: data });
256
+ }
257
+ /**
258
+ * Updates the extension with the provided configuration. Only work with git-clone method
259
+ *
260
+ * @param config - The configuration object for the extension update.
261
+ * @returns A boolean indicating whether the extension update was successful.
262
+ * @throws An error if the extension update fails.
263
+ */
264
+ async updateExtension(config) {
265
+ const data = await this.fetchApi("/customnode/update", {
266
+ method: "POST",
267
+ body: JSON.stringify(config)
268
+ });
269
+ if (data && data.ok) {
270
+ return true;
271
+ }
272
+ throw new Error("Failed to update extension", { cause: data });
273
+ }
274
+ /**
275
+ * Set the activation of extension.
276
+ *
277
+ * @param config - The configuration for the active extension.
278
+ * @returns A boolean indicating whether the active extension was set successfully.
279
+ * @throws An error if setting the active extension fails.
280
+ */
281
+ async setActiveExtension(config) {
282
+ const data = await this.fetchApi("/customnode/toggle_active", {
283
+ method: "POST",
284
+ body: JSON.stringify(config)
285
+ });
286
+ if (data && data.ok) {
287
+ return true;
288
+ }
289
+ throw new Error("Failed to set active extension", { cause: data });
290
+ }
291
+ /**
292
+ * Install a model from given info.
293
+ *
294
+ * @param info - The model installation request information.
295
+ * @returns A boolean indicating whether the model installation was successful.
296
+ * @throws An error if the model installation fails.
297
+ */
298
+ async installModel(info) {
299
+ const data = await this.fetchApi("/model/install", {
300
+ method: "POST",
301
+ body: JSON.stringify(info)
302
+ });
303
+ if (data && data.ok) {
304
+ return true;
305
+ }
306
+ throw new Error("Failed to install model", { cause: data });
307
+ }
308
+ }
309
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/features/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ComfyApi } from "../client.js";
2
+ import { FeatureBase } from "./base.js";
3
+ /** Miscellaneous endpoints (extensions list, embeddings with legacy fallback). */
4
+ export declare class MiscFeature extends FeatureBase {
5
+ constructor(client: ComfyApi);
6
+ /**
7
+ * Retrieves a list of extension URLs.
8
+ * @returns {Promise<string[]>} A list of extension URLs.
9
+ */
10
+ getExtensions(): Promise<string[]>;
11
+ /**
12
+ * Retrieves a list of embedding names.
13
+ * @returns {Promise<string[]>} A list of embedding names.
14
+ */
15
+ getEmbeddings(): Promise<string[]>;
16
+ }
17
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/features/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,kFAAkF;AAClF,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,MAAM,EAAE,QAAQ;IAI5B;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKxC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CA6BzC"}
@@ -0,0 +1,52 @@
1
+ import { FeatureBase } from "./base.js";
2
+ /** Miscellaneous endpoints (extensions list, embeddings with legacy fallback). */
3
+ export class MiscFeature extends FeatureBase {
4
+ constructor(client) {
5
+ super(client);
6
+ }
7
+ /**
8
+ * Retrieves a list of extension URLs.
9
+ * @returns {Promise<string[]>} A list of extension URLs.
10
+ */
11
+ async getExtensions() {
12
+ const response = await this.client.fetchApi("/extensions");
13
+ return response.json();
14
+ }
15
+ /**
16
+ * Retrieves a list of embedding names.
17
+ * @returns {Promise<string[]>} A list of embedding names.
18
+ */
19
+ async getEmbeddings() {
20
+ let results = undefined;
21
+ try {
22
+ const response = await this.client.fetchApi("/api/embeddings?page_size=100");
23
+ const data = await response.json();
24
+ if (data && data.items) {
25
+ results = data.items.map((model) => model.model_name);
26
+ }
27
+ else {
28
+ if (data && Array.isArray(data)) {
29
+ results = data;
30
+ }
31
+ }
32
+ }
33
+ catch (error) {
34
+ console.error("[ComfyUI] Error fetching embeddings:", error);
35
+ }
36
+ if (!results) {
37
+ // Fallback to the legacy format
38
+ try {
39
+ const response = await this.client.fetchApi("/embeddings");
40
+ return response.json();
41
+ }
42
+ catch (e) {
43
+ console.error("[ComfyUI] Error fetching embeddings:", e);
44
+ }
45
+ }
46
+ if (!results) {
47
+ results = [];
48
+ }
49
+ return results;
50
+ }
51
+ }
52
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/features/misc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,kFAAkF;AAClF,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAY,MAAgB;QAC1B,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,OAAO,GAAyB,SAAS,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YAC7E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAC3D,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import { ComfyApi } from "../client.js";
2
+ import { ModelFile, ModelFolder, ModelPreviewResponse } from "../types/api.js";
3
+ import { FeatureBase } from "./base.js";
4
+ /** Experimental model browsing + preview retrieval. */
5
+ export declare class ModelFeature extends FeatureBase {
6
+ constructor(client: ComfyApi);
7
+ /**
8
+ * Retrieves a list of all available model folders.
9
+ * @experimental API that may change in future versions
10
+ * @returns A promise that resolves to an array of ModelFolder objects.
11
+ */
12
+ getModelFolders(): Promise<ModelFolder[]>;
13
+ /**
14
+ * Retrieves a list of all model files in a specific folder.
15
+ * @experimental API that may change in future versions
16
+ * @param folder - The name of the model folder.
17
+ * @returns A promise that resolves to an array of ModelFile objects.
18
+ */
19
+ getModelFiles(folder: string): Promise<ModelFile[]>;
20
+ /**
21
+ * Retrieves a preview image for a specific model file.
22
+ * @experimental API that may change in future versions
23
+ * @param folder - The name of the model folder.
24
+ * @param pathIndex - The index of the folder path where the file is stored.
25
+ * @param filename - The name of the model file.
26
+ * @returns A promise that resolves to a ModelPreviewResponse object containing the preview image data.
27
+ */
28
+ getModelPreview(folder: string, pathIndex: number, filename: string): Promise<ModelPreviewResponse>;
29
+ /**
30
+ * Creates a URL for a model preview image.
31
+ * @experimental API that may change in future versions
32
+ * @param folder - The name of the model folder.
33
+ * @param pathIndex - The index of the folder path where the file is stored.
34
+ * @param filename - The name of the model file.
35
+ * @returns The URL string for the model preview.
36
+ */
37
+ getModelPreviewUrl(folder: string, pathIndex: number, filename: string): string;
38
+ }
39
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/features/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,uDAAuD;AACvD,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,MAAM,EAAE,QAAQ;IAI5B;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAY/C;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAYzD;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsBzG;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAKhF"}