@unbrained/pm-web 2026.8.17 → 2026.8.29
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 +28 -0
- package/README.md +34 -4
- package/dist/app.d.ts +25 -1
- package/dist/app.js +69 -9
- package/dist/app.js.map +1 -1
- package/dist/csrf.d.ts +48 -0
- package/dist/csrf.js +124 -0
- package/dist/csrf.js.map +1 -0
- package/dist/health.d.ts +84 -0
- package/dist/health.js +284 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +25 -3
- package/dist/index.js +62 -42
- package/dist/index.js.map +1 -1
- package/dist/rate-limit.d.ts +149 -0
- package/dist/rate-limit.js +194 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/routes/auth.d.ts +16 -0
- package/dist/routes/auth.js +37 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/github.d.ts +19 -0
- package/dist/routes/github.js +49 -4
- package/dist/routes/github.js.map +1 -1
- package/dist/routes/pm.js +28 -38
- package/dist/routes/pm.js.map +1 -1
- package/dist/server.js +33 -2
- package/dist/server.js.map +1 -1
- package/dist/services/mutation-event-watcher.js +2 -1
- package/dist/services/mutation-event-watcher.js.map +1 -1
- package/dist/services/package-catalog.js +2 -2
- package/dist/services/package-catalog.js.map +1 -1
- package/dist/services/pm-runner.d.ts +51 -1
- package/dist/services/pm-runner.js +105 -1
- package/dist/services/pm-runner.js.map +1 -1
- package/manifest.json +3 -5
- package/package.json +24 -19
package/dist/health.js
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { readdir, stat, unlink, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
/** Maximum time a single probe may run before it is considered failed. */
|
|
5
|
+
const PROBE_TIMEOUT_MS = 2000;
|
|
6
|
+
/** How long a computed health result is reused before re-probing. */
|
|
7
|
+
const CACHE_TTL_MS = 5000;
|
|
8
|
+
/**
|
|
9
|
+
* How long to skip the PostgreSQL probe after one times out.
|
|
10
|
+
*
|
|
11
|
+
* A timed-out query keeps a pool client until the server answers. Re-probing
|
|
12
|
+
* every cache expiry during a stall would drain the pool; this bounds it.
|
|
13
|
+
*/
|
|
14
|
+
const POOL_COOLDOWN_MS = 30_000;
|
|
15
|
+
/** How old a stray `.healthz-*.tmp` file must be before a sweep removes it. */
|
|
16
|
+
const STRAY_PROBE_MAX_AGE_MS = 60_000;
|
|
17
|
+
/** Extract a string message from an unknown rejection value. */
|
|
18
|
+
function errorMessage(error) {
|
|
19
|
+
// `/healthz` is unauthenticated, so the response must never carry a raw
|
|
20
|
+
// message: a pg failure names the host, port, database and user, and a
|
|
21
|
+
// filesystem failure names the projects-root path. Both are reconnaissance
|
|
22
|
+
// for an anonymous caller. Map to a stable category and keep the detail in
|
|
23
|
+
// the server log, where an operator can still read it.
|
|
24
|
+
const code = typeof error === "object" && error !== null && "code" in error
|
|
25
|
+
? String(error.code)
|
|
26
|
+
: "";
|
|
27
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
28
|
+
console.error("[healthz] probe failed", { code, message });
|
|
29
|
+
if (message === "probe timed out")
|
|
30
|
+
return "timed out";
|
|
31
|
+
if (code === "ENOENT")
|
|
32
|
+
return "not found";
|
|
33
|
+
if (code === "EACCES" || code === "EPERM" || code === "EROFS")
|
|
34
|
+
return "permission denied";
|
|
35
|
+
if (code === "ENOSPC")
|
|
36
|
+
return "no space left on device";
|
|
37
|
+
if (code === "ECONNREFUSED" || code === "ENOTFOUND" || code === "EHOSTUNREACH") {
|
|
38
|
+
return "unreachable";
|
|
39
|
+
}
|
|
40
|
+
return "unavailable";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Race a promise against a timeout, rejecting with `"probe timed out"` if the
|
|
44
|
+
* timeout fires first.
|
|
45
|
+
*
|
|
46
|
+
* The timer is cleared in both branches so a resolved/rejected probe does not
|
|
47
|
+
* leak a dangling timer, and a timed-out probe does not keep the event loop
|
|
48
|
+
* alive for the remaining lifetime of the underlying promise.
|
|
49
|
+
*/
|
|
50
|
+
function withTimeout(promise, ms) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const timer = setTimeout(() => reject(new Error("probe timed out")), ms);
|
|
53
|
+
promise.then((value) => { clearTimeout(timer); resolve(value); }, (error) => { clearTimeout(timer); reject(error); });
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Probe PostgreSQL by running `SELECT 1` through the provided queryable.
|
|
58
|
+
*
|
|
59
|
+
* Uses the service's real pool (not a fresh connection) so pool exhaustion is
|
|
60
|
+
* itself a failure mode the probe catches. The probe is bounded by
|
|
61
|
+
* {@link PROBE_TIMEOUT_MS}.
|
|
62
|
+
*/
|
|
63
|
+
function probePostgres(pool, timeoutMs) {
|
|
64
|
+
const start = Date.now();
|
|
65
|
+
// The raw query is returned alongside the status because the two settle at
|
|
66
|
+
// different times: the status settles when the timeout fires, the query only
|
|
67
|
+
// when PostgreSQL answers, and it is the query that holds a pool client.
|
|
68
|
+
// Anything deciding whether to start another probe has to wait on the query.
|
|
69
|
+
const query = pool.query("SELECT 1");
|
|
70
|
+
const status = withTimeout(query, timeoutMs).then(() => ({ ok: true, latency_ms: Date.now() - start }), (error) => ({ ok: false, latency_ms: Date.now() - start, error: errorMessage(error) }));
|
|
71
|
+
return { query, status };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Probe the projects root by writing and immediately removing a temp file
|
|
75
|
+
* inside it.
|
|
76
|
+
*
|
|
77
|
+
* A missing directory, a read-only host mount, or a full disk all surface as
|
|
78
|
+
* a write or unlink failure. The temp file is cleaned up in every path: on
|
|
79
|
+
* success it is unlinked by the probe itself, and on failure a best-effort
|
|
80
|
+
* cleanup removes it if the write succeeded but the unlink (or timeout) did
|
|
81
|
+
* not.
|
|
82
|
+
*/
|
|
83
|
+
async function probeProjectsRoot(root) {
|
|
84
|
+
const start = Date.now();
|
|
85
|
+
// A pid-and-millisecond name collides when two uncached probes start in the
|
|
86
|
+
// same millisecond: whichever unlinks first makes the other report ENOENT and
|
|
87
|
+
// return a spurious 503 for a perfectly healthy volume.
|
|
88
|
+
const probeFile = path.join(root, `.healthz-${randomUUID()}.tmp`);
|
|
89
|
+
// Held so cleanup can be attached to the attempt's own settlement rather than
|
|
90
|
+
// racing it. A timeout does not cancel the underlying write: unlinking
|
|
91
|
+
// immediately can therefore run BEFORE a slow write lands, leaving the file
|
|
92
|
+
// behind permanently - the opposite of what the cleanup is for.
|
|
93
|
+
const attempt = (async () => {
|
|
94
|
+
await writeFile(probeFile, "");
|
|
95
|
+
await unlink(probeFile);
|
|
96
|
+
})();
|
|
97
|
+
try {
|
|
98
|
+
await withTimeout(attempt, PROBE_TIMEOUT_MS);
|
|
99
|
+
return { ok: true, latency_ms: Date.now() - start };
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
// NOT awaited, and bounded. A stalled mount is the exact condition that
|
|
103
|
+
// reaches this path, and an unbounded `await unlink` here would never
|
|
104
|
+
// settle: probeProjectsRoot would never resolve, the Promise.all in
|
|
105
|
+
// compute() would never resolve, `inFlight` would never clear, and every
|
|
106
|
+
// subsequent /healthz request would await the same pending promise forever
|
|
107
|
+
// - serving nothing at all instead of 503.
|
|
108
|
+
void attempt.catch(() => undefined).finally(() => {
|
|
109
|
+
void withTimeout(unlink(probeFile), PROBE_TIMEOUT_MS).catch(() => undefined);
|
|
110
|
+
});
|
|
111
|
+
return { ok: false, latency_ms: Date.now() - start, error: errorMessage(error) };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Remove `.healthz-*.tmp` files older than {@link STRAY_PROBE_MAX_AGE_MS}.
|
|
116
|
+
*
|
|
117
|
+
* A probe whose write lands after its own cleanup has already run leaves a
|
|
118
|
+
* stray file that nothing else will remove. Sweeping on each healthy probe
|
|
119
|
+
* bounds how long such a file can persist, without ever failing the probe:
|
|
120
|
+
* a sweep error is not a health signal and is deliberately swallowed.
|
|
121
|
+
*
|
|
122
|
+
* @param root - The projects root to sweep.
|
|
123
|
+
*/
|
|
124
|
+
async function sweepStrayProbeFiles(root) {
|
|
125
|
+
try {
|
|
126
|
+
const now = Date.now();
|
|
127
|
+
for (const name of await readdir(root)) {
|
|
128
|
+
if (!name.startsWith(".healthz-") || !name.endsWith(".tmp"))
|
|
129
|
+
continue;
|
|
130
|
+
const full = path.join(root, name);
|
|
131
|
+
const info = await stat(full);
|
|
132
|
+
if (now - info.mtimeMs > STRAY_PROBE_MAX_AGE_MS)
|
|
133
|
+
await unlink(full);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Sweeping is housekeeping, not a dependency check.
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Run a soft-dependency probe, catching any synchronous throw, rejection, or
|
|
142
|
+
* timeout so a broken soft probe can never throw into the health handler.
|
|
143
|
+
*/
|
|
144
|
+
async function runSoftProbe(probe) {
|
|
145
|
+
try {
|
|
146
|
+
const status = await withTimeout(probe.probe(), PROBE_TIMEOUT_MS);
|
|
147
|
+
return [probe.name, status];
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
return [probe.name, { ok: false, latency_ms: 0, error: errorMessage(error) }];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Build the Express `/healthz` request handler.
|
|
155
|
+
*
|
|
156
|
+
* The handler probes every hard dependency in parallel, adds soft-dependency
|
|
157
|
+
* results, caches the outcome for {@link CACHE_TTL_MS} milliseconds, and
|
|
158
|
+
* responds with HTTP 200 (`ok: true`) or 503 (`ok: false`). It never throws:
|
|
159
|
+
* each probe catches its own errors, and the outer `try`/`catch` is a
|
|
160
|
+
* defensive last resort.
|
|
161
|
+
*/
|
|
162
|
+
export function createHealthHandler(deps) {
|
|
163
|
+
let cached = null;
|
|
164
|
+
// Concurrent cache misses must share ONE computation. `withTimeout` rejects
|
|
165
|
+
// its wrapper but cannot cancel the underlying `pool.query`, so without this
|
|
166
|
+
// every request during a hung database starts another query that keeps
|
|
167
|
+
// running after the endpoint has already answered 503 - consuming pool
|
|
168
|
+
// capacity and starving the ordinary API. Single-flight bounds the damage to
|
|
169
|
+
// one in-flight probe no matter how often the endpoint is polled.
|
|
170
|
+
let inFlight = null;
|
|
171
|
+
// Epoch ms of the last PostgreSQL probe timeout, or 0 if none has timed out.
|
|
172
|
+
let lastPostgresTimeoutAt = 0;
|
|
173
|
+
// A timed-out probe's query is still outstanding: `withTimeout` rejects its
|
|
174
|
+
// wrapper, it cannot cancel `pool.query`. Elapsed time alone is therefore the
|
|
175
|
+
// wrong condition to start another one -- during a prolonged stall the
|
|
176
|
+
// cooldown expires on schedule while the previous client is still checked
|
|
177
|
+
// out, and the pool drains one client per cooldown. This holds the query
|
|
178
|
+
// itself, so at most one probe is ever outstanding however long the database
|
|
179
|
+
// takes to answer.
|
|
180
|
+
let outstandingPostgresProbe;
|
|
181
|
+
const probeTimeoutMs = deps.timing?.probeTimeoutMs ?? PROBE_TIMEOUT_MS;
|
|
182
|
+
const cacheTtlMs = deps.timing?.cacheTtlMs ?? CACHE_TTL_MS;
|
|
183
|
+
const poolCooldownMs = deps.timing?.poolCooldownMs ?? POOL_COOLDOWN_MS;
|
|
184
|
+
/**
|
|
185
|
+
* Probe every dependency once and cache the outcome.
|
|
186
|
+
*
|
|
187
|
+
* Separated from the handler so concurrent cache misses can await a single
|
|
188
|
+
* shared promise rather than each starting their own probe round.
|
|
189
|
+
*
|
|
190
|
+
* @returns The freshly computed health result, already written to the cache.
|
|
191
|
+
*/
|
|
192
|
+
async function compute() {
|
|
193
|
+
let result;
|
|
194
|
+
try {
|
|
195
|
+
// `withTimeout` rejects its wrapper but cannot cancel `pool.query`, so a
|
|
196
|
+
// timed-out probe leaves a client checked out until PostgreSQL answers.
|
|
197
|
+
// Without a cooldown, every cache expiry starts another one and a stalled
|
|
198
|
+
// database drains the shared pool out from under the ordinary API. After
|
|
199
|
+
// a timeout the probe is not retried for POOL_COOLDOWN_MS; the endpoint
|
|
200
|
+
// keeps answering 503 from the reported status in the meantime.
|
|
201
|
+
/**
|
|
202
|
+
* Start one PostgreSQL probe and hold its query until PostgreSQL answers.
|
|
203
|
+
*
|
|
204
|
+
* @returns The probe's status.
|
|
205
|
+
*/
|
|
206
|
+
const startPostgresProbe = () => {
|
|
207
|
+
const { query, status } = probePostgres(deps.pool, probeTimeoutMs);
|
|
208
|
+
// Cleared when the QUERY settles, not when the status does. A timed-out
|
|
209
|
+
// probe reports in milliseconds while its client stays checked out
|
|
210
|
+
// until PostgreSQL answers, so clearing on the status would let the
|
|
211
|
+
// next cooldown expiry check out another one on top of it.
|
|
212
|
+
outstandingPostgresProbe = query;
|
|
213
|
+
const release = () => {
|
|
214
|
+
if (outstandingPostgresProbe === query)
|
|
215
|
+
outstandingPostgresProbe = undefined;
|
|
216
|
+
};
|
|
217
|
+
void query.then(release, release);
|
|
218
|
+
return status;
|
|
219
|
+
};
|
|
220
|
+
const cooling = Date.now() - lastPostgresTimeoutAt < poolCooldownMs;
|
|
221
|
+
const outstanding = outstandingPostgresProbe !== undefined;
|
|
222
|
+
const postgresProbe = cooling || outstanding
|
|
223
|
+
? Promise.resolve({
|
|
224
|
+
ok: false,
|
|
225
|
+
latency_ms: 0,
|
|
226
|
+
error: outstanding ? "previous probe still outstanding" : "probe cooling down after timeout",
|
|
227
|
+
})
|
|
228
|
+
: startPostgresProbe().then((status) => {
|
|
229
|
+
// "timed out" is errorMessage()'s stable category, not the raw
|
|
230
|
+
// message: /healthz is unauthenticated, so the raw text is
|
|
231
|
+
// deliberately never surfaced. Matching the category is what makes
|
|
232
|
+
// this survive a change to the underlying error string.
|
|
233
|
+
if (!status.ok && status.error === "timed out") {
|
|
234
|
+
lastPostgresTimeoutAt = Date.now();
|
|
235
|
+
}
|
|
236
|
+
return status;
|
|
237
|
+
});
|
|
238
|
+
const [postgres, projectsRootStatus, ...softResults] = await Promise.all([
|
|
239
|
+
postgresProbe,
|
|
240
|
+
probeProjectsRoot(deps.projectsRoot),
|
|
241
|
+
...(deps.softProbes?.map(runSoftProbe) ?? []),
|
|
242
|
+
]);
|
|
243
|
+
const dependencies = {
|
|
244
|
+
postgres,
|
|
245
|
+
projects_root: projectsRootStatus,
|
|
246
|
+
};
|
|
247
|
+
for (const [name, status] of softResults) {
|
|
248
|
+
dependencies[name] = status;
|
|
249
|
+
}
|
|
250
|
+
if (projectsRootStatus.ok)
|
|
251
|
+
void sweepStrayProbeFiles(deps.projectsRoot);
|
|
252
|
+
result = {
|
|
253
|
+
ok: postgres.ok && projectsRootStatus.ok,
|
|
254
|
+
version: deps.version,
|
|
255
|
+
dependencies,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Every probe catches its own errors; this is a defensive last resort
|
|
260
|
+
// so the handler can never throw an unhandled error into Express.
|
|
261
|
+
result = {
|
|
262
|
+
ok: false,
|
|
263
|
+
version: deps.version,
|
|
264
|
+
dependencies: {
|
|
265
|
+
postgres: { ok: false, latency_ms: 0, error: "unexpected handler error" },
|
|
266
|
+
projects_root: { ok: false, latency_ms: 0, error: "unexpected handler error" },
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
cached = { result, at: Date.now() };
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
const handler = async (_req, res) => {
|
|
274
|
+
if (cached && Date.now() - cached.at < cacheTtlMs) {
|
|
275
|
+
res.status(cached.result.ok ? 200 : 503).json(cached.result);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
inFlight ??= compute().finally(() => { inFlight = null; });
|
|
279
|
+
const result = await inFlight;
|
|
280
|
+
res.status(result.ok ? 200 : 503).json(result);
|
|
281
|
+
};
|
|
282
|
+
return handler;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ExtensionApi } from "@unbrained/pm-cli/sdk";
|
|
1
|
+
import { type ExtensionApi, type SuppressedHostOutput } from "@unbrained/pm-cli/sdk";
|
|
2
2
|
/** Resolve the port from flag → PORT env → default 4000. */
|
|
3
3
|
export declare function resolvePort(options: Record<string, unknown>, env?: NodeJS.ProcessEnv): string;
|
|
4
4
|
/**
|
|
@@ -19,21 +19,43 @@ export declare function pidfilePath(port: string | number, env?: NodeJS.ProcessE
|
|
|
19
19
|
* @returns True when the version is at least 22.18.0.
|
|
20
20
|
*/
|
|
21
21
|
export declare function nodeVersionMeetsRequirement(version?: string): boolean;
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Shape a /healthz probe outcome into a stable status result object.
|
|
24
|
+
*
|
|
25
|
+
* Reachability and readiness are separate answers. A server whose dependencies
|
|
26
|
+
* are down answers 503 while being perfectly reachable, and reporting that as
|
|
27
|
+
* DOWN sends an operator to look for a process that is running -- so the two
|
|
28
|
+
* are reported separately, with "degraded" naming the state in between.
|
|
29
|
+
*/
|
|
23
30
|
export declare function shapeStatusResult(input: {
|
|
24
31
|
port: string | number;
|
|
25
32
|
reachable: boolean;
|
|
33
|
+
healthy?: boolean;
|
|
26
34
|
body?: unknown;
|
|
27
35
|
error?: string;
|
|
28
36
|
}): {
|
|
29
|
-
status: "up" | "down";
|
|
37
|
+
status: "up" | "degraded" | "down";
|
|
30
38
|
port: number;
|
|
31
39
|
reachable: boolean;
|
|
40
|
+
healthy: boolean;
|
|
32
41
|
url: string;
|
|
33
42
|
version: string | null;
|
|
34
43
|
healthz: unknown;
|
|
35
44
|
error?: string;
|
|
36
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Write a command-owned JSON or human-readable payload exactly once.
|
|
48
|
+
*
|
|
49
|
+
* The public SDK marker retains the structured result for hooks and embedded
|
|
50
|
+
* hosts while preventing the CLI presentation layer from appending a second
|
|
51
|
+
* serialization to stdout.
|
|
52
|
+
*
|
|
53
|
+
* @param json - Whether to render the structured JSON representation.
|
|
54
|
+
* @param result - Structured command result retained for host integrations.
|
|
55
|
+
* @param humanLines - Lines rendered for an interactive non-JSON invocation.
|
|
56
|
+
* @returns The host-output suppression marker carrying the structured result.
|
|
57
|
+
*/
|
|
58
|
+
export declare function emitOwnedOutput<TResult>(json: boolean, result: TResult, humanLines: readonly string[]): SuppressedHostOutput<TResult>;
|
|
37
59
|
declare const _default: {
|
|
38
60
|
name: string;
|
|
39
61
|
version: string;
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import net from "node:net";
|
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
|
-
import { defineExtension, } from "@unbrained/pm-cli/sdk";
|
|
9
|
+
import { defineExtension, suppressHostOutput, } from "@unbrained/pm-cli/sdk";
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
11
|
// Error contract
|
|
12
12
|
// CommandError carries a numeric exitCode so the pm runtime surfaces a clean
|
|
@@ -76,15 +76,26 @@ export function nodeVersionMeetsRequirement(version = process.versions.node) {
|
|
|
76
76
|
}
|
|
77
77
|
return true;
|
|
78
78
|
}
|
|
79
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Shape a /healthz probe outcome into a stable status result object.
|
|
81
|
+
*
|
|
82
|
+
* Reachability and readiness are separate answers. A server whose dependencies
|
|
83
|
+
* are down answers 503 while being perfectly reachable, and reporting that as
|
|
84
|
+
* DOWN sends an operator to look for a process that is running -- so the two
|
|
85
|
+
* are reported separately, with "degraded" naming the state in between.
|
|
86
|
+
*/
|
|
80
87
|
export function shapeStatusResult(input) {
|
|
81
88
|
const portNum = Number(input.port);
|
|
82
89
|
const body = (input.body ?? null);
|
|
83
90
|
const version = body && typeof body["version"] === "string" ? body["version"] : null;
|
|
91
|
+
// `healthy` defaults to reachability so a caller that does not distinguish the
|
|
92
|
+
// two keeps its previous meaning.
|
|
93
|
+
const healthy = input.healthy ?? input.reachable;
|
|
84
94
|
const result = {
|
|
85
|
-
status: input.reachable ? "up" : "
|
|
95
|
+
status: !input.reachable ? "down" : healthy ? "up" : "degraded",
|
|
86
96
|
port: portNum,
|
|
87
97
|
reachable: input.reachable,
|
|
98
|
+
healthy,
|
|
88
99
|
url: `http://localhost:${portNum}/healthz`,
|
|
89
100
|
version,
|
|
90
101
|
healthz: input.body ?? null,
|
|
@@ -93,6 +104,28 @@ export function shapeStatusResult(input) {
|
|
|
93
104
|
result.error = input.error;
|
|
94
105
|
return result;
|
|
95
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Write a command-owned JSON or human-readable payload exactly once.
|
|
109
|
+
*
|
|
110
|
+
* The public SDK marker retains the structured result for hooks and embedded
|
|
111
|
+
* hosts while preventing the CLI presentation layer from appending a second
|
|
112
|
+
* serialization to stdout.
|
|
113
|
+
*
|
|
114
|
+
* @param json - Whether to render the structured JSON representation.
|
|
115
|
+
* @param result - Structured command result retained for host integrations.
|
|
116
|
+
* @param humanLines - Lines rendered for an interactive non-JSON invocation.
|
|
117
|
+
* @returns The host-output suppression marker carrying the structured result.
|
|
118
|
+
*/
|
|
119
|
+
export function emitOwnedOutput(json, result, humanLines) {
|
|
120
|
+
if (json) {
|
|
121
|
+
console.log(JSON.stringify(result, null, 2));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
for (const line of humanLines)
|
|
125
|
+
console.log(line);
|
|
126
|
+
}
|
|
127
|
+
return suppressHostOutput(result);
|
|
128
|
+
}
|
|
96
129
|
// ---------------------------------------------------------------------------
|
|
97
130
|
// Runtime helpers
|
|
98
131
|
// ---------------------------------------------------------------------------
|
|
@@ -138,10 +171,12 @@ async function probeHealthz(port) {
|
|
|
138
171
|
catch {
|
|
139
172
|
body = null;
|
|
140
173
|
}
|
|
141
|
-
|
|
174
|
+
// A response of any status means the server answered. `res.ok` is whether
|
|
175
|
+
// its dependencies are healthy, which is a different question.
|
|
176
|
+
return { reachable: true, healthy: res.ok, body };
|
|
142
177
|
}
|
|
143
178
|
catch (err) {
|
|
144
|
-
return { reachable: false, error: err instanceof Error ? err.message : String(err) };
|
|
179
|
+
return { reachable: false, healthy: false, error: err instanceof Error ? err.message : String(err) };
|
|
145
180
|
}
|
|
146
181
|
finally {
|
|
147
182
|
clearTimeout(timer);
|
|
@@ -227,7 +262,7 @@ function processAlive(pid) {
|
|
|
227
262
|
}
|
|
228
263
|
export default defineExtension({
|
|
229
264
|
name: "pm-web",
|
|
230
|
-
version: "2026.8.
|
|
265
|
+
version: "2026.8.29",
|
|
231
266
|
activate(api) {
|
|
232
267
|
// -----------------------------------------------------------------------
|
|
233
268
|
// Command: pm web [--port <port>] [--detach]
|
|
@@ -313,20 +348,17 @@ export default defineExtension({
|
|
|
313
348
|
const result = shapeStatusResult({
|
|
314
349
|
port,
|
|
315
350
|
reachable: probe.reachable,
|
|
351
|
+
healthy: probe.healthy,
|
|
316
352
|
body: probe.body,
|
|
317
353
|
error: probe.error,
|
|
318
354
|
});
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
else {
|
|
327
|
-
console.log(`pm-web is DOWN on port ${result.port}`);
|
|
328
|
-
}
|
|
329
|
-
return result;
|
|
355
|
+
const version = result.version ? ` (version ${result.version})` : "";
|
|
356
|
+
const humanLine = result.status === "up"
|
|
357
|
+
? `pm-web is UP on port ${result.port}${version}`
|
|
358
|
+
: result.status === "degraded"
|
|
359
|
+
? `pm-web is REACHABLE but UNHEALTHY on port ${result.port}${version} - see healthz for the failing dependency`
|
|
360
|
+
: `pm-web is DOWN on port ${result.port}`;
|
|
361
|
+
return emitOwnedOutput(json, result, [humanLine]);
|
|
330
362
|
},
|
|
331
363
|
});
|
|
332
364
|
// -----------------------------------------------------------------------
|
|
@@ -346,15 +378,6 @@ export default defineExtension({
|
|
|
346
378
|
// (the host rejects the registration) and must read it from ctx.global.
|
|
347
379
|
const json = ctx.global?.json === true;
|
|
348
380
|
const pidfile = pidfilePath(port);
|
|
349
|
-
const emit = (result) => {
|
|
350
|
-
if (json) {
|
|
351
|
-
console.log(JSON.stringify(result, null, 2));
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
console.log(String(result["message"]));
|
|
355
|
-
}
|
|
356
|
-
return result;
|
|
357
|
-
};
|
|
358
381
|
// Prefer the in-process handle if we started it this session.
|
|
359
382
|
let pid = null;
|
|
360
383
|
if (serverProcess?.pid) {
|
|
@@ -367,22 +390,24 @@ export default defineExtension({
|
|
|
367
390
|
pid = parsed;
|
|
368
391
|
}
|
|
369
392
|
if (pid === null) {
|
|
370
|
-
|
|
393
|
+
const result = {
|
|
371
394
|
status: "not_running",
|
|
372
395
|
port: Number(port),
|
|
373
396
|
message: `pm-web is not running (no pidfile for port ${port}).`,
|
|
374
|
-
}
|
|
397
|
+
};
|
|
398
|
+
return emitOwnedOutput(json, result, [result.message]);
|
|
375
399
|
}
|
|
376
400
|
if (!processAlive(pid)) {
|
|
377
401
|
// Stale pidfile — clean it up and report gracefully.
|
|
378
402
|
if (fs.existsSync(pidfile))
|
|
379
403
|
fs.rmSync(pidfile, { force: true });
|
|
380
|
-
|
|
404
|
+
const result = {
|
|
381
405
|
status: "not_running",
|
|
382
406
|
port: Number(port),
|
|
383
407
|
pid,
|
|
384
408
|
message: `pm-web process (PID ${pid}) is not running; cleared stale pidfile.`,
|
|
385
|
-
}
|
|
409
|
+
};
|
|
410
|
+
return emitOwnedOutput(json, result, [result.message]);
|
|
386
411
|
}
|
|
387
412
|
try {
|
|
388
413
|
process.kill(pid, "SIGTERM");
|
|
@@ -394,12 +419,13 @@ export default defineExtension({
|
|
|
394
419
|
fs.rmSync(pidfile, { force: true });
|
|
395
420
|
if (serverProcess?.pid === pid)
|
|
396
421
|
serverProcess = null;
|
|
397
|
-
|
|
422
|
+
const result = {
|
|
398
423
|
status: "stopped",
|
|
399
424
|
port: Number(port),
|
|
400
425
|
pid,
|
|
401
426
|
message: `Stopped pm-web (PID ${pid}) on port ${port}.`,
|
|
402
|
-
}
|
|
427
|
+
};
|
|
428
|
+
return emitOwnedOutput(json, result, [result.message]);
|
|
403
429
|
},
|
|
404
430
|
});
|
|
405
431
|
// -----------------------------------------------------------------------
|
|
@@ -467,16 +493,10 @@ export default defineExtension({
|
|
|
467
493
|
port: Number(port),
|
|
468
494
|
checks,
|
|
469
495
|
};
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
console.log(`pm-web doctor — overall: ${ok ? "OK" : "ISSUES"}`);
|
|
475
|
-
for (const c of checks) {
|
|
476
|
-
console.log(` [${c.ok ? "ok" : "!!"}] ${c.name}: ${c.detail}`);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
return result;
|
|
496
|
+
return emitOwnedOutput(json, result, [
|
|
497
|
+
`pm-web doctor — overall: ${ok ? "OK" : "ISSUES"}`,
|
|
498
|
+
...checks.map((check) => ` [${check.ok ? "ok" : "!!"}] ${check.name}: ${check.detail}`),
|
|
499
|
+
]);
|
|
480
500
|
},
|
|
481
501
|
});
|
|
482
502
|
// -----------------------------------------------------------------------
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|