@madarco/agentbox 0.11.0 → 0.11.2

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.
@@ -206,7 +206,7 @@ import {
206
206
  vscodeServerVolumeName,
207
207
  waitForTmuxPaneContent,
208
208
  warmUpClaudeCredentials
209
- } from "./chunk-GUNUBIRB.js";
209
+ } from "./chunk-ZJXTIH6C.js";
210
210
  import {
211
211
  BOX_IMAGE_REGISTRY,
212
212
  DEFAULT_BOX_IMAGE,
@@ -470,4 +470,4 @@ export {
470
470
  warmUpClaudeCredentials,
471
471
  writePreparedDockerState
472
472
  };
473
- //# sourceMappingURL=dist-ZEGIMYWZ.js.map
473
+ //# sourceMappingURL=dist-ASLPRUQR.js.map
@@ -10,12 +10,12 @@ import {
10
10
  } from "./chunk-ZGVMN54V.js";
11
11
  import {
12
12
  createCloudProvider
13
- } from "./chunk-D4Q2RUQI.js";
13
+ } from "./chunk-MXXXKJYS.js";
14
14
  import {
15
15
  stageClaudeStaticForUpload,
16
16
  stageCodexStaticForUpload,
17
17
  stageOpencodeStaticForUpload
18
- } from "./chunk-GUNUBIRB.js";
18
+ } from "./chunk-ZJXTIH6C.js";
19
19
  import {
20
20
  DOCKER_CONTEXT_FILE_MAP,
21
21
  computeContextSha256,
@@ -290,4 +290,4 @@ export {
290
290
  getDaytonaStatus,
291
291
  resolveDockerfileContext
292
292
  };
293
- //# sourceMappingURL=dist-PJFJNXO2.js.map
293
+ //# sourceMappingURL=dist-PTJ6CEQY.js.map
@@ -19,7 +19,7 @@ import {
19
19
  renderInnerCommand,
20
20
  resolveCloudCheckpoint,
21
21
  writeCloudCheckpointManifest
22
- } from "./chunk-D4Q2RUQI.js";
22
+ } from "./chunk-MXXXKJYS.js";
23
23
  import {
24
24
  stageClaudeCredentialsForUpload,
25
25
  stageClaudeStaticForUpload,
@@ -27,7 +27,7 @@ import {
27
27
  stageCodexStaticForUpload,
28
28
  stageOpencodeCredentialsForUpload,
29
29
  stageOpencodeStaticForUpload
30
- } from "./chunk-GUNUBIRB.js";
30
+ } from "./chunk-ZJXTIH6C.js";
31
31
  import {
32
32
  computeContextSha256,
33
33
  preparedStatePathFor,
@@ -871,4 +871,4 @@ export {
871
871
  vercelProvider,
872
872
  writePreparedState
873
873
  };
874
- //# sourceMappingURL=dist-HT2YV6PB.js.map
874
+ //# sourceMappingURL=dist-RAZP76VX.js.map
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-R5XIDQFR.js";
21
21
  import {
22
22
  createCloudProvider
23
- } from "./chunk-D4Q2RUQI.js";
23
+ } from "./chunk-MXXXKJYS.js";
24
24
  import {
25
25
  stageClaudeCredentialsForUpload,
26
26
  stageClaudeStaticForUpload,
@@ -28,7 +28,7 @@ import {
28
28
  stageCodexStaticForUpload,
29
29
  stageOpencodeCredentialsForUpload,
30
30
  stageOpencodeStaticForUpload
31
- } from "./chunk-GUNUBIRB.js";
31
+ } from "./chunk-ZJXTIH6C.js";
32
32
  import {
33
33
  computeContextSha256,
34
34
  preparedStatePathFor,
@@ -1414,4 +1414,4 @@ export {
1414
1414
  withHetznerRetry,
1415
1415
  writePreparedState
1416
1416
  };
1417
- //# sourceMappingURL=dist-4SUIXKSD.js.map
1417
+ //# sourceMappingURL=dist-WMQDMTWS.js.map
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ import {
31
31
  probeCloudCheckpoint,
32
32
  resolveCloudCheckpoint,
33
33
  seedAgentVolumesIfFresh
34
- } from "./chunk-D4Q2RUQI.js";
34
+ } from "./chunk-MXXXKJYS.js";
35
35
  import {
36
36
  ADVANCED_HINT_GROUPS,
37
37
  ALERT_BAND_ROWS,
@@ -40,6 +40,7 @@ import {
40
40
  buildCloudAttachInnerCommand,
41
41
  clipboardCaptureAvailable,
42
42
  cloudAgentAttach,
43
+ cloudAgentStartDetached,
43
44
  createMenuLines,
44
45
  detectHostTerminal,
45
46
  getProvider,
@@ -61,7 +62,7 @@ import {
61
62
  statusLine,
62
63
  stripTitleGlyph,
63
64
  subscribePrompts
64
- } from "./chunk-NVSRGC5W.js";
65
+ } from "./chunk-GYJ62GFL.js";
65
66
  import {
66
67
  AmbiguousBoxError,
67
68
  BOX_STATUS_EVENT,
@@ -207,7 +208,7 @@ import {
207
208
  waitForTmuxPaneContent,
208
209
  warmUpClaudeCredentials,
209
210
  writeJob
210
- } from "./chunk-GUNUBIRB.js";
211
+ } from "./chunk-ZJXTIH6C.js";
211
212
  import {
212
213
  DEFAULT_BOX_IMAGE,
213
214
  STATE_DIR,
@@ -220,8 +221,8 @@ import {
220
221
  import "./chunk-G3H2L3O2.js";
221
222
 
222
223
  // src/version.ts
223
- var AGENTBOX_VERSION = true ? "0.11.0" : "0.0.0-dev";
224
- var AGENTBOX_COMMIT = true ? "1f8ef1db" : "dev";
224
+ var AGENTBOX_VERSION = true ? "0.11.2" : "0.0.0-dev";
225
+ var AGENTBOX_COMMIT = true ? "3683063c" : "dev";
225
226
 
226
227
  // src/index.ts
227
228
  import { Command as Command46 } from "commander";
@@ -1893,11 +1894,11 @@ import { basename } from "path";
1893
1894
  async function cloudBackendForProvider(provider) {
1894
1895
  switch (provider) {
1895
1896
  case "daytona":
1896
- return (await import("./dist-PJFJNXO2.js")).daytonaBackend;
1897
+ return (await import("./dist-PTJ6CEQY.js")).daytonaBackend;
1897
1898
  case "hetzner":
1898
- return (await import("./dist-4SUIXKSD.js")).hetznerBackend;
1899
+ return (await import("./dist-WMQDMTWS.js")).hetznerBackend;
1899
1900
  case "vercel":
1900
- return (await import("./dist-HT2YV6PB.js")).vercelBackend;
1901
+ return (await import("./dist-RAZP76VX.js")).vercelBackend;
1901
1902
  default:
1902
1903
  return null;
1903
1904
  }
@@ -2249,11 +2250,6 @@ var claudeCommand = new Command2("claude").description("Create a sandboxed box a
2249
2250
  const providerName = opts.provider ?? cfg.effective.box.provider ?? "docker";
2250
2251
  const isCloud = providerName !== "docker";
2251
2252
  if (opts.initialPrompt && opts.initialPrompt.length > 0) {
2252
- if (isCloud) {
2253
- log8.error("-i / --initial-prompt is currently docker-only (cloud sessions only start on attach).");
2254
- cmdLog.close();
2255
- process.exit(2);
2256
- }
2257
2253
  try {
2258
2254
  await assertAgentCredsAvailable({
2259
2255
  agent: "claude-code",
@@ -2815,11 +2811,11 @@ var CLOUD_BACKENDS = ["daytona", "hetzner", "vercel"];
2815
2811
  async function cloudProviderFor(backend) {
2816
2812
  switch (backend) {
2817
2813
  case "daytona":
2818
- return (await import("./dist-PJFJNXO2.js")).daytonaProvider;
2814
+ return (await import("./dist-PTJ6CEQY.js")).daytonaProvider;
2819
2815
  case "hetzner":
2820
- return (await import("./dist-4SUIXKSD.js")).hetznerProvider;
2816
+ return (await import("./dist-WMQDMTWS.js")).hetznerProvider;
2821
2817
  case "vercel":
2822
- return (await import("./dist-HT2YV6PB.js")).vercelProvider;
2818
+ return (await import("./dist-RAZP76VX.js")).vercelProvider;
2823
2819
  }
2824
2820
  }
2825
2821
  var CHECKPOINT_NOTICE = "Checkpoint in progress \u2014 the box will be unresponsive for a moment";
@@ -3664,11 +3660,6 @@ var codexCommand = new Command5("codex").description("Create a sandboxed box and
3664
3660
  const providerDefault = resolveDefaultCheckpoint(cfg.effective, providerName);
3665
3661
  const checkpointRef = opts.snapshot && opts.snapshot.length > 0 ? opts.snapshot : providerDefault.length > 0 ? providerDefault : void 0;
3666
3662
  if (opts.initialPrompt && opts.initialPrompt.length > 0) {
3667
- if (isCloud) {
3668
- log11.error("-i / --initial-prompt is currently docker-only (cloud sessions only start on attach).");
3669
- cmdLog.close();
3670
- process.exit(2);
3671
- }
3672
3663
  try {
3673
3664
  await assertAgentCredsAvailable({
3674
3665
  agent: "codex",
@@ -4382,11 +4373,6 @@ var opencodeCommand = new Command6("opencode").description("Create a sandboxed b
4382
4373
  const providerDefault = resolveDefaultCheckpoint(cfg.effective, providerName);
4383
4374
  const checkpointRef = opts.snapshot && opts.snapshot.length > 0 ? opts.snapshot : providerDefault.length > 0 ? providerDefault : void 0;
4384
4375
  if (opts.initialPrompt && opts.initialPrompt.length > 0) {
4385
- if (isCloud) {
4386
- log12.error("-i / --initial-prompt is currently docker-only (cloud sessions only start on attach).");
4387
- cmdLog.close();
4388
- process.exit(2);
4389
- }
4390
4376
  try {
4391
4377
  await assertAgentCredsAvailable({
4392
4378
  agent: "opencode",
@@ -5419,7 +5405,7 @@ var createCommand = new Command9("create").description("Create and start a new a
5419
5405
  }
5420
5406
  outro4("done");
5421
5407
  if (attachClaudeAfter) {
5422
- const { cloudAgentAttach: cloudAgentAttach2 } = await import("./_cloud-attach-6C5NMOHD.js");
5408
+ const { cloudAgentAttach: cloudAgentAttach2 } = await import("./_cloud-attach-XWCVLO5V.js");
5423
5409
  await cloudAgentAttach2({
5424
5410
  box: result.record,
5425
5411
  binary: "claude",
@@ -8831,7 +8817,7 @@ async function dockerChecks() {
8831
8817
  ];
8832
8818
  }
8833
8819
  const daemonRes = { label: "docker daemon", status: "ok", detail: "reachable" };
8834
- const mod = await import("./dist-ZEGIMYWZ.js");
8820
+ const mod = await import("./dist-ASLPRUQR.js");
8835
8821
  let imgRes;
8836
8822
  try {
8837
8823
  const img = await mod.imageInfo(mod.DEFAULT_BOX_IMAGE);
@@ -8862,7 +8848,7 @@ async function dockerChecks() {
8862
8848
  }
8863
8849
  async function daytonaChecks() {
8864
8850
  try {
8865
- const mod = await import("./dist-PJFJNXO2.js");
8851
+ const mod = await import("./dist-PTJ6CEQY.js");
8866
8852
  const status = await mod.getDaytonaStatus();
8867
8853
  if (!status.configured) {
8868
8854
  return [
@@ -8898,7 +8884,7 @@ async function daytonaChecks() {
8898
8884
  }
8899
8885
  async function hetznerChecks() {
8900
8886
  try {
8901
- const mod = await import("./dist-4SUIXKSD.js");
8887
+ const mod = await import("./dist-WMQDMTWS.js");
8902
8888
  const cred = mod.readHetznerCredStatus();
8903
8889
  const credRes = cred.source === "none" ? {
8904
8890
  label: "credentials",
@@ -8930,7 +8916,7 @@ async function hetznerChecks() {
8930
8916
  }
8931
8917
  async function vercelChecks() {
8932
8918
  try {
8933
- const mod = await import("./dist-HT2YV6PB.js");
8919
+ const mod = await import("./dist-RAZP76VX.js");
8934
8920
  const cred = mod.readVercelCredStatus();
8935
8921
  const credRes = cred.auth === "none" ? {
8936
8922
  label: "credentials",
@@ -9141,7 +9127,7 @@ async function renderDocker(status) {
9141
9127
  }
9142
9128
  async function daytonaStatus() {
9143
9129
  try {
9144
- const mod = await import("./dist-PJFJNXO2.js");
9130
+ const mod = await import("./dist-PTJ6CEQY.js");
9145
9131
  return await mod.getDaytonaStatus();
9146
9132
  } catch (err) {
9147
9133
  return {
@@ -9479,7 +9465,7 @@ function ensureTty() {
9479
9465
  async function runProviderLogin(name) {
9480
9466
  if (name === "docker") return true;
9481
9467
  if (name === "daytona") {
9482
- const mod2 = await import("./dist-PJFJNXO2.js");
9468
+ const mod2 = await import("./dist-PTJ6CEQY.js");
9483
9469
  const status2 = await mod2.getDaytonaStatus();
9484
9470
  if (status2.configured) {
9485
9471
  log29.info("daytona: already configured");
@@ -9492,7 +9478,7 @@ async function runProviderLogin(name) {
9492
9478
  return true;
9493
9479
  }
9494
9480
  if (name === "hetzner") {
9495
- const mod2 = await import("./dist-4SUIXKSD.js");
9481
+ const mod2 = await import("./dist-WMQDMTWS.js");
9496
9482
  const status2 = mod2.readHetznerCredStatus();
9497
9483
  if (status2.source !== "none") {
9498
9484
  log29.info("hetzner: already configured");
@@ -9504,7 +9490,7 @@ async function runProviderLogin(name) {
9504
9490
  await mod2.ensureHetznerCredentials();
9505
9491
  return true;
9506
9492
  }
9507
- const mod = await import("./dist-HT2YV6PB.js");
9493
+ const mod = await import("./dist-RAZP76VX.js");
9508
9494
  const status = mod.readVercelCredStatus();
9509
9495
  if (status.auth !== "none") {
9510
9496
  log29.info(`vercel: already configured (${status.auth})`);
@@ -9517,7 +9503,7 @@ async function runProviderLogin(name) {
9517
9503
  return true;
9518
9504
  }
9519
9505
  function tutorialBody(provider) {
9520
- const startCmd = provider === "docker" ? "agentbox claude" : `agentbox ${provider} claude`;
9506
+ const startCmd = provider === "docker" ? "agentbox claude " : `agentbox ${provider} claude`;
9521
9507
  return `Get started:
9522
9508
  ${startCmd} # for claude, codex, opencode
9523
9509
  -> Setup wizard? -> Yes # install dependencies and setup agentbox.yaml
@@ -10866,9 +10852,14 @@ var runQueuedJobCommand = new Command35("_run-queued-job").description("internal
10866
10852
  log44.close();
10867
10853
  process.exit(64);
10868
10854
  }
10869
- await runDockerJob(job, log44, (boxId) => {
10855
+ const onBoxCreated = (boxId) => {
10870
10856
  if (job) job = { ...job, boxId };
10871
- });
10857
+ };
10858
+ if ((job.providerName || "docker") === "docker") {
10859
+ await runDockerJob(job, log44, onBoxCreated);
10860
+ } else {
10861
+ await runCloudJob(job, log44, onBoxCreated);
10862
+ }
10872
10863
  const done = {
10873
10864
  ...job,
10874
10865
  status: "done",
@@ -10906,9 +10897,6 @@ async function runDockerJob(job, log44, onBoxCreated) {
10906
10897
  });
10907
10898
  const projectRoot = (await findProjectRoot(opts.workspace)).root;
10908
10899
  const providerName = job.providerName || cfg.effective.box.provider || "docker";
10909
- if (providerName !== "docker") {
10910
- throw new Error(`worker only supports docker provider (got "${providerName}")`);
10911
- }
10912
10900
  const providerDefault = resolveDefaultCheckpoint(cfg.effective, providerName);
10913
10901
  const checkpointRef = opts.snapshot && opts.snapshot.length > 0 ? opts.snapshot : providerDefault.length > 0 ? providerDefault : void 0;
10914
10902
  const useSnapshot = opts.hostSnapshot === false ? false : opts.hostSnapshot === true ? true : cfg.effective.box.hostSnapshot ?? false;
@@ -10981,6 +10969,60 @@ async function runDockerJob(job, log44, onBoxCreated) {
10981
10969
  throw new Error(`unknown agent kind: ${String(job.agent)}`);
10982
10970
  }
10983
10971
  }
10972
+ async function runCloudJob(job, log44, onBoxCreated) {
10973
+ const opts = job.createOpts;
10974
+ const cfg = await loadEffectiveConfig(opts.workspace, {
10975
+ cliOverrides: buildOverridesFromJob(job)
10976
+ });
10977
+ const projectRoot = (await findProjectRoot(opts.workspace)).root;
10978
+ const providerName = job.providerName || cfg.effective.box.provider || "docker";
10979
+ const provider = await providerForCreate({ flag: providerName, config: cfg.effective });
10980
+ const providerDefault = resolveDefaultCheckpoint(cfg.effective, providerName);
10981
+ const checkpointRef = opts.snapshot && opts.snapshot.length > 0 ? opts.snapshot : providerDefault.length > 0 ? providerDefault : void 0;
10982
+ const withPlaywright = cfg.effective.box.withPlaywright || cfg.effective.browser.default !== "agent-browser";
10983
+ log44.write(`creating cloud box (${providerName}) for agent=${job.agent}`);
10984
+ const result = await provider.create({
10985
+ workspacePath: opts.workspace,
10986
+ name: opts.name && opts.name.length > 0 ? opts.name : void 0,
10987
+ checkpointRef,
10988
+ image: cfg.effective.box.image,
10989
+ withPlaywright,
10990
+ withEnv: cfg.effective.box.withEnv,
10991
+ vnc: { enabled: cfg.effective.box.vnc },
10992
+ limits: resolveLimits(cfg.effective.box, opts),
10993
+ projectRoot,
10994
+ onLog: (line) => log44.write(line)
10995
+ });
10996
+ log44.write(`box created: ${result.record.id}`);
10997
+ onBoxCreated(result.record.id);
10998
+ await writeJob({ ...job, boxId: result.record.id });
10999
+ const promptedArgs = buildPromptArgs(job.agent, job.prompt, job.agentArgs);
11000
+ let binary;
11001
+ let sessionName;
11002
+ let extraArgs;
11003
+ if (job.agent === "claude-code") {
11004
+ binary = "claude";
11005
+ sessionName = cfg.effective.claude.sessionName;
11006
+ extraArgs = applyClaudeSkipPermissions(promptedArgs, cfg.effective);
11007
+ } else if (job.agent === "codex") {
11008
+ binary = "codex";
11009
+ sessionName = cfg.effective.codex.sessionName;
11010
+ extraArgs = applyCodexSkipPermissions(promptedArgs, cfg.effective);
11011
+ } else if (job.agent === "opencode") {
11012
+ binary = "opencode";
11013
+ sessionName = cfg.effective.opencode.sessionName;
11014
+ extraArgs = promptedArgs;
11015
+ } else {
11016
+ throw new Error(`unknown agent kind: ${String(job.agent)}`);
11017
+ }
11018
+ log44.write(`starting detached ${job.agent} session`);
11019
+ await cloudAgentStartDetached({
11020
+ box: result.record,
11021
+ binary,
11022
+ sessionName,
11023
+ extraArgs
11024
+ });
11025
+ }
10984
11026
  function buildOverridesFromJob(job) {
10985
11027
  const opts = job.createOpts;
10986
11028
  const box = {};