From 6dddb3766d6155bb14f36f856927f3179962c427 Mon Sep 17 00:00:00 2001
From: "Ian Grant (aider)" <ian.conway.grant@gmail.com>
Date: Fri, 16 May 2025 18:45:33 -0400
Subject: [PATCH] fix: add input timeout handling in monitoring

---
 run_on_maap.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/run_on_maap.py b/run_on_maap.py
index c2014ac..20c0a23 100644
--- a/run_on_maap.py
+++ b/run_on_maap.py
@@ -35,6 +35,7 @@ import shutil
 from pathlib import Path
 from typing import Dict, List
 import time
+import signal
 
 import click
 from maap.maap import MAAP
@@ -238,10 +239,15 @@ def main(
             print(f"\nMonitoring suspended. Press 'r' to resubmit failed jobs, "
                   f"press Ctrl-C to exit, or wait {timeout} seconds to resume.")
             try:
+                # wait for user input with timeout
+                signal.signal(signal.SIGALRM, lambda s, f: (_ for _ in ()).throw(TimeoutError()))
+                signal.alarm(timeout)
                 answer = input().strip().lower()
+                signal.alarm(0)
                 if answer == "r":
                     return "resubmit"
-                time.sleep(timeout)
+                return "resume"
+            except TimeoutError:
                 return "resume"
             except KeyboardInterrupt:
                 return "exit"
-- 
GitLab