codeam-cli 2.35.5 → 2.35.7

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.35.6] — 2026-06-10
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Cancel the ACP turn on failure so the session isn't poisoned (#312)
12
+
13
+ ## [2.35.5] — 2026-06-10
14
+
15
+ ### Fixed
16
+
17
+ - **cli:** Make @beads/bd an optional dependency (#311)
18
+
7
19
  ## [2.35.4] — 2026-06-10
8
20
 
9
21
  ### Fixed
package/dist/index.js CHANGED
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
498
498
  // package.json
499
499
  var package_default = {
500
500
  name: "codeam-cli",
501
- version: "2.35.5",
501
+ version: "2.35.7",
502
502
  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.",
503
503
  type: "commonjs",
504
504
  main: "dist/index.js",
@@ -5900,7 +5900,7 @@ function readAnonId() {
5900
5900
  }
5901
5901
  function superProperties() {
5902
5902
  return {
5903
- cliVersion: true ? "2.35.5" : "0.0.0-dev",
5903
+ cliVersion: true ? "2.35.7" : "0.0.0-dev",
5904
5904
  nodeVersion: process.version,
5905
5905
  platform: process.platform,
5906
5906
  arch: process.arch,
@@ -15624,7 +15624,13 @@ function mapSessionUpdate(notification) {
15624
15624
  case "agent_thought_chunk": {
15625
15625
  const text = extractText2(update.content);
15626
15626
  if (!text) return [];
15627
- return [{ chunkId: messageChunkId(update.messageId), kind: "thinking", delta: text }];
15627
+ return [
15628
+ {
15629
+ chunkId: `${messageChunkId(update.messageId)}::thought`,
15630
+ kind: "thinking",
15631
+ delta: text
15632
+ }
15633
+ ];
15628
15634
  }
15629
15635
  case "tool_call": {
15630
15636
  const summary = describeToolCall(update);
@@ -21104,7 +21110,7 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
21104
21110
  log.info("acpRunner", `start_task \u2190 done stopReason=${reply.stopReason ?? "?"} id=${cmd.id.slice(0, 8)}`);
21105
21111
  await relay.sendResult(cmd.id, "completed", { stopReason: reply.stopReason });
21106
21112
  } catch (err) {
21107
- await streaming.closeAll();
21113
+ await recoverFromFailedTurn(client2, streaming);
21108
21114
  log.warn("acpRunner", `prompt failed: ${describeError(err)}`);
21109
21115
  await relay.sendResult(cmd.id, "failed", { error: describeError(err) });
21110
21116
  }
@@ -21161,7 +21167,7 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
21161
21167
  void history.flush();
21162
21168
  await relay.sendResult(cmd.id, "completed", { stopReason: reply.stopReason });
21163
21169
  } catch (err) {
21164
- await streaming.closeAll();
21170
+ await recoverFromFailedTurn(client2, streaming);
21165
21171
  log.warn("acpRunner", `reprompt failed: ${describeError(err)}`);
21166
21172
  await relay.sendResult(cmd.id, "failed", { error: describeError(err) });
21167
21173
  }
@@ -21199,7 +21205,7 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
21199
21205
  });
21200
21206
  await relay.sendResult(cmd.id, "completed", { stopReason: reply.stopReason });
21201
21207
  } catch (err) {
21202
- await streaming.closeAll();
21208
+ await recoverFromFailedTurn(client2, streaming);
21203
21209
  log.warn("acpRunner", `provide_input failed: ${describeError(err)}`);
21204
21210
  await relay.sendResult(cmd.id, "failed", { error: describeError(err) });
21205
21211
  }
@@ -21262,7 +21268,7 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
21262
21268
  });
21263
21269
  await relay.sendResult(cmd.id, "completed", { stopReason: reply.stopReason });
21264
21270
  } catch (err) {
21265
- await streaming.closeAll();
21271
+ await recoverFromFailedTurn(client2, streaming);
21266
21272
  log.warn("acpRunner", `summarize failed: ${describeError(err)}`);
21267
21273
  await relay.sendResult(cmd.id, "failed", { error: describeError(err) });
21268
21274
  }
@@ -21360,6 +21366,14 @@ function describeError(err) {
21360
21366
  if (err instanceof Error) return err.message;
21361
21367
  return String(err);
21362
21368
  }
21369
+ async function recoverFromFailedTurn(client2, streaming) {
21370
+ try {
21371
+ await client2.cancel();
21372
+ } catch (err) {
21373
+ log.warn("acpRunner", `post-failure cancel failed: ${describeError(err)}`);
21374
+ }
21375
+ await streaming.closeAll();
21376
+ }
21363
21377
  function buildBannerSubtitle(agentId, acpSessionId, model, tier) {
21364
21378
  const meta = AGENT_REGISTRY[agentId];
21365
21379
  const displayName = meta?.displayName ?? agentId;
@@ -26098,7 +26112,7 @@ function checkChokidar() {
26098
26112
  }
26099
26113
  async function doctor(args2 = []) {
26100
26114
  const json = args2.includes("--json");
26101
- const cliVersion = true ? "2.35.5" : "0.0.0-dev";
26115
+ const cliVersion = true ? "2.35.7" : "0.0.0-dev";
26102
26116
  const apiBase = resolveApiBaseUrl();
26103
26117
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
26104
26118
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -26297,7 +26311,7 @@ async function completion(args2) {
26297
26311
  // src/commands/version.ts
26298
26312
  var import_picocolors13 = __toESM(require("picocolors"));
26299
26313
  function version2() {
26300
- const v = true ? "2.35.5" : "unknown";
26314
+ const v = true ? "2.35.7" : "unknown";
26301
26315
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
26302
26316
  }
26303
26317
 
@@ -26583,7 +26597,7 @@ function checkForUpdates() {
26583
26597
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
26584
26598
  if (process.env.CI) return;
26585
26599
  if (!process.stdout.isTTY) return;
26586
- const current = true ? "2.35.5" : null;
26600
+ const current = true ? "2.35.7" : null;
26587
26601
  if (!current) return;
26588
26602
  const cache = readCache();
26589
26603
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.35.5",
3
+ "version": "2.35.7",
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",