fix #1028, /select-file api call on deleted file in Code Editor caused Error (#1158)

* fix: /select-file on deleted file exception, detail: https://github.com/OpenDevin/OpenDevin/issues/1028

* fix: lint.

* fix: lint.

---------

Co-authored-by: aaren.xzh <aaren.xzh@antfin.com>
This commit is contained in:
Xia Zhenhua 2024-04-16 21:19:10 +08:00 committed by GitHub
parent 88e31f91d8
commit 8e4c4c9946
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 3 deletions

View File

@ -6,6 +6,9 @@ export type WorkspaceFile = {
export async function selectFile(file: string): Promise<string> {
const res = await fetch(`/api/select-file?file=${file}`);
const data = await res.json();
if (res.status !== 200) {
throw new Error(data.error);
}
return data.code as string;
}

View File

@ -2,7 +2,7 @@ import uuid
from pathlib import Path
import litellm
from fastapi import Depends, FastAPI, WebSocket
from fastapi import Depends, FastAPI, WebSocket, Response
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from fastapi.staticfiles import StaticFiles
@ -13,6 +13,7 @@ from starlette.responses import JSONResponse
import agenthub # noqa F401 (we import this to get the agents registered)
from opendevin import config, files
from opendevin.agent import Agent
from opendevin.logger import opendevin_logger as logger
from opendevin.server.agent import agent_manager
from opendevin.server.auth import get_sid_from_token, sign_token
from opendevin.server.session import message_stack, session_manager
@ -126,8 +127,15 @@ def refresh_files():
@app.get('/api/select-file')
def select_file(file: str):
with open(Path(Path(str(config.get('WORKSPACE_BASE'))), file), 'r') as selected_file:
content = selected_file.read()
try:
workspace_base = config.get('WORKSPACE_BASE')
file_path = Path(workspace_base, file)
with open(file_path, 'r') as selected_file:
content = selected_file.read()
except Exception as e:
logger.error(f'Error opening file {file}: {e}', exc_info=False)
error_msg = f'Error opening file: {e}'
return Response(f'{{"error": "{error_msg}"}}', status_code=500)
return {'code': content}