import argparse, json, sys from pathlib import Path from .agent import LandingZoneAgent, ValidationError, load_config def main(argv=None) -> int: p = argparse.ArgumentParser(description="Generate a TSD and draw.io architecture diagram") p.add_argument("--input", required=True, help="requirements JSON") p.add_argument("--output-dir", required=True) p.add_argument("--config", default="config/default.json") args = p.parse_args(argv) try: data = json.loads(Path(args.input).read_text()) result = LandingZoneAgent(load_config(args.config)).generate(data) out = Path(args.output_dir); out.mkdir(parents=True, exist_ok=True) result_files = {"tsd.md": result.tsd_markdown, "architecture.drawio": result.drawio_xml, "validation.json": json.dumps(result.validation.__dict__, indent=2) + "\n"} for name, content in result_files.items(): (out / name).write_text(content) return 0 except ValidationError as exc: print(f"validation error: {exc}", file=sys.stderr); return 2 except (OSError, json.JSONDecodeError, RuntimeError) as exc: print(f"generation error: {exc}", file=sys.stderr); return 1 if __name__ == "__main__": sys.exit(main())