codeam-cli 2.43.1 → 2.43.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 +6 -0
- package/dist/index.js +90 -43
- 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.43.1] — 2026-06-24
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** 1M-context recovery must publish an awaiting-answer (the tappable button), not just a select_prompt chunk
|
|
12
|
+
|
|
7
13
|
## [2.43.0] — 2026-06-24
|
|
8
14
|
|
|
9
15
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -5397,7 +5397,7 @@ function readAnonId() {
|
|
|
5397
5397
|
}
|
|
5398
5398
|
function superProperties() {
|
|
5399
5399
|
return {
|
|
5400
|
-
cliVersion: true ? "2.43.
|
|
5400
|
+
cliVersion: true ? "2.43.2" : "0.0.0-dev",
|
|
5401
5401
|
nodeVersion: process.version,
|
|
5402
5402
|
platform: process.platform,
|
|
5403
5403
|
arch: process.arch,
|
|
@@ -5578,7 +5578,7 @@ var os4 = __toESM(require("os"));
|
|
|
5578
5578
|
// package.json
|
|
5579
5579
|
var package_default = {
|
|
5580
5580
|
name: "codeam-cli",
|
|
5581
|
-
version: "2.43.
|
|
5581
|
+
version: "2.43.2",
|
|
5582
5582
|
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.",
|
|
5583
5583
|
type: "commonjs",
|
|
5584
5584
|
main: "dist/index.js",
|
|
@@ -17361,15 +17361,25 @@ function writeFile0600(filePath, contents) {
|
|
|
17361
17361
|
fs37.writeFileSync(filePath, contents, { encoding: "utf8", mode: 384 });
|
|
17362
17362
|
fs37.chmodSync(filePath, 384);
|
|
17363
17363
|
}
|
|
17364
|
+
function rmIfExists(filePath) {
|
|
17365
|
+
try {
|
|
17366
|
+
fs37.rmSync(filePath, { force: true });
|
|
17367
|
+
} catch {
|
|
17368
|
+
}
|
|
17369
|
+
}
|
|
17364
17370
|
var claudeProvisioner = {
|
|
17365
17371
|
write(auth, home) {
|
|
17372
|
+
const credentialsJson = path43.join(home, ".claude", ".credentials.json");
|
|
17366
17373
|
if (auth.kind === "api_key") {
|
|
17374
|
+
rmIfExists(credentialsJson);
|
|
17367
17375
|
return { ANTHROPIC_API_KEY: auth.value };
|
|
17368
17376
|
}
|
|
17369
17377
|
const value = auth.value.trim();
|
|
17370
17378
|
const isJsonBlob = value.startsWith("{");
|
|
17371
17379
|
if (isJsonBlob) {
|
|
17372
|
-
writeFile0600(
|
|
17380
|
+
writeFile0600(credentialsJson, value);
|
|
17381
|
+
} else {
|
|
17382
|
+
rmIfExists(credentialsJson);
|
|
17373
17383
|
}
|
|
17374
17384
|
const claudeJson = path43.join(home, ".claude.json");
|
|
17375
17385
|
if (!fs37.existsSync(claudeJson)) {
|
|
@@ -17383,10 +17393,12 @@ var claudeProvisioner = {
|
|
|
17383
17393
|
};
|
|
17384
17394
|
var codexProvisioner = {
|
|
17385
17395
|
write(auth, home) {
|
|
17396
|
+
const authJson = path43.join(home, ".codex", "auth.json");
|
|
17386
17397
|
if (auth.kind === "api_key") {
|
|
17398
|
+
rmIfExists(authJson);
|
|
17387
17399
|
return { OPENAI_API_KEY: auth.value };
|
|
17388
17400
|
}
|
|
17389
|
-
writeFile0600(
|
|
17401
|
+
writeFile0600(authJson, auth.value);
|
|
17390
17402
|
return {};
|
|
17391
17403
|
}
|
|
17392
17404
|
};
|
|
@@ -17811,7 +17823,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17811
17823
|
if (process.env.NODE_ENV === "test") return;
|
|
17812
17824
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17813
17825
|
if (process.env.CI) return;
|
|
17814
|
-
const current = true ? "2.43.
|
|
17826
|
+
const current = true ? "2.43.2" : null;
|
|
17815
17827
|
if (!current) return;
|
|
17816
17828
|
const cache = readCache();
|
|
17817
17829
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17828,7 +17840,7 @@ function checkForUpdates() {
|
|
|
17828
17840
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17829
17841
|
if (process.env.CI) return;
|
|
17830
17842
|
if (!process.stdout.isTTY) return;
|
|
17831
|
-
const current = true ? "2.43.
|
|
17843
|
+
const current = true ? "2.43.2" : null;
|
|
17832
17844
|
if (!current) return;
|
|
17833
17845
|
const cache = readCache();
|
|
17834
17846
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18266,7 +18278,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
|
|
|
18266
18278
|
detached: false
|
|
18267
18279
|
});
|
|
18268
18280
|
function currentCliVersion() {
|
|
18269
|
-
return true ? "2.43.
|
|
18281
|
+
return true ? "2.43.2" : null;
|
|
18270
18282
|
}
|
|
18271
18283
|
function runCmd(cmd, args2, timeoutMs) {
|
|
18272
18284
|
return new Promise((resolve7) => {
|
|
@@ -23511,6 +23523,7 @@ function reconcileCumulative(existing, incoming) {
|
|
|
23511
23523
|
}
|
|
23512
23524
|
|
|
23513
23525
|
// src/agents/acp/onboarding.ts
|
|
23526
|
+
var import_child_process22 = require("child_process");
|
|
23514
23527
|
var fs44 = __toESM(require("fs"));
|
|
23515
23528
|
var os37 = __toESM(require("os"));
|
|
23516
23529
|
var path51 = __toESM(require("path"));
|
|
@@ -23524,10 +23537,44 @@ var _onboardingSeam = {
|
|
|
23524
23537
|
disabled: () => {
|
|
23525
23538
|
const v = process.env.CODEAM_ONBOARDING_DISABLED;
|
|
23526
23539
|
return !!v && v !== "0" && v.toLowerCase() !== "false";
|
|
23540
|
+
},
|
|
23541
|
+
/**
|
|
23542
|
+
* The `origin` remote URL for `cwd`, or null when there's no git repo /
|
|
23543
|
+
* remote. Seam so tests drive `resolveRepoName` without a real checkout.
|
|
23544
|
+
*/
|
|
23545
|
+
gitRemoteUrl: (cwd) => {
|
|
23546
|
+
try {
|
|
23547
|
+
return (0, import_child_process22.execFileSync)("git", ["-C", cwd, "remote", "get-url", "origin"], {
|
|
23548
|
+
encoding: "utf8",
|
|
23549
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
23550
|
+
timeout: 2e3
|
|
23551
|
+
}).trim();
|
|
23552
|
+
} catch {
|
|
23553
|
+
return null;
|
|
23554
|
+
}
|
|
23527
23555
|
}
|
|
23528
23556
|
};
|
|
23557
|
+
function isUuid(s) {
|
|
23558
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s);
|
|
23559
|
+
}
|
|
23560
|
+
function repoNameFromRemoteUrl(url) {
|
|
23561
|
+
const m = url.trim().replace(/\.git$/, "").replace(/\/$/, "").match(/[/:]([^/]+)\/([^/]+)$/);
|
|
23562
|
+
return m ? m[2] : null;
|
|
23563
|
+
}
|
|
23564
|
+
function resolveRepoName(cwd) {
|
|
23565
|
+
if (cwd) {
|
|
23566
|
+
const url = _onboardingSeam.gitRemoteUrl(cwd);
|
|
23567
|
+
if (url) {
|
|
23568
|
+
const name = repoNameFromRemoteUrl(url);
|
|
23569
|
+
if (name) return name;
|
|
23570
|
+
}
|
|
23571
|
+
}
|
|
23572
|
+
const base = path51.basename(cwd || "");
|
|
23573
|
+
if (base && !isUuid(base)) return base;
|
|
23574
|
+
return "this project";
|
|
23575
|
+
}
|
|
23529
23576
|
function buildOnboardingWelcome(cwd) {
|
|
23530
|
-
const repo =
|
|
23577
|
+
const repo = resolveRepoName(cwd);
|
|
23531
23578
|
return [
|
|
23532
23579
|
`Welcome to CodeAgent Mobile! \u{1F44B} You're now driving this agent from your phone \u2014 and it comes fully wired, zero setup:`,
|
|
23533
23580
|
"",
|
|
@@ -23799,7 +23846,7 @@ function extractSelectPrompt(text) {
|
|
|
23799
23846
|
var import_crypto5 = require("crypto");
|
|
23800
23847
|
|
|
23801
23848
|
// src/services/turn-files/git-changeset.ts
|
|
23802
|
-
var
|
|
23849
|
+
var import_child_process23 = require("child_process");
|
|
23803
23850
|
var fs45 = __toESM(require("fs/promises"));
|
|
23804
23851
|
var path52 = __toESM(require("path"));
|
|
23805
23852
|
async function collectRepoChangeset(opts) {
|
|
@@ -23914,7 +23961,7 @@ function defaultRunGit(cwd, args2) {
|
|
|
23914
23961
|
return new Promise((resolve7) => {
|
|
23915
23962
|
let proc;
|
|
23916
23963
|
try {
|
|
23917
|
-
proc = (0,
|
|
23964
|
+
proc = (0, import_child_process23.spawn)("git", args2, { cwd, env: process.env });
|
|
23918
23965
|
} catch {
|
|
23919
23966
|
resolve7(null);
|
|
23920
23967
|
return;
|
|
@@ -27170,11 +27217,11 @@ async function logout() {
|
|
|
27170
27217
|
var import_picocolors11 = __toESM(require("picocolors"));
|
|
27171
27218
|
|
|
27172
27219
|
// src/services/providers/github-codespaces.ts
|
|
27173
|
-
var
|
|
27220
|
+
var import_child_process24 = require("child_process");
|
|
27174
27221
|
var import_util4 = require("util");
|
|
27175
27222
|
var import_picocolors9 = __toESM(require("picocolors"));
|
|
27176
27223
|
var path55 = __toESM(require("path"));
|
|
27177
|
-
var execFileP6 = (0, import_util4.promisify)(
|
|
27224
|
+
var execFileP6 = (0, import_util4.promisify)(import_child_process24.execFile);
|
|
27178
27225
|
var MAX_BUFFER = 8 * 1024 * 1024;
|
|
27179
27226
|
function resetStdinForChild() {
|
|
27180
27227
|
if (process.stdin.isTTY) {
|
|
@@ -27218,7 +27265,7 @@ var GitHubCodespacesProvider = class {
|
|
|
27218
27265
|
if (!isAuthed) {
|
|
27219
27266
|
resetStdinForChild();
|
|
27220
27267
|
await new Promise((resolve7, reject) => {
|
|
27221
|
-
const proc = (0,
|
|
27268
|
+
const proc = (0, import_child_process24.spawn)("gh", ["auth", "login", "-s", "codespace,repo,read:user"], {
|
|
27222
27269
|
stdio: "inherit"
|
|
27223
27270
|
});
|
|
27224
27271
|
proc.on("exit", (code) => {
|
|
@@ -27252,7 +27299,7 @@ var GitHubCodespacesProvider = class {
|
|
|
27252
27299
|
wt(noteLines.join("\n"), "One more permission needed");
|
|
27253
27300
|
resetStdinForChild();
|
|
27254
27301
|
const refreshCode = await new Promise((resolve7, reject) => {
|
|
27255
|
-
const proc = (0,
|
|
27302
|
+
const proc = (0, import_child_process24.spawn)(
|
|
27256
27303
|
"gh",
|
|
27257
27304
|
["auth", "refresh", "-h", "github.com", "-s", "codespace"],
|
|
27258
27305
|
{ stdio: "inherit" }
|
|
@@ -27402,7 +27449,7 @@ var GitHubCodespacesProvider = class {
|
|
|
27402
27449
|
O2.step(`Installing gh via ${installCmd.describe}\u2026`);
|
|
27403
27450
|
resetStdinForChild();
|
|
27404
27451
|
const ok = await new Promise((resolve7) => {
|
|
27405
|
-
const proc = (0,
|
|
27452
|
+
const proc = (0, import_child_process24.spawn)(installCmd.exe, installCmd.args, { stdio: "inherit" });
|
|
27406
27453
|
proc.on("exit", (code) => resolve7(code === 0));
|
|
27407
27454
|
proc.on("error", () => resolve7(false));
|
|
27408
27455
|
});
|
|
@@ -27429,7 +27476,7 @@ var GitHubCodespacesProvider = class {
|
|
|
27429
27476
|
);
|
|
27430
27477
|
resetStdinForChild();
|
|
27431
27478
|
await new Promise((resolve7, reject) => {
|
|
27432
|
-
const proc = (0,
|
|
27479
|
+
const proc = (0, import_child_process24.spawn)(
|
|
27433
27480
|
"gh",
|
|
27434
27481
|
["auth", "refresh", "-h", "github.com", "-s", "repo,read:org"],
|
|
27435
27482
|
{ stdio: "inherit" }
|
|
@@ -27607,7 +27654,7 @@ var GitHubCodespacesProvider = class {
|
|
|
27607
27654
|
async streamCommand(workspaceId, command2) {
|
|
27608
27655
|
resetStdinForChild();
|
|
27609
27656
|
return new Promise((resolve7, reject) => {
|
|
27610
|
-
const proc = (0,
|
|
27657
|
+
const proc = (0, import_child_process24.spawn)(
|
|
27611
27658
|
"gh",
|
|
27612
27659
|
["codespace", "ssh", "-c", workspaceId, "--", "-tt", command2],
|
|
27613
27660
|
{ stdio: "inherit" }
|
|
@@ -27634,11 +27681,11 @@ var GitHubCodespacesProvider = class {
|
|
|
27634
27681
|
`mkdir -p ${shellQuote(remoteDir)} && tar -xzf - -C ${shellQuote(remoteDir)}`
|
|
27635
27682
|
];
|
|
27636
27683
|
await new Promise((resolve7, reject) => {
|
|
27637
|
-
const tar = (0,
|
|
27684
|
+
const tar = (0, import_child_process24.spawn)("tar", tarArgs, {
|
|
27638
27685
|
stdio: ["ignore", "pipe", "pipe"],
|
|
27639
27686
|
env: tarEnv
|
|
27640
27687
|
});
|
|
27641
|
-
const ssh = (0,
|
|
27688
|
+
const ssh = (0, import_child_process24.spawn)("gh", sshArgs, {
|
|
27642
27689
|
stdio: [tar.stdout, "pipe", "pipe"]
|
|
27643
27690
|
});
|
|
27644
27691
|
let tarErr = "";
|
|
@@ -27672,7 +27719,7 @@ var GitHubCodespacesProvider = class {
|
|
|
27672
27719
|
}
|
|
27673
27720
|
const cmd = parts.join(" && ");
|
|
27674
27721
|
await new Promise((resolve7, reject) => {
|
|
27675
|
-
const proc = (0,
|
|
27722
|
+
const proc = (0, import_child_process24.spawn)(
|
|
27676
27723
|
"gh",
|
|
27677
27724
|
["codespace", "ssh", "-c", workspaceId, "--", cmd],
|
|
27678
27725
|
{ stdio: ["pipe", "pipe", "pipe"] }
|
|
@@ -27730,11 +27777,11 @@ function shellQuote(s) {
|
|
|
27730
27777
|
}
|
|
27731
27778
|
|
|
27732
27779
|
// src/services/providers/gitpod.ts
|
|
27733
|
-
var
|
|
27780
|
+
var import_child_process25 = require("child_process");
|
|
27734
27781
|
var import_util5 = require("util");
|
|
27735
27782
|
var path56 = __toESM(require("path"));
|
|
27736
27783
|
var import_picocolors10 = __toESM(require("picocolors"));
|
|
27737
|
-
var execFileP7 = (0, import_util5.promisify)(
|
|
27784
|
+
var execFileP7 = (0, import_util5.promisify)(import_child_process25.execFile);
|
|
27738
27785
|
var MAX_BUFFER2 = 8 * 1024 * 1024;
|
|
27739
27786
|
function resetStdinForChild2() {
|
|
27740
27787
|
if (process.stdin.isTTY) {
|
|
@@ -27774,7 +27821,7 @@ var GitpodProvider = class {
|
|
|
27774
27821
|
);
|
|
27775
27822
|
resetStdinForChild2();
|
|
27776
27823
|
await new Promise((resolve7, reject) => {
|
|
27777
|
-
const proc = (0,
|
|
27824
|
+
const proc = (0, import_child_process25.spawn)("gitpod", ["login"], { stdio: "inherit" });
|
|
27778
27825
|
proc.on("exit", (code) => {
|
|
27779
27826
|
if (code === 0) resolve7();
|
|
27780
27827
|
else reject(new Error("gitpod login failed."));
|
|
@@ -27926,7 +27973,7 @@ var GitpodProvider = class {
|
|
|
27926
27973
|
async streamCommand(workspaceId, command2) {
|
|
27927
27974
|
resetStdinForChild2();
|
|
27928
27975
|
return new Promise((resolve7, reject) => {
|
|
27929
|
-
const proc = (0,
|
|
27976
|
+
const proc = (0, import_child_process25.spawn)(
|
|
27930
27977
|
"gitpod",
|
|
27931
27978
|
["workspace", "ssh", workspaceId, "--", "-tt", command2],
|
|
27932
27979
|
{ stdio: "inherit" }
|
|
@@ -27946,11 +27993,11 @@ var GitpodProvider = class {
|
|
|
27946
27993
|
const tarEnv = { ...process.env, COPYFILE_DISABLE: "1" };
|
|
27947
27994
|
const remoteCmd = `mkdir -p ${shellQuote2(remoteDir)} && tar -xzf - -C ${shellQuote2(remoteDir)}`;
|
|
27948
27995
|
await new Promise((resolve7, reject) => {
|
|
27949
|
-
const tar = (0,
|
|
27996
|
+
const tar = (0, import_child_process25.spawn)("tar", tarArgs, {
|
|
27950
27997
|
stdio: ["ignore", "pipe", "pipe"],
|
|
27951
27998
|
env: tarEnv
|
|
27952
27999
|
});
|
|
27953
|
-
const ssh = (0,
|
|
28000
|
+
const ssh = (0, import_child_process25.spawn)(
|
|
27954
28001
|
"gitpod",
|
|
27955
28002
|
["workspace", "ssh", workspaceId, "--", remoteCmd],
|
|
27956
28003
|
{ stdio: [tar.stdout, "pipe", "pipe"] }
|
|
@@ -27982,7 +28029,7 @@ var GitpodProvider = class {
|
|
|
27982
28029
|
}
|
|
27983
28030
|
const cmd = parts.join(" && ");
|
|
27984
28031
|
await new Promise((resolve7, reject) => {
|
|
27985
|
-
const proc = (0,
|
|
28032
|
+
const proc = (0, import_child_process25.spawn)(
|
|
27986
28033
|
"gitpod",
|
|
27987
28034
|
["workspace", "ssh", workspaceId, "--", cmd],
|
|
27988
28035
|
{ stdio: ["pipe", "pipe", "pipe"] }
|
|
@@ -28006,10 +28053,10 @@ function shellQuote2(s) {
|
|
|
28006
28053
|
}
|
|
28007
28054
|
|
|
28008
28055
|
// src/services/providers/gitlab-workspaces.ts
|
|
28009
|
-
var
|
|
28056
|
+
var import_child_process26 = require("child_process");
|
|
28010
28057
|
var import_util6 = require("util");
|
|
28011
28058
|
var path57 = __toESM(require("path"));
|
|
28012
|
-
var execFileP8 = (0, import_util6.promisify)(
|
|
28059
|
+
var execFileP8 = (0, import_util6.promisify)(import_child_process26.execFile);
|
|
28013
28060
|
var MAX_BUFFER3 = 8 * 1024 * 1024;
|
|
28014
28061
|
var GITLAB_API_BASE = process.env.CODEAM_GITLAB_API_URL ?? "https://gitlab.com/api/v4";
|
|
28015
28062
|
function resetStdinForChild3() {
|
|
@@ -28051,7 +28098,7 @@ var GitLabWorkspacesProvider = class {
|
|
|
28051
28098
|
);
|
|
28052
28099
|
resetStdinForChild3();
|
|
28053
28100
|
await new Promise((resolve7, reject) => {
|
|
28054
|
-
const proc = (0,
|
|
28101
|
+
const proc = (0, import_child_process26.spawn)(
|
|
28055
28102
|
"glab",
|
|
28056
28103
|
["auth", "login", "--scopes", "api,read_user,read_repository"],
|
|
28057
28104
|
{ stdio: "inherit" }
|
|
@@ -28223,7 +28270,7 @@ Docs: https://docs.gitlab.com/ee/user/workspace/configuration.html`
|
|
|
28223
28270
|
const sshHost = process.env.CODEAM_GITLAB_SSH_HOST ?? "workspaces.gitlab.com";
|
|
28224
28271
|
resetStdinForChild3();
|
|
28225
28272
|
return new Promise((resolve7, reject) => {
|
|
28226
|
-
const proc = (0,
|
|
28273
|
+
const proc = (0, import_child_process26.spawn)(
|
|
28227
28274
|
"ssh",
|
|
28228
28275
|
["-tt", "-o", "StrictHostKeyChecking=accept-new", `${workspaceId}@${sshHost}`, command2],
|
|
28229
28276
|
{ stdio: "inherit" }
|
|
@@ -28244,8 +28291,8 @@ Docs: https://docs.gitlab.com/ee/user/workspace/configuration.html`
|
|
|
28244
28291
|
const tarEnv = { ...process.env, COPYFILE_DISABLE: "1" };
|
|
28245
28292
|
const remoteCmd = `mkdir -p ${shellQuote3(remoteDir)} && tar -xzf - -C ${shellQuote3(remoteDir)}`;
|
|
28246
28293
|
await new Promise((resolve7, reject) => {
|
|
28247
|
-
const tar = (0,
|
|
28248
|
-
const ssh = (0,
|
|
28294
|
+
const tar = (0, import_child_process26.spawn)("tar", tarArgs, { stdio: ["ignore", "pipe", "pipe"], env: tarEnv });
|
|
28295
|
+
const ssh = (0, import_child_process26.spawn)(
|
|
28249
28296
|
"ssh",
|
|
28250
28297
|
["-o", "StrictHostKeyChecking=accept-new", `${workspaceId}@${sshHost}`, remoteCmd],
|
|
28251
28298
|
{ stdio: [tar.stdout, "pipe", "pipe"] }
|
|
@@ -28275,7 +28322,7 @@ Docs: https://docs.gitlab.com/ee/user/workspace/configuration.html`
|
|
|
28275
28322
|
}
|
|
28276
28323
|
const cmd = parts.join(" && ");
|
|
28277
28324
|
await new Promise((resolve7, reject) => {
|
|
28278
|
-
const proc = (0,
|
|
28325
|
+
const proc = (0, import_child_process26.spawn)(
|
|
28279
28326
|
"ssh",
|
|
28280
28327
|
["-o", "StrictHostKeyChecking=accept-new", `${workspaceId}@${sshHost}`, cmd],
|
|
28281
28328
|
{ stdio: ["pipe", "pipe", "pipe"] }
|
|
@@ -28334,10 +28381,10 @@ function shellQuote3(s) {
|
|
|
28334
28381
|
}
|
|
28335
28382
|
|
|
28336
28383
|
// src/services/providers/railway.ts
|
|
28337
|
-
var
|
|
28384
|
+
var import_child_process27 = require("child_process");
|
|
28338
28385
|
var import_util7 = require("util");
|
|
28339
28386
|
var path58 = __toESM(require("path"));
|
|
28340
|
-
var execFileP9 = (0, import_util7.promisify)(
|
|
28387
|
+
var execFileP9 = (0, import_util7.promisify)(import_child_process27.execFile);
|
|
28341
28388
|
var MAX_BUFFER4 = 8 * 1024 * 1024;
|
|
28342
28389
|
function resetStdinForChild4() {
|
|
28343
28390
|
if (process.stdin.isTTY) {
|
|
@@ -28378,7 +28425,7 @@ var RailwayProvider = class {
|
|
|
28378
28425
|
);
|
|
28379
28426
|
resetStdinForChild4();
|
|
28380
28427
|
await new Promise((resolve7, reject) => {
|
|
28381
|
-
const proc = (0,
|
|
28428
|
+
const proc = (0, import_child_process27.spawn)("railway", ["login"], { stdio: "inherit" });
|
|
28382
28429
|
proc.on("exit", (code) => {
|
|
28383
28430
|
if (code === 0) resolve7();
|
|
28384
28431
|
else reject(new Error("railway login failed."));
|
|
@@ -28521,7 +28568,7 @@ var RailwayProvider = class {
|
|
|
28521
28568
|
}
|
|
28522
28569
|
resetStdinForChild4();
|
|
28523
28570
|
return new Promise((resolve7, reject) => {
|
|
28524
|
-
const proc = (0,
|
|
28571
|
+
const proc = (0, import_child_process27.spawn)(
|
|
28525
28572
|
"railway",
|
|
28526
28573
|
["shell", "--project", projectId, "--service", serviceId, "--command", command2],
|
|
28527
28574
|
{ stdio: "inherit" }
|
|
@@ -28545,8 +28592,8 @@ var RailwayProvider = class {
|
|
|
28545
28592
|
const tarEnv = { ...process.env, COPYFILE_DISABLE: "1" };
|
|
28546
28593
|
const remoteCmd = `mkdir -p ${shellQuote4(remoteDir)} && tar -xzf - -C ${shellQuote4(remoteDir)}`;
|
|
28547
28594
|
await new Promise((resolve7, reject) => {
|
|
28548
|
-
const tar = (0,
|
|
28549
|
-
const sh = (0,
|
|
28595
|
+
const tar = (0, import_child_process27.spawn)("tar", tarArgs, { stdio: ["ignore", "pipe", "pipe"], env: tarEnv });
|
|
28596
|
+
const sh = (0, import_child_process27.spawn)(
|
|
28550
28597
|
"railway",
|
|
28551
28598
|
["shell", "--project", projectId, "--service", serviceId, "--command", remoteCmd],
|
|
28552
28599
|
{ stdio: [tar.stdout, "pipe", "pipe"] }
|
|
@@ -28579,7 +28626,7 @@ var RailwayProvider = class {
|
|
|
28579
28626
|
}
|
|
28580
28627
|
const cmd = parts.join(" && ");
|
|
28581
28628
|
await new Promise((resolve7, reject) => {
|
|
28582
|
-
const proc = (0,
|
|
28629
|
+
const proc = (0, import_child_process27.spawn)(
|
|
28583
28630
|
"railway",
|
|
28584
28631
|
["shell", "--project", projectId, "--service", serviceId, "--command", cmd],
|
|
28585
28632
|
{ stdio: ["pipe", "pipe", "pipe"] }
|
|
@@ -29329,7 +29376,7 @@ function checkChokidar() {
|
|
|
29329
29376
|
}
|
|
29330
29377
|
async function doctor(args2 = []) {
|
|
29331
29378
|
const json = args2.includes("--json");
|
|
29332
|
-
const cliVersion = true ? "2.43.
|
|
29379
|
+
const cliVersion = true ? "2.43.2" : "0.0.0-dev";
|
|
29333
29380
|
const apiBase2 = resolveApiBaseUrl();
|
|
29334
29381
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
29335
29382
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -29528,7 +29575,7 @@ async function completion(args2) {
|
|
|
29528
29575
|
// src/commands/version.ts
|
|
29529
29576
|
var import_picocolors14 = __toESM(require("picocolors"));
|
|
29530
29577
|
function version2() {
|
|
29531
|
-
const v = true ? "2.43.
|
|
29578
|
+
const v = true ? "2.43.2" : "unknown";
|
|
29532
29579
|
console.log(`${import_picocolors14.default.bold("codeam-cli")} ${import_picocolors14.default.cyan(v)}`);
|
|
29533
29580
|
}
|
|
29534
29581
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.43.
|
|
3
|
+
"version": "2.43.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",
|