| 44 | |
| 45 | |
| 46 | def parser() -> argparse.ArgumentParser: |
| 47 | p = argparse.ArgumentParser(description=__doc__ or "extract evidence") |
| 48 | p.add_argument("--input", required=True, help="Metadata JSON path, fetch_pdf JSON path, JSON string, or raw paper reference.") |
| 49 | p.add_argument("--output", default="", help="Output JSON path.") |
| 50 | p.add_argument("--paper-id", default="", help="Canonical paper id if already known.") |
| 51 | p.add_argument("--max-pages", type=int, default=32, help="Maximum number of PDF pages to scan.") |
| 52 | p.add_argument("--max-chunks-per-section", type=int, default=12, help="Maximum number of candidate chunks to keep per section.") |
| 53 | return p |
| 54 | |
| 55 | |
| 56 | def ensure_record(input_value: str) -> dict: |