codeam-cli 2.61.94 → 2.61.95

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.61.94] — 2026-08-08
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Harden Headroom proxy against resume death — accurate liveness + proactive boot relaunch (#604)
12
+
7
13
  ## [2.61.93] — 2026-08-08
8
14
 
9
15
  ### Fixed
package/dist/index.js CHANGED
@@ -8017,7 +8017,7 @@ function readAnonId() {
8017
8017
  }
8018
8018
  function superProperties() {
8019
8019
  return {
8020
- cliVersion: true ? "2.61.94" : "0.0.0-dev",
8020
+ cliVersion: true ? "2.61.95" : "0.0.0-dev",
8021
8021
  nodeVersion: process.version,
8022
8022
  platform: process.platform,
8023
8023
  arch: process.arch,
@@ -8198,7 +8198,7 @@ var os4 = __toESM(require("os"));
8198
8198
  // package.json
8199
8199
  var package_default = {
8200
8200
  name: "codeam-cli",
8201
- version: "2.61.94",
8201
+ version: "2.61.95",
8202
8202
  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.",
8203
8203
  type: "commonjs",
8204
8204
  main: "dist/index.js",
@@ -9515,7 +9515,7 @@ var CommandRelayService = class _CommandRelayService {
9515
9515
  // fresh + clear the "CLI update available" banner after a self-update
9516
9516
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
9517
9517
  // pair/reconnect). Older backends ignore the extra field.
9518
- ..."2.61.94" ? { ideVersion: "2.61.94" } : {}
9518
+ ..."2.61.95" ? { ideVersion: "2.61.95" } : {}
9519
9519
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
9520
9520
  }
9521
9521
  /**
@@ -20688,7 +20688,7 @@ async function autoUpgradeBeforeCriticalCommand() {
20688
20688
  if (process.env.NODE_ENV === "test") return;
20689
20689
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
20690
20690
  if (process.env.CI) return;
20691
- const current2 = true ? "2.61.94" : null;
20691
+ const current2 = true ? "2.61.95" : null;
20692
20692
  if (!current2) return;
20693
20693
  const cache = readCache();
20694
20694
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -20705,7 +20705,7 @@ function checkForUpdates() {
20705
20705
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
20706
20706
  if (process.env.CI) return;
20707
20707
  if (!process.stdout.isTTY) return;
20708
- const current2 = true ? "2.61.94" : null;
20708
+ const current2 = true ? "2.61.95" : null;
20709
20709
  if (!current2) return;
20710
20710
  const cache = readCache();
20711
20711
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -20725,7 +20725,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
20725
20725
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
20726
20726
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
20727
20727
  function currentCliVersion() {
20728
- return true ? "2.61.94" : null;
20728
+ return true ? "2.61.95" : null;
20729
20729
  }
20730
20730
  function runCmd(cmd, args2, timeoutMs) {
20731
20731
  return new Promise((resolve9) => {
@@ -32778,6 +32778,12 @@ function guardrailDecision(request, policy) {
32778
32778
  return null;
32779
32779
  }
32780
32780
 
32781
+ // src/agents/acp/modes.ts
32782
+ var FULL_AUTO_MODE_RE = /bypass|yolo|danger|full.?access|skip.?perm|auto.?approve/i;
32783
+ function modeIsFullAutoApprove(modeId) {
32784
+ return FULL_AUTO_MODE_RE.test(modeId);
32785
+ }
32786
+
32781
32787
  // src/agents/acp/client.ts
32782
32788
  var TRANSIENT_ADAPTER_SPAWN_RE = /ETXTBSY|ENOENT/;
32783
32789
  var MAX_START_ATTEMPTS = 5;
@@ -33244,7 +33250,7 @@ var AcpClient = class {
33244
33250
  * (`AcpHistory.switchActiveSession` + `onActiveSessionChanged`), exactly like
33245
33251
  * the `resume_session` rail.
33246
33252
  */
33247
- async newConversation() {
33253
+ async newConversation(opts) {
33248
33254
  if (!this.connection) {
33249
33255
  throw new Error("AcpClient.newConversation called before start()");
33250
33256
  }
@@ -33253,6 +33259,21 @@ var AcpClient = class {
33253
33259
  mcpServers: this.opts.mcpServers ?? []
33254
33260
  });
33255
33261
  this.sessionId = ns.sessionId;
33262
+ this.captureModelConfig(ns.configOptions ?? []);
33263
+ this.captureModes(ns.modes ?? null);
33264
+ if (opts?.ensureFullAutoMode && this.availableModes.length > 0) {
33265
+ const full = this.availableModes.find((m) => modeIsFullAutoApprove(m.id));
33266
+ if (full && this.currentModeId !== full.id) {
33267
+ try {
33268
+ await this.connection.setSessionMode({ sessionId: ns.sessionId, modeId: full.id });
33269
+ this.currentModeId = full.id;
33270
+ log.info("acpClient", `newConversation \u2192 re-asserted full-auto mode ${full.id}`);
33271
+ } catch (err) {
33272
+ const msg = err instanceof Error ? err.message : String(err);
33273
+ log.warn("acpClient", `newConversation \u2014 could not re-assert full-auto mode: ${msg}`);
33274
+ }
33275
+ }
33276
+ }
33256
33277
  log.info("acpClient", `newConversation \u2190 ok sid=${ns.sessionId.slice(0, 8)}`);
33257
33278
  return ns.sessionId;
33258
33279
  }
@@ -35791,7 +35812,9 @@ function buildPackRunnerDeps(ctx) {
35791
35812
  return {
35792
35813
  driver: {
35793
35814
  newConversation: async () => {
35794
- const id = await ctx.client.newConversation();
35815
+ const id = await ctx.client.newConversation({
35816
+ ensureFullAutoMode: ctx.opts.autoApprovePermissions === true
35817
+ });
35795
35818
  ctx.history.switchActiveSession(id);
35796
35819
  ctx.onActiveSessionChanged?.(id);
35797
35820
  return id;
@@ -36439,10 +36462,6 @@ async function listModesH(ctx) {
36439
36462
  });
36440
36463
  return;
36441
36464
  }
36442
- var FULL_AUTO_MODE_RE = /bypass|yolo|danger|full.?access|skip.?perm|auto.?approve/i;
36443
- function modeIsFullAutoApprove(modeId) {
36444
- return FULL_AUTO_MODE_RE.test(modeId);
36445
- }
36446
36465
  async function setModeH(ctx) {
36447
36466
  const { cmd, client: client3, relay, opts } = ctx;
36448
36467
  const payload = cmd.payload;
@@ -42483,7 +42502,7 @@ function checkChokidar() {
42483
42502
  }
42484
42503
  async function doctor(args2 = []) {
42485
42504
  const json = args2.includes("--json");
42486
- const cliVersion = true ? "2.61.94" : "0.0.0-dev";
42505
+ const cliVersion = true ? "2.61.95" : "0.0.0-dev";
42487
42506
  const apiBase2 = resolveApiBaseUrl();
42488
42507
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
42489
42508
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -42874,7 +42893,7 @@ async function mcpRun(args2) {
42874
42893
  // src/commands/version.ts
42875
42894
  var import_picocolors15 = __toESM(require("picocolors"));
42876
42895
  function version2() {
42877
- const v = true ? "2.61.94" : "unknown";
42896
+ const v = true ? "2.61.95" : "unknown";
42878
42897
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
42879
42898
  }
42880
42899
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.61.94",
3
+ "version": "2.61.95",
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",