fix: search all sources by default in session_search (#1892)
* fix: include ACP sessions in default search sources * fix: remove hardcoded source allowlist from session search The default source_filter was a hardcoded list that silently excluded any platform not explicitly listed. Instead of maintaining an ever-growing allowlist, remove it entirely so all sources are searched by default. Callers can still pass source_filter explicitly to narrow results. Follow-up to cherry-picked PR #1817. --------- Co-authored-by: someoneexistsontheinternet <154079416+someoneexistsontheinternet@users.noreply.github.com> Co-authored-by: Test <test@test.com>
This commit is contained in:
@@ -757,16 +757,14 @@ class SessionDB:
|
||||
if not query:
|
||||
return []
|
||||
|
||||
if source_filter is None:
|
||||
source_filter = ["cli", "telegram", "discord", "whatsapp", "slack"]
|
||||
|
||||
# Build WHERE clauses dynamically
|
||||
where_clauses = ["messages_fts MATCH ?"]
|
||||
params: list = [query]
|
||||
|
||||
source_placeholders = ",".join("?" for _ in source_filter)
|
||||
where_clauses.append(f"s.source IN ({source_placeholders})")
|
||||
params.extend(source_filter)
|
||||
if source_filter is not None:
|
||||
source_placeholders = ",".join("?" for _ in source_filter)
|
||||
where_clauses.append(f"s.source IN ({source_placeholders})")
|
||||
params.extend(source_filter)
|
||||
|
||||
if role_filter:
|
||||
role_placeholders = ",".join("?" for _ in role_filter)
|
||||
|
||||
@@ -210,6 +210,25 @@ class TestFTS5Search:
|
||||
sources = [r["source"] for r in results]
|
||||
assert all(s == "telegram" for s in sources)
|
||||
|
||||
def test_search_default_sources_include_acp(self, db):
|
||||
db.create_session(session_id="s1", source="acp")
|
||||
db.append_message("s1", role="user", content="ACP question about Python")
|
||||
|
||||
results = db.search_messages("Python")
|
||||
sources = [r["source"] for r in results]
|
||||
assert "acp" in sources
|
||||
|
||||
def test_search_default_includes_all_platforms(self, db):
|
||||
"""Default search (no source_filter) should find sessions from any platform."""
|
||||
for src in ("cli", "telegram", "signal", "homeassistant", "acp", "matrix"):
|
||||
sid = f"s-{src}"
|
||||
db.create_session(session_id=sid, source=src)
|
||||
db.append_message(sid, role="user", content=f"universal search test from {src}")
|
||||
|
||||
results = db.search_messages("universal search test")
|
||||
found_sources = {r["source"] for r in results}
|
||||
assert found_sources == {"cli", "telegram", "signal", "homeassistant", "acp", "matrix"}
|
||||
|
||||
def test_search_with_role_filter(self, db):
|
||||
db.create_session(session_id="s1", source="cli")
|
||||
db.append_message("s1", role="user", content="What is FastAPI?")
|
||||
|
||||
Reference in New Issue
Block a user