Navegador
Instala @dragon708/docmind-browser y @dragon708/docmind-shared. La analyzeFile pública acepta File, Blob o ArrayBuffer. Las opciones son BrowserAnalyzeOptions: signal, ocr (p. ej. { langs: "eng", mode: "auto" } en imágenes) y docx — mismas ideas include / html que en Node (AnalyzeDocxIncludeFlags desde @dragon708/docmind-docx). Sigue sin haber pipeline PDF en el navegador.
PDF: la entrada de navegador no ejecuta el mismo stack PDF que Node. Usa @dragon708/docmind-node o tu propia ruta en servidor para PDF.
Epic 1 — getCapabilities / explainAnalysisPlan
Mismas entradas que analyzeFile (File / Blob / ArrayBuffer). getCapabilities devuelve un informe de capacidades según el tipo detectado (el PDF en navegador aparece como no equivalente a Node). explainAnalysisPlan acepta intent opcional (tipo compartido, incl. extractStructuredData) y pistas ocr para alinear pasos de imagen con BrowserAnalyzeOptions.ocr; devuelve un plan estructurado sin I/O pesado.
import { getCapabilities, explainAnalysisPlan } from "@dragon708/docmind-browser";
const caps = await getCapabilities(file);
const plan = await explainAnalysisPlan(file, {
intent: "convertToHtml",
ocr: { mode: "auto", langs: "eng" },
docx: { include: { headings: true, tables: true } },
});Salida estructurada — extractStructuredData
extractStructuredData devuelve un StructuredDocumentResult para texto, DOCX e imagen (si el OCR no está en off). PDF en navegador: sobre vacío con avisos; extracción estructurada real de PDF en @dragon708/docmind-node o POST /api/analyze con action=extract-structured.
Side effect DOCX
Incluye soporte DOCX en el bundle (como src/lib/docmind-client.ts):
import "@dragon708/docmind-docx";File desde un input
import { analyzeFile } from "@dragon708/docmind-browser";
import "@dragon708/docmind-docx";
async function desdeInput(input: HTMLInputElement) {
const file = input.files?.[0];
if (!file) throw new Error("No file");
return analyzeFile(file, { ocr: { langs: "eng" } });
}Blob desde fetch
import { analyzeFile } from "@dragon708/docmind-browser";
import "@dragon708/docmind-docx";
async function desdeUrl(url: string) {
const res = await fetch(url);
const blob = await res.blob();
return analyzeFile(blob, {});
}Si construyes el Blob a mano, define un type útil para detectFileKind:
const blob = new Blob([bytes], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
await analyzeFile(blob, {});Referencia en el playground
src/lib/docmind-client.ts mapea language sobre ocr.langs, conserva docx si se pasa, y expone getClientCapabilities, explainClientAnalysisPlan y extractClientStructuredData. Client test incluye casillas include DOCX para analizar, facetas, explicar plan y extraer datos estructurados (no para capabilities ni detect-kind). PDF lab y DOCX lab son solo servidor (POST /api/analyze); ver Resumen de API.