codeam-cli 2.45.0 → 2.46.0

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,23 @@ 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.45.1] — 2026-06-25
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Map cursor to its own Headroom kind (self-hosted launched Claude)
12
+ - **cli:** Disable Headroom for unsupported agents (gemini ran as Claude)
13
+
14
+ ### Tests
15
+
16
+ - **cli:** Stub gh-tooling network ops in cloneToken deploy test (fix windows flake)
17
+
18
+ ## [2.45.0] — 2026-06-25
19
+
20
+ ### Added
21
+
22
+ - **cli:** Cursor self-hosted provisioning (CURSOR_API_KEY)
23
+
7
24
  ## [2.44.0] — 2026-06-25
8
25
 
9
26
  ### Added
package/dist/index.js CHANGED
@@ -5397,7 +5397,7 @@ function readAnonId() {
5397
5397
  }
5398
5398
  function superProperties() {
5399
5399
  return {
5400
- cliVersion: true ? "2.45.0" : "0.0.0-dev",
5400
+ cliVersion: true ? "2.46.0" : "0.0.0-dev",
5401
5401
  nodeVersion: process.version,
5402
5402
  platform: process.platform,
5403
5403
  arch: process.arch,
@@ -5578,7 +5578,7 @@ var os4 = __toESM(require("os"));
5578
5578
  // package.json
5579
5579
  var package_default = {
5580
5580
  name: "codeam-cli",
5581
- version: "2.45.0",
5581
+ version: "2.46.0",
5582
5582
  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.",
5583
5583
  type: "commonjs",
5584
5584
  main: "dist/index.js",
@@ -17922,7 +17922,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17922
17922
  if (process.env.NODE_ENV === "test") return;
17923
17923
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17924
17924
  if (process.env.CI) return;
17925
- const current = true ? "2.45.0" : null;
17925
+ const current = true ? "2.46.0" : null;
17926
17926
  if (!current) return;
17927
17927
  const cache = readCache();
17928
17928
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17939,7 +17939,7 @@ function checkForUpdates() {
17939
17939
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17940
17940
  if (process.env.CI) return;
17941
17941
  if (!process.stdout.isTTY) return;
17942
- const current = true ? "2.45.0" : null;
17942
+ const current = true ? "2.46.0" : null;
17943
17943
  if (!current) return;
17944
17944
  const cache = readCache();
17945
17945
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18209,6 +18209,10 @@ function agentIdToHeadroomKind(agentId) {
18209
18209
  if (normalized.startsWith("copilot")) return "copilot";
18210
18210
  return "claude";
18211
18211
  }
18212
+ function isHeadroomSupportedAgent(agentId) {
18213
+ const n = (agentId ?? "").toLowerCase().replace(/[_-]/g, "");
18214
+ return n.startsWith("claude") || n.startsWith("codex") || n.startsWith("copilot");
18215
+ }
18212
18216
  function headroomConfigPath() {
18213
18217
  return path46.join(os33.homedir(), ".codeam", "headroom-config.json");
18214
18218
  }
@@ -18377,7 +18381,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
18377
18381
  detached: false
18378
18382
  });
18379
18383
  function currentCliVersion() {
18380
- return true ? "2.45.0" : null;
18384
+ return true ? "2.46.0" : null;
18381
18385
  }
18382
18386
  function runCmd(cmd, args2, timeoutMs) {
18383
18387
  return new Promise((resolve7) => {
@@ -18813,7 +18817,7 @@ var HostAgentSupervisor = class {
18813
18817
  childEnv.PREVIEW_TUNNEL_TOKEN = payload.previewTunnelToken;
18814
18818
  childEnv.PREVIEW_TUNNEL_HOSTNAME = payload.previewHostname;
18815
18819
  }
18816
- if (payload.headroomEnabled && payload.headroomAgent && payload.headroomSavingsIngestUrl) {
18820
+ if (payload.headroomEnabled && payload.headroomAgent && payload.headroomSavingsIngestUrl && isHeadroomSupportedAgent(payload.headroomAgent)) {
18817
18821
  report("headroom", "setting up Headroom proxy");
18818
18822
  const freeBytes = await this.getFreeDisk(os33.homedir());
18819
18823
  const alreadyInstalled = this.isHeadroomInstalled();
@@ -18857,6 +18861,12 @@ var HostAgentSupervisor = class {
18857
18861
  }
18858
18862
  } else if (payload.headroomEnabled === false) {
18859
18863
  persistHeadroomConfig({ enabled: false });
18864
+ } else if (payload.headroomEnabled && payload.headroomAgent && !isHeadroomSupportedAgent(payload.headroomAgent)) {
18865
+ log.info(
18866
+ "host-agent",
18867
+ `Headroom unsupported for agent '${payload.headroomAgent}' \u2014 running it natively (no wrap)`
18868
+ );
18869
+ persistHeadroomConfig({ enabled: false });
18860
18870
  }
18861
18871
  report("spawning", "starting agent");
18862
18872
  const proc = this.spawnSessionChild(childEnv, cwd, extraArgs);
@@ -19730,28 +19740,22 @@ var REGISTRY = {
19730
19740
  requiresAgentBinary: "codex"
19731
19741
  };
19732
19742
  },
19733
- // Cursor is intentionally NOT bundled right now. The only published
19734
- // ACP adapter (`cursor-agent-acp@0.1.1`) still depends on the
19735
- // deprecated `@zed-industries/agent-client-protocol` SDK; pulling it
19736
- // back into the install would surface the deprecation warning to
19737
- // every user of `codeam-cli`. The community forks (`cursor-acp`,
19738
- // `fzx-cursor-acp`) use the current `@agentclientprotocol/sdk` but
19739
- // are single-maintainer with no security track record we trust to
19740
- // auto-bundle.
19741
- //
19742
- // Re-add this entry the moment an `@agentclientprotocol/cursor-acp`
19743
- // ships under the official namespace, or upstream cursor-agent-acp
19744
- // publishes a release that uses the new SDK:
19743
+ // Cursor speaks ACP NATIVELY via `cursor-agent acp` ("Start the Cursor
19744
+ // Agent as an ACP server") — no npm adapter package needed, just the
19745
+ // user-installed `cursor-agent` binary. Same {@link AdapterSpec} shape as
19746
+ // gemini below. This is why we do NOT bundle the deprecated
19747
+ // `cursor-agent-acp@0.1.1` npm adapter (old `@zed-industries/...` SDK).
19745
19748
  //
19746
- // cursor: () => {
19747
- // const bin = resolveBin('@agentclientprotocol/cursor-acp', 'cursor-acp');
19748
- // if (!bin) return null;
19749
- // return { command: process.execPath, args: [bin], requiresAgentBinary: 'cursor-agent' };
19750
- // },
19751
- //
19752
- // Until then `getAcpAdapter('cursor')` returns null and the dispatch
19753
- // in start.ts runs cursor over the legacy PTY runtime — same
19754
- // behaviour cursor users had before ACP was added.
19749
+ // Running cursor over ACP (not the legacy PTY runtime) is REQUIRED: the
19750
+ // ACP client spawns the adapter with `env: { ...process.env, ...extraEnv }`
19751
+ // so the provisioned `CURSOR_API_KEY` actually reaches cursor-agent — the
19752
+ // interactive PTY path left cursor unauthenticated. It also gives the typed
19753
+ // streaming (tool calls / subagents) the other ACP agents emit.
19754
+ cursor: () => ({
19755
+ command: "cursor-agent",
19756
+ args: ["acp"],
19757
+ requiresAgentBinary: "cursor-agent"
19758
+ }),
19755
19759
  // Gemini speaks ACP natively via `gemini --acp` — no npm adapter
19756
19760
  // package, just the user-installed `gemini` binary on PATH. Same
19757
19761
  // {@link AdapterSpec} shape; the only difference is `command` is
@@ -29702,7 +29706,7 @@ function checkChokidar() {
29702
29706
  }
29703
29707
  async function doctor(args2 = []) {
29704
29708
  const json = args2.includes("--json");
29705
- const cliVersion = true ? "2.45.0" : "0.0.0-dev";
29709
+ const cliVersion = true ? "2.46.0" : "0.0.0-dev";
29706
29710
  const apiBase2 = resolveApiBaseUrl();
29707
29711
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
29708
29712
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -29901,7 +29905,7 @@ async function completion(args2) {
29901
29905
  // src/commands/version.ts
29902
29906
  var import_picocolors15 = __toESM(require("picocolors"));
29903
29907
  function version2() {
29904
- const v = true ? "2.45.0" : "unknown";
29908
+ const v = true ? "2.46.0" : "unknown";
29905
29909
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
29906
29910
  }
29907
29911
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.45.0",
3
+ "version": "2.46.0",
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",