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