+ ${renderCollapsibleHeader(state, FileText, title, contentRef, chevronRef, false)}
+
+ ${
+ params.url
+ ? html`
+ URL: ${params.url}
+
`
+ : ""
+ }
+ ${
+ output && !result.isError
+ ? html`
`
+ : ""
+ }
+ ${
+ result.isError && output
+ ? html`
`
+ : ""
+ }
+
+
+ `,
+ isCustom: false,
+ };
+ }
+
+ // Just params (streaming or waiting for result)
+ if (params) {
+ const title = "Extracting document...";
+
+ return {
+ content: html`
+
+ ${renderCollapsibleHeader(state, FileText, title, contentRef, chevronRef, false)}
+
+
+ `,
+ isCustom: false,
+ };
+ }
+
+ // No params or result yet
+ return {
+ content: renderHeader(state, FileText, "Preparing extraction..."),
+ isCustom: false,
+ };
+ },
+};
+
+// Auto-register the renderer
+registerToolRenderer("extract_document", extractDocumentRenderer);
diff --git a/packages/web-ui/src/tools/index.ts b/packages/web-ui/src/tools/index.ts
index 98035ff7..a1a8e846 100644
--- a/packages/web-ui/src/tools/index.ts
+++ b/packages/web-ui/src/tools/index.ts
@@ -1,5 +1,6 @@
import type { ToolResultMessage } from "@mariozechner/pi-ai";
import "./javascript-repl.js"; // Auto-registers the renderer
+import "./extract-document.js"; // Auto-registers the renderer
import { getToolRenderer, registerToolRenderer } from "./renderer-registry.js";
import { BashRenderer } from "./renderers/BashRenderer.js";
import { DefaultRenderer } from "./renderers/DefaultRenderer.js";