codeam-cli 2.60.54 → 2.60.56

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,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.60.55] — 2026-07-14
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Two-tier ACP idle watchdog — context compaction no longer bricks the session
12
+
13
+ ## [2.60.54] — 2026-07-13
14
+
15
+ ### Fixed
16
+
17
+ - **cli:** Give the CodeRabbit browser login a user-paced timeout (15 min)
18
+
7
19
  ## [2.60.53] — 2026-07-12
8
20
 
9
21
  ### Fixed
package/dist/index.js CHANGED
@@ -5747,7 +5747,7 @@ function readAnonId() {
5747
5747
  }
5748
5748
  function superProperties() {
5749
5749
  return {
5750
- cliVersion: true ? "2.60.54" : "0.0.0-dev",
5750
+ cliVersion: true ? "2.60.56" : "0.0.0-dev",
5751
5751
  nodeVersion: process.version,
5752
5752
  platform: process.platform,
5753
5753
  arch: process.arch,
@@ -5928,7 +5928,7 @@ var os4 = __toESM(require("os"));
5928
5928
  // package.json
5929
5929
  var package_default = {
5930
5930
  name: "codeam-cli",
5931
- version: "2.60.54",
5931
+ version: "2.60.56",
5932
5932
  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.",
5933
5933
  type: "commonjs",
5934
5934
  main: "dist/index.js",
@@ -7037,7 +7037,7 @@ var CommandRelayService = class {
7037
7037
  // fresh + clear the "CLI update available" banner after a self-update
7038
7038
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7039
7039
  // pair/reconnect). Older backends ignore the extra field.
7040
- ..."2.60.54" ? { ideVersion: "2.60.54" } : {}
7040
+ ..."2.60.56" ? { ideVersion: "2.60.56" } : {}
7041
7041
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7042
7042
  }
7043
7043
  /**
@@ -15701,8 +15701,13 @@ function runCoderabbitOAuthLogin(deps) {
15701
15701
  if (e.kind === "awaiting_browser") {
15702
15702
  setPendingCoderabbitLogin({
15703
15703
  deliver: (callbackUrl) => {
15704
- child.stdin?.write(`${callbackUrl}
15704
+ if (/^http:\/\/(127\.0\.0\.1|localhost|\[::1\])/i.test(callbackUrl)) {
15705
+ void fetch(callbackUrl, { signal: AbortSignal.timeout(15e3) }).catch(() => {
15706
+ });
15707
+ } else {
15708
+ child.stdin?.write(`${callbackUrl}
15705
15709
  `);
15710
+ }
15706
15711
  }
15707
15712
  });
15708
15713
  } else if (e.kind === "authenticated") {
@@ -17609,7 +17614,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17609
17614
  if (process.env.NODE_ENV === "test") return;
17610
17615
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17611
17616
  if (process.env.CI) return;
17612
- const current = true ? "2.60.54" : null;
17617
+ const current = true ? "2.60.56" : null;
17613
17618
  if (!current) return;
17614
17619
  const cache = readCache();
17615
17620
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17626,7 +17631,7 @@ function checkForUpdates() {
17626
17631
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17627
17632
  if (process.env.CI) return;
17628
17633
  if (!process.stdout.isTTY) return;
17629
- const current = true ? "2.60.54" : null;
17634
+ const current = true ? "2.60.56" : null;
17630
17635
  if (!current) return;
17631
17636
  const cache = readCache();
17632
17637
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17646,7 +17651,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
17646
17651
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
17647
17652
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
17648
17653
  function currentCliVersion() {
17649
- return true ? "2.60.54" : null;
17654
+ return true ? "2.60.56" : null;
17650
17655
  }
17651
17656
  function runCmd(cmd, args2, timeoutMs) {
17652
17657
  return new Promise((resolve7) => {
@@ -26710,9 +26715,10 @@ var RequestError = class _RequestError extends Error {
26710
26715
  };
26711
26716
 
26712
26717
  // src/agents/acp/idleTimeout.ts
26713
- function createIdleTimeout(idleMs, makeError) {
26718
+ function createIdleTimeout(idleMs, makeError, activeIdleMs = idleMs) {
26714
26719
  let timer;
26715
26720
  let done = false;
26721
+ let alive = false;
26716
26722
  let reject;
26717
26723
  const promise = new Promise((_resolve, rej) => {
26718
26724
  reject = rej;
@@ -26725,10 +26731,13 @@ function createIdleTimeout(idleMs, makeError) {
26725
26731
  };
26726
26732
  const arm = () => {
26727
26733
  if (done) return;
26728
- timer = setTimeout(() => {
26729
- done = true;
26730
- reject(makeError());
26731
- }, idleMs);
26734
+ timer = setTimeout(
26735
+ () => {
26736
+ done = true;
26737
+ reject(makeError());
26738
+ },
26739
+ alive ? activeIdleMs : idleMs
26740
+ );
26732
26741
  timer.unref?.();
26733
26742
  };
26734
26743
  arm();
@@ -26736,6 +26745,7 @@ function createIdleTimeout(idleMs, makeError) {
26736
26745
  promise,
26737
26746
  bump: () => {
26738
26747
  if (done) return;
26748
+ alive = true;
26739
26749
  stop();
26740
26750
  arm();
26741
26751
  },
@@ -26768,6 +26778,7 @@ var PROTOCOL_VERSION2 = 1;
26768
26778
  var FATAL_STARTUP_RE = /IneligibleTierError|UNSUPPORTED_CLIENT|no longer supported for Gemini Code Assist|not eligible for Gemini Code Assist|Error authenticating|ProjectIdRequiredError/i;
26769
26779
  var NEWSESSION_TIMEOUT_MS = 12e4;
26770
26780
  var PROMPT_IDLE_TIMEOUT_MS = 9e4;
26781
+ var PROMPT_ACTIVE_IDLE_TIMEOUT_MS = 6e5;
26771
26782
  var CLIENT_CAPABILITIES = {
26772
26783
  fs: { readTextFile: true, writeTextFile: true },
26773
26784
  terminal: false
@@ -27101,8 +27112,9 @@ var AcpClient = class {
27101
27112
  const idle = createIdleTimeout(
27102
27113
  PROMPT_IDLE_TIMEOUT_MS,
27103
27114
  () => new Error(
27104
- `ACP prompt idle for ${PROMPT_IDLE_TIMEOUT_MS / 1e3}s \u2014 adapter sent no updates. Likely the underlying agent's auth or network is misconfigured; check the adapter stderr lines above (acpAdapter tag) for the actual error.`
27105
- )
27115
+ `ACP prompt idle \u2014 adapter sent no updates for the idle window (${PROMPT_IDLE_TIMEOUT_MS / 1e3}s silent-from-start / ${PROMPT_ACTIVE_IDLE_TIMEOUT_MS / 1e3}s once active). Likely the underlying agent's auth or network is misconfigured; check the adapter stderr lines above (acpAdapter tag) for the actual error.`
27116
+ ),
27117
+ PROMPT_ACTIVE_IDLE_TIMEOUT_MS
27106
27118
  );
27107
27119
  this.promptIdle = idle;
27108
27120
  this.pendingToolCalls.clear();
@@ -34974,7 +34986,7 @@ function checkChokidar() {
34974
34986
  }
34975
34987
  async function doctor(args2 = []) {
34976
34988
  const json = args2.includes("--json");
34977
- const cliVersion = true ? "2.60.54" : "0.0.0-dev";
34989
+ const cliVersion = true ? "2.60.56" : "0.0.0-dev";
34978
34990
  const apiBase2 = resolveApiBaseUrl();
34979
34991
  const diagnosticId = (0, import_node_crypto12.randomUUID)();
34980
34992
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -35451,7 +35463,7 @@ async function mcpRun(args2) {
35451
35463
  // src/commands/version.ts
35452
35464
  var import_picocolors15 = __toESM(require("picocolors"));
35453
35465
  function version2() {
35454
- const v = true ? "2.60.54" : "unknown";
35466
+ const v = true ? "2.60.56" : "unknown";
35455
35467
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
35456
35468
  }
35457
35469
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.60.54",
3
+ "version": "2.60.56",
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",