codeam-cli 2.48.0 → 2.48.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 +15 -0
- package/dist/index.js +21 -10
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,21 @@ 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.48.0] — 2026-06-26
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** EnvVar wire type for env-config
|
|
12
|
+
- **cli:** Dotenv parse/serialize util for env-config
|
|
13
|
+
- **cli:** Accept env-config vars[] in startCommandSchema
|
|
14
|
+
- **cli:** Env_read handler
|
|
15
|
+
- **cli:** Env_write handler (validate + atomic write)
|
|
16
|
+
- **cli:** Preview_restart handler (kill + re-spawn from stored detection)
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **cli:** Store detection on ActivePreview + extract startPreviewFromDetection
|
|
21
|
+
|
|
7
22
|
## [2.47.1] — 2026-06-26
|
|
8
23
|
|
|
9
24
|
### Chore
|
package/dist/index.js
CHANGED
|
@@ -5397,7 +5397,7 @@ function readAnonId() {
|
|
|
5397
5397
|
}
|
|
5398
5398
|
function superProperties() {
|
|
5399
5399
|
return {
|
|
5400
|
-
cliVersion: true ? "2.48.
|
|
5400
|
+
cliVersion: true ? "2.48.1" : "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.48.
|
|
5581
|
+
version: "2.48.1",
|
|
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",
|
|
@@ -18137,7 +18137,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
18137
18137
|
if (process.env.NODE_ENV === "test") return;
|
|
18138
18138
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18139
18139
|
if (process.env.CI) return;
|
|
18140
|
-
const current = true ? "2.48.
|
|
18140
|
+
const current = true ? "2.48.1" : null;
|
|
18141
18141
|
if (!current) return;
|
|
18142
18142
|
const cache = readCache();
|
|
18143
18143
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18154,7 +18154,7 @@ function checkForUpdates() {
|
|
|
18154
18154
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18155
18155
|
if (process.env.CI) return;
|
|
18156
18156
|
if (!process.stdout.isTTY) return;
|
|
18157
|
-
const current = true ? "2.48.
|
|
18157
|
+
const current = true ? "2.48.1" : null;
|
|
18158
18158
|
if (!current) return;
|
|
18159
18159
|
const cache = readCache();
|
|
18160
18160
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18596,7 +18596,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
|
|
|
18596
18596
|
detached: false
|
|
18597
18597
|
});
|
|
18598
18598
|
function currentCliVersion() {
|
|
18599
|
-
return true ? "2.48.
|
|
18599
|
+
return true ? "2.48.1" : null;
|
|
18600
18600
|
}
|
|
18601
18601
|
function runCmd(cmd, args2, timeoutMs) {
|
|
18602
18602
|
return new Promise((resolve7) => {
|
|
@@ -25062,6 +25062,11 @@ var StreamingState = class {
|
|
|
25062
25062
|
*/
|
|
25063
25063
|
async closeWithBubble(bubble) {
|
|
25064
25064
|
this.text = "";
|
|
25065
|
+
for (const [chunkId, chunk] of this.streamingChunks) {
|
|
25066
|
+
if (chunk.kind === "text") {
|
|
25067
|
+
this.streamingChunks.set(chunkId, { kind: "text", content: bubble });
|
|
25068
|
+
}
|
|
25069
|
+
}
|
|
25065
25070
|
await Promise.all([
|
|
25066
25071
|
this.publisher.publishOutput({ type: "text", content: bubble, done: true }),
|
|
25067
25072
|
this.flushStreamingChunks()
|
|
@@ -25735,10 +25740,11 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
|
|
|
25735
25740
|
}
|
|
25736
25741
|
} catch (err) {
|
|
25737
25742
|
const hadText = streaming.getCurrentText().trim().length > 0;
|
|
25738
|
-
await recoverFromFailedTurn(client2, streaming);
|
|
25739
25743
|
const detail = describeError(err);
|
|
25740
25744
|
log.warn("acpRunner", `prompt failed: ${detail}`);
|
|
25745
|
+
await cancelStuckTurn(client2);
|
|
25741
25746
|
if (shouldOfferOneMRecovery({ detail, recentStderr: recentStderr.join("\n"), finalText: "" })) {
|
|
25747
|
+
await streaming.closeAll();
|
|
25742
25748
|
await oneMRecovery.offer(cmd.id, blocks);
|
|
25743
25749
|
return;
|
|
25744
25750
|
}
|
|
@@ -25749,9 +25755,11 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
|
|
|
25749
25755
|
agent: opts.agent
|
|
25750
25756
|
});
|
|
25751
25757
|
if (bubble) {
|
|
25752
|
-
await
|
|
25758
|
+
await streaming.closeWithBubble(bubble);
|
|
25753
25759
|
history.appendAgentReply(bubble);
|
|
25754
25760
|
void history.flush();
|
|
25761
|
+
} else {
|
|
25762
|
+
await streaming.closeAll();
|
|
25755
25763
|
}
|
|
25756
25764
|
if (bubble === AUTH_FAILURE_MESSAGE) {
|
|
25757
25765
|
void reportCredentialInvalid(opts);
|
|
@@ -26062,12 +26070,15 @@ function describeError(err) {
|
|
|
26062
26070
|
return String(err);
|
|
26063
26071
|
}
|
|
26064
26072
|
async function recoverFromFailedTurn(client2, streaming) {
|
|
26073
|
+
await cancelStuckTurn(client2);
|
|
26074
|
+
await streaming.closeAll();
|
|
26075
|
+
}
|
|
26076
|
+
async function cancelStuckTurn(client2) {
|
|
26065
26077
|
try {
|
|
26066
26078
|
await client2.cancel();
|
|
26067
26079
|
} catch (err) {
|
|
26068
26080
|
log.warn("acpRunner", `post-failure cancel failed: ${describeError(err)}`);
|
|
26069
26081
|
}
|
|
26070
|
-
await streaming.closeAll();
|
|
26071
26082
|
}
|
|
26072
26083
|
function buildBannerSubtitle(agentId, acpSessionId, model, tier) {
|
|
26073
26084
|
const meta = AGENT_REGISTRY[agentId];
|
|
@@ -29964,7 +29975,7 @@ function checkChokidar() {
|
|
|
29964
29975
|
}
|
|
29965
29976
|
async function doctor(args2 = []) {
|
|
29966
29977
|
const json = args2.includes("--json");
|
|
29967
|
-
const cliVersion = true ? "2.48.
|
|
29978
|
+
const cliVersion = true ? "2.48.1" : "0.0.0-dev";
|
|
29968
29979
|
const apiBase2 = resolveApiBaseUrl();
|
|
29969
29980
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
29970
29981
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -30163,7 +30174,7 @@ async function completion(args2) {
|
|
|
30163
30174
|
// src/commands/version.ts
|
|
30164
30175
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
30165
30176
|
function version2() {
|
|
30166
|
-
const v = true ? "2.48.
|
|
30177
|
+
const v = true ? "2.48.1" : "unknown";
|
|
30167
30178
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
30168
30179
|
}
|
|
30169
30180
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.48.
|
|
3
|
+
"version": "2.48.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",
|