codeam-cli 2.76.24 → 2.76.25
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 +23 -12
- 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.76.24] — 2026-10-12
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** PreviewDetection.cwd and a detect prompt that sees apps in a subfolder
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **cli:** Start the preview dev server in the app's subfolder and name a missing command
|
|
16
|
+
|
|
7
17
|
## [2.76.23] — 2026-10-12
|
|
8
18
|
|
|
9
19
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -10627,7 +10627,7 @@ function readAnonId() {
|
|
|
10627
10627
|
}
|
|
10628
10628
|
function superProperties() {
|
|
10629
10629
|
return {
|
|
10630
|
-
cliVersion: true ? "2.76.
|
|
10630
|
+
cliVersion: true ? "2.76.25" : "0.0.0-dev",
|
|
10631
10631
|
nodeVersion: process.version,
|
|
10632
10632
|
platform: process.platform,
|
|
10633
10633
|
arch: process.arch,
|
|
@@ -10876,7 +10876,7 @@ var http = __toESM(require("http"));
|
|
|
10876
10876
|
// package.json
|
|
10877
10877
|
var package_default = {
|
|
10878
10878
|
name: "codeam-cli",
|
|
10879
|
-
version: "2.76.
|
|
10879
|
+
version: "2.76.25",
|
|
10880
10880
|
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.",
|
|
10881
10881
|
type: "commonjs",
|
|
10882
10882
|
main: "dist/index.js",
|
|
@@ -12239,7 +12239,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
12239
12239
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
12240
12240
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
12241
12241
|
// pair/reconnect). Older backends ignore the extra field.
|
|
12242
|
-
..."2.76.
|
|
12242
|
+
..."2.76.25" ? { ideVersion: "2.76.25" } : {}
|
|
12243
12243
|
};
|
|
12244
12244
|
try {
|
|
12245
12245
|
const res = await _postJson(`${API_BASE2}/api/plugin/heartbeat`, body, this.pollSecretHeader());
|
|
@@ -50496,6 +50496,9 @@ var MetricsCollector = class {
|
|
|
50496
50496
|
};
|
|
50497
50497
|
}
|
|
50498
50498
|
};
|
|
50499
|
+
function enrollTokenHash(token) {
|
|
50500
|
+
return (0, import_node_crypto16.createHash)("sha256").update(token).digest("hex");
|
|
50501
|
+
}
|
|
50499
50502
|
function apiBase() {
|
|
50500
50503
|
return process.env.CODEAM_API_URL ?? resolveApiBaseUrl();
|
|
50501
50504
|
}
|
|
@@ -50521,7 +50524,8 @@ function loadHostIdentity() {
|
|
|
50521
50524
|
hostToken: p2.hostToken,
|
|
50522
50525
|
controlPluginId: p2.controlPluginId,
|
|
50523
50526
|
// Optional — absent on identities sealed by a pre-secret CLI.
|
|
50524
|
-
...typeof p2.controlPollSecret === "string" ? { controlPollSecret: p2.controlPollSecret } : {}
|
|
50527
|
+
...typeof p2.controlPollSecret === "string" ? { controlPollSecret: p2.controlPollSecret } : {},
|
|
50528
|
+
...typeof p2.consumedEnrollTokenSha256 === "string" ? { consumedEnrollTokenSha256: p2.consumedEnrollTokenSha256 } : {}
|
|
50525
50529
|
};
|
|
50526
50530
|
}
|
|
50527
50531
|
return null;
|
|
@@ -51336,7 +51340,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
51336
51340
|
if (process.env.NODE_ENV === "test") return;
|
|
51337
51341
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
51338
51342
|
if (process.env.CI) return;
|
|
51339
|
-
const current2 = true ? "2.76.
|
|
51343
|
+
const current2 = true ? "2.76.25" : null;
|
|
51340
51344
|
if (!current2) return;
|
|
51341
51345
|
const cache = readCache();
|
|
51342
51346
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -51353,7 +51357,7 @@ function checkForUpdates() {
|
|
|
51353
51357
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
51354
51358
|
if (process.env.CI) return;
|
|
51355
51359
|
if (!process.stdout.isTTY) return;
|
|
51356
|
-
const current2 = true ? "2.76.
|
|
51360
|
+
const current2 = true ? "2.76.25" : null;
|
|
51357
51361
|
if (!current2) return;
|
|
51358
51362
|
const cache = readCache();
|
|
51359
51363
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -51636,7 +51640,7 @@ var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
|
51636
51640
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
51637
51641
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
51638
51642
|
function currentCliVersion() {
|
|
51639
|
-
return true ? "2.76.
|
|
51643
|
+
return true ? "2.76.25" : null;
|
|
51640
51644
|
}
|
|
51641
51645
|
async function installedVersion(deps) {
|
|
51642
51646
|
const ls = await deps.run(
|
|
@@ -51847,7 +51851,7 @@ function signalHostReady(send = process.send?.bind(process)) {
|
|
|
51847
51851
|
}
|
|
51848
51852
|
function defaultDeps() {
|
|
51849
51853
|
return {
|
|
51850
|
-
ownVersion: true ? "2.76.
|
|
51854
|
+
ownVersion: true ? "2.76.25" : null,
|
|
51851
51855
|
root: cliVersionsRoot(),
|
|
51852
51856
|
args: process.argv.slice(3),
|
|
51853
51857
|
execPath: process.execPath,
|
|
@@ -54076,9 +54080,14 @@ var HostAgentSupervisor = class {
|
|
|
54076
54080
|
async function resolveHostIdentity(enrollToken) {
|
|
54077
54081
|
const existing = ensureControlPollSecret(loadHostIdentity());
|
|
54078
54082
|
if (enrollToken) {
|
|
54083
|
+
const tokenHash = enrollTokenHash(enrollToken);
|
|
54084
|
+
if (existing?.consumedEnrollTokenSha256 === tokenHash) return existing;
|
|
54079
54085
|
await reportProgress({ enrollToken }, "redeeming", "redeeming enrollment token\u2026");
|
|
54080
54086
|
try {
|
|
54081
|
-
const identity =
|
|
54087
|
+
const identity = {
|
|
54088
|
+
...await redeemEnrollToken(enrollToken),
|
|
54089
|
+
consumedEnrollTokenSha256: tokenHash
|
|
54090
|
+
};
|
|
54082
54091
|
saveHostIdentity(identity);
|
|
54083
54092
|
await reportProgress(
|
|
54084
54093
|
{ hostId: identity.hostId, hostToken: identity.hostToken },
|
|
@@ -54093,7 +54102,9 @@ async function resolveHostIdentity(enrollToken) {
|
|
|
54093
54102
|
"host-agent",
|
|
54094
54103
|
"enroll token terminally rejected (expired/replayed) but a sealed identity is present; resuming from it \u2014 likely a restart, not a re-enroll"
|
|
54095
54104
|
);
|
|
54096
|
-
|
|
54105
|
+
const resumed = { ...existing, consumedEnrollTokenSha256: tokenHash };
|
|
54106
|
+
saveHostIdentity(resumed);
|
|
54107
|
+
return resumed;
|
|
54097
54108
|
}
|
|
54098
54109
|
throw new Error(
|
|
54099
54110
|
"Enrollment token expired or invalid \u2014 generate a new one in the app (Settings \u203A Servers \u203A Add server). Tokens expire after 15 minutes and are single-use.",
|
|
@@ -54374,7 +54385,7 @@ function checkChokidar() {
|
|
|
54374
54385
|
}
|
|
54375
54386
|
async function doctor(args2 = []) {
|
|
54376
54387
|
const json = args2.includes("--json");
|
|
54377
|
-
const cliVersion = true ? "2.76.
|
|
54388
|
+
const cliVersion = true ? "2.76.25" : "0.0.0-dev";
|
|
54378
54389
|
const apiBase2 = resolveApiBaseUrl();
|
|
54379
54390
|
const diagnosticId = (0, import_node_crypto17.randomUUID)();
|
|
54380
54391
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -54910,7 +54921,7 @@ async function mcpWarm(argv = [], opts = {}) {
|
|
|
54910
54921
|
// src/commands/version.ts
|
|
54911
54922
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
54912
54923
|
function version2() {
|
|
54913
|
-
const v = true ? "2.76.
|
|
54924
|
+
const v = true ? "2.76.25" : "unknown";
|
|
54914
54925
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
54915
54926
|
}
|
|
54916
54927
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.76.
|
|
3
|
+
"version": "2.76.25",
|
|
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",
|