Move NPU catalog refresh bootstrap into SDK APIs (#523)
Fixes #523
Moves the 17-bundle QHexRT NPU catalog data and probe>filter>register workflow from three example apps into their respective SDK packages.
[!NOTE]
Low Risk
Mostly catalog relocation and bootstrap wiring; behavior should match prior app-local seeding, with no auth or data-model changes.
Overview
Centralizes the 17-bundle QHexRT (Hexagon NPU) catalog in Kotlin (NpuCatalog.kt / QHexRT.seedCatalog()), Flutter (seedNpuCatalog()), and React Native (seedNpuCatalog()), with manifest-pinned Hugging Face URLs kept in lockstep across platforms. Each helper probes the device NPU, registers only arch-matching bundles, and stays separate from backend registration (callers still register QHexRT themselves).
Example apps stop owning NPU model lists: Android ModelBootstrap delegates to QHexRT.seedCatalog(); Flutter and RN bootstrap call the SDK seed APIs after the curated non-NPU catalog. App-level NPU registration blocks are removed in favor of comments pointing at the SDK. NpuModelE2ETest resolves catalog entries via SDK qhexrtBundles / NpuBundle.
Minor Sherpa release URL fixes (RunanywhereAI → RunAnywhereAI) appear in Android/Flutter example catalogs.
Reviewed by Cursor Bugbot for commit f43a8e71e8afa252d821a2349c3fbdc2bb6aaace. Configure here.
Summary by CodeRabbit
- New Features
- Added automatic QHexRT NPU catalog seeding across Android, Flutter, and React Native to register compatible NPU models on supported devices.
- React Native backend initialization now probes NPU capability and registers the detected architecture.
- Added an Android on-device end-to-end NPU model benchmark/inference test with a structured report.
- Bug Fixes
- Corrected GitHub model download URL casing for selected VLM and speech artifacts.
- Fixed framework display/analytics label mapping for CoreML/MLX.
- Documentation
- Clarified that NPU bundle ownership and seeding are handled by the SDK.