|
@@ -5,13 +5,13 @@ from fastapi.responses import JSONResponse
|
|
|
|
|
|
|
|
from openhands.core.logger import openhands_logger as logger
|
|
from openhands.core.logger import openhands_logger as logger
|
|
|
from openhands.server.settings import Settings
|
|
from openhands.server.settings import Settings
|
|
|
-from openhands.server.shared import config
|
|
|
|
|
|
|
+from openhands.server.shared import config, openhands_config
|
|
|
from openhands.storage.settings_store import SettingsStore
|
|
from openhands.storage.settings_store import SettingsStore
|
|
|
from openhands.utils.import_utils import get_impl
|
|
from openhands.utils.import_utils import get_impl
|
|
|
|
|
|
|
|
app = APIRouter(prefix='/api')
|
|
app = APIRouter(prefix='/api')
|
|
|
|
|
|
|
|
-SettingsStoreImpl = get_impl(SettingsStore, config.settings_store_class) # type: ignore
|
|
|
|
|
|
|
+SettingsStoreImpl = get_impl(SettingsStore, openhands_config.settings_store_class) # type: ignore
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get('/settings')
|
|
@app.get('/settings')
|
|
@@ -21,6 +21,9 @@ async def load_settings(
|
|
|
try:
|
|
try:
|
|
|
settings_store = await SettingsStoreImpl.get_instance(config, github_auth)
|
|
settings_store = await SettingsStoreImpl.get_instance(config, github_auth)
|
|
|
settings = await settings_store.load()
|
|
settings = await settings_store.load()
|
|
|
|
|
+ if settings:
|
|
|
|
|
+ # For security reasons we don't ever send the api key to the client
|
|
|
|
|
+ settings.llm_api_key = None
|
|
|
return settings
|
|
return settings
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.warning(f'Invalid token: {e}')
|
|
logger.warning(f'Invalid token: {e}')
|
|
@@ -37,8 +40,11 @@ async def store_settings(
|
|
|
) -> bool:
|
|
) -> bool:
|
|
|
try:
|
|
try:
|
|
|
settings_store = await SettingsStoreImpl.get_instance(config, github_auth)
|
|
settings_store = await SettingsStoreImpl.get_instance(config, github_auth)
|
|
|
- settings = await settings_store.store(settings)
|
|
|
|
|
- return True
|
|
|
|
|
|
|
+ existing_settings = await settings_store.load()
|
|
|
|
|
+ if existing_settings:
|
|
|
|
|
+ if settings.llm_api_key is None:
|
|
|
|
|
+ settings.llm_api_key = existing_settings.llm_api_key
|
|
|
|
|
+ return await settings_store.store(settings)
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.warning(f'Invalid token: {e}')
|
|
logger.warning(f'Invalid token: {e}')
|
|
|
return JSONResponse(
|
|
return JSONResponse(
|