v0.10.1 — MCP lifecycle hardening, dispatch-only tool sources, compose spec caching
v0.10.1 — MCP lifecycle hardening, dispatch-only tool sources, compose spec caching
Patch release hardening the MCP server lifecycle around error paths, adding a dispatch-only catalog wrapper, and caching the compose tool's rendered spec.
What's Changed
Unadvertised source wrapper (agentkit-tools-core)
Dispatch-only catalogs: specs() is empty, get() passes through, inner catalog events are drained but not forwarded. Fills the gap between Filtered (hides dispatch too) and fully advertised sources — compose children the model should invoke through scripts without seeing individually.
MCP lifecycle hardening (agentkit-mcp)
disconnect_servernow unregisters tools and emitsServerDisconnectedeven whenclose()fails — previously a close failure left stale, still-callable adapters in the catalog with no retry path.- New
unregister_serverAPI fully removes a server (config, options, auth) so detached servers stop accreting and cannot be resurrected by bulk connects. - New
connect_servers_settledsettles a chosen subset in parallel, idempotent per server;connect_all_settleddelegates to it and no longer re-handshakes live servers. - Replaced connections are closed on overwrite instead of silently dropped (leaked Streamable HTTP sessions).
- IO/transport/timeout call failures map to
ToolError::Unavailableso callers can trigger reconnects without string-matching; request-side JSON-RPC errors (InvalidParams/InvalidRequest/ParseError) map toToolError::InvalidInputso the model is told to fix its arguments instead of treating the tool as broken. McpServerHandle::tool_names()lists namespaced names without building adapters.
Compose spec caching (agentkit-tool-compose)
specs() re-rendered every child's output schema into the compose description on each call — once per model step — even for frozen catalogs. The rendered spec is now cached and invalidated on drain_catalog_events, the same signal the loop uses to refresh the model-visible catalog.
Snapshot canonicalisation
JSON object keys are sorted during recording normalisation, fixing deterministic and flaky snapshot mismatches introduced by workspace-wide preserve_order.
Commits
- fix: MCP lifecycle hardening, dispatch-only tool sources, compose spec caching (0.10.1) (#9) (9fda8b3)
Full Changelog: v0.10.0...v0.10.1