codeam-cli 2.67.0 → 2.67.1
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 +10 -0
- package/dist/index.js +39 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ 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.67.0] — 2026-08-24
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Ask the backend for a named preview tunnel when the env has none
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **cli:** Cap how long a self-update restart can be deferred
|
|
16
|
+
|
|
7
17
|
## [2.66.1] — 2026-08-24
|
|
8
18
|
|
|
9
19
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -8081,7 +8081,7 @@ function readAnonId() {
|
|
|
8081
8081
|
}
|
|
8082
8082
|
function superProperties() {
|
|
8083
8083
|
return {
|
|
8084
|
-
cliVersion: true ? "2.67.
|
|
8084
|
+
cliVersion: true ? "2.67.1" : "0.0.0-dev",
|
|
8085
8085
|
nodeVersion: process.version,
|
|
8086
8086
|
platform: process.platform,
|
|
8087
8087
|
arch: process.arch,
|
|
@@ -8323,7 +8323,7 @@ var http = __toESM(require("http"));
|
|
|
8323
8323
|
// package.json
|
|
8324
8324
|
var package_default = {
|
|
8325
8325
|
name: "codeam-cli",
|
|
8326
|
-
version: "2.67.
|
|
8326
|
+
version: "2.67.1",
|
|
8327
8327
|
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.",
|
|
8328
8328
|
type: "commonjs",
|
|
8329
8329
|
main: "dist/index.js",
|
|
@@ -9855,7 +9855,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
9855
9855
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
9856
9856
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
9857
9857
|
// pair/reconnect). Older backends ignore the extra field.
|
|
9858
|
-
..."2.67.
|
|
9858
|
+
..."2.67.1" ? { ideVersion: "2.67.1" } : {}
|
|
9859
9859
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
9860
9860
|
}
|
|
9861
9861
|
/**
|
|
@@ -22080,7 +22080,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
22080
22080
|
if (process.env.NODE_ENV === "test") return;
|
|
22081
22081
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
22082
22082
|
if (process.env.CI) return;
|
|
22083
|
-
const current2 = true ? "2.67.
|
|
22083
|
+
const current2 = true ? "2.67.1" : null;
|
|
22084
22084
|
if (!current2) return;
|
|
22085
22085
|
const cache = readCache();
|
|
22086
22086
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -22097,7 +22097,7 @@ function checkForUpdates() {
|
|
|
22097
22097
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
22098
22098
|
if (process.env.CI) return;
|
|
22099
22099
|
if (!process.stdout.isTTY) return;
|
|
22100
|
-
const current2 = true ? "2.67.
|
|
22100
|
+
const current2 = true ? "2.67.1" : null;
|
|
22101
22101
|
if (!current2) return;
|
|
22102
22102
|
const cache = readCache();
|
|
22103
22103
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -22120,7 +22120,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
|
22120
22120
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
22121
22121
|
var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
|
|
22122
22122
|
function currentCliVersion() {
|
|
22123
|
-
return true ? "2.67.
|
|
22123
|
+
return true ? "2.67.1" : null;
|
|
22124
22124
|
}
|
|
22125
22125
|
async function installedVersion(deps) {
|
|
22126
22126
|
const ls = await deps.run(
|
|
@@ -37436,8 +37436,14 @@ var HOUSE_AGENT_LIMIT_RE = /HOUSE_AGENT_CEILING|CodeAgent Cloud[^\n]{0,60}(?:usa
|
|
|
37436
37436
|
function looksLikeHouseAgentLimit(text) {
|
|
37437
37437
|
return HOUSE_AGENT_LIMIT_RE.test(text);
|
|
37438
37438
|
}
|
|
37439
|
+
var LOCAL_PROXY_RE = /(?:127\.0\.0\.1|localhost|\[::1\]):\d+/i;
|
|
37440
|
+
var CONNECTION_ERROR_RE = /ECONNREFUSED|ECONNRESET|ETIMEDOUT|EHOSTUNREACH|socket hang up|fetch failed|network error|connection (?:refused|reset|closed)/i;
|
|
37441
|
+
function looksLikeLocalProxyUnavailable(text) {
|
|
37442
|
+
return LOCAL_PROXY_RE.test(text) && CONNECTION_ERROR_RE.test(text);
|
|
37443
|
+
}
|
|
37439
37444
|
function looksLikeAuthFailure(text) {
|
|
37440
37445
|
if (looksLikeHouseAgentLimit(text)) return false;
|
|
37446
|
+
if (looksLikeLocalProxyUnavailable(text)) return false;
|
|
37441
37447
|
return AUTH_FAILURE_RE.test(text);
|
|
37442
37448
|
}
|
|
37443
37449
|
function replyIsAuthFailure(finalText) {
|
|
@@ -37455,7 +37461,14 @@ function houseAgentLimitMessage(text) {
|
|
|
37455
37461
|
const canUpgrade = /upgrade to pro/i.test(text);
|
|
37456
37462
|
return "\u{1F4CA} **You\u2019ve reached your daily CodeAgent Cloud limit.**\n\nThe free CodeAgent Cloud agent has a daily usage ceiling that resets at midnight UTC. This is a usage limit, not a problem with your login \u2014 re-authenticating won\u2019t change it. " + (canUpgrade ? "To keep going now, upgrade to **Pro** for a higher ceiling, or connect your own agent (Claude, Codex, \u2026) in **Profile \u203A Agents** to run without this limit." : "To keep going now, connect your own agent (Claude, Codex, \u2026) in **Profile \u203A Agents** to run without this limit, or wait for the reset.");
|
|
37457
37463
|
}
|
|
37458
|
-
var AUTH_FAILURE_MESSAGE =
|
|
37464
|
+
var AUTH_FAILURE_MESSAGE = (
|
|
37465
|
+
// ⚠️ Do NOT name a status code here. This bubble fires for several
|
|
37466
|
+
// different failures, and the old hard-coded "(API 401)" told users the API
|
|
37467
|
+
// had answered 401 when it never had — it also sent a live investigation
|
|
37468
|
+
// hunting for 401s in proxy logs that were serving 200s throughout
|
|
37469
|
+
// (2026-08-24). Say what happened, not a number we did not see.
|
|
37470
|
+
"\u{1F512} **Authentication failed \u2014 your agent credentials are invalid or expired.**\n\nTap [Re-authenticate this agent](codeam://reauth) to renew your credentials in Profile \u203A Agents, then send your message again."
|
|
37471
|
+
);
|
|
37459
37472
|
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)";
|
|
37460
37473
|
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.";
|
|
37461
37474
|
var TURN_FAILURE_MESSAGE = "\u26A0\uFE0F **The agent hit an error and couldn\u2019t finish this turn.** Please send your message again.";
|
|
@@ -37553,6 +37566,10 @@ async function reportCredentialInvalid(opts, fetchImpl = fetch) {
|
|
|
37553
37566
|
pluginId: opts.pluginId,
|
|
37554
37567
|
...opts.reason ? { reason: opts.reason } : {}
|
|
37555
37568
|
});
|
|
37569
|
+
log.info(
|
|
37570
|
+
"acpRunner",
|
|
37571
|
+
`credential-invalid \u2192 reporting agent=${opts.agent} reason=${opts.reason ?? "unspecified"}`
|
|
37572
|
+
);
|
|
37556
37573
|
try {
|
|
37557
37574
|
const makeHeaders = (token) => ({
|
|
37558
37575
|
"Content-Type": "application/json",
|
|
@@ -37570,10 +37587,21 @@ async function reportCredentialInvalid(opts, fetchImpl = fetch) {
|
|
|
37570
37587
|
opts.pollSecret
|
|
37571
37588
|
);
|
|
37572
37589
|
if (freshToken !== null) {
|
|
37573
|
-
await fetchImpl(url2, {
|
|
37590
|
+
const retried = await fetchImpl(url2, {
|
|
37591
|
+
method: "POST",
|
|
37592
|
+
headers: makeHeaders(freshToken),
|
|
37593
|
+
body
|
|
37594
|
+
});
|
|
37595
|
+
log.info("acpRunner", `credential-invalid \u2190 ${retried.status} (after token refresh)`);
|
|
37596
|
+
return;
|
|
37574
37597
|
}
|
|
37575
37598
|
}
|
|
37576
|
-
|
|
37599
|
+
log.info("acpRunner", `credential-invalid \u2190 ${response.status}`);
|
|
37600
|
+
} catch (err) {
|
|
37601
|
+
log.warn(
|
|
37602
|
+
"acpRunner",
|
|
37603
|
+
`credential-invalid \u2192 failed: ${err instanceof Error ? err.message : String(err)}`
|
|
37604
|
+
);
|
|
37577
37605
|
}
|
|
37578
37606
|
}
|
|
37579
37607
|
async function postCredentialSync(opts, fetchImpl = fetch) {
|
|
@@ -45724,7 +45752,7 @@ function checkChokidar() {
|
|
|
45724
45752
|
}
|
|
45725
45753
|
async function doctor(args2 = []) {
|
|
45726
45754
|
const json = args2.includes("--json");
|
|
45727
|
-
const cliVersion = true ? "2.67.
|
|
45755
|
+
const cliVersion = true ? "2.67.1" : "0.0.0-dev";
|
|
45728
45756
|
const apiBase2 = resolveApiBaseUrl();
|
|
45729
45757
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
45730
45758
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -46115,7 +46143,7 @@ async function mcpRun(args2) {
|
|
|
46115
46143
|
// src/commands/version.ts
|
|
46116
46144
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
46117
46145
|
function version2() {
|
|
46118
|
-
const v = true ? "2.67.
|
|
46146
|
+
const v = true ? "2.67.1" : "unknown";
|
|
46119
46147
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
46120
46148
|
}
|
|
46121
46149
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.67.
|
|
3
|
+
"version": "2.67.1",
|
|
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",
|