codeam-cli 2.75.30 → 2.75.31
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 +6 -0
- package/dist/index.js +32 -15
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ 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.75.30] — 2026-09-25
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Preview error log tail without terminal escape codes (#823)
|
|
12
|
+
|
|
7
13
|
## [2.75.29] — 2026-09-25
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -10516,7 +10516,7 @@ function readAnonId() {
|
|
|
10516
10516
|
}
|
|
10517
10517
|
function superProperties() {
|
|
10518
10518
|
return {
|
|
10519
|
-
cliVersion: true ? "2.75.
|
|
10519
|
+
cliVersion: true ? "2.75.31" : "0.0.0-dev",
|
|
10520
10520
|
nodeVersion: process.version,
|
|
10521
10521
|
platform: process.platform,
|
|
10522
10522
|
arch: process.arch,
|
|
@@ -10758,7 +10758,7 @@ var http = __toESM(require("http"));
|
|
|
10758
10758
|
// package.json
|
|
10759
10759
|
var package_default = {
|
|
10760
10760
|
name: "codeam-cli",
|
|
10761
|
-
version: "2.75.
|
|
10761
|
+
version: "2.75.31",
|
|
10762
10762
|
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.",
|
|
10763
10763
|
type: "commonjs",
|
|
10764
10764
|
main: "dist/index.js",
|
|
@@ -12088,7 +12088,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
12088
12088
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
12089
12089
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
12090
12090
|
// pair/reconnect). Older backends ignore the extra field.
|
|
12091
|
-
..."2.75.
|
|
12091
|
+
..."2.75.31" ? { ideVersion: "2.75.31" } : {}
|
|
12092
12092
|
};
|
|
12093
12093
|
try {
|
|
12094
12094
|
const res = await _postJson(`${API_BASE2}/api/plugin/heartbeat`, body);
|
|
@@ -23925,19 +23925,36 @@ function listScriptCandidates(root) {
|
|
|
23925
23925
|
}
|
|
23926
23926
|
|
|
23927
23927
|
// src/services/preview/prewarm-deps.ts
|
|
23928
|
+
var import_which2 = __toESM(require("which"));
|
|
23928
23929
|
var inFlight = null;
|
|
23929
23930
|
var PREWARM_INSTALL_TIMEOUT_MS = 5 * 6e4;
|
|
23930
23931
|
function prewarmNodeDeps(cwd) {
|
|
23931
23932
|
if (inFlight) return inFlight;
|
|
23932
23933
|
const missing = detectMissingNodeDeps(cwd);
|
|
23933
|
-
if (!missing
|
|
23934
|
+
if (!missing) return Promise.resolve();
|
|
23934
23935
|
log.info("preview", `prewarm: installing deps (${missing.cmd} ${missing.args.join(" ")})`);
|
|
23935
23936
|
const started = Date.now();
|
|
23936
|
-
inFlight =
|
|
23937
|
-
|
|
23938
|
-
|
|
23937
|
+
inFlight = (async () => {
|
|
23938
|
+
if (missing.cmd === "yarn") {
|
|
23939
|
+
const ensured = await ensureYarnInstalled({
|
|
23940
|
+
hasYarn: async () => Boolean(await (0, import_which2.default)("yarn", { nothrow: true })),
|
|
23941
|
+
installYarn: async () => {
|
|
23942
|
+
const r2 = await runSetupCommand("npm", ["install", "-g", "yarn"], cwd, void 0, {
|
|
23943
|
+
timeoutMs: PREWARM_INSTALL_TIMEOUT_MS
|
|
23944
|
+
});
|
|
23945
|
+
return { ok: r2.status === "ok", code: r2.code };
|
|
23946
|
+
}
|
|
23947
|
+
});
|
|
23948
|
+
if (!ensured.ok) {
|
|
23949
|
+
log.info("preview", `prewarm: yarn unavailable (exit ${ensured.code}) \u2014 Preview will retry`);
|
|
23950
|
+
return;
|
|
23951
|
+
}
|
|
23952
|
+
}
|
|
23953
|
+
const r = await runSetupCommand(missing.cmd, missing.args, cwd, void 0, {
|
|
23954
|
+
timeoutMs: PREWARM_INSTALL_TIMEOUT_MS
|
|
23955
|
+
});
|
|
23939
23956
|
log.info("preview", `prewarm: deps ${r.status} after ${Date.now() - started}ms`);
|
|
23940
|
-
}).catch((err) => {
|
|
23957
|
+
})().catch((err) => {
|
|
23941
23958
|
log.info("preview", `prewarm: deps install threw (${String(err)})`);
|
|
23942
23959
|
}).finally(() => {
|
|
23943
23960
|
inFlight = null;
|
|
@@ -24086,7 +24103,7 @@ function activePreviewSessionIds() {
|
|
|
24086
24103
|
var import_child_process20 = require("child_process");
|
|
24087
24104
|
var fs43 = __toESM(require("fs"));
|
|
24088
24105
|
var path51 = __toESM(require("path"));
|
|
24089
|
-
var
|
|
24106
|
+
var import_which3 = __toESM(require("which"));
|
|
24090
24107
|
|
|
24091
24108
|
// src/services/project-env/index.ts
|
|
24092
24109
|
var import_fs6 = require("fs");
|
|
@@ -25102,7 +25119,7 @@ async function provisionDeps(ctx) {
|
|
|
25102
25119
|
if (missingDeps) {
|
|
25103
25120
|
if (missingDeps.cmd === "yarn") {
|
|
25104
25121
|
const ensured = await ensureYarnInstalled({
|
|
25105
|
-
hasYarn: async () => Boolean(await (0,
|
|
25122
|
+
hasYarn: async () => Boolean(await (0, import_which3.default)("yarn", { nothrow: true })),
|
|
25106
25123
|
installYarn: async () => {
|
|
25107
25124
|
emitProgress("SETUP_RUN", "installing yarn (not found on PATH) \u2014 npm install -g yarn");
|
|
25108
25125
|
const r = await runSetupCommand(
|
|
@@ -48640,7 +48657,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
48640
48657
|
if (process.env.NODE_ENV === "test") return;
|
|
48641
48658
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
48642
48659
|
if (process.env.CI) return;
|
|
48643
|
-
const current2 = true ? "2.75.
|
|
48660
|
+
const current2 = true ? "2.75.31" : null;
|
|
48644
48661
|
if (!current2) return;
|
|
48645
48662
|
const cache = readCache();
|
|
48646
48663
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -48657,7 +48674,7 @@ function checkForUpdates() {
|
|
|
48657
48674
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
48658
48675
|
if (process.env.CI) return;
|
|
48659
48676
|
if (!process.stdout.isTTY) return;
|
|
48660
|
-
const current2 = true ? "2.75.
|
|
48677
|
+
const current2 = true ? "2.75.31" : null;
|
|
48661
48678
|
if (!current2) return;
|
|
48662
48679
|
const cache = readCache();
|
|
48663
48680
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -48680,7 +48697,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
|
48680
48697
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
48681
48698
|
var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
|
|
48682
48699
|
function currentCliVersion() {
|
|
48683
|
-
return true ? "2.75.
|
|
48700
|
+
return true ? "2.75.31" : null;
|
|
48684
48701
|
}
|
|
48685
48702
|
async function installedVersion(deps) {
|
|
48686
48703
|
const ls = await deps.run(
|
|
@@ -50645,7 +50662,7 @@ function checkChokidar() {
|
|
|
50645
50662
|
}
|
|
50646
50663
|
async function doctor(args2 = []) {
|
|
50647
50664
|
const json = args2.includes("--json");
|
|
50648
|
-
const cliVersion = true ? "2.75.
|
|
50665
|
+
const cliVersion = true ? "2.75.31" : "0.0.0-dev";
|
|
50649
50666
|
const apiBase2 = resolveApiBaseUrl();
|
|
50650
50667
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
50651
50668
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -51169,7 +51186,7 @@ async function mcpWarm(argv = [], opts = {}) {
|
|
|
51169
51186
|
// src/commands/version.ts
|
|
51170
51187
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
51171
51188
|
function version2() {
|
|
51172
|
-
const v = true ? "2.75.
|
|
51189
|
+
const v = true ? "2.75.31" : "unknown";
|
|
51173
51190
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
51174
51191
|
}
|
|
51175
51192
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.75.
|
|
3
|
+
"version": "2.75.31",
|
|
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",
|