codeam-cli 2.75.37 → 2.75.38

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.37] — 2026-09-27
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** The review lists files, not new folders; skip sockets and beads state (#839)
12
+
7
13
  ## [2.75.36] — 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.37" : "0.0.0-dev",
10532
+ cliVersion: true ? "2.75.38" : "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.37",
10774
+ version: "2.75.38",
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.37" ? { ideVersion: "2.75.37" } : {}
12104
+ ..."2.75.38" ? { ideVersion: "2.75.38" } : {}
12105
12105
  };
12106
12106
  try {
12107
12107
  const res = await _postJson(`${API_BASE2}/api/plugin/heartbeat`, body);
@@ -20458,14 +20458,14 @@ function defaultSdkDir() {
20458
20458
  return resolveSdkDirViaRequire();
20459
20459
  }
20460
20460
  function resolveClaudeNativeBinary(deps = {}) {
20461
- const existsSync31 = deps.existsSync ?? import_fs.default.existsSync;
20461
+ const existsSync32 = deps.existsSync ?? import_fs.default.existsSync;
20462
20462
  const platformKey = deps.platformKey ?? currentPlatformKey();
20463
20463
  const sdkDir = deps.sdkDir !== void 0 ? deps.sdkDir : defaultSdkDir();
20464
20464
  if (!sdkDir) return null;
20465
20465
  const scopeDir = import_path4.default.dirname(sdkDir);
20466
20466
  const binName = platformKey.startsWith("win32-") ? "claude.exe" : "claude";
20467
20467
  const candidate = import_path4.default.join(scopeDir, `claude-agent-sdk-${platformKey}`, binName);
20468
- return existsSync31(candidate) ? candidate : null;
20468
+ return existsSync32(candidate) ? candidate : null;
20469
20469
  }
20470
20470
  var realSleep = (ms) => new Promise((resolve12) => setTimeout(resolve12, ms));
20471
20471
  async function waitForClaudeNativeBinary(opts = {}) {
@@ -20547,18 +20547,18 @@ function augmentUserLocalBinPaths(deps = {}) {
20547
20547
  env.PATH = [...additions, ...parts].join(p2.delimiter);
20548
20548
  }
20549
20549
  function resolveCursorAgentBinary(deps = {}) {
20550
- const existsSync31 = deps.existsSync ?? import_fs.default.existsSync;
20550
+ const existsSync32 = deps.existsSync ?? import_fs.default.existsSync;
20551
20551
  const platform3 = deps.platform ?? process.platform;
20552
20552
  const env = deps.env ?? process.env;
20553
20553
  if (platform3 === "win32") {
20554
20554
  const localAppData = env.LOCALAPPDATA;
20555
20555
  if (!localAppData) return null;
20556
20556
  const exe = import_path4.default.win32.join(localAppData, "cursor-agent", "cursor-agent.exe");
20557
- return existsSync31(exe) ? exe : null;
20557
+ return existsSync32(exe) ? exe : null;
20558
20558
  }
20559
20559
  const home = deps.homedir ?? import_os4.default.homedir();
20560
20560
  const unix = import_path4.default.posix.join(home, ".local", "bin", "cursor-agent");
20561
- return existsSync31(unix) ? unix : null;
20561
+ return existsSync32(unix) ? unix : null;
20562
20562
  }
20563
20563
  async function waitForCursorAgent(opts = {}) {
20564
20564
  const timeoutMs = opts.timeoutMs ?? 18e4;
@@ -26214,7 +26214,14 @@ async function provisionBeads(opts = {}) {
26214
26214
  "--shared-server",
26215
26215
  "--skip-agents",
26216
26216
  "--skip-hooks",
26217
- "--non-interactive"
26217
+ "--non-interactive",
26218
+ // ⚠️ Without it `bd init` COMMITS ("bd init: initialize beads issue
26219
+ // tracking") on whatever branch the user's repo is on — verified with bd
26220
+ // 1.0.5 on a scratch repo, and seen on a fleet box's feature branch
26221
+ // (break-it 2026-09-24/26). Stealth keeps beads out of git: it only writes
26222
+ // `.git/info/exclude` (local, never committed); the global git config was
26223
+ // verified untouched.
26224
+ "--stealth"
26218
26225
  ]);
26219
26226
  const alreadyInit = /already initialized|already exists/i.test(init.stderr + init.stdout);
26220
26227
  if (init.code !== 0 && !alreadyInit) {
@@ -26222,6 +26229,8 @@ async function provisionBeads(opts = {}) {
26222
26229
  return result;
26223
26230
  }
26224
26231
  result.initialized = true;
26232
+ const workdir = opts.cwd ?? process.cwd();
26233
+ ensureLocalGitExclude(findRepoRoot(workdir) ?? workdir, [".beads/", ".dolt/"]);
26225
26234
  const server = await _provisionSeam.ensureSharedServer(bd);
26226
26235
  result.serverUp = server.up;
26227
26236
  if (!server.up) {
@@ -26264,7 +26273,8 @@ async function provisionBeads(opts = {}) {
26264
26273
  // `git push` on a box without git-lfs (fleet box 2026-09-24).
26265
26274
  "--skip-agents",
26266
26275
  "--skip-hooks",
26267
- "--non-interactive"
26276
+ "--non-interactive",
26277
+ "--stealth"
26268
26278
  ]);
26269
26279
  if (mint.code !== 0) {
26270
26280
  log.warn(
@@ -26335,6 +26345,23 @@ function dedupeRecipes(agents) {
26335
26345
  }
26336
26346
  return [...seen2];
26337
26347
  }
26348
+ function ensureLocalGitExclude(cwd, patterns) {
26349
+ try {
26350
+ const gitDir = path54.join(cwd, ".git");
26351
+ if (!fs46.statSync(gitDir).isDirectory()) return;
26352
+ const file = path54.join(gitDir, "info", "exclude");
26353
+ fs46.mkdirSync(path54.dirname(file), { recursive: true });
26354
+ const current2 = fs46.existsSync(file) ? fs46.readFileSync(file, "utf8") : "";
26355
+ const have = new Set(current2.split(/\r?\n/).map((l) => l.trim()));
26356
+ const missing = patterns.filter((p2) => !have.has(p2));
26357
+ if (missing.length === 0) return;
26358
+ const prefix = current2.length > 0 && !current2.endsWith("\n") ? "\n" : "";
26359
+ fs46.appendFileSync(file, `${prefix}# CodeAgent: beads state stays local
26360
+ ${missing.join("\n")}
26361
+ `);
26362
+ } catch {
26363
+ }
26364
+ }
26338
26365
 
26339
26366
  // src/beads/watcher.ts
26340
26367
  var crypto4 = __toESM(require("crypto"));
@@ -27620,7 +27647,7 @@ var STALE_STAGING_AGE_MS = CLI_UPDATE_INSTALL_TIMEOUT_MS;
27620
27647
  function sweepStaleCliStagingDirs(nodeModulesDir, now = Date.now(), deps) {
27621
27648
  if (!nodeModulesDir) return 0;
27622
27649
  const readdirSync14 = deps?.readdirSync ?? fs51.readdirSync;
27623
- const statSync15 = deps?.statSync ?? fs51.statSync;
27650
+ const statSync16 = deps?.statSync ?? fs51.statSync;
27624
27651
  const rmSync10 = deps?.rmSync ?? fs51.rmSync;
27625
27652
  let removed = 0;
27626
27653
  let entries;
@@ -27633,7 +27660,7 @@ function sweepStaleCliStagingDirs(nodeModulesDir, now = Date.now(), deps) {
27633
27660
  if (!/^\.codeam-cli-/.test(name)) continue;
27634
27661
  const full = path59.join(nodeModulesDir, name);
27635
27662
  try {
27636
- const st3 = statSync15(full);
27663
+ const st3 = statSync16(full);
27637
27664
  if (now - st3.mtimeMs < STALE_STAGING_AGE_MS) continue;
27638
27665
  rmSync10(full, { recursive: true, force: true });
27639
27666
  removed++;
@@ -48808,7 +48835,7 @@ async function autoUpgradeBeforeCriticalCommand() {
48808
48835
  if (process.env.NODE_ENV === "test") return;
48809
48836
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
48810
48837
  if (process.env.CI) return;
48811
- const current2 = true ? "2.75.37" : null;
48838
+ const current2 = true ? "2.75.38" : null;
48812
48839
  if (!current2) return;
48813
48840
  const cache = readCache();
48814
48841
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -48825,7 +48852,7 @@ function checkForUpdates() {
48825
48852
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
48826
48853
  if (process.env.CI) return;
48827
48854
  if (!process.stdout.isTTY) return;
48828
- const current2 = true ? "2.75.37" : null;
48855
+ const current2 = true ? "2.75.38" : null;
48829
48856
  if (!current2) return;
48830
48857
  const cache = readCache();
48831
48858
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -48848,7 +48875,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
48848
48875
  var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
48849
48876
  var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
48850
48877
  function currentCliVersion() {
48851
- return true ? "2.75.37" : null;
48878
+ return true ? "2.75.38" : null;
48852
48879
  }
48853
48880
  async function installedVersion(deps) {
48854
48881
  const ls = await deps.run(
@@ -50816,7 +50843,7 @@ function checkChokidar() {
50816
50843
  }
50817
50844
  async function doctor(args2 = []) {
50818
50845
  const json = args2.includes("--json");
50819
- const cliVersion = true ? "2.75.37" : "0.0.0-dev";
50846
+ const cliVersion = true ? "2.75.38" : "0.0.0-dev";
50820
50847
  const apiBase2 = resolveApiBaseUrl();
50821
50848
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
50822
50849
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -51340,7 +51367,7 @@ async function mcpWarm(argv = [], opts = {}) {
51340
51367
  // src/commands/version.ts
51341
51368
  var import_picocolors15 = __toESM(require("picocolors"));
51342
51369
  function version2() {
51343
- const v = true ? "2.75.37" : "unknown";
51370
+ const v = true ? "2.75.38" : "unknown";
51344
51371
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
51345
51372
  }
51346
51373
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.75.37",
3
+ "version": "2.75.38",
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",