codeam-cli 2.52.1 → 2.52.3

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,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.52.2] — 2026-06-30
8
+
9
+ ### Fixed
10
+
11
+ - **acp:** Stop synthesising input_suggestion from the reply (echoed agent msg)
12
+
13
+ ## [2.52.1] — 2026-06-29
14
+
15
+ ### Fixed
16
+
17
+ - **cli:** Send ideVersion on reconnect to keep session version current
18
+
7
19
  ## [2.52.0] — 2026-06-29
8
20
 
9
21
  ### Added
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.1" : "0.0.0-dev",
5400
+ cliVersion: true ? "2.52.3" : "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.1",
5581
+ version: "2.52.3",
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",
@@ -14863,7 +14863,7 @@ async function autoUpgradeBeforeCriticalCommand() {
14863
14863
  if (process.env.NODE_ENV === "test") return;
14864
14864
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
14865
14865
  if (process.env.CI) return;
14866
- const current = true ? "2.52.1" : null;
14866
+ const current = true ? "2.52.3" : null;
14867
14867
  if (!current) return;
14868
14868
  const cache = readCache();
14869
14869
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -14880,7 +14880,7 @@ function checkForUpdates() {
14880
14880
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
14881
14881
  if (process.env.CI) return;
14882
14882
  if (!process.stdout.isTTY) return;
14883
- const current = true ? "2.52.1" : null;
14883
+ const current = true ? "2.52.3" : null;
14884
14884
  if (!current) return;
14885
14885
  const cache = readCache();
14886
14886
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -15582,7 +15582,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process15.s
15582
15582
  detached: false
15583
15583
  });
15584
15584
  function currentCliVersion() {
15585
- return true ? "2.52.1" : null;
15585
+ return true ? "2.52.3" : null;
15586
15586
  }
15587
15587
  function runCmd(cmd, args2, timeoutMs) {
15588
15588
  return new Promise((resolve7) => {
@@ -25332,21 +25332,6 @@ function extractSelectPrompt(text) {
25332
25332
  };
25333
25333
  }
25334
25334
 
25335
- // src/agents/acp/inputSuggestion.ts
25336
- var MIN_LEN = 8;
25337
- var MAX_LEN = 200;
25338
- function deriveInputSuggestion(finalText) {
25339
- if (finalText.length === 0) return null;
25340
- const lines = finalText.split("\n");
25341
- let i = lines.length - 1;
25342
- while (i >= 0 && lines[i].trim() === "") i--;
25343
- if (i < 0) return null;
25344
- const lastLine = lines[i].trim();
25345
- if (!lastLine.endsWith("?")) return null;
25346
- if (lastLine.length < MIN_LEN || lastLine.length > MAX_LEN) return null;
25347
- return lastLine;
25348
- }
25349
-
25350
25335
  // src/services/turn-files/turn-file-aggregator.ts
25351
25336
  var import_crypto5 = require("crypto");
25352
25337
 
@@ -26346,6 +26331,7 @@ function replyIsCursorUpgradeRequired(finalText) {
26346
26331
  }
26347
26332
  var CURSOR_UPGRADE_MESSAGE = "\u26A1 **Cursor needs a paid plan to run the agent.**\n\nThe headless Cursor Agent requires Cursor **Pro** \u2014 your Free plan\u2019s included usage does NOT cover Agent runs, even with quota left. This is your Cursor account (not CodeAgent). Upgrade, then send your message again:\n\n[Upgrade to Cursor Pro \u2192](https://cursor.com/dashboard)";
26348
26333
  var TURN_FAILURE_MESSAGE = "\u26A0\uFE0F **The agent hit an error and couldn\u2019t finish this turn.** Please send your message again.";
26334
+ var ACP_QUICK_REPLIES = ["Continue", "Yes, go ahead", "Explain"];
26349
26335
  var PROVIDER_OUTAGE_RE = /overloaded_error|\boverloaded\b|service[ _]unavailable|temporarily[ _]unavailable|(?:api error|http|status)[:\s]+(?:529|503|502|504)\b|\b(?:529|503|502|504)\b[^\n]{0,40}(?:overload|unavailable|gateway|upstream|server error)|bad gateway|gateway time-?out|upstream (?:error|connect|timeout)/i;
26350
26336
  function looksLikeProviderOutage(text) {
26351
26337
  return PROVIDER_OUTAGE_RE.test(text);
@@ -26913,19 +26899,18 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
26913
26899
  } else if (shouldOfferOneMRecovery({ detail: "", recentStderr: recentStderr.join("\n"), finalText })) {
26914
26900
  await oneMRecovery.offer(cmd.id, blocks);
26915
26901
  } else {
26916
- const emittedSelectPrompt = await streaming.closeTurnWithInteractiveDetection();
26902
+ await streaming.closeTurnWithInteractiveDetection();
26917
26903
  const replyLine = formatAgentReplyLine(finalText);
26918
26904
  if (replyLine.length > 0) {
26919
26905
  showInfo(replyLine);
26920
26906
  }
26921
26907
  history.appendAgentReply(finalText);
26922
26908
  void history.flush();
26923
- if (!emittedSelectPrompt) {
26924
- const suggestion = deriveInputSuggestion(finalText);
26925
- if (suggestion !== null) {
26926
- void publisher.publishOutput({ type: "input_suggestion", content: suggestion, done: true });
26927
- }
26928
- }
26909
+ void publisher.publishOutput({
26910
+ type: "input_suggestion",
26911
+ content: ACP_QUICK_REPLIES,
26912
+ done: true
26913
+ });
26929
26914
  turnFiles.flushTurn().catch((err) => {
26930
26915
  log.warn("acpRunner", `turnFiles.flushTurn failed: ${describeError(err)}`);
26931
26916
  });
@@ -31202,7 +31187,7 @@ function checkChokidar() {
31202
31187
  }
31203
31188
  async function doctor(args2 = []) {
31204
31189
  const json = args2.includes("--json");
31205
- const cliVersion = true ? "2.52.1" : "0.0.0-dev";
31190
+ const cliVersion = true ? "2.52.3" : "0.0.0-dev";
31206
31191
  const apiBase2 = resolveApiBaseUrl();
31207
31192
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
31208
31193
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -31401,7 +31386,7 @@ async function completion(args2) {
31401
31386
  // src/commands/version.ts
31402
31387
  var import_picocolors15 = __toESM(require("picocolors"));
31403
31388
  function version2() {
31404
- const v = true ? "2.52.1" : "unknown";
31389
+ const v = true ? "2.52.3" : "unknown";
31405
31390
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
31406
31391
  }
31407
31392
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.52.1",
3
+ "version": "2.52.3",
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",