Move NPU catalog refresh bootstrap into SDK APIs (#523)

Closed
SH
3mo ago
+736-198

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.