codeam-cli 2.4.25 → 2.4.27
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 +12 -0
- package/dist/index.js +36 -18
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ 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.4.26] — 2026-05-03
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Set_keep_alive PATCHes idle_timeout instead of pinging API (v2.4.26)
|
|
12
|
+
|
|
13
|
+
## [2.4.25] — 2026-05-03
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **cli:** Three new deploy providers — Gitpod, GitLab Workspaces, Railway (v2.4.25)
|
|
18
|
+
|
|
7
19
|
## [2.4.24] — 2026-05-03
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -179,7 +179,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
179
179
|
// package.json
|
|
180
180
|
var package_default = {
|
|
181
181
|
name: "codeam-cli",
|
|
182
|
-
version: "2.4.
|
|
182
|
+
version: "2.4.27",
|
|
183
183
|
description: "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands \u2014 from anywhere.",
|
|
184
184
|
main: "dist/index.js",
|
|
185
185
|
bin: {
|
|
@@ -2793,12 +2793,12 @@ except Exception:sys.exit(0)
|
|
|
2793
2793
|
claude.kill();
|
|
2794
2794
|
} catch {
|
|
2795
2795
|
}
|
|
2796
|
-
const
|
|
2797
|
-
if (
|
|
2796
|
+
const codespaceName2 = process.env.CODESPACE_NAME;
|
|
2797
|
+
if (codespaceName2 && process.env.CODESPACES === "true") {
|
|
2798
2798
|
try {
|
|
2799
2799
|
const stopProc = (0, import_child_process4.spawn)(
|
|
2800
2800
|
"bash",
|
|
2801
|
-
["-lc", `sleep 1; gh codespace stop -c ${JSON.stringify(
|
|
2801
|
+
["-lc", `sleep 1; gh codespace stop -c ${JSON.stringify(codespaceName2)} >/dev/null 2>&1 || true`],
|
|
2802
2802
|
{ detached: true, stdio: "ignore" }
|
|
2803
2803
|
);
|
|
2804
2804
|
stopProc.unref();
|
|
@@ -3041,22 +3041,42 @@ except Exception:sys.exit(0)
|
|
|
3041
3041
|
fetchQuotaUsage();
|
|
3042
3042
|
}, 5e3);
|
|
3043
3043
|
const inCodespace = process.env.CODESPACES === "true";
|
|
3044
|
+
const codespaceName = process.env.CODESPACE_NAME;
|
|
3044
3045
|
let keepAliveTimer = null;
|
|
3046
|
+
async function setIdleTimeout(minutes) {
|
|
3047
|
+
if (!inCodespace || !codespaceName) return;
|
|
3048
|
+
await new Promise((resolve2) => {
|
|
3049
|
+
const proc = (0, import_child_process4.spawn)(
|
|
3050
|
+
"gh",
|
|
3051
|
+
[
|
|
3052
|
+
"api",
|
|
3053
|
+
"-X",
|
|
3054
|
+
"PATCH",
|
|
3055
|
+
`/user/codespaces/${codespaceName}`,
|
|
3056
|
+
"-F",
|
|
3057
|
+
`idle_timeout_minutes=${minutes}`
|
|
3058
|
+
],
|
|
3059
|
+
{ stdio: "ignore", detached: true }
|
|
3060
|
+
);
|
|
3061
|
+
proc.unref();
|
|
3062
|
+
proc.on("exit", () => resolve2());
|
|
3063
|
+
proc.on("error", () => resolve2());
|
|
3064
|
+
});
|
|
3065
|
+
}
|
|
3045
3066
|
function setKeepAlive(enabled) {
|
|
3046
3067
|
if (keepAliveTimer) {
|
|
3047
3068
|
clearInterval(keepAliveTimer);
|
|
3048
3069
|
keepAliveTimer = null;
|
|
3049
3070
|
}
|
|
3050
|
-
if (!
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
keepAliveTimer = setInterval(ping, 8 * 60 * 1e3);
|
|
3071
|
+
if (!inCodespace || !codespaceName) return;
|
|
3072
|
+
if (!enabled) {
|
|
3073
|
+
void setIdleTimeout(30);
|
|
3074
|
+
return;
|
|
3075
|
+
}
|
|
3076
|
+
void setIdleTimeout(240);
|
|
3077
|
+
keepAliveTimer = setInterval(() => {
|
|
3078
|
+
void setIdleTimeout(240);
|
|
3079
|
+
}, 30 * 60 * 1e3);
|
|
3060
3080
|
}
|
|
3061
3081
|
}
|
|
3062
3082
|
|
|
@@ -6721,9 +6741,9 @@ async function deploy() {
|
|
|
6721
6741
|
} catch {
|
|
6722
6742
|
machineStep.stop("\xB7 Could not list machine types \u2014 using provider default");
|
|
6723
6743
|
}
|
|
6724
|
-
if (machines.length
|
|
6744
|
+
if (machines.length >= 1) {
|
|
6725
6745
|
const picked = await _t({
|
|
6726
|
-
message: "Pick a machine size (starts at 8 GB RAM):",
|
|
6746
|
+
message: machines.length === 1 ? "Confirm machine size (only one is available for this project):" : "Pick a machine size (starts at 8 GB RAM):",
|
|
6727
6747
|
initialValue: machines[0].id,
|
|
6728
6748
|
options: machines.map((m) => ({
|
|
6729
6749
|
value: m.id,
|
|
@@ -6736,8 +6756,6 @@ async function deploy() {
|
|
|
6736
6756
|
process.exit(0);
|
|
6737
6757
|
}
|
|
6738
6758
|
machineTypeId = picked;
|
|
6739
|
-
} else if (machines.length === 1) {
|
|
6740
|
-
machineTypeId = machines[0].id;
|
|
6741
6759
|
}
|
|
6742
6760
|
}
|
|
6743
6761
|
if (!workspace) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.27",
|
|
4
4
|
"description": "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands — from anywhere.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|