Add four new OpenAI-compatible inference engines across the full stack:
Rust backend:
- Config structs with serde defaults (ExoEngineConfig, NexaEngineConfig,
UzuEngineConfig, AppleFmEngineConfig) in openjarvis-core
- Factory constructors on OpenAICompatEngine (exo, nexa, uzu, apple_fm)
- Engine enum variants with delegate_engine! macro dispatch
- Discovery and resolution in get_engine_static()
- PyO3 bridge support in PyEngine
Python frontend:
- Data-driven engine class registration in openai_compat_engines.py
- Config dataclasses with backward-compat host properties
- Discovery host map entries
- DEFAULT_SEARCH_SPACE updated with new engine backends
- Apple FM shim (FastAPI wrapper for python-apple-fm-sdk, macOS only)
Config & tests:
- TOML config sections for all four engines
- Unit tests for factory methods, enum variants, and search space
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>