codeam-cli 2.23.22 → 2.23.24
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 +36 -13
- 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.23.23] — 2026-05-30
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Get_conversation handler runs lazy detect when needed
|
|
12
|
+
|
|
13
|
+
## [2.23.22] — 2026-05-30
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Anchor detectInputSuggestion on `? for shortcuts`
|
|
18
|
+
|
|
7
19
|
## [2.23.21] — 2026-05-30
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -441,7 +441,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
441
441
|
// package.json
|
|
442
442
|
var package_default = {
|
|
443
443
|
name: "codeam-cli",
|
|
444
|
-
version: "2.23.
|
|
444
|
+
version: "2.23.24",
|
|
445
445
|
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.",
|
|
446
446
|
type: "commonjs",
|
|
447
447
|
main: "dist/index.js",
|
|
@@ -5774,7 +5774,7 @@ function readAnonId() {
|
|
|
5774
5774
|
}
|
|
5775
5775
|
function superProperties() {
|
|
5776
5776
|
return {
|
|
5777
|
-
cliVersion: true ? "2.23.
|
|
5777
|
+
cliVersion: true ? "2.23.24" : "0.0.0-dev",
|
|
5778
5778
|
nodeVersion: process.version,
|
|
5779
5779
|
platform: process.platform,
|
|
5780
5780
|
arch: process.arch,
|
|
@@ -6266,6 +6266,16 @@ var AgentService = class _AgentService {
|
|
|
6266
6266
|
* the SAME binary with new resume args.
|
|
6267
6267
|
*/
|
|
6268
6268
|
initialLaunch = null;
|
|
6269
|
+
/**
|
|
6270
|
+
* Pre-assigned session id from `prepareLaunch` (Claude:
|
|
6271
|
+
* `--session-id <uuid>`). When the runtime supports it, the CLI
|
|
6272
|
+
* binds the conversation id at spawn time instead of inferring
|
|
6273
|
+
* it from filesystem state. Null for runtimes that don't accept
|
|
6274
|
+
* a pre-assigned id (Codex, Aider, ...).
|
|
6275
|
+
*/
|
|
6276
|
+
get spawnedSessionId() {
|
|
6277
|
+
return this.initialLaunch?.sessionId ?? null;
|
|
6278
|
+
}
|
|
6269
6279
|
/**
|
|
6270
6280
|
* Debounced "agent went idle" check. Re-arms itself as long as
|
|
6271
6281
|
* fresh PTY output keeps arriving. When the gap since the last
|
|
@@ -7091,6 +7101,9 @@ function buildForPlatform(platform2) {
|
|
|
7091
7101
|
}
|
|
7092
7102
|
}
|
|
7093
7103
|
|
|
7104
|
+
// src/agents/claude/runtime.ts
|
|
7105
|
+
var import_node_crypto4 = require("crypto");
|
|
7106
|
+
|
|
7094
7107
|
// src/agents/claude/resolver.ts
|
|
7095
7108
|
function buildClaudeLaunch(extraArgs = [], os26 = createOsStrategy()) {
|
|
7096
7109
|
const found = os26.findInPath("claude") ?? os26.findInPath("claude-code");
|
|
@@ -9797,10 +9810,12 @@ var ClaudeRuntimeStrategy = class {
|
|
|
9797
9810
|
this.os = os26;
|
|
9798
9811
|
}
|
|
9799
9812
|
async prepareLaunch() {
|
|
9800
|
-
|
|
9813
|
+
const sessionId = (0, import_node_crypto4.randomUUID)();
|
|
9814
|
+
const sessionArgs = ["--session-id", sessionId];
|
|
9815
|
+
let launch = buildClaudeLaunch(sessionArgs, this.os);
|
|
9801
9816
|
if (!launch) {
|
|
9802
9817
|
const installed = await ensureClaudeInstalled();
|
|
9803
|
-
if (installed) launch = buildClaudeLaunch(
|
|
9818
|
+
if (installed) launch = buildClaudeLaunch(sessionArgs, this.os);
|
|
9804
9819
|
}
|
|
9805
9820
|
if (!launch) {
|
|
9806
9821
|
const cmd = this.os.id === "win32" ? "irm https://claude.ai/install.ps1 | iex" : "curl -fsSL https://claude.ai/install.sh | bash";
|
|
@@ -9810,7 +9825,7 @@ var ClaudeRuntimeStrategy = class {
|
|
|
9810
9825
|
Then restart your terminal and run \`codeam pair\` again.`
|
|
9811
9826
|
);
|
|
9812
9827
|
}
|
|
9813
|
-
return { cmd: launch.cmd, args: launch.args };
|
|
9828
|
+
return { cmd: launch.cmd, args: launch.args, sessionId };
|
|
9814
9829
|
}
|
|
9815
9830
|
resumeLaunchArgs(sessionId, opts) {
|
|
9816
9831
|
const args2 = ["--resume", sessionId];
|
|
@@ -15125,7 +15140,7 @@ function findGitRoot2(startDir) {
|
|
|
15125
15140
|
}
|
|
15126
15141
|
|
|
15127
15142
|
// src/commands/link.ts
|
|
15128
|
-
var
|
|
15143
|
+
var import_node_crypto5 = require("crypto");
|
|
15129
15144
|
var fs26 = __toESM(require("fs"));
|
|
15130
15145
|
var path32 = __toESM(require("path"));
|
|
15131
15146
|
var import_chokidar = __toESM(require("chokidar"));
|
|
@@ -15214,7 +15229,7 @@ async function link(args2 = []) {
|
|
|
15214
15229
|
await linkDryRunPreflight(ctx);
|
|
15215
15230
|
return;
|
|
15216
15231
|
}
|
|
15217
|
-
const pluginId = (0,
|
|
15232
|
+
const pluginId = (0, import_node_crypto5.randomUUID)();
|
|
15218
15233
|
const spin = dist_exports.spinner();
|
|
15219
15234
|
spin.start("Requesting pairing code...");
|
|
15220
15235
|
const pairing = await requestCode(pluginId);
|
|
@@ -15550,7 +15565,11 @@ var getContext = async (ctx, cmd) => {
|
|
|
15550
15565
|
await ctx.relay.sendResult(cmd.id, "completed", result);
|
|
15551
15566
|
};
|
|
15552
15567
|
var getConversation = async (ctx, cmd) => {
|
|
15553
|
-
|
|
15568
|
+
let currentId = ctx.historySvc.getCurrentConversationId();
|
|
15569
|
+
if (!currentId) {
|
|
15570
|
+
ctx.historySvc.detectCurrentConversation();
|
|
15571
|
+
currentId = ctx.historySvc.getCurrentConversationId();
|
|
15572
|
+
}
|
|
15554
15573
|
if (!currentId) {
|
|
15555
15574
|
await ctx.relay.sendResult(cmd.id, "completed", { conversationId: null });
|
|
15556
15575
|
return;
|
|
@@ -16108,6 +16127,10 @@ async function start(requestedAgent) {
|
|
|
16108
16127
|
process.once("SIGTERM", sigintHandler);
|
|
16109
16128
|
process.once("SIGHUP", sigintHandler);
|
|
16110
16129
|
await agent.spawn();
|
|
16130
|
+
const spawnedSessionId = agent.spawnedSessionId;
|
|
16131
|
+
if (spawnedSessionId) {
|
|
16132
|
+
historySvc.setCurrentConversationId(spawnedSessionId);
|
|
16133
|
+
}
|
|
16111
16134
|
await outputSvc.startTerminalTurn();
|
|
16112
16135
|
relay.start();
|
|
16113
16136
|
if (fileWatcher) {
|
|
@@ -18683,7 +18706,7 @@ async function stopWorkspaceFromLocal(target) {
|
|
|
18683
18706
|
// src/commands/doctor.ts
|
|
18684
18707
|
var import_node_dns = require("dns");
|
|
18685
18708
|
var import_node_util4 = require("util");
|
|
18686
|
-
var
|
|
18709
|
+
var import_node_crypto6 = require("crypto");
|
|
18687
18710
|
var fs29 = __toESM(require("fs"));
|
|
18688
18711
|
var path38 = __toESM(require("path"));
|
|
18689
18712
|
var import_picocolors12 = __toESM(require("picocolors"));
|
|
@@ -18853,9 +18876,9 @@ function checkChokidar() {
|
|
|
18853
18876
|
}
|
|
18854
18877
|
async function doctor(args2 = []) {
|
|
18855
18878
|
const json = args2.includes("--json");
|
|
18856
|
-
const cliVersion = true ? "2.23.
|
|
18879
|
+
const cliVersion = true ? "2.23.24" : "0.0.0-dev";
|
|
18857
18880
|
const apiBase = resolveApiBaseUrl();
|
|
18858
|
-
const diagnosticId = (0,
|
|
18881
|
+
const diagnosticId = (0, import_node_crypto6.randomUUID)();
|
|
18859
18882
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
18860
18883
|
const [dns, health] = await Promise.all([
|
|
18861
18884
|
checkDns(apiBase),
|
|
@@ -19052,7 +19075,7 @@ async function completion(args2) {
|
|
|
19052
19075
|
// src/commands/version.ts
|
|
19053
19076
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
19054
19077
|
function version2() {
|
|
19055
|
-
const v = true ? "2.23.
|
|
19078
|
+
const v = true ? "2.23.24" : "unknown";
|
|
19056
19079
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
19057
19080
|
}
|
|
19058
19081
|
|
|
@@ -19280,7 +19303,7 @@ function checkForUpdates() {
|
|
|
19280
19303
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
19281
19304
|
if (process.env.CI) return;
|
|
19282
19305
|
if (!process.stdout.isTTY) return;
|
|
19283
|
-
const current = true ? "2.23.
|
|
19306
|
+
const current = true ? "2.23.24" : null;
|
|
19284
19307
|
if (!current) return;
|
|
19285
19308
|
const cache = readCache();
|
|
19286
19309
|
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.23.
|
|
3
|
+
"version": "2.23.24",
|
|
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",
|