codeam-cli 2.60.24 → 2.60.26
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 +10 -0
- package/dist/index.js +64 -44
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ 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.24] — 2026-07-09
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Coderabbit reviewer — link (OAuth + API key) + review relay wiring
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **cli:** Show OS-correct install hint for kimi/cursor on Windows
|
|
16
|
+
|
|
7
17
|
## [2.60.23] — 2026-07-09
|
|
8
18
|
|
|
9
19
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -330,10 +330,14 @@ var AGENT_REGISTRY = {
|
|
|
330
330
|
displayName: "CodeRabbit",
|
|
331
331
|
binaryName: "coderabbit",
|
|
332
332
|
enabled: true,
|
|
333
|
-
//
|
|
334
|
-
//
|
|
335
|
-
|
|
336
|
-
|
|
333
|
+
// CodeRabbit links via a CLI-driven LOOPBACK OAuth (`coderabbit auth
|
|
334
|
+
// login --agent`): the CLI captures the token and hands it to the vault
|
|
335
|
+
// through `linkFromCli` (method:'oauth'), same as the terminal handoff.
|
|
336
|
+
// `oauth_token` is preferred; a real API key is still accepted as a
|
|
337
|
+
// fallback. There is no backend PKCE provider — the loopback runs on the
|
|
338
|
+
// user's own machine, so linking is always CLI-mediated.
|
|
339
|
+
supportedAuthKinds: ["oauth_token", "api_key"],
|
|
340
|
+
preferredAuthKind: "oauth_token",
|
|
337
341
|
headroomWrappable: false,
|
|
338
342
|
// Legacy PTY runtime — no ACP adapter registered.
|
|
339
343
|
acp: false
|
|
@@ -5680,7 +5684,7 @@ function readAnonId() {
|
|
|
5680
5684
|
}
|
|
5681
5685
|
function superProperties() {
|
|
5682
5686
|
return {
|
|
5683
|
-
cliVersion: true ? "2.60.
|
|
5687
|
+
cliVersion: true ? "2.60.26" : "0.0.0-dev",
|
|
5684
5688
|
nodeVersion: process.version,
|
|
5685
5689
|
platform: process.platform,
|
|
5686
5690
|
arch: process.arch,
|
|
@@ -5861,7 +5865,7 @@ var os4 = __toESM(require("os"));
|
|
|
5861
5865
|
// package.json
|
|
5862
5866
|
var package_default = {
|
|
5863
5867
|
name: "codeam-cli",
|
|
5864
|
-
version: "2.60.
|
|
5868
|
+
version: "2.60.26",
|
|
5865
5869
|
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.",
|
|
5866
5870
|
type: "commonjs",
|
|
5867
5871
|
main: "dist/index.js",
|
|
@@ -6954,7 +6958,7 @@ var CommandRelayService = class {
|
|
|
6954
6958
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
6955
6959
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
6956
6960
|
// pair/reconnect). Older backends ignore the extra field.
|
|
6957
|
-
..."2.60.
|
|
6961
|
+
..."2.60.26" ? { ideVersion: "2.60.26" } : {}
|
|
6958
6962
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
6959
6963
|
}
|
|
6960
6964
|
/**
|
|
@@ -15637,7 +15641,7 @@ async function configureCoderabbit(input, deps = {}) {
|
|
|
15637
15641
|
}
|
|
15638
15642
|
|
|
15639
15643
|
// src/commands/host-agent.ts
|
|
15640
|
-
var
|
|
15644
|
+
var import_node_child_process23 = require("child_process");
|
|
15641
15645
|
var os35 = __toESM(require("os"));
|
|
15642
15646
|
var fs41 = __toESM(require("fs"));
|
|
15643
15647
|
var path43 = __toESM(require("path"));
|
|
@@ -16056,6 +16060,7 @@ async function prepareWorkspace(repoOrPath, deployId, cloneToken) {
|
|
|
16056
16060
|
var fs35 = __toESM(require("fs"));
|
|
16057
16061
|
var os31 = __toESM(require("os"));
|
|
16058
16062
|
var path38 = __toESM(require("path"));
|
|
16063
|
+
var import_node_child_process17 = require("child_process");
|
|
16059
16064
|
var PUBLIC_TO_INTERNAL_AGENT = {
|
|
16060
16065
|
claude_code: "claude",
|
|
16061
16066
|
claude: "claude",
|
|
@@ -16169,9 +16174,24 @@ var kimiProvisioner = {
|
|
|
16169
16174
|
return { KIMI_API_KEY: auth.value };
|
|
16170
16175
|
}
|
|
16171
16176
|
credentialsFiles.forEach((f) => writeFile0600(f, auth.value));
|
|
16177
|
+
provisionKimiConfig(home);
|
|
16172
16178
|
return {};
|
|
16173
16179
|
}
|
|
16174
16180
|
};
|
|
16181
|
+
function provisionKimiConfig(home) {
|
|
16182
|
+
try {
|
|
16183
|
+
const osStrat = createOsStrategy();
|
|
16184
|
+
const binary = osStrat.findInPath("kimi");
|
|
16185
|
+
if (!binary) return;
|
|
16186
|
+
const launch = osStrat.buildLaunch(binary, ["login"]);
|
|
16187
|
+
(0, import_node_child_process17.spawnSync)(launch.cmd, launch.args, {
|
|
16188
|
+
stdio: "ignore",
|
|
16189
|
+
timeout: 6e4,
|
|
16190
|
+
env: { ...process.env, HOME: home, USERPROFILE: home }
|
|
16191
|
+
});
|
|
16192
|
+
} catch {
|
|
16193
|
+
}
|
|
16194
|
+
}
|
|
16175
16195
|
var coderabbitProvisioner = {
|
|
16176
16196
|
write(auth, home) {
|
|
16177
16197
|
const dir = path38.join(home, ".coderabbit");
|
|
@@ -16222,7 +16242,7 @@ function provisionAgentCredentials(publicAgentId, auth, homeDir2 = os31.homedir(
|
|
|
16222
16242
|
}
|
|
16223
16243
|
|
|
16224
16244
|
// src/commands/host/git-tooling.ts
|
|
16225
|
-
var
|
|
16245
|
+
var import_node_child_process18 = require("child_process");
|
|
16226
16246
|
var fs36 = __toESM(require("fs"));
|
|
16227
16247
|
var os32 = __toESM(require("os"));
|
|
16228
16248
|
var path39 = __toESM(require("path"));
|
|
@@ -16336,7 +16356,7 @@ var defaultGitToolingRunner = {
|
|
|
16336
16356
|
which(cmd) {
|
|
16337
16357
|
try {
|
|
16338
16358
|
const probe = process.platform === "win32" ? "where" : "which";
|
|
16339
|
-
(0,
|
|
16359
|
+
(0, import_node_child_process18.execFileSync)(probe, [cmd], { stdio: "ignore" });
|
|
16340
16360
|
return true;
|
|
16341
16361
|
} catch {
|
|
16342
16362
|
return false;
|
|
@@ -16344,7 +16364,7 @@ var defaultGitToolingRunner = {
|
|
|
16344
16364
|
},
|
|
16345
16365
|
run(cmd, args2, opts = {}) {
|
|
16346
16366
|
return new Promise((resolve7) => {
|
|
16347
|
-
const child = (0,
|
|
16367
|
+
const child = (0, import_node_child_process18.spawn)(cmd, args2, {
|
|
16348
16368
|
stdio: [opts.input !== void 0 ? "pipe" : "ignore", "ignore", "pipe"]
|
|
16349
16369
|
});
|
|
16350
16370
|
let stderr = "";
|
|
@@ -16498,12 +16518,12 @@ var HeadroomStatsReporter = class {
|
|
|
16498
16518
|
};
|
|
16499
16519
|
|
|
16500
16520
|
// src/commands/host/os-packages.ts
|
|
16501
|
-
var
|
|
16521
|
+
var import_node_child_process19 = require("child_process");
|
|
16502
16522
|
var PM_INSTALL_TIMEOUT_MS = 18e4;
|
|
16503
16523
|
var defaultHeadroomRunner = {
|
|
16504
16524
|
which(cmd) {
|
|
16505
16525
|
try {
|
|
16506
|
-
(0,
|
|
16526
|
+
(0, import_node_child_process19.execFileSync)("which", [cmd], { stdio: "ignore" });
|
|
16507
16527
|
return true;
|
|
16508
16528
|
} catch {
|
|
16509
16529
|
return false;
|
|
@@ -16512,7 +16532,7 @@ var defaultHeadroomRunner = {
|
|
|
16512
16532
|
run(cmd, args2, opts = {}) {
|
|
16513
16533
|
return new Promise((resolve7) => {
|
|
16514
16534
|
const spawnEnv = opts.env ?? process.env;
|
|
16515
|
-
const child = (0,
|
|
16535
|
+
const child = (0, import_node_child_process19.spawn)(cmd, args2, { stdio: ["ignore", "pipe", "pipe"], env: spawnEnv });
|
|
16516
16536
|
let stderrBuf = "";
|
|
16517
16537
|
let stdoutBuf = "";
|
|
16518
16538
|
let settled = false;
|
|
@@ -17019,14 +17039,14 @@ async function setupHeadroomForSelfHosted(agent, runner = defaultHeadroomRunner,
|
|
|
17019
17039
|
}
|
|
17020
17040
|
|
|
17021
17041
|
// src/commands/host/self-update.ts
|
|
17022
|
-
var
|
|
17042
|
+
var import_node_child_process21 = require("child_process");
|
|
17023
17043
|
|
|
17024
17044
|
// src/lib/updateNotifier.ts
|
|
17025
17045
|
var fs39 = __toESM(require("fs"));
|
|
17026
17046
|
var os34 = __toESM(require("os"));
|
|
17027
17047
|
var path42 = __toESM(require("path"));
|
|
17028
17048
|
var https6 = __toESM(require("https"));
|
|
17029
|
-
var
|
|
17049
|
+
var import_node_child_process20 = require("child_process");
|
|
17030
17050
|
var import_picocolors3 = __toESM(require("picocolors"));
|
|
17031
17051
|
var PKG_NAME = "codeam-cli";
|
|
17032
17052
|
var REGISTRY_URL = `https://registry.npmjs.org/${PKG_NAME}/latest`;
|
|
@@ -17120,7 +17140,7 @@ function notifyIfStale(currentVersion, latest) {
|
|
|
17120
17140
|
}
|
|
17121
17141
|
function isLinkedInstall() {
|
|
17122
17142
|
try {
|
|
17123
|
-
const root = (0,
|
|
17143
|
+
const root = (0, import_node_child_process20.execSync)("npm root -g", {
|
|
17124
17144
|
encoding: "utf8",
|
|
17125
17145
|
stdio: ["ignore", "pipe", "ignore"],
|
|
17126
17146
|
timeout: 2e3
|
|
@@ -17148,7 +17168,7 @@ function maybeAutoUpdate(currentVersion, latest) {
|
|
|
17148
17168
|
|
|
17149
17169
|
`
|
|
17150
17170
|
);
|
|
17151
|
-
const install = (0,
|
|
17171
|
+
const install = (0, import_node_child_process20.spawnSync)("npm", ["install", "-g", `${PKG_NAME}@latest`], {
|
|
17152
17172
|
stdio: "inherit",
|
|
17153
17173
|
env: process.env
|
|
17154
17174
|
});
|
|
@@ -17169,7 +17189,7 @@ function maybeAutoUpdate(currentVersion, latest) {
|
|
|
17169
17189
|
process.stderr.write(` ${import_picocolors3.default.green("\u2713")} Updated. Resuming session...
|
|
17170
17190
|
|
|
17171
17191
|
`);
|
|
17172
|
-
const child = (0,
|
|
17192
|
+
const child = (0, import_node_child_process20.spawnSync)("codeam", process.argv.slice(2), {
|
|
17173
17193
|
stdio: "inherit",
|
|
17174
17194
|
env: process.env
|
|
17175
17195
|
});
|
|
@@ -17179,7 +17199,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17179
17199
|
if (process.env.NODE_ENV === "test") return;
|
|
17180
17200
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17181
17201
|
if (process.env.CI) return;
|
|
17182
|
-
const current = true ? "2.60.
|
|
17202
|
+
const current = true ? "2.60.26" : null;
|
|
17183
17203
|
if (!current) return;
|
|
17184
17204
|
const cache = readCache();
|
|
17185
17205
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17196,7 +17216,7 @@ function checkForUpdates() {
|
|
|
17196
17216
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17197
17217
|
if (process.env.CI) return;
|
|
17198
17218
|
if (!process.stdout.isTTY) return;
|
|
17199
|
-
const current = true ? "2.60.
|
|
17219
|
+
const current = true ? "2.60.26" : null;
|
|
17200
17220
|
if (!current) return;
|
|
17201
17221
|
const cache = readCache();
|
|
17202
17222
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17216,11 +17236,11 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17216
17236
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17217
17237
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17218
17238
|
function currentCliVersion() {
|
|
17219
|
-
return true ? "2.60.
|
|
17239
|
+
return true ? "2.60.26" : null;
|
|
17220
17240
|
}
|
|
17221
17241
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17222
17242
|
return new Promise((resolve7) => {
|
|
17223
|
-
(0,
|
|
17243
|
+
(0, import_node_child_process21.execFile)(cmd, args2, { timeout: timeoutMs }, (err, stdout, stderr) => {
|
|
17224
17244
|
const code = err && typeof err.code === "number" ? err.code : err ? null : 0;
|
|
17225
17245
|
resolve7({ code, stdout: stdout ?? "", stderr: stderr ?? "" });
|
|
17226
17246
|
});
|
|
@@ -17282,11 +17302,11 @@ async function runSelfUpdate() {
|
|
|
17282
17302
|
}
|
|
17283
17303
|
|
|
17284
17304
|
// src/commands/host/teardown.ts
|
|
17285
|
-
var
|
|
17305
|
+
var import_node_child_process22 = require("child_process");
|
|
17286
17306
|
var fs40 = __toESM(require("fs"));
|
|
17287
17307
|
var defaultDisableService = () => {
|
|
17288
17308
|
try {
|
|
17289
|
-
(0,
|
|
17309
|
+
(0, import_node_child_process22.execFileSync)("systemctl", ["disable", "--now", "codeam-host-agent"], { stdio: "ignore" });
|
|
17290
17310
|
} catch {
|
|
17291
17311
|
}
|
|
17292
17312
|
};
|
|
@@ -17294,7 +17314,7 @@ var defaultTeardownHeadroom = () => {
|
|
|
17294
17314
|
try {
|
|
17295
17315
|
const kind = JSON.parse(fs40.readFileSync(headroomConfigPath(), "utf8")).agent;
|
|
17296
17316
|
if (kind) {
|
|
17297
|
-
(0,
|
|
17317
|
+
(0, import_node_child_process22.execFileSync)("headroom", ["unwrap", kind], { stdio: "ignore", timeout: 15e3 });
|
|
17298
17318
|
}
|
|
17299
17319
|
} catch {
|
|
17300
17320
|
}
|
|
@@ -17452,7 +17472,7 @@ var CONTROL_AGENT_META = {
|
|
|
17452
17472
|
headroomWrappable: false,
|
|
17453
17473
|
acp: false
|
|
17454
17474
|
};
|
|
17455
|
-
var defaultSpawner = (env, cwd, args2 = []) => (0,
|
|
17475
|
+
var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process23.spawn)(process.execPath, [process.argv[1], "pair-auto", ...args2], {
|
|
17456
17476
|
cwd,
|
|
17457
17477
|
env: { ...process.env, ...env },
|
|
17458
17478
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -17932,7 +17952,7 @@ var HostAgentSupervisor = class {
|
|
|
17932
17952
|
runAgentInstall(script) {
|
|
17933
17953
|
return new Promise((resolve7) => {
|
|
17934
17954
|
const home = process.env.HOME || os35.homedir();
|
|
17935
|
-
const child = (0,
|
|
17955
|
+
const child = (0, import_node_child_process23.spawn)("sh", ["-c", script], {
|
|
17936
17956
|
env: { ...process.env, HOME: home },
|
|
17937
17957
|
stdio: ["ignore", "pipe", "pipe"]
|
|
17938
17958
|
});
|
|
@@ -18240,11 +18260,11 @@ function makeRealApplyBudgetDeps() {
|
|
|
18240
18260
|
var import_child_process14 = require("child_process");
|
|
18241
18261
|
var import_fs = require("fs");
|
|
18242
18262
|
var import_promises = __toESM(require("fs/promises"));
|
|
18243
|
-
var
|
|
18263
|
+
var import_os9 = __toESM(require("os"));
|
|
18244
18264
|
var import_path4 = __toESM(require("path"));
|
|
18245
18265
|
var import_promises2 = require("stream/promises");
|
|
18246
18266
|
var import_which = __toESM(require("which"));
|
|
18247
|
-
var CACHED_BINARY = import_path4.default.join(
|
|
18267
|
+
var CACHED_BINARY = import_path4.default.join(import_os9.default.homedir(), ".codeam", "bin", "cloudflared");
|
|
18248
18268
|
async function resolveCloudflared(opts = {}) {
|
|
18249
18269
|
try {
|
|
18250
18270
|
return await (0, import_which.default)("cloudflared");
|
|
@@ -18344,7 +18364,7 @@ function decodeTunnelToken(token) {
|
|
|
18344
18364
|
}
|
|
18345
18365
|
async function spawnNamedTunnel(bin, token, port) {
|
|
18346
18366
|
const creds = decodeTunnelToken(token);
|
|
18347
|
-
const credDir = import_path4.default.join(
|
|
18367
|
+
const credDir = import_path4.default.join(import_os9.default.homedir(), ".codeam");
|
|
18348
18368
|
await import_promises.default.mkdir(credDir, { recursive: true });
|
|
18349
18369
|
const credFile = import_path4.default.join(credDir, `tunnel-${creds.TunnelID}.json`);
|
|
18350
18370
|
await import_promises.default.writeFile(credFile, JSON.stringify(creds), { mode: 384 });
|
|
@@ -22396,7 +22416,7 @@ async function pairAuto(args2) {
|
|
|
22396
22416
|
}
|
|
22397
22417
|
|
|
22398
22418
|
// src/services/headroom/wrap-launch.ts
|
|
22399
|
-
var
|
|
22419
|
+
var import_node_child_process24 = require("child_process");
|
|
22400
22420
|
function wrapWithHeadroom(launch, opts) {
|
|
22401
22421
|
if (!opts.enabled || !opts.headroomPresent) return launch;
|
|
22402
22422
|
return {
|
|
@@ -22409,7 +22429,7 @@ var _present;
|
|
|
22409
22429
|
function headroomPresent() {
|
|
22410
22430
|
if (_present !== void 0) return Promise.resolve(_present);
|
|
22411
22431
|
return new Promise((resolve7) => {
|
|
22412
|
-
(0,
|
|
22432
|
+
(0, import_node_child_process24.execFile)("headroom", ["--version"], (err) => {
|
|
22413
22433
|
_present = !err;
|
|
22414
22434
|
resolve7(_present);
|
|
22415
22435
|
});
|
|
@@ -22763,7 +22783,7 @@ var path59 = __toESM(require("path"));
|
|
|
22763
22783
|
|
|
22764
22784
|
// src/agents/acp/agent-binary.ts
|
|
22765
22785
|
var import_fs4 = __toESM(require("fs"));
|
|
22766
|
-
var
|
|
22786
|
+
var import_os11 = __toESM(require("os"));
|
|
22767
22787
|
var import_path8 = __toESM(require("path"));
|
|
22768
22788
|
var import_child_process25 = require("child_process");
|
|
22769
22789
|
function currentPlatformKey() {
|
|
@@ -22859,7 +22879,7 @@ function resolveCursorAgentBinary(deps = {}) {
|
|
|
22859
22879
|
const exe = import_path8.default.win32.join(localAppData, "cursor-agent", "cursor-agent.exe");
|
|
22860
22880
|
return existsSync26(exe) ? exe : null;
|
|
22861
22881
|
}
|
|
22862
|
-
const home = deps.homedir ??
|
|
22882
|
+
const home = deps.homedir ?? import_os11.default.homedir();
|
|
22863
22883
|
const unix = import_path8.default.posix.join(home, ".local", "bin", "cursor-agent");
|
|
22864
22884
|
return existsSync26(unix) ? unix : null;
|
|
22865
22885
|
}
|
|
@@ -22933,7 +22953,7 @@ async function waitForAdapterModuleGraph(command2, args2, opts = {}) {
|
|
|
22933
22953
|
}
|
|
22934
22954
|
|
|
22935
22955
|
// src/agents/kimi/installer.ts
|
|
22936
|
-
var
|
|
22956
|
+
var import_node_child_process25 = require("child_process");
|
|
22937
22957
|
var import_node_os6 = require("os");
|
|
22938
22958
|
var import_node_path6 = require("path");
|
|
22939
22959
|
var INSTALL_URL2 = "https://code.kimi.com/kimi-code/install.sh";
|
|
@@ -22941,7 +22961,7 @@ function kimiBinDir() {
|
|
|
22941
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");
|
|
22942
22962
|
}
|
|
22943
22963
|
function kimiRuns() {
|
|
22944
|
-
const r = (0,
|
|
22964
|
+
const r = (0, import_node_child_process25.spawnSync)("kimi", ["--version"], { stdio: "ignore", timeout: 15e3 });
|
|
22945
22965
|
return !r.error && r.status === 0;
|
|
22946
22966
|
}
|
|
22947
22967
|
function augmentPath2() {
|
|
@@ -22951,7 +22971,7 @@ function augmentPath2() {
|
|
|
22951
22971
|
}
|
|
22952
22972
|
async function runInstaller2() {
|
|
22953
22973
|
return new Promise((resolve7) => {
|
|
22954
|
-
const proc = (0,
|
|
22974
|
+
const proc = (0, import_node_child_process25.spawn)("sh", ["-c", `curl -fsSL ${INSTALL_URL2} | bash`], { stdio: "inherit" });
|
|
22955
22975
|
proc.on("close", (code) => resolve7(code === 0));
|
|
22956
22976
|
proc.on("error", () => resolve7(false));
|
|
22957
22977
|
});
|
|
@@ -23688,7 +23708,7 @@ var HistoryService = class _HistoryService {
|
|
|
23688
23708
|
};
|
|
23689
23709
|
|
|
23690
23710
|
// src/agents/acp/client.ts
|
|
23691
|
-
var
|
|
23711
|
+
var import_node_child_process26 = require("child_process");
|
|
23692
23712
|
var fs57 = __toESM(require("fs/promises"));
|
|
23693
23713
|
var fsSync = __toESM(require("fs"));
|
|
23694
23714
|
var os46 = __toESM(require("os"));
|
|
@@ -26292,7 +26312,7 @@ var AcpClient = class {
|
|
|
26292
26312
|
"acpClient",
|
|
26293
26313
|
`spawn cmd=${adapter.command} args=[${adapter.args.join(",")}] cwd=${cwd}`
|
|
26294
26314
|
);
|
|
26295
|
-
const child = (0,
|
|
26315
|
+
const child = (0, import_node_child_process26.spawn)(adapter.command, adapter.args, {
|
|
26296
26316
|
cwd,
|
|
26297
26317
|
// extraEnv (e.g. CLAUDE_CODE_DISABLE_1M_CONTEXT=1 on an on-demand
|
|
26298
26318
|
// re-spawn) layers over process.env; PATH stays last so the augmented
|
|
@@ -27676,7 +27696,7 @@ async function discoverRepos(workingDir, maxDepth = 4) {
|
|
|
27676
27696
|
// src/services/turn-files/files-outbox.ts
|
|
27677
27697
|
var fs60 = __toESM(require("fs/promises"));
|
|
27678
27698
|
var path64 = __toESM(require("path"));
|
|
27679
|
-
var
|
|
27699
|
+
var import_os12 = require("os");
|
|
27680
27700
|
var HOME_OUTBOX_DIR = ".codeam/outbox";
|
|
27681
27701
|
var MAX_AGE_MS = 24 * 60 * 60 * 1e3;
|
|
27682
27702
|
var BACKOFF_STEPS_MS = [
|
|
@@ -27843,7 +27863,7 @@ function applyJitter(ms) {
|
|
|
27843
27863
|
return Math.round(ms * factor);
|
|
27844
27864
|
}
|
|
27845
27865
|
function homeDir() {
|
|
27846
|
-
return process.env.HOME ?? process.env.USERPROFILE ?? (0,
|
|
27866
|
+
return process.env.HOME ?? process.env.USERPROFILE ?? (0, import_os12.tmpdir)();
|
|
27847
27867
|
}
|
|
27848
27868
|
|
|
27849
27869
|
// src/services/turn-files/turn-file-aggregator.ts
|
|
@@ -34167,7 +34187,7 @@ function checkChokidar() {
|
|
|
34167
34187
|
}
|
|
34168
34188
|
async function doctor(args2 = []) {
|
|
34169
34189
|
const json = args2.includes("--json");
|
|
34170
|
-
const cliVersion = true ? "2.60.
|
|
34190
|
+
const cliVersion = true ? "2.60.26" : "0.0.0-dev";
|
|
34171
34191
|
const apiBase2 = resolveApiBaseUrl();
|
|
34172
34192
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
34173
34193
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -34366,7 +34386,7 @@ async function completion(args2) {
|
|
|
34366
34386
|
// src/commands/version.ts
|
|
34367
34387
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
34368
34388
|
function version2() {
|
|
34369
|
-
const v = true ? "2.60.
|
|
34389
|
+
const v = true ? "2.60.26" : "unknown";
|
|
34370
34390
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
34371
34391
|
}
|
|
34372
34392
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.60.
|
|
3
|
+
"version": "2.60.26",
|
|
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",
|