import {type ExtensionAPI, isBashToolResult} from "@earendil-works/pi-coding-agent"; import {isTestCommand, parseTestOutput} from "./parsing/typescript-command-output"; // noinspection JSUnusedGlobalSymbols export default function testStatusExtension(pi: ExtensionAPI) { // After every tool execution, check if tests just ran pi.on("tool_result", async (event, ctx) => { // Only care about bash commands if (!isBashToolResult(event)) return; if (!isTestCommand(event.input.command as string) ) return; const textContent = event.content.find((c): c is { type: "text"; text: string } => c.type === "text"); const output = textContent?.text ?? ""; const theme = ctx.ui.theme; const testResult = parseTestOutput(output); if (testResult.status === "Success") { ctx.ui.setWidget("test-status", [ `${theme.fg("success", "●")} ${theme.fg("text", testResult.summary)}`, ]); } else if (testResult.status === "Error" || event.isError) { ctx.ui.setWidget("test-status", [ `${theme.fg("error", "●")} ${theme.fg("text", testResult.summary)}`, ]); } }); }