2026-03-26 03:25:55 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from typing import Any
|
|
|
|
|
|
|
|
|
|
from yuxi import knowledge_base
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def resolve_visible_knowledge_bases_for_context(context) -> list[dict[str, Any]]:
|
2026-05-17 22:44:05 +08:00
|
|
|
uid = getattr(context, "uid", None)
|
|
|
|
|
if not uid:
|
2026-03-26 03:25:55 +08:00
|
|
|
setattr(context, "_visible_knowledge_bases", [])
|
|
|
|
|
return []
|
|
|
|
|
|
2026-05-17 22:44:05 +08:00
|
|
|
result = await knowledge_base.get_databases_by_uid(str(uid))
|
2026-05-12 13:40:44 +08:00
|
|
|
databases = result.get("databases") or []
|
|
|
|
|
enabled_knowledges = getattr(context, "knowledges", None)
|
|
|
|
|
if enabled_knowledges is not None:
|
2026-05-21 19:32:10 +08:00
|
|
|
enabled_ids = {str(value).strip() for value in enabled_knowledges if str(value).strip()}
|
|
|
|
|
databases = [db for db in databases if str(db.get("kb_id") or "").strip() in enabled_ids]
|
2026-05-12 13:40:44 +08:00
|
|
|
|
2026-03-26 03:25:55 +08:00
|
|
|
setattr(context, "_visible_knowledge_bases", databases)
|
|
|
|
|
return databases
|