v0.1.18
Added
error_messagecolumn onproxy_metrics.db(#254, closes #253) — every error row now persists the failing source's text alongsideerror_category/error_code, capped at 500 chars; populated at all six exception-driven capture sites inProxyManager.call_tool(PROGRAMMING / PROTOCOL / TRANSPORT / TIMEOUT / LOCK_TIMEOUT / INTERNAL_ERROR) plus the upstreamresult.isError=Truesite. Migration is idempotent, so existing~/.memtomem/proxy_metrics.dbfiles upgrade transparently on next start. Operator-visible only; no surfacing change in MCP tool responses.
Fixed
- Per-tool
ToolSurfacingConfig.min_scorenow takes precedence over the auto-tuner (#247) —surfacing.context_tools.<name>.min_scorewas silently ignored wheneverauto_tune_enabled=true(the default). Precedence is now explicit: per-tool override > auto-tuned value > global default, with the tuner'smaybe_adjustskipped for tools carrying an override. Explicitmin_score=0.0is honored. mms list/mms healthdistinguish missing config from empty config (#250, closes #221) — both commands now mirrormms status's text branch (Config not found: <resolved>+mms add/mms inithint) for missing-file cases;mms health --jsonswitches to{"error": "config_not_found", "path": "..."}for missing-config (matchingstatus --json/list --json).mms healthno longer pollutes stderr with MCP SDK tracebacks;errorfield surfaces the real cause (#251) — multi-line pydanticValidationErrortracebacks fromlogger.exception("Failed to parse JSONRPC message from server")are silenced for the probe scope (every caller:health,add --validate,initimport flow,--from-clients), and the anyioTaskGroupwrapper ("unhandled errors in a TaskGroup (1 sub-exception)") is unwrapped to the leaf cause.mms listTRANSPORT column widened to fitstreamable_http(#252) — column was sized at<12chars butstreamable_httpis 15 chars, pushing COMPRESSION / COMMAND / URL three chars left of the header.<16now fits every--transportChoice value with padding.
Docs
docs/configuration.mdsurfacesconnect_timeout_secondsand the v0.1.12 timeout trio (#248, #249) —call_timeout_seconds,overall_deadline_seconds,compression.llm.llm_timeout_seconds, and the per-serverconnect_timeout_secondsall shipped without reference-doc entries. Each entry pins the default, unit, and failure mode (ErrorCategory.TIMEOUT), withtests/test_docs_sync.pyregression tests anchoring the field name to its source-of-truth.
Install: pip install memtomem-stm==0.1.18 or uv tool install --force memtomem-stm==0.1.18 (per reference_pypi_index_lag.md — pin the exact version so you don't hit stale /simple/ cache right after release).
Full changelog: https://github.com/memtomem/memtomem-stm/blob/main/CHANGELOG.md#0118--2026-04-25
🤖 Generated with Claude Code