@hypercli.com/sdk 2026.4.13-3 → 2026.4.13-4
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/dist/agent.d.ts +350 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +620 -0
- package/dist/agent.js.map +1 -0
- package/dist/agents.d.ts +433 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +1140 -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.d.ts +25 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +33 -0
- package/dist/browser.js.map +1 -0
- package/dist/client.d.ts +67 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +100 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +235 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -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/gateway.d.ts +2 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +2 -0
- package/dist/gateway.js.map +1 -0
- package/dist/http.d.ts +42 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +238 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -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/job/base.d.ts +80 -0
- package/dist/job/base.d.ts.map +1 -0
- package/dist/job/base.js +200 -0
- package/dist/job/base.js.map +1 -0
- package/dist/job/comfyui.d.ts +75 -0
- package/dist/job/comfyui.d.ts.map +1 -0
- package/dist/job/comfyui.js +454 -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/jobs.d.ts +153 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +352 -0
- package/dist/jobs.js.map +1 -0
- package/dist/keys.d.ts +83 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +69 -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/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/gateway.d.ts +269 -0
- package/dist/openclaw/gateway.d.ts.map +1 -0
- package/dist/openclaw/gateway.js +2021 -0
- package/dist/openclaw/gateway.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/user.d.ts +49 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +57 -0
- package/dist/user.js.map +1 -0
- package/dist/voice.d.ts +31 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +36 -0
- package/dist/voice.js.map +1 -0
- package/dist/x402.d.ts +79 -0
- package/dist/x402.d.ts.map +1 -0
- package/dist/x402.js +295 -0
- package/dist/x402.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base job class for GPU workloads
|
|
3
|
+
*/
|
|
4
|
+
import type { HyperCLI } from '../client.js';
|
|
5
|
+
import type { Job } from '../jobs.js';
|
|
6
|
+
export interface BaseJobOptions {
|
|
7
|
+
image?: string;
|
|
8
|
+
gpuType?: string;
|
|
9
|
+
gpuCount?: number;
|
|
10
|
+
runtime?: number;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Base class for managed GPU jobs with lifecycle helpers
|
|
15
|
+
*/
|
|
16
|
+
export declare class BaseJob {
|
|
17
|
+
client: HyperCLI;
|
|
18
|
+
job: Job;
|
|
19
|
+
static DEFAULT_IMAGE: string;
|
|
20
|
+
static DEFAULT_GPU_TYPE: string;
|
|
21
|
+
static HEALTH_ENDPOINT: string;
|
|
22
|
+
static HEALTH_TIMEOUT: number;
|
|
23
|
+
protected _baseUrl: string | null;
|
|
24
|
+
constructor(client: HyperCLI, job: Job);
|
|
25
|
+
get jobId(): string;
|
|
26
|
+
get hostname(): string | null;
|
|
27
|
+
get baseUrl(): string;
|
|
28
|
+
get authHeaders(): Record<string, string>;
|
|
29
|
+
/**
|
|
30
|
+
* Find an existing running job, optionally filtering by image
|
|
31
|
+
*/
|
|
32
|
+
static getRunning<T extends typeof BaseJob>(this: T, client: HyperCLI, imageFilter?: string): Promise<InstanceType<T> | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Get a job by ID, hostname, or IP address
|
|
35
|
+
*/
|
|
36
|
+
static getByInstance<T extends typeof BaseJob>(this: T, client: HyperCLI, instance: string, state?: string): Promise<InstanceType<T>>;
|
|
37
|
+
/**
|
|
38
|
+
* Create a new job
|
|
39
|
+
*/
|
|
40
|
+
static create<T extends typeof BaseJob>(this: T, client: HyperCLI, options?: BaseJobOptions): Promise<InstanceType<T>>;
|
|
41
|
+
/**
|
|
42
|
+
* Get existing running job or create new one
|
|
43
|
+
*/
|
|
44
|
+
static getOrCreate<T extends typeof BaseJob>(this: T, client: HyperCLI, options?: BaseJobOptions & {
|
|
45
|
+
reuse?: boolean;
|
|
46
|
+
}): Promise<InstanceType<T>>;
|
|
47
|
+
/**
|
|
48
|
+
* Refresh job state from API
|
|
49
|
+
*/
|
|
50
|
+
refresh(): Promise<this>;
|
|
51
|
+
/**
|
|
52
|
+
* Wait for job to reach running state via API polling
|
|
53
|
+
*/
|
|
54
|
+
waitForRunning(timeout?: number, pollInterval?: number): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Alias for waitForRunning
|
|
57
|
+
*/
|
|
58
|
+
waitForHostname(timeout?: number, pollInterval?: number): Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* Check if the service is responding
|
|
61
|
+
*/
|
|
62
|
+
checkHealth(): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Wait for an EXISTING running job to respond to health checks
|
|
65
|
+
*/
|
|
66
|
+
waitExisting(timeout?: number): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Wait for a NEW job to be ready (running state + health check passing)
|
|
69
|
+
*/
|
|
70
|
+
waitReady(timeout?: number, pollInterval?: number, dnsDelay?: number): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Cancel the job
|
|
73
|
+
*/
|
|
74
|
+
shutdown(): Promise<any>;
|
|
75
|
+
/**
|
|
76
|
+
* Extend job runtime
|
|
77
|
+
*/
|
|
78
|
+
extend(runtime: number): Promise<this>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/job/base.ts"],"names":[],"mappings":"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"}
|
package/dist/job/base.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
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
|
+
_baseUrl = null;
|
|
14
|
+
constructor(client, job) {
|
|
15
|
+
this.client = client;
|
|
16
|
+
this.job = job;
|
|
17
|
+
}
|
|
18
|
+
get jobId() {
|
|
19
|
+
return this.job.jobId;
|
|
20
|
+
}
|
|
21
|
+
get hostname() {
|
|
22
|
+
return this.job.hostname;
|
|
23
|
+
}
|
|
24
|
+
get baseUrl() {
|
|
25
|
+
if (!this._baseUrl && this.hostname) {
|
|
26
|
+
this._baseUrl = `http://${this.hostname}`;
|
|
27
|
+
}
|
|
28
|
+
return this._baseUrl || '';
|
|
29
|
+
}
|
|
30
|
+
get authHeaders() {
|
|
31
|
+
return { 'Authorization': `Bearer ${this.client.apiKey}` };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Find an existing running job, optionally filtering by image
|
|
35
|
+
*/
|
|
36
|
+
static async getRunning(client, imageFilter) {
|
|
37
|
+
const jobs = await client.jobs.list('running');
|
|
38
|
+
for (const job of jobs) {
|
|
39
|
+
if (imageFilter && !job.dockerImage.includes(imageFilter)) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
return new this(client, job);
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a job by ID, hostname, or IP address
|
|
48
|
+
*/
|
|
49
|
+
static async getByInstance(client, instance, state = 'running') {
|
|
50
|
+
const job = await findJob(client.jobs, instance, state);
|
|
51
|
+
if (!job) {
|
|
52
|
+
throw new Error(`No job found matching: ${instance}`);
|
|
53
|
+
}
|
|
54
|
+
return new this(client, job);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a new job
|
|
58
|
+
*/
|
|
59
|
+
static async create(client, options = {}) {
|
|
60
|
+
const { image, gpuType, gpuCount = 1, runtime = 3600, ...kwargs } = options;
|
|
61
|
+
const job = await client.jobs.create({
|
|
62
|
+
image: image || this.DEFAULT_IMAGE,
|
|
63
|
+
gpuType: gpuType || this.DEFAULT_GPU_TYPE,
|
|
64
|
+
gpuCount,
|
|
65
|
+
runtime,
|
|
66
|
+
...kwargs,
|
|
67
|
+
});
|
|
68
|
+
return new this(client, job);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get existing running job or create new one
|
|
72
|
+
*/
|
|
73
|
+
static async getOrCreate(client, options = {}) {
|
|
74
|
+
const { reuse = true, image, ...restOptions } = options;
|
|
75
|
+
if (reuse) {
|
|
76
|
+
const existing = await this.getRunning(client, image || this.DEFAULT_IMAGE);
|
|
77
|
+
if (existing) {
|
|
78
|
+
return existing;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return this.create(client, { image, ...restOptions });
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Refresh job state from API
|
|
85
|
+
*/
|
|
86
|
+
async refresh() {
|
|
87
|
+
this.job = await this.client.jobs.get(this.jobId);
|
|
88
|
+
this._baseUrl = null;
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Wait for job to reach running state via API polling
|
|
93
|
+
*/
|
|
94
|
+
async waitForRunning(timeout = 300000, pollInterval = 5000) {
|
|
95
|
+
const start = Date.now();
|
|
96
|
+
while (Date.now() - start < timeout) {
|
|
97
|
+
await this.refresh();
|
|
98
|
+
if (this.job.state === 'running' && this.hostname) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
if (['failed', 'cancelled', 'completed', 'terminated'].includes(this.job.state)) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Alias for waitForRunning
|
|
110
|
+
*/
|
|
111
|
+
async waitForHostname(timeout = 300000, pollInterval = 5000) {
|
|
112
|
+
return this.waitForRunning(timeout, pollInterval);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if the service is responding
|
|
116
|
+
*/
|
|
117
|
+
async checkHealth() {
|
|
118
|
+
if (!this.baseUrl || this.job.state !== 'running') {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const Constructor = this.constructor;
|
|
123
|
+
const response = await requestWithRetry({
|
|
124
|
+
method: 'GET',
|
|
125
|
+
url: `${this.baseUrl}${Constructor.HEALTH_ENDPOINT}`,
|
|
126
|
+
headers: this.authHeaders,
|
|
127
|
+
timeout: Constructor.HEALTH_TIMEOUT,
|
|
128
|
+
retries: 3,
|
|
129
|
+
});
|
|
130
|
+
return response.status === 200;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Wait for an EXISTING running job to respond to health checks
|
|
138
|
+
*/
|
|
139
|
+
async waitExisting(timeout = 15000) {
|
|
140
|
+
await this.refresh();
|
|
141
|
+
if (this.job.state !== 'running' || !this.hostname) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const start = Date.now();
|
|
145
|
+
while (Date.now() - start < timeout) {
|
|
146
|
+
if (await this.checkHealth()) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Wait for a NEW job to be ready (running state + health check passing)
|
|
155
|
+
*/
|
|
156
|
+
async waitReady(timeout = 300000, pollInterval = 5000, dnsDelay = 15000) {
|
|
157
|
+
const start = Date.now();
|
|
158
|
+
// Wait for running state via API
|
|
159
|
+
await this.refresh();
|
|
160
|
+
if (['failed', 'cancelled', 'completed', 'terminated'].includes(this.job.state)) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
if (this.job.state !== 'running' || !this.hostname) {
|
|
164
|
+
if (!await this.waitForRunning(timeout, pollInterval)) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// DNS propagation delay
|
|
169
|
+
if (dnsDelay > 0) {
|
|
170
|
+
await new Promise(resolve => setTimeout(resolve, dnsDelay));
|
|
171
|
+
}
|
|
172
|
+
// Job is running, check health
|
|
173
|
+
const elapsed = Date.now() - start;
|
|
174
|
+
const remaining = timeout - elapsed;
|
|
175
|
+
while (remaining > 0) {
|
|
176
|
+
if (await this.checkHealth()) {
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
180
|
+
const newRemaining = timeout - (Date.now() - start);
|
|
181
|
+
if (newRemaining <= 0)
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Cancel the job
|
|
188
|
+
*/
|
|
189
|
+
async shutdown() {
|
|
190
|
+
return await this.client.jobs.cancel(this.jobId);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Extend job runtime
|
|
194
|
+
*/
|
|
195
|
+
async extend(runtime) {
|
|
196
|
+
this.job = await this.client.jobs.extend(this.jobId, runtime);
|
|
197
|
+
return this;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# 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,75 @@
|
|
|
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
|
+
export declare const DEFAULT_OBJECT_INFO: Record<string, any>;
|
|
8
|
+
/**
|
|
9
|
+
* Find nodes in API-format workflow by class_type and optional title pattern
|
|
10
|
+
*/
|
|
11
|
+
export declare function findNodes(workflow: Record<string, any>, classType: string, titleContains?: string): Array<[string, any]>;
|
|
12
|
+
/**
|
|
13
|
+
* Find first node matching class_type and optional title pattern
|
|
14
|
+
*/
|
|
15
|
+
export declare function findNode(workflow: Record<string, any>, classType: string, titleContains?: string): [string, any] | [null, null];
|
|
16
|
+
/**
|
|
17
|
+
* Apply parameters to workflow nodes
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyParams(workflow: Record<string, any>, params: Record<string, any>): Record<string, any>;
|
|
20
|
+
/**
|
|
21
|
+
* Convert ComfyUI graph format to API format
|
|
22
|
+
*/
|
|
23
|
+
export declare function graphToApi(graph: any, objectInfo?: Record<string, any>, _debug?: boolean): Record<string, any>;
|
|
24
|
+
/**
|
|
25
|
+
* Apply graph modes (enable/disable nodes)
|
|
26
|
+
*/
|
|
27
|
+
export declare function applyGraphModes(graph: any, nodesConfig: Record<string, any>): any;
|
|
28
|
+
/**
|
|
29
|
+
* ComfyUI-specific job with workflow execution helpers
|
|
30
|
+
*/
|
|
31
|
+
export declare class ComfyUIJob extends BaseJob {
|
|
32
|
+
static DEFAULT_IMAGE: string;
|
|
33
|
+
static DEFAULT_GPU_TYPE: string;
|
|
34
|
+
static HEALTH_ENDPOINT: string;
|
|
35
|
+
static COMFYUI_PORT: number;
|
|
36
|
+
private _objectInfo;
|
|
37
|
+
private _jobToken;
|
|
38
|
+
private _useLb;
|
|
39
|
+
useAuth: boolean;
|
|
40
|
+
template: string | null;
|
|
41
|
+
constructor(client: HyperCLI, job: Job, template?: string, useLb?: boolean, useAuth?: boolean);
|
|
42
|
+
get useLb(): boolean;
|
|
43
|
+
set useLb(value: boolean);
|
|
44
|
+
get baseUrl(): string;
|
|
45
|
+
get authHeaders(): Record<string, string>;
|
|
46
|
+
jobToken(): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new ComfyUI job configured for a specific template
|
|
49
|
+
*/
|
|
50
|
+
static createForTemplate(client: HyperCLI, template: string, options?: {
|
|
51
|
+
gpuType?: string;
|
|
52
|
+
gpuCount?: number;
|
|
53
|
+
runtime?: number;
|
|
54
|
+
lb?: number;
|
|
55
|
+
auth?: boolean;
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
}): Promise<ComfyUIJob>;
|
|
58
|
+
/**
|
|
59
|
+
* Get object_info from ComfyUI (cached)
|
|
60
|
+
*/
|
|
61
|
+
getObjectInfo(refresh?: boolean): Promise<Record<string, any>>;
|
|
62
|
+
/**
|
|
63
|
+
* Convert graph format workflow to API format
|
|
64
|
+
*/
|
|
65
|
+
convertWorkflow(graph: any, debug?: boolean): Promise<Record<string, any>>;
|
|
66
|
+
/**
|
|
67
|
+
* Upload image to ComfyUI server
|
|
68
|
+
*/
|
|
69
|
+
uploadImage(filePath: string, filename?: string): Promise<string>;
|
|
70
|
+
/**
|
|
71
|
+
* Upload audio to ComfyUI server
|
|
72
|
+
*/
|
|
73
|
+
uploadAudio(filePath: string, filename?: string): Promise<string>;
|
|
74
|
+
}
|
|
75
|
+
//# 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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"}
|