codeam-cli 2.73.1 → 2.73.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 +15 -0
- package/dist/index.js +50 -9
- 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.73.1] — 2026-09-02
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Env_parse — import a pasted .env instead of typing variables one by one (#675)
|
|
12
|
+
- **cli:** Fleet_migrate_box_image — re-point a sleeping box at :latest (#678)
|
|
13
|
+
|
|
14
|
+
### Documentation
|
|
15
|
+
|
|
16
|
+
- **shared:** Warn that Trello's "Secret" is not the token (#676)
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **cli:** Register a resumed child under its DEPLOY id, not the paired-session id (#679)
|
|
21
|
+
|
|
7
22
|
## [2.73.0] — 2026-09-02
|
|
8
23
|
|
|
9
24
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -8097,7 +8097,7 @@ function readAnonId() {
|
|
|
8097
8097
|
}
|
|
8098
8098
|
function superProperties() {
|
|
8099
8099
|
return {
|
|
8100
|
-
cliVersion: true ? "2.73.
|
|
8100
|
+
cliVersion: true ? "2.73.2" : "0.0.0-dev",
|
|
8101
8101
|
nodeVersion: process.version,
|
|
8102
8102
|
platform: process.platform,
|
|
8103
8103
|
arch: process.arch,
|
|
@@ -8339,7 +8339,7 @@ var http = __toESM(require("http"));
|
|
|
8339
8339
|
// package.json
|
|
8340
8340
|
var package_default = {
|
|
8341
8341
|
name: "codeam-cli",
|
|
8342
|
-
version: "2.73.
|
|
8342
|
+
version: "2.73.2",
|
|
8343
8343
|
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.",
|
|
8344
8344
|
type: "commonjs",
|
|
8345
8345
|
main: "dist/index.js",
|
|
@@ -9932,7 +9932,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
9932
9932
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
9933
9933
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
9934
9934
|
// pair/reconnect). Older backends ignore the extra field.
|
|
9935
|
-
..."2.73.
|
|
9935
|
+
..."2.73.2" ? { ideVersion: "2.73.2" } : {}
|
|
9936
9936
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
9937
9937
|
}
|
|
9938
9938
|
/**
|
|
@@ -22208,7 +22208,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
22208
22208
|
if (process.env.NODE_ENV === "test") return;
|
|
22209
22209
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
22210
22210
|
if (process.env.CI) return;
|
|
22211
|
-
const current2 = true ? "2.73.
|
|
22211
|
+
const current2 = true ? "2.73.2" : null;
|
|
22212
22212
|
if (!current2) return;
|
|
22213
22213
|
const cache = readCache();
|
|
22214
22214
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -22225,7 +22225,7 @@ function checkForUpdates() {
|
|
|
22225
22225
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
22226
22226
|
if (process.env.CI) return;
|
|
22227
22227
|
if (!process.stdout.isTTY) return;
|
|
22228
|
-
const current2 = true ? "2.73.
|
|
22228
|
+
const current2 = true ? "2.73.2" : null;
|
|
22229
22229
|
if (!current2) return;
|
|
22230
22230
|
const cache = readCache();
|
|
22231
22231
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -22248,7 +22248,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
|
22248
22248
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
22249
22249
|
var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
|
|
22250
22250
|
function currentCliVersion() {
|
|
22251
|
-
return true ? "2.73.
|
|
22251
|
+
return true ? "2.73.2" : null;
|
|
22252
22252
|
}
|
|
22253
22253
|
async function installedVersion(deps) {
|
|
22254
22254
|
const ls = await deps.run(
|
|
@@ -35747,6 +35747,17 @@ var AcpClient = class {
|
|
|
35747
35747
|
* them mid-turn and break turn A's idle watchdog (mobile "send-while-active"
|
|
35748
35748
|
* can fire two prompts back-to-back). See {@link prompt}. */
|
|
35749
35749
|
promptChain = Promise.resolve();
|
|
35750
|
+
/**
|
|
35751
|
+
* Coalescing state for {@link reprovisionMcp}. A burst of integration events
|
|
35752
|
+
* (the user linking several connectors in a row) used to fire one respawn per
|
|
35753
|
+
* event, each killing the adapter the previous had just started — see the
|
|
35754
|
+
* comment on that method.
|
|
35755
|
+
*/
|
|
35756
|
+
/** True once a start has fully succeeded (handshake + session). Distinguishes
|
|
35757
|
+
* "never started" (a programming error) from "the adapter died" (recoverable). */
|
|
35758
|
+
startedOnce = false;
|
|
35759
|
+
mcpReprovisionQueued = false;
|
|
35760
|
+
mcpReprovisionPending = null;
|
|
35750
35761
|
/** Last few adapter stderr lines — so a startup failure surfaces the REAL
|
|
35751
35762
|
* cause (e.g. gemini's `IneligibleTierError`) instead of a bare timeout. */
|
|
35752
35763
|
recentStderr = [];
|
|
@@ -35938,6 +35949,7 @@ var AcpClient = class {
|
|
|
35938
35949
|
}
|
|
35939
35950
|
this.startAbortReject = null;
|
|
35940
35951
|
this.sessionId = newSession.sessionId;
|
|
35952
|
+
this.startedOnce = true;
|
|
35941
35953
|
this.captureModelConfig(newSession.configOptions ?? []);
|
|
35942
35954
|
this.captureModes(newSession.modes ?? null);
|
|
35943
35955
|
const tier = nonEmptyString(
|
|
@@ -35998,7 +36010,16 @@ var AcpClient = class {
|
|
|
35998
36010
|
}
|
|
35999
36011
|
async runPrompt(input) {
|
|
36000
36012
|
if (!this.connection || !this.sessionId) {
|
|
36001
|
-
|
|
36013
|
+
if (!this.startedOnce) {
|
|
36014
|
+
throw new Error("AcpClient.prompt called before start()");
|
|
36015
|
+
}
|
|
36016
|
+
log.warn("acpClient", "adapter is gone \u2014 restarting it before this turn");
|
|
36017
|
+
this.stopping = false;
|
|
36018
|
+
await this.startOnce();
|
|
36019
|
+
if (!this.connection || !this.sessionId) {
|
|
36020
|
+
throw new Error("AcpClient.prompt: adapter could not be restarted");
|
|
36021
|
+
}
|
|
36022
|
+
log.info("acpClient", "adapter restarted \u2014 resuming the turn");
|
|
36002
36023
|
}
|
|
36003
36024
|
await ensureHeadroomProxyReady(makeRealProxySupervisorDeps()).catch(() => void 0);
|
|
36004
36025
|
const blocks = typeof input === "string" ? [{ type: "text", text: input }] : input;
|
|
@@ -36244,6 +36265,26 @@ var AcpClient = class {
|
|
|
36244
36265
|
* the caller can tell the user "active now" vs "active on next restart".
|
|
36245
36266
|
*/
|
|
36246
36267
|
async reprovisionMcp(servers) {
|
|
36268
|
+
this.opts.mcpServers = servers;
|
|
36269
|
+
if (!this.connection || !this.sessionId) return "deferred";
|
|
36270
|
+
this.mcpReprovisionPending = servers;
|
|
36271
|
+
if (this.mcpReprovisionQueued) return "deferred";
|
|
36272
|
+
this.mcpReprovisionQueued = true;
|
|
36273
|
+
const run = this.promptChain.then(() => {
|
|
36274
|
+
this.mcpReprovisionQueued = false;
|
|
36275
|
+
const latest = this.mcpReprovisionPending ?? servers;
|
|
36276
|
+
this.mcpReprovisionPending = null;
|
|
36277
|
+
return this.runReprovisionMcp(latest);
|
|
36278
|
+
});
|
|
36279
|
+
this.promptChain = run.then(
|
|
36280
|
+
() => void 0,
|
|
36281
|
+
() => void 0
|
|
36282
|
+
);
|
|
36283
|
+
return run;
|
|
36284
|
+
}
|
|
36285
|
+
/** The actual respawn. Only ever called from {@link reprovisionMcp}'s queued
|
|
36286
|
+
* slot, so it can assume no turn and no other respawn is running. */
|
|
36287
|
+
async runReprovisionMcp(servers) {
|
|
36247
36288
|
this.opts.mcpServers = servers;
|
|
36248
36289
|
const prevConversationId = this.sessionId;
|
|
36249
36290
|
if (!this.connection || !prevConversationId) return "deferred";
|
|
@@ -47024,7 +47065,7 @@ function checkChokidar() {
|
|
|
47024
47065
|
}
|
|
47025
47066
|
async function doctor(args2 = []) {
|
|
47026
47067
|
const json = args2.includes("--json");
|
|
47027
|
-
const cliVersion = true ? "2.73.
|
|
47068
|
+
const cliVersion = true ? "2.73.2" : "0.0.0-dev";
|
|
47028
47069
|
const apiBase2 = resolveApiBaseUrl();
|
|
47029
47070
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
47030
47071
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -47415,7 +47456,7 @@ async function mcpRun(args2) {
|
|
|
47415
47456
|
// src/commands/version.ts
|
|
47416
47457
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
47417
47458
|
function version2() {
|
|
47418
|
-
const v = true ? "2.73.
|
|
47459
|
+
const v = true ? "2.73.2" : "unknown";
|
|
47419
47460
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
47420
47461
|
}
|
|
47421
47462
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.73.
|
|
3
|
+
"version": "2.73.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",
|