From be372c48ea575e3a12b775cfef3ff13148c9b6f8 Mon Sep 17 00:00:00 2001 From: Shroominic Date: Mon, 8 Sep 2025 12:24:32 +0100 Subject: [PATCH] refactor(settings): remove NIP-91 fields; keep relays under discovery; drop openrouter_base_url --- routstr/core/settings.py | 18 +----------------- routstr/nip91.py | 25 +++++++------------------ routstr/payment/models.py | 2 +- scripts/models_meta.py | 4 ++-- 4 files changed, 11 insertions(+), 38 deletions(-) diff --git a/routstr/core/settings.py b/routstr/core/settings.py index 9e8c1d0e..65e7dcba 100644 --- a/routstr/core/settings.py +++ b/routstr/core/settings.py @@ -69,29 +69,13 @@ class Settings(BaseSettings): ) models_path: str = Field(default="models.json", env="MODELS_PATH") source: str = Field(default="", env="SOURCE") - openrouter_base_url: str = Field( - default="https://openrouter.ai/api/v1", env="BASE_URL" - ) # Secrets / optional runtime controls provider_id: str = Field(default="", env="PROVIDER_ID") - nip91_provider_id: str = Field(default="", env="NIP91_PROVIDER_ID") nsec: str = Field(default="", env="NSEC") - # NIP-91 + # Discovery relays: list[str] = Field(default_factory=list, env="RELAYS") - nip91_backoff_base_seconds: float = Field( - default=5.0, env="NIP91_BACKOFF_BASE_SECONDS" - ) - nip91_backoff_max_seconds: float = Field( - default=900.0, env="NIP91_BACKOFF_MAX_SECONDS" - ) - nip91_backoff_jitter_ratio: float = Field( - default=0.2, env="NIP91_BACKOFF_JITTER_RATIO" - ) - nip91_announcement_interval: int = Field( - default=24 * 60 * 60, env="NIP91_ANNOUNCEMENT_INTERVAL" - ) def _compute_primary_mint(cashu_mints: list[str]) -> str: diff --git a/routstr/nip91.py b/routstr/nip91.py index 9bb6b25a..4d4ab59d 100644 --- a/routstr/nip91.py +++ b/routstr/nip91.py @@ -287,7 +287,7 @@ def discover_onion_url_from_tor(base_dir: str = "/var/lib/tor") -> str | None: async def _determine_provider_id(public_key_hex: str, relay_urls: list[str]) -> str: - explicit = settings.provider_id or settings.nip91_provider_id + explicit = settings.provider_id if explicit: logger.info(f"Using configured provider_id from env: {explicit}") return explicit @@ -368,10 +368,7 @@ async def announce_provider() -> None: logger.info(f"Using Nostr pubkey: {public_key_hex}") # Configure relays first (RELAYS only) - try: - relay_urls = [u.strip() for u in settings.relays if u.strip()] - except Exception: - relay_urls = settings.relays + relay_urls = [u.strip() for u in getattr(settings, "relays", []) if u.strip()] if not relay_urls: relay_urls = [ "wss://relay.nostr.band", @@ -438,15 +435,10 @@ async def announce_provider() -> None: metadata=metadata, ) - # Backoff configuration and state - try: - backoff_base = settings.nip91_backoff_base_seconds - backoff_max = settings.nip91_backoff_max_seconds - backoff_jitter_ratio = settings.nip91_backoff_jitter_ratio - except Exception: - backoff_base = settings.nip91_backoff_base_seconds - backoff_max = settings.nip91_backoff_max_seconds - backoff_jitter_ratio = settings.nip91_backoff_jitter_ratio + # Backoff configuration and state (sensible defaults) + backoff_base = 5.0 + backoff_max = 900.0 + backoff_jitter_ratio = 0.2 relay_next_allowed: dict[str, float] = {} relay_current_delay: dict[str, float] = {} @@ -510,10 +502,7 @@ async def announce_provider() -> None: ) # Re-announce periodically (every 24 hours) - try: - announcement_interval = settings.nip91_announcement_interval - except Exception: - announcement_interval = settings.nip91_announcement_interval + announcement_interval = 24 * 60 * 60 while True: try: diff --git a/routstr/payment/models.py b/routstr/payment/models.py index 5d4d0c33..2df73cf4 100644 --- a/routstr/payment/models.py +++ b/routstr/payment/models.py @@ -57,7 +57,7 @@ MODELS: list[Model] = [] def fetch_openrouter_models(source_filter: str | None = None) -> list[dict]: """Fetches model information from OpenRouter API.""" - base_url = settings.openrouter_base_url + base_url = "https://openrouter.ai/api/v1" try: with urlopen(f"{base_url}/models") as response: diff --git a/scripts/models_meta.py b/scripts/models_meta.py index d95b5ddd..718bf438 100755 --- a/scripts/models_meta.py +++ b/scripts/models_meta.py @@ -42,13 +42,13 @@ class Model(TypedDict): OUTPUT_FILE = os.getenv("OUTPUT_FILE", "models.json") -BASE_URL = os.getenv("BASE_URL", "https://openrouter.ai/api/v1") SOURCE = os.getenv("SOURCE") def fetch_openrouter_models(source_filter: str | None = None) -> list[Model]: """Fetches model information from OpenRouter API.""" - with urlopen(f"{BASE_URL}/models") as response: + base_url = "https://openrouter.ai/api/v1" + with urlopen(f"{base_url}/models") as response: data = json.loads(response.read().decode("utf-8")) models_data: list[Model] = []