codeam-cli 2.74.9 → 2.74.10

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.9] — 2026-09-07
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Expo preview through our own cloudflared tunnel — stop depending on Expo's shared ngrok (#720)
12
+
7
13
  ## [2.74.8] — 2026-09-07
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.9" : "0.0.0-dev",
8139
+ cliVersion: true ? "2.74.10" : "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.9",
8381
+ version: "2.74.10",
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.9" ? { ideVersion: "2.74.9" } : {}
9974
+ ..."2.74.10" ? { ideVersion: "2.74.10" } : {}
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.9" : null;
22275
+ const current2 = true ? "2.74.10" : 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.9" : null;
22292
+ const current2 = true ? "2.74.10" : 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.9" : null;
22315
+ return true ? "2.74.10" : null;
22316
22316
  }
22317
22317
  async function installedVersion(deps) {
22318
22318
  const ls = await deps.run(
@@ -40411,6 +40411,11 @@ function rebindSessionHandles(ctx, outcome) {
40411
40411
  Object.assign(ctx, outcome.handles);
40412
40412
  return outcome;
40413
40413
  }
40414
+ function namesCurrentAgent(requested, currentAgent, currentIsHouse) {
40415
+ if (requested === currentAgent) return true;
40416
+ if (currentIsHouse) return requested === HOUSE_AGENT_ID;
40417
+ return publicToInternal(requested) === currentAgent;
40418
+ }
40414
40419
  async function routeSquadTask(ctx, target) {
40415
40420
  const { squad, routeToAgent } = ctx;
40416
40421
  if (!routeToAgent) {
@@ -40621,7 +40626,7 @@ async function startTaskH(ctx) {
40621
40626
  await relay.sendResult(cmd.id, "failed", { error: "empty prompt" });
40622
40627
  return;
40623
40628
  }
40624
- if (requestedAgentId.length > 0 && requestedAgentId !== opts.agent) {
40629
+ if (requestedAgentId.length > 0 && !namesCurrentAgent(requestedAgentId, opts.agent, ctx.currentIsHouse?.() ?? false)) {
40625
40630
  const routed = await routeSquadTask(ctx, requestedAgentId);
40626
40631
  if (!routed.ok) {
40627
40632
  log.warn("acpRunner", `start_task routing to ${requestedAgentId} failed: ${routed.error}`);
@@ -42254,7 +42259,10 @@ async function runAcpSession(opts) {
42254
42259
  squad,
42255
42260
  routeToAgent,
42256
42261
  pendingProposal,
42257
- emitSwitchEvent
42262
+ emitSwitchEvent,
42263
+ // Same live flag the switch deps read — a start_task naming the
42264
+ // house agent on a house session is the agent already running.
42265
+ () => houseActive
42258
42266
  );
42259
42267
  },
42260
42268
  { id: opts.agent, name: opts.agent, displayName: opts.agent },
@@ -42480,7 +42488,7 @@ async function runAcpSession(opts) {
42480
42488
  await new Promise(() => {
42481
42489
  });
42482
42490
  }
42483
- async function handleCommand(cmd, client3, relay, acpSessionId, streaming, opts, history, jsonlHistory, agentCaps, turnFiles, getBeads, publisher, recentStderr, budgetRecovery, budgetReachedFlag, onActiveSessionChanged, switchAgent, pendingHandoff, squad, routeToAgent, pendingProposal, postSquadEvent) {
42491
+ async function handleCommand(cmd, client3, relay, acpSessionId, streaming, opts, history, jsonlHistory, agentCaps, turnFiles, getBeads, publisher, recentStderr, budgetRecovery, budgetReachedFlag, onActiveSessionChanged, switchAgent, pendingHandoff, squad, routeToAgent, pendingProposal, postSquadEvent, currentIsHouse) {
42484
42492
  const session = {
42485
42493
  client: client3,
42486
42494
  relay,
@@ -42502,7 +42510,8 @@ async function handleCommand(cmd, client3, relay, acpSessionId, streaming, opts,
42502
42510
  squad,
42503
42511
  routeToAgent,
42504
42512
  pendingProposal,
42505
- postSquadEvent
42513
+ postSquadEvent,
42514
+ currentIsHouse
42506
42515
  };
42507
42516
  await dispatchAcpCommand(assembleAcpCommandContext(session, cmd));
42508
42517
  }
@@ -47593,7 +47602,7 @@ function checkChokidar() {
47593
47602
  }
47594
47603
  async function doctor(args2 = []) {
47595
47604
  const json = args2.includes("--json");
47596
- const cliVersion = true ? "2.74.9" : "0.0.0-dev";
47605
+ const cliVersion = true ? "2.74.10" : "0.0.0-dev";
47597
47606
  const apiBase2 = resolveApiBaseUrl();
47598
47607
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
47599
47608
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -48117,7 +48126,7 @@ async function mcpWarm(argv = [], opts = {}) {
48117
48126
  // src/commands/version.ts
48118
48127
  var import_picocolors15 = __toESM(require("picocolors"));
48119
48128
  function version2() {
48120
- const v = true ? "2.74.9" : "unknown";
48129
+ const v = true ? "2.74.10" : "unknown";
48121
48130
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
48122
48131
  }
48123
48132
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.74.9",
3
+ "version": "2.74.10",
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",