peerllm-host-cli 1.7.2 → 1.7.5
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/dist/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/cli/commands/dashboard.js +38 -31
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/format.d.ts +4 -0
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +10 -3
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/index.js +4 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/core/catalog-polling.d.ts +30 -0
- package/dist/core/catalog-polling.d.ts.map +1 -0
- package/dist/core/catalog-polling.js +70 -0
- package/dist/core/catalog-polling.js.map +1 -0
- package/dist/core/friendly-errors.d.ts +33 -0
- package/dist/core/friendly-errors.d.ts.map +1 -0
- package/dist/core/friendly-errors.js +283 -0
- package/dist/core/friendly-errors.js.map +1 -0
- package/dist/core/gpu-stats.d.ts +22 -0
- package/dist/core/gpu-stats.d.ts.map +1 -0
- package/dist/core/gpu-stats.js +141 -0
- package/dist/core/gpu-stats.js.map +1 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +22 -5
- package/dist/core/logger.js.map +1 -1
- package/dist/core/model-download.d.ts.map +1 -1
- package/dist/core/model-download.js +7 -0
- package/dist/core/model-download.js.map +1 -1
- package/dist/core/npm-version.d.ts.map +1 -1
- package/dist/core/npm-version.js +5 -1
- package/dist/core/npm-version.js.map +1 -1
- package/dist/daemon/index.js +4 -3
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/methods.d.ts +2 -0
- package/dist/daemon/methods.d.ts.map +1 -1
- package/dist/daemon/methods.js +6 -1
- package/dist/daemon/methods.js.map +1 -1
- package/dist/daemon/run.d.ts.map +1 -1
- package/dist/daemon/run.js +6 -0
- package/dist/daemon/run.js.map +1 -1
- package/dist/shared/protocol.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { EXIT } from "../cli/exit-codes.js";
|
|
2
|
+
function getStringProp(err, key) {
|
|
3
|
+
if (err && typeof err === "object" && key in err) {
|
|
4
|
+
const v = err[key];
|
|
5
|
+
return typeof v === "string" ? v : undefined;
|
|
6
|
+
}
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
function getNumberProp(err, key) {
|
|
10
|
+
if (err && typeof err === "object" && key in err) {
|
|
11
|
+
const v = err[key];
|
|
12
|
+
return typeof v === "number" ? v : undefined;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
function getCode(err) {
|
|
17
|
+
return getStringProp(err, "code");
|
|
18
|
+
}
|
|
19
|
+
function getMessage(err) {
|
|
20
|
+
if (err instanceof Error)
|
|
21
|
+
return err.message;
|
|
22
|
+
if (typeof err === "string")
|
|
23
|
+
return err;
|
|
24
|
+
if (err && typeof err === "object") {
|
|
25
|
+
const m = getStringProp(err, "message");
|
|
26
|
+
if (m)
|
|
27
|
+
return m;
|
|
28
|
+
}
|
|
29
|
+
return String(err);
|
|
30
|
+
}
|
|
31
|
+
export function formatSystemError(err, context = {}) {
|
|
32
|
+
const code = getCode(err);
|
|
33
|
+
if (!code)
|
|
34
|
+
return null;
|
|
35
|
+
const path = context.path ?? getStringProp(err, "path");
|
|
36
|
+
const operation = context.operation;
|
|
37
|
+
switch (code) {
|
|
38
|
+
case "ENOSPC":
|
|
39
|
+
case "insufficient_disk_space":
|
|
40
|
+
return formatEnospc(path, operation);
|
|
41
|
+
case "EACCES":
|
|
42
|
+
case "EPERM":
|
|
43
|
+
return formatPermission(path, operation, code);
|
|
44
|
+
case "EROFS":
|
|
45
|
+
return formatReadOnly(path);
|
|
46
|
+
case "EMFILE":
|
|
47
|
+
case "ENFILE":
|
|
48
|
+
return formatTooManyOpenFiles();
|
|
49
|
+
case "EADDRINUSE":
|
|
50
|
+
return formatAddrInUse(getStringProp(err, "address"), getNumberProp(err, "port"), path);
|
|
51
|
+
case "ECONNREFUSED":
|
|
52
|
+
case "ENOTFOUND":
|
|
53
|
+
case "ENETUNREACH":
|
|
54
|
+
case "ETIMEDOUT":
|
|
55
|
+
case "EAI_AGAIN":
|
|
56
|
+
return formatNetwork(code);
|
|
57
|
+
case "EISDIR":
|
|
58
|
+
return formatIsDir(path);
|
|
59
|
+
case "ENOTDIR":
|
|
60
|
+
return formatNotDir(path);
|
|
61
|
+
default:
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function formatEnospc(path, operation) {
|
|
66
|
+
const body = [
|
|
67
|
+
"Your computer doesn't have enough free disk space to finish this operation.",
|
|
68
|
+
];
|
|
69
|
+
if (operation) {
|
|
70
|
+
body.push(`Operation: ${operation}${path ? ` (${path})` : ""}`);
|
|
71
|
+
}
|
|
72
|
+
else if (path) {
|
|
73
|
+
body.push(`Target: ${path}`);
|
|
74
|
+
}
|
|
75
|
+
body.push("", "What to try:", " • See what's taking space: df -h", " • List downloaded models: peerllm-host models list", " • Delete an unused model: peerllm-host models delete <name>");
|
|
76
|
+
if (process.platform === "darwin") {
|
|
77
|
+
body.push(" • Clear large caches: ~/Library/Caches, ~/Library/Logs");
|
|
78
|
+
}
|
|
79
|
+
else if (process.platform === "linux") {
|
|
80
|
+
body.push(" • Clear large caches: ~/.cache");
|
|
81
|
+
}
|
|
82
|
+
else if (process.platform === "win32") {
|
|
83
|
+
body.push(" • Run Disk Cleanup or clear %TEMP%");
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
title: "Out of disk space",
|
|
87
|
+
body,
|
|
88
|
+
hint: "Free some space, then retry your command.",
|
|
89
|
+
exitCode: EXIT.runtimeError,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function formatPermission(path, operation, code) {
|
|
93
|
+
const body = [
|
|
94
|
+
"PeerLLM doesn't have permission to access the file or directory it needs.",
|
|
95
|
+
];
|
|
96
|
+
if (operation) {
|
|
97
|
+
body.push(`Operation: ${operation}${path ? ` (${path})` : ""}`);
|
|
98
|
+
}
|
|
99
|
+
else if (path) {
|
|
100
|
+
body.push(`Path: ${path}`);
|
|
101
|
+
}
|
|
102
|
+
body.push("", "What to try:", " • Check that you own the path: ls -l <path>", " • Avoid running with sudo if you started PeerLLM as your normal user before", " • Fix ownership if needed: chown -R $USER <path>");
|
|
103
|
+
return {
|
|
104
|
+
title: code === "EPERM" ? "Operation not permitted" : "Permission denied",
|
|
105
|
+
body,
|
|
106
|
+
exitCode: EXIT.runtimeError,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function formatReadOnly(path) {
|
|
110
|
+
const body = [
|
|
111
|
+
"The destination is on a read-only filesystem and can't be written to.",
|
|
112
|
+
];
|
|
113
|
+
if (path)
|
|
114
|
+
body.push(`Path: ${path}`);
|
|
115
|
+
body.push("", "What to try:", " • Choose a writable location (e.g. somewhere under your home directory)", " • If this is an external drive, check that it's mounted read-write");
|
|
116
|
+
return {
|
|
117
|
+
title: "Read-only filesystem",
|
|
118
|
+
body,
|
|
119
|
+
exitCode: EXIT.runtimeError,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function formatTooManyOpenFiles() {
|
|
123
|
+
const body = [
|
|
124
|
+
"PeerLLM hit the operating system's open-file limit.",
|
|
125
|
+
"",
|
|
126
|
+
"What to try:",
|
|
127
|
+
" • Close other apps that may have many files open",
|
|
128
|
+
" • Raise the soft limit: ulimit -n 4096",
|
|
129
|
+
" • Or restart your shell and try again",
|
|
130
|
+
];
|
|
131
|
+
return {
|
|
132
|
+
title: "Too many open files",
|
|
133
|
+
body,
|
|
134
|
+
exitCode: EXIT.runtimeError,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function formatAddrInUse(address, port, path) {
|
|
138
|
+
const endpoint = port !== undefined
|
|
139
|
+
? `${address ?? "localhost"}:${port}`
|
|
140
|
+
: path ?? address ?? "the address";
|
|
141
|
+
const body = [
|
|
142
|
+
`Another process is already using ${endpoint}.`,
|
|
143
|
+
"",
|
|
144
|
+
"What to try:",
|
|
145
|
+
" • Stop a running daemon: peerllm-host stop",
|
|
146
|
+
" • Check status: peerllm-host status",
|
|
147
|
+
" • If the daemon crashed, the stale socket may remain — remove it manually:",
|
|
148
|
+
` rm ${path ?? "<ipc endpoint>"}`,
|
|
149
|
+
];
|
|
150
|
+
return {
|
|
151
|
+
title: "Address already in use",
|
|
152
|
+
body,
|
|
153
|
+
exitCode: EXIT.alreadyRunning,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function formatNetwork(code) {
|
|
157
|
+
const titles = {
|
|
158
|
+
ECONNREFUSED: "Connection refused",
|
|
159
|
+
ENOTFOUND: "Host not found",
|
|
160
|
+
ENETUNREACH: "Network unreachable",
|
|
161
|
+
ETIMEDOUT: "Network timed out",
|
|
162
|
+
EAI_AGAIN: "Temporary DNS failure",
|
|
163
|
+
};
|
|
164
|
+
const body = [
|
|
165
|
+
"PeerLLM couldn't reach the network endpoint it needs.",
|
|
166
|
+
"",
|
|
167
|
+
"What to try:",
|
|
168
|
+
" • Check your internet connection",
|
|
169
|
+
" • Verify no firewall or proxy is blocking outbound HTTPS",
|
|
170
|
+
" • Run diagnostics: peerllm-host doctor",
|
|
171
|
+
];
|
|
172
|
+
return {
|
|
173
|
+
title: titles[code] ?? "Network error",
|
|
174
|
+
body,
|
|
175
|
+
exitCode: EXIT.runtimeError,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function formatIsDir(path) {
|
|
179
|
+
const body = [
|
|
180
|
+
"Expected a file, but the path points to a directory.",
|
|
181
|
+
];
|
|
182
|
+
if (path)
|
|
183
|
+
body.push(`Path: ${path}`);
|
|
184
|
+
return {
|
|
185
|
+
title: "Path is a directory",
|
|
186
|
+
body,
|
|
187
|
+
exitCode: EXIT.userError,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function formatNotDir(path) {
|
|
191
|
+
const body = [
|
|
192
|
+
"Expected a directory, but the path points to a file (or doesn't exist).",
|
|
193
|
+
];
|
|
194
|
+
if (path)
|
|
195
|
+
body.push(`Path: ${path}`);
|
|
196
|
+
return {
|
|
197
|
+
title: "Path is not a directory",
|
|
198
|
+
body,
|
|
199
|
+
exitCode: EXIT.userError,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Render a FriendlyError to stderr in the project's `✗ title` style.
|
|
204
|
+
* Always writes to stderr, even when stderr is buffered, so messages survive
|
|
205
|
+
* an immediate `process.exit`.
|
|
206
|
+
*/
|
|
207
|
+
export function writeFriendlyError(fe, raw) {
|
|
208
|
+
const lines = [`✗ ${fe.title}`];
|
|
209
|
+
if (fe.body.length > 0) {
|
|
210
|
+
lines.push("");
|
|
211
|
+
}
|
|
212
|
+
for (const line of fe.body) {
|
|
213
|
+
lines.push(line.length === 0 ? "" : ` ${line}`);
|
|
214
|
+
}
|
|
215
|
+
if (fe.hint) {
|
|
216
|
+
lines.push("");
|
|
217
|
+
lines.push(` ${fe.hint}`);
|
|
218
|
+
}
|
|
219
|
+
if (raw !== undefined && isDebugEnabled()) {
|
|
220
|
+
lines.push("");
|
|
221
|
+
lines.push(" --- raw error (DEBUG) ---");
|
|
222
|
+
const dump = raw instanceof Error && raw.stack ? raw.stack : String(raw);
|
|
223
|
+
for (const dl of dump.split("\n"))
|
|
224
|
+
lines.push(` ${dl}`);
|
|
225
|
+
}
|
|
226
|
+
process.stderr.write(lines.join("\n") + "\n");
|
|
227
|
+
}
|
|
228
|
+
function isDebugEnabled() {
|
|
229
|
+
return process.env["DEBUG"] === "1" || process.env["PEERLLM_DEBUG"] === "1";
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Format and print an error in the friendly style, falling back to a plain
|
|
233
|
+
* "✗ <message>" line for unrecognized errors. Returns the exit code to use.
|
|
234
|
+
*/
|
|
235
|
+
export function printFriendlyError(err, context = {}) {
|
|
236
|
+
const friendly = formatSystemError(err, context);
|
|
237
|
+
if (friendly) {
|
|
238
|
+
writeFriendlyError(friendly, err);
|
|
239
|
+
return friendly.exitCode;
|
|
240
|
+
}
|
|
241
|
+
const exitCode = getNumberProp(err, "exitCode") ?? EXIT.runtimeError;
|
|
242
|
+
const message = getMessage(err) || "an unknown error occurred";
|
|
243
|
+
const hint = getStringProp(err, "hint");
|
|
244
|
+
const lines = [`✗ ${message}`];
|
|
245
|
+
if (hint) {
|
|
246
|
+
lines.push("");
|
|
247
|
+
lines.push(` ${hint}`);
|
|
248
|
+
}
|
|
249
|
+
if (isDebugEnabled() && err instanceof Error && err.stack) {
|
|
250
|
+
lines.push("");
|
|
251
|
+
lines.push(" --- raw error (DEBUG) ---");
|
|
252
|
+
for (const dl of err.stack.split("\n"))
|
|
253
|
+
lines.push(` ${dl}`);
|
|
254
|
+
}
|
|
255
|
+
process.stderr.write(lines.join("\n") + "\n");
|
|
256
|
+
return exitCode;
|
|
257
|
+
}
|
|
258
|
+
let crashHandlersInstalled = false;
|
|
259
|
+
/**
|
|
260
|
+
* Install global handlers for uncaughtException and unhandledRejection so that
|
|
261
|
+
* stream 'error' events and dropped promise rejections produce a friendly
|
|
262
|
+
* message instead of a raw Node stack trace + crash.
|
|
263
|
+
*/
|
|
264
|
+
export function installCrashHandlers(opts = {}) {
|
|
265
|
+
if (crashHandlersInstalled)
|
|
266
|
+
return;
|
|
267
|
+
crashHandlersInstalled = true;
|
|
268
|
+
const prefix = opts.prefix;
|
|
269
|
+
const handle = (err) => {
|
|
270
|
+
try {
|
|
271
|
+
if (prefix)
|
|
272
|
+
process.stderr.write(`[${prefix}] fatal: uncaught\n`);
|
|
273
|
+
const code = printFriendlyError(err);
|
|
274
|
+
process.exit(code);
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
process.exit(EXIT.runtimeError);
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
process.on("uncaughtException", handle);
|
|
281
|
+
process.on("unhandledRejection", handle);
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=friendly-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friendly-errors.js","sourceRoot":"","sources":["../../src/core/friendly-errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sample current GPU utilization as a 0..1 fraction, falling back across
|
|
3
|
+
* platform-specific sources when `systeminformation` doesn't expose it.
|
|
4
|
+
*
|
|
5
|
+
* Returns null when no source produces a usable number; the dashboard treats
|
|
6
|
+
* that as "not sampled this tick" and shows VRAM only.
|
|
7
|
+
*/
|
|
8
|
+
export declare function sampleGpuUtilization(): Promise<number | null>;
|
|
9
|
+
/**
|
|
10
|
+
* Pull the largest `"Device Utilization %"=N` from `PerformanceStatistics`
|
|
11
|
+
* blocks in an `ioreg -rc IOAccelerator` dump. Skips `PerformanceStatisticsAccum`
|
|
12
|
+
* blocks (cumulative since boot, not useful for live %).
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseIoregUtilization(text: string): number | null;
|
|
15
|
+
/**
|
|
16
|
+
* Parse `nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits`
|
|
17
|
+
* output — one integer per GPU per line. Returns max as a 0..1 fraction.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseNvidiaSmiUtilization(text: string): number | null;
|
|
20
|
+
/** Test-only helper — resets the cached source. */
|
|
21
|
+
export declare function _resetCachedSourceForTests(): void;
|
|
22
|
+
//# sourceMappingURL=gpu-stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpu-stats.d.ts","sourceRoot":"","sources":["../../src/core/gpu-stats.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BnE;AA6DD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBjE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASrE;AAED,mDAAmD;AACnD,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
const execFileP = promisify(execFile);
|
|
5
|
+
const SAMPLE_TIMEOUT_MS = 1500;
|
|
6
|
+
let cachedSource;
|
|
7
|
+
/**
|
|
8
|
+
* Sample current GPU utilization as a 0..1 fraction, falling back across
|
|
9
|
+
* platform-specific sources when `systeminformation` doesn't expose it.
|
|
10
|
+
*
|
|
11
|
+
* Returns null when no source produces a usable number; the dashboard treats
|
|
12
|
+
* that as "not sampled this tick" and shows VRAM only.
|
|
13
|
+
*/
|
|
14
|
+
export async function sampleGpuUtilization() {
|
|
15
|
+
if (cachedSource && cachedSource !== "none") {
|
|
16
|
+
const v = await trySource(cachedSource);
|
|
17
|
+
if (v !== null)
|
|
18
|
+
return v;
|
|
19
|
+
cachedSource = undefined; // source went stale; re-probe next call
|
|
20
|
+
}
|
|
21
|
+
if (process.platform === "darwin") {
|
|
22
|
+
const v = await tryIoreg();
|
|
23
|
+
if (v !== null) {
|
|
24
|
+
cachedSource = "ioreg";
|
|
25
|
+
return v;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (process.platform === "linux") {
|
|
29
|
+
const nv = await tryNvidiaSmi();
|
|
30
|
+
if (nv !== null) {
|
|
31
|
+
cachedSource = "nvidia-smi";
|
|
32
|
+
return nv;
|
|
33
|
+
}
|
|
34
|
+
const drm = await tryDrmSysfs();
|
|
35
|
+
if (drm !== null) {
|
|
36
|
+
cachedSource = "drm-sysfs";
|
|
37
|
+
return drm;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
async function trySource(s) {
|
|
43
|
+
switch (s) {
|
|
44
|
+
case "ioreg":
|
|
45
|
+
return tryIoreg();
|
|
46
|
+
case "nvidia-smi":
|
|
47
|
+
return tryNvidiaSmi();
|
|
48
|
+
case "drm-sysfs":
|
|
49
|
+
return tryDrmSysfs();
|
|
50
|
+
default:
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function tryIoreg() {
|
|
55
|
+
try {
|
|
56
|
+
const { stdout } = await execFileP("ioreg", ["-rc", "IOAccelerator", "-w", "0"], {
|
|
57
|
+
timeout: SAMPLE_TIMEOUT_MS,
|
|
58
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
59
|
+
});
|
|
60
|
+
return parseIoregUtilization(stdout);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function tryNvidiaSmi() {
|
|
67
|
+
try {
|
|
68
|
+
const { stdout } = await execFileP("nvidia-smi", ["--query-gpu=utilization.gpu", "--format=csv,noheader,nounits"], { timeout: SAMPLE_TIMEOUT_MS });
|
|
69
|
+
return parseNvidiaSmiUtilization(stdout);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function tryDrmSysfs() {
|
|
76
|
+
try {
|
|
77
|
+
const cards = (await readdir("/sys/class/drm")).filter((n) => /^card\d+$/.test(n));
|
|
78
|
+
let max = -1;
|
|
79
|
+
for (const card of cards) {
|
|
80
|
+
try {
|
|
81
|
+
const raw = await readFile(`/sys/class/drm/${card}/device/gpu_busy_percent`, "utf8");
|
|
82
|
+
const n = Number.parseInt(raw.trim(), 10);
|
|
83
|
+
if (Number.isFinite(n) && n >= 0 && n <= 100) {
|
|
84
|
+
if (n > max)
|
|
85
|
+
max = n;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// card without this attribute (Intel without GuC, virtual cards, etc.)
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return max >= 0 ? max / 100 : null;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Pull the largest `"Device Utilization %"=N` from `PerformanceStatistics`
|
|
100
|
+
* blocks in an `ioreg -rc IOAccelerator` dump. Skips `PerformanceStatisticsAccum`
|
|
101
|
+
* blocks (cumulative since boot, not useful for live %).
|
|
102
|
+
*/
|
|
103
|
+
export function parseIoregUtilization(text) {
|
|
104
|
+
let max = -1;
|
|
105
|
+
// Match each line that introduces a PerformanceStatistics dict (excluding Accum).
|
|
106
|
+
// The dict body is a flat brace-delimited list; we read the value of
|
|
107
|
+
// "Device Utilization %" within that dict.
|
|
108
|
+
const lineRe = /"PerformanceStatistics"\s*=\s*\{([^}]*)\}/g;
|
|
109
|
+
let m;
|
|
110
|
+
while ((m = lineRe.exec(text)) !== null) {
|
|
111
|
+
const body = m[1] ?? "";
|
|
112
|
+
const utilMatch = /"Device Utilization %"=(\d+)/.exec(body);
|
|
113
|
+
if (utilMatch) {
|
|
114
|
+
const n = Number.parseInt(utilMatch[1], 10);
|
|
115
|
+
if (Number.isFinite(n) && n >= 0 && n <= 100 && n > max)
|
|
116
|
+
max = n;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return max >= 0 ? max / 100 : null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Parse `nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits`
|
|
123
|
+
* output — one integer per GPU per line. Returns max as a 0..1 fraction.
|
|
124
|
+
*/
|
|
125
|
+
export function parseNvidiaSmiUtilization(text) {
|
|
126
|
+
let max = -1;
|
|
127
|
+
for (const raw of text.split(/\r?\n/)) {
|
|
128
|
+
const trimmed = raw.trim();
|
|
129
|
+
if (!trimmed)
|
|
130
|
+
continue;
|
|
131
|
+
const n = Number.parseInt(trimmed, 10);
|
|
132
|
+
if (Number.isFinite(n) && n >= 0 && n <= 100 && n > max)
|
|
133
|
+
max = n;
|
|
134
|
+
}
|
|
135
|
+
return max >= 0 ? max / 100 : null;
|
|
136
|
+
}
|
|
137
|
+
/** Test-only helper — resets the cached source. */
|
|
138
|
+
export function _resetCachedSourceForTests() {
|
|
139
|
+
cachedSource = undefined;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=gpu-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpu-stats.js","sourceRoot":"","sources":["../../src/core/gpu-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAS3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,MAAM;IAQL,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEN,IAAI,EAAE,aAAa;IAOhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,KAAK;IAmBb,OAAO,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAS3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,MAAM;IAQL,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEN,IAAI,EAAE,aAAa;IAOhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,KAAK;IAmBb,OAAO,CAAC,UAAU;CA+BnB;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAG5D;AAED,wBAAgB,SAAS,IAAI,MAAM,CAMlC"}
|
package/dist/core/logger.js
CHANGED
|
@@ -57,12 +57,29 @@ export class Logger {
|
|
|
57
57
|
const today = new Date().toISOString().slice(0, 10);
|
|
58
58
|
if (this.currentDate !== today || !this.stream) {
|
|
59
59
|
this.stream?.end();
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
try {
|
|
61
|
+
mkdirSync(this.opts.logsDir, { recursive: true });
|
|
62
|
+
const filePath = join(this.opts.logsDir, `${this.prefix}-${today}.log`);
|
|
63
|
+
const stream = createWriteStream(filePath, { flags: "a", mode: 0o600 });
|
|
64
|
+
// Without this handler, a write failure (ENOSPC, EACCES, EROFS...) on
|
|
65
|
+
// the log stream becomes an unhandled 'error' event → uncaughtException
|
|
66
|
+
// → daemon dies with a raw Node stack. Instead, fall back to stderr.
|
|
67
|
+
stream.on("error", (err) => {
|
|
68
|
+
this.stream = undefined;
|
|
69
|
+
process.stderr.write(`[logger] file sink disabled: ${err.message}\n`);
|
|
70
|
+
});
|
|
71
|
+
this.stream = stream;
|
|
72
|
+
this.currentDate = today;
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
this.stream = undefined;
|
|
76
|
+
process.stderr.write(`[logger] file sink disabled: ${err.message}\n`);
|
|
77
|
+
// Best-effort: emit the original line to stderr so it isn't lost.
|
|
78
|
+
process.stderr.write(line);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
64
81
|
}
|
|
65
|
-
this.stream
|
|
82
|
+
this.stream?.write(line);
|
|
66
83
|
}
|
|
67
84
|
}
|
|
68
85
|
let globalLogger;
|
package/dist/core/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../../src/core/model-download.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,YAAY,CAAC;IACpB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAChB,eAAe,GACf,wBAAwB,GACxB,eAAe,GACf,WAAW,GACX,yBAAyB,GACzB,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,SAAS;gBAZb,OAAO,EAAE,MAAM,EACC,IAAI,EAChB,eAAe,GACf,wBAAwB,GACxB,eAAe,GACf,WAAW,GACX,yBAAyB,GACzB,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,SAAS;CAIhB;AAOD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../../src/core/model-download.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,YAAY,CAAC;IACpB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAChB,eAAe,GACf,wBAAwB,GACxB,eAAe,GACf,WAAW,GACX,yBAAyB,GACzB,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,SAAS;gBAZb,OAAO,EAAE,MAAM,EACC,IAAI,EAChB,eAAe,GACf,wBAAwB,GACxB,eAAe,GACf,WAAW,GACX,yBAAyB,GACzB,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,SAAS;CAIhB;AAOD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6G/E;AAgCD,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAG1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQ7D"}
|
|
@@ -89,6 +89,13 @@ export async function downloadCatalogModel(opts) {
|
|
|
89
89
|
if (err.name === "AbortError") {
|
|
90
90
|
throw new DownloadError("aborted", "aborted");
|
|
91
91
|
}
|
|
92
|
+
// A failed write to the .part file (ENOSPC, EACCES, EROFS) bubbles out of
|
|
93
|
+
// pipeline() with its code attached. Re-classify so the friendly error
|
|
94
|
+
// formatter and exit code line up with the preflight free-space check.
|
|
95
|
+
const code = err?.code;
|
|
96
|
+
if (code === "ENOSPC") {
|
|
97
|
+
throw new DownloadError(`insufficient disk space while writing ${partPath}`, "insufficient_disk_space");
|
|
98
|
+
}
|
|
92
99
|
throw new DownloadError(`download failed: ${err.message}`, "network_error");
|
|
93
100
|
}
|
|
94
101
|
await verifyGgufHeader(partPath).catch(async (err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-download.js","sourceRoot":"","sources":["../../src/core/model-download.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-download.js","sourceRoot":"","sources":["../../src/core/model-download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-version.d.ts","sourceRoot":"","sources":["../../src/core/npm-version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"npm-version.d.ts","sourceRoot":"","sources":["../../src/core/npm-version.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAAuB;IAE1C,KAAK,CAAC,UAAU,GAAE,MAAwB,GAAG,IAAI;IAMjD,IAAI,IAAI,IAAI;IAOZ,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB5B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOvE"}
|
package/dist/core/npm-version.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { getLogger } from "./logger.js";
|
|
2
2
|
const NPM_PACKAGE = "peerllm-host-cli";
|
|
3
3
|
const NPM_REGISTRY_URL = `https://registry.npmjs.org/${NPM_PACKAGE}/latest`;
|
|
4
|
-
|
|
4
|
+
// Hourly: gentle on the npm registry, but responsive enough that the dashboard
|
|
5
|
+
// surfaces a new release within an hour of publication while the daemon is
|
|
6
|
+
// running. The previous 12h interval meant a host could miss a release for
|
|
7
|
+
// half a day after we shipped it.
|
|
8
|
+
const DEFAULT_POLL_MS = 60 * 60 * 1000;
|
|
5
9
|
/**
|
|
6
10
|
* Polls the public npm registry for the latest published version of the CLI.
|
|
7
11
|
* This is the right source for "update available?" indicators — the backend's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-version.js","sourceRoot":"","sources":["../../src/core/npm-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,gBAAgB,GAAG,8BAA8B,WAAW,SAAS,CAAC;AAC5E,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"npm-version.js","sourceRoot":"","sources":["../../src/core/npm-version.ts"],"names":[],"mappings":"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"}
|