codeam-cli 2.39.26 → 2.39.28
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 +16 -0
- package/dist/index.js +62 -16
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ 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.39.27] — 2026-06-17
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Run the managed house agent on self-hosted host deploys (#330) (#353)
|
|
12
|
+
|
|
13
|
+
### Chore
|
|
14
|
+
|
|
15
|
+
- **deps:** Bump ACP adapters + resync lockfile (supersedes #324, #325) (#352)
|
|
16
|
+
|
|
17
|
+
## [2.39.26] — 2026-06-17
|
|
18
|
+
|
|
19
|
+
### Documentation
|
|
20
|
+
|
|
21
|
+
- **cli:** Document the self-hosted execution plane in the npm README (#351)
|
|
22
|
+
|
|
7
23
|
## [2.39.25] — 2026-06-17
|
|
8
24
|
|
|
9
25
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
498
498
|
// package.json
|
|
499
499
|
var package_default = {
|
|
500
500
|
name: "codeam-cli",
|
|
501
|
-
version: "2.39.
|
|
501
|
+
version: "2.39.28",
|
|
502
502
|
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.",
|
|
503
503
|
type: "commonjs",
|
|
504
504
|
main: "dist/index.js",
|
|
@@ -568,8 +568,8 @@ var package_default = {
|
|
|
568
568
|
node: ">=20.0.0"
|
|
569
569
|
},
|
|
570
570
|
dependencies: {
|
|
571
|
-
"@agentclientprotocol/claude-agent-acp": "^0.
|
|
572
|
-
"@agentclientprotocol/codex-acp": "^0.0.
|
|
571
|
+
"@agentclientprotocol/claude-agent-acp": "^0.47.0",
|
|
572
|
+
"@agentclientprotocol/codex-acp": "^0.0.46",
|
|
573
573
|
"@agentclientprotocol/sdk": "^0.25.0",
|
|
574
574
|
"@clack/prompts": "^1.2.0",
|
|
575
575
|
chokidar: "^3.6.0",
|
|
@@ -5908,7 +5908,7 @@ function readAnonId() {
|
|
|
5908
5908
|
}
|
|
5909
5909
|
function superProperties() {
|
|
5910
5910
|
return {
|
|
5911
|
-
cliVersion: true ? "2.39.
|
|
5911
|
+
cliVersion: true ? "2.39.28" : "0.0.0-dev",
|
|
5912
5912
|
nodeVersion: process.version,
|
|
5913
5913
|
platform: process.platform,
|
|
5914
5914
|
arch: process.arch,
|
|
@@ -15279,6 +15279,11 @@ var startCommandSchema = import_zod.z.object({
|
|
|
15279
15279
|
query: import_zod.z.string().max(256).optional(),
|
|
15280
15280
|
message: import_zod.z.string().max(8e3).optional(),
|
|
15281
15281
|
paths: import_zod.z.array(import_zod.z.string().max(4096)).optional(),
|
|
15282
|
+
// `show_install_command` — backend pushes the self-hosted install
|
|
15283
|
+
// one-liner the user copies onto their own box. DISPLAY-ONLY: the
|
|
15284
|
+
// CLI prints it to the terminal and never executes it. Bounded to
|
|
15285
|
+
// 8192 chars so a malformed payload can't flood the terminal.
|
|
15286
|
+
command: import_zod.z.string().min(1).max(8192).optional(),
|
|
15282
15287
|
side: import_zod.z.enum(["ours", "theirs"]).optional(),
|
|
15283
15288
|
limit: import_zod.z.number().int().min(1).max(500).optional(),
|
|
15284
15289
|
// search_files options. `query` is the haystack/needle string,
|
|
@@ -18450,6 +18455,18 @@ var shutdownSession = async (ctx, cmd) => {
|
|
|
18450
18455
|
ctx.relay.stop();
|
|
18451
18456
|
process.exit(0);
|
|
18452
18457
|
};
|
|
18458
|
+
var showInstallCommand = async (ctx, cmd, parsed) => {
|
|
18459
|
+
const command2 = parsed.command;
|
|
18460
|
+
if (!command2) {
|
|
18461
|
+
await ctx.relay.sendResult(cmd.id, "failed", { error: "Missing command" });
|
|
18462
|
+
return;
|
|
18463
|
+
}
|
|
18464
|
+
showInfo("CodeAgent \u2014 self-hosted install. Run this on your box:");
|
|
18465
|
+
showInfo("");
|
|
18466
|
+
showInfo(` ${command2}`);
|
|
18467
|
+
showInfo("");
|
|
18468
|
+
await ctx.relay.sendResult(cmd.id, "completed", {});
|
|
18469
|
+
};
|
|
18453
18470
|
var readFile4 = async (ctx, cmd, parsed) => {
|
|
18454
18471
|
if (!parsed.path) {
|
|
18455
18472
|
await ctx.relay.sendResult(cmd.id, "failed", { error: "Missing path" });
|
|
@@ -19273,6 +19290,7 @@ var handlers = {
|
|
|
19273
19290
|
set_keep_alive: setKeepAlive,
|
|
19274
19291
|
session_terminated: sessionTerminated,
|
|
19275
19292
|
shutdown_session: shutdownSession,
|
|
19293
|
+
show_install_command: showInstallCommand,
|
|
19276
19294
|
read_file: readFile4,
|
|
19277
19295
|
write_file: writeFile3,
|
|
19278
19296
|
list_files: listFiles,
|
|
@@ -26442,8 +26460,18 @@ function provisionAgentCredentials(publicAgentId, auth, homeDir2 = os34.homedir(
|
|
|
26442
26460
|
|
|
26443
26461
|
// src/commands/host-agent.ts
|
|
26444
26462
|
var HEARTBEAT_INTERVAL_MS = 2e4;
|
|
26463
|
+
function isHouseProxy(v) {
|
|
26464
|
+
if (typeof v !== "object" || v === null) return false;
|
|
26465
|
+
const o = v;
|
|
26466
|
+
return typeof o.baseUrl === "string" && typeof o.token === "string" && typeof o.agentKind === "string";
|
|
26467
|
+
}
|
|
26445
26468
|
function isDeployPayload(p2) {
|
|
26446
|
-
|
|
26469
|
+
if (typeof p2.deployId !== "string" || typeof p2.repoOrPath !== "string" || typeof p2.agentId !== "string" || typeof p2.autoPairToken !== "string") {
|
|
26470
|
+
return false;
|
|
26471
|
+
}
|
|
26472
|
+
const hasHouse = isHouseProxy(p2.houseProxy);
|
|
26473
|
+
const hasSealed = typeof p2.sealedAgentAuth === "string";
|
|
26474
|
+
return hasHouse || hasSealed;
|
|
26447
26475
|
}
|
|
26448
26476
|
function isStopPayload(p2) {
|
|
26449
26477
|
return typeof p2.sessionId === "string";
|
|
@@ -26456,7 +26484,7 @@ var CONTROL_AGENT_META = {
|
|
|
26456
26484
|
supportedAuthKinds: ["oauth_token"],
|
|
26457
26485
|
preferredAuthKind: "oauth_token"
|
|
26458
26486
|
};
|
|
26459
|
-
var defaultSpawner = (env, cwd) => (0, import_node_child_process13.spawn)(process.execPath, [process.argv[1], "pair-auto"], {
|
|
26487
|
+
var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process13.spawn)(process.execPath, [process.argv[1], "pair-auto", ...args2], {
|
|
26460
26488
|
cwd,
|
|
26461
26489
|
env: { ...process.env, ...env },
|
|
26462
26490
|
stdio: "ignore",
|
|
@@ -26556,13 +26584,31 @@ var HostAgentSupervisor = class {
|
|
|
26556
26584
|
`deploy id=${payload.deployId.slice(0, 8)} agent=${payload.agentId} target=${payload.repoOrPath}`
|
|
26557
26585
|
);
|
|
26558
26586
|
const cwd = await prepareWorkspace(payload.repoOrPath, payload.deployId);
|
|
26559
|
-
|
|
26560
|
-
|
|
26561
|
-
|
|
26562
|
-
|
|
26563
|
-
|
|
26564
|
-
|
|
26565
|
-
|
|
26587
|
+
let childEnv;
|
|
26588
|
+
let extraArgs = [];
|
|
26589
|
+
if (payload.houseProxy) {
|
|
26590
|
+
const { baseUrl, token, agentKind } = payload.houseProxy;
|
|
26591
|
+
childEnv = {
|
|
26592
|
+
ANTHROPIC_BASE_URL: baseUrl,
|
|
26593
|
+
ANTHROPIC_AUTH_TOKEN: token,
|
|
26594
|
+
ANTHROPIC_MODEL: "MiniMax-M3",
|
|
26595
|
+
ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M3",
|
|
26596
|
+
ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M3",
|
|
26597
|
+
ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M3",
|
|
26598
|
+
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "512000",
|
|
26599
|
+
API_TIMEOUT_MS: "3000000",
|
|
26600
|
+
CODEAM_AUTO_TOKEN: payload.autoPairToken
|
|
26601
|
+
};
|
|
26602
|
+
extraArgs = [`--agent=${agentKind || "claude"}`];
|
|
26603
|
+
} else {
|
|
26604
|
+
const auth = await this.resolveAgentAuth(this.identity, payload.sealedAgentAuth);
|
|
26605
|
+
const credEnv = provisionAgentCredentials(payload.agentId, auth, void 0);
|
|
26606
|
+
childEnv = {
|
|
26607
|
+
...credEnv,
|
|
26608
|
+
CODEAM_AUTO_TOKEN: payload.autoPairToken
|
|
26609
|
+
};
|
|
26610
|
+
}
|
|
26611
|
+
const proc = this.spawnChild(childEnv, cwd, extraArgs);
|
|
26566
26612
|
const child = { deployId: payload.deployId, sessionId: payload.deployId, proc };
|
|
26567
26613
|
this.children.set(payload.deployId, child);
|
|
26568
26614
|
proc.once("exit", () => {
|
|
@@ -26794,7 +26840,7 @@ function checkChokidar() {
|
|
|
26794
26840
|
}
|
|
26795
26841
|
async function doctor(args2 = []) {
|
|
26796
26842
|
const json = args2.includes("--json");
|
|
26797
|
-
const cliVersion = true ? "2.39.
|
|
26843
|
+
const cliVersion = true ? "2.39.28" : "0.0.0-dev";
|
|
26798
26844
|
const apiBase2 = resolveApiBaseUrl();
|
|
26799
26845
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
26800
26846
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -26993,7 +27039,7 @@ async function completion(args2) {
|
|
|
26993
27039
|
// src/commands/version.ts
|
|
26994
27040
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
26995
27041
|
function version2() {
|
|
26996
|
-
const v = true ? "2.39.
|
|
27042
|
+
const v = true ? "2.39.28" : "unknown";
|
|
26997
27043
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
26998
27044
|
}
|
|
26999
27045
|
|
|
@@ -27279,7 +27325,7 @@ function checkForUpdates() {
|
|
|
27279
27325
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
27280
27326
|
if (process.env.CI) return;
|
|
27281
27327
|
if (!process.stdout.isTTY) return;
|
|
27282
|
-
const current = true ? "2.39.
|
|
27328
|
+
const current = true ? "2.39.28" : null;
|
|
27283
27329
|
if (!current) return;
|
|
27284
27330
|
const cache = readCache();
|
|
27285
27331
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.39.
|
|
3
|
+
"version": "2.39.28",
|
|
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",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"node": ">=20.0.0"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@agentclientprotocol/claude-agent-acp": "^0.
|
|
74
|
-
"@agentclientprotocol/codex-acp": "^0.0.
|
|
73
|
+
"@agentclientprotocol/claude-agent-acp": "^0.47.0",
|
|
74
|
+
"@agentclientprotocol/codex-acp": "^0.0.46",
|
|
75
75
|
"@agentclientprotocol/sdk": "^0.25.0",
|
|
76
76
|
"@clack/prompts": "^1.2.0",
|
|
77
77
|
"chokidar": "^3.6.0",
|