Skip to content

v0.1.2

Choose a tag to compare

@tsdata tsdata released this 10 Apr 14:09

Critical

  • Fix server lifespan not connectedapp_lifespan was assigned to a non-existent _lifespan_handler attribute on FastMCP, making the entire server non-functional when run via CLI. Now passed via the lifespan= constructor kwarg.
  • Propagate upstream isError flag — upstream tool errors were silently converted to success responses. Now raises ToolError so isError=true is preserved in the proxied response.

Fixes

  • Fix _surfaced_ids set pruning modifying a set during iteration (potential RuntimeError on CPython 3.12+)
  • Fix _parse_results regex splitting on --- inside content (YAML frontmatter, markdown HR)
  • Fix _parse_scratch_list truncating keys containing :
  • Record metrics for non-text-only responses (images, embedded resources)
  • Pass original arguments (with _context_query) to surfacing on cache hit
  • Snapshot config once per request to prevent intra-request inconsistency from hot-reload
  • Guard against double start() leaking connections
  • Normalize \r\n and \r to \n in content cleaning
  • NFKC-normalize text before injection pattern matching (Unicode confusable bypass)
  • Add CJK sentence-end punctuation (。!?) for better East Asian truncation
  • Widen UUID-based IDs from 48 bits to 64 bits to reduce collision probability
  • Add ProxyCache.stats() thread-safety lock
  • Wrap _fastmcp_compat private API access in try/except for MCP SDK resilience
  • Move feedback_tracker creation inside mcp_adapter success guard

Docs

  • Add stm_proxy_health tool to docs (tool count 6 → 7)
  • Remove selective from auto-selection flowchart (never returned by auto_select_strategy)

Testing

  • 800 automated tests (up from 767)

Full Changelog: v0.1.1...v0.1.2