@sandboxrouter/sdk 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +293 -2
- package/dist/bench-store.d.ts +12 -0
- package/dist/bench-store.js +23 -0
- package/dist/bench.d.ts +24 -0
- package/dist/bench.js +65 -0
- package/dist/catalog.d.ts +105 -0
- package/dist/catalog.js +320 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +195 -0
- package/dist/computers.d.ts +124 -0
- package/dist/computers.js +66 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +23 -0
- package/dist/leaderboard.d.ts +39 -0
- package/dist/leaderboard.js +184 -0
- package/dist/providers/blaxel.d.ts +21 -0
- package/dist/providers/blaxel.js +152 -0
- package/dist/providers/boat.d.ts +25 -0
- package/dist/providers/boat.js +258 -0
- package/dist/providers/cloudflare.d.ts +30 -0
- package/dist/providers/cloudflare.js +147 -0
- package/dist/providers/daytona.d.ts +13 -0
- package/dist/providers/daytona.js +121 -0
- package/dist/providers/docker.d.ts +17 -0
- package/dist/providers/docker.js +148 -0
- package/dist/providers/e2b.d.ts +10 -0
- package/dist/providers/e2b.js +69 -0
- package/dist/providers/exedev.d.ts +23 -0
- package/dist/providers/exedev.js +278 -0
- package/dist/providers/hopx.d.ts +15 -0
- package/dist/providers/hopx.js +168 -0
- package/dist/providers/maritime.d.ts +38 -0
- package/dist/providers/maritime.js +240 -0
- package/dist/providers/modal.d.ts +10 -0
- package/dist/providers/modal.js +82 -0
- package/dist/providers/morph.d.ts +19 -0
- package/dist/providers/morph.js +181 -0
- package/dist/providers/northflank.d.ts +21 -0
- package/dist/providers/northflank.js +261 -0
- package/dist/providers/runloop.d.ts +16 -0
- package/dist/providers/runloop.js +145 -0
- package/dist/providers/sprites.d.ts +15 -0
- package/dist/providers/sprites.js +135 -0
- package/dist/providers/tensorlake.d.ts +14 -0
- package/dist/providers/tensorlake.js +192 -0
- package/dist/providers/vercel.d.ts +12 -0
- package/dist/providers/vercel.js +87 -0
- package/dist/router.d.ts +65 -0
- package/dist/router.js +199 -0
- package/dist/server.d.ts +31 -0
- package/dist/server.js +257 -0
- package/dist/sse.d.ts +6 -0
- package/dist/sse.js +33 -0
- package/dist/types.d.ts +87 -0
- package/dist/types.js +19 -0
- package/dist/util.d.ts +11 -0
- package/dist/util.js +37 -0
- package/package.json +127 -4
package/dist/util.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Single-quote a string for POSIX sh. */
|
|
2
|
+
export function shq(s) {
|
|
3
|
+
return `'${s.replace(/'/g, `'\\''`)}'`;
|
|
4
|
+
}
|
|
5
|
+
/** Build `cd dir && VAR=x cmd` for providers whose exec API lacks cwd/env. */
|
|
6
|
+
export function wrapCommand(cmd, opts = {}) {
|
|
7
|
+
const parts = [];
|
|
8
|
+
if (opts.cwd)
|
|
9
|
+
parts.push(`cd ${shq(opts.cwd)} &&`);
|
|
10
|
+
for (const [k, v] of Object.entries(opts.env ?? {})) {
|
|
11
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(k))
|
|
12
|
+
throw new Error(`invalid env var name: ${k}`);
|
|
13
|
+
parts.push(`export ${k}=${shq(v)};`);
|
|
14
|
+
}
|
|
15
|
+
parts.push(cmd);
|
|
16
|
+
return parts.join(" ");
|
|
17
|
+
}
|
|
18
|
+
export function toBytes(content) {
|
|
19
|
+
return typeof content === "string" ? new TextEncoder().encode(content) : content;
|
|
20
|
+
}
|
|
21
|
+
export function dirname(path) {
|
|
22
|
+
const i = path.lastIndexOf("/");
|
|
23
|
+
return i <= 0 ? "/" : path.slice(0, i);
|
|
24
|
+
}
|
|
25
|
+
/** Load an optional peer dependency with a helpful error. */
|
|
26
|
+
export async function optionalImport(pkg, provider) {
|
|
27
|
+
try {
|
|
28
|
+
return (await import(pkg));
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
const code = err.code;
|
|
32
|
+
if (code === "ERR_MODULE_NOT_FOUND" || code === "MODULE_NOT_FOUND") {
|
|
33
|
+
throw new Error(`${provider} needs the "${pkg}" package: npm i ${pkg}`);
|
|
34
|
+
}
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,129 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sandboxrouter/sdk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "One API for every sandbox provider: route AI agents' code by price, speed or capability, with automatic fallback. Free and open source.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"sandboxrouter": "dist/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"typecheck": "tsc --noEmit",
|
|
26
|
+
"dev": "tsx src/cli.ts",
|
|
27
|
+
"prepublishOnly": "npm run build && npm test",
|
|
28
|
+
"test:py": "python3 -m unittest discover -s python/tests -v",
|
|
29
|
+
"site:data": "node --import tsx scripts/site-data.ts"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"ai-agents",
|
|
33
|
+
"blaxel",
|
|
34
|
+
"cloudflare",
|
|
35
|
+
"code-execution",
|
|
36
|
+
"daytona",
|
|
37
|
+
"docker",
|
|
38
|
+
"e2b",
|
|
39
|
+
"fly-sprites",
|
|
40
|
+
"hopx",
|
|
41
|
+
"maritime",
|
|
42
|
+
"modal",
|
|
43
|
+
"morph",
|
|
44
|
+
"northflank",
|
|
45
|
+
"openrouter",
|
|
46
|
+
"router",
|
|
47
|
+
"runloop",
|
|
48
|
+
"sandbox",
|
|
49
|
+
"tensorlake",
|
|
50
|
+
"vercel-sandbox"
|
|
51
|
+
],
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=20"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"@blaxel/core": ">=0.3",
|
|
58
|
+
"@daytonaio/sdk": ">=0.200",
|
|
59
|
+
"@fly/sprites": ">=0.2",
|
|
60
|
+
"@runloop/api-client": ">=3",
|
|
61
|
+
"@tensorlakeai/tensorlake": ">=0.5",
|
|
62
|
+
"@vercel/sandbox": ">=3",
|
|
63
|
+
"e2b": ">=2",
|
|
64
|
+
"modal": ">=0.11",
|
|
65
|
+
"morphcloud": ">=0.0.20",
|
|
66
|
+
"@hopx-ai/sdk": ">=0.5",
|
|
67
|
+
"@northflank/js-client": ">=0.12"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"e2b": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"@daytonaio/sdk": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"modal": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"@vercel/sandbox": {
|
|
80
|
+
"optional": true
|
|
81
|
+
},
|
|
82
|
+
"morphcloud": {
|
|
83
|
+
"optional": true
|
|
84
|
+
},
|
|
85
|
+
"@fly/sprites": {
|
|
86
|
+
"optional": true
|
|
87
|
+
},
|
|
88
|
+
"@blaxel/core": {
|
|
89
|
+
"optional": true
|
|
90
|
+
},
|
|
91
|
+
"@tensorlakeai/tensorlake": {
|
|
92
|
+
"optional": true
|
|
93
|
+
},
|
|
94
|
+
"@runloop/api-client": {
|
|
95
|
+
"optional": true
|
|
96
|
+
},
|
|
97
|
+
"@hopx-ai/sdk": {
|
|
98
|
+
"optional": true
|
|
99
|
+
},
|
|
100
|
+
"@northflank/js-client": {
|
|
101
|
+
"optional": true
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"devDependencies": {
|
|
105
|
+
"@blaxel/core": "^0.3.34",
|
|
106
|
+
"@daytonaio/sdk": "^0.227.3",
|
|
107
|
+
"@fly/sprites": "^0.2.4",
|
|
108
|
+
"@hopx-ai/sdk": "^0.5.1",
|
|
109
|
+
"@northflank/js-client": "^0.12.0",
|
|
110
|
+
"@runloop/api-client": "^3.0.0",
|
|
111
|
+
"@tensorlakeai/tensorlake": "^0.5.161",
|
|
112
|
+
"@types/node": "^26.6.6",
|
|
113
|
+
"@vercel/sandbox": "^3.9.1",
|
|
114
|
+
"e2b": "^2.63.0",
|
|
115
|
+
"modal": "^0.11.1",
|
|
116
|
+
"morphcloud": "^0.0.20",
|
|
117
|
+
"tsx": "^4.23.15",
|
|
118
|
+
"typescript": "^5.9.3",
|
|
119
|
+
"vitest": "^5.1.0"
|
|
120
|
+
},
|
|
121
|
+
"publishConfig": {
|
|
122
|
+
"access": "public"
|
|
123
|
+
},
|
|
124
|
+
"repository": {
|
|
125
|
+
"type": "git",
|
|
126
|
+
"url": "git+https://github.com/gigialc/sandboxrouter.git"
|
|
127
|
+
},
|
|
128
|
+
"homepage": "https://sandboxrouter.vercel.app"
|
|
129
|
+
}
|