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 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.66" : "0.0.0-dev",
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.66",
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.66" : null;
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.66" : null;
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.66" : "0.0.0-dev";
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.66" : "unknown";
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.66",
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",