Skip to content

v0.1.18

Choose a tag to compare

@memtomem memtomem released this 25 Apr 00:20
a13fc05

Added

  • error_message column on proxy_metrics.db (#254, closes #253) — every error row now persists the failing source's text alongside error_category / error_code, capped at 500 chars; populated at all six exception-driven capture sites in ProxyManager.call_tool (PROGRAMMING / PROTOCOL / TRANSPORT / TIMEOUT / LOCK_TIMEOUT / INTERNAL_ERROR) plus the upstream result.isError=True site. Migration is idempotent, so existing ~/.memtomem/proxy_metrics.db files upgrade transparently on next start. Operator-visible only; no surfacing change in MCP tool responses.

Fixed

  • Per-tool ToolSurfacingConfig.min_score now takes precedence over the auto-tuner (#247) — surfacing.context_tools.<name>.min_score was silently ignored whenever auto_tune_enabled=true (the default). Precedence is now explicit: per-tool override > auto-tuned value > global default, with the tuner's maybe_adjust skipped for tools carrying an override. Explicit min_score=0.0 is honored.
  • mms list / mms health distinguish missing config from empty config (#250, closes #221) — both commands now mirror mms status's text branch (Config not found: <resolved> + mms add / mms init hint) for missing-file cases; mms health --json switches to {"error": "config_not_found", "path": "..."} for missing-config (matching status --json / list --json).
  • mms health no longer pollutes stderr with MCP SDK tracebacks; error field surfaces the real cause (#251) — multi-line pydantic ValidationError tracebacks from logger.exception("Failed to parse JSONRPC message from server") are silenced for the probe scope (every caller: health, add --validate, init import flow, --from-clients), and the anyio TaskGroup wrapper ("unhandled errors in a TaskGroup (1 sub-exception)") is unwrapped to the leaf cause.
  • mms list TRANSPORT column widened to fit streamable_http (#252) — column was sized at <12 chars but streamable_http is 15 chars, pushing COMPRESSION / COMMAND / URL three chars left of the header. <16 now fits every --transport Choice value with padding.

Docs

  • docs/configuration.md surfaces connect_timeout_seconds and the v0.1.12 timeout trio (#248, #249) — call_timeout_seconds, overall_deadline_seconds, compression.llm.llm_timeout_seconds, and the per-server connect_timeout_seconds all shipped without reference-doc entries. Each entry pins the default, unit, and failure mode (ErrorCategory.TIMEOUT), with tests/test_docs_sync.py regression 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