stream-chat-react-native-core 9.12.1-beta.1 → 9.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/a2ui/package.json +6 -0
  2. package/lib/commonjs/a11y/a11yUtils.js.map +1 -1
  3. package/lib/commonjs/a11y/hooks/useResolvedModalAccessibilityProps.js.map +1 -1
  4. package/lib/commonjs/a2ui/A2UIContexts.js +8 -0
  5. package/lib/commonjs/a2ui/A2UIContexts.js.map +1 -0
  6. package/lib/commonjs/a2ui/A2UIInstructions.js +49 -0
  7. package/lib/commonjs/a2ui/A2UIInstructions.js.map +1 -0
  8. package/lib/commonjs/a2ui/A2UIPlaceholder.js +37 -0
  9. package/lib/commonjs/a2ui/A2UIPlaceholder.js.map +1 -0
  10. package/lib/commonjs/a2ui/A2UIRenderer.js +363 -0
  11. package/lib/commonjs/a2ui/A2UIRenderer.js.map +1 -0
  12. package/lib/commonjs/a2ui/A2UIStream.js +91 -0
  13. package/lib/commonjs/a2ui/A2UIStream.js.map +1 -0
  14. package/lib/commonjs/a2ui/A2UISurface.js +212 -0
  15. package/lib/commonjs/a2ui/A2UISurface.js.map +1 -0
  16. package/lib/commonjs/a2ui/basicCatalog.json +1206 -0
  17. package/lib/commonjs/a2ui/basicFunctions.js +398 -0
  18. package/lib/commonjs/a2ui/basicFunctions.js.map +1 -0
  19. package/lib/commonjs/a2ui/catalogDocument.js +80 -0
  20. package/lib/commonjs/a2ui/catalogDocument.js.map +1 -0
  21. package/lib/commonjs/a2ui/catalogs.js +105 -0
  22. package/lib/commonjs/a2ui/catalogs.js.map +1 -0
  23. package/lib/commonjs/a2ui/components/DateTimeInput.js +445 -0
  24. package/lib/commonjs/a2ui/components/DateTimeInput.js.map +1 -0
  25. package/lib/commonjs/a2ui/components/Media.js +316 -0
  26. package/lib/commonjs/a2ui/components/Media.js.map +1 -0
  27. package/lib/commonjs/a2ui/components/basicComponents.js +975 -0
  28. package/lib/commonjs/a2ui/components/basicComponents.js.map +1 -0
  29. package/lib/commonjs/a2ui/components/iconPaths.js +66 -0
  30. package/lib/commonjs/a2ui/components/iconPaths.js.map +1 -0
  31. package/lib/commonjs/a2ui/components/types.js +4 -0
  32. package/lib/commonjs/a2ui/components/types.js.map +1 -0
  33. package/lib/commonjs/a2ui/index.js +70 -0
  34. package/lib/commonjs/a2ui/index.js.map +1 -0
  35. package/lib/commonjs/a2ui/instructions.js +268 -0
  36. package/lib/commonjs/a2ui/instructions.js.map +1 -0
  37. package/lib/commonjs/a2ui/secrets.js +169 -0
  38. package/lib/commonjs/a2ui/secrets.js.map +1 -0
  39. package/lib/commonjs/a2ui/useReplyState.js +35 -0
  40. package/lib/commonjs/a2ui/useReplyState.js.map +1 -0
  41. package/lib/commonjs/ai-components/AITypingIndicatorView.js +8 -18
  42. package/lib/commonjs/ai-components/AITypingIndicatorView.js.map +1 -1
  43. package/lib/commonjs/ai-components/README.md +55 -3
  44. package/lib/commonjs/ai-components/StreamingMessageView.js +26 -0
  45. package/lib/commonjs/ai-components/StreamingMessageView.js.map +1 -1
  46. package/lib/commonjs/ai-components/charts/components/PieLegend.js +2 -1
  47. package/lib/commonjs/ai-components/charts/components/PieLegend.js.map +1 -1
  48. package/lib/commonjs/ai-components/charts/components/VictoryChart.js +7 -2
  49. package/lib/commonjs/ai-components/charts/components/VictoryChart.js.map +1 -1
  50. package/lib/commonjs/ai-components/charts/utils/format-time-label.js +15 -0
  51. package/lib/commonjs/ai-components/charts/utils/format-time-label.js.map +1 -0
  52. package/lib/commonjs/ai-components/charts/vega-lite/schema.js +17 -2
  53. package/lib/commonjs/ai-components/charts/vega-lite/schema.js.map +1 -1
  54. package/lib/commonjs/ai-components/contexts/composer-context.js +13 -6
  55. package/lib/commonjs/ai-components/contexts/composer-context.js.map +1 -1
  56. package/lib/commonjs/ai-components/contexts/index.js +11 -0
  57. package/lib/commonjs/ai-components/contexts/index.js.map +1 -1
  58. package/lib/commonjs/ai-components/contexts/theme-context.js +33 -2
  59. package/lib/commonjs/ai-components/contexts/theme-context.js.map +1 -1
  60. package/lib/commonjs/ai-components/contexts/translation-context.js +29 -0
  61. package/lib/commonjs/ai-components/contexts/translation-context.js.map +1 -0
  62. package/lib/commonjs/ai-components/conversation/AIConversation.js +366 -0
  63. package/lib/commonjs/ai-components/conversation/AIConversation.js.map +1 -0
  64. package/lib/commonjs/ai-components/conversation/controller/AIAgentError.js +13 -0
  65. package/lib/commonjs/ai-components/conversation/controller/AIAgentError.js.map +1 -0
  66. package/lib/commonjs/ai-components/conversation/controller/AIConversationController.js +425 -0
  67. package/lib/commonjs/ai-components/conversation/controller/AIConversationController.js.map +1 -0
  68. package/lib/commonjs/ai-components/conversation/controller/AIConversationExchange.js +89 -0
  69. package/lib/commonjs/ai-components/conversation/controller/AIConversationExchange.js.map +1 -0
  70. package/lib/commonjs/ai-components/conversation/controller/index.js +48 -0
  71. package/lib/commonjs/ai-components/conversation/controller/index.js.map +1 -0
  72. package/lib/commonjs/ai-components/conversation/controller/offers.js +29 -0
  73. package/lib/commonjs/ai-components/conversation/controller/offers.js.map +1 -0
  74. package/lib/commonjs/ai-components/conversation/controller/types.js +13 -0
  75. package/lib/commonjs/ai-components/conversation/controller/types.js.map +1 -0
  76. package/lib/commonjs/ai-components/conversation/controller/useAIConversationState.js +8 -0
  77. package/lib/commonjs/ai-components/conversation/controller/useAIConversationState.js.map +1 -0
  78. package/lib/commonjs/ai-components/conversation/entries.js +98 -0
  79. package/lib/commonjs/ai-components/conversation/entries.js.map +1 -0
  80. package/lib/commonjs/ai-components/conversation/fromStreamMessage.js +66 -0
  81. package/lib/commonjs/ai-components/conversation/fromStreamMessage.js.map +1 -0
  82. package/lib/commonjs/ai-components/conversation/index.js +48 -0
  83. package/lib/commonjs/ai-components/conversation/index.js.map +1 -0
  84. package/lib/commonjs/ai-components/conversation/list/AIChatList.js +224 -0
  85. package/lib/commonjs/ai-components/conversation/list/AIChatList.js.map +1 -0
  86. package/lib/commonjs/ai-components/conversation/list/useChatListController.js +78 -0
  87. package/lib/commonjs/ai-components/conversation/list/useChatListController.js.map +1 -0
  88. package/lib/commonjs/ai-components/conversation/list/useEndInView.js +51 -0
  89. package/lib/commonjs/ai-components/conversation/list/useEndInView.js.map +1 -0
  90. package/lib/commonjs/ai-components/conversation/list/useKeyboardOverlap.js +54 -0
  91. package/lib/commonjs/ai-components/conversation/list/useKeyboardOverlap.js.map +1 -0
  92. package/lib/commonjs/ai-components/conversation/list/useLoadOlder.js +73 -0
  93. package/lib/commonjs/ai-components/conversation/list/useLoadOlder.js.map +1 -0
  94. package/lib/commonjs/ai-components/conversation/list/usePinnedAnchor.js +84 -0
  95. package/lib/commonjs/ai-components/conversation/list/usePinnedAnchor.js.map +1 -0
  96. package/lib/commonjs/ai-components/conversation/types.js +4 -0
  97. package/lib/commonjs/ai-components/conversation/types.js.map +1 -0
  98. package/lib/commonjs/ai-components/conversation/useConversationRows.js +117 -0
  99. package/lib/commonjs/ai-components/conversation/useConversationRows.js.map +1 -0
  100. package/lib/commonjs/ai-components/generative-ui/AIUIAction.js +30 -0
  101. package/lib/commonjs/ai-components/generative-ui/AIUIAction.js.map +1 -0
  102. package/lib/commonjs/ai-components/generative-ui/AIUIArguments.js +128 -0
  103. package/lib/commonjs/ai-components/generative-ui/AIUIArguments.js.map +1 -0
  104. package/lib/commonjs/ai-components/generative-ui/AIUIComponent.js +50 -0
  105. package/lib/commonjs/ai-components/generative-ui/AIUIComponent.js.map +1 -0
  106. package/lib/commonjs/ai-components/generative-ui/AIUIComponentDefinition.js +134 -0
  107. package/lib/commonjs/ai-components/generative-ui/AIUIComponentDefinition.js.map +1 -0
  108. package/lib/commonjs/ai-components/generative-ui/AIUIDocument.js +32 -0
  109. package/lib/commonjs/ai-components/generative-ui/AIUIDocument.js.map +1 -0
  110. package/lib/commonjs/ai-components/generative-ui/AIUIEntrance.js +193 -0
  111. package/lib/commonjs/ai-components/generative-ui/AIUIEntrance.js.map +1 -0
  112. package/lib/commonjs/ai-components/generative-ui/AIUIErrorBoundary.js +30 -0
  113. package/lib/commonjs/ai-components/generative-ui/AIUIErrorBoundary.js.map +1 -0
  114. package/lib/commonjs/ai-components/generative-ui/AIUIHelpers.js +54 -0
  115. package/lib/commonjs/ai-components/generative-ui/AIUIHelpers.js.map +1 -0
  116. package/lib/commonjs/ai-components/generative-ui/AIUIHost.js +259 -0
  117. package/lib/commonjs/ai-components/generative-ui/AIUIHost.js.map +1 -0
  118. package/lib/commonjs/ai-components/generative-ui/AIUIMedia.js +24 -0
  119. package/lib/commonjs/ai-components/generative-ui/AIUIMedia.js.map +1 -0
  120. package/lib/commonjs/ai-components/generative-ui/AIUIRenderer.js +10 -0
  121. package/lib/commonjs/ai-components/generative-ui/AIUIRenderer.js.map +1 -0
  122. package/lib/commonjs/ai-components/generative-ui/AIUIView.js +57 -0
  123. package/lib/commonjs/ai-components/generative-ui/AIUIView.js.map +1 -0
  124. package/lib/commonjs/ai-components/generative-ui/index.js +181 -0
  125. package/lib/commonjs/ai-components/generative-ui/index.js.map +1 -0
  126. package/lib/commonjs/ai-components/icons.js +44 -0
  127. package/lib/commonjs/ai-components/icons.js.map +1 -0
  128. package/lib/commonjs/ai-components/index.js +96 -0
  129. package/lib/commonjs/ai-components/index.js.map +1 -1
  130. package/lib/commonjs/ai-components/internal/Shimmer.js +36 -0
  131. package/lib/commonjs/ai-components/internal/Shimmer.js.map +1 -0
  132. package/lib/commonjs/ai-components/internal/format.js +66 -0
  133. package/lib/commonjs/ai-components/internal/format.js.map +1 -0
  134. package/lib/commonjs/ai-components/internal/hooks/useBottomSafeArea.js +12 -0
  135. package/lib/commonjs/ai-components/internal/hooks/useBottomSafeArea.js.map +1 -0
  136. package/lib/commonjs/ai-components/internal/icons/AgentIcons.js +74 -0
  137. package/lib/commonjs/ai-components/internal/icons/AgentIcons.js.map +1 -0
  138. package/lib/commonjs/ai-components/internal/tokens.js +11 -0
  139. package/lib/commonjs/ai-components/internal/tokens.js.map +1 -0
  140. package/lib/commonjs/ai-components/internal/uuid.js +21 -0
  141. package/lib/commonjs/ai-components/internal/uuid.js.map +1 -0
  142. package/lib/commonjs/ai-components/markdown/components/CodeBlock.js +4 -2
  143. package/lib/commonjs/ai-components/markdown/components/CodeBlock.js.map +1 -1
  144. package/lib/commonjs/ai-components/markdown/components/InlineCode.js +1 -0
  145. package/lib/commonjs/ai-components/markdown/components/InlineCode.js.map +1 -1
  146. package/lib/commonjs/ai-components/markdown/components/Text.js +11 -2
  147. package/lib/commonjs/ai-components/markdown/components/Text.js.map +1 -1
  148. package/lib/commonjs/ai-components/markdown/styles.js +27 -29
  149. package/lib/commonjs/ai-components/markdown/styles.js.map +1 -1
  150. package/lib/commonjs/ai-components/message/AIAssistantMessage.js +63 -0
  151. package/lib/commonjs/ai-components/message/AIAssistantMessage.js.map +1 -0
  152. package/lib/commonjs/ai-components/message/AIMessageAttachment.js +189 -0
  153. package/lib/commonjs/ai-components/message/AIMessageAttachment.js.map +1 -0
  154. package/lib/commonjs/ai-components/message/AIReplyActions.js +132 -0
  155. package/lib/commonjs/ai-components/message/AIReplyActions.js.map +1 -0
  156. package/lib/commonjs/ai-components/message/AIUserMessage.js +104 -0
  157. package/lib/commonjs/ai-components/message/AIUserMessage.js.map +1 -0
  158. package/lib/commonjs/ai-components/message/UserMessageMenu.js +150 -0
  159. package/lib/commonjs/ai-components/message/UserMessageMenu.js.map +1 -0
  160. package/lib/commonjs/ai-components/message/index.js +48 -0
  161. package/lib/commonjs/ai-components/message/index.js.map +1 -0
  162. package/lib/commonjs/ai-components/message-composer/ActionButton.js +2 -1
  163. package/lib/commonjs/ai-components/message-composer/ActionButton.js.map +1 -1
  164. package/lib/commonjs/ai-components/message-composer/ActionSheet.js +22 -6
  165. package/lib/commonjs/ai-components/message-composer/ActionSheet.js.map +1 -1
  166. package/lib/commonjs/ai-components/message-composer/AttachmentButton.js +5 -1
  167. package/lib/commonjs/ai-components/message-composer/AttachmentButton.js.map +1 -1
  168. package/lib/commonjs/ai-components/message-composer/ChatOptions.js +147 -0
  169. package/lib/commonjs/ai-components/message-composer/ChatOptions.js.map +1 -0
  170. package/lib/commonjs/ai-components/message-composer/ComposerView.js +136 -20
  171. package/lib/commonjs/ai-components/message-composer/ComposerView.js.map +1 -1
  172. package/lib/commonjs/ai-components/message-composer/EditingMessageChip.js +80 -0
  173. package/lib/commonjs/ai-components/message-composer/EditingMessageChip.js.map +1 -0
  174. package/lib/commonjs/ai-components/message-composer/MediaPreviewList.js +26 -1
  175. package/lib/commonjs/ai-components/message-composer/MediaPreviewList.js.map +1 -1
  176. package/lib/commonjs/ai-components/message-composer/index.js +11 -0
  177. package/lib/commonjs/ai-components/message-composer/index.js.map +1 -1
  178. package/lib/commonjs/ai-components/message-parts/AIMessageParts.js +110 -0
  179. package/lib/commonjs/ai-components/message-parts/AIMessageParts.js.map +1 -0
  180. package/lib/commonjs/ai-components/message-parts/AIToolApproval.js +197 -0
  181. package/lib/commonjs/ai-components/message-parts/AIToolApproval.js.map +1 -0
  182. package/lib/commonjs/ai-components/message-parts/AIToolAuthorization.js +250 -0
  183. package/lib/commonjs/ai-components/message-parts/AIToolAuthorization.js.map +1 -0
  184. package/lib/commonjs/ai-components/message-parts/AIToolCall.js +159 -0
  185. package/lib/commonjs/ai-components/message-parts/AIToolCall.js.map +1 -0
  186. package/lib/commonjs/ai-components/message-parts/callStates.js +54 -0
  187. package/lib/commonjs/ai-components/message-parts/callStates.js.map +1 -0
  188. package/lib/commonjs/ai-components/message-parts/index.js +70 -0
  189. package/lib/commonjs/ai-components/message-parts/index.js.map +1 -0
  190. package/lib/commonjs/ai-components/message-parts/parseMessageParts.js +126 -0
  191. package/lib/commonjs/ai-components/message-parts/parseMessageParts.js.map +1 -0
  192. package/lib/commonjs/ai-components/message-parts/types.js +2 -0
  193. package/lib/commonjs/ai-components/message-parts/types.js.map +1 -0
  194. package/lib/commonjs/ai-components/native-specs/NativeAIAgent.js +7 -0
  195. package/lib/commonjs/ai-components/native-specs/NativeAIAgent.js.map +1 -0
  196. package/lib/commonjs/ai-components/reasoning/AIReasoning.js +401 -0
  197. package/lib/commonjs/ai-components/reasoning/AIReasoning.js.map +1 -0
  198. package/lib/commonjs/ai-components/reasoning/index.js +26 -0
  199. package/lib/commonjs/ai-components/reasoning/index.js.map +1 -0
  200. package/lib/commonjs/ai-components/reasoning/thinkingClock.js +63 -0
  201. package/lib/commonjs/ai-components/reasoning/thinkingClock.js.map +1 -0
  202. package/lib/commonjs/ai-components/services/clipboard-service/expo.js +7 -2
  203. package/lib/commonjs/ai-components/services/clipboard-service/expo.js.map +1 -1
  204. package/lib/commonjs/ai-components/store/composer/store.js.map +1 -1
  205. package/lib/commonjs/ai-components/store/composer/useComposerChatOption.js +18 -0
  206. package/lib/commonjs/ai-components/store/composer/useComposerChatOption.js.map +1 -0
  207. package/lib/commonjs/ai-components/store/composer/useComposerIsEditing.js +18 -0
  208. package/lib/commonjs/ai-components/store/composer/useComposerIsEditing.js.map +1 -0
  209. package/lib/commonjs/ai-components/store/index.js +22 -0
  210. package/lib/commonjs/ai-components/store/index.js.map +1 -1
  211. package/lib/commonjs/ai-components/suggestions/AISuggestions.js +66 -0
  212. package/lib/commonjs/ai-components/suggestions/AISuggestions.js.map +1 -0
  213. package/lib/commonjs/ai-components/suggestions/index.js +15 -0
  214. package/lib/commonjs/ai-components/suggestions/index.js.map +1 -0
  215. package/lib/commonjs/ai-components/syntax-highlighting/utils/flatten-nodes.js +2 -1
  216. package/lib/commonjs/ai-components/syntax-highlighting/utils/flatten-nodes.js.map +1 -1
  217. package/lib/commonjs/ai-components/syntax-highlighting/utils/renderer.js +3 -2
  218. package/lib/commonjs/ai-components/syntax-highlighting/utils/renderer.js.map +1 -1
  219. package/lib/commonjs/ai-components/theme.js +137 -1
  220. package/lib/commonjs/ai-components/theme.js.map +1 -1
  221. package/lib/commonjs/ai-components/tool-calls/AIClientIdentity.js +22 -0
  222. package/lib/commonjs/ai-components/tool-calls/AIClientIdentity.js.map +1 -0
  223. package/lib/commonjs/ai-components/tool-calls/AIClientToolRunner.js +109 -0
  224. package/lib/commonjs/ai-components/tool-calls/AIClientToolRunner.js.map +1 -0
  225. package/lib/commonjs/ai-components/tool-calls/AIToolApprover.js +23 -0
  226. package/lib/commonjs/ai-components/tool-calls/AIToolApprover.js.map +1 -0
  227. package/lib/commonjs/ai-components/tool-calls/authSessionAuthorizer.js +88 -0
  228. package/lib/commonjs/ai-components/tool-calls/authSessionAuthorizer.js.map +1 -0
  229. package/lib/commonjs/ai-components/tool-calls/index.js +48 -0
  230. package/lib/commonjs/ai-components/tool-calls/index.js.map +1 -0
  231. package/lib/commonjs/ai-components/voice-visualization/glowShader.js.map +1 -1
  232. package/lib/commonjs/components/Accessibility/useAccessibilityAnnouncer.js.map +1 -1
  233. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.js.map +1 -1
  234. package/lib/commonjs/contexts/translationContext/TranslationContext.js +2 -2
  235. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  236. package/lib/commonjs/i18n/ar.json +39 -1
  237. package/lib/commonjs/i18n/en.json +39 -1
  238. package/lib/commonjs/i18n/es.json +39 -1
  239. package/lib/commonjs/i18n/fr.json +39 -1
  240. package/lib/commonjs/i18n/he.json +39 -1
  241. package/lib/commonjs/i18n/hi.json +39 -1
  242. package/lib/commonjs/i18n/it.json +39 -1
  243. package/lib/commonjs/i18n/ja.json +39 -1
  244. package/lib/commonjs/i18n/ko.json +39 -1
  245. package/lib/commonjs/i18n/nl.json +39 -1
  246. package/lib/commonjs/i18n/pt-br.json +39 -1
  247. package/lib/commonjs/i18n/ru.json +39 -1
  248. package/lib/commonjs/i18n/tr.json +39 -1
  249. package/lib/commonjs/mock-builders/a2ui/ohrid.js +84 -0
  250. package/lib/commonjs/mock-builders/a2ui/ohrid.js.map +1 -0
  251. package/lib/commonjs/utils/i18n/Streami18n.js +9 -4
  252. package/lib/commonjs/utils/i18n/Streami18n.js.map +1 -1
  253. package/lib/commonjs/utils/i18n/utils.js +7 -0
  254. package/lib/commonjs/utils/i18n/utils.js.map +1 -0
  255. package/lib/commonjs/version.json +1 -1
  256. package/lib/module/a11y/a11yUtils.js.map +1 -1
  257. package/lib/module/a11y/hooks/useResolvedModalAccessibilityProps.js.map +1 -1
  258. package/lib/module/a2ui/A2UIContexts.js +8 -0
  259. package/lib/module/a2ui/A2UIContexts.js.map +1 -0
  260. package/lib/module/a2ui/A2UIInstructions.js +49 -0
  261. package/lib/module/a2ui/A2UIInstructions.js.map +1 -0
  262. package/lib/module/a2ui/A2UIPlaceholder.js +37 -0
  263. package/lib/module/a2ui/A2UIPlaceholder.js.map +1 -0
  264. package/lib/module/a2ui/A2UIRenderer.js +363 -0
  265. package/lib/module/a2ui/A2UIRenderer.js.map +1 -0
  266. package/lib/module/a2ui/A2UIStream.js +91 -0
  267. package/lib/module/a2ui/A2UIStream.js.map +1 -0
  268. package/lib/module/a2ui/A2UISurface.js +212 -0
  269. package/lib/module/a2ui/A2UISurface.js.map +1 -0
  270. package/lib/module/a2ui/basicCatalog.json +1206 -0
  271. package/lib/module/a2ui/basicFunctions.js +398 -0
  272. package/lib/module/a2ui/basicFunctions.js.map +1 -0
  273. package/lib/module/a2ui/catalogDocument.js +80 -0
  274. package/lib/module/a2ui/catalogDocument.js.map +1 -0
  275. package/lib/module/a2ui/catalogs.js +105 -0
  276. package/lib/module/a2ui/catalogs.js.map +1 -0
  277. package/lib/module/a2ui/components/DateTimeInput.js +445 -0
  278. package/lib/module/a2ui/components/DateTimeInput.js.map +1 -0
  279. package/lib/module/a2ui/components/Media.js +316 -0
  280. package/lib/module/a2ui/components/Media.js.map +1 -0
  281. package/lib/module/a2ui/components/basicComponents.js +975 -0
  282. package/lib/module/a2ui/components/basicComponents.js.map +1 -0
  283. package/lib/module/a2ui/components/iconPaths.js +66 -0
  284. package/lib/module/a2ui/components/iconPaths.js.map +1 -0
  285. package/lib/module/a2ui/components/types.js +4 -0
  286. package/lib/module/a2ui/components/types.js.map +1 -0
  287. package/lib/module/a2ui/index.js +70 -0
  288. package/lib/module/a2ui/index.js.map +1 -0
  289. package/lib/module/a2ui/instructions.js +268 -0
  290. package/lib/module/a2ui/instructions.js.map +1 -0
  291. package/lib/module/a2ui/secrets.js +169 -0
  292. package/lib/module/a2ui/secrets.js.map +1 -0
  293. package/lib/module/a2ui/useReplyState.js +35 -0
  294. package/lib/module/a2ui/useReplyState.js.map +1 -0
  295. package/lib/module/ai-components/AITypingIndicatorView.js +8 -18
  296. package/lib/module/ai-components/AITypingIndicatorView.js.map +1 -1
  297. package/lib/module/ai-components/README.md +55 -3
  298. package/lib/module/ai-components/StreamingMessageView.js +26 -0
  299. package/lib/module/ai-components/StreamingMessageView.js.map +1 -1
  300. package/lib/module/ai-components/charts/components/PieLegend.js +2 -1
  301. package/lib/module/ai-components/charts/components/PieLegend.js.map +1 -1
  302. package/lib/module/ai-components/charts/components/VictoryChart.js +7 -2
  303. package/lib/module/ai-components/charts/components/VictoryChart.js.map +1 -1
  304. package/lib/module/ai-components/charts/utils/format-time-label.js +15 -0
  305. package/lib/module/ai-components/charts/utils/format-time-label.js.map +1 -0
  306. package/lib/module/ai-components/charts/vega-lite/schema.js +17 -2
  307. package/lib/module/ai-components/charts/vega-lite/schema.js.map +1 -1
  308. package/lib/module/ai-components/contexts/composer-context.js +13 -6
  309. package/lib/module/ai-components/contexts/composer-context.js.map +1 -1
  310. package/lib/module/ai-components/contexts/index.js +11 -0
  311. package/lib/module/ai-components/contexts/index.js.map +1 -1
  312. package/lib/module/ai-components/contexts/theme-context.js +33 -2
  313. package/lib/module/ai-components/contexts/theme-context.js.map +1 -1
  314. package/lib/module/ai-components/contexts/translation-context.js +29 -0
  315. package/lib/module/ai-components/contexts/translation-context.js.map +1 -0
  316. package/lib/module/ai-components/conversation/AIConversation.js +366 -0
  317. package/lib/module/ai-components/conversation/AIConversation.js.map +1 -0
  318. package/lib/module/ai-components/conversation/controller/AIAgentError.js +13 -0
  319. package/lib/module/ai-components/conversation/controller/AIAgentError.js.map +1 -0
  320. package/lib/module/ai-components/conversation/controller/AIConversationController.js +425 -0
  321. package/lib/module/ai-components/conversation/controller/AIConversationController.js.map +1 -0
  322. package/lib/module/ai-components/conversation/controller/AIConversationExchange.js +89 -0
  323. package/lib/module/ai-components/conversation/controller/AIConversationExchange.js.map +1 -0
  324. package/lib/module/ai-components/conversation/controller/index.js +48 -0
  325. package/lib/module/ai-components/conversation/controller/index.js.map +1 -0
  326. package/lib/module/ai-components/conversation/controller/offers.js +29 -0
  327. package/lib/module/ai-components/conversation/controller/offers.js.map +1 -0
  328. package/lib/module/ai-components/conversation/controller/types.js +13 -0
  329. package/lib/module/ai-components/conversation/controller/types.js.map +1 -0
  330. package/lib/module/ai-components/conversation/controller/useAIConversationState.js +8 -0
  331. package/lib/module/ai-components/conversation/controller/useAIConversationState.js.map +1 -0
  332. package/lib/module/ai-components/conversation/entries.js +98 -0
  333. package/lib/module/ai-components/conversation/entries.js.map +1 -0
  334. package/lib/module/ai-components/conversation/fromStreamMessage.js +66 -0
  335. package/lib/module/ai-components/conversation/fromStreamMessage.js.map +1 -0
  336. package/lib/module/ai-components/conversation/index.js +48 -0
  337. package/lib/module/ai-components/conversation/index.js.map +1 -0
  338. package/lib/module/ai-components/conversation/list/AIChatList.js +224 -0
  339. package/lib/module/ai-components/conversation/list/AIChatList.js.map +1 -0
  340. package/lib/module/ai-components/conversation/list/useChatListController.js +78 -0
  341. package/lib/module/ai-components/conversation/list/useChatListController.js.map +1 -0
  342. package/lib/module/ai-components/conversation/list/useEndInView.js +51 -0
  343. package/lib/module/ai-components/conversation/list/useEndInView.js.map +1 -0
  344. package/lib/module/ai-components/conversation/list/useKeyboardOverlap.js +54 -0
  345. package/lib/module/ai-components/conversation/list/useKeyboardOverlap.js.map +1 -0
  346. package/lib/module/ai-components/conversation/list/useLoadOlder.js +73 -0
  347. package/lib/module/ai-components/conversation/list/useLoadOlder.js.map +1 -0
  348. package/lib/module/ai-components/conversation/list/usePinnedAnchor.js +84 -0
  349. package/lib/module/ai-components/conversation/list/usePinnedAnchor.js.map +1 -0
  350. package/lib/module/ai-components/conversation/types.js +4 -0
  351. package/lib/module/ai-components/conversation/types.js.map +1 -0
  352. package/lib/module/ai-components/conversation/useConversationRows.js +117 -0
  353. package/lib/module/ai-components/conversation/useConversationRows.js.map +1 -0
  354. package/lib/module/ai-components/generative-ui/AIUIAction.js +30 -0
  355. package/lib/module/ai-components/generative-ui/AIUIAction.js.map +1 -0
  356. package/lib/module/ai-components/generative-ui/AIUIArguments.js +128 -0
  357. package/lib/module/ai-components/generative-ui/AIUIArguments.js.map +1 -0
  358. package/lib/module/ai-components/generative-ui/AIUIComponent.js +50 -0
  359. package/lib/module/ai-components/generative-ui/AIUIComponent.js.map +1 -0
  360. package/lib/module/ai-components/generative-ui/AIUIComponentDefinition.js +134 -0
  361. package/lib/module/ai-components/generative-ui/AIUIComponentDefinition.js.map +1 -0
  362. package/lib/module/ai-components/generative-ui/AIUIDocument.js +32 -0
  363. package/lib/module/ai-components/generative-ui/AIUIDocument.js.map +1 -0
  364. package/lib/module/ai-components/generative-ui/AIUIEntrance.js +193 -0
  365. package/lib/module/ai-components/generative-ui/AIUIEntrance.js.map +1 -0
  366. package/lib/module/ai-components/generative-ui/AIUIErrorBoundary.js +30 -0
  367. package/lib/module/ai-components/generative-ui/AIUIErrorBoundary.js.map +1 -0
  368. package/lib/module/ai-components/generative-ui/AIUIHelpers.js +54 -0
  369. package/lib/module/ai-components/generative-ui/AIUIHelpers.js.map +1 -0
  370. package/lib/module/ai-components/generative-ui/AIUIHost.js +259 -0
  371. package/lib/module/ai-components/generative-ui/AIUIHost.js.map +1 -0
  372. package/lib/module/ai-components/generative-ui/AIUIMedia.js +24 -0
  373. package/lib/module/ai-components/generative-ui/AIUIMedia.js.map +1 -0
  374. package/lib/module/ai-components/generative-ui/AIUIRenderer.js +10 -0
  375. package/lib/module/ai-components/generative-ui/AIUIRenderer.js.map +1 -0
  376. package/lib/module/ai-components/generative-ui/AIUIView.js +57 -0
  377. package/lib/module/ai-components/generative-ui/AIUIView.js.map +1 -0
  378. package/lib/module/ai-components/generative-ui/index.js +181 -0
  379. package/lib/module/ai-components/generative-ui/index.js.map +1 -0
  380. package/lib/module/ai-components/icons.js +44 -0
  381. package/lib/module/ai-components/icons.js.map +1 -0
  382. package/lib/module/ai-components/index.js +96 -0
  383. package/lib/module/ai-components/index.js.map +1 -1
  384. package/lib/module/ai-components/internal/Shimmer.js +36 -0
  385. package/lib/module/ai-components/internal/Shimmer.js.map +1 -0
  386. package/lib/module/ai-components/internal/format.js +66 -0
  387. package/lib/module/ai-components/internal/format.js.map +1 -0
  388. package/lib/module/ai-components/internal/hooks/useBottomSafeArea.js +12 -0
  389. package/lib/module/ai-components/internal/hooks/useBottomSafeArea.js.map +1 -0
  390. package/lib/module/ai-components/internal/icons/AgentIcons.js +74 -0
  391. package/lib/module/ai-components/internal/icons/AgentIcons.js.map +1 -0
  392. package/lib/module/ai-components/internal/tokens.js +11 -0
  393. package/lib/module/ai-components/internal/tokens.js.map +1 -0
  394. package/lib/module/ai-components/internal/uuid.js +21 -0
  395. package/lib/module/ai-components/internal/uuid.js.map +1 -0
  396. package/lib/module/ai-components/markdown/components/CodeBlock.js +4 -2
  397. package/lib/module/ai-components/markdown/components/CodeBlock.js.map +1 -1
  398. package/lib/module/ai-components/markdown/components/InlineCode.js +1 -0
  399. package/lib/module/ai-components/markdown/components/InlineCode.js.map +1 -1
  400. package/lib/module/ai-components/markdown/components/Text.js +11 -2
  401. package/lib/module/ai-components/markdown/components/Text.js.map +1 -1
  402. package/lib/module/ai-components/markdown/styles.js +27 -29
  403. package/lib/module/ai-components/markdown/styles.js.map +1 -1
  404. package/lib/module/ai-components/message/AIAssistantMessage.js +63 -0
  405. package/lib/module/ai-components/message/AIAssistantMessage.js.map +1 -0
  406. package/lib/module/ai-components/message/AIMessageAttachment.js +189 -0
  407. package/lib/module/ai-components/message/AIMessageAttachment.js.map +1 -0
  408. package/lib/module/ai-components/message/AIReplyActions.js +132 -0
  409. package/lib/module/ai-components/message/AIReplyActions.js.map +1 -0
  410. package/lib/module/ai-components/message/AIUserMessage.js +104 -0
  411. package/lib/module/ai-components/message/AIUserMessage.js.map +1 -0
  412. package/lib/module/ai-components/message/UserMessageMenu.js +150 -0
  413. package/lib/module/ai-components/message/UserMessageMenu.js.map +1 -0
  414. package/lib/module/ai-components/message/index.js +48 -0
  415. package/lib/module/ai-components/message/index.js.map +1 -0
  416. package/lib/module/ai-components/message-composer/ActionButton.js +2 -1
  417. package/lib/module/ai-components/message-composer/ActionButton.js.map +1 -1
  418. package/lib/module/ai-components/message-composer/ActionSheet.js +22 -6
  419. package/lib/module/ai-components/message-composer/ActionSheet.js.map +1 -1
  420. package/lib/module/ai-components/message-composer/AttachmentButton.js +5 -1
  421. package/lib/module/ai-components/message-composer/AttachmentButton.js.map +1 -1
  422. package/lib/module/ai-components/message-composer/ChatOptions.js +147 -0
  423. package/lib/module/ai-components/message-composer/ChatOptions.js.map +1 -0
  424. package/lib/module/ai-components/message-composer/ComposerView.js +136 -20
  425. package/lib/module/ai-components/message-composer/ComposerView.js.map +1 -1
  426. package/lib/module/ai-components/message-composer/EditingMessageChip.js +80 -0
  427. package/lib/module/ai-components/message-composer/EditingMessageChip.js.map +1 -0
  428. package/lib/module/ai-components/message-composer/MediaPreviewList.js +26 -1
  429. package/lib/module/ai-components/message-composer/MediaPreviewList.js.map +1 -1
  430. package/lib/module/ai-components/message-composer/index.js +11 -0
  431. package/lib/module/ai-components/message-composer/index.js.map +1 -1
  432. package/lib/module/ai-components/message-parts/AIMessageParts.js +110 -0
  433. package/lib/module/ai-components/message-parts/AIMessageParts.js.map +1 -0
  434. package/lib/module/ai-components/message-parts/AIToolApproval.js +197 -0
  435. package/lib/module/ai-components/message-parts/AIToolApproval.js.map +1 -0
  436. package/lib/module/ai-components/message-parts/AIToolAuthorization.js +250 -0
  437. package/lib/module/ai-components/message-parts/AIToolAuthorization.js.map +1 -0
  438. package/lib/module/ai-components/message-parts/AIToolCall.js +159 -0
  439. package/lib/module/ai-components/message-parts/AIToolCall.js.map +1 -0
  440. package/lib/module/ai-components/message-parts/callStates.js +54 -0
  441. package/lib/module/ai-components/message-parts/callStates.js.map +1 -0
  442. package/lib/module/ai-components/message-parts/index.js +70 -0
  443. package/lib/module/ai-components/message-parts/index.js.map +1 -0
  444. package/lib/module/ai-components/message-parts/parseMessageParts.js +126 -0
  445. package/lib/module/ai-components/message-parts/parseMessageParts.js.map +1 -0
  446. package/lib/module/ai-components/message-parts/types.js +2 -0
  447. package/lib/module/ai-components/message-parts/types.js.map +1 -0
  448. package/lib/module/ai-components/native-specs/NativeAIAgent.js +7 -0
  449. package/lib/module/ai-components/native-specs/NativeAIAgent.js.map +1 -0
  450. package/lib/module/ai-components/reasoning/AIReasoning.js +401 -0
  451. package/lib/module/ai-components/reasoning/AIReasoning.js.map +1 -0
  452. package/lib/module/ai-components/reasoning/index.js +26 -0
  453. package/lib/module/ai-components/reasoning/index.js.map +1 -0
  454. package/lib/module/ai-components/reasoning/thinkingClock.js +63 -0
  455. package/lib/module/ai-components/reasoning/thinkingClock.js.map +1 -0
  456. package/lib/module/ai-components/services/clipboard-service/expo.js +7 -2
  457. package/lib/module/ai-components/services/clipboard-service/expo.js.map +1 -1
  458. package/lib/module/ai-components/store/composer/store.js.map +1 -1
  459. package/lib/module/ai-components/store/composer/useComposerChatOption.js +18 -0
  460. package/lib/module/ai-components/store/composer/useComposerChatOption.js.map +1 -0
  461. package/lib/module/ai-components/store/composer/useComposerIsEditing.js +18 -0
  462. package/lib/module/ai-components/store/composer/useComposerIsEditing.js.map +1 -0
  463. package/lib/module/ai-components/store/index.js +22 -0
  464. package/lib/module/ai-components/store/index.js.map +1 -1
  465. package/lib/module/ai-components/suggestions/AISuggestions.js +66 -0
  466. package/lib/module/ai-components/suggestions/AISuggestions.js.map +1 -0
  467. package/lib/module/ai-components/suggestions/index.js +15 -0
  468. package/lib/module/ai-components/suggestions/index.js.map +1 -0
  469. package/lib/module/ai-components/syntax-highlighting/utils/flatten-nodes.js +2 -1
  470. package/lib/module/ai-components/syntax-highlighting/utils/flatten-nodes.js.map +1 -1
  471. package/lib/module/ai-components/syntax-highlighting/utils/renderer.js +3 -2
  472. package/lib/module/ai-components/syntax-highlighting/utils/renderer.js.map +1 -1
  473. package/lib/module/ai-components/theme.js +137 -1
  474. package/lib/module/ai-components/theme.js.map +1 -1
  475. package/lib/module/ai-components/tool-calls/AIClientIdentity.js +22 -0
  476. package/lib/module/ai-components/tool-calls/AIClientIdentity.js.map +1 -0
  477. package/lib/module/ai-components/tool-calls/AIClientToolRunner.js +109 -0
  478. package/lib/module/ai-components/tool-calls/AIClientToolRunner.js.map +1 -0
  479. package/lib/module/ai-components/tool-calls/AIToolApprover.js +23 -0
  480. package/lib/module/ai-components/tool-calls/AIToolApprover.js.map +1 -0
  481. package/lib/module/ai-components/tool-calls/authSessionAuthorizer.js +88 -0
  482. package/lib/module/ai-components/tool-calls/authSessionAuthorizer.js.map +1 -0
  483. package/lib/module/ai-components/tool-calls/index.js +48 -0
  484. package/lib/module/ai-components/tool-calls/index.js.map +1 -0
  485. package/lib/module/ai-components/voice-visualization/glowShader.js.map +1 -1
  486. package/lib/module/components/Accessibility/useAccessibilityAnnouncer.js.map +1 -1
  487. package/lib/module/components/Message/MessageItemView/utils/renderText.js.map +1 -1
  488. package/lib/module/contexts/translationContext/TranslationContext.js +2 -2
  489. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  490. package/lib/module/i18n/ar.json +39 -1
  491. package/lib/module/i18n/en.json +39 -1
  492. package/lib/module/i18n/es.json +39 -1
  493. package/lib/module/i18n/fr.json +39 -1
  494. package/lib/module/i18n/he.json +39 -1
  495. package/lib/module/i18n/hi.json +39 -1
  496. package/lib/module/i18n/it.json +39 -1
  497. package/lib/module/i18n/ja.json +39 -1
  498. package/lib/module/i18n/ko.json +39 -1
  499. package/lib/module/i18n/nl.json +39 -1
  500. package/lib/module/i18n/pt-br.json +39 -1
  501. package/lib/module/i18n/ru.json +39 -1
  502. package/lib/module/i18n/tr.json +39 -1
  503. package/lib/module/mock-builders/a2ui/ohrid.js +84 -0
  504. package/lib/module/mock-builders/a2ui/ohrid.js.map +1 -0
  505. package/lib/module/utils/i18n/Streami18n.js +9 -4
  506. package/lib/module/utils/i18n/Streami18n.js.map +1 -1
  507. package/lib/module/utils/i18n/utils.js +7 -0
  508. package/lib/module/utils/i18n/utils.js.map +1 -0
  509. package/lib/module/version.json +1 -1
  510. package/lib/typescript/a11y/a11yUtils.d.ts +0 -1
  511. package/lib/typescript/a11y/a11yUtils.d.ts.map +1 -1
  512. package/lib/typescript/a11y/hooks/useResolvedModalAccessibilityProps.d.ts +2 -3
  513. package/lib/typescript/a11y/hooks/useResolvedModalAccessibilityProps.d.ts.map +1 -1
  514. package/lib/typescript/a2ui/A2UIContexts.d.ts +9 -0
  515. package/lib/typescript/a2ui/A2UIContexts.d.ts.map +1 -0
  516. package/lib/typescript/a2ui/A2UIInstructions.d.ts +47 -0
  517. package/lib/typescript/a2ui/A2UIInstructions.d.ts.map +1 -0
  518. package/lib/typescript/a2ui/A2UIPlaceholder.d.ts +4 -0
  519. package/lib/typescript/a2ui/A2UIPlaceholder.d.ts.map +1 -0
  520. package/lib/typescript/a2ui/A2UIRenderer.d.ts +130 -0
  521. package/lib/typescript/a2ui/A2UIRenderer.d.ts.map +1 -0
  522. package/lib/typescript/a2ui/A2UIStream.d.ts +23 -0
  523. package/lib/typescript/a2ui/A2UIStream.d.ts.map +1 -0
  524. package/lib/typescript/a2ui/A2UISurface.d.ts +19 -0
  525. package/lib/typescript/a2ui/A2UISurface.d.ts.map +1 -0
  526. package/lib/typescript/a2ui/basicFunctions.d.ts +10 -0
  527. package/lib/typescript/a2ui/basicFunctions.d.ts.map +1 -0
  528. package/lib/typescript/a2ui/catalogDocument.d.ts +56 -0
  529. package/lib/typescript/a2ui/catalogDocument.d.ts.map +1 -0
  530. package/lib/typescript/a2ui/catalogs.d.ts +42 -0
  531. package/lib/typescript/a2ui/catalogs.d.ts.map +1 -0
  532. package/lib/typescript/a2ui/components/DateTimeInput.d.ts +44 -0
  533. package/lib/typescript/a2ui/components/DateTimeInput.d.ts.map +1 -0
  534. package/lib/typescript/a2ui/components/Media.d.ts +27 -0
  535. package/lib/typescript/a2ui/components/Media.d.ts.map +1 -0
  536. package/lib/typescript/a2ui/components/basicComponents.d.ts +4 -0
  537. package/lib/typescript/a2ui/components/basicComponents.d.ts.map +1 -0
  538. package/lib/typescript/a2ui/components/iconPaths.d.ts +2 -0
  539. package/lib/typescript/a2ui/components/iconPaths.d.ts.map +1 -0
  540. package/lib/typescript/a2ui/components/types.d.ts +23 -0
  541. package/lib/typescript/a2ui/components/types.d.ts.map +1 -0
  542. package/lib/typescript/a2ui/index.d.ts +8 -0
  543. package/lib/typescript/a2ui/index.d.ts.map +1 -0
  544. package/lib/typescript/a2ui/instructions.d.ts +39 -0
  545. package/lib/typescript/a2ui/instructions.d.ts.map +1 -0
  546. package/lib/typescript/a2ui/secrets.d.ts +20 -0
  547. package/lib/typescript/a2ui/secrets.d.ts.map +1 -0
  548. package/lib/typescript/a2ui/useReplyState.d.ts +4 -0
  549. package/lib/typescript/a2ui/useReplyState.d.ts.map +1 -0
  550. package/lib/typescript/ai-components/AITypingIndicatorView.d.ts.map +1 -1
  551. package/lib/typescript/ai-components/StreamingMessageView.d.ts +4 -1
  552. package/lib/typescript/ai-components/StreamingMessageView.d.ts.map +1 -1
  553. package/lib/typescript/ai-components/charts/components/PieLegend.d.ts.map +1 -1
  554. package/lib/typescript/ai-components/charts/components/VictoryChart.d.ts.map +1 -1
  555. package/lib/typescript/ai-components/charts/utils/format-time-label.d.ts +7 -0
  556. package/lib/typescript/ai-components/charts/utils/format-time-label.d.ts.map +1 -0
  557. package/lib/typescript/ai-components/charts/vega-lite/schema.d.ts +8 -8
  558. package/lib/typescript/ai-components/charts/vega-lite/schema.d.ts.map +1 -1
  559. package/lib/typescript/ai-components/contexts/composer-context.d.ts +3 -0
  560. package/lib/typescript/ai-components/contexts/composer-context.d.ts.map +1 -1
  561. package/lib/typescript/ai-components/contexts/index.d.ts +1 -0
  562. package/lib/typescript/ai-components/contexts/index.d.ts.map +1 -1
  563. package/lib/typescript/ai-components/contexts/theme-context.d.ts.map +1 -1
  564. package/lib/typescript/ai-components/contexts/translation-context.d.ts +19 -0
  565. package/lib/typescript/ai-components/contexts/translation-context.d.ts.map +1 -0
  566. package/lib/typescript/ai-components/conversation/AIConversation.d.ts +130 -0
  567. package/lib/typescript/ai-components/conversation/AIConversation.d.ts.map +1 -0
  568. package/lib/typescript/ai-components/conversation/controller/AIAgentError.d.ts +10 -0
  569. package/lib/typescript/ai-components/conversation/controller/AIAgentError.d.ts.map +1 -0
  570. package/lib/typescript/ai-components/conversation/controller/AIConversationController.d.ts +173 -0
  571. package/lib/typescript/ai-components/conversation/controller/AIConversationController.d.ts.map +1 -0
  572. package/lib/typescript/ai-components/conversation/controller/AIConversationExchange.d.ts +23 -0
  573. package/lib/typescript/ai-components/conversation/controller/AIConversationExchange.d.ts.map +1 -0
  574. package/lib/typescript/ai-components/conversation/controller/index.d.ts +5 -0
  575. package/lib/typescript/ai-components/conversation/controller/index.d.ts.map +1 -0
  576. package/lib/typescript/ai-components/conversation/controller/offers.d.ts +23 -0
  577. package/lib/typescript/ai-components/conversation/controller/offers.d.ts.map +1 -0
  578. package/lib/typescript/ai-components/conversation/controller/types.d.ts +142 -0
  579. package/lib/typescript/ai-components/conversation/controller/types.d.ts.map +1 -0
  580. package/lib/typescript/ai-components/conversation/controller/useAIConversationState.d.ts +9 -0
  581. package/lib/typescript/ai-components/conversation/controller/useAIConversationState.d.ts.map +1 -0
  582. package/lib/typescript/ai-components/conversation/entries.d.ts +47 -0
  583. package/lib/typescript/ai-components/conversation/entries.d.ts.map +1 -0
  584. package/lib/typescript/ai-components/conversation/fromStreamMessage.d.ts +25 -0
  585. package/lib/typescript/ai-components/conversation/fromStreamMessage.d.ts.map +1 -0
  586. package/lib/typescript/ai-components/conversation/index.d.ts +6 -0
  587. package/lib/typescript/ai-components/conversation/index.d.ts.map +1 -0
  588. package/lib/typescript/ai-components/conversation/list/AIChatList.d.ts +30 -0
  589. package/lib/typescript/ai-components/conversation/list/AIChatList.d.ts.map +1 -0
  590. package/lib/typescript/ai-components/conversation/list/useChatListController.d.ts +45 -0
  591. package/lib/typescript/ai-components/conversation/list/useChatListController.d.ts.map +1 -0
  592. package/lib/typescript/ai-components/conversation/list/useEndInView.d.ts +26 -0
  593. package/lib/typescript/ai-components/conversation/list/useEndInView.d.ts.map +1 -0
  594. package/lib/typescript/ai-components/conversation/list/useKeyboardOverlap.d.ts +17 -0
  595. package/lib/typescript/ai-components/conversation/list/useKeyboardOverlap.d.ts.map +1 -0
  596. package/lib/typescript/ai-components/conversation/list/useLoadOlder.d.ts +24 -0
  597. package/lib/typescript/ai-components/conversation/list/useLoadOlder.d.ts.map +1 -0
  598. package/lib/typescript/ai-components/conversation/list/usePinnedAnchor.d.ts +26 -0
  599. package/lib/typescript/ai-components/conversation/list/usePinnedAnchor.d.ts.map +1 -0
  600. package/lib/typescript/ai-components/conversation/types.d.ts +55 -0
  601. package/lib/typescript/ai-components/conversation/types.d.ts.map +1 -0
  602. package/lib/typescript/ai-components/conversation/useConversationRows.d.ts +66 -0
  603. package/lib/typescript/ai-components/conversation/useConversationRows.d.ts.map +1 -0
  604. package/lib/typescript/ai-components/generative-ui/AIUIAction.d.ts +48 -0
  605. package/lib/typescript/ai-components/generative-ui/AIUIAction.d.ts.map +1 -0
  606. package/lib/typescript/ai-components/generative-ui/AIUIArguments.d.ts +15 -0
  607. package/lib/typescript/ai-components/generative-ui/AIUIArguments.d.ts.map +1 -0
  608. package/lib/typescript/ai-components/generative-ui/AIUIComponent.d.ts +51 -0
  609. package/lib/typescript/ai-components/generative-ui/AIUIComponent.d.ts.map +1 -0
  610. package/lib/typescript/ai-components/generative-ui/AIUIComponentDefinition.d.ts +84 -0
  611. package/lib/typescript/ai-components/generative-ui/AIUIComponentDefinition.d.ts.map +1 -0
  612. package/lib/typescript/ai-components/generative-ui/AIUIDocument.d.ts +50 -0
  613. package/lib/typescript/ai-components/generative-ui/AIUIDocument.d.ts.map +1 -0
  614. package/lib/typescript/ai-components/generative-ui/AIUIEntrance.d.ts +75 -0
  615. package/lib/typescript/ai-components/generative-ui/AIUIEntrance.d.ts.map +1 -0
  616. package/lib/typescript/ai-components/generative-ui/AIUIErrorBoundary.d.ts +26 -0
  617. package/lib/typescript/ai-components/generative-ui/AIUIErrorBoundary.d.ts.map +1 -0
  618. package/lib/typescript/ai-components/generative-ui/AIUIHelpers.d.ts +23 -0
  619. package/lib/typescript/ai-components/generative-ui/AIUIHelpers.d.ts.map +1 -0
  620. package/lib/typescript/ai-components/generative-ui/AIUIHost.d.ts +160 -0
  621. package/lib/typescript/ai-components/generative-ui/AIUIHost.d.ts.map +1 -0
  622. package/lib/typescript/ai-components/generative-ui/AIUIMedia.d.ts +22 -0
  623. package/lib/typescript/ai-components/generative-ui/AIUIMedia.d.ts.map +1 -0
  624. package/lib/typescript/ai-components/generative-ui/AIUIRenderer.d.ts +53 -0
  625. package/lib/typescript/ai-components/generative-ui/AIUIRenderer.d.ts.map +1 -0
  626. package/lib/typescript/ai-components/generative-ui/AIUIView.d.ts +35 -0
  627. package/lib/typescript/ai-components/generative-ui/AIUIView.d.ts.map +1 -0
  628. package/lib/typescript/ai-components/generative-ui/index.d.ts +11 -0
  629. package/lib/typescript/ai-components/generative-ui/index.d.ts.map +1 -0
  630. package/lib/typescript/ai-components/icons.d.ts +66 -0
  631. package/lib/typescript/ai-components/icons.d.ts.map +1 -0
  632. package/lib/typescript/ai-components/index.d.ts +8 -0
  633. package/lib/typescript/ai-components/index.d.ts.map +1 -1
  634. package/lib/typescript/ai-components/internal/Shimmer.d.ts +14 -0
  635. package/lib/typescript/ai-components/internal/Shimmer.d.ts.map +1 -0
  636. package/lib/typescript/ai-components/internal/format.d.ts +7 -0
  637. package/lib/typescript/ai-components/internal/format.d.ts.map +1 -0
  638. package/lib/typescript/ai-components/internal/hooks/useBottomSafeArea.d.ts +3 -0
  639. package/lib/typescript/ai-components/internal/hooks/useBottomSafeArea.d.ts.map +1 -0
  640. package/lib/typescript/ai-components/internal/icons/AgentIcons.d.ts +31 -0
  641. package/lib/typescript/ai-components/internal/icons/AgentIcons.d.ts.map +1 -0
  642. package/lib/typescript/ai-components/internal/tokens.d.ts +2 -0
  643. package/lib/typescript/ai-components/internal/tokens.d.ts.map +1 -0
  644. package/lib/typescript/ai-components/internal/uuid.d.ts +2 -0
  645. package/lib/typescript/ai-components/internal/uuid.d.ts.map +1 -0
  646. package/lib/typescript/ai-components/markdown/components/CodeBlock.d.ts.map +1 -1
  647. package/lib/typescript/ai-components/markdown/components/InlineCode.d.ts.map +1 -1
  648. package/lib/typescript/ai-components/markdown/components/Text.d.ts.map +1 -1
  649. package/lib/typescript/ai-components/markdown/styles.d.ts +23 -4
  650. package/lib/typescript/ai-components/markdown/styles.d.ts.map +1 -1
  651. package/lib/typescript/ai-components/markdown/types.d.ts +1 -0
  652. package/lib/typescript/ai-components/markdown/types.d.ts.map +1 -1
  653. package/lib/typescript/ai-components/message/AIAssistantMessage.d.ts +40 -0
  654. package/lib/typescript/ai-components/message/AIAssistantMessage.d.ts.map +1 -0
  655. package/lib/typescript/ai-components/message/AIMessageAttachment.d.ts +33 -0
  656. package/lib/typescript/ai-components/message/AIMessageAttachment.d.ts.map +1 -0
  657. package/lib/typescript/ai-components/message/AIReplyActions.d.ts +19 -0
  658. package/lib/typescript/ai-components/message/AIReplyActions.d.ts.map +1 -0
  659. package/lib/typescript/ai-components/message/AIUserMessage.d.ts +17 -0
  660. package/lib/typescript/ai-components/message/AIUserMessage.d.ts.map +1 -0
  661. package/lib/typescript/ai-components/message/UserMessageMenu.d.ts +31 -0
  662. package/lib/typescript/ai-components/message/UserMessageMenu.d.ts.map +1 -0
  663. package/lib/typescript/ai-components/message/index.d.ts +5 -0
  664. package/lib/typescript/ai-components/message/index.d.ts.map +1 -0
  665. package/lib/typescript/ai-components/message-composer/ActionButton.d.ts.map +1 -1
  666. package/lib/typescript/ai-components/message-composer/ActionSheet.d.ts +2 -2
  667. package/lib/typescript/ai-components/message-composer/ActionSheet.d.ts.map +1 -1
  668. package/lib/typescript/ai-components/message-composer/AttachmentButton.d.ts.map +1 -1
  669. package/lib/typescript/ai-components/message-composer/ChatOptions.d.ts +35 -0
  670. package/lib/typescript/ai-components/message-composer/ChatOptions.d.ts.map +1 -0
  671. package/lib/typescript/ai-components/message-composer/ComposerView.d.ts +34 -3
  672. package/lib/typescript/ai-components/message-composer/ComposerView.d.ts.map +1 -1
  673. package/lib/typescript/ai-components/message-composer/EditingMessageChip.d.ts +7 -0
  674. package/lib/typescript/ai-components/message-composer/EditingMessageChip.d.ts.map +1 -0
  675. package/lib/typescript/ai-components/message-composer/MediaPreviewList.d.ts.map +1 -1
  676. package/lib/typescript/ai-components/message-composer/index.d.ts +1 -0
  677. package/lib/typescript/ai-components/message-composer/index.d.ts.map +1 -1
  678. package/lib/typescript/ai-components/message-parts/AIMessageParts.d.ts +38 -0
  679. package/lib/typescript/ai-components/message-parts/AIMessageParts.d.ts.map +1 -0
  680. package/lib/typescript/ai-components/message-parts/AIToolApproval.d.ts +38 -0
  681. package/lib/typescript/ai-components/message-parts/AIToolApproval.d.ts.map +1 -0
  682. package/lib/typescript/ai-components/message-parts/AIToolAuthorization.d.ts +48 -0
  683. package/lib/typescript/ai-components/message-parts/AIToolAuthorization.d.ts.map +1 -0
  684. package/lib/typescript/ai-components/message-parts/AIToolCall.d.ts +11 -0
  685. package/lib/typescript/ai-components/message-parts/AIToolCall.d.ts.map +1 -0
  686. package/lib/typescript/ai-components/message-parts/callStates.d.ts +9 -0
  687. package/lib/typescript/ai-components/message-parts/callStates.d.ts.map +1 -0
  688. package/lib/typescript/ai-components/message-parts/index.d.ts +7 -0
  689. package/lib/typescript/ai-components/message-parts/index.d.ts.map +1 -0
  690. package/lib/typescript/ai-components/message-parts/parseMessageParts.d.ts +47 -0
  691. package/lib/typescript/ai-components/message-parts/parseMessageParts.d.ts.map +1 -0
  692. package/lib/typescript/ai-components/message-parts/types.d.ts +137 -0
  693. package/lib/typescript/ai-components/message-parts/types.d.ts.map +1 -0
  694. package/lib/typescript/ai-components/native-specs/NativeAIAgent.d.ts +22 -0
  695. package/lib/typescript/ai-components/native-specs/NativeAIAgent.d.ts.map +1 -0
  696. package/lib/typescript/ai-components/reasoning/AIReasoning.d.ts +63 -0
  697. package/lib/typescript/ai-components/reasoning/AIReasoning.d.ts.map +1 -0
  698. package/lib/typescript/ai-components/reasoning/index.d.ts +3 -0
  699. package/lib/typescript/ai-components/reasoning/index.d.ts.map +1 -0
  700. package/lib/typescript/ai-components/reasoning/thinkingClock.d.ts +29 -0
  701. package/lib/typescript/ai-components/reasoning/thinkingClock.d.ts.map +1 -0
  702. package/lib/typescript/ai-components/services/clipboard-service/expo.d.ts.map +1 -1
  703. package/lib/typescript/ai-components/store/composer/store.d.ts +8 -0
  704. package/lib/typescript/ai-components/store/composer/store.d.ts.map +1 -1
  705. package/lib/typescript/ai-components/store/composer/useComposerChatOption.d.ts +5 -0
  706. package/lib/typescript/ai-components/store/composer/useComposerChatOption.d.ts.map +1 -0
  707. package/lib/typescript/ai-components/store/composer/useComposerIsEditing.d.ts +5 -0
  708. package/lib/typescript/ai-components/store/composer/useComposerIsEditing.d.ts.map +1 -0
  709. package/lib/typescript/ai-components/store/index.d.ts +2 -0
  710. package/lib/typescript/ai-components/store/index.d.ts.map +1 -1
  711. package/lib/typescript/ai-components/suggestions/AISuggestions.d.ts +13 -0
  712. package/lib/typescript/ai-components/suggestions/AISuggestions.d.ts.map +1 -0
  713. package/lib/typescript/ai-components/suggestions/index.d.ts +2 -0
  714. package/lib/typescript/ai-components/suggestions/index.d.ts.map +1 -0
  715. package/lib/typescript/ai-components/syntax-highlighting/utils/flatten-nodes.d.ts.map +1 -1
  716. package/lib/typescript/ai-components/syntax-highlighting/utils/renderer.d.ts +1 -1
  717. package/lib/typescript/ai-components/syntax-highlighting/utils/renderer.d.ts.map +1 -1
  718. package/lib/typescript/ai-components/theme.d.ts +200 -0
  719. package/lib/typescript/ai-components/theme.d.ts.map +1 -1
  720. package/lib/typescript/ai-components/tool-calls/AIClientIdentity.d.ts +14 -0
  721. package/lib/typescript/ai-components/tool-calls/AIClientIdentity.d.ts.map +1 -0
  722. package/lib/typescript/ai-components/tool-calls/AIClientToolRunner.d.ts +109 -0
  723. package/lib/typescript/ai-components/tool-calls/AIClientToolRunner.d.ts.map +1 -0
  724. package/lib/typescript/ai-components/tool-calls/AIToolApprover.d.ts +48 -0
  725. package/lib/typescript/ai-components/tool-calls/AIToolApprover.d.ts.map +1 -0
  726. package/lib/typescript/ai-components/tool-calls/authSessionAuthorizer.d.ts +57 -0
  727. package/lib/typescript/ai-components/tool-calls/authSessionAuthorizer.d.ts.map +1 -0
  728. package/lib/typescript/ai-components/tool-calls/index.d.ts +5 -0
  729. package/lib/typescript/ai-components/tool-calls/index.d.ts.map +1 -0
  730. package/lib/typescript/ai-components/voice-visualization/glowShader.d.ts.map +1 -1
  731. package/lib/typescript/ai-components/voice-visualization/simplex.d.ts +1 -1
  732. package/lib/typescript/components/Accessibility/NotificationAnnouncer.d.ts +5 -5
  733. package/lib/typescript/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts +1 -1
  734. package/lib/typescript/components/Accessibility/useAccessibilityAnnouncer.d.ts +0 -2
  735. package/lib/typescript/components/Accessibility/useAccessibilityAnnouncer.d.ts.map +1 -1
  736. package/lib/typescript/components/Message/MessageItemView/utils/renderText.d.ts.map +1 -1
  737. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts +1 -1
  738. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts.map +1 -1
  739. package/lib/typescript/i18n/ar.json +39 -1
  740. package/lib/typescript/i18n/en.json +39 -1
  741. package/lib/typescript/i18n/es.json +39 -1
  742. package/lib/typescript/i18n/fr.json +39 -1
  743. package/lib/typescript/i18n/he.json +39 -1
  744. package/lib/typescript/i18n/hi.json +39 -1
  745. package/lib/typescript/i18n/it.json +39 -1
  746. package/lib/typescript/i18n/ja.json +39 -1
  747. package/lib/typescript/i18n/ko.json +39 -1
  748. package/lib/typescript/i18n/nl.json +39 -1
  749. package/lib/typescript/i18n/pt-br.json +39 -1
  750. package/lib/typescript/i18n/ru.json +39 -1
  751. package/lib/typescript/i18n/tr.json +39 -1
  752. package/lib/typescript/utils/i18n/Streami18n.d.ts +40 -2
  753. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  754. package/lib/typescript/utils/i18n/utils.d.ts +3 -0
  755. package/lib/typescript/utils/i18n/utils.d.ts.map +1 -0
  756. package/package.json +10 -2
  757. package/src/a11y/a11yUtils.ts +0 -1
  758. package/src/a11y/hooks/useResolvedModalAccessibilityProps.ts +2 -3
  759. package/src/a2ui/A2UIContexts.ts +15 -0
  760. package/src/a2ui/A2UIInstructions.ts +102 -0
  761. package/src/a2ui/A2UIPlaceholder.tsx +24 -0
  762. package/src/a2ui/A2UIRenderer.tsx +504 -0
  763. package/src/a2ui/A2UIStream.ts +105 -0
  764. package/src/a2ui/A2UISurface.tsx +241 -0
  765. package/src/a2ui/__tests__/A2UIInstructions.test.ts +233 -0
  766. package/src/a2ui/__tests__/A2UIRenderer.test.tsx +1514 -0
  767. package/src/a2ui/__tests__/conformance.test.ts +579 -0
  768. package/src/a2ui/basicCatalog.json +1206 -0
  769. package/src/a2ui/basicFunctions.ts +429 -0
  770. package/src/a2ui/catalogDocument.ts +119 -0
  771. package/src/a2ui/catalogs.ts +185 -0
  772. package/src/a2ui/components/DateTimeInput.tsx +381 -0
  773. package/src/a2ui/components/Media.tsx +278 -0
  774. package/src/a2ui/components/basicComponents.tsx +832 -0
  775. package/src/a2ui/components/iconPaths.ts +116 -0
  776. package/src/a2ui/components/types.ts +24 -0
  777. package/src/a2ui/index.ts +18 -0
  778. package/src/a2ui/instructions.ts +341 -0
  779. package/src/a2ui/secrets.ts +154 -0
  780. package/src/a2ui/useReplyState.ts +26 -0
  781. package/src/ai-components/AITypingIndicatorView.tsx +6 -22
  782. package/src/ai-components/README.md +55 -3
  783. package/src/ai-components/StreamingMessageView.tsx +27 -3
  784. package/src/ai-components/__tests__/ComposerView.test.tsx +227 -2
  785. package/src/ai-components/__tests__/Markdown.test.tsx +13 -0
  786. package/src/ai-components/__tests__/StreamingMessageView.test.tsx +69 -0
  787. package/src/ai-components/__tests__/charts.test.ts +75 -0
  788. package/src/ai-components/__tests__/clientToolRunner.test.ts +239 -0
  789. package/src/ai-components/__tests__/conversation.test.tsx +705 -0
  790. package/src/ai-components/__tests__/conversationController.test.ts +1561 -0
  791. package/src/ai-components/__tests__/conversationExchange.test.ts +187 -0
  792. package/src/ai-components/__tests__/conversationRows.test.ts +207 -0
  793. package/src/ai-components/__tests__/conversationUI.test.tsx +586 -0
  794. package/src/ai-components/__tests__/format.test.ts +32 -0
  795. package/src/ai-components/__tests__/generativeUI.test.ts +634 -0
  796. package/src/ai-components/__tests__/keyboard.test.ts +14 -0
  797. package/src/ai-components/__tests__/messagePartViews.test.tsx +343 -0
  798. package/src/ai-components/__tests__/messageParts.test.ts +336 -0
  799. package/src/ai-components/__tests__/messageViews.test.tsx +321 -0
  800. package/src/ai-components/__tests__/signIn.test.tsx +324 -0
  801. package/src/ai-components/__tests__/theme.test.tsx +18 -0
  802. package/src/ai-components/__tests__/translation.test.tsx +85 -0
  803. package/src/ai-components/__tests__/voiceDriver.test.ts +0 -3
  804. package/src/ai-components/__tests__/voicePalette.test.ts +1 -1
  805. package/src/ai-components/charts/components/PieLegend.tsx +2 -1
  806. package/src/ai-components/charts/components/VictoryChart.tsx +10 -2
  807. package/src/ai-components/charts/utils/format-time-label.ts +18 -0
  808. package/src/ai-components/charts/vega-lite/schema.ts +19 -2
  809. package/src/ai-components/contexts/composer-context.tsx +13 -5
  810. package/src/ai-components/contexts/index.ts +1 -0
  811. package/src/ai-components/contexts/theme-context.tsx +19 -4
  812. package/src/ai-components/contexts/translation-context.tsx +44 -0
  813. package/src/ai-components/conversation/AIConversation.tsx +590 -0
  814. package/src/ai-components/conversation/controller/AIAgentError.ts +14 -0
  815. package/src/ai-components/conversation/controller/AIConversationController.ts +623 -0
  816. package/src/ai-components/conversation/controller/AIConversationExchange.ts +132 -0
  817. package/src/ai-components/conversation/controller/index.ts +4 -0
  818. package/src/ai-components/conversation/controller/offers.ts +43 -0
  819. package/src/ai-components/conversation/controller/types.ts +154 -0
  820. package/src/ai-components/conversation/controller/useAIConversationState.ts +21 -0
  821. package/src/ai-components/conversation/entries.ts +177 -0
  822. package/src/ai-components/conversation/fromStreamMessage.ts +87 -0
  823. package/src/ai-components/conversation/index.ts +5 -0
  824. package/src/ai-components/conversation/list/AIChatList.tsx +227 -0
  825. package/src/ai-components/conversation/list/useChatListController.ts +91 -0
  826. package/src/ai-components/conversation/list/useEndInView.ts +61 -0
  827. package/src/ai-components/conversation/list/useKeyboardOverlap.ts +51 -0
  828. package/src/ai-components/conversation/list/useLoadOlder.ts +97 -0
  829. package/src/ai-components/conversation/list/usePinnedAnchor.ts +113 -0
  830. package/src/ai-components/conversation/types.ts +57 -0
  831. package/src/ai-components/conversation/useConversationRows.ts +230 -0
  832. package/src/ai-components/generative-ui/AIUIAction.ts +73 -0
  833. package/src/ai-components/generative-ui/AIUIArguments.ts +117 -0
  834. package/src/ai-components/generative-ui/AIUIComponent.tsx +106 -0
  835. package/src/ai-components/generative-ui/AIUIComponentDefinition.ts +163 -0
  836. package/src/ai-components/generative-ui/AIUIDocument.ts +77 -0
  837. package/src/ai-components/generative-ui/AIUIEntrance.tsx +223 -0
  838. package/src/ai-components/generative-ui/AIUIErrorBoundary.tsx +39 -0
  839. package/src/ai-components/generative-ui/AIUIHelpers.ts +86 -0
  840. package/src/ai-components/generative-ui/AIUIHost.ts +358 -0
  841. package/src/ai-components/generative-ui/AIUIMedia.ts +45 -0
  842. package/src/ai-components/generative-ui/AIUIRenderer.ts +60 -0
  843. package/src/ai-components/generative-ui/AIUIView.tsx +87 -0
  844. package/src/ai-components/generative-ui/index.ts +48 -0
  845. package/src/ai-components/icons.ts +101 -0
  846. package/src/ai-components/index.ts +10 -0
  847. package/src/ai-components/internal/Shimmer.tsx +40 -0
  848. package/src/ai-components/internal/format.ts +69 -0
  849. package/src/ai-components/internal/hooks/useBottomSafeArea.ts +6 -0
  850. package/src/ai-components/internal/icons/AgentIcons.tsx +138 -0
  851. package/src/ai-components/internal/tokens.ts +4 -0
  852. package/src/ai-components/internal/uuid.ts +17 -0
  853. package/src/ai-components/markdown/components/CodeBlock.tsx +13 -2
  854. package/src/ai-components/markdown/components/InlineCode.tsx +1 -0
  855. package/src/ai-components/markdown/components/Text.tsx +7 -2
  856. package/src/ai-components/markdown/styles.ts +29 -27
  857. package/src/ai-components/markdown/types.ts +1 -0
  858. package/src/ai-components/message/AIAssistantMessage.tsx +99 -0
  859. package/src/ai-components/message/AIMessageAttachment.tsx +245 -0
  860. package/src/ai-components/message/AIReplyActions.tsx +139 -0
  861. package/src/ai-components/message/AIUserMessage.tsx +121 -0
  862. package/src/ai-components/message/UserMessageMenu.tsx +149 -0
  863. package/src/ai-components/message/index.ts +4 -0
  864. package/src/ai-components/message-composer/ActionButton.tsx +5 -1
  865. package/src/ai-components/message-composer/ActionSheet.tsx +28 -6
  866. package/src/ai-components/message-composer/AttachmentButton.tsx +9 -1
  867. package/src/ai-components/message-composer/ChatOptions.tsx +144 -0
  868. package/src/ai-components/message-composer/ComposerView.tsx +179 -29
  869. package/src/ai-components/message-composer/EditingMessageChip.tsx +61 -0
  870. package/src/ai-components/message-composer/MediaPreviewList.tsx +34 -8
  871. package/src/ai-components/message-composer/index.ts +1 -0
  872. package/src/ai-components/message-parts/AIMessageParts.tsx +120 -0
  873. package/src/ai-components/message-parts/AIToolApproval.tsx +196 -0
  874. package/src/ai-components/message-parts/AIToolAuthorization.tsx +279 -0
  875. package/src/ai-components/message-parts/AIToolCall.tsx +117 -0
  876. package/src/ai-components/message-parts/callStates.ts +44 -0
  877. package/src/ai-components/message-parts/index.ts +6 -0
  878. package/src/ai-components/message-parts/parseMessageParts.ts +195 -0
  879. package/src/ai-components/message-parts/types.ts +157 -0
  880. package/src/ai-components/native-specs/NativeAIAgent.ts +25 -0
  881. package/src/ai-components/reasoning/AIReasoning.tsx +509 -0
  882. package/src/ai-components/reasoning/index.ts +2 -0
  883. package/src/ai-components/reasoning/thinkingClock.ts +109 -0
  884. package/src/ai-components/services/clipboard-service/expo.ts +18 -4
  885. package/src/ai-components/store/composer/store.ts +9 -0
  886. package/src/ai-components/store/composer/useComposerChatOption.ts +15 -0
  887. package/src/ai-components/store/composer/useComposerIsEditing.ts +15 -0
  888. package/src/ai-components/store/index.ts +2 -0
  889. package/src/ai-components/suggestions/AISuggestions.tsx +73 -0
  890. package/src/ai-components/suggestions/index.ts +1 -0
  891. package/src/ai-components/syntax-highlighting/utils/flatten-nodes.ts +2 -1
  892. package/src/ai-components/syntax-highlighting/utils/renderer.tsx +4 -2
  893. package/src/ai-components/theme.ts +334 -0
  894. package/src/ai-components/tool-calls/AIClientIdentity.ts +33 -0
  895. package/src/ai-components/tool-calls/AIClientToolRunner.ts +200 -0
  896. package/src/ai-components/tool-calls/AIToolApprover.tsx +60 -0
  897. package/src/ai-components/tool-calls/authSessionAuthorizer.ts +137 -0
  898. package/src/ai-components/tool-calls/index.ts +4 -0
  899. package/src/ai-components/voice-visualization/glowShader.ts +1 -3
  900. package/src/ai-components/voice-visualization/simplex.ts +1 -1
  901. package/src/components/Accessibility/NotificationAnnouncer.tsx +5 -5
  902. package/src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts +1 -1
  903. package/src/components/Accessibility/useAccessibilityAnnouncer.ts +0 -2
  904. package/src/components/Message/MessageItemView/utils/renderText.tsx +1 -2
  905. package/src/contexts/translationContext/TranslationContext.tsx +2 -2
  906. package/src/i18n/ar.json +39 -1
  907. package/src/i18n/en.json +39 -1
  908. package/src/i18n/es.json +39 -1
  909. package/src/i18n/fr.json +39 -1
  910. package/src/i18n/he.json +39 -1
  911. package/src/i18n/hi.json +39 -1
  912. package/src/i18n/it.json +39 -1
  913. package/src/i18n/ja.json +39 -1
  914. package/src/i18n/ko.json +39 -1
  915. package/src/i18n/nl.json +39 -1
  916. package/src/i18n/pt-br.json +39 -1
  917. package/src/i18n/ru.json +39 -1
  918. package/src/i18n/tr.json +39 -1
  919. package/src/mock-builders/a2ui/ohrid.ts +106 -0
  920. package/src/utils/i18n/Streami18n.ts +4 -1
  921. package/src/utils/i18n/utils.ts +3 -0
  922. package/src/version.json +1 -1
@@ -0,0 +1,200 @@
1
+ import { isAwaitingClient } from '../message-parts/parseMessageParts';
2
+ import type { AIMessagePartData, AIToolCallPart } from '../message-parts/types';
3
+
4
+ /**
5
+ * The name, description and argument schema of a client tool. It reads the same JSON as a Model
6
+ * Context Protocol tool (`name`, `description`, `inputSchema` and the `readOnlyHint` of its
7
+ * `annotations`), so a tool defined with the MCP SDK can be used as it is.
8
+ */
9
+ export type AIClientToolDefinition = {
10
+ /** The unique name of the tool. */
11
+ name: string;
12
+ /** Hints about how the tool behaves, as a Model Context Protocol tool's `annotations`. */
13
+ annotations?: {
14
+ /** Whether the tool only reads, and changes nothing. */
15
+ readOnlyHint?: boolean;
16
+ };
17
+ /** A description of what the tool does, for the agent. */
18
+ description?: string;
19
+ /** The JSON schema of the tool's arguments. */
20
+ inputSchema?: Record<string, unknown>;
21
+ };
22
+
23
+ /** What a device reports for a call. */
24
+ export type AIClientToolResult = {
25
+ /** Why the device could not run the call, such as "Location not shared". Shown on the step and told to the model. */
26
+ failure?: string;
27
+ /** The result for the model, a value that serializes to JSON. */
28
+ output?: unknown;
29
+ /**
30
+ * A short outcome every channel member sees on the step, such as "Shared approximate location".
31
+ * Keep the data itself out of it.
32
+ */
33
+ summary?: string;
34
+ };
35
+
36
+ /** A completed call, with its result for the model. */
37
+ export const completedToolResult = (output: unknown, summary?: string): AIClientToolResult => ({
38
+ output,
39
+ summary,
40
+ });
41
+
42
+ /** A call the device could not run. */
43
+ export const failedToolResult = (reason: string): AIClientToolResult => ({ failure: reason });
44
+
45
+ // `result` with output the agent can read: JSON, as it goes to the model. Other output, such as a
46
+ // value that refers to itself, is a failure rather than a result that can't be sent.
47
+ const jsonResultOf = (result: AIClientToolResult): AIClientToolResult => {
48
+ if (result.output === undefined) return result;
49
+ try {
50
+ const json = JSON.stringify(result.output);
51
+ if (json !== undefined) return { ...result, output: JSON.parse(json) as unknown };
52
+ } catch {
53
+ // Falls through to the failure.
54
+ }
55
+ return failedToolResult("The tool's output isn't JSON");
56
+ };
57
+
58
+ /**
59
+ * A tool this device runs when an AI agent asks for it. Describe it to the agent with
60
+ * `AIClientToolRunner`'s `registrations`. The agent writes each call on its reply as an
61
+ * `ai_tool_call` step with `executor: client` and `status: awaiting_client`, addressed to one
62
+ * person and one install, and an `AIClientToolRunner` on that install runs it.
63
+ */
64
+ export type AIClientTool = {
65
+ /** The tool's name, description and argument schema, as the agent sees them. */
66
+ definition: AIClientToolDefinition;
67
+ /**
68
+ * Runs one call. A call whose tool asks the person first reaches the device only once they
69
+ * allowed it. A tool that throws reports that it failed.
70
+ */
71
+ run: (call: AIToolCallPart) => AIClientToolResult | Promise<AIClientToolResult>;
72
+ /** Guidance for the agent on when and how to use the tool, sent with its definition. */
73
+ instructions?: string;
74
+ /** Whether the app shows that the tool reaches outside the conversation while it runs. */
75
+ showExternalSourcesIndicator?: boolean;
76
+ };
77
+
78
+ /** How a client tool is described to the agent, for your backend to register it. */
79
+ export type AIClientToolRegistration = {
80
+ /** What the tool does: its description, or its instructions when it has none. */
81
+ description: string;
82
+ /** The unique name of the tool. This is how the agent identifies it. */
83
+ name: string;
84
+ /** Whether the app shows that the tool reaches outside the conversation while it runs. */
85
+ showExternalSourcesIndicator: boolean;
86
+ /** Guidance for the agent on when and how to use the tool. */
87
+ instructions?: string;
88
+ /** The JSON schema of the tool's arguments. */
89
+ parameters?: Record<string, unknown>;
90
+ };
91
+
92
+ /** Hands a call's result to your backend. A rejection offers it again on a later `run`. */
93
+ export type AIClientToolSend = (call: AIToolCallPart, result: AIClientToolResult) => Promise<void>;
94
+
95
+ export type AIClientToolRunnerOptions = {
96
+ /** This install, matched against a call's `target_client_id`, such as `AIClientIdentity.installId()`. */
97
+ clientId: string;
98
+ tools: AIClientTool[];
99
+ /** The person signed in, matched against a call's `target_user_id`. */
100
+ userId: string;
101
+ /** How many times a result is offered to `send` before the runner gives up on it. Defaults to 3. */
102
+ maxAttempts?: number;
103
+ };
104
+
105
+ type CallState = {
106
+ attempts: number;
107
+ result?: AIClientToolResult;
108
+ sending: boolean;
109
+ sent: boolean;
110
+ };
111
+
112
+ /**
113
+ * Runs the client tool calls addressed to this device, each once. Give it each AI reply's steps
114
+ * as they update. It runs a call when the call awaits this person and this install, the runner
115
+ * has a tool of that name and the call has not run here before, then hands the result to `send`.
116
+ * A result that could not be sent is sent again on a later update, without running the tool
117
+ * again.
118
+ *
119
+ * ```ts
120
+ * const runner = new AIClientToolRunner({ clientId: AIClientIdentity.installId(), tools: [localTime], userId });
121
+ * runner.run(message.parts, (call, result) => backend.send(call.id, result));
122
+ * ```
123
+ */
124
+ export class AIClientToolRunner {
125
+ readonly clientId: string;
126
+ readonly maxAttempts: number;
127
+ readonly userId: string;
128
+ private readonly calls = new Map<string, CallState>();
129
+ private readonly tools = new Map<string, AIClientTool>();
130
+
131
+ constructor({ clientId, maxAttempts = 3, tools, userId }: AIClientToolRunnerOptions) {
132
+ this.clientId = clientId;
133
+ this.maxAttempts = maxAttempts;
134
+ this.userId = userId;
135
+ for (const tool of tools) {
136
+ // The first tool of a name wins.
137
+ if (!this.tools.has(tool.definition.name)) this.tools.set(tool.definition.name, tool);
138
+ }
139
+ }
140
+
141
+ /** The names of the tools this device can run, sorted. */
142
+ get toolNames() {
143
+ return [...this.tools.keys()].sort();
144
+ }
145
+
146
+ /**
147
+ * How this device's tools are described to the agent, sorted by name. Send them to your
148
+ * backend so the agent knows it can call them.
149
+ */
150
+ get registrations(): AIClientToolRegistration[] {
151
+ return this.toolNames.map((name) => {
152
+ const { definition, instructions, showExternalSourcesIndicator } = this.tools.get(name)!;
153
+ return {
154
+ description: definition.description ?? instructions ?? '',
155
+ name: definition.name,
156
+ showExternalSourcesIndicator: showExternalSourcesIndicator ?? false,
157
+ ...(instructions !== undefined ? { instructions } : {}),
158
+ ...(definition.inputSchema !== undefined ? { parameters: definition.inputSchema } : {}),
159
+ };
160
+ });
161
+ }
162
+
163
+ /** Runs the calls among `parts` that await this device, and sends their results. */
164
+ run(parts: readonly AIMessagePartData[], send: AIClientToolSend) {
165
+ for (const { toolCall: call } of parts) {
166
+ if (!call || !isAwaitingClient(call, this.userId, this.clientId)) continue;
167
+ const tool = this.tools.get(call.name);
168
+ if (!tool) continue;
169
+ const state = this.calls.get(call.id) ?? { attempts: 0, sending: false, sent: false };
170
+ if (state.sending || state.sent || state.attempts >= this.maxAttempts) continue;
171
+ state.sending = true;
172
+ this.calls.set(call.id, state);
173
+ void this.deliver(tool, call, state, send);
174
+ }
175
+ }
176
+
177
+ private async deliver(
178
+ tool: AIClientTool,
179
+ call: AIToolCallPart,
180
+ state: CallState,
181
+ send: AIClientToolSend,
182
+ ) {
183
+ if (!state.result) {
184
+ try {
185
+ state.result = jsonResultOf(await tool.run(call));
186
+ } catch {
187
+ // What the tool threw stays on the device: the failure is shown to everyone in the channel.
188
+ state.result = failedToolResult("The tool couldn't run");
189
+ }
190
+ }
191
+ state.attempts += 1;
192
+ try {
193
+ await send(call, state.result);
194
+ state.sent = true;
195
+ } catch {
196
+ // Offered again on the next update that still shows the call waiting.
197
+ }
198
+ state.sending = false;
199
+ }
200
+ }
@@ -0,0 +1,60 @@
1
+ import React, { createContext, type PropsWithChildren, useContext } from 'react';
2
+
3
+ import type { AIToolCallPart } from '../message-parts/types';
4
+
5
+ /**
6
+ * How the person signs in on this device when a tool call waits for their account at a
7
+ * provider, and how their "not now" reaches your backend, which holds the call until one or
8
+ * the other.
9
+ */
10
+ export type AIToolAuthorizer = {
11
+ /**
12
+ * Opens the call's sign-in. Resolves `true` once the account is connected: your backend then
13
+ * updates the call's step, and until it does the sign-in reads as connecting. Resolves `false`
14
+ * when it ended without connecting, so the person can try again. Resolves `'closed'` when the
15
+ * person closed it and it can't be opened again, as the router's sign-in can't once its page
16
+ * has opened: the call is then declined, as with "Not now". Rejects when the sign-in could
17
+ * not be opened.
18
+ */
19
+ connect: (call: AIToolCallPart) => Promise<boolean | 'closed'>;
20
+ /**
21
+ * Tells your backend the person won't sign in now. Your backend ends the call, which never
22
+ * runs. A rejection lets the person answer again.
23
+ */
24
+ decline: (call: AIToolCallPart) => Promise<void>;
25
+ };
26
+
27
+ /**
28
+ * The person answering tool calls' questions on this device, and how their answer reaches
29
+ * your backend, which holds each call until it gets one.
30
+ */
31
+ export type AIToolApprover = {
32
+ /** This install, matched against a client tool call's `target_client_id`. */
33
+ clientId: string;
34
+ /**
35
+ * Sends the answer. Your backend checks it is this person's (and this install's, for a
36
+ * client tool), then updates the call's step; until then the question stays, with its
37
+ * buttons disabled. A rejection lets the person answer again.
38
+ */
39
+ decide: (call: AIToolCallPart, allowed: boolean) => Promise<void>;
40
+ /** The person signed in, matched against a call's `target_user_id`. */
41
+ userId: string;
42
+ /** How this person signs in when a call waits for their account. Without one, no sign-in is offered here. */
43
+ authorizer?: AIToolAuthorizer;
44
+ };
45
+
46
+ const AIToolApproverContext = createContext<AIToolApprover | undefined>(undefined);
47
+
48
+ /** Provides the approver to the AI components below it, for those not given one as a prop. */
49
+ export const AIToolApproverProvider = ({
50
+ approver,
51
+ children,
52
+ }: PropsWithChildren<{ approver?: AIToolApprover }>) => (
53
+ <AIToolApproverContext.Provider value={approver}>{children}</AIToolApproverContext.Provider>
54
+ );
55
+
56
+ /** The approver given as a prop, else the one of the nearest `AIToolApproverProvider`. */
57
+ export const useAIToolApprover = (approver?: AIToolApprover) => {
58
+ const fromContext = useContext(AIToolApproverContext);
59
+ return approver ?? fromContext;
60
+ };
@@ -0,0 +1,137 @@
1
+ import type { AIToolAuthorizer } from './AIToolApprover';
2
+
3
+ import type { AIToolAuthorizationData, AIToolCallPart } from '../message-parts/types';
4
+ import NativeAIAgent from '../native-specs/NativeAIAgent';
5
+
6
+ // The sign-in runs the router's launch page in the platform's web authentication session
7
+ // (`ASWebAuthenticationSession` on iOS, an Auth Tab or a Custom Tab on Android), with the
8
+ // handoff token in the page's fragment, which no server sees. The page goes to the provider,
9
+ // which sends the person back through the router to the session's return URL, on this app's
10
+ // scheme, with how it ended in the query.
11
+
12
+ /** How the router says a consent ended, in the return URL's `status` query parameter. */
13
+ export type ConnectorSignInStatus = 'connected' | 'denied' | 'failed' | 'account_mismatch';
14
+
15
+ const OUTCOMES: readonly string[] = [
16
+ 'connected',
17
+ 'denied',
18
+ 'failed',
19
+ 'account_mismatch',
20
+ ] satisfies ConnectorSignInStatus[];
21
+
22
+ const CONNECTION_ID = /^[\w-]{1,128}$/;
23
+
24
+ /** The sign-in's outcome, as the return URL says it. */
25
+ export type ConnectorSignInResult = {
26
+ connectionId: string;
27
+ status: ConnectorSignInStatus;
28
+ };
29
+
30
+ /**
31
+ * Why a sign-in could not be opened: the call carries no sign-in, or the app was built without
32
+ * the SDK's native code (`unavailable`), or the platform's session failed to open (`failed`).
33
+ */
34
+ export class AIConnectorSignInError extends Error {
35
+ readonly reason: 'failed' | 'unavailable';
36
+
37
+ constructor(reason: AIConnectorSignInError['reason'], message?: string) {
38
+ super(message ?? `The sign-in couldn't be opened (${reason}).`);
39
+ this.name = 'AIConnectorSignInError';
40
+ this.reason = reason;
41
+ }
42
+ }
43
+
44
+ // The page reads its fragment as form parameters, where `+` is a space and `&` and `=` separate
45
+ // them, so a token carrying one of them is percent-encoded, as is everything else unsafe.
46
+ const fragmentValue = (value: string) => encodeURIComponent(value);
47
+
48
+ /**
49
+ * The page to open for a sign-in: its `url` with the handoff token in the fragment. Read without
50
+ * `URL`, whose parts throw on React Native before 0.80.
51
+ */
52
+ export const signInLaunchUrl = ({ handoffToken, url }: AIToolAuthorizationData) => {
53
+ if (!handoffToken) return url;
54
+ const base = url.split('#')[0];
55
+ return `${base}#handoff_token=${fragmentValue(handoffToken)}`;
56
+ };
57
+
58
+ /** Reads the router's redirect to the return URL: `…?connection_id=…&status=…`. */
59
+ export const readConnectorSignInResult = (returned: string): ConnectorSignInResult | null => {
60
+ const query = returned.split('#')[0].split('?')[1] ?? '';
61
+ const params: Record<string, string> = {};
62
+ for (const pair of query.split('&')) {
63
+ const [name, value = ''] = pair.split('=');
64
+ if (!name) continue;
65
+ try {
66
+ params[decodeURIComponent(name)] = decodeURIComponent(value.replace(/\+/g, ' '));
67
+ } catch {
68
+ // A parameter that isn't valid percent-encoding is left out.
69
+ }
70
+ }
71
+ const connectionId = params.connection_id ?? '';
72
+ const status = params.status ?? '';
73
+ if (!CONNECTION_ID.test(connectionId) || !OUTCOMES.includes(status)) return null;
74
+ return { connectionId, status: status as ConnectorSignInStatus };
75
+ };
76
+
77
+ export type AuthSessionAuthorizerOptions = {
78
+ /**
79
+ * Your app's own URL scheme, such as `com.example.app`. It is the scheme of the return URL your
80
+ * sessions give their sign-ins (`return_url`), which the sign-in comes back to. Written as a
81
+ * URL's start, such as `myapp://`, it is read as `myapp`.
82
+ */
83
+ callbackScheme: string;
84
+ /**
85
+ * Tells your backend the person won't sign in now. Your backend ends the call. A rejection lets
86
+ * the person answer again.
87
+ */
88
+ decline: (call: AIToolCallPart) => Promise<void>;
89
+ /**
90
+ * Whether closing the sign-in declines the call, as "Not now" does. Defaults to `true`: the
91
+ * router's sign-in can be opened once, so after a close its page would only say it expired, and
92
+ * asking again starts a new one. Pass `false` if your app can give the call a new sign-in.
93
+ */
94
+ declineOnClose?: boolean;
95
+ };
96
+
97
+ export type AuthSessionAuthorizer = AIToolAuthorizer & { callbackScheme: string };
98
+
99
+ /**
100
+ * An `AIToolAuthorizer` that opens a call's sign-in in the platform's web authentication session:
101
+ * `ASWebAuthenticationSession` on iOS, and on Android the browser's Auth Tab, or a Custom Tab when
102
+ * the browser has none.
103
+ *
104
+ * `connect` resolves `true` when the return URL says the account is connected, `'closed'` when
105
+ * the person closed the sign-in (`false` with `declineOnClose: false`), and `false` when it ended
106
+ * otherwise. It rejects with an `AIConnectorSignInError` when the sign-in couldn't be opened.
107
+ */
108
+ export const createAuthSessionAuthorizer = ({
109
+ callbackScheme: written,
110
+ decline,
111
+ declineOnClose = true,
112
+ }: AuthSessionAuthorizerOptions): AuthSessionAuthorizer => {
113
+ // The scheme alone, as iOS's web authentication session takes it: `myapp://` would never match
114
+ // the return URL there, or be refused.
115
+ const callbackScheme = written.trim().replace(/:\/*$/, '');
116
+ const connect = async (call: AIToolCallPart) => {
117
+ const authorization = call.authorization;
118
+ if (!authorization || !NativeAIAgent) throw new AIConnectorSignInError('unavailable');
119
+ let returned: string;
120
+ try {
121
+ returned = await NativeAIAgent.openAuthSession(
122
+ signInLaunchUrl(authorization),
123
+ callbackScheme,
124
+ );
125
+ } catch (error) {
126
+ throw new AIConnectorSignInError(
127
+ 'failed',
128
+ error instanceof Error ? error.message : undefined,
129
+ );
130
+ }
131
+ // Nothing comes back when the person closed the sheet or the tab.
132
+ if (returned === '') return declineOnClose ? ('closed' as const) : false;
133
+ return readConnectorSignInResult(returned)?.status === 'connected';
134
+ };
135
+
136
+ return { callbackScheme, connect, decline };
137
+ };
@@ -0,0 +1,4 @@
1
+ export * from './AIClientIdentity';
2
+ export * from './AIToolApprover';
3
+ export * from './authSessionAuthorizer';
4
+ export * from './AIClientToolRunner';
@@ -1,9 +1,7 @@
1
1
  import { Skia, type SkRuntimeEffect } from '@shopify/react-native-skia';
2
2
 
3
3
  /**
4
- * The glow's shader, SkSL: the AGSL glow of stream-chat-android (itself ported from the iOS Metal
5
- * glow) as is, since AGSL is SkSL, so the platforms look alike. Every pixel is computed on the
6
- * GPU: color masses warped by simplex noise, concentric waves, ripples from a tap or a hovering
4
+ * The glow's shader, SkSL. Every pixel is computed on the GPU: color masses warped by simplex noise, concentric waves, ripples from a tap or a hovering
7
5
  * pointer, light and a halo. Pixels past the halo return at once, so only the glow itself costs.
8
6
  */
9
7
  const SOURCE = `
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 3-D simplex noise, a port of the glow shader's `snoise` (Ashima Arts / Stefan Gustavson), so the
3
- * wave drawn on the CPU moves with the same speech rhythm as the shader, as on iOS and the web.
3
+ * wave drawn on the CPU moves with the same speech rhythm as the shader.
4
4
  *
5
5
  * It runs in float32 like a GPU, with `mod` as a multiply by a float32 reciprocal, because the
6
6
  * hash is sensitive to rounding: in exact arithmetic some inputs hash to a neighbouring gradient.
@@ -7,11 +7,11 @@ import { useChatContext } from '../../contexts/chatContext/ChatContext';
7
7
  import { useTranslationContext } from '../../contexts/translationContext/TranslationContext';
8
8
 
9
9
  /**
10
- * Mirrors stream-chat-react's `<NotificationAnnouncer />`. RN does not yet have a
11
- * unified Notification queue, so this component currently announces only
12
- * connection-state transitions (offline → online and back) gated on
13
- * `accessibility.announceConnectionState`. Per-channel error announcements can
14
- * be wired in by a future PR via `useChannelContext().error`.
10
+ * Announces notifications. RN does not yet have a unified Notification queue,
11
+ * so this component currently announces only connection-state transitions
12
+ * (offline → online and back) gated on `accessibility.announceConnectionState`.
13
+ * Per-channel error announcements can be wired in by a future PR via
14
+ * `useChannelContext().error`.
15
15
  *
16
16
  * Renders nothing. Mount once inside `<Channel>` (or wherever the active chat
17
17
  * surface lives).
@@ -34,7 +34,7 @@ export type UseIncomingMessageAnnouncementsParams = {
34
34
  };
35
35
 
36
36
  /**
37
- * Mirrors stream-chat-react's `useIncomingMessageAnnouncements`:
37
+ * Announces incoming messages:
38
38
  * - 1 message → "New message from {{user}}"
39
39
  * - >1 messages within throttle window → "{{count}} new messages"
40
40
  * - Throttled to one announcement per second
@@ -20,8 +20,6 @@ export const AccessibilityAnnouncerContext = createContext<
20
20
  * Returns the imperative announcer. When called outside the AccessibilityProvider's
21
21
  * announcer context (which happens any time the SDK's a11y is disabled), this
22
22
  * returns a no-op.
23
- *
24
- * Mirrors the React SDK's `useAriaLiveAnnouncer` so cross-SDK code reads the same.
25
23
  */
26
24
  export const useAccessibilityAnnouncer = (): AccessibilityAnnounce => {
27
25
  const contextValue = useContext(AccessibilityAnnouncerContext);
@@ -449,8 +449,7 @@ export const renderText = (params: RenderTextParams) => {
449
449
 
450
450
  // Lookup keyed by the rendered mention text (sans `@`), lowercased so we
451
451
  // resolve case-insensitively. First-write-wins: if a user shares a name with
452
- // a role/group, the user entity is preferred — same precedence the React SDK
453
- // applies via insertion order in its plugin.
452
+ // a role/group, the user entity is preferred.
454
453
  const mentionLookup = new Map<string, MentionEntity>();
455
454
  for (const entity of mentionEntities) {
456
455
  const key = (entity.name ?? entity.id).toLowerCase();
@@ -4,9 +4,9 @@ import Dayjs from 'dayjs';
4
4
 
5
5
  import type { TranslationLanguages } from 'stream-chat';
6
6
 
7
- import { TranslatorFunctions } from './types';
7
+ import type { TranslatorFunctions } from './types';
8
8
 
9
- import { defaultTranslatorFunction } from '../../utils/i18n/Streami18n';
9
+ import { defaultTranslatorFunction } from '../../utils/i18n/utils';
10
10
  import { isTestEnvironment } from '../utils/isTestEnvironment';
11
11
 
12
12
  export const DEFAULT_USER_LANGUAGE: TranslationLanguages = 'en';
package/src/i18n/ar.json CHANGED
@@ -4,10 +4,12 @@
4
4
  "+{{count}}_other": "+{{count}}",
5
5
  "1 Reply": "رد واحد",
6
6
  "1 Thread Reply": "رد واحد في الموضوع",
7
+ "A step this app version can't show": "خطوة لا يمكن لهذا الإصدار من التطبيق عرضها",
7
8
  "Add a comment": "أضف تعليقاً",
8
9
  "Add a comment to the poll": "أضف تعليقًا على التصويت",
9
10
  "Add an option": "أضف خياراً",
10
11
  "Add more": "أضف المزيد",
12
+ "Allow": "السماح",
11
13
  "Allow access to your Gallery": "اسمح بالوصول إلى المعرض",
12
14
  "Allow camera access in device settings": "اسمح بالوصول إلى الكاميرا في إعدادات الجهاز",
13
15
  "Also send to channel": "أرسل أيضاً إلى القناة",
@@ -17,19 +19,27 @@
17
19
  "Are you sure?": "هل أنت متأكد؟",
18
20
  "Ask a question": "اطرح سؤالاً",
19
21
  "Audio": "صوت",
22
+ "Bad response": "رد سيئ",
20
23
  "Ban User": "منع المستخدم",
21
24
  "Block User": "حظر المستخدم",
22
25
  "Cancel": "إلغاء",
26
+ "Cancelled": "تم الإلغاء",
23
27
  "Cannot Flag Message": "تعذر الإبلاغ عن الرسالة",
28
+ "Connect": "اتصال",
29
+ "Connected to {{ provider }}": "متصل بـ {{ provider }}",
30
+ "Connecting...": "جارٍ الاتصال...",
24
31
  "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "فكّر في تأثير تعليقك على الآخرين وتأكد من اتباع إرشادات مجتمعنا",
25
32
  "Copy Message": "نسخ الرسالة",
26
33
  "Create Poll": "إنشاء تصويت",
34
+ "Declined": "تم الرفض",
27
35
  "Delete": "حذف",
28
36
  "Delete Message": "حذف الرسالة",
29
37
  "Delete for me": "حذف لدي",
30
38
  "Device camera is used to take photos or videos.": "تُستخدم كاميرا الجهاز لالتقاط الصور أو الفيديو.",
31
39
  "Device gallery permissions is used to take photos or videos.": "تُستخدم أذونات معرض الجهاز لالتقاط الصور أو الفيديو.",
40
+ "Didn't complete": "لم يكتمل",
32
41
  "Do you want to send a copy of this message to a moderator for further investigation?": "هل تريد إرسال نسخة من هذه الرسالة إلى مشرف لمزيد من المراجعة؟",
42
+ "Don't Allow": "عدم السماح",
33
43
  "Due since {{ dueSince }}": "مستحق منذ {{ dueSince }}",
34
44
  "Edit Message": "تعديل الرسالة",
35
45
  "Edited": "تم التعديل",
@@ -58,10 +68,12 @@
58
68
  "Flag action failed either due to a network issue or the message is already flagged": "فشلت عملية الإبلاغ بسبب مشكلة في الشبكة أو لأن الرسالة مبلّغ عنها بالفعل.",
59
69
  "Generating...": "جارٍ الإنشاء...",
60
70
  "Giphy": "Giphy",
71
+ "Good response": "رد جيد",
61
72
  "Hide who voted": "إخفاء من صوّت",
62
73
  "Hold to record. Release to save.": "اضغط مطولًا للتسجيل. حرّر للحفظ.",
63
74
  "Hold to start recording.": "اضغط مطولاً لبدء التسجيل.",
64
75
  "How about sending your first message to a friend?": "ما رأيك في إرسال أول رسالة إلى صديق؟",
76
+ "Image": "صورة",
65
77
  "Instant Commands": "الأوامر السريعة",
66
78
  "Let others add options": "السماح للآخرين بإضافة خيارات",
67
79
  "Let's start chatting!": "لنبدأ الدردشة!",
@@ -69,6 +81,7 @@
69
81
  "Live Location": "الموقع المباشر",
70
82
  "Loading channels...": "جارٍ تحميل القنوات...",
71
83
  "Loading messages...": "جارٍ تحميل الرسائل...",
84
+ "Loading older messages": "جارٍ تحميل الرسائل الأقدم",
72
85
  "Loading threads...": "جارٍ تحميل المواضيع...",
73
86
  "Loading...": "جارٍ التحميل...",
74
87
  "Location": "الموقع",
@@ -83,6 +96,8 @@
83
96
  "Message unpinned": "تم إلغاء تثبيت الرسالة",
84
97
  "Multiple votes": "تصويتات متعددة",
85
98
  "Network error": "خطأ في الشبكة",
99
+ "Not connected": "غير متصل",
100
+ "Not now": "ليس الآن",
86
101
  "Select more than one option": "اختر أكثر من خيار واحد",
87
102
  "Limit votes per person": "تحديد عدد الأصوات لكل شخص",
88
103
  "Choose between 2–10 options": "اختر بين 2 و10 خيارات",
@@ -113,11 +128,13 @@
113
128
  "Questions": "الأسئلة",
114
129
  "Reconnecting...": "جارٍ إعادة الاتصال...",
115
130
  "Reply": "رد",
131
+ "Reply actions": "إجراءات الرد",
116
132
  "Reply to {{name}}": "الرد على {{name}}",
117
133
  "Reply to Message": "الرد على الرسالة",
118
134
  "Resend": "إعادة الإرسال",
119
135
  "Retry Upload": "إعادة محاولة الرفع",
120
136
  "SEND": "إرسال",
137
+ "Scroll to latest": "الانتقال إلى أحدث رسالة",
121
138
  "Search": "بحث",
122
139
  "Select More Photos": "اختيار المزيد من الصور",
123
140
  "Select one": "اختر واحداً",
@@ -128,15 +145,22 @@
128
145
  "Send Anyway": "أرسل على أي حال",
129
146
  "Send a message": "أرسل رسالة",
130
147
  "Sending links is not allowed in this conversation": "إرسال الروابط غير مسموح في هذه المحادثة",
148
+ "Share": "مشاركة",
131
149
  "Show All": "عرض الكل",
132
150
  "Slide to Cancel": "اسحب للإلغاء",
133
151
  "Slow mode ON": "الوضع البطيء قيد التشغيل",
134
152
  "Slow mode, wait {{seconds}}s...": "وضع بطيء، انتظر {{seconds}}ث...",
135
153
  "Suggest an option": "اقترح خياراً",
136
154
  "The message has been reported to a moderator.": "تم الإبلاغ عن الرسالة إلى مشرف.",
155
+ "The sign-in couldn't be opened. Try again.": "تعذّر فتح تسجيل الدخول. حاول مرة أخرى.",
156
+ "The sign-in didn't complete.": "لم يكتمل تسجيل الدخول.",
137
157
  "The source message was deleted": "تم حذف الرسالة الأصلية",
138
158
  "Thinking...": "جارٍ التفكير...",
159
+ "Thinking... {{ duration }}": "جارٍ التفكير... {{ duration }}",
139
160
  "This reply was deleted": "تم حذف هذا الرد",
161
+ "This sign-in has expired.": "انتهت صلاحية تسجيل الدخول هذا.",
162
+ "Thought for {{ duration }}": "فكّر لمدة {{ duration }}",
163
+ "Thought process": "عملية التفكير",
140
164
  "Thread Reply": "رد في الموضوع",
141
165
  "Type a number from 2 to 10": "اكتب رقماً من 2 إلى 10",
142
166
  "Unban User": "إلغاء منع المستخدم",
@@ -154,6 +178,10 @@
154
178
  "Voice message": "رسالة صوتية",
155
179
  "Voice message ({{duration}})": "رسالة صوتية ({{duration}})",
156
180
  "Voice message deleted": "تم حذف الرسالة الصوتية",
181
+ "Waiting for approval": "في انتظار الموافقة",
182
+ "Waiting for the device": "في انتظار الجهاز",
183
+ "Waiting for you to sign in": "في انتظار تسجيل دخولك",
184
+ "Your answer couldn't be sent. Try again.": "تعذّر إرسال إجابتك. حاول مرة أخرى.",
157
185
  "Your comment": "تعليقك",
158
186
  "You": "أنت",
159
187
  "You can't send messages in this channel": "لا يمكنك إرسال رسائل في هذه القناة",
@@ -340,7 +368,11 @@
340
368
  "Add": "إضافة",
341
369
  "Add Members": "إضافة أعضاء",
342
370
  "Contact Info": "معلومات جهة الاتصال",
371
+ "Copied": "تم النسخ",
372
+ "Copy": "نسخ",
343
373
  "Edit": "تعديل",
374
+ "Editing message": "تعديل الرسالة",
375
+ "Cancel editing": "إلغاء التعديل",
344
376
  "Files": "الملفات",
345
377
  "Group Info": "معلومات المجموعة",
346
378
  "timestamp/UserActivityStatus": "آخر ظهور {{ timestamp | fromNowFormatter }}",
@@ -397,11 +429,13 @@
397
429
  "Failed to update channel mute status": "فشل تحديث حالة كتم القناة",
398
430
  "Failed to update channel name": "فشل تحديث اسم القناة",
399
431
  "Failed to update channel pinned status": "فشل تحديث حالة تثبيت القناة",
432
+ "File": "ملف",
400
433
  "Left channel": "تمت مغادرة القناة",
401
434
  "{{count}} members added_one": "تمت إضافة {{count}} عضو",
402
435
  "{{count}} members added_other": "تمت إضافة {{count}} أعضاء",
403
436
  "{{count}} members added_many": "تمت إضافة {{count}} أعضاء",
404
437
  "Recording format is not supported and cannot be reproduced": "تنسيق التسجيل غير مدعوم ولا يمكن تشغيله",
438
+ "Regenerate": "إعادة الإنشاء",
405
439
  "Send message request failed": "فشل طلب إرسال الرسالة",
406
440
  "User blocked": "تم حظر المستخدم",
407
441
  "User unblocked": "تم إلغاء حظر المستخدم",
@@ -467,5 +501,9 @@
467
501
  "No members found": "لم يتم العثور على أعضاء",
468
502
  "a11y/Search members": "البحث عن الأعضاء",
469
503
  "Message copied to clipboard": "تم نسخ الرسالة إلى الحافظة",
470
- "Failed to copy message": "فشل نسخ الرسالة"
504
+ "Failed to copy message": "فشل نسخ الرسالة",
505
+ "Remove attachment": "إزالة المرفق",
506
+ "Remove option: {{ option }}": "إزالة الخيار: {{ option }}",
507
+ "Play": "تشغيل",
508
+ "Pause": "إيقاف مؤقت"
471
509
  }