@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.
- package/RunAnywhereCore.podspec +130 -0
- package/android/CMakeLists.txt +92 -0
- package/android/build.gradle +321 -0
- package/android/consumer-rules.pro +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/cpp/cpp-adapter.cpp +271 -0
- package/android/src/main/include/rac/backends/rac_llm_llamacpp.h +218 -0
- package/android/src/main/include/rac/backends/rac_stt_onnx.h +99 -0
- package/android/src/main/include/rac/backends/rac_stt_whispercpp.h +153 -0
- package/android/src/main/include/rac/backends/rac_tts_onnx.h +71 -0
- package/android/src/main/include/rac/backends/rac_vad_onnx.h +84 -0
- package/android/src/main/include/rac/core/capabilities/rac_lifecycle.h +290 -0
- package/android/src/main/include/rac/core/rac_analytics_events.h +610 -0
- package/android/src/main/include/rac/core/rac_audio_utils.h +88 -0
- package/android/src/main/include/rac/core/rac_component_types.h +160 -0
- package/android/src/main/include/rac/core/rac_core.h +331 -0
- package/android/src/main/include/rac/core/rac_error.h +469 -0
- package/android/src/main/include/rac/core/rac_events.h +334 -0
- package/android/src/main/include/rac/core/rac_logger.h +416 -0
- package/android/src/main/include/rac/core/rac_platform_adapter.h +340 -0
- package/android/src/main/include/rac/core/rac_sdk_state.h +292 -0
- package/android/src/main/include/rac/core/rac_structured_error.h +594 -0
- package/android/src/main/include/rac/core/rac_types.h +264 -0
- package/android/src/main/include/rac/features/llm/rac_llm.h +17 -0
- package/android/src/main/include/rac/features/llm/rac_llm_analytics.h +188 -0
- package/android/src/main/include/rac/features/llm/rac_llm_component.h +228 -0
- package/android/src/main/include/rac/features/llm/rac_llm_events.h +215 -0
- package/android/src/main/include/rac/features/llm/rac_llm_metrics.h +402 -0
- package/android/src/main/include/rac/features/llm/rac_llm_service.h +163 -0
- package/android/src/main/include/rac/features/llm/rac_llm_structured_output.h +141 -0
- package/android/src/main/include/rac/features/llm/rac_llm_types.h +384 -0
- package/android/src/main/include/rac/features/platform/rac_llm_platform.h +204 -0
- package/android/src/main/include/rac/features/platform/rac_tts_platform.h +197 -0
- package/android/src/main/include/rac/features/stt/rac_stt.h +17 -0
- package/android/src/main/include/rac/features/stt/rac_stt_analytics.h +204 -0
- package/android/src/main/include/rac/features/stt/rac_stt_component.h +162 -0
- package/android/src/main/include/rac/features/stt/rac_stt_events.h +62 -0
- package/android/src/main/include/rac/features/stt/rac_stt_service.h +154 -0
- package/android/src/main/include/rac/features/stt/rac_stt_types.h +389 -0
- package/android/src/main/include/rac/features/tts/rac_tts.h +17 -0
- package/android/src/main/include/rac/features/tts/rac_tts_analytics.h +181 -0
- package/android/src/main/include/rac/features/tts/rac_tts_component.h +158 -0
- package/android/src/main/include/rac/features/tts/rac_tts_events.h +54 -0
- package/android/src/main/include/rac/features/tts/rac_tts_service.h +162 -0
- package/android/src/main/include/rac/features/tts/rac_tts_types.h +374 -0
- package/android/src/main/include/rac/features/vad/rac_vad.h +17 -0
- package/android/src/main/include/rac/features/vad/rac_vad_analytics.h +236 -0
- package/android/src/main/include/rac/features/vad/rac_vad_component.h +185 -0
- package/android/src/main/include/rac/features/vad/rac_vad_energy.h +443 -0
- package/android/src/main/include/rac/features/vad/rac_vad_events.h +76 -0
- package/android/src/main/include/rac/features/vad/rac_vad_service.h +167 -0
- package/android/src/main/include/rac/features/vad/rac_vad_types.h +244 -0
- package/android/src/main/include/rac/features/voice_agent/rac_voice_agent.h +612 -0
- package/android/src/main/include/rac/infrastructure/device/rac_device_manager.h +176 -0
- package/android/src/main/include/rac/infrastructure/download/rac_download.h +418 -0
- package/android/src/main/include/rac/infrastructure/events/rac_events.h +177 -0
- package/android/src/main/include/rac/infrastructure/model_management/rac_model_assignment.h +169 -0
- package/android/src/main/include/rac/infrastructure/model_management/rac_model_paths.h +258 -0
- package/android/src/main/include/rac/infrastructure/model_management/rac_model_registry.h +357 -0
- package/android/src/main/include/rac/infrastructure/model_management/rac_model_strategy.h +374 -0
- package/android/src/main/include/rac/infrastructure/model_management/rac_model_types.h +613 -0
- package/android/src/main/include/rac/infrastructure/network/rac_api_types.h +335 -0
- package/android/src/main/include/rac/infrastructure/network/rac_auth_manager.h +252 -0
- package/android/src/main/include/rac/infrastructure/network/rac_dev_config.h +85 -0
- package/android/src/main/include/rac/infrastructure/network/rac_endpoints.h +102 -0
- package/android/src/main/include/rac/infrastructure/network/rac_environment.h +220 -0
- package/android/src/main/include/rac/infrastructure/network/rac_http_client.h +233 -0
- package/android/src/main/include/rac/infrastructure/storage/rac_storage_analyzer.h +286 -0
- package/android/src/main/include/rac/infrastructure/telemetry/rac_telemetry_manager.h +206 -0
- package/android/src/main/include/rac/infrastructure/telemetry/rac_telemetry_types.h +234 -0
- package/android/src/main/java/com/margelo/nitro/runanywhere/ArchiveUtility.kt +308 -0
- package/android/src/main/java/com/margelo/nitro/runanywhere/HybridRunAnywhereDeviceInfo.kt +229 -0
- package/android/src/main/java/com/margelo/nitro/runanywhere/PlatformAdapterBridge.kt +392 -0
- package/android/src/main/java/com/margelo/nitro/runanywhere/RunAnywhereCorePackage.kt +28 -0
- package/android/src/main/java/com/margelo/nitro/runanywhere/SDKLogger.kt +357 -0
- package/android/src/main/java/com/margelo/nitro/runanywhere/SecureStorageManager.kt +147 -0
- package/android/src/main/jniLibs/arm64-v8a/libc++_shared.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libomp.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librac_commons.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librunanywhere_jni.so +0 -0
- package/cpp/HybridRunAnywhereCore.cpp +2505 -0
- package/cpp/HybridRunAnywhereCore.hpp +271 -0
- package/cpp/bridges/AuthBridge.cpp +209 -0
- package/cpp/bridges/AuthBridge.hpp +157 -0
- package/cpp/bridges/DeviceBridge.cpp +257 -0
- package/cpp/bridges/DeviceBridge.hpp +155 -0
- package/cpp/bridges/DownloadBridge.cpp +299 -0
- package/cpp/bridges/DownloadBridge.hpp +197 -0
- package/cpp/bridges/EventBridge.cpp +125 -0
- package/cpp/bridges/EventBridge.hpp +139 -0
- package/cpp/bridges/HTTPBridge.cpp +96 -0
- package/cpp/bridges/HTTPBridge.hpp +144 -0
- package/cpp/bridges/InitBridge.cpp +1273 -0
- package/cpp/bridges/InitBridge.hpp +306 -0
- package/cpp/bridges/ModelRegistryBridge.cpp +394 -0
- package/cpp/bridges/ModelRegistryBridge.hpp +177 -0
- package/cpp/bridges/StorageBridge.cpp +269 -0
- package/cpp/bridges/StorageBridge.hpp +172 -0
- package/cpp/bridges/TelemetryBridge.cpp +352 -0
- package/cpp/bridges/TelemetryBridge.hpp +126 -0
- package/ios/.testlocal +0 -0
- package/ios/ArchiveUtility.swift +526 -0
- package/ios/ArchiveUtilityBridge.m +52 -0
- package/ios/AudioDecoder.h +38 -0
- package/ios/AudioDecoder.m +162 -0
- package/ios/Binaries/RACommons.xcframework/Info.plist +44 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/RACommons.h +67 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_analytics_events.h +610 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_api_types.h +335 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_audio_utils.h +88 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_auth_manager.h +252 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_component_types.h +160 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_core.h +331 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_dev_config.h +85 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_device_manager.h +176 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_download.h +418 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_endpoints.h +102 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_environment.h +220 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_error.h +469 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_events.h +177 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_http_client.h +233 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_lifecycle.h +290 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_analytics.h +188 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_component.h +228 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_events.h +215 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_llamacpp.h +218 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_metrics.h +402 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_platform.h +204 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_service.h +163 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_structured_output.h +141 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_llm_types.h +384 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_logger.h +416 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_assignment.h +169 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_paths.h +258 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_registry.h +357 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_strategy.h +374 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_model_types.h +613 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_platform_adapter.h +340 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_sdk_state.h +292 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_storage_analyzer.h +286 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_structured_error.h +594 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_analytics.h +204 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_component.h +162 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_events.h +62 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_onnx.h +99 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_service.h +154 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_types.h +389 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_stt_whispercpp.h +153 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_telemetry_manager.h +206 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_telemetry_types.h +234 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_analytics.h +181 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_component.h +158 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_events.h +54 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_onnx.h +71 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_platform.h +197 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_service.h +162 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_tts_types.h +374 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_types.h +264 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_analytics.h +236 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_component.h +185 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_energy.h +443 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_events.h +76 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_onnx.h +84 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_service.h +167 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_vad_types.h +244 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Headers/rac_voice_agent.h +612 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Info.plist +11 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/Modules/module.modulemap +5 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64/RACommons.framework/RACommons +0 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/RACommons.h +67 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_analytics_events.h +610 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_api_types.h +335 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_audio_utils.h +88 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_auth_manager.h +252 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_component_types.h +160 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_core.h +331 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_dev_config.h +85 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_device_manager.h +176 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_download.h +418 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_endpoints.h +102 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_environment.h +220 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_error.h +469 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_events.h +177 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_http_client.h +233 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_lifecycle.h +290 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_analytics.h +188 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_component.h +228 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_events.h +215 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_llamacpp.h +218 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_metrics.h +402 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_platform.h +204 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_service.h +163 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_structured_output.h +141 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_llm_types.h +384 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_logger.h +416 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_assignment.h +169 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_paths.h +258 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_registry.h +357 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_strategy.h +374 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_model_types.h +613 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_platform_adapter.h +340 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_sdk_state.h +292 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_storage_analyzer.h +286 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_structured_error.h +594 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_analytics.h +204 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_component.h +162 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_events.h +62 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_onnx.h +99 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_service.h +154 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_types.h +389 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_stt_whispercpp.h +153 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_telemetry_manager.h +206 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_telemetry_types.h +234 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_analytics.h +181 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_component.h +158 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_events.h +54 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_onnx.h +71 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_platform.h +197 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_service.h +162 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_tts_types.h +374 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_types.h +264 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad.h +17 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_analytics.h +236 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_component.h +185 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_energy.h +443 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_events.h +76 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_onnx.h +84 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_service.h +167 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_vad_types.h +244 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Headers/rac_voice_agent.h +612 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Info.plist +11 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/Modules/module.modulemap +5 -0
- package/ios/Binaries/RACommons.xcframework/ios-arm64_x86_64-simulator/RACommons.framework/RACommons +0 -0
- package/ios/HybridRunAnywhereDeviceInfo.swift +214 -0
- package/ios/KeychainManager.swift +116 -0
- package/ios/PlatformAdapter.swift +100 -0
- package/ios/PlatformAdapterBridge.h +152 -0
- package/ios/PlatformAdapterBridge.m +570 -0
- package/ios/RNSDKLoggerBridge.h +41 -0
- package/ios/RNSDKLoggerBridge.m +66 -0
- package/ios/SDKLogger.swift +329 -0
- package/nitro.json +20 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/c++/JHybridRunAnywhereDeviceInfoSpec.cpp +257 -0
- package/nitrogen/generated/android/c++/JHybridRunAnywhereDeviceInfoSpec.hpp +77 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/runanywhere/HybridRunAnywhereDeviceInfoSpec.kt +106 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/runanywhere/runanywherecoreOnLoad.kt +35 -0
- package/nitrogen/generated/android/runanywherecore+autolinking.cmake +82 -0
- package/nitrogen/generated/android/runanywherecore+autolinking.gradle +27 -0
- package/nitrogen/generated/android/runanywherecoreOnLoad.cpp +54 -0
- package/nitrogen/generated/android/runanywherecoreOnLoad.hpp +25 -0
- package/nitrogen/generated/ios/RunAnywhereCore+autolinking.rb +60 -0
- package/nitrogen/generated/ios/RunAnywhereCore-Swift-Cxx-Bridge.cpp +65 -0
- package/nitrogen/generated/ios/RunAnywhereCore-Swift-Cxx-Bridge.hpp +197 -0
- package/nitrogen/generated/ios/RunAnywhereCore-Swift-Cxx-Umbrella.hpp +45 -0
- package/nitrogen/generated/ios/RunAnywhereCoreAutolinking.mm +43 -0
- package/nitrogen/generated/ios/RunAnywhereCoreAutolinking.swift +25 -0
- package/nitrogen/generated/ios/c++/HybridRunAnywhereDeviceInfoSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRunAnywhereDeviceInfoSpecSwift.hpp +173 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridRunAnywhereDeviceInfoSpec.swift +68 -0
- package/nitrogen/generated/ios/swift/HybridRunAnywhereDeviceInfoSpec_cxx.swift +366 -0
- package/nitrogen/generated/shared/c++/HybridRunAnywhereCoreSpec.cpp +92 -0
- package/nitrogen/generated/shared/c++/HybridRunAnywhereCoreSpec.hpp +138 -0
- package/nitrogen/generated/shared/c++/HybridRunAnywhereDeviceInfoSpec.cpp +33 -0
- package/nitrogen/generated/shared/c++/HybridRunAnywhereDeviceInfoSpec.hpp +75 -0
- package/package.json +76 -0
- package/react-native.config.js +14 -0
- package/src/Features/VoiceSession/AudioCaptureManager.ts +286 -0
- package/src/Features/VoiceSession/AudioPlaybackManager.ts +300 -0
- package/src/Features/VoiceSession/VoiceSessionHandle.ts +530 -0
- package/src/Features/VoiceSession/index.ts +20 -0
- package/src/Features/index.ts +7 -0
- package/src/Foundation/Constants/SDKConstants.ts +47 -0
- package/src/Foundation/Constants/index.ts +8 -0
- package/src/Foundation/DependencyInjection/ServiceContainer.ts +154 -0
- package/src/Foundation/DependencyInjection/ServiceRegistry.ts +51 -0
- package/src/Foundation/DependencyInjection/index.ts +6 -0
- package/src/Foundation/ErrorTypes/ErrorCategory.ts +184 -0
- package/src/Foundation/ErrorTypes/ErrorCodes.ts +151 -0
- package/src/Foundation/ErrorTypes/ErrorContext.ts +201 -0
- package/src/Foundation/ErrorTypes/SDKError.ts +507 -0
- package/src/Foundation/ErrorTypes/index.ts +57 -0
- package/src/Foundation/Initialization/InitializationPhase.ts +85 -0
- package/src/Foundation/Initialization/InitializationState.ts +168 -0
- package/src/Foundation/Initialization/index.ts +26 -0
- package/src/Foundation/Logging/Destinations/NativeLogBridge.ts +147 -0
- package/src/Foundation/Logging/Destinations/SentryDestination.ts +209 -0
- package/src/Foundation/Logging/Logger/SDKLogger.ts +232 -0
- package/src/Foundation/Logging/Models/LogLevel.ts +36 -0
- package/src/Foundation/Logging/Models/LoggingConfiguration.ts +117 -0
- package/src/Foundation/Logging/Services/LoggingManager.ts +407 -0
- package/src/Foundation/Logging/index.ts +59 -0
- package/src/Foundation/Security/DeviceIdentity.ts +92 -0
- package/src/Foundation/Security/SecureStorageError.ts +132 -0
- package/src/Foundation/Security/SecureStorageKeys.ts +35 -0
- package/src/Foundation/Security/SecureStorageService.ts +449 -0
- package/src/Foundation/Security/index.ts +17 -0
- package/src/Foundation/index.ts +26 -0
- package/src/Infrastructure/Events/EventPublisher.ts +165 -0
- package/src/Infrastructure/Events/SDKEvent.ts +214 -0
- package/src/Infrastructure/Events/index.ts +15 -0
- package/src/Infrastructure/index.ts +9 -0
- package/src/Public/Events/EventBus.ts +488 -0
- package/src/Public/Events/index.ts +8 -0
- package/src/Public/Extensions/RunAnywhere+Logging.ts +51 -0
- package/src/Public/Extensions/RunAnywhere+Models.ts +392 -0
- package/src/Public/Extensions/RunAnywhere+STT.ts +424 -0
- package/src/Public/Extensions/RunAnywhere+Storage.ts +151 -0
- package/src/Public/Extensions/RunAnywhere+StructuredOutput.ts +316 -0
- package/src/Public/Extensions/RunAnywhere+TTS.ts +430 -0
- package/src/Public/Extensions/RunAnywhere+TextGeneration.ts +320 -0
- package/src/Public/Extensions/RunAnywhere+VAD.ts +359 -0
- package/src/Public/Extensions/RunAnywhere+VoiceAgent.ts +225 -0
- package/src/Public/Extensions/RunAnywhere+VoiceSession.ts +155 -0
- package/src/Public/Extensions/index.ts +126 -0
- package/src/Public/RunAnywhere.ts +695 -0
- package/src/index.ts +238 -0
- package/src/native/NativeRunAnywhereCore.ts +291 -0
- package/src/native/NativeRunAnywhereModule.ts +32 -0
- package/src/native/index.ts +21 -0
- package/src/services/DownloadService.ts +282 -0
- package/src/services/FileSystem.ts +810 -0
- package/src/services/ModelRegistry.ts +246 -0
- package/src/services/Network/APIEndpoints.ts +84 -0
- package/src/services/Network/HTTPService.ts +479 -0
- package/src/services/Network/NetworkConfiguration.ts +130 -0
- package/src/services/Network/TelemetryService.ts +318 -0
- package/src/services/Network/index.ts +29 -0
- package/src/services/SystemTTSService.ts +130 -0
- package/src/services/index.ts +66 -0
- package/src/specs/RunAnywhereCore.nitro.ts +627 -0
- package/src/specs/RunAnywhereDeviceInfo.nitro.ts +73 -0
- package/src/types/LLMTypes.ts +127 -0
- package/src/types/STTTypes.ts +124 -0
- package/src/types/StructuredOutputTypes.ts +156 -0
- package/src/types/TTSTypes.ts +126 -0
- package/src/types/VADTypes.ts +70 -0
- package/src/types/VoiceAgentTypes.ts +182 -0
- package/src/types/enums.ts +258 -0
- package/src/types/events.ts +337 -0
- package/src/types/external.d.ts +142 -0
- package/src/types/index.ts +146 -0
- 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;
|