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:
parent
7d7c2a62dd
commit
6fc4e36625
2 changed files with 23 additions and 6 deletions
|
|
@ -757,16 +757,14 @@ class SessionDB:
|
||||||
if not query:
|
if not query:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if source_filter is None:
|
|
||||||
source_filter = ["cli", "telegram", "discord", "whatsapp", "slack"]
|
|
||||||
|
|
||||||
# Build WHERE clauses dynamically
|
# Build WHERE clauses dynamically
|
||||||
where_clauses = ["messages_fts MATCH ?"]
|
where_clauses = ["messages_fts MATCH ?"]
|
||||||
params: list = [query]
|
params: list = [query]
|
||||||
|
|
||||||
source_placeholders = ",".join("?" for _ in source_filter)
|
if source_filter is not None:
|
||||||
where_clauses.append(f"s.source IN ({source_placeholders})")
|
source_placeholders = ",".join("?" for _ in source_filter)
|
||||||
params.extend(source_filter)
|
where_clauses.append(f"s.source IN ({source_placeholders})")
|
||||||
|
params.extend(source_filter)
|
||||||
|
|
||||||
if role_filter:
|
if role_filter:
|
||||||
role_placeholders = ",".join("?" for _ in role_filter)
|
role_placeholders = ",".join("?" for _ in role_filter)
|
||||||
|
|
|
||||||
|
|
@ -210,6 +210,25 @@ class TestFTS5Search:
|
||||||
sources = [r["source"] for r in results]
|
sources = [r["source"] for r in results]
|
||||||
assert all(s == "telegram" for s in sources)
|
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):
|
def test_search_with_role_filter(self, db):
|
||||||
db.create_session(session_id="s1", source="cli")
|
db.create_session(session_id="s1", source="cli")
|
||||||
db.append_message("s1", role="user", content="What is FastAPI?")
|
db.append_message("s1", role="user", content="What is FastAPI?")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue