{"record":{"id":"4de1d6b0a19f65a8","repo":"HKUDS/DeepTutor","slug":"cannot-move-a-folder-into-itself","errorCode":null,"errorMessage":"Cannot move a folder into itself","messagePattern":"Cannot move a folder into itself","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"deeptutor/api/routers/knowledge.py","lineNumber":2431,"sourceCode":"    manager, kb_name, _ = _writable_kb(kb_name)\n    _assert_kb_writable_or_409(kb_name, _load_kb_entry_or_404(manager, kb_name))\n    raw_dir = manager.get_knowledge_base_path(kb_name) / \"raw\"\n\n    source_rel = _sanitize_rel_subdir(payload.source)\n    if not source_rel:\n        raise HTTPException(status_code=400, detail=\"Source path is required\")\n    src = _safe_join_raw(raw_dir, source_rel)\n    if not src.exists():\n        raise HTTPException(status_code=404, detail=\"Source not found\")\n\n    dest_folder = _sanitize_rel_subdir(payload.dest_folder)\n    dest_dir = _safe_join_raw(raw_dir, dest_folder) if dest_folder else raw_dir.resolve()\n    dest = dest_dir / src.name\n\n    if dest.resolve() == src.resolve():\n        return {\"status\": \"ok\", \"path\": source_rel}\n    if src.is_dir() and dest_dir.resolve().is_relative_to(src.resolve()):\n        raise HTTPException(status_code=400, detail=\"Cannot move a folder into itself\")\n    if dest.exists():\n        raise HTTPException(\n            status_code=409,\n            detail=f\"'{src.name}' already exists in the target folder\",\n        )\n\n    dest_dir.mkdir(parents=True, exist_ok=True)\n    shutil.move(str(src), str(dest))\n    return {\"status\": \"ok\", \"path\": dest.relative_to(raw_dir.resolve()).as_posix()}\n\n\n@router.get(\"/{kb_name}/file-preview-text/{filename:path}\")\nasync def serve_kb_raw_file_text_preview(kb_name: str, filename: str):\n    \"\"\"Serve extracted plain text for a raw KB document preview.\"\"\"\n    target = _resolve_kb_raw_file_or_404(kb_name, filename)\n    try:\n        text = extract_text_from_path(\n            target,","sourceCodeStart":2413,"sourceCodeEnd":2449,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/knowledge.py#L2413-L2449","documentation":"Error \"Cannot move a folder into itself\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/knowledge.py:2431 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}