@madarco/agentbox 0.11.1 → 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.
package/dist/index.js CHANGED
@@ -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-PZ2TJF2U.js";
65
+ } from "./chunk-GYJ62GFL.js";
65
66
  import {
66
67
  AmbiguousBoxError,
67
68
  BOX_STATUS_EVENT,
@@ -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.1" : "0.0.0-dev";
224
- var AGENTBOX_COMMIT = true ? "b00384ce" : "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";
@@ -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",
@@ -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-45ECDTRL.js");
5408
+ const { cloudAgentAttach: cloudAgentAttach2 } = await import("./_cloud-attach-XWCVLO5V.js");
5423
5409
  await cloudAgentAttach2({
5424
5410
  box: result.record,
5425
5411
  binary: "claude",
@@ -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 = {};