@madarco/agentbox 0.10.0 → 0.11.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/CHANGELOG.md +47 -0
- package/dist/{_cloud-attach-O6NYTLES.js → _cloud-attach-6C5NMOHD.js} +4 -4
- package/dist/{chunk-2GPORKYF.js → chunk-D4Q2RUQI.js} +5 -5
- package/dist/chunk-D4Q2RUQI.js.map +1 -0
- package/dist/{chunk-MTVI44DW.js → chunk-ECLLV5JH.js} +6 -3
- package/dist/chunk-ECLLV5JH.js.map +1 -0
- package/dist/{chunk-7UIAO7PC.js → chunk-GUNUBIRB.js} +94 -75
- package/dist/chunk-GUNUBIRB.js.map +1 -0
- package/dist/{chunk-R4O5WPHW.js → chunk-NVSRGC5W.js} +23 -11
- package/dist/chunk-NVSRGC5W.js.map +1 -0
- package/dist/{chunk-I24B6AXR.js → chunk-R5XIDQFR.js} +6 -3
- package/dist/chunk-R5XIDQFR.js.map +1 -0
- package/dist/{chunk-KL36BRN4.js → chunk-SNTHHWKY.js} +70 -17
- package/dist/chunk-SNTHHWKY.js.map +1 -0
- package/dist/{chunk-LEV3KICD.js → chunk-ZGVMN54V.js} +6 -3
- package/dist/{chunk-LEV3KICD.js.map → chunk-ZGVMN54V.js.map} +1 -1
- package/dist/{dist-5FQGYRW5.js → dist-4SUIXKSD.js} +5 -5
- package/dist/{dist-PZW3GWWU.js → dist-HT2YV6PB.js} +5 -5
- package/dist/{dist-TMHSUVTP.js → dist-PJFJNXO2.js} +5 -5
- package/dist/{dist-BQNX7RQE.js → dist-ZEGIMYWZ.js} +13 -3
- package/dist/index.js +632 -547
- package/dist/index.js.map +1 -1
- package/dist/{prepared-state-CL4CWXQA-H5THETIM.js → prepared-state-MQHD3M5F-KE4DT3GX.js} +2 -2
- package/package.json +5 -5
- package/runtime/docker/apps/cli/share/agentbox-setup/SKILL.md +1 -1
- package/runtime/docker/packages/ctl/dist/bin.cjs +11 -2
- package/runtime/hetzner/agentbox-setup-skill.md +1 -1
- package/runtime/hetzner/ctl.cjs +11 -2
- package/runtime/relay/bin.cjs +14 -2
- package/runtime/vercel/agentbox-setup-skill.md +1 -1
- package/runtime/vercel/ctl.cjs +11 -2
- package/runtime/vercel/scripts/provision.sh +20 -0
- package/share/agentbox-setup/SKILL.md +1 -1
- package/dist/chunk-2GPORKYF.js.map +0 -1
- package/dist/chunk-7UIAO7PC.js.map +0 -1
- package/dist/chunk-I24B6AXR.js.map +0 -1
- package/dist/chunk-KL36BRN4.js.map +0 -1
- package/dist/chunk-MTVI44DW.js.map +0 -1
- package/dist/chunk-R4O5WPHW.js.map +0 -1
- /package/dist/{_cloud-attach-O6NYTLES.js.map → _cloud-attach-6C5NMOHD.js.map} +0 -0
- /package/dist/{dist-5FQGYRW5.js.map → dist-4SUIXKSD.js.map} +0 -0
- /package/dist/{dist-PZW3GWWU.js.map → dist-HT2YV6PB.js.map} +0 -0
- /package/dist/{dist-TMHSUVTP.js.map → dist-PJFJNXO2.js.map} +0 -0
- /package/dist/{dist-BQNX7RQE.js.map → dist-ZEGIMYWZ.js.map} +0 -0
- /package/dist/{prepared-state-CL4CWXQA-H5THETIM.js.map → prepared-state-MQHD3M5F-KE4DT3GX.js.map} +0 -0
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
readPreparedDockerState,
|
|
7
7
|
resolveContextFiles,
|
|
8
8
|
writePreparedDockerState
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-SNTHHWKY.js";
|
|
10
10
|
export {
|
|
11
11
|
DOCKERFILE_PATH,
|
|
12
12
|
computeDockerContextFingerprint,
|
|
@@ -15,4 +15,4 @@ export {
|
|
|
15
15
|
resolveContextFiles,
|
|
16
16
|
writePreparedDockerState
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=prepared-state-
|
|
18
|
+
//# sourceMappingURL=prepared-state-MQHD3M5F-KE4DT3GX.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@madarco/agentbox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Launch Claude Code, Codex, and other coding agents in isolated sandboxes",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Marco D'Alia",
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
"vitest": "^2.1.8",
|
|
61
61
|
"@agentbox/config": "0.0.0",
|
|
62
62
|
"@agentbox/ctl": "0.0.0",
|
|
63
|
-
"@agentbox/sandbox-core": "0.0.0",
|
|
64
63
|
"@agentbox/core": "0.0.0",
|
|
64
|
+
"@agentbox/sandbox-cloud": "0.0.0",
|
|
65
65
|
"@agentbox/relay": "0.0.0",
|
|
66
|
-
"@agentbox/sandbox-
|
|
66
|
+
"@agentbox/sandbox-core": "0.0.0",
|
|
67
67
|
"@agentbox/sandbox-docker": "0.0.0",
|
|
68
|
-
"@agentbox/sandbox-cloud": "0.0.0",
|
|
69
68
|
"@agentbox/sandbox-hetzner": "0.0.0",
|
|
70
|
-
"@agentbox/sandbox-vercel": "0.0.0"
|
|
69
|
+
"@agentbox/sandbox-vercel": "0.0.0",
|
|
70
|
+
"@agentbox/sandbox-daytona": "0.0.0"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"build": "tsup",
|
|
@@ -97,7 +97,7 @@ Full key list (run on the host): `agentbox config list --keys`.
|
|
|
97
97
|
## 6. Worked example
|
|
98
98
|
|
|
99
99
|
```yaml
|
|
100
|
-
# yaml-language-server: $schema=https://
|
|
100
|
+
# yaml-language-server: $schema=https://agent-box.sh/schema/agentbox.schema.json
|
|
101
101
|
# This agentbox.yaml setup this Next.js project, and includes:
|
|
102
102
|
# - a postgres database because it's used in the project
|
|
103
103
|
# - an inngest server for queues
|
|
@@ -18457,6 +18457,9 @@ function findBox(idOrName, state) {
|
|
|
18457
18457
|
if (byContainer) return { kind: "ok", box: byContainer };
|
|
18458
18458
|
return { kind: "none" };
|
|
18459
18459
|
}
|
|
18460
|
+
function hostOpenCommand() {
|
|
18461
|
+
return process.platform === "linux" ? "xdg-open" : "open";
|
|
18462
|
+
}
|
|
18460
18463
|
|
|
18461
18464
|
// ../config/dist/index.js
|
|
18462
18465
|
var import_yaml = __toESM(require_dist(), 1);
|
|
@@ -18548,6 +18551,12 @@ var KEY_REGISTRY = [
|
|
|
18548
18551
|
description: "Box image ref (advanced).",
|
|
18549
18552
|
advanced: true
|
|
18550
18553
|
},
|
|
18554
|
+
{
|
|
18555
|
+
key: "box.imageRegistry",
|
|
18556
|
+
type: "string",
|
|
18557
|
+
description: "Registry repo to pull the prebuilt docker base image from before building locally. Empty = always build. Docker only (advanced).",
|
|
18558
|
+
advanced: true
|
|
18559
|
+
},
|
|
18551
18560
|
{
|
|
18552
18561
|
key: "box.dockerCacheShared",
|
|
18553
18562
|
type: "bool",
|
|
@@ -19577,7 +19586,7 @@ async function runBrowserOpenMirror(action, deps) {
|
|
|
19577
19586
|
);
|
|
19578
19587
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
19579
19588
|
const { spawn: spawn52 } = await import("child_process");
|
|
19580
|
-
const child = spawn52(
|
|
19589
|
+
const child = spawn52(hostOpenCommand(), [url], { stdio: "ignore", detached: true });
|
|
19581
19590
|
child.unref();
|
|
19582
19591
|
}
|
|
19583
19592
|
} catch (err) {
|
|
@@ -20297,7 +20306,7 @@ function createRelayServer(opts) {
|
|
|
20297
20306
|
{ ttlMs: BROWSER_OPEN_PROMPT_TTL_MS }
|
|
20298
20307
|
).then((verdict) => {
|
|
20299
20308
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
20300
|
-
void runHostCommand([
|
|
20309
|
+
void runHostCommand([hostOpenCommand(), url2], BROWSER_OPEN_RPC_TIMEOUT_MS);
|
|
20301
20310
|
}
|
|
20302
20311
|
}).catch(() => {
|
|
20303
20312
|
});
|
|
@@ -97,7 +97,7 @@ Full key list (run on the host): `agentbox config list --keys`.
|
|
|
97
97
|
## 6. Worked example
|
|
98
98
|
|
|
99
99
|
```yaml
|
|
100
|
-
# yaml-language-server: $schema=https://
|
|
100
|
+
# yaml-language-server: $schema=https://agent-box.sh/schema/agentbox.schema.json
|
|
101
101
|
# This agentbox.yaml setup this Next.js project, and includes:
|
|
102
102
|
# - a postgres database because it's used in the project
|
|
103
103
|
# - an inngest server for queues
|
package/runtime/hetzner/ctl.cjs
CHANGED
|
@@ -18457,6 +18457,9 @@ function findBox(idOrName, state) {
|
|
|
18457
18457
|
if (byContainer) return { kind: "ok", box: byContainer };
|
|
18458
18458
|
return { kind: "none" };
|
|
18459
18459
|
}
|
|
18460
|
+
function hostOpenCommand() {
|
|
18461
|
+
return process.platform === "linux" ? "xdg-open" : "open";
|
|
18462
|
+
}
|
|
18460
18463
|
|
|
18461
18464
|
// ../config/dist/index.js
|
|
18462
18465
|
var import_yaml = __toESM(require_dist(), 1);
|
|
@@ -18548,6 +18551,12 @@ var KEY_REGISTRY = [
|
|
|
18548
18551
|
description: "Box image ref (advanced).",
|
|
18549
18552
|
advanced: true
|
|
18550
18553
|
},
|
|
18554
|
+
{
|
|
18555
|
+
key: "box.imageRegistry",
|
|
18556
|
+
type: "string",
|
|
18557
|
+
description: "Registry repo to pull the prebuilt docker base image from before building locally. Empty = always build. Docker only (advanced).",
|
|
18558
|
+
advanced: true
|
|
18559
|
+
},
|
|
18551
18560
|
{
|
|
18552
18561
|
key: "box.dockerCacheShared",
|
|
18553
18562
|
type: "bool",
|
|
@@ -19577,7 +19586,7 @@ async function runBrowserOpenMirror(action, deps) {
|
|
|
19577
19586
|
);
|
|
19578
19587
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
19579
19588
|
const { spawn: spawn52 } = await import("child_process");
|
|
19580
|
-
const child = spawn52(
|
|
19589
|
+
const child = spawn52(hostOpenCommand(), [url], { stdio: "ignore", detached: true });
|
|
19581
19590
|
child.unref();
|
|
19582
19591
|
}
|
|
19583
19592
|
} catch (err) {
|
|
@@ -20297,7 +20306,7 @@ function createRelayServer(opts) {
|
|
|
20297
20306
|
{ ttlMs: BROWSER_OPEN_PROMPT_TTL_MS }
|
|
20298
20307
|
).then((verdict) => {
|
|
20299
20308
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
20300
|
-
void runHostCommand([
|
|
20309
|
+
void runHostCommand([hostOpenCommand(), url2], BROWSER_OPEN_RPC_TIMEOUT_MS);
|
|
20301
20310
|
}
|
|
20302
20311
|
}).catch(() => {
|
|
20303
20312
|
});
|
package/runtime/relay/bin.cjs
CHANGED
|
@@ -18026,6 +18026,9 @@ function findBox(idOrName, state) {
|
|
|
18026
18026
|
if (byContainer) return { kind: "ok", box: byContainer };
|
|
18027
18027
|
return { kind: "none" };
|
|
18028
18028
|
}
|
|
18029
|
+
function hostOpenCommand() {
|
|
18030
|
+
return process.platform === "linux" ? "xdg-open" : "open";
|
|
18031
|
+
}
|
|
18029
18032
|
|
|
18030
18033
|
// src/gh.ts
|
|
18031
18034
|
var import_node_child_process6 = require("child_process");
|
|
@@ -18594,7 +18597,7 @@ async function runBrowserOpenMirror(action, deps) {
|
|
|
18594
18597
|
);
|
|
18595
18598
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
18596
18599
|
const { spawn: spawn6 } = await import("child_process");
|
|
18597
|
-
const child = spawn6(
|
|
18600
|
+
const child = spawn6(hostOpenCommand(), [url], { stdio: "ignore", detached: true });
|
|
18598
18601
|
child.unref();
|
|
18599
18602
|
}
|
|
18600
18603
|
} catch (err) {
|
|
@@ -19574,7 +19577,7 @@ function createRelayServer(opts) {
|
|
|
19574
19577
|
{ ttlMs: BROWSER_OPEN_PROMPT_TTL_MS }
|
|
19575
19578
|
).then((verdict) => {
|
|
19576
19579
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
19577
|
-
void runHostCommand([
|
|
19580
|
+
void runHostCommand([hostOpenCommand(), url2], BROWSER_OPEN_RPC_TIMEOUT_MS);
|
|
19578
19581
|
}
|
|
19579
19582
|
}).catch(() => {
|
|
19580
19583
|
});
|
|
@@ -20114,6 +20117,9 @@ var BUILT_IN_DEFAULTS = {
|
|
|
20114
20117
|
isolateCodexConfig: false,
|
|
20115
20118
|
isolateOpencodeConfig: false,
|
|
20116
20119
|
image: "agentbox/box:dev",
|
|
20120
|
+
// Mirrors BOX_IMAGE_REGISTRY in @agentbox/sandbox-docker. Empty disables the
|
|
20121
|
+
// registry pull (always build the docker base image locally).
|
|
20122
|
+
imageRegistry: "ghcr.io/madarco/agentbox/box",
|
|
20117
20123
|
dockerCacheShared: false,
|
|
20118
20124
|
memory: 0,
|
|
20119
20125
|
cpus: 0,
|
|
@@ -20270,6 +20276,12 @@ var KEY_REGISTRY = [
|
|
|
20270
20276
|
description: "Box image ref (advanced).",
|
|
20271
20277
|
advanced: true
|
|
20272
20278
|
},
|
|
20279
|
+
{
|
|
20280
|
+
key: "box.imageRegistry",
|
|
20281
|
+
type: "string",
|
|
20282
|
+
description: "Registry repo to pull the prebuilt docker base image from before building locally. Empty = always build. Docker only (advanced).",
|
|
20283
|
+
advanced: true
|
|
20284
|
+
},
|
|
20273
20285
|
{
|
|
20274
20286
|
key: "box.dockerCacheShared",
|
|
20275
20287
|
type: "bool",
|
|
@@ -97,7 +97,7 @@ Full key list (run on the host): `agentbox config list --keys`.
|
|
|
97
97
|
## 6. Worked example
|
|
98
98
|
|
|
99
99
|
```yaml
|
|
100
|
-
# yaml-language-server: $schema=https://
|
|
100
|
+
# yaml-language-server: $schema=https://agent-box.sh/schema/agentbox.schema.json
|
|
101
101
|
# This agentbox.yaml setup this Next.js project, and includes:
|
|
102
102
|
# - a postgres database because it's used in the project
|
|
103
103
|
# - an inngest server for queues
|
package/runtime/vercel/ctl.cjs
CHANGED
|
@@ -18457,6 +18457,9 @@ function findBox(idOrName, state) {
|
|
|
18457
18457
|
if (byContainer) return { kind: "ok", box: byContainer };
|
|
18458
18458
|
return { kind: "none" };
|
|
18459
18459
|
}
|
|
18460
|
+
function hostOpenCommand() {
|
|
18461
|
+
return process.platform === "linux" ? "xdg-open" : "open";
|
|
18462
|
+
}
|
|
18460
18463
|
|
|
18461
18464
|
// ../config/dist/index.js
|
|
18462
18465
|
var import_yaml = __toESM(require_dist(), 1);
|
|
@@ -18548,6 +18551,12 @@ var KEY_REGISTRY = [
|
|
|
18548
18551
|
description: "Box image ref (advanced).",
|
|
18549
18552
|
advanced: true
|
|
18550
18553
|
},
|
|
18554
|
+
{
|
|
18555
|
+
key: "box.imageRegistry",
|
|
18556
|
+
type: "string",
|
|
18557
|
+
description: "Registry repo to pull the prebuilt docker base image from before building locally. Empty = always build. Docker only (advanced).",
|
|
18558
|
+
advanced: true
|
|
18559
|
+
},
|
|
18551
18560
|
{
|
|
18552
18561
|
key: "box.dockerCacheShared",
|
|
18553
18562
|
type: "bool",
|
|
@@ -19577,7 +19586,7 @@ async function runBrowserOpenMirror(action, deps) {
|
|
|
19577
19586
|
);
|
|
19578
19587
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
19579
19588
|
const { spawn: spawn52 } = await import("child_process");
|
|
19580
|
-
const child = spawn52(
|
|
19589
|
+
const child = spawn52(hostOpenCommand(), [url], { stdio: "ignore", detached: true });
|
|
19581
19590
|
child.unref();
|
|
19582
19591
|
}
|
|
19583
19592
|
} catch (err) {
|
|
@@ -20297,7 +20306,7 @@ function createRelayServer(opts) {
|
|
|
20297
20306
|
{ ttlMs: BROWSER_OPEN_PROMPT_TTL_MS }
|
|
20298
20307
|
).then((verdict) => {
|
|
20299
20308
|
if (verdict.answer === "y" && !verdict.cancelled) {
|
|
20300
|
-
void runHostCommand([
|
|
20309
|
+
void runHostCommand([hostOpenCommand(), url2], BROWSER_OPEN_RPC_TIMEOUT_MS);
|
|
20301
20310
|
}
|
|
20302
20311
|
}).catch(() => {
|
|
20303
20312
|
});
|
|
@@ -235,6 +235,26 @@ fi
|
|
|
235
235
|
sudo -u vscode -H mkdir -p /home/vscode/.vnc
|
|
236
236
|
done_ "VNC stack (TigerVNC + websockify + noVNC)"
|
|
237
237
|
|
|
238
|
+
step "X11 clipboard tools (xclip + autocutsel, built from source)"
|
|
239
|
+
# xclip and autocutsel are NOT in the AL2023 repos (unlike Debian/Ubuntu where
|
|
240
|
+
# docker + hetzner apt-install them). They are load-bearing: xclip backs the
|
|
241
|
+
# host->box Ctrl+V image paste (apps/cli/src/lib/paste-image.ts), and autocutsel
|
|
242
|
+
# keeps the VNC CLIPBOARD/PRIMARY selections in sync (agentbox-vnc-start). Build
|
|
243
|
+
# both from source — all deps are in the AL2023 default repos. Fail loud: a
|
|
244
|
+
# missing binary is a silently broken feature, not a skippable convenience.
|
|
245
|
+
dnf install -y -q --allowerasing \
|
|
246
|
+
gcc make automake autoconf git \
|
|
247
|
+
libX11-devel libXmu-devel libXt-devel libXaw-devel
|
|
248
|
+
git clone --depth 1 https://github.com/astrand/xclip /tmp/xclip
|
|
249
|
+
( cd /tmp/xclip && autoreconf -i && ./configure --prefix=/usr/local && make && make install )
|
|
250
|
+
rm -rf /tmp/xclip
|
|
251
|
+
command -v xclip >/dev/null || { echo "provision.sh: xclip build failed"; exit 1; }
|
|
252
|
+
git clone --depth 1 https://github.com/sigmike/autocutsel /tmp/autocutsel
|
|
253
|
+
( cd /tmp/autocutsel && autoreconf -i && ./configure --prefix=/usr/local && make && make install )
|
|
254
|
+
rm -rf /tmp/autocutsel
|
|
255
|
+
command -v autocutsel >/dev/null || { echo "provision.sh: autocutsel build failed"; exit 1; }
|
|
256
|
+
done_ "X11 clipboard tools (xclip + autocutsel, built from source)"
|
|
257
|
+
|
|
238
258
|
step "agent CLIs (codex + opencode + agent-browser, global npm)"
|
|
239
259
|
npm install -g @openai/codex opencode-ai agent-browser 2>&1 | tail -3 || \
|
|
240
260
|
echo "provision.sh: one or more agent npm installs failed (continuing)"
|
|
@@ -97,7 +97,7 @@ Full key list (run on the host): `agentbox config list --keys`.
|
|
|
97
97
|
## 6. Worked example
|
|
98
98
|
|
|
99
99
|
```yaml
|
|
100
|
-
# yaml-language-server: $schema=https://
|
|
100
|
+
# yaml-language-server: $schema=https://agent-box.sh/schema/agentbox.schema.json
|
|
101
101
|
# This agentbox.yaml setup this Next.js project, and includes:
|
|
102
102
|
# - a postgres database because it's used in the project
|
|
103
103
|
# - an inngest server for queues
|