codeam-cli 2.60.44 → 2.60.46

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.60.45] — 2026-07-10
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Don't false-kill a turn on a long silent tool (yarn install idle timeout)
12
+
13
+ ## [2.60.44] — 2026-07-10
14
+
15
+ ### Fixed
16
+
17
+ - **cli:** Recover ACP adapter install-race crashes structurally, not by error-code list
18
+
7
19
  ## [2.60.43] — 2026-07-10
8
20
 
9
21
  ### Fixed
package/dist/index.js CHANGED
@@ -592,6 +592,9 @@ var USER_EVENTS = {
592
592
  CLI_UPDATE_PROGRESS: "cli_update_progress",
593
593
  CLI_UPDATE_FAILED: "cli_update_failed",
594
594
  BATON_STATE: "baton_state",
595
+ INTEGRATION_LINKED: "integration_linked",
596
+ INTEGRATION_UNLINKED: "integration_unlinked",
597
+ INTEGRATION_CREDENTIAL_INVALID: "integration_credential_invalid",
595
598
  // CodeRabbit reviewer — the CLI posts these to /api/coderabbit/events; the
596
599
  // backend re-publishes them on the per-user SSE bus (mirrored in repo A).
597
600
  CODERABBIT_PROGRESS: "coderabbit_progress",
@@ -5689,7 +5692,7 @@ function readAnonId() {
5689
5692
  }
5690
5693
  function superProperties() {
5691
5694
  return {
5692
- cliVersion: true ? "2.60.44" : "0.0.0-dev",
5695
+ cliVersion: true ? "2.60.46" : "0.0.0-dev",
5693
5696
  nodeVersion: process.version,
5694
5697
  platform: process.platform,
5695
5698
  arch: process.arch,
@@ -5870,7 +5873,7 @@ var os4 = __toESM(require("os"));
5870
5873
  // package.json
5871
5874
  var package_default = {
5872
5875
  name: "codeam-cli",
5873
- version: "2.60.44",
5876
+ version: "2.60.46",
5874
5877
  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.",
5875
5878
  type: "commonjs",
5876
5879
  main: "dist/index.js",
@@ -6979,7 +6982,7 @@ var CommandRelayService = class {
6979
6982
  // fresh + clear the "CLI update available" banner after a self-update
6980
6983
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
6981
6984
  // pair/reconnect). Older backends ignore the extra field.
6982
- ..."2.60.44" ? { ideVersion: "2.60.44" } : {}
6985
+ ..."2.60.46" ? { ideVersion: "2.60.46" } : {}
6983
6986
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
6984
6987
  }
6985
6988
  /**
@@ -17493,7 +17496,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17493
17496
  if (process.env.NODE_ENV === "test") return;
17494
17497
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17495
17498
  if (process.env.CI) return;
17496
- const current = true ? "2.60.44" : null;
17499
+ const current = true ? "2.60.46" : null;
17497
17500
  if (!current) return;
17498
17501
  const cache = readCache();
17499
17502
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17510,7 +17513,7 @@ function checkForUpdates() {
17510
17513
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17511
17514
  if (process.env.CI) return;
17512
17515
  if (!process.stdout.isTTY) return;
17513
- const current = true ? "2.60.44" : null;
17516
+ const current = true ? "2.60.46" : null;
17514
17517
  if (!current) return;
17515
17518
  const cache = readCache();
17516
17519
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17530,7 +17533,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
17530
17533
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
17531
17534
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
17532
17535
  function currentCliVersion() {
17533
- return true ? "2.60.44" : null;
17536
+ return true ? "2.60.46" : null;
17534
17537
  }
17535
17538
  function runCmd(cmd, args2, timeoutMs) {
17536
17539
  return new Promise((resolve7) => {
@@ -27076,9 +27079,22 @@ var AcpClient = class {
27076
27079
  }
27077
27080
  if (u2.sessionUpdate === "tool_call_update" && (u2.status === "completed" || u2.status === "failed")) {
27078
27081
  if (typeof u2.toolCallId === "string") this.pendingToolCalls.delete(u2.toolCallId);
27079
- if (this.pendingToolCalls.size === 0) this.promptIdle?.bump();
27082
+ this.rearmIdleIfIdle();
27080
27083
  return;
27081
27084
  }
27085
+ this.rearmIdleIfIdle();
27086
+ }
27087
+ /**
27088
+ * Re-arm the idle watchdog ONLY when the agent is genuinely idle — no tool
27089
+ * call in flight. A pending tool (a `yarn install` / build / test that runs
27090
+ * silently for minutes, emitting no `session/update`) is active work, NOT a
27091
+ * wedged adapter, so re-arming the 90s window over it would false-kill the
27092
+ * turn. Every re-arm MUST route through here so no path can accidentally arm
27093
+ * the watchdog while a tool is executing (the 2026-07-10 bug: the
27094
+ * auto-approve permission `finally` bumped unconditionally → a ~150s
27095
+ * `yarn install` tripped "ACP prompt idle for 90s").
27096
+ */
27097
+ rearmIdleIfIdle() {
27082
27098
  if (this.pendingToolCalls.size === 0) this.promptIdle?.bump();
27083
27099
  }
27084
27100
  // ─── Client surface (what the agent calls into) ───────────────────
@@ -27093,7 +27109,7 @@ var AcpClient = class {
27093
27109
  try {
27094
27110
  return await this.opts.onRequestPermission(params);
27095
27111
  } finally {
27096
- this.promptIdle?.bump();
27112
+ this.rearmIdleIfIdle();
27097
27113
  }
27098
27114
  },
27099
27115
  readTextFile: async (params) => {
@@ -34678,7 +34694,7 @@ function checkChokidar() {
34678
34694
  }
34679
34695
  async function doctor(args2 = []) {
34680
34696
  const json = args2.includes("--json");
34681
- const cliVersion = true ? "2.60.44" : "0.0.0-dev";
34697
+ const cliVersion = true ? "2.60.46" : "0.0.0-dev";
34682
34698
  const apiBase2 = resolveApiBaseUrl();
34683
34699
  const diagnosticId = (0, import_node_crypto12.randomUUID)();
34684
34700
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -34877,7 +34893,7 @@ async function completion(args2) {
34877
34893
  // src/commands/version.ts
34878
34894
  var import_picocolors15 = __toESM(require("picocolors"));
34879
34895
  function version2() {
34880
- const v = true ? "2.60.44" : "unknown";
34896
+ const v = true ? "2.60.46" : "unknown";
34881
34897
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
34882
34898
  }
34883
34899
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.60.44",
3
+ "version": "2.60.46",
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",