agentbox-sdk 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/cli.js ADDED
@@ -0,0 +1,401 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ toShellCommand
4
+ } from "./chunk-JFDP556Q.js";
5
+
6
+ // src/sandbox-images/build.ts
7
+ import { existsSync } from "fs";
8
+ import path from "path";
9
+ import { pathToFileURL } from "url";
10
+ import { Daytona, Image as DaytonaImage } from "@daytonaio/sdk";
11
+ import Docker from "dockerode";
12
+ import { ModalClient } from "modal";
13
+ import tar from "tar-stream";
14
+
15
+ // src/sandbox-images/utils.ts
16
+ import { createHash } from "crypto";
17
+ function sandboxImageDefinitionToDockerfileCommands(image) {
18
+ const commands = [];
19
+ for (const [name, value] of Object.entries(image.env ?? {})) {
20
+ commands.push(`ENV ${name}=${JSON.stringify(value)}`);
21
+ }
22
+ for (const command of image.run ?? []) {
23
+ commands.push(`RUN ${command}`);
24
+ }
25
+ if (image.workdir) {
26
+ commands.push(`WORKDIR ${image.workdir}`);
27
+ }
28
+ if (image.cmd) {
29
+ commands.push(`CMD ${JSON.stringify(image.cmd)}`);
30
+ }
31
+ return commands;
32
+ }
33
+ function sandboxImageDefinitionToDockerfile(image) {
34
+ return [
35
+ `FROM ${image.base}`,
36
+ ...sandboxImageDefinitionToDockerfileCommands(image)
37
+ ].join("\n").concat("\n");
38
+ }
39
+ function buildSandboxImageReference(image, prefix = "agentbox") {
40
+ const hash = createHash("sha256").update(JSON.stringify(image)).digest("hex").slice(0, 12);
41
+ const name = sanitizeName(image.name ?? "sandbox-image");
42
+ return `${prefix}/${name}:${hash}`;
43
+ }
44
+ function buildDaytonaSnapshotName(image) {
45
+ const hash = createHash("sha256").update(JSON.stringify(image)).digest("hex").slice(0, 12);
46
+ const name = sanitizeName(image.name ?? "sandbox-image").replace(/\//g, "-");
47
+ return `${name}-${hash}`;
48
+ }
49
+ function buildE2bTemplateReference(image, prefix = "agentbox") {
50
+ const hash = createHash("sha256").update(JSON.stringify(image)).digest("hex").slice(0, 12);
51
+ const safePrefix = sanitizeName(prefix).replace(/\//g, "-");
52
+ const safeName = sanitizeName(image.name ?? "sandbox-image").replace(
53
+ /\//g,
54
+ "-"
55
+ );
56
+ return `${safePrefix}-${safeName}:${hash}`;
57
+ }
58
+ function sanitizeName(value) {
59
+ return value.toLowerCase().replace(/[^a-z0-9._/-]+/g, "-").replace(/^-+|-+$/g, "");
60
+ }
61
+
62
+ // src/sandbox-images/build.ts
63
+ var e2bModulePromise;
64
+ async function loadE2bModule() {
65
+ if (!e2bModulePromise) {
66
+ e2bModulePromise = import("e2b");
67
+ }
68
+ return e2bModulePromise;
69
+ }
70
+ function getBuildEnv(options, key) {
71
+ return options.env?.[key] ?? process.env[key];
72
+ }
73
+ async function buildSandboxImage(options) {
74
+ const definition = await loadSandboxImageDefinition(
75
+ options.preset,
76
+ options.file,
77
+ options.cwd
78
+ );
79
+ switch (options.provider) {
80
+ case "local-docker":
81
+ return buildLocalDockerImage(definition, options);
82
+ case "modal":
83
+ return buildModalImage(definition, options);
84
+ case "daytona":
85
+ return buildDaytonaSnapshot(definition, options);
86
+ case "e2b":
87
+ return buildE2bTemplate(definition, options);
88
+ }
89
+ }
90
+ async function loadSandboxImageDefinition(preset, file, cwd = process.cwd()) {
91
+ if (!preset && !file) {
92
+ throw new Error("Provide either --preset or --file.");
93
+ }
94
+ if (preset && file) {
95
+ throw new Error("Use either --preset or --file, not both.");
96
+ }
97
+ const target = preset ? resolveBuiltInImageUrl(preset) : pathToFileURL(path.resolve(cwd, file));
98
+ const module = await import(target.href);
99
+ const definition = module.default;
100
+ if (!definition?.base) {
101
+ throw new Error(
102
+ "Sandbox image definitions must export a default object with a base image."
103
+ );
104
+ }
105
+ return definition;
106
+ }
107
+ function resolveBuiltInImageUrl(preset) {
108
+ const candidates = [
109
+ new URL(`../../images/${preset}.mjs`, import.meta.url),
110
+ new URL(`../images/${preset}.mjs`, import.meta.url)
111
+ ];
112
+ for (const candidate of candidates) {
113
+ if (existsSync(candidate)) {
114
+ return candidate;
115
+ }
116
+ }
117
+ return new URL(`../../images/${preset}.mjs`, import.meta.url);
118
+ }
119
+ async function buildLocalDockerImage(definition, options) {
120
+ const client = new Docker();
121
+ const tag = options.imageName ?? buildSandboxImageReference(definition, "agentbox");
122
+ const pack = tar.pack();
123
+ pack.entry(
124
+ { name: "Dockerfile" },
125
+ sandboxImageDefinitionToDockerfile(definition)
126
+ );
127
+ pack.finalize();
128
+ const stream = await client.buildImage(pack, {
129
+ t: tag,
130
+ dockerfile: "Dockerfile",
131
+ pull: true
132
+ });
133
+ await new Promise((resolve, reject) => {
134
+ client.modem.followProgress(
135
+ stream,
136
+ (error, output) => {
137
+ if (error) {
138
+ reject(error);
139
+ return;
140
+ }
141
+ const messages = Array.isArray(output) ? output : [];
142
+ for (const message of messages) {
143
+ if (typeof message.stream === "string") {
144
+ options.log?.(message.stream.trimEnd());
145
+ }
146
+ if (typeof message.error === "string") {
147
+ reject(new Error(message.error));
148
+ return;
149
+ }
150
+ }
151
+ resolve();
152
+ },
153
+ (event) => {
154
+ if (typeof event.stream === "string") {
155
+ options.log?.(event.stream.trimEnd());
156
+ }
157
+ }
158
+ );
159
+ });
160
+ options.log?.(`Built local-docker image ${tag}`);
161
+ return tag;
162
+ }
163
+ async function buildModalImage(definition, options) {
164
+ const tokenId = getBuildEnv(options, "MODAL_TOKEN_ID");
165
+ const tokenSecret = getBuildEnv(options, "MODAL_TOKEN_SECRET");
166
+ if (!tokenId || !tokenSecret) {
167
+ throw new Error("MODAL_TOKEN_ID and MODAL_TOKEN_SECRET are required.");
168
+ }
169
+ const client = new ModalClient({
170
+ tokenId,
171
+ tokenSecret,
172
+ environment: getBuildEnv(options, "MODAL_ENVIRONMENT"),
173
+ endpoint: getBuildEnv(options, "MODAL_ENDPOINT")
174
+ });
175
+ try {
176
+ const appName = options.modalAppName ?? getBuildEnv(options, "AGENTBOX_MODAL_APP_NAME") ?? "agentbox-images";
177
+ const app = await client.apps.fromName(appName, {
178
+ createIfMissing: true,
179
+ environment: getBuildEnv(options, "MODAL_ENVIRONMENT")
180
+ });
181
+ let image = client.images.fromRegistry(definition.base);
182
+ const commands = sandboxImageDefinitionToDockerfileCommands(definition);
183
+ if (commands.length > 0) {
184
+ image = image.dockerfileCommands(commands);
185
+ }
186
+ const builtImage = await image.build(app);
187
+ options.log?.(`Built Modal image ${builtImage.imageId}`);
188
+ return builtImage.imageId;
189
+ } finally {
190
+ try {
191
+ client.close();
192
+ } catch {
193
+ }
194
+ }
195
+ }
196
+ async function buildDaytonaSnapshot(definition, options) {
197
+ if (!definition.resources?.cpu || !definition.resources?.memoryMiB) {
198
+ throw new Error(
199
+ "Daytona image definitions must include resources.cpu and resources.memoryMiB."
200
+ );
201
+ }
202
+ if (!getBuildEnv(options, "DAYTONA_API_KEY") && !getBuildEnv(options, "DAYTONA_JWT_TOKEN")) {
203
+ throw new Error("DAYTONA_API_KEY or DAYTONA_JWT_TOKEN is required.");
204
+ }
205
+ const client = new Daytona({
206
+ apiKey: getBuildEnv(options, "DAYTONA_API_KEY"),
207
+ jwtToken: getBuildEnv(options, "DAYTONA_JWT_TOKEN"),
208
+ organizationId: getBuildEnv(options, "DAYTONA_ORGANIZATION_ID"),
209
+ apiUrl: getBuildEnv(options, "DAYTONA_API_URL"),
210
+ target: getBuildEnv(options, "DAYTONA_TARGET")
211
+ });
212
+ let image = DaytonaImage.base(definition.base);
213
+ if (definition.env) {
214
+ image = image.env(definition.env);
215
+ }
216
+ for (const command of definition.run ?? []) {
217
+ image = image.runCommands(command);
218
+ }
219
+ if (definition.workdir) {
220
+ image = image.workdir(definition.workdir);
221
+ }
222
+ if (definition.cmd) {
223
+ image = image.cmd(definition.cmd);
224
+ }
225
+ const snapshotName = options.imageName ?? buildDaytonaSnapshotName(definition);
226
+ try {
227
+ const existing = await client.snapshot.get(snapshotName);
228
+ if (existing.state === "active") {
229
+ options.log?.(`Reusing existing Daytona snapshot ${existing.name}`);
230
+ return existing.name;
231
+ }
232
+ } catch {
233
+ }
234
+ const snapshot = await client.snapshot.create(
235
+ {
236
+ name: snapshotName,
237
+ image,
238
+ resources: {
239
+ cpu: definition.resources.cpu,
240
+ memory: definition.resources.memoryMiB / 1024
241
+ }
242
+ },
243
+ {
244
+ onLogs: (chunk) => options.log?.(chunk),
245
+ timeout: 0
246
+ }
247
+ );
248
+ try {
249
+ const activated = await client.snapshot.activate(snapshot);
250
+ options.log?.(`Built Daytona snapshot ${activated.name}`);
251
+ return activated.name;
252
+ } catch (error) {
253
+ const message = error instanceof Error ? error.message : String(error);
254
+ if (message.includes("already active")) {
255
+ options.log?.(`Built Daytona snapshot ${snapshot.name}`);
256
+ return snapshot.name;
257
+ }
258
+ throw error;
259
+ }
260
+ }
261
+ async function buildE2bTemplate(definition, options) {
262
+ if (!getBuildEnv(options, "E2B_API_KEY") && !getBuildEnv(options, "E2B_ACCESS_TOKEN")) {
263
+ throw new Error("E2B_API_KEY or E2B_ACCESS_TOKEN is required.");
264
+ }
265
+ const { Template, waitForTimeout } = await loadE2bModule();
266
+ let template = Template().fromImage(definition.base).setUser("root");
267
+ if (definition.env) {
268
+ template = template.setEnvs(definition.env);
269
+ }
270
+ if (definition.run?.length) {
271
+ template = template.runCmd(definition.run);
272
+ }
273
+ if (definition.workdir) {
274
+ template = template.setWorkdir(definition.workdir);
275
+ }
276
+ const finalTemplate = definition.cmd?.length ? template.setStartCmd(toShellCommand(definition.cmd), waitForTimeout(1e3)) : template;
277
+ const builtTemplate = await Template.build(
278
+ finalTemplate,
279
+ options.imageName ?? buildE2bTemplateReference(definition),
280
+ {
281
+ apiKey: getBuildEnv(options, "E2B_API_KEY"),
282
+ accessToken: getBuildEnv(options, "E2B_ACCESS_TOKEN"),
283
+ domain: getBuildEnv(options, "E2B_DOMAIN"),
284
+ cpuCount: definition.resources?.cpu,
285
+ memoryMB: definition.resources?.memoryMiB,
286
+ onBuildLogs: (entry) => {
287
+ options.log?.(`[${entry.level}] ${entry.message}`);
288
+ }
289
+ }
290
+ );
291
+ const reference = builtTemplate.name;
292
+ options.log?.(`Built E2B template ${reference}`);
293
+ return reference;
294
+ }
295
+
296
+ // src/cli.ts
297
+ async function main() {
298
+ const args = process.argv.slice(2);
299
+ if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
300
+ printHelp();
301
+ return;
302
+ }
303
+ const [command, subcommand, ...rest] = args;
304
+ if (!((command === "image" || command === "sandbox-image") && subcommand === "build")) {
305
+ printHelp();
306
+ process.exitCode = 1;
307
+ return;
308
+ }
309
+ const options = parseOptions(rest);
310
+ if (!options.provider || !options.preset && !options.file) {
311
+ printHelp();
312
+ process.exitCode = 1;
313
+ return;
314
+ }
315
+ const reference = await buildSandboxImage({
316
+ provider: options.provider,
317
+ preset: options.preset,
318
+ file: options.file,
319
+ imageName: options.imageName,
320
+ modalAppName: options.modalAppName,
321
+ log: (chunk) => {
322
+ process.stderr.write(chunk.endsWith("\n") ? chunk : `${chunk}
323
+ `);
324
+ }
325
+ });
326
+ process.stdout.write(`${reference}
327
+ `);
328
+ }
329
+ function parseOptions(args) {
330
+ const options = {};
331
+ for (let i = 0; i < args.length; i += 1) {
332
+ const arg = args[i];
333
+ const next = args[i + 1];
334
+ if (!arg || !arg.startsWith("--")) {
335
+ throw new Error(`Unexpected argument: ${arg}`);
336
+ }
337
+ if (!next) {
338
+ throw new Error(`Missing value for ${arg}`);
339
+ }
340
+ switch (arg) {
341
+ case "--provider":
342
+ if (!isSandboxProviderName(next)) {
343
+ throw new Error(`Unsupported sandbox provider: ${next}`);
344
+ }
345
+ options.provider = next;
346
+ i += 1;
347
+ break;
348
+ case "--preset":
349
+ if (!isBuiltInImageName(next)) {
350
+ throw new Error(`Unknown built-in image preset: ${next}`);
351
+ }
352
+ options.preset = next;
353
+ i += 1;
354
+ break;
355
+ case "--file":
356
+ options.file = next;
357
+ i += 1;
358
+ break;
359
+ case "--image-name":
360
+ options.imageName = next;
361
+ i += 1;
362
+ break;
363
+ case "--modal-app-name":
364
+ options.modalAppName = next;
365
+ i += 1;
366
+ break;
367
+ default:
368
+ throw new Error(`Unknown option: ${arg}`);
369
+ }
370
+ }
371
+ return options;
372
+ }
373
+ function isSandboxProviderName(value) {
374
+ return value === "local-docker" || value === "modal" || value === "daytona" || value === "e2b";
375
+ }
376
+ function isBuiltInImageName(value) {
377
+ return value === "browser-agent" || value === "computer-use";
378
+ }
379
+ function printHelp() {
380
+ process.stdout.write(`agentbox
381
+
382
+ Usage:
383
+ agentbox image build --provider <local-docker|modal|daytona|e2b> --preset <browser-agent|computer-use>
384
+ agentbox image build --provider <local-docker|modal|daytona|e2b> --file <path>
385
+
386
+ Options:
387
+ --image-name <name> Override the built artifact name
388
+ --modal-app-name <name> Modal app used for image builds
389
+
390
+ Environment:
391
+ Modal: MODAL_TOKEN_ID, MODAL_TOKEN_SECRET, MODAL_ENVIRONMENT?, MODAL_ENDPOINT?
392
+ Daytona: DAYTONA_API_KEY or DAYTONA_JWT_TOKEN, DAYTONA_ORGANIZATION_ID?, DAYTONA_API_URL?, DAYTONA_TARGET?
393
+ E2B: E2B_API_KEY, E2B_DOMAIN?, E2B_ACCESS_TOKEN?
394
+ `);
395
+ }
396
+ void main().catch((error) => {
397
+ const message = error instanceof Error ? error.message : String(error);
398
+ process.stderr.write(`${message}
399
+ `);
400
+ process.exitCode = 1;
401
+ });
@@ -0,0 +1,6 @@
1
+ export { A as AISDKEvent, M as MessageCompletedEvent, N as MessageInjectedEvent, O as MessageStartedEvent, P as NormalizedAgentEvent, Q as NormalizedAgentEventBase, R as NormalizedAgentEventType, X as PermissionRequestedEvent, Y as PermissionResolvedEvent, Z as RawAgentEvent, _ as ReasoningDeltaEvent, a0 as RunCompletedEvent, a1 as RunErrorEvent, a2 as RunStartedEvent, a3 as TextDeltaEvent, a5 as ToolCallCompletedEvent, a6 as ToolCallDeltaEvent, a7 as ToolCallStartedEvent, aa as createNormalizedEvent, ab as normalizeRawAgentEvent, ac as toAISDKEvent, ad as toAISDKStream } from '../types-BwcoN0n-.js';
2
+ import '../Sandbox-DTprxRZf.js';
3
+ import 'e2b';
4
+ import '@daytonaio/sdk';
5
+ import 'modal';
6
+ import 'dockerode';
@@ -0,0 +1,12 @@
1
+ import {
2
+ createNormalizedEvent,
3
+ normalizeRawAgentEvent,
4
+ toAISDKEvent,
5
+ toAISDKStream
6
+ } from "../chunk-7FLLQJ6J.js";
7
+ export {
8
+ createNormalizedEvent,
9
+ normalizeRawAgentEvent,
10
+ toAISDKEvent,
11
+ toAISDKStream
12
+ };
@@ -0,0 +1,8 @@
1
+ export { A as AISDKEvent, a as AgentApprovalMode, b as AgentCommandConfig, c as AgentExecutionRequest, d as AgentLocalMcpConfig, e as AgentMcpConfig, f as AgentOptions, g as AgentOptionsBase, h as AgentOptionsMap, i as AgentPermissionDecision, j as AgentPermissionKind, k as AgentPermissionResponse, l as AgentProviderAdapter, m as AgentProviderName, n as AgentRemoteMcpConfig, o as AgentResult, p as AgentRun, q as AgentRunConfig, r as AgentRunSink, s as AgentSkillConfig, t as AgentSubAgentConfig, C as ClaudeCodeAgentOptions, u as ClaudeCodeHookConfig, v as ClaudeCodeHookEvent, w as ClaudeCodeHookHandler, x as ClaudeCodeHookMatcherGroup, y as ClaudeCodeHooksConfig, z as ClaudeCodeProviderOptions, B as CodexAgentOptions, D as CodexCommandHook, E as CodexHookEvent, F as CodexHookMatcherGroup, G as CodexHooksConfig, H as CodexProviderOptions, I as DataContent, J as EmbeddedSkillConfig, K as FilePart, L as ImagePart, M as MessageCompletedEvent, N as MessageInjectedEvent, O as MessageStartedEvent, P as NormalizedAgentEvent, Q as NormalizedAgentEventBase, R as NormalizedAgentEventType, S as OpenCodeAgentOptions, T as OpenCodePluginConfig, U as OpenCodePluginEvent, V as OpenCodePluginHookConfig, W as OpenCodeProviderOptions, X as PermissionRequestedEvent, Y as PermissionResolvedEvent, Z as RawAgentEvent, _ as ReasoningDeltaEvent, $ as RepoSkillConfig, a0 as RunCompletedEvent, a1 as RunErrorEvent, a2 as RunStartedEvent, a3 as TextDeltaEvent, a4 as TextPart, a5 as ToolCallCompletedEvent, a6 as ToolCallDeltaEvent, a7 as ToolCallStartedEvent, a8 as UserContent, a9 as UserContentPart, aa as createNormalizedEvent, ab as normalizeRawAgentEvent, ac as toAISDKEvent, ad as toAISDKStream } from './types-BwcoN0n-.js';
2
+ export { Agent } from './agents/index.js';
3
+ export { A as AsyncCommandHandle, C as CommandEvent, a as CommandOptions, b as CommandResult, D as DaytonaProviderOptions, c as DaytonaSandboxOptions, E as E2bProviderOptions, d as E2bSandboxOptions, G as GitCloneOptions, L as LocalDockerProviderOptions, e as LocalDockerSandboxOptions, M as ModalProviderOptions, f as ModalSandboxOptions, S as Sandbox, g as SandboxDescriptor, h as SandboxListOptions, i as SandboxOptions, j as SandboxOptionsBase, k as SandboxOptionsMap, l as SandboxProviderName, m as SandboxRaw, n as SandboxRawMap, o as SandboxResourceSpec } from './Sandbox-DTprxRZf.js';
4
+ export { SandboxAdapter, buildGitCloneCommand } from './sandboxes/index.js';
5
+ import 'e2b';
6
+ import '@daytonaio/sdk';
7
+ import 'modal';
8
+ import 'dockerode';
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
1
+ import {
2
+ Agent
3
+ } from "./chunk-BW43ESRM.js";
4
+ import {
5
+ createNormalizedEvent,
6
+ normalizeRawAgentEvent,
7
+ toAISDKEvent,
8
+ toAISDKStream
9
+ } from "./chunk-7FLLQJ6J.js";
10
+ import {
11
+ Sandbox,
12
+ SandboxAdapter,
13
+ buildGitCloneCommand
14
+ } from "./chunk-QRQFQTGH.js";
15
+ import "./chunk-HMBWQSVN.js";
16
+ import "./chunk-JFDP556Q.js";
17
+ export {
18
+ Agent,
19
+ Sandbox,
20
+ SandboxAdapter,
21
+ buildGitCloneCommand,
22
+ createNormalizedEvent,
23
+ normalizeRawAgentEvent,
24
+ toAISDKEvent,
25
+ toAISDKStream
26
+ };
@@ -0,0 +1,38 @@
1
+ import { l as SandboxProviderName, i as SandboxOptions, a as CommandOptions, b as CommandResult, A as AsyncCommandHandle, h as SandboxListOptions, g as SandboxDescriptor, G as GitCloneOptions } from '../Sandbox-DTprxRZf.js';
2
+ export { C as CommandEvent, D as DaytonaProviderOptions, c as DaytonaSandboxOptions, E as E2bProviderOptions, d as E2bSandboxOptions, L as LocalDockerProviderOptions, e as LocalDockerSandboxOptions, M as ModalProviderOptions, f as ModalSandboxOptions, S as Sandbox, j as SandboxOptionsBase, k as SandboxOptionsMap, m as SandboxRaw, n as SandboxRawMap, o as SandboxResourceSpec } from '../Sandbox-DTprxRZf.js';
3
+ import 'e2b';
4
+ import '@daytonaio/sdk';
5
+ import 'modal';
6
+ import 'dockerode';
7
+
8
+ declare abstract class SandboxAdapter<TProvider extends SandboxProviderName = SandboxProviderName, TOptions extends SandboxOptions<TProvider> = SandboxOptions<TProvider>, TRaw = unknown> {
9
+ protected readonly options: TOptions;
10
+ protected readonly secrets: Record<string, string>;
11
+ protected readonly baseEnv: Record<string, string>;
12
+ private provisioned;
13
+ private provisioning?;
14
+ constructor(options: TOptions);
15
+ abstract get provider(): TProvider;
16
+ abstract get raw(): TRaw | undefined;
17
+ abstract get id(): string | undefined;
18
+ protected abstract provision(): Promise<void>;
19
+ abstract run(command: string | string[], options?: CommandOptions): Promise<CommandResult>;
20
+ abstract runAsync(command: string | string[], options?: CommandOptions): Promise<AsyncCommandHandle>;
21
+ abstract list(options?: SandboxListOptions): Promise<SandboxDescriptor[]>;
22
+ abstract snapshot(): Promise<string | null>;
23
+ abstract stop(): Promise<void>;
24
+ abstract delete(): Promise<void>;
25
+ abstract openPort(port: number): Promise<void>;
26
+ abstract getPreviewLink(port: number): Promise<string>;
27
+ protected ensureProvisioned(): Promise<void>;
28
+ get tags(): Record<string, string>;
29
+ get workingDir(): string;
30
+ getMergedEnv(extra?: Record<string, string>): Record<string, string>;
31
+ setSecret(name: string, value: string): void;
32
+ setSecrets(values: Record<string, string>): void;
33
+ gitClone(options: GitCloneOptions): Promise<CommandResult>;
34
+ }
35
+
36
+ declare function buildGitCloneCommand(options: GitCloneOptions): string;
37
+
38
+ export { AsyncCommandHandle, CommandOptions, CommandResult, GitCloneOptions, SandboxAdapter, SandboxDescriptor, SandboxListOptions, SandboxOptions, SandboxProviderName, buildGitCloneCommand };
@@ -0,0 +1,12 @@
1
+ import {
2
+ Sandbox,
3
+ SandboxAdapter,
4
+ buildGitCloneCommand
5
+ } from "../chunk-QRQFQTGH.js";
6
+ import "../chunk-HMBWQSVN.js";
7
+ import "../chunk-JFDP556Q.js";
8
+ export {
9
+ Sandbox,
10
+ SandboxAdapter,
11
+ buildGitCloneCommand
12
+ };