Gate (tht-gate.js): - Pre-validate decision types against workflow.yaml before showing reviewer widget - Reject decisions emitted by later phases (min-phase check) - Copy top-level `kind` into artifact when model forgets it (prevents loop) - Force-advance on reviewer_decide/schema_linking when advance:true — skip redundant reviewer_confirm gate Backend: - Emit agent_end on clean Pi exit (code 0 + bridge idle) instead of marking failed Frontend: - Strip <think> tags from transcript and activity panel - Fix mermaid render with offscreen container + cleanup - Graceful mermaid error: show source code instead of red error, fall back to table Workflow: - F2 now emits table_promoted and table_excluded (early schema linking decisions) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
22 lines
670 B
TypeScript
22 lines
670 B
TypeScript
let _initialized = false;
|
|
|
|
export async function renderMermaid(def: string): Promise<string> {
|
|
const mermaid = (await import("mermaid")).default;
|
|
if (!_initialized) {
|
|
mermaid.initialize({ startOnLoad: false, theme: "default" });
|
|
_initialized = true;
|
|
}
|
|
const id = `mermaid-${Math.random().toString(36).slice(2)}`;
|
|
const container = document.createElement("div");
|
|
container.style.position = "absolute";
|
|
container.style.left = "-9999px";
|
|
document.body.appendChild(container);
|
|
try {
|
|
const { svg } = await mermaid.render(id, def, container);
|
|
return svg;
|
|
} finally {
|
|
container.remove();
|
|
document.getElementById(id)?.remove();
|
|
}
|
|
}
|