@agentuity/sandbox 3.0.12 → 3.1.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 (122) hide show
  1. package/AGENTS.md +3 -3
  2. package/dist/api-reference.d.ts +1221 -0
  3. package/dist/api-reference.d.ts.map +1 -0
  4. package/dist/api-reference.js +1046 -0
  5. package/dist/api-reference.js.map +1 -0
  6. package/dist/base64.d.ts +2 -0
  7. package/dist/base64.d.ts.map +1 -0
  8. package/dist/base64.js +14 -0
  9. package/dist/base64.js.map +1 -0
  10. package/dist/client.d.ts +431 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +632 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/create.d.ts +203 -0
  15. package/dist/create.d.ts.map +1 -0
  16. package/dist/create.js +235 -0
  17. package/dist/create.js.map +1 -0
  18. package/dist/destroy.d.ts +23 -0
  19. package/dist/destroy.d.ts.map +1 -0
  20. package/dist/destroy.js +30 -0
  21. package/dist/destroy.js.map +1 -0
  22. package/dist/disk-checkpoint.d.ts +108 -0
  23. package/dist/disk-checkpoint.d.ts.map +1 -0
  24. package/dist/disk-checkpoint.js +124 -0
  25. package/dist/disk-checkpoint.js.map +1 -0
  26. package/dist/events.d.ts +56 -0
  27. package/dist/events.d.ts.map +1 -0
  28. package/dist/events.js +54 -0
  29. package/dist/events.js.map +1 -0
  30. package/dist/execute.d.ts +99 -0
  31. package/dist/execute.d.ts.map +1 -0
  32. package/dist/execute.js +138 -0
  33. package/dist/execute.js.map +1 -0
  34. package/dist/execution.d.ts +150 -0
  35. package/dist/execution.d.ts.map +1 -0
  36. package/dist/execution.js +120 -0
  37. package/dist/execution.js.map +1 -0
  38. package/dist/files.d.ts +283 -0
  39. package/dist/files.d.ts.map +1 -0
  40. package/dist/files.js +471 -0
  41. package/dist/files.js.map +1 -0
  42. package/dist/get.d.ts +288 -0
  43. package/dist/get.d.ts.map +1 -0
  44. package/dist/get.js +256 -0
  45. package/dist/get.js.map +1 -0
  46. package/dist/getStatus.d.ts +23 -0
  47. package/dist/getStatus.d.ts.map +1 -0
  48. package/dist/getStatus.js +53 -0
  49. package/dist/getStatus.js.map +1 -0
  50. package/dist/index.d.ts +42 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +22 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/job.d.ts +227 -0
  55. package/dist/job.d.ts.map +1 -0
  56. package/dist/job.js +109 -0
  57. package/dist/job.js.map +1 -0
  58. package/dist/list.d.ts +330 -0
  59. package/dist/list.d.ts.map +1 -0
  60. package/dist/list.js +209 -0
  61. package/dist/list.js.map +1 -0
  62. package/dist/pause.d.ts +39 -0
  63. package/dist/pause.d.ts.map +1 -0
  64. package/dist/pause.js +48 -0
  65. package/dist/pause.js.map +1 -0
  66. package/dist/resolve.d.ts +75 -0
  67. package/dist/resolve.d.ts.map +1 -0
  68. package/dist/resolve.js +76 -0
  69. package/dist/resolve.js.map +1 -0
  70. package/dist/resume.d.ts +23 -0
  71. package/dist/resume.d.ts.map +1 -0
  72. package/dist/resume.js +30 -0
  73. package/dist/resume.js.map +1 -0
  74. package/dist/run.d.ts +73 -0
  75. package/dist/run.d.ts.map +1 -0
  76. package/dist/run.js +568 -0
  77. package/dist/run.js.map +1 -0
  78. package/dist/runtime.d.ts +94 -0
  79. package/dist/runtime.d.ts.map +1 -0
  80. package/dist/runtime.js +82 -0
  81. package/dist/runtime.js.map +1 -0
  82. package/dist/snapshot-build.d.ts +48 -0
  83. package/dist/snapshot-build.d.ts.map +1 -0
  84. package/dist/snapshot-build.js +72 -0
  85. package/dist/snapshot-build.js.map +1 -0
  86. package/dist/snapshot.d.ts +596 -0
  87. package/dist/snapshot.d.ts.map +1 -0
  88. package/dist/snapshot.js +612 -0
  89. package/dist/snapshot.js.map +1 -0
  90. package/dist/types.d.ts +1010 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +853 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/util.d.ts +296 -0
  95. package/dist/util.d.ts.map +1 -0
  96. package/dist/util.js +234 -0
  97. package/dist/util.js.map +1 -0
  98. package/package.json +7 -2
  99. package/src/api-reference.ts +1094 -0
  100. package/src/base64.ts +14 -0
  101. package/src/client.ts +998 -0
  102. package/src/create.ts +273 -0
  103. package/src/destroy.ts +43 -0
  104. package/src/disk-checkpoint.ts +184 -0
  105. package/src/events.ts +72 -0
  106. package/src/execute.ts +167 -0
  107. package/src/execution.ts +152 -0
  108. package/src/files.ts +637 -0
  109. package/src/get.ts +291 -0
  110. package/src/getStatus.ts +72 -0
  111. package/src/index.ts +252 -18
  112. package/src/job.ts +161 -0
  113. package/src/list.ts +239 -0
  114. package/src/pause.ts +75 -0
  115. package/src/resolve.ts +96 -0
  116. package/src/resume.ts +41 -0
  117. package/src/run.ts +783 -0
  118. package/src/runtime.ts +106 -0
  119. package/src/snapshot-build.ts +94 -0
  120. package/src/snapshot.ts +791 -0
  121. package/src/types.ts +1033 -0
  122. package/src/util.ts +280 -0
package/dist/client.js ADDED
@@ -0,0 +1,632 @@
1
+ import { ExecuteOptionsSchema as CoreExecuteOptionsSchema, } from './types.js';
2
+ import { z } from 'zod';
3
+ import { APIClient } from '@agentuity/api';
4
+ import { getEnv } from '@agentuity/config';
5
+ import { sandboxCreate } from './create.js';
6
+ import { sandboxDestroy } from './destroy.js';
7
+ import { sandboxGet } from './get.js';
8
+ import { sandboxExecute } from './execute.js';
9
+ import { sandboxWriteFiles, sandboxReadFile, sandboxListFiles, sandboxMkDir, sandboxRmFile, sandboxRmDir, sandboxSetEnv, } from './files.js';
10
+ import { sandboxPause } from './pause.js';
11
+ import { sandboxResume } from './resume.js';
12
+ import { sandboxRun } from './run.js';
13
+ import { executionGet, executionList, } from './execution.js';
14
+ import { createMinimalLogger } from '@agentuity/client';
15
+ import { getServiceUrls } from '@agentuity/config';
16
+ import { writeAndDrain } from './util.js';
17
+ import { sandboxList } from './list.js';
18
+ import { runtimeList } from './runtime.js';
19
+ import { jobCreate, jobGet, jobList, jobStop } from './job.js';
20
+ import { diskCheckpointCreate, diskCheckpointList, diskCheckpointRestore, diskCheckpointDelete, } from './disk-checkpoint.js';
21
+ import { snapshotCreate, snapshotGet, snapshotList, snapshotDelete, snapshotTag, snapshotLineage, } from './snapshot.js';
22
+ import { sandboxEventList } from './events.js';
23
+ // Server-side long-poll wait duration per iteration (max 5 minutes supported by server)
24
+ const EXECUTION_WAIT_DURATION = '5m';
25
+ /** Terminal execution statuses that indicate the command has finished. */
26
+ const TERMINAL_STATUSES = new Set([
27
+ 'completed',
28
+ 'failed',
29
+ 'timeout',
30
+ 'cancelled',
31
+ ]);
32
+ /**
33
+ * Wait for execution completion using server-side long-polling with automatic retry.
34
+ *
35
+ * Each iteration asks the server to hold the connection for up to
36
+ * EXECUTION_WAIT_DURATION. If the execution is still running when the
37
+ * server-side wait expires, we loop and issue another long-poll request.
38
+ * This continues until the execution reaches a terminal state or the
39
+ * caller's AbortSignal fires.
40
+ */
41
+ async function waitForExecution(client, executionId, orgId, signal) {
42
+ while (true) {
43
+ if (signal?.aborted) {
44
+ throw new DOMException('The operation was aborted.', 'AbortError');
45
+ }
46
+ // Use server-side long-polling - the server will hold the connection
47
+ // until the execution reaches a terminal state or the wait duration expires.
48
+ // The signal is forwarded so the in-flight fetch is cancelled immediately
49
+ // when the caller aborts, rather than waiting the full poll duration.
50
+ const result = await executionGet(client, {
51
+ executionId,
52
+ orgId,
53
+ wait: EXECUTION_WAIT_DURATION,
54
+ signal,
55
+ });
56
+ // If the execution reached a terminal state, return immediately
57
+ if (TERMINAL_STATUSES.has(result.status)) {
58
+ return result;
59
+ }
60
+ // Non-terminal status (e.g., 'running', 'queued') — the server-side
61
+ // long-poll expired before the command finished. Loop to poll again.
62
+ }
63
+ }
64
+ /**
65
+ * Pipes a remote stream URL to a local writable stream with proper backpressure handling
66
+ */
67
+ async function pipeStreamToWritable(streamUrl, writable, signal) {
68
+ const response = await fetch(streamUrl, { signal });
69
+ if (!response.ok) {
70
+ throw new Error(`Failed to fetch stream: ${response.status} ${response.statusText}`);
71
+ }
72
+ if (!response.body) {
73
+ return;
74
+ }
75
+ const reader = response.body.getReader();
76
+ try {
77
+ while (true) {
78
+ const { done, value } = await reader.read();
79
+ if (done)
80
+ break;
81
+ if (value) {
82
+ await writeAndDrain(writable, value);
83
+ }
84
+ }
85
+ }
86
+ finally {
87
+ try {
88
+ await reader.cancel();
89
+ }
90
+ catch {
91
+ // Ignore cancel errors - stream may already be closed
92
+ }
93
+ reader.releaseLock();
94
+ }
95
+ }
96
+ /**
97
+ * Extended execute options that support piping output to writable streams
98
+ */
99
+ export const ExecuteOptionsSchema = CoreExecuteOptionsSchema.extend({
100
+ /** Pipe stdout/stderr to writable streams (e.g., process.stdout) */
101
+ pipe: z
102
+ .object({
103
+ stdout: z.custom().optional().describe('stdout writable stream'),
104
+ stderr: z.custom().optional().describe('stderr writable stream'),
105
+ })
106
+ .optional()
107
+ .describe('Pipe stdout/stderr to writable streams (e.g., process.stdout)'),
108
+ });
109
+ export const SandboxClientOptionsSchema = z.object({
110
+ /** API key for authentication. Defaults to AGENTUITY_SDK_KEY/AGENTUITY_CLI_KEY */
111
+ apiKey: z.string().optional().describe('API key for authentication'),
112
+ /** Base URL for the sandbox API */
113
+ url: z.string().optional().describe('Base URL for the sandbox API'),
114
+ /** Organization ID for multi-tenant operations */
115
+ orgId: z.string().optional().describe('Organization ID for multi-tenant operations'),
116
+ /** Custom logger instance */
117
+ logger: z.custom().optional().describe('Custom logger instance'),
118
+ });
119
+ /**
120
+ * I/O options for one-shot sandbox execution via run()
121
+ */
122
+ export const SandboxClientRunIOSchema = z.object({
123
+ /** AbortSignal to cancel the execution */
124
+ signal: z.custom().optional().describe('AbortSignal to cancel the execution'),
125
+ /** Readable stream for stdin input */
126
+ stdin: z.custom().optional().describe('Readable stream for stdin input'),
127
+ /** Writable stream for stdout output */
128
+ stdout: z.custom().optional().describe('Writable stream for stdout output'),
129
+ /** Writable stream for stderr output */
130
+ stderr: z.custom().optional().describe('Writable stream for stderr output'),
131
+ /** Optional logger override for this run */
132
+ logger: z.custom().optional().describe('Optional logger override for this run'),
133
+ });
134
+ /**
135
+ * Creates the method implementations shared by both create() and connect().
136
+ * Modelled after the similar helper in packages/runtime/src/services/sandbox/http.ts.
137
+ */
138
+ function createSandboxInstanceMethods(client, sandboxId, orgId) {
139
+ return {
140
+ async execute(executeOptions) {
141
+ const { pipe, ...coreOptions } = executeOptions;
142
+ const initialResult = await sandboxExecute(client, {
143
+ sandboxId,
144
+ options: coreOptions,
145
+ orgId,
146
+ signal: coreOptions.signal,
147
+ });
148
+ // If pipe options provided, stream the output to the writable streams
149
+ if (pipe) {
150
+ const streamPromises = [];
151
+ if (pipe.stdout && initialResult.stdoutStreamUrl) {
152
+ streamPromises.push(pipeStreamToWritable(initialResult.stdoutStreamUrl, pipe.stdout, coreOptions.signal));
153
+ }
154
+ if (pipe.stderr && initialResult.stderrStreamUrl) {
155
+ streamPromises.push(pipeStreamToWritable(initialResult.stderrStreamUrl, pipe.stderr, coreOptions.signal));
156
+ }
157
+ // Wait for all streams to complete
158
+ if (streamPromises.length > 0) {
159
+ await Promise.all(streamPromises);
160
+ }
161
+ }
162
+ // Wait for execution to complete and get final result with exit code
163
+ const finalResult = await waitForExecution(client, initialResult.executionId, orgId, coreOptions.signal);
164
+ return {
165
+ executionId: finalResult.executionId,
166
+ status: finalResult.status,
167
+ exitCode: finalResult.exitCode,
168
+ durationMs: finalResult.durationMs,
169
+ stdoutStreamUrl: initialResult.stdoutStreamUrl,
170
+ stderrStreamUrl: initialResult.stderrStreamUrl,
171
+ };
172
+ },
173
+ async writeFiles(files) {
174
+ const result = await sandboxWriteFiles(client, { sandboxId, files, orgId });
175
+ return result.filesWritten;
176
+ },
177
+ async readFile(path) {
178
+ return sandboxReadFile(client, { sandboxId, path, orgId });
179
+ },
180
+ async listFiles(path) {
181
+ const result = await sandboxListFiles(client, { sandboxId, path, orgId });
182
+ return result.files;
183
+ },
184
+ async mkDir(path, recursive) {
185
+ await sandboxMkDir(client, { sandboxId, path, recursive, orgId });
186
+ },
187
+ async rmFile(path) {
188
+ return sandboxRmFile(client, { sandboxId, path, orgId });
189
+ },
190
+ async rmDir(path, recursive) {
191
+ return sandboxRmDir(client, { sandboxId, path, recursive, orgId });
192
+ },
193
+ async setEnv(env) {
194
+ const result = await sandboxSetEnv(client, { sandboxId, env, orgId });
195
+ return result.env;
196
+ },
197
+ async get() {
198
+ return sandboxGet(client, { sandboxId, orgId });
199
+ },
200
+ async pause() {
201
+ return sandboxPause(client, { sandboxId, orgId });
202
+ },
203
+ async resume() {
204
+ return sandboxResume(client, { sandboxId, orgId });
205
+ },
206
+ async destroy() {
207
+ return sandboxDestroy(client, { sandboxId, orgId });
208
+ },
209
+ };
210
+ }
211
+ /**
212
+ * Creates the method implementations for JobInstance
213
+ */
214
+ function createJobInstanceMethods(client, sandboxId, jobId, orgId) {
215
+ return {
216
+ async get() {
217
+ return jobGet(client, { sandboxId, jobId, orgId });
218
+ },
219
+ async stop(force) {
220
+ return jobStop(client, { sandboxId, jobId, force, orgId });
221
+ },
222
+ };
223
+ }
224
+ /**
225
+ * Creates the method implementations for DiskCheckpointInstance
226
+ */
227
+ function createDiskCheckpointInstanceMethods(client, sandboxId, checkpointId, orgId) {
228
+ return {
229
+ async restore() {
230
+ return diskCheckpointRestore(client, { sandboxId, checkpointId, orgId });
231
+ },
232
+ async delete() {
233
+ return diskCheckpointDelete(client, { sandboxId, checkpointId, orgId });
234
+ },
235
+ };
236
+ }
237
+ /**
238
+ * Convenience client for sandbox operations.
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * // Interactive sandbox usage
243
+ * const client = new SandboxClient();
244
+ * const sandbox = await client.create();
245
+ * const result = await sandbox.execute({ command: ['echo', 'hello'] });
246
+ * await sandbox.destroy();
247
+ *
248
+ * // One-shot execution with streaming
249
+ * const result = await client.run(
250
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
251
+ * { stdout: process.stdout, stderr: process.stderr }
252
+ * );
253
+ * ```
254
+ */
255
+ export class SandboxClient {
256
+ #client;
257
+ #orgId;
258
+ #apiKey;
259
+ #region;
260
+ #logger;
261
+ constructor(options = {}) {
262
+ const apiKey = options.apiKey || getEnv('AGENTUITY_SDK_KEY') || getEnv('AGENTUITY_CLI_KEY');
263
+ const region = getEnv('AGENTUITY_REGION') ?? 'usc';
264
+ const serviceUrls = getServiceUrls(region);
265
+ const url = options.url ||
266
+ getEnv('AGENTUITY_SANDBOX_URL') ||
267
+ getEnv('AGENTUITY_CATALYST_URL') ||
268
+ getEnv('AGENTUITY_TRANSPORT_URL') ||
269
+ serviceUrls.sandbox;
270
+ const logger = options.logger ?? createMinimalLogger();
271
+ // Disable retries for sandbox operations - 409 Conflict means sandbox is busy,
272
+ // not a retryable rate limit. Retrying would waste ~360s (4 attempts × 90s timeout).
273
+ this.#client = new APIClient(url, logger, apiKey ?? '', { maxRetries: 0 });
274
+ this.#orgId = options.orgId;
275
+ this.#apiKey = apiKey;
276
+ this.#region = region;
277
+ this.#logger = logger;
278
+ }
279
+ /**
280
+ * Run a one-shot command in a new sandbox (creates, executes, destroys)
281
+ *
282
+ * This is a high-level convenience method that handles the full lifecycle:
283
+ * creating a sandbox, streaming I/O, polling for completion, and cleanup.
284
+ *
285
+ * @param options - Execution options including command and configuration
286
+ * @param io - Optional I/O streams and abort signal
287
+ * @returns The run result including exit code and duration
288
+ * @throws {Error} If stdin is provided without an API key
289
+ *
290
+ * @example
291
+ * ```typescript
292
+ * const client = new SandboxClient();
293
+ * const result = await client.run(
294
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
295
+ * { stdout: process.stdout, stderr: process.stderr }
296
+ * );
297
+ * console.log('Exit code:', result.exitCode);
298
+ * ```
299
+ */
300
+ async run(options, io = {}) {
301
+ if (io.stdin && !this.#apiKey) {
302
+ throw new Error('SandboxClient.run(): stdin streaming requires an API key');
303
+ }
304
+ return sandboxRun(this.#client, {
305
+ options,
306
+ orgId: this.#orgId,
307
+ region: this.#region,
308
+ apiKey: this.#apiKey,
309
+ signal: io.signal,
310
+ stdin: io.stdin,
311
+ stdout: io.stdout,
312
+ stderr: io.stderr,
313
+ logger: io.logger ?? this.#logger,
314
+ });
315
+ }
316
+ /**
317
+ * Create a new sandbox instance
318
+ *
319
+ * @param options - Optional sandbox configuration
320
+ * @returns A sandbox instance with execute and destroy methods
321
+ */
322
+ async create(options) {
323
+ const response = await sandboxCreate(this.#client, {
324
+ options,
325
+ orgId: this.#orgId,
326
+ });
327
+ return {
328
+ id: response.sandboxId,
329
+ status: response.status,
330
+ stdoutStreamUrl: response.stdoutStreamUrl,
331
+ stderrStreamUrl: response.stderrStreamUrl,
332
+ auditStreamUrl: response.auditStreamUrl,
333
+ ...createSandboxInstanceMethods(this.#client, response.sandboxId, this.#orgId),
334
+ };
335
+ }
336
+ /**
337
+ * Get sandbox information by ID
338
+ *
339
+ * @param sandboxId - The sandbox ID
340
+ * @returns Sandbox information
341
+ */
342
+ async get(sandboxId) {
343
+ return sandboxGet(this.#client, { sandboxId, orgId: this.#orgId });
344
+ }
345
+ /**
346
+ * Destroy a sandbox by ID
347
+ *
348
+ * @param sandboxId - The sandbox ID to destroy
349
+ */
350
+ async destroy(sandboxId) {
351
+ return sandboxDestroy(this.#client, { sandboxId, orgId: this.#orgId });
352
+ }
353
+ /**
354
+ * Write files to a sandbox workspace
355
+ *
356
+ * @param sandboxId - The sandbox ID
357
+ * @param files - Array of files to write with path and content
358
+ * @param signal - Optional AbortSignal to cancel the operation
359
+ * @returns The number of files written
360
+ */
361
+ async writeFiles(sandboxId, files, signal) {
362
+ const result = await sandboxWriteFiles(this.#client, {
363
+ sandboxId,
364
+ files,
365
+ orgId: this.#orgId,
366
+ signal,
367
+ });
368
+ return result.filesWritten;
369
+ }
370
+ /**
371
+ * Read a file from a sandbox workspace
372
+ *
373
+ * @param sandboxId - The sandbox ID
374
+ * @param path - Path to the file relative to the sandbox workspace
375
+ * @param signal - Optional AbortSignal to cancel the operation
376
+ * @returns A ReadableStream of the file contents
377
+ */
378
+ async readFile(sandboxId, path, signal) {
379
+ return sandboxReadFile(this.#client, {
380
+ sandboxId,
381
+ path,
382
+ orgId: this.#orgId,
383
+ signal,
384
+ });
385
+ }
386
+ /**
387
+ * Get a full sandbox instance for an existing sandbox by ID.
388
+ *
389
+ * Unlike `get()` which returns read-only metadata, `connect()` returns
390
+ * a `SandboxInstance` with `execute()`, `writeFiles()`, and all other
391
+ * interaction methods — allowing you to resume working with a sandbox
392
+ * using just its ID.
393
+ *
394
+ * @param sandboxId - The sandbox ID to connect to
395
+ * @returns A sandbox instance with all interaction methods
396
+ */
397
+ async connect(sandboxId) {
398
+ const info = await sandboxGet(this.#client, { sandboxId, orgId: this.#orgId });
399
+ return {
400
+ id: info.sandboxId,
401
+ status: info.status,
402
+ stdoutStreamUrl: info.stdoutStreamUrl,
403
+ stderrStreamUrl: info.stderrStreamUrl,
404
+ auditStreamUrl: info.auditStreamUrl,
405
+ ...createSandboxInstanceMethods(this.#client, info.sandboxId, this.#orgId),
406
+ };
407
+ }
408
+ /**
409
+ * Pause a running sandbox, creating a checkpoint of its current state
410
+ *
411
+ * @param sandboxId - The sandbox ID to pause
412
+ */
413
+ async pause(sandboxId) {
414
+ return sandboxPause(this.#client, { sandboxId, orgId: this.#orgId });
415
+ }
416
+ /**
417
+ * Resume a paused or evacuated sandbox from its checkpoint
418
+ *
419
+ * @param sandboxId - The sandbox ID to resume
420
+ */
421
+ async resume(sandboxId) {
422
+ return sandboxResume(this.#client, { sandboxId, orgId: this.#orgId });
423
+ }
424
+ // ===== List Operations =====
425
+ /**
426
+ * List all sandboxes with optional filtering and pagination
427
+ *
428
+ * @param params - Optional parameters for filtering by project, status, and pagination
429
+ * @returns Paginated list of sandboxes with total count
430
+ */
431
+ async list(params) {
432
+ return sandboxList(this.#client, { ...params, orgId: this.#orgId });
433
+ }
434
+ /**
435
+ * List available sandbox runtimes
436
+ *
437
+ * @param params - Optional parameters for pagination
438
+ * @returns List of runtimes with total count
439
+ */
440
+ async listRuntimes(params) {
441
+ return runtimeList(this.#client, { ...params, orgId: this.#orgId });
442
+ }
443
+ // ===== Job Operations =====
444
+ /**
445
+ * Create a new job in a sandbox
446
+ *
447
+ * @param sandboxId - The sandbox ID where the job should run
448
+ * @param options - Job creation options including command
449
+ * @returns A job instance with get() and stop() methods
450
+ */
451
+ async createJob(sandboxId, options) {
452
+ const job = await jobCreate(this.#client, { sandboxId, options, orgId: this.#orgId });
453
+ return {
454
+ id: job.jobId,
455
+ sandboxId,
456
+ status: job.status,
457
+ ...createJobInstanceMethods(this.#client, sandboxId, job.jobId, this.#orgId),
458
+ };
459
+ }
460
+ /**
461
+ * Get a job instance by ID
462
+ *
463
+ * @param sandboxId - The sandbox ID
464
+ * @param jobId - The job ID
465
+ * @returns A job instance with get() and stop() methods
466
+ */
467
+ async getJob(sandboxId, jobId) {
468
+ const job = await jobGet(this.#client, { sandboxId, jobId, orgId: this.#orgId });
469
+ return {
470
+ id: job.jobId,
471
+ sandboxId,
472
+ status: job.status,
473
+ ...createJobInstanceMethods(this.#client, sandboxId, job.jobId, this.#orgId),
474
+ };
475
+ }
476
+ /**
477
+ * List all jobs in a sandbox
478
+ *
479
+ * @param sandboxId - The sandbox ID
480
+ * @param limit - Maximum number of results
481
+ * @returns List of jobs
482
+ */
483
+ async listJobs(sandboxId, limit) {
484
+ return jobList(this.#client, { sandboxId, limit, orgId: this.#orgId });
485
+ }
486
+ // ===== Disk Checkpoint Operations =====
487
+ /**
488
+ * Create a disk checkpoint of a sandbox
489
+ *
490
+ * @param sandboxId - The sandbox ID
491
+ * @param name - Name for the checkpoint
492
+ * @returns A checkpoint instance with restore() and delete() methods
493
+ */
494
+ async createDiskCheckpoint(sandboxId, name) {
495
+ const checkpoint = await diskCheckpointCreate(this.#client, {
496
+ sandboxId,
497
+ name,
498
+ orgId: this.#orgId,
499
+ });
500
+ return {
501
+ id: checkpoint.id,
502
+ name: checkpoint.name,
503
+ sandboxId,
504
+ createdAt: checkpoint.createdAt,
505
+ parent: checkpoint.parent,
506
+ ...createDiskCheckpointInstanceMethods(this.#client, sandboxId, checkpoint.id, this.#orgId),
507
+ };
508
+ }
509
+ /**
510
+ * List all disk checkpoints for a sandbox
511
+ *
512
+ * @param sandboxId - The sandbox ID
513
+ * @returns List of checkpoint info objects
514
+ */
515
+ async listDiskCheckpoints(sandboxId) {
516
+ return diskCheckpointList(this.#client, { sandboxId, orgId: this.#orgId });
517
+ }
518
+ /**
519
+ * Get a disk checkpoint instance by ID
520
+ *
521
+ * @param sandboxId - The sandbox ID
522
+ * @param checkpointId - The checkpoint ID
523
+ * @returns A checkpoint instance with restore() and delete() methods
524
+ */
525
+ async getDiskCheckpoint(sandboxId, checkpointId) {
526
+ const checkpoints = await diskCheckpointList(this.#client, {
527
+ sandboxId,
528
+ orgId: this.#orgId,
529
+ });
530
+ const checkpoint = checkpoints.find((c) => c.id === checkpointId);
531
+ if (!checkpoint) {
532
+ throw new Error(`Checkpoint ${checkpointId} not found in sandbox ${sandboxId}`);
533
+ }
534
+ return {
535
+ id: checkpoint.id,
536
+ name: checkpoint.name,
537
+ sandboxId,
538
+ createdAt: checkpoint.createdAt,
539
+ parent: checkpoint.parent,
540
+ ...createDiskCheckpointInstanceMethods(this.#client, sandboxId, checkpoint.id, this.#orgId),
541
+ };
542
+ }
543
+ // ===== Snapshot Operations =====
544
+ /**
545
+ * Create a snapshot of a sandbox
546
+ *
547
+ * @param sandboxId - The sandbox ID to snapshot
548
+ * @param params - Optional snapshot parameters (name, tag, public, etc.)
549
+ * @returns The created snapshot information
550
+ */
551
+ async createSnapshot(sandboxId, params) {
552
+ return snapshotCreate(this.#client, { sandboxId, ...params, orgId: this.#orgId });
553
+ }
554
+ /**
555
+ * Get snapshot information by ID
556
+ *
557
+ * @param snapshotId - The snapshot ID
558
+ * @returns Snapshot information
559
+ */
560
+ async getSnapshot(snapshotId) {
561
+ return snapshotGet(this.#client, { snapshotId, orgId: this.#orgId });
562
+ }
563
+ /**
564
+ * List snapshots with optional filtering and pagination
565
+ *
566
+ * @param params - Optional parameters for filtering and pagination
567
+ * @returns Paginated list of snapshots
568
+ */
569
+ async listSnapshots(params) {
570
+ return snapshotList(this.#client, { ...params, orgId: this.#orgId });
571
+ }
572
+ /**
573
+ * Delete a snapshot
574
+ *
575
+ * @param snapshotId - The snapshot ID to delete
576
+ */
577
+ async deleteSnapshot(snapshotId) {
578
+ return snapshotDelete(this.#client, { snapshotId, orgId: this.#orgId });
579
+ }
580
+ /**
581
+ * Update the tag on a snapshot
582
+ *
583
+ * @param snapshotId - The snapshot ID
584
+ * @param tag - New tag (or null to remove)
585
+ * @returns Updated snapshot information
586
+ */
587
+ async tagSnapshot(snapshotId, tag) {
588
+ return snapshotTag(this.#client, { snapshotId, tag, orgId: this.#orgId });
589
+ }
590
+ /**
591
+ * Get the lineage (ancestry chain) of a snapshot
592
+ *
593
+ * @param params - Parameters specifying which snapshot to get lineage for
594
+ * @returns Ordered list of snapshots in the lineage
595
+ */
596
+ async getSnapshotLineage(params) {
597
+ return snapshotLineage(this.#client, { ...params, orgId: this.#orgId });
598
+ }
599
+ // ===== Execution Operations =====
600
+ /**
601
+ * Get execution information by ID
602
+ *
603
+ * @param executionId - The execution ID
604
+ * @param wait - Optional wait duration for long-polling (e.g., "5m")
605
+ * @returns Execution information
606
+ */
607
+ async getExecution(executionId, wait) {
608
+ return executionGet(this.#client, { executionId, wait, orgId: this.#orgId });
609
+ }
610
+ /**
611
+ * List executions for a sandbox
612
+ *
613
+ * @param sandboxId - The sandbox ID
614
+ * @param limit - Maximum number of results
615
+ * @returns List of executions
616
+ */
617
+ async listExecutions(sandboxId, limit) {
618
+ return executionList(this.#client, { sandboxId, limit, orgId: this.#orgId });
619
+ }
620
+ // ===== Event Operations =====
621
+ /**
622
+ * List events for a sandbox
623
+ *
624
+ * @param sandboxId - The sandbox ID
625
+ * @param params - Optional parameters for limit and sort direction
626
+ * @returns List of sandbox events
627
+ */
628
+ async listEvents(sandboxId, params) {
629
+ return sandboxEventList(this.#client, { sandboxId, ...params, orgId: this.#orgId });
630
+ }
631
+ }
632
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}