@madarco/agentbox 0.10.0 → 0.10.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 (33) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{_cloud-attach-O6NYTLES.js → _cloud-attach-2DGI6FUA.js} +4 -4
  3. package/dist/{chunk-7UIAO7PC.js → chunk-CDKVD6UO.js} +27 -11
  4. package/dist/chunk-CDKVD6UO.js.map +1 -0
  5. package/dist/{chunk-R4O5WPHW.js → chunk-I7NOGCL4.js} +6 -6
  6. package/dist/{chunk-2GPORKYF.js → chunk-M2UWJKFA.js} +3 -3
  7. package/dist/{chunk-KL36BRN4.js → chunk-PWUVHPN6.js} +66 -17
  8. package/dist/{chunk-KL36BRN4.js.map → chunk-PWUVHPN6.js.map} +1 -1
  9. package/dist/{dist-TMHSUVTP.js → dist-BD5QJRDC.js} +4 -4
  10. package/dist/{dist-5FQGYRW5.js → dist-BNI5PQYK.js} +4 -4
  11. package/dist/{dist-BQNX7RQE.js → dist-SBCQVFCE.js} +13 -3
  12. package/dist/{dist-PZW3GWWU.js → dist-SJHY3HYN.js} +4 -4
  13. package/dist/index.js +35 -23
  14. package/dist/index.js.map +1 -1
  15. package/dist/{prepared-state-CL4CWXQA-H5THETIM.js → prepared-state-MQHD3M5F-O5M4NIN4.js} +2 -2
  16. package/package.json +5 -5
  17. package/runtime/docker/apps/cli/share/agentbox-setup/SKILL.md +1 -1
  18. package/runtime/docker/packages/ctl/dist/bin.cjs +6 -0
  19. package/runtime/hetzner/agentbox-setup-skill.md +1 -1
  20. package/runtime/hetzner/ctl.cjs +6 -0
  21. package/runtime/relay/bin.cjs +9 -0
  22. package/runtime/vercel/agentbox-setup-skill.md +1 -1
  23. package/runtime/vercel/ctl.cjs +6 -0
  24. package/share/agentbox-setup/SKILL.md +1 -1
  25. package/dist/chunk-7UIAO7PC.js.map +0 -1
  26. /package/dist/{_cloud-attach-O6NYTLES.js.map → _cloud-attach-2DGI6FUA.js.map} +0 -0
  27. /package/dist/{chunk-R4O5WPHW.js.map → chunk-I7NOGCL4.js.map} +0 -0
  28. /package/dist/{chunk-2GPORKYF.js.map → chunk-M2UWJKFA.js.map} +0 -0
  29. /package/dist/{dist-TMHSUVTP.js.map → dist-BD5QJRDC.js.map} +0 -0
  30. /package/dist/{dist-5FQGYRW5.js.map → dist-BNI5PQYK.js.map} +0 -0
  31. /package/dist/{dist-BQNX7RQE.js.map → dist-SBCQVFCE.js.map} +0 -0
  32. /package/dist/{dist-PZW3GWWU.js.map → dist-SJHY3HYN.js.map} +0 -0
  33. /package/dist/{prepared-state-CL4CWXQA-H5THETIM.js.map → prepared-state-MQHD3M5F-O5M4NIN4.js.map} +0 -0
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ import {
31
31
  probeCloudCheckpoint,
32
32
  resolveCloudCheckpoint,
33
33
  seedAgentVolumesIfFresh
34
- } from "./chunk-2GPORKYF.js";
34
+ } from "./chunk-M2UWJKFA.js";
35
35
  import {
36
36
  ADVANCED_HINT_GROUPS,
37
37
  ALERT_BAND_ROWS,
@@ -61,7 +61,7 @@ import {
61
61
  statusLine,
62
62
  stripTitleGlyph,
63
63
  subscribePrompts
64
- } from "./chunk-R4O5WPHW.js";
64
+ } from "./chunk-I7NOGCL4.js";
65
65
  import {
66
66
  AmbiguousBoxError,
67
67
  BOX_STATUS_EVENT,
@@ -207,7 +207,7 @@ import {
207
207
  waitForTmuxPaneContent,
208
208
  warmUpClaudeCredentials,
209
209
  writeJob
210
- } from "./chunk-7UIAO7PC.js";
210
+ } from "./chunk-CDKVD6UO.js";
211
211
  import {
212
212
  DEFAULT_BOX_IMAGE,
213
213
  STATE_DIR,
@@ -215,12 +215,12 @@ import {
215
215
  imageInfo,
216
216
  readState,
217
217
  resolveBoxRef
218
- } from "./chunk-KL36BRN4.js";
218
+ } from "./chunk-PWUVHPN6.js";
219
219
  import "./chunk-G3H2L3O2.js";
220
220
 
221
221
  // src/version.ts
222
- var AGENTBOX_VERSION = true ? "0.10.0" : "0.0.0-dev";
223
- var AGENTBOX_COMMIT = true ? "e0ccad3c" : "dev";
222
+ var AGENTBOX_VERSION = true ? "0.10.1" : "0.0.0-dev";
223
+ var AGENTBOX_COMMIT = true ? "1957cb4a" : "dev";
224
224
 
225
225
  // src/index.ts
226
226
  import { Command as Command46 } from "commander";
@@ -1854,11 +1854,11 @@ import { basename } from "path";
1854
1854
  async function cloudBackendForProvider(provider) {
1855
1855
  switch (provider) {
1856
1856
  case "daytona":
1857
- return (await import("./dist-TMHSUVTP.js")).daytonaBackend;
1857
+ return (await import("./dist-BD5QJRDC.js")).daytonaBackend;
1858
1858
  case "hetzner":
1859
- return (await import("./dist-5FQGYRW5.js")).hetznerBackend;
1859
+ return (await import("./dist-BNI5PQYK.js")).hetznerBackend;
1860
1860
  case "vercel":
1861
- return (await import("./dist-PZW3GWWU.js")).vercelBackend;
1861
+ return (await import("./dist-SJHY3HYN.js")).vercelBackend;
1862
1862
  default:
1863
1863
  return null;
1864
1864
  }
@@ -2770,11 +2770,11 @@ var CLOUD_BACKENDS = ["daytona", "hetzner", "vercel"];
2770
2770
  async function cloudProviderFor(backend) {
2771
2771
  switch (backend) {
2772
2772
  case "daytona":
2773
- return (await import("./dist-TMHSUVTP.js")).daytonaProvider;
2773
+ return (await import("./dist-BD5QJRDC.js")).daytonaProvider;
2774
2774
  case "hetzner":
2775
- return (await import("./dist-5FQGYRW5.js")).hetznerProvider;
2775
+ return (await import("./dist-BNI5PQYK.js")).hetznerProvider;
2776
2776
  case "vercel":
2777
- return (await import("./dist-PZW3GWWU.js")).vercelProvider;
2777
+ return (await import("./dist-SJHY3HYN.js")).vercelProvider;
2778
2778
  }
2779
2779
  }
2780
2780
  var CHECKPOINT_NOTICE = "Checkpoint in progress \u2014 the box will be unresponsive for a moment";
@@ -5139,7 +5139,10 @@ async function attachShell(record) {
5139
5139
  var createCommand = new Command9("create").description("Create and start a new agent box (Docker container with /workspace seeded via in-container git worktree)").option("-w, --workspace <path>", "host workspace to mount", process.cwd()).option("-n, --name <name>", "friendly box name (default: <workspace-basename>-<id>)").option("--provider <name>", "sandbox backend: 'docker' (default) or 'daytona' (cloud)").option("--host-snapshot", "APFS-clone the host workspace into a per-box scratch dir before seeding /workspace (stabilizes the tar-pipe source)").option("--no-host-snapshot", "bind the live workspace directly (host edits leak into reads)").option(
5140
5140
  "--snapshot <ref>",
5141
5141
  "start from a project checkpoint (see `agentbox checkpoint`); overrides box.defaultCheckpoint"
5142
- ).option("--image <ref>", "override the box image", void 0).option("--attach", "drop into a shell inside the box after it is ready").option("--with-playwright", "also install @playwright/cli@latest globally inside the box").option(
5142
+ ).option("--image <ref>", "override the box image", void 0).option(
5143
+ "--build",
5144
+ "build the docker base image locally instead of pulling the prebuilt one from the registry"
5145
+ ).option("--attach", "drop into a shell inside the box after it is ready").option("--with-playwright", "also install @playwright/cli@latest globally inside the box").option(
5143
5146
  "--with-env",
5144
5147
  "copy host env/config files (.env*, secrets.toml, agentbox.yaml, ...) into /workspace at create time (gitignore-bypassing)"
5145
5148
  ).option("--no-vnc", "disable the per-box Xvnc + noVNC web client (on by default)").option(
@@ -5277,6 +5280,8 @@ var createCommand = new Command9("create").description("Create and start a new a
5277
5280
  name: opts.name,
5278
5281
  checkpointRef,
5279
5282
  image: cfg.effective.box.image,
5283
+ allowPull: opts.build ? false : void 0,
5284
+ imageRegistry: cfg.effective.box.imageRegistry,
5280
5285
  withPlaywright,
5281
5286
  withEnv: cfg.effective.box.withEnv,
5282
5287
  envFilesToImport: wiz.envFilesToImport,
@@ -5357,7 +5362,7 @@ var createCommand = new Command9("create").description("Create and start a new a
5357
5362
  }
5358
5363
  outro5("done");
5359
5364
  if (attachClaudeAfter) {
5360
- const { cloudAgentAttach: cloudAgentAttach2 } = await import("./_cloud-attach-O6NYTLES.js");
5365
+ const { cloudAgentAttach: cloudAgentAttach2 } = await import("./_cloud-attach-2DGI6FUA.js");
5361
5366
  await cloudAgentAttach2({
5362
5367
  box: result.record,
5363
5368
  binary: "claude",
@@ -8753,7 +8758,7 @@ async function dockerChecks() {
8753
8758
  ];
8754
8759
  }
8755
8760
  const daemonRes = { label: "docker daemon", status: "ok", detail: "reachable" };
8756
- const mod = await import("./dist-BQNX7RQE.js");
8761
+ const mod = await import("./dist-SBCQVFCE.js");
8757
8762
  let imgRes;
8758
8763
  try {
8759
8764
  const img = await mod.imageInfo(mod.DEFAULT_BOX_IMAGE);
@@ -8784,7 +8789,7 @@ async function dockerChecks() {
8784
8789
  }
8785
8790
  async function daytonaChecks() {
8786
8791
  try {
8787
- const mod = await import("./dist-TMHSUVTP.js");
8792
+ const mod = await import("./dist-BD5QJRDC.js");
8788
8793
  const status = await mod.getDaytonaStatus();
8789
8794
  if (!status.configured) {
8790
8795
  return [
@@ -8820,7 +8825,7 @@ async function daytonaChecks() {
8820
8825
  }
8821
8826
  async function hetznerChecks() {
8822
8827
  try {
8823
- const mod = await import("./dist-5FQGYRW5.js");
8828
+ const mod = await import("./dist-BNI5PQYK.js");
8824
8829
  const cred = mod.readHetznerCredStatus();
8825
8830
  const credRes = cred.source === "none" ? {
8826
8831
  label: "credentials",
@@ -8852,7 +8857,7 @@ async function hetznerChecks() {
8852
8857
  }
8853
8858
  async function vercelChecks() {
8854
8859
  try {
8855
- const mod = await import("./dist-PZW3GWWU.js");
8860
+ const mod = await import("./dist-SJHY3HYN.js");
8856
8861
  const cred = mod.readVercelCredStatus();
8857
8862
  const credRes = cred.auth === "none" ? {
8858
8863
  label: "credentials",
@@ -9063,7 +9068,7 @@ async function renderDocker(status) {
9063
9068
  }
9064
9069
  async function daytonaStatus() {
9065
9070
  try {
9066
- const mod = await import("./dist-TMHSUVTP.js");
9071
+ const mod = await import("./dist-BD5QJRDC.js");
9067
9072
  return await mod.getDaytonaStatus();
9068
9073
  } catch (err) {
9069
9074
  return {
@@ -9141,6 +9146,7 @@ async function runPrepare(providerName, opts = {}) {
9141
9146
  process.exit(1);
9142
9147
  }
9143
9148
  const cwd = opts.cwd ?? process.cwd();
9149
+ const registry = providerName === "docker" ? await loadEffectiveConfig(cwd).then((c) => c.effective.box.imageRegistry).catch(() => void 0) : void 0;
9144
9150
  const sp = spinner7();
9145
9151
  sp.start(`preparing ${providerName}\u2026`);
9146
9152
  try {
@@ -9148,6 +9154,8 @@ async function runPrepare(providerName, opts = {}) {
9148
9154
  name: opts.name,
9149
9155
  hostWorkspace: cwd,
9150
9156
  force: opts.force,
9157
+ allowPull: opts.build ? false : void 0,
9158
+ registry,
9151
9159
  onLog: (line) => sp.message(line.slice(0, 80))
9152
9160
  });
9153
9161
  if (result.snapshotName !== void 0) {
@@ -9184,7 +9192,10 @@ var prepareCommand = new Command24("prepare").description(
9184
9192
  ).option(
9185
9193
  "-p, --provider <name>",
9186
9194
  "provider to prepare (docker | daytona | hetzner | vercel). Omit for status-only."
9187
- ).option("-n, --name <name>", "snapshot name (Daytona only; default: agentbox-base-<timestamp>)").option("-f, --force", "rebuild even if the image / snapshot already exists").option("-y, --yes", "skip confirmation prompts (cost / time warnings)").option("--status", "show status without preparing anything").action(async (opts) => {
9195
+ ).option("-n, --name <name>", "snapshot name (Daytona only; default: agentbox-base-<timestamp>)").option("-f, --force", "rebuild even if the image / snapshot already exists").option(
9196
+ "--build",
9197
+ "docker: build the base image locally instead of pulling the prebuilt one from the registry"
9198
+ ).option("-y, --yes", "skip confirmation prompts (cost / time warnings)").option("--status", "show status without preparing anything").action(async (opts) => {
9188
9199
  if (!opts.provider || opts.status) {
9189
9200
  await showStatus({});
9190
9201
  return;
@@ -9194,6 +9205,7 @@ var prepareCommand = new Command24("prepare").description(
9194
9205
  await runPrepare(providerName, {
9195
9206
  name: opts.name,
9196
9207
  force: opts.force,
9208
+ build: opts.build,
9197
9209
  yes: opts.yes
9198
9210
  });
9199
9211
  });
@@ -9394,7 +9406,7 @@ function ensureTty() {
9394
9406
  async function runProviderLogin(name) {
9395
9407
  if (name === "docker") return true;
9396
9408
  if (name === "daytona") {
9397
- const mod2 = await import("./dist-TMHSUVTP.js");
9409
+ const mod2 = await import("./dist-BD5QJRDC.js");
9398
9410
  const status2 = await mod2.getDaytonaStatus();
9399
9411
  if (status2.configured) {
9400
9412
  log30.info("daytona: already configured");
@@ -9407,7 +9419,7 @@ async function runProviderLogin(name) {
9407
9419
  return true;
9408
9420
  }
9409
9421
  if (name === "hetzner") {
9410
- const mod2 = await import("./dist-5FQGYRW5.js");
9422
+ const mod2 = await import("./dist-BNI5PQYK.js");
9411
9423
  const status2 = mod2.readHetznerCredStatus();
9412
9424
  if (status2.source !== "none") {
9413
9425
  log30.info("hetzner: already configured");
@@ -9419,7 +9431,7 @@ async function runProviderLogin(name) {
9419
9431
  await mod2.ensureHetznerCredentials();
9420
9432
  return true;
9421
9433
  }
9422
- const mod = await import("./dist-PZW3GWWU.js");
9434
+ const mod = await import("./dist-SJHY3HYN.js");
9423
9435
  const status = mod.readVercelCredStatus();
9424
9436
  if (status.auth !== "none") {
9425
9437
  log30.info(`vercel: already configured (${status.auth})`);