@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,479 @@
1
+ /**
2
+ * HTTPService.ts
3
+ *
4
+ * Core HTTP service implementation using fetch (built-in to React Native).
5
+ * All network logic is centralized here.
6
+ *
7
+ * This is analogous to Swift's URLSession - using the platform's native HTTP client.
8
+ *
9
+ * Reference: sdk/runanywhere-swift/Sources/RunAnywhere/Data/Network/Services/HTTPService.swift
10
+ */
11
+
12
+ // React Native global types
13
+ declare const fetch: (url: string, init?: RequestInit) => Promise<Response>;
14
+ declare const setTimeout: (callback: () => void, ms: number) => number;
15
+ declare const clearTimeout: (id: number) => void;
16
+ declare const AbortController: {
17
+ new (): {
18
+ signal: AbortSignal;
19
+ abort(): void;
20
+ };
21
+ };
22
+
23
+ interface RequestInit {
24
+ method?: string;
25
+ headers?: Record<string, string>;
26
+ body?: string;
27
+ signal?: AbortSignal;
28
+ }
29
+
30
+ interface AbortSignal {
31
+ aborted: boolean;
32
+ }
33
+
34
+ interface Response {
35
+ ok: boolean;
36
+ status: number;
37
+ statusText: string;
38
+ text(): Promise<string>;
39
+ json(): Promise<unknown>;
40
+ }
41
+
42
+ import { SDKLogger } from '../../Foundation/Logging/Logger/SDKLogger';
43
+ import { SDKError } from '../../Foundation/ErrorTypes';
44
+ import { ErrorCode } from '../../Foundation/ErrorTypes/ErrorCodes';
45
+ import { SDKConstants } from '../../Foundation/Constants';
46
+
47
+ const logger = new SDKLogger('HTTPService');
48
+
49
+ // SDK Constants - use centralized constants where available
50
+ const SDK_CLIENT = 'RunAnywhereSDK';
51
+ const SDK_PLATFORM = 'react-native';
52
+ const DEFAULT_TIMEOUT_MS = 30000;
53
+
54
+ /**
55
+ * SDK Environment enum matching Swift/C++ SDKEnvironment
56
+ * Uses string values to match types/enums.ts
57
+ */
58
+ export enum SDKEnvironment {
59
+ Development = 'development',
60
+ Staging = 'staging',
61
+ Production = 'production',
62
+ }
63
+
64
+ /**
65
+ * HTTP Service Configuration
66
+ */
67
+ export interface HTTPServiceConfig {
68
+ /** Base URL for API requests */
69
+ baseURL: string;
70
+ /** API key for authentication */
71
+ apiKey: string;
72
+ /** SDK environment */
73
+ environment: SDKEnvironment;
74
+ /** Request timeout in milliseconds */
75
+ timeoutMs?: number;
76
+ }
77
+
78
+ /**
79
+ * Development (Supabase) Configuration
80
+ */
81
+ export interface DevModeConfig {
82
+ /** Supabase project URL */
83
+ supabaseURL: string;
84
+ /** Supabase anon key */
85
+ supabaseKey: string;
86
+ }
87
+
88
+ /**
89
+ * HTTP Service - Core network implementation using fetch
90
+ *
91
+ * Centralized HTTP transport layer modeled after Swift's URLSession approach.
92
+ * Uses fetch - the built-in HTTP client in React Native.
93
+ *
94
+ * Features:
95
+ * - Environment-aware routing (Supabase for dev, Railway for prod)
96
+ * - Automatic header management
97
+ * - Proper timeout and error handling
98
+ * - Device registration with Supabase UPSERT support
99
+ *
100
+ * Usage:
101
+ * ```typescript
102
+ * // Configure (called during SDK init)
103
+ * HTTPService.shared.configure({
104
+ * baseURL: 'https://api.runanywhere.ai',
105
+ * apiKey: 'your-api-key',
106
+ * environment: SDKEnvironment.Production,
107
+ * });
108
+ *
109
+ * // Make requests
110
+ * const response = await HTTPService.shared.post('/api/v1/devices/register', deviceData);
111
+ * ```
112
+ */
113
+ export class HTTPService {
114
+ // ============================================================================
115
+ // Singleton
116
+ // ============================================================================
117
+
118
+ private static _instance: HTTPService | null = null;
119
+
120
+ /**
121
+ * Get shared HTTPService instance
122
+ */
123
+ static get shared(): HTTPService {
124
+ if (!HTTPService._instance) {
125
+ HTTPService._instance = new HTTPService();
126
+ }
127
+ return HTTPService._instance;
128
+ }
129
+
130
+ // ============================================================================
131
+ // Configuration
132
+ // ============================================================================
133
+
134
+ private baseURL: string = '';
135
+ private apiKey: string = '';
136
+ private environment: SDKEnvironment = SDKEnvironment.Production;
137
+ private accessToken: string | null = null;
138
+ private timeoutMs: number = DEFAULT_TIMEOUT_MS;
139
+
140
+ // Development mode (Supabase)
141
+ private supabaseURL: string = '';
142
+ private supabaseKey: string = '';
143
+
144
+ // ============================================================================
145
+ // Initialization
146
+ // ============================================================================
147
+
148
+ private constructor() {}
149
+
150
+ private get defaultHeaders(): Record<string, string> {
151
+ return {
152
+ 'Content-Type': 'application/json',
153
+ Accept: 'application/json',
154
+ 'X-SDK-Client': SDK_CLIENT,
155
+ 'X-SDK-Version': SDKConstants.version,
156
+ 'X-Platform': SDK_PLATFORM,
157
+ };
158
+ }
159
+
160
+ // ============================================================================
161
+ // Configuration Methods
162
+ // ============================================================================
163
+
164
+ /**
165
+ * Configure HTTP service with base URL and API key
166
+ */
167
+ configure(config: HTTPServiceConfig): void {
168
+ this.baseURL = config.baseURL;
169
+ this.apiKey = config.apiKey;
170
+ this.environment = config.environment;
171
+ this.timeoutMs = config.timeoutMs || DEFAULT_TIMEOUT_MS;
172
+
173
+ logger.info(
174
+ `Configured for ${this.getEnvironmentName()} environment: ${this.getHostname(config.baseURL)}`
175
+ );
176
+ }
177
+
178
+ /**
179
+ * Configure development mode with Supabase credentials
180
+ *
181
+ * When in development mode, SDK makes calls directly to Supabase
182
+ * instead of going through the Railway backend.
183
+ */
184
+ configureDev(config: DevModeConfig): void {
185
+ this.supabaseURL = config.supabaseURL;
186
+ this.supabaseKey = config.supabaseKey;
187
+
188
+ logger.info('Development mode configured with Supabase');
189
+ }
190
+
191
+ /**
192
+ * Set authorization token
193
+ */
194
+ setToken(token: string): void {
195
+ this.accessToken = token;
196
+ logger.debug('Access token set');
197
+ }
198
+
199
+ /**
200
+ * Clear authorization token
201
+ */
202
+ clearToken(): void {
203
+ this.accessToken = null;
204
+ logger.debug('Access token cleared');
205
+ }
206
+
207
+ /**
208
+ * Check if HTTP service is configured
209
+ */
210
+ get isConfigured(): boolean {
211
+ if (this.environment === SDKEnvironment.Development) {
212
+ return !!this.supabaseURL;
213
+ }
214
+ return !!this.baseURL && !!this.apiKey;
215
+ }
216
+
217
+ /**
218
+ * Get current base URL
219
+ */
220
+ get currentBaseURL(): string {
221
+ if (this.environment === SDKEnvironment.Development && this.supabaseURL) {
222
+ return this.supabaseURL;
223
+ }
224
+ return this.baseURL;
225
+ }
226
+
227
+ // ============================================================================
228
+ // HTTP Methods
229
+ // ============================================================================
230
+
231
+ /**
232
+ * POST request with JSON body
233
+ *
234
+ * @param path API endpoint path
235
+ * @param data Request body (will be JSON serialized)
236
+ * @returns Response data
237
+ */
238
+ async post<T = unknown, R = unknown>(path: string, data?: T): Promise<R> {
239
+ let url = this.buildFullURL(path);
240
+
241
+ // Handle device registration - add UPSERT for Supabase
242
+ const isDeviceReg = this.isDeviceRegistrationPath(path);
243
+ const headers = this.buildHeaders(isDeviceReg);
244
+
245
+ if (isDeviceReg && this.environment === SDKEnvironment.Development) {
246
+ const separator = url.includes('?') ? '&' : '?';
247
+ url = `${url}${separator}on_conflict=device_id`;
248
+ }
249
+
250
+ const response = await this.executeRequest('POST', url, headers, data);
251
+
252
+ // Handle 409 as success for device registration (device already exists)
253
+ if (isDeviceReg && response.status === 409) {
254
+ logger.info('Device already registered (409) - treating as success');
255
+ return this.parseResponse<R>(response);
256
+ }
257
+
258
+ return this.handleResponse<R>(response, path);
259
+ }
260
+
261
+ /**
262
+ * GET request
263
+ *
264
+ * @param path API endpoint path
265
+ * @returns Response data
266
+ */
267
+ async get<R = unknown>(path: string): Promise<R> {
268
+ const url = this.buildFullURL(path);
269
+ const headers = this.buildHeaders(false);
270
+
271
+ const response = await this.executeRequest('GET', url, headers);
272
+ return this.handleResponse<R>(response, path);
273
+ }
274
+
275
+ /**
276
+ * PUT request
277
+ *
278
+ * @param path API endpoint path
279
+ * @param data Request body
280
+ * @returns Response data
281
+ */
282
+ async put<T = unknown, R = unknown>(path: string, data?: T): Promise<R> {
283
+ const url = this.buildFullURL(path);
284
+ const headers = this.buildHeaders(false);
285
+
286
+ const response = await this.executeRequest('PUT', url, headers, data);
287
+ return this.handleResponse<R>(response, path);
288
+ }
289
+
290
+ /**
291
+ * DELETE request
292
+ *
293
+ * @param path API endpoint path
294
+ * @returns Response data
295
+ */
296
+ async delete<R = unknown>(path: string): Promise<R> {
297
+ const url = this.buildFullURL(path);
298
+ const headers = this.buildHeaders(false);
299
+
300
+ const response = await this.executeRequest('DELETE', url, headers);
301
+ return this.handleResponse<R>(response, path);
302
+ }
303
+
304
+ /**
305
+ * POST request with raw response (returns raw data)
306
+ *
307
+ * @param path API endpoint path
308
+ * @param data Request body
309
+ * @returns Raw response data as string
310
+ */
311
+ async postRaw(path: string, data?: unknown): Promise<string> {
312
+ const response = await this.post<unknown, unknown>(path, data);
313
+ return typeof response === 'string' ? response : JSON.stringify(response);
314
+ }
315
+
316
+ /**
317
+ * GET request with raw response
318
+ *
319
+ * @param path API endpoint path
320
+ * @returns Raw response data as string
321
+ */
322
+ async getRaw(path: string): Promise<string> {
323
+ const response = await this.get<unknown>(path);
324
+ return typeof response === 'string' ? response : JSON.stringify(response);
325
+ }
326
+
327
+ // ============================================================================
328
+ // Private Implementation
329
+ // ============================================================================
330
+
331
+ private async executeRequest<T>(
332
+ method: string,
333
+ url: string,
334
+ headers: Record<string, string>,
335
+ data?: T
336
+ ): Promise<Response> {
337
+ logger.debug(`${method} ${url}`);
338
+
339
+ const controller = new AbortController();
340
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
341
+
342
+ try {
343
+ const options: RequestInit = {
344
+ method,
345
+ headers,
346
+ signal: controller.signal,
347
+ };
348
+
349
+ if (data !== undefined && method !== 'GET') {
350
+ options.body = JSON.stringify(data);
351
+ }
352
+
353
+ const response = await fetch(url, options);
354
+ return response;
355
+ } finally {
356
+ clearTimeout(timeoutId);
357
+ }
358
+ }
359
+
360
+ private buildHeaders(isDeviceRegistration: boolean): Record<string, string> {
361
+ const headers: Record<string, string> = { ...this.defaultHeaders };
362
+
363
+ if (this.environment === SDKEnvironment.Development) {
364
+ // Development mode - use Supabase headers
365
+ // Supabase requires BOTH apikey AND Authorization: Bearer headers
366
+ if (this.supabaseKey) {
367
+ headers['apikey'] = this.supabaseKey;
368
+ headers['Authorization'] = `Bearer ${this.supabaseKey}`;
369
+ headers['Prefer'] = isDeviceRegistration
370
+ ? 'resolution=merge-duplicates'
371
+ : 'return=representation';
372
+ }
373
+ } else {
374
+ // Production/Staging - use Bearer token
375
+ const token = this.accessToken || this.apiKey;
376
+ if (token) {
377
+ headers['Authorization'] = `Bearer ${token}`;
378
+ }
379
+ }
380
+
381
+ return headers;
382
+ }
383
+
384
+ private buildFullURL(path: string): string {
385
+ // Handle full URLs
386
+ if (path.startsWith('http://') || path.startsWith('https://')) {
387
+ return path;
388
+ }
389
+
390
+ const base = this.currentBaseURL.replace(/\/$/, '');
391
+ const endpoint = path.startsWith('/') ? path : `/${path}`;
392
+ return `${base}${endpoint}`;
393
+ }
394
+
395
+ private isDeviceRegistrationPath(path: string): boolean {
396
+ return (
397
+ path.includes('sdk_devices') ||
398
+ path.includes('devices/register') ||
399
+ path.includes('rest/v1/sdk_devices')
400
+ );
401
+ }
402
+
403
+ private async parseResponse<R>(response: Response): Promise<R> {
404
+ const text = await response.text();
405
+ if (!text) {
406
+ return {} as R;
407
+ }
408
+ try {
409
+ return JSON.parse(text) as R;
410
+ } catch {
411
+ return text as unknown as R;
412
+ }
413
+ }
414
+
415
+ private async handleResponse<R>(response: Response, path: string): Promise<R> {
416
+ if (response.ok) {
417
+ return this.parseResponse<R>(response);
418
+ }
419
+
420
+ // Parse error response
421
+ let errorMessage = `HTTP ${response.status}`;
422
+ try {
423
+ const errorData = (await response.json()) as Record<string, unknown>;
424
+ errorMessage =
425
+ (errorData.message as string) ||
426
+ (errorData.error as string) ||
427
+ (errorData.hint as string) ||
428
+ errorMessage;
429
+ } catch {
430
+ // Ignore JSON parse errors
431
+ }
432
+
433
+ logger.error(`HTTP ${response.status}: ${path}`);
434
+ throw this.createError(response.status, errorMessage, path);
435
+ }
436
+
437
+ private createError(statusCode: number, message: string, path: string): SDKError {
438
+ switch (statusCode) {
439
+ case 400:
440
+ return new SDKError(ErrorCode.InvalidInput, `Bad request: ${message}`);
441
+ case 401:
442
+ return new SDKError(ErrorCode.AuthenticationFailed, message);
443
+ case 403:
444
+ return new SDKError(ErrorCode.AuthenticationFailed, `Forbidden: ${message}`);
445
+ case 404:
446
+ return new SDKError(ErrorCode.ApiError, `Not found: ${path}`);
447
+ case 429:
448
+ return new SDKError(ErrorCode.NetworkTimeout, `Rate limited: ${message}`);
449
+ case 500:
450
+ case 502:
451
+ case 503:
452
+ case 504:
453
+ return new SDKError(ErrorCode.ApiError, `Server error (${statusCode}): ${message}`);
454
+ default:
455
+ return new SDKError(ErrorCode.NetworkUnavailable, `HTTP ${statusCode}: ${message}`);
456
+ }
457
+ }
458
+
459
+ private getEnvironmentName(): string {
460
+ switch (this.environment) {
461
+ case SDKEnvironment.Development:
462
+ return 'development';
463
+ case SDKEnvironment.Staging:
464
+ return 'staging';
465
+ case SDKEnvironment.Production:
466
+ return 'production';
467
+ default:
468
+ return 'unknown';
469
+ }
470
+ }
471
+
472
+ private getHostname(url: string): string {
473
+ // Simple hostname extraction for React Native compatibility
474
+ const match = url.match(/^https?:\/\/([^/:]+)/);
475
+ return match ? match[1] : url.substring(0, 30);
476
+ }
477
+ }
478
+
479
+ export default HTTPService;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * NetworkConfiguration.ts
3
+ *
4
+ * Network configuration types and utilities.
5
+ *
6
+ * Reference: sdk/runanywhere-swift/Sources/RunAnywhere/Data/Network/Services/HTTPService.swift
7
+ */
8
+
9
+ import { SDKEnvironment } from './HTTPService';
10
+
11
+ export { SDKEnvironment };
12
+
13
+ /**
14
+ * Network configuration options for SDK initialization
15
+ */
16
+ export interface NetworkConfig {
17
+ /**
18
+ * Base URL for API requests
19
+ * - Production: Railway endpoint (e.g., "https://api.runanywhere.ai")
20
+ * - Development: Can be left empty if supabase config is provided
21
+ */
22
+ baseURL?: string;
23
+
24
+ /**
25
+ * API key for authentication
26
+ * - Production: RunAnywhere API key
27
+ * - Development: Build token
28
+ */
29
+ apiKey: string;
30
+
31
+ /**
32
+ * SDK environment
33
+ * @default SDKEnvironment.Production
34
+ */
35
+ environment?: SDKEnvironment;
36
+
37
+ /**
38
+ * Supabase configuration for development mode
39
+ * When provided in development mode, SDK makes calls directly to Supabase
40
+ */
41
+ supabase?: {
42
+ url: string;
43
+ anonKey: string;
44
+ };
45
+
46
+ /**
47
+ * Request timeout in milliseconds
48
+ * @default 30000
49
+ */
50
+ timeoutMs?: number;
51
+ }
52
+
53
+ /**
54
+ * Default production base URL
55
+ */
56
+ export const DEFAULT_BASE_URL = 'https://api.runanywhere.ai';
57
+
58
+ /**
59
+ * Default timeout in milliseconds
60
+ */
61
+ export const DEFAULT_TIMEOUT_MS = 30000;
62
+
63
+ /**
64
+ * Create network configuration from SDK init options
65
+ */
66
+ export function createNetworkConfig(options: {
67
+ apiKey: string;
68
+ baseURL?: string;
69
+ environment?: 'development' | 'staging' | 'production';
70
+ supabaseURL?: string;
71
+ supabaseKey?: string;
72
+ timeoutMs?: number;
73
+ }): NetworkConfig {
74
+ // Map string environment to enum
75
+ let environment = SDKEnvironment.Production;
76
+ if (options.environment === 'development') {
77
+ environment = SDKEnvironment.Development;
78
+ } else if (options.environment === 'staging') {
79
+ environment = SDKEnvironment.Staging;
80
+ }
81
+
82
+ // Build supabase config if provided
83
+ const supabase =
84
+ options.supabaseURL && options.supabaseKey
85
+ ? {
86
+ url: options.supabaseURL,
87
+ anonKey: options.supabaseKey,
88
+ }
89
+ : undefined;
90
+
91
+ return {
92
+ baseURL: options.baseURL || DEFAULT_BASE_URL,
93
+ apiKey: options.apiKey,
94
+ environment,
95
+ supabase,
96
+ timeoutMs: options.timeoutMs || DEFAULT_TIMEOUT_MS,
97
+ };
98
+ }
99
+
100
+ /**
101
+ * Get environment name string
102
+ */
103
+ export function getEnvironmentName(env: SDKEnvironment): string {
104
+ switch (env) {
105
+ case SDKEnvironment.Development:
106
+ return 'development';
107
+ case SDKEnvironment.Staging:
108
+ return 'staging';
109
+ case SDKEnvironment.Production:
110
+ return 'production';
111
+ default:
112
+ return 'unknown';
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Check if environment is development
118
+ */
119
+ export function isDevelopment(env: SDKEnvironment): boolean {
120
+ return env === SDKEnvironment.Development;
121
+ }
122
+
123
+ /**
124
+ * Check if environment is production
125
+ */
126
+ export function isProduction(env: SDKEnvironment): boolean {
127
+ return env === SDKEnvironment.Production;
128
+ }
129
+
130
+ export default NetworkConfig;