codeam-cli 2.61.40 → 2.61.42

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 CHANGED
@@ -4,6 +4,22 @@ All notable changes to `codeam-cli` are documented here.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.61.41] — 2026-07-25
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Bypass the box-wide pair-auto singleton for host-agent children
12
+
13
+ ## [2.61.40] — 2026-07-25
14
+
15
+ ### CI
16
+
17
+ - **release:** Auto-refresh the wrapper-repo Codespaces prebuild on each release
18
+
19
+ ### Fixed
20
+
21
+ - **cli:** Host-agent supports concurrent multi-session (per-deploy daemon lock)
22
+
7
23
  ## [2.61.39] — 2026-07-25
8
24
 
9
25
  ### Performance
package/dist/index.js CHANGED
@@ -6355,7 +6355,7 @@ function readAnonId() {
6355
6355
  }
6356
6356
  function superProperties() {
6357
6357
  return {
6358
- cliVersion: true ? "2.61.40" : "0.0.0-dev",
6358
+ cliVersion: true ? "2.61.42" : "0.0.0-dev",
6359
6359
  nodeVersion: process.version,
6360
6360
  platform: process.platform,
6361
6361
  arch: process.arch,
@@ -6536,7 +6536,7 @@ var os4 = __toESM(require("os"));
6536
6536
  // package.json
6537
6537
  var package_default = {
6538
6538
  name: "codeam-cli",
6539
- version: "2.61.40",
6539
+ version: "2.61.42",
6540
6540
  description: "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device \u2014 async. The terminal companion for CodeAgent Mobile.",
6541
6541
  type: "commonjs",
6542
6542
  main: "dist/index.js",
@@ -7707,7 +7707,7 @@ var CommandRelayService = class _CommandRelayService {
7707
7707
  // fresh + clear the "CLI update available" banner after a self-update
7708
7708
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7709
7709
  // pair/reconnect). Older backends ignore the extra field.
7710
- ..."2.61.40" ? { ideVersion: "2.61.40" } : {}
7710
+ ..."2.61.42" ? { ideVersion: "2.61.42" } : {}
7711
7711
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7712
7712
  }
7713
7713
  /**
@@ -17413,7 +17413,7 @@ function maskToken(text, cloneToken) {
17413
17413
  }
17414
17414
  return masked;
17415
17415
  }
17416
- async function prepareWorkspace(repoOrPath, deployId, cloneToken, provider = "github") {
17416
+ async function prepareWorkspace(repoOrPath, deployId, cloneToken, provider = "github", branch) {
17417
17417
  if (isAbsolutePathTarget(repoOrPath)) {
17418
17418
  if (!fs36.existsSync(repoOrPath)) {
17419
17419
  throw new Error(`deploy target path does not exist: ${repoOrPath}`);
@@ -17427,8 +17427,9 @@ async function prepareWorkspace(repoOrPath, deployId, cloneToken, provider = "gi
17427
17427
  }
17428
17428
  fs36.mkdirSync(selfHostedWorkspaceRoot(), { recursive: true, mode: 448 });
17429
17429
  const cloneUrl = repoCloneUrl(repoOrPath, cloneToken, provider);
17430
+ const cloneArgs = branch ? ["clone", "--depth", "1", "--branch", branch, cloneUrl, dest] : ["clone", "--depth", "1", cloneUrl, dest];
17430
17431
  try {
17431
- await execFileP4("git", ["clone", "--depth", "1", cloneUrl, dest], {
17432
+ await execFileP4("git", cloneArgs, {
17432
17433
  timeout: 12e4,
17433
17434
  maxBuffer: 16 * 1024 * 1024,
17434
17435
  env: nonInteractiveGitEnv()
@@ -18691,7 +18692,7 @@ async function autoUpgradeBeforeCriticalCommand() {
18691
18692
  if (process.env.NODE_ENV === "test") return;
18692
18693
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
18693
18694
  if (process.env.CI) return;
18694
- const current = true ? "2.61.40" : null;
18695
+ const current = true ? "2.61.42" : null;
18695
18696
  if (!current) return;
18696
18697
  const cache = readCache();
18697
18698
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18708,7 +18709,7 @@ function checkForUpdates() {
18708
18709
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
18709
18710
  if (process.env.CI) return;
18710
18711
  if (!process.stdout.isTTY) return;
18711
- const current = true ? "2.61.40" : null;
18712
+ const current = true ? "2.61.42" : null;
18712
18713
  if (!current) return;
18713
18714
  const cache = readCache();
18714
18715
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18728,7 +18729,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
18728
18729
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
18729
18730
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
18730
18731
  function currentCliVersion() {
18731
- return true ? "2.61.40" : null;
18732
+ return true ? "2.61.42" : null;
18732
18733
  }
18733
18734
  function runCmd(cmd, args2, timeoutMs) {
18734
18735
  return new Promise((resolve8) => {
@@ -18940,6 +18941,9 @@ function isDeployPayload(p2) {
18940
18941
  if (p2.repoProvider !== void 0 && p2.repoProvider !== "github" && p2.repoProvider !== "gitlab") {
18941
18942
  return false;
18942
18943
  }
18944
+ if (p2.branch !== void 0 && typeof p2.branch !== "string") {
18945
+ return false;
18946
+ }
18943
18947
  if (p2.headroomEnabled !== void 0 && typeof p2.headroomEnabled !== "boolean") {
18944
18948
  return false;
18945
18949
  }
@@ -19653,7 +19657,8 @@ var HostAgentSupervisor = class {
19653
19657
  payload.repoOrPath,
19654
19658
  payload.deployId,
19655
19659
  payload.cloneToken,
19656
- payload.repoProvider ?? "github"
19660
+ payload.repoProvider ?? "github",
19661
+ payload.branch
19657
19662
  );
19658
19663
  let childEnv;
19659
19664
  let extraArgs = [];
@@ -19670,7 +19675,12 @@ var HostAgentSupervisor = class {
19670
19675
  API_TIMEOUT_MS: "3000000",
19671
19676
  CODEAM_AUTO_TOKEN: payload.autoPairToken
19672
19677
  };
19673
- const houseConfigDir = path46.join(os38.homedir(), ".codeam", "house-claude");
19678
+ const houseConfigDir = path46.join(
19679
+ os38.homedir(),
19680
+ ".codeam",
19681
+ "house-claude",
19682
+ payload.deployId
19683
+ );
19674
19684
  try {
19675
19685
  fs43.mkdirSync(houseConfigDir, { recursive: true, mode: 448 });
19676
19686
  } catch {
@@ -19686,6 +19696,7 @@ var HostAgentSupervisor = class {
19686
19696
  };
19687
19697
  }
19688
19698
  childEnv = { ...childEnv, CODEAM_AUTO_APPROVE: "1" };
19699
+ childEnv = { ...childEnv, CODEAM_HOST_AGENT_CHILD: "1" };
19689
19700
  if (payload.agentInstallScript) {
19690
19701
  report("installing", "installing agent CLI");
19691
19702
  await this.runAgentInstall(payload.agentInstallScript);
@@ -24678,7 +24689,7 @@ function acquireSingletonLock() {
24678
24689
  }
24679
24690
  async function pairAuto(args2) {
24680
24691
  installRelayCrashGuards();
24681
- if (!acquireSingletonLock()) {
24692
+ if (process.env.CODEAM_HOST_AGENT_CHILD !== "1" && !acquireSingletonLock()) {
24682
24693
  capture("pair_auto_deferred_singleton", {});
24683
24694
  console.log(" A codeam session is already running here \u2014 deferring to it.");
24684
24695
  return;
@@ -38844,7 +38855,7 @@ function checkChokidar() {
38844
38855
  }
38845
38856
  async function doctor(args2 = []) {
38846
38857
  const json = args2.includes("--json");
38847
- const cliVersion = true ? "2.61.40" : "0.0.0-dev";
38858
+ const cliVersion = true ? "2.61.42" : "0.0.0-dev";
38848
38859
  const apiBase2 = resolveApiBaseUrl();
38849
38860
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
38850
38861
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -39355,7 +39366,7 @@ async function mcpRun(args2) {
39355
39366
  // src/commands/version.ts
39356
39367
  var import_picocolors15 = __toESM(require("picocolors"));
39357
39368
  function version2() {
39358
- const v = true ? "2.61.40" : "unknown";
39369
+ const v = true ? "2.61.42" : "unknown";
39359
39370
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
39360
39371
  }
39361
39372
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.61.40",
3
+ "version": "2.61.42",
4
4
  "description": "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device — async. The terminal companion for CodeAgent Mobile.",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",