codeam-cli 2.52.12 → 2.53.0
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 +50 -8
- 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.52.12] — 2026-07-05
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Supervise the Headroom proxy + report version on heartbeat
|
|
12
|
+
|
|
7
13
|
## [2.52.11] — 2026-07-04
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -5397,7 +5397,7 @@ function readAnonId() {
|
|
|
5397
5397
|
}
|
|
5398
5398
|
function superProperties() {
|
|
5399
5399
|
return {
|
|
5400
|
-
cliVersion: true ? "2.
|
|
5400
|
+
cliVersion: true ? "2.53.0" : "0.0.0-dev",
|
|
5401
5401
|
nodeVersion: process.version,
|
|
5402
5402
|
platform: process.platform,
|
|
5403
5403
|
arch: process.arch,
|
|
@@ -5578,7 +5578,7 @@ var os4 = __toESM(require("os"));
|
|
|
5578
5578
|
// package.json
|
|
5579
5579
|
var package_default = {
|
|
5580
5580
|
name: "codeam-cli",
|
|
5581
|
-
version: "2.
|
|
5581
|
+
version: "2.53.0",
|
|
5582
5582
|
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.",
|
|
5583
5583
|
type: "commonjs",
|
|
5584
5584
|
main: "dist/index.js",
|
|
@@ -6543,7 +6543,7 @@ var CommandRelayService = class {
|
|
|
6543
6543
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
6544
6544
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
6545
6545
|
// pair/reconnect). Older backends ignore the extra field.
|
|
6546
|
-
..."2.
|
|
6546
|
+
..."2.53.0" ? { ideVersion: "2.53.0" } : {}
|
|
6547
6547
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
6548
6548
|
}
|
|
6549
6549
|
/**
|
|
@@ -15023,7 +15023,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
15023
15023
|
if (process.env.NODE_ENV === "test") return;
|
|
15024
15024
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
15025
15025
|
if (process.env.CI) return;
|
|
15026
|
-
const current = true ? "2.
|
|
15026
|
+
const current = true ? "2.53.0" : null;
|
|
15027
15027
|
if (!current) return;
|
|
15028
15028
|
const cache = readCache();
|
|
15029
15029
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -15040,7 +15040,7 @@ function checkForUpdates() {
|
|
|
15040
15040
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
15041
15041
|
if (process.env.CI) return;
|
|
15042
15042
|
if (!process.stdout.isTTY) return;
|
|
15043
|
-
const current = true ? "2.
|
|
15043
|
+
const current = true ? "2.53.0" : null;
|
|
15044
15044
|
if (!current) return;
|
|
15045
15045
|
const cache = readCache();
|
|
15046
15046
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -15742,7 +15742,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process15.s
|
|
|
15742
15742
|
detached: false
|
|
15743
15743
|
});
|
|
15744
15744
|
function currentCliVersion() {
|
|
15745
|
-
return true ? "2.
|
|
15745
|
+
return true ? "2.53.0" : null;
|
|
15746
15746
|
}
|
|
15747
15747
|
function runCmd(cmd, args2, timeoutMs) {
|
|
15748
15748
|
return new Promise((resolve7) => {
|
|
@@ -25305,6 +25305,37 @@ You have two options:
|
|
|
25305
25305
|
};
|
|
25306
25306
|
}
|
|
25307
25307
|
|
|
25308
|
+
// src/agents/acp/wakeCredentialProbe.ts
|
|
25309
|
+
async function localCredentialExpiryStatus(agent) {
|
|
25310
|
+
if (!/claude/i.test(agent)) return "unknown";
|
|
25311
|
+
const token = await extractLocalClaudeToken();
|
|
25312
|
+
if (!token) return "unknown";
|
|
25313
|
+
return validateClaudeToken(token).status;
|
|
25314
|
+
}
|
|
25315
|
+
function createWakeCredentialProbe(deps) {
|
|
25316
|
+
return {
|
|
25317
|
+
run: async () => {
|
|
25318
|
+
let status2;
|
|
25319
|
+
try {
|
|
25320
|
+
status2 = await deps.getStatus();
|
|
25321
|
+
} catch {
|
|
25322
|
+
return false;
|
|
25323
|
+
}
|
|
25324
|
+
if (status2 !== "expired") return false;
|
|
25325
|
+
deps.log?.("wake credential probe \u2014 local token expired, surfacing re-auth");
|
|
25326
|
+
try {
|
|
25327
|
+
await deps.emitReauthBubble();
|
|
25328
|
+
} catch {
|
|
25329
|
+
}
|
|
25330
|
+
try {
|
|
25331
|
+
await deps.reportCredentialInvalid();
|
|
25332
|
+
} catch {
|
|
25333
|
+
}
|
|
25334
|
+
return true;
|
|
25335
|
+
}
|
|
25336
|
+
};
|
|
25337
|
+
}
|
|
25338
|
+
|
|
25308
25339
|
// src/agents/acp/reconcileDelta.ts
|
|
25309
25340
|
function reconcileCumulative(existing, incoming) {
|
|
25310
25341
|
if (incoming.length === 0) return existing;
|
|
@@ -27141,6 +27172,17 @@ async function runAcpSession(opts) {
|
|
|
27141
27172
|
);
|
|
27142
27173
|
await onboardingWelcomeDone;
|
|
27143
27174
|
relay.start();
|
|
27175
|
+
void createWakeCredentialProbe({
|
|
27176
|
+
getStatus: () => localCredentialExpiryStatus(opts.agent),
|
|
27177
|
+
emitReauthBubble: async () => {
|
|
27178
|
+
await publisher.publishOutput({ type: "new_turn", done: false });
|
|
27179
|
+
await publisher.publishOutput({ type: "text", content: AUTH_FAILURE_MESSAGE, done: true });
|
|
27180
|
+
history.appendAgentInitiatedReply(AUTH_FAILURE_MESSAGE);
|
|
27181
|
+
await history.flush();
|
|
27182
|
+
},
|
|
27183
|
+
reportCredentialInvalid: () => reportCredentialInvalid(opts),
|
|
27184
|
+
log: (msg) => showInfo(msg)
|
|
27185
|
+
}).run();
|
|
27144
27186
|
const prewarmTimer = setTimeout(() => prewarmPreviewDetection(runtime), 2e4);
|
|
27145
27187
|
const shutdown = async (signal) => {
|
|
27146
27188
|
showInfo(`Shutting down ACP session (${signal})\u2026`);
|
|
@@ -31507,7 +31549,7 @@ function checkChokidar() {
|
|
|
31507
31549
|
}
|
|
31508
31550
|
async function doctor(args2 = []) {
|
|
31509
31551
|
const json = args2.includes("--json");
|
|
31510
|
-
const cliVersion = true ? "2.
|
|
31552
|
+
const cliVersion = true ? "2.53.0" : "0.0.0-dev";
|
|
31511
31553
|
const apiBase2 = resolveApiBaseUrl();
|
|
31512
31554
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
31513
31555
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -31706,7 +31748,7 @@ async function completion(args2) {
|
|
|
31706
31748
|
// src/commands/version.ts
|
|
31707
31749
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
31708
31750
|
function version2() {
|
|
31709
|
-
const v = true ? "2.
|
|
31751
|
+
const v = true ? "2.53.0" : "unknown";
|
|
31710
31752
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
31711
31753
|
}
|
|
31712
31754
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.53.0",
|
|
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",
|