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 +17 -0
- package/dist/index.js +33 -29
- package/package.json +1 -1
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
19734
|
-
// ACP adapter
|
|
19735
|
-
//
|
|
19736
|
-
//
|
|
19737
|
-
//
|
|
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
|
-
//
|
|
19747
|
-
//
|
|
19748
|
-
//
|
|
19749
|
-
//
|
|
19750
|
-
//
|
|
19751
|
-
|
|
19752
|
-
|
|
19753
|
-
|
|
19754
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|