import type { ExtensionAPI } from "../_shared/pi-api.js"; import { getCommandText, setTextWidget } from "../_shared/pi-api.js"; import { getAuditEvents } from "../_shared/permissions.js"; import { getDevEvents } from "../_shared/event-bus.js"; import { idsByCurrentStatus, idsByOwnershipStatus } from "../_shared/extension-inventory.js"; export default function devextDoctor(pi: ExtensionAPI): void { pi.registerCommand("devext", { description: "Developer extension package doctor: /devext doctor.", handler: async (args, ctx) => { if ((getCommandText(args).trim() || "doctor") !== "doctor") return; setTextWidget(ctx, "devext-doctor", report()); }, }); } function report(): string { const activeDefaults = idsByCurrentStatus("active"); const compatWrappers = idsByOwnershipStatus("compat-wrapper"); const activeCompatWrappers = activeDefaults.filter((id) => compatWrappers.includes(id)).sort(); const disabledCompatWrappers = idsByCurrentStatus("compat-wrapper"); return [ "miloc-pi doctor", `defaultSurface: ${activeDefaults.length} active extension(s)`, `activeDefaults: ${activeDefaults.join(", ")}`, `activeCompatWrappers: ${activeCompatWrappers.join(", ")}`, `disabledCompatWrappers: ${disabledCompatWrappers.join(", ")}`, `compatWrappers: ${compatWrappers.join(", ")}`, `ompOwnedToImport: ${idsByOwnershipStatus("omp-owned-to-import").join(", ")}`, `redesignLater: ${idsByOwnershipStatus("redesign-later").join(", ")}`, `splitRequired: ${idsByOwnershipStatus("split-required").join(", ")}`, `fixtures: ${idsByOwnershipStatus("miloc-specific").filter((id) => !activeDefaults.includes(id)).join(", ")}`, `deleted: ${idsByCurrentStatus("deleted").join(", ")}`, `auditEvents: ${getAuditEvents().length}`, `events: ${getDevEvents(500).length}`, ].join("\n"); }