codeam-cli 2.60.28 → 2.60.31
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 +16 -0
- package/dist/index.js +47 -58
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ 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.60.29] — 2026-07-10
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** Add CODERABBIT_* to USER_EVENTS (fix A↔B shared-drift)
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **cli:** Route "Authentication required" to the re-auth bubble (kimi codespace)
|
|
16
|
+
|
|
17
|
+
## [2.60.28] — 2026-07-09
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **cli:** Coderabbit — don't emit status snapshot on review (clobbered linked)
|
|
22
|
+
|
|
7
23
|
## [2.60.27] — 2026-07-09
|
|
8
24
|
|
|
9
25
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -591,7 +591,12 @@ var USER_EVENTS = {
|
|
|
591
591
|
AGENT_INSTALL_FAILED: "agent_install_failed",
|
|
592
592
|
CLI_UPDATE_PROGRESS: "cli_update_progress",
|
|
593
593
|
CLI_UPDATE_FAILED: "cli_update_failed",
|
|
594
|
-
BATON_STATE: "baton_state"
|
|
594
|
+
BATON_STATE: "baton_state",
|
|
595
|
+
// CodeRabbit reviewer — the CLI posts these to /api/coderabbit/events; the
|
|
596
|
+
// backend re-publishes them on the per-user SSE bus (mirrored in repo A).
|
|
597
|
+
CODERABBIT_PROGRESS: "coderabbit_progress",
|
|
598
|
+
CODERABBIT_STATUS: "coderabbit_status",
|
|
599
|
+
CODERABBIT_REVIEW: "coderabbit_review"
|
|
595
600
|
};
|
|
596
601
|
|
|
597
602
|
// ../../packages/shared/src/preview-prompts.ts
|
|
@@ -5684,7 +5689,7 @@ function readAnonId() {
|
|
|
5684
5689
|
}
|
|
5685
5690
|
function superProperties() {
|
|
5686
5691
|
return {
|
|
5687
|
-
cliVersion: true ? "2.60.
|
|
5692
|
+
cliVersion: true ? "2.60.31" : "0.0.0-dev",
|
|
5688
5693
|
nodeVersion: process.version,
|
|
5689
5694
|
platform: process.platform,
|
|
5690
5695
|
arch: process.arch,
|
|
@@ -5865,7 +5870,7 @@ var os4 = __toESM(require("os"));
|
|
|
5865
5870
|
// package.json
|
|
5866
5871
|
var package_default = {
|
|
5867
5872
|
name: "codeam-cli",
|
|
5868
|
-
version: "2.60.
|
|
5873
|
+
version: "2.60.31",
|
|
5869
5874
|
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.",
|
|
5870
5875
|
type: "commonjs",
|
|
5871
5876
|
main: "dist/index.js",
|
|
@@ -6958,7 +6963,7 @@ var CommandRelayService = class {
|
|
|
6958
6963
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
6959
6964
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
6960
6965
|
// pair/reconnect). Older backends ignore the extra field.
|
|
6961
|
-
..."2.60.
|
|
6966
|
+
..."2.60.31" ? { ideVersion: "2.60.31" } : {}
|
|
6962
6967
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
6963
6968
|
}
|
|
6964
6969
|
/**
|
|
@@ -15650,7 +15655,7 @@ async function configureCoderabbit(input, deps = {}) {
|
|
|
15650
15655
|
}
|
|
15651
15656
|
|
|
15652
15657
|
// src/commands/host-agent.ts
|
|
15653
|
-
var
|
|
15658
|
+
var import_node_child_process22 = require("child_process");
|
|
15654
15659
|
var os35 = __toESM(require("os"));
|
|
15655
15660
|
var fs41 = __toESM(require("fs"));
|
|
15656
15661
|
var path44 = __toESM(require("path"));
|
|
@@ -16069,7 +16074,6 @@ async function prepareWorkspace(repoOrPath, deployId, cloneToken) {
|
|
|
16069
16074
|
var fs35 = __toESM(require("fs"));
|
|
16070
16075
|
var os31 = __toESM(require("os"));
|
|
16071
16076
|
var path39 = __toESM(require("path"));
|
|
16072
|
-
var import_node_child_process17 = require("child_process");
|
|
16073
16077
|
var PUBLIC_TO_INTERNAL_AGENT = {
|
|
16074
16078
|
claude_code: "claude",
|
|
16075
16079
|
claude: "claude",
|
|
@@ -16183,24 +16187,9 @@ var kimiProvisioner = {
|
|
|
16183
16187
|
return { KIMI_API_KEY: auth.value };
|
|
16184
16188
|
}
|
|
16185
16189
|
credentialsFiles.forEach((f) => writeFile0600(f, auth.value));
|
|
16186
|
-
provisionKimiConfig(home);
|
|
16187
16190
|
return {};
|
|
16188
16191
|
}
|
|
16189
16192
|
};
|
|
16190
|
-
function provisionKimiConfig(home) {
|
|
16191
|
-
try {
|
|
16192
|
-
const osStrat = createOsStrategy();
|
|
16193
|
-
const binary = osStrat.findInPath("kimi");
|
|
16194
|
-
if (!binary) return;
|
|
16195
|
-
const launch = osStrat.buildLaunch(binary, ["login"]);
|
|
16196
|
-
(0, import_node_child_process17.spawnSync)(launch.cmd, launch.args, {
|
|
16197
|
-
stdio: "ignore",
|
|
16198
|
-
timeout: 6e4,
|
|
16199
|
-
env: { ...process.env, HOME: home, USERPROFILE: home }
|
|
16200
|
-
});
|
|
16201
|
-
} catch {
|
|
16202
|
-
}
|
|
16203
|
-
}
|
|
16204
16193
|
var coderabbitProvisioner = {
|
|
16205
16194
|
write(auth, home) {
|
|
16206
16195
|
const dir = path39.join(home, ".coderabbit");
|
|
@@ -16251,7 +16240,7 @@ function provisionAgentCredentials(publicAgentId, auth, homeDir2 = os31.homedir(
|
|
|
16251
16240
|
}
|
|
16252
16241
|
|
|
16253
16242
|
// src/commands/host/git-tooling.ts
|
|
16254
|
-
var
|
|
16243
|
+
var import_node_child_process17 = require("child_process");
|
|
16255
16244
|
var fs36 = __toESM(require("fs"));
|
|
16256
16245
|
var os32 = __toESM(require("os"));
|
|
16257
16246
|
var path40 = __toESM(require("path"));
|
|
@@ -16365,7 +16354,7 @@ var defaultGitToolingRunner = {
|
|
|
16365
16354
|
which(cmd) {
|
|
16366
16355
|
try {
|
|
16367
16356
|
const probe = process.platform === "win32" ? "where" : "which";
|
|
16368
|
-
(0,
|
|
16357
|
+
(0, import_node_child_process17.execFileSync)(probe, [cmd], { stdio: "ignore" });
|
|
16369
16358
|
return true;
|
|
16370
16359
|
} catch {
|
|
16371
16360
|
return false;
|
|
@@ -16373,7 +16362,7 @@ var defaultGitToolingRunner = {
|
|
|
16373
16362
|
},
|
|
16374
16363
|
run(cmd, args2, opts = {}) {
|
|
16375
16364
|
return new Promise((resolve7) => {
|
|
16376
|
-
const child = (0,
|
|
16365
|
+
const child = (0, import_node_child_process17.spawn)(cmd, args2, {
|
|
16377
16366
|
stdio: [opts.input !== void 0 ? "pipe" : "ignore", "ignore", "pipe"]
|
|
16378
16367
|
});
|
|
16379
16368
|
let stderr = "";
|
|
@@ -16527,12 +16516,12 @@ var HeadroomStatsReporter = class {
|
|
|
16527
16516
|
};
|
|
16528
16517
|
|
|
16529
16518
|
// src/commands/host/os-packages.ts
|
|
16530
|
-
var
|
|
16519
|
+
var import_node_child_process18 = require("child_process");
|
|
16531
16520
|
var PM_INSTALL_TIMEOUT_MS = 18e4;
|
|
16532
16521
|
var defaultHeadroomRunner = {
|
|
16533
16522
|
which(cmd) {
|
|
16534
16523
|
try {
|
|
16535
|
-
(0,
|
|
16524
|
+
(0, import_node_child_process18.execFileSync)("which", [cmd], { stdio: "ignore" });
|
|
16536
16525
|
return true;
|
|
16537
16526
|
} catch {
|
|
16538
16527
|
return false;
|
|
@@ -16541,7 +16530,7 @@ var defaultHeadroomRunner = {
|
|
|
16541
16530
|
run(cmd, args2, opts = {}) {
|
|
16542
16531
|
return new Promise((resolve7) => {
|
|
16543
16532
|
const spawnEnv = opts.env ?? process.env;
|
|
16544
|
-
const child = (0,
|
|
16533
|
+
const child = (0, import_node_child_process18.spawn)(cmd, args2, { stdio: ["ignore", "pipe", "pipe"], env: spawnEnv });
|
|
16545
16534
|
let stderrBuf = "";
|
|
16546
16535
|
let stdoutBuf = "";
|
|
16547
16536
|
let settled = false;
|
|
@@ -17048,14 +17037,14 @@ async function setupHeadroomForSelfHosted(agent, runner = defaultHeadroomRunner,
|
|
|
17048
17037
|
}
|
|
17049
17038
|
|
|
17050
17039
|
// src/commands/host/self-update.ts
|
|
17051
|
-
var
|
|
17040
|
+
var import_node_child_process20 = require("child_process");
|
|
17052
17041
|
|
|
17053
17042
|
// src/lib/updateNotifier.ts
|
|
17054
17043
|
var fs39 = __toESM(require("fs"));
|
|
17055
17044
|
var os34 = __toESM(require("os"));
|
|
17056
17045
|
var path43 = __toESM(require("path"));
|
|
17057
17046
|
var https6 = __toESM(require("https"));
|
|
17058
|
-
var
|
|
17047
|
+
var import_node_child_process19 = require("child_process");
|
|
17059
17048
|
var import_picocolors3 = __toESM(require("picocolors"));
|
|
17060
17049
|
var PKG_NAME = "codeam-cli";
|
|
17061
17050
|
var REGISTRY_URL = `https://registry.npmjs.org/${PKG_NAME}/latest`;
|
|
@@ -17149,7 +17138,7 @@ function notifyIfStale(currentVersion, latest) {
|
|
|
17149
17138
|
}
|
|
17150
17139
|
function isLinkedInstall() {
|
|
17151
17140
|
try {
|
|
17152
|
-
const root = (0,
|
|
17141
|
+
const root = (0, import_node_child_process19.execSync)("npm root -g", {
|
|
17153
17142
|
encoding: "utf8",
|
|
17154
17143
|
stdio: ["ignore", "pipe", "ignore"],
|
|
17155
17144
|
timeout: 2e3
|
|
@@ -17177,7 +17166,7 @@ function maybeAutoUpdate(currentVersion, latest) {
|
|
|
17177
17166
|
|
|
17178
17167
|
`
|
|
17179
17168
|
);
|
|
17180
|
-
const install = (0,
|
|
17169
|
+
const install = (0, import_node_child_process19.spawnSync)("npm", ["install", "-g", `${PKG_NAME}@latest`], {
|
|
17181
17170
|
stdio: "inherit",
|
|
17182
17171
|
env: process.env
|
|
17183
17172
|
});
|
|
@@ -17198,7 +17187,7 @@ function maybeAutoUpdate(currentVersion, latest) {
|
|
|
17198
17187
|
process.stderr.write(` ${import_picocolors3.default.green("\u2713")} Updated. Resuming session...
|
|
17199
17188
|
|
|
17200
17189
|
`);
|
|
17201
|
-
const child = (0,
|
|
17190
|
+
const child = (0, import_node_child_process19.spawnSync)("codeam", process.argv.slice(2), {
|
|
17202
17191
|
stdio: "inherit",
|
|
17203
17192
|
env: process.env
|
|
17204
17193
|
});
|
|
@@ -17208,7 +17197,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17208
17197
|
if (process.env.NODE_ENV === "test") return;
|
|
17209
17198
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17210
17199
|
if (process.env.CI) return;
|
|
17211
|
-
const current = true ? "2.60.
|
|
17200
|
+
const current = true ? "2.60.31" : null;
|
|
17212
17201
|
if (!current) return;
|
|
17213
17202
|
const cache = readCache();
|
|
17214
17203
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17225,7 +17214,7 @@ function checkForUpdates() {
|
|
|
17225
17214
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17226
17215
|
if (process.env.CI) return;
|
|
17227
17216
|
if (!process.stdout.isTTY) return;
|
|
17228
|
-
const current = true ? "2.60.
|
|
17217
|
+
const current = true ? "2.60.31" : null;
|
|
17229
17218
|
if (!current) return;
|
|
17230
17219
|
const cache = readCache();
|
|
17231
17220
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17245,11 +17234,11 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17245
17234
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17246
17235
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17247
17236
|
function currentCliVersion() {
|
|
17248
|
-
return true ? "2.60.
|
|
17237
|
+
return true ? "2.60.31" : null;
|
|
17249
17238
|
}
|
|
17250
17239
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17251
17240
|
return new Promise((resolve7) => {
|
|
17252
|
-
(0,
|
|
17241
|
+
(0, import_node_child_process20.execFile)(cmd, args2, { timeout: timeoutMs }, (err, stdout, stderr) => {
|
|
17253
17242
|
const code = err && typeof err.code === "number" ? err.code : err ? null : 0;
|
|
17254
17243
|
resolve7({ code, stdout: stdout ?? "", stderr: stderr ?? "" });
|
|
17255
17244
|
});
|
|
@@ -17311,11 +17300,11 @@ async function runSelfUpdate() {
|
|
|
17311
17300
|
}
|
|
17312
17301
|
|
|
17313
17302
|
// src/commands/host/teardown.ts
|
|
17314
|
-
var
|
|
17303
|
+
var import_node_child_process21 = require("child_process");
|
|
17315
17304
|
var fs40 = __toESM(require("fs"));
|
|
17316
17305
|
var defaultDisableService = () => {
|
|
17317
17306
|
try {
|
|
17318
|
-
(0,
|
|
17307
|
+
(0, import_node_child_process21.execFileSync)("systemctl", ["disable", "--now", "codeam-host-agent"], { stdio: "ignore" });
|
|
17319
17308
|
} catch {
|
|
17320
17309
|
}
|
|
17321
17310
|
};
|
|
@@ -17323,7 +17312,7 @@ var defaultTeardownHeadroom = () => {
|
|
|
17323
17312
|
try {
|
|
17324
17313
|
const kind = JSON.parse(fs40.readFileSync(headroomConfigPath(), "utf8")).agent;
|
|
17325
17314
|
if (kind) {
|
|
17326
|
-
(0,
|
|
17315
|
+
(0, import_node_child_process21.execFileSync)("headroom", ["unwrap", kind], { stdio: "ignore", timeout: 15e3 });
|
|
17327
17316
|
}
|
|
17328
17317
|
} catch {
|
|
17329
17318
|
}
|
|
@@ -17481,7 +17470,7 @@ var CONTROL_AGENT_META = {
|
|
|
17481
17470
|
headroomWrappable: false,
|
|
17482
17471
|
acp: false
|
|
17483
17472
|
};
|
|
17484
|
-
var defaultSpawner = (env, cwd, args2 = []) => (0,
|
|
17473
|
+
var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process22.spawn)(process.execPath, [process.argv[1], "pair-auto", ...args2], {
|
|
17485
17474
|
cwd,
|
|
17486
17475
|
env: { ...process.env, ...env },
|
|
17487
17476
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -17961,7 +17950,7 @@ var HostAgentSupervisor = class {
|
|
|
17961
17950
|
runAgentInstall(script) {
|
|
17962
17951
|
return new Promise((resolve7) => {
|
|
17963
17952
|
const home = process.env.HOME || os35.homedir();
|
|
17964
|
-
const child = (0,
|
|
17953
|
+
const child = (0, import_node_child_process22.spawn)("sh", ["-c", script], {
|
|
17965
17954
|
env: { ...process.env, HOME: home },
|
|
17966
17955
|
stdio: ["ignore", "pipe", "pipe"]
|
|
17967
17956
|
});
|
|
@@ -18269,11 +18258,11 @@ function makeRealApplyBudgetDeps() {
|
|
|
18269
18258
|
var import_child_process14 = require("child_process");
|
|
18270
18259
|
var import_fs = require("fs");
|
|
18271
18260
|
var import_promises = __toESM(require("fs/promises"));
|
|
18272
|
-
var
|
|
18261
|
+
var import_os8 = __toESM(require("os"));
|
|
18273
18262
|
var import_path4 = __toESM(require("path"));
|
|
18274
18263
|
var import_promises2 = require("stream/promises");
|
|
18275
18264
|
var import_which = __toESM(require("which"));
|
|
18276
|
-
var CACHED_BINARY = import_path4.default.join(
|
|
18265
|
+
var CACHED_BINARY = import_path4.default.join(import_os8.default.homedir(), ".codeam", "bin", "cloudflared");
|
|
18277
18266
|
async function resolveCloudflared(opts = {}) {
|
|
18278
18267
|
try {
|
|
18279
18268
|
return await (0, import_which.default)("cloudflared");
|
|
@@ -18373,7 +18362,7 @@ function decodeTunnelToken(token) {
|
|
|
18373
18362
|
}
|
|
18374
18363
|
async function spawnNamedTunnel(bin, token, port) {
|
|
18375
18364
|
const creds = decodeTunnelToken(token);
|
|
18376
|
-
const credDir = import_path4.default.join(
|
|
18365
|
+
const credDir = import_path4.default.join(import_os8.default.homedir(), ".codeam");
|
|
18377
18366
|
await import_promises.default.mkdir(credDir, { recursive: true });
|
|
18378
18367
|
const credFile = import_path4.default.join(credDir, `tunnel-${creds.TunnelID}.json`);
|
|
18379
18368
|
await import_promises.default.writeFile(credFile, JSON.stringify(creds), { mode: 384 });
|
|
@@ -22427,7 +22416,7 @@ async function pairAuto(args2) {
|
|
|
22427
22416
|
}
|
|
22428
22417
|
|
|
22429
22418
|
// src/services/headroom/wrap-launch.ts
|
|
22430
|
-
var
|
|
22419
|
+
var import_node_child_process23 = require("child_process");
|
|
22431
22420
|
function wrapWithHeadroom(launch, opts) {
|
|
22432
22421
|
if (!opts.enabled || !opts.headroomPresent) return launch;
|
|
22433
22422
|
return {
|
|
@@ -22440,7 +22429,7 @@ var _present;
|
|
|
22440
22429
|
function headroomPresent() {
|
|
22441
22430
|
if (_present !== void 0) return Promise.resolve(_present);
|
|
22442
22431
|
return new Promise((resolve7) => {
|
|
22443
|
-
(0,
|
|
22432
|
+
(0, import_node_child_process23.execFile)("headroom", ["--version"], (err) => {
|
|
22444
22433
|
_present = !err;
|
|
22445
22434
|
resolve7(_present);
|
|
22446
22435
|
});
|
|
@@ -22794,7 +22783,7 @@ var path60 = __toESM(require("path"));
|
|
|
22794
22783
|
|
|
22795
22784
|
// src/agents/acp/agent-binary.ts
|
|
22796
22785
|
var import_fs4 = __toESM(require("fs"));
|
|
22797
|
-
var
|
|
22786
|
+
var import_os10 = __toESM(require("os"));
|
|
22798
22787
|
var import_path8 = __toESM(require("path"));
|
|
22799
22788
|
var import_child_process25 = require("child_process");
|
|
22800
22789
|
function currentPlatformKey() {
|
|
@@ -22890,7 +22879,7 @@ function resolveCursorAgentBinary(deps = {}) {
|
|
|
22890
22879
|
const exe = import_path8.default.win32.join(localAppData, "cursor-agent", "cursor-agent.exe");
|
|
22891
22880
|
return existsSync26(exe) ? exe : null;
|
|
22892
22881
|
}
|
|
22893
|
-
const home = deps.homedir ??
|
|
22882
|
+
const home = deps.homedir ?? import_os10.default.homedir();
|
|
22894
22883
|
const unix = import_path8.default.posix.join(home, ".local", "bin", "cursor-agent");
|
|
22895
22884
|
return existsSync26(unix) ? unix : null;
|
|
22896
22885
|
}
|
|
@@ -22964,7 +22953,7 @@ async function waitForAdapterModuleGraph(command2, args2, opts = {}) {
|
|
|
22964
22953
|
}
|
|
22965
22954
|
|
|
22966
22955
|
// src/agents/kimi/installer.ts
|
|
22967
|
-
var
|
|
22956
|
+
var import_node_child_process24 = require("child_process");
|
|
22968
22957
|
var import_node_os6 = require("os");
|
|
22969
22958
|
var import_node_path6 = require("path");
|
|
22970
22959
|
var INSTALL_URL2 = "https://code.kimi.com/kimi-code/install.sh";
|
|
@@ -22972,7 +22961,7 @@ function kimiBinDir() {
|
|
|
22972
22961
|
return (0, import_node_path6.join)(process.env.KIMI_CODE_HOME || (0, import_node_path6.join)((0, import_node_os6.homedir)(), ".kimi-code"), "bin");
|
|
22973
22962
|
}
|
|
22974
22963
|
function kimiRuns() {
|
|
22975
|
-
const r = (0,
|
|
22964
|
+
const r = (0, import_node_child_process24.spawnSync)("kimi", ["--version"], { stdio: "ignore", timeout: 15e3 });
|
|
22976
22965
|
return !r.error && r.status === 0;
|
|
22977
22966
|
}
|
|
22978
22967
|
function augmentPath2() {
|
|
@@ -22982,7 +22971,7 @@ function augmentPath2() {
|
|
|
22982
22971
|
}
|
|
22983
22972
|
async function runInstaller2() {
|
|
22984
22973
|
return new Promise((resolve7) => {
|
|
22985
|
-
const proc = (0,
|
|
22974
|
+
const proc = (0, import_node_child_process24.spawn)("sh", ["-c", `curl -fsSL ${INSTALL_URL2} | bash`], { stdio: "inherit" });
|
|
22986
22975
|
proc.on("close", (code) => resolve7(code === 0));
|
|
22987
22976
|
proc.on("error", () => resolve7(false));
|
|
22988
22977
|
});
|
|
@@ -23719,7 +23708,7 @@ var HistoryService = class _HistoryService {
|
|
|
23719
23708
|
};
|
|
23720
23709
|
|
|
23721
23710
|
// src/agents/acp/client.ts
|
|
23722
|
-
var
|
|
23711
|
+
var import_node_child_process25 = require("child_process");
|
|
23723
23712
|
var fs57 = __toESM(require("fs/promises"));
|
|
23724
23713
|
var fsSync = __toESM(require("fs"));
|
|
23725
23714
|
var os46 = __toESM(require("os"));
|
|
@@ -26323,7 +26312,7 @@ var AcpClient = class {
|
|
|
26323
26312
|
"acpClient",
|
|
26324
26313
|
`spawn cmd=${adapter.command} args=[${adapter.args.join(",")}] cwd=${cwd}`
|
|
26325
26314
|
);
|
|
26326
|
-
const child = (0,
|
|
26315
|
+
const child = (0, import_node_child_process25.spawn)(adapter.command, adapter.args, {
|
|
26327
26316
|
cwd,
|
|
26328
26317
|
// extraEnv (e.g. CLAUDE_CODE_DISABLE_1M_CONTEXT=1 on an on-demand
|
|
26329
26318
|
// re-spawn) layers over process.env; PATH stays last so the augmented
|
|
@@ -27707,7 +27696,7 @@ async function discoverRepos(workingDir, maxDepth = 4) {
|
|
|
27707
27696
|
// src/services/turn-files/files-outbox.ts
|
|
27708
27697
|
var fs60 = __toESM(require("fs/promises"));
|
|
27709
27698
|
var path65 = __toESM(require("path"));
|
|
27710
|
-
var
|
|
27699
|
+
var import_os11 = require("os");
|
|
27711
27700
|
var HOME_OUTBOX_DIR = ".codeam/outbox";
|
|
27712
27701
|
var MAX_AGE_MS = 24 * 60 * 60 * 1e3;
|
|
27713
27702
|
var BACKOFF_STEPS_MS = [
|
|
@@ -27874,7 +27863,7 @@ function applyJitter(ms) {
|
|
|
27874
27863
|
return Math.round(ms * factor);
|
|
27875
27864
|
}
|
|
27876
27865
|
function homeDir() {
|
|
27877
|
-
return process.env.HOME ?? process.env.USERPROFILE ?? (0,
|
|
27866
|
+
return process.env.HOME ?? process.env.USERPROFILE ?? (0, import_os11.tmpdir)();
|
|
27878
27867
|
}
|
|
27879
27868
|
|
|
27880
27869
|
// src/services/turn-files/turn-file-aggregator.ts
|
|
@@ -28124,7 +28113,7 @@ function describeError(err) {
|
|
|
28124
28113
|
if (err instanceof Error) return err.message;
|
|
28125
28114
|
return String(err);
|
|
28126
28115
|
}
|
|
28127
|
-
var AUTH_FAILURE_RE = /invalid authentication credentials|authentication[_ ]error|please run \/login|\bunauthorized\b|\binvalid x-api-key\b|oauth token (?:expired|revoked)|(?:api error|http|status)[:\s]+401|\b401\b[^\n]{0,40}(?:unauthor|authenticat|credential|api[_ ]?key|login)/i;
|
|
28116
|
+
var AUTH_FAILURE_RE = /invalid authentication credentials|authentication[_ ](?:error|required)|please run \/login|\bunauthorized\b|\binvalid x-api-key\b|oauth token (?:expired|revoked)|(?:api error|http|status)[:\s]+401|\b401\b[^\n]{0,40}(?:unauthor|authenticat|credential|api[_ ]?key|login)/i;
|
|
28128
28117
|
function looksLikeAuthFailure(text) {
|
|
28129
28118
|
return AUTH_FAILURE_RE.test(text);
|
|
28130
28119
|
}
|
|
@@ -34198,7 +34187,7 @@ function checkChokidar() {
|
|
|
34198
34187
|
}
|
|
34199
34188
|
async function doctor(args2 = []) {
|
|
34200
34189
|
const json = args2.includes("--json");
|
|
34201
|
-
const cliVersion = true ? "2.60.
|
|
34190
|
+
const cliVersion = true ? "2.60.31" : "0.0.0-dev";
|
|
34202
34191
|
const apiBase2 = resolveApiBaseUrl();
|
|
34203
34192
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
34204
34193
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -34397,7 +34386,7 @@ async function completion(args2) {
|
|
|
34397
34386
|
// src/commands/version.ts
|
|
34398
34387
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
34399
34388
|
function version2() {
|
|
34400
|
-
const v = true ? "2.60.
|
|
34389
|
+
const v = true ? "2.60.31" : "unknown";
|
|
34401
34390
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
34402
34391
|
}
|
|
34403
34392
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.60.
|
|
3
|
+
"version": "2.60.31",
|
|
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",
|