@adminide-stack/yantra-mobile 12.0.69-alpha.9 → 12.0.69

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 (522) hide show
  1. package/lib/components/GatewayConnector/GatewayConnector.js +2 -2
  2. package/lib/components/GatewayConnector/GatewayConnector.js.map +1 -1
  3. package/lib/components/KeyboardComposerDock.js +8 -1
  4. package/lib/components/KeyboardComposerDock.js.map +1 -1
  5. package/lib/components/NavigationHeader/NavigationHeader.js +2 -2
  6. package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
  7. package/lib/config/env-config.js +4 -0
  8. package/lib/config/env-config.js.map +1 -1
  9. package/lib/contexts/ChatLiveStreamContext.js +4 -1
  10. package/lib/contexts/ChatLiveStreamContext.js.map +1 -1
  11. package/lib/features/agent-chat/NativeAgentChat.js +2 -0
  12. package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
  13. package/lib/features/apps/AppsCatalog.js +2 -2
  14. package/lib/features/apps/AppsCatalog.js.map +1 -1
  15. package/lib/features/audio-input/MicErrorBoundary.js +2 -2
  16. package/lib/features/audio-input/MicErrorBoundary.js.map +1 -1
  17. package/lib/features/canvas/AudioEditorExperience.js +308 -0
  18. package/lib/features/canvas/AudioEditorExperience.js.map +1 -0
  19. package/lib/features/canvas/CanvasAgentChatPane.js +310 -0
  20. package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -0
  21. package/lib/features/canvas/CanvasBoardsGrid.js +414 -0
  22. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -0
  23. package/lib/features/canvas/CanvasChatResultCard.js +113 -0
  24. package/lib/features/canvas/CanvasChatResultCard.js.map +1 -0
  25. package/lib/features/canvas/CanvasEditToolsPanel.js +179 -0
  26. package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -0
  27. package/lib/features/canvas/CanvasExperience.js +859 -0
  28. package/lib/features/canvas/CanvasExperience.js.map +1 -0
  29. package/lib/features/canvas/CanvasGeneratePanel.js +514 -0
  30. package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -0
  31. package/lib/features/canvas/CanvasLibrarySheet.js +355 -0
  32. package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -0
  33. package/lib/features/canvas/CanvasLooksPanel.js +184 -0
  34. package/lib/features/canvas/CanvasLooksPanel.js.map +1 -0
  35. package/lib/features/canvas/CanvasTasksPanel.js +138 -0
  36. package/lib/features/canvas/CanvasTasksPanel.js.map +1 -0
  37. package/lib/features/canvas/CanvasTemplatesPanel.js +226 -0
  38. package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -0
  39. package/lib/features/canvas/CanvasToolDock.js +423 -0
  40. package/lib/features/canvas/CanvasToolDock.js.map +1 -0
  41. package/lib/features/canvas/FrameExtractorExperience.js +242 -0
  42. package/lib/features/canvas/FrameExtractorExperience.js.map +1 -0
  43. package/lib/features/canvas/ImageEditorExperience.js +491 -0
  44. package/lib/features/canvas/ImageEditorExperience.js.map +1 -0
  45. package/lib/features/canvas/InfluencerStudioExperience.js +288 -0
  46. package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -0
  47. package/lib/features/canvas/MoodboardExperience.js +205 -0
  48. package/lib/features/canvas/MoodboardExperience.js.map +1 -0
  49. package/lib/features/canvas/NativeCanvasViewer.js +929 -0
  50. package/lib/features/canvas/NativeCanvasViewer.js.map +1 -0
  51. package/lib/features/canvas/PromoContextFields.js +150 -0
  52. package/lib/features/canvas/PromoContextFields.js.map +1 -0
  53. package/lib/features/canvas/SetStudioExperience.js +323 -0
  54. package/lib/features/canvas/SetStudioExperience.js.map +1 -0
  55. package/lib/features/canvas/VideoClipsExperience.js +175 -0
  56. package/lib/features/canvas/VideoClipsExperience.js.map +1 -0
  57. package/lib/features/canvas/VideoEditExperience.js +824 -0
  58. package/lib/features/canvas/VideoEditExperience.js.map +1 -0
  59. package/lib/features/canvas/VideoEditorExperience.js +3050 -0
  60. package/lib/features/canvas/VideoEditorExperience.js.map +1 -0
  61. package/lib/features/canvas/VideoGeneratorExperience.js +415 -0
  62. package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -0
  63. package/lib/features/canvas/aiEdit.js +53 -0
  64. package/lib/features/canvas/aiEdit.js.map +1 -0
  65. package/lib/features/canvas/canvasAgentChat.js +76 -0
  66. package/lib/features/canvas/canvasAgentChat.js.map +1 -0
  67. package/lib/features/canvas/canvasBoardsCatalog.js +59 -0
  68. package/lib/features/canvas/canvasBoardsCatalog.js.map +1 -0
  69. package/lib/features/canvas/canvasBoardsSnapshot.js +14 -1
  70. package/lib/features/canvas/canvasBoardsSnapshot.js.map +1 -1
  71. package/lib/features/canvas/canvasChatDisplay.js +38 -0
  72. package/lib/features/canvas/canvasChatDisplay.js.map +1 -0
  73. package/lib/features/canvas/canvasChatTemplates.js +219 -0
  74. package/lib/features/canvas/canvasChatTemplates.js.map +1 -0
  75. package/lib/features/canvas/canvasCore.js +138 -1
  76. package/lib/features/canvas/canvasCore.js.map +1 -1
  77. package/lib/features/canvas/canvasEditOps.js +224 -0
  78. package/lib/features/canvas/canvasEditOps.js.map +1 -0
  79. package/lib/features/canvas/canvasTasks.js +187 -0
  80. package/lib/features/canvas/canvasTasks.js.map +1 -0
  81. package/lib/features/canvas/designPromptTemplates.js +3084 -0
  82. package/lib/features/canvas/designPromptTemplates.js.map +1 -0
  83. package/lib/features/canvas/editTools.js +54 -0
  84. package/lib/features/canvas/editTools.js.map +1 -0
  85. package/lib/features/canvas/extendVideo.js +5 -0
  86. package/lib/features/canvas/extendVideo.js.map +1 -0
  87. package/lib/features/canvas/frameExtract.js +33 -0
  88. package/lib/features/canvas/frameExtract.js.map +1 -0
  89. package/lib/features/canvas/generationModels.js +201 -0
  90. package/lib/features/canvas/generationModels.js.map +1 -0
  91. package/lib/features/canvas/influencer/influencerPipeline.js +170 -0
  92. package/lib/features/canvas/influencer/influencerPipeline.js.map +1 -0
  93. package/lib/features/canvas/influencer/productReel.js +72 -0
  94. package/lib/features/canvas/influencer/productReel.js.map +1 -0
  95. package/lib/features/canvas/influencer/reelPlan.js +159 -0
  96. package/lib/features/canvas/influencer/reelPlan.js.map +1 -0
  97. package/lib/features/canvas/moodboardCore.js +13 -0
  98. package/lib/features/canvas/moodboardCore.js.map +1 -0
  99. package/lib/features/canvas/promoProjectImport.js +99 -0
  100. package/lib/features/canvas/promoProjectImport.js.map +1 -0
  101. package/lib/features/canvas/promoVideo.js +312 -0
  102. package/lib/features/canvas/promoVideo.js.map +1 -0
  103. package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -0
  104. package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -0
  105. package/lib/features/canvas/sessionIdentity.js +28 -1
  106. package/lib/features/canvas/sessionIdentity.js.map +1 -1
  107. package/lib/features/canvas/set/SetViewportWebView.js +133 -0
  108. package/lib/features/canvas/set/SetViewportWebView.js.map +1 -0
  109. package/lib/features/canvas/set/cameraPath.js +194 -0
  110. package/lib/features/canvas/set/cameraPath.js.map +1 -0
  111. package/lib/features/canvas/set/setProject.js +24 -0
  112. package/lib/features/canvas/set/setProject.js.map +1 -0
  113. package/lib/features/canvas/storageLibrary.js +184 -0
  114. package/lib/features/canvas/storageLibrary.js.map +1 -0
  115. package/lib/features/canvas/studioCatalog.js +129 -0
  116. package/lib/features/canvas/studioCatalog.js.map +1 -0
  117. package/lib/features/canvas/studioLooks.js +189 -0
  118. package/lib/features/canvas/studioLooks.js.map +1 -0
  119. package/lib/features/canvas/surfaceIndex.js +63 -1
  120. package/lib/features/canvas/surfaceIndex.js.map +1 -1
  121. package/lib/features/canvas/templateImport/invideoNative.js +221 -0
  122. package/lib/features/canvas/templateImport/invideoNative.js.map +1 -0
  123. package/lib/features/canvas/templateImport/loadTemplate.js +43 -0
  124. package/lib/features/canvas/templateImport/loadTemplate.js.map +1 -0
  125. package/lib/features/canvas/templateImport/renderConfig.js +93 -0
  126. package/lib/features/canvas/templateImport/renderConfig.js.map +1 -0
  127. package/lib/features/canvas/useStudioCatalogTemplates.js +134 -0
  128. package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -0
  129. package/lib/features/canvas/video3d.js +109 -0
  130. package/lib/features/canvas/video3d.js.map +1 -0
  131. package/lib/features/canvas/videoClips.js +42 -0
  132. package/lib/features/canvas/videoClips.js.map +1 -0
  133. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +120 -0
  134. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -0
  135. package/lib/features/canvas/videoEditor/agent/agentLoop.js +69 -0
  136. package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -0
  137. package/lib/features/canvas/videoEditor/agent/brainClient.js +45 -0
  138. package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -0
  139. package/lib/features/canvas/videoEditor/agent/cutTools.js +129 -0
  140. package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -0
  141. package/lib/features/canvas/videoEditor/editorModel.js +346 -0
  142. package/lib/features/canvas/videoEditor/editorModel.js.map +1 -0
  143. package/lib/features/canvas/videoEditor/exportRenderer.js +214 -0
  144. package/lib/features/canvas/videoEditor/exportRenderer.js.map +1 -0
  145. package/lib/features/canvas/videoEditor/filters.js +41 -0
  146. package/lib/features/canvas/videoEditor/filters.js.map +1 -0
  147. package/lib/features/canvas/videoEditor/mediaActions.js +57 -0
  148. package/lib/features/canvas/videoEditor/mediaActions.js.map +1 -0
  149. package/lib/features/canvas/videoEditor/remoteMediaClient.js +129 -0
  150. package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -0
  151. package/lib/features/canvas/videoEditor/solidColorPng.js +115 -0
  152. package/lib/features/canvas/videoEditor/solidColorPng.js.map +1 -0
  153. package/lib/features/canvas/videoEditor/videoEditOps.js +191 -0
  154. package/lib/features/canvas/videoEditor/videoEditOps.js.map +1 -0
  155. package/lib/features/canvas/videoEditor/videoProjectsStore.js +82 -0
  156. package/lib/features/canvas/videoEditor/videoProjectsStore.js.map +1 -0
  157. package/lib/features/canvas/videoRenderer.js +8 -0
  158. package/lib/features/canvas/videoRenderer.js.map +1 -0
  159. package/lib/features/canvas/withRemoteSafeArea.js +2 -2
  160. package/lib/features/canvas/withRemoteSafeArea.js.map +1 -1
  161. package/lib/features/characters/characterStudioProps.js +14 -0
  162. package/lib/features/characters/characterStudioProps.js.map +1 -0
  163. package/lib/features/chat/ChatCodeBlock.js +7 -3
  164. package/lib/features/chat/ChatCodeBlock.js.map +1 -1
  165. package/lib/features/chat/ChatTranscript.js +7 -3
  166. package/lib/features/chat/ChatTranscript.js.map +1 -1
  167. package/lib/features/chat/ChatWidgetCard.js +13 -0
  168. package/lib/features/chat/ChatWidgetCard.js.map +1 -0
  169. package/lib/features/chat/ConnectorConnectCard.js +164 -0
  170. package/lib/features/chat/ConnectorConnectCard.js.map +1 -0
  171. package/lib/features/chat/ConnectorConnectPrompt.js +254 -0
  172. package/lib/features/chat/ConnectorConnectPrompt.js.map +1 -0
  173. package/lib/features/chat/MessageActionBar.js.map +1 -1
  174. package/lib/features/chat/QueuedFollowUps.js +71 -0
  175. package/lib/features/chat/QueuedFollowUps.js.map +1 -0
  176. package/lib/features/chat/chatWidgets.js +37 -0
  177. package/lib/features/chat/chatWidgets.js.map +1 -0
  178. package/lib/features/chat/connectorConnect.js +179 -0
  179. package/lib/features/chat/connectorConnect.js.map +1 -0
  180. package/lib/features/chat/connectorConnectHandbacks.js +55 -0
  181. package/lib/features/chat/connectorConnectHandbacks.js.map +1 -0
  182. package/lib/features/design/DesignEditorExperience.js +643 -0
  183. package/lib/features/design/DesignEditorExperience.js.map +1 -0
  184. package/lib/features/design/DesignExperience.js +444 -0
  185. package/lib/features/design/DesignExperience.js.map +1 -0
  186. package/lib/features/design/designCore.js +298 -0
  187. package/lib/features/design/designCore.js.map +1 -0
  188. package/lib/features/design/designIndex.js +150 -0
  189. package/lib/features/design/designIndex.js.map +1 -0
  190. package/lib/features/design/exportDesign.js +133 -0
  191. package/lib/features/design/exportDesign.js.map +1 -0
  192. package/lib/features/job-search/ApplicationsPanel.js +907 -0
  193. package/lib/features/job-search/ApplicationsPanel.js.map +1 -0
  194. package/lib/features/job-search/ContactsPanel.js +627 -0
  195. package/lib/features/job-search/ContactsPanel.js.map +1 -0
  196. package/lib/features/job-search/InsightsPanel.js +299 -0
  197. package/lib/features/job-search/InsightsPanel.js.map +1 -0
  198. package/lib/features/job-search/InterviewPanel.js +637 -0
  199. package/lib/features/job-search/InterviewPanel.js.map +1 -0
  200. package/lib/features/job-search/JdPastePrompt.js +130 -0
  201. package/lib/features/job-search/JdPastePrompt.js.map +1 -0
  202. package/lib/features/job-search/JobCard.js +199 -0
  203. package/lib/features/job-search/JobCard.js.map +1 -0
  204. package/lib/features/job-search/JobDetailSheet.js +255 -0
  205. package/lib/features/job-search/JobDetailSheet.js.map +1 -0
  206. package/lib/features/job-search/JobSearchAgentChatPane.js +377 -0
  207. package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -0
  208. package/lib/features/job-search/JobSearchExperience.js +1324 -0
  209. package/lib/features/job-search/JobSearchExperience.js.map +1 -0
  210. package/lib/features/job-search/JobSearchLocationField.js +231 -0
  211. package/lib/features/job-search/JobSearchLocationField.js.map +1 -0
  212. package/lib/features/job-search/ProfilePanel.js +679 -0
  213. package/lib/features/job-search/ProfilePanel.js.map +1 -0
  214. package/lib/features/job-search/RepliesPanel.js +344 -0
  215. package/lib/features/job-search/RepliesPanel.js.map +1 -0
  216. package/lib/features/job-search/SavedPanel.js +297 -0
  217. package/lib/features/job-search/SavedPanel.js.map +1 -0
  218. package/lib/features/job-search/chat/widgetContent.js +29 -0
  219. package/lib/features/job-search/chat/widgetContent.js.map +1 -0
  220. package/lib/features/job-search/cvText.js +91 -0
  221. package/lib/features/job-search/cvText.js.map +1 -0
  222. package/lib/features/job-search/jobAgentSwipe.js +7 -0
  223. package/lib/features/job-search/jobAgentSwipe.js.map +1 -0
  224. package/lib/features/job-search/jobSearchClient.js +184 -0
  225. package/lib/features/job-search/jobSearchClient.js.map +1 -0
  226. package/lib/features/job-search/jobSearchExec.js +14 -0
  227. package/lib/features/job-search/jobSearchExec.js.map +1 -0
  228. package/lib/features/job-search/jobSearchRuntime.js +50 -0
  229. package/lib/features/job-search/jobSearchRuntime.js.map +1 -0
  230. package/lib/features/job-search/jobSearchTheme.js +44 -0
  231. package/lib/features/job-search/jobSearchTheme.js.map +1 -0
  232. package/lib/features/job-search/savedJobs.js +85 -0
  233. package/lib/features/job-search/savedJobs.js.map +1 -0
  234. package/lib/features/job-search/searchHistory.js +117 -0
  235. package/lib/features/job-search/searchHistory.js.map +1 -0
  236. package/lib/features/job-search/types.js +36 -0
  237. package/lib/features/job-search/types.js.map +1 -0
  238. package/lib/features/job-search/useJobSearchSession.js +558 -0
  239. package/lib/features/job-search/useJobSearchSession.js.map +1 -0
  240. package/lib/features/messaging/ChatComponents.js +529 -0
  241. package/lib/features/messaging/ChatComponents.js.map +1 -0
  242. package/lib/features/messaging/ChatInviteDeepLink.js +116 -0
  243. package/lib/features/messaging/ChatInviteDeepLink.js.map +1 -0
  244. package/lib/features/messaging/ContactsScreen.js +288 -0
  245. package/lib/features/messaging/ContactsScreen.js.map +1 -0
  246. package/lib/features/messaging/ConversationListScreen.js +147 -0
  247. package/lib/features/messaging/ConversationListScreen.js.map +1 -0
  248. package/lib/features/messaging/MessageActions.js +290 -0
  249. package/lib/features/messaging/MessageActions.js.map +1 -0
  250. package/lib/features/messaging/NativeChatExperience.js +189 -0
  251. package/lib/features/messaging/NativeChatExperience.js.map +1 -0
  252. package/lib/features/messaging/RegistrationScreen.js +11 -14
  253. package/lib/features/messaging/RegistrationScreen.js.map +1 -1
  254. package/lib/features/messaging/ThreadScreen.js +215 -0
  255. package/lib/features/messaging/ThreadScreen.js.map +1 -0
  256. package/lib/features/messaging/chatInviteLink.js +52 -0
  257. package/lib/features/messaging/chatInviteLink.js.map +1 -0
  258. package/lib/features/messaging/chatModel.js +278 -0
  259. package/lib/features/messaging/chatModel.js.map +1 -0
  260. package/lib/features/messaging/chatOperations.js +106 -1
  261. package/lib/features/messaging/chatOperations.js.map +1 -1
  262. package/lib/features/messaging/emojiCatalog.js +60 -0
  263. package/lib/features/messaging/emojiCatalog.js.map +1 -0
  264. package/lib/features/messaging/emojiKeywords.js +1592 -0
  265. package/lib/features/messaging/emojiKeywords.js.map +1 -0
  266. package/lib/features/messaging/nativeChatChannelQuery.js +27 -0
  267. package/lib/features/messaging/nativeChatChannelQuery.js.map +1 -0
  268. package/lib/features/messaging/phoneNumbers.js +52 -1
  269. package/lib/features/messaging/phoneNumbers.js.map +1 -1
  270. package/lib/features/messaging/sha256.js +68 -0
  271. package/lib/features/messaging/sha256.js.map +1 -0
  272. package/lib/features/messaging/useChatData.js +421 -0
  273. package/lib/features/messaging/useChatData.js.map +1 -0
  274. package/lib/features/messaging/useContactMatches.js +191 -0
  275. package/lib/features/messaging/useContactMatches.js.map +1 -0
  276. package/lib/features/messaging/usePhoneVerification.js +12 -12
  277. package/lib/features/messaging/usePhoneVerification.js.map +1 -1
  278. package/lib/features/messaging/yantraChatOrg.js +8 -3
  279. package/lib/features/messaging/yantraChatOrg.js.map +1 -1
  280. package/lib/features/resume/AnnotateModal.js +100 -0
  281. package/lib/features/resume/AnnotateModal.js.map +1 -0
  282. package/lib/features/resume/AnnotationBar.js +69 -0
  283. package/lib/features/resume/AnnotationBar.js.map +1 -0
  284. package/lib/features/resume/ExportSheet.js +105 -0
  285. package/lib/features/resume/ExportSheet.js.map +1 -0
  286. package/lib/features/resume/ResumeAgentChatPane.js +95 -0
  287. package/lib/features/resume/ResumeAgentChatPane.js.map +1 -0
  288. package/lib/features/resume/ResumeEditor.js +676 -0
  289. package/lib/features/resume/ResumeEditor.js.map +1 -0
  290. package/lib/features/resume/ResumeExperience.js +235 -0
  291. package/lib/features/resume/ResumeExperience.js.map +1 -0
  292. package/lib/features/resume/ResumeListPanel.js +262 -0
  293. package/lib/features/resume/ResumeListPanel.js.map +1 -0
  294. package/lib/features/resume/ResumeToolbar.js +236 -0
  295. package/lib/features/resume/ResumeToolbar.js.map +1 -0
  296. package/lib/features/resume/annotations.js +17 -0
  297. package/lib/features/resume/annotations.js.map +1 -0
  298. package/lib/features/resume/documentCss.js +52 -0
  299. package/lib/features/resume/documentCss.js.map +1 -0
  300. package/lib/features/resume/draft.js +89 -0
  301. package/lib/features/resume/draft.js.map +1 -0
  302. package/lib/features/resume/exportResume.js +43 -0
  303. package/lib/features/resume/exportResume.js.map +1 -0
  304. package/lib/features/resume/pickResumePhoto.js +22 -0
  305. package/lib/features/resume/pickResumePhoto.js.map +1 -0
  306. package/lib/features/resume/renderResume.js +121 -0
  307. package/lib/features/resume/renderResume.js.map +1 -0
  308. package/lib/features/resume/resumeClient.js +69 -0
  309. package/lib/features/resume/resumeClient.js.map +1 -0
  310. package/lib/features/resume/resumeExec.js +14 -0
  311. package/lib/features/resume/resumeExec.js.map +1 -0
  312. package/lib/features/resume/resumeIndex.js +244 -0
  313. package/lib/features/resume/resumeIndex.js.map +1 -0
  314. package/lib/features/resume/resumeRuntime.js +50 -0
  315. package/lib/features/resume/resumeRuntime.js.map +1 -0
  316. package/lib/features/resume/resumeTheme.js +34 -0
  317. package/lib/features/resume/resumeTheme.js.map +1 -0
  318. package/lib/features/resume/resumeToolbox.js +49 -0
  319. package/lib/features/resume/resumeToolbox.js.map +1 -0
  320. package/lib/features/resume/templates.js +90 -0
  321. package/lib/features/resume/templates.js.map +1 -0
  322. package/lib/features/resume/types.js +10 -0
  323. package/lib/features/resume/types.js.map +1 -0
  324. package/lib/features/resume/useResumeSession.js +183 -0
  325. package/lib/features/resume/useResumeSession.js.map +1 -0
  326. package/lib/features/shopping/DealsPanel.js +254 -0
  327. package/lib/features/shopping/DealsPanel.js.map +1 -0
  328. package/lib/features/shopping/HistoryPanel.js +147 -0
  329. package/lib/features/shopping/HistoryPanel.js.map +1 -0
  330. package/lib/features/shopping/OrdersPanel.js +157 -0
  331. package/lib/features/shopping/OrdersPanel.js.map +1 -0
  332. package/lib/features/shopping/ProductCard.js +326 -0
  333. package/lib/features/shopping/ProductCard.js.map +1 -0
  334. package/lib/features/shopping/ProductDetailSheet.js +313 -0
  335. package/lib/features/shopping/ProductDetailSheet.js.map +1 -0
  336. package/lib/features/shopping/ProductFilterBar.js +153 -0
  337. package/lib/features/shopping/ProductFilterBar.js.map +1 -0
  338. package/lib/features/shopping/ProductPhoto.js +27 -0
  339. package/lib/features/shopping/ProductPhoto.js.map +1 -0
  340. package/lib/features/shopping/SavedPanel.js +139 -0
  341. package/lib/features/shopping/SavedPanel.js.map +1 -0
  342. package/lib/features/shopping/ShoppingAgentChatPane.js +436 -0
  343. package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -0
  344. package/lib/features/shopping/ShoppingExperience.js +888 -0
  345. package/lib/features/shopping/ShoppingExperience.js.map +1 -0
  346. package/lib/features/shopping/TrendingSections.js +199 -0
  347. package/lib/features/shopping/TrendingSections.js.map +1 -0
  348. package/lib/features/shopping/WatchlistPanel.js +148 -0
  349. package/lib/features/shopping/WatchlistPanel.js.map +1 -0
  350. package/lib/features/shopping/catalog.js +238 -0
  351. package/lib/features/shopping/catalog.js.map +1 -0
  352. package/lib/features/shopping/chat/ShoppingChatResultCard.js +175 -0
  353. package/lib/features/shopping/chat/ShoppingChatResultCard.js.map +1 -0
  354. package/lib/features/shopping/chat/streamAssistantReply.js +34 -0
  355. package/lib/features/shopping/chat/streamAssistantReply.js.map +1 -0
  356. package/lib/features/shopping/chat/widgetContent.js +233 -0
  357. package/lib/features/shopping/chat/widgetContent.js.map +1 -0
  358. package/lib/features/shopping/hooks/useTrendingProducts.js +162 -0
  359. package/lib/features/shopping/hooks/useTrendingProducts.js.map +1 -0
  360. package/lib/features/shopping/productImage.js +42 -0
  361. package/lib/features/shopping/productImage.js.map +1 -0
  362. package/lib/features/shopping/savedProducts.js +84 -0
  363. package/lib/features/shopping/savedProducts.js.map +1 -0
  364. package/lib/features/shopping/services/catalogActions.js +166 -0
  365. package/lib/features/shopping/services/catalogActions.js.map +1 -0
  366. package/lib/features/shopping/services/parsePriceCheckIntent.js +58 -0
  367. package/lib/features/shopping/services/parsePriceCheckIntent.js.map +1 -0
  368. package/lib/features/shopping/services/parseShoppingIntent.js +67 -0
  369. package/lib/features/shopping/services/parseShoppingIntent.js.map +1 -0
  370. package/lib/features/shopping/services/productAvailability.js +25 -0
  371. package/lib/features/shopping/services/productAvailability.js.map +1 -0
  372. package/lib/features/shopping/services/productFilters.js +72 -0
  373. package/lib/features/shopping/services/productFilters.js.map +1 -0
  374. package/lib/features/shopping/services/retailerUrl.js +75 -0
  375. package/lib/features/shopping/services/retailerUrl.js.map +1 -0
  376. package/lib/features/shopping/services/shoppingChatReply.js +46 -0
  377. package/lib/features/shopping/services/shoppingChatReply.js.map +1 -0
  378. package/lib/features/shopping/services/shoppingProductSearch.js +336 -0
  379. package/lib/features/shopping/services/shoppingProductSearch.js.map +1 -0
  380. package/lib/features/shopping/services/shoppingSearchConnectorClient.js +41 -0
  381. package/lib/features/shopping/services/shoppingSearchConnectorClient.js.map +1 -0
  382. package/lib/features/shopping/shopAgentSwipe.js +7 -0
  383. package/lib/features/shopping/shopAgentSwipe.js.map +1 -0
  384. package/lib/features/shopping/shoppingCart.js +116 -0
  385. package/lib/features/shopping/shoppingCart.js.map +1 -0
  386. package/lib/features/shopping/shoppingExec.js +14 -0
  387. package/lib/features/shopping/shoppingExec.js.map +1 -0
  388. package/lib/features/shopping/shoppingHistoryStore.js +176 -0
  389. package/lib/features/shopping/shoppingHistoryStore.js.map +1 -0
  390. package/lib/features/shopping/shoppingRuntime.js +63 -0
  391. package/lib/features/shopping/shoppingRuntime.js.map +1 -0
  392. package/lib/features/shopping/timeAgo.js +14 -0
  393. package/lib/features/shopping/timeAgo.js.map +1 -0
  394. package/lib/features/shopping/useShoppingSearch.js +262 -0
  395. package/lib/features/shopping/useShoppingSearch.js.map +1 -0
  396. package/lib/features/travel/BookHeaderGlow.js +48 -0
  397. package/lib/features/travel/BookHeaderGlow.js.map +1 -0
  398. package/lib/features/travel/BookingsPanel.js +29 -0
  399. package/lib/features/travel/BookingsPanel.js.map +1 -0
  400. package/lib/features/travel/DiscoverPanel.js +155 -0
  401. package/lib/features/travel/DiscoverPanel.js.map +1 -0
  402. package/lib/features/travel/FlightCompareBar.js +86 -0
  403. package/lib/features/travel/FlightCompareBar.js.map +1 -0
  404. package/lib/features/travel/FlightDealsBoard.js +100 -0
  405. package/lib/features/travel/FlightDealsBoard.js.map +1 -0
  406. package/lib/features/travel/HistoryPanel.js +82 -0
  407. package/lib/features/travel/HistoryPanel.js.map +1 -0
  408. package/lib/features/travel/PopularDestinations.js +144 -0
  409. package/lib/features/travel/PopularDestinations.js.map +1 -0
  410. package/lib/features/travel/SavedPanel.js +27 -0
  411. package/lib/features/travel/SavedPanel.js.map +1 -0
  412. package/lib/features/travel/TravelAgentChatPane.js +303 -0
  413. package/lib/features/travel/TravelAgentChatPane.js.map +1 -0
  414. package/lib/features/travel/TravelBookHero.js +425 -0
  415. package/lib/features/travel/TravelBookHero.js.map +1 -0
  416. package/lib/features/travel/TravelDatesField.js +234 -0
  417. package/lib/features/travel/TravelDatesField.js.map +1 -0
  418. package/lib/features/travel/TravelDetailSheet.js +106 -0
  419. package/lib/features/travel/TravelDetailSheet.js.map +1 -0
  420. package/lib/features/travel/TravelExperience.js +624 -0
  421. package/lib/features/travel/TravelExperience.js.map +1 -0
  422. package/lib/features/travel/TravelGuestsField.js +85 -0
  423. package/lib/features/travel/TravelGuestsField.js.map +1 -0
  424. package/lib/features/travel/TravelLanding.js +318 -0
  425. package/lib/features/travel/TravelLanding.js.map +1 -0
  426. package/lib/features/travel/TravelLocationField.js +179 -0
  427. package/lib/features/travel/TravelLocationField.js.map +1 -0
  428. package/lib/features/travel/TravelPropertyCard.js +266 -0
  429. package/lib/features/travel/TravelPropertyCard.js.map +1 -0
  430. package/lib/features/travel/TravelPropertyPhoto.js +22 -0
  431. package/lib/features/travel/TravelPropertyPhoto.js.map +1 -0
  432. package/lib/features/travel/TravelRailFlyout.js +79 -0
  433. package/lib/features/travel/TravelRailFlyout.js.map +1 -0
  434. package/lib/features/travel/TravelResultsMap.js +126 -0
  435. package/lib/features/travel/TravelResultsMap.js.map +1 -0
  436. package/lib/features/travel/WorkspacePanel.js +148 -0
  437. package/lib/features/travel/WorkspacePanel.js.map +1 -0
  438. package/lib/features/travel/appNav.js +244 -0
  439. package/lib/features/travel/appNav.js.map +1 -0
  440. package/lib/features/travel/calendarDays.js +50 -0
  441. package/lib/features/travel/calendarDays.js.map +1 -0
  442. package/lib/features/travel/catalog.js +72 -0
  443. package/lib/features/travel/catalog.js.map +1 -0
  444. package/lib/features/travel/chat/TravelChatResultCard.js +107 -0
  445. package/lib/features/travel/chat/TravelChatResultCard.js.map +1 -0
  446. package/lib/features/travel/chat/widgetContent.js +107 -0
  447. package/lib/features/travel/chat/widgetContent.js.map +1 -0
  448. package/lib/features/travel/flightDeals.js +65 -0
  449. package/lib/features/travel/flightDeals.js.map +1 -0
  450. package/lib/features/travel/mapCoordinates.js +36 -0
  451. package/lib/features/travel/mapCoordinates.js.map +1 -0
  452. package/lib/features/travel/parseTravelIntent.js +303 -0
  453. package/lib/features/travel/parseTravelIntent.js.map +1 -0
  454. package/lib/features/travel/savedStays.js +66 -0
  455. package/lib/features/travel/savedStays.js.map +1 -0
  456. package/lib/features/travel/services/flightDealsBoard.js +111 -0
  457. package/lib/features/travel/services/flightDealsBoard.js.map +1 -0
  458. package/lib/features/travel/services/flightSearchConnectorClient.js +42 -0
  459. package/lib/features/travel/services/flightSearchConnectorClient.js.map +1 -0
  460. package/lib/features/travel/services/geocodeLocation.js +79 -0
  461. package/lib/features/travel/services/geocodeLocation.js.map +1 -0
  462. package/lib/features/travel/services/placePredictions.js +113 -0
  463. package/lib/features/travel/services/placePredictions.js.map +1 -0
  464. package/lib/features/travel/services/resolveOriginCity.js +27 -0
  465. package/lib/features/travel/services/resolveOriginCity.js.map +1 -0
  466. package/lib/features/travel/services/resortifiConnectorClient.js +76 -0
  467. package/lib/features/travel/services/resortifiConnectorClient.js.map +1 -0
  468. package/lib/features/travel/services/travelFlightSearch.js +289 -0
  469. package/lib/features/travel/services/travelFlightSearch.js.map +1 -0
  470. package/lib/features/travel/services/travelPropertySearch.js +377 -0
  471. package/lib/features/travel/services/travelPropertySearch.js.map +1 -0
  472. package/lib/features/travel/travelAgentSwipe.js +7 -0
  473. package/lib/features/travel/travelAgentSwipe.js.map +1 -0
  474. package/lib/features/travel/travelExec.js +14 -0
  475. package/lib/features/travel/travelExec.js.map +1 -0
  476. package/lib/features/travel/travelHistoryStore.js +108 -0
  477. package/lib/features/travel/travelHistoryStore.js.map +1 -0
  478. package/lib/features/travel/travelRuntime.js +62 -0
  479. package/lib/features/travel/travelRuntime.js.map +1 -0
  480. package/lib/features/travel/types.js +9 -0
  481. package/lib/features/travel/types.js.map +1 -0
  482. package/lib/features/travel/useTravelSearch.js +330 -0
  483. package/lib/features/travel/useTravelSearch.js.map +1 -0
  484. package/lib/features/travel/workspaceContent.js +548 -0
  485. package/lib/features/travel/workspaceContent.js.map +1 -0
  486. package/lib/hooks/useCdecliChannel.js +128 -6
  487. package/lib/hooks/useCdecliChannel.js.map +1 -1
  488. package/lib/hooks/useChatApi.js +4 -2
  489. package/lib/hooks/useChatApi.js.map +1 -1
  490. package/lib/hooks/useChatStream.js +77 -63
  491. package/lib/hooks/useChatStream.js.map +1 -1
  492. package/lib/hooks/useHostConnectorCard.js +24 -0
  493. package/lib/hooks/useHostConnectorCard.js.map +1 -0
  494. package/lib/hooks/useObtainSystemToken.js +23 -5
  495. package/lib/hooks/useObtainSystemToken.js.map +1 -1
  496. package/lib/hooks/webViewRetentionPolicy.js +1 -0
  497. package/lib/hooks/webViewRetentionPolicy.js.map +1 -1
  498. package/lib/index.js +1 -1
  499. package/lib/index.js.map +1 -1
  500. package/lib/screens/Chat/index.js +51 -22
  501. package/lib/screens/Chat/index.js.map +1 -1
  502. package/lib/screens/ChatNative/index.js +13 -2
  503. package/lib/screens/ChatNative/index.js.map +1 -1
  504. package/lib/screens/Home/HomeScreen.js +3 -3
  505. package/lib/screens/Home/HomeScreen.js.map +1 -1
  506. package/lib/screens/Home/components/ChatHistoryLanding.js +32 -32
  507. package/lib/screens/Home/components/ChatHistoryLanding.js.map +1 -1
  508. package/lib/screens/JobSearchNative/useJobSearchHostChat.js +12 -6
  509. package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
  510. package/lib/screens/ResumeNative/useResumeHostChat.js +12 -6
  511. package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
  512. package/lib/screens/ShoppingNative/useShoppingHostChat.js +12 -6
  513. package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
  514. package/lib/screens/TravelNative/useTravelHostChat.js +12 -6
  515. package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
  516. package/lib/screens/WebBuilder/WebViewWithNavigation.js +2 -2
  517. package/lib/screens/WebBuilder/WebViewWithNavigation.js.map +1 -1
  518. package/lib/services/brainQuickReply.js +38 -1
  519. package/lib/services/brainQuickReply.js.map +1 -1
  520. package/lib/state/chatThreadMerge.js +6 -1
  521. package/lib/state/chatThreadMerge.js.map +1 -1
  522. package/package.json +6 -4
@@ -1,4 +1,4 @@
1
- import {useCallback}from'react';import {useCreateSecretApiTokenMutation,useRevealSecretApiTokenMutation,useRevokeSecretApiTokenMutation,useGetUserSystemTokenQuery}from'common/graphql';import {SecretApiTokenAlgorithm}from'common';import {usePrerequisiteIds}from'./usePrerequisiteIds.js';import {isSystemTokenRowStale,isMissingRs256KeyError,isAlreadyHasSystemTokenError,isMissingVaultSecretError,isJwtExpired}from'./systemTokenJwt.js';var __defProp = Object.defineProperty;
1
+ import {useRef,useCallback}from'react';import {useCreateSecretApiTokenMutation,useRevealSecretApiTokenMutation,useRevokeSecretApiTokenMutation,useGetUserSystemTokenQuery}from'common/graphql';import {SecretApiTokenAlgorithm}from'common';import {usePrerequisiteIds}from'./usePrerequisiteIds.js';import {isSystemTokenRowStale,isMissingRs256KeyError,isAlreadyHasSystemTokenError,isMissingVaultSecretError,isJwtExpired}from'./systemTokenJwt.js';var __defProp = Object.defineProperty;
2
2
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
3
  var __hasOwnProp = Object.prototype.hasOwnProperty;
4
4
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -20,6 +20,7 @@ function useObtainSystemToken(enabled = true) {
20
20
  projectId,
21
21
  tagId
22
22
  } = usePrerequisiteIds();
23
+ const lastError = useRef(null);
23
24
  const [createTokenMutation] = useCreateSecretApiTokenMutation();
24
25
  const [revealTokenMutation] = useRevealSecretApiTokenMutation();
25
26
  const [revokeTokenMutation] = useRevokeSecretApiTokenMutation();
@@ -49,6 +50,7 @@ function useObtainSystemToken(enabled = true) {
49
50
  }, [createTokenMutation, orgName, projectId, tagId]);
50
51
  const obtainSystemToken = useCallback(async (opts = {}) => {
51
52
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F;
53
+ lastError.current = null;
52
54
  try {
53
55
  let tokenId = (_b = (_a = systemTokenData == null ? void 0 : systemTokenData.getUserSystemToken) == null ? void 0 : _a.id) != null ? _b : null;
54
56
  let expiresAt = (_d = (_c = systemTokenData == null ? void 0 : systemTokenData.getUserSystemToken) == null ? void 0 : _c.expiresAt) != null ? _d : null;
@@ -71,10 +73,13 @@ function useObtainSystemToken(enabled = true) {
71
73
  }
72
74
  if (!tokenId) {
73
75
  if (!orgName || !projectId || !tagId) {
76
+ const missing = [!orgName && "organization", !projectId && "project", !tagId && "environment"].filter(Boolean).join(", ");
77
+ lastError.current = `Your account is still being set up (${missing} not ready). Try again in a moment.`;
74
78
  return null;
75
79
  }
76
80
  if (!__DEV__ && projectId === "9a8ac704-1040-4836-9b72-48b771ca91b1") {
77
81
  console.warn("[useObtainSystemToken] refusing staging mint with testing project UUID");
82
+ lastError.current = "Your account has no project yet. Try again in a moment.";
78
83
  return null;
79
84
  }
80
85
  try {
@@ -99,13 +104,19 @@ function useObtainSystemToken(enabled = true) {
99
104
  const refetchResult = await refetchSystemToken().catch(() => null);
100
105
  tokenId = (_A = (_z = (_y = refetchResult == null ? void 0 : refetchResult.data) == null ? void 0 : _y.getUserSystemToken) == null ? void 0 : _z.id) != null ? _A : null;
101
106
  expiresAt = (_D = (_C = (_B = refetchResult == null ? void 0 : refetchResult.data) == null ? void 0 : _B.getUserSystemToken) == null ? void 0 : _C.expiresAt) != null ? _D : expiresAt;
102
- if (!tokenId) return null;
107
+ if (!tokenId) {
108
+ lastError.current = "System token exists but could not be loaded.";
109
+ return null;
110
+ }
103
111
  } else {
104
112
  throw createErr;
105
113
  }
106
114
  }
107
115
  }
108
- if (!tokenId) return null;
116
+ if (!tokenId) {
117
+ lastError.current = "The server did not create a system token.";
118
+ return null;
119
+ }
109
120
  let token = null;
110
121
  try {
111
122
  const {
@@ -137,7 +148,10 @@ function useObtainSystemToken(enabled = true) {
137
148
  createData = (await createSystemToken(SecretApiTokenAlgorithm.Hs256)).data;
138
149
  }
139
150
  const newTokenId = (_F = (_E = createData == null ? void 0 : createData.createSecretApiToken) == null ? void 0 : _E.id) != null ? _F : null;
140
- if (!newTokenId) return null;
151
+ if (!newTokenId) {
152
+ lastError.current = "The server did not recreate the system token.";
153
+ return null;
154
+ }
141
155
  const {
142
156
  data: revealData
143
157
  } = await revealTokenMutation({
@@ -152,18 +166,22 @@ function useObtainSystemToken(enabled = true) {
152
166
  discardExistingRow: true
153
167
  });
154
168
  }
169
+ if (!token) lastError.current = "The server returned an empty system token.";
155
170
  return token;
156
171
  } catch (err) {
157
172
  console.error("[useObtainSystemToken] error:", err);
173
+ lastError.current = `System token error: ${err instanceof Error ? err.message : String(err)}`;
158
174
  return null;
159
175
  }
160
176
  }, [systemTokenData, createSystemToken, revealTokenMutation, revokeTokenMutation, refetchSystemToken, orgName, projectId, tagId]);
161
177
  const regenerateSystemToken = useCallback(() => obtainSystemToken({
162
178
  discardExistingRow: true
163
179
  }), [obtainSystemToken]);
180
+ const getLastError = useCallback(() => lastError.current, []);
164
181
  return {
165
182
  loading,
166
183
  obtainSystemToken,
167
- regenerateSystemToken
184
+ regenerateSystemToken,
185
+ getLastError
168
186
  };
169
187
  }export{useObtainSystemToken};//# sourceMappingURL=useObtainSystemToken.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useObtainSystemToken.js","sources":["../../src/hooks/useObtainSystemToken.ts"],"sourcesContent":["/**\n * Mint / reveal the org-scoped system JWT (GetUserSystemToken → RevealSecretApiToken).\n * Same token the webbuilder surface expects as `cdecli_token` / `?token=`.\n *\n * Matches web `useObtainSystemToken`: revoke a stale/rejected row before create\n * (one-per-user), and do not force HS256 — the backend default is HS256 when no\n * RS256 private key is present; forcing HS256 forever re-reveals a JWT signed\n * with a rotated secret.\n */\n\nimport { useCallback } from 'react';\nimport {\n useGetUserSystemTokenQuery,\n useCreateSecretApiTokenMutation,\n useRevealSecretApiTokenMutation,\n useRevokeSecretApiTokenMutation,\n} from 'common/graphql';\nimport { SecretApiTokenAlgorithm } from 'common';\nimport { usePrerequisiteIds } from './usePrerequisiteIds';\nimport {\n isAlreadyHasSystemTokenError,\n isJwtExpired,\n isMissingRs256KeyError,\n isMissingVaultSecretError,\n isSystemTokenRowStale,\n} from './systemTokenJwt';\n\nexport interface ObtainSystemTokenOptions {\n /** Revoke the server row first (dead signature, key rotation). */\n discardExistingRow?: boolean;\n}\n\nexport interface UseObtainSystemTokenResult {\n /** True while the initial GetUserSystemToken query is in flight. */\n loading: boolean;\n /** Mint or reveal the current system token. Returns null on failure. */\n obtainSystemToken: (opts?: ObtainSystemTokenOptions) => Promise<string | null>;\n /** Always revoke + remint. */\n regenerateSystemToken: () => Promise<string | null>;\n}\n\nexport function useObtainSystemToken(enabled = true): UseObtainSystemTokenResult {\n const { orgName, projectId, tagId } = usePrerequisiteIds();\n const [createTokenMutation] = useCreateSecretApiTokenMutation();\n const [revealTokenMutation] = useRevealSecretApiTokenMutation();\n const [revokeTokenMutation] = useRevokeSecretApiTokenMutation();\n const {\n data: systemTokenData,\n loading,\n refetch: refetchSystemToken,\n } = useGetUserSystemTokenQuery({\n skip: !enabled,\n fetchPolicy: 'network-only',\n });\n\n const createSystemToken = useCallback(\n async (algorithm?: SecretApiTokenAlgorithm) => {\n return createTokenMutation({\n variables: {\n input: {\n name: 'System Token',\n expiryInSeconds: 31536000,\n isSystemToken: true,\n environmentTagId: tagId,\n orgName: orgName || 'default',\n projectId: projectId || 'default',\n ...(algorithm ? { algorithm } : {}),\n },\n },\n });\n },\n [createTokenMutation, orgName, projectId, tagId],\n );\n\n const obtainSystemToken = useCallback(\n async (opts: ObtainSystemTokenOptions = {}): Promise<string | null> => {\n try {\n let tokenId: string | null = systemTokenData?.getUserSystemToken?.id ?? null;\n let expiresAt: string | null = systemTokenData?.getUserSystemToken?.expiresAt ?? null;\n\n if (!tokenId) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n\n if (tokenId && (opts.discardExistingRow || isSystemTokenRowStale(expiresAt))) {\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* best-effort — create below surfaces a real conflict */\n }\n tokenId = null;\n expiresAt = null;\n }\n\n if (!tokenId) {\n if (!orgName || !projectId || !tagId) {\n return null;\n }\n if (!__DEV__ && projectId === '9a8ac704-1040-4836-9b72-48b771ca91b1') {\n console.warn('[useObtainSystemToken] refusing staging mint with testing project UUID');\n return null;\n }\n try {\n const { data: createData } = await createSystemToken();\n tokenId = createData?.createSecretApiToken?.id ?? null;\n expiresAt = createData?.createSecretApiToken?.expiresAt ?? expiresAt;\n if (!tokenId) {\n const afterCreate = await refetchSystemToken().catch(() => null);\n tokenId = afterCreate?.data?.getUserSystemToken?.id ?? null;\n expiresAt = afterCreate?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n } catch (createErr) {\n if (isMissingRs256KeyError(createErr)) {\n const { data: hsData } = await createSystemToken(SecretApiTokenAlgorithm.Hs256);\n tokenId = hsData?.createSecretApiToken?.id ?? null;\n expiresAt = hsData?.createSecretApiToken?.expiresAt ?? expiresAt;\n } else if (isAlreadyHasSystemTokenError(createErr)) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n if (!tokenId) return null;\n } else {\n throw createErr;\n }\n }\n }\n\n if (!tokenId) return null;\n\n let token: string | null = null;\n try {\n const { data: revealData } = await revealTokenMutation({\n variables: { id: tokenId },\n });\n token = (revealData?.revealSecretApiToken as string) || null;\n } catch (revealErr) {\n const msg = revealErr instanceof Error ? revealErr.message : String(revealErr);\n if (!isMissingVaultSecretError(msg) || !orgName || !projectId || !tagId) {\n throw revealErr;\n }\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* continue with recreation */\n }\n let createData;\n try {\n createData = (await createSystemToken()).data;\n } catch (retryErr) {\n if (!isMissingRs256KeyError(retryErr)) throw retryErr;\n createData = (await createSystemToken(SecretApiTokenAlgorithm.Hs256)).data;\n }\n const newTokenId = createData?.createSecretApiToken?.id ?? null;\n if (!newTokenId) return null;\n const { data: revealData } = await revealTokenMutation({ variables: { id: newTokenId } });\n token = (revealData?.revealSecretApiToken as string) || null;\n }\n\n if (token && isJwtExpired(token) && !opts.discardExistingRow) {\n return obtainSystemToken({ discardExistingRow: true });\n }\n\n return token;\n } catch (err) {\n console.error('[useObtainSystemToken] error:', err);\n return null;\n }\n },\n [\n systemTokenData,\n createSystemToken,\n revealTokenMutation,\n revokeTokenMutation,\n refetchSystemToken,\n orgName,\n projectId,\n tagId,\n ],\n );\n\n const regenerateSystemToken = useCallback(\n () => obtainSystemToken({ discardExistingRow: true }),\n [obtainSystemToken],\n );\n\n return { loading, obtainSystemToken, regenerateSystemToken };\n}\n\n/**\n * Append `?token=&state=` for SurfaceLoginGate.captureLoginCallback(),\n * or replace existing token/state query params.\n */\nexport function appendSurfaceAuthParams(baseUrl: string, token: string, state = 'mobile-webview'): string {\n try {\n const url = new URL(baseUrl);\n url.searchParams.set('token', token);\n url.searchParams.set('state', state);\n return url.toString();\n } catch {\n const sep = baseUrl.includes('?') ? '&' : '?';\n return `${baseUrl}${sep}token=${encodeURIComponent(token)}&state=${encodeURIComponent(state)}`;\n }\n}\n\n/** Injected before page scripts so SurfaceLoginGate finds cdecli_token immediately. */\nexport function buildCdecliTokenInjection(token: string): string {\n const safe = JSON.stringify(token);\n return `\n(function () {\n try {\n localStorage.setItem('cdecli_token', ${safe});\n sessionStorage.setItem('cdecli_token', ${safe});\n } catch (e) {}\n true;\n})();\ntrue;\n`;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useObtainSystemToken.js","sources":["../../src/hooks/useObtainSystemToken.ts"],"sourcesContent":["/**\n * Mint / reveal the org-scoped system JWT (GetUserSystemToken → RevealSecretApiToken).\n * Same token the webbuilder surface expects as `cdecli_token` / `?token=`.\n *\n * Matches web `useObtainSystemToken`: revoke a stale/rejected row before create\n * (one-per-user), and do not force HS256 — the backend default is HS256 when no\n * RS256 private key is present; forcing HS256 forever re-reveals a JWT signed\n * with a rotated secret.\n */\n\nimport { useCallback, useRef } from 'react';\nimport {\n useGetUserSystemTokenQuery,\n useCreateSecretApiTokenMutation,\n useRevealSecretApiTokenMutation,\n useRevokeSecretApiTokenMutation,\n} from 'common/graphql';\nimport { SecretApiTokenAlgorithm } from 'common';\nimport { usePrerequisiteIds } from './usePrerequisiteIds';\nimport {\n isAlreadyHasSystemTokenError,\n isJwtExpired,\n isMissingRs256KeyError,\n isMissingVaultSecretError,\n isSystemTokenRowStale,\n} from './systemTokenJwt';\n\nexport interface ObtainSystemTokenOptions {\n /** Revoke the server row first (dead signature, key rotation). */\n discardExistingRow?: boolean;\n}\n\nexport interface UseObtainSystemTokenResult {\n /** True while the initial GetUserSystemToken query is in flight. */\n loading: boolean;\n /** Mint or reveal the current system token. Returns null on failure. */\n obtainSystemToken: (opts?: ObtainSystemTokenOptions) => Promise<string | null>;\n /** Always revoke + remint. */\n regenerateSystemToken: () => Promise<string | null>;\n /** Why the last obtainSystemToken() returned null (null when it succeeded). */\n getLastError: () => string | null;\n}\n\nexport function useObtainSystemToken(enabled = true): UseObtainSystemTokenResult {\n const { orgName, projectId, tagId } = usePrerequisiteIds();\n const lastError = useRef<string | null>(null);\n const [createTokenMutation] = useCreateSecretApiTokenMutation();\n const [revealTokenMutation] = useRevealSecretApiTokenMutation();\n const [revokeTokenMutation] = useRevokeSecretApiTokenMutation();\n const {\n data: systemTokenData,\n loading,\n refetch: refetchSystemToken,\n } = useGetUserSystemTokenQuery({\n skip: !enabled,\n fetchPolicy: 'network-only',\n });\n\n const createSystemToken = useCallback(\n async (algorithm?: SecretApiTokenAlgorithm) => {\n return createTokenMutation({\n variables: {\n input: {\n name: 'System Token',\n expiryInSeconds: 31536000,\n isSystemToken: true,\n environmentTagId: tagId,\n orgName: orgName || 'default',\n projectId: projectId || 'default',\n ...(algorithm ? { algorithm } : {}),\n },\n },\n });\n },\n [createTokenMutation, orgName, projectId, tagId],\n );\n\n const obtainSystemToken = useCallback(\n async (opts: ObtainSystemTokenOptions = {}): Promise<string | null> => {\n lastError.current = null;\n try {\n let tokenId: string | null = systemTokenData?.getUserSystemToken?.id ?? null;\n let expiresAt: string | null = systemTokenData?.getUserSystemToken?.expiresAt ?? null;\n\n if (!tokenId) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n\n if (tokenId && (opts.discardExistingRow || isSystemTokenRowStale(expiresAt))) {\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* best-effort — create below surfaces a real conflict */\n }\n tokenId = null;\n expiresAt = null;\n }\n\n if (!tokenId) {\n if (!orgName || !projectId || !tagId) {\n const missing = [!orgName && 'organization', !projectId && 'project', !tagId && 'environment']\n .filter(Boolean)\n .join(', ');\n lastError.current = `Your account is still being set up (${missing} not ready). Try again in a moment.`;\n return null;\n }\n if (!__DEV__ && projectId === '9a8ac704-1040-4836-9b72-48b771ca91b1') {\n console.warn('[useObtainSystemToken] refusing staging mint with testing project UUID');\n lastError.current = 'Your account has no project yet. Try again in a moment.';\n return null;\n }\n try {\n const { data: createData } = await createSystemToken();\n tokenId = createData?.createSecretApiToken?.id ?? null;\n expiresAt = createData?.createSecretApiToken?.expiresAt ?? expiresAt;\n if (!tokenId) {\n const afterCreate = await refetchSystemToken().catch(() => null);\n tokenId = afterCreate?.data?.getUserSystemToken?.id ?? null;\n expiresAt = afterCreate?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n } catch (createErr) {\n if (isMissingRs256KeyError(createErr)) {\n const { data: hsData } = await createSystemToken(SecretApiTokenAlgorithm.Hs256);\n tokenId = hsData?.createSecretApiToken?.id ?? null;\n expiresAt = hsData?.createSecretApiToken?.expiresAt ?? expiresAt;\n } else if (isAlreadyHasSystemTokenError(createErr)) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n if (!tokenId) {\n lastError.current = 'System token exists but could not be loaded.';\n return null;\n }\n } else {\n throw createErr;\n }\n }\n }\n\n if (!tokenId) {\n lastError.current = 'The server did not create a system token.';\n return null;\n }\n\n let token: string | null = null;\n try {\n const { data: revealData } = await revealTokenMutation({\n variables: { id: tokenId },\n });\n token = (revealData?.revealSecretApiToken as string) || null;\n } catch (revealErr) {\n const msg = revealErr instanceof Error ? revealErr.message : String(revealErr);\n if (!isMissingVaultSecretError(msg) || !orgName || !projectId || !tagId) {\n throw revealErr;\n }\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* continue with recreation */\n }\n let createData;\n try {\n createData = (await createSystemToken()).data;\n } catch (retryErr) {\n if (!isMissingRs256KeyError(retryErr)) throw retryErr;\n createData = (await createSystemToken(SecretApiTokenAlgorithm.Hs256)).data;\n }\n const newTokenId = createData?.createSecretApiToken?.id ?? null;\n if (!newTokenId) {\n lastError.current = 'The server did not recreate the system token.';\n return null;\n }\n const { data: revealData } = await revealTokenMutation({ variables: { id: newTokenId } });\n token = (revealData?.revealSecretApiToken as string) || null;\n }\n\n if (token && isJwtExpired(token) && !opts.discardExistingRow) {\n return obtainSystemToken({ discardExistingRow: true });\n }\n\n if (!token) lastError.current = 'The server returned an empty system token.';\n return token;\n } catch (err) {\n console.error('[useObtainSystemToken] error:', err);\n lastError.current = `System token error: ${err instanceof Error ? err.message : String(err)}`;\n return null;\n }\n },\n [\n systemTokenData,\n createSystemToken,\n revealTokenMutation,\n revokeTokenMutation,\n refetchSystemToken,\n orgName,\n projectId,\n tagId,\n ],\n );\n\n const regenerateSystemToken = useCallback(\n () => obtainSystemToken({ discardExistingRow: true }),\n [obtainSystemToken],\n );\n\n const getLastError = useCallback(() => lastError.current, []);\n\n return { loading, obtainSystemToken, regenerateSystemToken, getLastError };\n}\n\n/**\n * Append `?token=&state=` for SurfaceLoginGate.captureLoginCallback(),\n * or replace existing token/state query params.\n */\nexport function appendSurfaceAuthParams(baseUrl: string, token: string, state = 'mobile-webview'): string {\n try {\n const url = new URL(baseUrl);\n url.searchParams.set('token', token);\n url.searchParams.set('state', state);\n return url.toString();\n } catch {\n const sep = baseUrl.includes('?') ? '&' : '?';\n return `${baseUrl}${sep}token=${encodeURIComponent(token)}&state=${encodeURIComponent(state)}`;\n }\n}\n\n/** Injected before page scripts so SurfaceLoginGate finds cdecli_token immediately. */\nexport function buildCdecliTokenInjection(token: string): string {\n const safe = JSON.stringify(token);\n return `\n(function () {\n try {\n localStorage.setItem('cdecli_token', ${safe});\n sessionStorage.setItem('cdecli_token', ${safe});\n } catch (e) {}\n true;\n})();\ntrue;\n`;\n}\n"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ function shouldRenderWebView({
4
4
  releaseOnBlur
5
5
  }) {
6
6
  if (!isAppActive) return false;
7
+ if (releaseOnBlur && !isFocused) return false;
7
8
  return true;
8
9
  }export{shouldRenderWebView};//# sourceMappingURL=webViewRetentionPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webViewRetentionPolicy.js","sources":["../../src/hooks/webViewRetentionPolicy.ts"],"sourcesContent":["/**\n * When may a WebView stay mounted?\n *\n * Every live `<WebView>` is a WKWebView with its own out-of-process WebContent\n * renderer, JS heap and layer backing store - 50-150MB each, and more for the\n * WebGL and map surfaces. React Navigation v7 keeps every visited screen\n * mounted, and nothing in this app ever unmounted one, so a user who opened Web\n * Builder, the travel map and the 3D set viewport was holding all three alive\n * for the rest of the session.\n *\n * That is what makes iOS evict the whole app seconds after it is backgrounded on\n * a 6GB device (measured 2026-09-18: survives ~1.5s backgrounded, gone by 5s,\n * and the relaunch loses the user's place). Releasing a WebView costs a reload\n * when the user comes back; being evicted costs them EVERYTHING, so releasing is\n * strictly the better trade.\n *\n * `clearCache()` is NOT a substitute: it frees the HTTP cache and leaves the\n * renderer process running.\n *\n * Kept dependency-free (no react-native import) so the policy is unit-testable\n * without the RN transform.\n */\nexport interface IWebViewRetentionInput {\n /** Is the hosting screen the one on top? */\n isFocused: boolean;\n /** Is the app itself in the foreground? */\n isAppActive: boolean;\n /**\n * Release as soon as the screen is blurred, not just when the app\n * backgrounds. Right for surfaces that rebuild cheaply from their own source\n * (a map, a 3D viewport); wrong for one the user is actively working in,\n * where a reload on every navigation would be hostile.\n */\n releaseOnBlur: boolean;\n}\n\n/**\n * Backgrounding ALWAYS releases: that is the exact moment the footprint decides\n * whether iOS evicts us, and a backgrounded WebView is showing nobody anything.\n */\nexport function shouldRenderWebView({ isFocused, isAppActive, releaseOnBlur }: IWebViewRetentionInput): boolean {\n if (!isAppActive) return false;\n if (releaseOnBlur && !isFocused) return false;\n return true;\n}\n"],"names":[],"mappings":"AAwCO,SAAS,mBAAoB,CAAA;AAAA,EAClC,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAoC,EAAA;AAClC,EAAI,IAAA,CAAC,aAAoB,OAAA,KAAA;AAEzB,EAAO,OAAA,IAAA;AACT"}
1
+ {"version":3,"file":"webViewRetentionPolicy.js","sources":["../../src/hooks/webViewRetentionPolicy.ts"],"sourcesContent":["/**\n * When may a WebView stay mounted?\n *\n * Every live `<WebView>` is a WKWebView with its own out-of-process WebContent\n * renderer, JS heap and layer backing store - 50-150MB each, and more for the\n * WebGL and map surfaces. React Navigation v7 keeps every visited screen\n * mounted, and nothing in this app ever unmounted one, so a user who opened Web\n * Builder, the travel map and the 3D set viewport was holding all three alive\n * for the rest of the session.\n *\n * That is what makes iOS evict the whole app seconds after it is backgrounded on\n * a 6GB device (measured 2026-09-18: survives ~1.5s backgrounded, gone by 5s,\n * and the relaunch loses the user's place). Releasing a WebView costs a reload\n * when the user comes back; being evicted costs them EVERYTHING, so releasing is\n * strictly the better trade.\n *\n * `clearCache()` is NOT a substitute: it frees the HTTP cache and leaves the\n * renderer process running.\n *\n * Kept dependency-free (no react-native import) so the policy is unit-testable\n * without the RN transform.\n */\nexport interface IWebViewRetentionInput {\n /** Is the hosting screen the one on top? */\n isFocused: boolean;\n /** Is the app itself in the foreground? */\n isAppActive: boolean;\n /**\n * Release as soon as the screen is blurred, not just when the app\n * backgrounds. Right for surfaces that rebuild cheaply from their own source\n * (a map, a 3D viewport); wrong for one the user is actively working in,\n * where a reload on every navigation would be hostile.\n */\n releaseOnBlur: boolean;\n}\n\n/**\n * Backgrounding ALWAYS releases: that is the exact moment the footprint decides\n * whether iOS evicts us, and a backgrounded WebView is showing nobody anything.\n */\nexport function shouldRenderWebView({ isFocused, isAppActive, releaseOnBlur }: IWebViewRetentionInput): boolean {\n if (!isAppActive) return false;\n if (releaseOnBlur && !isFocused) return false;\n return true;\n}\n"],"names":[],"mappings":"AAwCO,SAAS,mBAAoB,CAAA;AAAA,EAClC,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAoC,EAAA;AAClC,EAAI,IAAA,CAAC,aAAoB,OAAA,KAAA;AACzB,EAAI,IAAA,aAAA,IAAiB,CAAC,SAAA,EAAkB,OAAA,KAAA;AACxC,EAAO,OAAA,IAAA;AACT"}
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- import {Feature}from'@common-stack/client-react';import YantraMobileModule from'./module.js';export{default as Home}from'./screens/Home/HomeScreen.js';export{default as NewChat}from'./screens/NewChat/index.js';export{default as Account}from'./screens/Account/index.js';export{default as ChatHistory}from'./screens/ChatHistory/index.js';export{default as Apps}from'./screens/Apps/index.js';export{default as WebBuilder}from'./screens/WebBuilder/index.js';export{GatewayContextProvider,useGatewayContext}from'./contexts/GatewayContext.js';export{CdecliConnectionProvider,useCdecliConnection}from'./contexts/CdecliConnectionContext.js';export{ChatLiveStreamEngine}from'./contexts/ChatLiveStreamContext.js';export{MemoryPressureResponder}from'./features/memory/MemoryPressureResponder.js';export{BUILTIN_MOBILE_GATEWAYS,MAX_CONCURRENT_TASKS,STORAGE_KEYS}from'./config/constants.js';export{config}from'./config/env-config.js';export{useCdecliAutoConnect}from'./hooks/useCdecliAutoConnect.js';export{useObtainSystemToken}from'./hooks/useObtainSystemToken.js';export{appendSurfaceAuthParams,buildCdecliTokenInjection,buildSurfaceGateRecoveryScript,mintSurfaceSystemToken,resolveSurfaceCatalogBackend}from'./hooks/mintSurfaceSystemToken.js';export{isInstanceNotFoundError,useGatewayConnection}from'./hooks/useGatewayConnection.js';export{usePrerequisiteIds}from'./hooks/usePrerequisiteIds.js';export{useWorkspaceProvisioner}from'./hooks/useWorkspaceProvisioner.js';export{useGatewayRegistry}from'./hooks/useGatewayRegistry.js';export{agentSessionManager}from'./services/agentSessionManager.js';export{ensureGatewayApiKeys,resetGatewayApiKeyBridge}from'./services/gatewayApiKeyBridge.js';export{GatewayClient}from'./services/gatewayClient.js';export{BRIDGE_PROTOCOL_VERSION,BRIDGE_READY_ACTION,DEFAULT_BRIDGE_TIMEOUT_MS,DEFAULT_CHUNK_SIZE,MessageType}from'./bridge/types.js';export{WebViewManager}from'./bridge/WebViewManager.js';export{NativeWebViewBridge}from'./bridge/NativeWebViewBridge.js';export{TypedBridge}from'./bridge/TypedBridge.js';export{CancellableRequest}from'./bridge/CancellableRequest.js';export{ChunkedMessageHandler}from'./bridge/ChunkedMessageHandler.js';export{BridgeDebugger}from'./bridge/BridgeDebugger.js';export{WEB_BRIDGE_BOOTSTRAP}from'./bridge/webBridgeBootstrap.js';export{AuthenticatedFetch}from'./bridge/AuthenticatedFetch.js';export{AuthBridgeHandler}from'./bridge/handlers/AuthBridgeHandler.js';export{NavigationBridgeHandler}from'./bridge/handlers/NavigationBridgeHandler.js';export{AnalyticsBridgeHandler}from'./bridge/handlers/AnalyticsBridgeHandler.js';export{getPackagerHost,resolveMobileWebUrl}from'./bridge/resolveMobileWebUrl.js';export{YANTRA_LOADER_SIZE_COMPACT,YANTRA_LOADER_SIZE_DEFAULT,YantraBrandLoader}from'./components/YantraBrandLoader.js';export{default as CustomDrawer}from'./components/CustomDrawer.js';export{AppThemeProvider,useAppTheme}from'./theme/AppThemeProvider.js';export{InviteDeepLink}from'./features/invite/InviteDeepLink.js';export{inviteTokenFromUrl,isInviteUrl}from'./features/invite/inviteLink.js';export{isKeyboardControllerAvailable}from'./utils/keyboardController.js';export{getNativeCanvasExperience,getNativeCanvasViewer,preloadNativeCanvasExperience,registerCanvasExperiencePreload,registerNativeCanvasExperience,registerNativeCanvasViewer}from'./features/canvas/nativeViewerRegistry.js';export{getNativeCharactersExperience,registerNativeCharactersExperience}from'./features/characters/nativeCharactersRegistry.js';export{getNativeChatExperience,registerNativeChatExperience}from'./features/messaging/nativeChatRegistry.js';export{getNativeShoppingExperience,preloadNativeShoppingExperience,registerNativeShoppingExperience,registerShoppingExperiencePreload}from'./features/shopping/nativeShoppingRegistry.js';export{getNativeTravelExperience,preloadNativeTravelExperience,registerNativeTravelExperience,registerTravelExperiencePreload}from'./features/travel/nativeTravelRegistry.js';export{getNativeJobSearchExperience,preloadNativeJobSearchExperience,registerJobSearchExperiencePreload,registerNativeJobSearchExperience}from'./features/job-search/nativeJobSearchRegistry.js';export{getNativeResumeExperience,preloadNativeResumeExperience,registerNativeResumeExperience,registerResumeExperiencePreload}from'./features/resume/nativeResumeRegistry.js';export{NativeAgentChat}from'./features/agent-chat/NativeAgentChat.js';export{resolveSurfaceAuthGraphqlUrl}from'./hooks/resolveSurfaceAuthGraphqlUrl.js';var index = new Feature(YantraMobileModule);export{index as default};//# sourceMappingURL=index.js.map
1
+ import {Feature}from'@common-stack/client-react';import YantraMobileModule from'./module.js';export{default as Home}from'./screens/Home/HomeScreen.js';export{default as NewChat}from'./screens/NewChat/index.js';export{default as Account}from'./screens/Account/index.js';export{default as ChatHistory}from'./screens/ChatHistory/index.js';export{default as Apps}from'./screens/Apps/index.js';export{default as WebBuilder}from'./screens/WebBuilder/index.js';export{GatewayContextProvider,useGatewayContext}from'./contexts/GatewayContext.js';export{CdecliConnectionProvider,useCdecliConnection}from'./contexts/CdecliConnectionContext.js';export{ChatLiveStreamEngine}from'./contexts/ChatLiveStreamContext.js';export{MemoryPressureResponder}from'./features/memory/MemoryPressureResponder.js';export{BUILTIN_MOBILE_GATEWAYS,MAX_CONCURRENT_TASKS,STORAGE_KEYS}from'./config/constants.js';export{config}from'./config/env-config.js';export{useCdecliAutoConnect}from'./hooks/useCdecliAutoConnect.js';export{useObtainSystemToken}from'./hooks/useObtainSystemToken.js';export{appendSurfaceAuthParams,buildCdecliTokenInjection,buildSurfaceGateRecoveryScript,mintSurfaceSystemToken,resolveSurfaceCatalogBackend}from'./hooks/mintSurfaceSystemToken.js';export{isInstanceNotFoundError,useGatewayConnection}from'./hooks/useGatewayConnection.js';export{usePrerequisiteIds}from'./hooks/usePrerequisiteIds.js';export{useWorkspaceProvisioner}from'./hooks/useWorkspaceProvisioner.js';export{useGatewayRegistry}from'./hooks/useGatewayRegistry.js';export{agentSessionManager}from'./services/agentSessionManager.js';export{ensureGatewayApiKeys,resetGatewayApiKeyBridge}from'./services/gatewayApiKeyBridge.js';export{GatewayClient}from'./services/gatewayClient.js';export{BRIDGE_PROTOCOL_VERSION,BRIDGE_READY_ACTION,DEFAULT_BRIDGE_TIMEOUT_MS,DEFAULT_CHUNK_SIZE,MessageType}from'./bridge/types.js';export{WebViewManager}from'./bridge/WebViewManager.js';export{NativeWebViewBridge}from'./bridge/NativeWebViewBridge.js';export{TypedBridge}from'./bridge/TypedBridge.js';export{CancellableRequest}from'./bridge/CancellableRequest.js';export{ChunkedMessageHandler}from'./bridge/ChunkedMessageHandler.js';export{BridgeDebugger}from'./bridge/BridgeDebugger.js';export{WEB_BRIDGE_BOOTSTRAP}from'./bridge/webBridgeBootstrap.js';export{AuthenticatedFetch}from'./bridge/AuthenticatedFetch.js';export{AuthBridgeHandler}from'./bridge/handlers/AuthBridgeHandler.js';export{NavigationBridgeHandler}from'./bridge/handlers/NavigationBridgeHandler.js';export{AnalyticsBridgeHandler}from'./bridge/handlers/AnalyticsBridgeHandler.js';export{getPackagerHost,resolveMobileWebUrl}from'./bridge/resolveMobileWebUrl.js';export{YANTRA_LOADER_SIZE_COMPACT,YANTRA_LOADER_SIZE_DEFAULT,YantraBrandLoader}from'./components/YantraBrandLoader.js';export{default as CustomDrawer}from'./components/CustomDrawer.js';export{AppThemeProvider,useAppTheme}from'./theme/AppThemeProvider.js';export{InviteDeepLink}from'./features/invite/InviteDeepLink.js';export{ChatInviteDeepLink}from'./features/messaging/ChatInviteDeepLink.js';export{inviteTokenFromUrl,isInviteUrl}from'./features/invite/inviteLink.js';export{isKeyboardControllerAvailable}from'./utils/keyboardController.js';export{getNativeCanvasExperience,getNativeCanvasViewer,preloadNativeCanvasExperience,registerCanvasExperiencePreload,registerNativeCanvasExperience,registerNativeCanvasViewer}from'./features/canvas/nativeViewerRegistry.js';export{getNativeCharactersExperience,registerNativeCharactersExperience}from'./features/characters/nativeCharactersRegistry.js';export{getNativeChatExperience,registerNativeChatExperience}from'./features/messaging/nativeChatRegistry.js';export{getNativeShoppingExperience,preloadNativeShoppingExperience,registerNativeShoppingExperience,registerShoppingExperiencePreload}from'./features/shopping/nativeShoppingRegistry.js';export{getNativeTravelExperience,preloadNativeTravelExperience,registerNativeTravelExperience,registerTravelExperiencePreload}from'./features/travel/nativeTravelRegistry.js';export{getNativeJobSearchExperience,preloadNativeJobSearchExperience,registerJobSearchExperiencePreload,registerNativeJobSearchExperience}from'./features/job-search/nativeJobSearchRegistry.js';export{getNativeResumeExperience,preloadNativeResumeExperience,registerNativeResumeExperience,registerResumeExperiencePreload}from'./features/resume/nativeResumeRegistry.js';export{NativeAgentChat}from'./features/agent-chat/NativeAgentChat.js';export{resolveSurfaceAuthGraphqlUrl}from'./hooks/resolveSurfaceAuthGraphqlUrl.js';var index = new Feature(YantraMobileModule);export{index as default};//# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { Feature } from '@common-stack/client-react';\nimport YantraMobileModule from './module';\n\nexport default new Feature(YantraMobileModule);\nexport * from './screens';\nexport { GatewayContextProvider, useGatewayContext } from './contexts/GatewayContext';\nexport { CdecliConnectionProvider, useCdecliConnection } from './contexts/CdecliConnectionContext';\nexport { ChatLiveStreamEngine } from './contexts/ChatLiveStreamContext';\nexport { MemoryPressureResponder } from './features/memory/MemoryPressureResponder';\nexport * from './config/constants';\nexport { config } from './config/env-config';\nexport { useCdecliAutoConnect } from './hooks/useCdecliAutoConnect';\nexport { useObtainSystemToken } from './hooks/useObtainSystemToken';\nexport {\n mintSurfaceSystemToken,\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n resolveSurfaceCatalogBackend,\n resolveSurfaceAuthGraphqlUrl,\n} from './hooks/mintSurfaceSystemToken';\nexport { useGatewayConnection, isInstanceNotFoundError } from './hooks/useGatewayConnection';\nexport { usePrerequisiteIds } from './hooks/usePrerequisiteIds';\nexport { useWorkspaceProvisioner } from './hooks/useWorkspaceProvisioner';\nexport { useGatewayRegistry } from './hooks/useGatewayRegistry';\nexport * from './services';\nexport * from './bridge';\nexport {\n YantraBrandLoader,\n YANTRA_LOADER_SIZE_DEFAULT,\n YANTRA_LOADER_SIZE_COMPACT,\n} from './components/YantraBrandLoader';\nexport { default as CustomDrawer } from './components/CustomDrawer';\nexport { AppThemeProvider, useAppTheme } from './theme/AppThemeProvider';\n// Invite deep links. Mounted by the app at the root (see portable-devices/mobile\n// App.tsx) rather than routed to: the invitee has neither an org nor a session,\n// and every mobile route requires both.\nexport { InviteDeepLink } from './features/invite/InviteDeepLink';\nexport { inviteTokenFromUrl, isInviteUrl } from './features/invite/inviteLink';\nexport { isKeyboardControllerAvailable } from './utils/keyboardController';\n// The canvas viewer seam. Exported from the index on purpose: the app (the MF\n// host) registers the federated viewer here and the CanvasBoard screen reads\n// it. Reachability from this entry is what makes rollup emit the registry as a\n// real shared module - as an internal-only file, `registerNativeCanvasViewer`\n// is never called inside the package, so rollup tree-shakes it and constant-\n// folds the screen down to its fallback branch.\nexport {\n registerNativeCanvasViewer,\n getNativeCanvasViewer,\n registerNativeCanvasExperience,\n getNativeCanvasExperience,\n registerCanvasExperiencePreload,\n preloadNativeCanvasExperience,\n} from './features/canvas/nativeViewerRegistry';\n// Characters seam - same reachability contract as the canvas registry above.\nexport {\n registerNativeCharactersExperience,\n getNativeCharactersExperience,\n} from './features/characters/nativeCharactersRegistry';\n// Chat seam - same reachability contract as the two registries above.\nexport { registerNativeChatExperience, getNativeChatExperience } from './features/messaging/nativeChatRegistry';\nexport {\n registerNativeShoppingExperience,\n getNativeShoppingExperience,\n registerShoppingExperiencePreload,\n preloadNativeShoppingExperience,\n} from './features/shopping/nativeShoppingRegistry';\nexport type { ShoppingExperienceProps } from './features/shopping/ShoppingExperience';\nexport type { ShoppingHostChat } from './features/shopping/hostChat';\nexport {\n registerNativeTravelExperience,\n getNativeTravelExperience,\n registerTravelExperiencePreload,\n preloadNativeTravelExperience,\n} from './features/travel/nativeTravelRegistry';\nexport type { TravelExperienceProps } from './features/travel/TravelExperience';\nexport type { TravelHostChat } from './features/travel/hostChat';\nexport {\n registerNativeJobSearchExperience,\n getNativeJobSearchExperience,\n registerJobSearchExperiencePreload,\n preloadNativeJobSearchExperience,\n} from './features/job-search/nativeJobSearchRegistry';\nexport type { JobSearchExperienceProps } from './features/job-search/JobSearchExperience';\nexport type { JobSearchHostChat } from './features/job-search/hostChat';\nexport {\n registerNativeResumeExperience,\n getNativeResumeExperience,\n registerResumeExperiencePreload,\n preloadNativeResumeExperience,\n} from './features/resume/nativeResumeRegistry';\nexport type { ResumeExperienceProps } from './features/resume/ResumeExperience';\nexport type { ResumeHostChat } from './features/resume/hostChat';\nexport { NativeAgentChat } from './features/agent-chat';\nexport type { AgentChatMessage, AgentChatSuggestion, NativeAgentChatProps } from './features/agent-chat';\nexport type {\n ChatHostServices,\n ChatViewer,\n FederatedChatProps,\n NativeChatExperienceProps,\n} from './features/messaging/chatHost';\n"],"names":[],"mappings":"s3IAEA,YAAe,IAAI,QAAQ,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { Feature } from '@common-stack/client-react';\nimport YantraMobileModule from './module';\n\nexport default new Feature(YantraMobileModule);\nexport * from './screens';\nexport { GatewayContextProvider, useGatewayContext } from './contexts/GatewayContext';\nexport { CdecliConnectionProvider, useCdecliConnection } from './contexts/CdecliConnectionContext';\nexport { ChatLiveStreamEngine } from './contexts/ChatLiveStreamContext';\nexport { MemoryPressureResponder } from './features/memory/MemoryPressureResponder';\nexport * from './config/constants';\nexport { config } from './config/env-config';\nexport { useCdecliAutoConnect } from './hooks/useCdecliAutoConnect';\nexport { useObtainSystemToken } from './hooks/useObtainSystemToken';\nexport {\n mintSurfaceSystemToken,\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n resolveSurfaceCatalogBackend,\n resolveSurfaceAuthGraphqlUrl,\n} from './hooks/mintSurfaceSystemToken';\nexport { useGatewayConnection, isInstanceNotFoundError } from './hooks/useGatewayConnection';\nexport { usePrerequisiteIds } from './hooks/usePrerequisiteIds';\nexport { useWorkspaceProvisioner } from './hooks/useWorkspaceProvisioner';\nexport { useGatewayRegistry } from './hooks/useGatewayRegistry';\nexport * from './services';\nexport * from './bridge';\nexport {\n YantraBrandLoader,\n YANTRA_LOADER_SIZE_DEFAULT,\n YANTRA_LOADER_SIZE_COMPACT,\n} from './components/YantraBrandLoader';\nexport { default as CustomDrawer } from './components/CustomDrawer';\nexport { AppThemeProvider, useAppTheme } from './theme/AppThemeProvider';\n// Invite deep links. Mounted by the app at the root (see portable-devices/mobile\n// App.tsx) rather than routed to: the invitee has neither an org nor a session,\n// and every mobile route requires both.\nexport { InviteDeepLink } from './features/invite/InviteDeepLink';\nexport { ChatInviteDeepLink } from './features/messaging/ChatInviteDeepLink';\nexport { inviteTokenFromUrl, isInviteUrl } from './features/invite/inviteLink';\nexport { isKeyboardControllerAvailable } from './utils/keyboardController';\n// The canvas viewer seam. Exported from the index on purpose: the app (the MF\n// host) registers the federated viewer here and the CanvasBoard screen reads\n// it. Reachability from this entry is what makes rollup emit the registry as a\n// real shared module - as an internal-only file, `registerNativeCanvasViewer`\n// is never called inside the package, so rollup tree-shakes it and constant-\n// folds the screen down to its fallback branch.\nexport {\n registerNativeCanvasViewer,\n getNativeCanvasViewer,\n registerNativeCanvasExperience,\n getNativeCanvasExperience,\n registerCanvasExperiencePreload,\n preloadNativeCanvasExperience,\n} from './features/canvas/nativeViewerRegistry';\n// Characters seam - same reachability contract as the canvas registry above.\nexport {\n registerNativeCharactersExperience,\n getNativeCharactersExperience,\n} from './features/characters/nativeCharactersRegistry';\n// Chat seam - same reachability contract as the two registries above.\nexport { registerNativeChatExperience, getNativeChatExperience } from './features/messaging/nativeChatRegistry';\nexport {\n registerNativeShoppingExperience,\n getNativeShoppingExperience,\n registerShoppingExperiencePreload,\n preloadNativeShoppingExperience,\n} from './features/shopping/nativeShoppingRegistry';\nexport type { ShoppingExperienceProps } from './features/shopping/ShoppingExperience';\nexport type { ShoppingHostChat } from './features/shopping/hostChat';\nexport {\n registerNativeTravelExperience,\n getNativeTravelExperience,\n registerTravelExperiencePreload,\n preloadNativeTravelExperience,\n} from './features/travel/nativeTravelRegistry';\nexport type { TravelExperienceProps } from './features/travel/TravelExperience';\nexport type { TravelHostChat } from './features/travel/hostChat';\nexport {\n registerNativeJobSearchExperience,\n getNativeJobSearchExperience,\n registerJobSearchExperiencePreload,\n preloadNativeJobSearchExperience,\n} from './features/job-search/nativeJobSearchRegistry';\nexport type { JobSearchExperienceProps } from './features/job-search/JobSearchExperience';\nexport type { JobSearchHostChat } from './features/job-search/hostChat';\nexport {\n registerNativeResumeExperience,\n getNativeResumeExperience,\n registerResumeExperiencePreload,\n preloadNativeResumeExperience,\n} from './features/resume/nativeResumeRegistry';\nexport type { ResumeExperienceProps } from './features/resume/ResumeExperience';\nexport type { ResumeHostChat } from './features/resume/hostChat';\nexport { NativeAgentChat } from './features/agent-chat';\nexport type { AgentChatMessage, AgentChatSuggestion, NativeAgentChatProps } from './features/agent-chat';\nexport type {\n ChatHostServices,\n ChatViewer,\n FederatedChatProps,\n NativeChatExperienceProps,\n} from './features/messaging/chatHost';\n"],"names":[],"mappings":"i8IAEA,YAAe,IAAI,QAAQ,kBAAkB,CAAA"}
@@ -1,4 +1,4 @@
1
- import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useMemo,useLayoutEffect,useCallback,useState,useRef,useEffect}from'react';import {useWindowDimensions,Keyboard,View,StyleSheet,Pressable}from'react-native';import {getDefaultLeftItems,Box,Text,InputToolBar}from'@admin-layout/gluestack-ui-mobile';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useNavigation,useRoute,CommonActions}from'@react-navigation/native';import {MessageActionBar}from'../../features/chat/MessageActionBar.js';import {ChatTranscript}from'../../features/chat/ChatTranscript.js';import {AskUserCard}from'../../features/chat/AskUserCard.js';import {pendingAskUser}from'../../features/chat/askUser.js';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useChatLiveStream}from'../../contexts/ChatLiveStreamContext.js';import {KeyboardAwareScreen,KeyboardComposerDock}from'../../components/KeyboardComposerDock.js';import {YantraBrandLoader,YANTRA_LOADER_SIZE_COMPACT}from'../../components/YantraBrandLoader.js';import ThinkingIndicator from'../../components/ThinkingIndicator.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {useAppTheme}from'../../theme/AppThemeProvider.js';import DeepSearchModal from'../Home/components/DeepSearchModal.js';import {normalizeSummaryText,extractDeepSearchSources}from'../Home/deepSearchUtils.js';import {AudioRecorderPanel}from'../../features/audio-input/AudioRecorderPanel.js';import {NativeDictationBar}from'../../features/audio-input/NativeDictationBar.js';import {isNativeDictationAvailable}from'../../features/audio-input/nativeDictation.js';import {useImageAttachments}from'../../features/attachments/useImageAttachments.js';import {ComposerAttachmentBar}from'../../features/attachments/ComposerAttachmentBar.js';import {useComposerAttachMenu}from'../../features/attachments/ComposerAttachMenu.js';import {hasComposerAttachments,takeComposerAttachments}from'../../features/attachments/composerAttachmentHandoff.js';import {MicErrorBoundary}from'../../features/audio-input/MicErrorBoundary.js';import {requestMicPermission}from'../../features/audio-input/useAudioPermission.js';import {shouldRedirectToShop}from'../../features/shopping/chat/homeShoppingIntent.js';import {replaceWithShopNative,shopHandoffParams,pushShopNative}from'../../features/shopping/chat/openShopNative.js';var __defProp = Object.defineProperty;
1
+ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useMemo,useLayoutEffect,useCallback,useState,useRef,useEffect}from'react';import {useWindowDimensions,Keyboard,View,StyleSheet,Pressable}from'react-native';import {getDefaultLeftItems,Box,Text,InputToolBar}from'@admin-layout/gluestack-ui-mobile';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useNavigation,useRoute,CommonActions}from'@react-navigation/native';import {MessageActionBar}from'../../features/chat/MessageActionBar.js';import {ChatTranscript}from'../../features/chat/ChatTranscript.js';import {AskUserCard}from'../../features/chat/AskUserCard.js';import {pendingAskUser}from'../../features/chat/askUser.js';import {PendingConnectorConnectCard}from'../../features/chat/ConnectorConnectPrompt.js';import {QueuedFollowUps}from'../../features/chat/QueuedFollowUps.js';import {displayConnectorConnectMessages,displayConnectorConnectText}from'common';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useChatLiveStream}from'../../contexts/ChatLiveStreamContext.js';import {KeyboardAwareScreen,KeyboardComposerDock}from'../../components/KeyboardComposerDock.js';import {YantraBrandLoader,YANTRA_LOADER_SIZE_COMPACT}from'../../components/YantraBrandLoader.js';import ThinkingIndicator from'../../components/ThinkingIndicator.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {useAppTheme}from'../../theme/AppThemeProvider.js';import DeepSearchModal from'../Home/components/DeepSearchModal.js';import {normalizeSummaryText,extractDeepSearchSources}from'../Home/deepSearchUtils.js';import {AudioRecorderPanel}from'../../features/audio-input/AudioRecorderPanel.js';import {NativeDictationBar}from'../../features/audio-input/NativeDictationBar.js';import {isNativeDictationAvailable}from'../../features/audio-input/nativeDictation.js';import {useImageAttachments}from'../../features/attachments/useImageAttachments.js';import {ComposerAttachmentBar}from'../../features/attachments/ComposerAttachmentBar.js';import {useComposerAttachMenu}from'../../features/attachments/ComposerAttachMenu.js';import {hasComposerAttachments,takeComposerAttachments}from'../../features/attachments/composerAttachmentHandoff.js';import {MicErrorBoundary}from'../../features/audio-input/MicErrorBoundary.js';import {requestMicPermission}from'../../features/audio-input/useAudioPermission.js';import {shouldRedirectToShop}from'../../features/shopping/chat/homeShoppingIntent.js';import {replaceWithShopNative,shopHandoffParams,pushShopNative}from'../../features/shopping/chat/openShopNative.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -47,25 +47,38 @@ function ChatScreen() {
47
47
  cdecli.setActiveChannelId(channelId);
48
48
  }, [channelId, cdecli.setActiveChannelId]);
49
49
  const chat = useChatLiveStream();
50
- const transcriptRows = useMemo(() => [
51
- ...chat.messages.map((msg, index) => ({
52
- id: `msg-${index}-${msg.role}`,
53
- role: msg.role,
54
- content: msg.content,
55
- attachments: msg.attachments,
56
- metadata: msg.metadata
57
- })),
58
- // Turns typed while the gateway was down. They live in the outbox, not in
59
- // the thread, so they survive a backend hydration and an app restart - and
60
- // they are always the newest rows, so they belong at the end.
61
- ...chat.queuedMessages.map((queued) => ({
62
- id: `queued-${queued.id}`,
63
- role: "user",
64
- content: queued.text,
65
- attachments: queued.attachments,
66
- queued: true
67
- }))
68
- ], [chat.messages, chat.queuedMessages]);
50
+ const transcriptRows = useMemo(() => {
51
+ var _a2;
52
+ const waiting = chat.queuedFollowUps.map((queued) => queued.text.trim());
53
+ const hidden = /* @__PURE__ */ new Set();
54
+ for (let i = chat.messages.length - 1; i >= 0 && waiting.length > 0; i -= 1) {
55
+ const msg = chat.messages[i];
56
+ const match = msg.role === "user" ? waiting.indexOf(((_a2 = msg.content) != null ? _a2 : "").trim()) : -1;
57
+ if (match >= 0) {
58
+ hidden.add(i);
59
+ waiting.splice(match, 1);
60
+ }
61
+ }
62
+ return [
63
+ ...chat.messages.flatMap((msg, index) => hidden.has(index) ? [] : [{
64
+ id: `msg-${index}-${msg.role}`,
65
+ role: msg.role,
66
+ content: msg.content,
67
+ attachments: msg.attachments,
68
+ metadata: msg.metadata
69
+ }]),
70
+ // Turns typed while the gateway was down. They live in the outbox, not in
71
+ // the thread, so they survive a backend hydration and an app restart - and
72
+ // they are always the newest rows, so they belong at the end.
73
+ ...chat.queuedMessages.map((queued) => ({
74
+ id: `queued-${queued.id}`,
75
+ role: "user",
76
+ content: queued.text,
77
+ attachments: queued.attachments,
78
+ queued: true
79
+ }))
80
+ ];
81
+ }, [chat.messages, chat.queuedMessages, chat.queuedFollowUps]);
69
82
  const {
70
83
  messages,
71
84
  response,
@@ -77,6 +90,9 @@ function ChatScreen() {
77
90
  queuedMessages,
78
91
  flushQueuedMessages,
79
92
  discardQueuedMessages,
93
+ queuedFollowUps,
94
+ cancelQueuedFollowUp,
95
+ sendQueuedNow,
80
96
  sendMessage,
81
97
  cancel
82
98
  } = chat;
@@ -181,6 +197,12 @@ function ChatScreen() {
181
197
  content: response
182
198
  }] : []]), [transcriptRows, response]);
183
199
  const showAskCard = Boolean(pendingAsk && !resolvedAskIds[pendingAsk.requestId]);
200
+ const sendConnectorReply = useCallback(async (text) => {
201
+ if (!channelId) return false;
202
+ return await sendMessage(text, void 0, channelId) !== "failed";
203
+ }, [sendMessage, channelId]);
204
+ const transcriptDisplayRows = useMemo(() => displayConnectorConnectMessages(transcriptRows), [transcriptRows]);
205
+ const transcriptStreaming = useMemo(() => response ? displayConnectorConnectText(response, true) : response, [response]);
184
206
  const handleSend = useCallback((text) => {
185
207
  var _a2;
186
208
  const pending = imageAttachments.forSend();
@@ -364,7 +386,7 @@ function ChatScreen() {
364
386
  onSend: () => handleSend(),
365
387
  onMic: handleMicPress,
366
388
  disabled: !channelId,
367
- // Empty + streaming → Stop. Typed follow-up → Send (steer). Never lock the composer.
389
+ // Empty + streaming → Stop. Typed follow-up → Send (queued for the agent). Never lock the composer.
368
390
  isLoading: canSubmit ? false : isLoading,
369
391
  onStop: isStreaming && !canSubmit ? cancel : void 0,
370
392
  steerable: isLoading || isStreaming
@@ -422,7 +444,7 @@ function ChatScreen() {
422
444
  /* @__PURE__ */ jsx(Text, { style: [styles.statusText, {
423
445
  color: secondaryTextColor
424
446
  }], children: "Connecting gateway\u2026" })
425
- ] }) : /* @__PURE__ */ jsx(View, { style: styles.transcriptPane, children: /* @__PURE__ */ jsx(ChatTranscript, { messages: transcriptRows, streamingContent: response, listFooter: showSendingLoader && pinSendingLoaderNearComposer ? /* @__PURE__ */ jsx(View, { style: styles.thinkingInThread, children: /* @__PURE__ */ jsx(ThinkingIndicator, { variant: "awaiting", color: secondaryTextColor, isDark }) }) : null, renderMessageActions, isDark, listContentStyle: {
447
+ ] }) : /* @__PURE__ */ jsx(View, { style: styles.transcriptPane, children: /* @__PURE__ */ jsx(ChatTranscript, { messages: transcriptDisplayRows, streamingContent: transcriptStreaming, listFooter: showSendingLoader && pinSendingLoaderNearComposer ? /* @__PURE__ */ jsx(View, { style: styles.thinkingInThread, children: /* @__PURE__ */ jsx(ThinkingIndicator, { variant: "awaiting", color: secondaryTextColor, isDark }) }) : null, renderMessageActions, isDark, listContentStyle: {
426
448
  paddingTop: 12,
427
449
  paddingBottom: 8,
428
450
  margin: 0,
@@ -445,6 +467,13 @@ function ChatScreen() {
445
467
  }, onDismiss: () => setResolvedAskIds((prev) => __spreadProps(__spreadValues({}, prev), {
446
468
  [pendingAsk.requestId]: true
447
469
  })) }) }) : null,
470
+ showAskCard ? null : /* @__PURE__ */ jsx(PendingConnectorConnectCard, { messages: transcriptRows, send: sendConnectorReply, isDark, style: {
471
+ width: contentMaxWidth,
472
+ paddingHorizontal: 8
473
+ } }),
474
+ /* @__PURE__ */ jsx(View, { style: {
475
+ width: contentMaxWidth
476
+ }, children: /* @__PURE__ */ jsx(QueuedFollowUps, { items: queuedFollowUps, onCancel: cancelQueuedFollowUp, onSendNow: sendQueuedNow, isDark }) }),
448
477
  /* @__PURE__ */ jsxs(View, { style: [styles.bottomComposerInner, {
449
478
  width: contentMaxWidth
450
479
  }], children: [