{"record":{"id":"5d82e7c7905403a1","repo":"HKUDS/DeepTutor","slug":"no-default-knowledge-base-is-configured-5d82e7","errorCode":null,"errorMessage":"No default knowledge base is configured","messagePattern":"No default knowledge base is configured","errorType":"http","errorClass":"HTTPException","httpStatus":404,"severity":"error","filePath":"deeptutor/multi_user/knowledge_access.py","lineNumber":163,"sourceCode":"            base_dir=admin_kb_base_dir(),\n            source=\"admin\",\n            assigned=True,\n            read_only=True,\n        )\n\n    raise HTTPException(status_code=404, detail=f\"Knowledge base '{name}' not found\")\n\n\ndef _resolve_default_or_name(manager: KnowledgeBaseManager, name: str) -> str:\n    requested = str(name or \"\").strip()\n    names = manager.list_knowledge_bases()\n    if requested and requested in names:\n        return requested\n    if requested.lower() in DEFAULT_KB_ALIASES:\n        default_kb = manager.get_default()\n        if default_kb and default_kb in names:\n            return default_kb\n        raise HTTPException(status_code=404, detail=\"No default knowledge base is configured\")\n    raise HTTPException(status_code=404, detail=f\"Knowledge base '{requested}' not found\")\n\n\ndef manager_for_resource(resource: KnowledgeResource) -> KnowledgeBaseManager:\n    return _manager_for(str(resource.base_dir.resolve()))\n\n\ndef list_visible_knowledge_bases() -> list[dict[str, Any]]:\n    user = get_current_user()\n    manager = current_kb_manager()\n    items: list[dict[str, Any]] = []\n    for name in manager.list_knowledge_bases():\n        items.append(\n            {\n                \"id\": f\"admin:kb:{name}\" if user.is_admin else f\"user:kb:{name}\",\n                \"name\": name,\n                \"source\": \"admin\" if user.is_admin else \"user\",\n                \"assigned\": False,","sourceCodeStart":145,"sourceCodeEnd":181,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/multi_user/knowledge_access.py#L145-L181","documentation":"HTTP 404 from _resolve_default_or_name: the caller asked for the default KB (name matched DEFAULT_KB_ALIASES like 'default'), but manager.get_default() is empty or points to a KB that no longer exists.","triggerScenarios":"resolve_kb('default') (or another alias) when no default KB has been configured in the manager, or the configured default was deleted so it's absent from manager.list_knowledge_bases().","commonSituations":"Fresh installs where a default KB was never set; default KB deleted but the setting not cleared; shared profiles referencing a stale default.","solutions":["Create a KB and set it as the default via the KnowledgeBaseManager","If the default was deleted, reset the default to an existing KB","Pass an explicit KB name instead of relying on the alias"],"exampleFix":"// before\nkb = resolve_kb(\"default\")  # 404: no default configured\n\n// after\nmanager = KnowledgeBaseManager(base_dir=user_kb_dir)\nif not manager.get_default():\n    manager.set_default(manager.list_knowledge_bases()[0])\nkb = resolve_kb(\"default\")","handlingStrategy":"validation","validationCode":"default_kb = manager.get_default()\nif not default_kb or default_kb not in manager.list_knowledge_bases():\n    configure_default(manager)  # set one or pass explicit name\nkb = resolve_kb(\"default\")","typeGuard":"def has_valid_default(manager: KnowledgeBaseManager) -> bool:\n    d = manager.get_default()\n    return bool(d) and d in manager.list_knowledge_bases()","tryCatchPattern":"try:\n    resolve_kb(\"default\")\nexcept HTTPException as e:\n    if e.status_code == 404:\n        kb = resolve_kb(next(iter(manager.list_knowledge_bases())))  # fallback","preventionTips":["Set a default KB immediately after workspace creation","Clear the default setting whenever the default KB is deleted","Prefer explicit KB names over the alias in automation"],"tags":["knowledge-base","default-config","http-404"],"backgroundTag":"missing-configuration","analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}