@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.
Files changed (97) hide show
  1. package/dist/agent.d.ts +350 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +620 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/agents.d.ts +433 -0
  6. package/dist/agents.d.ts.map +1 -0
  7. package/dist/agents.js +1140 -0
  8. package/dist/agents.js.map +1 -0
  9. package/dist/billing.d.ts +72 -0
  10. package/dist/billing.d.ts.map +1 -0
  11. package/dist/billing.js +93 -0
  12. package/dist/billing.js.map +1 -0
  13. package/dist/browser.d.ts +25 -0
  14. package/dist/browser.d.ts.map +1 -0
  15. package/dist/browser.js +33 -0
  16. package/dist/browser.js.map +1 -0
  17. package/dist/client.d.ts +67 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/client.js +100 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/config.d.ts +46 -0
  22. package/dist/config.d.ts.map +1 -0
  23. package/dist/config.js +235 -0
  24. package/dist/config.js.map +1 -0
  25. package/dist/errors.d.ts +9 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +15 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/files.d.ts +60 -0
  30. package/dist/files.d.ts.map +1 -0
  31. package/dist/files.js +128 -0
  32. package/dist/files.js.map +1 -0
  33. package/dist/gateway.d.ts +2 -0
  34. package/dist/gateway.d.ts.map +1 -0
  35. package/dist/gateway.js +2 -0
  36. package/dist/gateway.js.map +1 -0
  37. package/dist/http.d.ts +42 -0
  38. package/dist/http.d.ts.map +1 -0
  39. package/dist/http.js +238 -0
  40. package/dist/http.js.map +1 -0
  41. package/dist/index.d.ts +26 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +42 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/instances.d.ts +94 -0
  46. package/dist/instances.d.ts.map +1 -0
  47. package/dist/instances.js +197 -0
  48. package/dist/instances.js.map +1 -0
  49. package/dist/job/base.d.ts +80 -0
  50. package/dist/job/base.d.ts.map +1 -0
  51. package/dist/job/base.js +200 -0
  52. package/dist/job/base.js.map +1 -0
  53. package/dist/job/comfyui.d.ts +75 -0
  54. package/dist/job/comfyui.d.ts.map +1 -0
  55. package/dist/job/comfyui.js +454 -0
  56. package/dist/job/comfyui.js.map +1 -0
  57. package/dist/job/gradio.d.ts +48 -0
  58. package/dist/job/gradio.d.ts.map +1 -0
  59. package/dist/job/gradio.js +90 -0
  60. package/dist/job/gradio.js.map +1 -0
  61. package/dist/jobs.d.ts +153 -0
  62. package/dist/jobs.d.ts.map +1 -0
  63. package/dist/jobs.js +352 -0
  64. package/dist/jobs.js.map +1 -0
  65. package/dist/keys.d.ts +83 -0
  66. package/dist/keys.d.ts.map +1 -0
  67. package/dist/keys.js +69 -0
  68. package/dist/keys.js.map +1 -0
  69. package/dist/logs.d.ts +54 -0
  70. package/dist/logs.d.ts.map +1 -0
  71. package/dist/logs.js +256 -0
  72. package/dist/logs.js.map +1 -0
  73. package/dist/models.d.ts +15 -0
  74. package/dist/models.d.ts.map +1 -0
  75. package/dist/models.js +19 -0
  76. package/dist/models.js.map +1 -0
  77. package/dist/openclaw/gateway.d.ts +269 -0
  78. package/dist/openclaw/gateway.d.ts.map +1 -0
  79. package/dist/openclaw/gateway.js +2021 -0
  80. package/dist/openclaw/gateway.js.map +1 -0
  81. package/dist/renders.d.ts +187 -0
  82. package/dist/renders.d.ts.map +1 -0
  83. package/dist/renders.js +360 -0
  84. package/dist/renders.js.map +1 -0
  85. package/dist/user.d.ts +49 -0
  86. package/dist/user.d.ts.map +1 -0
  87. package/dist/user.js +57 -0
  88. package/dist/user.js.map +1 -0
  89. package/dist/voice.d.ts +31 -0
  90. package/dist/voice.d.ts.map +1 -0
  91. package/dist/voice.js +36 -0
  92. package/dist/voice.js.map +1 -0
  93. package/dist/x402.d.ts +79 -0
  94. package/dist/x402.d.ts.map +1 -0
  95. package/dist/x402.js +295 -0
  96. package/dist/x402.js.map +1 -0
  97. package/package.json +2 -1
package/dist/jobs.d.ts ADDED
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Jobs API - GPU job management
3
+ */
4
+ import type { HTTPClient } from './http.js';
5
+ import WebSocket from 'ws';
6
+ export interface Job {
7
+ jobId: string;
8
+ jobKey: string;
9
+ state: string;
10
+ gpuType: string;
11
+ gpuCount: number;
12
+ region: string;
13
+ constraints: Record<string, string> | null;
14
+ interruptible: boolean;
15
+ pricePerHour: number;
16
+ pricePerSecond: number;
17
+ dockerImage: string;
18
+ runtime: number;
19
+ elapsed: number;
20
+ timeLeft: number;
21
+ hostname: string | null;
22
+ coldBoot: boolean;
23
+ createdAt: number | null;
24
+ startedAt: number | null;
25
+ completedAt: number | null;
26
+ tags?: string[] | null;
27
+ }
28
+ export interface ExecResult {
29
+ jobId: string;
30
+ stdout: string;
31
+ stderr: string;
32
+ exitCode: number;
33
+ }
34
+ export interface GPUMetrics {
35
+ index: number;
36
+ name: string;
37
+ utilization: number;
38
+ memoryUsed: number;
39
+ memoryTotal: number;
40
+ temperature: number;
41
+ powerDraw: number;
42
+ }
43
+ export interface SystemMetrics {
44
+ cpuPercent: number;
45
+ cpuCores: number;
46
+ cpuUnixPercent: number;
47
+ memoryUsed: number;
48
+ memoryLimit: number;
49
+ }
50
+ export interface JobMetrics {
51
+ gpus: GPUMetrics[];
52
+ system: SystemMetrics | null;
53
+ }
54
+ export interface CreateJobOptions {
55
+ image: string;
56
+ command?: string;
57
+ gpuType?: string;
58
+ gpuCount?: number;
59
+ region?: string;
60
+ constraints?: Record<string, string>;
61
+ runtime?: number;
62
+ interruptible?: boolean;
63
+ env?: Record<string, string>;
64
+ ports?: Record<string, number>;
65
+ auth?: boolean;
66
+ registryAuth?: {
67
+ username: string;
68
+ password: string;
69
+ };
70
+ tags?: Record<string, string> | string[];
71
+ dockerfile?: string;
72
+ dryRun?: boolean;
73
+ }
74
+ export interface ListJobsOptions {
75
+ state?: string;
76
+ tags?: Record<string, string> | string[];
77
+ page?: number;
78
+ pageSize?: number;
79
+ }
80
+ export interface JobListPage {
81
+ jobs: Job[];
82
+ totalCount: number;
83
+ page: number;
84
+ pageSize: number;
85
+ }
86
+ export declare class Jobs {
87
+ private http;
88
+ constructor(http: HTTPClient);
89
+ private buildListParams;
90
+ /**
91
+ * List all jobs
92
+ */
93
+ list(state?: string, tags?: Record<string, string> | string[]): Promise<Job[]>;
94
+ list(options?: ListJobsOptions): Promise<Job[]>;
95
+ listPage(options?: ListJobsOptions): Promise<JobListPage>;
96
+ /**
97
+ * Get job details
98
+ */
99
+ get(jobId: string): Promise<Job>;
100
+ /**
101
+ * Create a new job
102
+ */
103
+ create(options: CreateJobOptions): Promise<Job>;
104
+ /**
105
+ * Cancel a job
106
+ */
107
+ cancel(jobId: string): Promise<any>;
108
+ /**
109
+ * Extend job runtime
110
+ */
111
+ extend(jobId: string, runtime: number): Promise<Job>;
112
+ /**
113
+ * Get job logs
114
+ */
115
+ logs(jobId: string): Promise<string>;
116
+ /**
117
+ * Get job GPU metrics
118
+ */
119
+ metrics(jobId: string): Promise<JobMetrics>;
120
+ /**
121
+ * Get job auth token
122
+ */
123
+ token(jobId: string): Promise<string>;
124
+ /**
125
+ * Execute a command non-interactively on a running job container.
126
+ */
127
+ exec(jobId: string, command: string, timeout?: number): Promise<ExecResult>;
128
+ /**
129
+ * Connect to a job shell via director WebSocket proxy.
130
+ */
131
+ shellConnect(jobId: string, shell?: string): Promise<WebSocket>;
132
+ }
133
+ /**
134
+ * Check if string looks like a UUID (job ID)
135
+ */
136
+ export declare function isUuid(s: string): boolean;
137
+ /**
138
+ * Find job by UUID via direct API call
139
+ */
140
+ export declare function findById(jobs: Jobs, jobId: string): Promise<Job | null>;
141
+ /**
142
+ * Find job by hostname (exact or prefix match)
143
+ */
144
+ export declare function findByHostname(jobList: Job[], hostname: string): Job | null;
145
+ /**
146
+ * Find job by IP address (extracted from hostname)
147
+ */
148
+ export declare function findByIp(jobList: Job[], ip: string): Promise<Job | null>;
149
+ /**
150
+ * Find a job by UUID, hostname, or IP address
151
+ */
152
+ export declare function findJob(jobs: Jobs, identifier: string, state?: string): Promise<Job | null>;
153
+ //# sourceMappingURL=jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
package/dist/jobs.js ADDED
@@ -0,0 +1,352 @@
1
+ import WebSocket from 'ws';
2
+ const TERMINAL_JOB_STATES = new Set(['succeeded', 'failed', 'terminated', 'canceled', 'cancelled']);
3
+ function parseRuntimeSeconds(value) {
4
+ const parsed = Number(value);
5
+ if (!Number.isFinite(parsed))
6
+ return null;
7
+ return Math.max(Math.trunc(parsed), 0);
8
+ }
9
+ function parseTimestampSeconds(value) {
10
+ if (value === null || value === undefined)
11
+ return null;
12
+ if (typeof value === 'number') {
13
+ return Number.isFinite(value) ? value : null;
14
+ }
15
+ if (value instanceof Date) {
16
+ return Number.isFinite(value.getTime()) ? value.getTime() / 1000 : null;
17
+ }
18
+ if (typeof value === 'string') {
19
+ const direct = Number(value);
20
+ if (Number.isFinite(direct)) {
21
+ return direct;
22
+ }
23
+ const parsed = Date.parse(value);
24
+ return Number.isFinite(parsed) ? parsed / 1000 : null;
25
+ }
26
+ return null;
27
+ }
28
+ function deriveRuntimeFields(data) {
29
+ const runtimeSeconds = parseRuntimeSeconds(data?.runtime);
30
+ if (runtimeSeconds === null) {
31
+ return { elapsed: 0, timeLeft: 0 };
32
+ }
33
+ const state = String(data?.state ?? '').trim().toLowerCase();
34
+ if (state === 'dry_run') {
35
+ return { elapsed: 0, timeLeft: runtimeSeconds };
36
+ }
37
+ const startedAt = parseTimestampSeconds(data?.started_at);
38
+ const createdAt = parseTimestampSeconds(data?.created_at);
39
+ const completedAt = parseTimestampSeconds(data?.completed_at);
40
+ let anchor = startedAt;
41
+ if (anchor === null && (state === 'running' || completedAt !== null || TERMINAL_JOB_STATES.has(state))) {
42
+ anchor = createdAt;
43
+ }
44
+ if (anchor === null) {
45
+ return { elapsed: 0, timeLeft: runtimeSeconds };
46
+ }
47
+ const endTime = completedAt ?? (Date.now() / 1000);
48
+ const elapsed = Math.max(Math.trunc(endTime - anchor), 0);
49
+ if (completedAt !== null || TERMINAL_JOB_STATES.has(state)) {
50
+ return { elapsed, timeLeft: 0 };
51
+ }
52
+ return { elapsed, timeLeft: Math.max(runtimeSeconds - elapsed, 0) };
53
+ }
54
+ function jobFromDict(data) {
55
+ const { elapsed, timeLeft } = deriveRuntimeFields(data);
56
+ return {
57
+ jobId: data.job_id || '',
58
+ jobKey: data.job_key || '',
59
+ state: data.state || '',
60
+ gpuType: data.gpu_type || '',
61
+ gpuCount: data.gpu_count || 1,
62
+ region: data.region || '',
63
+ constraints: data.constraints || null,
64
+ interruptible: data.interruptible !== false,
65
+ pricePerHour: data.price_per_hour || 0,
66
+ pricePerSecond: data.price_per_second || 0,
67
+ dockerImage: data.docker_image || '',
68
+ runtime: data.runtime || 0,
69
+ elapsed,
70
+ timeLeft,
71
+ hostname: data.hostname || null,
72
+ coldBoot: data.cold_boot ?? true,
73
+ createdAt: data.created_at || null,
74
+ startedAt: data.started_at || null,
75
+ completedAt: data.completed_at || null,
76
+ tags: data.tags || null,
77
+ };
78
+ }
79
+ function normalizeTags(tags) {
80
+ if (!tags)
81
+ return undefined;
82
+ if (Array.isArray(tags))
83
+ return [...tags];
84
+ return Object.entries(tags).map(([key, value]) => `${key}=${value}`);
85
+ }
86
+ function jobListPageFromDict(data) {
87
+ const jobs = Array.isArray(data?.jobs) ? data.jobs.map(jobFromDict) : [];
88
+ return {
89
+ jobs,
90
+ totalCount: Number(data?.total_count ?? jobs.length),
91
+ page: Number(data?.page ?? 1),
92
+ pageSize: Number(data?.page_size ?? (jobs.length || 50)),
93
+ };
94
+ }
95
+ function execResultFromDict(data) {
96
+ return {
97
+ jobId: data.job_id || '',
98
+ stdout: data.stdout || '',
99
+ stderr: data.stderr || '',
100
+ exitCode: data.exit_code ?? -1,
101
+ };
102
+ }
103
+ function gpuMetricsFromDict(data) {
104
+ return {
105
+ index: data.index || 0,
106
+ name: data.name || '',
107
+ utilization: data.utilization_gpu_percent || 0,
108
+ memoryUsed: data.memory_used_mb || 0,
109
+ memoryTotal: data.memory_total_mb || 0,
110
+ temperature: data.temperature_c || 0,
111
+ powerDraw: data.power_draw_w || 0,
112
+ };
113
+ }
114
+ function systemMetricsFromDict(data) {
115
+ return {
116
+ cpuPercent: data.cpu_percent || 0,
117
+ cpuCores: data.cpu_cores || 1,
118
+ cpuUnixPercent: data.cpu_unix_percent || data.cpu_percent || 0,
119
+ memoryUsed: data.memory_used_mb || 0,
120
+ memoryLimit: data.memory_limit_mb || 0,
121
+ };
122
+ }
123
+ function jobMetricsFromDict(data) {
124
+ return {
125
+ gpus: (data.gpus || []).map(gpuMetricsFromDict),
126
+ system: data.system ? systemMetricsFromDict(data.system) : null,
127
+ };
128
+ }
129
+ export class Jobs {
130
+ http;
131
+ constructor(http) {
132
+ this.http = http;
133
+ }
134
+ buildListParams(options = {}) {
135
+ const params = {};
136
+ if (options.state) {
137
+ params.state = options.state;
138
+ }
139
+ const normalizedTags = normalizeTags(options.tags);
140
+ if (normalizedTags && normalizedTags.length > 0) {
141
+ params.tag = normalizedTags;
142
+ }
143
+ if (options.page !== undefined) {
144
+ params.page = options.page;
145
+ }
146
+ if (options.pageSize !== undefined) {
147
+ params.page_size = options.pageSize;
148
+ }
149
+ return params;
150
+ }
151
+ async list(stateOrOptions, tags) {
152
+ let options;
153
+ if (typeof stateOrOptions === 'string') {
154
+ options = { state: stateOrOptions, tags };
155
+ }
156
+ else if (stateOrOptions) {
157
+ options = stateOrOptions;
158
+ }
159
+ else {
160
+ options = tags ? { tags } : {};
161
+ }
162
+ return (await this.listPage(options)).jobs;
163
+ }
164
+ async listPage(options = {}) {
165
+ const data = await this.http.get('/api/jobs', this.buildListParams(options));
166
+ if (typeof data === 'object' && data && Array.isArray(data.jobs)) {
167
+ return jobListPageFromDict(data);
168
+ }
169
+ const jobs = (data || []).map(jobFromDict);
170
+ return {
171
+ jobs,
172
+ totalCount: jobs.length,
173
+ page: options.page ?? 1,
174
+ pageSize: options.pageSize ?? (jobs.length || 50),
175
+ };
176
+ }
177
+ /**
178
+ * Get job details
179
+ */
180
+ async get(jobId) {
181
+ const data = await this.http.get(`/api/jobs/${jobId}`);
182
+ return jobFromDict(data);
183
+ }
184
+ /**
185
+ * Create a new job
186
+ */
187
+ async create(options) {
188
+ const { image, command, gpuType = 'l40s', gpuCount = 1, region, constraints, runtime, interruptible = true, env, ports, auth, registryAuth, tags, dockerfile, dryRun = false, } = options;
189
+ const payload = {
190
+ docker_image: image,
191
+ gpu_type: gpuType,
192
+ gpu_count: gpuCount,
193
+ interruptible,
194
+ command: command ? Buffer.from(command).toString('base64') : '',
195
+ };
196
+ if (region)
197
+ payload.region = region;
198
+ if (constraints)
199
+ payload.constraints = constraints;
200
+ if (runtime)
201
+ payload.runtime = runtime;
202
+ if (env)
203
+ payload.env_vars = env;
204
+ if (ports)
205
+ payload.ports = ports;
206
+ if (auth)
207
+ payload.auth = auth;
208
+ if (registryAuth)
209
+ payload.registry_auth = registryAuth;
210
+ const normalizedTags = normalizeTags(tags);
211
+ if (normalizedTags)
212
+ payload.tags = normalizedTags;
213
+ if (dockerfile)
214
+ payload.dockerfile = dockerfile;
215
+ if (dryRun)
216
+ payload.dry_run = true;
217
+ const data = await this.http.post('/api/jobs', payload);
218
+ return jobFromDict(data);
219
+ }
220
+ /**
221
+ * Cancel a job
222
+ */
223
+ async cancel(jobId) {
224
+ return await this.http.delete(`/api/jobs/${jobId}`);
225
+ }
226
+ /**
227
+ * Extend job runtime
228
+ */
229
+ async extend(jobId, runtime) {
230
+ const data = await this.http.patch(`/api/jobs/${jobId}`, { runtime });
231
+ return jobFromDict(data);
232
+ }
233
+ /**
234
+ * Get job logs
235
+ */
236
+ async logs(jobId) {
237
+ const data = await this.http.get(`/api/jobs/${jobId}/logs`);
238
+ return data.logs || '';
239
+ }
240
+ /**
241
+ * Get job GPU metrics
242
+ */
243
+ async metrics(jobId) {
244
+ const data = await this.http.get(`/api/jobs/${jobId}/metrics`);
245
+ return jobMetricsFromDict(data);
246
+ }
247
+ /**
248
+ * Get job auth token
249
+ */
250
+ async token(jobId) {
251
+ const data = await this.http.get(`/api/jobs/${jobId}/token`);
252
+ return data.token || '';
253
+ }
254
+ /**
255
+ * Execute a command non-interactively on a running job container.
256
+ */
257
+ async exec(jobId, command, timeout = 30) {
258
+ const data = await this.http.post(`/api/jobs/${jobId}/exec`, {
259
+ command,
260
+ timeout,
261
+ });
262
+ return execResultFromDict(data);
263
+ }
264
+ /**
265
+ * Connect to a job shell via director WebSocket proxy.
266
+ */
267
+ async shellConnect(jobId, shell = '/bin/bash') {
268
+ const job = await this.get(jobId);
269
+ const wsBase = this.http.baseUrl
270
+ .replace('https://', 'wss://')
271
+ .replace('http://', 'ws://')
272
+ .replace(/\/api$/, '');
273
+ const url = `${wsBase}/orchestra/ws/shell/${jobId}?token=${encodeURIComponent(job.jobKey)}&shell=${encodeURIComponent(shell)}`;
274
+ return await new Promise((resolve, reject) => {
275
+ const ws = new WebSocket(url);
276
+ const onError = (err) => reject(err);
277
+ ws.once('error', onError);
278
+ ws.once('open', () => {
279
+ ws.off('error', onError);
280
+ resolve(ws);
281
+ });
282
+ });
283
+ }
284
+ }
285
+ // Utility functions for finding jobs
286
+ /**
287
+ * Check if string looks like a UUID (job ID)
288
+ */
289
+ export function isUuid(s) {
290
+ return s.includes('-') && s.length > 30;
291
+ }
292
+ /**
293
+ * Find job by UUID via direct API call
294
+ */
295
+ export async function findById(jobs, jobId) {
296
+ try {
297
+ return await jobs.get(jobId);
298
+ }
299
+ catch {
300
+ return null;
301
+ }
302
+ }
303
+ /**
304
+ * Find job by hostname (exact or prefix match)
305
+ */
306
+ export function findByHostname(jobList, hostname) {
307
+ for (const job of jobList) {
308
+ if (job.hostname && (job.hostname === hostname || job.hostname.startsWith(hostname))) {
309
+ return job;
310
+ }
311
+ }
312
+ return null;
313
+ }
314
+ /**
315
+ * Find job by IP address (extracted from hostname)
316
+ */
317
+ export async function findByIp(jobList, ip) {
318
+ const dns = await import('dns').then(m => m.promises);
319
+ for (const job of jobList) {
320
+ if (!job.hostname)
321
+ continue;
322
+ try {
323
+ const addresses = await dns.resolve4(job.hostname);
324
+ if (addresses.includes(ip)) {
325
+ return job;
326
+ }
327
+ }
328
+ catch {
329
+ continue;
330
+ }
331
+ }
332
+ return null;
333
+ }
334
+ /**
335
+ * Find a job by UUID, hostname, or IP address
336
+ */
337
+ export async function findJob(jobs, identifier, state) {
338
+ // Try UUID first (direct API call)
339
+ if (isUuid(identifier)) {
340
+ return await findById(jobs, identifier);
341
+ }
342
+ // Get job list for hostname/IP search
343
+ const jobList = await jobs.list(state);
344
+ // Try hostname match
345
+ const byHostname = findByHostname(jobList, identifier);
346
+ if (byHostname) {
347
+ return byHostname;
348
+ }
349
+ // Try IP match (slower, requires DNS lookup)
350
+ return await findByIp(jobList, identifier);
351
+ }
352
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
package/dist/keys.d.ts ADDED
@@ -0,0 +1,83 @@
1
+ /**
2
+ * API Keys management
3
+ */
4
+ import type { HTTPClient } from './http.js';
5
+ export type ApiKeyBaselineValue = 'none' | 'self' | '*';
6
+ export interface ApiKeyBaselineFamily {
7
+ key: string;
8
+ label: string;
9
+ allowed: readonly ApiKeyBaselineValue[];
10
+ }
11
+ export declare const API_KEY_BASELINE_FAMILIES: readonly [{
12
+ readonly key: "api";
13
+ readonly label: "API Keys";
14
+ readonly allowed: readonly ["none", "self", "*"];
15
+ }, {
16
+ readonly key: "user";
17
+ readonly label: "Profile";
18
+ readonly allowed: readonly ["none", "self", "*"];
19
+ }, {
20
+ readonly key: "jobs";
21
+ readonly label: "Jobs";
22
+ readonly allowed: readonly ["none", "self", "*"];
23
+ }, {
24
+ readonly key: "renders";
25
+ readonly label: "Renders";
26
+ readonly allowed: readonly ["none", "self", "*"];
27
+ }, {
28
+ readonly key: "files";
29
+ readonly label: "Files";
30
+ readonly allowed: readonly ["none", "self", "*"];
31
+ }, {
32
+ readonly key: "agents";
33
+ readonly label: "Agents";
34
+ readonly allowed: readonly ["none", "self", "*"];
35
+ }, {
36
+ readonly key: "models";
37
+ readonly label: "Models";
38
+ readonly allowed: readonly ["none", "*"];
39
+ }, {
40
+ readonly key: "voice";
41
+ readonly label: "Voice";
42
+ readonly allowed: readonly ["none", "*"];
43
+ }, {
44
+ readonly key: "flow";
45
+ readonly label: "Flows";
46
+ readonly allowed: readonly ["none", "*"];
47
+ }];
48
+ export interface ApiKey {
49
+ keyId: string;
50
+ name: string;
51
+ tags: string[];
52
+ apiKey: string | null;
53
+ apiKeyPreview: string | null;
54
+ last4: string | null;
55
+ isActive: boolean;
56
+ createdAt: string;
57
+ lastUsedAt: string | null;
58
+ }
59
+ export declare class KeysAPI {
60
+ private http;
61
+ constructor(http: HTTPClient);
62
+ /**
63
+ * Create a new API key
64
+ */
65
+ create(name?: string, tags?: string[]): Promise<ApiKey>;
66
+ /**
67
+ * List all API keys (masked)
68
+ */
69
+ list(): Promise<ApiKey[]>;
70
+ /**
71
+ * Get a specific API key (masked)
72
+ */
73
+ get(keyId: string): Promise<ApiKey>;
74
+ /**
75
+ * Deactivate an API key (irreversible)
76
+ */
77
+ disable(keyId: string): Promise<any>;
78
+ /**
79
+ * Rename an API key
80
+ */
81
+ rename(keyId: string, name: string): Promise<ApiKey>;
82
+ }
83
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACzC;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUc,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAgBD,qBAAa,OAAO;IACN,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;OAEG;IACG,MAAM,CAAC,IAAI,GAAE,MAAkB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IASxE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK/B;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzC;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1C;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAI3D"}