-
v1.5.2
Stablereleased this
2026-07-19 15:23:19 -05:00 | 11 commits to main since this releaseCode-review hardening — no new features, no behavior change for valid
configurations.Fixed
- Config validation now rejects malformed numeric env values.
parseInton
e.g.CLAUDE_MAX_TOKENS=abcyieldsNaN, and every comparison againstNaN
is false, so the old<= 0checks let it through and the mistake only
surfaced as an API 400 at request time.Config.validate()now requires
every numeric knob to be a finite number, and also covers
MAX_CONTEXT_MESSAGES,MAX_CONTEXT_HOURS, andRATE_LIMIT_INTERVAL_MS,
which previously weren't validated at all. web_fetchno longer buffers unbounded response bodies. The tool read
the entire body into memory before applying its character-level truncation,
so a huge (or deliberately unbounded chunked) page could pull tens of MB into
the process. Bodies are now streamed with a hard 1 MiB cap, and a
Content-Lengthabove the cap is rejected before reading at all.
Changed
RATE_LIMIT_INTERVAL_MSnow flows through the central config.
RateLimiterread it straight fromprocess.env, bypassing
Config.validate()andgetSummary(); it now comes from
config.limits.rateLimitIntervalMs(tests inject the interval via the
constructor instead of mutating the environment). The never-implemented
RATE_LIMIT_PER_USER/RATE_LIMIT_WINDOWenv vars are dropped from config
and.env.config— enforcement has always been one command per
RATE_LIMIT_INTERVAL_MS.- RateLimiter no longer starts its cleanup timer at module load. The
expired-bypass cleanup interval was a side effect of importing the module; the
bot host now starts it explicitly during startup (paired with the existing
bot-quiesce stop), so importing the module has no timer side effect. - Docs: single-replica requirement made explicit. RATE_LIMITING.md and the
DEPLOYMENT.md production checklist now state that in-memory rate limits are
per-process, so the Swarm service must stay atreplicas: 1.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Config validation now rejects malformed numeric env values.