codeam-cli 2.60.35 → 2.60.37
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 +55 -11
- 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.60.35] — 2026-07-10
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** CodeRabbit OAuth works headless (codespace/self-hosted) via a PTY + stdin token
|
|
12
|
+
|
|
7
13
|
## [2.60.34] — 2026-07-10
|
|
8
14
|
|
|
9
15
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -5689,7 +5689,7 @@ function readAnonId() {
|
|
|
5689
5689
|
}
|
|
5690
5690
|
function superProperties() {
|
|
5691
5691
|
return {
|
|
5692
|
-
cliVersion: true ? "2.60.
|
|
5692
|
+
cliVersion: true ? "2.60.37" : "0.0.0-dev",
|
|
5693
5693
|
nodeVersion: process.version,
|
|
5694
5694
|
platform: process.platform,
|
|
5695
5695
|
arch: process.arch,
|
|
@@ -5870,7 +5870,7 @@ var os4 = __toESM(require("os"));
|
|
|
5870
5870
|
// package.json
|
|
5871
5871
|
var package_default = {
|
|
5872
5872
|
name: "codeam-cli",
|
|
5873
|
-
version: "2.60.
|
|
5873
|
+
version: "2.60.37",
|
|
5874
5874
|
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.",
|
|
5875
5875
|
type: "commonjs",
|
|
5876
5876
|
main: "dist/index.js",
|
|
@@ -6963,7 +6963,7 @@ var CommandRelayService = class {
|
|
|
6963
6963
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
6964
6964
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
6965
6965
|
// pair/reconnect). Older backends ignore the extra field.
|
|
6966
|
-
..."2.60.
|
|
6966
|
+
..."2.60.37" ? { ideVersion: "2.60.37" } : {}
|
|
6967
6967
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
6968
6968
|
}
|
|
6969
6969
|
/**
|
|
@@ -13648,6 +13648,7 @@ function parseReview(stdout) {
|
|
|
13648
13648
|
}
|
|
13649
13649
|
|
|
13650
13650
|
// src/agents/coderabbit/runtime.ts
|
|
13651
|
+
var CODERABBIT_ONESHOT_TIMEOUT_MS = 5 * 6e4;
|
|
13651
13652
|
var CoderabbitRuntimeStrategy = class {
|
|
13652
13653
|
id = "coderabbit";
|
|
13653
13654
|
meta = getAgent("coderabbit");
|
|
@@ -13697,11 +13698,47 @@ var CoderabbitRuntimeStrategy = class {
|
|
|
13697
13698
|
env: { ...process.env, ...launch.env ?? {} },
|
|
13698
13699
|
stdio: ["ignore", "pipe", "pipe"]
|
|
13699
13700
|
});
|
|
13701
|
+
let settled = false;
|
|
13702
|
+
const finish = (out2) => {
|
|
13703
|
+
if (settled) return;
|
|
13704
|
+
settled = true;
|
|
13705
|
+
clearTimeout(timer);
|
|
13706
|
+
resolve7(out2);
|
|
13707
|
+
};
|
|
13708
|
+
const timer = setTimeout(() => {
|
|
13709
|
+
if (settled) return;
|
|
13710
|
+
try {
|
|
13711
|
+
proc.kill("SIGTERM");
|
|
13712
|
+
} catch {
|
|
13713
|
+
}
|
|
13714
|
+
setTimeout(() => {
|
|
13715
|
+
try {
|
|
13716
|
+
proc.kill("SIGKILL");
|
|
13717
|
+
} catch {
|
|
13718
|
+
}
|
|
13719
|
+
}, 2e3).unref?.();
|
|
13720
|
+
finish(
|
|
13721
|
+
this.parseOutput({
|
|
13722
|
+
exitCode: 124,
|
|
13723
|
+
stdout: Buffer.concat(stdoutBuf).toString("utf8"),
|
|
13724
|
+
stderr: Buffer.concat(stderrBuf).toString("utf8") + `
|
|
13725
|
+
CodeRabbit review timed out after ${Math.round(
|
|
13726
|
+
CODERABBIT_ONESHOT_TIMEOUT_MS / 6e4
|
|
13727
|
+
)} min and was terminated.`
|
|
13728
|
+
})
|
|
13729
|
+
);
|
|
13730
|
+
}, CODERABBIT_ONESHOT_TIMEOUT_MS);
|
|
13731
|
+
timer.unref?.();
|
|
13700
13732
|
proc.stdout?.on("data", (b) => stdoutBuf.push(b));
|
|
13701
13733
|
proc.stderr?.on("data", (b) => stderrBuf.push(b));
|
|
13702
|
-
proc.on("error", (err) =>
|
|
13734
|
+
proc.on("error", (err) => {
|
|
13735
|
+
if (settled) return;
|
|
13736
|
+
settled = true;
|
|
13737
|
+
clearTimeout(timer);
|
|
13738
|
+
reject(err);
|
|
13739
|
+
});
|
|
13703
13740
|
proc.on("close", (code) => {
|
|
13704
|
-
|
|
13741
|
+
finish(
|
|
13705
13742
|
this.parseOutput({
|
|
13706
13743
|
exitCode: code ?? 0,
|
|
13707
13744
|
stdout: Buffer.concat(stdoutBuf).toString("utf8"),
|
|
@@ -17293,7 +17330,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17293
17330
|
if (process.env.NODE_ENV === "test") return;
|
|
17294
17331
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17295
17332
|
if (process.env.CI) return;
|
|
17296
|
-
const current = true ? "2.60.
|
|
17333
|
+
const current = true ? "2.60.37" : null;
|
|
17297
17334
|
if (!current) return;
|
|
17298
17335
|
const cache = readCache();
|
|
17299
17336
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17310,7 +17347,7 @@ function checkForUpdates() {
|
|
|
17310
17347
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17311
17348
|
if (process.env.CI) return;
|
|
17312
17349
|
if (!process.stdout.isTTY) return;
|
|
17313
|
-
const current = true ? "2.60.
|
|
17350
|
+
const current = true ? "2.60.37" : null;
|
|
17314
17351
|
if (!current) return;
|
|
17315
17352
|
const cache = readCache();
|
|
17316
17353
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17330,7 +17367,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17330
17367
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17331
17368
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17332
17369
|
function currentCliVersion() {
|
|
17333
|
-
return true ? "2.60.
|
|
17370
|
+
return true ? "2.60.37" : null;
|
|
17334
17371
|
}
|
|
17335
17372
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17336
17373
|
return new Promise((resolve7) => {
|
|
@@ -21265,7 +21302,14 @@ var coderabbitConfigureH = async (ctx, cmd, parsed) => {
|
|
|
21265
21302
|
pluginId: ctx.pluginId,
|
|
21266
21303
|
pluginAuthToken: token,
|
|
21267
21304
|
method,
|
|
21268
|
-
credential
|
|
21305
|
+
credential,
|
|
21306
|
+
// ⚠️ CodeRabbit is an IN-SESSION reviewer add-on — the link ALWAYS
|
|
21307
|
+
// rides the user's REAL active session (codespace / self-hosted /
|
|
21308
|
+
// local), never a throwaway `codeam link` pairing. Without this the
|
|
21309
|
+
// backend `linkFromCli` treats the session as the disposable
|
|
21310
|
+
// handshake session and DELETES it — the codespace vanished the
|
|
21311
|
+
// instant the OAuth link completed (2026-07-10).
|
|
21312
|
+
preserveSession: true
|
|
21269
21313
|
});
|
|
21270
21314
|
return r.ok === true;
|
|
21271
21315
|
} : void 0;
|
|
@@ -34383,7 +34427,7 @@ function checkChokidar() {
|
|
|
34383
34427
|
}
|
|
34384
34428
|
async function doctor(args2 = []) {
|
|
34385
34429
|
const json = args2.includes("--json");
|
|
34386
|
-
const cliVersion = true ? "2.60.
|
|
34430
|
+
const cliVersion = true ? "2.60.37" : "0.0.0-dev";
|
|
34387
34431
|
const apiBase2 = resolveApiBaseUrl();
|
|
34388
34432
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
34389
34433
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -34582,7 +34626,7 @@ async function completion(args2) {
|
|
|
34582
34626
|
// src/commands/version.ts
|
|
34583
34627
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
34584
34628
|
function version2() {
|
|
34585
|
-
const v = true ? "2.60.
|
|
34629
|
+
const v = true ? "2.60.37" : "unknown";
|
|
34586
34630
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
34587
34631
|
}
|
|
34588
34632
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.60.
|
|
3
|
+
"version": "2.60.37",
|
|
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",
|