codeam-cli 2.61.39 → 2.61.41
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 +16 -0
- package/dist/index.js +29 -15
- package/package.json +1 -1
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.40] — 2026-07-25
|
|
8
|
+
|
|
9
|
+
### CI
|
|
10
|
+
|
|
11
|
+
- **release:** Auto-refresh the wrapper-repo Codespaces prebuild on each release
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **cli:** Host-agent supports concurrent multi-session (per-deploy daemon lock)
|
|
16
|
+
|
|
17
|
+
## [2.61.39] — 2026-07-25
|
|
18
|
+
|
|
19
|
+
### Performance
|
|
20
|
+
|
|
21
|
+
- **cli:** Un-gate the agent spawn from beads provisioning (codespace)
|
|
22
|
+
|
|
7
23
|
## [2.61.38] — 2026-07-24
|
|
8
24
|
|
|
9
25
|
### Fixed
|
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.
|
|
6358
|
+
cliVersion: true ? "2.61.41" : "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.
|
|
6539
|
+
version: "2.61.41",
|
|
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.
|
|
7710
|
+
..."2.61.41" ? { ideVersion: "2.61.41" } : {}
|
|
7711
7711
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
7712
7712
|
}
|
|
7713
7713
|
/**
|
|
@@ -18691,7 +18691,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
18691
18691
|
if (process.env.NODE_ENV === "test") return;
|
|
18692
18692
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18693
18693
|
if (process.env.CI) return;
|
|
18694
|
-
const current = true ? "2.61.
|
|
18694
|
+
const current = true ? "2.61.41" : null;
|
|
18695
18695
|
if (!current) return;
|
|
18696
18696
|
const cache = readCache();
|
|
18697
18697
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18708,7 +18708,7 @@ function checkForUpdates() {
|
|
|
18708
18708
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18709
18709
|
if (process.env.CI) return;
|
|
18710
18710
|
if (!process.stdout.isTTY) return;
|
|
18711
|
-
const current = true ? "2.61.
|
|
18711
|
+
const current = true ? "2.61.41" : null;
|
|
18712
18712
|
if (!current) return;
|
|
18713
18713
|
const cache = readCache();
|
|
18714
18714
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18728,7 +18728,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
18728
18728
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
18729
18729
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
18730
18730
|
function currentCliVersion() {
|
|
18731
|
-
return true ? "2.61.
|
|
18731
|
+
return true ? "2.61.41" : null;
|
|
18732
18732
|
}
|
|
18733
18733
|
function runCmd(cmd, args2, timeoutMs) {
|
|
18734
18734
|
return new Promise((resolve8) => {
|
|
@@ -19670,7 +19670,12 @@ var HostAgentSupervisor = class {
|
|
|
19670
19670
|
API_TIMEOUT_MS: "3000000",
|
|
19671
19671
|
CODEAM_AUTO_TOKEN: payload.autoPairToken
|
|
19672
19672
|
};
|
|
19673
|
-
const houseConfigDir = path46.join(
|
|
19673
|
+
const houseConfigDir = path46.join(
|
|
19674
|
+
os38.homedir(),
|
|
19675
|
+
".codeam",
|
|
19676
|
+
"house-claude",
|
|
19677
|
+
payload.deployId
|
|
19678
|
+
);
|
|
19674
19679
|
try {
|
|
19675
19680
|
fs43.mkdirSync(houseConfigDir, { recursive: true, mode: 448 });
|
|
19676
19681
|
} catch {
|
|
@@ -19686,6 +19691,7 @@ var HostAgentSupervisor = class {
|
|
|
19686
19691
|
};
|
|
19687
19692
|
}
|
|
19688
19693
|
childEnv = { ...childEnv, CODEAM_AUTO_APPROVE: "1" };
|
|
19694
|
+
childEnv = { ...childEnv, CODEAM_HOST_AGENT_CHILD: "1" };
|
|
19689
19695
|
if (payload.agentInstallScript) {
|
|
19690
19696
|
report("installing", "installing agent CLI");
|
|
19691
19697
|
await this.runAgentInstall(payload.agentInstallScript);
|
|
@@ -19812,6 +19818,13 @@ var HostAgentSupervisor = class {
|
|
|
19812
19818
|
report("failed", detail ? `agent exited (${code}): ${detail}` : `agent exited (${code})`);
|
|
19813
19819
|
}
|
|
19814
19820
|
});
|
|
19821
|
+
proc.once("error", (err) => {
|
|
19822
|
+
const tracked = this.children.get(payload.deployId)?.proc === proc;
|
|
19823
|
+
if (tracked) this.children.delete(payload.deployId);
|
|
19824
|
+
if (tracked) {
|
|
19825
|
+
report("failed", `agent failed to start: ${err instanceof Error ? err.message : String(err)}`);
|
|
19826
|
+
}
|
|
19827
|
+
});
|
|
19815
19828
|
} catch (err) {
|
|
19816
19829
|
const message = err instanceof Error ? err.message : String(err);
|
|
19817
19830
|
log.warn("host-agent", `deploy ${payload.deployId.slice(0, 8)} failed: ${message}`);
|
|
@@ -24671,7 +24684,7 @@ function acquireSingletonLock() {
|
|
|
24671
24684
|
}
|
|
24672
24685
|
async function pairAuto(args2) {
|
|
24673
24686
|
installRelayCrashGuards();
|
|
24674
|
-
if (!acquireSingletonLock()) {
|
|
24687
|
+
if (process.env.CODEAM_HOST_AGENT_CHILD !== "1" && !acquireSingletonLock()) {
|
|
24675
24688
|
capture("pair_auto_deferred_singleton", {});
|
|
24676
24689
|
console.log(" A codeam session is already running here \u2014 deferring to it.");
|
|
24677
24690
|
return;
|
|
@@ -24688,7 +24701,7 @@ async function pairAuto(args2) {
|
|
|
24688
24701
|
`agent "${claimed.agent}" is not supported in this codeam-cli version. Upgrade with 'npm i -g codeam-cli@latest'.`
|
|
24689
24702
|
);
|
|
24690
24703
|
}
|
|
24691
|
-
|
|
24704
|
+
const claimedSession = {
|
|
24692
24705
|
id: claimed.sessionId,
|
|
24693
24706
|
pluginId,
|
|
24694
24707
|
userName: claimed.user.name,
|
|
@@ -24699,7 +24712,8 @@ async function pairAuto(args2) {
|
|
|
24699
24712
|
// SEC crit1 (#813): persist so boot-time /reconnect proves possession.
|
|
24700
24713
|
pollSecret,
|
|
24701
24714
|
agent: claimed.agent
|
|
24702
|
-
}
|
|
24715
|
+
};
|
|
24716
|
+
addSession(claimedSession);
|
|
24703
24717
|
identifyUser({
|
|
24704
24718
|
userId: claimed.user.email,
|
|
24705
24719
|
email: claimed.user.email,
|
|
@@ -24738,7 +24752,7 @@ async function pairAuto(args2) {
|
|
|
24738
24752
|
process.once("exit", () => {
|
|
24739
24753
|
headroomReporter?.stop();
|
|
24740
24754
|
});
|
|
24741
|
-
await start();
|
|
24755
|
+
await start(void 0, claimedSession);
|
|
24742
24756
|
}
|
|
24743
24757
|
|
|
24744
24758
|
// src/services/headroom/wrap-launch.ts
|
|
@@ -35915,10 +35929,10 @@ function ensureClaudeOnboarded(cwd) {
|
|
|
35915
35929
|
}
|
|
35916
35930
|
|
|
35917
35931
|
// src/commands/start.ts
|
|
35918
|
-
async function start(requestedAgent) {
|
|
35932
|
+
async function start(requestedAgent, presetSession) {
|
|
35919
35933
|
installRelayCrashGuards();
|
|
35920
35934
|
showIntro();
|
|
35921
|
-
const session = requestedAgent ? getActiveSessionForAgent(requestedAgent) : getActiveSession();
|
|
35935
|
+
const session = presetSession ? presetSession : requestedAgent ? getActiveSessionForAgent(requestedAgent) : getActiveSession();
|
|
35922
35936
|
if (!session) {
|
|
35923
35937
|
if (requestedAgent) {
|
|
35924
35938
|
const displayName = AGENT_REGISTRY[requestedAgent]?.displayName ?? requestedAgent;
|
|
@@ -38836,7 +38850,7 @@ function checkChokidar() {
|
|
|
38836
38850
|
}
|
|
38837
38851
|
async function doctor(args2 = []) {
|
|
38838
38852
|
const json = args2.includes("--json");
|
|
38839
|
-
const cliVersion = true ? "2.61.
|
|
38853
|
+
const cliVersion = true ? "2.61.41" : "0.0.0-dev";
|
|
38840
38854
|
const apiBase2 = resolveApiBaseUrl();
|
|
38841
38855
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
38842
38856
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -39347,7 +39361,7 @@ async function mcpRun(args2) {
|
|
|
39347
39361
|
// src/commands/version.ts
|
|
39348
39362
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
39349
39363
|
function version2() {
|
|
39350
|
-
const v = true ? "2.61.
|
|
39364
|
+
const v = true ? "2.61.41" : "unknown";
|
|
39351
39365
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
39352
39366
|
}
|
|
39353
39367
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.61.
|
|
3
|
+
"version": "2.61.41",
|
|
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",
|