codeam-cli 2.23.1 → 2.23.2
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 +80 -66
- 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.23.1] — 2026-05-25
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Payload.agentId — accept null, not just undefined (#189)
|
|
12
|
+
|
|
7
13
|
## [2.23.0] — 2026-05-25
|
|
8
14
|
|
|
9
15
|
### 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.2",
|
|
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",
|
|
@@ -5768,7 +5768,7 @@ function readAnonId() {
|
|
|
5768
5768
|
}
|
|
5769
5769
|
function superProperties() {
|
|
5770
5770
|
return {
|
|
5771
|
-
cliVersion: true ? "2.23.
|
|
5771
|
+
cliVersion: true ? "2.23.2" : "0.0.0-dev",
|
|
5772
5772
|
nodeVersion: process.version,
|
|
5773
5773
|
platform: process.platform,
|
|
5774
5774
|
arch: process.arch,
|
|
@@ -15452,7 +15452,7 @@ var applyFileReviewH = async (ctx, cmd, parsed) => {
|
|
|
15452
15452
|
result
|
|
15453
15453
|
);
|
|
15454
15454
|
};
|
|
15455
|
-
var requestLinkCredentialsH =
|
|
15455
|
+
var requestLinkCredentialsH = (ctx, _cmd, parsed) => {
|
|
15456
15456
|
const publicId = parsed.agentId;
|
|
15457
15457
|
if (!publicId) return;
|
|
15458
15458
|
if (!ctx.pluginAuthToken) {
|
|
@@ -15464,80 +15464,94 @@ var requestLinkCredentialsH = async (ctx, _cmd, parsed) => {
|
|
|
15464
15464
|
log.trace("auto-link", `unknown / disabled agent: ${internalId}`);
|
|
15465
15465
|
return;
|
|
15466
15466
|
}
|
|
15467
|
-
|
|
15468
|
-
|
|
15469
|
-
linkCtx
|
|
15470
|
-
|
|
15471
|
-
|
|
15472
|
-
|
|
15473
|
-
|
|
15474
|
-
|
|
15475
|
-
|
|
15476
|
-
|
|
15477
|
-
|
|
15478
|
-
|
|
15479
|
-
|
|
15480
|
-
|
|
15481
|
-
|
|
15482
|
-
|
|
15483
|
-
|
|
15484
|
-
|
|
15485
|
-
|
|
15486
|
-
|
|
15487
|
-
|
|
15488
|
-
|
|
15489
|
-
|
|
15490
|
-
|
|
15491
|
-
|
|
15492
|
-
|
|
15493
|
-
|
|
15494
|
-
|
|
15467
|
+
const pluginAuthToken = ctx.pluginAuthToken;
|
|
15468
|
+
void (async () => {
|
|
15469
|
+
let linkCtx;
|
|
15470
|
+
try {
|
|
15471
|
+
linkCtx = buildLinkContext(internalId);
|
|
15472
|
+
} catch (err) {
|
|
15473
|
+
log.trace("auto-link", "buildLinkContext threw", err);
|
|
15474
|
+
return;
|
|
15475
|
+
}
|
|
15476
|
+
const token = await linkCtx.locator.extract().catch((err) => {
|
|
15477
|
+
log.trace("auto-link", `locator.extract failed for ${publicId}`, err);
|
|
15478
|
+
return null;
|
|
15479
|
+
});
|
|
15480
|
+
if (!token) {
|
|
15481
|
+
log.trace("auto-link", `no local ${linkCtx.displayName} credentials \u2014 skipping`);
|
|
15482
|
+
return;
|
|
15483
|
+
}
|
|
15484
|
+
const result = await postLinkCredential({
|
|
15485
|
+
agentId: publicId,
|
|
15486
|
+
sessionId: ctx.sessionId,
|
|
15487
|
+
pluginId: ctx.pluginId,
|
|
15488
|
+
pluginAuthToken,
|
|
15489
|
+
method: token.method,
|
|
15490
|
+
credential: token.credential
|
|
15491
|
+
});
|
|
15492
|
+
if (result.ok) {
|
|
15493
|
+
log.trace("auto-link", `vaulted ${publicId} from ${token.source}`);
|
|
15494
|
+
} else {
|
|
15495
|
+
log.trace("auto-link", `upload failed (${result.status}): ${result.message}`);
|
|
15496
|
+
}
|
|
15497
|
+
})();
|
|
15495
15498
|
};
|
|
15496
|
-
var requestAiSummaryH =
|
|
15499
|
+
var requestAiSummaryH = (ctx, _cmd, parsed) => {
|
|
15497
15500
|
if (!ctx.pluginAuthToken) return;
|
|
15498
15501
|
if (typeof ctx.runtime.generateOneShot !== "function") return;
|
|
15499
15502
|
if (!parsed.prompt || !parsed.turnId || !parsed.stats) {
|
|
15500
15503
|
log.trace("ai-summary", "missing prompt/turnId/stats \u2014 skipping");
|
|
15501
15504
|
return;
|
|
15502
15505
|
}
|
|
15503
|
-
const
|
|
15504
|
-
|
|
15505
|
-
|
|
15506
|
-
|
|
15507
|
-
|
|
15508
|
-
|
|
15509
|
-
|
|
15510
|
-
|
|
15511
|
-
|
|
15512
|
-
|
|
15513
|
-
|
|
15514
|
-
|
|
15515
|
-
|
|
15516
|
-
|
|
15506
|
+
const prompt = parsed.prompt;
|
|
15507
|
+
const turnId = parsed.turnId;
|
|
15508
|
+
const stats = parsed.stats;
|
|
15509
|
+
const pluginAuthToken = ctx.pluginAuthToken;
|
|
15510
|
+
void (async () => {
|
|
15511
|
+
const text = await ctx.runtime.generateOneShot(prompt).catch((err) => {
|
|
15512
|
+
log.trace("ai-summary", "generateOneShot threw", err);
|
|
15513
|
+
return null;
|
|
15514
|
+
});
|
|
15515
|
+
if (!text) return;
|
|
15516
|
+
await postAiResult({
|
|
15517
|
+
sessionId: ctx.sessionId,
|
|
15518
|
+
pluginId: ctx.pluginId,
|
|
15519
|
+
pluginAuthToken,
|
|
15520
|
+
kind: "summary",
|
|
15521
|
+
turnId,
|
|
15522
|
+
summary: text,
|
|
15523
|
+
stats
|
|
15524
|
+
});
|
|
15525
|
+
})();
|
|
15517
15526
|
};
|
|
15518
|
-
var requestAiInsightH =
|
|
15527
|
+
var requestAiInsightH = (ctx, _cmd, parsed) => {
|
|
15519
15528
|
if (!ctx.pluginAuthToken) return;
|
|
15520
15529
|
if (typeof ctx.runtime.generateOneShot !== "function") return;
|
|
15521
15530
|
if (!parsed.prompt || !parsed.fileChangeId) {
|
|
15522
15531
|
log.trace("ai-insight", "missing prompt/fileChangeId \u2014 skipping");
|
|
15523
15532
|
return;
|
|
15524
15533
|
}
|
|
15525
|
-
const
|
|
15526
|
-
|
|
15527
|
-
|
|
15528
|
-
|
|
15529
|
-
|
|
15530
|
-
|
|
15531
|
-
|
|
15532
|
-
|
|
15533
|
-
|
|
15534
|
-
|
|
15535
|
-
|
|
15536
|
-
|
|
15537
|
-
|
|
15538
|
-
|
|
15539
|
-
|
|
15540
|
-
|
|
15534
|
+
const prompt = parsed.prompt;
|
|
15535
|
+
const fileChangeId = parsed.fileChangeId;
|
|
15536
|
+
const pluginAuthToken = ctx.pluginAuthToken;
|
|
15537
|
+
void (async () => {
|
|
15538
|
+
const text = await ctx.runtime.generateOneShot(prompt).catch((err) => {
|
|
15539
|
+
log.trace("ai-insight", "generateOneShot threw", err);
|
|
15540
|
+
return null;
|
|
15541
|
+
});
|
|
15542
|
+
if (!text) return;
|
|
15543
|
+
const { summary, reasoning, securityNote } = parseInsightText(text);
|
|
15544
|
+
await postAiResult({
|
|
15545
|
+
sessionId: ctx.sessionId,
|
|
15546
|
+
pluginId: ctx.pluginId,
|
|
15547
|
+
pluginAuthToken,
|
|
15548
|
+
kind: "insight",
|
|
15549
|
+
fileChangeId,
|
|
15550
|
+
summary,
|
|
15551
|
+
reasoning,
|
|
15552
|
+
securityNote
|
|
15553
|
+
});
|
|
15554
|
+
})();
|
|
15541
15555
|
};
|
|
15542
15556
|
function parseInsightText(text) {
|
|
15543
15557
|
const summaryMatch = text.match(/SUMMARY:\s*([\s\S]*?)(?=\n\s*(?:REASONING|SECURITY):|$)/i);
|
|
@@ -18290,7 +18304,7 @@ function checkChokidar() {
|
|
|
18290
18304
|
}
|
|
18291
18305
|
async function doctor(args2 = []) {
|
|
18292
18306
|
const json = args2.includes("--json");
|
|
18293
|
-
const cliVersion = true ? "2.23.
|
|
18307
|
+
const cliVersion = true ? "2.23.2" : "0.0.0-dev";
|
|
18294
18308
|
const apiBase = resolveApiBaseUrl();
|
|
18295
18309
|
const diagnosticId = (0, import_node_crypto5.randomUUID)();
|
|
18296
18310
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -18489,7 +18503,7 @@ async function completion(args2) {
|
|
|
18489
18503
|
// src/commands/version.ts
|
|
18490
18504
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
18491
18505
|
function version2() {
|
|
18492
|
-
const v = true ? "2.23.
|
|
18506
|
+
const v = true ? "2.23.2" : "unknown";
|
|
18493
18507
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
18494
18508
|
}
|
|
18495
18509
|
|
|
@@ -18717,7 +18731,7 @@ function checkForUpdates() {
|
|
|
18717
18731
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18718
18732
|
if (process.env.CI) return;
|
|
18719
18733
|
if (!process.stdout.isTTY) return;
|
|
18720
|
-
const current = true ? "2.23.
|
|
18734
|
+
const current = true ? "2.23.2" : null;
|
|
18721
18735
|
if (!current) return;
|
|
18722
18736
|
const cache = readCache();
|
|
18723
18737
|
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.2",
|
|
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",
|