Spaces:
Sleeping
Sleeping
FlyBrain V9.0.0 Space sync (v9 release, endless world, chunk streaming, FlyAsset compiler)
6343479 verified | """Capability Manager for FlyBrain V8/V9. | |
| Implements Sections 2 & 69: | |
| - Honest reporting of capability states: | |
| * AVAILABLE: Fully operational on detected hardware | |
| * DEGRADED: Operational via fallback (e.g. CPU instead of GPU) | |
| * UNAVAILABLE: Missing binary, weights, or incompatible platform | |
| * QUEUED: Capacity constrained, awaiting execution | |
| * NOT_APPLICABLE: Intentionally omitted or irrelevant | |
| - NEVER fakes Vulkan, physics, models, or 3D generation. | |
| """ | |
| import os | |
| from enum import Enum | |
| from typing import Dict, Any, Optional | |
| from src.runtime.resource_manager.prober import probe_system | |
| class CapabilityStatus(str, Enum): | |
| AVAILABLE = "AVAILABLE" | |
| DEGRADED = "DEGRADED" | |
| UNAVAILABLE = "UNAVAILABLE" | |
| QUEUED = "QUEUED" | |
| NOT_APPLICABLE = "NOT_APPLICABLE" | |
| class CapabilityManager: | |
| def __init__(self, probe: Optional[Dict[str, Any]] = None): | |
| self.probe = probe or probe_system() | |
| def inspect_capabilities(self) -> Dict[str, Dict[str, Any]]: | |
| """Inspects all real capabilities across biology, compute, AI, and physics.""" | |
| caps = {} | |
| # 1. Vulkan Compute Engine | |
| has_vk = self.probe["gpu"]["vulkan_available"] | |
| caps["vulkan_compute"] = { | |
| "status": CapabilityStatus.AVAILABLE.value if has_vk else CapabilityStatus.UNAVAILABLE.value, | |
| "device": self.probe["gpu"]["device_name"], | |
| "reason": "Vulkan 1.3 physical device initialized" if has_vk else "No compatible Vulkan device found" | |
| } | |
| # 2. CPU LIF Reference Engine | |
| caps["cpu_reference"] = { | |
| "status": CapabilityStatus.AVAILABLE.value, | |
| "device": self.probe["cpu"]["model"], | |
| "reason": "Deterministic Python/NumPy LIF reference available" | |
| } | |
| # 3. MuJoCo 3D Physics | |
| try: | |
| import mujoco | |
| caps["mujoco_physics"] = { | |
| "status": CapabilityStatus.AVAILABLE.value, | |
| "version": mujoco.__version__, | |
| "reason": f"MuJoCo {mujoco.__version__} authoritative 3D physics ready" | |
| } | |
| except ImportError as e: | |
| caps["mujoco_physics"] = { | |
| "status": CapabilityStatus.UNAVAILABLE.value, | |
| "reason": f"MuJoCo import failed: {e}" | |
| } | |
| # 4. A* Grid Navigation | |
| try: | |
| from src.world3d.navigation import Navigator | |
| caps["astar_navigation"] = { | |
| "status": CapabilityStatus.AVAILABLE.value, | |
| "reason": "Deterministic 0.25m grid navigator ready" | |
| } | |
| except Exception as e: | |
| caps["astar_navigation"] = { | |
| "status": CapabilityStatus.UNAVAILABLE.value, | |
| "reason": str(e) | |
| } | |
| # 5. Local LLM (Qwen GGUF) | |
| try: | |
| from src.models.loaders import load_text | |
| # check if file exists | |
| from src.models.registry import scan_local | |
| local_models = scan_local() | |
| has_llm = any(isinstance(m, dict) and m.get("task") == "TEXT_MODEL" and m.get("present") for m in local_models) | |
| caps["local_llm"] = { | |
| "status": CapabilityStatus.AVAILABLE.value if has_llm else CapabilityStatus.UNAVAILABLE.value, | |
| "backend": "llama_cpp", | |
| "reason": "Qwen3 GGUF model registered and present" if has_llm else "No GGUF text model weights found in models/text_model" | |
| } | |
| except Exception as e: | |
| caps["local_llm"] = { | |
| "status": CapabilityStatus.UNAVAILABLE.value, | |
| "reason": f"LLM loader error: {e}" | |
| } | |
| # 6. Local Image Generation (LCM Diffusion) | |
| try: | |
| from src.models.image_adapter import find_checkpoint | |
| ckpt = find_checkpoint() | |
| caps["image_generation"] = { | |
| "status": CapabilityStatus.DEGRADED.value, # DEGRADED because running on CPU rather than CUDA | |
| "checkpoint": os.path.basename(ckpt), | |
| "reason": "DreamShaper8-LCM available (running on CPU inference mode)" | |
| } | |
| except Exception as e: | |
| caps["image_generation"] = { | |
| "status": CapabilityStatus.UNAVAILABLE.value, | |
| "reason": f"Image model unavailable: {e}" | |
| } | |
| # 7. Local STT (Whisper) | |
| try: | |
| import soundfile | |
| caps["speech_to_text"] = { | |
| "status": CapabilityStatus.AVAILABLE.value, | |
| "backend": "whisper_small", | |
| "reason": "Whisper STT offline ready" | |
| } | |
| except Exception as e: | |
| caps["speech_to_text"] = { | |
| "status": CapabilityStatus.UNAVAILABLE.value, | |
| "reason": str(e) | |
| } | |
| # 8. Local TTS (Kokoro) | |
| try: | |
| import kokoro | |
| caps["text_to_speech"] = { | |
| "status": CapabilityStatus.AVAILABLE.value, | |
| "backend": "kokoro_82m", | |
| "reason": "Kokoro-82M TTS offline ready" | |
| } | |
| except Exception as e: | |
| caps["text_to_speech"] = { | |
| "status": CapabilityStatus.DEGRADED.value, | |
| "reason": f"Kokoro degraded/fallback: {e}" | |
| } | |
| # 9. Native Image->3D (TRELLIS) | |
| # Check if trellis binary or native tool exists | |
| trellis_path = os.path.join("tools", "trellis") | |
| caps["image_to_3d"] = { | |
| "status": CapabilityStatus.DEGRADED.value if os.path.exists(trellis_path) else CapabilityStatus.UNAVAILABLE.value, | |
| "backend": "trellis_native", | |
| "reason": "Native trellis binary detected" if os.path.exists(trellis_path) else "Native trellis backend not installed (optional V9 generative 3D component)" | |
| } | |
| # 10. Automatic Rigging | |
| caps["automatic_rigging"] = { | |
| "status": CapabilityStatus.NOT_APPLICABLE.value, | |
| "reason": "Rigging enabled on demand for articulated biological models only" | |
| } | |
| return caps | |