"""launchd 진입점 — 만료된 활성 카드 정리 + 텔레그램 알림. 10초 간격으로 호출 (StartInterval=10). 활성 카드가 없거나 만료되지 않았으면 즉시 종료. PinStore 가 파일 기반이므로 별도 프로세스에서도 동일 활성 카드를 본다. """ from __future__ import annotations import sys from . import handler def main() -> int: try: handler._sweep_expired_and_notify() except Exception as e: print(f'[expiry_watcher] {type(e).__name__}: {e}', file=sys.stderr) return 1 return 0 if __name__ == '__main__': sys.exit(main())