"""Adapter: knip --reporter json output → Finding[].""" from __future__ import annotations import json from scripts.manifest import Finding def parse_knip_output(stdout: str) -> list[Finding]: try: payload = json.loads(stdout) except json.JSONDecodeError: return [] if not isinstance(payload, dict): return [] out: list[Finding] = [] for issue in payload.get("issues", []): file_path = issue.get("file", "") for export in issue.get("exports", []): name = export.get("name", "") line = export.get("line", 0) out.append(Finding( tool="knip", rule_id="knip:dead-export", severity="medium", file=file_path, line=line, end_line=line, message=f"unused export '{name}'", )) return out