"""Stable version 1.0.0. It intentionally contains the reproduced bug.""" VERSION = "1.1.0-candidate" MAX_RETRIES = 3 CIRCUIT_BREAKER_THRESHOLD = 5 NON_RETRYABLE_CODES = {"AUTH_DENIED", "INVALID_ARGUMENT", "PAYMENT_DECLINED"} def should_retry(error_code, retryable, attempt): """Return whether another tool call should be attempted.""" if not retryable or error_code in NON_RETRYABLE_CODES: return False return attempt < MAX_RETRIES def should_open_circuit(consecutive_failures, *, error_code="", retryable=True): """Open immediately for permanent errors; otherwise use the threshold.""" if not retryable or error_code in NON_RETRYABLE_CODES: return consecutive_failures >= 1 return consecutive_failures >= CIRCUIT_BREAKER_THRESHOLD