codeam-cli 2.39.79 → 2.39.80

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.39.78] — 2026-06-21
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Keep Headroom savings reporting on a low-disk box that's already installed
12
+
7
13
  ## [2.39.77] — 2026-06-21
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -5390,7 +5390,7 @@ function readAnonId() {
5390
5390
  }
5391
5391
  function superProperties() {
5392
5392
  return {
5393
- cliVersion: true ? "2.39.79" : "0.0.0-dev",
5393
+ cliVersion: true ? "2.39.80" : "0.0.0-dev",
5394
5394
  nodeVersion: process.version,
5395
5395
  platform: process.platform,
5396
5396
  arch: process.arch,
@@ -5549,7 +5549,7 @@ var os4 = __toESM(require("os"));
5549
5549
  // package.json
5550
5550
  var package_default = {
5551
5551
  name: "codeam-cli",
5552
- version: "2.39.79",
5552
+ version: "2.39.80",
5553
5553
  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.",
5554
5554
  type: "commonjs",
5555
5555
  main: "dist/index.js",
@@ -17456,7 +17456,7 @@ function checkForUpdates() {
17456
17456
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17457
17457
  if (process.env.CI) return;
17458
17458
  if (!process.stdout.isTTY) return;
17459
- const current = true ? "2.39.79" : null;
17459
+ const current = true ? "2.39.80" : null;
17460
17460
  if (!current) return;
17461
17461
  const cache = readCache();
17462
17462
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17894,7 +17894,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process13.s
17894
17894
  detached: false
17895
17895
  });
17896
17896
  function currentCliVersion() {
17897
- return true ? "2.39.79" : null;
17897
+ return true ? "2.39.80" : null;
17898
17898
  }
17899
17899
  function runCmd(cmd, args2, timeoutMs) {
17900
17900
  return new Promise((resolve7) => {
@@ -23691,6 +23691,14 @@ function looksLikeAuthFailure(text) {
23691
23691
  return AUTH_FAILURE_RE.test(text);
23692
23692
  }
23693
23693
  var AUTH_FAILURE_MESSAGE = "\u{1F512} **Authentication failed \u2014 your agent credentials are invalid or expired (API 401).**\n\nTap [Re-authenticate this agent](codeam://reauth) to renew your credentials in Profile \u203A Agents, then send your message again.";
23694
+ var TURN_FAILURE_MESSAGE = "\u26A0\uFE0F **The agent hit an error and couldn\u2019t finish this turn.** Please send your message again.";
23695
+ function failureBubble(opts) {
23696
+ if (looksLikeAuthFailure(opts.detail) || looksLikeAuthFailure(opts.recentStderr)) {
23697
+ return AUTH_FAILURE_MESSAGE;
23698
+ }
23699
+ if (!opts.hadText) return TURN_FAILURE_MESSAGE;
23700
+ return null;
23701
+ }
23694
23702
  async function runAcpSession(opts) {
23695
23703
  const publisher = new AcpPublisher({
23696
23704
  sessionId: opts.sessionId,
@@ -23952,16 +23960,18 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
23952
23960
  log.info("acpRunner", `start_task \u2190 done stopReason=${reply.stopReason ?? "?"} id=${cmd.id.slice(0, 8)}`);
23953
23961
  await relay.sendResult(cmd.id, "completed", { stopReason: reply.stopReason });
23954
23962
  } catch (err) {
23963
+ const hadText = streaming.getCurrentText().trim().length > 0;
23955
23964
  await recoverFromFailedTurn(client2, streaming);
23956
23965
  const detail = describeError(err);
23957
23966
  log.warn("acpRunner", `prompt failed: ${detail}`);
23958
- if (looksLikeAuthFailure(detail) || looksLikeAuthFailure(recentStderr.join("\n"))) {
23959
- await publisher.publishOutput({
23960
- type: "text",
23961
- content: AUTH_FAILURE_MESSAGE,
23962
- done: true
23963
- });
23964
- history.appendAgentReply(AUTH_FAILURE_MESSAGE);
23967
+ const bubble = failureBubble({
23968
+ detail,
23969
+ recentStderr: recentStderr.join("\n"),
23970
+ hadText
23971
+ });
23972
+ if (bubble) {
23973
+ await publisher.publishOutput({ type: "text", content: bubble, done: true });
23974
+ history.appendAgentReply(bubble);
23965
23975
  void history.flush();
23966
23976
  }
23967
23977
  await relay.sendResult(cmd.id, "failed", { error: detail });
@@ -28599,7 +28609,7 @@ function checkChokidar() {
28599
28609
  }
28600
28610
  async function doctor(args2 = []) {
28601
28611
  const json = args2.includes("--json");
28602
- const cliVersion = true ? "2.39.79" : "0.0.0-dev";
28612
+ const cliVersion = true ? "2.39.80" : "0.0.0-dev";
28603
28613
  const apiBase2 = resolveApiBaseUrl();
28604
28614
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
28605
28615
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -28798,7 +28808,7 @@ async function completion(args2) {
28798
28808
  // src/commands/version.ts
28799
28809
  var import_picocolors14 = __toESM(require("picocolors"));
28800
28810
  function version2() {
28801
- const v = true ? "2.39.79" : "unknown";
28811
+ const v = true ? "2.39.80" : "unknown";
28802
28812
  console.log(`${import_picocolors14.default.bold("codeam-cli")} ${import_picocolors14.default.cyan(v)}`);
28803
28813
  }
28804
28814
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.39.79",
3
+ "version": "2.39.80",
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",