codeam-cli 2.53.1 → 2.53.2
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 +31 -16
- 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.53.1] — 2026-07-06
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Gate ACP adapter spawn on its JS module graph, not just its binary
|
|
12
|
+
|
|
7
13
|
## [2.53.0] — 2026-07-06
|
|
8
14
|
|
|
9
15
|
### 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.53.
|
|
5400
|
+
cliVersion: true ? "2.53.2" : "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.53.
|
|
5581
|
+
version: "2.53.2",
|
|
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",
|
|
@@ -6543,7 +6543,7 @@ var CommandRelayService = class {
|
|
|
6543
6543
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
6544
6544
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
6545
6545
|
// pair/reconnect). Older backends ignore the extra field.
|
|
6546
|
-
..."2.53.
|
|
6546
|
+
..."2.53.2" ? { ideVersion: "2.53.2" } : {}
|
|
6547
6547
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
6548
6548
|
}
|
|
6549
6549
|
/**
|
|
@@ -15023,7 +15023,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
15023
15023
|
if (process.env.NODE_ENV === "test") return;
|
|
15024
15024
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
15025
15025
|
if (process.env.CI) return;
|
|
15026
|
-
const current = true ? "2.53.
|
|
15026
|
+
const current = true ? "2.53.2" : null;
|
|
15027
15027
|
if (!current) return;
|
|
15028
15028
|
const cache = readCache();
|
|
15029
15029
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -15040,7 +15040,7 @@ function checkForUpdates() {
|
|
|
15040
15040
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
15041
15041
|
if (process.env.CI) return;
|
|
15042
15042
|
if (!process.stdout.isTTY) return;
|
|
15043
|
-
const current = true ? "2.53.
|
|
15043
|
+
const current = true ? "2.53.2" : null;
|
|
15044
15044
|
if (!current) return;
|
|
15045
15045
|
const cache = readCache();
|
|
15046
15046
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -15742,7 +15742,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process15.s
|
|
|
15742
15742
|
detached: false
|
|
15743
15743
|
});
|
|
15744
15744
|
function currentCliVersion() {
|
|
15745
|
-
return true ? "2.53.
|
|
15745
|
+
return true ? "2.53.2" : null;
|
|
15746
15746
|
}
|
|
15747
15747
|
function runCmd(cmd, args2, timeoutMs) {
|
|
15748
15748
|
return new Promise((resolve7) => {
|
|
@@ -16465,7 +16465,13 @@ async function configureHeadroom(action, ctx, deps) {
|
|
|
16465
16465
|
return { enabled: false };
|
|
16466
16466
|
}
|
|
16467
16467
|
deps.persist({ enabled: true, agent: kind, ingestUrl: ctx.savingsIngestUrl });
|
|
16468
|
-
|
|
16468
|
+
if (ctx.pluginAuthToken) {
|
|
16469
|
+
deps.startReporter({
|
|
16470
|
+
agent: kind,
|
|
16471
|
+
ingestUrl: ctx.savingsIngestUrl,
|
|
16472
|
+
pluginAuthToken: ctx.pluginAuthToken
|
|
16473
|
+
});
|
|
16474
|
+
}
|
|
16469
16475
|
deps.emit({ type: "headroom_status", state: "enabled" });
|
|
16470
16476
|
return { enabled: true };
|
|
16471
16477
|
}
|
|
@@ -26726,6 +26732,7 @@ function replyIsCursorUpgradeRequired(finalText) {
|
|
|
26726
26732
|
return t2.includes("upgrade your plan to continue") || t2.includes("upgrade your plan") && t2.includes("continue");
|
|
26727
26733
|
}
|
|
26728
26734
|
var CURSOR_UPGRADE_MESSAGE = "\u26A1 **Cursor needs a paid plan to run the agent.**\n\nThe headless Cursor Agent requires Cursor **Pro** \u2014 your Free plan\u2019s included usage does NOT cover Agent runs, even with quota left. This is your Cursor account (not CodeAgent). Upgrade, then send your message again:\n\n[Upgrade to Cursor Pro \u2192](https://cursor.com/dashboard)";
|
|
26735
|
+
var ONE_M_CREDITS_MESSAGE = "\u{1F504} **Reconnect your Claude subscription to continue.**\n\nClaude requested 1M-context but your account doesn\u2019t have the usage credits for it on this credential. Reconnecting refreshes your subscription so the agent can keep going \u2014 disabling 1M context won\u2019t fix a credits gate.\n\nTap [Reconnect this agent](codeam://reauth) to reconnect your Claude subscription in Profile \u203A Agents, then send your message again.";
|
|
26729
26736
|
var TURN_FAILURE_MESSAGE = "\u26A0\uFE0F **The agent hit an error and couldn\u2019t finish this turn.** Please send your message again.";
|
|
26730
26737
|
var ACP_QUICK_REPLIES = ["Continue", "Yes, go ahead", "Explain"];
|
|
26731
26738
|
var PROVIDER_OUTAGE_RE = /overloaded_error|\boverloaded\b|service[ _]unavailable|temporarily[ _]unavailable|(?:api error|http|status)[:\s]+(?:529|503|502|504)\b|\b(?:529|503|502|504)\b[^\n]{0,40}(?:overload|unavailable|gateway|upstream|server error)|bad gateway|gateway time-?out|upstream (?:error|connect|timeout)/i;
|
|
@@ -26825,6 +26832,9 @@ function failureBubble(opts) {
|
|
|
26825
26832
|
if (looksLikeAuthFailure(opts.detail) || looksLikeAuthFailure(opts.recentStderr)) {
|
|
26826
26833
|
return AUTH_FAILURE_MESSAGE;
|
|
26827
26834
|
}
|
|
26835
|
+
if (looksLike1mContextCreditsError(opts.detail) || looksLike1mContextCreditsError(opts.recentStderr)) {
|
|
26836
|
+
return ONE_M_CREDITS_MESSAGE;
|
|
26837
|
+
}
|
|
26828
26838
|
const budgetHaystack = `${opts.detail}
|
|
26829
26839
|
${opts.recentStderr}`;
|
|
26830
26840
|
if (looksLikeBudgetExceeded(budgetHaystack)) {
|
|
@@ -27312,7 +27322,17 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
|
|
|
27312
27322
|
log.info("acpRunner", `start_task \u2190 auth-failure-in-reply id=${cmd.id.slice(0, 8)}`);
|
|
27313
27323
|
await relay.sendResult(cmd.id, "failed", { error: "agent reply reported auth failure" });
|
|
27314
27324
|
} else if (shouldOfferOneMRecovery({ detail: "", recentStderr: recentStderr.join("\n"), finalText })) {
|
|
27315
|
-
await
|
|
27325
|
+
await streaming.closeWithBubble(ONE_M_CREDITS_MESSAGE);
|
|
27326
|
+
history.appendAgentReply(ONE_M_CREDITS_MESSAGE);
|
|
27327
|
+
void history.flush();
|
|
27328
|
+
turnFiles.flushTurn().catch((err) => {
|
|
27329
|
+
log.warn("acpRunner", `turnFiles.flushTurn failed: ${describeError(err)}`);
|
|
27330
|
+
});
|
|
27331
|
+
void reportCredentialInvalid(opts);
|
|
27332
|
+
log.info("acpRunner", `start_task \u2190 1m-credits-reconnect id=${cmd.id.slice(0, 8)}`);
|
|
27333
|
+
await relay.sendResult(cmd.id, "failed", {
|
|
27334
|
+
error: "agent reply reported 1M-context usage-credits gate"
|
|
27335
|
+
});
|
|
27316
27336
|
} else {
|
|
27317
27337
|
await streaming.closeTurnWithInteractiveDetection();
|
|
27318
27338
|
const replyLine = formatAgentReplyLine(finalText);
|
|
@@ -27355,11 +27375,6 @@ ${recentStderr.join("\n")}`)
|
|
|
27355
27375
|
${recentStderr.join("\n")}`);
|
|
27356
27376
|
return;
|
|
27357
27377
|
}
|
|
27358
|
-
if (shouldOfferOneMRecovery({ detail, recentStderr: recentStderr.join("\n"), finalText: "" })) {
|
|
27359
|
-
await streaming.closeAll();
|
|
27360
|
-
await oneMRecovery.offer(cmd.id, blocks);
|
|
27361
|
-
return;
|
|
27362
|
-
}
|
|
27363
27378
|
const bubble = failureBubble({
|
|
27364
27379
|
detail,
|
|
27365
27380
|
recentStderr: recentStderr.join("\n"),
|
|
@@ -27373,7 +27388,7 @@ ${recentStderr.join("\n")}`);
|
|
|
27373
27388
|
} else {
|
|
27374
27389
|
await streaming.closeAll();
|
|
27375
27390
|
}
|
|
27376
|
-
if (bubble === AUTH_FAILURE_MESSAGE) {
|
|
27391
|
+
if (bubble === AUTH_FAILURE_MESSAGE || bubble === ONE_M_CREDITS_MESSAGE) {
|
|
27377
27392
|
void reportCredentialInvalid(opts);
|
|
27378
27393
|
}
|
|
27379
27394
|
await relay.sendResult(cmd.id, "failed", { error: detail });
|
|
@@ -31609,7 +31624,7 @@ function checkChokidar() {
|
|
|
31609
31624
|
}
|
|
31610
31625
|
async function doctor(args2 = []) {
|
|
31611
31626
|
const json = args2.includes("--json");
|
|
31612
|
-
const cliVersion = true ? "2.53.
|
|
31627
|
+
const cliVersion = true ? "2.53.2" : "0.0.0-dev";
|
|
31613
31628
|
const apiBase2 = resolveApiBaseUrl();
|
|
31614
31629
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
31615
31630
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -31808,7 +31823,7 @@ async function completion(args2) {
|
|
|
31808
31823
|
// src/commands/version.ts
|
|
31809
31824
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
31810
31825
|
function version2() {
|
|
31811
|
-
const v = true ? "2.53.
|
|
31826
|
+
const v = true ? "2.53.2" : "unknown";
|
|
31812
31827
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
31813
31828
|
}
|
|
31814
31829
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.53.
|
|
3
|
+
"version": "2.53.2",
|
|
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",
|