codeam-cli 2.32.5 → 2.32.7
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 +21 -0
- package/dist/index.js +22 -22
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ 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.32.6] — 2026-06-07
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Probe both A and AAAA records when waiting on cloudflared tunnel
|
|
12
|
+
- **cli:** Use dns.lookup (OS resolver) as primary probe for cloudflared tunnel readiness
|
|
13
|
+
|
|
14
|
+
## [2.32.5] — 2026-06-07
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **cli:** Run npx normalization AFTER preflight install, not before
|
|
19
|
+
- **cli:** Probe both A and AAAA records when waiting on cloudflared tunnel
|
|
20
|
+
|
|
21
|
+
## [2.32.4] — 2026-06-07
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **cli:** Accumulate stdout for preview ready_pattern matching
|
|
26
|
+
- **cli:** Run npx normalization AFTER preflight install, not before
|
|
27
|
+
|
|
7
28
|
## [2.32.3] — 2026-06-07
|
|
8
29
|
|
|
9
30
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
498
498
|
// package.json
|
|
499
499
|
var package_default = {
|
|
500
500
|
name: "codeam-cli",
|
|
501
|
-
version: "2.32.
|
|
501
|
+
version: "2.32.7",
|
|
502
502
|
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.",
|
|
503
503
|
type: "commonjs",
|
|
504
504
|
main: "dist/index.js",
|
|
@@ -5869,7 +5869,7 @@ function readAnonId() {
|
|
|
5869
5869
|
}
|
|
5870
5870
|
function superProperties() {
|
|
5871
5871
|
return {
|
|
5872
|
-
cliVersion: true ? "2.32.
|
|
5872
|
+
cliVersion: true ? "2.32.7" : "0.0.0-dev",
|
|
5873
5873
|
nodeVersion: process.version,
|
|
5874
5874
|
platform: process.platform,
|
|
5875
5875
|
arch: process.arch,
|
|
@@ -11788,12 +11788,18 @@ function validateLocalGeminiToken(credential) {
|
|
|
11788
11788
|
} catch {
|
|
11789
11789
|
return { status: "unknown" };
|
|
11790
11790
|
}
|
|
11791
|
+
if (typeof parsed.refresh_token === "string" && parsed.refresh_token.length > 0) {
|
|
11792
|
+
return {
|
|
11793
|
+
status: "valid",
|
|
11794
|
+
expiresAt: typeof parsed.expiry_date === "number" ? parsed.expiry_date : void 0
|
|
11795
|
+
};
|
|
11796
|
+
}
|
|
11791
11797
|
if (typeof parsed.expiry_date !== "number") return { status: "unknown" };
|
|
11792
11798
|
const expiresAt = parsed.expiry_date;
|
|
11793
11799
|
if (Date.now() >= expiresAt) {
|
|
11794
11800
|
return {
|
|
11795
11801
|
status: "expired",
|
|
11796
|
-
reason: "Gemini OAuth access token expired",
|
|
11802
|
+
reason: "Gemini OAuth access token expired (no refresh_token in snapshot)",
|
|
11797
11803
|
expiresAt
|
|
11798
11804
|
};
|
|
11799
11805
|
}
|
|
@@ -16878,7 +16884,7 @@ async function linkDryRunPreflight(ctx) {
|
|
|
16878
16884
|
}
|
|
16879
16885
|
|
|
16880
16886
|
// src/services/preview/cloudflared.ts
|
|
16881
|
-
var import_promises = require("dns/promises");
|
|
16887
|
+
var import_promises = __toESM(require("dns/promises"));
|
|
16882
16888
|
var import_fs = require("fs");
|
|
16883
16889
|
var import_promises2 = __toESM(require("fs/promises"));
|
|
16884
16890
|
var import_os6 = __toESM(require("os"));
|
|
@@ -16888,21 +16894,15 @@ var import_which = __toESM(require("which"));
|
|
|
16888
16894
|
var CACHED_BINARY = import_path4.default.join(import_os6.default.homedir(), ".codeam", "bin", "cloudflared");
|
|
16889
16895
|
async function waitForCloudflaredReady(url, timeoutMs = 6e4) {
|
|
16890
16896
|
const hostname3 = new URL(url).hostname;
|
|
16891
|
-
const
|
|
16892
|
-
resolver.setServers(["1.1.1.1", "1.0.0.1"]);
|
|
16897
|
+
const cares = new import_promises.Resolver();
|
|
16893
16898
|
const start2 = Date.now();
|
|
16894
16899
|
while (Date.now() - start2 < timeoutMs) {
|
|
16895
|
-
const
|
|
16896
|
-
|
|
16897
|
-
|
|
16898
|
-
);
|
|
16899
|
-
|
|
16900
|
-
|
|
16901
|
-
() => false
|
|
16902
|
-
);
|
|
16903
|
-
const [ok4, ok6] = await Promise.all([v4, v6]);
|
|
16904
|
-
if (ok4 || ok6) return;
|
|
16905
|
-
await new Promise((r) => setTimeout(r, 500));
|
|
16900
|
+
const lookup = import_promises.default.lookup(hostname3, { all: true }).then((addrs) => addrs.length > 0, () => false);
|
|
16901
|
+
const v4 = cares.resolve4(hostname3).then((addrs) => addrs.length > 0, () => false);
|
|
16902
|
+
const v6 = cares.resolve6(hostname3).then((addrs) => addrs.length > 0, () => false);
|
|
16903
|
+
const results = await Promise.all([lookup, v4, v6]);
|
|
16904
|
+
if (results.some((ok) => ok)) return;
|
|
16905
|
+
await new Promise((r) => setTimeout(r, 1e3));
|
|
16906
16906
|
}
|
|
16907
16907
|
throw new Error(
|
|
16908
16908
|
`DNS for ${hostname3} did not resolve within ${timeoutMs}ms (Cloudflare Quick Tunnel registration may have failed).`
|
|
@@ -24944,16 +24944,16 @@ function checkChokidar() {
|
|
|
24944
24944
|
}
|
|
24945
24945
|
async function doctor(args2 = []) {
|
|
24946
24946
|
const json = args2.includes("--json");
|
|
24947
|
-
const cliVersion = true ? "2.32.
|
|
24947
|
+
const cliVersion = true ? "2.32.7" : "0.0.0-dev";
|
|
24948
24948
|
const apiBase = resolveApiBaseUrl();
|
|
24949
24949
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
24950
24950
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
24951
|
-
const [
|
|
24951
|
+
const [dns2, health] = await Promise.all([
|
|
24952
24952
|
checkDns(apiBase),
|
|
24953
24953
|
checkHealth(apiBase)
|
|
24954
24954
|
]);
|
|
24955
24955
|
const checks = [
|
|
24956
|
-
|
|
24956
|
+
dns2,
|
|
24957
24957
|
health,
|
|
24958
24958
|
checkConfigDir(),
|
|
24959
24959
|
checkSessions(),
|
|
@@ -25143,7 +25143,7 @@ async function completion(args2) {
|
|
|
25143
25143
|
// src/commands/version.ts
|
|
25144
25144
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
25145
25145
|
function version2() {
|
|
25146
|
-
const v = true ? "2.32.
|
|
25146
|
+
const v = true ? "2.32.7" : "unknown";
|
|
25147
25147
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
25148
25148
|
}
|
|
25149
25149
|
|
|
@@ -25429,7 +25429,7 @@ function checkForUpdates() {
|
|
|
25429
25429
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
25430
25430
|
if (process.env.CI) return;
|
|
25431
25431
|
if (!process.stdout.isTTY) return;
|
|
25432
|
-
const current = true ? "2.32.
|
|
25432
|
+
const current = true ? "2.32.7" : null;
|
|
25433
25433
|
if (!current) return;
|
|
25434
25434
|
const cache = readCache();
|
|
25435
25435
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.32.
|
|
3
|
+
"version": "2.32.7",
|
|
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",
|