codeam-cli 2.39.19 → 2.39.21
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 +12 -0
- package/dist/index.js +20 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ 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.39.20] — 2026-06-15
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Handle ACP adapter spawn errors instead of crashing the relay
|
|
12
|
+
|
|
13
|
+
## [2.39.19] — 2026-06-15
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Capture a larger preview dev-server log so the real failure surfaces
|
|
18
|
+
|
|
7
19
|
## [2.39.18] — 2026-06-14
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
498
498
|
// package.json
|
|
499
499
|
var package_default = {
|
|
500
500
|
name: "codeam-cli",
|
|
501
|
-
version: "2.39.
|
|
501
|
+
version: "2.39.21",
|
|
502
502
|
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.",
|
|
503
503
|
type: "commonjs",
|
|
504
504
|
main: "dist/index.js",
|
|
@@ -5908,7 +5908,7 @@ function readAnonId() {
|
|
|
5908
5908
|
}
|
|
5909
5909
|
function superProperties() {
|
|
5910
5910
|
return {
|
|
5911
|
-
cliVersion: true ? "2.39.
|
|
5911
|
+
cliVersion: true ? "2.39.21" : "0.0.0-dev",
|
|
5912
5912
|
nodeVersion: process.version,
|
|
5913
5913
|
platform: process.platform,
|
|
5914
5914
|
arch: process.arch,
|
|
@@ -14763,6 +14763,14 @@ var AcpClient = class {
|
|
|
14763
14763
|
log.warn("acpClient", `adapter exited unexpectedly code=${code} signal=${signal}`);
|
|
14764
14764
|
this.opts.onUnexpectedExit?.(code, signal);
|
|
14765
14765
|
});
|
|
14766
|
+
child.on("error", (err) => {
|
|
14767
|
+
if (this.stopping) return;
|
|
14768
|
+
const code = err.code ?? err.message;
|
|
14769
|
+
const hint = err.code === "ENOEXEC" ? " \u2014 the agent binary looks like the wrong architecture or a non-executable script" : err.code === "ENOENT" ? ` \u2014 '${adapter.command}' was not found on PATH` : err.code === "EACCES" ? ` \u2014 '${adapter.command}' is not executable` : "";
|
|
14770
|
+
log.error("acpClient", `adapter spawn failed: ${code}${hint}`);
|
|
14771
|
+
this.opts.onStderr?.(`Failed to launch ${adapter.command}: ${code}${hint}`);
|
|
14772
|
+
this.opts.onUnexpectedExit?.(null, null);
|
|
14773
|
+
});
|
|
14766
14774
|
if (!child.stdin || !child.stdout) {
|
|
14767
14775
|
throw new Error("Spawned ACP adapter is missing stdio handles");
|
|
14768
14776
|
}
|
|
@@ -15443,7 +15451,7 @@ function buildOnboardingWelcome(cwd) {
|
|
|
15443
15451
|
`Ready when you are \u2014 try **"explain ${repo}"** or **"what should I work on first?"**`
|
|
15444
15452
|
].join("\n");
|
|
15445
15453
|
}
|
|
15446
|
-
function maybeSendOnboardingWelcome(opts) {
|
|
15454
|
+
async function maybeSendOnboardingWelcome(opts) {
|
|
15447
15455
|
if (_onboardingSeam.disabled()) return;
|
|
15448
15456
|
const marker = _onboardingSeam.markerPath(opts.sessionId);
|
|
15449
15457
|
try {
|
|
@@ -15454,12 +15462,14 @@ function maybeSendOnboardingWelcome(opts) {
|
|
|
15454
15462
|
return;
|
|
15455
15463
|
}
|
|
15456
15464
|
log.info("acpRunner", `sending first-pair onboarding welcome for session=${opts.sessionId.slice(0, 8)}`);
|
|
15457
|
-
|
|
15465
|
+
try {
|
|
15466
|
+
await runOnboardingTurn(opts);
|
|
15467
|
+
} catch (err) {
|
|
15458
15468
|
log.warn(
|
|
15459
15469
|
"acpRunner",
|
|
15460
15470
|
`onboarding welcome turn failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`
|
|
15461
15471
|
);
|
|
15462
|
-
}
|
|
15472
|
+
}
|
|
15463
15473
|
}
|
|
15464
15474
|
async function runOnboardingTurn(opts) {
|
|
15465
15475
|
const { streaming, history, cwd } = opts;
|
|
@@ -21754,7 +21764,7 @@ async function runAcpSession(opts) {
|
|
|
21754
21764
|
const runtime = createInteractiveAgentStrategy(opts.agent, createOsStrategy());
|
|
21755
21765
|
const models = await runtime.listModels();
|
|
21756
21766
|
const history = new AcpHistory(publisher, { agent: opts.agent, acpSessionId });
|
|
21757
|
-
maybeSendOnboardingWelcome({
|
|
21767
|
+
const onboardingWelcomeDone = maybeSendOnboardingWelcome({
|
|
21758
21768
|
streaming,
|
|
21759
21769
|
history,
|
|
21760
21770
|
sessionId: opts.sessionId,
|
|
@@ -21813,6 +21823,7 @@ async function runAcpSession(opts) {
|
|
|
21813
21823
|
},
|
|
21814
21824
|
{ id: opts.agent, name: opts.agent, displayName: opts.agent }
|
|
21815
21825
|
);
|
|
21826
|
+
await onboardingWelcomeDone;
|
|
21816
21827
|
relay.start();
|
|
21817
21828
|
const prewarmTimer = setTimeout(() => prewarmPreviewDetection(runtime), 2e4);
|
|
21818
21829
|
const shutdown = async (signal) => {
|
|
@@ -27056,7 +27067,7 @@ function checkChokidar() {
|
|
|
27056
27067
|
}
|
|
27057
27068
|
async function doctor(args2 = []) {
|
|
27058
27069
|
const json = args2.includes("--json");
|
|
27059
|
-
const cliVersion = true ? "2.39.
|
|
27070
|
+
const cliVersion = true ? "2.39.21" : "0.0.0-dev";
|
|
27060
27071
|
const apiBase = resolveApiBaseUrl();
|
|
27061
27072
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
27062
27073
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -27255,7 +27266,7 @@ async function completion(args2) {
|
|
|
27255
27266
|
// src/commands/version.ts
|
|
27256
27267
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
27257
27268
|
function version2() {
|
|
27258
|
-
const v = true ? "2.39.
|
|
27269
|
+
const v = true ? "2.39.21" : "unknown";
|
|
27259
27270
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
27260
27271
|
}
|
|
27261
27272
|
|
|
@@ -27541,7 +27552,7 @@ function checkForUpdates() {
|
|
|
27541
27552
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
27542
27553
|
if (process.env.CI) return;
|
|
27543
27554
|
if (!process.stdout.isTTY) return;
|
|
27544
|
-
const current = true ? "2.39.
|
|
27555
|
+
const current = true ? "2.39.21" : null;
|
|
27545
27556
|
if (!current) return;
|
|
27546
27557
|
const cache = readCache();
|
|
27547
27558
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.39.
|
|
3
|
+
"version": "2.39.21",
|
|
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",
|