codeam-cli 2.52.0 → 2.52.2

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,22 @@ 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.1] — 2026-06-29
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Send ideVersion on reconnect to keep session version current
12
+
13
+ ## [2.52.0] — 2026-06-29
14
+
15
+ ### Added
16
+
17
+ - **cli:** Add cli_self_update relay command handler (tap-to-update)
18
+
19
+ ### Fixed
20
+
21
+ - **cli:** Treat codespace as no-self-relaunch in cli_self_update
22
+
7
23
  ## [2.51.3] — 2026-06-29
8
24
 
9
25
  ### 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.0" : "0.0.0-dev",
5400
+ cliVersion: true ? "2.52.2" : "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.0",
5581
+ version: "2.52.2",
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",
@@ -5734,7 +5734,17 @@ async function fetchCurrentPluginAuthToken(sessionId, pluginId, pollSecret) {
5734
5734
  try {
5735
5735
  const result = await _transport.postJson(
5736
5736
  `${API_BASE}/api/pairing/reconnect`,
5737
- { sessionId, pluginId },
5737
+ {
5738
+ sessionId,
5739
+ pluginId,
5740
+ // Send the running CLI version so the backend keeps
5741
+ // PairedSession.ideVersion current across restarts. This fixes the
5742
+ // stale "CLI update available" banner that showed an outdated version
5743
+ // after the CLI restarted on a new release and took the reconnect
5744
+ // path (which previously never updated ideVersion). Backends older
5745
+ // than the matching fix ignore the unknown field (backward-compat).
5746
+ ideVersion: package_default.version
5747
+ },
5738
5748
  // SEC: prove possession so the gated /reconnect returns the token.
5739
5749
  // Omitted for legacy sessions (no secret) → backend legacy path.
5740
5750
  pollSecret ? { "X-Plugin-Poll-Secret": pollSecret } : void 0
@@ -14853,7 +14863,7 @@ async function autoUpgradeBeforeCriticalCommand() {
14853
14863
  if (process.env.NODE_ENV === "test") return;
14854
14864
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
14855
14865
  if (process.env.CI) return;
14856
- const current = true ? "2.52.0" : null;
14866
+ const current = true ? "2.52.2" : null;
14857
14867
  if (!current) return;
14858
14868
  const cache = readCache();
14859
14869
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -14870,7 +14880,7 @@ function checkForUpdates() {
14870
14880
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
14871
14881
  if (process.env.CI) return;
14872
14882
  if (!process.stdout.isTTY) return;
14873
- const current = true ? "2.52.0" : null;
14883
+ const current = true ? "2.52.2" : null;
14874
14884
  if (!current) return;
14875
14885
  const cache = readCache();
14876
14886
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -15572,7 +15582,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process15.s
15572
15582
  detached: false
15573
15583
  });
15574
15584
  function currentCliVersion() {
15575
- return true ? "2.52.0" : null;
15585
+ return true ? "2.52.2" : null;
15576
15586
  }
15577
15587
  function runCmd(cmd, args2, timeoutMs) {
15578
15588
  return new Promise((resolve7) => {
@@ -25322,21 +25332,6 @@ function extractSelectPrompt(text) {
25322
25332
  };
25323
25333
  }
25324
25334
 
25325
- // src/agents/acp/inputSuggestion.ts
25326
- var MIN_LEN = 8;
25327
- var MAX_LEN = 200;
25328
- function deriveInputSuggestion(finalText) {
25329
- if (finalText.length === 0) return null;
25330
- const lines = finalText.split("\n");
25331
- let i = lines.length - 1;
25332
- while (i >= 0 && lines[i].trim() === "") i--;
25333
- if (i < 0) return null;
25334
- const lastLine = lines[i].trim();
25335
- if (!lastLine.endsWith("?")) return null;
25336
- if (lastLine.length < MIN_LEN || lastLine.length > MAX_LEN) return null;
25337
- return lastLine;
25338
- }
25339
-
25340
25335
  // src/services/turn-files/turn-file-aggregator.ts
25341
25336
  var import_crypto5 = require("crypto");
25342
25337
 
@@ -26903,19 +26898,13 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
26903
26898
  } else if (shouldOfferOneMRecovery({ detail: "", recentStderr: recentStderr.join("\n"), finalText })) {
26904
26899
  await oneMRecovery.offer(cmd.id, blocks);
26905
26900
  } else {
26906
- const emittedSelectPrompt = await streaming.closeTurnWithInteractiveDetection();
26901
+ await streaming.closeTurnWithInteractiveDetection();
26907
26902
  const replyLine = formatAgentReplyLine(finalText);
26908
26903
  if (replyLine.length > 0) {
26909
26904
  showInfo(replyLine);
26910
26905
  }
26911
26906
  history.appendAgentReply(finalText);
26912
26907
  void history.flush();
26913
- if (!emittedSelectPrompt) {
26914
- const suggestion = deriveInputSuggestion(finalText);
26915
- if (suggestion !== null) {
26916
- void publisher.publishOutput({ type: "input_suggestion", content: suggestion, done: true });
26917
- }
26918
- }
26919
26908
  turnFiles.flushTurn().catch((err) => {
26920
26909
  log.warn("acpRunner", `turnFiles.flushTurn failed: ${describeError(err)}`);
26921
26910
  });
@@ -31192,7 +31181,7 @@ function checkChokidar() {
31192
31181
  }
31193
31182
  async function doctor(args2 = []) {
31194
31183
  const json = args2.includes("--json");
31195
- const cliVersion = true ? "2.52.0" : "0.0.0-dev";
31184
+ const cliVersion = true ? "2.52.2" : "0.0.0-dev";
31196
31185
  const apiBase2 = resolveApiBaseUrl();
31197
31186
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
31198
31187
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -31391,7 +31380,7 @@ async function completion(args2) {
31391
31380
  // src/commands/version.ts
31392
31381
  var import_picocolors15 = __toESM(require("picocolors"));
31393
31382
  function version2() {
31394
- const v = true ? "2.52.0" : "unknown";
31383
+ const v = true ? "2.52.2" : "unknown";
31395
31384
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
31396
31385
  }
31397
31386
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.52.0",
3
+ "version": "2.52.2",
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",