feat: prominente Abschluss-Notifications + Widget-Update für /optimize und /shipit
This commit is contained in:
parent
7cb299ff66
commit
b19c189e2e
1 changed files with 28 additions and 6 deletions
|
|
@ -456,6 +456,28 @@ async function runUpdateDoku(pi: ExtensionAPI, ctx: ExtensionCommandContext): Pr
|
|||
ctx.ui.notify("Dokumentations-Phase abgeschlossen. Commit angelegt.", "info");
|
||||
}
|
||||
|
||||
// Prominente Abschluss-Notification + Widget-Update mit Uhrzeit und Ergebnis.
|
||||
function finalNotify(
|
||||
ctx: ExtensionCommandContext,
|
||||
verdict: string,
|
||||
detail: string
|
||||
): void {
|
||||
const timestamp = new Date().toLocaleTimeString("de-DE", { hour: "2-digit", minute: "2-digit" });
|
||||
const level = verdict.includes("SHIP") && !verdict.includes("NO-SHIP") ? "warning"
|
||||
: verdict.includes("NO-SHIP") ? "error"
|
||||
: verdict.includes("⚠") ? "warning"
|
||||
: "info";
|
||||
ctx.ui.notify(`${verdict}: ${detail}`, level);
|
||||
ctx.ui.setWidget("coder-judge", [
|
||||
`Letzter Lauf: ${verdict} — ${detail} (${timestamp})`,
|
||||
"─────────────────────────────────────────",
|
||||
"Workflow: /coder <auftrag> | /judge | /fix | /shipit",
|
||||
"Auto-Loop: /optimize <auftrag> [--rounds N] [--with-doku] [--continue]",
|
||||
"Kleine Änderung: /patch <änderung> → /quick_check [was]",
|
||||
"Finale Doku: /update_doku | Neues Projekt: /new_project <pfad>",
|
||||
]);
|
||||
}
|
||||
|
||||
// ── Extension ────────────────────────────────────────────────────────────────
|
||||
|
||||
export default function (pi: ExtensionAPI) {
|
||||
|
|
@ -540,6 +562,7 @@ export default function (pi: ExtensionAPI) {
|
|||
description: "Finale Freigabe gegen TASK.md + git log → qwen3.5-judge (:8002).",
|
||||
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
||||
await switchModel(pi, ctx, "llama-cpp-judge", "qwen3.5-judge");
|
||||
ctx.ui.notify("Judge prüft finale Freigabe — Ergebnis erscheint im Chat (SHIP / NO-SHIP)", "info");
|
||||
pi.sendUserMessage(shipitPrompt(args || ""));
|
||||
}
|
||||
});
|
||||
|
|
@ -593,7 +616,6 @@ export default function (pi: ExtensionAPI) {
|
|||
if (verdict === "PASS" || verdict === "PASS WITH CONCERNS") {
|
||||
await tickTaskMdStatus(pi, ctx, "Review bestanden (PASS)");
|
||||
ctx.ui.setStatus("optimize", `✓ ${verdict} nach Runde ${round}`);
|
||||
ctx.ui.notify(`Optimierung abgeschlossen: ${verdict} nach ${round} Runde(n)`, "info");
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -601,17 +623,14 @@ export default function (pi: ExtensionAPI) {
|
|||
const currentBlockers = parseBlockers(judgeText);
|
||||
if (currentBlockers && currentBlockers === lastBlockers) {
|
||||
ctx.ui.setStatus("optimize", "⚠ Schleife: gleicher Blocker – manuelle Intervention nötig");
|
||||
ctx.ui.notify(
|
||||
"Derselbe Blocker tritt erneut auf – Schleife abgebrochen. Bitte manuell prüfen.",
|
||||
"warning"
|
||||
);
|
||||
finalNotify(ctx, "⚠ Schleife", "Gleicher Blocker zweimal – manuelle Intervention nötig");
|
||||
return;
|
||||
}
|
||||
lastBlockers = currentBlockers;
|
||||
|
||||
if (round === maxRounds) {
|
||||
ctx.ui.setStatus("optimize", `⚠ Max. ${maxRounds} Runden ohne PASS`);
|
||||
ctx.ui.notify(`${maxRounds} Runden durchlaufen ohne PASS. Bitte manuell prüfen.`, "warning");
|
||||
finalNotify(ctx, "⚠ Kein PASS", `${maxRounds} Runden ohne PASS – bitte /judge und /fix manuell`);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -632,6 +651,7 @@ export default function (pi: ExtensionAPI) {
|
|||
|
||||
if (shipVerdict === "SHIP") {
|
||||
ctx.ui.setStatus("optimize", "🚀 SHIP – produktionsreif");
|
||||
finalNotify(ctx, "🚀 SHIP", "Programm ist produktionsreif");
|
||||
if (withDoku) {
|
||||
await runUpdateDoku(pi, ctx);
|
||||
} else {
|
||||
|
|
@ -639,8 +659,10 @@ export default function (pi: ExtensionAPI) {
|
|||
}
|
||||
} else if (shipVerdict === "NO-SHIP") {
|
||||
ctx.ui.setStatus("optimize", "⛔ NO-SHIP – noch nicht bereit");
|
||||
finalNotify(ctx, "⛔ NO-SHIP", "Noch Blocker offen – bitte /judge und /fix manuell");
|
||||
} else {
|
||||
ctx.ui.setStatus("optimize", "ShipIt abgeschlossen");
|
||||
finalNotify(ctx, "ShipIt", "Kein klares Urteil – Antwort im Chat prüfen");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue