9e4b89857a
Salvaged from PR #36180 (commits 68dfeb4b16 and 86f437509b by arimu1), re-applied onto current main with the incidental black-reformat churn stripped out (~1,700 lines -> the semantic change + tests). Previously gateway/config.py enrolled the api_server platform on `api_server_enabled or api_server_key`, so API_SERVER_ENABLED=true with no key (or a weak/placeholder key) still loaded the platform: the adapter is instantiated (ResponseStore/SQLite opened in __init__), the reconnect watcher spins, and the startup guard refuses at connect() — logging errors forever. Now the platform is enrolled only when API_SERVER_KEY passes the same strength bar as the adapter's startup guard (has_usable_secret, min_length=16), via a shared _has_usable_api_server_key() helper. The no-op `lambda cfg: True` connected-checker for API_SERVER is also replaced with the same key check, so get_connected_platforms() only reports the platform "up" when it could actually start. Known limitation (intentionally out of scope): a YAML config with `platforms.api_server.enabled: true` and no key still loads the platform; this gate covers the env-override path only. Dropped from the original PR: EMAIL/SMS checker additions (scope creep beyond the PR title; absent on current main) and the wholesale black reformat of gateway/config.py and tests. Fixes #36111 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 lines
7 B
Plaintext
2 lines
7 B
Plaintext
arimu1
|