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 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.52.12" : "0.0.0-dev",
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.52.12",
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.52.12" ? { ideVersion: "2.52.12" } : {}
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.52.12" : null;
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.52.12" : null;
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.52.12" : null;
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.52.12" : "0.0.0-dev";
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.52.12" : "unknown";
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.52.12",
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",