feat: wire gemma_cpp engine into discovery and optional imports

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jon Saad-Falcon
2026-03-25 13:15:06 -07:00
co-authored by Claude Sonnet 4.6
parent 411e822916
commit d08360ca21
3 changed files with 47 additions and 1 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ from openjarvis.engine._base import (
from openjarvis.engine._discovery import discover_engines, discover_models, get_engine
# Optional engines — only register if their SDK deps are present
for _optional in ("cloud", "litellm"):
for _optional in ("cloud", "litellm", "gemma_cpp"):
try:
importlib.import_module(f".{_optional}", __name__)
except ImportError:
+12
View File
@@ -25,12 +25,24 @@ _HOST_MAP: Dict[str, str | None] = {
"apple_fm": "apple_fm_host",
"cloud": None,
"litellm": None,
"gemma_cpp": None,
}
def _make_engine(key: str, config: JarvisConfig) -> InferenceEngine:
"""Instantiate a registered engine with the appropriate config host."""
cls = EngineRegistry.get(key)
# gemma_cpp: pass config fields instead of host
if key == "gemma_cpp":
cfg = config.engine.gemma_cpp
return cls(
model_path=cfg.model_path or None,
tokenizer_path=cfg.tokenizer_path or None,
model_type=cfg.model_type or None,
num_threads=cfg.num_threads,
)
host_attr = _HOST_MAP.get(key)
if host_attr is not None:
host = getattr(config.engine, host_attr, None)
+34
View File
@@ -323,3 +323,37 @@ class TestGemmaCppConfigResolution:
assert engine._tokenizer_path == ""
assert engine._model_type == ""
assert engine._num_threads == 0
class TestGemmaCppDiscovery:
def test_host_map_contains_gemma_cpp(self) -> None:
from openjarvis.engine._discovery import _HOST_MAP
assert "gemma_cpp" in _HOST_MAP
assert _HOST_MAP["gemma_cpp"] is None
def test_make_engine_passes_config(self) -> None:
from openjarvis.core.config import GemmaCppEngineConfig, JarvisConfig
from openjarvis.core.registry import EngineRegistry
from openjarvis.engine._discovery import _make_engine
from openjarvis.engine.gemma_cpp import GemmaCppEngine
EngineRegistry.register_value("gemma_cpp", GemmaCppEngine)
config = JarvisConfig()
config.engine.gemma_cpp = GemmaCppEngineConfig(
model_path="/cfg/model.sbs",
tokenizer_path="/cfg/tokenizer.spm",
model_type="9b-it",
num_threads=4,
)
engine = _make_engine("gemma_cpp", config)
assert engine._model_path == "/cfg/model.sbs"
assert engine._tokenizer_path == "/cfg/tokenizer.spm"
assert engine._model_type == "9b-it"
assert engine._num_threads == 4
def test_registry_contains_gemma_cpp(self) -> None:
from openjarvis.core.registry import EngineRegistry
from openjarvis.engine.gemma_cpp import GemmaCppEngine
EngineRegistry.register_value("gemma_cpp", GemmaCppEngine)
assert EngineRegistry.contains("gemma_cpp")