codeam-cli 2.75.36 → 2.75.37

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.75.36] — 2026-09-26
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** A host restarts onto an update unless a session is actually mid-turn (#836)
12
+
7
13
  ## [2.75.35] — 2026-09-26
8
14
 
9
15
  ### Fixed
package/dist/index.js CHANGED
@@ -10529,7 +10529,7 @@ function readAnonId() {
10529
10529
  }
10530
10530
  function superProperties() {
10531
10531
  return {
10532
- cliVersion: true ? "2.75.36" : "0.0.0-dev",
10532
+ cliVersion: true ? "2.75.37" : "0.0.0-dev",
10533
10533
  nodeVersion: process.version,
10534
10534
  platform: process.platform,
10535
10535
  arch: process.arch,
@@ -10771,7 +10771,7 @@ var http = __toESM(require("http"));
10771
10771
  // package.json
10772
10772
  var package_default = {
10773
10773
  name: "codeam-cli",
10774
- version: "2.75.36",
10774
+ version: "2.75.37",
10775
10775
  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.",
10776
10776
  type: "commonjs",
10777
10777
  main: "dist/index.js",
@@ -12101,7 +12101,7 @@ var CommandRelayService = class _CommandRelayService {
12101
12101
  // fresh + clear the "CLI update available" banner after a self-update
12102
12102
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
12103
12103
  // pair/reconnect). Older backends ignore the extra field.
12104
- ..."2.75.36" ? { ideVersion: "2.75.36" } : {}
12104
+ ..."2.75.37" ? { ideVersion: "2.75.37" } : {}
12105
12105
  };
12106
12106
  try {
12107
12107
  const res = await _postJson(`${API_BASE2}/api/plugin/heartbeat`, body);
@@ -37725,6 +37725,7 @@ var import_crypto4 = require("crypto");
37725
37725
  // src/services/turn-files/git-changeset.ts
37726
37726
  var import_child_process29 = require("child_process");
37727
37727
  var fs63 = __toESM(require("fs/promises"));
37728
+ var import_fs7 = require("fs");
37728
37729
  var path74 = __toESM(require("path"));
37729
37730
 
37730
37731
  // src/services/turn-files/review-ignore.ts
@@ -37764,7 +37765,12 @@ var CURATED_REVIEW_IGNORE = [
37764
37765
  "awscli/",
37765
37766
  // CodeAgent's own runtime prefixes (never a user change).
37766
37767
  ".codeam/",
37767
- "codeam-node20/"
37768
+ "codeam-node20/",
37769
+ // Beads (issue tracker + agent memory) and its Dolt store — our tooling's
37770
+ // state, written on every bd op; it showed up as `.beads/issues.jsonl` in
37771
+ // the user's review (break-it 2026-09-26).
37772
+ ".beads/",
37773
+ ".dolt/"
37768
37774
  ];
37769
37775
  function makeReviewIgnore(repoRoot) {
37770
37776
  const ig = (0, import_ignore2.default)().add(CURATED_REVIEW_IGNORE);
@@ -37786,7 +37792,12 @@ function makeReviewIgnore(repoRoot) {
37786
37792
 
37787
37793
  // src/services/turn-files/git-changeset.ts
37788
37794
  async function collectRepoChangeset(opts) {
37789
- const status2 = await runGit3(opts.repoRoot, ["status", "--porcelain=v1", "-z"]);
37795
+ const status2 = await runGit3(opts.repoRoot, [
37796
+ "status",
37797
+ "--porcelain=v1",
37798
+ "-z",
37799
+ "--untracked-files=all"
37800
+ ]);
37790
37801
  if (status2 === null) return null;
37791
37802
  const numstatRaw = await runGit3(opts.repoRoot, [
37792
37803
  "diff",
@@ -37797,7 +37808,9 @@ async function collectRepoChangeset(opts) {
37797
37808
  const numstat = parseNumstat(numstatRaw ?? "");
37798
37809
  const reviewIgnore = makeReviewIgnore(opts.repoRoot);
37799
37810
  const rows = parseStatus(status2).filter(
37800
- (row) => !isIgnoredFilePath(row.filePath) && !reviewIgnore(row.filePath)
37811
+ (row) => !isIgnoredFilePath(row.filePath) && !reviewIgnore(row.filePath) && // A socket, FIFO or device node is never a change to review (a
37812
+ // `cc-socks/1522.sock` reached the Files tab).
37813
+ isReviewablePath(path74.join(opts.repoRoot, row.filePath))
37801
37814
  );
37802
37815
  const MAX_CHANGESET_FILES = Math.max(1, Number(process.env.CODEAM_MAX_CHANGESET_FILES ?? 500));
37803
37816
  const truncated = rows.length > MAX_CHANGESET_FILES;
@@ -37969,6 +37982,14 @@ async function discoverRepos(workingDir, maxDepth = 4) {
37969
37982
  }
37970
37983
  }
37971
37984
  }
37985
+ function isReviewablePath(absPath) {
37986
+ try {
37987
+ const st3 = (0, import_fs7.lstatSync)(absPath);
37988
+ return st3.isFile() || st3.isSymbolicLink();
37989
+ } catch {
37990
+ return true;
37991
+ }
37992
+ }
37972
37993
 
37973
37994
  // src/services/turn-files/files-outbox.ts
37974
37995
  var fs64 = __toESM(require("fs/promises"));
@@ -48787,7 +48808,7 @@ async function autoUpgradeBeforeCriticalCommand() {
48787
48808
  if (process.env.NODE_ENV === "test") return;
48788
48809
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
48789
48810
  if (process.env.CI) return;
48790
- const current2 = true ? "2.75.36" : null;
48811
+ const current2 = true ? "2.75.37" : null;
48791
48812
  if (!current2) return;
48792
48813
  const cache = readCache();
48793
48814
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -48804,7 +48825,7 @@ function checkForUpdates() {
48804
48825
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
48805
48826
  if (process.env.CI) return;
48806
48827
  if (!process.stdout.isTTY) return;
48807
- const current2 = true ? "2.75.36" : null;
48828
+ const current2 = true ? "2.75.37" : null;
48808
48829
  if (!current2) return;
48809
48830
  const cache = readCache();
48810
48831
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -48827,7 +48848,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
48827
48848
  var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
48828
48849
  var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
48829
48850
  function currentCliVersion() {
48830
- return true ? "2.75.36" : null;
48851
+ return true ? "2.75.37" : null;
48831
48852
  }
48832
48853
  async function installedVersion(deps) {
48833
48854
  const ls = await deps.run(
@@ -50795,7 +50816,7 @@ function checkChokidar() {
50795
50816
  }
50796
50817
  async function doctor(args2 = []) {
50797
50818
  const json = args2.includes("--json");
50798
- const cliVersion = true ? "2.75.36" : "0.0.0-dev";
50819
+ const cliVersion = true ? "2.75.37" : "0.0.0-dev";
50799
50820
  const apiBase2 = resolveApiBaseUrl();
50800
50821
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
50801
50822
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -51319,7 +51340,7 @@ async function mcpWarm(argv = [], opts = {}) {
51319
51340
  // src/commands/version.ts
51320
51341
  var import_picocolors15 = __toESM(require("picocolors"));
51321
51342
  function version2() {
51322
- const v = true ? "2.75.36" : "unknown";
51343
+ const v = true ? "2.75.37" : "unknown";
51323
51344
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
51324
51345
  }
51325
51346
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.75.36",
3
+ "version": "2.75.37",
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",