When all MCP servers fail to connect (e.g., network unreachable),
the agent loop would exit immediately, leaving the application in a
zombie state where the gateway is running but no messages can be
processed.
Changes:
- Downgrade MCP init failure from fatal error to warning in Run(),
ProcessDirectWithChannel(), ProcessHeartbeat(), and Continue()
- Add 30s timeout to HTTP client used for SSE/HTTP MCP transports
to prevent indefinite blocking on unreachable servers
The agent now continues operating without MCP tools when servers are
unavailable, rather than becoming completely unresponsive.