@hypercli.com/sdk 2026.3.13-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.
Files changed (82) hide show
  1. package/README.md +205 -0
  2. package/dist/agent.d.ts +63 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +128 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/agents.d.ts +245 -0
  7. package/dist/agents.d.ts.map +1 -0
  8. package/dist/agents.js +602 -0
  9. package/dist/agents.js.map +1 -0
  10. package/dist/billing.d.ts +38 -0
  11. package/dist/billing.d.ts.map +1 -0
  12. package/dist/billing.js +53 -0
  13. package/dist/billing.js.map +1 -0
  14. package/dist/claw.d.ts +83 -0
  15. package/dist/claw.d.ts.map +1 -0
  16. package/dist/claw.js +148 -0
  17. package/dist/claw.js.map +1 -0
  18. package/dist/client.d.ts +62 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +82 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/config.d.ts +28 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +107 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/errors.d.ts +9 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +15 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/files.d.ts +60 -0
  31. package/dist/files.d.ts.map +1 -0
  32. package/dist/files.js +128 -0
  33. package/dist/files.js.map +1 -0
  34. package/dist/gateway.d.ts +216 -0
  35. package/dist/gateway.d.ts.map +1 -0
  36. package/dist/gateway.js +1306 -0
  37. package/dist/gateway.js.map +1 -0
  38. package/dist/http.d.ts +41 -0
  39. package/dist/http.d.ts.map +1 -0
  40. package/dist/http.js +206 -0
  41. package/dist/http.js.map +1 -0
  42. package/dist/index.d.ts +22 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +36 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/instances.d.ts +93 -0
  47. package/dist/instances.d.ts.map +1 -0
  48. package/dist/instances.js +196 -0
  49. package/dist/instances.js.map +1 -0
  50. package/dist/job/base.d.ts +80 -0
  51. package/dist/job/base.d.ts.map +1 -0
  52. package/dist/job/base.js +200 -0
  53. package/dist/job/base.js.map +1 -0
  54. package/dist/job/comfyui.d.ts +75 -0
  55. package/dist/job/comfyui.d.ts.map +1 -0
  56. package/dist/job/comfyui.js +454 -0
  57. package/dist/job/comfyui.js.map +1 -0
  58. package/dist/job/gradio.d.ts +48 -0
  59. package/dist/job/gradio.d.ts.map +1 -0
  60. package/dist/job/gradio.js +90 -0
  61. package/dist/job/gradio.js.map +1 -0
  62. package/dist/jobs.d.ts +132 -0
  63. package/dist/jobs.d.ts.map +1 -0
  64. package/dist/jobs.js +244 -0
  65. package/dist/jobs.js.map +1 -0
  66. package/dist/keys.d.ts +39 -0
  67. package/dist/keys.d.ts.map +1 -0
  68. package/dist/keys.js +53 -0
  69. package/dist/keys.js.map +1 -0
  70. package/dist/logs.d.ts +54 -0
  71. package/dist/logs.d.ts.map +1 -0
  72. package/dist/logs.js +256 -0
  73. package/dist/logs.js.map +1 -0
  74. package/dist/renders.d.ts +168 -0
  75. package/dist/renders.d.ts.map +1 -0
  76. package/dist/renders.js +228 -0
  77. package/dist/renders.js.map +1 -0
  78. package/dist/user.d.ts +20 -0
  79. package/dist/user.d.ts.map +1 -0
  80. package/dist/user.js +23 -0
  81. package/dist/user.js.map +1 -0
  82. package/package.json +65 -0
package/dist/agents.js ADDED
@@ -0,0 +1,602 @@
1
+ import { GatewayClient, } from './gateway.js';
2
+ const AGENTS_API_BASE = 'https://api.hypercli.com';
3
+ const DEV_AGENTS_API_BASE = 'https://api.dev.hypercli.com/agents';
4
+ const DEPLOYMENTS_API_PREFIX = '/deployments';
5
+ const AGENTS_WS_URL = 'wss://api.agents.hypercli.com/ws';
6
+ const DEV_AGENTS_WS_URL = 'wss://api.agents.dev.hypercli.com/ws';
7
+ function parseDate(value) {
8
+ if (typeof value !== 'string' || !value)
9
+ return null;
10
+ return new Date(value.replace('Z', '+00:00'));
11
+ }
12
+ function toWsBaseUrl(baseUrl) {
13
+ const base = (baseUrl || '').replace(/\/+$/, '');
14
+ if (!base)
15
+ return '';
16
+ if (base.startsWith('https://'))
17
+ return `wss://${base.slice('https://'.length)}`;
18
+ if (base.startsWith('http://'))
19
+ return `ws://${base.slice('http://'.length)}`;
20
+ return base;
21
+ }
22
+ function normalizeAgentsWsUrl(url) {
23
+ const base = toWsBaseUrl(url);
24
+ if (!base)
25
+ return '';
26
+ return base.endsWith('/ws') ? base : `${base}/ws`;
27
+ }
28
+ export function resolveAgentsApiBase(apiBase) {
29
+ const raw = (apiBase || '').trim();
30
+ if (!raw)
31
+ return AGENTS_API_BASE;
32
+ const parsed = new URL(raw.includes('://') ? raw : `https://${raw}`);
33
+ const host = parsed.host.toLowerCase();
34
+ if (host === 'api.hypercli.com' || host === 'api.hyperclaw.app')
35
+ return AGENTS_API_BASE;
36
+ if (host === 'api.dev.hypercli.com' || host === 'api.dev.hyperclaw.app' || host === 'dev-api.hyperclaw.app') {
37
+ return DEV_AGENTS_API_BASE;
38
+ }
39
+ return raw.replace(/\/$/, '');
40
+ }
41
+ function defaultAgentsWsUrl(apiBase) {
42
+ const resolvedApiBase = resolveAgentsApiBase(apiBase);
43
+ const parsed = new URL(resolvedApiBase.includes('://') ? resolvedApiBase : `https://${resolvedApiBase}`);
44
+ const host = parsed.host.toLowerCase();
45
+ if (host === 'api.hypercli.com' || host === 'api.hyperclaw.app')
46
+ return AGENTS_WS_URL;
47
+ if (host === 'api.dev.hypercli.com' || host === 'api.dev.hyperclaw.app' || host === 'dev-api.hyperclaw.app') {
48
+ return DEV_AGENTS_WS_URL;
49
+ }
50
+ return normalizeAgentsWsUrl(resolvedApiBase);
51
+ }
52
+ function randomHexToken(bytes) {
53
+ const buffer = new Uint8Array(bytes);
54
+ globalThis.crypto.getRandomValues(buffer);
55
+ return Array.from(buffer, (value) => value.toString(16).padStart(2, '0')).join('');
56
+ }
57
+ function encodeFilePath(path) {
58
+ return path
59
+ .replace(/^\/+/, '')
60
+ .split('/')
61
+ .filter(Boolean)
62
+ .map((part) => encodeURIComponent(part))
63
+ .join('/');
64
+ }
65
+ function decodeUtf8(content) {
66
+ return new TextDecoder().decode(content);
67
+ }
68
+ function encodeUtf8(content) {
69
+ return new TextEncoder().encode(content);
70
+ }
71
+ function toUint8Array(content) {
72
+ if (typeof content === 'string')
73
+ return encodeUtf8(content);
74
+ if (content instanceof Uint8Array)
75
+ return content;
76
+ return new Uint8Array(content);
77
+ }
78
+ function execResultFromDict(data) {
79
+ return {
80
+ exitCode: data.exit_code ?? -1,
81
+ stdout: data.stdout || '',
82
+ stderr: data.stderr || '',
83
+ };
84
+ }
85
+ function agentStateFromDict(data) {
86
+ return {
87
+ id: data.id ?? '',
88
+ userId: data.user_id ?? '',
89
+ podId: data.pod_id ?? '',
90
+ podName: data.pod_name ?? '',
91
+ state: data.state ?? 'unknown',
92
+ name: data.name ?? null,
93
+ cpu: data.cpu ?? 0,
94
+ memory: data.memory ?? 0,
95
+ hostname: data.hostname ?? null,
96
+ jwtToken: data.jwt_token ?? null,
97
+ jwtExpiresAt: parseDate(data.jwt_expires_at),
98
+ startedAt: parseDate(data.started_at),
99
+ stoppedAt: parseDate(data.stopped_at),
100
+ lastError: data.last_error ?? null,
101
+ createdAt: parseDate(data.created_at),
102
+ updatedAt: parseDate(data.updated_at),
103
+ launchConfig: data.launch_config ?? null,
104
+ routes: data.routes ?? {},
105
+ command: data.command ?? [],
106
+ entrypoint: data.entrypoint ?? [],
107
+ ports: data.ports ?? [],
108
+ dryRun: Boolean(data.dry_run),
109
+ };
110
+ }
111
+ export function buildAgentConfig(config = {}, options = {}) {
112
+ const prepared = { ...config };
113
+ const env = { ...(prepared.env ?? {}) };
114
+ if (options.env)
115
+ Object.assign(env, options.env);
116
+ let gatewayToken = options.gatewayToken?.trim() || env.OPENCLAW_GATEWAY_TOKEN?.trim() || '';
117
+ if (!gatewayToken) {
118
+ gatewayToken = randomHexToken(32);
119
+ }
120
+ env.OPENCLAW_GATEWAY_TOKEN = gatewayToken;
121
+ prepared.env = env;
122
+ if (options.ports !== undefined && options.ports !== null)
123
+ prepared.ports = options.ports;
124
+ if (options.routes !== undefined && options.routes !== null)
125
+ prepared.routes = options.routes;
126
+ if (options.command !== undefined && options.command !== null)
127
+ prepared.command = options.command;
128
+ if (options.entrypoint !== undefined && options.entrypoint !== null)
129
+ prepared.entrypoint = options.entrypoint;
130
+ if (options.image !== undefined && options.image !== null)
131
+ prepared.image = options.image;
132
+ if (options.registryUrl !== undefined && options.registryUrl !== null)
133
+ prepared.registry_url = options.registryUrl;
134
+ if (options.registryAuth !== undefined && options.registryAuth !== null)
135
+ prepared.registry_auth = options.registryAuth;
136
+ return { config: prepared, gatewayToken };
137
+ }
138
+ async function getFsPromises() {
139
+ return import('node:fs/promises');
140
+ }
141
+ function bindAgent(agent, deployments) {
142
+ agent._deployments = deployments;
143
+ return agent;
144
+ }
145
+ export class Agent {
146
+ id;
147
+ userId;
148
+ podId;
149
+ podName;
150
+ state;
151
+ name;
152
+ cpu;
153
+ memory;
154
+ hostname;
155
+ jwtToken;
156
+ jwtExpiresAt;
157
+ startedAt;
158
+ stoppedAt;
159
+ lastError;
160
+ createdAt;
161
+ updatedAt;
162
+ launchConfig;
163
+ routes;
164
+ command;
165
+ entrypoint;
166
+ ports;
167
+ dryRun;
168
+ _deployments = null;
169
+ constructor(fields) {
170
+ this.id = fields.id;
171
+ this.userId = fields.userId;
172
+ this.podId = fields.podId;
173
+ this.podName = fields.podName;
174
+ this.state = fields.state;
175
+ this.name = fields.name ?? null;
176
+ this.cpu = fields.cpu;
177
+ this.memory = fields.memory;
178
+ this.hostname = fields.hostname ?? null;
179
+ this.jwtToken = fields.jwtToken ?? null;
180
+ this.jwtExpiresAt = fields.jwtExpiresAt ?? null;
181
+ this.startedAt = fields.startedAt ?? null;
182
+ this.stoppedAt = fields.stoppedAt ?? null;
183
+ this.lastError = fields.lastError ?? null;
184
+ this.createdAt = fields.createdAt ?? null;
185
+ this.updatedAt = fields.updatedAt ?? null;
186
+ this.launchConfig = fields.launchConfig ?? null;
187
+ this.routes = { ...fields.routes };
188
+ this.command = [...fields.command];
189
+ this.entrypoint = [...fields.entrypoint];
190
+ this.ports = [...fields.ports];
191
+ this.dryRun = fields.dryRun;
192
+ }
193
+ static fromDict(data) {
194
+ return new Agent(agentStateFromDict(data));
195
+ }
196
+ get publicUrl() {
197
+ return this.hostname ? `https://${this.hostname}` : null;
198
+ }
199
+ get vncUrl() {
200
+ return this.publicUrl;
201
+ }
202
+ get shellUrl() {
203
+ return this.hostname ? `https://shell-${this.hostname}` : null;
204
+ }
205
+ get executorUrl() {
206
+ return this.shellUrl;
207
+ }
208
+ get isRunning() {
209
+ return this.state.toLowerCase() === 'running';
210
+ }
211
+ requireDeployments() {
212
+ if (!this._deployments) {
213
+ throw new Error('Agent is not bound to a Deployments client');
214
+ }
215
+ return this._deployments;
216
+ }
217
+ async refreshToken() {
218
+ const data = await this.requireDeployments().refreshToken(this.id);
219
+ this.jwtToken = data.token ?? data.jwt ?? null;
220
+ this.jwtExpiresAt = parseDate(data.expires_at);
221
+ return data;
222
+ }
223
+ async env() {
224
+ const data = await this.requireDeployments().env(this.id);
225
+ return data.env ?? {};
226
+ }
227
+ async exec(command, options = {}) {
228
+ return this.requireDeployments().exec(this, command, options);
229
+ }
230
+ async health() {
231
+ return this.requireDeployments().health(this);
232
+ }
233
+ async filesList(path = '') {
234
+ return this.requireDeployments().filesList(this, path);
235
+ }
236
+ async fileReadBytes(path) {
237
+ return this.requireDeployments().fileReadBytes(this, path);
238
+ }
239
+ async fileRead(path) {
240
+ return decodeUtf8(await this.fileReadBytes(path));
241
+ }
242
+ async fileWriteBytes(path, content) {
243
+ return this.requireDeployments().fileWriteBytes(this, path, content);
244
+ }
245
+ async fileWrite(path, content) {
246
+ return this.requireDeployments().fileWrite(this, path, content);
247
+ }
248
+ async fileDelete(path, options = {}) {
249
+ return this.requireDeployments().fileDelete(this, path, options);
250
+ }
251
+ async cpTo(localPath, remotePath) {
252
+ return this.requireDeployments().cpTo(this, localPath, remotePath);
253
+ }
254
+ async cpFrom(remotePath, localPath) {
255
+ return this.requireDeployments().cpFrom(this, remotePath, localPath);
256
+ }
257
+ async shellConnect(shell) {
258
+ return this.requireDeployments().shellConnect(this.id, shell);
259
+ }
260
+ }
261
+ export class OpenClawAgent extends Agent {
262
+ gatewayUrl;
263
+ gatewayToken;
264
+ constructor(fields) {
265
+ super(fields);
266
+ this.gatewayUrl = fields.gatewayUrl ?? null;
267
+ this.gatewayToken = fields.gatewayToken ?? null;
268
+ }
269
+ static fromDict(data) {
270
+ return new OpenClawAgent({
271
+ ...agentStateFromDict(data),
272
+ gatewayUrl: data.openclaw_url ?? data.gateway_url ?? null,
273
+ gatewayToken: data.gateway_token ?? null,
274
+ });
275
+ }
276
+ /**
277
+ * Resolve the gateway token. If not set locally (e.g. page refresh),
278
+ * fetches from the pod's runtime env via the backend.
279
+ */
280
+ async resolveGatewayToken() {
281
+ if (this.gatewayToken)
282
+ return this.gatewayToken;
283
+ const envData = await this.env();
284
+ this.gatewayToken = envData.OPENCLAW_GATEWAY_TOKEN ?? null;
285
+ return this.gatewayToken;
286
+ }
287
+ gateway(options = {}) {
288
+ if (!this.gatewayUrl) {
289
+ throw new Error('Agent has no OpenClaw gateway URL');
290
+ }
291
+ if (!this.jwtToken) {
292
+ throw new Error('Agent has no JWT token');
293
+ }
294
+ return new GatewayClient({
295
+ url: this.gatewayUrl,
296
+ token: this.jwtToken,
297
+ gatewayToken: options.gatewayToken ?? this.gatewayToken ?? undefined,
298
+ clientId: options.clientId,
299
+ clientMode: options.clientMode,
300
+ origin: options.origin,
301
+ timeout: options.timeout,
302
+ });
303
+ }
304
+ async connect(options = {}) {
305
+ // Auto-resolve gateway token if missing
306
+ if (!this.gatewayToken && !options.gatewayToken) {
307
+ await this.resolveGatewayToken();
308
+ }
309
+ const client = this.gateway(options);
310
+ await client.connect();
311
+ return client;
312
+ }
313
+ async gatewayStatus(options = {}) {
314
+ const client = await this.connect(options);
315
+ try {
316
+ return await client.status();
317
+ }
318
+ finally {
319
+ client.close();
320
+ }
321
+ }
322
+ async configGet(options = {}) {
323
+ const client = await this.connect(options);
324
+ try {
325
+ return await client.configGet();
326
+ }
327
+ finally {
328
+ client.close();
329
+ }
330
+ }
331
+ async configSchema(options = {}) {
332
+ const client = await this.connect(options);
333
+ try {
334
+ return await client.configSchema();
335
+ }
336
+ finally {
337
+ client.close();
338
+ }
339
+ }
340
+ async sessionsList(options = {}) {
341
+ const client = await this.connect(options);
342
+ try {
343
+ return await client.sessionsList();
344
+ }
345
+ finally {
346
+ client.close();
347
+ }
348
+ }
349
+ async *chatSend(message, sessionKey, options = {}) {
350
+ const client = await this.connect(options);
351
+ try {
352
+ for await (const event of client.chatSend(message, sessionKey)) {
353
+ yield event;
354
+ }
355
+ }
356
+ finally {
357
+ client.close();
358
+ }
359
+ }
360
+ }
361
+ export class Deployments {
362
+ http;
363
+ apiKey;
364
+ apiBase;
365
+ agentsWsUrl;
366
+ constructor(http, agentApiKey, agentApiBase, agentsWsUrl) {
367
+ this.http = http;
368
+ this.apiKey = agentApiKey || http.apiKey;
369
+ this.apiBase = resolveAgentsApiBase(agentApiBase || process.env.HYPERCLI_API_URL || AGENTS_API_BASE);
370
+ this.agentsWsUrl = agentsWsUrl ? normalizeAgentsWsUrl(agentsWsUrl) : defaultAgentsWsUrl(this.apiBase);
371
+ }
372
+ hydrateAgent(data) {
373
+ const agent = data.openclaw_url || data.gateway_url
374
+ ? OpenClawAgent.fromDict(data)
375
+ : Agent.fromDict(data);
376
+ return bindAgent(agent, this);
377
+ }
378
+ agentIdFor(target) {
379
+ return typeof target === 'string' ? target : target.id;
380
+ }
381
+ async fetchRaw(path, init = {}) {
382
+ const headers = new Headers(init.headers ?? {});
383
+ headers.set('Authorization', `Bearer ${this.apiKey}`);
384
+ const response = await fetch(`${this.apiBase}${path}`, { ...init, headers });
385
+ if (!response.ok) {
386
+ throw new Error(`Agent request failed: ${response.status} ${response.statusText}`);
387
+ }
388
+ return response;
389
+ }
390
+ async create(options = {}) {
391
+ const { config, gatewayToken } = buildAgentConfig(options.config ?? {}, options);
392
+ const body = { config, start: options.start ?? true };
393
+ if (options.dryRun)
394
+ body.dry_run = true;
395
+ if (options.name)
396
+ body.name = options.name;
397
+ if (options.size)
398
+ body.size = options.size;
399
+ if (options.cpu !== undefined)
400
+ body.cpu = options.cpu;
401
+ if (options.memory !== undefined)
402
+ body.memory = options.memory;
403
+ const data = await this.http.post(DEPLOYMENTS_API_PREFIX, body);
404
+ const agent = this.hydrateAgent(data);
405
+ if (agent instanceof OpenClawAgent) {
406
+ agent.gatewayToken = gatewayToken;
407
+ }
408
+ agent.launchConfig = config;
409
+ agent.command = [...(config.command ?? [])];
410
+ agent.entrypoint = [...(config.entrypoint ?? [])];
411
+ return agent;
412
+ }
413
+ async budget() {
414
+ return this.http.get(`${DEPLOYMENTS_API_PREFIX}/budget`);
415
+ }
416
+ async metrics(agentId) {
417
+ return this.http.get(`${DEPLOYMENTS_API_PREFIX}/${agentId}/metrics`);
418
+ }
419
+ async list() {
420
+ const data = await this.http.get(DEPLOYMENTS_API_PREFIX);
421
+ const items = Array.isArray(data) ? data : data.items ?? [];
422
+ return {
423
+ items: items.map((item) => this.hydrateAgent(item)),
424
+ budget: Array.isArray(data) ? undefined : data.budget,
425
+ };
426
+ }
427
+ async get(agentId) {
428
+ const data = await this.http.get(`${DEPLOYMENTS_API_PREFIX}/${agentId}`);
429
+ return this.hydrateAgent(data);
430
+ }
431
+ async start(agentId, options = {}) {
432
+ const { config, gatewayToken } = buildAgentConfig(options.config ?? {}, options);
433
+ const body = { config };
434
+ if (options.dryRun)
435
+ body.dry_run = true;
436
+ const data = await this.http.post(`${DEPLOYMENTS_API_PREFIX}/${agentId}/start`, body);
437
+ const agent = this.hydrateAgent(data);
438
+ if (agent instanceof OpenClawAgent) {
439
+ agent.gatewayToken = gatewayToken;
440
+ }
441
+ agent.launchConfig = config;
442
+ agent.command = [...(config.command ?? [])];
443
+ agent.entrypoint = [...(config.entrypoint ?? [])];
444
+ return agent;
445
+ }
446
+ async stop(agentId) {
447
+ const data = await this.http.post(`${DEPLOYMENTS_API_PREFIX}/${agentId}/stop`);
448
+ return this.hydrateAgent(data);
449
+ }
450
+ async delete(agentId) {
451
+ return this.http.delete(`${DEPLOYMENTS_API_PREFIX}/${agentId}`);
452
+ }
453
+ async refreshToken(agentId) {
454
+ return this.http.get(`${DEPLOYMENTS_API_PREFIX}/${agentId}/token`);
455
+ }
456
+ async logsToken(agentId) {
457
+ return this.http.post(`${DEPLOYMENTS_API_PREFIX}/${agentId}/logs/token`);
458
+ }
459
+ async env(agentId) {
460
+ return this.http.get(`${DEPLOYMENTS_API_PREFIX}/${agentId}/env`);
461
+ }
462
+ async exec(target, command, options = {}) {
463
+ const agentId = this.agentIdFor(target);
464
+ const payload = {
465
+ command,
466
+ timeout: options.timeout ?? 30,
467
+ };
468
+ if (options.dryRun)
469
+ payload.dry_run = true;
470
+ const data = await this.http.post(`${DEPLOYMENTS_API_PREFIX}/${agentId}/exec`, payload);
471
+ return execResultFromDict(data);
472
+ }
473
+ async health(target) {
474
+ if (!target.executorUrl) {
475
+ throw new Error('Agent has no executor URL');
476
+ }
477
+ const headers = {};
478
+ if (target.jwtToken) {
479
+ headers.Authorization = `Bearer ${target.jwtToken}`;
480
+ headers.Cookie = `${target.podName}-token=${target.jwtToken}`;
481
+ }
482
+ const response = await fetch(`${target.executorUrl}/health`, { headers });
483
+ if (!response.ok) {
484
+ throw new Error(`Agent health failed: ${response.status} ${response.statusText}`);
485
+ }
486
+ return (await response.json());
487
+ }
488
+ async filesList(target, path = '') {
489
+ const encodedPath = encodeFilePath(path);
490
+ const suffix = encodedPath ? `/${encodedPath}` : '';
491
+ const response = await this.fetchRaw(`${DEPLOYMENTS_API_PREFIX}/${this.agentIdFor(target)}/files${suffix}`);
492
+ const payload = (await response.json());
493
+ return [...(payload.directories ?? []), ...(payload.files ?? [])];
494
+ }
495
+ async fileReadBytes(target, path) {
496
+ const encodedPath = encodeFilePath(path);
497
+ const response = await this.fetchRaw(`${DEPLOYMENTS_API_PREFIX}/${this.agentIdFor(target)}/files/${encodedPath}`, {
498
+ redirect: 'follow',
499
+ });
500
+ return new Uint8Array(await response.arrayBuffer());
501
+ }
502
+ async fileRead(target, path) {
503
+ return decodeUtf8(await this.fileReadBytes(target, path));
504
+ }
505
+ async fileWriteBytes(target, path, content) {
506
+ const response = await this.fetchRaw(`${DEPLOYMENTS_API_PREFIX}/${this.agentIdFor(target)}/files/${encodeFilePath(path)}`, {
507
+ method: 'PUT',
508
+ headers: { 'Content-Type': 'application/octet-stream' },
509
+ body: toUint8Array(content),
510
+ });
511
+ return (await response.json());
512
+ }
513
+ async fileWrite(target, path, content) {
514
+ return this.fileWriteBytes(target, path, content);
515
+ }
516
+ async fileDelete(target, path, options = {}) {
517
+ const encodedPath = encodeFilePath(path);
518
+ const params = new URLSearchParams();
519
+ if (options.recursive)
520
+ params.set('recursive', 'true');
521
+ const suffix = params.toString() ? `?${params.toString()}` : '';
522
+ const response = await this.fetchRaw(`${DEPLOYMENTS_API_PREFIX}/${this.agentIdFor(target)}/files/${encodedPath}${suffix}`, { method: 'DELETE' });
523
+ return (await response.json());
524
+ }
525
+ async cpTo(target, localPath, remotePath) {
526
+ const fs = await getFsPromises();
527
+ const content = await fs.readFile(localPath);
528
+ return this.fileWriteBytes(target, remotePath, new Uint8Array(content));
529
+ }
530
+ async cpFrom(target, remotePath, localPath) {
531
+ const fs = await getFsPromises();
532
+ const content = await this.fileReadBytes(target, remotePath);
533
+ const destination = new URL(`file://${localPath}`).pathname;
534
+ const parts = destination.split('/');
535
+ parts.pop();
536
+ const parent = parts.join('/') || '/';
537
+ await fs.mkdir(parent, { recursive: true });
538
+ await fs.writeFile(destination, content);
539
+ return destination;
540
+ }
541
+ async logsConnect(agentId, options = {}) {
542
+ const tokenData = await this.logsToken(agentId);
543
+ const container = options.container ?? 'reef';
544
+ const tailLines = options.tailLines ?? 100;
545
+ const wsUrl = `${this.agentsWsUrl}/logs/${agentId}` +
546
+ `?jwt=${encodeURIComponent(tokenData.jwt)}` +
547
+ `&container=${encodeURIComponent(container)}` +
548
+ `&tail_lines=${encodeURIComponent(String(tailLines))}`;
549
+ const ws = new WebSocket(wsUrl);
550
+ return await new Promise((resolve, reject) => {
551
+ let settled = false;
552
+ ws.onopen = () => {
553
+ settled = true;
554
+ resolve(ws);
555
+ };
556
+ ws.onerror = () => {
557
+ if (!settled) {
558
+ reject(new Error('WebSocket connection failed'));
559
+ }
560
+ };
561
+ });
562
+ }
563
+ async shellToken(agentId, shell, dryRun = false) {
564
+ const selectedShell = shell ?? '/bin/bash';
565
+ const payload = { shell: selectedShell };
566
+ if (dryRun)
567
+ payload.dry_run = true;
568
+ return this.http.post(`${DEPLOYMENTS_API_PREFIX}/${agentId}/shell/token`, payload);
569
+ }
570
+ async shellConnect(agentId, shell) {
571
+ const connectWithShell = async (requestedShell) => {
572
+ const tokenData = await this.shellToken(agentId, requestedShell);
573
+ const baseUrl = `${this.agentsWsUrl}/shell/${agentId}`;
574
+ const separator = baseUrl.includes("?") ? "&" : "?";
575
+ const wsUrl = `${baseUrl}${separator}jwt=${encodeURIComponent(tokenData.jwt)}` +
576
+ `&shell=${encodeURIComponent(tokenData.shell || requestedShell)}`;
577
+ const ws = new WebSocket(wsUrl);
578
+ return await new Promise((resolve, reject) => {
579
+ let settled = false;
580
+ ws.onopen = () => {
581
+ settled = true;
582
+ resolve(ws);
583
+ };
584
+ ws.onerror = () => {
585
+ if (!settled) {
586
+ reject(new Error('WebSocket connection failed'));
587
+ }
588
+ };
589
+ });
590
+ };
591
+ if (shell) {
592
+ return connectWithShell(shell);
593
+ }
594
+ try {
595
+ return await connectWithShell('/bin/bash');
596
+ }
597
+ catch {
598
+ return connectWithShell('/bin/sh');
599
+ }
600
+ }
601
+ }
602
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,GAId,MAAM,cAAc,CAAC;AAEtB,MAAM,eAAe,GAAG,0BAA0B,CAAC;AACnD,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAClE,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAC9C,MAAM,aAAa,GAAG,kCAAkC,CAAC;AACzD,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AA0IjE,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACjF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,eAAe,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,eAAe,CAAC;IACxF,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC5G,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,eAAe,EAAE,CAAC,CAAC;IACzG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,aAAa,CAAC;IACtF,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC5G,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,OAAO,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,OAAmB;IACrC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,OAA0C;IAC9D,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,OAAO,YAAY,UAAU;QAAE,OAAO,OAAO,CAAC;IAClD,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAS;IACnC,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAwB;IAClD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;QACjB,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QAChC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5C,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QAClC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,YAAY,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;QACxC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;QACjC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAA8B,EAAE,EAChC,UAAmC,EAAE;IAErC,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,EAA4B,CAAC;IAClE,IAAI,OAAO,CAAC,GAAG;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5F,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,sBAAsB,GAAG,YAAY,CAAC;IAC1C,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;IAEnB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;QAAE,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1F,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;QAAE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9F,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;QAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAClG,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI;QAAE,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC9G,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;QAAE,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1F,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI;QAAE,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IACnH,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI;QAAE,QAAQ,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAEvH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAkB,KAAQ,EAAE,WAAwB;IACpE,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,KAAK;IACA,EAAE,CAAS;IACX,MAAM,CAAS;IACf,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,KAAK,CAAS;IACd,IAAI,CAAgB;IACpB,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,QAAQ,CAAgB;IACjC,QAAQ,CAAgB;IACxB,YAAY,CAAc;IACjB,SAAS,CAAc;IACvB,SAAS,CAAc;IACvB,SAAS,CAAgB;IACzB,SAAS,CAAc;IACvB,SAAS,CAAc;IAChC,YAAY,CAA6B;IACzC,MAAM,CAAmC;IACzC,OAAO,CAAW;IAClB,UAAU,CAAW;IACrB,KAAK,CAAwB;IACpB,MAAM,CAAU;IAChC,YAAY,GAAuB,IAAI,CAAC;IAExC,YAAY,MAAwB;QAClC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAwB;QACtC,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC;IAChD,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,UAA4B,EAAE;QACxD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE;QAC/B,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAA0C;QAC3E,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;QAC3C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,UAAmC,EAAE;QAClE,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,UAAkB;QAC9C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,SAAiB;QAChD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAc;QAC/B,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC/B,UAAU,CAAgB;IAC1B,YAAY,CAAgB;IAEnC,YAAY,MAAuF;QACjG,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,MAAM,CAAU,QAAQ,CAAC,IAAwB;QAC/C,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,kBAAkB,CAAC,IAAI,CAAC;YAC3B,UAAU,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI;YACzD,YAAY,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;SACzC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC;QAC3D,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,UAA0D,EAAE;QAClE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS;YACpE,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAA0D,EAAE;QACxE,wCAAwC;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAA0D,EAAE;QAC9E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAA0D,EAAE;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAA0D,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAA0D,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CACb,OAAe,EACf,UAAkB,EAClB,UAA0D,EAAE;QAE5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC/D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IAMH;IALF,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,WAAW,CAAS;IAErC,YACmB,IAAgB,EACjC,WAAoB,EACpB,YAAqB,EACrB,WAAoB;QAHH,SAAI,GAAJ,IAAI,CAAY;QAKjC,IAAI,CAAC,MAAM,GAAG,WAAW,IAAK,IAAY,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC;QACrG,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxG,CAAC;IAEO,YAAY,CAAC,IAAwB;QAC3C,MAAM,KAAK,GACT,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW;YACnC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,UAAU,CAAC,MAAsB;QACvC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAoB,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAA8B,EAAE;QAC3C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACjF,MAAM,IAAI,GAAwB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAC3E,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3C,IAAI,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3C,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,sBAAsB,EAAE,IAAI,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;QAC5B,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,IAAI,OAAO,UAAU,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,sBAAsB,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAwB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;SACtD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,GAAG,sBAAsB,IAAI,OAAO,EAAE,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,UAA6B,EAAE;QAC1D,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACjF,MAAM,IAAI,GAAwB,EAAE,MAAM,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,GAAG,sBAAsB,IAAI,OAAO,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;QAC5B,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,GAAG,sBAAsB,IAAI,OAAO,OAAO,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,sBAAsB,IAAI,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,IAAI,OAAO,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB,IAAI,OAAO,aAAa,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,IAAI,OAAO,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAsB,EAAE,OAAe,EAAE,UAA4B,EAAE;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAwB;YACnC,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;SAC/B,CAAC;QACF,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB,IAAI,OAAO,OAAO,EAAE,OAAO,CAAC,CAAC;QACxF,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAa;QACxB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,aAAa,GAAG,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpD,OAAO,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAsB,EAAE,OAAe,EAAE;QACvD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2C,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAsB,EAAE,IAAY;QACtD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,WAAW,EAAE,EAAE;YAChH,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAsB,EAAE,IAAY;QACjD,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAsB,EACtB,IAAY,EACZ,OAA0C;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE;YACzH,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;YACvD,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;SAC5B,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAsB,EAAE,IAAY,EAAE,OAAe;QACnE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU,CACd,MAAsB,EACtB,IAAY,EACZ,UAAmC,EAAE;QAErC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAClC,GAAG,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,WAAW,GAAG,MAAM,EAAE,EACpF,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;QACF,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAsB,EAAE,SAAiB,EAAE,UAAkB;QACtE,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAsB,EAAE,UAAkB,EAAE,SAAiB;QACxE,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC;QAC5D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QACtC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAe,EACf,UAAsD,EAAE;QAExD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,MAAM,KAAK,GACT,GAAG,IAAI,CAAC,WAAW,SAAS,OAAO,EAAE;YACrC,QAAQ,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC3C,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE;YAC7C,eAAe,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,MAAM,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC,CAAC;YACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBAChB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,KAAc,EAAE,SAAkB,KAAK;QACvE,MAAM,aAAa,GAAG,KAAK,IAAI,WAAW,CAAC;QAC3C,MAAM,OAAO,GAAwB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAC9D,IAAI,MAAM;YAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB,IAAI,OAAO,cAAc,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,KAAc;QAChD,MAAM,gBAAgB,GAAG,KAAK,EAAE,cAAsB,EAAsB,EAAE;YAC5E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,WAAW,UAAU,OAAO,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACpD,MAAM,KAAK,GACT,GAAG,OAAO,GAAG,SAAS,OAAO,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAChE,UAAU,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,cAAc,CAAC,EAAE,CAAC;YACpE,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,MAAM,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;oBACf,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,CAAC,EAAE,CAAC,CAAC;gBACd,CAAC,CAAC;gBACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;oBAChB,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Billing API - balance and transactions
3
+ */
4
+ import type { HTTPClient } from './http.js';
5
+ export interface Balance {
6
+ total: string;
7
+ rewards: string;
8
+ paid: string;
9
+ available: string;
10
+ }
11
+ export interface Transaction {
12
+ id: string;
13
+ userId: string;
14
+ amount: number;
15
+ amountUsd: number;
16
+ transactionType: string;
17
+ status: string;
18
+ rewards: boolean;
19
+ jobId: string | null;
20
+ createdAt: string;
21
+ }
22
+ export declare class Billing {
23
+ private http;
24
+ constructor(http: HTTPClient);
25
+ /**
26
+ * Get account balance
27
+ */
28
+ balance(): Promise<Balance>;
29
+ /**
30
+ * List transactions
31
+ */
32
+ transactions(limit?: number, page?: number): Promise<Transaction[]>;
33
+ /**
34
+ * Get a specific transaction
35
+ */
36
+ getTransaction(transactionId: string): Promise<Transaction>;
37
+ }
38
+ //# sourceMappingURL=billing.d.ts.map