codeam-cli 2.74.5 → 2.74.6

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.74.5] — 2026-09-04
8
+
9
+ ### Chore
10
+
11
+ - **cli:** Bump @agentclientprotocol/claude-agent-acp 0.59.0 → 0.74.0 (Claude Code 2.1.257) (#711)
12
+
7
13
  ## [2.74.4] — 2026-09-04
8
14
 
9
15
  ### Fixed
package/dist/index.js CHANGED
@@ -8136,7 +8136,7 @@ function readAnonId() {
8136
8136
  }
8137
8137
  function superProperties() {
8138
8138
  return {
8139
- cliVersion: true ? "2.74.5" : "0.0.0-dev",
8139
+ cliVersion: true ? "2.74.6" : "0.0.0-dev",
8140
8140
  nodeVersion: process.version,
8141
8141
  platform: process.platform,
8142
8142
  arch: process.arch,
@@ -8378,7 +8378,7 @@ var http = __toESM(require("http"));
8378
8378
  // package.json
8379
8379
  var package_default = {
8380
8380
  name: "codeam-cli",
8381
- version: "2.74.5",
8381
+ version: "2.74.6",
8382
8382
  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.",
8383
8383
  type: "commonjs",
8384
8384
  main: "dist/index.js",
@@ -9971,7 +9971,7 @@ var CommandRelayService = class _CommandRelayService {
9971
9971
  // fresh + clear the "CLI update available" banner after a self-update
9972
9972
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
9973
9973
  // pair/reconnect). Older backends ignore the extra field.
9974
- ..."2.74.5" ? { ideVersion: "2.74.5" } : {}
9974
+ ..."2.74.6" ? { ideVersion: "2.74.6" } : {}
9975
9975
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
9976
9976
  }
9977
9977
  /**
@@ -22272,7 +22272,7 @@ async function autoUpgradeBeforeCriticalCommand() {
22272
22272
  if (process.env.NODE_ENV === "test") return;
22273
22273
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
22274
22274
  if (process.env.CI) return;
22275
- const current2 = true ? "2.74.5" : null;
22275
+ const current2 = true ? "2.74.6" : null;
22276
22276
  if (!current2) return;
22277
22277
  const cache = readCache();
22278
22278
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -22289,7 +22289,7 @@ function checkForUpdates() {
22289
22289
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
22290
22290
  if (process.env.CI) return;
22291
22291
  if (!process.stdout.isTTY) return;
22292
- const current2 = true ? "2.74.5" : null;
22292
+ const current2 = true ? "2.74.6" : null;
22293
22293
  if (!current2) return;
22294
22294
  const cache = readCache();
22295
22295
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -22312,7 +22312,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
22312
22312
  var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
22313
22313
  var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
22314
22314
  function currentCliVersion() {
22315
- return true ? "2.74.5" : null;
22315
+ return true ? "2.74.6" : null;
22316
22316
  }
22317
22317
  async function installedVersion(deps) {
22318
22318
  const ls = await deps.run(
@@ -25032,10 +25032,20 @@ function parseCloudflaredUrl(stderr) {
25032
25032
  const match = stderr.match(CLOUDFLARED_URL_RE);
25033
25033
  return match ? match[0] : null;
25034
25034
  }
25035
- var EXPO_URL_RE = /exp:\/\/[^\s]+\.exp\.host/;
25036
- function parseExpoUrl(stdout) {
25037
- const match = stdout.match(EXPO_URL_RE);
25038
- return match ? match[0] : null;
25035
+ var EXPO_DEEP_LINK_RE = /exp:\/\/[^\s"'`)]+\.exp\.(?:direct|host)(?::\d+)?/;
25036
+ var EXPO_DEBUG_TUNNEL_RE = /Tunnel URL:\s*(https?:\/\/([^\s"'`)]+\.exp\.(?:direct|host)))/;
25037
+ function parseExpoUrl(output) {
25038
+ const direct = output.match(EXPO_DEEP_LINK_RE);
25039
+ if (direct) return direct[0];
25040
+ const dbg = output.match(EXPO_DEBUG_TUNNEL_RE);
25041
+ if (dbg) return `exp://${dbg[2]}`;
25042
+ return null;
25043
+ }
25044
+ var EXPO_TUNNEL_DEBUG_CHANNEL = "expo:start:server:ngrok";
25045
+ function expoTunnelDebugEnv(existing) {
25046
+ const cur = (existing ?? "").split(",").map((s) => s.trim()).filter(Boolean);
25047
+ if (!cur.includes(EXPO_TUNNEL_DEBUG_CHANNEL)) cur.push(EXPO_TUNNEL_DEBUG_CHANNEL);
25048
+ return { DEBUG: cur.join(",") };
25039
25049
  }
25040
25050
  var RAW_EXCERPT_LIMIT = 1e3;
25041
25051
  function describeDetectionFailure(raw) {
@@ -26643,9 +26653,11 @@ async function startDevServer(ctx) {
26643
26653
  await applyPreviewHostAllow(cwd);
26644
26654
  const spawnable = normalizeDetectionForSpawn(detection, cwd);
26645
26655
  emitProgress("BOOT_SEQUENCE", `${spawnable.command} ${spawnable.args.join(" ")}`);
26656
+ const isExpo = detection.framework === "Expo";
26657
+ const expoDebugEnv = isExpo && isExpoTunnelCommand(detection.command, detection.args ?? []) ? expoTunnelDebugEnv(spawnable.env?.DEBUG ?? process.env.DEBUG) : {};
26646
26658
  const devServer = (0, import_child_process23.spawn)(spawnable.command, spawnable.args, {
26647
26659
  cwd,
26648
- env: { ...process.env, ...spawnable.env ?? {} },
26660
+ env: { ...process.env, ...spawnable.env ?? {}, ...expoDebugEnv },
26649
26661
  stdio: ["ignore", "pipe", "pipe"],
26650
26662
  // POSIX: lead a new process group so teardown can SIGTERM the whole
26651
26663
  // tree. Dev servers fork worker children that bind the port; killing
@@ -26659,14 +26671,17 @@ async function startDevServer(ctx) {
26659
26671
  emitProgress("WAITING_FOR_READY", detection.ready_pattern);
26660
26672
  const expoUrlRef = { current: null };
26661
26673
  let outputTail = "";
26662
- const readyRe = compileReadyPattern(detection.ready_pattern);
26674
+ const readyRe = isExpo ? new RegExp(
26675
+ `(?:${compileReadyPattern(detection.ready_pattern).source})|exp:\\/\\/[^\\s]+\\.exp\\.(?:direct|host)|Tunnel URL:`,
26676
+ "i"
26677
+ ) : compileReadyPattern(detection.ready_pattern);
26663
26678
  const isNextJs = /next/i.test(detection.framework);
26664
26679
  const outcome = await waitForDevServerReady(devServer, readyRe, {
26665
26680
  timeoutMs: 12e4,
26666
26681
  onChunk: (s) => {
26667
26682
  outputTail = (outputTail + s).slice(-16e3);
26668
- if (!expoUrlRef.current && detection.framework === "Expo") {
26669
- expoUrlRef.current = parseExpoUrl(s);
26683
+ if (!expoUrlRef.current && isExpo) {
26684
+ expoUrlRef.current = parseExpoUrl(outputTail);
26670
26685
  }
26671
26686
  },
26672
26687
  portProbe: isNextJs ? () => waitForPortListening(detection.port, { timeoutMs: 1e3, intervalMs: 250 }) : void 0
@@ -47525,7 +47540,7 @@ function checkChokidar() {
47525
47540
  }
47526
47541
  async function doctor(args2 = []) {
47527
47542
  const json = args2.includes("--json");
47528
- const cliVersion = true ? "2.74.5" : "0.0.0-dev";
47543
+ const cliVersion = true ? "2.74.6" : "0.0.0-dev";
47529
47544
  const apiBase2 = resolveApiBaseUrl();
47530
47545
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
47531
47546
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -48049,7 +48064,7 @@ async function mcpWarm(argv = [], opts = {}) {
48049
48064
  // src/commands/version.ts
48050
48065
  var import_picocolors15 = __toESM(require("picocolors"));
48051
48066
  function version2() {
48052
- const v = true ? "2.74.5" : "unknown";
48067
+ const v = true ? "2.74.6" : "unknown";
48053
48068
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
48054
48069
  }
48055
48070
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.74.5",
3
+ "version": "2.74.6",
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",