"""Adapter: osv-scanner --format json normalized to Finding[].""" from __future__ import annotations import json from scripts.manifest import Finding def parse_osv_scanner_output(stdout: str) -> list[Finding]: try: payload = json.loads(stdout) except json.JSONDecodeError: return [] out: list[Finding] = [] for r in payload.get("results", []): manifest_path = r.get("source", {}).get("path", "") for pkg in r.get("packages", []): p = pkg.get("package", {}) name = p.get("name", "") version = p.get("version", "") for v in pkg.get("vulnerabilities", []): out.append(Finding( tool="osv-scanner", rule_id=v.get("id", ""), severity="high", file=manifest_path, line=1, end_line=1, message=f"{name} {version}: {v.get('summary', '')}", )) return out