codeam-cli 2.63.0 → 2.63.1

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.63.0] — 2026-08-13
8
+
9
+ ### Added
10
+
11
+ - In-session agent switch (switch_agent relay command + wire types) (#619)
12
+
7
13
  ## [2.62.2] — 2026-08-13
8
14
 
9
15
  ### Fixed
package/dist/index.js CHANGED
@@ -8034,7 +8034,7 @@ function readAnonId() {
8034
8034
  }
8035
8035
  function superProperties() {
8036
8036
  return {
8037
- cliVersion: true ? "2.63.0" : "0.0.0-dev",
8037
+ cliVersion: true ? "2.63.1" : "0.0.0-dev",
8038
8038
  nodeVersion: process.version,
8039
8039
  platform: process.platform,
8040
8040
  arch: process.arch,
@@ -8215,7 +8215,7 @@ var os4 = __toESM(require("os"));
8215
8215
  // package.json
8216
8216
  var package_default = {
8217
8217
  name: "codeam-cli",
8218
- version: "2.63.0",
8218
+ version: "2.63.1",
8219
8219
  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.",
8220
8220
  type: "commonjs",
8221
8221
  main: "dist/index.js",
@@ -9655,7 +9655,7 @@ var CommandRelayService = class _CommandRelayService {
9655
9655
  // fresh + clear the "CLI update available" banner after a self-update
9656
9656
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
9657
9657
  // pair/reconnect). Older backends ignore the extra field.
9658
- ..."2.63.0" ? { ideVersion: "2.63.0" } : {}
9658
+ ..."2.63.1" ? { ideVersion: "2.63.1" } : {}
9659
9659
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
9660
9660
  }
9661
9661
  /**
@@ -21073,7 +21073,7 @@ async function autoUpgradeBeforeCriticalCommand() {
21073
21073
  if (process.env.NODE_ENV === "test") return;
21074
21074
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
21075
21075
  if (process.env.CI) return;
21076
- const current2 = true ? "2.63.0" : null;
21076
+ const current2 = true ? "2.63.1" : null;
21077
21077
  if (!current2) return;
21078
21078
  const cache = readCache();
21079
21079
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -21090,7 +21090,7 @@ function checkForUpdates() {
21090
21090
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
21091
21091
  if (process.env.CI) return;
21092
21092
  if (!process.stdout.isTTY) return;
21093
- const current2 = true ? "2.63.0" : null;
21093
+ const current2 = true ? "2.63.1" : null;
21094
21094
  if (!current2) return;
21095
21095
  const cache = readCache();
21096
21096
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -21110,7 +21110,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
21110
21110
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
21111
21111
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
21112
21112
  function currentCliVersion() {
21113
- return true ? "2.63.0" : null;
21113
+ return true ? "2.63.1" : null;
21114
21114
  }
21115
21115
  function runCmd(cmd, args2, timeoutMs) {
21116
21116
  return new Promise((resolve9) => {
@@ -28261,11 +28261,12 @@ function kimiRuns() {
28261
28261
  const r = (0, import_node_child_process27.spawnSync)("kimi", ["--version"], { stdio: "ignore", timeout: 15e3 });
28262
28262
  return !r.error && r.status === 0;
28263
28263
  }
28264
- function augmentPath2() {
28264
+ function augmentKimiPath() {
28265
28265
  const dir = kimiBinDir();
28266
28266
  const parts = (process.env.PATH ?? "").split(":");
28267
28267
  if (!parts.includes(dir)) process.env.PATH = `${dir}:${process.env.PATH ?? ""}`;
28268
28268
  }
28269
+ var augmentPath2 = augmentKimiPath;
28269
28270
  async function runInstaller2() {
28270
28271
  return new Promise((resolve9) => {
28271
28272
  const proc = (0, import_node_child_process27.spawn)("sh", ["-c", `curl -fsSL ${INSTALL_URL2} | bash`], { stdio: "inherit" });
@@ -28313,11 +28314,12 @@ function opencodeRuns() {
28313
28314
  const r = (0, import_node_child_process28.spawnSync)("opencode", ["--version"], { stdio: "ignore", timeout: 15e3 });
28314
28315
  return !r.error && r.status === 0;
28315
28316
  }
28316
- function augmentPath3() {
28317
+ function augmentOpencodePath() {
28317
28318
  const dir = opencodeBinDir();
28318
28319
  const parts = (process.env.PATH ?? "").split(":");
28319
28320
  if (!parts.includes(dir)) process.env.PATH = `${dir}:${process.env.PATH ?? ""}`;
28320
28321
  }
28322
+ var augmentPath3 = augmentOpencodePath;
28321
28323
  async function runInstaller3() {
28322
28324
  return new Promise((resolve9) => {
28323
28325
  const proc = (0, import_node_child_process28.spawn)("sh", ["-c", `curl -fsSL ${INSTALL_URL3} | bash`], { stdio: "inherit" });
@@ -28459,6 +28461,7 @@ var REGISTRY = {
28459
28461
  // provisions it, so there we just wait for the binary to appear.
28460
28462
  waitForBinary: async (o) => {
28461
28463
  if (isLocalSession()) await ensureKimiInstalled();
28464
+ augmentKimiPath();
28462
28465
  return waitForCommandOnPath("kimi", o);
28463
28466
  }
28464
28467
  }),
@@ -28474,6 +28477,7 @@ var REGISTRY = {
28474
28477
  requiresAgentBinary: "opencode",
28475
28478
  waitForBinary: async (o) => {
28476
28479
  if (isLocalSession()) await ensureOpencodeInstalled();
28480
+ augmentOpencodePath();
28477
28481
  return waitForCommandOnPath("opencode", o);
28478
28482
  }
28479
28483
  })
@@ -34376,6 +34380,7 @@ async function performAgentSwitch(deps, rawAgentId) {
34376
34380
  const emitStatus = (status2) => deps.postEvent("switch_agent_status", { ...status2 });
34377
34381
  const emitStep = (step) => deps.postEvent("switch_agent_progress", { step, agentId });
34378
34382
  const fail2 = (error) => {
34383
+ log.warn("switchAgent", `switch ${from} \u2192 ${agentId} failed: ${error}`);
34379
34384
  void emitStatus({ state: "error", agentId, fromAgentId: from, error });
34380
34385
  return { ok: false, agentId, error };
34381
34386
  };
@@ -43330,7 +43335,7 @@ function checkChokidar() {
43330
43335
  }
43331
43336
  async function doctor(args2 = []) {
43332
43337
  const json = args2.includes("--json");
43333
- const cliVersion = true ? "2.63.0" : "0.0.0-dev";
43338
+ const cliVersion = true ? "2.63.1" : "0.0.0-dev";
43334
43339
  const apiBase2 = resolveApiBaseUrl();
43335
43340
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
43336
43341
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -43721,7 +43726,7 @@ async function mcpRun(args2) {
43721
43726
  // src/commands/version.ts
43722
43727
  var import_picocolors15 = __toESM(require("picocolors"));
43723
43728
  function version2() {
43724
- const v = true ? "2.63.0" : "unknown";
43729
+ const v = true ? "2.63.1" : "unknown";
43725
43730
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
43726
43731
  }
43727
43732
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.63.0",
3
+ "version": "2.63.1",
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",