- Add model-tags parser for @Tag syntax in chat messages
- Support Anthropic models (Sonnet, Haiku, Opus) via @tag
- Remove Qdrant vector database from infrastructure and configs
- Simplify license model config to use null fallbacks
- Add greeting stream after model switch via @tag
- Fix protobuf field names to camelCase for v7 compatibility
- Add 429 rate limit retry logic with exponential backoff
- Remove RAG references from agent harness documentation
When send() was called while the socket was still CONNECTING (state 0,
not yet OPEN), it queued the message and scheduled a reconnect after 1
second. The socket then connected successfully, but 1 second later the
scheduled reconnect fired and closed the working session (code 1005),
disrupting any in-flight requests (e.g. get_bars).
Two fixes:
1. Don't schedule a reconnect when the socket is CONNECTING — it is
already in the process of connecting, no reconnect needed.
2. Cancel any pending reconnect timer in onopen — if a timer was
already scheduled before the connection succeeded, clear it.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TradingView's SaveloadAdapter.Library was making HTTP requests for study
templates that returned HTML from nginx, causing JSON parse errors that
destroyed the datafeed and disconnected the WebSocket.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>