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 +12 -0
- package/dist/index.js +28 -16
- 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.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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
26730
|
-
|
|
26731
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|