from __future__ import annotations import os import shutil import sys from pathlib import Path DEFAULT_ENV = { "BRAIN_AUTO_NGROK": "0", "BRAIN_AUTO_PUBLISH_URL_ON_STARTUP": "0", "BRAIN_LANGUAGES": "ar,en", "BRAIN_PLATFORM_NAME": "ai_coder_main", "BRAIN_PROVIDER": "huggingface", "BRAIN_REUSE_PUBLIC_URL_ON_RESTART": "0", "BRAIN_ROLES": "coding,planner,fallback", "BRAIN_TEMPLATE": "hf-space-cpu", "BRAIN_TUNNEL_PROVIDER": "none", "FIREBASE_ENABLED": "0", "FIREBASE_NAMESPACE": "kapo", "FIREBASE_PROJECT_ID": "citadel4travels", "GOOGLE_DRIVE_BOOTSTRAP_URL": "https://drive.google.com/uc?export=download&id=19jyBWsQ9ciJVPi2PUigu5ti3gJ24A6TG", "HF_ACCELERATOR": "cpu", "HF_SPACE_DOCKER": "1", "KAGGLE_AUTO_BOOTSTRAP": "0", "KAPO_BOOTSTRAP_URL": "https://drive.google.com/uc?export=download&id=19jyBWsQ9ciJVPi2PUigu5ti3gJ24A6TG", "KAPO_COMPUTE_PROFILE": "cpu", "KAPO_HF_INFERENCE_API": "1", "KAPO_HF_TRANSFORMERS_RUNTIME": "0", "KAPO_LAZY_EMBED_STARTUP": "1", "KAPO_LAZY_MODEL_STARTUP": "1", "KAPO_PATCH_BUNDLE_URL": "https://drive.google.com/uc?export=download&id=16rIe05GZihhAz7ba8E-WibKaJKbh9eu1", "KAPO_PATCH_MANIFEST_URL": "https://drive.google.com/uc?export=download&id=1jLuPMCA3hp9qstZZtpBNzTK0XOmLrV8b", "KAPO_REMOTE_ENV_PASSWORD_B64": "cENvSnljQ0Z6RUN2azRpcUFLVUdQLW9BbVBoTEtNOFE", "KAPO_REMOTE_ENV_URL_B64": "aHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL3VjP2V4cG9ydD1kb3dubG9hZCZpZD0xdjlZRDlNYlBKNUdYNk9WanVHM3hOR05xLWJfQlJfTGY", "KAPO_SHARED_STATE_BACKEND": "google_drive", "MODEL_PROFILE_ID": "hf-coder-qwen25-coder-7b-instruct", "MODEL_REPO": "Qwen/Qwen2.5-Coder-1.5B-Instruct", "REMOTE_BRAIN_ONLY": "1", "SPACE_PUBLIC_URL": "https://MrA7A1-AiCoder.hf.space" } def _copy_tree(source: Path, target: Path) -> None: if target.exists(): shutil.rmtree(target, ignore_errors=True) shutil.copytree( source, target, ignore=shutil.ignore_patterns('__pycache__', '*.pyc', '.git', '.venv'), ) def _merge_overlay(overlay_root: Path, runtime_root: Path) -> None: if not overlay_root.exists(): return for path in sorted(overlay_root.rglob('*')): rel = path.relative_to(overlay_root) dst = runtime_root / rel if path.is_dir(): dst.mkdir(parents=True, exist_ok=True) continue dst.parent.mkdir(parents=True, exist_ok=True) shutil.copy2(path, dst) def main() -> None: source_root = Path(os.getenv('KAPO_SPACE_SOURCE_ROOT', '/app')).resolve() default_root = Path('/data/kapo_runtime/current') if Path('/data').exists() else Path('/tmp/kapo_runtime/current') runtime_root = Path(os.getenv('KAPO_RUNTIME_ROOT', str(default_root))).resolve() overlay_root = Path(os.getenv('KAPO_OVERLAY_ROOT', str(runtime_root.parent / 'overlay'))).resolve() runtime_pkg = runtime_root / 'brain_server' source_pkg = source_root / 'brain_server' for key, value in DEFAULT_ENV.items(): os.environ.setdefault(str(key), str(value)) space_host = str(os.getenv('SPACE_HOST', '')).strip().rstrip('/') space_id = str(os.getenv('SPACE_ID', '')).strip() public_url = '' if space_host: public_url = space_host if space_host.startswith('http://') or space_host.startswith('https://') else f'https://{space_host}' elif space_id and '/' in space_id: public_url = 'https://' + space_id.replace('/', '-').lower() + '.hf.space' if public_url: os.environ['BRAIN_PUBLIC_URL'] = public_url.rstrip('/') runtime_root.mkdir(parents=True, exist_ok=True) overlay_root.mkdir(parents=True, exist_ok=True) if not runtime_pkg.exists(): _copy_tree(source_pkg, runtime_pkg) _merge_overlay(overlay_root, runtime_root) os.environ['KAPO_RUNTIME_ROOT'] = str(runtime_root) os.environ['KAPO_SYNC_ROOT'] = str(runtime_root) os.environ['KAPO_OVERLAY_ROOT'] = str(overlay_root) port = str(os.getenv('PORT', '7860') or '7860') os.execvp( sys.executable, [ sys.executable, '-m', 'uvicorn', 'api.main:app', '--host', '0.0.0.0', '--port', port, '--app-dir', str(runtime_pkg), ], ) if __name__ == '__main__': main()