From 2becbf17f8ed688dcc85b1bd1e3b35e06deb3b4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Tue, 12 May 2026 00:17:13 +0900 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20Gi?= =?UTF-8?q?tHub=20credentials=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/main.py | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/backend/main.py b/backend/main.py index 368e58d..6449528 100644 --- a/backend/main.py +++ b/backend/main.py @@ -8,6 +8,7 @@ from pydantic import BaseModel from backend.android_tools import build_android, find_apks, install_latest_apk, list_devices from backend.config_store import ( + get_github_public_config, get_openai_model, has_openai_key, set_setting, @@ -23,7 +24,7 @@ from backend.workspace_api import router as workspace_router ROOT_DIR = Path(__file__).resolve().parent.parent FRONTEND_DIR = ROOT_DIR / 'frontend' -app = FastAPI(title='DevConsole', version='0.3.0') +app = FastAPI(title='DevConsole', version='0.3.1') app.add_middleware( CORSMiddleware, @@ -46,6 +47,11 @@ class OpenAIConfigRequest(BaseModel): model: str = 'gpt-5' +class GitHubConfigRequest(BaseModel): + username: str + token: str + + class PromptTestRequest(BaseModel): prompt: str task_type: str | None = None @@ -74,7 +80,7 @@ async def workspace_js(): async def health(): return { 'status': 'ok', - 'version': '0.3.0', + 'version': '0.3.1', 'openai_configured': has_openai_key(), } @@ -83,10 +89,11 @@ async def health(): async def system_status(): return { 'project': 'DevConsole', - 'version': '0.3.0', + 'version': '0.3.1', 'status': 'running', 'openai_configured': has_openai_key(), 'openai_model': get_openai_model(), + 'github': get_github_public_config(), } @@ -109,6 +116,24 @@ async def save_openai_settings(payload: OpenAIConfigRequest): } +@app.post('/api/settings/github') +async def save_github_settings(payload: GitHubConfigRequest): + username = payload.username.strip() + token = payload.token.strip() + + set_setting('GITHUB_USERNAME', username) + + if token: + set_setting('GITHUB_TOKEN', token) + + add_log('GitHub credentials updated') + + return { + 'success': True, + 'github': get_github_public_config(), + } + + @app.post('/api/prompts/test') async def test_prompt(payload: PromptTestRequest): prompt = payload.prompt.strip() @@ -144,7 +169,7 @@ async def analyze_project(payload: ProjectAnalyzeRequest): analysis = analyze_github_project(repo_url) - add_log(f'Project analyzed: {analysis.stack}') + add_log(f'Project analyzed: {analysis.detected_stack}') return { 'success': True,