import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { closeDebug, dbg, span } from "./src/debug.ts"; // Shared so repeated invocations evaluate ./implementation.js once. // Pi's jiti loader (module cache disabled) can otherwise hand one caller a // partially initialized module whose imports are still undefined. let implementationModule: | Promise | undefined; const loadImplementation = (): Promise< typeof import("./implementation.js") > => { implementationModule ??= import("./implementation.js"); return implementationModule; }; export default function usageExtension(pi: ExtensionAPI): void { pi.on("session_start", () => { dbg?.("session.start"); }); pi.on("session_shutdown", () => { dbg?.("session.shutdown"); closeDebug(); }); pi.registerCommand("usage", { description: "Show usage statistics dashboard", handler: async (args, ctx) => { const finish = span?.("command.handle"); try { await (await loadImplementation()).showUsage(args, ctx); finish?.(); } catch (error) { finish?.("error"); throw error; } }, }); }