codeam-cli 2.39.19 → 2.39.21

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.39.20] — 2026-06-15
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Handle ACP adapter spawn errors instead of crashing the relay
12
+
13
+ ## [2.39.19] — 2026-06-15
14
+
15
+ ### Fixed
16
+
17
+ - **cli:** Capture a larger preview dev-server log so the real failure surfaces
18
+
7
19
  ## [2.39.18] — 2026-06-14
8
20
 
9
21
  ### Added
package/dist/index.js CHANGED
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
498
498
  // package.json
499
499
  var package_default = {
500
500
  name: "codeam-cli",
501
- version: "2.39.19",
501
+ version: "2.39.21",
502
502
  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.",
503
503
  type: "commonjs",
504
504
  main: "dist/index.js",
@@ -5908,7 +5908,7 @@ function readAnonId() {
5908
5908
  }
5909
5909
  function superProperties() {
5910
5910
  return {
5911
- cliVersion: true ? "2.39.19" : "0.0.0-dev",
5911
+ cliVersion: true ? "2.39.21" : "0.0.0-dev",
5912
5912
  nodeVersion: process.version,
5913
5913
  platform: process.platform,
5914
5914
  arch: process.arch,
@@ -14763,6 +14763,14 @@ var AcpClient = class {
14763
14763
  log.warn("acpClient", `adapter exited unexpectedly code=${code} signal=${signal}`);
14764
14764
  this.opts.onUnexpectedExit?.(code, signal);
14765
14765
  });
14766
+ child.on("error", (err) => {
14767
+ if (this.stopping) return;
14768
+ const code = err.code ?? err.message;
14769
+ const hint = err.code === "ENOEXEC" ? " \u2014 the agent binary looks like the wrong architecture or a non-executable script" : err.code === "ENOENT" ? ` \u2014 '${adapter.command}' was not found on PATH` : err.code === "EACCES" ? ` \u2014 '${adapter.command}' is not executable` : "";
14770
+ log.error("acpClient", `adapter spawn failed: ${code}${hint}`);
14771
+ this.opts.onStderr?.(`Failed to launch ${adapter.command}: ${code}${hint}`);
14772
+ this.opts.onUnexpectedExit?.(null, null);
14773
+ });
14766
14774
  if (!child.stdin || !child.stdout) {
14767
14775
  throw new Error("Spawned ACP adapter is missing stdio handles");
14768
14776
  }
@@ -15443,7 +15451,7 @@ function buildOnboardingWelcome(cwd) {
15443
15451
  `Ready when you are \u2014 try **"explain ${repo}"** or **"what should I work on first?"**`
15444
15452
  ].join("\n");
15445
15453
  }
15446
- function maybeSendOnboardingWelcome(opts) {
15454
+ async function maybeSendOnboardingWelcome(opts) {
15447
15455
  if (_onboardingSeam.disabled()) return;
15448
15456
  const marker = _onboardingSeam.markerPath(opts.sessionId);
15449
15457
  try {
@@ -15454,12 +15462,14 @@ function maybeSendOnboardingWelcome(opts) {
15454
15462
  return;
15455
15463
  }
15456
15464
  log.info("acpRunner", `sending first-pair onboarding welcome for session=${opts.sessionId.slice(0, 8)}`);
15457
- void runOnboardingTurn(opts).catch((err) => {
15465
+ try {
15466
+ await runOnboardingTurn(opts);
15467
+ } catch (err) {
15458
15468
  log.warn(
15459
15469
  "acpRunner",
15460
15470
  `onboarding welcome turn failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`
15461
15471
  );
15462
- });
15472
+ }
15463
15473
  }
15464
15474
  async function runOnboardingTurn(opts) {
15465
15475
  const { streaming, history, cwd } = opts;
@@ -21754,7 +21764,7 @@ async function runAcpSession(opts) {
21754
21764
  const runtime = createInteractiveAgentStrategy(opts.agent, createOsStrategy());
21755
21765
  const models = await runtime.listModels();
21756
21766
  const history = new AcpHistory(publisher, { agent: opts.agent, acpSessionId });
21757
- maybeSendOnboardingWelcome({
21767
+ const onboardingWelcomeDone = maybeSendOnboardingWelcome({
21758
21768
  streaming,
21759
21769
  history,
21760
21770
  sessionId: opts.sessionId,
@@ -21813,6 +21823,7 @@ async function runAcpSession(opts) {
21813
21823
  },
21814
21824
  { id: opts.agent, name: opts.agent, displayName: opts.agent }
21815
21825
  );
21826
+ await onboardingWelcomeDone;
21816
21827
  relay.start();
21817
21828
  const prewarmTimer = setTimeout(() => prewarmPreviewDetection(runtime), 2e4);
21818
21829
  const shutdown = async (signal) => {
@@ -27056,7 +27067,7 @@ function checkChokidar() {
27056
27067
  }
27057
27068
  async function doctor(args2 = []) {
27058
27069
  const json = args2.includes("--json");
27059
- const cliVersion = true ? "2.39.19" : "0.0.0-dev";
27070
+ const cliVersion = true ? "2.39.21" : "0.0.0-dev";
27060
27071
  const apiBase = resolveApiBaseUrl();
27061
27072
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
27062
27073
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -27255,7 +27266,7 @@ async function completion(args2) {
27255
27266
  // src/commands/version.ts
27256
27267
  var import_picocolors13 = __toESM(require("picocolors"));
27257
27268
  function version2() {
27258
- const v = true ? "2.39.19" : "unknown";
27269
+ const v = true ? "2.39.21" : "unknown";
27259
27270
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
27260
27271
  }
27261
27272
 
@@ -27541,7 +27552,7 @@ function checkForUpdates() {
27541
27552
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
27542
27553
  if (process.env.CI) return;
27543
27554
  if (!process.stdout.isTTY) return;
27544
- const current = true ? "2.39.19" : null;
27555
+ const current = true ? "2.39.21" : null;
27545
27556
  if (!current) return;
27546
27557
  const cache = readCache();
27547
27558
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.39.19",
3
+ "version": "2.39.21",
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",