@onairos/react-native 3.7.2 → 3.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/lib/commonjs/api/index.js +219 -9
  2. package/lib/commonjs/components/BodyText.js +27 -9
  3. package/lib/commonjs/components/BrandMark.js +111 -10
  4. package/lib/commonjs/components/CodeInput.js +116 -9
  5. package/lib/commonjs/components/EmailInput.js +30 -8
  6. package/lib/commonjs/components/GoogleButton.js +56 -9
  7. package/lib/commonjs/components/HeadingGroup.js +43 -9
  8. package/lib/commonjs/components/LLMDataInputModal.js +664 -14
  9. package/lib/commonjs/components/ModalHeader.js +99 -9
  10. package/lib/commonjs/components/ModalSheet.js +47 -9
  11. package/lib/commonjs/components/Onairos.js +380 -14
  12. package/lib/commonjs/components/OnairosButton.js +313 -13
  13. package/lib/commonjs/components/OnairosSignInButton.js +130 -12
  14. package/lib/commonjs/components/Overlay.js +465 -13
  15. package/lib/commonjs/components/PersonaImage.js +137 -10
  16. package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
  17. package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
  18. package/lib/commonjs/components/PinCreationScreen.js +403 -12
  19. package/lib/commonjs/components/PinInput.js +464 -9
  20. package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
  21. package/lib/commonjs/components/PlatformList.js +137 -10
  22. package/lib/commonjs/components/PlatformToggle.js +180 -9
  23. package/lib/commonjs/components/PrimaryButton.js +180 -10
  24. package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
  25. package/lib/commonjs/components/SignInStep.js +345 -12
  26. package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
  27. package/lib/commonjs/components/VerificationStep.js +176 -11
  28. package/lib/commonjs/components/WelcomeScreen.js +461 -22
  29. package/lib/commonjs/components/icons/Basicproficon.js +37 -8
  30. package/lib/commonjs/components/icons/Basicprofile.js +21 -8
  31. package/lib/commonjs/components/icons/Checkbox.js +21 -8
  32. package/lib/commonjs/components/icons/Checkmark.js +27 -8
  33. package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
  34. package/lib/commonjs/components/icons/Contenticon.js +39 -8
  35. package/lib/commonjs/components/icons/EnochE.js +41 -8
  36. package/lib/commonjs/components/icons/Personalityicon.js +30 -8
  37. package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
  38. package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
  39. package/lib/commonjs/components/icons/Userpreferences.js +21 -8
  40. package/lib/commonjs/components/icons/index.js +84 -17
  41. package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
  42. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
  43. package/lib/commonjs/components/onboarding/PinInput.js +283 -10
  44. package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
  45. package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
  46. package/lib/commonjs/config/api.js +56 -7
  47. package/lib/commonjs/constants/index.js +120 -7
  48. package/lib/commonjs/context/AuthContext.js +345 -10
  49. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
  50. package/lib/commonjs/hooks/useConnections.js +102 -8
  51. package/lib/commonjs/hooks/useCredentials.js +178 -10
  52. package/lib/commonjs/hooks/useUserConnections.js +148 -10
  53. package/lib/commonjs/index.js +439 -34
  54. package/lib/commonjs/services/apiClient.js +298 -8
  55. package/lib/commonjs/services/biometricPinService.js +180 -8
  56. package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
  57. package/lib/commonjs/services/chatGPTConversationService.js +275 -9
  58. package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
  59. package/lib/commonjs/services/claudeConversationService.js +158 -9
  60. package/lib/commonjs/services/connectedAccountsService.js +310 -10
  61. package/lib/commonjs/services/googleAuthService.js +252 -11
  62. package/lib/commonjs/services/hingeDataExtractor.js +105 -8
  63. package/lib/commonjs/services/hingeDataService.js +150 -9
  64. package/lib/commonjs/services/imageCompressionService.js +260 -7
  65. package/lib/commonjs/services/instagramDataExtractor.js +126 -8
  66. package/lib/commonjs/services/instagramDataService.js +163 -9
  67. package/lib/commonjs/services/jwtStorageService.js +276 -7
  68. package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
  69. package/lib/commonjs/services/linkedinProfileService.js +222 -9
  70. package/lib/commonjs/services/linkedinScrapingService.js +230 -8
  71. package/lib/commonjs/services/llmDataStorage.js +294 -8
  72. package/lib/commonjs/services/mobileTrainingService.js +186 -8
  73. package/lib/commonjs/services/netflixDataExtractor.js +120 -8
  74. package/lib/commonjs/services/netflixDataService.js +198 -9
  75. package/lib/commonjs/services/pinEncryptionService.js +84 -8
  76. package/lib/commonjs/services/pinStorageUtils.js +105 -7
  77. package/lib/commonjs/services/platformAuthService.js +1484 -12
  78. package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
  79. package/lib/commonjs/services/sephoraDataService.js +200 -9
  80. package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
  81. package/lib/commonjs/services/spotifyDataService.js +241 -9
  82. package/lib/commonjs/services/storageService.js +404 -8
  83. package/lib/commonjs/services/telegramDataExtractor.js +115 -8
  84. package/lib/commonjs/services/telegramDataService.js +499 -9
  85. package/lib/commonjs/services/trainingApiHelpers.js +73 -7
  86. package/lib/commonjs/services/userConnectionsService.js +340 -10
  87. package/lib/commonjs/services/youtubeMigrationService.js +416 -10
  88. package/lib/commonjs/theme/index.js +250 -7
  89. package/lib/commonjs/types/ambient.d.js +2 -1
  90. package/lib/commonjs/types/declarations.d.js +2 -1
  91. package/lib/commonjs/types/index.js +6 -1
  92. package/lib/commonjs/types/node-fix.d.js +2 -1
  93. package/lib/commonjs/types/node-override.d.js +2 -1
  94. package/lib/commonjs/types/opacity.d.js +2 -1
  95. package/lib/commonjs/types.js +14 -1
  96. package/lib/commonjs/utils/Portal.js +98 -8
  97. package/lib/commonjs/utils/api.js +130 -9
  98. package/lib/commonjs/utils/assetRegistry.js +210 -35
  99. package/lib/commonjs/utils/auth.js +112 -9
  100. package/lib/commonjs/utils/connectorTests.js +613 -29
  101. package/lib/commonjs/utils/crypto.js +62 -8
  102. package/lib/commonjs/utils/debugHelper.js +64 -1
  103. package/lib/commonjs/utils/encryption.js +76 -7
  104. package/lib/commonjs/utils/eventUtils.js +288 -1
  105. package/lib/commonjs/utils/haptics.js +66 -9
  106. package/lib/commonjs/utils/imagePreloader.js +6 -1
  107. package/lib/commonjs/utils/networkDiagnostics.js +226 -8
  108. package/lib/commonjs/utils/onairosApi.js +350 -9
  109. package/lib/commonjs/utils/programmaticFlow.js +117 -9
  110. package/lib/commonjs/utils/retryHelper.js +220 -1
  111. package/lib/commonjs/utils/secureStorage.js +349 -10
  112. package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
  113. package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
  114. package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
  115. package/lib/commonjs/utils/webviewScripts/index.js +698 -15
  116. package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
  117. package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
  118. package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
  119. package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
  120. package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
  121. package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
  122. package/lib/module/api/index.js +211 -1
  123. package/lib/module/components/BodyText.js +20 -1
  124. package/lib/module/components/BrandMark.js +104 -1
  125. package/lib/module/components/CodeInput.js +109 -1
  126. package/lib/module/components/EmailInput.js +23 -1
  127. package/lib/module/components/GoogleButton.js +49 -1
  128. package/lib/module/components/HeadingGroup.js +36 -1
  129. package/lib/module/components/LLMDataInputModal.js +656 -7
  130. package/lib/module/components/ModalHeader.js +92 -1
  131. package/lib/module/components/ModalSheet.js +39 -1
  132. package/lib/module/components/Onairos.js +373 -1
  133. package/lib/module/components/OnairosButton.js +305 -1
  134. package/lib/module/components/OnairosSignInButton.js +121 -1
  135. package/lib/module/components/Overlay.js +456 -1
  136. package/lib/module/components/PersonaImage.js +129 -1
  137. package/lib/module/components/PersonaLoadingScreen.js +310 -1
  138. package/lib/module/components/PersonalizationConsentScreen.js +460 -1
  139. package/lib/module/components/PinCreationScreen.js +396 -1
  140. package/lib/module/components/PinInput.js +456 -1
  141. package/lib/module/components/PlatformConnectorsStep.js +1302 -6
  142. package/lib/module/components/PlatformList.js +129 -1
  143. package/lib/module/components/PlatformToggle.js +173 -1
  144. package/lib/module/components/PrimaryButton.js +172 -1
  145. package/lib/module/components/SignInMatchAnimation.js +189 -1
  146. package/lib/module/components/SignInStep.js +338 -1
  147. package/lib/module/components/UniversalOnboarding.js +2770 -1
  148. package/lib/module/components/VerificationStep.js +168 -1
  149. package/lib/module/components/WelcomeScreen.js +453 -1
  150. package/lib/module/components/icons/Basicproficon.js +30 -1
  151. package/lib/module/components/icons/Basicprofile.js +14 -1
  152. package/lib/module/components/icons/Checkbox.js +14 -1
  153. package/lib/module/components/icons/Checkmark.js +20 -1
  154. package/lib/module/components/icons/Contentanalysis.js +14 -1
  155. package/lib/module/components/icons/Contenticon.js +32 -1
  156. package/lib/module/components/icons/EnochE.js +34 -1
  157. package/lib/module/components/icons/Personalityicon.js +23 -1
  158. package/lib/module/components/icons/Personalityprofile.js +14 -1
  159. package/lib/module/components/icons/Personalitytraits.js +14 -1
  160. package/lib/module/components/icons/Userpreferences.js +14 -1
  161. package/lib/module/components/icons/index.js +13 -1
  162. package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
  163. package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
  164. package/lib/module/components/onboarding/PinInput.js +274 -1
  165. package/lib/module/components/onboarding/PlatformConnector.js +240 -1
  166. package/lib/module/config/PLATFORM_APIS.md +849 -0
  167. package/lib/module/config/api.js +47 -1
  168. package/lib/module/constants/index.js +114 -1
  169. package/lib/module/context/AuthContext.js +335 -1
  170. package/lib/module/hooks/useConnectedAccounts.js +106 -1
  171. package/lib/module/hooks/useConnections.js +95 -1
  172. package/lib/module/hooks/useCredentials.js +171 -6
  173. package/lib/module/hooks/useUserConnections.js +140 -1
  174. package/lib/module/index.js +172 -1
  175. package/lib/module/services/apiClient.js +295 -1
  176. package/lib/module/services/biometricPinService.js +169 -1
  177. package/lib/module/services/chatGPTConversationExtractor.js +149 -1
  178. package/lib/module/services/chatGPTConversationService.js +268 -1
  179. package/lib/module/services/claudeConversationExtractor.js +97 -1
  180. package/lib/module/services/claudeConversationService.js +151 -1
  181. package/lib/module/services/connectedAccountsService.js +293 -1
  182. package/lib/module/services/googleAuthService.js +241 -1
  183. package/lib/module/services/hingeDataExtractor.js +99 -1
  184. package/lib/module/services/hingeDataService.js +143 -1
  185. package/lib/module/services/imageCompressionService.js +250 -1
  186. package/lib/module/services/instagramDataExtractor.js +120 -1
  187. package/lib/module/services/instagramDataService.js +156 -1
  188. package/lib/module/services/jwtStorageService.js +257 -1
  189. package/lib/module/services/linkedinDOMExtractor.js +234 -1
  190. package/lib/module/services/linkedinProfileService.js +210 -1
  191. package/lib/module/services/linkedinScrapingService.js +219 -1
  192. package/lib/module/services/llmDataStorage.js +277 -1
  193. package/lib/module/services/mobileTrainingService.js +173 -1
  194. package/lib/module/services/netflixDataExtractor.js +114 -1
  195. package/lib/module/services/netflixDataService.js +191 -1
  196. package/lib/module/services/pinEncryptionService.js +74 -6
  197. package/lib/module/services/pinStorageUtils.js +93 -1
  198. package/lib/module/services/platformAuthService.js +1461 -1
  199. package/lib/module/services/sephoraDataExtractor.js +134 -1
  200. package/lib/module/services/sephoraDataService.js +193 -1
  201. package/lib/module/services/spotifyDataExtractor.js +142 -1
  202. package/lib/module/services/spotifyDataService.js +234 -1
  203. package/lib/module/services/storageService.js +383 -1
  204. package/lib/module/services/telegramDataExtractor.js +109 -1
  205. package/lib/module/services/telegramDataService.js +493 -1
  206. package/lib/module/services/trainingApiHelpers.js +67 -1
  207. package/lib/module/services/userConnectionsService.js +329 -1
  208. package/lib/module/services/youtubeMigrationService.js +405 -1
  209. package/lib/module/theme/index.js +245 -1
  210. package/lib/module/types.js +10 -1
  211. package/lib/module/utils/Portal.js +90 -1
  212. package/lib/module/utils/api.js +118 -1
  213. package/lib/module/utils/assetRegistry.js +200 -34
  214. package/lib/module/utils/auth.js +100 -1
  215. package/lib/module/utils/connectorTests.js +600 -27
  216. package/lib/module/utils/crypto.js +54 -1
  217. package/lib/module/utils/debugHelper.js +54 -1
  218. package/lib/module/utils/encryption.js +67 -1
  219. package/lib/module/utils/eventUtils.js +270 -1
  220. package/lib/module/utils/haptics.js +59 -8
  221. package/lib/module/utils/imagePreloader.js +3 -1
  222. package/lib/module/utils/networkDiagnostics.js +217 -1
  223. package/lib/module/utils/onairosApi.js +333 -1
  224. package/lib/module/utils/programmaticFlow.js +111 -1
  225. package/lib/module/utils/retryHelper.js +211 -1
  226. package/lib/module/utils/secureStorage.js +330 -6
  227. package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
  228. package/lib/module/utils/webviewScripts/claude.js +370 -1
  229. package/lib/module/utils/webviewScripts/hinge.js +405 -1
  230. package/lib/module/utils/webviewScripts/index.js +434 -1
  231. package/lib/module/utils/webviewScripts/instagram.js +448 -1
  232. package/lib/module/utils/webviewScripts/linkedin.js +874 -1
  233. package/lib/module/utils/webviewScripts/netflix.js +376 -1
  234. package/lib/module/utils/webviewScripts/sephora.js +510 -1
  235. package/lib/module/utils/webviewScripts/spotify.js +413 -1
  236. package/lib/module/utils/webviewScripts/telegram.js +672 -1
  237. package/package.json +2 -2
@@ -1,14 +1,664 @@
1
- 'use strict';
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require("react"),
5
- require("react-native"),
6
- require("../theme"),
7
- require("../utils/haptics"),
8
- require("@react-native-async-storage/async-storage"),
9
- require("../config/api"),
10
- require('react-native-document-picker'),
11
- require('react-native-fs')
12
- ];
13
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
14
- Object['defineProperty'](exports,_0x2897(0x0),{'value':!![]}),exports[_0x2897(0x1)]=void 0x0;var _react=_interopRequireWildcard(__ONAIROS_REQ_FUNC__(0x0)),_reactNative=__ONAIROS_REQ_FUNC__(0x1),_theme=__ONAIROS_REQ_FUNC__(0x2),_haptics=__ONAIROS_REQ_FUNC__(0x3),_asyncStorage=_interopRequireDefault(__ONAIROS_REQ_FUNC__(0x4)),_api=__ONAIROS_REQ_FUNC__(0x5);function _interopRequireDefault(_0x2def64){return _0x2def64&&_0x2def64['__esModule']?_0x2def64:{'default':_0x2def64};}function _interopRequireWildcard(_0x586a4a,_0x1f6162){const _0x3cc284={'GWrVQ':_0x2897(0x2),'qOeZd':_0x2897(0x3),'SHAmc':_0x2897(0x4),'KnxuE':_0x2897(0x5),'pYNqu':'Export\x20your\x20Gemini\x20(Google\x20AI)\x20conversations\x20and\x20paste\x20the\x20data\x20below.','FebEM':'Paste\x20your\x20Gemini\x20conversation\x20JSON\x20here...','VKXkm':_0x2897(0x6),'uQecb':'Connect\x20Grok','OiIMR':'Export\x20your\x20Grok\x20conversations\x20from\x20X/Twitter\x20and\x20paste\x20the\x20data\x20below.','KEbfO':'Paste\x20your\x20Grok\x20conversation\x20JSON\x20here...','QZWzd':_0x2897(0x7),'Spnai':function(_0x1a53b0,_0x44de84){return _0x1a53b0===_0x44de84;},'xNMVu':_0x2897(0x8),'QrCnw':function(_0x3e4c59,_0x3bade6){return _0x3e4c59&&_0x3bade6;},'BfAIO':function(_0x527416,_0x1afe45){return _0x527416!=_0x1afe45;},'aNSWU':function(_0x2ef91d,_0x8f0f07){return _0x2ef91d!=_0x8f0f07;},'bBhkL':'function','YOqVM':_0x2897(0x9),'XOLUR':'caywL','ZHUwP':function(_0x22c951,_0x2afe76){return _0x22c951!==_0x2afe76;},'lSYAV':_0x2897(0x1),'EPTwg':function(_0x3158e7,_0x4ae2a8,_0x5b06e6,_0xf4602c){return _0x3158e7(_0x4ae2a8,_0x5b06e6,_0xf4602c);},'JVYPb':function(_0x40f312,_0x437637){return _0x40f312==_0x437637;}};if(_0x3cc284['JVYPb'](_0x2897(0xa),typeof WeakMap))var _0x2adb0b=new WeakMap(),_0x2c87db=new WeakMap();return(_interopRequireWildcard=function(_0x23333f,_0x41fa7b){const _0x2e4c2a={'WLsJq':_0x3cc284[_0x2897(0xb)],'whCKu':_0x2897(0xc),'LLyft':_0x2897(0xd),'zIyfU':_0x3cc284[_0x2897(0xe)],'RRUIr':_0x3cc284['SHAmc'],'YJZne':_0x3cc284['KnxuE'],'rORsb':_0x2897(0xf),'xTOnU':_0x3cc284[_0x2897(0x10)],'YUupH':_0x3cc284[_0x2897(0x11)],'JiHXu':_0x3cc284['VKXkm'],'sdKdq':_0x3cc284['uQecb'],'LbPaZ':_0x3cc284[_0x2897(0x12)],'ErtMe':_0x3cc284['KEbfO'],'VCDiD':_0x3cc284[_0x2897(0x13)]};if(_0x3cc284[_0x2897(0x14)](_0x3cc284['xNMVu'],_0x3cc284[_0x2897(0x15)])){if(_0x3cc284[_0x2897(0x16)](!_0x41fa7b,_0x23333f)&&_0x23333f[_0x2897(0x0)])return _0x23333f;var _0x25d7f4,_0x3a3d57,_0x493a86={'__proto__':null,'default':_0x23333f};if(null===_0x23333f||_0x3cc284['BfAIO']('object',typeof _0x23333f)&&_0x3cc284[_0x2897(0x17)](_0x3cc284[_0x2897(0x18)],typeof _0x23333f))return _0x493a86;if(_0x25d7f4=_0x41fa7b?_0x2c87db:_0x2adb0b){if(_0x3cc284[_0x2897(0x14)](_0x3cc284[_0x2897(0x19)],_0x3cc284[_0x2897(0x1a)]))switch(_0x1a7ab7){case _0x2e4c2a[_0x2897(0x1b)]:return{'title':_0x2e4c2a[_0x2897(0x1c)],'instructions':_0x2897(0x1d),'placeholder':_0x2e4c2a[_0x2897(0x1e)]};case _0x2897(0x1f):return{'title':_0x2897(0x20),'instructions':_0x2e4c2a[_0x2897(0x21)],'placeholder':_0x2e4c2a[_0x2897(0x22)]};case _0x2e4c2a[_0x2897(0x23)]:return{'title':_0x2e4c2a[_0x2897(0x24)],'instructions':_0x2e4c2a[_0x2897(0x25)],'placeholder':_0x2e4c2a[_0x2897(0x26)]};case _0x2e4c2a[_0x2897(0x27)]:return{'title':_0x2e4c2a[_0x2897(0x28)],'instructions':_0x2e4c2a[_0x2897(0x29)],'placeholder':_0x2e4c2a['ErtMe']};default:return{'title':_0x2897(0x2a)+_0x51c4f6,'instructions':_0x2e4c2a[_0x2897(0x2b)],'placeholder':_0x2897(0x2c)};}else{if(_0x25d7f4[_0x2897(0x2d)](_0x23333f))return _0x25d7f4[_0x2897(0x2e)](_0x23333f);_0x25d7f4[_0x2897(0x2f)](_0x23333f,_0x493a86);}}for(const _0x5de522 in _0x23333f)_0x3cc284[_0x2897(0x30)](_0x3cc284['lSYAV'],_0x5de522)&&{}['hasOwnProperty'][_0x2897(0x31)](_0x23333f,_0x5de522)&&((_0x3a3d57=(_0x25d7f4=Object['defineProperty'])&&Object[_0x2897(0x32)](_0x23333f,_0x5de522))&&(_0x3a3d57[_0x2897(0x2e)]||_0x3a3d57[_0x2897(0x2f)])?_0x3cc284[_0x2897(0x33)](_0x25d7f4,_0x493a86,_0x5de522,_0x3a3d57):_0x493a86[_0x5de522]=_0x23333f[_0x5de522]);return _0x493a86;}else _0x2f896d++;})(_0x586a4a,_0x1f6162);}function _0xeaaf(){const _0x5d07ab=['__esModule','default','chatgpt','Export\x20your\x20Claude\x20conversations\x20and\x20paste\x20the\x20JSON\x20data\x20below,\x20or\x20upload\x20your\x20exported\x20file.','Paste\x20your\x20Claude\x20conversation\x20JSON\x20here...','gemini','grok','Paste\x20your\x20conversation\x20data\x20below\x20or\x20upload\x20a\x20JSON\x20file.','nYXMO','XUKJs','function','GWrVQ','Connect\x20ChatGPT','Paste\x20your\x20ChatGPT\x20conversation\x20JSON\x20here...','qOeZd','Connect\x20Gemini','pYNqu','FebEM','OiIMR','QZWzd','Spnai','xNMVu','QrCnw','aNSWU','bBhkL','YOqVM','XOLUR','WLsJq','whCKu','Export\x20your\x20ChatGPT\x20conversations\x20from\x20Settings\x20→\x20Data\x20Controls\x20→\x20Export\x20data.\x20Then\x20upload\x20the\x20JSON\x20file\x20or\x20paste\x20your\x20conversation\x20data.','LLyft','claude','Connect\x20Claude','zIyfU','RRUIr','YJZne','rORsb','xTOnU','YUupH','JiHXu','sdKdq','LbPaZ','Connect\x20','VCDiD','Paste\x20your\x20conversation\x20JSON\x20here...','has','get','set','ZHUwP','call','getOwnPropertyDescriptor','EPTwg','log','Paste\x20your\x20Gemini\x20conversation\x20JSON\x20here...','Export\x20your\x20Grok\x20conversations\x20from\x20X/Twitter\x20and\x20paste\x20the\x20data\x20below.','Submit\x20error:','Failed\x20to\x20import\x20data.\x20Please\x20try\x20again.','assistant','hAJlF','UedZN','cviXr','Imported\x20Conversation','Error\x20parsing\x20conversation\x20data:','unknown','Failed\x20to\x20import\x20any\x20conversations.\x20Please\x20check\x20your\x20data\x20format.','paste','string','mspKn','ORoCq','user','lmbij','RgdKZ','dJosA','fUuNW','content://','Authentication\x20required.\x20Please\x20sign\x20in\x20first.','file','Please\x20paste\x20or\x20upload\x20conversation\x20data\x20first.','JKCZC','McLjm','XXTQn','XOcWK','No\x20valid\x20conversations\x20found\x20in\x20the\x20data.\x20Please\x20check\x20the\x20format.','onairos_jwt_token','1.0.0','conversation','Success!\x20🎉','CYdCW','slide','pageSheet','ios','height','(N/A)','top','none','Data\x20Preview','...','\x20characters','#FFFFFF','small','useState','eiRQN','TVOSb','YigPX','VUqZO','CfBXK','YVTDv','kLnmA','TxDQQ','aIaHZ','ukIJH','BjIIH','heTsT','qbSpl','qiPxW','jiNTU','TcsIV','object','LkgMC','wbwhm','elnnZ','human','KdMLx','aOeaE','KzLZx','pMevZ','parse','isArray','BMGyX','cjgwF','FDlIZ','bTsHW','lqNiM','length','RPWLr','ekryG','conv_','now','title','name','Conversation\x20','create_time','update_time','bcSyQ','TNORg','bJTRk','jbfQZ','kQaWG','rDeVx','AOScw','xfwgP','RzADj','VznJr','AYEdG','hasOwnProperty','OalwT','chat_messages','forEach','text','content','push','uuid','msg_','sender','beFoF','created_at','conversations','ZBLmC','mapping','IBBMY','vRvDs','LqHek','error','message','triggerHaptic','MKtXM','CEhNj','tJBCH','XxXzx','defineProperty','Invalid\x20JSON\x20format.\x20Please\x20check\x20your\x20data\x20and\x20try\x20again.','pAmZU','BooAm','XIVIk','UmllU','GyFeZ','fpRvx','values','fYTtY','parts','join','trim','kimgm','Bifxs','author','toISOString','sDwsn','messages','Cktha','vViZw','HapticType','BUTTON_PRESS','role','timestamp','elZAn','DYDWm','ixOTp','dspXO','tWQTS','manmQ','LlMYX','omHsS','OuNvF','vVtnS','PLnlm','KfFoS','lrciy','CUIaI','json','plainText','allFiles','Selected\x20file','startsWith','xrRmV','readFile','uri','utf8','SUCCESS','gyCZs','Failed\x20to\x20read\x20file.\x20Please\x20try\x20again\x20or\x20paste\x20data\x20manually.','VrBYJ','ERROR','kIjOQ','dIhTu','nSoVE','DXCeG','pKphN','QQNtL','CNkgm','sRYvD','getItem','QLSYi','AECuU','auth_token','mobile-','kFJsC','API_CONFIG','BASE_URL','/llm-data/store','Bearer\x20','stringify','conversationId','context','Platform','pDvHS','Version','mobile_app_import','Failed\x20to\x20store\x20conversation\x20','setItem','Alert','zHngl','\x20conversation','rHtgc','VFGwC','WpGTv','rDYQO','NJCGz','oHVnm','split','RkZPf','DwZVc','createElement','Modal','NDHsD','KeyboardAvoidingView','container','ZLHRZ','LyDgl','KpCXU','View','header','TouchableOpacity','Text','closeButtonText','kXkuI','headerTitle','closeButton','ScrollView','contentContainer','handled','instructionsContainer','instructionsText','tabContainer','tab','tabActive','gGXKf','tabText','HNCos','tabDisabled','rCKtW','GDNML','File\x20upload\x20requires\x20additional\x20dependencies.\x20Please\x20paste\x20data\x20instead.','tabTextActive','tabTextDisabled','XJkKu','DLvru','bfkXb','inputContainer','TextInput','textInput','COLORS','grey400','PcSeW','QQkUn','fileInputContainer','filePickButton','filePickIcon','filePickText','vUFFb','fileSelectedContainer','fileSelectedText','previewContainer','previewTitle','UCtcC','previewText','substring','rdYPC','aDaJN','CuHNP','footer','submitButton','submitButtonDisabled','ActivityIndicator','GVLeb','XRfDv','StyleSheet','surface','row','center','#E5E7EB','600','IBM\x20Plex\x20Sans','#3B82F6','Inter','#F3F4F6','500','grey500','grey800','grey300','Menlo','monospace','dashed','grey600','#F0FDF4','#FEF2F2','#DC2626','#10B981'];_0xeaaf=function(){return _0x5d07ab;};return _0xeaaf();}let DocumentPicker=null,RNFS=null;try{DocumentPicker=__ONAIROS_REQ_FUNC__(0x6);}catch(_0x4894b1){console[_0x2897(0x34)]('react-native-document-picker not available - file upload disabled');}try{RNFS=__ONAIROS_REQ_FUNC__(0x7);}catch(_0x3300a3){console[_0x2897(0x34)]('react-native-fs not available - file upload disabled');}const FILE_UPLOAD_AVAILABLE=DocumentPicker!==null&&RNFS!==null,LLMDataInputModal=({visible:_0x252b95,platform:_0xbda81f,platformName:_0x384102,onClose:_0x13e2ee,onSuccess:_0x487b46})=>{const _0x441ce5={'pSIdL':_0x2897(0x2),'TVOSb':_0x2897(0xc),'YigPX':'Export\x20your\x20ChatGPT\x20conversations\x20from\x20Settings\x20→\x20Data\x20Controls\x20→\x20Export\x20data.\x20Then\x20upload\x20the\x20JSON\x20file\x20or\x20paste\x20your\x20conversation\x20data.','VUqZO':_0x2897(0xd),'CfBXK':_0x2897(0x1f),'YVTDv':_0x2897(0x20),'kLnmA':_0x2897(0x3),'TxDQQ':_0x2897(0x4),'aIaHZ':'Connect\x20Gemini','ukIJH':'Export\x20your\x20Gemini\x20(Google\x20AI)\x20conversations\x20and\x20paste\x20the\x20data\x20below.','BjIIH':_0x2897(0x35),'heTsT':'grok','qbSpl':'Connect\x20Grok','qiPxW':_0x2897(0x36),'jiNTU':'Paste\x20your\x20Grok\x20conversation\x20JSON\x20here...','CUfqA':_0x2897(0x7),'XXcyq':'Paste\x20your\x20conversation\x20JSON\x20here...','bTsHW':'FvGJZ','lqNiM':function(_0x57f594,_0x62ee3b){return _0x57f594>_0x62ee3b;},'RPWLr':function(_0x58e265,_0x41083f){return _0x58e265!==_0x41083f;},'ZBLmC':function(_0x341281,_0x547b61){return _0x341281+_0x547b61;},'VFGwC':_0x2897(0x37),'rDYQO':_0x2897(0x38),'tJBCH':function(_0x4c6e9f,_0x4868c2){return _0x4c6e9f&&_0x4868c2;},'XxXzx':function(_0x4ad7ab,_0x15582c){return _0x4ad7ab===_0x15582c;},'LkgMC':function(_0x29760b,_0x2666bf){return _0x29760b!=_0x2666bf;},'elnnZ':_0x2897(0xa),'wbwhm':function(_0x296184,_0x29afd2){return _0x296184==_0x29afd2;},'KdMLx':_0x2897(0x39),'aOeaE':function(_0x4001dc,_0x4f121a){return _0x4001dc!==_0x4f121a;},'KzLZx':_0x2897(0x3a),'pMevZ':_0x2897(0x3b),'cjgwF':'ngFyQ','IBBMY':_0x2897(0x3c),'LqHek':_0x2897(0x3d),'bOrMJ':'fGtzQ','rdYPC':function(_0x2ea7e0,_0x2deb39){return _0x2ea7e0>_0x2deb39;},'CEhNj':_0x2897(0x3e),'WNSRC':'Invalid\x20JSON\x20format.\x20Please\x20check\x20your\x20data\x20and\x20try\x20again.','fYTtY':function(_0x329f04,_0x26e78c){return _0x329f04!==_0x26e78c;},'ZcrkW':function(_0x44415b,_0x38d6b9){return _0x44415b!==_0x38d6b9;},'kimgm':'LaRuP','Bifxs':function(_0x4dc0c7,_0x2727bb){return _0x4dc0c7===_0x2727bb;},'qjYXA':_0x2897(0x3f),'sDwsn':_0x2897(0x40),'eiRQN':_0x2897(0x41),'FcieR':_0x2897(0x42),'Cktha':_0x2897(0x43),'vViZw':_0x2897(0x44),'UmllU':_0x2897(0x45),'elZAn':_0x2897(0x46),'pAmZU':_0x2897(0x47),'BooAm':_0x2897(0x48),'XIVIk':function(_0x4fef98,_0x5e6028){return _0x4fef98===_0x5e6028;},'GyFeZ':_0x2897(0x49),'CUIaI':function(_0x3eebdd,_0x17de6a){return _0x3eebdd(_0x17de6a);},'xrRmV':_0x2897(0x4a),'gyCZs':'DOCUMENT_PICKER_CANCELED','eYRmV':'File\x20pick\x20error:','rHtgc':_0x2897(0x4b),'mLvdf':function(_0x415acb,_0x110b90){return _0x415acb===_0x110b90;},'GDNML':_0x2897(0x4c),'VrBYJ':_0x2897(0x4d),'kIjOQ':function(_0x42dd9f,_0x3835ba){return _0x42dd9f(_0x3835ba);},'dIhTu':_0x2897(0x4e),'nSoVE':_0x2897(0x4f),'DXCeG':function(_0x104092,_0x17a7f3){return _0x104092(_0x17a7f3);},'pKphN':function(_0x19fb9a,_0x6fc507){return _0x19fb9a===_0x6fc507;},'QQNtL':_0x2897(0x50),'CNkgm':_0x2897(0x51),'sRYvD':_0x2897(0x52),'QLSYi':_0x2897(0x53),'AECuU':'enoch_token','kFJsC':function(_0x326b57,_0x5f4b26,_0xd8c09b){return _0x326b57(_0x5f4b26,_0xd8c09b);},'pDvHS':_0x2897(0x54),'gKyyk':_0x2897(0x55),'zHngl':_0x2897(0x56),'WpGTv':function(_0x45f652,_0x3cba1d){return _0x45f652(_0x3cba1d);},'NJCGz':_0x2897(0x57),'oHVnm':'2|3|4|0|5|1','CpDLT':function(_0x4ce453){return _0x4ce453();},'RkZPf':function(_0x4a5256,_0x2e8790){return _0x4a5256(_0x2e8790);},'DwZVc':function(_0x51e572,_0x47d2d8){return _0x51e572(_0x47d2d8);},'gGXKf':function(_0x424663,_0xfec803){return _0x424663(_0xfec803);},'rCKtW':function(_0xa77a00,_0xe9d1bc){return _0xa77a00(_0xe9d1bc);},'TcsIV':function(_0x5c08a2){return _0x5c08a2();},'NDHsD':_0x2897(0x58),'WwpaD':_0x2897(0x59),'ZLHRZ':function(_0xb5a9f1,_0x2d833d){return _0xb5a9f1===_0x2d833d;},'LyDgl':_0x2897(0x5a),'KpCXU':_0x2897(0x5b),'kXkuI':'Cancel','uDkwD':function(_0x266924,_0x1960db){return _0x266924===_0x1960db;},'HNCos':'Paste\x20Data','XJkKu':'Upload\x20File\x20','DLvru':_0x2897(0x5c),'bfkXb':function(_0x444e46,_0x523fca){return _0x444e46===_0x523fca;},'PcSeW':_0x2897(0x5d),'QQkUn':_0x2897(0x5e),'vUFFb':function(_0x315c73,_0x5611f7){return _0x315c73||_0x5611f7;},'cKSqo':'Tap\x20to\x20select\x20a\x20file','UCtcC':_0x2897(0x5f),'aDaJN':_0x2897(0x60),'CuHNP':_0x2897(0x61),'GVLeb':_0x2897(0x62),'XRfDv':_0x2897(0x63),'YJSXE':'Import\x20Conversations'},[_0x2dc4e0,_0x51765a]=(0x0,_react[_0x2897(0x64)])(_0x441ce5[_0x2897(0x65)]),[_0x5e9ab1,_0x227c60]=(0x0,_react[_0x2897(0x64)])(''),[_0x18d24f,_0x36afe4]=(0x0,_react[_0x2897(0x64)])(![]),[_0x46ac80,_0x22ee01]=(0x0,_react['useState'])(null),[_0x48e7f6,_0x6a7ce7]=(0x0,_react[_0x2897(0x64)])(null),[_0x2cfbd4,_0x3d7caa]=(0x0,_react[_0x2897(0x64)])(null),_0xb3215d=()=>{switch(_0xbda81f){case _0x441ce5['pSIdL']:return{'title':_0x441ce5[_0x2897(0x66)],'instructions':_0x441ce5[_0x2897(0x67)],'placeholder':_0x441ce5[_0x2897(0x68)]};case _0x441ce5[_0x2897(0x69)]:return{'title':_0x441ce5[_0x2897(0x6a)],'instructions':_0x441ce5[_0x2897(0x6b)],'placeholder':_0x441ce5[_0x2897(0x6c)]};case _0x2897(0x5):return{'title':_0x441ce5[_0x2897(0x6d)],'instructions':_0x441ce5[_0x2897(0x6e)],'placeholder':_0x441ce5[_0x2897(0x6f)]};case _0x441ce5[_0x2897(0x70)]:return{'title':_0x441ce5[_0x2897(0x71)],'instructions':_0x441ce5[_0x2897(0x72)],'placeholder':_0x441ce5[_0x2897(0x73)]};default:return{'title':_0x2897(0x2a)+_0x384102,'instructions':_0x441ce5['CUfqA'],'placeholder':_0x441ce5['XXcyq']};}},{title:_0x1d0240,instructions:_0x540c20,placeholder:_0xa3eb93}=_0x441ce5[_0x2897(0x74)](_0xb3215d),_0x2ab052=_0x32497d=>{const _0x4a465c={'QIHvR':function(_0x4aff77,_0x344870){return _0x4aff77===_0x344870;},'bcSyQ':_0x2897(0x75),'TNORg':function(_0xcf04d7,_0x942f9b){return _0x441ce5[_0x2897(0x76)](_0xcf04d7,_0x942f9b);},'bJTRk':function(_0x4a38c5,_0x586d76){return _0x441ce5['RPWLr'](_0x4a38c5,_0x586d76);},'jbfQZ':function(_0x183036,_0x5d92a8,_0x263058,_0x258f89){return _0x183036(_0x5d92a8,_0x263058,_0x258f89);},'kQaWG':function(_0x160aed,_0x1eb796){return _0x441ce5[_0x2897(0x77)](_0x160aed,_0x1eb796);},'rDeVx':_0x441ce5[_0x2897(0x78)],'yMGdX':_0x2897(0x79),'beFoF':_0x441ce5[_0x2897(0x7a)]};if(_0x441ce5[_0x2897(0x7b)](_0x441ce5[_0x2897(0x7c)],_0x441ce5[_0x2897(0x7d)]))try{const _0x5ca9fc=JSON[_0x2897(0x7e)](_0x32497d),_0x268edd=[];if(Array[_0x2897(0x7f)](_0x5ca9fc))_0x2897(0x80)!==_0x441ce5[_0x2897(0x81)]?_0x5ca9fc['forEach']((_0x293a2f,_0x260160)=>{if(_0x2897(0x82)===_0x441ce5[_0x2897(0x83)]){if(_0x39a419['has'](_0x3afd43))return _0x225a5d[_0x2897(0x2e)](_0x38688f);_0x332234['set'](_0x4e26e1,_0x213204);}else{const _0x318cce=_0x1ad83d(_0x293a2f);if(_0x441ce5[_0x2897(0x84)](_0x318cce[_0x2897(0x85)],0x0)){if(_0x441ce5[_0x2897(0x86)]('FfnQl',_0x2897(0x87)))_0x268edd['push']({'conversationId':_0x293a2f['id']||_0x293a2f['conversation_id']||_0x2897(0x88)+_0x260160+'_'+Date[_0x2897(0x89)](),'messages':_0x318cce,'context':{'title':_0x293a2f[_0x2897(0x8a)]||_0x293a2f[_0x2897(0x8b)]||_0x2897(0x8c)+(_0x260160+0x1),'create_time':_0x293a2f[_0x2897(0x8d)]||_0x293a2f['created_at'],'update_time':_0x293a2f[_0x2897(0x8e)]||_0x293a2f['updated_at']}});else{const _0x194368={'AOScw':function(_0x1ce341,_0x1c4469){return _0x1ce341&&_0x1c4469;},'xfwgP':function(_0x2cba38,_0x10d609){return _0x4a465c['QIHvR'](_0x2cba38,_0x10d609);},'VGZju':_0x4a465c[_0x2897(0x8f)],'RzADj':function(_0x17020b,_0x1618cf){return _0x4a465c[_0x2897(0x90)](_0x17020b,_0x1618cf);},'VznJr':_0x2897(0xa),'AYEdG':function(_0x414713,_0x1087d6){return _0x4a465c[_0x2897(0x91)](_0x414713,_0x1087d6);},'BiqYk':_0x2897(0x1),'OalwT':function(_0x583dc3,_0x358a97,_0xa12c5a,_0x3ee441){return _0x4a465c[_0x2897(0x92)](_0x583dc3,_0x358a97,_0xa12c5a,_0x3ee441);}};if(_0x4a465c[_0x2897(0x93)](_0x4a465c[_0x2897(0x94)],typeof _0x2d12b4))var _0x74ccdd=new _0x296871(),_0x48f2cf=new _0x2a31cf();return(_0x4256be=function(_0x569fe7,_0x5e6edc){if(_0x194368[_0x2897(0x95)](!_0x5e6edc,_0x569fe7)&&_0x569fe7['__esModule'])return _0x569fe7;var _0x33732e,_0x2dd020,_0x2715a0={'__proto__':null,'default':_0x569fe7};if(_0x194368[_0x2897(0x96)](null,_0x569fe7)||_0x194368['VGZju']!=typeof _0x569fe7&&_0x194368[_0x2897(0x97)](_0x194368[_0x2897(0x98)],typeof _0x569fe7))return _0x2715a0;if(_0x33732e=_0x5e6edc?_0x48f2cf:_0x74ccdd){if(_0x33732e[_0x2897(0x2d)](_0x569fe7))return _0x33732e[_0x2897(0x2e)](_0x569fe7);_0x33732e[_0x2897(0x2f)](_0x569fe7,_0x2715a0);}for(const _0x5a2f19 in _0x569fe7)_0x194368[_0x2897(0x99)](_0x194368['BiqYk'],_0x5a2f19)&&{}[_0x2897(0x9a)][_0x2897(0x31)](_0x569fe7,_0x5a2f19)&&((_0x2dd020=(_0x33732e=_0x3a307d['defineProperty'])&&_0x3871af[_0x2897(0x32)](_0x569fe7,_0x5a2f19))&&(_0x2dd020[_0x2897(0x2e)]||_0x2dd020[_0x2897(0x2f)])?_0x194368[_0x2897(0x9b)](_0x33732e,_0x2715a0,_0x5a2f19,_0x2dd020):_0x2715a0[_0x5a2f19]=_0x569fe7[_0x5a2f19]);return _0x2715a0;})(_0x438ee8,_0xc9da15);}}}}):_0x13f090[_0x2897(0x9c)][_0x2897(0x9d)]((_0x118b61,_0x5ae2f1)=>{(_0x118b61[_0x2897(0x9e)]||_0x118b61[_0x2897(0x9f)])&&_0x2a5601[_0x2897(0xa0)]({'id':_0x118b61[_0x2897(0xa1)]||_0x2897(0xa2)+_0x5ae2f1,'role':_0x4a465c['QIHvR'](_0x118b61[_0x2897(0xa3)],_0x4a465c['yMGdX'])?'user':_0x4a465c[_0x2897(0xa4)],'content':_0x118b61['text']||_0x118b61[_0x2897(0x9f)],'timestamp':_0x118b61[_0x2897(0xa5)]});});else{if(_0x5ca9fc[_0x2897(0xa6)]&&Array[_0x2897(0x7f)](_0x5ca9fc['conversations']))_0x5ca9fc[_0x2897(0xa6)][_0x2897(0x9d)]((_0x42d7a2,_0x49a3c3)=>{const _0x124bc4=_0x1ad83d(_0x42d7a2);_0x124bc4[_0x2897(0x85)]>0x0&&_0x268edd[_0x2897(0xa0)]({'conversationId':_0x42d7a2['id']||_0x2897(0x88)+_0x49a3c3+'_'+Date[_0x2897(0x89)](),'messages':_0x124bc4,'context':{'title':_0x42d7a2[_0x2897(0x8a)]||_0x2897(0x8c)+_0x441ce5[_0x2897(0xa7)](_0x49a3c3,0x1),'create_time':_0x42d7a2['create_time'],'update_time':_0x42d7a2['update_time']}});});else{if(_0x5ca9fc[_0x2897(0xa8)]||_0x5ca9fc['messages']){const _0x50f0aa=_0x1ad83d(_0x5ca9fc);_0x441ce5[_0x2897(0x84)](_0x50f0aa['length'],0x0)&&(_0x441ce5[_0x2897(0xa9)]!==_0x2897(0xaa)?_0x268edd[_0x2897(0xa0)]({'conversationId':_0x5ca9fc['id']||_0x2897(0x88)+Date['now'](),'messages':_0x50f0aa,'context':{'title':_0x5ca9fc[_0x2897(0x8a)]||_0x441ce5[_0x2897(0xab)],'create_time':_0x5ca9fc[_0x2897(0x8d)],'update_time':_0x5ca9fc['update_time']}}):(_0x5b790d[_0x2897(0xac)](_0x441ce5['VFGwC'],_0x4c318c),_0x20cbb1(_0x1c862c[_0x2897(0xad)]||_0x441ce5['rDYQO']),(0x0,_0x11a522[_0x2897(0xae)])(_0x10cdad['HapticType']['ERROR'])));}else{if(_0x441ce5[_0x2897(0x86)](_0x441ce5['bOrMJ'],_0x2897(0xaf))){const _0x181cb3=_0x1ad83d(_0x5ca9fc);_0x441ce5['rdYPC'](_0x181cb3[_0x2897(0x85)],0x0)&&_0x268edd[_0x2897(0xa0)]({'conversationId':_0x2897(0x88)+Date[_0x2897(0x89)](),'messages':_0x181cb3,'context':{'title':_0x5ca9fc[_0x2897(0x8a)]||_0x441ce5[_0x2897(0xab)]}});}else _0x33dc33[_0x2897(0xac)]('Error\x20storing\x20conversation:',_0x3e4fc9);}}}return _0x268edd;}catch(_0x525418){console[_0x2897(0xac)](_0x441ce5[_0x2897(0xb0)],_0x525418);throw new Error(_0x441ce5['WNSRC']);}else{if(_0x441ce5[_0x2897(0xb1)](!_0x3535f4,_0x146d92)&&_0x10cbdb[_0x2897(0x0)])return _0xb84526;var _0x488a5a,_0x3cb1d9,_0x72fe74={'__proto__':null,'default':_0x311b50};if(_0x441ce5[_0x2897(0xb2)](null,_0x4d4241)||'object'!=typeof _0xa74a79&&_0x441ce5['LkgMC'](_0x441ce5[_0x2897(0x78)],typeof _0x2b07d1))return _0x72fe74;if(_0x488a5a=_0x1045cd?_0x31c909:_0x305092){if(_0x488a5a['has'](_0x2fd28b))return _0x488a5a['get'](_0xb61c89);_0x488a5a[_0x2897(0x2f)](_0xff0b1f,_0x72fe74);}for(const _0x2bd858 in _0x429296)_0x441ce5[_0x2897(0x86)](_0x2897(0x1),_0x2bd858)&&{}[_0x2897(0x9a)][_0x2897(0x31)](_0x41a3c3,_0x2bd858)&&((_0x3cb1d9=(_0x488a5a=_0xe3530e[_0x2897(0xb3)])&&_0x56a0dc[_0x2897(0x32)](_0x132fa1,_0x2bd858))&&(_0x3cb1d9[_0x2897(0x2e)]||_0x3cb1d9[_0x2897(0x2f)])?_0x488a5a(_0x72fe74,_0x2bd858,_0x3cb1d9):_0x72fe74[_0x2bd858]=_0xe347b2[_0x2bd858]);return _0x72fe74;}},_0x1ad83d=_0x34c895=>{const _0x57435a={'nhNpM':_0x2897(0x3e),'NLxfO':_0x2897(0xb4),'KfFoS':function(_0x40d18e,_0x1412ad){return _0x441ce5[_0x2897(0xa7)](_0x40d18e,_0x1412ad);},'omHsS':function(_0x15171e,_0x106b67){return _0x15171e===_0x106b67;},'lrciy':_0x2897(0x79),'SujiO':_0x441ce5[_0x2897(0xb5)],'OuNvF':_0x441ce5[_0x2897(0xb6)],'KXcjC':function(_0x5b57ed,_0x19c376){return _0x441ce5[_0x2897(0xb7)](_0x5b57ed,_0x19c376);},'vVtnS':_0x441ce5[_0x2897(0xb8)],'PLnlm':_0x441ce5[_0x2897(0x7a)]},_0x5254b3=[];if(_0x34c895[_0x2897(0xa8)]){if(_0x441ce5[_0x2897(0xb9)]!==_0x2897(0xba))Object[_0x2897(0xbb)](_0x34c895[_0x2897(0xa8)])[_0x2897(0x9d)]((_0x33dddb,_0x454b3e)=>{var _0x938ca9;if(_0x441ce5[_0x2897(0x7b)](_0x33dddb,null)&&_0x33dddb!==void 0x0&&_0x441ce5[_0x2897(0x7b)](_0x938ca9=_0x33dddb['message'],null)&&_0x938ca9!==void 0x0&&_0x441ce5[_0x2897(0xbc)](_0x938ca9=_0x938ca9[_0x2897(0x9f)],null)&&_0x441ce5['ZcrkW'](_0x938ca9,void 0x0)&&_0x938ca9[_0x2897(0xbd)]){const _0x334137=_0x33dddb['message'][_0x2897(0x9f)]['parts'][_0x2897(0xbe)]('\x0a');if(_0x334137[_0x2897(0xbf)]()){if(_0x441ce5[_0x2897(0xc0)]!==_0x441ce5[_0x2897(0xc0)]){_0x4a79ae[_0x2897(0xac)](_0x57435a['nhNpM'],_0x22ff3e);throw new _0x44e515(_0x57435a['NLxfO']);}else{var _0x2ec0ef;_0x5254b3[_0x2897(0xa0)]({'id':_0x33dddb[_0x2897(0xad)]['id']||_0x2897(0xa2)+_0x454b3e,'role':(_0x441ce5[_0x2897(0xc1)](_0x2ec0ef=_0x33dddb[_0x2897(0xad)][_0x2897(0xc2)],null)||_0x2ec0ef===void 0x0?void 0x0:_0x2ec0ef['role'])||_0x441ce5['qjYXA'],'content':_0x334137,'timestamp':_0x33dddb[_0x2897(0xad)]['create_time']?new Date(_0x33dddb['message'][_0x2897(0x8d)]*0x3e8)[_0x2897(0xc3)]():undefined});}}}});else throw new _0xe345cc(_0x441ce5[_0x2897(0xc4)]);}return _0x34c895[_0x2897(0xc5)]&&Array[_0x2897(0x7f)](_0x34c895[_0x2897(0xc5)])&&_0x34c895[_0x2897(0xc5)][_0x2897(0x9d)]((_0x2e80b8,_0x42a553)=>{const _0x2bde76={'GvGZK':_0x441ce5[_0x2897(0x65)],'DYDWm':function(_0x17dd23,_0x15d7d5){return _0x441ce5['RPWLr'](_0x17dd23,_0x15d7d5);},'NbXUn':function(_0x2dce28,_0x40c436){return _0x441ce5[_0x2897(0xb2)](_0x2dce28,_0x40c436);}};var _0x4f8990;const _0x50230a=_0x2e80b8['content']||_0x2e80b8['text']||_0x2e80b8['message']||'';if(_0x441ce5[_0x2897(0xc1)](typeof _0x50230a,_0x441ce5['FcieR'])&&_0x50230a[_0x2897(0xbf)]())_0x441ce5[_0x2897(0xc6)]===_0x441ce5[_0x2897(0xc7)]?(_0x210821(_0x2bde76['GvGZK']),(0x0,_0x48e954[_0x2897(0xae)])(_0x123fa9[_0x2897(0xc8)][_0x2897(0xc9)])):_0x5254b3[_0x2897(0xa0)]({'id':_0x2e80b8['id']||_0x2897(0xa2)+_0x42a553,'role':_0x2e80b8[_0x2897(0xca)]||_0x2e80b8[_0x2897(0xc2)]||_0x441ce5[_0x2897(0xb8)],'content':_0x50230a,'timestamp':_0x2e80b8[_0x2897(0xcb)]||_0x2e80b8[_0x2897(0xa5)]});else{if((_0x4f8990=_0x2e80b8['content'])!==null&&_0x4f8990!==void 0x0&&_0x4f8990[_0x2897(0xbd)]){if(_0x441ce5[_0x2897(0xcc)]===_0x441ce5[_0x2897(0xcc)])_0x5254b3[_0x2897(0xa0)]({'id':_0x2e80b8['id']||_0x2897(0xa2)+_0x42a553,'role':_0x2e80b8[_0x2897(0xca)]||_0x441ce5[_0x2897(0xb8)],'content':_0x2e80b8[_0x2897(0x9f)]['parts'][_0x2897(0xbe)]('\x0a'),'timestamp':_0x2e80b8[_0x2897(0xcb)]});else{const _0x5ef97b={'ixOTp':function(_0x569e34,_0x35cf70){return _0x2bde76[_0x2897(0xcd)](_0x569e34,_0x35cf70);},'ZllER':function(_0x4edff9,_0x1c23c2){return _0x2bde76[_0x2897(0xcd)](_0x4edff9,_0x1c23c2);},'dspXO':function(_0x5a0896,_0x215965){return _0x2bde76[_0x2897(0xcd)](_0x5a0896,_0x215965);},'tWQTS':function(_0x271d9c,_0x2fb979){return _0x2bde76[_0x2897(0xcd)](_0x271d9c,_0x2fb979);},'manmQ':function(_0x4b5ae5,_0xdbb90e){return _0x2bde76[_0x2897(0xcd)](_0x4b5ae5,_0xdbb90e);},'LlMYX':function(_0x1c2bf7,_0x5d03fd){return _0x2bde76['NbXUn'](_0x1c2bf7,_0x5d03fd);}};_0x3c1ae7[_0x2897(0xbb)](_0x4fbab4['mapping'])[_0x2897(0x9d)]((_0x3d3c78,_0x5d8276)=>{var _0x2f98b2;if(_0x5ef97b[_0x2897(0xce)](_0x3d3c78,null)&&_0x5ef97b['ZllER'](_0x3d3c78,void 0x0)&&_0x5ef97b['ZllER'](_0x2f98b2=_0x3d3c78['message'],null)&&_0x5ef97b[_0x2897(0xcf)](_0x2f98b2,void 0x0)&&_0x5ef97b[_0x2897(0xd0)](_0x2f98b2=_0x2f98b2['content'],null)&&_0x5ef97b[_0x2897(0xd1)](_0x2f98b2,void 0x0)&&_0x2f98b2[_0x2897(0xbd)]){const _0x72ad96=_0x3d3c78['message'][_0x2897(0x9f)][_0x2897(0xbd)][_0x2897(0xbe)]('\x0a');if(_0x72ad96[_0x2897(0xbf)]()){var _0x195393;_0xf1dd34[_0x2897(0xa0)]({'id':_0x3d3c78['message']['id']||'msg_'+_0x5d8276,'role':(_0x5ef97b[_0x2897(0xd2)](_0x195393=_0x3d3c78[_0x2897(0xad)][_0x2897(0xc2)],null)||_0x5ef97b['LlMYX'](_0x195393,void 0x0)?void 0x0:_0x195393[_0x2897(0xca)])||_0x2897(0x3f),'content':_0x72ad96,'timestamp':_0x3d3c78[_0x2897(0xad)]['create_time']?new _0x20bdb3(_0x3d3c78[_0x2897(0xad)][_0x2897(0x8d)]*0x3e8)['toISOString']():_0x144154});}}});}}}}),_0x34c895[_0x2897(0x9c)]&&Array[_0x2897(0x7f)](_0x34c895['chat_messages'])&&_0x34c895[_0x2897(0x9c)][_0x2897(0x9d)]((_0x4b6d0d,_0x57bf17)=>{_0x57435a[_0x2897(0xd3)](_0x57435a['SujiO'],_0x2897(0x47))?(_0x4b6d0d[_0x2897(0x9e)]||_0x4b6d0d[_0x2897(0x9f)])&&(_0x57435a[_0x2897(0xd4)]===_0x57435a[_0x2897(0xd4)]?_0x5254b3[_0x2897(0xa0)]({'id':_0x4b6d0d[_0x2897(0xa1)]||_0x2897(0xa2)+_0x57bf17,'role':_0x57435a['KXcjC'](_0x4b6d0d[_0x2897(0xa3)],_0x2897(0x79))?_0x57435a[_0x2897(0xd5)]:_0x57435a[_0x2897(0xd6)],'content':_0x4b6d0d['text']||_0x4b6d0d['content'],'timestamp':_0x4b6d0d[_0x2897(0xa5)]}):_0x3dae82[_0x2897(0xa0)]({'conversationId':_0x52a76d['id']||_0x2897(0x88)+_0x4f0725+'_'+_0x29bad0['now'](),'messages':_0x54dc85,'context':{'title':_0x3f183b[_0x2897(0x8a)]||_0x2897(0x8c)+_0x57435a[_0x2897(0xd7)](_0x5413b7,0x1),'create_time':_0x3d97bf[_0x2897(0x8d)],'update_time':_0x51413a[_0x2897(0x8e)]}})):(_0x186807[_0x2897(0x9e)]||_0x5b8cab[_0x2897(0x9f)])&&_0x19efd6[_0x2897(0xa0)]({'id':_0x3a91f7[_0x2897(0xa1)]||_0x2897(0xa2)+_0x79a88e,'role':_0x57435a[_0x2897(0xd3)](_0x78e4b7[_0x2897(0xa3)],_0x57435a[_0x2897(0xd8)])?_0x2897(0x45):_0x2897(0x39),'content':_0xbc0e05[_0x2897(0x9e)]||_0x4c8692[_0x2897(0x9f)],'timestamp':_0x16e2fb['created_at']});}),_0x5254b3;},_0x19368c=async()=>{if(!FILE_UPLOAD_AVAILABLE){_0x441ce5['CUIaI'](_0x22ee01,'File upload requires react-native-document-picker and react-native-fs. Please paste data instead.');return;}try{_0x441ce5[_0x2897(0xd9)](_0x22ee01,null);const {pick:_0xd39d15,types:_0x362204}=DocumentPicker,_0x4dc493=await _0x441ce5[_0x2897(0xd9)](_0xd39d15,{'type':[_0x362204[_0x2897(0xda)],_0x362204[_0x2897(0xdb)],_0x362204[_0x2897(0xdc)]]});if(_0x4dc493&&_0x4dc493[0x0]){const _0x18d0c5=_0x4dc493[0x0];_0x441ce5[_0x2897(0xd9)](_0x6a7ce7,_0x18d0c5[_0x2897(0x8b)]||_0x2897(0xdd));let _0x1a41a2;_0x18d0c5['uri'][_0x2897(0xde)](_0x441ce5[_0x2897(0xdf)])?_0x1a41a2=await RNFS[_0x2897(0xe0)](_0x18d0c5[_0x2897(0xe1)],_0x2897(0xe2)):_0x1a41a2=await RNFS[_0x2897(0xe0)](_0x18d0c5[_0x2897(0xe1)],_0x2897(0xe2)),_0x3d7caa(_0x1a41a2),_0x227c60(_0x1a41a2),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xe3)]);}}catch(_0x59c9e3){_0x441ce5[_0x2897(0xbc)](_0x59c9e3['code'],_0x441ce5[_0x2897(0xe4)])&&(console['error'](_0x441ce5['eYRmV'],_0x59c9e3),_0x441ce5['CUIaI'](_0x22ee01,_0x2897(0xe5)),(0x0,_haptics[_0x2897(0xae)])(_haptics['HapticType']['ERROR']));}},_0x47bd2a=async()=>{const _0x1ea508=_0x441ce5['mLvdf'](_0x2dc4e0,_0x441ce5['GDNML'])&&_0x2cfbd4?_0x2cfbd4:_0x5e9ab1;if(!_0x1ea508['trim']()){_0x441ce5[_0x2897(0xd9)](_0x22ee01,_0x441ce5[_0x2897(0xe6)]),(0x0,_haptics[_0x2897(0xae)])(_haptics[_0x2897(0xc8)][_0x2897(0xe7)]);return;}_0x441ce5[_0x2897(0xe8)](_0x36afe4,!![]),_0x22ee01(null);try{if(_0x441ce5[_0x2897(0xe9)]!==_0x441ce5[_0x2897(0xea)]){const _0x4c384f=_0x441ce5[_0x2897(0xeb)](_0x2ab052,_0x1ea508);if(_0x441ce5[_0x2897(0xec)](_0x4c384f[_0x2897(0x85)],0x0)){if(_0x441ce5[_0x2897(0xed)]===_0x441ce5[_0x2897(0xee)])_0x5024dc['push']({'conversationId':_0x25c425['id']||_0x2897(0x88)+_0x294b15[_0x2897(0x89)](),'messages':_0x4683b2,'context':{'title':_0x1c4162[_0x2897(0x8a)]||_0x441ce5[_0x2897(0xab)],'create_time':_0x5d436b[_0x2897(0x8d)],'update_time':_0x9c4b4[_0x2897(0x8e)]}});else throw new Error(_0x441ce5[_0x2897(0xef)]);}const _0x5d44aa=await _asyncStorage[_0x2897(0x1)][_0x2897(0xf0)](_0x441ce5[_0x2897(0xf1)])||await _asyncStorage[_0x2897(0x1)][_0x2897(0xf0)](_0x441ce5[_0x2897(0xf2)])||await _asyncStorage['default'][_0x2897(0xf0)](_0x2897(0xf3));if(!_0x5d44aa)throw new Error(_0x2897(0x4b));const _0x202c39=_0x2897(0xf4)+_0xbda81f;let _0x3258b9=0x0;for(const _0x20c1bb of _0x4c384f){try{const _0x2fd6ca=await _0x441ce5[_0x2897(0xf5)](fetch,_api[_0x2897(0xf6)][_0x2897(0xf7)]+_0x2897(0xf8),{'method':'POST','headers':{'Content-Type':'application/json','Authorization':_0x2897(0xf9)+_0x5d44aa},'body':JSON[_0x2897(0xfa)]({'platform':_0x202c39,'conversationData':{'conversationId':_0x20c1bb[_0x2897(0xfb)],'messages':_0x20c1bb['messages'],'context':_0x20c1bb[_0x2897(0xfc)],'mobileMetadata':{'platform':_reactNative[_0x2897(0xfd)]['OS'],'appVersion':_0x441ce5[_0x2897(0xfe)],'osVersion':_reactNative[_0x2897(0xfd)][_0x2897(0xff)],'isOfflineSync':![]}},'memoryType':_0x441ce5['gKyyk'],'metadata':{'source':_0x2897(0x100),'importedAt':new Date()[_0x2897(0xc3)](),'originalPlatform':_0xbda81f}})});if(_0x2fd6ca['ok'])_0x3258b9++;else{const _0x2fa0e2=await _0x2fd6ca[_0x2897(0x9e)]();console[_0x2897(0xac)](_0x2897(0x101)+_0x20c1bb[_0x2897(0xfb)]+':',_0x2fa0e2);}}catch(_0x41a4e2){console['error']('Error\x20storing\x20conversation:',_0x41a4e2);}}if(_0x3258b9>0x0)await _asyncStorage[_0x2897(0x1)][_0x2897(0x102)]('@onairos:llm_connected:'+_0xbda81f,JSON['stringify']({'connected':!![],'platform':_0xbda81f,'conversationsCount':_0x3258b9,'lastSyncAt':new Date()[_0x2897(0xc3)]()})),(0x0,_haptics[_0x2897(0xae)])(_haptics[_0x2897(0xc8)][_0x2897(0xe3)]),_reactNative[_0x2897(0x103)]['alert'](_0x441ce5[_0x2897(0x104)],'Successfully\x20imported\x20'+_0x3258b9+_0x2897(0x105)+(_0x3258b9>0x1?'s':'')+'\x20from\x20'+_0x384102+'.',[{'text':'OK','onPress':()=>_0x487b46(_0xbda81f)}]);else throw new Error(_0x441ce5[_0x2897(0xc4)]);}else throw new _0x22c0bc(_0x441ce5[_0x2897(0x106)]);}catch(_0x30be5e){console['error'](_0x441ce5[_0x2897(0x107)],_0x30be5e),_0x441ce5[_0x2897(0x108)](_0x22ee01,_0x30be5e[_0x2897(0xad)]||_0x441ce5[_0x2897(0x109)]),(0x0,_haptics[_0x2897(0xae)])(_haptics[_0x2897(0xc8)][_0x2897(0xe7)]);}finally{_0x441ce5[_0x2897(0x108)](_0x36afe4,![]);}},_0x171ffd=()=>{if(_0x441ce5['NJCGz']===_0x441ce5[_0x2897(0x10a)]){const _0x1275c8=_0x441ce5[_0x2897(0x10b)][_0x2897(0x10c)]('|');let _0x512f8f=0x0;while(!![]){switch(_0x1275c8[_0x512f8f++]){case'0':_0x441ce5[_0x2897(0xe8)](_0x22ee01,null);continue;case'1':_0x441ce5['CpDLT'](_0x13e2ee);continue;case'2':_0x441ce5[_0x2897(0x10d)](_0x227c60,'');continue;case'3':_0x441ce5[_0x2897(0x10e)](_0x3d7caa,null);continue;case'4':_0x6a7ce7(null);continue;case'5':_0x441ce5['RkZPf'](_0x51765a,_0x441ce5['eiRQN']);continue;}break;}}else throw new _0x548636(_0x441ce5['sRYvD']);};return _react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x110)],{'visible':_0x252b95,'animationType':_0x441ce5[_0x2897(0x111)],'presentationStyle':_0x441ce5['WwpaD'],'onRequestClose':_0x171ffd},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x112)],{'style':styles[_0x2897(0x113)],'behavior':_0x441ce5[_0x2897(0x114)](_reactNative[_0x2897(0xfd)]['OS'],_0x441ce5[_0x2897(0x115)])?'padding':_0x441ce5[_0x2897(0x116)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x118)]},_react['default']['createElement'](_reactNative[_0x2897(0x119)],{'style':styles['closeButton'],'onPress':_0x171ffd},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x11b)]},_0x441ce5[_0x2897(0x11c)])),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x11d)]},_0x1d0240),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x11e)]})),_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x11f)],{'style':styles[_0x2897(0x9f)],'contentContainerStyle':styles[_0x2897(0x120)],'keyboardShouldPersistTaps':_0x2897(0x121)},_react['default']['createElement'](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x122)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['Text'],{'style':styles[_0x2897(0x123)]},_0x540c20)),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['View'],{'style':styles[_0x2897(0x124)]},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x119)],{'style':[styles[_0x2897(0x125)],_0x2dc4e0===_0x441ce5[_0x2897(0x65)]&&styles[_0x2897(0x126)]],'onPress':()=>{_0x441ce5[_0x2897(0x127)](_0x51765a,_0x2897(0x41)),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xc9)]);}},_react['default']['createElement'](_reactNative[_0x2897(0x11a)],{'style':[styles[_0x2897(0x128)],_0x441ce5['uDkwD'](_0x2dc4e0,_0x441ce5[_0x2897(0x65)])&&styles['tabTextActive']]},_0x441ce5[_0x2897(0x129)])),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x119)],{'style':[styles[_0x2897(0x125)],_0x441ce5['ZLHRZ'](_0x2dc4e0,'file')&&styles[_0x2897(0x126)],!FILE_UPLOAD_AVAILABLE&&styles[_0x2897(0x12a)]],'onPress':()=>{FILE_UPLOAD_AVAILABLE?(_0x441ce5[_0x2897(0x12b)](_0x51765a,_0x441ce5[_0x2897(0x12c)]),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xc9)])):(_0x441ce5[_0x2897(0xe8)](_0x22ee01,_0x2897(0x12d)),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xe7)]));}},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':[styles[_0x2897(0x128)],_0x2dc4e0===_0x441ce5[_0x2897(0x12c)]&&styles[_0x2897(0x12e)],!FILE_UPLOAD_AVAILABLE&&styles[_0x2897(0x12f)]]},_0x441ce5[_0x2897(0x130)],_0x441ce5['tJBCH'](!FILE_UPLOAD_AVAILABLE,_0x441ce5[_0x2897(0x131)])))),_0x441ce5[_0x2897(0x132)](_0x2dc4e0,_0x441ce5['eiRQN'])?_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x133)]},_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x134)],{'style':styles[_0x2897(0x135)],'multiline':!![],'placeholder':_0xa3eb93,'placeholderTextColor':_theme[_0x2897(0x136)][_0x2897(0x137)],'value':_0x5e9ab1,'onChangeText':_0x227c60,'textAlignVertical':_0x441ce5[_0x2897(0x138)],'autoCapitalize':_0x441ce5[_0x2897(0x139)],'autoCorrect':![]})):_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['View'],{'style':styles[_0x2897(0x13a)]},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x119)],{'style':styles[_0x2897(0x13b)],'onPress':_0x19368c},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x13c)]},'📁'),_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x13d)]},_0x441ce5[_0x2897(0x13e)](_0x48e7f6,_0x441ce5['cKSqo']))),_0x48e7f6&&_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x13f)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['Text'],{'style':styles[_0x2897(0x140)]},'✓\x20',_0x48e7f6))),_0x46ac80&&_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles['errorContainer']},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles['errorText']},_0x46ac80)),_0x5e9ab1[_0x2897(0x85)]>0x0&&_react['default']['createElement'](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x141)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x142)]},_0x441ce5[_0x2897(0x143)]),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['Text'],{'style':styles[_0x2897(0x144)],'numberOfLines':0x5},_0x5e9ab1[_0x2897(0x145)](0x0,0x1f4),_0x441ce5[_0x2897(0x146)](_0x5e9ab1[_0x2897(0x85)],0x1f4)?_0x441ce5[_0x2897(0x147)]:''),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles['previewInfo']},_0x5e9ab1[_0x2897(0x85)]['toLocaleString'](),_0x441ce5[_0x2897(0x148)]))),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['View'],{'style':styles[_0x2897(0x149)]},_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x119)],{'style':[styles[_0x2897(0x14a)],(!_0x5e9ab1['trim']()||_0x18d24f)&&styles[_0x2897(0x14b)]],'onPress':_0x47bd2a,'disabled':!_0x5e9ab1[_0x2897(0xbf)]()||_0x18d24f},_0x18d24f?_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x14c)],{'color':_0x441ce5[_0x2897(0x14d)],'size':_0x441ce5[_0x2897(0x14e)]}):_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles['submitButtonText']},_0x441ce5['YJSXE'])))));},styles=_reactNative[_0x2897(0x14f)]['create']({'container':{'flex':0x1,'backgroundColor':_theme[_0x2897(0x136)][_0x2897(0x150)]},'header':{'flexDirection':_0x2897(0x151),'alignItems':_0x2897(0x152),'justifyContent':'space-between','paddingHorizontal':0x10,'paddingTop':_reactNative[_0x2897(0xfd)]['OS']===_0x2897(0x5a)?0xc:0x10,'paddingBottom':0xc,'borderBottomWidth':0x1,'borderBottomColor':_0x2897(0x153)},'headerTitle':{'fontSize':0x11,'fontWeight':_0x2897(0x154),'color':_theme[_0x2897(0x136)]['grey800'],'fontFamily':_0x2897(0x155)},'closeButton':{'width':0x3c},'closeButtonText':{'fontSize':0x10,'color':_0x2897(0x156),'fontFamily':_0x2897(0x157)},'content':{'flex':0x1},'contentContainer':{'padding':0x14,'paddingBottom':0x28},'instructionsContainer':{'backgroundColor':'#F0F9FF','borderRadius':0xc,'padding':0x10,'marginBottom':0x14},'instructionsText':{'fontSize':0xe,'lineHeight':0x14,'color':'#0369A1','fontFamily':_0x2897(0x157)},'tabContainer':{'flexDirection':_0x2897(0x151),'backgroundColor':_0x2897(0x158),'borderRadius':0xa,'padding':0x4,'marginBottom':0x14},'tab':{'flex':0x1,'paddingVertical':0xa,'borderRadius':0x8,'alignItems':'center'},'tabActive':{'backgroundColor':_0x2897(0x62),'shadowColor':'#000','shadowOffset':{'width':0x0,'height':0x1},'shadowOpacity':0.1,'shadowRadius':0x2,'elevation':0x2},'tabText':{'fontSize':0xe,'fontWeight':_0x2897(0x159),'color':_theme[_0x2897(0x136)][_0x2897(0x15a)],'fontFamily':'Inter'},'tabTextActive':{'color':_theme['COLORS'][_0x2897(0x15b)]},'tabDisabled':{'opacity':0.5},'tabTextDisabled':{'color':_theme[_0x2897(0x136)][_0x2897(0x137)]},'inputContainer':{'marginBottom':0x14},'textInput':{'backgroundColor':_0x2897(0x62),'borderWidth':0x1,'borderColor':_theme[_0x2897(0x136)][_0x2897(0x15c)],'borderRadius':0xc,'padding':0x10,'minHeight':0xc8,'fontSize':0xe,'fontFamily':_reactNative['Platform']['OS']===_0x2897(0x5a)?_0x2897(0x15d):_0x2897(0x15e),'color':_theme[_0x2897(0x136)][_0x2897(0x15b)]},'fileInputContainer':{'marginBottom':0x14},'filePickButton':{'backgroundColor':_0x2897(0x62),'borderWidth':0x2,'borderColor':_theme[_0x2897(0x136)]['grey300'],'borderStyle':_0x2897(0x15f),'borderRadius':0xc,'padding':0x28,'alignItems':_0x2897(0x152),'justifyContent':'center'},'filePickIcon':{'fontSize':0x28,'marginBottom':0xc},'filePickText':{'fontSize':0xf,'color':_theme['COLORS'][_0x2897(0x160)],'fontFamily':_0x2897(0x157)},'fileSelectedContainer':{'marginTop':0xc,'backgroundColor':_0x2897(0x161),'borderRadius':0x8,'padding':0xc},'fileSelectedText':{'fontSize':0xe,'color':'#166534','fontFamily':_0x2897(0x157),'fontWeight':'500'},'errorContainer':{'backgroundColor':_0x2897(0x162),'borderRadius':0x8,'padding':0xc,'marginBottom':0x10},'errorText':{'fontSize':0xe,'color':_0x2897(0x163),'fontFamily':'Inter'},'previewContainer':{'backgroundColor':'#F3F4F6','borderRadius':0xc,'padding':0x10},'previewTitle':{'fontSize':0xe,'fontWeight':_0x2897(0x154),'color':_theme[_0x2897(0x136)][_0x2897(0x15b)],'marginBottom':0x8,'fontFamily':_0x2897(0x157)},'previewText':{'fontSize':0xc,'color':_theme[_0x2897(0x136)][_0x2897(0x160)],'fontFamily':_reactNative[_0x2897(0xfd)]['OS']===_0x2897(0x5a)?_0x2897(0x15d):_0x2897(0x15e),'lineHeight':0x12},'previewInfo':{'fontSize':0xc,'color':_theme['COLORS']['grey500'],'marginTop':0x8,'fontFamily':_0x2897(0x157)},'footer':{'padding':0x14,'paddingBottom':_reactNative['Platform']['OS']===_0x2897(0x5a)?0x22:0x14,'borderTopWidth':0x1,'borderTopColor':_0x2897(0x153),'backgroundColor':_theme[_0x2897(0x136)][_0x2897(0x150)]},'submitButton':{'backgroundColor':_0x2897(0x164),'borderRadius':0xc,'paddingVertical':0x10,'alignItems':_0x2897(0x152),'justifyContent':_0x2897(0x152)},'submitButtonDisabled':{'backgroundColor':_theme[_0x2897(0x136)][_0x2897(0x15c)]},'submitButtonText':{'fontSize':0x10,'fontWeight':_0x2897(0x154),'color':_0x2897(0x62),'fontFamily':'Inter'}});function _0x2897(_0xeaaf2a,_0x289767){_0xeaaf2a=_0xeaaf2a-0x0;const _0x3cbd5a=_0xeaaf();let _0x5397a4=_0x3cbd5a[_0xeaaf2a];return _0x5397a4;}var _default=exports[_0x2897(0x1)]=LLMDataInputModal;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _theme = require("../theme");
10
+ var _haptics = require("../utils/haptics");
11
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
12
+ var _api = require("../config/api");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ /**
16
+ * LLMDataInputModal.tsx
17
+ *
18
+ * Modal for inputting LLM conversation data via file upload or paste.
19
+ * Supports ChatGPT, Claude, Gemini, and Grok data formats.
20
+ */
21
+
22
+ // Optional dependencies - file upload won't work without them
23
+ let DocumentPicker = null;
24
+ let RNFS = null;
25
+ try {
26
+ DocumentPicker = require('react-native-document-picker');
27
+ } catch (e) {
28
+ console.log('react-native-document-picker not available - file upload disabled');
29
+ }
30
+ try {
31
+ RNFS = require('react-native-fs');
32
+ } catch (e) {
33
+ console.log('react-native-fs not available - file upload disabled');
34
+ }
35
+ const FILE_UPLOAD_AVAILABLE = DocumentPicker !== null && RNFS !== null;
36
+ const LLMDataInputModal = ({
37
+ visible,
38
+ platform,
39
+ platformName,
40
+ onClose,
41
+ onSuccess
42
+ }) => {
43
+ const [inputMode, setInputMode] = (0, _react.useState)('paste');
44
+ const [pastedData, setPastedData] = (0, _react.useState)('');
45
+ const [isLoading, setIsLoading] = (0, _react.useState)(false);
46
+ const [error, setError] = (0, _react.useState)(null);
47
+ const [selectedFileName, setSelectedFileName] = (0, _react.useState)(null);
48
+ const [fileContent, setFileContent] = (0, _react.useState)(null);
49
+
50
+ // Get platform-specific instructions
51
+ const getInstructions = () => {
52
+ switch (platform) {
53
+ case 'chatgpt':
54
+ return {
55
+ title: 'Connect ChatGPT',
56
+ instructions: 'Export your ChatGPT conversations from Settings → Data Controls → Export data. Then upload the JSON file or paste your conversation data.',
57
+ placeholder: 'Paste your ChatGPT conversation JSON here...'
58
+ };
59
+ case 'claude':
60
+ return {
61
+ title: 'Connect Claude',
62
+ instructions: 'Export your Claude conversations and paste the JSON data below, or upload your exported file.',
63
+ placeholder: 'Paste your Claude conversation JSON here...'
64
+ };
65
+ case 'gemini':
66
+ return {
67
+ title: 'Connect Gemini',
68
+ instructions: 'Export your Gemini (Google AI) conversations and paste the data below.',
69
+ placeholder: 'Paste your Gemini conversation JSON here...'
70
+ };
71
+ case 'grok':
72
+ return {
73
+ title: 'Connect Grok',
74
+ instructions: 'Export your Grok conversations from X/Twitter and paste the data below.',
75
+ placeholder: 'Paste your Grok conversation JSON here...'
76
+ };
77
+ default:
78
+ return {
79
+ title: `Connect ${platformName}`,
80
+ instructions: 'Paste your conversation data below or upload a JSON file.',
81
+ placeholder: 'Paste your conversation JSON here...'
82
+ };
83
+ }
84
+ };
85
+ const {
86
+ title,
87
+ instructions,
88
+ placeholder
89
+ } = getInstructions();
90
+
91
+ // Parse conversation data based on platform format
92
+ const parseConversationData = data => {
93
+ try {
94
+ const parsed = JSON.parse(data);
95
+ const conversations = [];
96
+
97
+ // Handle ChatGPT export format
98
+ if (Array.isArray(parsed)) {
99
+ // Array of conversations
100
+ parsed.forEach((conv, index) => {
101
+ const messages = extractMessages(conv);
102
+ if (messages.length > 0) {
103
+ conversations.push({
104
+ conversationId: conv.id || conv.conversation_id || `conv_${index}_${Date.now()}`,
105
+ messages,
106
+ context: {
107
+ title: conv.title || conv.name || `Conversation ${index + 1}`,
108
+ create_time: conv.create_time || conv.created_at,
109
+ update_time: conv.update_time || conv.updated_at
110
+ }
111
+ });
112
+ }
113
+ });
114
+ } else if (parsed.conversations && Array.isArray(parsed.conversations)) {
115
+ // ChatGPT export with conversations array
116
+ parsed.conversations.forEach((conv, index) => {
117
+ const messages = extractMessages(conv);
118
+ if (messages.length > 0) {
119
+ conversations.push({
120
+ conversationId: conv.id || `conv_${index}_${Date.now()}`,
121
+ messages,
122
+ context: {
123
+ title: conv.title || `Conversation ${index + 1}`,
124
+ create_time: conv.create_time,
125
+ update_time: conv.update_time
126
+ }
127
+ });
128
+ }
129
+ });
130
+ } else if (parsed.mapping || parsed.messages) {
131
+ // Single conversation format
132
+ const messages = extractMessages(parsed);
133
+ if (messages.length > 0) {
134
+ conversations.push({
135
+ conversationId: parsed.id || `conv_${Date.now()}`,
136
+ messages,
137
+ context: {
138
+ title: parsed.title || 'Imported Conversation',
139
+ create_time: parsed.create_time,
140
+ update_time: parsed.update_time
141
+ }
142
+ });
143
+ }
144
+ } else {
145
+ // Try to handle as a single object with message array
146
+ const messages = extractMessages(parsed);
147
+ if (messages.length > 0) {
148
+ conversations.push({
149
+ conversationId: `conv_${Date.now()}`,
150
+ messages,
151
+ context: {
152
+ title: parsed.title || 'Imported Conversation'
153
+ }
154
+ });
155
+ }
156
+ }
157
+ return conversations;
158
+ } catch (e) {
159
+ console.error('Error parsing conversation data:', e);
160
+ throw new Error('Invalid JSON format. Please check your data and try again.');
161
+ }
162
+ };
163
+
164
+ // Extract messages from various formats
165
+ const extractMessages = conv => {
166
+ const messages = [];
167
+
168
+ // ChatGPT mapping format
169
+ if (conv.mapping) {
170
+ Object.values(conv.mapping).forEach((node, index) => {
171
+ var _node$message;
172
+ if (node !== null && node !== void 0 && (_node$message = node.message) !== null && _node$message !== void 0 && (_node$message = _node$message.content) !== null && _node$message !== void 0 && _node$message.parts) {
173
+ const content = node.message.content.parts.join('\n');
174
+ if (content.trim()) {
175
+ var _node$message$author;
176
+ messages.push({
177
+ id: node.message.id || `msg_${index}`,
178
+ role: ((_node$message$author = node.message.author) === null || _node$message$author === void 0 ? void 0 : _node$message$author.role) || 'unknown',
179
+ content,
180
+ timestamp: node.message.create_time ? new Date(node.message.create_time * 1000).toISOString() : undefined
181
+ });
182
+ }
183
+ }
184
+ });
185
+ }
186
+
187
+ // Direct messages array
188
+ if (conv.messages && Array.isArray(conv.messages)) {
189
+ conv.messages.forEach((msg, index) => {
190
+ var _msg$content;
191
+ const content = msg.content || msg.text || msg.message || '';
192
+ if (typeof content === 'string' && content.trim()) {
193
+ messages.push({
194
+ id: msg.id || `msg_${index}`,
195
+ role: msg.role || msg.author || 'user',
196
+ content,
197
+ timestamp: msg.timestamp || msg.created_at
198
+ });
199
+ } else if ((_msg$content = msg.content) !== null && _msg$content !== void 0 && _msg$content.parts) {
200
+ messages.push({
201
+ id: msg.id || `msg_${index}`,
202
+ role: msg.role || 'user',
203
+ content: msg.content.parts.join('\n'),
204
+ timestamp: msg.timestamp
205
+ });
206
+ }
207
+ });
208
+ }
209
+
210
+ // Claude format
211
+ if (conv.chat_messages && Array.isArray(conv.chat_messages)) {
212
+ conv.chat_messages.forEach((msg, index) => {
213
+ if (msg.text || msg.content) {
214
+ messages.push({
215
+ id: msg.uuid || `msg_${index}`,
216
+ role: msg.sender === 'human' ? 'user' : 'assistant',
217
+ content: msg.text || msg.content,
218
+ timestamp: msg.created_at
219
+ });
220
+ }
221
+ });
222
+ }
223
+ return messages;
224
+ };
225
+
226
+ // Handle file selection
227
+ const handleFilePick = async () => {
228
+ if (!FILE_UPLOAD_AVAILABLE) {
229
+ setError('File upload requires react-native-document-picker and react-native-fs. Please paste data instead.');
230
+ return;
231
+ }
232
+ try {
233
+ setError(null);
234
+ const {
235
+ pick,
236
+ types
237
+ } = DocumentPicker;
238
+ const result = await pick({
239
+ type: [types.json, types.plainText, types.allFiles]
240
+ });
241
+ if (result && result[0]) {
242
+ const file = result[0];
243
+ setSelectedFileName(file.name || 'Selected file');
244
+
245
+ // Read file content
246
+ let content;
247
+ if (file.uri.startsWith('content://')) {
248
+ // Android content URI
249
+ content = await RNFS.readFile(file.uri, 'utf8');
250
+ } else {
251
+ content = await RNFS.readFile(file.uri, 'utf8');
252
+ }
253
+ setFileContent(content);
254
+ setPastedData(content);
255
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.SUCCESS);
256
+ }
257
+ } catch (err) {
258
+ if (err.code !== 'DOCUMENT_PICKER_CANCELED') {
259
+ console.error('File pick error:', err);
260
+ setError('Failed to read file. Please try again or paste data manually.');
261
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
262
+ }
263
+ }
264
+ };
265
+
266
+ // Submit data to backend
267
+ const handleSubmit = async () => {
268
+ const dataToProcess = inputMode === 'file' && fileContent ? fileContent : pastedData;
269
+ if (!dataToProcess.trim()) {
270
+ setError('Please paste or upload conversation data first.');
271
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
272
+ return;
273
+ }
274
+ setIsLoading(true);
275
+ setError(null);
276
+ try {
277
+ // Parse the conversation data
278
+ const conversations = parseConversationData(dataToProcess);
279
+ if (conversations.length === 0) {
280
+ throw new Error('No valid conversations found in the data. Please check the format.');
281
+ }
282
+
283
+ // Get auth token
284
+ const authToken = (await _asyncStorage.default.getItem('onairos_jwt_token')) || (await _asyncStorage.default.getItem('enoch_token')) || (await _asyncStorage.default.getItem('auth_token'));
285
+ if (!authToken) {
286
+ throw new Error('Authentication required. Please sign in first.');
287
+ }
288
+
289
+ // Send each conversation to backend
290
+ const mobilePlatform = `mobile-${platform}`;
291
+ let successCount = 0;
292
+ for (const conversation of conversations) {
293
+ try {
294
+ const response = await fetch(`${_api.API_CONFIG.BASE_URL}/llm-data/store`, {
295
+ method: 'POST',
296
+ headers: {
297
+ 'Content-Type': 'application/json',
298
+ 'Authorization': `Bearer ${authToken}`
299
+ },
300
+ body: JSON.stringify({
301
+ platform: mobilePlatform,
302
+ conversationData: {
303
+ conversationId: conversation.conversationId,
304
+ messages: conversation.messages,
305
+ context: conversation.context,
306
+ mobileMetadata: {
307
+ platform: _reactNative.Platform.OS,
308
+ appVersion: '1.0.0',
309
+ osVersion: _reactNative.Platform.Version,
310
+ isOfflineSync: false
311
+ }
312
+ },
313
+ memoryType: 'conversation',
314
+ metadata: {
315
+ source: 'mobile_app_import',
316
+ importedAt: new Date().toISOString(),
317
+ originalPlatform: platform
318
+ }
319
+ })
320
+ });
321
+ if (response.ok) {
322
+ successCount++;
323
+ } else {
324
+ const errorText = await response.text();
325
+ console.error(`Failed to store conversation ${conversation.conversationId}:`, errorText);
326
+ }
327
+ } catch (convError) {
328
+ console.error(`Error storing conversation:`, convError);
329
+ }
330
+ }
331
+ if (successCount > 0) {
332
+ // Store connection status locally
333
+ await _asyncStorage.default.setItem(`@onairos:llm_connected:${platform}`, JSON.stringify({
334
+ connected: true,
335
+ platform,
336
+ conversationsCount: successCount,
337
+ lastSyncAt: new Date().toISOString()
338
+ }));
339
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.SUCCESS);
340
+ _reactNative.Alert.alert('Success! 🎉', `Successfully imported ${successCount} conversation${successCount > 1 ? 's' : ''} from ${platformName}.`, [{
341
+ text: 'OK',
342
+ onPress: () => onSuccess(platform)
343
+ }]);
344
+ } else {
345
+ throw new Error('Failed to import any conversations. Please check your data format.');
346
+ }
347
+ } catch (err) {
348
+ console.error('Submit error:', err);
349
+ setError(err.message || 'Failed to import data. Please try again.');
350
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
351
+ } finally {
352
+ setIsLoading(false);
353
+ }
354
+ };
355
+
356
+ // Reset state when modal closes
357
+ const handleClose = () => {
358
+ setPastedData('');
359
+ setFileContent(null);
360
+ setSelectedFileName(null);
361
+ setError(null);
362
+ setInputMode('paste');
363
+ onClose();
364
+ };
365
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Modal, {
366
+ visible: visible,
367
+ animationType: "slide",
368
+ presentationStyle: "pageSheet",
369
+ onRequestClose: handleClose
370
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.KeyboardAvoidingView, {
371
+ style: styles.container,
372
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : 'height'
373
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
374
+ style: styles.header
375
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
376
+ style: styles.closeButton,
377
+ onPress: handleClose
378
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
379
+ style: styles.closeButtonText
380
+ }, "Cancel")), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
381
+ style: styles.headerTitle
382
+ }, title), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
383
+ style: styles.closeButton
384
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
385
+ style: styles.content,
386
+ contentContainerStyle: styles.contentContainer,
387
+ keyboardShouldPersistTaps: "handled"
388
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
389
+ style: styles.instructionsContainer
390
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
391
+ style: styles.instructionsText
392
+ }, instructions)), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
393
+ style: styles.tabContainer
394
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
395
+ style: [styles.tab, inputMode === 'paste' && styles.tabActive],
396
+ onPress: () => {
397
+ setInputMode('paste');
398
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
399
+ }
400
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
401
+ style: [styles.tabText, inputMode === 'paste' && styles.tabTextActive]
402
+ }, "Paste Data")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
403
+ style: [styles.tab, inputMode === 'file' && styles.tabActive, !FILE_UPLOAD_AVAILABLE && styles.tabDisabled],
404
+ onPress: () => {
405
+ if (FILE_UPLOAD_AVAILABLE) {
406
+ setInputMode('file');
407
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
408
+ } else {
409
+ setError('File upload requires additional dependencies. Please paste data instead.');
410
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
411
+ }
412
+ }
413
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
414
+ style: [styles.tabText, inputMode === 'file' && styles.tabTextActive, !FILE_UPLOAD_AVAILABLE && styles.tabTextDisabled]
415
+ }, "Upload File ", !FILE_UPLOAD_AVAILABLE && '(N/A)'))), inputMode === 'paste' ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
416
+ style: styles.inputContainer
417
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
418
+ style: styles.textInput,
419
+ multiline: true,
420
+ placeholder: placeholder,
421
+ placeholderTextColor: _theme.COLORS.grey400,
422
+ value: pastedData,
423
+ onChangeText: setPastedData,
424
+ textAlignVertical: "top",
425
+ autoCapitalize: "none",
426
+ autoCorrect: false
427
+ })) : /*#__PURE__*/_react.default.createElement(_reactNative.View, {
428
+ style: styles.fileInputContainer
429
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
430
+ style: styles.filePickButton,
431
+ onPress: handleFilePick
432
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
433
+ style: styles.filePickIcon
434
+ }, "\uD83D\uDCC1"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
435
+ style: styles.filePickText
436
+ }, selectedFileName || 'Tap to select a file')), selectedFileName && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
437
+ style: styles.fileSelectedContainer
438
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
439
+ style: styles.fileSelectedText
440
+ }, "\u2713 ", selectedFileName))), error && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
441
+ style: styles.errorContainer
442
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
443
+ style: styles.errorText
444
+ }, error)), pastedData.length > 0 && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
445
+ style: styles.previewContainer
446
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
447
+ style: styles.previewTitle
448
+ }, "Data Preview"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
449
+ style: styles.previewText,
450
+ numberOfLines: 5
451
+ }, pastedData.substring(0, 500), pastedData.length > 500 ? '...' : ''), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
452
+ style: styles.previewInfo
453
+ }, pastedData.length.toLocaleString(), " characters"))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
454
+ style: styles.footer
455
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
456
+ style: [styles.submitButton, (!pastedData.trim() || isLoading) && styles.submitButtonDisabled],
457
+ onPress: handleSubmit,
458
+ disabled: !pastedData.trim() || isLoading
459
+ }, isLoading ? /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
460
+ color: "#FFFFFF",
461
+ size: "small"
462
+ }) : /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
463
+ style: styles.submitButtonText
464
+ }, "Import Conversations")))));
465
+ };
466
+ const styles = _reactNative.StyleSheet.create({
467
+ container: {
468
+ flex: 1,
469
+ backgroundColor: _theme.COLORS.surface
470
+ },
471
+ header: {
472
+ flexDirection: 'row',
473
+ alignItems: 'center',
474
+ justifyContent: 'space-between',
475
+ paddingHorizontal: 16,
476
+ paddingTop: _reactNative.Platform.OS === 'ios' ? 12 : 16,
477
+ paddingBottom: 12,
478
+ borderBottomWidth: 1,
479
+ borderBottomColor: '#E5E7EB' // grey200
480
+ },
481
+ headerTitle: {
482
+ fontSize: 17,
483
+ fontWeight: '600',
484
+ color: _theme.COLORS.grey800,
485
+ fontFamily: 'IBM Plex Sans'
486
+ },
487
+ closeButton: {
488
+ width: 60
489
+ },
490
+ closeButtonText: {
491
+ fontSize: 16,
492
+ color: '#3B82F6',
493
+ fontFamily: 'Inter'
494
+ },
495
+ content: {
496
+ flex: 1
497
+ },
498
+ contentContainer: {
499
+ padding: 20,
500
+ paddingBottom: 40
501
+ },
502
+ instructionsContainer: {
503
+ backgroundColor: '#F0F9FF',
504
+ borderRadius: 12,
505
+ padding: 16,
506
+ marginBottom: 20
507
+ },
508
+ instructionsText: {
509
+ fontSize: 14,
510
+ lineHeight: 20,
511
+ color: '#0369A1',
512
+ fontFamily: 'Inter'
513
+ },
514
+ tabContainer: {
515
+ flexDirection: 'row',
516
+ backgroundColor: '#F3F4F6',
517
+ // grey100
518
+ borderRadius: 10,
519
+ padding: 4,
520
+ marginBottom: 20
521
+ },
522
+ tab: {
523
+ flex: 1,
524
+ paddingVertical: 10,
525
+ borderRadius: 8,
526
+ alignItems: 'center'
527
+ },
528
+ tabActive: {
529
+ backgroundColor: '#FFFFFF',
530
+ shadowColor: '#000',
531
+ shadowOffset: {
532
+ width: 0,
533
+ height: 1
534
+ },
535
+ shadowOpacity: 0.1,
536
+ shadowRadius: 2,
537
+ elevation: 2
538
+ },
539
+ tabText: {
540
+ fontSize: 14,
541
+ fontWeight: '500',
542
+ color: _theme.COLORS.grey500,
543
+ fontFamily: 'Inter'
544
+ },
545
+ tabTextActive: {
546
+ color: _theme.COLORS.grey800
547
+ },
548
+ tabDisabled: {
549
+ opacity: 0.5
550
+ },
551
+ tabTextDisabled: {
552
+ color: _theme.COLORS.grey400
553
+ },
554
+ inputContainer: {
555
+ marginBottom: 20
556
+ },
557
+ textInput: {
558
+ backgroundColor: '#FFFFFF',
559
+ borderWidth: 1,
560
+ borderColor: _theme.COLORS.grey300,
561
+ borderRadius: 12,
562
+ padding: 16,
563
+ minHeight: 200,
564
+ fontSize: 14,
565
+ fontFamily: _reactNative.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
566
+ color: _theme.COLORS.grey800
567
+ },
568
+ fileInputContainer: {
569
+ marginBottom: 20
570
+ },
571
+ filePickButton: {
572
+ backgroundColor: '#FFFFFF',
573
+ borderWidth: 2,
574
+ borderColor: _theme.COLORS.grey300,
575
+ borderStyle: 'dashed',
576
+ borderRadius: 12,
577
+ padding: 40,
578
+ alignItems: 'center',
579
+ justifyContent: 'center'
580
+ },
581
+ filePickIcon: {
582
+ fontSize: 40,
583
+ marginBottom: 12
584
+ },
585
+ filePickText: {
586
+ fontSize: 15,
587
+ color: _theme.COLORS.grey600,
588
+ fontFamily: 'Inter'
589
+ },
590
+ fileSelectedContainer: {
591
+ marginTop: 12,
592
+ backgroundColor: '#F0FDF4',
593
+ borderRadius: 8,
594
+ padding: 12
595
+ },
596
+ fileSelectedText: {
597
+ fontSize: 14,
598
+ color: '#166534',
599
+ fontFamily: 'Inter',
600
+ fontWeight: '500'
601
+ },
602
+ errorContainer: {
603
+ backgroundColor: '#FEF2F2',
604
+ borderRadius: 8,
605
+ padding: 12,
606
+ marginBottom: 16
607
+ },
608
+ errorText: {
609
+ fontSize: 14,
610
+ color: '#DC2626',
611
+ fontFamily: 'Inter'
612
+ },
613
+ previewContainer: {
614
+ backgroundColor: '#F3F4F6',
615
+ // grey100
616
+ borderRadius: 12,
617
+ padding: 16
618
+ },
619
+ previewTitle: {
620
+ fontSize: 14,
621
+ fontWeight: '600',
622
+ color: _theme.COLORS.grey800,
623
+ marginBottom: 8,
624
+ fontFamily: 'Inter'
625
+ },
626
+ previewText: {
627
+ fontSize: 12,
628
+ color: _theme.COLORS.grey600,
629
+ fontFamily: _reactNative.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
630
+ lineHeight: 18
631
+ },
632
+ previewInfo: {
633
+ fontSize: 12,
634
+ color: _theme.COLORS.grey500,
635
+ marginTop: 8,
636
+ fontFamily: 'Inter'
637
+ },
638
+ footer: {
639
+ padding: 20,
640
+ paddingBottom: _reactNative.Platform.OS === 'ios' ? 34 : 20,
641
+ borderTopWidth: 1,
642
+ borderTopColor: '#E5E7EB',
643
+ // grey200
644
+ backgroundColor: _theme.COLORS.surface
645
+ },
646
+ submitButton: {
647
+ backgroundColor: '#10B981',
648
+ borderRadius: 12,
649
+ paddingVertical: 16,
650
+ alignItems: 'center',
651
+ justifyContent: 'center'
652
+ },
653
+ submitButtonDisabled: {
654
+ backgroundColor: _theme.COLORS.grey300
655
+ },
656
+ submitButtonText: {
657
+ fontSize: 16,
658
+ fontWeight: '600',
659
+ color: '#FFFFFF',
660
+ fontFamily: 'Inter'
661
+ }
662
+ });
663
+ var _default = exports.default = LLMDataInputModal;
664
+ //# sourceMappingURL=LLMDataInputModal.js.map