30 lines
819 B
Python
30 lines
819 B
Python
import logging
|
|
from rich.traceback import install
|
|
from logging_utils import setup_logging
|
|
from menu import Menu
|
|
from hooks import setup_hooks, CircuitBreaker, RetryHandler
|
|
from task import risky_task
|
|
|
|
install(show_locals=True, width=120)
|
|
setup_logging()
|
|
|
|
logger = logging.getLogger("menu")
|
|
|
|
menu = Menu(title="Main Menu", never_confirm=True)
|
|
setup_hooks(menu)
|
|
breaker = CircuitBreaker(max_failures=2, reset_timeout=10)
|
|
retry_handler = RetryHandler(max_retries=30, delay=2, backoff=2)
|
|
menu.add_option(
|
|
"1",
|
|
"Run Risky Task",
|
|
risky_task,
|
|
before_hooks=[breaker.before_hook],
|
|
after_hooks=[breaker.after_hook],
|
|
error_hooks=[retry_handler.retry_on_error, breaker.error_hook],
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
result = menu.run_headless("1")
|
|
logger.info(f"Headless execution returned: {result}")
|