codeam-cli 2.39.3 → 2.39.5
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 +12 -0
- package/dist/index.js +15 -8
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ 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.4] — 2026-06-12
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Retry transient bd spawn ETXTBSY (not just ENOENT) so beads provisions
|
|
12
|
+
|
|
13
|
+
## [2.39.3] — 2026-06-12
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Singleton guard for pair-auto — prevent split-brain sessions (codeagent-qi4)
|
|
18
|
+
|
|
7
19
|
## [2.39.2] — 2026-06-12
|
|
8
20
|
|
|
9
21
|
### 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.
|
|
501
|
+
version: "2.39.5",
|
|
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.
|
|
5903
|
+
cliVersion: true ? "2.39.5" : "0.0.0-dev",
|
|
5904
5904
|
nodeVersion: process.version,
|
|
5905
5905
|
platform: process.platform,
|
|
5906
5906
|
arch: process.arch,
|
|
@@ -17598,8 +17598,9 @@ var BdAdapter = class {
|
|
|
17598
17598
|
`bd ${args2.join(" ")} (cwd=${this.opts.cwd ?? process.cwd()}, shared-server)`
|
|
17599
17599
|
);
|
|
17600
17600
|
let res = await _spawnSeam.run(binary, args2, { cwd: this.opts.cwd, env });
|
|
17601
|
-
|
|
17602
|
-
|
|
17601
|
+
const TRANSIENT_SPAWN = /ENOENT|ETXTBSY/;
|
|
17602
|
+
for (let attempt = 1; attempt <= 5 && res.code === -1 && TRANSIENT_SPAWN.test(res.stderr); attempt++) {
|
|
17603
|
+
log.info("beads", `bd ${args2[0]} transient spawn failure (binary busy) \u2014 retry ${attempt}/5`);
|
|
17603
17604
|
await _adapterSeam.sleep(750 * attempt);
|
|
17604
17605
|
res = await _spawnSeam.run(binary, args2, { cwd: this.opts.cwd, env });
|
|
17605
17606
|
}
|
|
@@ -18130,12 +18131,18 @@ var _linkSeam = {
|
|
|
18130
18131
|
const pathDirs = (process.env.PATH ?? "").split(path39.delimiter).filter(Boolean);
|
|
18131
18132
|
const home = _linkSeam.homedir();
|
|
18132
18133
|
const localBin = home ? path39.join(home, ".local", "bin") : null;
|
|
18134
|
+
if (localBin) {
|
|
18135
|
+
try {
|
|
18136
|
+
_linkSeam.ensureDir(localBin);
|
|
18137
|
+
} catch {
|
|
18138
|
+
}
|
|
18139
|
+
}
|
|
18133
18140
|
const candidates = [];
|
|
18141
|
+
if (localBin) candidates.push(localBin);
|
|
18134
18142
|
try {
|
|
18135
18143
|
candidates.push(path39.dirname(process.execPath));
|
|
18136
18144
|
} catch {
|
|
18137
18145
|
}
|
|
18138
|
-
if (localBin) candidates.push(localBin);
|
|
18139
18146
|
candidates.push("/usr/local/bin");
|
|
18140
18147
|
const entry = process.argv[1];
|
|
18141
18148
|
if (entry) {
|
|
@@ -26728,7 +26735,7 @@ function checkChokidar() {
|
|
|
26728
26735
|
}
|
|
26729
26736
|
async function doctor(args2 = []) {
|
|
26730
26737
|
const json = args2.includes("--json");
|
|
26731
|
-
const cliVersion = true ? "2.39.
|
|
26738
|
+
const cliVersion = true ? "2.39.5" : "0.0.0-dev";
|
|
26732
26739
|
const apiBase = resolveApiBaseUrl();
|
|
26733
26740
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
26734
26741
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -26927,7 +26934,7 @@ async function completion(args2) {
|
|
|
26927
26934
|
// src/commands/version.ts
|
|
26928
26935
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
26929
26936
|
function version2() {
|
|
26930
|
-
const v = true ? "2.39.
|
|
26937
|
+
const v = true ? "2.39.5" : "unknown";
|
|
26931
26938
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
26932
26939
|
}
|
|
26933
26940
|
|
|
@@ -27213,7 +27220,7 @@ function checkForUpdates() {
|
|
|
27213
27220
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
27214
27221
|
if (process.env.CI) return;
|
|
27215
27222
|
if (!process.stdout.isTTY) return;
|
|
27216
|
-
const current = true ? "2.39.
|
|
27223
|
+
const current = true ? "2.39.5" : null;
|
|
27217
27224
|
if (!current) return;
|
|
27218
27225
|
const cache = readCache();
|
|
27219
27226
|
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.
|
|
3
|
+
"version": "2.39.5",
|
|
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",
|