codeam-cli 2.75.11 → 2.75.12
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 +52 -14
- 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.11] — 2026-09-24
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Bound streaming-chunk snapshots under the API cap and coalesce big re-sends
|
|
12
|
+
|
|
7
13
|
## [2.75.10] — 2026-09-23
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -10509,7 +10509,7 @@ function readAnonId() {
|
|
|
10509
10509
|
}
|
|
10510
10510
|
function superProperties() {
|
|
10511
10511
|
return {
|
|
10512
|
-
cliVersion: true ? "2.75.
|
|
10512
|
+
cliVersion: true ? "2.75.12" : "0.0.0-dev",
|
|
10513
10513
|
nodeVersion: process.version,
|
|
10514
10514
|
platform: process.platform,
|
|
10515
10515
|
arch: process.arch,
|
|
@@ -10751,7 +10751,7 @@ var http = __toESM(require("http"));
|
|
|
10751
10751
|
// package.json
|
|
10752
10752
|
var package_default = {
|
|
10753
10753
|
name: "codeam-cli",
|
|
10754
|
-
version: "2.75.
|
|
10754
|
+
version: "2.75.12",
|
|
10755
10755
|
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.",
|
|
10756
10756
|
type: "commonjs",
|
|
10757
10757
|
main: "dist/index.js",
|
|
@@ -12081,7 +12081,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
12081
12081
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
12082
12082
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
12083
12083
|
// pair/reconnect). Older backends ignore the extra field.
|
|
12084
|
-
..."2.75.
|
|
12084
|
+
..."2.75.12" ? { ideVersion: "2.75.12" } : {}
|
|
12085
12085
|
};
|
|
12086
12086
|
try {
|
|
12087
12087
|
const res = await _postJson(`${API_BASE2}/api/plugin/heartbeat`, body);
|
|
@@ -18511,6 +18511,9 @@ function resolveHistoryDir2(_cwd, homeOverride) {
|
|
|
18511
18511
|
if (!import_node_fs3.default.existsSync(todayDir)) return null;
|
|
18512
18512
|
return todayDir;
|
|
18513
18513
|
}
|
|
18514
|
+
function isHeadlessOneShotMeta(meta) {
|
|
18515
|
+
return meta.source === "exec" || meta.originator === "codex_exec";
|
|
18516
|
+
}
|
|
18514
18517
|
function parseLine(line) {
|
|
18515
18518
|
try {
|
|
18516
18519
|
const parsed = JSON.parse(line);
|
|
@@ -18790,6 +18793,7 @@ function newestRolloutIdSince(sessionsRoot, resolvedCwd, floorMs) {
|
|
|
18790
18793
|
if (mtime < floorMs || mtime <= bestMtime) continue;
|
|
18791
18794
|
let metaCwd;
|
|
18792
18795
|
let metaId;
|
|
18796
|
+
let headlessOneShot = false;
|
|
18793
18797
|
try {
|
|
18794
18798
|
const raw = import_node_fs3.default.readFileSync(filePath, "utf8");
|
|
18795
18799
|
for (const line of raw.split("\n")) {
|
|
@@ -18800,13 +18804,14 @@ function newestRolloutIdSince(sessionsRoot, resolvedCwd, floorMs) {
|
|
|
18800
18804
|
const meta = rec.payload;
|
|
18801
18805
|
metaCwd = typeof meta?.cwd === "string" ? meta.cwd : void 0;
|
|
18802
18806
|
metaId = typeof meta?.id === "string" ? meta.id : void 0;
|
|
18807
|
+
headlessOneShot = meta !== void 0 && isHeadlessOneShotMeta(meta);
|
|
18803
18808
|
}
|
|
18804
18809
|
break;
|
|
18805
18810
|
}
|
|
18806
18811
|
} catch {
|
|
18807
18812
|
continue;
|
|
18808
18813
|
}
|
|
18809
|
-
if (!metaId || !metaCwd) continue;
|
|
18814
|
+
if (!metaId || !metaCwd || headlessOneShot) continue;
|
|
18810
18815
|
let resolvedMeta;
|
|
18811
18816
|
try {
|
|
18812
18817
|
resolvedMeta = import_node_fs3.default.realpathSync(metaCwd);
|
|
@@ -27496,6 +27501,26 @@ var emitPreviewEvent = (args2) => {
|
|
|
27496
27501
|
payload: { ...args2.payload ?? {}, missingServices: missing }
|
|
27497
27502
|
});
|
|
27498
27503
|
};
|
|
27504
|
+
var PREVIEW_DETECT_TIMEOUT_MS = 12e4;
|
|
27505
|
+
async function runDetectOneShot(generate, timeoutMs = PREVIEW_DETECT_TIMEOUT_MS) {
|
|
27506
|
+
let timer;
|
|
27507
|
+
const deadline = new Promise((resolve11) => {
|
|
27508
|
+
timer = setTimeout(() => resolve11({ raw: null, timedOut: true }), timeoutMs);
|
|
27509
|
+
timer.unref?.();
|
|
27510
|
+
});
|
|
27511
|
+
const oneShot = generate(PREVIEW_DETECT_PROMPT, { timeoutMs }).then(
|
|
27512
|
+
(raw) => ({ raw, timedOut: false }),
|
|
27513
|
+
(err) => {
|
|
27514
|
+
log.info("preview", `detect: generateOneShot threw: ${String(err)}`);
|
|
27515
|
+
return { raw: null, timedOut: false };
|
|
27516
|
+
}
|
|
27517
|
+
);
|
|
27518
|
+
try {
|
|
27519
|
+
return await Promise.race([oneShot, deadline]);
|
|
27520
|
+
} finally {
|
|
27521
|
+
if (timer) clearTimeout(timer);
|
|
27522
|
+
}
|
|
27523
|
+
}
|
|
27499
27524
|
var requestPreviewDetectH = (ctx) => {
|
|
27500
27525
|
if (!ctx.pluginAuthToken) {
|
|
27501
27526
|
log.info("preview", "no pluginAuthToken \u2014 skipping detect");
|
|
@@ -27516,6 +27541,7 @@ var requestPreviewDetectH = (ctx) => {
|
|
|
27516
27541
|
return;
|
|
27517
27542
|
}
|
|
27518
27543
|
const pluginAuthToken = ctx.pluginAuthToken;
|
|
27544
|
+
const generateOneShot = ctx.runtime.generateOneShot.bind(ctx.runtime);
|
|
27519
27545
|
void (async () => {
|
|
27520
27546
|
const fromFile = await readPreviewConfig(process.cwd());
|
|
27521
27547
|
if (fromFile) {
|
|
@@ -27537,11 +27563,22 @@ var requestPreviewDetectH = (ctx) => {
|
|
|
27537
27563
|
});
|
|
27538
27564
|
log.info("preview", "detect: invoking generateOneShot");
|
|
27539
27565
|
const startedAt = Date.now();
|
|
27540
|
-
const raw = await
|
|
27541
|
-
log.info("preview", `detect: generateOneShot threw: ${String(err)}`);
|
|
27542
|
-
return null;
|
|
27543
|
-
});
|
|
27566
|
+
const { raw, timedOut } = await runDetectOneShot(generateOneShot);
|
|
27544
27567
|
const tookMs = Date.now() - startedAt;
|
|
27568
|
+
if (timedOut) {
|
|
27569
|
+
log.info("preview", `detect: timed out after ${tookMs}ms \u2014 emitting preview_error`);
|
|
27570
|
+
emitPreviewEvent({
|
|
27571
|
+
sessionId: ctx.sessionId,
|
|
27572
|
+
pluginId: ctx.pluginId,
|
|
27573
|
+
pluginAuthToken,
|
|
27574
|
+
type: USER_EVENTS.PREVIEW_ERROR,
|
|
27575
|
+
payload: {
|
|
27576
|
+
stage: "detection",
|
|
27577
|
+
message: `Project detection timed out after ${Math.round(PREVIEW_DETECT_TIMEOUT_MS / 1e3)} s \u2014 the agent did not answer. Try again, or add a .codeam/preview.json override.`
|
|
27578
|
+
}
|
|
27579
|
+
});
|
|
27580
|
+
return;
|
|
27581
|
+
}
|
|
27545
27582
|
const detection = safeParseDetection(raw);
|
|
27546
27583
|
if (!detection) {
|
|
27547
27584
|
const failure = describeDetectionFailure(raw);
|
|
@@ -27622,11 +27659,12 @@ function prewarmPreviewDetection(runtime) {
|
|
|
27622
27659
|
if (previewPrewarmStarted) return;
|
|
27623
27660
|
previewPrewarmStarted = true;
|
|
27624
27661
|
if (typeof runtime.generateOneShot !== "function") return;
|
|
27662
|
+
const generateOneShot = runtime.generateOneShot.bind(runtime);
|
|
27625
27663
|
void (async () => {
|
|
27626
27664
|
try {
|
|
27627
27665
|
const cwd = process.cwd();
|
|
27628
27666
|
if (await readPreviewConfig(cwd)) return;
|
|
27629
|
-
const raw = await
|
|
27667
|
+
const { raw } = await runDetectOneShot(generateOneShot);
|
|
27630
27668
|
const detection = safeParseDetection(raw);
|
|
27631
27669
|
if (!detection) {
|
|
27632
27670
|
const failure = describeDetectionFailure(raw);
|
|
@@ -47114,7 +47152,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
47114
47152
|
if (process.env.NODE_ENV === "test") return;
|
|
47115
47153
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
47116
47154
|
if (process.env.CI) return;
|
|
47117
|
-
const current2 = true ? "2.75.
|
|
47155
|
+
const current2 = true ? "2.75.12" : null;
|
|
47118
47156
|
if (!current2) return;
|
|
47119
47157
|
const cache = readCache();
|
|
47120
47158
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -47131,7 +47169,7 @@ function checkForUpdates() {
|
|
|
47131
47169
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
47132
47170
|
if (process.env.CI) return;
|
|
47133
47171
|
if (!process.stdout.isTTY) return;
|
|
47134
|
-
const current2 = true ? "2.75.
|
|
47172
|
+
const current2 = true ? "2.75.12" : null;
|
|
47135
47173
|
if (!current2) return;
|
|
47136
47174
|
const cache = readCache();
|
|
47137
47175
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -47154,7 +47192,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
|
47154
47192
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
47155
47193
|
var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
|
|
47156
47194
|
function currentCliVersion() {
|
|
47157
|
-
return true ? "2.75.
|
|
47195
|
+
return true ? "2.75.12" : null;
|
|
47158
47196
|
}
|
|
47159
47197
|
async function installedVersion(deps) {
|
|
47160
47198
|
const ls = await deps.run(
|
|
@@ -48894,7 +48932,7 @@ function checkChokidar() {
|
|
|
48894
48932
|
}
|
|
48895
48933
|
async function doctor(args2 = []) {
|
|
48896
48934
|
const json = args2.includes("--json");
|
|
48897
|
-
const cliVersion = true ? "2.75.
|
|
48935
|
+
const cliVersion = true ? "2.75.12" : "0.0.0-dev";
|
|
48898
48936
|
const apiBase2 = resolveApiBaseUrl();
|
|
48899
48937
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
48900
48938
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -49418,7 +49456,7 @@ async function mcpWarm(argv = [], opts = {}) {
|
|
|
49418
49456
|
// src/commands/version.ts
|
|
49419
49457
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
49420
49458
|
function version2() {
|
|
49421
|
-
const v = true ? "2.75.
|
|
49459
|
+
const v = true ? "2.75.12" : "unknown";
|
|
49422
49460
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
49423
49461
|
}
|
|
49424
49462
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.75.
|
|
3
|
+
"version": "2.75.12",
|
|
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",
|