codeam-cli 2.27.13 → 2.27.15
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 +46 -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.27.13] — 2026-06-06
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Flip ACP default ON for agents with adapter
|
|
12
|
+
|
|
13
|
+
## [2.27.12] — 2026-06-06
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **cli:** ACP runner full command coverage + history + rich-bubble feed
|
|
18
|
+
|
|
7
19
|
## [2.27.11] — 2026-06-06
|
|
8
20
|
|
|
9
21
|
### Fixed
|
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.27.
|
|
501
|
+
version: "2.27.15",
|
|
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",
|
|
@@ -5873,7 +5873,7 @@ function readAnonId() {
|
|
|
5873
5873
|
}
|
|
5874
5874
|
function superProperties() {
|
|
5875
5875
|
return {
|
|
5876
|
-
cliVersion: true ? "2.27.
|
|
5876
|
+
cliVersion: true ? "2.27.15" : "0.0.0-dev",
|
|
5877
5877
|
nodeVersion: process.version,
|
|
5878
5878
|
platform: process.platform,
|
|
5879
5879
|
arch: process.arch,
|
|
@@ -14549,8 +14549,11 @@ var AcpClient = class {
|
|
|
14549
14549
|
sessionId = null;
|
|
14550
14550
|
/**
|
|
14551
14551
|
* Spawn the adapter + perform the initial handshake (initialize
|
|
14552
|
-
* → newSession). Returns the ACP-assigned sessionId so the
|
|
14553
|
-
*
|
|
14552
|
+
* → newSession). Returns the ACP-assigned sessionId so the caller
|
|
14553
|
+
* can route subsequent prompts, plus optional model + tier that
|
|
14554
|
+
* some adapters (codex-acp today) surface on the newSession
|
|
14555
|
+
* response — used by the runner to enrich the welcome card
|
|
14556
|
+
* subtitle without an extra round-trip.
|
|
14554
14557
|
*/
|
|
14555
14558
|
async start() {
|
|
14556
14559
|
if (this.child) throw new Error("AcpClient already started");
|
|
@@ -14610,7 +14613,12 @@ var AcpClient = class {
|
|
|
14610
14613
|
"acpClient",
|
|
14611
14614
|
`newSession \u2190 ok sessionId=${newSession.sessionId.slice(0, 8)} model=${newSessionMeta.currentModelId ?? "?"} tier=${newSessionMeta.currentServiceTier ?? "?"}`
|
|
14612
14615
|
);
|
|
14613
|
-
return {
|
|
14616
|
+
return {
|
|
14617
|
+
sessionId: newSession.sessionId,
|
|
14618
|
+
initialize,
|
|
14619
|
+
model: newSessionMeta.currentModelId,
|
|
14620
|
+
tier: newSessionMeta.currentServiceTier
|
|
14621
|
+
};
|
|
14614
14622
|
}
|
|
14615
14623
|
/**
|
|
14616
14624
|
* Send a user prompt to the active session. Returns the
|
|
@@ -18218,12 +18226,34 @@ async function runAcpSession(opts) {
|
|
|
18218
18226
|
}
|
|
18219
18227
|
});
|
|
18220
18228
|
showInfo(`Starting ${opts.agent} via ACP adapter (${opts.adapter.requiresAgentBinary})\u2026`);
|
|
18221
|
-
const {
|
|
18229
|
+
const {
|
|
18230
|
+
sessionId: acpSessionId,
|
|
18231
|
+
initialize,
|
|
18232
|
+
model: handshakeModel,
|
|
18233
|
+
tier: handshakeTier
|
|
18234
|
+
} = await client2.start();
|
|
18222
18235
|
log.trace(
|
|
18223
18236
|
"acpRunner",
|
|
18224
18237
|
`adapter handshake ok protocolVersion=${initialize.protocolVersion} sessionId=${acpSessionId.slice(0, 8)}`
|
|
18225
18238
|
);
|
|
18226
18239
|
showSuccess(`${opts.agent} online (ACP) \u2014 awaiting prompts from mobile.`);
|
|
18240
|
+
void publisher.publishOutput({
|
|
18241
|
+
type: "agent_banner",
|
|
18242
|
+
agentId: opts.agent,
|
|
18243
|
+
// Match the legacy "Welcome back!" copy the Claude PTY banner
|
|
18244
|
+
// detector used as title fallback — keeps the chat surface
|
|
18245
|
+
// visually identical to the PTY path on first connect.
|
|
18246
|
+
title: "Welcome back!",
|
|
18247
|
+
// Subtitle = "<display name> · <model>" when we know the model
|
|
18248
|
+
// (codex-acp returns `currentModelId` on newSession; claude /
|
|
18249
|
+
// gemini adapters omit it). Falls back to `<display name>`
|
|
18250
|
+
// alone so the card never renders with a dangling separator.
|
|
18251
|
+
subtitle: buildBannerSubtitle(opts.agent, acpSessionId, handshakeModel, handshakeTier),
|
|
18252
|
+
// The cwd — same field the legacy banner pulled from Claude's
|
|
18253
|
+
// footer line under the ASCII art.
|
|
18254
|
+
path: opts.cwd,
|
|
18255
|
+
done: true
|
|
18256
|
+
});
|
|
18227
18257
|
const runtime = createInteractiveAgentStrategy(opts.agent, createOsStrategy());
|
|
18228
18258
|
const models = await runtime.listModels();
|
|
18229
18259
|
const history = new AcpHistory(publisher, { agent: opts.agent, acpSessionId });
|
|
@@ -18496,6 +18526,13 @@ function describeError(err) {
|
|
|
18496
18526
|
if (err instanceof Error) return err.message;
|
|
18497
18527
|
return String(err);
|
|
18498
18528
|
}
|
|
18529
|
+
function buildBannerSubtitle(agentId, acpSessionId, model, tier) {
|
|
18530
|
+
const meta = AGENT_REGISTRY[agentId];
|
|
18531
|
+
const displayName = meta?.displayName ?? agentId;
|
|
18532
|
+
if (model && tier) return `${displayName} \xB7 ${model} \xB7 ${tier}`;
|
|
18533
|
+
if (model) return `${displayName} \xB7 ${model}`;
|
|
18534
|
+
return `${displayName} \xB7 ACP \xB7 ${acpSessionId.slice(0, 8)}`;
|
|
18535
|
+
}
|
|
18499
18536
|
function buildLegacyContextForACP(opts, relay, runtime) {
|
|
18500
18537
|
return {
|
|
18501
18538
|
outputSvc: null,
|
|
@@ -24402,7 +24439,7 @@ function checkChokidar() {
|
|
|
24402
24439
|
}
|
|
24403
24440
|
async function doctor(args2 = []) {
|
|
24404
24441
|
const json = args2.includes("--json");
|
|
24405
|
-
const cliVersion = true ? "2.27.
|
|
24442
|
+
const cliVersion = true ? "2.27.15" : "0.0.0-dev";
|
|
24406
24443
|
const apiBase = resolveApiBaseUrl();
|
|
24407
24444
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
24408
24445
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -24601,7 +24638,7 @@ async function completion(args2) {
|
|
|
24601
24638
|
// src/commands/version.ts
|
|
24602
24639
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
24603
24640
|
function version2() {
|
|
24604
|
-
const v = true ? "2.27.
|
|
24641
|
+
const v = true ? "2.27.15" : "unknown";
|
|
24605
24642
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
24606
24643
|
}
|
|
24607
24644
|
|
|
@@ -24829,7 +24866,7 @@ function checkForUpdates() {
|
|
|
24829
24866
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
24830
24867
|
if (process.env.CI) return;
|
|
24831
24868
|
if (!process.stdout.isTTY) return;
|
|
24832
|
-
const current = true ? "2.27.
|
|
24869
|
+
const current = true ? "2.27.15" : null;
|
|
24833
24870
|
if (!current) return;
|
|
24834
24871
|
const cache = readCache();
|
|
24835
24872
|
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.27.
|
|
3
|
+
"version": "2.27.15",
|
|
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",
|