From 5766fa82ab34c294ccc497d400eb08ae2f67d8dc Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Mon, 6 Apr 2026 17:59:05 -0700 Subject: [PATCH] refactor: replace vision stub with cf-vision shim (cf-core#36) circuitforge_core.vision.router now re-exports VisionRouter from the standalone cf-vision repo. Existing imports unchanged; falls back to a helpful ImportError stub if cf-vision is not installed. Closes cf-core#36 --- circuitforge_core/vision/router.py | 39 ++++++++++++++++++------------ 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/circuitforge_core/vision/router.py b/circuitforge_core/vision/router.py index c0171ba..5a05f29 100644 --- a/circuitforge_core/vision/router.py +++ b/circuitforge_core/vision/router.py @@ -1,19 +1,26 @@ -""" -Vision model router — stub until v0.2. -Supports: moondream2 (local) and Claude vision API (cloud). -""" +# circuitforge_core/vision/router.py — shim +# +# The vision module has been extracted to the standalone cf-vision repo. +# This shim re-exports VisionRouter so existing imports continue to work. +# New code should import directly from cf_vision: +# +# from cf_vision.router import VisionRouter +# from cf_vision.models import ImageFrame +# +# Install: pip install -e ../cf-vision from __future__ import annotations +try: + from cf_vision.router import VisionRouter # noqa: F401 + from cf_vision.models import ImageFrame # noqa: F401 +except ImportError: + # cf-vision not installed — fall back to the stub so products that don't + # need vision yet don't hard-fail on import. + class VisionRouter: # type: ignore[no-redef] + """Stub — install cf-vision: pip install -e ../cf-vision""" -class VisionRouter: - """Routes image analysis requests to local or cloud vision models.""" - - def analyze(self, image_bytes: bytes, prompt: str) -> str: - """ - Analyze image_bytes with the given prompt. - Raises NotImplementedError until vision backends are wired up. - """ - raise NotImplementedError( - "VisionRouter is not yet implemented. " - "Photo analysis requires a Paid tier or local vision model (v0.2+)." - ) + def analyze(self, image_bytes: bytes, prompt: str = "", task: str = "document"): + raise ImportError( + "cf-vision is not installed. " + "Run: pip install -e ../cf-vision" + )