@hypercli.com/sdk 0.9.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.
- package/README.md +629 -0
- package/dist/acp-driver.d.ts +72 -0
- package/dist/acp-driver.d.ts.map +1 -0
- package/dist/acp-driver.js +147 -0
- package/dist/acp-driver.js.map +1 -0
- package/dist/acp-pool.d.ts +70 -0
- package/dist/acp-pool.d.ts.map +1 -0
- package/dist/acp-pool.js +181 -0
- package/dist/acp-pool.js.map +1 -0
- package/dist/acp.d.ts +179 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +487 -0
- package/dist/acp.js.map +1 -0
- package/dist/agent-persona.d.ts +68 -0
- package/dist/agent-persona.d.ts.map +1 -0
- package/dist/agent-persona.js +78 -0
- package/dist/agent-persona.js.map +1 -0
- package/dist/agent-slots.d.ts +18 -0
- package/dist/agent-slots.d.ts.map +1 -0
- package/dist/agent-slots.js +24 -0
- package/dist/agent-slots.js.map +1 -0
- package/dist/agent-urls.d.ts +47 -0
- package/dist/agent-urls.d.ts.map +1 -0
- package/dist/agent-urls.js +178 -0
- package/dist/agent-urls.js.map +1 -0
- package/dist/agent.d.ts +482 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +926 -0
- package/dist/agent.js.map +1 -0
- package/dist/agents.d.ts +1452 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +4022 -0
- package/dist/agents.js.map +1 -0
- package/dist/billing.d.ts +72 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +93 -0
- package/dist/billing.js.map +1 -0
- package/dist/browser-jobs.d.ts +24 -0
- package/dist/browser-jobs.d.ts.map +1 -0
- package/dist/browser-jobs.js +209 -0
- package/dist/browser-jobs.js.map +1 -0
- package/dist/browser.d.ts +41 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +57 -0
- package/dist/browser.js.map +1 -0
- package/dist/buzz-activity.d.ts +169 -0
- package/dist/buzz-activity.d.ts.map +1 -0
- package/dist/buzz-activity.js +844 -0
- package/dist/buzz-activity.js.map +1 -0
- package/dist/channels.d.ts +99 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +27 -0
- package/dist/channels.js.map +1 -0
- package/dist/chat-integrations.d.ts +44 -0
- package/dist/chat-integrations.d.ts.map +1 -0
- package/dist/chat-integrations.js +138 -0
- package/dist/chat-integrations.js.map +1 -0
- package/dist/client.d.ts +88 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +144 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +192 -0
- package/dist/config.js.map +1 -0
- package/dist/connectors.d.ts +80 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +2 -0
- package/dist/connectors.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +26 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.d.ts +60 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +128 -0
- package/dist/files.js.map +1 -0
- package/dist/http.d.ts +56 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +362 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/instances.d.ts +94 -0
- package/dist/instances.d.ts.map +1 -0
- package/dist/instances.js +197 -0
- package/dist/instances.js.map +1 -0
- package/dist/integrations.d.ts +111 -0
- package/dist/integrations.d.ts.map +1 -0
- package/dist/integrations.js +206 -0
- package/dist/integrations.js.map +1 -0
- package/dist/job/base.d.ts +86 -0
- package/dist/job/base.d.ts.map +1 -0
- package/dist/job/base.js +206 -0
- package/dist/job/base.js.map +1 -0
- package/dist/job/comfyui.d.ts +259 -0
- package/dist/job/comfyui.d.ts.map +1 -0
- package/dist/job/comfyui.js +1563 -0
- package/dist/job/comfyui.js.map +1 -0
- package/dist/job/gradio.d.ts +48 -0
- package/dist/job/gradio.d.ts.map +1 -0
- package/dist/job/gradio.js +90 -0
- package/dist/job/gradio.js.map +1 -0
- package/dist/job-codecs.d.ts +66 -0
- package/dist/job-codecs.d.ts.map +1 -0
- package/dist/job-codecs.js +132 -0
- package/dist/job-codecs.js.map +1 -0
- package/dist/jobs.d.ts +148 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +480 -0
- package/dist/jobs.js.map +1 -0
- package/dist/keys.d.ts +99 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +145 -0
- package/dist/keys.js.map +1 -0
- package/dist/logs.d.ts +54 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +256 -0
- package/dist/logs.js.map +1 -0
- package/dist/managed-context.d.ts +20 -0
- package/dist/managed-context.d.ts.map +1 -0
- package/dist/managed-context.js +95 -0
- package/dist/managed-context.js.map +1 -0
- package/dist/mcp.d.ts +7 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +8 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +87 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +79 -0
- package/dist/memory.js.map +1 -0
- package/dist/models.d.ts +15 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +19 -0
- package/dist/models.js.map +1 -0
- package/dist/openclaw-control-ui-origin.d.ts +23 -0
- package/dist/openclaw-control-ui-origin.d.ts.map +1 -0
- package/dist/openclaw-control-ui-origin.js +53 -0
- package/dist/openclaw-control-ui-origin.js.map +1 -0
- package/dist/renders.d.ts +187 -0
- package/dist/renders.d.ts.map +1 -0
- package/dist/renders.js +360 -0
- package/dist/renders.js.map +1 -0
- package/dist/routines.d.ts +59 -0
- package/dist/routines.d.ts.map +1 -0
- package/dist/routines.js +135 -0
- package/dist/routines.js.map +1 -0
- package/dist/runners.d.ts +61 -0
- package/dist/runners.d.ts.map +1 -0
- package/dist/runners.js +127 -0
- package/dist/runners.js.map +1 -0
- package/dist/sessions.d.ts +280 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +292 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skills.d.ts +170 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +2 -0
- package/dist/skills.js.map +1 -0
- package/dist/user.d.ts +78 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +143 -0
- package/dist/user.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/voice-session.d.ts +66 -0
- package/dist/voice-session.d.ts.map +1 -0
- package/dist/voice-session.js +366 -0
- package/dist/voice-session.js.map +1 -0
- package/dist/voice-transcription-session.d.ts +64 -0
- package/dist/voice-transcription-session.d.ts.map +1 -0
- package/dist/voice-transcription-session.js +228 -0
- package/dist/voice-transcription-session.js.map +1 -0
- package/dist/voice.d.ts +62 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +134 -0
- package/dist/voice.js.map +1 -0
- package/dist/workspace-tomd.d.ts +61 -0
- package/dist/workspace-tomd.d.ts.map +1 -0
- package/dist/workspace-tomd.js +177 -0
- package/dist/workspace-tomd.js.map +1 -0
- package/dist/workspaces.d.ts +255 -0
- package/dist/workspaces.d.ts.map +1 -0
- package/dist/workspaces.js +653 -0
- package/dist/workspaces.js.map +1 -0
- package/package.json +115 -0
- package/runtime/config-require.browser.js +4 -0
- package/runtime/config-require.d.ts +2 -0
- package/runtime/config-require.node.js +8 -0
package/dist/job/base.js
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { findJob } from '../jobs.js';
|
|
2
|
+
import { requestWithRetry } from '../http.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for managed GPU jobs with lifecycle helpers
|
|
5
|
+
*/
|
|
6
|
+
export class BaseJob {
|
|
7
|
+
client;
|
|
8
|
+
job;
|
|
9
|
+
static DEFAULT_IMAGE = '';
|
|
10
|
+
static DEFAULT_GPU_TYPE = 'l40s';
|
|
11
|
+
static HEALTH_ENDPOINT = '/';
|
|
12
|
+
static HEALTH_TIMEOUT = 5000;
|
|
13
|
+
/**
|
|
14
|
+
* Consumer-side hostname settling window. The API returns after committing
|
|
15
|
+
* the Cloudflare record; waiting before the first lookup avoids caching a
|
|
16
|
+
* transient NXDOMAIN in recursive resolvers.
|
|
17
|
+
*/
|
|
18
|
+
static DEFAULT_HOSTNAME_SETTLE_DELAY = 15000;
|
|
19
|
+
_baseUrl = null;
|
|
20
|
+
constructor(client, job) {
|
|
21
|
+
this.client = client;
|
|
22
|
+
this.job = job;
|
|
23
|
+
}
|
|
24
|
+
get jobId() {
|
|
25
|
+
return this.job.jobId;
|
|
26
|
+
}
|
|
27
|
+
get hostname() {
|
|
28
|
+
return this.job.hostname;
|
|
29
|
+
}
|
|
30
|
+
get baseUrl() {
|
|
31
|
+
if (!this._baseUrl && this.hostname) {
|
|
32
|
+
this._baseUrl = `http://${this.hostname}`;
|
|
33
|
+
}
|
|
34
|
+
return this._baseUrl || '';
|
|
35
|
+
}
|
|
36
|
+
get authHeaders() {
|
|
37
|
+
return { 'Authorization': `Bearer ${this.client.apiKey}` };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Find an existing running job, optionally filtering by image
|
|
41
|
+
*/
|
|
42
|
+
static async getRunning(client, imageFilter) {
|
|
43
|
+
const jobs = await client.jobs.list('running');
|
|
44
|
+
for (const job of jobs) {
|
|
45
|
+
if (imageFilter && !job.dockerImage.includes(imageFilter)) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
return new this(client, job);
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get a job by ID, hostname, or IP address
|
|
54
|
+
*/
|
|
55
|
+
static async getByInstance(client, instance, state = 'running') {
|
|
56
|
+
const job = await findJob(client.jobs, instance, state);
|
|
57
|
+
if (!job) {
|
|
58
|
+
throw new Error(`No job found matching: ${instance}`);
|
|
59
|
+
}
|
|
60
|
+
return new this(client, job);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a new job
|
|
64
|
+
*/
|
|
65
|
+
static async create(client, options = {}) {
|
|
66
|
+
const { image, gpuType, gpuCount = 1, runtime = 3600, ...kwargs } = options;
|
|
67
|
+
const job = await client.jobs.create({
|
|
68
|
+
image: image || this.DEFAULT_IMAGE,
|
|
69
|
+
gpuType: gpuType || this.DEFAULT_GPU_TYPE,
|
|
70
|
+
gpuCount,
|
|
71
|
+
runtime,
|
|
72
|
+
...kwargs,
|
|
73
|
+
});
|
|
74
|
+
return new this(client, job);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get existing running job or create new one
|
|
78
|
+
*/
|
|
79
|
+
static async getOrCreate(client, options = {}) {
|
|
80
|
+
const { reuse = true, image, ...restOptions } = options;
|
|
81
|
+
if (reuse) {
|
|
82
|
+
const existing = await this.getRunning(client, image || this.DEFAULT_IMAGE);
|
|
83
|
+
if (existing) {
|
|
84
|
+
return existing;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return this.create(client, { image, ...restOptions });
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Refresh job state from API
|
|
91
|
+
*/
|
|
92
|
+
async refresh() {
|
|
93
|
+
this.job = await this.client.jobs.get(this.jobId);
|
|
94
|
+
this._baseUrl = null;
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Wait for job to reach running state via API polling
|
|
99
|
+
*/
|
|
100
|
+
async waitForRunning(timeout = 300000, pollInterval = 5000) {
|
|
101
|
+
const start = Date.now();
|
|
102
|
+
while (Date.now() - start < timeout) {
|
|
103
|
+
await this.refresh();
|
|
104
|
+
if (this.job.state === 'running' && this.hostname) {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
if (['failed', 'cancelled', 'completed', 'terminated'].includes(this.job.state)) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Alias for waitForRunning
|
|
116
|
+
*/
|
|
117
|
+
async waitForHostname(timeout = 300000, pollInterval = 5000) {
|
|
118
|
+
return this.waitForRunning(timeout, pollInterval);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if the service is responding
|
|
122
|
+
*/
|
|
123
|
+
async checkHealth() {
|
|
124
|
+
if (!this.baseUrl || this.job.state !== 'running') {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const Constructor = this.constructor;
|
|
129
|
+
const response = await requestWithRetry({
|
|
130
|
+
method: 'GET',
|
|
131
|
+
url: `${this.baseUrl}${Constructor.HEALTH_ENDPOINT}`,
|
|
132
|
+
headers: this.authHeaders,
|
|
133
|
+
timeout: Constructor.HEALTH_TIMEOUT,
|
|
134
|
+
retries: 3,
|
|
135
|
+
});
|
|
136
|
+
return response.status === 200;
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Wait for an EXISTING running job to respond to health checks
|
|
144
|
+
*/
|
|
145
|
+
async waitExisting(timeout = 15000) {
|
|
146
|
+
await this.refresh();
|
|
147
|
+
if (this.job.state !== 'running' || !this.hostname) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
const start = Date.now();
|
|
151
|
+
while (Date.now() - start < timeout) {
|
|
152
|
+
if (await this.checkHealth()) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Wait for a NEW job to be ready (running state + health check passing)
|
|
161
|
+
*/
|
|
162
|
+
async waitReady(timeout = 300000, pollInterval = 5000, dnsDelay = this.constructor.DEFAULT_HOSTNAME_SETTLE_DELAY) {
|
|
163
|
+
const start = Date.now();
|
|
164
|
+
// Wait for running state via API
|
|
165
|
+
await this.refresh();
|
|
166
|
+
if (['failed', 'cancelled', 'completed', 'terminated'].includes(this.job.state)) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
if (this.job.state !== 'running' || !this.hostname) {
|
|
170
|
+
if (!await this.waitForRunning(timeout, pollInterval)) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// DNS propagation delay
|
|
175
|
+
if (dnsDelay > 0) {
|
|
176
|
+
await new Promise(resolve => setTimeout(resolve, dnsDelay));
|
|
177
|
+
}
|
|
178
|
+
// Job is running, check health
|
|
179
|
+
const elapsed = Date.now() - start;
|
|
180
|
+
const remaining = timeout - elapsed;
|
|
181
|
+
while (remaining > 0) {
|
|
182
|
+
if (await this.checkHealth()) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
186
|
+
const newRemaining = timeout - (Date.now() - start);
|
|
187
|
+
if (newRemaining <= 0)
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Cancel the job
|
|
194
|
+
*/
|
|
195
|
+
async shutdown() {
|
|
196
|
+
return await this.client.jobs.cancel(this.jobId);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Extend job runtime
|
|
200
|
+
*/
|
|
201
|
+
async extend(runtime) {
|
|
202
|
+
this.job = await this.client.jobs.extend(this.jobId, runtime);
|
|
203
|
+
return this;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/job/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ComfyUI job helpers and workflow conversion utilities
|
|
3
|
+
*/
|
|
4
|
+
import type { HyperCLI } from '../client.js';
|
|
5
|
+
import type { Job } from '../jobs.js';
|
|
6
|
+
import { BaseJob } from './base.js';
|
|
7
|
+
/**
|
|
8
|
+
* Load a workflow template JSON in graph format (nodes array, links array).
|
|
9
|
+
*
|
|
10
|
+
* The Python SDK resolves IDs via the comfyui-workflow-templates pip package;
|
|
11
|
+
* Node has no equivalent package, so `templateId` must resolve to a JSON file:
|
|
12
|
+
* an explicit path, `<templateId>.json`, or — when `templatesDir` is given —
|
|
13
|
+
* `<templatesDir>/<templateId>.json` or `<templatesDir>/<templateId>/<templateId>.json`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadTemplate(templateId: string, options?: {
|
|
16
|
+
templatesDir?: string;
|
|
17
|
+
}): Record<string, any>;
|
|
18
|
+
/** Check whether a widget value matches the expected input type. */
|
|
19
|
+
export declare function valueMatchesType(value: any, inputSpec: any): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Expand subgraph/group nodes into their constituent nodes.
|
|
22
|
+
*
|
|
23
|
+
* ComfyUI supports "workflow components" (group nodes) where a subgraph is
|
|
24
|
+
* collapsed into a single node with a UUID type. These must be expanded before
|
|
25
|
+
* the workflow can be executed. Returns a new graph; the input is not modified.
|
|
26
|
+
*/
|
|
27
|
+
export declare function expandSubgraphs(graph: Record<string, any>, debug?: boolean): Record<string, any>;
|
|
28
|
+
export declare const DEFAULT_OBJECT_INFO: Record<string, any>;
|
|
29
|
+
/**
|
|
30
|
+
* Find nodes in API-format workflow by class_type and optional title pattern
|
|
31
|
+
*/
|
|
32
|
+
export declare function findNodes(workflow: Record<string, any>, classType: string, titleContains?: string): Array<[string, any]>;
|
|
33
|
+
/**
|
|
34
|
+
* Find first node matching class_type and optional title pattern
|
|
35
|
+
*/
|
|
36
|
+
export declare function findNode(workflow: Record<string, any>, classType: string, titleContains?: string): [string, any] | [null, null];
|
|
37
|
+
/**
|
|
38
|
+
* Apply parameters to workflow nodes
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyParams(workflow: Record<string, any>, params: Record<string, any>): Record<string, any>;
|
|
41
|
+
/**
|
|
42
|
+
* Convert ComfyUI graph format (from UI) to API format (for /prompt endpoint).
|
|
43
|
+
*/
|
|
44
|
+
export declare function graphToApi(graph: any, objectInfo?: Record<string, any>, debug?: boolean): Record<string, any>;
|
|
45
|
+
/**
|
|
46
|
+
* Apply graph modes (enable/disable nodes)
|
|
47
|
+
*/
|
|
48
|
+
export declare function applyGraphModes(graph: any, nodesConfig: Record<string, any>): any;
|
|
49
|
+
/**
|
|
50
|
+
* ComfyUI-specific job with workflow execution helpers
|
|
51
|
+
*/
|
|
52
|
+
export declare class ComfyUIJob extends BaseJob {
|
|
53
|
+
static DEFAULT_IMAGE: string;
|
|
54
|
+
static DEFAULT_GPU_TYPE: string;
|
|
55
|
+
static HEALTH_ENDPOINT: string;
|
|
56
|
+
static COMFYUI_PORT: number;
|
|
57
|
+
private _objectInfo;
|
|
58
|
+
private _jobToken;
|
|
59
|
+
private _useLb;
|
|
60
|
+
useAuth: boolean;
|
|
61
|
+
template: string | null;
|
|
62
|
+
constructor(client: HyperCLI, job: Job, template?: string, useLb?: boolean, useAuth?: boolean);
|
|
63
|
+
get useLb(): boolean;
|
|
64
|
+
set useLb(value: boolean);
|
|
65
|
+
get baseUrl(): string;
|
|
66
|
+
get authHeaders(): Record<string, string>;
|
|
67
|
+
jobToken(): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Create a new ComfyUI job configured for a specific template
|
|
70
|
+
*/
|
|
71
|
+
static createForTemplate(client: HyperCLI, template: string, options?: {
|
|
72
|
+
gpuType?: string;
|
|
73
|
+
gpuCount?: number;
|
|
74
|
+
runtime?: number;
|
|
75
|
+
lb?: number;
|
|
76
|
+
auth?: boolean;
|
|
77
|
+
[key: string]: any;
|
|
78
|
+
}): Promise<ComfyUIJob>;
|
|
79
|
+
/**
|
|
80
|
+
* Get object_info from ComfyUI (cached)
|
|
81
|
+
*/
|
|
82
|
+
getObjectInfo(refresh?: boolean): Promise<Record<string, any>>;
|
|
83
|
+
/**
|
|
84
|
+
* Convert graph format workflow to API format
|
|
85
|
+
*/
|
|
86
|
+
convertWorkflow(graph: any, debug?: boolean): Promise<Record<string, any>>;
|
|
87
|
+
/**
|
|
88
|
+
* Connect to a specific ComfyUI instance by job ID or hostname.
|
|
89
|
+
*/
|
|
90
|
+
static getInstance(client: HyperCLI, instance: string, options?: {
|
|
91
|
+
useLb?: boolean;
|
|
92
|
+
useAuth?: boolean;
|
|
93
|
+
}): Promise<ComfyUIJob>;
|
|
94
|
+
/**
|
|
95
|
+
* Get existing running job or create new one for a template.
|
|
96
|
+
*
|
|
97
|
+
* If reuse is true and a ComfyUI job is already running, it will be reused
|
|
98
|
+
* (note: the existing job may have different models loaded).
|
|
99
|
+
*/
|
|
100
|
+
static getOrCreateForTemplate(client: HyperCLI, template: string, options?: {
|
|
101
|
+
gpuType?: string;
|
|
102
|
+
gpuCount?: number;
|
|
103
|
+
runtime?: number;
|
|
104
|
+
reuse?: boolean;
|
|
105
|
+
lb?: number;
|
|
106
|
+
auth?: boolean;
|
|
107
|
+
[key: string]: any;
|
|
108
|
+
}): Promise<ComfyUIJob>;
|
|
109
|
+
/**
|
|
110
|
+
* Load workflow template JSON in graph format.
|
|
111
|
+
*
|
|
112
|
+
* Unlike the Python SDK, Node has no comfyui-workflow-templates package, so
|
|
113
|
+
* the ID must resolve to a JSON file (see the module-level loadTemplate).
|
|
114
|
+
*/
|
|
115
|
+
loadTemplate(templateId: string, options?: {
|
|
116
|
+
templatesDir?: string;
|
|
117
|
+
}): Record<string, any>;
|
|
118
|
+
private comfyJson;
|
|
119
|
+
private resolvedAuthHeaders;
|
|
120
|
+
private static isTransientNetworkError;
|
|
121
|
+
/**
|
|
122
|
+
* Get set of available node class_types from ComfyUI's /object_info.
|
|
123
|
+
*/
|
|
124
|
+
getAvailableNodeTypes(): Promise<Set<string>>;
|
|
125
|
+
/**
|
|
126
|
+
* Extract all class_type values from a workflow (API format or UI format).
|
|
127
|
+
*/
|
|
128
|
+
getWorkflowNodeTypes(workflow: Record<string, any>): Set<string>;
|
|
129
|
+
/**
|
|
130
|
+
* Find node types in workflow that aren't available in ComfyUI.
|
|
131
|
+
*/
|
|
132
|
+
getMissingNodeTypes(workflow: Record<string, any>): Promise<Set<string>>;
|
|
133
|
+
/**
|
|
134
|
+
* Get node class_type to package mappings from ComfyUI Manager.
|
|
135
|
+
*
|
|
136
|
+
* Returns a mapping of package URL to [node_list, metadata].
|
|
137
|
+
*/
|
|
138
|
+
getNodeMappings(): Promise<Record<string, any>>;
|
|
139
|
+
/**
|
|
140
|
+
* Look up which packages provide the given node types.
|
|
141
|
+
*
|
|
142
|
+
* Returns a mapping of package URL to the node types it provides.
|
|
143
|
+
*/
|
|
144
|
+
lookupPackagesForNodes(nodeTypes: Iterable<string>): Promise<Record<string, string[]>>;
|
|
145
|
+
/**
|
|
146
|
+
* Get the full list of available custom node packages.
|
|
147
|
+
*/
|
|
148
|
+
getCustomNodeList(): Promise<Record<string, any>>;
|
|
149
|
+
/**
|
|
150
|
+
* Install custom node packages by their repository URLs. Returns
|
|
151
|
+
* { queued, failed, notFound } package titles/URLs.
|
|
152
|
+
*/
|
|
153
|
+
installPackagesByUrl(packageUrls: string[]): Promise<{
|
|
154
|
+
queued: string[];
|
|
155
|
+
failed: string[];
|
|
156
|
+
notFound: string[];
|
|
157
|
+
}>;
|
|
158
|
+
/**
|
|
159
|
+
* Automatically install missing custom nodes for a workflow.
|
|
160
|
+
*/
|
|
161
|
+
autoInstallWorkflowNodes(workflow: Record<string, any>, options?: {
|
|
162
|
+
wait?: boolean;
|
|
163
|
+
reboot?: boolean;
|
|
164
|
+
}): Promise<{
|
|
165
|
+
missingNodes: string[];
|
|
166
|
+
packagesToInstall: Record<string, string[]>;
|
|
167
|
+
installed: string[];
|
|
168
|
+
failed: string[];
|
|
169
|
+
notFoundNodes: string[];
|
|
170
|
+
}>;
|
|
171
|
+
/**
|
|
172
|
+
* Get list of installed custom nodes from ComfyUI Manager.
|
|
173
|
+
*/
|
|
174
|
+
getInstalledNodes(): Promise<Record<string, any>>;
|
|
175
|
+
/**
|
|
176
|
+
* Install a custom node package via ComfyUI Manager.
|
|
177
|
+
* Returns true if installation was queued successfully.
|
|
178
|
+
*/
|
|
179
|
+
installNode(nodeName: string): Promise<boolean>;
|
|
180
|
+
/**
|
|
181
|
+
* Install multiple custom node packages. Returns { queued, failed }.
|
|
182
|
+
*/
|
|
183
|
+
installNodes(nodeNames: string[], options?: {
|
|
184
|
+
wait?: boolean;
|
|
185
|
+
}): Promise<{
|
|
186
|
+
queued: string[];
|
|
187
|
+
failed: string[];
|
|
188
|
+
}>;
|
|
189
|
+
/**
|
|
190
|
+
* Reboot ComfyUI server (required after installing nodes).
|
|
191
|
+
*/
|
|
192
|
+
reboot(options?: {
|
|
193
|
+
waitReady?: boolean;
|
|
194
|
+
timeoutSeconds?: number;
|
|
195
|
+
}): Promise<boolean>;
|
|
196
|
+
/**
|
|
197
|
+
* Ensure custom nodes are installed, installing missing ones. Returns
|
|
198
|
+
* { alreadyInstalled, installed, failed }.
|
|
199
|
+
*/
|
|
200
|
+
ensureNodesInstalled(nodeNames: string[]): Promise<{
|
|
201
|
+
alreadyInstalled: string[];
|
|
202
|
+
installed: string[];
|
|
203
|
+
failed: string[];
|
|
204
|
+
}>;
|
|
205
|
+
/**
|
|
206
|
+
* Submit workflow to ComfyUI, returns prompt_id.
|
|
207
|
+
* Retries on connection errors including DNS failures.
|
|
208
|
+
*/
|
|
209
|
+
queuePrompt(workflow: Record<string, any>, retries?: number): Promise<string>;
|
|
210
|
+
/**
|
|
211
|
+
* Get execution history for a prompt. Retries on connection errors including
|
|
212
|
+
* DNS failures.
|
|
213
|
+
*/
|
|
214
|
+
getHistory(promptId: string, retries?: number): Promise<Record<string, any> | null>;
|
|
215
|
+
/**
|
|
216
|
+
* Wait for prompt execution to complete, returns the history entry.
|
|
217
|
+
*/
|
|
218
|
+
waitForCompletion(promptId: string, options?: {
|
|
219
|
+
timeoutSeconds?: number;
|
|
220
|
+
pollIntervalSeconds?: number;
|
|
221
|
+
}): Promise<Record<string, any>>;
|
|
222
|
+
/**
|
|
223
|
+
* Download output file from ComfyUI server.
|
|
224
|
+
* If the file already exists, increments the name (file_1.png, file_2.png, etc.)
|
|
225
|
+
*/
|
|
226
|
+
downloadOutput(filename: string, options?: {
|
|
227
|
+
outputDir?: string;
|
|
228
|
+
subfolder?: string;
|
|
229
|
+
retries?: number;
|
|
230
|
+
}): Promise<string>;
|
|
231
|
+
/**
|
|
232
|
+
* Run a workflow and wait for completion.
|
|
233
|
+
*/
|
|
234
|
+
run(workflow: Record<string, any>, options?: {
|
|
235
|
+
timeoutSeconds?: number;
|
|
236
|
+
convert?: boolean;
|
|
237
|
+
}): Promise<Record<string, any>>;
|
|
238
|
+
/**
|
|
239
|
+
* Run a template workflow with parameter overrides.
|
|
240
|
+
*/
|
|
241
|
+
runTemplate(templateId: string, options?: {
|
|
242
|
+
timeoutSeconds?: number;
|
|
243
|
+
templatesDir?: string;
|
|
244
|
+
params?: Record<string, any>;
|
|
245
|
+
}): Promise<Record<string, any>>;
|
|
246
|
+
/**
|
|
247
|
+
* Extract output file info from a history entry (images, videos, gifs).
|
|
248
|
+
*/
|
|
249
|
+
getOutputImages(history: Record<string, any>): Array<Record<string, any>>;
|
|
250
|
+
/**
|
|
251
|
+
* Upload image to ComfyUI server
|
|
252
|
+
*/
|
|
253
|
+
uploadImage(filePath: string, filename?: string): Promise<string>;
|
|
254
|
+
/**
|
|
255
|
+
* Upload audio to ComfyUI server
|
|
256
|
+
*/
|
|
257
|
+
uploadAudio(filePath: string, filename?: string): Promise<string>;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=comfyui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comfyui.d.ts","sourceRoot":"","sources":["../../src/job/comfyui.ts"],"names":[],"mappings":"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"}
|