Cron jobs like nightwatch-health-monitor SSH into remote VPSes.
When the runtime provider is cloud (Nous, OpenRouter, Anthropic),
SSH keys don't exist on the inference server — causing silent
failures and wasted iterations.
Changes:
- cron/scheduler.py: Import is_local_endpoint from model_metadata.
Build disabled_toolsets dynamically: append 'terminal' when the
runtime base_url is NOT a local endpoint. Log when terminal is
disabled for observability. Also warn when a job declares
requires_local_infra=true but runs on cloud.
- tests/test_cron_cloud_terminal.py: 14 tests verifying
is_local_endpoint classification and disabled_toolsets logic.
Behavior:
Local (localhost/127/RFC-1918): terminal enabled, SSH works.
Cloud (openrouter/nous/anthropic): terminal disabled, agent
reports SSH unavailable instead of wasting iterations.
Closes#379