Skip to content

v2.20.0

Choose a tag to compare

@queelius queelius released this 22 Jun 15:11
· 31 commits to master since this release

Tool surface unification

The tool registry (ctk.builtin + ctk.network) is now the single source of truth for every tool surface. Previously the same tools were defined two or three times (the chat path, the MCP server, and a REST veneer) with schemas that had drifted apart; this release collapses them.

What changed

  • The MCP server now projects from the registry. Its tool list and dispatch are generated from the registry via a small projection layer; the five hand-written MCP handler modules are gone. The MCP server exposes the same curated set as before, now derived rather than duplicated.
  • execute_sql and semantic_search became registry tools. They were MCP-only; folding them into the registry means the TUI chat path can reach them too, and they are defined once.
  • find_similar was reconciled into find_similar_conversations, which gains an on-the-fly cosine fallback so it returns results even before the similarity links table is built.
  • update_conversation is now the canonical mutation tool (set starred / pinned / archived / title in one call). The seven verb tools (star, unstar, pin, unpin, archive, unarchive, rename) are now thin wrappers over it, with their exact outputs unchanged.
  • _format_message round-trips assistant tool_calls, so strict OpenAI-spec servers accept the multi-turn tool history (lenient and local endpoints were already fine).

Deprecations and breaking changes

  • The REST and web (Flask) interfaces were removed entirely. They had no live consumer (the only entry point was an example script; the HTML exporter is self-contained and never used them). The optional Flask dependency is dropped. If you depended on the example REST server, it is gone.
  • MCP get_conversation default changed: an MCP client that OMITTED include_content previously got full message content; it now gets the summary (the canonical default is content-off). Send the (now-aliased) include_content parameter explicitly to opt back in.
  • MCP find_similar is deprecated in favor of find_similar_conversations. Both names are exposed for this release; find_similar and its legacy params (id, top_k, threshold) are mapped to the canonical tool. Its min_similarity default changed from 0.0 to 0.1.

The old MCP parameter names (id, include_content, top_k, threshold) are accepted for one release via an alias shim, then will be removed.

2135 unit tests pass, mypy clean. This completes the tool-surface work begun in 2.19.1.

pip install -U conversation-tk