-
Notifications
You must be signed in to change notification settings - Fork 167
Description
Problem
Clients cannot reliably determine whether semantic/hybrid search is truly available for a project before calling search-notes --hybrid.
In practice, downstream integrations fall back to FTS on errors, which can silently degrade relevance without clear operator feedback.
Related downstream issue: basicmachines-co/openclaw-basic-memory#16
Why this looks upstream
Semantic enablement depends on config + dependency availability + provider initialization state, but currently that state is not exposed as a compact machine-readable capability payload for clients.
Relevant modules:
src/basic_memory/config.pysrc/basic_memory/repository/sqlite_search_repository.py- project/status APIs and CLI project/status output
Requested fix
Expose semantic capability state in a stable, machine-readable way (CLI JSON and/or API):
configured_enabled(config intent)dependencies_available(embedding provider import/runtime availability)effective_enabled(hybrid/vector callable now)last_semantic_error(if degraded)
Also, return a typed error code when --hybrid is requested but semantic is unavailable (instead of generic failure text).
Acceptance criteria
- A client can preflight semantic support without trial-and-error calls.
- Hybrid unavailability is explicit and machine-readable.
- Docs mention how to remediate disabled/degraded semantic state.