codeam-cli 2.60.70 → 2.61.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 +23 -0
- package/dist/index.js +23 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,29 @@ 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.60.70] — 2026-07-15
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Fleet control plane — DockerRunner + fleet_* box handlers
|
|
12
|
+
- **box:** Production codeam-box rescue-fleet runtime image
|
|
13
|
+
|
|
14
|
+
### Chore
|
|
15
|
+
|
|
16
|
+
- **meta:** Register box/test commitlint scopes for the fleet work
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
|
|
20
|
+
- **fleet:** CLAUDE.md fleet CLI section
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **cli:** Deliver fleet box enroll token via env passthrough, not docker argv
|
|
25
|
+
|
|
26
|
+
### Tests
|
|
27
|
+
|
|
28
|
+
- **test:** Real-Docker integration gate for the fleet control plane
|
|
29
|
+
|
|
7
30
|
## [2.60.69] — 2026-07-15
|
|
8
31
|
|
|
9
32
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -5970,7 +5970,7 @@ function readAnonId() {
|
|
|
5970
5970
|
}
|
|
5971
5971
|
function superProperties() {
|
|
5972
5972
|
return {
|
|
5973
|
-
cliVersion: true ? "2.
|
|
5973
|
+
cliVersion: true ? "2.61.0" : "0.0.0-dev",
|
|
5974
5974
|
nodeVersion: process.version,
|
|
5975
5975
|
platform: process.platform,
|
|
5976
5976
|
arch: process.arch,
|
|
@@ -6151,7 +6151,7 @@ var os4 = __toESM(require("os"));
|
|
|
6151
6151
|
// package.json
|
|
6152
6152
|
var package_default = {
|
|
6153
6153
|
name: "codeam-cli",
|
|
6154
|
-
version: "2.
|
|
6154
|
+
version: "2.61.0",
|
|
6155
6155
|
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.",
|
|
6156
6156
|
type: "commonjs",
|
|
6157
6157
|
main: "dist/index.js",
|
|
@@ -7294,7 +7294,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
7294
7294
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
7295
7295
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
7296
7296
|
// pair/reconnect). Older backends ignore the extra field.
|
|
7297
|
-
..."2.
|
|
7297
|
+
..."2.61.0" ? { ideVersion: "2.61.0" } : {}
|
|
7298
7298
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
7299
7299
|
}
|
|
7300
7300
|
/**
|
|
@@ -16494,10 +16494,16 @@ async function postJson(pathname, body) {
|
|
|
16494
16494
|
}
|
|
16495
16495
|
return json.data;
|
|
16496
16496
|
}
|
|
16497
|
+
function resolveHostLabel(label) {
|
|
16498
|
+
const explicit = label?.trim();
|
|
16499
|
+
const envLabel = process.env.CODEAM_HOST_LABEL?.trim();
|
|
16500
|
+
const resolved = explicit || envLabel || os30.hostname();
|
|
16501
|
+
return resolved.slice(0, 80);
|
|
16502
|
+
}
|
|
16497
16503
|
async function redeemEnrollToken(token, label) {
|
|
16498
16504
|
const data = await postJson("/api/self-hosted/redeem", {
|
|
16499
16505
|
token,
|
|
16500
|
-
|
|
16506
|
+
label: resolveHostLabel(label),
|
|
16501
16507
|
osInfo: collectOsInfo()
|
|
16502
16508
|
});
|
|
16503
16509
|
return {
|
|
@@ -17871,7 +17877,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17871
17877
|
if (process.env.NODE_ENV === "test") return;
|
|
17872
17878
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17873
17879
|
if (process.env.CI) return;
|
|
17874
|
-
const current = true ? "2.
|
|
17880
|
+
const current = true ? "2.61.0" : null;
|
|
17875
17881
|
if (!current) return;
|
|
17876
17882
|
const cache = readCache();
|
|
17877
17883
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17888,7 +17894,7 @@ function checkForUpdates() {
|
|
|
17888
17894
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17889
17895
|
if (process.env.CI) return;
|
|
17890
17896
|
if (!process.stdout.isTTY) return;
|
|
17891
|
-
const current = true ? "2.
|
|
17897
|
+
const current = true ? "2.61.0" : null;
|
|
17892
17898
|
if (!current) return;
|
|
17893
17899
|
const cache = readCache();
|
|
17894
17900
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17908,7 +17914,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17908
17914
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17909
17915
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17910
17916
|
function currentCliVersion() {
|
|
17911
|
-
return true ? "2.
|
|
17917
|
+
return true ? "2.61.0" : null;
|
|
17912
17918
|
}
|
|
17913
17919
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17914
17920
|
return new Promise((resolve7) => {
|
|
@@ -18581,6 +18587,12 @@ var HostAgentSupervisor = class {
|
|
|
18581
18587
|
"CODEAM_ENROLL_TOKEN",
|
|
18582
18588
|
"-e",
|
|
18583
18589
|
`CODEAM_API_URL=${payload.apiOrigin}`,
|
|
18590
|
+
// User-facing label for the rescued box's "My Servers" card. Not a
|
|
18591
|
+
// secret → plain `-e KEY=value`. The box's host-agent reads it at
|
|
18592
|
+
// redeem (resolveHostLabel) so a rescued user sees "CodeAgent Box",
|
|
18593
|
+
// not the generic "my-server" or the ugly container cuid.
|
|
18594
|
+
"-e",
|
|
18595
|
+
"CODEAM_HOST_LABEL=CodeAgent Box",
|
|
18584
18596
|
resolveFleetBoxImage()
|
|
18585
18597
|
];
|
|
18586
18598
|
const res = await this.docker.run(args2, {
|
|
@@ -19836,8 +19848,8 @@ function isJsInstallCommand(cmd, args2) {
|
|
|
19836
19848
|
|
|
19837
19849
|
// src/services/preview/tunnel-bringup.ts
|
|
19838
19850
|
var TUNNEL_REGISTERED_RE = /Registered tunnel connection/i;
|
|
19839
|
-
async function awaitTunnelRegistered(candidate,
|
|
19840
|
-
let url =
|
|
19851
|
+
async function awaitTunnelRegistered(candidate, hostname4, deadlineMs) {
|
|
19852
|
+
let url = hostname4 ? `https://${hostname4}` : null;
|
|
19841
19853
|
let registered = false;
|
|
19842
19854
|
if (candidate.exitCode != null) {
|
|
19843
19855
|
return { kind: "exited", sawUrl: url != null, code: candidate.exitCode };
|
|
@@ -35569,7 +35581,7 @@ function checkChokidar() {
|
|
|
35569
35581
|
}
|
|
35570
35582
|
async function doctor(args2 = []) {
|
|
35571
35583
|
const json = args2.includes("--json");
|
|
35572
|
-
const cliVersion = true ? "2.
|
|
35584
|
+
const cliVersion = true ? "2.61.0" : "0.0.0-dev";
|
|
35573
35585
|
const apiBase2 = resolveApiBaseUrl();
|
|
35574
35586
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
35575
35587
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -36080,7 +36092,7 @@ async function mcpRun(args2) {
|
|
|
36080
36092
|
// src/commands/version.ts
|
|
36081
36093
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
36082
36094
|
function version2() {
|
|
36083
|
-
const v = true ? "2.
|
|
36095
|
+
const v = true ? "2.61.0" : "unknown";
|
|
36084
36096
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
36085
36097
|
}
|
|
36086
36098
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.61.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",
|