You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(satellite): add cgroup v2 auto-detection and fix stderr log delivery
Cgroup v2 auto-detection:
- Add cgroup-detector.ts that reads /proc/self/cgroup at startup, verifies
write access to the delegated subtree, moves the satellite process into a
child cgroup to satisfy the "no internal process" constraint, and enables
memory + pids controllers via cgroup.subtree_control
- ProcessSpawner detects cgroup availability once at startup and conditionally
adds --use_cgroupv2, --cgroupv2_mount, --cgroup_mem_max, --cgroup_pids_max
to nsjail for both MCP server and build command spawns
- --disable_clone_newcgroup is now omitted when cgroup is available (nsjail
needs the cgroup namespace for per-process isolation)
- NSJAIL_MEMORY_LIMIT_MB default changed from 2048 to "inf" — Node.js v24
WASM (undici HTTP parser) reserves ~10GB virtual address space; cgroup
enforces the 512MB physical RAM cap when Delegate=yes is configured
Fix nsjail INFO lines consuming stderr rate limit:
- Move nsjail INFO pre-filter before rateLimiter.shouldAcceptLog() so the
~15 startup INFO mount lines do not burn rate limit slots before the actual
MCP server output arrives
Fix missing event type in isValidEventType():
- Add mcp.server.log_rate_limit_exceeded to the validTypes array so EventBus
does not reject it with event_emit_invalid_type
Fix crash exit logged to user-facing log buffer:
- Add exit handler that writes an error log entry on non-zero exit and
immediately flushes the buffer so crash messages reach the backend without
waiting for the 3-second batch interval
Expand stderr capture on build failures:
- Increase substring limit from 200 to 1000 characters in all npm install,
npm run build, uv, and pip error messages to expose full failure context
Fix Python deployment: venv shebang absolute paths inside nsjail:
- resolvePythonEntryPoint now captures the module entry point string from
[project.scripts] (e.g. "plane_mcp.__main__:main") and returns it as
moduleEntryPoint
- github-deployment.ts uses python3 -m <module> when moduleEntryPoint is
available, avoiding the venv shebang script that contains an absolute host
path that does not exist inside nsjail's isolated filesystem
Fix pyproject.toml dependency parsing with extras syntax:
- Replace single regex /\[([\s\S]*?)\]/ with a bracket-aware loop so
dependencies containing extras (e.g. "pkg[redis,hiredis]") are parsed
correctly instead of truncating at the first ] inside the extras bracket
Fix isPyprojectSimpleScript for module-based packages:
- Check [project.scripts] entry point module roots (e.g. "plane_mcp" from
"plane_mcp.__main__:main") against the filesystem so packages that use a
module directory instead of a src/ layout are correctly identified as
installable rather than simple scripts
0 commit comments