Primeros pasos
Arquitectura básica
@dragon708/docmind-shared— Tipos compartidos (AnalysisResult,StructuredDocumentResult,DetectFileKindInput,TextAnalyzeInput, …),detectFileKind,analyzeText,normalizeToStructuredResult, errores (DocMindError,isDocMindError). Lo usan los paquetes browser y Node; impórtalo cuando necesites los mismos tipos en cliente y servidor.@dragon708/docmind-browser—analyzeFileparaFile,BloboArrayBuffer. TambiénextractText,extractMetadata,convertToHtml,runOcr,extractStructuredData,detectFileKind,getCapabilities,explainAnalysisPlan. No hay pipeline PDF completo en el navegador (PDF estructurado real solo en Node; en browser el facade devuelve avisos para PDF).@dragon708/docmind-node—analyzeFilepara rutas, URLsfile:oNodeAnalyzeInput/DetectFileKindInput, másreadFileToInput,bufferToInput,resolveNodeAnalyzeInputy las mismas APIs públicas que el navegador, incl.extractStructuredData.
Los paquetes de formato (docmind-pdf, docmind-docx, docmind-ocr) alimentan los stacks en Node (y en navegador para DOCX/imágenes). Trata AnalysisResult como informe estructurado: revisa status, fileKind y warnings antes de usar text, html, etc. Para pipelines JSON/RAG, usa extractStructuredData u opt-in structured en analyzeFile.
Cuándo usar el paquete de navegador
- El fichero debe quedarse en el cliente (privacidad, offline o sin subida).
- Ya tienes
File/Blobde un<input type="file">, arrastrar y soltar, ofetch+blob(). - Aceptas bundle, WASM (p. ej. Tesseract) y límites del navegador—y no dependes de análisis PDF “de servidor” en la pestaña.
Cuándo usar el paquete de Node
- Entradas como rutas en disco,
Buffer/Uint8Arrayen servidor, o cargas que normalizas aDetectFileKindInput/NodeAnalyzeInput. - Handlers HTTP, workers o batch y necesitas PDF (texto, metadatos, políticas OCR
pdf.ocr:off|auto|force).
En este repo, src/lib/docmind-server.ts envuelve subidas como { data, name?, type? } y delega en @dragon708/docmind-node (y en helpers directos de @dragon708/docmind-pdf / @dragon708/docmind-docx para las acciones de los laboratorios). Client test y Server test cubren Epic 1 (capabilities, explain-plan, …) y extract-structured. PDF lab, DOCX lab y OCR lab usan el mismo POST /api/analyze con otros valores de action. Si hay html, ResultViewer usa iframe aislado. Ver Resumen de API.
Entornos mixtos
Patrón habitual: análisis autoritativo en servidor con vista previa opcional en cliente. Mantén DocMindError / isDocMindError alineados para que los fallos se vean igual en la UI.