codeam-cli 2.39.66 → 2.39.68
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 +6 -0
- package/dist/index.js +30 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ 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.66] — 2026-06-20
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Kill preview dev-server process group to stop port leaks (EADDRINUSE)
|
|
12
|
+
|
|
7
13
|
## [2.39.65] — 2026-06-20
|
|
8
14
|
|
|
9
15
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -5388,7 +5388,7 @@ function readAnonId() {
|
|
|
5388
5388
|
}
|
|
5389
5389
|
function superProperties() {
|
|
5390
5390
|
return {
|
|
5391
|
-
cliVersion: true ? "2.39.
|
|
5391
|
+
cliVersion: true ? "2.39.68" : "0.0.0-dev",
|
|
5392
5392
|
nodeVersion: process.version,
|
|
5393
5393
|
platform: process.platform,
|
|
5394
5394
|
arch: process.arch,
|
|
@@ -5547,7 +5547,7 @@ var os4 = __toESM(require("os"));
|
|
|
5547
5547
|
// package.json
|
|
5548
5548
|
var package_default = {
|
|
5549
5549
|
name: "codeam-cli",
|
|
5550
|
-
version: "2.39.
|
|
5550
|
+
version: "2.39.68",
|
|
5551
5551
|
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.",
|
|
5552
5552
|
type: "commonjs",
|
|
5553
5553
|
main: "dist/index.js",
|
|
@@ -17391,7 +17391,7 @@ function checkForUpdates() {
|
|
|
17391
17391
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17392
17392
|
if (process.env.CI) return;
|
|
17393
17393
|
if (!process.stdout.isTTY) return;
|
|
17394
|
-
const current = true ? "2.39.
|
|
17394
|
+
const current = true ? "2.39.68" : null;
|
|
17395
17395
|
if (!current) return;
|
|
17396
17396
|
const cache = readCache();
|
|
17397
17397
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17796,7 +17796,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process13.s
|
|
|
17796
17796
|
detached: false
|
|
17797
17797
|
});
|
|
17798
17798
|
function currentCliVersion() {
|
|
17799
|
-
return true ? "2.39.
|
|
17799
|
+
return true ? "2.39.68" : null;
|
|
17800
17800
|
}
|
|
17801
17801
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17802
17802
|
return new Promise((resolve7) => {
|
|
@@ -17867,6 +17867,20 @@ var defaultDisableService = () => {
|
|
|
17867
17867
|
} catch {
|
|
17868
17868
|
}
|
|
17869
17869
|
};
|
|
17870
|
+
var defaultTeardownHeadroom = () => {
|
|
17871
|
+
try {
|
|
17872
|
+
const kind = JSON.parse(fs39.readFileSync(headroomConfigPath(), "utf8")).agent;
|
|
17873
|
+
if (kind) {
|
|
17874
|
+
(0, import_node_child_process13.execFileSync)("headroom", ["unwrap", kind], { stdio: "ignore", timeout: 15e3 });
|
|
17875
|
+
}
|
|
17876
|
+
} catch {
|
|
17877
|
+
}
|
|
17878
|
+
try {
|
|
17879
|
+
(0, import_node_child_process13.execFileSync)("pkill", ["-TERM", "-f", "headroom.*proxy"], { stdio: "ignore" });
|
|
17880
|
+
} catch {
|
|
17881
|
+
}
|
|
17882
|
+
persistHeadroomConfig({ enabled: false });
|
|
17883
|
+
};
|
|
17870
17884
|
var HostAgentSupervisor = class {
|
|
17871
17885
|
constructor(identity, deps = {}) {
|
|
17872
17886
|
this.identity = identity;
|
|
@@ -17877,6 +17891,7 @@ var HostAgentSupervisor = class {
|
|
|
17877
17891
|
this.metrics = deps.metricsCollector ?? new MetricsCollector();
|
|
17878
17892
|
this.onIdentityRejected = deps.onIdentityRejected ?? defaultOnIdentityRejected;
|
|
17879
17893
|
this.disableService = deps.disableService ?? defaultDisableService;
|
|
17894
|
+
this.teardownHeadroom = deps.teardownHeadroom ?? defaultTeardownHeadroom;
|
|
17880
17895
|
this.selfUpdate = deps.selfUpdate ?? runSelfUpdate;
|
|
17881
17896
|
this.onUpdated = deps.onUpdated ?? defaultOnUpdated;
|
|
17882
17897
|
}
|
|
@@ -17910,6 +17925,7 @@ var HostAgentSupervisor = class {
|
|
|
17910
17925
|
onIdentityRejected;
|
|
17911
17926
|
/** Best-effort systemd de-provision used by `self_hosted_wipe`. */
|
|
17912
17927
|
disableService;
|
|
17928
|
+
teardownHeadroom;
|
|
17913
17929
|
/** Guards against firing the self-heal more than once. */
|
|
17914
17930
|
healing = false;
|
|
17915
17931
|
/**
|
|
@@ -18107,6 +18123,7 @@ var HostAgentSupervisor = class {
|
|
|
18107
18123
|
if (cmd.type === "self_hosted_wipe") {
|
|
18108
18124
|
log.warn("host-agent", `self_hosted_wipe received id=${cmd.id} \u2014 de-provisioning`);
|
|
18109
18125
|
this.stop();
|
|
18126
|
+
this.teardownHeadroom();
|
|
18110
18127
|
this.disableService();
|
|
18111
18128
|
if (!this.healing) {
|
|
18112
18129
|
this.healing = true;
|
|
@@ -21795,6 +21812,13 @@ var AcpClient = class {
|
|
|
21795
21812
|
if (!this.connection) {
|
|
21796
21813
|
throw new Error("AcpClient.loadSession called before start()");
|
|
21797
21814
|
}
|
|
21815
|
+
if (sessionId === this.sessionId) {
|
|
21816
|
+
log.info(
|
|
21817
|
+
"acpClient",
|
|
21818
|
+
`loadSession skipped \u2014 already the active session (${sessionId.slice(0, 8)})`
|
|
21819
|
+
);
|
|
21820
|
+
return;
|
|
21821
|
+
}
|
|
21798
21822
|
log.info("acpClient", `loadSession \u2192 sessionId=${sessionId.slice(0, 8)}`);
|
|
21799
21823
|
await this.connection.loadSession({
|
|
21800
21824
|
sessionId,
|
|
@@ -28411,7 +28435,7 @@ function checkChokidar() {
|
|
|
28411
28435
|
}
|
|
28412
28436
|
async function doctor(args2 = []) {
|
|
28413
28437
|
const json = args2.includes("--json");
|
|
28414
|
-
const cliVersion = true ? "2.39.
|
|
28438
|
+
const cliVersion = true ? "2.39.68" : "0.0.0-dev";
|
|
28415
28439
|
const apiBase2 = resolveApiBaseUrl();
|
|
28416
28440
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
28417
28441
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -28610,7 +28634,7 @@ async function completion(args2) {
|
|
|
28610
28634
|
// src/commands/version.ts
|
|
28611
28635
|
var import_picocolors14 = __toESM(require("picocolors"));
|
|
28612
28636
|
function version2() {
|
|
28613
|
-
const v = true ? "2.39.
|
|
28637
|
+
const v = true ? "2.39.68" : "unknown";
|
|
28614
28638
|
console.log(`${import_picocolors14.default.bold("codeam-cli")} ${import_picocolors14.default.cyan(v)}`);
|
|
28615
28639
|
}
|
|
28616
28640
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.39.
|
|
3
|
+
"version": "2.39.68",
|
|
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",
|