from __future__ import annotations def _slice_for_agent(manifest_dict: dict, agent: str) -> dict: """Return a subset of the manifest appropriate to the named agent. - fsbp/cis/aws-bp: AWS-filtered catalog + plan_units summary + trivy + tflint + errors - consistency: full catalog + full plan_units + trivy + tflint + errors - tf-hygiene: full catalog + full plan_units + tflint + changed_source_dirs + errors (no trivy) - walkthrough: full catalog + plan_units summary + changed_source_dirs + errors (no findings) """ base = { "base_ref": manifest_dict["base_ref"], "head_ref": manifest_dict["head_ref"], "mode": manifest_dict["mode"], "default_branch": manifest_dict["default_branch"], "errors": list(manifest_dict["errors"]), } catalog = manifest_dict["catalog"] if agent in ("fsbp", "cis", "aws-bp"): return { **base, "catalog": [e for e in catalog if e["type"].startswith("aws_")], "trivy_findings": list(manifest_dict.get("trivy_findings", [])), "tflint_findings": list(manifest_dict.get("tflint_findings", [])), "plan_units": [ {"plan_dir": pu["plan_dir"], "tool": pu["tool"], "plan_ok": pu["plan"]["ok"], "summary": pu["plan"]["summary"], "terragrunt_changed": pu["terragrunt_changed"], "changed_files": list(pu["changed_files"])} for pu in manifest_dict["plan_units"] ], } if agent == "consistency": return { **base, "changed_source_dirs": list(manifest_dict["changed_source_dirs"]), "catalog": catalog, "trivy_findings": list(manifest_dict.get("trivy_findings", [])), "tflint_findings": list(manifest_dict.get("tflint_findings", [])), "plan_units": [dict(pu) for pu in manifest_dict["plan_units"]], } if agent == "walkthrough": return { **base, "changed_source_dirs": list(manifest_dict["changed_source_dirs"]), "catalog": catalog, "plan_units": [ {"plan_dir": pu["plan_dir"], "tool": pu["tool"], "plan_ok": pu["plan"]["ok"], "summary": pu["plan"]["summary"], "terragrunt_changed": pu["terragrunt_changed"], "changed_files": list(pu["changed_files"])} for pu in manifest_dict["plan_units"] ], } if agent == "tf-hygiene": return { **base, "changed_source_dirs": list(manifest_dict["changed_source_dirs"]), "catalog": catalog, "tflint_findings": list(manifest_dict.get("tflint_findings", [])), "plan_units": [dict(pu) for pu in manifest_dict["plan_units"]], } return manifest_dict