codeam-cli 2.60.18 → 2.60.19
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/dist/index.js +88 -44
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5680,7 +5680,7 @@ function readAnonId() {
|
|
|
5680
5680
|
}
|
|
5681
5681
|
function superProperties() {
|
|
5682
5682
|
return {
|
|
5683
|
-
cliVersion: true ? "2.60.
|
|
5683
|
+
cliVersion: true ? "2.60.19" : "0.0.0-dev",
|
|
5684
5684
|
nodeVersion: process.version,
|
|
5685
5685
|
platform: process.platform,
|
|
5686
5686
|
arch: process.arch,
|
|
@@ -5861,7 +5861,7 @@ var os4 = __toESM(require("os"));
|
|
|
5861
5861
|
// package.json
|
|
5862
5862
|
var package_default = {
|
|
5863
5863
|
name: "codeam-cli",
|
|
5864
|
-
version: "2.60.
|
|
5864
|
+
version: "2.60.19",
|
|
5865
5865
|
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
5866
|
type: "commonjs",
|
|
5867
5867
|
main: "dist/index.js",
|
|
@@ -6932,7 +6932,7 @@ var CommandRelayService = class {
|
|
|
6932
6932
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
6933
6933
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
6934
6934
|
// pair/reconnect). Older backends ignore the extra field.
|
|
6935
|
-
..."2.60.
|
|
6935
|
+
..."2.60.19" ? { ideVersion: "2.60.19" } : {}
|
|
6936
6936
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
6937
6937
|
}
|
|
6938
6938
|
/**
|
|
@@ -13601,6 +13601,8 @@ function detectCursorSelector(lines) {
|
|
|
13601
13601
|
}
|
|
13602
13602
|
|
|
13603
13603
|
// src/agents/cursor/runtime.ts
|
|
13604
|
+
var import_node_child_process10 = require("child_process");
|
|
13605
|
+
var UUID_RE = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;
|
|
13604
13606
|
var CURSOR_CONTEXT_WINDOW = 2e5;
|
|
13605
13607
|
var CURSOR_MODELS = [
|
|
13606
13608
|
{ id: "cursor-default", label: "Cursor (auto)", contextWindow: CURSOR_CONTEXT_WINDOW },
|
|
@@ -13622,12 +13624,54 @@ var CursorRuntimeStrategy = class {
|
|
|
13622
13624
|
'Cursor Agent CLI ("cursor-agent") is not on PATH.\n Install Cursor (https://cursor.com/), enable its CLI plugin,\n then run `codeam pair` again.'
|
|
13623
13625
|
);
|
|
13624
13626
|
}
|
|
13625
|
-
|
|
13627
|
+
const sessionId = this.mintChatId(binary);
|
|
13628
|
+
if (sessionId) {
|
|
13629
|
+
const launch2 = this.os.buildLaunch(binary, ["--resume", sessionId]);
|
|
13630
|
+
return { cmd: launch2.cmd, args: launch2.args, sessionId };
|
|
13631
|
+
}
|
|
13632
|
+
const launch = this.os.buildLaunch(binary);
|
|
13633
|
+
return { cmd: launch.cmd, args: launch.args };
|
|
13634
|
+
}
|
|
13635
|
+
/**
|
|
13636
|
+
* Pre-create an empty, resumable Cursor chat and return its id, or null on any
|
|
13637
|
+
* failure. `cursor-agent create-chat` prints a bare UUID and exits 0 (verified
|
|
13638
|
+
* on cursor-agent 2026.06.24). Synchronous + bounded so prepareLaunch stays a
|
|
13639
|
+
* single deterministic step; a timeout/parse failure just disables pre-mint.
|
|
13640
|
+
*/
|
|
13641
|
+
mintChatId(binary) {
|
|
13642
|
+
try {
|
|
13643
|
+
const r = (0, import_node_child_process10.spawnSync)(binary, ["create-chat"], {
|
|
13644
|
+
encoding: "utf8",
|
|
13645
|
+
timeout: 2e4,
|
|
13646
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
13647
|
+
});
|
|
13648
|
+
if (r.status !== 0 || r.error) {
|
|
13649
|
+
log.warn("cursor", `create-chat failed (status=${r.status}) \u2014 baton id pre-mint skipped`);
|
|
13650
|
+
return null;
|
|
13651
|
+
}
|
|
13652
|
+
const id = (r.stdout ?? "").match(UUID_RE)?.[0] ?? null;
|
|
13653
|
+
if (!id) log.warn("cursor", "create-chat produced no chat id \u2014 baton id pre-mint skipped");
|
|
13654
|
+
return id;
|
|
13655
|
+
} catch (err) {
|
|
13656
|
+
log.warn("cursor", `create-chat threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
13657
|
+
return null;
|
|
13658
|
+
}
|
|
13626
13659
|
}
|
|
13627
13660
|
/** Cursor mirrors Claude's `--resume <id>` flag for session resume. */
|
|
13628
13661
|
resumeLaunchArgs(sessionId, _opts) {
|
|
13629
13662
|
return ["--resume", sessionId];
|
|
13630
13663
|
}
|
|
13664
|
+
/**
|
|
13665
|
+
* Resume as a COMPLETE relaunch (mirrors Claude). The initial spawn already
|
|
13666
|
+
* carries `--resume <preMintedId>` from {@link prepareLaunch}, so appending
|
|
13667
|
+
* `resumeLaunchArgs` onto `initialLaunch.args` would emit a duplicate
|
|
13668
|
+
* `--resume … --resume …`. Rebuild a clean `--resume <id>` launch instead.
|
|
13669
|
+
*/
|
|
13670
|
+
prepareResumeLaunch(sessionId, opts) {
|
|
13671
|
+
const binary = this.os.findInPath("cursor-agent") ?? this.meta.binaryName;
|
|
13672
|
+
const launch = this.os.buildLaunch(binary, this.resumeLaunchArgs(sessionId, opts));
|
|
13673
|
+
return { cmd: launch.cmd, args: launch.args };
|
|
13674
|
+
}
|
|
13631
13675
|
resolveHistoryDir(cwd) {
|
|
13632
13676
|
return resolveHistoryDir3(cwd);
|
|
13633
13677
|
}
|
|
@@ -13714,7 +13758,7 @@ function getCurrentUsage4(_historyDir) {
|
|
|
13714
13758
|
}
|
|
13715
13759
|
|
|
13716
13760
|
// src/agents/aider/link.ts
|
|
13717
|
-
var
|
|
13761
|
+
var import_node_child_process11 = require("child_process");
|
|
13718
13762
|
|
|
13719
13763
|
// src/agents/aider/local-token.ts
|
|
13720
13764
|
var fs26 = __toESM(require("fs"));
|
|
@@ -13772,7 +13816,7 @@ function aiderLoginLauncher(os49) {
|
|
|
13772
13816
|
console.error(
|
|
13773
13817
|
"\n Aider has no interactive login flow.\n Set ANTHROPIC_API_KEY or OPENAI_API_KEY in your shell,\n or re-run `codeam link aider --api-key=<your-key>`.\n"
|
|
13774
13818
|
);
|
|
13775
|
-
return (0,
|
|
13819
|
+
return (0, import_node_child_process11.spawn)(os49.id === "win32" ? "cmd.exe" : "sh", os49.id === "win32" ? ["/c", "exit", "0"] : ["-c", "exit 0"], {
|
|
13776
13820
|
stdio: "ignore"
|
|
13777
13821
|
});
|
|
13778
13822
|
}
|
|
@@ -13916,7 +13960,7 @@ var AiderRuntimeStrategy = class {
|
|
|
13916
13960
|
var import_node_crypto5 = require("crypto");
|
|
13917
13961
|
|
|
13918
13962
|
// src/agents/gemini/link.ts
|
|
13919
|
-
var
|
|
13963
|
+
var import_node_child_process12 = require("child_process");
|
|
13920
13964
|
|
|
13921
13965
|
// src/agents/gemini/local-token.ts
|
|
13922
13966
|
var fs27 = __toESM(require("fs"));
|
|
@@ -13981,7 +14025,7 @@ function geminiLoginLauncher() {
|
|
|
13981
14025
|
return os49.findInPath("gemini") !== null;
|
|
13982
14026
|
},
|
|
13983
14027
|
launch() {
|
|
13984
|
-
return (0,
|
|
14028
|
+
return (0, import_node_child_process12.spawn)("gemini", ["auth", "login"], { stdio: "inherit" });
|
|
13985
14029
|
}
|
|
13986
14030
|
};
|
|
13987
14031
|
}
|
|
@@ -14277,7 +14321,7 @@ var GeminiRuntimeStrategy = class {
|
|
|
14277
14321
|
};
|
|
14278
14322
|
|
|
14279
14323
|
// src/agents/kimi/runtime.ts
|
|
14280
|
-
var
|
|
14324
|
+
var import_node_child_process13 = require("child_process");
|
|
14281
14325
|
var import_node_os3 = require("os");
|
|
14282
14326
|
var import_node_path4 = require("path");
|
|
14283
14327
|
|
|
@@ -14567,7 +14611,7 @@ var KimiRuntimeStrategy = class {
|
|
|
14567
14611
|
return createOsStrategy().findInPath("kimi") !== null;
|
|
14568
14612
|
},
|
|
14569
14613
|
launch() {
|
|
14570
|
-
return (0,
|
|
14614
|
+
return (0, import_node_child_process13.spawn)("kimi", [], { stdio: "inherit" });
|
|
14571
14615
|
}
|
|
14572
14616
|
};
|
|
14573
14617
|
}
|
|
@@ -15000,7 +15044,7 @@ async function linkDryRunPreflight(ctx) {
|
|
|
15000
15044
|
}
|
|
15001
15045
|
|
|
15002
15046
|
// src/commands/host-agent.ts
|
|
15003
|
-
var
|
|
15047
|
+
var import_node_child_process21 = require("child_process");
|
|
15004
15048
|
var os34 = __toESM(require("os"));
|
|
15005
15049
|
var fs40 = __toESM(require("fs"));
|
|
15006
15050
|
var path42 = __toESM(require("path"));
|
|
@@ -15013,7 +15057,7 @@ var path35 = __toESM(require("path"));
|
|
|
15013
15057
|
// src/lib/restrict-to-owner.ts
|
|
15014
15058
|
var import_node_fs5 = __toESM(require("fs"));
|
|
15015
15059
|
var import_node_os4 = __toESM(require("os"));
|
|
15016
|
-
var
|
|
15060
|
+
var import_node_child_process14 = require("child_process");
|
|
15017
15061
|
var BROAD_WINDOWS_SIDS = [
|
|
15018
15062
|
"*S-1-1-0",
|
|
15019
15063
|
"*S-1-5-11",
|
|
@@ -15025,7 +15069,7 @@ function restrictToOwner(filePath) {
|
|
|
15025
15069
|
try {
|
|
15026
15070
|
if (process.platform === "win32") {
|
|
15027
15071
|
const username = import_node_os4.default.userInfo().username;
|
|
15028
|
-
(0,
|
|
15072
|
+
(0, import_node_child_process14.execFileSync)(
|
|
15029
15073
|
"icacls",
|
|
15030
15074
|
[
|
|
15031
15075
|
filePath,
|
|
@@ -15287,9 +15331,9 @@ async function reportDeployProgress(auth, deployId, step, message, sessionId) {
|
|
|
15287
15331
|
var fs33 = __toESM(require("fs"));
|
|
15288
15332
|
var os29 = __toESM(require("os"));
|
|
15289
15333
|
var path36 = __toESM(require("path"));
|
|
15290
|
-
var
|
|
15334
|
+
var import_node_child_process15 = require("child_process");
|
|
15291
15335
|
var import_node_util4 = require("util");
|
|
15292
|
-
var execFileP4 = (0, import_node_util4.promisify)(
|
|
15336
|
+
var execFileP4 = (0, import_node_util4.promisify)(import_node_child_process15.execFile);
|
|
15293
15337
|
function isAbsolutePathTarget(target) {
|
|
15294
15338
|
return path36.isAbsolute(target);
|
|
15295
15339
|
}
|
|
@@ -15559,7 +15603,7 @@ function provisionAgentCredentials(publicAgentId, auth, homeDir2 = os30.homedir(
|
|
|
15559
15603
|
}
|
|
15560
15604
|
|
|
15561
15605
|
// src/commands/host/git-tooling.ts
|
|
15562
|
-
var
|
|
15606
|
+
var import_node_child_process16 = require("child_process");
|
|
15563
15607
|
var fs35 = __toESM(require("fs"));
|
|
15564
15608
|
var os31 = __toESM(require("os"));
|
|
15565
15609
|
var path38 = __toESM(require("path"));
|
|
@@ -15673,7 +15717,7 @@ var defaultGitToolingRunner = {
|
|
|
15673
15717
|
which(cmd) {
|
|
15674
15718
|
try {
|
|
15675
15719
|
const probe = process.platform === "win32" ? "where" : "which";
|
|
15676
|
-
(0,
|
|
15720
|
+
(0, import_node_child_process16.execFileSync)(probe, [cmd], { stdio: "ignore" });
|
|
15677
15721
|
return true;
|
|
15678
15722
|
} catch {
|
|
15679
15723
|
return false;
|
|
@@ -15681,7 +15725,7 @@ var defaultGitToolingRunner = {
|
|
|
15681
15725
|
},
|
|
15682
15726
|
run(cmd, args2, opts = {}) {
|
|
15683
15727
|
return new Promise((resolve7) => {
|
|
15684
|
-
const child = (0,
|
|
15728
|
+
const child = (0, import_node_child_process16.spawn)(cmd, args2, {
|
|
15685
15729
|
stdio: [opts.input !== void 0 ? "pipe" : "ignore", "ignore", "pipe"]
|
|
15686
15730
|
});
|
|
15687
15731
|
let stderr = "";
|
|
@@ -15835,12 +15879,12 @@ var HeadroomStatsReporter = class {
|
|
|
15835
15879
|
};
|
|
15836
15880
|
|
|
15837
15881
|
// src/commands/host/os-packages.ts
|
|
15838
|
-
var
|
|
15882
|
+
var import_node_child_process17 = require("child_process");
|
|
15839
15883
|
var PM_INSTALL_TIMEOUT_MS = 18e4;
|
|
15840
15884
|
var defaultHeadroomRunner = {
|
|
15841
15885
|
which(cmd) {
|
|
15842
15886
|
try {
|
|
15843
|
-
(0,
|
|
15887
|
+
(0, import_node_child_process17.execFileSync)("which", [cmd], { stdio: "ignore" });
|
|
15844
15888
|
return true;
|
|
15845
15889
|
} catch {
|
|
15846
15890
|
return false;
|
|
@@ -15849,7 +15893,7 @@ var defaultHeadroomRunner = {
|
|
|
15849
15893
|
run(cmd, args2, opts = {}) {
|
|
15850
15894
|
return new Promise((resolve7) => {
|
|
15851
15895
|
const spawnEnv = opts.env ?? process.env;
|
|
15852
|
-
const child = (0,
|
|
15896
|
+
const child = (0, import_node_child_process17.spawn)(cmd, args2, { stdio: ["ignore", "pipe", "pipe"], env: spawnEnv });
|
|
15853
15897
|
let stderrBuf = "";
|
|
15854
15898
|
let stdoutBuf = "";
|
|
15855
15899
|
let settled = false;
|
|
@@ -16356,14 +16400,14 @@ async function setupHeadroomForSelfHosted(agent, runner = defaultHeadroomRunner,
|
|
|
16356
16400
|
}
|
|
16357
16401
|
|
|
16358
16402
|
// src/commands/host/self-update.ts
|
|
16359
|
-
var
|
|
16403
|
+
var import_node_child_process19 = require("child_process");
|
|
16360
16404
|
|
|
16361
16405
|
// src/lib/updateNotifier.ts
|
|
16362
16406
|
var fs38 = __toESM(require("fs"));
|
|
16363
16407
|
var os33 = __toESM(require("os"));
|
|
16364
16408
|
var path41 = __toESM(require("path"));
|
|
16365
16409
|
var https6 = __toESM(require("https"));
|
|
16366
|
-
var
|
|
16410
|
+
var import_node_child_process18 = require("child_process");
|
|
16367
16411
|
var import_picocolors3 = __toESM(require("picocolors"));
|
|
16368
16412
|
var PKG_NAME = "codeam-cli";
|
|
16369
16413
|
var REGISTRY_URL = `https://registry.npmjs.org/${PKG_NAME}/latest`;
|
|
@@ -16457,7 +16501,7 @@ function notifyIfStale(currentVersion, latest) {
|
|
|
16457
16501
|
}
|
|
16458
16502
|
function isLinkedInstall() {
|
|
16459
16503
|
try {
|
|
16460
|
-
const root = (0,
|
|
16504
|
+
const root = (0, import_node_child_process18.execSync)("npm root -g", {
|
|
16461
16505
|
encoding: "utf8",
|
|
16462
16506
|
stdio: ["ignore", "pipe", "ignore"],
|
|
16463
16507
|
timeout: 2e3
|
|
@@ -16485,7 +16529,7 @@ function maybeAutoUpdate(currentVersion, latest) {
|
|
|
16485
16529
|
|
|
16486
16530
|
`
|
|
16487
16531
|
);
|
|
16488
|
-
const install = (0,
|
|
16532
|
+
const install = (0, import_node_child_process18.spawnSync)("npm", ["install", "-g", `${PKG_NAME}@latest`], {
|
|
16489
16533
|
stdio: "inherit",
|
|
16490
16534
|
env: process.env
|
|
16491
16535
|
});
|
|
@@ -16506,7 +16550,7 @@ function maybeAutoUpdate(currentVersion, latest) {
|
|
|
16506
16550
|
process.stderr.write(` ${import_picocolors3.default.green("\u2713")} Updated. Resuming session...
|
|
16507
16551
|
|
|
16508
16552
|
`);
|
|
16509
|
-
const child = (0,
|
|
16553
|
+
const child = (0, import_node_child_process18.spawnSync)("codeam", process.argv.slice(2), {
|
|
16510
16554
|
stdio: "inherit",
|
|
16511
16555
|
env: process.env
|
|
16512
16556
|
});
|
|
@@ -16516,7 +16560,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
16516
16560
|
if (process.env.NODE_ENV === "test") return;
|
|
16517
16561
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
16518
16562
|
if (process.env.CI) return;
|
|
16519
|
-
const current = true ? "2.60.
|
|
16563
|
+
const current = true ? "2.60.19" : null;
|
|
16520
16564
|
if (!current) return;
|
|
16521
16565
|
const cache = readCache();
|
|
16522
16566
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -16533,7 +16577,7 @@ function checkForUpdates() {
|
|
|
16533
16577
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
16534
16578
|
if (process.env.CI) return;
|
|
16535
16579
|
if (!process.stdout.isTTY) return;
|
|
16536
|
-
const current = true ? "2.60.
|
|
16580
|
+
const current = true ? "2.60.19" : null;
|
|
16537
16581
|
if (!current) return;
|
|
16538
16582
|
const cache = readCache();
|
|
16539
16583
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -16553,11 +16597,11 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
16553
16597
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
16554
16598
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
16555
16599
|
function currentCliVersion() {
|
|
16556
|
-
return true ? "2.60.
|
|
16600
|
+
return true ? "2.60.19" : null;
|
|
16557
16601
|
}
|
|
16558
16602
|
function runCmd(cmd, args2, timeoutMs) {
|
|
16559
16603
|
return new Promise((resolve7) => {
|
|
16560
|
-
(0,
|
|
16604
|
+
(0, import_node_child_process19.execFile)(cmd, args2, { timeout: timeoutMs }, (err, stdout, stderr) => {
|
|
16561
16605
|
const code = err && typeof err.code === "number" ? err.code : err ? null : 0;
|
|
16562
16606
|
resolve7({ code, stdout: stdout ?? "", stderr: stderr ?? "" });
|
|
16563
16607
|
});
|
|
@@ -16619,11 +16663,11 @@ async function runSelfUpdate() {
|
|
|
16619
16663
|
}
|
|
16620
16664
|
|
|
16621
16665
|
// src/commands/host/teardown.ts
|
|
16622
|
-
var
|
|
16666
|
+
var import_node_child_process20 = require("child_process");
|
|
16623
16667
|
var fs39 = __toESM(require("fs"));
|
|
16624
16668
|
var defaultDisableService = () => {
|
|
16625
16669
|
try {
|
|
16626
|
-
(0,
|
|
16670
|
+
(0, import_node_child_process20.execFileSync)("systemctl", ["disable", "--now", "codeam-host-agent"], { stdio: "ignore" });
|
|
16627
16671
|
} catch {
|
|
16628
16672
|
}
|
|
16629
16673
|
};
|
|
@@ -16631,7 +16675,7 @@ var defaultTeardownHeadroom = () => {
|
|
|
16631
16675
|
try {
|
|
16632
16676
|
const kind = JSON.parse(fs39.readFileSync(headroomConfigPath(), "utf8")).agent;
|
|
16633
16677
|
if (kind) {
|
|
16634
|
-
(0,
|
|
16678
|
+
(0, import_node_child_process20.execFileSync)("headroom", ["unwrap", kind], { stdio: "ignore", timeout: 15e3 });
|
|
16635
16679
|
}
|
|
16636
16680
|
} catch {
|
|
16637
16681
|
}
|
|
@@ -16789,7 +16833,7 @@ var CONTROL_AGENT_META = {
|
|
|
16789
16833
|
headroomWrappable: false,
|
|
16790
16834
|
acp: false
|
|
16791
16835
|
};
|
|
16792
|
-
var defaultSpawner = (env, cwd, args2 = []) => (0,
|
|
16836
|
+
var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process21.spawn)(process.execPath, [process.argv[1], "pair-auto", ...args2], {
|
|
16793
16837
|
cwd,
|
|
16794
16838
|
env: { ...process.env, ...env },
|
|
16795
16839
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -17269,7 +17313,7 @@ var HostAgentSupervisor = class {
|
|
|
17269
17313
|
runAgentInstall(script) {
|
|
17270
17314
|
return new Promise((resolve7) => {
|
|
17271
17315
|
const home = process.env.HOME || os34.homedir();
|
|
17272
|
-
const child = (0,
|
|
17316
|
+
const child = (0, import_node_child_process21.spawn)("sh", ["-c", script], {
|
|
17273
17317
|
env: { ...process.env, HOME: home },
|
|
17274
17318
|
stdio: ["ignore", "pipe", "pipe"]
|
|
17275
17319
|
});
|
|
@@ -21675,7 +21719,7 @@ async function pairAuto(args2) {
|
|
|
21675
21719
|
}
|
|
21676
21720
|
|
|
21677
21721
|
// src/services/headroom/wrap-launch.ts
|
|
21678
|
-
var
|
|
21722
|
+
var import_node_child_process22 = require("child_process");
|
|
21679
21723
|
function wrapWithHeadroom(launch, opts) {
|
|
21680
21724
|
if (!opts.enabled || !opts.headroomPresent) return launch;
|
|
21681
21725
|
return {
|
|
@@ -21688,7 +21732,7 @@ var _present;
|
|
|
21688
21732
|
function headroomPresent() {
|
|
21689
21733
|
if (_present !== void 0) return Promise.resolve(_present);
|
|
21690
21734
|
return new Promise((resolve7) => {
|
|
21691
|
-
(0,
|
|
21735
|
+
(0, import_node_child_process22.execFile)("headroom", ["--version"], (err) => {
|
|
21692
21736
|
_present = !err;
|
|
21693
21737
|
resolve7(_present);
|
|
21694
21738
|
});
|
|
@@ -22212,7 +22256,7 @@ async function waitForAdapterModuleGraph(command2, args2, opts = {}) {
|
|
|
22212
22256
|
}
|
|
22213
22257
|
|
|
22214
22258
|
// src/agents/kimi/installer.ts
|
|
22215
|
-
var
|
|
22259
|
+
var import_node_child_process23 = require("child_process");
|
|
22216
22260
|
var import_node_os6 = require("os");
|
|
22217
22261
|
var import_node_path6 = require("path");
|
|
22218
22262
|
var INSTALL_URL2 = "https://code.kimi.com/kimi-code/install.sh";
|
|
@@ -22220,7 +22264,7 @@ function kimiBinDir() {
|
|
|
22220
22264
|
return (0, import_node_path6.join)(process.env.KIMI_CODE_HOME || (0, import_node_path6.join)((0, import_node_os6.homedir)(), ".kimi-code"), "bin");
|
|
22221
22265
|
}
|
|
22222
22266
|
function kimiRuns() {
|
|
22223
|
-
const r = (0,
|
|
22267
|
+
const r = (0, import_node_child_process23.spawnSync)("kimi", ["--version"], { stdio: "ignore", timeout: 15e3 });
|
|
22224
22268
|
return !r.error && r.status === 0;
|
|
22225
22269
|
}
|
|
22226
22270
|
function augmentPath2() {
|
|
@@ -22230,7 +22274,7 @@ function augmentPath2() {
|
|
|
22230
22274
|
}
|
|
22231
22275
|
async function runInstaller2() {
|
|
22232
22276
|
return new Promise((resolve7) => {
|
|
22233
|
-
const proc = (0,
|
|
22277
|
+
const proc = (0, import_node_child_process23.spawn)("sh", ["-c", `curl -fsSL ${INSTALL_URL2} | bash`], { stdio: "inherit" });
|
|
22234
22278
|
proc.on("close", (code) => resolve7(code === 0));
|
|
22235
22279
|
proc.on("error", () => resolve7(false));
|
|
22236
22280
|
});
|
|
@@ -22967,7 +23011,7 @@ var HistoryService = class _HistoryService {
|
|
|
22967
23011
|
};
|
|
22968
23012
|
|
|
22969
23013
|
// src/agents/acp/client.ts
|
|
22970
|
-
var
|
|
23014
|
+
var import_node_child_process24 = require("child_process");
|
|
22971
23015
|
var fs56 = __toESM(require("fs/promises"));
|
|
22972
23016
|
var fsSync = __toESM(require("fs"));
|
|
22973
23017
|
var os45 = __toESM(require("os"));
|
|
@@ -25571,7 +25615,7 @@ var AcpClient = class {
|
|
|
25571
25615
|
"acpClient",
|
|
25572
25616
|
`spawn cmd=${adapter.command} args=[${adapter.args.join(",")}] cwd=${cwd}`
|
|
25573
25617
|
);
|
|
25574
|
-
const child = (0,
|
|
25618
|
+
const child = (0, import_node_child_process24.spawn)(adapter.command, adapter.args, {
|
|
25575
25619
|
cwd,
|
|
25576
25620
|
// extraEnv (e.g. CLAUDE_CODE_DISABLE_1M_CONTEXT=1 on an on-demand
|
|
25577
25621
|
// re-spawn) layers over process.env; PATH stays last so the augmented
|
|
@@ -33413,7 +33457,7 @@ function checkChokidar() {
|
|
|
33413
33457
|
}
|
|
33414
33458
|
async function doctor(args2 = []) {
|
|
33415
33459
|
const json = args2.includes("--json");
|
|
33416
|
-
const cliVersion = true ? "2.60.
|
|
33460
|
+
const cliVersion = true ? "2.60.19" : "0.0.0-dev";
|
|
33417
33461
|
const apiBase2 = resolveApiBaseUrl();
|
|
33418
33462
|
const diagnosticId = (0, import_node_crypto11.randomUUID)();
|
|
33419
33463
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -33612,7 +33656,7 @@ async function completion(args2) {
|
|
|
33612
33656
|
// src/commands/version.ts
|
|
33613
33657
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
33614
33658
|
function version2() {
|
|
33615
|
-
const v = true ? "2.60.
|
|
33659
|
+
const v = true ? "2.60.19" : "unknown";
|
|
33616
33660
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
33617
33661
|
}
|
|
33618
33662
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.60.
|
|
3
|
+
"version": "2.60.19",
|
|
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",
|