@8wave/ai-elements 0.119.0-beta.26 → 0.119.0-beta.30

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 (231) hide show
  1. package/dist/_chunks/{Agent-D8YrsP52.js → Agent-Gdgpd3LA.js} +66 -66
  2. package/dist/_chunks/Agent-Gdgpd3LA.js.map +1 -0
  3. package/dist/_chunks/{PkChatbotFilePreview-DAhN8TyL.js → PkChatbotFilePreview-DiuzVVKH.js} +2 -2
  4. package/dist/_chunks/{PkChatbotFilePreview-DAhN8TyL.js.map → PkChatbotFilePreview-DiuzVVKH.js.map} +1 -1
  5. package/dist/_chunks/{PkStreamingMarkdown-Bry3y6Ru.js → PkStreamingMarkdown-DKyHYHUN.js} +890 -853
  6. package/dist/_chunks/{PkStreamingMarkdown-Bry3y6Ru.js.map → PkStreamingMarkdown-DKyHYHUN.js.map} +1 -1
  7. package/dist/_chunks/{PkToolEditSpreadsheet-5vHzEy4P.js → PkToolEditSpreadsheet-CfJ3BWMe.js} +3 -3
  8. package/dist/_chunks/{PkToolEditSpreadsheet-5vHzEy4P.js.map → PkToolEditSpreadsheet-CfJ3BWMe.js.map} +1 -1
  9. package/dist/_chunks/{PkToolRequestGeolocation-Cj8hTfNF.js → PkToolRequestGeolocation-PxhQxMP1.js} +2 -2
  10. package/dist/_chunks/{PkToolRequestGeolocation-Cj8hTfNF.js.map → PkToolRequestGeolocation-PxhQxMP1.js.map} +1 -1
  11. package/dist/_chunks/{PkToolRequestOAuthConnection-BWxR1hV4.js → PkToolRequestOAuthConnection-klmrRZWz.js} +6 -5
  12. package/dist/_chunks/PkToolRequestOAuthConnection-klmrRZWz.js.map +1 -0
  13. package/dist/_chunks/{PkToolShowArtifact-CfJLe8vD.js → PkToolShowArtifact-ChDm6ZEK.js} +3 -3
  14. package/dist/_chunks/PkToolShowArtifact-ChDm6ZEK.js.map +1 -0
  15. package/dist/_chunks/{PkToolShowCalendarEvent-Bp_yv8S7.js → PkToolShowCalendarEvent-CRVtR3oP.js} +5 -4
  16. package/dist/_chunks/PkToolShowCalendarEvent-CRVtR3oP.js.map +1 -0
  17. package/dist/_chunks/{PkToolShowComparison-Bvd4f4tJ.js → PkToolShowComparison-DLC22e1W.js} +4 -3
  18. package/dist/_chunks/PkToolShowComparison-DLC22e1W.js.map +1 -0
  19. package/dist/_chunks/{PkToolShowContactForm--9XOVqNB.js → PkToolShowContactForm-CfCy-b8w.js} +6 -6
  20. package/dist/_chunks/PkToolShowContactForm-CfCy-b8w.js.map +1 -0
  21. package/dist/_chunks/{PkToolShowDiagram-C-pNbC9n.js → PkToolShowDiagram-JpRMa4Jj.js} +11 -10
  22. package/dist/_chunks/PkToolShowDiagram-JpRMa4Jj.js.map +1 -0
  23. package/dist/_chunks/{PkToolShowEmail-BKel_O29.js → PkToolShowEmail-C7mUCqGL.js} +4 -3
  24. package/dist/_chunks/PkToolShowEmail-C7mUCqGL.js.map +1 -0
  25. package/dist/_chunks/{PkToolShowForm-CGAc1O6K.js → PkToolShowForm-DnIwTGl4.js} +6 -5
  26. package/dist/_chunks/PkToolShowForm-DnIwTGl4.js.map +1 -0
  27. package/dist/_chunks/{PkToolShowImageGallery-CIhIrIcY.js → PkToolShowImageGallery-Ab8fJ9jY.js} +4 -4
  28. package/dist/_chunks/{PkToolShowImageGallery-CIhIrIcY.js.map → PkToolShowImageGallery-Ab8fJ9jY.js.map} +1 -1
  29. package/dist/_chunks/{PkToolShowLocation-78C7jFiV.js → PkToolShowLocation-D5d6bbP-.js} +5 -4
  30. package/dist/_chunks/PkToolShowLocation-D5d6bbP-.js.map +1 -0
  31. package/dist/_chunks/{PkToolShowMessage-BScy-w4J.js → PkToolShowMessage-vw4XS4TR.js} +4 -3
  32. package/dist/_chunks/PkToolShowMessage-vw4XS4TR.js.map +1 -0
  33. package/dist/_chunks/{PkToolShowProductList-BjWKnbyD.js → PkToolShowProductList-DztzZVDd.js} +2 -2
  34. package/dist/_chunks/{PkToolShowProductList-BjWKnbyD.js.map → PkToolShowProductList-DztzZVDd.js.map} +1 -1
  35. package/dist/_chunks/{PkToolShowQrCode-B70jPHDw.js → PkToolShowQrCode-BhcAUXSZ.js} +4 -3
  36. package/dist/_chunks/PkToolShowQrCode-BhcAUXSZ.js.map +1 -0
  37. package/dist/_chunks/{PkToolShowSources-BJ-XFrLD.js → PkToolShowSources-Bvg3f3GC.js} +52 -51
  38. package/dist/_chunks/PkToolShowSources-Bvg3f3GC.js.map +1 -0
  39. package/dist/_chunks/{PkToolShowSuggestedReply-0KahUIlw.js → PkToolShowSuggestedReply-BISQY1ce.js} +2 -2
  40. package/dist/_chunks/{PkToolShowSuggestedReply-0KahUIlw.js.map → PkToolShowSuggestedReply-BISQY1ce.js.map} +1 -1
  41. package/dist/_chunks/{PkToolShowVideo-_V_d-PDr.js → PkToolShowVideo-DdoYLl7R.js} +3 -3
  42. package/dist/_chunks/{PkToolShowVideo-_V_d-PDr.js.map → PkToolShowVideo-DdoYLl7R.js.map} +1 -1
  43. package/dist/_chunks/{PkToolShowWeather-DfLsFayn.js → PkToolShowWeather-CnpPZCLm.js} +2 -2
  44. package/dist/_chunks/{PkToolShowWeather-DfLsFayn.js.map → PkToolShowWeather-CnpPZCLm.js.map} +1 -1
  45. package/dist/_chunks/{PkToolShowWebPages-D55VEPjK.js → PkToolShowWebPages-BooCEJrs.js} +3 -3
  46. package/dist/_chunks/{PkToolShowWebPages-D55VEPjK.js.map → PkToolShowWebPages-BooCEJrs.js.map} +1 -1
  47. package/dist/_chunks/VvButtonLocalized-DV-zbH9b.js +21 -0
  48. package/dist/_chunks/VvButtonLocalized-DV-zbH9b.js.map +1 -0
  49. package/dist/_chunks/{chatImagePolicy-DXkhb-N_.js → chatImagePolicy-CfJt8_9Z.js} +3 -3
  50. package/dist/_chunks/{chatImagePolicy-DXkhb-N_.js.map → chatImagePolicy-CfJt8_9Z.js.map} +1 -1
  51. package/dist/_chunks/{index.es-BrsciU25.js → index.es-oI6RqNZW.js} +2 -2
  52. package/dist/_chunks/{index.es-BrsciU25.js.map → index.es-oI6RqNZW.js.map} +1 -1
  53. package/dist/_chunks/{markdown-DpoAzJSk.js → markdown-BbaLt57-.js} +8 -8
  54. package/dist/_chunks/{markdown-DpoAzJSk.js.map → markdown-BbaLt57-.js.map} +1 -1
  55. package/dist/_chunks/{src-Dt4rhhPN.js → src-DL9TKN-Z.js} +2 -2
  56. package/dist/_chunks/src-DL9TKN-Z.js.map +1 -0
  57. package/dist/_chunks/text-BHCGblDQ.js +6 -0
  58. package/dist/_chunks/text-BHCGblDQ.js.map +1 -0
  59. package/dist/_chunks/{useLightbox-pPBe746W.js → useLightbox-1KKLemEE.js} +2 -2
  60. package/dist/_chunks/{useLightbox-pPBe746W.js.map → useLightbox-1KKLemEE.js.map} +1 -1
  61. package/dist/ai-elements.es.js +2792 -2529
  62. package/dist/ai-elements.es.js.map +1 -1
  63. package/dist-vue/PkChatbot.js +1 -1
  64. package/dist-vue/PkChatbotAudioTranscript.js +1 -1
  65. package/dist-vue/PkChatbotAuth.js +1 -1
  66. package/dist-vue/PkChatbotEmptyState.js +1 -1
  67. package/dist-vue/PkChatbotError.js +1 -1
  68. package/dist-vue/PkChatbotFeedbackForm.js +1 -1
  69. package/dist-vue/PkChatbotFilePreview.js +1 -1
  70. package/dist-vue/PkChatbotInput.js +1 -1
  71. package/dist-vue/PkChatbotMessages.js +1 -1
  72. package/dist-vue/PkChatbotStepPayload.js +1 -1
  73. package/dist-vue/PkChatbotStepToolDetail.js +1 -1
  74. package/dist-vue/PkChatbotSteps.js +1 -1
  75. package/dist-vue/PkChatbotViewChat.js +1 -1
  76. package/dist-vue/PkChatbotViewConversations.js +1 -1
  77. package/dist-vue/PkChatbotViewFiles.js +1 -1
  78. package/dist-vue/PkChatbotViewProfile.js +1 -1
  79. package/dist-vue/PkChatbotWakeupBar.js +1 -1
  80. package/dist-vue/_chunks/{Agent-dGF8mkG9.js → Agent-DU1WWaHR.js} +87 -87
  81. package/dist-vue/_chunks/Agent-DU1WWaHR.js.map +1 -0
  82. package/dist-vue/_chunks/{Document-CV-RJu_p.js → Document-Cto-Qws0.js} +2 -2
  83. package/dist-vue/_chunks/{Document-CV-RJu_p.js.map → Document-Cto-Qws0.js.map} +1 -1
  84. package/dist-vue/_chunks/{PkChatbot-536vsOfp.js → PkChatbot-C18mnGJ9.js} +86 -85
  85. package/dist-vue/_chunks/PkChatbot-C18mnGJ9.js.map +1 -0
  86. package/dist-vue/_chunks/{PkChatbotAudioTranscript-BUxBHanA.js → PkChatbotAudioTranscript-0rvrhSRQ.js} +2 -2
  87. package/dist-vue/_chunks/{PkChatbotAudioTranscript-BUxBHanA.js.map → PkChatbotAudioTranscript-0rvrhSRQ.js.map} +1 -1
  88. package/dist-vue/_chunks/{PkChatbotAuth-BMLLTSwK.js → PkChatbotAuth-BVZzjbK9.js} +4 -3
  89. package/dist-vue/_chunks/PkChatbotAuth-BVZzjbK9.js.map +1 -0
  90. package/dist-vue/_chunks/{PkChatbotEmptyState-Toj4CqXV.js → PkChatbotEmptyState-BKiyP0Ga.js} +2 -2
  91. package/dist-vue/_chunks/{PkChatbotEmptyState-Toj4CqXV.js.map → PkChatbotEmptyState-BKiyP0Ga.js.map} +1 -1
  92. package/dist-vue/_chunks/{PkChatbotError-CRGbK09-.js → PkChatbotError-BV5ga7hk.js} +4 -3
  93. package/dist-vue/_chunks/PkChatbotError-BV5ga7hk.js.map +1 -0
  94. package/dist-vue/_chunks/{PkChatbotFeedbackForm-CMFXjoKR.js → PkChatbotFeedbackForm-B5cYsWBr.js} +8 -7
  95. package/dist-vue/_chunks/PkChatbotFeedbackForm-B5cYsWBr.js.map +1 -0
  96. package/dist-vue/_chunks/{PkChatbotFilePreview-DIP8KLkS.js → PkChatbotFilePreview-D5H-RIk2.js} +2 -2
  97. package/dist-vue/_chunks/{PkChatbotFilePreview-DIP8KLkS.js.map → PkChatbotFilePreview-D5H-RIk2.js.map} +1 -1
  98. package/dist-vue/_chunks/{PkChatbotInput-BfZqRpQ2.js → PkChatbotInput-GvgsYsUw.js} +8 -7
  99. package/dist-vue/_chunks/PkChatbotInput-GvgsYsUw.js.map +1 -0
  100. package/dist-vue/_chunks/PkChatbotMessages-CDLsj7qw.js +876 -0
  101. package/dist-vue/_chunks/PkChatbotMessages-CDLsj7qw.js.map +1 -0
  102. package/dist-vue/_chunks/{PkChatbotStepPayload-D0eoPBQ8.js → PkChatbotStepPayload-Dm-HCHcG.js} +2 -2
  103. package/dist-vue/_chunks/{PkChatbotStepPayload-D0eoPBQ8.js.map → PkChatbotStepPayload-Dm-HCHcG.js.map} +1 -1
  104. package/dist-vue/_chunks/{PkChatbotStepToolDetail-CMx4cw1D.js → PkChatbotStepToolDetail-Bpd_cZEO.js} +16 -16
  105. package/dist-vue/_chunks/{PkChatbotStepToolDetail-CMx4cw1D.js.map → PkChatbotStepToolDetail-Bpd_cZEO.js.map} +1 -1
  106. package/dist-vue/_chunks/{PkChatbotSteps-DeZQhGRU.js → PkChatbotSteps-C4qBM3_t.js} +40 -40
  107. package/dist-vue/_chunks/{PkChatbotSteps-DeZQhGRU.js.map → PkChatbotSteps-C4qBM3_t.js.map} +1 -1
  108. package/dist-vue/_chunks/{PkChatbotViewChat-CVT6OUIv.js → PkChatbotViewChat-By2TY72m.js} +13 -13
  109. package/dist-vue/_chunks/{PkChatbotViewChat-CVT6OUIv.js.map → PkChatbotViewChat-By2TY72m.js.map} +1 -1
  110. package/dist-vue/_chunks/PkChatbotViewConversations-CU5NfEO4.js +199 -0
  111. package/dist-vue/_chunks/PkChatbotViewConversations-CU5NfEO4.js.map +1 -0
  112. package/dist-vue/_chunks/{PkChatbotViewFiles-CA20TBFY.js → PkChatbotViewFiles-CD-UZPT5.js} +18 -17
  113. package/dist-vue/_chunks/PkChatbotViewFiles-CD-UZPT5.js.map +1 -0
  114. package/dist-vue/_chunks/{PkChatbotViewProfile-CyzRxE3D.js → PkChatbotViewProfile-DPlb_Wca.js} +11 -10
  115. package/dist-vue/_chunks/PkChatbotViewProfile-DPlb_Wca.js.map +1 -0
  116. package/dist-vue/_chunks/{PkChatbotWakeupBar-jBti21FQ.js → PkChatbotWakeupBar-Cjgarxnw.js} +3 -2
  117. package/dist-vue/_chunks/PkChatbotWakeupBar-Cjgarxnw.js.map +1 -0
  118. package/dist-vue/_chunks/{PkStreamingMarkdown-C55Fi0Pd.js → PkStreamingMarkdown-CsHzdW69.js} +24 -24
  119. package/dist-vue/_chunks/{PkStreamingMarkdown-C55Fi0Pd.js.map → PkStreamingMarkdown-CsHzdW69.js.map} +1 -1
  120. package/dist-vue/_chunks/{PkSvgViewer-Ts3gQ1hB.js → PkSvgViewer-D6DJ2jVO.js} +7 -6
  121. package/dist-vue/_chunks/PkSvgViewer-D6DJ2jVO.js.map +1 -0
  122. package/dist-vue/_chunks/{PkToolEditSpreadsheet-HAskd6d3.js → PkToolEditSpreadsheet-D8Zp9gzW.js} +3 -3
  123. package/dist-vue/_chunks/{PkToolEditSpreadsheet-HAskd6d3.js.map → PkToolEditSpreadsheet-D8Zp9gzW.js.map} +1 -1
  124. package/dist-vue/_chunks/{PkToolRequestGeolocation-BE22qwxB.js → PkToolRequestGeolocation-JZYgc-2X.js} +2 -2
  125. package/dist-vue/_chunks/{PkToolRequestGeolocation-BE22qwxB.js.map → PkToolRequestGeolocation-JZYgc-2X.js.map} +1 -1
  126. package/dist-vue/_chunks/{PkToolRequestOAuthConnection-GfSalEJG.js → PkToolRequestOAuthConnection-DosWR9I4.js} +11 -10
  127. package/dist-vue/_chunks/PkToolRequestOAuthConnection-DosWR9I4.js.map +1 -0
  128. package/dist-vue/_chunks/{PkToolShowArtifact-z1qTnFkA.js → PkToolShowArtifact-BVofKJ7b.js} +5 -5
  129. package/dist-vue/_chunks/PkToolShowArtifact-BVofKJ7b.js.map +1 -0
  130. package/dist-vue/_chunks/{PkToolShowCalendarEvent-Dv_rss26.js → PkToolShowCalendarEvent-u9O_Sl3-.js} +8 -7
  131. package/dist-vue/_chunks/PkToolShowCalendarEvent-u9O_Sl3-.js.map +1 -0
  132. package/dist-vue/_chunks/{PkToolShowComparison-DQs3E6-k.js → PkToolShowComparison-c2e239T4.js} +3 -2
  133. package/dist-vue/_chunks/PkToolShowComparison-c2e239T4.js.map +1 -0
  134. package/dist-vue/_chunks/{PkToolShowContactForm-Y0lrHXhr.js → PkToolShowContactForm-BzdIFTnC.js} +13 -13
  135. package/dist-vue/_chunks/PkToolShowContactForm-BzdIFTnC.js.map +1 -0
  136. package/dist-vue/_chunks/{PkToolShowDiagram-7WxDObZ6.js → PkToolShowDiagram-CaoB4k6y.js} +11 -10
  137. package/dist-vue/_chunks/PkToolShowDiagram-CaoB4k6y.js.map +1 -0
  138. package/dist-vue/_chunks/{PkToolShowEmail-C591LR5N.js → PkToolShowEmail-CUgZN0J5.js} +8 -7
  139. package/dist-vue/_chunks/PkToolShowEmail-CUgZN0J5.js.map +1 -0
  140. package/dist-vue/_chunks/{PkToolShowForm-CZFWZub7.js → PkToolShowForm-vYuaPtu0.js} +14 -13
  141. package/dist-vue/_chunks/PkToolShowForm-vYuaPtu0.js.map +1 -0
  142. package/dist-vue/_chunks/{PkToolShowImageGallery-CkfXP_lD.js → PkToolShowImageGallery-ooygXk7j.js} +4 -4
  143. package/dist-vue/_chunks/{PkToolShowImageGallery-CkfXP_lD.js.map → PkToolShowImageGallery-ooygXk7j.js.map} +1 -1
  144. package/dist-vue/_chunks/{PkToolShowLocation-Dyz6h_0n.js → PkToolShowLocation-DVMpFdRk.js} +14 -13
  145. package/dist-vue/_chunks/PkToolShowLocation-DVMpFdRk.js.map +1 -0
  146. package/dist-vue/_chunks/{PkToolShowMessage-CbXERPHI.js → PkToolShowMessage-ATTN5Hac.js} +8 -7
  147. package/dist-vue/_chunks/PkToolShowMessage-ATTN5Hac.js.map +1 -0
  148. package/dist-vue/_chunks/{PkToolShowProductList-De-PtmD-.js → PkToolShowProductList-D-HJ9a_h.js} +2 -2
  149. package/dist-vue/_chunks/{PkToolShowProductList-De-PtmD-.js.map → PkToolShowProductList-D-HJ9a_h.js.map} +1 -1
  150. package/dist-vue/_chunks/{PkToolShowQrCode-DEAvfLFu.js → PkToolShowQrCode-D_5VUtEB.js} +3 -2
  151. package/dist-vue/_chunks/PkToolShowQrCode-D_5VUtEB.js.map +1 -0
  152. package/dist-vue/_chunks/{PkToolShowSources-CSN7S0zo.js → PkToolShowSources-DJ35l3Z3.js} +58 -57
  153. package/dist-vue/_chunks/PkToolShowSources-DJ35l3Z3.js.map +1 -0
  154. package/dist-vue/_chunks/{PkToolShowSuggestedReply-DjutyiEi.js → PkToolShowSuggestedReply-I6FBos-F.js} +2 -2
  155. package/dist-vue/_chunks/{PkToolShowSuggestedReply-DjutyiEi.js.map → PkToolShowSuggestedReply-I6FBos-F.js.map} +1 -1
  156. package/dist-vue/_chunks/{PkToolShowVideo-B_Q93E2y.js → PkToolShowVideo-xcg1gdIE.js} +3 -3
  157. package/dist-vue/_chunks/{PkToolShowVideo-B_Q93E2y.js.map → PkToolShowVideo-xcg1gdIE.js.map} +1 -1
  158. package/dist-vue/_chunks/{PkToolShowWeather-BOuNrvY2.js → PkToolShowWeather-DJxKxVp_.js} +2 -2
  159. package/dist-vue/_chunks/{PkToolShowWeather-BOuNrvY2.js.map → PkToolShowWeather-DJxKxVp_.js.map} +1 -1
  160. package/dist-vue/_chunks/{PkToolShowWebPages-D3CdjJUc.js → PkToolShowWebPages-BuaRjavD.js} +3 -3
  161. package/dist-vue/_chunks/{PkToolShowWebPages-D3CdjJUc.js.map → PkToolShowWebPages-BuaRjavD.js.map} +1 -1
  162. package/dist-vue/_chunks/VvButtonLocalized-BuzLsXp3.js +20 -0
  163. package/dist-vue/_chunks/VvButtonLocalized-BuzLsXp3.js.map +1 -0
  164. package/dist-vue/_chunks/{createChatbotApiClient-DSLxswr4.js → createChatbotApiClient-G3Tt1I67.js} +18 -18
  165. package/dist-vue/_chunks/{createChatbotApiClient-DSLxswr4.js.map → createChatbotApiClient-G3Tt1I67.js.map} +1 -1
  166. package/dist-vue/_chunks/{mcpOAuthReport-BeZDTl87.js → mcpOAuthReport-3A9v_gW_.js} +2 -2
  167. package/dist-vue/_chunks/{mcpOAuthReport-BeZDTl87.js.map → mcpOAuthReport-3A9v_gW_.js.map} +1 -1
  168. package/dist-vue/_chunks/{src-DCfvejyT.js → src-DpkuiHam.js} +2 -2
  169. package/dist-vue/_chunks/src-DpkuiHam.js.map +1 -0
  170. package/dist-vue/_chunks/{useChatbotStore-rtl-oKqU.js → useChatbotStore-C1sgxgD1.js} +5 -5
  171. package/dist-vue/_chunks/{useChatbotStore-rtl-oKqU.js.map → useChatbotStore-C1sgxgD1.js.map} +1 -1
  172. package/dist-vue/_chunks/{useSafeLocalStorage-OwzVTZud.js → useSafeLocalStorage-DLIc8pkn.js} +2 -2
  173. package/dist-vue/_chunks/{useSafeLocalStorage-OwzVTZud.js.map → useSafeLocalStorage-DLIc8pkn.js.map} +1 -1
  174. package/dist-vue/_chunks/{utils-CwIMEuAv.js → utils-DsnEcdW3.js} +143 -79
  175. package/dist-vue/_chunks/utils-DsnEcdW3.js.map +1 -0
  176. package/dist-vue/api.js +1 -1
  177. package/dist-vue/composables.js +279 -27
  178. package/dist-vue/composables.js.map +1 -1
  179. package/dist-vue/index.js +3909 -3881
  180. package/dist-vue/index.js.map +1 -1
  181. package/dist-vue/locales.js +42 -6
  182. package/dist-vue/packages/components/src/PkEditorMarkdown.d.ts +3 -2
  183. package/dist-vue/packages/components/src/VvButtonLocalized.d.ts +11 -0
  184. package/dist-vue/packages/components/src/chat/index.d.ts +1 -0
  185. package/dist-vue/packages/components/src/chat/utils.d.ts +30 -0
  186. package/dist-vue/packages/components/src/index.d.ts +1 -0
  187. package/package.json +1 -1
  188. package/dist/_chunks/Agent-D8YrsP52.js.map +0 -1
  189. package/dist/_chunks/PkToolRequestOAuthConnection-BWxR1hV4.js.map +0 -1
  190. package/dist/_chunks/PkToolShowArtifact-CfJLe8vD.js.map +0 -1
  191. package/dist/_chunks/PkToolShowCalendarEvent-Bp_yv8S7.js.map +0 -1
  192. package/dist/_chunks/PkToolShowComparison-Bvd4f4tJ.js.map +0 -1
  193. package/dist/_chunks/PkToolShowContactForm--9XOVqNB.js.map +0 -1
  194. package/dist/_chunks/PkToolShowDiagram-C-pNbC9n.js.map +0 -1
  195. package/dist/_chunks/PkToolShowEmail-BKel_O29.js.map +0 -1
  196. package/dist/_chunks/PkToolShowForm-CGAc1O6K.js.map +0 -1
  197. package/dist/_chunks/PkToolShowLocation-78C7jFiV.js.map +0 -1
  198. package/dist/_chunks/PkToolShowMessage-BScy-w4J.js.map +0 -1
  199. package/dist/_chunks/PkToolShowQrCode-B70jPHDw.js.map +0 -1
  200. package/dist/_chunks/PkToolShowSources-BJ-XFrLD.js.map +0 -1
  201. package/dist/_chunks/src-Dt4rhhPN.js.map +0 -1
  202. package/dist/_chunks/text-DbSEK8si.js +0 -6
  203. package/dist/_chunks/text-DbSEK8si.js.map +0 -1
  204. package/dist-vue/_chunks/Agent-dGF8mkG9.js.map +0 -1
  205. package/dist-vue/_chunks/PkChatbot-536vsOfp.js.map +0 -1
  206. package/dist-vue/_chunks/PkChatbotAuth-BMLLTSwK.js.map +0 -1
  207. package/dist-vue/_chunks/PkChatbotError-CRGbK09-.js.map +0 -1
  208. package/dist-vue/_chunks/PkChatbotFeedbackForm-CMFXjoKR.js.map +0 -1
  209. package/dist-vue/_chunks/PkChatbotInput-BfZqRpQ2.js.map +0 -1
  210. package/dist-vue/_chunks/PkChatbotMessages-CnI3e9wF.js +0 -869
  211. package/dist-vue/_chunks/PkChatbotMessages-CnI3e9wF.js.map +0 -1
  212. package/dist-vue/_chunks/PkChatbotViewConversations-DHeFtAfN.js +0 -197
  213. package/dist-vue/_chunks/PkChatbotViewConversations-DHeFtAfN.js.map +0 -1
  214. package/dist-vue/_chunks/PkChatbotViewFiles-CA20TBFY.js.map +0 -1
  215. package/dist-vue/_chunks/PkChatbotViewProfile-CyzRxE3D.js.map +0 -1
  216. package/dist-vue/_chunks/PkChatbotWakeupBar-jBti21FQ.js.map +0 -1
  217. package/dist-vue/_chunks/PkSvgViewer-Ts3gQ1hB.js.map +0 -1
  218. package/dist-vue/_chunks/PkToolRequestOAuthConnection-GfSalEJG.js.map +0 -1
  219. package/dist-vue/_chunks/PkToolShowArtifact-z1qTnFkA.js.map +0 -1
  220. package/dist-vue/_chunks/PkToolShowCalendarEvent-Dv_rss26.js.map +0 -1
  221. package/dist-vue/_chunks/PkToolShowComparison-DQs3E6-k.js.map +0 -1
  222. package/dist-vue/_chunks/PkToolShowContactForm-Y0lrHXhr.js.map +0 -1
  223. package/dist-vue/_chunks/PkToolShowDiagram-7WxDObZ6.js.map +0 -1
  224. package/dist-vue/_chunks/PkToolShowEmail-C591LR5N.js.map +0 -1
  225. package/dist-vue/_chunks/PkToolShowForm-CZFWZub7.js.map +0 -1
  226. package/dist-vue/_chunks/PkToolShowLocation-Dyz6h_0n.js.map +0 -1
  227. package/dist-vue/_chunks/PkToolShowMessage-CbXERPHI.js.map +0 -1
  228. package/dist-vue/_chunks/PkToolShowQrCode-DEAvfLFu.js.map +0 -1
  229. package/dist-vue/_chunks/PkToolShowSources-CSN7S0zo.js.map +0 -1
  230. package/dist-vue/_chunks/src-DCfvejyT.js.map +0 -1
  231. package/dist-vue/_chunks/utils-CwIMEuAv.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { t as e } from "./src-DCfvejyT.js";
1
+ import { t as e } from "./src-DpkuiHam.js";
2
2
  import { ref as t } from "vue";
3
3
  import { useLocalStorage as n } from "@vueuse/core";
4
4
  //#region ../../packages/composable/src/useSafeLocalStorage.ts
@@ -12,4 +12,4 @@ function r(r, i) {
12
12
  //#endregion
13
13
  export { r as t };
14
14
 
15
- //# sourceMappingURL=useSafeLocalStorage-OwzVTZud.js.map
15
+ //# sourceMappingURL=useSafeLocalStorage-DLIc8pkn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSafeLocalStorage-OwzVTZud.js","names":["logger","useSafeLocalStorage","useLocalStorage","key","initialValue","error","ref"],"sources":["../../../../packages/composable/src/useSafeLocalStorage.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref } from 'vue'\nimport { ref } from 'vue'\nimport { useLocalStorage } from '@vueuse/core'\nimport { logger } from 'utils'\n\n/**\n * Wrapper around VueUse's `useLocalStorage` that catches `SecurityError`\n * thrown when storage access is blocked (cross-origin iframes, tracking\n * protection, sandboxed contexts). Falls back to a plain in-memory `ref`.\n */\nexport function useSafeLocalStorage<T>(\n key: MaybeRefOrGetter<string>,\n initialValue: T,\n): Ref<T> {\n try {\n // Probe: if localStorage is blocked, this throws immediately\n window.localStorage.getItem('')\n return useLocalStorage<T>(key, initialValue)\n } catch (error) {\n logger.warn(\n '[useSafeLocalStorage] localStorage blocked, falling back to in-memory ref',\n error,\n )\n return ref(initialValue) as Ref<T>\n }\n}\n"],"mappings":";;;;AAUA,SAAgBC,EACZ,GACA,GACM;CACN,IAAI;EAGA,OADA,OAAO,aAAa,QAAQ,EAAE,GACvBC,EAAmBC,GAAKC,CAAY;CAC/C,SAASC,GAAO;EAKZ,OAJAL,EAAO,KACH,6EACAK,CACJ,GACOC,EAAIF,CAAY;CAC3B;AACJ"}
1
+ {"version":3,"file":"useSafeLocalStorage-DLIc8pkn.js","names":["logger","useSafeLocalStorage","useLocalStorage","key","initialValue","error","ref"],"sources":["../../../../packages/composable/src/useSafeLocalStorage.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref } from 'vue'\nimport { ref } from 'vue'\nimport { useLocalStorage } from '@vueuse/core'\nimport { logger } from 'utils'\n\n/**\n * Wrapper around VueUse's `useLocalStorage` that catches `SecurityError`\n * thrown when storage access is blocked (cross-origin iframes, tracking\n * protection, sandboxed contexts). Falls back to a plain in-memory `ref`.\n */\nexport function useSafeLocalStorage<T>(\n key: MaybeRefOrGetter<string>,\n initialValue: T,\n): Ref<T> {\n try {\n // Probe: if localStorage is blocked, this throws immediately\n window.localStorage.getItem('')\n return useLocalStorage<T>(key, initialValue)\n } catch (error) {\n logger.warn(\n '[useSafeLocalStorage] localStorage blocked, falling back to in-memory ref',\n error,\n )\n return ref(initialValue) as Ref<T>\n }\n}\n"],"mappings":";;;;AAUA,SAAgBC,EACZ,GACA,GACM;CACN,IAAI;EAGA,OADA,OAAO,aAAa,QAAQ,EAAE,GACvBC,EAAmBC,GAAKC,CAAY;CAC/C,SAASC,GAAO;EAKZ,OAJAL,EAAO,KACH,6EACAK,CACJ,GACOC,EAAIF,CAAY;CAC3B;AACJ"}
@@ -1,45 +1,48 @@
1
- import { k as e } from "./Agent-dGF8mkG9.js";
2
- import "./src-DCfvejyT.js";
3
- import { c as t, i as n, l as r, s as i } from "./message-BOiF6Bt5.js";
1
+ import { C as e, M as t, n, y as r } from "./Agent-DU1WWaHR.js";
2
+ import "./src-DpkuiHam.js";
3
+ import { c as i, i as a, l as o, s } from "./message-BOiF6Bt5.js";
4
+ //#region ../../packages/utils/src/text.ts
5
+ var c = (e) => e.normalize("NFD").replace(/[\u0300-\u036f]/g, ""), l = (e) => e ? e.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").replace(/[-_]+/g, " ") : "", u = (e) => e ? c(e).replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[^a-zA-Z0-9]+/g, "-").toLowerCase() : "", d = (e) => e ? c(e).replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/[^a-zA-Z0-9]+/g, "_").toLowerCase() : "", f = (e) => e ? e.charAt(0).toUpperCase() + e.slice(1) : "";
6
+ //#endregion
4
7
  //#region ../../packages/components/src/chat/utils.ts
5
- function a(e) {
6
- let n = [];
7
- for (let r of e) {
8
- if (!t(r)) {
9
- n.push(r);
8
+ function p(e) {
9
+ let t = [];
10
+ for (let n of e) {
11
+ if (!i(n)) {
12
+ t.push(n);
10
13
  continue;
11
14
  }
12
- let e = n[n.length - 1];
13
- e && t(e) ? n[n.length - 1] = {
15
+ let e = t[t.length - 1];
16
+ e && i(e) ? t[t.length - 1] = {
14
17
  ...e,
15
- text: e.text + r.text
16
- } : n.push(r);
18
+ text: e.text + n.text
19
+ } : t.push(n);
17
20
  }
18
- return n;
21
+ return t;
19
22
  }
20
- var o = (t) => r(t) && e(n(t));
21
- function s(e) {
23
+ var m = (e) => o(e) && t(a(e));
24
+ function h(e) {
22
25
  let t = /* @__PURE__ */ new Map();
23
- for (let [n, r] of e.entries()) o(r) && r.state !== "output-error" && !d(r) && t.set(r.type, n);
24
- return e.filter((e, n) => !(o(e) && e.state === "output-error" && (t.get(e.type) ?? -1) > n));
26
+ for (let [n, r] of e.entries()) m(r) && r.state !== "output-error" && !y(r) && t.set(r.type, n);
27
+ return e.filter((e, n) => !(m(e) && e.state === "output-error" && (t.get(e.type) ?? -1) > n));
25
28
  }
26
- var c = /* @__PURE__ */ new Set(["tool-editSpreadsheet"]);
27
- function l(e) {
28
- let t = e.filter((e) => c.has(e.type));
29
- return t.length > 0 ? [...e.filter((e) => !c.has(e.type)), ...t] : e;
29
+ var g = /* @__PURE__ */ new Set(["tool-editSpreadsheet"]);
30
+ function _(e) {
31
+ let t = e.filter((e) => g.has(e.type));
32
+ return t.length > 0 ? [...e.filter((e) => !g.has(e.type)), ...t] : e;
30
33
  }
31
- function u(e, t) {
34
+ function v(e, t) {
32
35
  let n = e.toolCallId;
33
- return c.has(e.type) && n ? `file-${n}` : t;
36
+ return g.has(e.type) && n ? `file-${n}` : t;
34
37
  }
35
- function d(e) {
38
+ function y(e) {
36
39
  return e && "state" in e ? e.state === "streaming" || e.state === "input-streaming" : !1;
37
40
  }
38
- var f = 4e3, p = /^[ \t]*(?:(?:[-*+]|\d{1,9}[.)])[ \t]+|>[ \t]?)*(`{3,}|~{3,})(.*)$/gm;
39
- function m(e, t) {
41
+ var b = 4e3, x = /^[ \t]*(?:(?:[-*+]|\d{1,9}[.)])[ \t]+|>[ \t]?)*(`{3,}|~{3,})(.*)$/gm;
42
+ function S(e, t) {
40
43
  if (e.length <= t) return e;
41
44
  let n = e.length - t, r = n + t / 2, i = (e, t) => e !== -1 && e < r ? e + t : void 0, a = i(e.indexOf("\n\n", n), 2) ?? i(e.indexOf("\n", n), 1) ?? n, o;
42
- for (let t of e.matchAll(p)) {
45
+ for (let t of e.matchAll(x)) {
43
46
  if (t.index >= a) break;
44
47
  let [, e, n] = t;
45
48
  if (o) e[0] === o[0] && e.length >= o.length && !n.trim() && (o = void 0);
@@ -50,40 +53,40 @@ function m(e, t) {
50
53
  }
51
54
  return `…\n\n${o ? `${o}\n` : ""}${e.slice(a)}`;
52
55
  }
53
- var h = /* @__PURE__ */ new Set([
56
+ var C = /* @__PURE__ */ new Set([
54
57
  "approval-requested",
55
58
  "approval-responded",
56
59
  "output-denied"
57
60
  ]);
58
- function g(e) {
59
- return r(e) ? h.has(e.state) ? !0 : e.approval != null : !1;
61
+ function w(e) {
62
+ return o(e) ? C.has(e.state) ? !0 : e.approval != null : !1;
60
63
  }
61
- var _ = "requestConfirm";
62
- function v(e) {
63
- return r(e) && e.type === "tool-requestConfirm";
64
+ var T = "requestConfirm";
65
+ function E(e) {
66
+ return o(e) && e.type === "tool-requestConfirm";
64
67
  }
65
- function y(e) {
66
- return g(e) || v(e);
68
+ function D(e) {
69
+ return w(e) || E(e);
67
70
  }
68
- function b(e) {
69
- if (r(e)) return e.approval?.id;
71
+ function O(e) {
72
+ if (o(e)) return e.approval?.id;
70
73
  }
71
- function x(e) {
74
+ function k(e) {
72
75
  if (e && "state" in e) return e.state;
73
76
  }
74
- function S(e) {
77
+ function A(e) {
75
78
  return e ? ["streaming"].includes(e) : !1;
76
79
  }
77
- function C(e = "000000") {
80
+ function j(e = "000000") {
78
81
  let t = e.replace("#", "");
79
82
  t.length === 3 && (t = t.split("").map((e) => e + e).join(""));
80
83
  let n = parseInt(t.substring(0, 2), 16) / 255, r = parseInt(t.substring(2, 4), 16) / 255, i = parseInt(t.substring(4, 6), 16) / 255, a = (e) => e <= .03928 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;
81
84
  return .2126 * a(n) + .7152 * a(r) + .0722 * a(i) > .179 ? "black" : "white";
82
85
  }
83
- function w(e, t) {
84
- return e === "white" || e === "black" ? e : C(t);
86
+ function M(e, t) {
87
+ return e === "white" || e === "black" ? e : j(t);
85
88
  }
86
- function T(e, t) {
89
+ function N(e, t) {
87
90
  if (e) return {
88
91
  "--chatbot-main-color": e,
89
92
  "--chatbot-contrast-color": t,
@@ -92,10 +95,10 @@ function T(e, t) {
92
95
  "--input-focus-color": "var(--color-brand-graphic)"
93
96
  };
94
97
  }
95
- function E(e, t) {
98
+ function P(e, t) {
96
99
  if (!(t === void 0 || t < 50)) return e(t / 1e3, "seconds");
97
100
  }
98
- function D(e) {
101
+ function F(e) {
99
102
  if (e !== void 0) {
100
103
  if (typeof e == "string") return e.trim() || void 0;
101
104
  try {
@@ -106,10 +109,10 @@ function D(e) {
106
109
  }
107
110
  }
108
111
  }
109
- function O(e) {
110
- return D(e) !== void 0;
112
+ function I(e) {
113
+ return F(e) !== void 0;
111
114
  }
112
- function k(e, t) {
115
+ function ee(e, t) {
113
116
  let n = e?.input;
114
117
  if (typeof t == "string") {
115
118
  let e = n?.question ?? n?.steps?.[0]?.question;
@@ -121,14 +124,14 @@ function k(e, t) {
121
124
  return i ? `${i} ${n}` : n;
122
125
  }).join(". ");
123
126
  }
124
- function A(e) {
127
+ function L(e) {
125
128
  return e?.options ? e.options.map((e) => ({
126
129
  label: e.label,
127
130
  value: e.label,
128
131
  description: e.description
129
132
  })) : [];
130
133
  }
131
- function j(e, t) {
134
+ function R(e, t) {
132
135
  let n = {};
133
136
  if (t == null) return n;
134
137
  if (typeof t == "string") return e.length === 1 && (n[0] = t), n;
@@ -144,12 +147,12 @@ function j(e, t) {
144
147
  for (let [e, n] of Object.entries(t)) n !== void 0 && r(e, n);
145
148
  return n;
146
149
  }
147
- var M = [
150
+ var z = [
148
151
  "tool-perplexity_search",
149
152
  "tool-parallel_search",
150
153
  "tool-web_search",
151
154
  "tool-google_search"
152
- ], N = /* @__PURE__ */ new Set([
155
+ ], B = /* @__PURE__ */ new Set([
153
156
  "tool-searchInKnowledgeBase",
154
157
  "tool-retrieveRevisedAnswers",
155
158
  "tool-expandChunkContext",
@@ -158,51 +161,112 @@ var M = [
158
161
  "tool-geocode",
159
162
  "tool-recallUserMemory",
160
163
  "tool-saveUserMemory",
161
- ...M
164
+ ...z
162
165
  ]);
163
- function P(e) {
164
- return r(e) && N.has(e.type);
166
+ function V(e) {
167
+ return o(e) && B.has(e.type);
165
168
  }
166
- var F = (e) => e && typeof e == "object" && !Array.isArray(e) ? e : void 0, I = (e, ...t) => {
169
+ var H = (e) => e && typeof e == "object" && !Array.isArray(e) ? e : void 0, U = (e, ...t) => {
167
170
  for (let n of t) {
168
171
  let t = e?.[n];
169
172
  if (typeof t == "string" && t.trim()) return t;
170
173
  }
171
174
  };
172
- function L(e) {
173
- if (!r(e)) return;
174
- let t = F("input" in e ? e.input : void 0), n = F("output" in e ? e.output : void 0);
175
- if (e.type === "tool-searchInKnowledgeBase" || M.includes(e.type)) {
175
+ function W(e) {
176
+ if (!o(e)) return;
177
+ let t = H("input" in e ? e.input : void 0), n = H("output" in e ? e.output : void 0);
178
+ if (e.type === "tool-searchInKnowledgeBase" || z.includes(e.type)) {
176
179
  let e = t?.queries;
177
180
  if (Array.isArray(e)) {
178
181
  let t = e.filter((e) => typeof e == "string" && !!e.trim());
179
182
  return t.length ? t.join(" · ") : void 0;
180
183
  }
181
- return I(t, "query", "objective");
184
+ return U(t, "query", "objective");
182
185
  }
183
- if (e.type === "tool-retrieveRevisedAnswers") return I(t, "query");
184
- if (e.type === "tool-getWeather") return I(n, "location") ?? I(t, "locationName");
185
- if (e.type === "tool-geocode") return I(t, "locationName");
186
- if (e.type === "tool-expandChunkContext") return I(n, "documentName");
187
- if (e.type === "tool-readDocumentFile") return I(n, "name");
186
+ if (e.type === "tool-retrieveRevisedAnswers") return U(t, "query");
187
+ if (e.type === "tool-getWeather") return U(n, "location") ?? U(t, "locationName");
188
+ if (e.type === "tool-geocode") return U(t, "locationName");
189
+ if (e.type === "tool-expandChunkContext") return U(n, "documentName");
190
+ if (e.type === "tool-readDocumentFile") return U(n, "name");
188
191
  if (e.type === "tool-readSpreadsheet") {
189
- let e = I(t, "sheet"), n = I(t, "range");
192
+ let e = U(t, "sheet"), n = U(t, "range");
190
193
  return e && n ? `${e}!${n}` : e;
191
194
  }
192
- if (e.type === "tool-editSpreadsheet") return I(n, "filename");
193
- if (e.type === "tool-querySpreadsheet") return I(n, "file");
194
- if (e.type === "tool-recallUserMemory") return I(t, "query");
195
- if (e.type === "tool-saveUserMemory") return I(t, "content", "query");
195
+ if (e.type === "tool-editSpreadsheet") return U(n, "filename");
196
+ if (e.type === "tool-querySpreadsheet") return U(n, "file");
197
+ if (e.type === "tool-recallUserMemory") return U(t, "query");
198
+ if (e.type === "tool-saveUserMemory") return U(t, "content", "query");
199
+ }
200
+ function G(e) {
201
+ if (o(e)) return e.type.includes("tool-subagent") ? "ri:robot-2-line" : e.type === "tool-runWorker" ? "ri:flow-chart" : e.type === "tool-scheduleWakeup" ? "ri:alarm-line" : e.type === "tool-fetchTeamsChannelHistory" ? "ri:chat-history-line" : e.type === "tool-readEarlierMessages" ? "ri:history-line" : e.type === "tool-enableTools" ? "ri:toggle-line" : e.type.includes("tool-mcp") ? "mcp" : e.type === "tool-retrieveRevisedAnswers" ? "ri:file-edit-line" : e.type === "tool-searchInKnowledgeBase" ? "ri:search-line" : e.type === "tool-expandChunkContext" ? "ri:file-search-line" : e.type === "tool-readDocumentFile" ? "ri:file-text-line" : e.type === "tool-readSpreadsheet" ? "ri:table-line" : e.type === "tool-editSpreadsheet" ? "ri:file-excel-2-line" : e.type === "tool-querySpreadsheet" ? "ri:database-2-line" : e.type === "tool-geocode" ? "ri:map-2-line" : e.type === "tool-getWeather" ? "ri:sun-cloudy-line" : e.type === "tool-recallUserMemory" ? "ri:brain-line" : e.type === "tool-saveUserMemory" ? "ri:save-3-line" : e.type === "tool-showWeather" ? "ri:sun-line" : e.type === "tool-showDiagram" ? "ri:flow-chart" : e.type === "tool-showSources" ? "ri:book-2-line" : e.type === "tool-showForm" ? "ri:survey-line" : e.type === "tool-showMultipleChoice" ? "ri:checkbox-multiple-line" : e.type === "tool-showArtifact" ? "ri:file-code-line" : e.type === "tool-showEmail" ? "ri:mail-line" : e.type === "tool-showMessage" ? "ri:chat-1-line" : e.type === "tool-showWebPages" ? "ri:pages-line" : e.type === "tool-showProductList" ? "ri:shopping-bag-line" : e.type === "tool-showContactForm" ? "ri:send-plane-2-line" : e.type === "tool-showCalendarEvent" ? "ri:calendar-event-line" : e.type === "tool-showComparison" ? "ri:scales-line" : e.type === "tool-showLocation" ? "ri:map-pin-line" : e.type === "tool-showQrCode" ? "ri:qr-code-line" : e.type === "tool-showImageGallery" ? "ri:image-line" : e.type === "tool-showVideo" ? "ri:film-line" : e.type === "tool-showSuggestedReply" ? "ri:corner-down-right-line" : e.type === "tool-requestGeolocation" ? "ri:map-pin-user-line" : e.type === "tool-disconnectOAuthConnection" ? "ri:link-unlink" : e.type === "tool-requestAccountLink" ? "ri:link" : e.type === "tool-unlinkAccount" ? "ri:link-unlink" : e.type === "tool-perplexity_search" || e.type === "tool-parallel_search" || e.type === "tool-web_search" || e.type === "tool-google_search" ? "ri:global-line" : "ri:tools-line";
202
+ if (s(e)) return "ri:lightbulb-line";
203
+ if (i(e)) return "ri:double-quotes-r";
196
204
  }
197
- function R(e) {
198
- if (r(e)) return e.type.includes("tool-subagent") ? "ri:robot-2-line" : e.type === "tool-runWorker" ? "ri:flow-chart" : e.type === "tool-scheduleWakeup" ? "ri:alarm-line" : e.type === "tool-fetchTeamsChannelHistory" ? "ri:chat-history-line" : e.type === "tool-readEarlierMessages" ? "ri:history-line" : e.type === "tool-enableTools" ? "ri:toggle-line" : e.type.includes("tool-mcp") ? "mcp" : e.type === "tool-retrieveRevisedAnswers" ? "ri:file-edit-line" : e.type === "tool-searchInKnowledgeBase" ? "ri:search-line" : e.type === "tool-expandChunkContext" ? "ri:file-search-line" : e.type === "tool-readDocumentFile" ? "ri:file-text-line" : e.type === "tool-readSpreadsheet" ? "ri:table-line" : e.type === "tool-editSpreadsheet" ? "ri:file-excel-2-line" : e.type === "tool-querySpreadsheet" ? "ri:database-2-line" : e.type === "tool-geocode" ? "ri:map-2-line" : e.type === "tool-getWeather" ? "ri:sun-cloudy-line" : e.type === "tool-recallUserMemory" ? "ri:brain-line" : e.type === "tool-saveUserMemory" ? "ri:save-3-line" : e.type === "tool-showWeather" ? "ri:sun-line" : e.type === "tool-showDiagram" ? "ri:flow-chart" : e.type === "tool-showSources" ? "ri:book-2-line" : e.type === "tool-showForm" ? "ri:survey-line" : e.type === "tool-showMultipleChoice" ? "ri:checkbox-multiple-line" : e.type === "tool-showArtifact" ? "ri:file-code-line" : e.type === "tool-showEmail" ? "ri:mail-line" : e.type === "tool-showMessage" ? "ri:chat-1-line" : e.type === "tool-showWebPages" ? "ri:pages-line" : e.type === "tool-showProductList" ? "ri:shopping-bag-line" : e.type === "tool-showContactForm" ? "ri:send-plane-2-line" : e.type === "tool-showCalendarEvent" ? "ri:calendar-event-line" : e.type === "tool-showComparison" ? "ri:scales-line" : e.type === "tool-showLocation" ? "ri:map-pin-line" : e.type === "tool-showQrCode" ? "ri:qr-code-line" : e.type === "tool-showImageGallery" ? "ri:image-line" : e.type === "tool-showVideo" ? "ri:film-line" : e.type === "tool-showSuggestedReply" ? "ri:corner-down-right-line" : e.type === "tool-requestGeolocation" ? "ri:map-pin-user-line" : e.type === "tool-disconnectOAuthConnection" ? "ri:link-unlink" : e.type === "tool-requestAccountLink" ? "ri:link" : e.type === "tool-unlinkAccount" ? "ri:link-unlink" : e.type === "tool-perplexity_search" || e.type === "tool-parallel_search" || e.type === "tool-web_search" || e.type === "tool-google_search" ? "ri:global-line" : "ri:tools-line";
199
- if (i(e)) return "ri:lightbulb-line";
200
- if (t(e)) return "ri:double-quotes-r";
205
+ var K = [
206
+ n,
207
+ r,
208
+ e
209
+ ];
210
+ function q(e, { t, te: n }) {
211
+ if (n(`agent.tool.${e}`)) return t(`agent.tool.${e}`);
212
+ let r = K.find((t) => e.startsWith(t));
213
+ return f(l(r ? e.slice(r.length) : e).trim().toLowerCase());
214
+ }
215
+ var J = {
216
+ custom: (e) => e("messagePart.type.custom"),
217
+ data: (e) => e("messagePart.type.data"),
218
+ file: (e) => e("messagePart.type.file"),
219
+ reasoning: (e) => e("messagePart.type.reasoning"),
220
+ "source-document": (e) => e("messagePart.type.sourceDocument"),
221
+ "source-url": (e) => e("messagePart.type.sourceUrl"),
222
+ "step-start": (e) => e("messagePart.type.stepStart"),
223
+ text: (e) => e("messagePart.type.text")
224
+ };
225
+ function Y(e, t) {
226
+ if (o(e)) return q(a(e), t);
227
+ if (e.type === "dynamic-tool") return q(e.toolName, t);
228
+ let n = J[e.type.startsWith("data-") ? "data" : e.type];
229
+ return n ? n(t.t) : f(l(e.type));
230
+ }
231
+ var X = {
232
+ alibaba: "Alibaba Cloud",
233
+ anthropic: "Anthropic",
234
+ azure: "Microsoft Azure",
235
+ baseten: "Baseten",
236
+ bedrock: "Amazon Bedrock",
237
+ cerebras: "Cerebras",
238
+ cohere: "Cohere",
239
+ deepinfra: "DeepInfra",
240
+ deepseek: "DeepSeek",
241
+ fireworks: "Fireworks AI",
242
+ google: "Google",
243
+ groq: "Groq",
244
+ mistral: "Mistral AI",
245
+ moonshotai: "Moonshot AI",
246
+ openai: "OpenAI",
247
+ perplexity: "Perplexity",
248
+ togetherai: "Together AI",
249
+ vertex: "Google Vertex AI",
250
+ xai: "xAI",
251
+ zai: "Z.ai"
252
+ };
253
+ function Z(e) {
254
+ return X[e.toLowerCase()] ?? f(l(e));
255
+ }
256
+ function Q(e, t) {
257
+ if (!e) return e;
258
+ let n = {
259
+ Intent: t("conversationSummary.intent"),
260
+ "Topics covered": t("conversationSummary.topicsCovered"),
261
+ "Key facts": t("conversationSummary.keyFacts"),
262
+ "Open questions": t("conversationSummary.openQuestions")
263
+ };
264
+ return e.replace(/\*\*(Intent|Topics covered|Key facts|Open questions)(:?)\*\*/g, (e, t, r) => `**${n[t]}${r}**`);
201
265
  }
202
- function z(e, t) {
203
- return r(t) ? t.type.includes("tool-subagent") ? e("messagePart.runSubagent") : t.type === "tool-runWorker" ? e("messagePart.runWorker") : t.type === "tool-scheduleWakeup" ? e("messagePart.scheduleWakeup") : t.type === "tool-fetchTeamsChannelHistory" ? e("messagePart.fetchTeamsChannelHistory") : t.type === "tool-readEarlierMessages" ? e("messagePart.readEarlierMessages") : t.type === "tool-enableTools" ? e("messagePart.enableTools") : t.type === "tool-retrieveRevisedAnswers" ? e("messagePart.revisedAnswers") : t.type === "tool-searchInKnowledgeBase" ? e("messagePart.searchingDocuments") : t.type === "tool-expandChunkContext" ? e("messagePart.expandChunkContext") : t.type === "tool-readDocumentFile" ? e("messagePart.readDocumentFile") : t.type === "tool-readSpreadsheet" ? e("messagePart.readSpreadsheet") : t.type === "tool-editSpreadsheet" ? e("messagePart.editSpreadsheet") : t.type === "tool-querySpreadsheet" ? e("messagePart.querySpreadsheet") : t.type === "tool-geocode" ? e("messagePart.geocode") : t.type === "tool-getWeather" ? e("messagePart.getWeather") : t.type === "tool-recallUserMemory" ? e("messagePart.recallUserMemory") : t.type === "tool-saveUserMemory" ? e("messagePart.saveUserMemory") : t.type === "tool-showWeather" ? e("messagePart.showWeather") : t.type === "tool-showForm" ? e("messagePart.showForm") : t.type === "tool-showDiagram" ? e("messagePart.showDiagram") : t.type === "tool-showSources" ? e("messagePart.showSources") : t.type === "tool-showMultipleChoice" ? e("messagePart.showMultipleChoice") : t.type === "tool-showArtifact" ? e("messagePart.showArtifact") : t.type === "tool-showEmail" ? e("messagePart.showEmail") : t.type === "tool-showMessage" ? e("messagePart.showMessage") : t.type === "tool-showWebPages" ? e("messagePart.showWebPages") : t.type === "tool-showProducts" ? e("messagePart.showProducts") : t.type === "tool-showContactForm" ? e("messagePart.showContactForm") : t.type === "tool-showCalendarEvent" ? e("messagePart.showCalendarEvent") : t.type === "tool-showComparison" ? e("messagePart.showComparison") : t.type === "tool-showLocation" ? e("messagePart.showLocation") : t.type === "tool-showQrCode" ? e("messagePart.showQrCode") : t.type === "tool-showImageGallery" ? e("messagePart.showImageGallery") : t.type === "tool-showVideo" ? e("messagePart.showVideo") : t.type === "tool-showSuggestedReply" ? e("messagePart.showSuggestedReply") : t.type === "tool-requestGeolocation" ? e("messagePart.requestGeolocation") : t.type === "tool-disconnectOAuthConnection" ? e("messagePart.disconnectOAuthConnection") : t.type === "tool-requestAccountLink" ? e("messagePart.requestAccountLink") : t.type === "tool-unlinkAccount" ? e("messagePart.unlinkAccount") : M.includes(t.type) ? e("messagePart.webSearch") : e("messagePart.tool") : i(t) ? e("messagePart.reasoning") : e("messagePart.streaming");
266
+ function $(e, t) {
267
+ return o(t) ? t.type.includes("tool-subagent") ? e("messagePart.runSubagent") : t.type === "tool-runWorker" ? e("messagePart.runWorker") : t.type === "tool-scheduleWakeup" ? e("messagePart.scheduleWakeup") : t.type === "tool-fetchTeamsChannelHistory" ? e("messagePart.fetchTeamsChannelHistory") : t.type === "tool-readEarlierMessages" ? e("messagePart.readEarlierMessages") : t.type === "tool-enableTools" ? e("messagePart.enableTools") : t.type === "tool-retrieveRevisedAnswers" ? e("messagePart.revisedAnswers") : t.type === "tool-searchInKnowledgeBase" ? e("messagePart.searchingDocuments") : t.type === "tool-expandChunkContext" ? e("messagePart.expandChunkContext") : t.type === "tool-readDocumentFile" ? e("messagePart.readDocumentFile") : t.type === "tool-readSpreadsheet" ? e("messagePart.readSpreadsheet") : t.type === "tool-editSpreadsheet" ? e("messagePart.editSpreadsheet") : t.type === "tool-querySpreadsheet" ? e("messagePart.querySpreadsheet") : t.type === "tool-geocode" ? e("messagePart.geocode") : t.type === "tool-getWeather" ? e("messagePart.getWeather") : t.type === "tool-recallUserMemory" ? e("messagePart.recallUserMemory") : t.type === "tool-saveUserMemory" ? e("messagePart.saveUserMemory") : t.type === "tool-showWeather" ? e("messagePart.showWeather") : t.type === "tool-showForm" ? e("messagePart.showForm") : t.type === "tool-showDiagram" ? e("messagePart.showDiagram") : t.type === "tool-showSources" ? e("messagePart.showSources") : t.type === "tool-showMultipleChoice" ? e("messagePart.showMultipleChoice") : t.type === "tool-showArtifact" ? e("messagePart.showArtifact") : t.type === "tool-showEmail" ? e("messagePart.showEmail") : t.type === "tool-showMessage" ? e("messagePart.showMessage") : t.type === "tool-showWebPages" ? e("messagePart.showWebPages") : t.type === "tool-showProducts" ? e("messagePart.showProducts") : t.type === "tool-showContactForm" ? e("messagePart.showContactForm") : t.type === "tool-showCalendarEvent" ? e("messagePart.showCalendarEvent") : t.type === "tool-showComparison" ? e("messagePart.showComparison") : t.type === "tool-showLocation" ? e("messagePart.showLocation") : t.type === "tool-showQrCode" ? e("messagePart.showQrCode") : t.type === "tool-showImageGallery" ? e("messagePart.showImageGallery") : t.type === "tool-showVideo" ? e("messagePart.showVideo") : t.type === "tool-showSuggestedReply" ? e("messagePart.showSuggestedReply") : t.type === "tool-requestGeolocation" ? e("messagePart.requestGeolocation") : t.type === "tool-disconnectOAuthConnection" ? e("messagePart.disconnectOAuthConnection") : t.type === "tool-requestAccountLink" ? e("messagePart.requestAccountLink") : t.type === "tool-unlinkAccount" ? e("messagePart.unlinkAccount") : z.includes(t.type) ? e("messagePart.webSearch") : e("messagePart.tool") : s(t) ? e("messagePart.reasoning") : e("messagePart.streaming");
204
268
  }
205
269
  //#endregion
206
- export { a as C, D as E, v as S, w as T, O as _, s as a, S as b, j as c, m as d, R as f, L as g, z as h, T as i, A as l, b as m, f as n, u as o, x as p, M as r, k as s, _ as t, E as u, P as v, l as w, d as x, y };
270
+ export { q as A, E as C, Z as D, _ as E, l as M, u as N, M as O, d as P, y as S, p as T, W as _, h as a, D as b, R as c, S as d, G as f, $ as g, O as h, N as i, f as j, F as k, L as l, Y as m, b as n, v as o, k as p, z as r, ee as s, T as t, P as u, I as v, Q as w, A as x, V as y };
207
271
 
208
- //# sourceMappingURL=utils-CwIMEuAv.js.map
272
+ //# sourceMappingURL=utils-DsnEcdW3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-DsnEcdW3.js","names":["SUBAGENT_TOOL_PREFIX","isPresentationTool","MCP_TOOL_PREFIX","isTextPart","getToolPartName","isToolPart","removeAccents","str","fromAnyCase","toKebabCase","toSnakeCase","capitalizeFirstLetter","mergeConsecutiveTextParts","merged","part","parts","prev","isWidgetPart","dropCorrectedWidgetErrors","lastDrawn","index","isStreamingPart","FILE_OUTPUT_PARTS","moveFileOutputsLast","files","feedPartKey","toolCallId","LIVE_REASONING_TAIL_LENGTH","FENCE_LINE","getMarkdownTail","markdown","maxLength","from","limit","boundary","length","cut","openFence","match","marker","rest","TOOL_APPROVAL_STATES","isToolApprovalPart","CONFIRM_TOOL_NAME","isToolConfirmPart","isConfirmationCardPart","getToolApprovalId","getPartState","isLoadingState","state","getContrast","hex","hexcolor","char","r","g","b","linearize","c","resolveContrastColor","textColor","mainColor","agentThemeStyle","contrastColor","formatDuration","ms","$n","stringifyPayload","value","json","hasPayload","formAnswerAsSpoken","input","answer","question","questionById","step","said","id","formStepOptions","option","formAnswerSlots","slots","output","steps","assign","list","WEB_SEARCH_TOOL_TYPES","RICH_DETAIL_TOOL_TYPES","hasRichToolDetail","asRecord","pickString","keys","key","record","getToolPartSummary","queries","valid","query","sheet","range","getPartIcon","isReasoningPart","TOOL_KEY_PREFIXES","API_TOOL_PREFIX","toolLabel","te","name","prefix","p","PART_TYPE_LABELS","t","getPartTypeLabel","translator","label","PROVIDER_NAMES","providerLabel","slug","localizeSummaryLabels","summary","labels","colon","getToolPartLabel","$t"],"sources":["../../../../packages/utils/src/text.ts","../../../../packages/components/src/chat/utils.ts"],"sourcesContent":["export const removeAccents = (str: string) =>\n str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\nexport const toCamelCase = <T extends string>(str?: string): T => {\n if (!str) {\n return '' as unknown as T\n }\n return removeAccents(str)\n .replace(/[^a-zA-Z0-9]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^(.)/, (match) => match.toLowerCase()) as unknown as T\n}\n\nexport const fromCamelCase = (str?: string): string => {\n if (!str) {\n return ''\n }\n return str.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n}\n\nexport const fromAnyCase = (str?: string): string => {\n if (!str) {\n return ''\n }\n return str\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .replace(/[-_]+/g, ' ')\n}\n\nexport const toPascalCase = <T extends string>(str?: string): T => {\n if (!str) {\n return '' as unknown as T\n }\n return removeAccents(str)\n .replace(/[^a-zA-Z0-9]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^(.)/, (match) => match.toUpperCase()) as unknown as T\n}\n\nexport const toKebabCase = <T extends string>(str?: string): T => {\n if (!str) {\n return '' as unknown as T\n }\n return removeAccents(str)\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[^a-zA-Z0-9]+/g, '-')\n .toLowerCase() as unknown as T\n}\n\nexport const fromKebabCase = (str?: string): string => {\n if (!str) {\n return ''\n }\n return str.replace(/-/g, ' ')\n}\n\nexport const toSnakeCase = <T extends string>(str?: string): T => {\n if (!str) {\n return '' as unknown as T\n }\n return removeAccents(str)\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/[^a-zA-Z0-9]+/g, '_')\n .toLowerCase() as unknown as T\n}\n\nexport const capitalizeFirstLetter = (str?: string) => {\n if (!str) {\n return ''\n }\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport const lowercaseFirstLetter = (str?: string) => {\n if (!str) {\n return ''\n }\n return str.charAt(0).toLowerCase() + str.slice(1)\n}\n","import type { UIMessage } from 'ai'\nimport {\n API_TOOL_PREFIX,\n MCP_TOOL_PREFIX,\n SUBAGENT_TOOL_PREFIX,\n isPresentationTool,\n} from 'models'\nimport {\n isTextPart,\n isFilePart,\n isToolPart,\n isReasoningPart,\n hasPartText,\n hasTextPart,\n getTextPart,\n getMessageText,\n getToolPartName,\n capitalizeFirstLetter,\n fromAnyCase,\n} from 'utils'\n\nexport {\n isTextPart,\n isFilePart,\n isToolPart,\n isReasoningPart,\n hasPartText,\n hasTextPart,\n getTextPart,\n getMessageText,\n}\n\n/**\n * Merges consecutive text parts into a single text part.\n * Claude (and other models) often produce multiple text parts during streaming\n * that should logically be a single block of text.\n */\nexport function mergeConsecutiveTextParts(\n parts: UIMessage['parts'],\n): UIMessage['parts'] {\n const merged: UIMessage['parts'] = []\n for (const part of parts) {\n if (!isTextPart(part)) {\n merged.push(part)\n continue\n }\n const prev = merged[merged.length - 1]\n if (prev && isTextPart(prev)) {\n merged[merged.length - 1] = { ...prev, text: prev.text + part.text }\n } else {\n merged.push(part)\n }\n }\n return merged\n}\n\nconst isWidgetPart = (\n part: UIMessage['parts'][number],\n): part is Extract<UIMessage['parts'][number], { type: `tool-${string}` }> =>\n isToolPart(part) && isPresentationTool(getToolPartName(part))\n\n/**\n * Drops a widget call refused for its arguments when a later call of the same\n * widget in the message was drawn: the turn corrected it (the backend's\n * `correctableInputRefusals`), and the refusal would sit next to the working\n * widget, `showForm` drawing its render error above the form. A refusal with\n * nothing drawn after it stays. Only the feed reads this: the steps timeline\n * keeps every call, the refused one included.\n */\nexport function dropCorrectedWidgetErrors(\n parts: UIMessage['parts'],\n): UIMessage['parts'] {\n const lastDrawn = new Map<string, number>()\n for (const [index, part] of parts.entries()) {\n if (\n isWidgetPart(part) &&\n part.state !== 'output-error' &&\n !isStreamingPart(part)\n ) {\n lastDrawn.set(part.type, index)\n }\n }\n return parts.filter(\n (part, index) =>\n !(\n isWidgetPart(part) &&\n part.state === 'output-error' &&\n (lastDrawn.get(part.type) ?? -1) > index\n ),\n )\n}\n\n/**\n * Tool calls whose output is a file for the user to download. The feed draws\n * them after the answer, where the reader arrives, wherever in the message the\n * model made the call: a version written before a long answer sat above it,\n * out of sight.\n */\nconst FILE_OUTPUT_PARTS: ReadonlySet<string> = new Set(['tool-editSpreadsheet'])\n\n/** The parts with the file outputs moved last, in their own order. */\nexport function moveFileOutputsLast(\n parts: UIMessage['parts'],\n): UIMessage['parts'] {\n const files = parts.filter((part) => FILE_OUTPUT_PARTS.has(part.type))\n return files.length > 0\n ? [\n ...parts.filter((part) => !FILE_OUTPUT_PARTS.has(part.type)),\n ...files,\n ]\n : parts\n}\n\n/**\n * The key of a part in the feed. Its position, except for a file output: that\n * one is always last, so its position moves as the answer grows, and keyed by\n * it the card would be redrawn at every new part.\n */\nexport function feedPartKey(\n part: UIMessage['parts'][number],\n index: number,\n): string | number {\n const toolCallId = (part as { toolCallId?: string }).toolCallId\n return FILE_OUTPUT_PARTS.has(part.type) && toolCallId\n ? `file-${toolCallId}`\n : index\n}\n\nexport function isStreamingPart(\n part: UIMessage['parts'][number] | null | undefined,\n): part is Extract<UIMessage['parts'][number], { streaming?: boolean }> {\n if (!part) {\n return false\n }\n if ('state' in part) {\n return part.state === 'streaming' || part.state === 'input-streaming'\n }\n return false\n}\n\n/**\n * How much of a reasoning still being written its live box renders. The box is\n * a few lines tall and follows the bottom, while the reasoning of one turn runs\n * to tens of kilobytes: chat `st0Eg8iG0zUX0HQN` wrote 92KB, and parsing all of\n * it at every delta froze the tab. Four thousand characters leave a few screens\n * to scroll back through, and a finished step renders all of it.\n */\nexport const LIVE_REASONING_TAIL_LENGTH = 4000\n\n// A fence opener or closer, also inside a list item or a quote, whose markers\n// and indentation are skipped. The rest of the line tells them apart: a\n// closing fence carries no info string.\nconst FENCE_LINE =\n /^[ \\t]*(?:(?:[-*+]|\\d{1,9}[.)])[ \\t]+|>[ \\t]?)*(`{3,}|~{3,})(.*)$/gm\n\n/**\n * The end of a markdown text, at most `maxLength` characters long, cut on a\n * blank line (a line break when there is none) so it does not open on half a\n * paragraph. A table or a formula can still be cut in two. An ellipsis marks\n * the cut. A cut inside a fenced code block reopens the fence, or the rest of\n * the text would render as code and the code as prose.\n */\nexport function getMarkdownTail(markdown: string, maxLength: number): string {\n if (markdown.length <= maxLength) {\n return markdown\n }\n const from = markdown.length - maxLength\n // The boundary is looked for in the first half of the window only: the one\n // blank line of the window can be the last thing written, and cutting there\n // would leave nothing to render.\n const limit = from + maxLength / 2\n const boundary = (index: number, length: number) =>\n index !== -1 && index < limit ? index + length : undefined\n const cut =\n boundary(markdown.indexOf('\\n\\n', from), 2) ??\n boundary(markdown.indexOf('\\n', from), 1) ??\n from\n let openFence: string | undefined\n for (const match of markdown.matchAll(FENCE_LINE)) {\n if (match.index >= cut) {\n break\n }\n const [, marker, rest] = match\n if (!openFence) {\n // A backtick in a backtick fence's info string makes it inline\n // code, not a fence.\n if (marker[0] === '`' && rest.includes('`')) {\n continue\n }\n openFence = marker\n } else if (\n marker[0] === openFence[0] &&\n marker.length >= openFence.length &&\n !rest.trim()\n ) {\n openFence = undefined\n }\n }\n const reopen = openFence ? `${openFence}\\n` : ''\n return `…\\n\\n${reopen}${markdown.slice(cut)}`\n}\n\n/**\n * States a tool part goes through when it needs the user's approval. They are\n * rendered by `PkToolApprovalCard` whatever the tool is, so the decision (and\n * its outcome) stays visible in the transcript.\n */\nconst TOOL_APPROVAL_STATES = new Set([\n 'approval-requested',\n 'approval-responded',\n 'output-denied',\n])\n\nexport function isToolApprovalPart(\n part: UIMessage['parts'][number] | null | undefined,\n): boolean {\n if (!isToolPart(part)) {\n return false\n }\n if (TOOL_APPROVAL_STATES.has(part.state)) {\n return true\n }\n // An executed (or errored) call that went through the gate keeps its\n // verdict in `approval`: the card stays in the transcript, so the user's\n // decision remains visible in the chat and in the log viewers (parity\n // with requestConfirm, whose 'confirmed' output is persisted).\n return (part as { approval?: unknown }).approval != null\n}\n\n/**\n * The client-side tool the model uses to have an action it described approved.\n * It predates the SDK's approval gate and keeps its own round-trip (it resolves\n * through `addToolOutput`), but it asks the user the very same question, so it\n * shares `PkToolApprovalCard` instead of having a card of its own.\n */\nexport const CONFIRM_TOOL_NAME = 'requestConfirm'\n\nexport function isToolConfirmPart(\n part: UIMessage['parts'][number] | null | undefined,\n): boolean {\n return isToolPart(part) && part.type === `tool-${CONFIRM_TOOL_NAME}`\n}\n\n/** True for any part the confirmation card is responsible for. */\nexport function isConfirmationCardPart(\n part: UIMessage['parts'][number] | null | undefined,\n): boolean {\n return isToolApprovalPart(part) || isToolConfirmPart(part)\n}\n\n/** The id of the pending approval request on a tool part, if any. */\nexport function getToolApprovalId(\n part: UIMessage['parts'][number] | null | undefined,\n): string | undefined {\n if (!isToolPart(part)) {\n return undefined\n }\n return (part as { approval?: { id?: string } }).approval?.id\n}\n\nexport function getPartState(\n part: UIMessage['parts'][number] | null | undefined,\n): string | undefined {\n if (!part) {\n return undefined\n }\n if ('state' in part) {\n return part.state\n }\n return undefined\n}\n\nexport function isLoadingState(state?: string): boolean {\n if (!state) {\n return false\n }\n return ['streaming'].includes(state)\n}\n\nexport function getContrast(hexcolor: string = '000000'): 'black' | 'white' {\n let hex = hexcolor.replace('#', '')\n\n // Expand 3-character hex to 6-character (e.g., #ccc -> #cccccc)\n if (hex.length === 3) {\n hex = hex\n .split('')\n .map((char) => char + char)\n .join('')\n }\n\n // WCAG relative luminance\n const r = parseInt(hex.substring(0, 2), 16) / 255\n const g = parseInt(hex.substring(2, 4), 16) / 255\n const b = parseInt(hex.substring(4, 6), 16) / 255\n\n const linearize = (c: number) =>\n c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n\n const luminance =\n 0.2126 * linearize(r) + 0.7152 * linearize(g) + 0.0722 * linearize(b)\n\n return luminance > 0.179 ? 'black' : 'white'\n}\n\n/**\n * Resolves the contrast color based on the user's `textColor` preference.\n * Falls back to WCAG auto-detection via `getContrast` when set to `'auto'` or `undefined`.\n */\nexport function resolveContrastColor(\n textColor: 'auto' | 'white' | 'black' | undefined,\n mainColor: string | undefined,\n): 'black' | 'white' {\n if (textColor === 'white' || textColor === 'black') {\n return textColor\n }\n return getContrast(mainColor)\n}\n\n/**\n * The style of a chat root (PkChatbot, the widget's shell): the agent's color\n * as the brand. Volver derives every role of the brand (graphic, readable,\n * contrast, tinted surface) on any element with `.theme`, which both roots\n * carry, so the focus ring, the primary buttons, the links and the checkboxes\n * take the agent's color with the contrast each theme needs, instead of the\n * platform's purple. The fields' focus takes the brand's graphic role in both\n * themes, since the dark theme's accent is the platform's too.\n */\nexport function agentThemeStyle(\n mainColor: string | undefined,\n contrastColor: 'black' | 'white',\n): Record<string, string> | undefined {\n if (!mainColor) {\n return undefined\n }\n return {\n '--chatbot-main-color': mainColor,\n '--chatbot-contrast-color': contrastColor,\n '--color-brand': mainColor,\n '--color-brand-contrast': contrastColor,\n '--input-focus-color': 'var(--color-brand-graphic)',\n }\n}\n\n/**\n * Formats a duration in milliseconds using the i18n `seconds` number format\n * (e.g. \"12,4 secondi\" / \"12.4 seconds\"). Returns undefined for durations\n * that would render as \"0 seconds\" (less than 0.05s).\n */\nexport function formatDuration(\n $n: (value: number, format: string) => string,\n ms?: number,\n): string | undefined {\n if (ms === undefined || ms < 50) {\n return undefined\n }\n return $n(ms / 1000, 'seconds')\n}\n\n/**\n * Stringifies a tool payload for the raw fallback view. Returns undefined for\n * empty values so the caller can skip rendering the block entirely.\n */\nexport function stringifyPayload(value: unknown): string | undefined {\n if (value === undefined) {\n return undefined\n }\n if (typeof value === 'string') {\n return value.trim() || undefined\n }\n try {\n const json = JSON.stringify(value, null, 2)\n return json === '{}' || json === '[]' ? undefined : json\n } catch {\n return undefined\n }\n}\n\n/**\n * True when a tool payload carries something worth rendering, so a caller can\n * skip the block without stringifying the value twice.\n */\nexport function hasPayload(value: unknown): boolean {\n return stringifyPayload(value) !== undefined\n}\n\n/**\n * Turns the answers of a form into the sentence the caller would have said.\n *\n * On a call the tool loop is over by the time the form is on screen, so the\n * answers go back to the agent as a user message (see `sendUserMessage` in\n * `useVoiceSession`). Each answer is paired with its question, because that is\n * how a person would say it and because the agent hears it with no widget\n * attached.\n */\nexport function formAnswerAsSpoken(\n part: unknown,\n answer: string | { answers: { id: string; value: unknown }[] },\n): string {\n const input = (\n part as {\n input?: {\n steps?: { id: string; question?: string }[]\n question?: string\n }\n }\n )?.input\n\n if (typeof answer === 'string') {\n const question = input?.question ?? input?.steps?.[0]?.question\n return question ? `${question} ${answer}` : answer\n }\n\n const questionById = new Map(\n (input?.steps ?? []).map((step) => [step.id, step.question]),\n )\n const lines = answer.answers\n .filter(\n ({ value }) =>\n value !== null &&\n value !== '' &&\n !(Array.isArray(value) && !value.length),\n )\n .map(({ id, value }) => {\n const said = Array.isArray(value) ? value.join(', ') : String(value)\n const question = questionById.get(id)\n return question ? `${question} ${said}` : said\n })\n\n return lines.join('. ')\n}\n\n/**\n * The choices of a form step, as the radio and checkbox editors take them.\n *\n * The `value` is the LABEL and not the position, because it is what travels\n * back to the model as the answer: it reads the words it wrote, not an index.\n * Nothing here caps the list, and nothing should: the number of options an\n * agent configures is advice to the model, so a step can legitimately carry\n * more (see `showForm.tool.ts`).\n */\nexport function formStepOptions(\n step: { options?: { label: string; description?: string }[] } | undefined,\n): { label: string; value: string; description?: string }[] {\n if (!step?.options) {\n return []\n }\n return step.options.map((option) => ({\n label: option.label,\n value: option.label,\n description: option.description,\n }))\n}\n\n/**\n * Spreads the answers a form comes back with onto one slot PER STEP.\n *\n * A form's answers travel paired with step ids, and the tool schema does not\n * enforce that those ids are unique: a `.refine()` there would refuse the whole\n * form over a duplicate, which is the failure the schema was just cured of (see\n * the gotchas entry \"A configurable cap does not belong in an inputSchema\").\n * So the duplicate has to be survivable here. Keyed by id, two steps sharing\n * one collapsed onto a single answer: the second question showed the first\n * one's reply, and submitting sent that reply twice. Keyed by position, each\n * step keeps its own.\n *\n * A duplicated id restores the same incoming value to every step claiming it,\n * which is as much as the payload allows: the ids are all it says.\n */\nexport function formAnswerSlots(\n steps: { id: string }[],\n output: unknown,\n): Record<number, unknown> {\n const slots: Record<number, unknown> = {}\n if (output === undefined || output === null) {\n return slots\n }\n // A legacy single-choice answer is the plain string, and it can only\n // belong to a single-step form.\n if (typeof output === 'string') {\n if (steps.length === 1) {\n slots[0] = output\n }\n return slots\n }\n const assign = (id: string, value: unknown) => {\n steps.forEach((step, index) => {\n if (step.id === id) {\n slots[index] = value\n }\n })\n }\n const list = (output as { answers?: unknown }).answers\n if (Array.isArray(list)) {\n for (const answer of list as { id?: unknown; value?: unknown }[]) {\n if (typeof answer?.id === 'string') {\n assign(answer.id, answer.value)\n }\n }\n return slots\n }\n // Forms answered on a platform channel (the Teams modal) come back as a\n // flat record keyed by step id.\n for (const [id, value] of Object.entries(\n output as Record<string, unknown>,\n )) {\n if (value !== undefined) {\n assign(id, value)\n }\n }\n return slots\n}\n\n// Provider-native web search tool part types\nexport const WEB_SEARCH_TOOL_TYPES = [\n 'tool-perplexity_search',\n 'tool-parallel_search',\n 'tool-web_search',\n 'tool-google_search',\n]\n\n// Tool part types with a dedicated rich rendering in PkChatbotStepToolDetail\nconst RICH_DETAIL_TOOL_TYPES = new Set([\n 'tool-searchInKnowledgeBase',\n 'tool-retrieveRevisedAnswers',\n 'tool-expandChunkContext',\n 'tool-readDocumentFile',\n 'tool-getWeather',\n 'tool-geocode',\n 'tool-recallUserMemory',\n 'tool-saveUserMemory',\n ...WEB_SEARCH_TOOL_TYPES,\n])\n\nexport function hasRichToolDetail(\n part?: UIMessage['parts'][number] | null,\n): boolean {\n return isToolPart(part) && RICH_DETAIL_TOOL_TYPES.has(part.type)\n}\n\nconst asRecord = (value: unknown): Record<string, unknown> | undefined =>\n value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined\n\nconst pickString = (\n record: Record<string, unknown> | undefined,\n ...keys: string[]\n): string | undefined => {\n for (const key of keys) {\n const value = record?.[key]\n if (typeof value === 'string' && value.trim()) {\n return value\n }\n }\n return undefined\n}\n\n/**\n * Returns a short inline summary for a tool part (search queries, location,\n * document name, ...) to be shown next to the step label without expanding\n * the step body.\n */\nexport function getToolPartSummary(\n part?: UIMessage['parts'][number] | null,\n): string | undefined {\n if (!isToolPart(part)) {\n return undefined\n }\n const input = asRecord('input' in part ? part.input : undefined)\n const output = asRecord('output' in part ? part.output : undefined)\n if (\n part.type === 'tool-searchInKnowledgeBase' ||\n WEB_SEARCH_TOOL_TYPES.includes(part.type)\n ) {\n const queries = input?.queries\n if (Array.isArray(queries)) {\n const valid = queries.filter(\n (query): query is string =>\n typeof query === 'string' && Boolean(query.trim()),\n )\n return valid.length ? valid.join(' · ') : undefined\n }\n return pickString(input, 'query', 'objective')\n }\n if (part.type === 'tool-retrieveRevisedAnswers') {\n return pickString(input, 'query')\n }\n if (part.type === 'tool-getWeather') {\n return (\n pickString(output, 'location') ?? pickString(input, 'locationName')\n )\n }\n if (part.type === 'tool-geocode') {\n return pickString(input, 'locationName')\n }\n if (part.type === 'tool-expandChunkContext') {\n return pickString(output, 'documentName')\n }\n if (part.type === 'tool-readDocumentFile') {\n return pickString(output, 'name')\n }\n if (part.type === 'tool-readSpreadsheet') {\n const sheet = pickString(input, 'sheet')\n const range = pickString(input, 'range')\n return sheet && range ? `${sheet}!${range}` : sheet\n }\n if (part.type === 'tool-editSpreadsheet') {\n return pickString(output, 'filename')\n }\n if (part.type === 'tool-querySpreadsheet') {\n // The file when the step asked for the schema; a query has no name.\n return pickString(output, 'file')\n }\n if (part.type === 'tool-recallUserMemory') {\n return pickString(input, 'query')\n }\n if (part.type === 'tool-saveUserMemory') {\n return pickString(input, 'content', 'query')\n }\n return undefined\n}\n\n// Get part icon\nexport function getPartIcon(\n part?: UIMessage['parts'][number] | null,\n): string | undefined {\n if (isToolPart(part)) {\n if (part.type.includes('tool-subagent')) {\n return 'ri:robot-2-line'\n }\n if (part.type === 'tool-runWorker') {\n return 'ri:flow-chart'\n }\n if (part.type === 'tool-scheduleWakeup') {\n return 'ri:alarm-line'\n }\n if (part.type === 'tool-fetchTeamsChannelHistory') {\n return 'ri:chat-history-line'\n }\n if (part.type === 'tool-readEarlierMessages') {\n return 'ri:history-line'\n }\n if (part.type === 'tool-enableTools') {\n return 'ri:toggle-line'\n }\n if (part.type.includes('tool-mcp')) {\n return 'mcp'\n }\n if (part.type === 'tool-retrieveRevisedAnswers') {\n return 'ri:file-edit-line'\n }\n if (part.type === 'tool-searchInKnowledgeBase') {\n return 'ri:search-line'\n }\n if (part.type === 'tool-expandChunkContext') {\n return 'ri:file-search-line'\n }\n if (part.type === 'tool-readDocumentFile') {\n return 'ri:file-text-line'\n }\n if (part.type === 'tool-readSpreadsheet') {\n return 'ri:table-line'\n }\n if (part.type === 'tool-editSpreadsheet') {\n return 'ri:file-excel-2-line'\n }\n if (part.type === 'tool-querySpreadsheet') {\n return 'ri:database-2-line'\n }\n if (part.type === 'tool-geocode') {\n return 'ri:map-2-line'\n }\n if (part.type === 'tool-getWeather') {\n return 'ri:sun-cloudy-line'\n }\n if (part.type === 'tool-recallUserMemory') {\n return 'ri:brain-line'\n }\n if (part.type === 'tool-saveUserMemory') {\n return 'ri:save-3-line'\n }\n if (part.type === 'tool-showWeather') {\n return 'ri:sun-line'\n }\n if (part.type === 'tool-showDiagram') {\n return 'ri:flow-chart'\n }\n if (part.type === 'tool-showSources') {\n return 'ri:book-2-line'\n }\n if (part.type === 'tool-showForm') {\n return 'ri:survey-line'\n }\n if (part.type === 'tool-showMultipleChoice') {\n return 'ri:checkbox-multiple-line'\n }\n if (part.type === 'tool-showArtifact') {\n return 'ri:file-code-line'\n }\n if (part.type === 'tool-showEmail') {\n return 'ri:mail-line'\n }\n if (part.type === 'tool-showMessage') {\n return 'ri:chat-1-line'\n }\n if (part.type === 'tool-showWebPages') {\n return 'ri:pages-line'\n }\n if (part.type === 'tool-showProductList') {\n return 'ri:shopping-bag-line'\n }\n if (part.type === 'tool-showContactForm') {\n return 'ri:send-plane-2-line'\n }\n if (part.type === 'tool-showCalendarEvent') {\n return 'ri:calendar-event-line'\n }\n if (part.type === 'tool-showComparison') {\n return 'ri:scales-line'\n }\n if (part.type === 'tool-showLocation') {\n return 'ri:map-pin-line'\n }\n if (part.type === 'tool-showQrCode') {\n return 'ri:qr-code-line'\n }\n if (part.type === 'tool-showImageGallery') {\n return 'ri:image-line'\n }\n if (part.type === 'tool-showVideo') {\n return 'ri:film-line'\n }\n if (part.type === 'tool-showSuggestedReply') {\n return 'ri:corner-down-right-line'\n }\n if (part.type === 'tool-requestGeolocation') {\n return 'ri:map-pin-user-line'\n }\n if (part.type === 'tool-disconnectOAuthConnection') {\n return 'ri:link-unlink'\n }\n if (part.type === 'tool-requestAccountLink') {\n return 'ri:link'\n }\n if (part.type === 'tool-unlinkAccount') {\n return 'ri:link-unlink'\n }\n if (\n part.type === 'tool-perplexity_search' ||\n part.type === 'tool-parallel_search' ||\n part.type === 'tool-web_search' ||\n part.type === 'tool-google_search'\n ) {\n return 'ri:global-line'\n }\n return 'ri:tools-line'\n }\n if (isReasoningPart(part)) {\n return 'ri:lightbulb-line'\n }\n if (isTextPart(part)) {\n return 'ri:double-quotes-r'\n }\n return undefined\n}\n\n/** What `toolLabel` and `getPartTypeLabel` need from vue-i18n. */\nexport interface LabelTranslator {\n t: (key: string) => string\n te: (key: string) => boolean\n}\n\nconst TOOL_KEY_PREFIXES = [\n API_TOOL_PREFIX,\n MCP_TOOL_PREFIX,\n SUBAGENT_TOOL_PREFIX,\n] as const\n\n/**\n * The name a person reads for a tool of the turn: the translated label of a\n * built-in tool, otherwise the name the agent configured, without its\n * tool-set prefix and in words (`api-festivita_nazionali` reads \"Festivita\n * nazionali\"). Never the raw key, and never an i18n key with no translation,\n * which vue-i18n would print as the key itself.\n */\nexport function toolLabel(name: string, { t, te }: LabelTranslator): string {\n if (te(`agent.tool.${name}`)) {\n return t(`agent.tool.${name}`)\n }\n const prefix = TOOL_KEY_PREFIXES.find((p) => name.startsWith(p))\n const bare = prefix ? name.slice(prefix.length) : name\n return capitalizeFirstLetter(fromAnyCase(bare).trim().toLowerCase())\n}\n\n/**\n * The kinds of message part a person can meet, each with its label. Written\n * as literal keys so the widget's library build, which keeps only the keys it\n * finds written out (apps/web-component/vite-plugins/chatLocales.ts), ships\n * them too.\n */\nconst PART_TYPE_LABELS: Record<string, (t: LabelTranslator['t']) => string> = {\n custom: (t) => t('messagePart.type.custom'),\n data: (t) => t('messagePart.type.data'),\n file: (t) => t('messagePart.type.file'),\n reasoning: (t) => t('messagePart.type.reasoning'),\n 'source-document': (t) => t('messagePart.type.sourceDocument'),\n 'source-url': (t) => t('messagePart.type.sourceUrl'),\n 'step-start': (t) => t('messagePart.type.stepStart'),\n text: (t) => t('messagePart.type.text'),\n}\n\n/**\n * The label of a message part in the message details: the tool for a tool\n * call, the translated kind otherwise (text, reasoning, provider data...),\n * and the kind in words for one the catalog does not know yet.\n */\nexport function getPartTypeLabel(\n part: UIMessage['parts'][number],\n translator: LabelTranslator,\n): string {\n if (isToolPart(part)) {\n return toolLabel(getToolPartName(part), translator)\n }\n if (part.type === 'dynamic-tool') {\n return toolLabel(part.toolName, translator)\n }\n const kind = part.type.startsWith('data-') ? 'data' : part.type\n const label = PART_TYPE_LABELS[kind]\n return label\n ? label(translator.t)\n : capitalizeFirstLetter(fromAnyCase(part.type))\n}\n\n/**\n * The commercial name of a provider the gateway routed a turn through, from\n * its slug (`anthropic`, `bedrock`): proper nouns, so no translation. A slug\n * not listed here shows with a capital, never as the bare id.\n */\nconst PROVIDER_NAMES: Record<string, string> = {\n alibaba: 'Alibaba Cloud',\n anthropic: 'Anthropic',\n azure: 'Microsoft Azure',\n baseten: 'Baseten',\n bedrock: 'Amazon Bedrock',\n cerebras: 'Cerebras',\n cohere: 'Cohere',\n deepinfra: 'DeepInfra',\n deepseek: 'DeepSeek',\n fireworks: 'Fireworks AI',\n google: 'Google',\n groq: 'Groq',\n mistral: 'Mistral AI',\n moonshotai: 'Moonshot AI',\n openai: 'OpenAI',\n perplexity: 'Perplexity',\n togetherai: 'Together AI',\n vertex: 'Google Vertex AI',\n xai: 'xAI',\n zai: 'Z.ai',\n}\n\n/** The name of a provider slug, see `PROVIDER_NAMES`. */\nexport function providerLabel(slug: string): string {\n return (\n PROVIDER_NAMES[slug.toLowerCase()] ??\n capitalizeFirstLetter(fromAnyCase(slug))\n )\n}\n\n/**\n * The conversation summary in the reader's language. The analysis asks the\n * model for four bold labels (`SUMMARY_FORMAT` in\n * apps/backend/src/prompts/analysis.prompt.ts) and the model copies them in\n * English whatever the conversation's language, so every stored summary\n * holds them: they are translated where a summary is read. An empty summary\n * comes back as it is, so a `??` fallback after it still works.\n */\nexport function localizeSummaryLabels<T extends string | null | undefined>(\n summary: T,\n t: (key: string) => string,\n): T {\n if (!summary) {\n return summary\n }\n const labels: Record<string, string> = {\n Intent: t('conversationSummary.intent'),\n 'Topics covered': t('conversationSummary.topicsCovered'),\n 'Key facts': t('conversationSummary.keyFacts'),\n 'Open questions': t('conversationSummary.openQuestions'),\n }\n return summary.replace(\n /\\*\\*(Intent|Topics covered|Key facts|Open questions)(:?)\\*\\*/g,\n (_, label: string, colon: string) => `**${labels[label]}${colon}**`,\n ) as T\n}\n\n// Get part label\nexport function getToolPartLabel(\n $t: (key: string) => string,\n part?: UIMessage['parts'][number] | null,\n): string | undefined {\n if (isToolPart(part)) {\n if (part.type.includes('tool-subagent')) {\n return $t(`messagePart.runSubagent`)\n }\n if (part.type === 'tool-runWorker') {\n return $t(`messagePart.runWorker`)\n }\n if (part.type === 'tool-scheduleWakeup') {\n return $t(`messagePart.scheduleWakeup`)\n }\n if (part.type === 'tool-fetchTeamsChannelHistory') {\n return $t(`messagePart.fetchTeamsChannelHistory`)\n }\n if (part.type === 'tool-readEarlierMessages') {\n return $t(`messagePart.readEarlierMessages`)\n }\n if (part.type === 'tool-enableTools') {\n return $t(`messagePart.enableTools`)\n }\n if (part.type === 'tool-retrieveRevisedAnswers') {\n return $t(`messagePart.revisedAnswers`)\n }\n if (part.type === 'tool-searchInKnowledgeBase') {\n return $t(`messagePart.searchingDocuments`)\n }\n if (part.type === 'tool-expandChunkContext') {\n return $t(`messagePart.expandChunkContext`)\n }\n if (part.type === 'tool-readDocumentFile') {\n return $t(`messagePart.readDocumentFile`)\n }\n if (part.type === 'tool-readSpreadsheet') {\n return $t(`messagePart.readSpreadsheet`)\n }\n if (part.type === 'tool-editSpreadsheet') {\n return $t(`messagePart.editSpreadsheet`)\n }\n if (part.type === 'tool-querySpreadsheet') {\n return $t(`messagePart.querySpreadsheet`)\n }\n if (part.type === 'tool-geocode') {\n return $t(`messagePart.geocode`)\n }\n if (part.type === 'tool-getWeather') {\n return $t(`messagePart.getWeather`)\n }\n if (part.type === 'tool-recallUserMemory') {\n return $t(`messagePart.recallUserMemory`)\n }\n if (part.type === 'tool-saveUserMemory') {\n return $t(`messagePart.saveUserMemory`)\n }\n if (part.type === 'tool-showWeather') {\n return $t(`messagePart.showWeather`)\n }\n if (part.type === 'tool-showForm') {\n return $t(`messagePart.showForm`)\n }\n if (part.type === 'tool-showDiagram') {\n return $t(`messagePart.showDiagram`)\n }\n if (part.type === 'tool-showSources') {\n return $t(`messagePart.showSources`)\n }\n if (part.type === 'tool-showMultipleChoice') {\n return $t(`messagePart.showMultipleChoice`)\n }\n if (part.type === 'tool-showArtifact') {\n return $t(`messagePart.showArtifact`)\n }\n if (part.type === 'tool-showEmail') {\n return $t(`messagePart.showEmail`)\n }\n if (part.type === 'tool-showMessage') {\n return $t(`messagePart.showMessage`)\n }\n if (part.type === 'tool-showWebPages') {\n return $t(`messagePart.showWebPages`)\n }\n if (part.type === 'tool-showProducts') {\n return $t(`messagePart.showProducts`)\n }\n if (part.type === 'tool-showContactForm') {\n return $t(`messagePart.showContactForm`)\n }\n if (part.type === 'tool-showCalendarEvent') {\n return $t(`messagePart.showCalendarEvent`)\n }\n if (part.type === 'tool-showComparison') {\n return $t(`messagePart.showComparison`)\n }\n if (part.type === 'tool-showLocation') {\n return $t(`messagePart.showLocation`)\n }\n if (part.type === 'tool-showQrCode') {\n return $t(`messagePart.showQrCode`)\n }\n if (part.type === 'tool-showImageGallery') {\n return $t(`messagePart.showImageGallery`)\n }\n if (part.type === 'tool-showVideo') {\n return $t(`messagePart.showVideo`)\n }\n if (part.type === 'tool-showSuggestedReply') {\n return $t(`messagePart.showSuggestedReply`)\n }\n if (part.type === 'tool-requestGeolocation') {\n return $t(`messagePart.requestGeolocation`)\n }\n if (part.type === 'tool-disconnectOAuthConnection') {\n return $t(`messagePart.disconnectOAuthConnection`)\n }\n if (part.type === 'tool-requestAccountLink') {\n return $t(`messagePart.requestAccountLink`)\n }\n if (part.type === 'tool-unlinkAccount') {\n return $t(`messagePart.unlinkAccount`)\n }\n if (WEB_SEARCH_TOOL_TYPES.includes(part.type)) {\n return $t(`messagePart.webSearch`)\n }\n return $t(`messagePart.tool`)\n }\n if (isReasoningPart(part)) {\n return $t(`messagePart.reasoning`)\n }\n return $t(`messagePart.streaming`)\n}\n"],"mappings":"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"}
package/dist-vue/api.js CHANGED
@@ -1 +1 @@
1
- export { t as createChatbotApiClient } from "./_chunks/createChatbotApiClient-DSLxswr4.js";
1
+ export { t as createChatbotApiClient } from "./_chunks/createChatbotApiClient-G3Tt1I67.js";