* introduce global interceptors
* move proxy stuff to new folder
* implement resp framer
* properly handle request/response and push
* add global interceptor
* fix(ssubscribe): properly resubscribe in case of shard failover
1) when RE failover happens, there is a disconnect
2) affected Client reconnects and tries to resubscribe all existing listeners
ISSUE #1: CROSSSLOT Error - client was doing ssubscribe ch1 ch2.. chN which, after the failover could result in CROSSSLOT ( naturally, becasuse now some slots could be owned by other shards )
FIX: send one ssubscribe command per channel instead of one ssubscribe for all channels
ISSUE #2: MOVED Error - some/all of the channels might be moved somewhere else
FIX: 1: Propagate the error to the Cluster. 2: Cluster rediscovers topology.
3: Cluster resubscribes all listeners of the failed client ( possibly some/all of those will end up in a different client after the rediscovery )
fixes: #2902
Certain command parameter enums, specifically ClientKillFilters for the CLIENT KILL command, were not publicly exported by the @redis/client package. The purpose of this change is to make the ClientKillFilters enum accessible to all package consumers, eliminating the need for users to rely on an unstable internal import path.
This matters because it provides a reliable and supported way for developers to use commands that require these enums, improving the package's usability and API stability.
fixes: #2805
Co-authored-by: Nikolay Karadzhov <nkaradzhov89@gmail.com>
* rename maint options according to the latest client options
* adjust env variables
cae repo uses RE_FAULT_INJECTOR_URL for fault injector
DATABASE_NAME is needed to choose from the many databases in cae
* fix connection cleanup test
**Added Dual-Tier Stale Policy:**
- Standard timeline: Issues/PRs still follow 365→30 day cycle
- Accelerated timeline: Issues with needs-information label now get 30→7 day cycle
- Separate jobs handle each policy independently
- Detailed messages explaining why items are marked stale and how to keep them open
- Exempt labels: `no-stale`, `needs-information` (for standard policy)
- Only `no-stale` exempt for PRs (`needs-info` doesn't apply)