Add read-only MG4 ADB status collector

This commit is contained in:
2026-07-31 19:17:43 +02:00
parent 4970fda1b5
commit 3e3e0010d6
16 changed files with 411 additions and 20 deletions
+7 -5
View File
@@ -3,6 +3,7 @@ import { getServers } from "node:dns";
import { hostname, networkInterfaces } from "node:os";
import type { CompanionDatabase } from "./database.js";
import { collectSystemStatus } from "./status.js";
import { DISABLED_ADB_CONFIG, type AdbConfig } from "./adb.js";
const MAX_OUTPUT_BYTES = 32 * 1024;
const SECRET_KEY = /authorization|cookie|csrf|password|secret|token|credential/i;
@@ -98,7 +99,7 @@ function supportBundle(database: CompanionDatabase, generatedAt: string, status:
};
}
function defaultDefinitions(database: CompanionDatabase): readonly JobDefinition[] {
function defaultDefinitions(database: CompanionDatabase, adbConfig: AdbConfig): readonly JobDefinition[] {
const safeJob = (definition: Omit<JobDefinition, "riskLevel" | "confirmationRequired">): JobDefinition => ({
...definition,
riskLevel: "low",
@@ -110,7 +111,7 @@ function defaultDefinitions(database: CompanionDatabase): readonly JobDefinition
title: "Refresh system health",
description: "Collect a fresh system health snapshot.",
timeoutMs: 15_000,
run: async () => collectSystemStatus()
run: async () => collectSystemStatus(adbConfig)
}),
safeJob({
id: "network-diagnostics",
@@ -126,7 +127,7 @@ function defaultDefinitions(database: CompanionDatabase): readonly JobDefinition
timeoutMs: 20_000,
run: async () => {
const generatedAt = new Date().toISOString();
return supportBundle(database, generatedAt, await collectSystemStatus());
return supportBundle(database, generatedAt, await collectSystemStatus(adbConfig));
}
})
];
@@ -169,9 +170,10 @@ export class JobRunner {
constructor(
private readonly database: CompanionDatabase,
jobs: readonly JobDefinition[] = defaultDefinitions(database)
jobs?: readonly JobDefinition[],
adbConfig: AdbConfig = DISABLED_ADB_CONFIG
) {
this.#jobs = new Map(jobs.map((job) => [job.id, job]));
this.#jobs = new Map((jobs ?? defaultDefinitions(database, adbConfig)).map((job) => [job.id, job]));
}
listJobs(): JobDescriptor[] {