Releases: langbot-app/langbot-plugin-sdk
0.4.6
0.4.5
What's Changed
-
fix(entities): add
provider_specific_fieldstoMessage/ToolCall/MessageChunk/ToolCallChunk(#83)Lets provider-specific metadata round-trip through the message entity layer. Specifically required for Gemini's
thought_signature, which must be preserved across tool-call rounds for function calls to work correctly (see langbot-app/LangBot#1899). Optional field defaulting toNone→ fully backward-compatible.
Full Changelog: 0.4.4...0.4.5
0.4.4
0.4.3
fix(box/nsjail): correct cgroup v2 detection and drop RLIMIT_AS memory cap
Fixes the nsjail Box backend being unusable inside a private cgroup namespace (Docker/k8s default), which silently killed all uvx/stdio MCP servers with exit 255.
_detect_cgroup_v2()now probes the authoritativecgroup.subtree_controlwrite (not just mkdir), correctly detecting the EBUSY no-internal-process case in a private cgroupns.- Dropped
--rlimit_asfrom the rlimit fallback: it caps virtual address space and instantly aborts uv/node/Rust/JVM. Memory capping now requires cgroups (host cgroupns) or a container-level mem_limit; safe rlimits (pids/fsize/nofile) are kept.
Containerized nsjail deployments must run the Box container with the host cgroup namespace (--cgroupns=host / compose cgroup: host). See AGENTS.md.
0.5.0a2
Second alpha of the EBA SDK layer. Merges main (0.4.2) into refactor/eba, so this pre-release now contains both the EBA unified event system and everything from 0.4.x, notably:
- Box sandbox runtime (
lbp box) with Docker / nsjail / E2B backends — required by LangBot's Box subsystem - All EBA features from 0.5.0a1 (unified events, common entities,
AbstractPlatformAdapter, plugin event wrappers,call_platform_api)
APIs may change before 0.5.0.
0.5.0a1
Alpha release of the Event-Based Agents (EBA) SDK layer.
- Unified EBA event system:
EBAEventbase + 16 event classes acrossmessage.*/feedback.*/group.*/friend.*/bot.*/platform.specificnamespaces - New common entities:
User,UserGroup,UserGroupMember,ChatType,MemberRole - New adapter base class
AbstractPlatformAdapterwith 20+ optional common APIs andNotSupportedError - Plugin-side EBA event wrappers and
@handler()support for all new events call_platform_apipass-through exposed to plugins
This is a pre-release for the refactor/eba branch; APIs may change before 0.5.0.
0.4.2
Stable release 0.4.2.
Highlights
- Robust plugin dependency installation: precheck (skip already-installed), pip retry on transient failures, post-install verification, and structured DependencyInstallError / DependencyVerificationError (#55)
- Enhanced plugin scaffold: zh README template + auto GitHub Release workflow on version bump (#68)
- nsjail container-safe cgroup detection + opt-in cgroup v2 (#69)
- Essential /dev nodes bound into nsjail sandbox; 30s managed-process start timeout
- runtime/io handler coverage; protocol documented as JSON-RPC 2.0 (#70)
Full changelog: https://github.com/langbot-app/langbot-plugin-sdk/commits/0.4.2
0.4.2b4
0.4.2b3
0.4.2b2
Beta release.
fix(box): create read-write host_path before nsjail bind-mount.
When a BoxSpec specifies a read-write host_path (e.g. LangBot's MCP shared-workspace staging), start_session previously only created the per-session root/workspace/tmp/home dirs and never the host_path itself. nsjail requires the --bindmount source to exist, so a missing host_path made the command exit 255 with empty stdout/stderr — the SaaS MCP sandbox failure. Now start_session creates the read-write host_path; read-only sources are left untouched.
Verified live on a k3s nsjail box pod: nonexistent host_path went from exit 255 (no output) to exit 0 with the workspace correctly mounted. Includes regression tests.