codeam-cli 2.45.1 → 2.46.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 +17 -0
- package/dist/index.js +30 -34
- 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.46.0] — 2026-06-26
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Route cursor over native ACP (cursor-agent acp) so CURSOR_API_KEY reaches it
|
|
12
|
+
|
|
13
|
+
## [2.45.1] — 2026-06-25
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Map cursor to its own Headroom kind (self-hosted launched Claude)
|
|
18
|
+
- **cli:** Disable Headroom for unsupported agents (gemini ran as Claude)
|
|
19
|
+
|
|
20
|
+
### Tests
|
|
21
|
+
|
|
22
|
+
- **cli:** Stub gh-tooling network ops in cloneToken deploy test (fix windows flake)
|
|
23
|
+
|
|
7
24
|
## [2.45.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.1" : "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.1",
|
|
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",
|
|
@@ -17478,8 +17478,10 @@ var geminiProvisioner = {
|
|
|
17478
17478
|
}
|
|
17479
17479
|
};
|
|
17480
17480
|
var cursorProvisioner = {
|
|
17481
|
-
write(auth,
|
|
17481
|
+
write(auth, home) {
|
|
17482
|
+
const authJson = path43.join(home, ".config", "cursor", "auth.json");
|
|
17482
17483
|
if (auth.kind === "api_key") {
|
|
17484
|
+
rmIfExists(authJson);
|
|
17483
17485
|
return { CURSOR_API_KEY: auth.value };
|
|
17484
17486
|
}
|
|
17485
17487
|
const value = auth.value.trim();
|
|
@@ -17493,10 +17495,11 @@ var cursorProvisioner = {
|
|
|
17493
17495
|
if (typeof parsed !== "object" || parsed === null || typeof parsed["accessToken"] !== "string" || !parsed["accessToken"]) {
|
|
17494
17496
|
throw new Error("cursor oauth_token: credential blob is missing a non-empty accessToken");
|
|
17495
17497
|
}
|
|
17496
|
-
|
|
17497
|
-
return {
|
|
17498
|
+
writeFile0600(authJson, value);
|
|
17499
|
+
return {};
|
|
17498
17500
|
}
|
|
17499
|
-
|
|
17501
|
+
writeFile0600(authJson, JSON.stringify({ accessToken: value }));
|
|
17502
|
+
return {};
|
|
17500
17503
|
}
|
|
17501
17504
|
};
|
|
17502
17505
|
var PROVISIONERS = {
|
|
@@ -17922,7 +17925,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17922
17925
|
if (process.env.NODE_ENV === "test") return;
|
|
17923
17926
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17924
17927
|
if (process.env.CI) return;
|
|
17925
|
-
const current = true ? "2.
|
|
17928
|
+
const current = true ? "2.46.1" : null;
|
|
17926
17929
|
if (!current) return;
|
|
17927
17930
|
const cache = readCache();
|
|
17928
17931
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17939,7 +17942,7 @@ function checkForUpdates() {
|
|
|
17939
17942
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17940
17943
|
if (process.env.CI) return;
|
|
17941
17944
|
if (!process.stdout.isTTY) return;
|
|
17942
|
-
const current = true ? "2.
|
|
17945
|
+
const current = true ? "2.46.1" : null;
|
|
17943
17946
|
if (!current) return;
|
|
17944
17947
|
const cache = readCache();
|
|
17945
17948
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18207,12 +18210,11 @@ function agentIdToHeadroomKind(agentId) {
|
|
|
18207
18210
|
if (normalized.startsWith("claude")) return "claude";
|
|
18208
18211
|
if (normalized.startsWith("codex")) return "codex";
|
|
18209
18212
|
if (normalized.startsWith("copilot")) return "copilot";
|
|
18210
|
-
if (normalized.startsWith("cursor")) return "cursor";
|
|
18211
18213
|
return "claude";
|
|
18212
18214
|
}
|
|
18213
18215
|
function isHeadroomSupportedAgent(agentId) {
|
|
18214
18216
|
const n = (agentId ?? "").toLowerCase().replace(/[_-]/g, "");
|
|
18215
|
-
return n.startsWith("claude") || n.startsWith("codex") || n.startsWith("copilot")
|
|
18217
|
+
return n.startsWith("claude") || n.startsWith("codex") || n.startsWith("copilot");
|
|
18216
18218
|
}
|
|
18217
18219
|
function headroomConfigPath() {
|
|
18218
18220
|
return path46.join(os33.homedir(), ".codeam", "headroom-config.json");
|
|
@@ -18382,7 +18384,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
|
|
|
18382
18384
|
detached: false
|
|
18383
18385
|
});
|
|
18384
18386
|
function currentCliVersion() {
|
|
18385
|
-
return true ? "2.
|
|
18387
|
+
return true ? "2.46.1" : null;
|
|
18386
18388
|
}
|
|
18387
18389
|
function runCmd(cmd, args2, timeoutMs) {
|
|
18388
18390
|
return new Promise((resolve7) => {
|
|
@@ -19741,28 +19743,22 @@ var REGISTRY = {
|
|
|
19741
19743
|
requiresAgentBinary: "codex"
|
|
19742
19744
|
};
|
|
19743
19745
|
},
|
|
19744
|
-
// Cursor
|
|
19745
|
-
// ACP adapter
|
|
19746
|
-
//
|
|
19747
|
-
//
|
|
19748
|
-
//
|
|
19749
|
-
// `fzx-cursor-acp`) use the current `@agentclientprotocol/sdk` but
|
|
19750
|
-
// are single-maintainer with no security track record we trust to
|
|
19751
|
-
// auto-bundle.
|
|
19746
|
+
// Cursor speaks ACP NATIVELY via `cursor-agent acp` ("Start the Cursor
|
|
19747
|
+
// Agent as an ACP server") — no npm adapter package needed, just the
|
|
19748
|
+
// user-installed `cursor-agent` binary. Same {@link AdapterSpec} shape as
|
|
19749
|
+
// gemini below. This is why we do NOT bundle the deprecated
|
|
19750
|
+
// `cursor-agent-acp@0.1.1` npm adapter (old `@zed-industries/...` SDK).
|
|
19752
19751
|
//
|
|
19753
|
-
//
|
|
19754
|
-
//
|
|
19755
|
-
//
|
|
19756
|
-
//
|
|
19757
|
-
//
|
|
19758
|
-
|
|
19759
|
-
|
|
19760
|
-
|
|
19761
|
-
|
|
19762
|
-
|
|
19763
|
-
// Until then `getAcpAdapter('cursor')` returns null and the dispatch
|
|
19764
|
-
// in start.ts runs cursor over the legacy PTY runtime — same
|
|
19765
|
-
// behaviour cursor users had before ACP was added.
|
|
19752
|
+
// Running cursor over ACP (not the legacy PTY runtime) is REQUIRED: the
|
|
19753
|
+
// ACP client spawns the adapter with `env: { ...process.env, ...extraEnv }`
|
|
19754
|
+
// so the provisioned `CURSOR_API_KEY` actually reaches cursor-agent — the
|
|
19755
|
+
// interactive PTY path left cursor unauthenticated. It also gives the typed
|
|
19756
|
+
// streaming (tool calls / subagents) the other ACP agents emit.
|
|
19757
|
+
cursor: () => ({
|
|
19758
|
+
command: "cursor-agent",
|
|
19759
|
+
args: ["acp"],
|
|
19760
|
+
requiresAgentBinary: "cursor-agent"
|
|
19761
|
+
}),
|
|
19766
19762
|
// Gemini speaks ACP natively via `gemini --acp` — no npm adapter
|
|
19767
19763
|
// package, just the user-installed `gemini` binary on PATH. Same
|
|
19768
19764
|
// {@link AdapterSpec} shape; the only difference is `command` is
|
|
@@ -29713,7 +29709,7 @@ function checkChokidar() {
|
|
|
29713
29709
|
}
|
|
29714
29710
|
async function doctor(args2 = []) {
|
|
29715
29711
|
const json = args2.includes("--json");
|
|
29716
|
-
const cliVersion = true ? "2.
|
|
29712
|
+
const cliVersion = true ? "2.46.1" : "0.0.0-dev";
|
|
29717
29713
|
const apiBase2 = resolveApiBaseUrl();
|
|
29718
29714
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
29719
29715
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -29912,7 +29908,7 @@ async function completion(args2) {
|
|
|
29912
29908
|
// src/commands/version.ts
|
|
29913
29909
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
29914
29910
|
function version2() {
|
|
29915
|
-
const v = true ? "2.
|
|
29911
|
+
const v = true ? "2.46.1" : "unknown";
|
|
29916
29912
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
29917
29913
|
}
|
|
29918
29914
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.46.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",
|