codeam-cli 2.75.34 → 2.75.35
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 +41 -10
- 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.34] — 2026-09-26
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Host restart resumes a session saved without cwd by its session id (#832)
|
|
12
|
+
|
|
7
13
|
## [2.75.33] — 2026-09-26
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -1135,12 +1135,25 @@ var PUBLIC_TO_INTERNAL = {
|
|
|
1135
1135
|
"managed-codex": "claude",
|
|
1136
1136
|
"managed-claude": "claude"
|
|
1137
1137
|
};
|
|
1138
|
+
var INTERNAL_TO_PUBLIC = {
|
|
1139
|
+
claude: "claude_code",
|
|
1140
|
+
codex: "codex",
|
|
1141
|
+
cursor: "cursor",
|
|
1142
|
+
aider: "aider",
|
|
1143
|
+
coderabbit: "coderabbit",
|
|
1144
|
+
gemini: "gemini",
|
|
1145
|
+
kimi: "kimi",
|
|
1146
|
+
opencode: "opencode"
|
|
1147
|
+
};
|
|
1138
1148
|
function isPublicToInternalKey(v) {
|
|
1139
1149
|
return Object.prototype.hasOwnProperty.call(PUBLIC_TO_INTERNAL, v);
|
|
1140
1150
|
}
|
|
1141
1151
|
function publicToInternal(publicId) {
|
|
1142
1152
|
return isPublicToInternalKey(publicId) ? PUBLIC_TO_INTERNAL[publicId] : null;
|
|
1143
1153
|
}
|
|
1154
|
+
function internalToPublic(internal) {
|
|
1155
|
+
return INTERNAL_TO_PUBLIC[internal] ?? null;
|
|
1156
|
+
}
|
|
1144
1157
|
var TERMINAL_AGENT_PREFIX = "__terminal__:";
|
|
1145
1158
|
var AGENT_ID_ALIASES = {
|
|
1146
1159
|
claude_code: "claude",
|
|
@@ -10516,7 +10529,7 @@ function readAnonId() {
|
|
|
10516
10529
|
}
|
|
10517
10530
|
function superProperties() {
|
|
10518
10531
|
return {
|
|
10519
|
-
cliVersion: true ? "2.75.
|
|
10532
|
+
cliVersion: true ? "2.75.35" : "0.0.0-dev",
|
|
10520
10533
|
nodeVersion: process.version,
|
|
10521
10534
|
platform: process.platform,
|
|
10522
10535
|
arch: process.arch,
|
|
@@ -10758,7 +10771,7 @@ var http = __toESM(require("http"));
|
|
|
10758
10771
|
// package.json
|
|
10759
10772
|
var package_default = {
|
|
10760
10773
|
name: "codeam-cli",
|
|
10761
|
-
version: "2.75.
|
|
10774
|
+
version: "2.75.35",
|
|
10762
10775
|
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
10776
|
type: "commonjs",
|
|
10764
10777
|
main: "dist/index.js",
|
|
@@ -12088,7 +12101,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
12088
12101
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
12089
12102
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
12090
12103
|
// pair/reconnect). Older backends ignore the extra field.
|
|
12091
|
-
..."2.75.
|
|
12104
|
+
..."2.75.35" ? { ideVersion: "2.75.35" } : {}
|
|
12092
12105
|
};
|
|
12093
12106
|
try {
|
|
12094
12107
|
const res = await _postJson(`${API_BASE2}/api/plugin/heartbeat`, body);
|
|
@@ -12161,10 +12174,12 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
12161
12174
|
installed: true
|
|
12162
12175
|
}
|
|
12163
12176
|
];
|
|
12177
|
+
const linkedAgentId = this.linkedAgentIdProvider?.() ?? null;
|
|
12164
12178
|
_postJson(`${API_BASE2}/api/plugin/agents`, {
|
|
12165
12179
|
pluginId: this.pluginId,
|
|
12166
12180
|
agents,
|
|
12167
|
-
capabilities: { squad: true }
|
|
12181
|
+
capabilities: { squad: true },
|
|
12182
|
+
...linkedAgentId ? { linkedAgentId } : {}
|
|
12168
12183
|
}).then(() => {
|
|
12169
12184
|
this.agentsRegistered = true;
|
|
12170
12185
|
}).catch(() => {
|
|
@@ -12175,6 +12190,16 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
12175
12190
|
* switch). Heartbeats pick the new id up on their next tick; call
|
|
12176
12191
|
* {@link reannounceAgents} to push the new `/api/plugin/agents` entry.
|
|
12177
12192
|
*/
|
|
12193
|
+
/**
|
|
12194
|
+
* The PUBLIC id of the agent really running (`managed-codex`, `claude_code`),
|
|
12195
|
+
* sent alongside the runtime-keyed `agents` list. The runtime id is `claude`
|
|
12196
|
+
* for every managed agent, so without this a session the host RESUMED on a
|
|
12197
|
+
* managed agent read as the user's own Claude in the app (owner, 2026-09-26).
|
|
12198
|
+
*/
|
|
12199
|
+
linkedAgentIdProvider = null;
|
|
12200
|
+
setLinkedAgentIdProvider(provider) {
|
|
12201
|
+
this.linkedAgentIdProvider = provider;
|
|
12202
|
+
}
|
|
12178
12203
|
setAgentMeta(meta) {
|
|
12179
12204
|
this.agentMeta = meta;
|
|
12180
12205
|
}
|
|
@@ -42858,6 +42883,11 @@ async function runAcpSession(opts) {
|
|
|
42858
42883
|
relay.reannounceAgents();
|
|
42859
42884
|
}
|
|
42860
42885
|
};
|
|
42886
|
+
relay.setLinkedAgentIdProvider(() => {
|
|
42887
|
+
if (houseActive) return isManagedProviderId(houseWireId) ? houseWireId : null;
|
|
42888
|
+
return internalToPublic(opts.agent);
|
|
42889
|
+
});
|
|
42890
|
+
relay.reannounceAgents();
|
|
42861
42891
|
const switchAgentForSession = async (rawAgentId) => {
|
|
42862
42892
|
const result = await performAgentSwitch(switchDeps, rawAgentId);
|
|
42863
42893
|
if (result.ok) refreshSquadRoster();
|
|
@@ -47855,12 +47885,13 @@ function sampleCpuTimes() {
|
|
|
47855
47885
|
}
|
|
47856
47886
|
return { idle, total };
|
|
47857
47887
|
}
|
|
47888
|
+
var MAX_REPORTED_LATENCY_MS = 6e4;
|
|
47858
47889
|
var MetricsCollector = class {
|
|
47859
47890
|
prevCpu = null;
|
|
47860
47891
|
lastLatencyMs = 0;
|
|
47861
47892
|
/** Record the measured round-trip of the heartbeat just sent. */
|
|
47862
47893
|
recordLatency(latencyMs) {
|
|
47863
|
-
this.lastLatencyMs = Math.max(0, Math.round(latencyMs));
|
|
47894
|
+
this.lastLatencyMs = Math.min(MAX_REPORTED_LATENCY_MS, Math.max(0, Math.round(latencyMs)));
|
|
47864
47895
|
}
|
|
47865
47896
|
cpuPct() {
|
|
47866
47897
|
const current2 = sampleCpuTimes();
|
|
@@ -48714,7 +48745,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
48714
48745
|
if (process.env.NODE_ENV === "test") return;
|
|
48715
48746
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
48716
48747
|
if (process.env.CI) return;
|
|
48717
|
-
const current2 = true ? "2.75.
|
|
48748
|
+
const current2 = true ? "2.75.35" : null;
|
|
48718
48749
|
if (!current2) return;
|
|
48719
48750
|
const cache = readCache();
|
|
48720
48751
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -48731,7 +48762,7 @@ function checkForUpdates() {
|
|
|
48731
48762
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
48732
48763
|
if (process.env.CI) return;
|
|
48733
48764
|
if (!process.stdout.isTTY) return;
|
|
48734
|
-
const current2 = true ? "2.75.
|
|
48765
|
+
const current2 = true ? "2.75.35" : null;
|
|
48735
48766
|
if (!current2) return;
|
|
48736
48767
|
const cache = readCache();
|
|
48737
48768
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -48754,7 +48785,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
|
48754
48785
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
48755
48786
|
var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
|
|
48756
48787
|
function currentCliVersion() {
|
|
48757
|
-
return true ? "2.75.
|
|
48788
|
+
return true ? "2.75.35" : null;
|
|
48758
48789
|
}
|
|
48759
48790
|
async function installedVersion(deps) {
|
|
48760
48791
|
const ls = await deps.run(
|
|
@@ -50719,7 +50750,7 @@ function checkChokidar() {
|
|
|
50719
50750
|
}
|
|
50720
50751
|
async function doctor(args2 = []) {
|
|
50721
50752
|
const json = args2.includes("--json");
|
|
50722
|
-
const cliVersion = true ? "2.75.
|
|
50753
|
+
const cliVersion = true ? "2.75.35" : "0.0.0-dev";
|
|
50723
50754
|
const apiBase2 = resolveApiBaseUrl();
|
|
50724
50755
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
50725
50756
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -51243,7 +51274,7 @@ async function mcpWarm(argv = [], opts = {}) {
|
|
|
51243
51274
|
// src/commands/version.ts
|
|
51244
51275
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
51245
51276
|
function version2() {
|
|
51246
|
-
const v = true ? "2.75.
|
|
51277
|
+
const v = true ? "2.75.35" : "unknown";
|
|
51247
51278
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
51248
51279
|
}
|
|
51249
51280
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.75.
|
|
3
|
+
"version": "2.75.35",
|
|
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",
|