@runanywhere/core 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/RunAnywhereCore.podspec +130 -0
  2. package/android/CMakeLists.txt +92 -0
  3. package/android/build.gradle +321 -0
  4. package/android/consumer-rules.pro +5 -0
  5. package/android/src/main/AndroidManifest.xml +3 -0
  6. package/android/src/main/cpp/cpp-adapter.cpp +271 -0
  7. package/android/src/main/include/rac/backends/rac_llm_llamacpp.h +218 -0
  8. package/android/src/main/include/rac/backends/rac_stt_onnx.h +99 -0
  9. package/android/src/main/include/rac/backends/rac_stt_whispercpp.h +153 -0
  10. package/android/src/main/include/rac/backends/rac_tts_onnx.h +71 -0
  11. package/android/src/main/include/rac/backends/rac_vad_onnx.h +84 -0
  12. package/android/src/main/include/rac/core/capabilities/rac_lifecycle.h +290 -0
  13. package/android/src/main/include/rac/core/rac_analytics_events.h +610 -0
  14. package/android/src/main/include/rac/core/rac_audio_utils.h +88 -0
  15. package/android/src/main/include/rac/core/rac_component_types.h +160 -0
  16. package/android/src/main/include/rac/core/rac_core.h +331 -0
  17. package/android/src/main/include/rac/core/rac_error.h +469 -0
  18. package/android/src/main/include/rac/core/rac_events.h +334 -0
  19. package/android/src/main/include/rac/core/rac_logger.h +416 -0
  20. package/android/src/main/include/rac/core/rac_platform_adapter.h +340 -0
  21. package/android/src/main/include/rac/core/rac_sdk_state.h +292 -0
  22. package/android/src/main/include/rac/core/rac_structured_error.h +594 -0
  23. package/android/src/main/include/rac/core/rac_types.h +264 -0
  24. package/android/src/main/include/rac/features/llm/rac_llm.h +17 -0
  25. package/android/src/main/include/rac/features/llm/rac_llm_analytics.h +188 -0
  26. package/android/src/main/include/rac/features/llm/rac_llm_component.h +228 -0
  27. package/android/src/main/include/rac/features/llm/rac_llm_events.h +215 -0
  28. package/android/src/main/include/rac/features/llm/rac_llm_metrics.h +402 -0
  29. package/android/src/main/include/rac/features/llm/rac_llm_service.h +163 -0
  30. package/android/src/main/include/rac/features/llm/rac_llm_structured_output.h +141 -0
  31. package/android/src/main/include/rac/features/llm/rac_llm_types.h +384 -0
  32. package/android/src/main/include/rac/features/platform/rac_llm_platform.h +204 -0
  33. package/android/src/main/include/rac/features/platform/rac_tts_platform.h +197 -0
  34. package/android/src/main/include/rac/features/stt/rac_stt.h +17 -0
  35. package/android/src/main/include/rac/features/stt/rac_stt_analytics.h +204 -0
  36. package/android/src/main/include/rac/features/stt/rac_stt_component.h +162 -0
  37. package/android/src/main/include/rac/features/stt/rac_stt_events.h +62 -0
  38. package/android/src/main/include/rac/features/stt/rac_stt_service.h +154 -0
  39. package/android/src/main/include/rac/features/stt/rac_stt_types.h +389 -0
  40. package/android/src/main/include/rac/features/tts/rac_tts.h +17 -0
  41. package/android/src/main/include/rac/features/tts/rac_tts_analytics.h +181 -0
  42. package/android/src/main/include/rac/features/tts/rac_tts_component.h +158 -0
  43. package/android/src/main/include/rac/features/tts/rac_tts_events.h +54 -0
  44. package/android/src/main/include/rac/features/tts/rac_tts_service.h +162 -0
  45. package/android/src/main/include/rac/features/tts/rac_tts_types.h +374 -0
  46. package/android/src/main/include/rac/features/vad/rac_vad.h +17 -0
  47. package/android/src/main/include/rac/features/vad/rac_vad_analytics.h +236 -0
  48. package/android/src/main/include/rac/features/vad/rac_vad_component.h +185 -0
  49. package/android/src/main/include/rac/features/vad/rac_vad_energy.h +443 -0
  50. package/android/src/main/include/rac/features/vad/rac_vad_events.h +76 -0
  51. package/android/src/main/include/rac/features/vad/rac_vad_service.h +167 -0
  52. package/android/src/main/include/rac/features/vad/rac_vad_types.h +244 -0
  53. package/android/src/main/include/rac/features/voice_agent/rac_voice_agent.h +612 -0
  54. package/android/src/main/include/rac/infrastructure/device/rac_device_manager.h +176 -0
  55. package/android/src/main/include/rac/infrastructure/download/rac_download.h +418 -0
  56. package/android/src/main/include/rac/infrastructure/events/rac_events.h +177 -0
  57. package/android/src/main/include/rac/infrastructure/model_management/rac_model_assignment.h +169 -0
  58. package/android/src/main/include/rac/infrastructure/model_management/rac_model_paths.h +258 -0
  59. package/android/src/main/include/rac/infrastructure/model_management/rac_model_registry.h +357 -0
  60. package/android/src/main/include/rac/infrastructure/model_management/rac_model_strategy.h +374 -0
  61. package/android/src/main/include/rac/infrastructure/model_management/rac_model_types.h +613 -0
  62. package/android/src/main/include/rac/infrastructure/network/rac_api_types.h +335 -0
  63. package/android/src/main/include/rac/infrastructure/network/rac_auth_manager.h +252 -0
  64. package/android/src/main/include/rac/infrastructure/network/rac_dev_config.h +85 -0
  65. package/android/src/main/include/rac/infrastructure/network/rac_endpoints.h +102 -0
  66. package/android/src/main/include/rac/infrastructure/network/rac_environment.h +220 -0
  67. package/android/src/main/include/rac/infrastructure/network/rac_http_client.h +233 -0
  68. package/android/src/main/include/rac/infrastructure/storage/rac_storage_analyzer.h +286 -0
  69. package/android/src/main/include/rac/infrastructure/telemetry/rac_telemetry_manager.h +206 -0
  70. package/android/src/main/include/rac/infrastructure/telemetry/rac_telemetry_types.h +234 -0
  71. package/android/src/main/java/com/margelo/nitro/runanywhere/ArchiveUtility.kt +308 -0
  72. package/android/src/main/java/com/margelo/nitro/runanywhere/HybridRunAnywhereDeviceInfo.kt +229 -0
  73. package/android/src/main/java/com/margelo/nitro/runanywhere/PlatformAdapterBridge.kt +392 -0
  74. package/android/src/main/java/com/margelo/nitro/runanywhere/RunAnywhereCorePackage.kt +28 -0
  75. package/android/src/main/java/com/margelo/nitro/runanywhere/SDKLogger.kt +357 -0
  76. package/android/src/main/java/com/margelo/nitro/runanywhere/SecureStorageManager.kt +147 -0
  77. package/android/src/main/jniLibs/arm64-v8a/libc++_shared.so +0 -0
  78. package/android/src/main/jniLibs/arm64-v8a/libomp.so +0 -0
  79. package/android/src/main/jniLibs/arm64-v8a/librac_commons.so +0 -0
  80. package/android/src/main/jniLibs/arm64-v8a/librunanywhere_jni.so +0 -0
  81. package/cpp/HybridRunAnywhereCore.cpp +2505 -0
  82. package/cpp/HybridRunAnywhereCore.hpp +271 -0
  83. package/cpp/bridges/AuthBridge.cpp +209 -0
  84. package/cpp/bridges/AuthBridge.hpp +157 -0
  85. package/cpp/bridges/DeviceBridge.cpp +257 -0
  86. package/cpp/bridges/DeviceBridge.hpp +155 -0
  87. package/cpp/bridges/DownloadBridge.cpp +299 -0
  88. package/cpp/bridges/DownloadBridge.hpp +197 -0
  89. package/cpp/bridges/EventBridge.cpp +125 -0
  90. package/cpp/bridges/EventBridge.hpp +139 -0
  91. package/cpp/bridges/HTTPBridge.cpp +96 -0
  92. package/cpp/bridges/HTTPBridge.hpp +144 -0
  93. package/cpp/bridges/InitBridge.cpp +1273 -0
  94. package/cpp/bridges/InitBridge.hpp +306 -0
  95. package/cpp/bridges/ModelRegistryBridge.cpp +394 -0
  96. package/cpp/bridges/ModelRegistryBridge.hpp +177 -0
  97. package/cpp/bridges/StorageBridge.cpp +269 -0
  98. package/cpp/bridges/StorageBridge.hpp +172 -0
  99. package/cpp/bridges/TelemetryBridge.cpp +352 -0
  100. package/cpp/bridges/TelemetryBridge.hpp +126 -0
  101. package/ios/.testlocal +0 -0
  102. package/ios/ArchiveUtility.swift +526 -0
  103. package/ios/ArchiveUtilityBridge.m +52 -0
  104. package/ios/AudioDecoder.h +38 -0
  105. package/ios/AudioDecoder.m +162 -0
  106. package/ios/Binaries/RACommons.xcframework/Info.plist +44 -0
  107. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/RACommons.h +67 -0
  108. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_analytics_events.h +610 -0
  109. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_api_types.h +335 -0
  110. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_audio_utils.h +88 -0
  111. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_auth_manager.h +252 -0
  112. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_component_types.h +160 -0
  113. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_core.h +331 -0
  114. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_dev_config.h +85 -0
  115. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_device_manager.h +176 -0
  116. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_download.h +418 -0
  117. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_endpoints.h +102 -0
  118. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_environment.h +220 -0
  119. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_error.h +469 -0
  120. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_events.h +177 -0
  121. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_http_client.h +233 -0
  122. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_lifecycle.h +290 -0
  123. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm.h +17 -0
  124. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_analytics.h +188 -0
  125. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_component.h +228 -0
  126. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_events.h +215 -0
  127. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_llamacpp.h +218 -0
  128. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_metrics.h +402 -0
  129. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_platform.h +204 -0
  130. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_service.h +163 -0
  131. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_structured_output.h +141 -0
  132. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_types.h +384 -0
  133. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_logger.h +416 -0
  134. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_assignment.h +169 -0
  135. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_paths.h +258 -0
  136. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_registry.h +357 -0
  137. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_strategy.h +374 -0
  138. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_types.h +613 -0
  139. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_platform_adapter.h +340 -0
  140. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_sdk_state.h +292 -0
  141. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_storage_analyzer.h +286 -0
  142. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_structured_error.h +594 -0
  143. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt.h +17 -0
  144. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_analytics.h +204 -0
  145. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_component.h +162 -0
  146. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_events.h +62 -0
  147. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_onnx.h +99 -0
  148. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_service.h +154 -0
  149. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_types.h +389 -0
  150. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_whispercpp.h +153 -0
  151. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_telemetry_manager.h +206 -0
  152. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_telemetry_types.h +234 -0
  153. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts.h +17 -0
  154. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_analytics.h +181 -0
  155. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_component.h +158 -0
  156. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_events.h +54 -0
  157. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_onnx.h +71 -0
  158. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_platform.h +197 -0
  159. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_service.h +162 -0
  160. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_types.h +374 -0
  161. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_types.h +264 -0
  162. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad.h +17 -0
  163. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_analytics.h +236 -0
  164. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_component.h +185 -0
  165. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_energy.h +443 -0
  166. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_events.h +76 -0
  167. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_onnx.h +84 -0
  168. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_service.h +167 -0
  169. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_types.h +244 -0
  170. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_voice_agent.h +612 -0
  171. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Info.plist +11 -0
  172. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Modules/module.modulemap +5 -0
  173. package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/RACommons +0 -0
  174. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/RACommons.h +67 -0
  175. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_analytics_events.h +610 -0
  176. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_api_types.h +335 -0
  177. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_audio_utils.h +88 -0
  178. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_auth_manager.h +252 -0
  179. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_component_types.h +160 -0
  180. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_core.h +331 -0
  181. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_dev_config.h +85 -0
  182. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_device_manager.h +176 -0
  183. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_download.h +418 -0
  184. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_endpoints.h +102 -0
  185. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_environment.h +220 -0
  186. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_error.h +469 -0
  187. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_events.h +177 -0
  188. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_http_client.h +233 -0
  189. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_lifecycle.h +290 -0
  190. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm.h +17 -0
  191. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_analytics.h +188 -0
  192. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_component.h +228 -0
  193. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_events.h +215 -0
  194. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_llamacpp.h +218 -0
  195. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_metrics.h +402 -0
  196. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_platform.h +204 -0
  197. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_service.h +163 -0
  198. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_structured_output.h +141 -0
  199. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_types.h +384 -0
  200. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_logger.h +416 -0
  201. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_assignment.h +169 -0
  202. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_paths.h +258 -0
  203. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_registry.h +357 -0
  204. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_strategy.h +374 -0
  205. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_types.h +613 -0
  206. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_platform_adapter.h +340 -0
  207. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_sdk_state.h +292 -0
  208. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_storage_analyzer.h +286 -0
  209. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_structured_error.h +594 -0
  210. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt.h +17 -0
  211. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_analytics.h +204 -0
  212. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_component.h +162 -0
  213. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_events.h +62 -0
  214. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_onnx.h +99 -0
  215. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_service.h +154 -0
  216. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_types.h +389 -0
  217. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_whispercpp.h +153 -0
  218. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_telemetry_manager.h +206 -0
  219. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_telemetry_types.h +234 -0
  220. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts.h +17 -0
  221. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_analytics.h +181 -0
  222. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_component.h +158 -0
  223. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_events.h +54 -0
  224. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_onnx.h +71 -0
  225. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_platform.h +197 -0
  226. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_service.h +162 -0
  227. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_types.h +374 -0
  228. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_types.h +264 -0
  229. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad.h +17 -0
  230. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_analytics.h +236 -0
  231. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_component.h +185 -0
  232. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_energy.h +443 -0
  233. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_events.h +76 -0
  234. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_onnx.h +84 -0
  235. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_service.h +167 -0
  236. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_types.h +244 -0
  237. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_voice_agent.h +612 -0
  238. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Info.plist +11 -0
  239. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Modules/module.modulemap +5 -0
  240. package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/RACommons +0 -0
  241. package/ios/HybridRunAnywhereDeviceInfo.swift +214 -0
  242. package/ios/KeychainManager.swift +116 -0
  243. package/ios/PlatformAdapter.swift +100 -0
  244. package/ios/PlatformAdapterBridge.h +152 -0
  245. package/ios/PlatformAdapterBridge.m +570 -0
  246. package/ios/RNSDKLoggerBridge.h +41 -0
  247. package/ios/RNSDKLoggerBridge.m +66 -0
  248. package/ios/SDKLogger.swift +329 -0
  249. package/nitro.json +20 -0
  250. package/nitrogen/generated/.gitattributes +1 -0
  251. package/nitrogen/generated/android/c++/JHybridRunAnywhereDeviceInfoSpec.cpp +257 -0
  252. package/nitrogen/generated/android/c++/JHybridRunAnywhereDeviceInfoSpec.hpp +77 -0
  253. package/nitrogen/generated/android/kotlin/com/margelo/nitro/runanywhere/HybridRunAnywhereDeviceInfoSpec.kt +106 -0
  254. package/nitrogen/generated/android/kotlin/com/margelo/nitro/runanywhere/runanywherecoreOnLoad.kt +35 -0
  255. package/nitrogen/generated/android/runanywherecore+autolinking.cmake +82 -0
  256. package/nitrogen/generated/android/runanywherecore+autolinking.gradle +27 -0
  257. package/nitrogen/generated/android/runanywherecoreOnLoad.cpp +54 -0
  258. package/nitrogen/generated/android/runanywherecoreOnLoad.hpp +25 -0
  259. package/nitrogen/generated/ios/RunAnywhereCore+autolinking.rb +60 -0
  260. package/nitrogen/generated/ios/RunAnywhereCore-Swift-Cxx-Bridge.cpp +65 -0
  261. package/nitrogen/generated/ios/RunAnywhereCore-Swift-Cxx-Bridge.hpp +197 -0
  262. package/nitrogen/generated/ios/RunAnywhereCore-Swift-Cxx-Umbrella.hpp +45 -0
  263. package/nitrogen/generated/ios/RunAnywhereCoreAutolinking.mm +43 -0
  264. package/nitrogen/generated/ios/RunAnywhereCoreAutolinking.swift +25 -0
  265. package/nitrogen/generated/ios/c++/HybridRunAnywhereDeviceInfoSpecSwift.cpp +11 -0
  266. package/nitrogen/generated/ios/c++/HybridRunAnywhereDeviceInfoSpecSwift.hpp +173 -0
  267. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  268. package/nitrogen/generated/ios/swift/Func_void_double.swift +47 -0
  269. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  270. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  271. package/nitrogen/generated/ios/swift/HybridRunAnywhereDeviceInfoSpec.swift +68 -0
  272. package/nitrogen/generated/ios/swift/HybridRunAnywhereDeviceInfoSpec_cxx.swift +366 -0
  273. package/nitrogen/generated/shared/c++/HybridRunAnywhereCoreSpec.cpp +92 -0
  274. package/nitrogen/generated/shared/c++/HybridRunAnywhereCoreSpec.hpp +138 -0
  275. package/nitrogen/generated/shared/c++/HybridRunAnywhereDeviceInfoSpec.cpp +33 -0
  276. package/nitrogen/generated/shared/c++/HybridRunAnywhereDeviceInfoSpec.hpp +75 -0
  277. package/package.json +76 -0
  278. package/react-native.config.js +14 -0
  279. package/src/Features/VoiceSession/AudioCaptureManager.ts +286 -0
  280. package/src/Features/VoiceSession/AudioPlaybackManager.ts +300 -0
  281. package/src/Features/VoiceSession/VoiceSessionHandle.ts +530 -0
  282. package/src/Features/VoiceSession/index.ts +20 -0
  283. package/src/Features/index.ts +7 -0
  284. package/src/Foundation/Constants/SDKConstants.ts +47 -0
  285. package/src/Foundation/Constants/index.ts +8 -0
  286. package/src/Foundation/DependencyInjection/ServiceContainer.ts +154 -0
  287. package/src/Foundation/DependencyInjection/ServiceRegistry.ts +51 -0
  288. package/src/Foundation/DependencyInjection/index.ts +6 -0
  289. package/src/Foundation/ErrorTypes/ErrorCategory.ts +184 -0
  290. package/src/Foundation/ErrorTypes/ErrorCodes.ts +151 -0
  291. package/src/Foundation/ErrorTypes/ErrorContext.ts +201 -0
  292. package/src/Foundation/ErrorTypes/SDKError.ts +507 -0
  293. package/src/Foundation/ErrorTypes/index.ts +57 -0
  294. package/src/Foundation/Initialization/InitializationPhase.ts +85 -0
  295. package/src/Foundation/Initialization/InitializationState.ts +168 -0
  296. package/src/Foundation/Initialization/index.ts +26 -0
  297. package/src/Foundation/Logging/Destinations/NativeLogBridge.ts +147 -0
  298. package/src/Foundation/Logging/Destinations/SentryDestination.ts +209 -0
  299. package/src/Foundation/Logging/Logger/SDKLogger.ts +232 -0
  300. package/src/Foundation/Logging/Models/LogLevel.ts +36 -0
  301. package/src/Foundation/Logging/Models/LoggingConfiguration.ts +117 -0
  302. package/src/Foundation/Logging/Services/LoggingManager.ts +407 -0
  303. package/src/Foundation/Logging/index.ts +59 -0
  304. package/src/Foundation/Security/DeviceIdentity.ts +92 -0
  305. package/src/Foundation/Security/SecureStorageError.ts +132 -0
  306. package/src/Foundation/Security/SecureStorageKeys.ts +35 -0
  307. package/src/Foundation/Security/SecureStorageService.ts +449 -0
  308. package/src/Foundation/Security/index.ts +17 -0
  309. package/src/Foundation/index.ts +26 -0
  310. package/src/Infrastructure/Events/EventPublisher.ts +165 -0
  311. package/src/Infrastructure/Events/SDKEvent.ts +214 -0
  312. package/src/Infrastructure/Events/index.ts +15 -0
  313. package/src/Infrastructure/index.ts +9 -0
  314. package/src/Public/Events/EventBus.ts +488 -0
  315. package/src/Public/Events/index.ts +8 -0
  316. package/src/Public/Extensions/RunAnywhere+Logging.ts +51 -0
  317. package/src/Public/Extensions/RunAnywhere+Models.ts +392 -0
  318. package/src/Public/Extensions/RunAnywhere+STT.ts +424 -0
  319. package/src/Public/Extensions/RunAnywhere+Storage.ts +151 -0
  320. package/src/Public/Extensions/RunAnywhere+StructuredOutput.ts +316 -0
  321. package/src/Public/Extensions/RunAnywhere+TTS.ts +430 -0
  322. package/src/Public/Extensions/RunAnywhere+TextGeneration.ts +320 -0
  323. package/src/Public/Extensions/RunAnywhere+VAD.ts +359 -0
  324. package/src/Public/Extensions/RunAnywhere+VoiceAgent.ts +225 -0
  325. package/src/Public/Extensions/RunAnywhere+VoiceSession.ts +155 -0
  326. package/src/Public/Extensions/index.ts +126 -0
  327. package/src/Public/RunAnywhere.ts +695 -0
  328. package/src/index.ts +238 -0
  329. package/src/native/NativeRunAnywhereCore.ts +291 -0
  330. package/src/native/NativeRunAnywhereModule.ts +32 -0
  331. package/src/native/index.ts +21 -0
  332. package/src/services/DownloadService.ts +282 -0
  333. package/src/services/FileSystem.ts +810 -0
  334. package/src/services/ModelRegistry.ts +246 -0
  335. package/src/services/Network/APIEndpoints.ts +84 -0
  336. package/src/services/Network/HTTPService.ts +479 -0
  337. package/src/services/Network/NetworkConfiguration.ts +130 -0
  338. package/src/services/Network/TelemetryService.ts +318 -0
  339. package/src/services/Network/index.ts +29 -0
  340. package/src/services/SystemTTSService.ts +130 -0
  341. package/src/services/index.ts +66 -0
  342. package/src/specs/RunAnywhereCore.nitro.ts +627 -0
  343. package/src/specs/RunAnywhereDeviceInfo.nitro.ts +73 -0
  344. package/src/types/LLMTypes.ts +127 -0
  345. package/src/types/STTTypes.ts +124 -0
  346. package/src/types/StructuredOutputTypes.ts +156 -0
  347. package/src/types/TTSTypes.ts +126 -0
  348. package/src/types/VADTypes.ts +70 -0
  349. package/src/types/VoiceAgentTypes.ts +182 -0
  350. package/src/types/enums.ts +258 -0
  351. package/src/types/events.ts +337 -0
  352. package/src/types/external.d.ts +142 -0
  353. package/src/types/index.ts +146 -0
  354. package/src/types/models.ts +579 -0
@@ -0,0 +1,695 @@
1
+ /**
2
+ * RunAnywhere React Native SDK - Main Entry Point
3
+ *
4
+ * Thin wrapper over native commons.
5
+ * All business logic is in native C++ (runanywhere-commons).
6
+ *
7
+ * Reference: sdk/runanywhere-swift/Sources/RunAnywhere/Public/RunAnywhere.swift
8
+ */
9
+
10
+ import { Platform } from 'react-native';
11
+ import { EventBus } from './Events';
12
+ import { requireNativeModule, isNativeModuleAvailable } from '../native';
13
+ import { SDKEnvironment } from '../types';
14
+ import { ModelRegistry } from '../services/ModelRegistry';
15
+ import { ServiceContainer } from '../Foundation/DependencyInjection/ServiceContainer';
16
+ import { SDKLogger } from '../Foundation/Logging/Logger/SDKLogger';
17
+ import { SDKConstants } from '../Foundation/Constants';
18
+ import { FileSystem } from '../services/FileSystem';
19
+ import {
20
+ HTTPService,
21
+ SDKEnvironment as NetworkSDKEnvironment,
22
+ TelemetryService,
23
+ } from '../services/Network';
24
+
25
+ import type {
26
+ InitializationState,
27
+ SDKInitParams,
28
+ } from '../Foundation/Initialization';
29
+ import {
30
+ createInitialState,
31
+ markCoreInitialized,
32
+ markServicesInitialized,
33
+ markInitializationFailed,
34
+ resetState,
35
+ } from '../Foundation/Initialization';
36
+ import type { ModelInfo, SDKInitOptions } from '../types';
37
+
38
+ // Import extensions
39
+ import * as TextGeneration from './Extensions/RunAnywhere+TextGeneration';
40
+ import * as STT from './Extensions/RunAnywhere+STT';
41
+ import * as TTS from './Extensions/RunAnywhere+TTS';
42
+ import * as VAD from './Extensions/RunAnywhere+VAD';
43
+ import * as Storage from './Extensions/RunAnywhere+Storage';
44
+ import * as Models from './Extensions/RunAnywhere+Models';
45
+ import * as Logging from './Extensions/RunAnywhere+Logging';
46
+ import * as VoiceAgent from './Extensions/RunAnywhere+VoiceAgent';
47
+ import * as VoiceSession from './Extensions/RunAnywhere+VoiceSession';
48
+ import * as StructuredOutput from './Extensions/RunAnywhere+StructuredOutput';
49
+
50
+ const logger = new SDKLogger('RunAnywhere');
51
+
52
+ // ============================================================================
53
+ // Internal State
54
+ // ============================================================================
55
+
56
+ let initState: InitializationState = createInitialState();
57
+ let cachedDeviceId: string = '';
58
+
59
+ // ============================================================================
60
+ // Conversation Helper
61
+ // ============================================================================
62
+
63
+ /**
64
+ * Simple conversation manager for multi-turn conversations
65
+ */
66
+ export class Conversation {
67
+ private messages: string[] = [];
68
+
69
+ async send(message: string): Promise<string> {
70
+ this.messages.push(`User: ${message}`);
71
+ const contextPrompt = this.messages.join('\n') + '\nAssistant:';
72
+ const result = await RunAnywhere.generate(contextPrompt);
73
+ this.messages.push(`Assistant: ${result.text}`);
74
+ return result.text;
75
+ }
76
+
77
+ get history(): string[] {
78
+ return [...this.messages];
79
+ }
80
+
81
+ clear(): void {
82
+ this.messages = [];
83
+ }
84
+ }
85
+
86
+ // ============================================================================
87
+ // RunAnywhere SDK
88
+ // ============================================================================
89
+
90
+ /**
91
+ * The RunAnywhere SDK for React Native
92
+ */
93
+ export const RunAnywhere = {
94
+ // ============================================================================
95
+ // Event Access
96
+ // ============================================================================
97
+
98
+ events: EventBus,
99
+
100
+ // ============================================================================
101
+ // SDK State
102
+ // ============================================================================
103
+
104
+ get isSDKInitialized(): boolean {
105
+ return initState.isCoreInitialized;
106
+ },
107
+
108
+ get areServicesReady(): boolean {
109
+ return initState.hasCompletedServicesInit;
110
+ },
111
+
112
+ get currentEnvironment(): SDKEnvironment | null {
113
+ return initState.environment;
114
+ },
115
+
116
+ get version(): string {
117
+ return SDKConstants.version;
118
+ },
119
+
120
+ // ============================================================================
121
+ // SDK Initialization
122
+ // ============================================================================
123
+
124
+ async initialize(options: SDKInitOptions): Promise<void> {
125
+ const environment = options.environment ?? SDKEnvironment.Production;
126
+
127
+ // Fail fast: API key is required for production/staging environments
128
+ // Development mode uses C++ dev config (Supabase credentials) instead
129
+ if (environment !== SDKEnvironment.Development && !options.apiKey) {
130
+ const envName = environment === SDKEnvironment.Staging ? 'staging' : 'production';
131
+ throw new Error(
132
+ `API key is required for ${envName} environment. ` +
133
+ `Pass apiKey in initialize() options or use SDKEnvironment.Development for local testing.`
134
+ );
135
+ }
136
+
137
+ const initParams: SDKInitParams = {
138
+ apiKey: options.apiKey,
139
+ baseURL: options.baseURL,
140
+ environment,
141
+ };
142
+
143
+ EventBus.publish('Initialization', { type: 'started' });
144
+ logger.info('SDK initialization starting...');
145
+
146
+ if (!isNativeModuleAvailable()) {
147
+ logger.warning('Native module not available');
148
+ initState = markInitializationFailed(
149
+ initState,
150
+ new Error('Native module not available')
151
+ );
152
+ throw new Error('Native module not available');
153
+ }
154
+
155
+ const native = requireNativeModule();
156
+
157
+ try {
158
+ // Get documents path for model storage (matches Swift SDK's base directory setup)
159
+ // Uses react-native-fs for the documents directory
160
+ const documentsPath = FileSystem.isAvailable()
161
+ ? FileSystem.getDocumentsDirectory()
162
+ : '';
163
+
164
+ // Configure network layer BEFORE native initialization
165
+ // This ensures HTTP is ready when C++ callbacks need it
166
+ const envString = environment === SDKEnvironment.Development ? 'development'
167
+ : environment === SDKEnvironment.Staging ? 'staging'
168
+ : 'production';
169
+
170
+ // Map environment string to SDKEnvironment enum for HTTPService
171
+ const networkEnv = environment === SDKEnvironment.Development
172
+ ? NetworkSDKEnvironment.Development
173
+ : environment === SDKEnvironment.Staging
174
+ ? NetworkSDKEnvironment.Staging
175
+ : NetworkSDKEnvironment.Production;
176
+
177
+ // Configure HTTPService with network settings
178
+ HTTPService.shared.configure({
179
+ baseURL: options.baseURL || 'https://api.runanywhere.ai',
180
+ apiKey: options.apiKey ?? '',
181
+ environment: networkEnv,
182
+ });
183
+
184
+ // Configure dev mode if Supabase credentials provided
185
+ if (options.supabaseURL && options.supabaseKey) {
186
+ HTTPService.shared.configureDev({
187
+ supabaseURL: options.supabaseURL,
188
+ supabaseKey: options.supabaseKey,
189
+ });
190
+ }
191
+
192
+ // For development mode, Supabase credentials will be passed to native
193
+ if (environment === SDKEnvironment.Development && options.supabaseURL) {
194
+ logger.debug('Development mode - Supabase config provided');
195
+ }
196
+
197
+ // Initialize with config
198
+ // Note: Backend registration (llamacpp, onnx) is done by their respective packages
199
+ const configJson = JSON.stringify({
200
+ apiKey: options.apiKey,
201
+ baseURL: options.baseURL,
202
+ environment: envString,
203
+ documentsPath: documentsPath, // Required for model paths (mirrors Swift SDK)
204
+ sdkVersion: SDKConstants.version, // Centralized version for C++ layer
205
+ supabaseURL: options.supabaseURL, // For development mode
206
+ supabaseKey: options.supabaseKey, // For development mode
207
+ });
208
+
209
+ await native.initialize(configJson);
210
+
211
+ // Initialize model registry
212
+ await ModelRegistry.initialize();
213
+
214
+ // Cache device ID early (uses secure storage / Keychain)
215
+ try {
216
+ cachedDeviceId = await native.getPersistentDeviceUUID();
217
+ logger.debug(`Device ID cached: ${cachedDeviceId.substring(0, 8)}...`);
218
+ } catch (e) {
219
+ logger.warning('Failed to get persistent device UUID');
220
+ }
221
+
222
+ // Initialize telemetry with device ID
223
+ TelemetryService.shared.configure(cachedDeviceId, networkEnv);
224
+ TelemetryService.shared.trackSDKInit(envString, true);
225
+
226
+ // For production/staging mode, authenticate with backend to get JWT tokens
227
+ // This matches Swift SDK's CppBridge.Auth.authenticate(apiKey:) in setupHTTP()
228
+ if (environment !== SDKEnvironment.Development && options.apiKey) {
229
+ try {
230
+ logger.info('Authenticating with backend (production/staging mode)...');
231
+ const authenticated = await this._authenticateWithBackend(
232
+ options.apiKey,
233
+ options.baseURL || 'https://api.runanywhere.ai',
234
+ cachedDeviceId
235
+ );
236
+ if (authenticated) {
237
+ logger.info('Authentication successful - JWT tokens obtained');
238
+ } else {
239
+ logger.warning('Authentication failed - API requests may fail');
240
+ }
241
+ } catch (authErr) {
242
+ logger.warning(`Authentication failed (non-fatal): ${authErr instanceof Error ? authErr.message : String(authErr)}`);
243
+ }
244
+ }
245
+
246
+ // Trigger device registration (non-blocking, best-effort)
247
+ // This matches Swift SDK's CppBridge.Device.registerIfNeeded(environment:)
248
+ // Uses native C++ → platform HTTP (exactly like Swift)
249
+ this._registerDeviceIfNeeded(environment, options.supabaseKey).catch(err => {
250
+ logger.warning(`Device registration failed (non-fatal): ${err.message}`);
251
+ });
252
+
253
+ ServiceContainer.shared.markInitialized();
254
+ initState = markCoreInitialized(initState, initParams, 'core');
255
+ initState = markServicesInitialized(initState);
256
+
257
+ logger.info('SDK initialized successfully');
258
+ EventBus.publish('Initialization', { type: 'completed' });
259
+ } catch (error) {
260
+ const msg = error instanceof Error ? error.message : String(error);
261
+ logger.error(`SDK initialization failed: ${msg}`);
262
+ initState = markInitializationFailed(initState, error as Error);
263
+ EventBus.publish('Initialization', { type: 'failed', error: msg });
264
+ throw error;
265
+ }
266
+ },
267
+
268
+ /**
269
+ * Register device with backend if not already registered
270
+ * Uses native C++ DeviceBridge + platform HTTP (URLSession/OkHttp)
271
+ * Exactly matches Swift SDK's CppBridge.Device.registerIfNeeded(environment:)
272
+ * @internal
273
+ */
274
+ /**
275
+ * Authenticate with backend to get JWT access/refresh tokens
276
+ * This matches Swift SDK's CppBridge.Auth.authenticate(apiKey:)
277
+ * @internal
278
+ */
279
+ async _authenticateWithBackend(
280
+ apiKey: string,
281
+ baseURL: string,
282
+ deviceId: string
283
+ ): Promise<boolean> {
284
+ try {
285
+ const endpoint = '/api/v1/auth/sdk/authenticate';
286
+ const fullUrl = baseURL.replace(/\/$/, '') + endpoint;
287
+
288
+ // Use actual platform (ios/android) as backend only accepts these values
289
+ // This matches how Swift sends 'ios' and Kotlin sends 'android'
290
+ const platform = Platform.OS === 'ios' ? 'ios' : 'android';
291
+
292
+ const requestBody = JSON.stringify({
293
+ api_key: apiKey,
294
+ device_id: deviceId,
295
+ platform: platform,
296
+ sdk_version: SDKConstants.version,
297
+ });
298
+
299
+ logger.debug(`Auth request to: ${fullUrl}`);
300
+
301
+ const response = await fetch(fullUrl, {
302
+ method: 'POST',
303
+ headers: {
304
+ 'Content-Type': 'application/json',
305
+ 'Accept': 'application/json',
306
+ },
307
+ body: requestBody,
308
+ });
309
+
310
+ if (!response.ok) {
311
+ const errorText = await response.text();
312
+ logger.error(`Authentication failed: HTTP ${response.status} - ${errorText}`);
313
+ return false;
314
+ }
315
+
316
+ const authResponse = await response.json() as {
317
+ access_token: string;
318
+ refresh_token: string;
319
+ expires_in: number;
320
+ device_id: string;
321
+ organization_id: string;
322
+ user_id?: string;
323
+ token_type: string;
324
+ };
325
+
326
+ // Store tokens in HTTPService for subsequent requests
327
+ HTTPService.shared.setToken(authResponse.access_token);
328
+
329
+ // Store tokens in C++ AuthBridge for native HTTP requests (telemetry, device registration)
330
+ try {
331
+ const native = requireNativeModule();
332
+ if (native && typeof native.setAuthTokens === 'function') {
333
+ await native.setAuthTokens(JSON.stringify(authResponse));
334
+ logger.debug('Auth tokens set in C++ AuthBridge');
335
+ } else {
336
+ logger.warning('setAuthTokens not available on native module - tokens stored in JS only');
337
+ }
338
+ } catch (nativeErr) {
339
+ logger.warning(`Failed to set auth tokens in native: ${nativeErr}`);
340
+ // Continue - tokens are still stored in HTTPService
341
+ }
342
+
343
+ // Store tokens in secure storage for persistence
344
+ try {
345
+ const { SecureStorageService } = await import('../Foundation/Security/SecureStorageService');
346
+ await SecureStorageService.storeAuthTokens(
347
+ authResponse.access_token,
348
+ authResponse.refresh_token,
349
+ authResponse.expires_in
350
+ );
351
+ } catch (storageErr) {
352
+ logger.warning(`Failed to persist tokens: ${storageErr}`);
353
+ // Continue - tokens are still in memory
354
+ }
355
+
356
+ logger.info(`Authentication successful! Token expires in ${authResponse.expires_in}s`);
357
+ return true;
358
+ } catch (error) {
359
+ const msg = error instanceof Error ? error.message : String(error);
360
+ logger.error(`Authentication error: ${msg}`);
361
+ return false;
362
+ }
363
+ },
364
+
365
+ async _registerDeviceIfNeeded(
366
+ environment: SDKEnvironment,
367
+ supabaseKey?: string
368
+ ): Promise<void> {
369
+ const envString = environment === SDKEnvironment.Development ? 'development'
370
+ : environment === SDKEnvironment.Staging ? 'staging'
371
+ : 'production';
372
+
373
+ try {
374
+ const native = requireNativeModule();
375
+
376
+ // Call native registerDevice which goes through:
377
+ // JS → C++ DeviceBridge → rac_device_manager_register_if_needed → http_post callback → native HTTP
378
+ // This exactly mirrors Swift's flow!
379
+ const success = await native.registerDevice(JSON.stringify({
380
+ environment: envString,
381
+ supabaseKey: supabaseKey || '',
382
+ buildToken: '', // TODO: Add build token support if needed
383
+ }));
384
+
385
+ if (success) {
386
+ logger.info('Device registered successfully via native');
387
+ } else {
388
+ logger.warning('Device registration returned false');
389
+ }
390
+ } catch (error) {
391
+ const msg = error instanceof Error ? error.message : String(error);
392
+ logger.warning(`Device registration error: ${msg}`);
393
+ }
394
+ },
395
+
396
+ async destroy(): Promise<void> {
397
+ // Telemetry is handled by native layer - no JS-level shutdown needed
398
+ TelemetryService.shared.setEnabled(false);
399
+
400
+ if (isNativeModuleAvailable()) {
401
+ const native = requireNativeModule();
402
+ await native.destroy();
403
+ }
404
+ ServiceContainer.shared.reset();
405
+ initState = resetState();
406
+ },
407
+
408
+ async reset(): Promise<void> {
409
+ await this.destroy();
410
+ },
411
+
412
+ async isInitialized(): Promise<boolean> {
413
+ if (!isNativeModuleAvailable()) return false;
414
+ const native = requireNativeModule();
415
+ return native.isInitialized();
416
+ },
417
+
418
+ // ============================================================================
419
+ // Authentication Info (Production/Staging only)
420
+ // Matches Swift SDK: RunAnywhere.getUserId(), getOrganizationId(), etc.
421
+ // ============================================================================
422
+
423
+ /**
424
+ * Get current user ID from authentication
425
+ * @returns User ID if authenticated, empty string otherwise
426
+ */
427
+ async getUserId(): Promise<string> {
428
+ if (!isNativeModuleAvailable()) return '';
429
+ const native = requireNativeModule();
430
+ const userId = await native.getUserId();
431
+ return userId ?? '';
432
+ },
433
+
434
+ /**
435
+ * Get current organization ID from authentication
436
+ * @returns Organization ID if authenticated, empty string otherwise
437
+ */
438
+ async getOrganizationId(): Promise<string> {
439
+ if (!isNativeModuleAvailable()) return '';
440
+ const native = requireNativeModule();
441
+ const orgId = await native.getOrganizationId();
442
+ return orgId ?? '';
443
+ },
444
+
445
+ /**
446
+ * Check if currently authenticated
447
+ * @returns true if authenticated with valid token
448
+ */
449
+ async isAuthenticated(): Promise<boolean> {
450
+ if (!isNativeModuleAvailable()) return false;
451
+ const native = requireNativeModule();
452
+ return native.isAuthenticated();
453
+ },
454
+
455
+ /**
456
+ * Check if device is registered with backend
457
+ */
458
+ async isDeviceRegistered(): Promise<boolean> {
459
+ if (!isNativeModuleAvailable()) return false;
460
+ const native = requireNativeModule();
461
+ return native.isDeviceRegistered();
462
+ },
463
+
464
+ /**
465
+ * Clear device registration flag (for testing)
466
+ * Forces re-registration on next SDK init
467
+ */
468
+ async clearDeviceRegistration(): Promise<boolean> {
469
+ if (!isNativeModuleAvailable()) return false;
470
+ const native = requireNativeModule();
471
+ return native.clearDeviceRegistration();
472
+ },
473
+
474
+ /**
475
+ * Get device ID (Keychain-persisted, survives reinstalls)
476
+ * Note: This is async because it uses secure storage
477
+ */
478
+ get deviceId(): string {
479
+ // Return cached value if available (set during init)
480
+ return cachedDeviceId;
481
+ },
482
+
483
+ /**
484
+ * Get device ID asynchronously (Keychain-persisted, survives reinstalls)
485
+ */
486
+ async getDeviceId(): Promise<string> {
487
+ if (cachedDeviceId) {
488
+ return cachedDeviceId;
489
+ }
490
+ try {
491
+ const native = requireNativeModule();
492
+ const uuid = await native.getPersistentDeviceUUID();
493
+ cachedDeviceId = uuid;
494
+ return uuid;
495
+ } catch {
496
+ return '';
497
+ }
498
+ },
499
+
500
+ // ============================================================================
501
+ // Logging (Delegated to Extension)
502
+ // ============================================================================
503
+
504
+ setLogLevel: Logging.setLogLevel,
505
+
506
+ // ============================================================================
507
+ // Text Generation - LLM (Delegated to Extension)
508
+ // ============================================================================
509
+
510
+ loadModel: TextGeneration.loadModel,
511
+ isModelLoaded: TextGeneration.isModelLoaded,
512
+ unloadModel: TextGeneration.unloadModel,
513
+ chat: TextGeneration.chat,
514
+ generate: TextGeneration.generate,
515
+ generateStream: TextGeneration.generateStream,
516
+ cancelGeneration: TextGeneration.cancelGeneration,
517
+
518
+ // ============================================================================
519
+ // Speech-to-Text (Delegated to Extension)
520
+ // ============================================================================
521
+
522
+ loadSTTModel: STT.loadSTTModel,
523
+ isSTTModelLoaded: STT.isSTTModelLoaded,
524
+ unloadSTTModel: STT.unloadSTTModel,
525
+ transcribe: STT.transcribe,
526
+ transcribeSimple: STT.transcribeSimple,
527
+ transcribeBuffer: STT.transcribeBuffer,
528
+ transcribeStream: STT.transcribeStream,
529
+ transcribeFile: STT.transcribeFile,
530
+
531
+ // ============================================================================
532
+ // Text-to-Speech (Delegated to Extension)
533
+ // ============================================================================
534
+
535
+ loadTTSModel: TTS.loadTTSModel,
536
+ loadTTSVoice: TTS.loadTTSVoice,
537
+ unloadTTSVoice: TTS.unloadTTSVoice,
538
+ isTTSModelLoaded: TTS.isTTSModelLoaded,
539
+ isTTSVoiceLoaded: TTS.isTTSVoiceLoaded,
540
+ unloadTTSModel: TTS.unloadTTSModel,
541
+ synthesize: TTS.synthesize,
542
+ synthesizeStream: TTS.synthesizeStream,
543
+ speak: TTS.speak,
544
+ isSpeaking: TTS.isSpeaking,
545
+ stopSpeaking: TTS.stopSpeaking,
546
+ availableTTSVoices: TTS.availableTTSVoices,
547
+ stopSynthesis: TTS.stopSynthesis,
548
+
549
+ // ============================================================================
550
+ // Voice Activity Detection (Delegated to Extension)
551
+ // ============================================================================
552
+
553
+ initializeVAD: VAD.initializeVAD,
554
+ isVADReady: VAD.isVADReady,
555
+ loadVADModel: VAD.loadVADModel,
556
+ isVADModelLoaded: VAD.isVADModelLoaded,
557
+ unloadVADModel: VAD.unloadVADModel,
558
+ detectSpeech: VAD.detectSpeech,
559
+ processVAD: VAD.processVAD,
560
+ startVAD: VAD.startVAD,
561
+ stopVAD: VAD.stopVAD,
562
+ resetVAD: VAD.resetVAD,
563
+ setVADSpeechActivityCallback: VAD.setVADSpeechActivityCallback,
564
+ setVADAudioBufferCallback: VAD.setVADAudioBufferCallback,
565
+ cleanupVAD: VAD.cleanupVAD,
566
+ getVADState: VAD.getVADState,
567
+
568
+ // ============================================================================
569
+ // Voice Agent (Delegated to Extension)
570
+ // ============================================================================
571
+
572
+ initializeVoiceAgent: VoiceAgent.initializeVoiceAgent,
573
+ initializeVoiceAgentWithLoadedModels: VoiceAgent.initializeVoiceAgentWithLoadedModels,
574
+ isVoiceAgentReady: VoiceAgent.isVoiceAgentReady,
575
+ getVoiceAgentComponentStates: VoiceAgent.getVoiceAgentComponentStates,
576
+ areAllVoiceComponentsReady: VoiceAgent.areAllVoiceComponentsReady,
577
+ processVoiceTurn: VoiceAgent.processVoiceTurn,
578
+ voiceAgentTranscribe: VoiceAgent.voiceAgentTranscribe,
579
+ voiceAgentGenerateResponse: VoiceAgent.voiceAgentGenerateResponse,
580
+ voiceAgentSynthesizeSpeech: VoiceAgent.voiceAgentSynthesizeSpeech,
581
+ cleanupVoiceAgent: VoiceAgent.cleanupVoiceAgent,
582
+
583
+ // ============================================================================
584
+ // Voice Session (Delegated to Extension)
585
+ // ============================================================================
586
+
587
+ startVoiceSession: VoiceSession.startVoiceSession,
588
+ startVoiceSessionWithCallback: VoiceSession.startVoiceSessionWithCallback,
589
+ createVoiceSession: VoiceSession.createVoiceSession,
590
+
591
+ // ============================================================================
592
+ // Structured Output (Delegated to Extension)
593
+ // ============================================================================
594
+
595
+ generateStructured: StructuredOutput.generateStructured,
596
+ generateStructuredStream: StructuredOutput.generateStructuredStream,
597
+ extractEntities: StructuredOutput.extractEntities,
598
+ classify: StructuredOutput.classify,
599
+
600
+ // ============================================================================
601
+ // Storage Management (Delegated to Extension)
602
+ // ============================================================================
603
+
604
+ getStorageInfo: Storage.getStorageInfo,
605
+ clearCache: Storage.clearCache,
606
+
607
+ // ============================================================================
608
+ // Model Registry (Delegated to Extension)
609
+ // ============================================================================
610
+
611
+ getAvailableModels: Models.getAvailableModels,
612
+ getModelInfo: Models.getModelInfo,
613
+ isModelDownloaded: Models.isModelDownloaded,
614
+ downloadModel: Models.downloadModel,
615
+ cancelDownload: Models.cancelDownload,
616
+ deleteModel: Models.deleteModel,
617
+
618
+ // ============================================================================
619
+ // Utilities
620
+ // ============================================================================
621
+
622
+ async getLastError(): Promise<string> {
623
+ if (!isNativeModuleAvailable()) return '';
624
+ const native = requireNativeModule();
625
+ return native.getLastError();
626
+ },
627
+
628
+ async getBackendInfo(): Promise<Record<string, unknown>> {
629
+ if (!isNativeModuleAvailable()) return {};
630
+ const native = requireNativeModule();
631
+ const infoJson = await native.getBackendInfo();
632
+ try {
633
+ return JSON.parse(infoJson);
634
+ } catch {
635
+ return {};
636
+ }
637
+ },
638
+
639
+ /**
640
+ * Get SDK version
641
+ * @returns Version string
642
+ */
643
+ async getVersion(): Promise<string> {
644
+ // Return centralized SDK version constant
645
+ return SDKConstants.version;
646
+ },
647
+
648
+ /**
649
+ * Get available capabilities
650
+ * @returns Array of capability strings (llm, stt, tts, vad)
651
+ */
652
+ async getCapabilities(): Promise<string[]> {
653
+ const caps: string[] = ['core'];
654
+ // Check which backends are available
655
+ try {
656
+ if (await this.isModelLoaded()) caps.push('llm');
657
+ if (await this.isSTTModelLoaded()) caps.push('stt');
658
+ if (await this.isTTSModelLoaded()) caps.push('tts');
659
+ if (await this.isVADModelLoaded()) caps.push('vad');
660
+ } catch {
661
+ // Ignore errors - these methods may not be available
662
+ }
663
+ return caps;
664
+ },
665
+
666
+ /**
667
+ * Get downloaded models
668
+ * @returns Array of model IDs
669
+ */
670
+ getDownloadedModels: Models.getDownloadedModels,
671
+
672
+ /**
673
+ * Clean temporary files
674
+ */
675
+ async cleanTempFiles(): Promise<boolean> {
676
+ // Delegate to storage clearCache for now
677
+ await this.clearCache();
678
+ return true;
679
+ },
680
+
681
+ // ============================================================================
682
+ // Factory Methods
683
+ // ============================================================================
684
+
685
+ conversation(): Conversation {
686
+ return new Conversation();
687
+ },
688
+ };
689
+
690
+ // ============================================================================
691
+ // Type Exports
692
+ // ============================================================================
693
+
694
+ export type { ModelInfo } from '../types/models';
695
+ export type { DownloadProgress } from '../services/DownloadService';