codeam-cli 2.61.15 → 2.61.16
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 +65 -12
- 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.61.15] — 2026-07-17
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** Integration category field + getIntegrationsByCategory
|
|
12
|
+
|
|
7
13
|
## [2.61.14] — 2026-07-17
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -6024,7 +6024,7 @@ function readAnonId() {
|
|
|
6024
6024
|
}
|
|
6025
6025
|
function superProperties() {
|
|
6026
6026
|
return {
|
|
6027
|
-
cliVersion: true ? "2.61.
|
|
6027
|
+
cliVersion: true ? "2.61.16" : "0.0.0-dev",
|
|
6028
6028
|
nodeVersion: process.version,
|
|
6029
6029
|
platform: process.platform,
|
|
6030
6030
|
arch: process.arch,
|
|
@@ -6205,7 +6205,7 @@ var os4 = __toESM(require("os"));
|
|
|
6205
6205
|
// package.json
|
|
6206
6206
|
var package_default = {
|
|
6207
6207
|
name: "codeam-cli",
|
|
6208
|
-
version: "2.61.
|
|
6208
|
+
version: "2.61.16",
|
|
6209
6209
|
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.",
|
|
6210
6210
|
type: "commonjs",
|
|
6211
6211
|
main: "dist/index.js",
|
|
@@ -7348,7 +7348,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
7348
7348
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
7349
7349
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
7350
7350
|
// pair/reconnect). Older backends ignore the extra field.
|
|
7351
|
-
..."2.61.
|
|
7351
|
+
..."2.61.16" ? { ideVersion: "2.61.16" } : {}
|
|
7352
7352
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
7353
7353
|
}
|
|
7354
7354
|
/**
|
|
@@ -17949,7 +17949,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17949
17949
|
if (process.env.NODE_ENV === "test") return;
|
|
17950
17950
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17951
17951
|
if (process.env.CI) return;
|
|
17952
|
-
const current = true ? "2.61.
|
|
17952
|
+
const current = true ? "2.61.16" : null;
|
|
17953
17953
|
if (!current) return;
|
|
17954
17954
|
const cache = readCache();
|
|
17955
17955
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17966,7 +17966,7 @@ function checkForUpdates() {
|
|
|
17966
17966
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17967
17967
|
if (process.env.CI) return;
|
|
17968
17968
|
if (!process.stdout.isTTY) return;
|
|
17969
|
-
const current = true ? "2.61.
|
|
17969
|
+
const current = true ? "2.61.16" : null;
|
|
17970
17970
|
if (!current) return;
|
|
17971
17971
|
const cache = readCache();
|
|
17972
17972
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17986,7 +17986,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17986
17986
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17987
17987
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17988
17988
|
function currentCliVersion() {
|
|
17989
|
-
return true ? "2.61.
|
|
17989
|
+
return true ? "2.61.16" : null;
|
|
17990
17990
|
}
|
|
17991
17991
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17992
17992
|
return new Promise((resolve8) => {
|
|
@@ -24490,12 +24490,35 @@ var REGISTRY = {
|
|
|
24490
24490
|
}
|
|
24491
24491
|
})
|
|
24492
24492
|
};
|
|
24493
|
+
var resolvedAdapterCache = /* @__PURE__ */ new Map();
|
|
24493
24494
|
function getAcpAdapter(agent) {
|
|
24495
|
+
const cached2 = resolvedAdapterCache.get(agent);
|
|
24496
|
+
if (cached2) return cached2;
|
|
24494
24497
|
const factory = REGISTRY[agent];
|
|
24495
|
-
|
|
24498
|
+
if (!factory) return null;
|
|
24499
|
+
const spec = factory();
|
|
24500
|
+
if (spec) resolvedAdapterCache.set(agent, spec);
|
|
24501
|
+
return spec;
|
|
24496
24502
|
}
|
|
24497
24503
|
function requiresAcp(agent) {
|
|
24498
|
-
return
|
|
24504
|
+
return Object.prototype.hasOwnProperty.call(REGISTRY, agent);
|
|
24505
|
+
}
|
|
24506
|
+
var DEFAULT_ADAPTER_RETRY_TIMEOUT_MS = 8e3;
|
|
24507
|
+
var DEFAULT_ADAPTER_RETRY_POLL_MS = 750;
|
|
24508
|
+
async function resolveAcpAdapterWithRetry(agent, opts = {}) {
|
|
24509
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_ADAPTER_RETRY_TIMEOUT_MS;
|
|
24510
|
+
const pollMs = opts.pollMs ?? DEFAULT_ADAPTER_RETRY_POLL_MS;
|
|
24511
|
+
const now = opts.now ?? Date.now;
|
|
24512
|
+
const sleep5 = opts.sleep ?? ((ms) => new Promise((resolve8) => setTimeout(resolve8, ms)));
|
|
24513
|
+
let spec = getAcpAdapter(agent);
|
|
24514
|
+
if (spec) return spec;
|
|
24515
|
+
const deadline = now() + timeoutMs;
|
|
24516
|
+
while (now() < deadline) {
|
|
24517
|
+
await sleep5(pollMs);
|
|
24518
|
+
spec = getAcpAdapter(agent);
|
|
24519
|
+
if (spec) return spec;
|
|
24520
|
+
}
|
|
24521
|
+
return null;
|
|
24499
24522
|
}
|
|
24500
24523
|
|
|
24501
24524
|
// src/agents/acp/runner.ts
|
|
@@ -34798,8 +34821,35 @@ async function start(requestedAgent) {
|
|
|
34798
34821
|
}
|
|
34799
34822
|
}
|
|
34800
34823
|
if (requiresAcp(session.agent)) {
|
|
34801
|
-
|
|
34802
|
-
if (!adapter
|
|
34824
|
+
let adapter = getAcpAdapter(session.agent);
|
|
34825
|
+
if (!adapter) {
|
|
34826
|
+
adapter = await resolveAcpAdapterWithRetry(session.agent);
|
|
34827
|
+
}
|
|
34828
|
+
if (!adapter) {
|
|
34829
|
+
log.error(
|
|
34830
|
+
"acp",
|
|
34831
|
+
`[acp] REQUIRED adapter unresolvable \u2014 refusing PTY downgrade (agent=${session.agent})`
|
|
34832
|
+
);
|
|
34833
|
+
const failureMsg = `${AGENT_REGISTRY[session.agent].displayName}'s ACP adapter is unavailable \u2014 the session cannot start; redeploy or retry.`;
|
|
34834
|
+
if (session.pluginAuthToken) {
|
|
34835
|
+
await surfaceStartupFailure({
|
|
34836
|
+
agent: session.agent,
|
|
34837
|
+
pluginId,
|
|
34838
|
+
detail: failureMsg,
|
|
34839
|
+
recentStderr: "",
|
|
34840
|
+
publisher: new AcpPublisher({
|
|
34841
|
+
sessionId: session.id,
|
|
34842
|
+
pluginId,
|
|
34843
|
+
pluginAuthToken: session.pluginAuthToken,
|
|
34844
|
+
refreshAuthToken: () => fetchCurrentPluginAuthToken(session.id, pluginId, session.pollSecret)
|
|
34845
|
+
})
|
|
34846
|
+
});
|
|
34847
|
+
return;
|
|
34848
|
+
}
|
|
34849
|
+
showError(failureMsg);
|
|
34850
|
+
process.exit(1);
|
|
34851
|
+
}
|
|
34852
|
+
if (!session.pluginAuthToken) {
|
|
34803
34853
|
showError(
|
|
34804
34854
|
`${AGENT_REGISTRY[session.agent].displayName} requires a paired session with an auth token. Re-pair with \`codeam pair\` to continue.`
|
|
34805
34855
|
);
|
|
@@ -34825,6 +34875,9 @@ async function start(requestedAgent) {
|
|
|
34825
34875
|
});
|
|
34826
34876
|
return;
|
|
34827
34877
|
}
|
|
34878
|
+
if (requiresAcp(session.agent)) {
|
|
34879
|
+
log.error("acp", `[anomaly] acp-required agent on PTY runtime (agent=${session.agent})`);
|
|
34880
|
+
}
|
|
34828
34881
|
const runtime = createRuntimeStrategy(session.agent);
|
|
34829
34882
|
const historySvc = new HistoryService(runtime, pluginId, cwd, {
|
|
34830
34883
|
pluginAuthToken: session.pluginAuthToken
|
|
@@ -37545,7 +37598,7 @@ function checkChokidar() {
|
|
|
37545
37598
|
}
|
|
37546
37599
|
async function doctor(args2 = []) {
|
|
37547
37600
|
const json = args2.includes("--json");
|
|
37548
|
-
const cliVersion = true ? "2.61.
|
|
37601
|
+
const cliVersion = true ? "2.61.16" : "0.0.0-dev";
|
|
37549
37602
|
const apiBase2 = resolveApiBaseUrl();
|
|
37550
37603
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
37551
37604
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -38056,7 +38109,7 @@ async function mcpRun(args2) {
|
|
|
38056
38109
|
// src/commands/version.ts
|
|
38057
38110
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
38058
38111
|
function version2() {
|
|
38059
|
-
const v = true ? "2.61.
|
|
38112
|
+
const v = true ? "2.61.16" : "unknown";
|
|
38060
38113
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
38061
38114
|
}
|
|
38062
38115
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.61.
|
|
3
|
+
"version": "2.61.16",
|
|
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",
|