@vodmal/vdx-cli 0.32.0 → 0.32.1
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/package.json +1 -1
- package/src/gate.ts +17 -3
- package/src/hosting.ts +3 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vodmal/vdx-cli",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.1",
|
|
4
4
|
"description": "vdx — unified lifecycle interface (up/down/build/test/check/fix) + versioned maturity audit with drift detection. Pairs with the vdx Claude Code plugin.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vdx",
|
package/src/gate.ts
CHANGED
|
@@ -119,11 +119,16 @@ export function pushThroughGate(t: GateTarget, d: GateDeps): void {
|
|
|
119
119
|
const names = t.checks.join(', ');
|
|
120
120
|
const link = `https://github.com/${t.repo}/commit/${sha}/checks`;
|
|
121
121
|
const again = `once they pass: vdx push (${link})`;
|
|
122
|
-
|
|
122
|
+
// No answer at all — a timeout, the network — is not a refusal: the wait asks again
|
|
123
|
+
// (0.32.0's release push stopped on one ETIMEDOUT at a load of ~7, 2026-10-20).
|
|
124
|
+
let silent: string | null = null;
|
|
125
|
+
const ask = (): CheckState[] | Unknown | null => {
|
|
123
126
|
try {
|
|
127
|
+
silent = null;
|
|
124
128
|
return commitChecks(d.io, t.repo, sha, t.checks, t.token);
|
|
125
129
|
} catch (e) {
|
|
126
|
-
|
|
130
|
+
silent = `GitHub did not answer: ${errorMessage(e)}`;
|
|
131
|
+
return null;
|
|
127
132
|
}
|
|
128
133
|
};
|
|
129
134
|
const toBranch = () => {
|
|
@@ -137,7 +142,7 @@ export function pushThroughGate(t: GateTarget, d: GateDeps): void {
|
|
|
137
142
|
// A commit not pushed yet is not asked about — GitHub would only answer 422.
|
|
138
143
|
if (d.io.git(['rev-parse', '--verify', '--quiet', `refs/remotes/${t.remote}/${gate}`]) === sha) {
|
|
139
144
|
const before = ask();
|
|
140
|
-
if (!isUnknown(before) && passed(before)) {
|
|
145
|
+
if (before !== null && !isUnknown(before) && passed(before)) {
|
|
141
146
|
d.log(`✓ ${short} has passed ${names}`);
|
|
142
147
|
toBranch();
|
|
143
148
|
return;
|
|
@@ -165,6 +170,15 @@ export function pushThroughGate(t: GateTarget, d: GateDeps): void {
|
|
|
165
170
|
}
|
|
166
171
|
const states = ask();
|
|
167
172
|
d.progress?.('');
|
|
173
|
+
if (states === null) {
|
|
174
|
+
if (d.now() - started >= d.timeoutMs) {
|
|
175
|
+
throw new Error(
|
|
176
|
+
`${silent} after ${Math.round(d.timeoutMs / 60_000)} min — ${t.branch} did not take ${short}; ${again}`,
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
d.log(` … ${seconds()} s — ${silent}; asking again`);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
168
182
|
if (isUnknown(states)) throw new Error(`${states.unknown} — ${t.branch} did not take ${short}; ${again}`);
|
|
169
183
|
const failed = states.filter((s) => s.state === 'failed');
|
|
170
184
|
if (failed.length > 0) {
|
package/src/hosting.ts
CHANGED
|
@@ -28,7 +28,7 @@ const GET = `
|
|
|
28
28
|
const headers = { accept: 'application/vnd.github+json', 'x-github-api-version': '2022-11-28', 'user-agent': 'vdx' };
|
|
29
29
|
if (process.env.VDX_GITHUB_TOKEN) headers.authorization = 'Bearer ' + process.env.VDX_GITHUB_TOKEN;
|
|
30
30
|
try {
|
|
31
|
-
const r = await fetch(process.argv[1], { headers, signal: AbortSignal.timeout(
|
|
31
|
+
const r = await fetch(process.argv[1], { headers, signal: AbortSignal.timeout(15000) });
|
|
32
32
|
process.stdout.write(JSON.stringify({ status: r.status, text: await r.text() }));
|
|
33
33
|
} catch (e) {
|
|
34
34
|
process.stdout.write(JSON.stringify({ error: String(e?.cause?.code ?? e?.cause?.message ?? e?.message ?? e) }));
|
|
@@ -43,7 +43,8 @@ function get(apiPath: string, token: string | null): Answer {
|
|
|
43
43
|
execFileSync(process.execPath, ['--input-type=module', '-e', GET, `https://api.github.com${apiPath}`], {
|
|
44
44
|
encoding: 'utf8',
|
|
45
45
|
env,
|
|
46
|
-
|
|
46
|
+
// node's own start counts too: at a load of ~7 on lft 10 s ran out (2026-10-20).
|
|
47
|
+
timeout: 20_000,
|
|
47
48
|
stdio: ['ignore', 'pipe', 'ignore'],
|
|
48
49
|
}),
|
|
49
50
|
);
|