This commit is contained in:
Timothy Jaeryang Baek
2026-05-14 03:10:48 +09:00
parent 81f611fb73
commit cc16e06c32
+18 -12
View File
@@ -238,8 +238,8 @@ def _get_files_under_dir(tree: dict, dir_id: str) -> list[dict]:
async def _get_accessible_kb_ids(user: dict, model_knowledge: list[dict] | None,
knowledge_id: str | None = None) -> list[tuple[str, str]]:
"""Get list of (kb_id, kb_name) the user can access."""
knowledge_id: str | None = None) -> list[tuple[str, str, str]]:
"""Get list of (kb_id, kb_name, kb_description) the user can access."""
from open_webui.models.access_grants import AccessGrants
from open_webui.models.groups import Groups
from open_webui.models.knowledge import Knowledges
@@ -269,18 +269,18 @@ async def _get_accessible_kb_ids(user: dict, model_knowledge: list[dict] | None,
for kb_id in attached_kb_ids:
kb = await Knowledges.get_knowledge_by_id(kb_id)
if kb and await _has_access(kb):
result.append((kb.id, kb.name))
result.append((kb.id, kb.name, kb.description or ''))
elif knowledge_id:
kb = await Knowledges.get_knowledge_by_id(knowledge_id)
if kb and await _has_access(kb):
result.append((kb.id, kb.name))
result.append((kb.id, kb.name, kb.description or ''))
else:
search = await Knowledges.search_knowledge_bases(
user_id, filter={'query': '', 'user_id': user_id, 'group_ids': user_group_ids},
skip=0, limit=50,
)
for kb in search.items:
result.append((kb.id, kb.name))
result.append((kb.id, kb.name, kb.description or ''))
return result
@@ -294,7 +294,7 @@ async def _get_accessible_files(user: dict, model_knowledge: list[dict] | None,
kb_ids = await _get_accessible_kb_ids(user, model_knowledge, knowledge_id)
files = []
for kb_id, kb_name in kb_ids:
for kb_id, kb_name, _ in kb_ids:
kb_files = await Knowledges.get_files_with_directory_ids(kb_id)
for file_model, dir_id in kb_files:
files.append({
@@ -443,7 +443,7 @@ async def _kb_ls(args: list[str], flags: set[str], user: dict,
target_kb_id = None
dir_path = None
if path_arg:
for kb_id, kb_name in kb_ids:
for kb_id, kb_name, _ in kb_ids:
if kb_id == path_arg:
target_kb_id = kb_id
break
@@ -451,14 +451,17 @@ async def _kb_ls(args: list[str], flags: set[str], user: dict,
dir_path = path_arg.strip('/')
if target_kb_id:
kb_ids = [(kid, kn) for kid, kn in kb_ids if kid == target_kb_id]
kb_ids = [(kid, kn, kd) for kid, kn, kd in kb_ids if kid == target_kb_id]
if not kb_ids:
return 'No knowledge bases found.'
lines = []
for kb_id, kb_name in kb_ids:
lines.append(f'Knowledge Base: {kb_name} ({kb_id})')
for kb_id, kb_name, kb_desc in kb_ids:
header = f'Knowledge Base: {kb_name} ({kb_id})'
if kb_desc:
header += f'\n {kb_desc}'
lines.append(header)
if flat_mode:
# Flat mode: build full tree (legitimate use)
@@ -921,9 +924,12 @@ async def _kb_tree(args: list[str], flags: set[str], user: dict,
dir_scope = args[0].strip('/') if args else None
output = []
for kb_id, kb_name in kb_ids:
for kb_id, kb_name, kb_desc in kb_ids:
tree = await _build_directory_tree(kb_id)
output.append(f'Knowledge Base: {kb_name} ({kb_id})')
header = f'Knowledge Base: {kb_name} ({kb_id})'
if kb_desc:
header += f'\n {kb_desc}'
output.append(header)
# Find root to start from
root_dir_id = None