from __future__ import annotations import argparse import logging from app.core.config import get_settings from app.core.logging import setup_logging from app.scheduler.polling_runner import PollingRunner logger = logging.getLogger(__name__) def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Smart Deploy Agent demo edge agent") parser.add_argument("--once", action="store_true", help="run one heartbeat + pull + execute cycle") return parser.parse_args() def main() -> None: setup_logging() args = parse_args() settings = get_settings() runner = PollingRunner(settings) try: if args.once: runner.run_once() else: runner.run_forever() finally: runner.close() logger.info("edge agent stopped") if __name__ == "__main__": main()