@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
package/dist/keys.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export const API_KEY_BASELINE_FAMILIES = [
|
|
2
|
+
{ key: 'api', label: 'API Keys', allowed: ['none', 'self', '*'] },
|
|
3
|
+
{ key: 'user', label: 'Profile', allowed: ['none', 'self', '*'] },
|
|
4
|
+
{ key: 'jobs', label: 'Jobs', allowed: ['none', 'self', '*'] },
|
|
5
|
+
{ key: 'renders', label: 'Renders', allowed: ['none', 'self', '*'] },
|
|
6
|
+
{ key: 'files', label: 'Files', allowed: ['none', 'self', '*'] },
|
|
7
|
+
{ key: 'agents', label: 'Agents', allowed: ['none', 'self', '*'] },
|
|
8
|
+
{ key: 'models', label: 'Models', allowed: ['none', '*'] },
|
|
9
|
+
{ key: 'voice', label: 'Voice', allowed: ['none', '*'] },
|
|
10
|
+
{ key: 'flow', label: 'Flows', allowed: ['none', '*'] },
|
|
11
|
+
];
|
|
12
|
+
function apiKeyFromDict(data) {
|
|
13
|
+
return {
|
|
14
|
+
keyId: data.key_id || '',
|
|
15
|
+
name: data.name || '',
|
|
16
|
+
tags: Array.isArray(data.tags) ? data.tags : [],
|
|
17
|
+
apiKey: data.api_key || null,
|
|
18
|
+
apiKeyPreview: data.api_key_preview || null,
|
|
19
|
+
last4: data.last4 || null,
|
|
20
|
+
isActive: data.is_active !== false,
|
|
21
|
+
createdAt: data.created_at || '',
|
|
22
|
+
lastUsedAt: data.last_used_at || null,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export class KeysAPI {
|
|
26
|
+
http;
|
|
27
|
+
constructor(http) {
|
|
28
|
+
this.http = http;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a new API key
|
|
32
|
+
*/
|
|
33
|
+
async create(name = 'default', tags) {
|
|
34
|
+
const payload = { name };
|
|
35
|
+
if (tags !== undefined) {
|
|
36
|
+
payload.tags = tags;
|
|
37
|
+
}
|
|
38
|
+
const data = await this.http.post('/api/keys', payload);
|
|
39
|
+
return apiKeyFromDict(data);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* List all API keys (masked)
|
|
43
|
+
*/
|
|
44
|
+
async list() {
|
|
45
|
+
const data = await this.http.get('/api/keys');
|
|
46
|
+
return (data || []).map(apiKeyFromDict);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get a specific API key (masked)
|
|
50
|
+
*/
|
|
51
|
+
async get(keyId) {
|
|
52
|
+
const data = await this.http.get(`/api/keys/${keyId}`);
|
|
53
|
+
return apiKeyFromDict(data);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Deactivate an API key (irreversible)
|
|
57
|
+
*/
|
|
58
|
+
async disable(keyId) {
|
|
59
|
+
return await this.http.delete(`/api/keys/${keyId}`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Rename an API key
|
|
63
|
+
*/
|
|
64
|
+
async rename(keyId, name) {
|
|
65
|
+
const data = await this.http.patch(`/api/keys/${keyId}`, { name });
|
|
66
|
+
return apiKeyFromDict(data);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=keys.js.map
|
package/dist/keys.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
package/dist/logs.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { HyperCLI } from './client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetch logs via REST API (one-time call)
|
|
4
|
+
*/
|
|
5
|
+
export declare function fetchLogs(client: HyperCLI, jobId: string, tail?: number): Promise<string[]>;
|
|
6
|
+
/**
|
|
7
|
+
* Async log streamer - WebSocket streaming with optional initial fetch
|
|
8
|
+
*/
|
|
9
|
+
export declare class LogStream {
|
|
10
|
+
private client;
|
|
11
|
+
private jobId;
|
|
12
|
+
private jobKey?;
|
|
13
|
+
private fetchInitial;
|
|
14
|
+
private maxInitialLines;
|
|
15
|
+
private maxBuffer;
|
|
16
|
+
private ws;
|
|
17
|
+
private buffer;
|
|
18
|
+
private initialFetched;
|
|
19
|
+
private connected;
|
|
20
|
+
private closed;
|
|
21
|
+
constructor(client: HyperCLI, jobId: string, jobKey?: string | undefined, fetchInitial?: boolean, maxInitialLines?: number, maxBuffer?: number);
|
|
22
|
+
get status(): 'disconnected' | 'connecting' | 'connected' | 'closed';
|
|
23
|
+
/**
|
|
24
|
+
* Connect to log stream. Returns initial logs if fetchInitial=true.
|
|
25
|
+
*/
|
|
26
|
+
connect(): Promise<string[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Close the WebSocket connection
|
|
29
|
+
*/
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Get current buffer contents (bounded, oldest may be dropped)
|
|
33
|
+
*/
|
|
34
|
+
getBuffer(): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Clear the buffer
|
|
37
|
+
*/
|
|
38
|
+
clearBuffer(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Async iterate over NEW log lines from WebSocket
|
|
41
|
+
*/
|
|
42
|
+
[Symbol.asyncIterator](): AsyncGenerator<string>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Stream logs until job reaches a terminal state
|
|
46
|
+
*/
|
|
47
|
+
export declare function streamLogs(client: HyperCLI, jobId: string, onLine: (line: string) => void, options?: {
|
|
48
|
+
untilState?: Set<string>;
|
|
49
|
+
pollStateInterval?: number;
|
|
50
|
+
fetchInitial?: boolean;
|
|
51
|
+
fetchFinal?: boolean;
|
|
52
|
+
maxInitialLines?: number;
|
|
53
|
+
}): Promise<void>;
|
|
54
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED;;GAEG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,SAAS;IAZnB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAGb,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,YAAY,GAAE,OAAc,EAC5B,eAAe,GAAE,MAAkC,EACnD,SAAS,GAAE,MAA2B;IAGhD,IAAI,MAAM,IAAI,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAKnE;IAED;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAsDlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC;CAqExD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAoEf"}
|
package/dist/logs.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async log streaming for jobs using WebSocket
|
|
3
|
+
*/
|
|
4
|
+
import WebSocket from 'ws';
|
|
5
|
+
import { getWsUrl, WS_LOGS_PATH } from './config.js';
|
|
6
|
+
// Default limits to prevent memory blowup
|
|
7
|
+
const DEFAULT_MAX_INITIAL_LINES = 1000;
|
|
8
|
+
const DEFAULT_MAX_BUFFER = 5000;
|
|
9
|
+
/**
|
|
10
|
+
* Fetch logs via REST API (one-time call)
|
|
11
|
+
*/
|
|
12
|
+
export async function fetchLogs(client, jobId, tail) {
|
|
13
|
+
try {
|
|
14
|
+
const logs = await client.jobs.logs(jobId);
|
|
15
|
+
if (!logs) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
const lines = logs.trim().split('\n');
|
|
19
|
+
if (tail && lines.length > tail) {
|
|
20
|
+
return lines.slice(-tail);
|
|
21
|
+
}
|
|
22
|
+
return lines;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Async log streamer - WebSocket streaming with optional initial fetch
|
|
30
|
+
*/
|
|
31
|
+
export class LogStream {
|
|
32
|
+
client;
|
|
33
|
+
jobId;
|
|
34
|
+
jobKey;
|
|
35
|
+
fetchInitial;
|
|
36
|
+
maxInitialLines;
|
|
37
|
+
maxBuffer;
|
|
38
|
+
ws = null;
|
|
39
|
+
buffer = [];
|
|
40
|
+
initialFetched = false;
|
|
41
|
+
connected = false;
|
|
42
|
+
closed = false;
|
|
43
|
+
constructor(client, jobId, jobKey, fetchInitial = true, maxInitialLines = DEFAULT_MAX_INITIAL_LINES, maxBuffer = DEFAULT_MAX_BUFFER) {
|
|
44
|
+
this.client = client;
|
|
45
|
+
this.jobId = jobId;
|
|
46
|
+
this.jobKey = jobKey;
|
|
47
|
+
this.fetchInitial = fetchInitial;
|
|
48
|
+
this.maxInitialLines = maxInitialLines;
|
|
49
|
+
this.maxBuffer = maxBuffer;
|
|
50
|
+
}
|
|
51
|
+
get status() {
|
|
52
|
+
if (this.closed)
|
|
53
|
+
return 'closed';
|
|
54
|
+
if (this.connected)
|
|
55
|
+
return 'connected';
|
|
56
|
+
if (this.ws)
|
|
57
|
+
return 'connecting';
|
|
58
|
+
return 'disconnected';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Connect to log stream. Returns initial logs if fetchInitial=true.
|
|
62
|
+
*/
|
|
63
|
+
async connect() {
|
|
64
|
+
if (this.closed) {
|
|
65
|
+
throw new Error('LogStream is closed');
|
|
66
|
+
}
|
|
67
|
+
const initialLines = [];
|
|
68
|
+
// Fetch initial logs ONCE (bounded)
|
|
69
|
+
if (this.fetchInitial && !this.initialFetched) {
|
|
70
|
+
const logs = await fetchLogs(this.client, this.jobId, this.maxInitialLines);
|
|
71
|
+
for (const line of logs) {
|
|
72
|
+
this.buffer.push(line);
|
|
73
|
+
if (this.buffer.length > this.maxBuffer) {
|
|
74
|
+
this.buffer.shift(); // Remove oldest
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
initialLines.push(...logs);
|
|
78
|
+
this.initialFetched = true;
|
|
79
|
+
}
|
|
80
|
+
// Get job_key if not provided
|
|
81
|
+
if (!this.jobKey) {
|
|
82
|
+
const job = await this.client.jobs.get(this.jobId);
|
|
83
|
+
this.jobKey = job.jobKey;
|
|
84
|
+
}
|
|
85
|
+
// Connect WebSocket
|
|
86
|
+
if (this.jobKey && !this.ws) {
|
|
87
|
+
const wsUrl = getWsUrl();
|
|
88
|
+
const fullUrl = `${wsUrl}${WS_LOGS_PATH}/${this.jobKey}`;
|
|
89
|
+
await new Promise((resolve, reject) => {
|
|
90
|
+
const timeout = setTimeout(() => {
|
|
91
|
+
reject(new Error('WebSocket connection timeout'));
|
|
92
|
+
}, 30000);
|
|
93
|
+
this.ws = new WebSocket(fullUrl);
|
|
94
|
+
this.ws.on('open', () => {
|
|
95
|
+
clearTimeout(timeout);
|
|
96
|
+
this.connected = true;
|
|
97
|
+
resolve();
|
|
98
|
+
});
|
|
99
|
+
this.ws.on('error', (error) => {
|
|
100
|
+
clearTimeout(timeout);
|
|
101
|
+
reject(error);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return initialLines;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Close the WebSocket connection
|
|
109
|
+
*/
|
|
110
|
+
async close() {
|
|
111
|
+
this.closed = true;
|
|
112
|
+
this.connected = false;
|
|
113
|
+
if (this.ws) {
|
|
114
|
+
this.ws.close();
|
|
115
|
+
this.ws = null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get current buffer contents (bounded, oldest may be dropped)
|
|
120
|
+
*/
|
|
121
|
+
getBuffer() {
|
|
122
|
+
return [...this.buffer];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clear the buffer
|
|
126
|
+
*/
|
|
127
|
+
clearBuffer() {
|
|
128
|
+
this.buffer = [];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Async iterate over NEW log lines from WebSocket
|
|
132
|
+
*/
|
|
133
|
+
async *[Symbol.asyncIterator]() {
|
|
134
|
+
if (!this.ws) {
|
|
135
|
+
throw new Error('Not connected. Call connect() first.');
|
|
136
|
+
}
|
|
137
|
+
const messageQueue = [];
|
|
138
|
+
let resolveNext = null;
|
|
139
|
+
let rejectNext = null;
|
|
140
|
+
this.ws.on('message', (data) => {
|
|
141
|
+
if (this.closed)
|
|
142
|
+
return;
|
|
143
|
+
try {
|
|
144
|
+
const message = JSON.parse(data.toString());
|
|
145
|
+
if (message.event === 'log' && message.log) {
|
|
146
|
+
for (const line of message.log.split('\n')) {
|
|
147
|
+
if (line) {
|
|
148
|
+
this.buffer.push(line);
|
|
149
|
+
if (this.buffer.length > this.maxBuffer) {
|
|
150
|
+
this.buffer.shift();
|
|
151
|
+
}
|
|
152
|
+
if (resolveNext) {
|
|
153
|
+
resolveNext({ done: false, value: line });
|
|
154
|
+
resolveNext = null;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
messageQueue.push(line);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Ignore JSON parse errors
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
this.ws.on('close', () => {
|
|
168
|
+
this.connected = false;
|
|
169
|
+
if (resolveNext) {
|
|
170
|
+
resolveNext({ done: true, value: undefined });
|
|
171
|
+
resolveNext = null;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
this.ws.on('error', (error) => {
|
|
175
|
+
if (rejectNext) {
|
|
176
|
+
rejectNext(error);
|
|
177
|
+
rejectNext = null;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
while (!this.closed) {
|
|
181
|
+
if (messageQueue.length > 0) {
|
|
182
|
+
yield messageQueue.shift();
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Wait for next message
|
|
186
|
+
const result = await new Promise((resolve, reject) => {
|
|
187
|
+
resolveNext = resolve;
|
|
188
|
+
rejectNext = reject;
|
|
189
|
+
});
|
|
190
|
+
if (result.done) {
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
yield result.value;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Stream logs until job reaches a terminal state
|
|
200
|
+
*/
|
|
201
|
+
export async function streamLogs(client, jobId, onLine, options) {
|
|
202
|
+
const { untilState = new Set(['succeeded', 'failed', 'canceled', 'terminated']), pollStateInterval = 2000, fetchInitial = true, fetchFinal = true, maxInitialLines = DEFAULT_MAX_INITIAL_LINES, } = options || {};
|
|
203
|
+
let job = await client.jobs.get(jobId);
|
|
204
|
+
// Wait for job to be assigned/running
|
|
205
|
+
while (job.state === 'pending' || job.state === 'queued') {
|
|
206
|
+
await new Promise(resolve => setTimeout(resolve, pollStateInterval));
|
|
207
|
+
job = await client.jobs.get(jobId);
|
|
208
|
+
}
|
|
209
|
+
// Check for immediate terminal state
|
|
210
|
+
if (untilState.has(job.state)) {
|
|
211
|
+
if (fetchFinal) {
|
|
212
|
+
const logs = await fetchLogs(client, jobId, maxInitialLines);
|
|
213
|
+
for (const line of logs) {
|
|
214
|
+
onLine(line);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Fetch initial logs if running
|
|
220
|
+
if (fetchInitial && job.state === 'running') {
|
|
221
|
+
const logs = await fetchLogs(client, jobId, maxInitialLines);
|
|
222
|
+
for (const line of logs) {
|
|
223
|
+
onLine(line);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Connect WebSocket
|
|
227
|
+
if (job.jobKey) {
|
|
228
|
+
const stream = new LogStream(client, jobId, job.jobKey, false);
|
|
229
|
+
await stream.connect();
|
|
230
|
+
try {
|
|
231
|
+
// Stream logs while checking job state periodically
|
|
232
|
+
const checkInterval = setInterval(async () => {
|
|
233
|
+
job = await client.jobs.get(jobId);
|
|
234
|
+
if (untilState.has(job.state)) {
|
|
235
|
+
await stream.close();
|
|
236
|
+
}
|
|
237
|
+
}, pollStateInterval);
|
|
238
|
+
for await (const line of stream) {
|
|
239
|
+
onLine(line);
|
|
240
|
+
}
|
|
241
|
+
clearInterval(checkInterval);
|
|
242
|
+
}
|
|
243
|
+
finally {
|
|
244
|
+
await stream.close();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Fetch final logs
|
|
248
|
+
if (fetchFinal) {
|
|
249
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
250
|
+
const logs = await fetchLogs(client, jobId, maxInitialLines);
|
|
251
|
+
for (const line of logs) {
|
|
252
|
+
onLine(line);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=logs.js.map
|
package/dist/logs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
|
package/dist/models.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-compatible models API
|
|
3
|
+
*/
|
|
4
|
+
import type { HTTPClient } from './http.js';
|
|
5
|
+
export interface Model {
|
|
6
|
+
id: string;
|
|
7
|
+
object: string;
|
|
8
|
+
ownedBy: string | null;
|
|
9
|
+
}
|
|
10
|
+
export declare class ModelsAPI {
|
|
11
|
+
private http;
|
|
12
|
+
constructor(http: HTTPClient);
|
|
13
|
+
list(): Promise<Model[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAUD,qBAAa,SAAS;IACR,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE9B,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;CAK/B"}
|
package/dist/models.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function modelFromDict(data) {
|
|
2
|
+
return {
|
|
3
|
+
id: data?.id || '',
|
|
4
|
+
object: data?.object || 'model',
|
|
5
|
+
ownedBy: data?.owned_by || null,
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export class ModelsAPI {
|
|
9
|
+
http;
|
|
10
|
+
constructor(http) {
|
|
11
|
+
this.http = http;
|
|
12
|
+
}
|
|
13
|
+
async list() {
|
|
14
|
+
const payload = await this.http.get('/v1/models');
|
|
15
|
+
const data = Array.isArray(payload?.data) ? payload.data : Array.isArray(payload) ? payload : [];
|
|
16
|
+
return data.map(modelFromDict);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAWA,SAAS,aAAa,CAAC,IAAS;IAC9B,OAAO;QACL,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,OAAO;QAC/B,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,SAAS;IACA;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;CACF"}
|