from __future__ import annotations from pathlib import Path import fitz from src.services.pdf_ops import rebuild_pdf class OfflineValidationAgent: name = "validation_agent" def run(self, input_pdf: Path, output_pdf: Path) -> tuple[Path, dict]: report = {"validated": False, "rebuilt": False, "page_count": 0} try: doc = fitz.open(input_pdf) report["page_count"] = doc.page_count report["validated"] = True output_pdf.parent.mkdir(parents=True, exist_ok=True) doc.save(output_pdf, garbage=4, deflate=True, clean=True) return output_pdf, report except Exception: rebuilt = rebuild_pdf(input_pdf, output_pdf) doc = fitz.open(rebuilt) report.update({"validated": True, "rebuilt": True, "page_count": doc.page_count}) return rebuilt, report