sandbox-agent 0.4.0 → 0.4.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.
- package/dist/chunk-7BNDCDDU.js +18 -0
- package/dist/chunk-7BNDCDDU.js.map +1 -0
- package/dist/chunk-TVCDKGSM.js +3029 -0
- package/dist/chunk-TVCDKGSM.js.map +1 -0
- package/dist/index.d.ts +1674 -144
- package/dist/index.js +17 -2353
- package/dist/index.js.map +1 -1
- package/dist/providers/cloudflare.d.ts +1 -1
- package/dist/providers/cloudflare.js +1 -0
- package/dist/providers/cloudflare.js.map +1 -1
- package/dist/providers/computesdk.d.ts +4 -4
- package/dist/providers/computesdk.js +9 -3
- package/dist/providers/computesdk.js.map +1 -1
- package/dist/providers/daytona.d.ts +3 -2
- package/dist/providers/daytona.js +4 -1
- package/dist/providers/daytona.js.map +1 -1
- package/dist/providers/docker.d.ts +1 -1
- package/dist/providers/docker.js +2 -1
- package/dist/providers/docker.js.map +1 -1
- package/dist/providers/e2b.d.ts +10 -3
- package/dist/providers/e2b.js +55 -10
- package/dist/providers/e2b.js.map +1 -1
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/modal.d.ts +9 -6
- package/dist/providers/modal.js +20 -14
- package/dist/providers/modal.js.map +1 -1
- package/dist/providers/sprites.d.ts +22 -0
- package/dist/providers/sprites.js +209 -0
- package/dist/providers/sprites.js.map +1 -0
- package/dist/providers/vercel.d.ts +1 -1
- package/dist/providers/vercel.js +2 -1
- package/dist/providers/vercel.js.map +1 -1
- package/dist/{types-DLlJOfyX.d.ts → types-DdcvY5CI.d.ts} +22 -0
- package/package.json +13 -4
- package/dist/chunk-TWTMX66J.js +0 -15
- package/dist/chunk-TWTMX66J.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/providers/vercel.ts"],"sourcesContent":["import { Sandbox } from \"@vercel/sandbox\";\nimport type { SandboxProvider } from \"./types.ts\";\nimport { DEFAULT_AGENTS, SANDBOX_AGENT_INSTALL_SCRIPT } from \"./shared.ts\";\n\nconst DEFAULT_AGENT_PORT = 3000;\n\nexport interface VercelProviderOptions {\n create?: Record<string, unknown> | (() => Record<string, unknown> | Promise<Record<string, unknown>>);\n agentPort?: number;\n}\n\nasync function resolveCreateOptions(value: VercelProviderOptions[\"create\"], agentPort: number): Promise<Record<string, unknown>> {\n const resolved = typeof value === \"function\" ? await value() : (value ?? {});\n return {\n ports: [agentPort],\n ...resolved,\n };\n}\n\nasync function runVercelCommand(sandbox: InstanceType<typeof Sandbox>, cmd: string, args: string[] = []): Promise<void> {\n const result = await sandbox.runCommand({ cmd, args });\n if (result.exitCode !== 0) {\n const stderr = await result.stderr();\n throw new Error(`vercel command failed: ${cmd} ${args.join(\" \")}\\n${stderr}`);\n }\n}\n\nexport function vercel(options: VercelProviderOptions = {}): SandboxProvider {\n const agentPort = options.agentPort ?? DEFAULT_AGENT_PORT;\n\n return {\n name: \"vercel\",\n async create(): Promise<string> {\n const sandbox = await Sandbox.create((await resolveCreateOptions(options.create, agentPort)) as Parameters<typeof Sandbox.create>[0]);\n\n await runVercelCommand(sandbox, \"sh\", [\"-c\", `curl -fsSL ${SANDBOX_AGENT_INSTALL_SCRIPT} | sh`]);\n for (const agent of DEFAULT_AGENTS) {\n await runVercelCommand(sandbox, \"sandbox-agent\", [\"install-agent\", agent]);\n }\n await sandbox.runCommand({\n cmd: \"sandbox-agent\",\n args: [\"server\", \"--no-token\", \"--host\", \"0.0.0.0\", \"--port\", String(agentPort)],\n detached: true,\n });\n\n return sandbox.sandboxId;\n },\n async destroy(sandboxId: string): Promise<void> {\n const sandbox = await Sandbox.get({ sandboxId });\n await sandbox.stop();\n },\n async getUrl(sandboxId: string): Promise<string> {\n const sandbox = await Sandbox.get({ sandboxId });\n return sandbox.domain(agentPort);\n },\n async ensureServer(sandboxId: string): Promise<void> {\n const sandbox = await Sandbox.get({ sandboxId });\n await sandbox.runCommand({\n cmd: \"sandbox-agent\",\n args: [\"server\", \"--no-token\", \"--host\", \"0.0.0.0\", \"--port\", String(agentPort)],\n detached: true,\n });\n },\n };\n}\n"],"mappings":";;;;;;AAAA,SAAS,eAAe;AAIxB,IAAM,qBAAqB;AAO3B,eAAe,qBAAqB,OAAwC,WAAqD;AAC/H,QAAM,WAAW,OAAO,UAAU,aAAa,MAAM,MAAM,IAAK,SAAS,CAAC;AAC1E,SAAO;AAAA,IACL,OAAO,CAAC,SAAS;AAAA,IACjB,GAAG;AAAA,EACL;AACF;AAEA,eAAe,iBAAiB,SAAuC,KAAa,OAAiB,CAAC,GAAkB;AACtH,QAAM,SAAS,MAAM,QAAQ,WAAW,EAAE,KAAK,KAAK,CAAC;AACrD,MAAI,OAAO,aAAa,GAAG;AACzB,UAAM,SAAS,MAAM,OAAO,OAAO;AACnC,UAAM,IAAI,MAAM,0BAA0B,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,EAAK,MAAM,EAAE;AAAA,EAC9E;AACF;AAEO,SAAS,OAAO,UAAiC,CAAC,GAAoB;AAC3E,QAAM,YAAY,QAAQ,aAAa;AAEvC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,SAA0B;AAC9B,YAAM,UAAU,MAAM,QAAQ,OAAQ,MAAM,qBAAqB,QAAQ,QAAQ,SAAS,CAA0C;AAEpI,YAAM,iBAAiB,SAAS,MAAM,CAAC,MAAM,cAAc,4BAA4B,OAAO,CAAC;AAC/F,iBAAW,SAAS,gBAAgB;AAClC,cAAM,iBAAiB,SAAS,iBAAiB,CAAC,iBAAiB,KAAK,CAAC;AAAA,MAC3E;AACA,YAAM,QAAQ,WAAW;AAAA,QACvB,KAAK;AAAA,QACL,MAAM,CAAC,UAAU,cAAc,UAAU,WAAW,UAAU,OAAO,SAAS,CAAC;AAAA,QAC/E,UAAU;AAAA,MACZ,CAAC;AAED,aAAO,QAAQ;AAAA,IACjB;AAAA,IACA,MAAM,QAAQ,WAAkC;AAC9C,YAAM,UAAU,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC;AAC/C,YAAM,QAAQ,KAAK;AAAA,IACrB;AAAA,IACA,MAAM,OAAO,WAAoC;AAC/C,YAAM,UAAU,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC;AAC/C,aAAO,QAAQ,OAAO,SAAS;AAAA,IACjC;AAAA,IACA,MAAM,aAAa,WAAkC;AACnD,YAAM,UAAU,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC;AAC/C,YAAM,QAAQ,WAAW;AAAA,QACvB,KAAK;AAAA,QACL,MAAM,CAAC,UAAU,cAAc,UAAU,WAAW,UAAU,OAAO,SAAS,CAAC;AAAA,QAC/E,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/providers/vercel.ts"],"sourcesContent":["import { Sandbox } from \"@vercel/sandbox\";\nimport type { SandboxProvider } from \"./types.ts\";\nimport { DEFAULT_AGENTS, SANDBOX_AGENT_INSTALL_SCRIPT } from \"./shared.ts\";\n\nconst DEFAULT_AGENT_PORT = 3000;\n\nexport interface VercelProviderOptions {\n create?: Record<string, unknown> | (() => Record<string, unknown> | Promise<Record<string, unknown>>);\n agentPort?: number;\n}\n\nasync function resolveCreateOptions(value: VercelProviderOptions[\"create\"], agentPort: number): Promise<Record<string, unknown>> {\n const resolved = typeof value === \"function\" ? await value() : (value ?? {});\n return {\n ports: [agentPort],\n ...resolved,\n };\n}\n\nasync function runVercelCommand(sandbox: InstanceType<typeof Sandbox>, cmd: string, args: string[] = []): Promise<void> {\n const result = await sandbox.runCommand({ cmd, args });\n if (result.exitCode !== 0) {\n const stderr = await result.stderr();\n throw new Error(`vercel command failed: ${cmd} ${args.join(\" \")}\\n${stderr}`);\n }\n}\n\nexport function vercel(options: VercelProviderOptions = {}): SandboxProvider {\n const agentPort = options.agentPort ?? DEFAULT_AGENT_PORT;\n\n return {\n name: \"vercel\",\n defaultCwd: \"/home/vercel-sandbox\",\n async create(): Promise<string> {\n const sandbox = await Sandbox.create((await resolveCreateOptions(options.create, agentPort)) as Parameters<typeof Sandbox.create>[0]);\n\n await runVercelCommand(sandbox, \"sh\", [\"-c\", `curl -fsSL ${SANDBOX_AGENT_INSTALL_SCRIPT} | sh`]);\n for (const agent of DEFAULT_AGENTS) {\n await runVercelCommand(sandbox, \"sandbox-agent\", [\"install-agent\", agent]);\n }\n await sandbox.runCommand({\n cmd: \"sandbox-agent\",\n args: [\"server\", \"--no-token\", \"--host\", \"0.0.0.0\", \"--port\", String(agentPort)],\n detached: true,\n });\n\n return sandbox.sandboxId;\n },\n async destroy(sandboxId: string): Promise<void> {\n const sandbox = await Sandbox.get({ sandboxId });\n await sandbox.stop();\n },\n async getUrl(sandboxId: string): Promise<string> {\n const sandbox = await Sandbox.get({ sandboxId });\n return sandbox.domain(agentPort);\n },\n async ensureServer(sandboxId: string): Promise<void> {\n const sandbox = await Sandbox.get({ sandboxId });\n await sandbox.runCommand({\n cmd: \"sandbox-agent\",\n args: [\"server\", \"--no-token\", \"--host\", \"0.0.0.0\", \"--port\", String(agentPort)],\n detached: true,\n });\n },\n };\n}\n"],"mappings":";;;;;;AAAA,SAAS,eAAe;AAIxB,IAAM,qBAAqB;AAO3B,eAAe,qBAAqB,OAAwC,WAAqD;AAC/H,QAAM,WAAW,OAAO,UAAU,aAAa,MAAM,MAAM,IAAK,SAAS,CAAC;AAC1E,SAAO;AAAA,IACL,OAAO,CAAC,SAAS;AAAA,IACjB,GAAG;AAAA,EACL;AACF;AAEA,eAAe,iBAAiB,SAAuC,KAAa,OAAiB,CAAC,GAAkB;AACtH,QAAM,SAAS,MAAM,QAAQ,WAAW,EAAE,KAAK,KAAK,CAAC;AACrD,MAAI,OAAO,aAAa,GAAG;AACzB,UAAM,SAAS,MAAM,OAAO,OAAO;AACnC,UAAM,IAAI,MAAM,0BAA0B,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,EAAK,MAAM,EAAE;AAAA,EAC9E;AACF;AAEO,SAAS,OAAO,UAAiC,CAAC,GAAoB;AAC3E,QAAM,YAAY,QAAQ,aAAa;AAEvC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,MAAM,SAA0B;AAC9B,YAAM,UAAU,MAAM,QAAQ,OAAQ,MAAM,qBAAqB,QAAQ,QAAQ,SAAS,CAA0C;AAEpI,YAAM,iBAAiB,SAAS,MAAM,CAAC,MAAM,cAAc,4BAA4B,OAAO,CAAC;AAC/F,iBAAW,SAAS,gBAAgB;AAClC,cAAM,iBAAiB,SAAS,iBAAiB,CAAC,iBAAiB,KAAK,CAAC;AAAA,MAC3E;AACA,YAAM,QAAQ,WAAW;AAAA,QACvB,KAAK;AAAA,QACL,MAAM,CAAC,UAAU,cAAc,UAAU,WAAW,UAAU,OAAO,SAAS,CAAC;AAAA,QAC/E,UAAU;AAAA,MACZ,CAAC;AAED,aAAO,QAAQ;AAAA,IACjB;AAAA,IACA,MAAM,QAAQ,WAAkC;AAC9C,YAAM,UAAU,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC;AAC/C,YAAM,QAAQ,KAAK;AAAA,IACrB;AAAA,IACA,MAAM,OAAO,WAAoC;AAC/C,YAAM,UAAU,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC;AAC/C,aAAO,QAAQ,OAAO,SAAS;AAAA,IACjC;AAAA,IACA,MAAM,aAAa,WAAkC;AACnD,YAAM,UAAU,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC;AAC/C,YAAM,QAAQ,WAAW;AAAA,QACvB,KAAK;AAAA,QACL,MAAM,CAAC,UAAU,cAAc,UAAU,WAAW,UAAU,OAAO,SAAS,CAAC;AAAA,QAC/E,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
|
@@ -5,6 +5,22 @@ interface SandboxProvider {
|
|
|
5
5
|
create(): Promise<string>;
|
|
6
6
|
/** Permanently tear down a sandbox. */
|
|
7
7
|
destroy(sandboxId: string): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Reconnect to an existing sandbox before the SDK attempts health checks.
|
|
10
|
+
* Providers can use this to resume paused sandboxes or surface provider-specific
|
|
11
|
+
* reconnect errors.
|
|
12
|
+
*/
|
|
13
|
+
reconnect?(sandboxId: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Gracefully stop or pause a sandbox without permanently deleting it.
|
|
16
|
+
* When omitted, callers should fall back to `destroy()`.
|
|
17
|
+
*/
|
|
18
|
+
pause?(sandboxId: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Permanently delete a sandbox. When omitted, callers should fall back to
|
|
21
|
+
* `destroy()`.
|
|
22
|
+
*/
|
|
23
|
+
kill?(sandboxId: string): Promise<void>;
|
|
8
24
|
/**
|
|
9
25
|
* Return the sandbox-agent base URL for this sandbox.
|
|
10
26
|
* Providers that cannot expose a URL should implement `getFetch()` instead.
|
|
@@ -23,6 +39,12 @@ interface SandboxProvider {
|
|
|
23
39
|
* (e.g. the duplicate process exits on port conflict).
|
|
24
40
|
*/
|
|
25
41
|
ensureServer?(sandboxId: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Default working directory for sessions when the caller does not specify
|
|
44
|
+
* one. Remote providers should set this to a path that exists inside the
|
|
45
|
+
* sandbox (e.g. '/home/user'). When omitted, falls back to process.cwd().
|
|
46
|
+
*/
|
|
47
|
+
defaultCwd?: string;
|
|
26
48
|
}
|
|
27
49
|
|
|
28
50
|
export type { SandboxProvider as S };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sandbox-agent",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Universal API for automatic coding agents in sandboxes. Supports Claude Code, Codex, OpenCode, and Amp.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -46,12 +46,17 @@
|
|
|
46
46
|
"./computesdk": {
|
|
47
47
|
"types": "./dist/providers/computesdk.d.ts",
|
|
48
48
|
"import": "./dist/providers/computesdk.js"
|
|
49
|
+
},
|
|
50
|
+
"./sprites": {
|
|
51
|
+
"types": "./dist/providers/sprites.d.ts",
|
|
52
|
+
"import": "./dist/providers/sprites.js"
|
|
49
53
|
}
|
|
50
54
|
},
|
|
51
55
|
"peerDependencies": {
|
|
52
56
|
"@cloudflare/sandbox": ">=0.1.0",
|
|
53
57
|
"@daytonaio/sdk": ">=0.12.0",
|
|
54
58
|
"@e2b/code-interpreter": ">=1.0.0",
|
|
59
|
+
"@fly/sprites": ">=0.0.1",
|
|
55
60
|
"@vercel/sandbox": ">=0.1.0",
|
|
56
61
|
"dockerode": ">=4.0.0",
|
|
57
62
|
"get-port": ">=7.0.0",
|
|
@@ -68,6 +73,9 @@
|
|
|
68
73
|
"@e2b/code-interpreter": {
|
|
69
74
|
"optional": true
|
|
70
75
|
},
|
|
76
|
+
"@fly/sprites": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
71
79
|
"@vercel/sandbox": {
|
|
72
80
|
"optional": true
|
|
73
81
|
},
|
|
@@ -85,8 +93,8 @@
|
|
|
85
93
|
}
|
|
86
94
|
},
|
|
87
95
|
"dependencies": {
|
|
88
|
-
"@sandbox-agent/cli-shared": "0.4.
|
|
89
|
-
"acp-http-client": "0.4.
|
|
96
|
+
"@sandbox-agent/cli-shared": "0.4.1",
|
|
97
|
+
"acp-http-client": "0.4.1"
|
|
90
98
|
},
|
|
91
99
|
"files": [
|
|
92
100
|
"dist"
|
|
@@ -95,6 +103,7 @@
|
|
|
95
103
|
"@cloudflare/sandbox": ">=0.1.0",
|
|
96
104
|
"@daytonaio/sdk": ">=0.12.0",
|
|
97
105
|
"@e2b/code-interpreter": ">=1.0.0",
|
|
106
|
+
"@fly/sprites": ">=0.0.1",
|
|
98
107
|
"@types/dockerode": "^4.0.0",
|
|
99
108
|
"@types/node": "^22.0.0",
|
|
100
109
|
"@types/ws": "^8.18.1",
|
|
@@ -110,7 +119,7 @@
|
|
|
110
119
|
"ws": "^8.19.0"
|
|
111
120
|
},
|
|
112
121
|
"optionalDependencies": {
|
|
113
|
-
"@sandbox-agent/cli": "0.4.
|
|
122
|
+
"@sandbox-agent/cli": "0.4.1"
|
|
114
123
|
},
|
|
115
124
|
"scripts": {
|
|
116
125
|
"generate:openapi": "SANDBOX_AGENT_SKIP_INSPECTOR=1 cargo run -p sandbox-agent-openapi-gen -- --out ../../docs/openapi.json",
|
package/dist/chunk-TWTMX66J.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// src/providers/shared.ts
|
|
2
|
-
var DEFAULT_SANDBOX_AGENT_IMAGE = "rivetdev/sandbox-agent:0.4.0-full";
|
|
3
|
-
var SANDBOX_AGENT_INSTALL_SCRIPT = "https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh";
|
|
4
|
-
var DEFAULT_AGENTS = ["claude", "codex"];
|
|
5
|
-
function buildServerStartCommand(port) {
|
|
6
|
-
return `nohup sandbox-agent server --no-token --host 0.0.0.0 --port ${port} >/tmp/sandbox-agent.log 2>&1 &`;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
DEFAULT_SANDBOX_AGENT_IMAGE,
|
|
11
|
-
SANDBOX_AGENT_INSTALL_SCRIPT,
|
|
12
|
-
DEFAULT_AGENTS,
|
|
13
|
-
buildServerStartCommand
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=chunk-TWTMX66J.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/shared.ts"],"sourcesContent":["export const DEFAULT_SANDBOX_AGENT_IMAGE = \"rivetdev/sandbox-agent:0.4.0-full\";\nexport const SANDBOX_AGENT_INSTALL_SCRIPT = \"https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh\";\nexport const DEFAULT_AGENTS = [\"claude\", \"codex\"] as const;\n\nexport function buildServerStartCommand(port: number): string {\n return `nohup sandbox-agent server --no-token --host 0.0.0.0 --port ${port} >/tmp/sandbox-agent.log 2>&1 &`;\n}\n"],"mappings":";AAAO,IAAM,8BAA8B;AACpC,IAAM,+BAA+B;AACrC,IAAM,iBAAiB,CAAC,UAAU,OAAO;AAEzC,SAAS,wBAAwB,MAAsB;AAC5D,SAAO,+DAA+D,IAAI;AAC5E;","names":[]}
|