codeam-cli 2.39.4 → 2.39.6

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,25 @@ 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.39.5] — 2026-06-13
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Retry transient bd spawn ETXTBSY (not just ENOENT) so beads provisions
12
+ - **cli:** Link bd into ~/.local/bin, not the transient /tmp node prefix
13
+
14
+ ## [2.39.4] — 2026-06-12
15
+
16
+ ### Fixed
17
+
18
+ - **cli:** Retry transient bd spawn ETXTBSY (not just ENOENT) so beads provisions
19
+
20
+ ## [2.39.3] — 2026-06-12
21
+
22
+ ### Fixed
23
+
24
+ - **cli:** Singleton guard for pair-auto — prevent split-brain sessions (codeagent-qi4)
25
+
7
26
  ## [2.39.2] — 2026-06-12
8
27
 
9
28
  ### Added
package/dist/index.js CHANGED
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
498
498
  // package.json
499
499
  var package_default = {
500
500
  name: "codeam-cli",
501
- version: "2.39.4",
501
+ version: "2.39.6",
502
502
  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.",
503
503
  type: "commonjs",
504
504
  main: "dist/index.js",
@@ -5900,7 +5900,7 @@ function readAnonId() {
5900
5900
  }
5901
5901
  function superProperties() {
5902
5902
  return {
5903
- cliVersion: true ? "2.39.4" : "0.0.0-dev",
5903
+ cliVersion: true ? "2.39.6" : "0.0.0-dev",
5904
5904
  nodeVersion: process.version,
5905
5905
  platform: process.platform,
5906
5906
  arch: process.arch,
@@ -18131,12 +18131,18 @@ var _linkSeam = {
18131
18131
  const pathDirs = (process.env.PATH ?? "").split(path39.delimiter).filter(Boolean);
18132
18132
  const home = _linkSeam.homedir();
18133
18133
  const localBin = home ? path39.join(home, ".local", "bin") : null;
18134
+ if (localBin) {
18135
+ try {
18136
+ _linkSeam.ensureDir(localBin);
18137
+ } catch {
18138
+ }
18139
+ }
18134
18140
  const candidates = [];
18141
+ if (localBin) candidates.push(localBin);
18135
18142
  try {
18136
18143
  candidates.push(path39.dirname(process.execPath));
18137
18144
  } catch {
18138
18145
  }
18139
- if (localBin) candidates.push(localBin);
18140
18146
  candidates.push("/usr/local/bin");
18141
18147
  const entry = process.argv[1];
18142
18148
  if (entry) {
@@ -23719,6 +23725,21 @@ async function start(requestedAgent) {
23719
23725
  beads = started;
23720
23726
  return started;
23721
23727
  });
23728
+ if (process.env.CODESPACES === "true") {
23729
+ const BEADS_GATE_TIMEOUT_MS = 6e4;
23730
+ let gateTimer;
23731
+ await Promise.race([
23732
+ beadsReady.catch(() => null),
23733
+ new Promise((resolve7) => {
23734
+ gateTimer = setTimeout(resolve7, BEADS_GATE_TIMEOUT_MS);
23735
+ })
23736
+ ]);
23737
+ if (gateTimer) clearTimeout(gateTimer);
23738
+ log.info(
23739
+ "beads",
23740
+ `agent-spawn gate released \u2014 beads ${beads ? "ready" : "not ready (timed out / failed; agent runs without it)"}`
23741
+ );
23742
+ }
23722
23743
  const acpDisabled = process.env.CODEAM_ACP_DISABLED === "1";
23723
23744
  if (!acpDisabled && session.pluginAuthToken) {
23724
23745
  const adapter = getAcpAdapter(session.agent);
@@ -26729,7 +26750,7 @@ function checkChokidar() {
26729
26750
  }
26730
26751
  async function doctor(args2 = []) {
26731
26752
  const json = args2.includes("--json");
26732
- const cliVersion = true ? "2.39.4" : "0.0.0-dev";
26753
+ const cliVersion = true ? "2.39.6" : "0.0.0-dev";
26733
26754
  const apiBase = resolveApiBaseUrl();
26734
26755
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
26735
26756
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -26928,7 +26949,7 @@ async function completion(args2) {
26928
26949
  // src/commands/version.ts
26929
26950
  var import_picocolors13 = __toESM(require("picocolors"));
26930
26951
  function version2() {
26931
- const v = true ? "2.39.4" : "unknown";
26952
+ const v = true ? "2.39.6" : "unknown";
26932
26953
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
26933
26954
  }
26934
26955
 
@@ -27214,7 +27235,7 @@ function checkForUpdates() {
27214
27235
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
27215
27236
  if (process.env.CI) return;
27216
27237
  if (!process.stdout.isTTY) return;
27217
- const current = true ? "2.39.4" : null;
27238
+ const current = true ? "2.39.6" : null;
27218
27239
  if (!current) return;
27219
27240
  const cache = readCache();
27220
27241
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.39.4",
3
+ "version": "2.39.6",
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",