run402 4.16.0 → 4.17.0
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/README.md +1 -1
- package/cli.mjs +1 -1
- package/lib/buzz-doctor-contract.mjs +97 -0
- package/lib/buzz-doctor-contract.test.mjs +127 -0
- package/lib/buzz-doctor.mjs +799 -0
- package/lib/buzz-doctor.test.mjs +217 -0
- package/lib/buzz.mjs +48 -3
- package/lib/buzz.test.mjs +63 -0
- package/lib/command-manifest.mjs +2 -1
- package/lib/diagnostic-telemetry-worker.mjs +4 -0
- package/lib/diagnostic-telemetry.mjs +300 -0
- package/lib/diagnostic-telemetry.test.mjs +181 -0
- package/lib/doctor.mjs +30 -0
- package/lib/wallet-context.mjs +1 -1
- package/package.json +1 -1
- package/sdk/dist/index.d.ts +1 -1
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +1 -1
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/namespaces/buzz.d.ts +15 -1
- package/sdk/dist/namespaces/buzz.d.ts.map +1 -1
- package/sdk/dist/namespaces/buzz.js +49 -0
- package/sdk/dist/namespaces/buzz.js.map +1 -1
- package/sdk/dist/namespaces/buzz.types.d.ts +72 -1
- package/sdk/dist/namespaces/buzz.types.d.ts.map +1 -1
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import {
|
|
4
|
+
mkdirSync,
|
|
5
|
+
readFileSync,
|
|
6
|
+
rmSync,
|
|
7
|
+
writeFileSync,
|
|
8
|
+
} from "node:fs";
|
|
9
|
+
import { dirname, join } from "node:path";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import { apiBase, configDir } from "./config.mjs";
|
|
12
|
+
import { currentRun402Version } from "./update-check.mjs";
|
|
13
|
+
|
|
14
|
+
export const DIAGNOSTIC_TELEMETRY_SCHEMA_VERSION = 1;
|
|
15
|
+
export const DIAGNOSTIC_TELEMETRY_FLOW_VERSION = "run402.buzz-doctor.v1";
|
|
16
|
+
export const DIAGNOSTIC_TELEMETRY_BUZZ_FIXTURE_ID = "buzz-cli-v0.5.2-capabilities";
|
|
17
|
+
export const DIAGNOSTIC_TELEMETRY_RETENTION_MS = 24 * 60 * 60 * 1000;
|
|
18
|
+
export const DIAGNOSTIC_TELEMETRY_MAX_EVENTS = 32;
|
|
19
|
+
export const DIAGNOSTIC_TELEMETRY_MAX_QUEUE_BYTES = 16 * 1024;
|
|
20
|
+
export const DIAGNOSTIC_TELEMETRY_TIMEOUT_MS = 2_000;
|
|
21
|
+
|
|
22
|
+
export const DIAGNOSTIC_TELEMETRY_FIELDS = Object.freeze([
|
|
23
|
+
"event_id",
|
|
24
|
+
"event_at",
|
|
25
|
+
"schema_version",
|
|
26
|
+
"flow_version",
|
|
27
|
+
"event",
|
|
28
|
+
"check_name",
|
|
29
|
+
"code",
|
|
30
|
+
"os_family",
|
|
31
|
+
"node_major",
|
|
32
|
+
"run402_major",
|
|
33
|
+
"run402_minor",
|
|
34
|
+
"buzz_fixture_id",
|
|
35
|
+
"install_context",
|
|
36
|
+
]);
|
|
37
|
+
|
|
38
|
+
const ALLOWED_EVENTS = new Set(["preflight_started", "preflight_passed", "preflight_blocked"]);
|
|
39
|
+
const ALLOWED_CHECKS = new Set([
|
|
40
|
+
"session_shell", "node_runtime", "run402_cli", "buzz_cli", "buzz_agent_target",
|
|
41
|
+
"run402_api", "run402_console", "buzz_relay", "wallet_profile",
|
|
42
|
+
]);
|
|
43
|
+
const ALLOWED_CODES = new Set([
|
|
44
|
+
"BUZZ_PREFLIGHT_SHELL_UNAVAILABLE",
|
|
45
|
+
"BUZZ_PREFLIGHT_NODE_UNAVAILABLE", "BUZZ_PREFLIGHT_NODE_INCOMPATIBLE",
|
|
46
|
+
"BUZZ_PREFLIGHT_RUN402_UNAVAILABLE", "BUZZ_PREFLIGHT_RUN402_INCOMPATIBLE",
|
|
47
|
+
"BUZZ_PREFLIGHT_RUN402_UPDATE_AVAILABLE",
|
|
48
|
+
"BUZZ_PREFLIGHT_BUZZ_CLI_UNAVAILABLE", "BUZZ_PREFLIGHT_BUZZ_CLI_INCOMPATIBLE",
|
|
49
|
+
"BUZZ_AGENT_TARGET_REQUIRED", "BUZZ_AGENT_TARGET_UNVERIFIED", "BUZZ_AGENT_TARGET_MISMATCH",
|
|
50
|
+
"BUZZ_PREFLIGHT_API_UNREACHABLE", "BUZZ_PREFLIGHT_CONSOLE_UNREACHABLE",
|
|
51
|
+
"BUZZ_PREFLIGHT_RELAY_UNSAFE", "BUZZ_PREFLIGHT_RELAY_UNREACHABLE",
|
|
52
|
+
"BUZZ_PREFLIGHT_WALLET_PROFILE_REQUIRED", "BUZZ_PREFLIGHT_WALLET_PROFILE_NOT_FOUND",
|
|
53
|
+
"BUZZ_PREFLIGHT_WALLET_PROFILE_MISMATCH",
|
|
54
|
+
]);
|
|
55
|
+
const ALLOWED_INSTALL_CONTEXTS = new Set([
|
|
56
|
+
"project_local", "user_global_npm", "ephemeral_exec", "managed_buzz_sidecar", "custom_path", "unknown",
|
|
57
|
+
]);
|
|
58
|
+
const ALLOWED_OS_FAMILIES = new Set(["macos", "linux", "windows", "other"]);
|
|
59
|
+
const UUID_V4_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
60
|
+
|
|
61
|
+
export function diagnosticTelemetryQueuePath({ dir = configDir() } = {}) {
|
|
62
|
+
return join(dir, "diagnostic-events-v1.json");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function isDiagnosticTelemetryDisabled(env = process.env) {
|
|
66
|
+
return env.RUN402_TELEMETRY === "0";
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function coarseOsFamily(platform = process.platform) {
|
|
70
|
+
if (platform === "darwin") return "macos";
|
|
71
|
+
if (platform === "linux") return "linux";
|
|
72
|
+
if (platform === "win32") return "windows";
|
|
73
|
+
return "other";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function versionParts(value) {
|
|
77
|
+
const match = String(value ?? "").match(/^(\d+)\.(\d+)/);
|
|
78
|
+
return {
|
|
79
|
+
major: Number(match?.[1] ?? 0),
|
|
80
|
+
minor: Number(match?.[2] ?? 0),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function installContext(report) {
|
|
85
|
+
const observed = report?.checks?.find((check) => check?.name === "run402_cli")?.value?.install_context;
|
|
86
|
+
switch (observed) {
|
|
87
|
+
case "local_project": return "project_local";
|
|
88
|
+
case "global_npm": return "user_global_npm";
|
|
89
|
+
case "ephemeral_exec": return "ephemeral_exec";
|
|
90
|
+
case "managed_buzz_sidecar": return "managed_buzz_sidecar";
|
|
91
|
+
case "custom_path":
|
|
92
|
+
case "package_manager_shim": return "custom_path";
|
|
93
|
+
default: return "unknown";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function nodeMajor(report) {
|
|
98
|
+
const value = report?.checks?.find((check) => check?.name === "node_runtime")?.value?.major;
|
|
99
|
+
return Number.isSafeInteger(value) && value >= 0 && value <= 999 ? value : 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function buildDiagnosticTelemetryEvent({
|
|
103
|
+
report,
|
|
104
|
+
event,
|
|
105
|
+
eventAt = new Date().toISOString(),
|
|
106
|
+
eventId = randomUUID(),
|
|
107
|
+
platform = process.platform,
|
|
108
|
+
run402Version = currentRun402Version(),
|
|
109
|
+
} = {}) {
|
|
110
|
+
if (!ALLOWED_EVENTS.has(event)) throw new Error("Unsupported diagnostic telemetry event");
|
|
111
|
+
const blocked = event === "preflight_blocked"
|
|
112
|
+
? report?.checks?.find((check) => check?.status === "blocked")
|
|
113
|
+
: null;
|
|
114
|
+
if (event === "preflight_blocked" &&
|
|
115
|
+
(!ALLOWED_CHECKS.has(blocked?.name) || !ALLOWED_CODES.has(blocked?.code))) {
|
|
116
|
+
throw new Error("Blocked diagnostic telemetry requires one frozen check/code pair");
|
|
117
|
+
}
|
|
118
|
+
const version = versionParts(run402Version);
|
|
119
|
+
return {
|
|
120
|
+
event_id: eventId,
|
|
121
|
+
event_at: eventAt,
|
|
122
|
+
schema_version: DIAGNOSTIC_TELEMETRY_SCHEMA_VERSION,
|
|
123
|
+
flow_version: DIAGNOSTIC_TELEMETRY_FLOW_VERSION,
|
|
124
|
+
event,
|
|
125
|
+
check_name: blocked?.name ?? null,
|
|
126
|
+
code: blocked?.code ?? null,
|
|
127
|
+
os_family: coarseOsFamily(platform),
|
|
128
|
+
node_major: nodeMajor(report),
|
|
129
|
+
run402_major: version.major,
|
|
130
|
+
run402_minor: version.minor,
|
|
131
|
+
buzz_fixture_id: DIAGNOSTIC_TELEMETRY_BUZZ_FIXTURE_ID,
|
|
132
|
+
install_context: installContext(report),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function isRedactedEvent(value) {
|
|
137
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
138
|
+
if (Object.keys(value).length !== DIAGNOSTIC_TELEMETRY_FIELDS.length) return false;
|
|
139
|
+
if (!DIAGNOSTIC_TELEMETRY_FIELDS.every((field) => Object.hasOwn(value, field))) return false;
|
|
140
|
+
if (!ALLOWED_EVENTS.has(value.event)) return false;
|
|
141
|
+
if (value.event === "preflight_blocked") {
|
|
142
|
+
if (!ALLOWED_CHECKS.has(value.check_name) || !ALLOWED_CODES.has(value.code)) return false;
|
|
143
|
+
} else if (value.check_name !== null || value.code !== null) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
return value.schema_version === DIAGNOSTIC_TELEMETRY_SCHEMA_VERSION &&
|
|
147
|
+
value.flow_version === DIAGNOSTIC_TELEMETRY_FLOW_VERSION &&
|
|
148
|
+
value.buzz_fixture_id === DIAGNOSTIC_TELEMETRY_BUZZ_FIXTURE_ID &&
|
|
149
|
+
ALLOWED_INSTALL_CONTEXTS.has(value.install_context) &&
|
|
150
|
+
ALLOWED_OS_FAMILIES.has(value.os_family) &&
|
|
151
|
+
[value.node_major, value.run402_major, value.run402_minor]
|
|
152
|
+
.every((part) => Number.isSafeInteger(part) && part >= 0 && part <= 999) &&
|
|
153
|
+
typeof value.event_at === "string" && new Date(value.event_at).toISOString() === value.event_at &&
|
|
154
|
+
typeof value.event_id === "string" && UUID_V4_RE.test(value.event_id);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export function readDiagnosticTelemetryQueue({
|
|
158
|
+
path = diagnosticTelemetryQueuePath(),
|
|
159
|
+
now = Date.now(),
|
|
160
|
+
} = {}) {
|
|
161
|
+
try {
|
|
162
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
163
|
+
if (parsed?.schema_version !== 1 || !Array.isArray(parsed.events)) return [];
|
|
164
|
+
return parsed.events.filter((event) =>
|
|
165
|
+
isRedactedEvent(event) && now - Date.parse(event.event_at) <= DIAGNOSTIC_TELEMETRY_RETENTION_MS,
|
|
166
|
+
).slice(-DIAGNOSTIC_TELEMETRY_MAX_EVENTS);
|
|
167
|
+
} catch {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function writeDiagnosticTelemetryQueue(events, {
|
|
173
|
+
path = diagnosticTelemetryQueuePath(),
|
|
174
|
+
now = Date.now(),
|
|
175
|
+
} = {}) {
|
|
176
|
+
try {
|
|
177
|
+
let bounded = events.filter((event) =>
|
|
178
|
+
isRedactedEvent(event) && now - Date.parse(event.event_at) <= DIAGNOSTIC_TELEMETRY_RETENTION_MS,
|
|
179
|
+
).slice(-DIAGNOSTIC_TELEMETRY_MAX_EVENTS);
|
|
180
|
+
let payload = `${JSON.stringify({ schema_version: 1, events: bounded })}\n`;
|
|
181
|
+
while (bounded.length > 0 && Buffer.byteLength(payload, "utf8") > DIAGNOSTIC_TELEMETRY_MAX_QUEUE_BYTES) {
|
|
182
|
+
bounded = bounded.slice(1);
|
|
183
|
+
payload = `${JSON.stringify({ schema_version: 1, events: bounded })}\n`;
|
|
184
|
+
}
|
|
185
|
+
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
186
|
+
writeFileSync(path, payload, { mode: 0o600 });
|
|
187
|
+
return true;
|
|
188
|
+
} catch {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function removeDiagnosticTelemetryQueue(path) {
|
|
194
|
+
try { rmSync(path, { force: true }); } catch { /* best-effort opt-out */ }
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export function queueBuzzDoctorTelemetry(report, {
|
|
198
|
+
env = process.env,
|
|
199
|
+
path = diagnosticTelemetryQueuePath(),
|
|
200
|
+
startedAt = Date.now(),
|
|
201
|
+
finishedAt = Date.now(),
|
|
202
|
+
createEventId = randomUUID,
|
|
203
|
+
platform = process.platform,
|
|
204
|
+
run402Version = currentRun402Version(),
|
|
205
|
+
launchWorker = launchDiagnosticTelemetryWorker,
|
|
206
|
+
} = {}) {
|
|
207
|
+
if (isDiagnosticTelemetryDisabled(env)) {
|
|
208
|
+
removeDiagnosticTelemetryQueue(path);
|
|
209
|
+
return { status: "disabled", queued: false };
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
const finalEvent = report?.ok ? "preflight_passed" : "preflight_blocked";
|
|
213
|
+
const added = [
|
|
214
|
+
buildDiagnosticTelemetryEvent({
|
|
215
|
+
report,
|
|
216
|
+
event: "preflight_started",
|
|
217
|
+
eventAt: new Date(startedAt).toISOString(),
|
|
218
|
+
eventId: createEventId(),
|
|
219
|
+
platform,
|
|
220
|
+
run402Version,
|
|
221
|
+
}),
|
|
222
|
+
buildDiagnosticTelemetryEvent({
|
|
223
|
+
report,
|
|
224
|
+
event: finalEvent,
|
|
225
|
+
eventAt: new Date(finishedAt).toISOString(),
|
|
226
|
+
eventId: createEventId(),
|
|
227
|
+
platform,
|
|
228
|
+
run402Version,
|
|
229
|
+
}),
|
|
230
|
+
];
|
|
231
|
+
const queued = [...readDiagnosticTelemetryQueue({ path, now: finishedAt }), ...added];
|
|
232
|
+
if (!writeDiagnosticTelemetryQueue(queued, { path, now: finishedAt })) {
|
|
233
|
+
return { status: "dropped", queued: false };
|
|
234
|
+
}
|
|
235
|
+
try { launchWorker({ path, env }); } catch { /* queue remains for a later connection */ }
|
|
236
|
+
return { status: "queued", queued: true };
|
|
237
|
+
} catch {
|
|
238
|
+
return { status: "dropped", queued: false };
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export function launchDiagnosticTelemetryWorker({ path, env = process.env } = {}) {
|
|
243
|
+
const child = spawn(process.execPath, [
|
|
244
|
+
fileURLToPath(new URL("./diagnostic-telemetry-worker.mjs", import.meta.url)),
|
|
245
|
+
path ?? diagnosticTelemetryQueuePath(),
|
|
246
|
+
apiBase(),
|
|
247
|
+
], {
|
|
248
|
+
detached: true,
|
|
249
|
+
stdio: "ignore",
|
|
250
|
+
env,
|
|
251
|
+
windowsHide: true,
|
|
252
|
+
});
|
|
253
|
+
child.unref();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export async function flushDiagnosticTelemetryQueue({
|
|
257
|
+
path = diagnosticTelemetryQueuePath(),
|
|
258
|
+
apiOrigin = apiBase(),
|
|
259
|
+
env = process.env,
|
|
260
|
+
fetchImpl = globalThis.fetch,
|
|
261
|
+
timeoutMs = DIAGNOSTIC_TELEMETRY_TIMEOUT_MS,
|
|
262
|
+
now = Date.now(),
|
|
263
|
+
} = {}) {
|
|
264
|
+
if (isDiagnosticTelemetryDisabled(env)) {
|
|
265
|
+
removeDiagnosticTelemetryQueue(path);
|
|
266
|
+
return { sent: 0, retained: 0, status: "disabled" };
|
|
267
|
+
}
|
|
268
|
+
const events = readDiagnosticTelemetryQueue({ path, now });
|
|
269
|
+
const retained = [];
|
|
270
|
+
let sent = 0;
|
|
271
|
+
for (let index = 0; index < events.length; index += 1) {
|
|
272
|
+
const event = events[index];
|
|
273
|
+
const controller = new AbortController();
|
|
274
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
275
|
+
try {
|
|
276
|
+
const response = await fetchImpl(new URL("/client-diagnostic-events/v1", apiOrigin), {
|
|
277
|
+
method: "POST",
|
|
278
|
+
headers: { "content-type": "application/json" },
|
|
279
|
+
body: JSON.stringify(event),
|
|
280
|
+
signal: controller.signal,
|
|
281
|
+
});
|
|
282
|
+
if (response.status === 204) {
|
|
283
|
+
sent += 1;
|
|
284
|
+
} else if (response.status >= 400 && response.status < 500 && response.status !== 429) {
|
|
285
|
+
// A non-retryable schema rejection is safest to drop. The calling
|
|
286
|
+
// doctor has already completed and cannot be affected.
|
|
287
|
+
} else {
|
|
288
|
+
retained.push(event, ...events.slice(index + 1));
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
} catch {
|
|
292
|
+
retained.push(event, ...events.slice(index + 1));
|
|
293
|
+
break;
|
|
294
|
+
} finally {
|
|
295
|
+
clearTimeout(timer);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
writeDiagnosticTelemetryQueue(retained, { path, now: Date.now() });
|
|
299
|
+
return { sent, retained: retained.length, status: retained.length > 0 ? "queued" : "flushed" };
|
|
300
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { mkdtempSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
|
+
import {
|
|
7
|
+
DIAGNOSTIC_TELEMETRY_FIELDS,
|
|
8
|
+
DIAGNOSTIC_TELEMETRY_MAX_EVENTS,
|
|
9
|
+
buildDiagnosticTelemetryEvent,
|
|
10
|
+
flushDiagnosticTelemetryQueue,
|
|
11
|
+
queueBuzzDoctorTelemetry,
|
|
12
|
+
readDiagnosticTelemetryQueue,
|
|
13
|
+
writeDiagnosticTelemetryQueue,
|
|
14
|
+
} from "./diagnostic-telemetry.mjs";
|
|
15
|
+
|
|
16
|
+
function report({ ok = false } = {}) {
|
|
17
|
+
return {
|
|
18
|
+
ok,
|
|
19
|
+
mode: "buzz",
|
|
20
|
+
binding: {
|
|
21
|
+
expected_subject_hex: "a".repeat(64),
|
|
22
|
+
wallet_profile: "buzz-fizz",
|
|
23
|
+
relay_origin: "wss://relay.private.example",
|
|
24
|
+
},
|
|
25
|
+
checks: [
|
|
26
|
+
{ name: "node_runtime", status: "ok", value: { major: 22, executable: "/private/node" } },
|
|
27
|
+
{ name: "run402_cli", status: "ok", value: { install_context: "global_npm", executable: "/private/run402" } },
|
|
28
|
+
...(ok ? [] : [{ name: "run402_api", status: "blocked", code: "BUZZ_PREFLIGHT_API_UNREACHABLE", message: "secret output" }]),
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function queueFile() {
|
|
34
|
+
return join(mkdtempSync(join(tmpdir(), "run402-diag-")), "queue.json");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function eventId(index) {
|
|
38
|
+
return `123e4567-e89b-42d3-a456-${String(index).padStart(12, "0")}`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
describe("Buzz diagnostic telemetry", () => {
|
|
42
|
+
it("builds an exact allowlisted event and ignores sensitive report fields", () => {
|
|
43
|
+
const event = buildDiagnosticTelemetryEvent({
|
|
44
|
+
report: report(),
|
|
45
|
+
event: "preflight_blocked",
|
|
46
|
+
eventAt: "2026-07-31T12:00:00.000Z",
|
|
47
|
+
eventId: eventId(1),
|
|
48
|
+
platform: "darwin",
|
|
49
|
+
run402Version: "4.16.1",
|
|
50
|
+
});
|
|
51
|
+
assert.deepEqual(Object.keys(event), DIAGNOSTIC_TELEMETRY_FIELDS);
|
|
52
|
+
assert.deepEqual(event, {
|
|
53
|
+
event_id: eventId(1),
|
|
54
|
+
event_at: "2026-07-31T12:00:00.000Z",
|
|
55
|
+
schema_version: 1,
|
|
56
|
+
flow_version: "run402.buzz-doctor.v1",
|
|
57
|
+
event: "preflight_blocked",
|
|
58
|
+
check_name: "run402_api",
|
|
59
|
+
code: "BUZZ_PREFLIGHT_API_UNREACHABLE",
|
|
60
|
+
os_family: "macos",
|
|
61
|
+
node_major: 22,
|
|
62
|
+
run402_major: 4,
|
|
63
|
+
run402_minor: 16,
|
|
64
|
+
buzz_fixture_id: "buzz-cli-v0.5.2-capabilities",
|
|
65
|
+
install_context: "user_global_npm",
|
|
66
|
+
});
|
|
67
|
+
const json = JSON.stringify(event);
|
|
68
|
+
for (const forbidden of ["buzz-fizz", "relay.private.example", "/private/node", "/private/run402", "secret output", "a".repeat(64)]) {
|
|
69
|
+
assert.equal(json.includes(forbidden), false);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("queues start plus final state without mutating the doctor verdict", () => {
|
|
74
|
+
const path = queueFile();
|
|
75
|
+
const original = report();
|
|
76
|
+
const before = structuredClone(original);
|
|
77
|
+
let launched = 0;
|
|
78
|
+
let ids = 0;
|
|
79
|
+
const disposition = queueBuzzDoctorTelemetry(original, {
|
|
80
|
+
path,
|
|
81
|
+
startedAt: Date.parse("2026-07-31T12:00:00.000Z"),
|
|
82
|
+
finishedAt: Date.parse("2026-07-31T12:00:01.000Z"),
|
|
83
|
+
createEventId: () => eventId(++ids),
|
|
84
|
+
launchWorker: () => { launched += 1; },
|
|
85
|
+
platform: "linux",
|
|
86
|
+
run402Version: "4.16.1",
|
|
87
|
+
});
|
|
88
|
+
assert.deepEqual(disposition, { status: "queued", queued: true });
|
|
89
|
+
assert.deepEqual(original, before);
|
|
90
|
+
assert.equal(launched, 1);
|
|
91
|
+
assert.deepEqual(readDiagnosticTelemetryQueue({ path, now: Date.parse("2026-07-31T12:00:02.000Z") }).map((entry) => entry.event), [
|
|
92
|
+
"preflight_started",
|
|
93
|
+
"preflight_blocked",
|
|
94
|
+
]);
|
|
95
|
+
assert.equal(statSync(path).mode & 0o777, 0o600);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it("opt-out sends nothing, queues nothing, and removes an old redacted queue", () => {
|
|
99
|
+
const path = queueFile();
|
|
100
|
+
writeFileSync(path, "old queue");
|
|
101
|
+
let launched = 0;
|
|
102
|
+
const disposition = queueBuzzDoctorTelemetry(report({ ok: true }), {
|
|
103
|
+
env: { RUN402_TELEMETRY: "0" },
|
|
104
|
+
path,
|
|
105
|
+
launchWorker: () => { launched += 1; },
|
|
106
|
+
});
|
|
107
|
+
assert.deepEqual(disposition, { status: "disabled", queued: false });
|
|
108
|
+
assert.equal(launched, 0);
|
|
109
|
+
assert.deepEqual(readDiagnosticTelemetryQueue({ path }), []);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it("drops corrupt or unwritable queue state without changing diagnostics", () => {
|
|
113
|
+
const path = queueFile();
|
|
114
|
+
writeFileSync(path, "{not json");
|
|
115
|
+
let ids = 0;
|
|
116
|
+
const recovered = queueBuzzDoctorTelemetry(report({ ok: true }), {
|
|
117
|
+
path,
|
|
118
|
+
createEventId: () => eventId(++ids),
|
|
119
|
+
launchWorker: () => { throw new Error("spawn denied"); },
|
|
120
|
+
});
|
|
121
|
+
assert.deepEqual(recovered, { status: "queued", queued: true });
|
|
122
|
+
assert.equal(readDiagnosticTelemetryQueue({ path }).length, 2);
|
|
123
|
+
|
|
124
|
+
const dropped = queueBuzzDoctorTelemetry(report(), {
|
|
125
|
+
path: "/dev/null/not-writable.json",
|
|
126
|
+
createEventId: () => eventId(++ids),
|
|
127
|
+
launchWorker: () => {},
|
|
128
|
+
});
|
|
129
|
+
assert.deepEqual(dropped, { status: "dropped", queued: false });
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("bounds retained redacted events by age, count, and bytes", () => {
|
|
133
|
+
const path = queueFile();
|
|
134
|
+
const now = Date.parse("2026-07-31T12:00:00.000Z");
|
|
135
|
+
const events = Array.from({ length: 48 }, (_, index) => buildDiagnosticTelemetryEvent({
|
|
136
|
+
report: report({ ok: true }),
|
|
137
|
+
event: "preflight_passed",
|
|
138
|
+
eventAt: new Date(now - index * 1_000).toISOString(),
|
|
139
|
+
eventId: eventId(index),
|
|
140
|
+
run402Version: "4.16.1",
|
|
141
|
+
}));
|
|
142
|
+
assert.equal(writeDiagnosticTelemetryQueue(events, { path, now }), true);
|
|
143
|
+
const retained = readDiagnosticTelemetryQueue({ path, now });
|
|
144
|
+
assert.ok(retained.length <= DIAGNOSTIC_TELEMETRY_MAX_EVENTS);
|
|
145
|
+
assert.ok(Buffer.byteLength(readFileSync(path)) <= 16 * 1024);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("flushes without credentials and retains only retryable failures", async () => {
|
|
149
|
+
const path = queueFile();
|
|
150
|
+
const now = Date.now();
|
|
151
|
+
const events = [1, 2].map((index) => buildDiagnosticTelemetryEvent({
|
|
152
|
+
report: report({ ok: true }),
|
|
153
|
+
event: "preflight_passed",
|
|
154
|
+
eventAt: new Date(now).toISOString(),
|
|
155
|
+
eventId: eventId(index),
|
|
156
|
+
run402Version: "4.16.1",
|
|
157
|
+
}));
|
|
158
|
+
writeDiagnosticTelemetryQueue(events, { path, now });
|
|
159
|
+
const requests = [];
|
|
160
|
+
const first = await flushDiagnosticTelemetryQueue({
|
|
161
|
+
path,
|
|
162
|
+
apiOrigin: "https://api.run402.test",
|
|
163
|
+
now,
|
|
164
|
+
fetchImpl: async (url, init) => {
|
|
165
|
+
requests.push({ url: String(url), init });
|
|
166
|
+
return { status: requests.length === 1 ? 204 : 503 };
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
assert.deepEqual(first, { sent: 1, retained: 1, status: "queued" });
|
|
170
|
+
assert.equal(requests[0].url, "https://api.run402.test/client-diagnostic-events/v1");
|
|
171
|
+
assert.deepEqual(requests[0].init.headers, { "content-type": "application/json" });
|
|
172
|
+
assert.equal(Object.keys(JSON.parse(requests[0].init.body)).length, DIAGNOSTIC_TELEMETRY_FIELDS.length);
|
|
173
|
+
|
|
174
|
+
const second = await flushDiagnosticTelemetryQueue({
|
|
175
|
+
path,
|
|
176
|
+
apiOrigin: "https://api.run402.test",
|
|
177
|
+
fetchImpl: async () => ({ status: 204 }),
|
|
178
|
+
});
|
|
179
|
+
assert.deepEqual(second, { sent: 1, retained: 0, status: "flushed" });
|
|
180
|
+
});
|
|
181
|
+
});
|
package/lib/doctor.mjs
CHANGED
|
@@ -20,20 +20,33 @@ import {
|
|
|
20
20
|
SCAN_SEVERITY,
|
|
21
21
|
} from "./doctor-source-scan.mjs";
|
|
22
22
|
import { doctorUpdateCheck } from "./update-check.mjs";
|
|
23
|
+
import { buildBuzzDoctorReport, parseBuzzDoctorArgs } from "./buzz-doctor.mjs";
|
|
24
|
+
import { queueBuzzDoctorTelemetry } from "./diagnostic-telemetry.mjs";
|
|
25
|
+
import { fail } from "./sdk-errors.mjs";
|
|
23
26
|
|
|
24
27
|
const HELP = `run402 doctor — Health and config diagnostics
|
|
25
28
|
|
|
26
29
|
Usage:
|
|
27
30
|
run402 doctor [--verbose] [--refresh] [--no-scan] [--scan-dir <D>]
|
|
31
|
+
run402 --wallet <profile> doctor --buzz --buzz-agent <npub-or-hex>
|
|
28
32
|
|
|
29
33
|
Output:
|
|
30
34
|
Stdout is a JSON report { ok, checks: [{ name, status, value?, hint?, message? }] }.
|
|
35
|
+
Buzz mode adds { mode: "buzz", contract_id, generated_at, mutation_state,
|
|
36
|
+
binding, telemetry } and uses check status ok|warning|blocked.
|
|
31
37
|
|
|
32
38
|
Options:
|
|
33
39
|
--verbose Include extra detail (timing, error messages)
|
|
34
40
|
--refresh Wait for a bounded live npm version check for the run402 CLI
|
|
35
41
|
--no-scan Skip the source-tree scan (config / health checks only)
|
|
36
42
|
--scan-dir D Scan a custom directory instead of \`<cwd>/src\`
|
|
43
|
+
--buzz Run only the zero-mutation Buzz setup preflight
|
|
44
|
+
--buzz-agent P Bind Buzz mode to the intended public agent npub or hex key
|
|
45
|
+
|
|
46
|
+
Telemetry:
|
|
47
|
+
Buzz preflight sends only anonymous allowlisted start/pass/block counters.
|
|
48
|
+
No identity, wallet, relay, domain, path, command output, or installation id
|
|
49
|
+
is sent. Set RUN402_TELEMETRY=0 to disable sending and local queueing.
|
|
37
50
|
|
|
38
51
|
Checks performed:
|
|
39
52
|
- Config directory exists and is writable
|
|
@@ -51,6 +64,12 @@ Checks performed:
|
|
|
51
64
|
direct mutation of internal.sessions.authz_version
|
|
52
65
|
(R402_AUTH_AUTHZ_VERSION_PROHIBITED).
|
|
53
66
|
|
|
67
|
+
Buzz mode checks (in order):
|
|
68
|
+
session_shell, node_runtime, run402_cli, buzz_cli, buzz_agent_target,
|
|
69
|
+
run402_api, run402_console, buzz_relay, wallet_profile.
|
|
70
|
+
Buzz mode is read-only and skips the ordinary allowance, tier, project,
|
|
71
|
+
operator, runtime-staleness, and source-tree checks.
|
|
72
|
+
|
|
54
73
|
Exit codes:
|
|
55
74
|
0 — all checks pass
|
|
56
75
|
1 — one or more checks failed (details in output)
|
|
@@ -96,6 +115,17 @@ export async function run(sub, args = []) {
|
|
|
96
115
|
const scanDirArgIdx = all.indexOf("--scan-dir");
|
|
97
116
|
const scanDirOverride = scanDirArgIdx >= 0 ? all[scanDirArgIdx + 1] : null;
|
|
98
117
|
|
|
118
|
+
const buzzArgs = parseBuzzDoctorArgs(all);
|
|
119
|
+
if (buzzArgs.error) fail(buzzArgs.error);
|
|
120
|
+
if (buzzArgs.buzz) {
|
|
121
|
+
const startedAt = Date.now();
|
|
122
|
+
const report = await buildBuzzDoctorReport({ expectedSubjectHex: buzzArgs.expectedSubjectHex });
|
|
123
|
+
report.telemetry = queueBuzzDoctorTelemetry(report, { startedAt, finishedAt: Date.now() });
|
|
124
|
+
console.log(JSON.stringify(report, null, 2));
|
|
125
|
+
process.exitCode = report.ok ? 0 : 1;
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
99
129
|
const checks = [];
|
|
100
130
|
const CONFIG_DIR = configDir();
|
|
101
131
|
|
package/lib/wallet-context.mjs
CHANGED
|
@@ -33,7 +33,7 @@ const GLOBAL_FLAGS = new Set(["--wallet", "--profile"]);
|
|
|
33
33
|
// its own positional targets. `init` creates wallets, so it must not fail
|
|
34
34
|
// closed on a not-yet-existing name.
|
|
35
35
|
const CONFLICT_EXEMPT = new Set(["wallets"]);
|
|
36
|
-
const EXISTENCE_EXEMPT = new Set(["wallets", "init"]);
|
|
36
|
+
const EXISTENCE_EXEMPT = new Set(["wallets", "init", "doctor"]);
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Split the global --wallet/--profile flag (and its value) out of argv so the
|
package/package.json
CHANGED
package/sdk/dist/index.d.ts
CHANGED
|
@@ -312,7 +312,7 @@ export type * from "./namespaces/projects.types.js";
|
|
|
312
312
|
export { IdentityLinks, NostrIdentityLinks } from "./namespaces/identity-links.js";
|
|
313
313
|
export type * from "./namespaces/identity-links.js";
|
|
314
314
|
export type * from "./namespaces/identity-links.types.js";
|
|
315
|
-
export { Buzz, BuzzHumanAdoptions, BuzzCommunityInstallations, BuzzAgentEnrollments } from "./namespaces/buzz.js";
|
|
315
|
+
export { Buzz, BuzzHumanAdoptions, BuzzHumanAdoptionOffers, BuzzCommunityInstallations, BuzzAgentEnrollments } from "./namespaces/buzz.js";
|
|
316
316
|
export type * from "./namespaces/buzz.types.js";
|
|
317
317
|
export type * from "./namespaces/secrets.js";
|
|
318
318
|
export type * from "./namespaces/sender-domain.js";
|
package/sdk/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/index.js
CHANGED
|
@@ -349,6 +349,6 @@ export { Archives } from "./namespaces/archives.js";
|
|
|
349
349
|
export { Snapshots } from "./namespaces/snapshots.js";
|
|
350
350
|
export { Branches } from "./namespaces/branches.js";
|
|
351
351
|
export { IdentityLinks, NostrIdentityLinks } from "./namespaces/identity-links.js";
|
|
352
|
-
export { Buzz, BuzzHumanAdoptions, BuzzCommunityInstallations, BuzzAgentEnrollments } from "./namespaces/buzz.js";
|
|
352
|
+
export { Buzz, BuzzHumanAdoptions, BuzzHumanAdoptionOffers, BuzzCommunityInstallations, BuzzAgentEnrollments } from "./namespaces/buzz.js";
|
|
353
353
|
export { ScopedWallet } from "./namespaces/wallets.js";
|
|
354
354
|
//# sourceMappingURL=index.js.map
|