v2.48.0
Release notes: v2.48.0
Memory & Tool RAG
- Content-hash skip for tool embeddings —
tool_definitionsstoresembedding_input_hash;MemoryDB.upsert_tool()skipsget_embedding()when the definition is unchanged and the hash matches. Reduces redundant API/local work on startup sync and manualsync_toolsruns. ./bin/sync_tools.py cloud|local --force— Regenerates embeddings for every tool (ignores hash). Use after changing embedding model/dimensions or when debugging Tool RAG.- Schema — New databases include the column; existing DBs add it via
ALTER TABLEon open. - Docs —
docs/SYNC_ARCHITECTURE.md,docs/DUAL_DATABASE_SYSTEM.md(tool rows are not copied bysync-memory-db.py),docs/TOOL_RAG_STRATEGY.md,docs/EMBEDDING_HEALTH_CHECKS.md,bin/sync_tools.pyusage header.
Embedding health check
check-embeddings-health.pyprints Embedding Provider as the effective vector backend (openaivsollama), aligned withlib/embeddings.get_embedding()— not the chat LLM brand. When they differ (e.g. xAI chat + OpenAI embeddings), LLM Provider (chat) is shown on a second line.
Auto-memory & routing
- Auto-memory match hints and documentation; example
AUTO_MEMORY_SIMILARITY_THRESHOLD0.45 in docs. - Conversation context and Tool RAG documentation updates; routing tweaks.
Tool RAG retrieval
- Typo hints — User-only token scan and segment matching to improve retrieval when queries don’t exactly match tool text.
Completion Guard
- Effective evidence, native-tool epochs, repair/tighten semantics.
- Yelp search tool and improved completion-guard context.
Search & media
- SerpAPI YouTube search and fallback tools; follow-up field title; embed YouTube in Web UI chat and Canvas.
- Canvas — Tooltip on page names in the gallery.
HTTP & tools
LOCAL_PROXY2proxy chain, tunnel retry, andproxy_usedlogging for HTTP clients usinglib/http_client.py(and tools that rely on it).- Per-bucket API rate limiting; phone_call timeouts hardened.
Spotify
- Honor device on play; episode lookup improvements; cleaner tool-retry speech.
Web UI
- Chat history title tooltips and full stored titles.
Voice & TTS
- TTS emoji cleanup and tool logging improvements.
Response style
- System prompt and response style doc updates;
_format_auto_mode()keeps long complex-tool responses raw only when > 75 words (was a lower threshold).
Config & tests
config/READMEupdates.- Schema tests assert
tool_definitions.embedding_input_hashafter freshMemoryDBinit (tests/test-db-schema-simple.py,tests/test-db-schema.sh).
Upgrade notes
- No manual migration required for the hash column; open any service or run
sync_toolsonce to populate hashes. - After switching embedding provider/model, run
sync_tools.pywith--forcefor the affected mode and re-check./bin/check-embeddings-health.py.