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

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 (205) 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/{PkStreamingMarkdown-Bry3y6Ru.js → PkStreamingMarkdown-BK9O_NLx.js} +889 -852
  4. package/dist/_chunks/{PkStreamingMarkdown-Bry3y6Ru.js.map → PkStreamingMarkdown-BK9O_NLx.js.map} +1 -1
  5. package/dist/_chunks/{PkToolEditSpreadsheet-5vHzEy4P.js → PkToolEditSpreadsheet-D-RCfnrN.js} +2 -2
  6. package/dist/_chunks/{PkToolEditSpreadsheet-5vHzEy4P.js.map → PkToolEditSpreadsheet-D-RCfnrN.js.map} +1 -1
  7. package/dist/_chunks/{PkToolRequestGeolocation-Cj8hTfNF.js → PkToolRequestGeolocation-PxhQxMP1.js} +2 -2
  8. package/dist/_chunks/{PkToolRequestGeolocation-Cj8hTfNF.js.map → PkToolRequestGeolocation-PxhQxMP1.js.map} +1 -1
  9. package/dist/_chunks/{PkToolRequestOAuthConnection-BWxR1hV4.js → PkToolRequestOAuthConnection-QYDJPUFF.js} +5 -4
  10. package/dist/_chunks/PkToolRequestOAuthConnection-QYDJPUFF.js.map +1 -0
  11. package/dist/_chunks/{PkToolShowArtifact-CfJLe8vD.js → PkToolShowArtifact-DGUj8f1k.js} +3 -3
  12. package/dist/_chunks/PkToolShowArtifact-DGUj8f1k.js.map +1 -0
  13. package/dist/_chunks/{PkToolShowCalendarEvent-Bp_yv8S7.js → PkToolShowCalendarEvent-BEjPZC1F.js} +4 -3
  14. package/dist/_chunks/PkToolShowCalendarEvent-BEjPZC1F.js.map +1 -0
  15. package/dist/_chunks/{PkToolShowComparison-Bvd4f4tJ.js → PkToolShowComparison-DLC22e1W.js} +4 -3
  16. package/dist/_chunks/PkToolShowComparison-DLC22e1W.js.map +1 -0
  17. package/dist/_chunks/{PkToolShowContactForm--9XOVqNB.js → PkToolShowContactForm-DXJI0MPZ.js} +5 -4
  18. package/dist/_chunks/PkToolShowContactForm-DXJI0MPZ.js.map +1 -0
  19. package/dist/_chunks/{PkToolShowDiagram-C-pNbC9n.js → PkToolShowDiagram-C5mSqZDp.js} +9 -8
  20. package/dist/_chunks/PkToolShowDiagram-C5mSqZDp.js.map +1 -0
  21. package/dist/_chunks/{PkToolShowEmail-BKel_O29.js → PkToolShowEmail-C7mUCqGL.js} +4 -3
  22. package/dist/_chunks/PkToolShowEmail-C7mUCqGL.js.map +1 -0
  23. package/dist/_chunks/{PkToolShowForm-CGAc1O6K.js → PkToolShowForm-UQo0Xdiq.js} +6 -5
  24. package/dist/_chunks/PkToolShowForm-UQo0Xdiq.js.map +1 -0
  25. package/dist/_chunks/{PkToolShowImageGallery-CIhIrIcY.js → PkToolShowImageGallery-rZ3AtIEP.js} +2 -2
  26. package/dist/_chunks/{PkToolShowImageGallery-CIhIrIcY.js.map → PkToolShowImageGallery-rZ3AtIEP.js.map} +1 -1
  27. package/dist/_chunks/{PkToolShowLocation-78C7jFiV.js → PkToolShowLocation-BOmxHZKd.js} +4 -3
  28. package/dist/_chunks/PkToolShowLocation-BOmxHZKd.js.map +1 -0
  29. package/dist/_chunks/{PkToolShowMessage-BScy-w4J.js → PkToolShowMessage-vw4XS4TR.js} +4 -3
  30. package/dist/_chunks/PkToolShowMessage-vw4XS4TR.js.map +1 -0
  31. package/dist/_chunks/{PkToolShowProductList-BjWKnbyD.js → PkToolShowProductList-ByeSoIwq.js} +2 -2
  32. package/dist/_chunks/{PkToolShowProductList-BjWKnbyD.js.map → PkToolShowProductList-ByeSoIwq.js.map} +1 -1
  33. package/dist/_chunks/{PkToolShowQrCode-B70jPHDw.js → PkToolShowQrCode-BhcAUXSZ.js} +4 -3
  34. package/dist/_chunks/PkToolShowQrCode-BhcAUXSZ.js.map +1 -0
  35. package/dist/_chunks/{PkToolShowSources-BJ-XFrLD.js → PkToolShowSources-q4XBOwJl.js} +51 -50
  36. package/dist/_chunks/PkToolShowSources-q4XBOwJl.js.map +1 -0
  37. package/dist/_chunks/{PkToolShowSuggestedReply-0KahUIlw.js → PkToolShowSuggestedReply-BISQY1ce.js} +2 -2
  38. package/dist/_chunks/{PkToolShowSuggestedReply-0KahUIlw.js.map → PkToolShowSuggestedReply-BISQY1ce.js.map} +1 -1
  39. package/dist/_chunks/{PkToolShowVideo-_V_d-PDr.js → PkToolShowVideo-BmHHW4Ep.js} +2 -2
  40. package/dist/_chunks/{PkToolShowVideo-_V_d-PDr.js.map → PkToolShowVideo-BmHHW4Ep.js.map} +1 -1
  41. package/dist/_chunks/{PkToolShowWebPages-D55VEPjK.js → PkToolShowWebPages-BaapF0CC.js} +2 -2
  42. package/dist/_chunks/{PkToolShowWebPages-D55VEPjK.js.map → PkToolShowWebPages-BaapF0CC.js.map} +1 -1
  43. package/dist/_chunks/VvButtonLocalized-DV-zbH9b.js +21 -0
  44. package/dist/_chunks/VvButtonLocalized-DV-zbH9b.js.map +1 -0
  45. package/dist/_chunks/{chatImagePolicy-DXkhb-N_.js → chatImagePolicy-CDNkMKdT.js} +2 -2
  46. package/dist/_chunks/{chatImagePolicy-DXkhb-N_.js.map → chatImagePolicy-CDNkMKdT.js.map} +1 -1
  47. package/dist/_chunks/{markdown-DpoAzJSk.js → markdown-BbaLt57-.js} +8 -8
  48. package/dist/_chunks/{markdown-DpoAzJSk.js.map → markdown-BbaLt57-.js.map} +1 -1
  49. package/dist/_chunks/text-BHCGblDQ.js +6 -0
  50. package/dist/_chunks/text-BHCGblDQ.js.map +1 -0
  51. package/dist/ai-elements.es.js +2789 -2526
  52. package/dist/ai-elements.es.js.map +1 -1
  53. package/dist-vue/PkChatbot.js +1 -1
  54. package/dist-vue/PkChatbotAuth.js +1 -1
  55. package/dist-vue/PkChatbotEmptyState.js +1 -1
  56. package/dist-vue/PkChatbotError.js +1 -1
  57. package/dist-vue/PkChatbotFeedbackForm.js +1 -1
  58. package/dist-vue/PkChatbotInput.js +1 -1
  59. package/dist-vue/PkChatbotMessages.js +1 -1
  60. package/dist-vue/PkChatbotStepPayload.js +1 -1
  61. package/dist-vue/PkChatbotStepToolDetail.js +1 -1
  62. package/dist-vue/PkChatbotSteps.js +1 -1
  63. package/dist-vue/PkChatbotViewChat.js +1 -1
  64. package/dist-vue/PkChatbotViewConversations.js +1 -1
  65. package/dist-vue/PkChatbotViewFiles.js +1 -1
  66. package/dist-vue/PkChatbotViewProfile.js +1 -1
  67. package/dist-vue/PkChatbotWakeupBar.js +1 -1
  68. package/dist-vue/_chunks/{Agent-dGF8mkG9.js → Agent-DU1WWaHR.js} +87 -87
  69. package/dist-vue/_chunks/Agent-DU1WWaHR.js.map +1 -0
  70. package/dist-vue/_chunks/{Document-CV-RJu_p.js → Document-Cto-Qws0.js} +2 -2
  71. package/dist-vue/_chunks/{Document-CV-RJu_p.js.map → Document-Cto-Qws0.js.map} +1 -1
  72. package/dist-vue/_chunks/{PkChatbot-536vsOfp.js → PkChatbot-D0BQ3VnX.js} +86 -85
  73. package/dist-vue/_chunks/PkChatbot-D0BQ3VnX.js.map +1 -0
  74. package/dist-vue/_chunks/{PkChatbotAuth-BMLLTSwK.js → PkChatbotAuth-BVZzjbK9.js} +4 -3
  75. package/dist-vue/_chunks/PkChatbotAuth-BVZzjbK9.js.map +1 -0
  76. package/dist-vue/_chunks/{PkChatbotEmptyState-Toj4CqXV.js → PkChatbotEmptyState-CGjFcwwB.js} +2 -2
  77. package/dist-vue/_chunks/{PkChatbotEmptyState-Toj4CqXV.js.map → PkChatbotEmptyState-CGjFcwwB.js.map} +1 -1
  78. package/dist-vue/_chunks/{PkChatbotError-CRGbK09-.js → PkChatbotError-BV5ga7hk.js} +4 -3
  79. package/dist-vue/_chunks/PkChatbotError-BV5ga7hk.js.map +1 -0
  80. package/dist-vue/_chunks/{PkChatbotFeedbackForm-CMFXjoKR.js → PkChatbotFeedbackForm-B5cYsWBr.js} +8 -7
  81. package/dist-vue/_chunks/PkChatbotFeedbackForm-B5cYsWBr.js.map +1 -0
  82. package/dist-vue/_chunks/{PkChatbotInput-BfZqRpQ2.js → PkChatbotInput-BVBQY0V5.js} +8 -7
  83. package/dist-vue/_chunks/PkChatbotInput-BVBQY0V5.js.map +1 -0
  84. package/dist-vue/_chunks/PkChatbotMessages-CK0lhcDj.js +876 -0
  85. package/dist-vue/_chunks/PkChatbotMessages-CK0lhcDj.js.map +1 -0
  86. package/dist-vue/_chunks/{PkChatbotStepPayload-D0eoPBQ8.js → PkChatbotStepPayload-l57qHqVf.js} +2 -2
  87. package/dist-vue/_chunks/{PkChatbotStepPayload-D0eoPBQ8.js.map → PkChatbotStepPayload-l57qHqVf.js.map} +1 -1
  88. package/dist-vue/_chunks/{PkChatbotStepToolDetail-CMx4cw1D.js → PkChatbotStepToolDetail-ChrOa4W4.js} +16 -16
  89. package/dist-vue/_chunks/{PkChatbotStepToolDetail-CMx4cw1D.js.map → PkChatbotStepToolDetail-ChrOa4W4.js.map} +1 -1
  90. package/dist-vue/_chunks/{PkChatbotSteps-DeZQhGRU.js → PkChatbotSteps-DnU9r4XT.js} +40 -40
  91. package/dist-vue/_chunks/{PkChatbotSteps-DeZQhGRU.js.map → PkChatbotSteps-DnU9r4XT.js.map} +1 -1
  92. package/dist-vue/_chunks/{PkChatbotViewChat-CVT6OUIv.js → PkChatbotViewChat-DIx3nwEg.js} +12 -12
  93. package/dist-vue/_chunks/{PkChatbotViewChat-CVT6OUIv.js.map → PkChatbotViewChat-DIx3nwEg.js.map} +1 -1
  94. package/dist-vue/_chunks/PkChatbotViewConversations-DDWO1Ci_.js +199 -0
  95. package/dist-vue/_chunks/PkChatbotViewConversations-DDWO1Ci_.js.map +1 -0
  96. package/dist-vue/_chunks/{PkChatbotViewFiles-CA20TBFY.js → PkChatbotViewFiles-O9YjrGP0.js} +18 -17
  97. package/dist-vue/_chunks/PkChatbotViewFiles-O9YjrGP0.js.map +1 -0
  98. package/dist-vue/_chunks/{PkChatbotViewProfile-CyzRxE3D.js → PkChatbotViewProfile-BoImMMj2.js} +11 -10
  99. package/dist-vue/_chunks/PkChatbotViewProfile-BoImMMj2.js.map +1 -0
  100. package/dist-vue/_chunks/{PkChatbotWakeupBar-jBti21FQ.js → PkChatbotWakeupBar-Cjgarxnw.js} +3 -2
  101. package/dist-vue/_chunks/PkChatbotWakeupBar-Cjgarxnw.js.map +1 -0
  102. package/dist-vue/_chunks/{PkStreamingMarkdown-C55Fi0Pd.js → PkStreamingMarkdown-JEkbkY5k.js} +23 -23
  103. package/dist-vue/_chunks/{PkStreamingMarkdown-C55Fi0Pd.js.map → PkStreamingMarkdown-JEkbkY5k.js.map} +1 -1
  104. package/dist-vue/_chunks/{PkSvgViewer-Ts3gQ1hB.js → PkSvgViewer-DrA4yi8Q.js} +7 -6
  105. package/dist-vue/_chunks/PkSvgViewer-DrA4yi8Q.js.map +1 -0
  106. package/dist-vue/_chunks/{PkToolEditSpreadsheet-HAskd6d3.js → PkToolEditSpreadsheet-BX_h8Hut.js} +2 -2
  107. package/dist-vue/_chunks/{PkToolEditSpreadsheet-HAskd6d3.js.map → PkToolEditSpreadsheet-BX_h8Hut.js.map} +1 -1
  108. package/dist-vue/_chunks/{PkToolRequestGeolocation-BE22qwxB.js → PkToolRequestGeolocation-JZYgc-2X.js} +2 -2
  109. package/dist-vue/_chunks/{PkToolRequestGeolocation-BE22qwxB.js.map → PkToolRequestGeolocation-JZYgc-2X.js.map} +1 -1
  110. package/dist-vue/_chunks/{PkToolRequestOAuthConnection-GfSalEJG.js → PkToolRequestOAuthConnection-Bwj84qHq.js} +11 -10
  111. package/dist-vue/_chunks/PkToolRequestOAuthConnection-Bwj84qHq.js.map +1 -0
  112. package/dist-vue/_chunks/{PkToolShowArtifact-z1qTnFkA.js → PkToolShowArtifact-BIvl5I2I.js} +5 -5
  113. package/dist-vue/_chunks/PkToolShowArtifact-BIvl5I2I.js.map +1 -0
  114. package/dist-vue/_chunks/{PkToolShowCalendarEvent-Dv_rss26.js → PkToolShowCalendarEvent-ve1I0xaV.js} +7 -6
  115. package/dist-vue/_chunks/PkToolShowCalendarEvent-ve1I0xaV.js.map +1 -0
  116. package/dist-vue/_chunks/{PkToolShowComparison-DQs3E6-k.js → PkToolShowComparison-c2e239T4.js} +3 -2
  117. package/dist-vue/_chunks/PkToolShowComparison-c2e239T4.js.map +1 -0
  118. package/dist-vue/_chunks/{PkToolShowContactForm-Y0lrHXhr.js → PkToolShowContactForm-CddxrLBZ.js} +13 -12
  119. package/dist-vue/_chunks/PkToolShowContactForm-CddxrLBZ.js.map +1 -0
  120. package/dist-vue/_chunks/{PkToolShowDiagram-7WxDObZ6.js → PkToolShowDiagram-DdR4x6pP.js} +10 -9
  121. package/dist-vue/_chunks/PkToolShowDiagram-DdR4x6pP.js.map +1 -0
  122. package/dist-vue/_chunks/{PkToolShowEmail-C591LR5N.js → PkToolShowEmail-CUgZN0J5.js} +8 -7
  123. package/dist-vue/_chunks/PkToolShowEmail-CUgZN0J5.js.map +1 -0
  124. package/dist-vue/_chunks/{PkToolShowForm-CZFWZub7.js → PkToolShowForm-DiXcYws_.js} +14 -13
  125. package/dist-vue/_chunks/PkToolShowForm-DiXcYws_.js.map +1 -0
  126. package/dist-vue/_chunks/{PkToolShowImageGallery-CkfXP_lD.js → PkToolShowImageGallery-COrJEjSv.js} +2 -2
  127. package/dist-vue/_chunks/{PkToolShowImageGallery-CkfXP_lD.js.map → PkToolShowImageGallery-COrJEjSv.js.map} +1 -1
  128. package/dist-vue/_chunks/{PkToolShowLocation-Dyz6h_0n.js → PkToolShowLocation-CHi_cONJ.js} +13 -12
  129. package/dist-vue/_chunks/PkToolShowLocation-CHi_cONJ.js.map +1 -0
  130. package/dist-vue/_chunks/{PkToolShowMessage-CbXERPHI.js → PkToolShowMessage-ATTN5Hac.js} +8 -7
  131. package/dist-vue/_chunks/PkToolShowMessage-ATTN5Hac.js.map +1 -0
  132. package/dist-vue/_chunks/{PkToolShowProductList-De-PtmD-.js → PkToolShowProductList-BIvJlpMT.js} +2 -2
  133. package/dist-vue/_chunks/{PkToolShowProductList-De-PtmD-.js.map → PkToolShowProductList-BIvJlpMT.js.map} +1 -1
  134. package/dist-vue/_chunks/{PkToolShowQrCode-DEAvfLFu.js → PkToolShowQrCode-D_5VUtEB.js} +3 -2
  135. package/dist-vue/_chunks/PkToolShowQrCode-D_5VUtEB.js.map +1 -0
  136. package/dist-vue/_chunks/{PkToolShowSources-CSN7S0zo.js → PkToolShowSources-CC-0Oh4K.js} +57 -56
  137. package/dist-vue/_chunks/PkToolShowSources-CC-0Oh4K.js.map +1 -0
  138. package/dist-vue/_chunks/{PkToolShowSuggestedReply-DjutyiEi.js → PkToolShowSuggestedReply-I6FBos-F.js} +2 -2
  139. package/dist-vue/_chunks/{PkToolShowSuggestedReply-DjutyiEi.js.map → PkToolShowSuggestedReply-I6FBos-F.js.map} +1 -1
  140. package/dist-vue/_chunks/{PkToolShowVideo-B_Q93E2y.js → PkToolShowVideo-UUNkUlrg.js} +2 -2
  141. package/dist-vue/_chunks/{PkToolShowVideo-B_Q93E2y.js.map → PkToolShowVideo-UUNkUlrg.js.map} +1 -1
  142. package/dist-vue/_chunks/{PkToolShowWebPages-D3CdjJUc.js → PkToolShowWebPages-CLYx_PgL.js} +2 -2
  143. package/dist-vue/_chunks/{PkToolShowWebPages-D3CdjJUc.js.map → PkToolShowWebPages-CLYx_PgL.js.map} +1 -1
  144. package/dist-vue/_chunks/VvButtonLocalized-BuzLsXp3.js +20 -0
  145. package/dist-vue/_chunks/VvButtonLocalized-BuzLsXp3.js.map +1 -0
  146. package/dist-vue/_chunks/{createChatbotApiClient-DSLxswr4.js → createChatbotApiClient-BdmGCAQR.js} +17 -17
  147. package/dist-vue/_chunks/{createChatbotApiClient-DSLxswr4.js.map → createChatbotApiClient-BdmGCAQR.js.map} +1 -1
  148. package/dist-vue/_chunks/{useChatbotStore-rtl-oKqU.js → useChatbotStore-BAv5K91p.js} +3 -3
  149. package/dist-vue/_chunks/{useChatbotStore-rtl-oKqU.js.map → useChatbotStore-BAv5K91p.js.map} +1 -1
  150. package/dist-vue/_chunks/{utils-CwIMEuAv.js → utils-BqPJ6DJT.js} +142 -78
  151. package/dist-vue/_chunks/utils-BqPJ6DJT.js.map +1 -0
  152. package/dist-vue/api.js +1 -1
  153. package/dist-vue/composables.js +276 -24
  154. package/dist-vue/composables.js.map +1 -1
  155. package/dist-vue/index.js +4214 -4186
  156. package/dist-vue/index.js.map +1 -1
  157. package/dist-vue/locales.js +42 -6
  158. package/dist-vue/packages/components/src/PkEditorMarkdown.d.ts +3 -2
  159. package/dist-vue/packages/components/src/VvButtonLocalized.d.ts +11 -0
  160. package/dist-vue/packages/components/src/chat/index.d.ts +1 -0
  161. package/dist-vue/packages/components/src/chat/utils.d.ts +30 -0
  162. package/dist-vue/packages/components/src/index.d.ts +1 -0
  163. package/package.json +1 -1
  164. package/dist/_chunks/Agent-D8YrsP52.js.map +0 -1
  165. package/dist/_chunks/PkToolRequestOAuthConnection-BWxR1hV4.js.map +0 -1
  166. package/dist/_chunks/PkToolShowArtifact-CfJLe8vD.js.map +0 -1
  167. package/dist/_chunks/PkToolShowCalendarEvent-Bp_yv8S7.js.map +0 -1
  168. package/dist/_chunks/PkToolShowComparison-Bvd4f4tJ.js.map +0 -1
  169. package/dist/_chunks/PkToolShowContactForm--9XOVqNB.js.map +0 -1
  170. package/dist/_chunks/PkToolShowDiagram-C-pNbC9n.js.map +0 -1
  171. package/dist/_chunks/PkToolShowEmail-BKel_O29.js.map +0 -1
  172. package/dist/_chunks/PkToolShowForm-CGAc1O6K.js.map +0 -1
  173. package/dist/_chunks/PkToolShowLocation-78C7jFiV.js.map +0 -1
  174. package/dist/_chunks/PkToolShowMessage-BScy-w4J.js.map +0 -1
  175. package/dist/_chunks/PkToolShowQrCode-B70jPHDw.js.map +0 -1
  176. package/dist/_chunks/PkToolShowSources-BJ-XFrLD.js.map +0 -1
  177. package/dist/_chunks/text-DbSEK8si.js +0 -6
  178. package/dist/_chunks/text-DbSEK8si.js.map +0 -1
  179. package/dist-vue/_chunks/Agent-dGF8mkG9.js.map +0 -1
  180. package/dist-vue/_chunks/PkChatbot-536vsOfp.js.map +0 -1
  181. package/dist-vue/_chunks/PkChatbotAuth-BMLLTSwK.js.map +0 -1
  182. package/dist-vue/_chunks/PkChatbotError-CRGbK09-.js.map +0 -1
  183. package/dist-vue/_chunks/PkChatbotFeedbackForm-CMFXjoKR.js.map +0 -1
  184. package/dist-vue/_chunks/PkChatbotInput-BfZqRpQ2.js.map +0 -1
  185. package/dist-vue/_chunks/PkChatbotMessages-CnI3e9wF.js +0 -869
  186. package/dist-vue/_chunks/PkChatbotMessages-CnI3e9wF.js.map +0 -1
  187. package/dist-vue/_chunks/PkChatbotViewConversations-DHeFtAfN.js +0 -197
  188. package/dist-vue/_chunks/PkChatbotViewConversations-DHeFtAfN.js.map +0 -1
  189. package/dist-vue/_chunks/PkChatbotViewFiles-CA20TBFY.js.map +0 -1
  190. package/dist-vue/_chunks/PkChatbotViewProfile-CyzRxE3D.js.map +0 -1
  191. package/dist-vue/_chunks/PkChatbotWakeupBar-jBti21FQ.js.map +0 -1
  192. package/dist-vue/_chunks/PkSvgViewer-Ts3gQ1hB.js.map +0 -1
  193. package/dist-vue/_chunks/PkToolRequestOAuthConnection-GfSalEJG.js.map +0 -1
  194. package/dist-vue/_chunks/PkToolShowArtifact-z1qTnFkA.js.map +0 -1
  195. package/dist-vue/_chunks/PkToolShowCalendarEvent-Dv_rss26.js.map +0 -1
  196. package/dist-vue/_chunks/PkToolShowComparison-DQs3E6-k.js.map +0 -1
  197. package/dist-vue/_chunks/PkToolShowContactForm-Y0lrHXhr.js.map +0 -1
  198. package/dist-vue/_chunks/PkToolShowDiagram-7WxDObZ6.js.map +0 -1
  199. package/dist-vue/_chunks/PkToolShowEmail-C591LR5N.js.map +0 -1
  200. package/dist-vue/_chunks/PkToolShowForm-CZFWZub7.js.map +0 -1
  201. package/dist-vue/_chunks/PkToolShowLocation-Dyz6h_0n.js.map +0 -1
  202. package/dist-vue/_chunks/PkToolShowMessage-CbXERPHI.js.map +0 -1
  203. package/dist-vue/_chunks/PkToolShowQrCode-DEAvfLFu.js.map +0 -1
  204. package/dist-vue/_chunks/PkToolShowSources-CSN7S0zo.js.map +0 -1
  205. package/dist-vue/_chunks/utils-CwIMEuAv.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import { $ as e, C as t, Ct as n, Dt as r, L as i, O as a, St as o, T as s, Tt as c, b as l, h as u, it as d, m as f, v as p, x as m } from "./vue.runtime.esm-bundler-DKVd2gci.js";
2
2
  import { i as h } from "./dist-DxtbpUdI.js";
3
- import { a as g, d as _, r as v, t as y, u as b } from "./index.es-dTcgyeM4.js";
3
+ import { a as g, d as _, t as v, u as y } from "./index.es-dTcgyeM4.js";
4
+ import { t as b } from "./VvButtonLocalized-DV-zbH9b.js";
4
5
  import { n as x } from "./useShortUrlResolver-qFJHKHwE.js";
5
6
  //#region ../../packages/components/src/chat/PkToolShowMessage.vue?vue&type=script&setup=true&lang.ts
6
7
  a(), n(), d();
@@ -22,7 +23,7 @@ var S = { class: "border border-surface-3 rounded-xl w-full overflow-hidden bg-s
22
23
  window.open(e);
23
24
  };
24
25
  return (t, n) => {
25
- let f = y, h = v, x = _, O = b, k = g;
26
+ let f = v, h = b, x = _, O = y, k = g;
26
27
  return i(), p("div", S, [u("div", C, [
27
28
  m(f, {
28
29
  name: "ri:chat-1-line",
@@ -75,4 +76,4 @@ var S = { class: "border border-surface-3 rounded-xl w-full overflow-hidden bg-s
75
76
  //#endregion
76
77
  export { O as default };
77
78
 
78
- //# sourceMappingURL=PkToolShowMessage-BScy-w4J.js.map
79
+ //# sourceMappingURL=PkToolShowMessage-vw4XS4TR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PkToolShowMessage-vw4XS4TR.js","names":["$t","__unplugin_components_0","__unplugin_components_1","__unplugin_components_2","__unplugin_components_3","__unplugin_components_4","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_toDisplayString","_withCtx","_unref","_normalizeProps","_guardReactiveProps","_createTextVNode","_sfc_main","withCtx","defineComponent","init_shared_esm_bundler","toDisplayString","openBlock","init_runtime_core_esm_bundler","unref","guardReactiveProps","normalizeProps","createTextVNode","createBaseVNode","init_reactivity_esm_bundler","computed","createElementBlock","createVNode","useClipboard","Qi","ru","Ae","ra","VvButtonLocalized","useShortUrlResolver","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","PkToolShowMessage_default","props","__props","toolPart","body","resolveText","openInWhatsApp","url","openInTelegram","openInSms","_component_VvIcon","_component_VvButton","_component_VvDropdownAction","_component_VvDropdown","_component_VvButtonGroup","_ctx","copied","_cache","copy"],"sources":["../../../../packages/components/src/chat/PkToolShowMessage.vue","../../../../packages/components/src/chat/PkToolShowMessage.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import { useShortUrlResolver } from 'composables'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n body: string\n }\n }\n return part\n })\n\n // Messages leave the app (WhatsApp/Telegram/SMS/clipboard), so expand short\n // urls to their real target rather than keeping the fragile `/api/r/` link.\n const { resolveText } = useShortUrlResolver()\n const body = resolveText(() => toolPart.value.input?.body)\n\n const openInWhatsApp = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://wa.me/?text=${encodeURIComponent(body.value)}`\n window.open(url, '_blank')\n }\n\n const openInTelegram = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://t.me/share/url?text=${encodeURIComponent(body.value)}`\n window.open(url, '_blank')\n }\n\n const openInSms = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `sms:?body=${encodeURIComponent(body.value)}`\n window.open(url)\n }\n</script>\n\n<template>\n <div\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden bg-surface\">\n <div\n class=\"px-sm py-6 bg-surface-1 min-h-40 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:chat-1-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.message') }}\n </strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(body)\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n strategy: 'fixed',\n }\">\n <VvButton\n icon=\"ri:send-plane-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.send')\" />\n <template #items>\n <VvDropdownAction @click=\"openInWhatsApp\">\n <VvIcon name=\"ri:whatsapp-line\" />\n {{ $t('action.openInWhatsApp') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInTelegram\">\n <VvIcon name=\"ri:telegram-line\" />\n {{ $t('action.openInTelegram') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInSms\">\n <VvIcon name=\"ri:message-2-line\" />\n {{ $t('action.openInSms') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm\">\n <div class=\"text-12 text-word-4 mb-4\">\n {{ $t('label.body') }}\n </div>\n <pre class=\"text-word-2 whitespace-pre-wrap break-words\">{{\n body\n }}</pre>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import { useShortUrlResolver } from 'composables'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n body: string\n }\n }\n return part\n })\n\n // Messages leave the app (WhatsApp/Telegram/SMS/clipboard), so expand short\n // urls to their real target rather than keeping the fragile `/api/r/` link.\n const { resolveText } = useShortUrlResolver()\n const body = resolveText(() => toolPart.value.input?.body)\n\n const openInWhatsApp = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://wa.me/?text=${encodeURIComponent(body.value)}`\n window.open(url, '_blank')\n }\n\n const openInTelegram = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://t.me/share/url?text=${encodeURIComponent(body.value)}`\n window.open(url, '_blank')\n }\n\n const openInSms = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `sms:?body=${encodeURIComponent(body.value)}`\n window.open(url)\n }\n</script>\n\n<template>\n <div\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden bg-surface\">\n <div\n class=\"px-sm py-6 bg-surface-1 min-h-40 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:chat-1-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.message') }}\n </strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(body)\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n strategy: 'fixed',\n }\">\n <VvButton\n icon=\"ri:send-plane-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.send')\" />\n <template #items>\n <VvDropdownAction @click=\"openInWhatsApp\">\n <VvIcon name=\"ri:whatsapp-line\" />\n {{ $t('action.openInWhatsApp') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInTelegram\">\n <VvIcon name=\"ri:telegram-line\" />\n {{ $t('action.openInTelegram') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInSms\">\n <VvIcon name=\"ri:message-2-line\" />\n {{ $t('action.openInSms') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm\">\n <div class=\"text-12 text-word-4 mb-4\">\n {{ $t('label.body') }}\n </div>\n <pre class=\"text-word-2 whitespace-pre-wrap break-words\">{{\n body\n }}</pre>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;EAKI,IAAM8C,IAAQC,GAIR,EAAE,SAAM,cAAWf,EAAa,GAEhCgB,IAAWnB,QACAiB,EAAM,IAMtB,GAIK,EAAE,mBAAgBR,EAAoB,GACtCW,IAAOC,QAAkBF,EAAS,MAAM,OAAO,IAAI,GAEnDG,UAAuB;GACzB,IAAI,CAACH,EAAS,MAAM,OAChB;GAEJ,IAAMI,IAAM,uBAAuB,mBAAmBH,EAAK,KAAK;GAChE,OAAO,KAAKG,GAAK,QAAQ;EAC7B,GAEMC,UAAuB;GACzB,IAAI,CAACL,EAAS,MAAM,OAChB;GAEJ,IAAMI,IAAM,+BAA+B,mBAAmBH,EAAK,KAAK;GACxE,OAAO,KAAKG,GAAK,QAAQ;EAC7B,GAEME,UAAkB;GACpB,IAAI,CAACN,EAAS,MAAM,OAChB;GAEJ,IAAMI,IAAM,aAAa,mBAAmBH,EAAK,KAAK;GACtD,OAAO,KAAKG,CAAG;EACnB;;;GAIA,OAAA9C,EAAA,GAAAC,EAmDM,OAnDNgC,GAmDM,CAjDF/B,EAwCM,OAxCNgC,GAwCM;IAtCF/B,EAAgD8C,GAAA;KAAxC,MAAK;KAAiB,OAAM;;IACpC/C,EAES,UAFTiC,GAES/B,EADFV,EAAAA,GAAE,eAAA,CAAA,GAAA,CAAA;IAETS,EAiCgBkD,GAAA;KAjCD,WAAU;KAAU,OAAM;;KACrC,SAAAhD,QAI0B,CAJ1BF,EAI0B+C,GAAA;MAHtB,WAAU;MACT,MAAM5C,EAAAiD,CAAA,IAAM,kBAAA;MACZ,OAAOjD,EAAAiD,CAAA,IAAS7D,EAAAA,GAAE,eAAA,IAAoBA,EAAAA,GAAE,aAAA;MACxC,SAAK,AAAA8D,EAAA,QAAA,MAAElD,EAAAmD,CAAA,CAAI,CAACnD,EAAAqC,CAAA,CAAI;KACrBxC,GAAAA,MAAAA,GAAAA,CAAAA,QAAAA,OAAAA,CAAAA,GAAAA,EA0BaiD,GAAA7C,EAAAC,EAzBD;;;;;;KAMP,CAAA,CAAA,GAAA;MAKU,OAAKH,QAIO;OAHnBF,EAGmBgD,GAAA,EAHA,SAAON,EAAc,GAAA;QACpC,SAAAxC,QAAkC,CAAlCF,EAAkC8C,GAAA,EAA1B,MAAK,mBAAkB,CAAA,GAAGxC,EAAA,MAClCL,EAAGV,EAAAA,GAAE,uBAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;;OAETS,EAGmBgD,GAAA,EAHA,SAAOJ,EAAc,GAAA;QACpC,SAAA1C,QAAkC,CAAlCF,EAAkC8C,GAAA,EAA1B,MAAK,mBAAkB,CAAA,GAAGxC,EAAA,MAClCL,EAAGV,EAAAA,GAAE,uBAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;;OAETS,EAGmBgD,GAAA,EAHA,SAAOH,EAAS,GAAA;QAC/B,SAAA3C,QAAmC,CAAnCF,EAAmC8C,GAAA,EAA3B,MAAK,oBAAmB,CAAA,GAAGxC,EAAA,MACnCL,EAAGV,EAAAA,GAAE,kBAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;;;MAfb,SAAAW,QAGiC,CAHjCF,EAGiC+C,GAAA;OAF7B,MAAK;OACL,WAAU;OACT,OAAOxD,EAAAA,GAAE,aAAA;;;;;;GAkB1BQ,CAAAA,GAAAA,EAOM,OAPNkC,GAOM,CANFlC,EAEM,OAFNmC,GAEMjC,EADCV,EAAAA,GAAE,YAAA,CAAA,GAAA,CAAA,GAETQ,EAEQ,OAFRoC,GAEQlC,EADJE,EAAAqC,CAAA,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { $ as e, C as t, Ct as n, Dt as r, H as i, L as a, O as o, St as s, _ as c, d as l, g as u, h as d, it as f, m as p, v as m, wt as h, x as g, z as _ } from "./vue.runtime.esm-bundler-DKVd2gci.js";
2
2
  import { t as v } from "./index.es-dTcgyeM4.js";
3
- import { n as y } from "./chatImagePolicy-DXkhb-N_.js";
3
+ import { n as y } from "./chatImagePolicy-CDNkMKdT.js";
4
4
  import { t as b } from "./PkHeldImage-eNPFmmdh.js";
5
5
  import { t as x } from "./PkLazyImg-DHPPSq3N.js";
6
6
  import { t as S } from "./PkUrl-DlAc3R_j.js";
@@ -69,4 +69,4 @@ var C = {
69
69
  //#endregion
70
70
  export { j as default };
71
71
 
72
- //# sourceMappingURL=PkToolShowProductList-BjWKnbyD.js.map
72
+ //# sourceMappingURL=PkToolShowProductList-ByeSoIwq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkToolShowProductList-BjWKnbyD.js","names":["__unplugin_components_0","_openBlock","_createElementBlock","_Fragment","_renderList","_normalizeClass","_createBlock","_resolveDynamicComponent","_withCtx","_unref","PkHeldImage","PkLazyImg","_createCommentVNode","_createElementVNode","_toDisplayString","_createVNode","PkUrl","_sfc_main","withCtx","defineComponent","init_shared_esm_bundler","toDisplayString","resolveDynamicComponent","openBlock","init_runtime_core_esm_bundler","unref","createCommentVNode","Fragment","createBlock","createBaseVNode","init_reactivity_esm_bundler","computed","createElementBlock","normalizeClass","createVNode","renderList","Ae","useChatImageGate","PkHeldImage_default","PkLazyImg_default","PkUrl_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","PkToolShowProductList_default","props","__props","toolPart","imageGate","_component_VvIcon","index","product"],"sources":["../../../../packages/components/src/chat/PkToolShowProductList.vue","../../../../packages/components/src/chat/PkToolShowProductList.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkLazyImg from '../PkLazyImg.vue'\n import { useChatImageGate } from './chatImagePolicy'\n import PkHeldImage from './PkHeldImage.vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n // The model writes these urls: one from a host the agent does not list\n // waits for a click (chatImagePolicy.ts).\n const imageGate = useChatImageGate()\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"vv-item-group vv-item-group--framed w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"vv-item\"\n :class=\"{ 'vv-item--plain': !product.url }\">\n <!-- A product without a link answers no click: no hover, no hand -->\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"vv-item__entry\">\n <!-- Merchant images rot over time: a dead one degrades to an icon\n so the row keeps its thumbnail slot -->\n <PkHeldImage\n v-if=\"product.image && !imageGate.canLoad(product.image)\"\n :host=\"imageGate.hostOf(product.image)\"\n class=\"w-48 h-48 rounded-lg shrink-0 border border-surface-3 bg-surface\"\n @release=\"imageGate.release(product.image)\" />\n <PkLazyImg\n v-else-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n fallback-icon=\"ri:image-off-line\"\n class=\"w-48 h-48 object-contain rounded-lg shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <!-- Free text from the merchant: it was colour-coded by\n substring, which only ever matched English and\n Italian. It reads as the note it is. -->\n <span\n v-if=\"product.availability\"\n class=\"text-10 text-word-3\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkLazyImg from '../PkLazyImg.vue'\n import { useChatImageGate } from './chatImagePolicy'\n import PkHeldImage from './PkHeldImage.vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n // The model writes these urls: one from a host the agent does not list\n // waits for a click (chatImagePolicy.ts).\n const imageGate = useChatImageGate()\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"vv-item-group vv-item-group--framed w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"vv-item\"\n :class=\"{ 'vv-item--plain': !product.url }\">\n <!-- A product without a link answers no click: no hover, no hand -->\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"vv-item__entry\">\n <!-- Merchant images rot over time: a dead one degrades to an icon\n so the row keeps its thumbnail slot -->\n <PkHeldImage\n v-if=\"product.image && !imageGate.canLoad(product.image)\"\n :host=\"imageGate.hostOf(product.image)\"\n class=\"w-48 h-48 rounded-lg shrink-0 border border-surface-3 bg-surface\"\n @release=\"imageGate.release(product.image)\" />\n <PkLazyImg\n v-else-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n fallback-icon=\"ri:image-off-line\"\n class=\"w-48 h-48 object-contain rounded-lg shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <!-- Free text from the merchant: it was colour-coded by\n substring, which only ever matched English and\n Italian. It reads as the note it is. -->\n <span\n v-if=\"product.availability\"\n class=\"text-10 text-word-3\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAOI,IAAMkD,IAAQC,GAIRC,IAAWrB,QACAmB,EAAM,IAatB,GAIKG,IAAYhB,EAAiB;;;GAKzB,OAAAe,EAAA,OAAU,OAAO,UAAU,UADrCnD,EAAA,GAAAC,EA6DK,MA7DLuC,GA6DK,EA1DDxC,EAAA,EAAA,GAAAC,EAyDKC,GAAA,MAAAC,EAxD0BgD,EAAA,MAAS,MAAM,WAAlC,GAAS,OADrBnD,EAAA,GAAAC,EAyDK,MAAA;IAvDA,KAAKqD;IACN,OAAKlD,EAAA,CAAC,WAAS,EAAA,kBAAA,CACcmD,EAAQ,IAAG,CAAA,CAAA;GAExCvD,GAAAA,EAAAA,EAAA,GAAAK,EAkDYC,EAjDHiD,EAAQ,MAAG,MAAA,KAAA,GAAA;IACf,MAAMA,EAAQ;IACd,QAAQA,EAAQ,MAAG,WAAc,KAAA;IACjC,KAAKA,EAAQ,MAAG,wBAA2B,KAAA;IAC5C,OAAM;;IAGN,SAAAhD,QAIkD,CAHxCgD,EAAQ,SAAK,CAAK/C,EAAA4C,CAAA,CAAS,CAAC,QAAQG,EAAQ,KAAK,KAD3DvD,EAAA,GAAAK,EAIkDI,GAAA;;KAF7C,MAAMD,EAAA4C,CAAA,CAAS,CAAC,OAAOG,EAAQ,KAAK;KACrC,OAAM;KACL,YAAO,MAAE/C,EAAA4C,CAAA,CAAS,CAAC,QAAQG,EAAQ,KAAK;IAE9B,GAAA,MAAA,GAAA,CAAA,QAAA,WAAA,CAAA,KAAAA,EAAQ,SADvBvD,EAAA,GAAAK,EAK8FK,GAAA;;KAHzF,KAAK6C,EAAQ;KACb,KAAKA,EAAQ;KACd,iBAAc;KACd,OAAM;IACV3C,GAAAA,MAAAA,GAAAA,CAAAA,OAAAA,KAAAA,CAAAA,KAAAA,EAAAA,IAAAA,EAAAA,GAAAA,EA8BM,OA9BN6B,GA8BM;KA7BF7B,EAES,UAFT8B,GAES7B,EADF0C,EAAQ,IAAI,GAAA,CAAA;KAGTA,EAAQ,OADlBvD,EAAA,GAAAC,EAKO,QALP0C,GAKO,CAFH7B,EAAkDuC,GAAA;MAA1C,MAAK;MAAU,OAAM;KAC7BvC,CAAAA,GAAAA,EAA4BC,GAAA,EAApB,KAAKwC,EAAQ,IAAA,GAAA,MAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA;KAEzBb,EAcM,OAdNgC,GAcM,CAZQW,EAAQ,SADlBvD,EAAA,GAAAC,EAIO,QAJP4C,GAIOhC,EADA0C,EAAQ,KAAK,GAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA,GAMV8B,EAAQ,gBADlBvD,EAAA,GAAAC,EAIO,QAJP6C,GAIOjC,EADA0C,EAAQ,YAAY,GAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA,CAAA,CAAA;KAIrB8B,EAAQ,eADlBvD,EAAA,GAAAC,EAII,KAJJ8C,GAIIlC,EADG0C,EAAQ,WAAW,GAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA"}
1
+ {"version":3,"file":"PkToolShowProductList-ByeSoIwq.js","names":["__unplugin_components_0","_openBlock","_createElementBlock","_Fragment","_renderList","_normalizeClass","_createBlock","_resolveDynamicComponent","_withCtx","_unref","PkHeldImage","PkLazyImg","_createCommentVNode","_createElementVNode","_toDisplayString","_createVNode","PkUrl","_sfc_main","withCtx","defineComponent","init_shared_esm_bundler","toDisplayString","resolveDynamicComponent","openBlock","init_runtime_core_esm_bundler","unref","createCommentVNode","Fragment","createBlock","createBaseVNode","init_reactivity_esm_bundler","computed","createElementBlock","normalizeClass","createVNode","renderList","Ae","useChatImageGate","PkHeldImage_default","PkLazyImg_default","PkUrl_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","PkToolShowProductList_default","props","__props","toolPart","imageGate","_component_VvIcon","index","product"],"sources":["../../../../packages/components/src/chat/PkToolShowProductList.vue","../../../../packages/components/src/chat/PkToolShowProductList.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkLazyImg from '../PkLazyImg.vue'\n import { useChatImageGate } from './chatImagePolicy'\n import PkHeldImage from './PkHeldImage.vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n // The model writes these urls: one from a host the agent does not list\n // waits for a click (chatImagePolicy.ts).\n const imageGate = useChatImageGate()\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"vv-item-group vv-item-group--framed w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"vv-item\"\n :class=\"{ 'vv-item--plain': !product.url }\">\n <!-- A product without a link answers no click: no hover, no hand -->\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"vv-item__entry\">\n <!-- Merchant images rot over time: a dead one degrades to an icon\n so the row keeps its thumbnail slot -->\n <PkHeldImage\n v-if=\"product.image && !imageGate.canLoad(product.image)\"\n :host=\"imageGate.hostOf(product.image)\"\n class=\"w-48 h-48 rounded-lg shrink-0 border border-surface-3 bg-surface\"\n @release=\"imageGate.release(product.image)\" />\n <PkLazyImg\n v-else-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n fallback-icon=\"ri:image-off-line\"\n class=\"w-48 h-48 object-contain rounded-lg shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <!-- Free text from the merchant: it was colour-coded by\n substring, which only ever matched English and\n Italian. It reads as the note it is. -->\n <span\n v-if=\"product.availability\"\n class=\"text-10 text-word-3\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkLazyImg from '../PkLazyImg.vue'\n import { useChatImageGate } from './chatImagePolicy'\n import PkHeldImage from './PkHeldImage.vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n // The model writes these urls: one from a host the agent does not list\n // waits for a click (chatImagePolicy.ts).\n const imageGate = useChatImageGate()\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"vv-item-group vv-item-group--framed w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"vv-item\"\n :class=\"{ 'vv-item--plain': !product.url }\">\n <!-- A product without a link answers no click: no hover, no hand -->\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"vv-item__entry\">\n <!-- Merchant images rot over time: a dead one degrades to an icon\n so the row keeps its thumbnail slot -->\n <PkHeldImage\n v-if=\"product.image && !imageGate.canLoad(product.image)\"\n :host=\"imageGate.hostOf(product.image)\"\n class=\"w-48 h-48 rounded-lg shrink-0 border border-surface-3 bg-surface\"\n @release=\"imageGate.release(product.image)\" />\n <PkLazyImg\n v-else-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n fallback-icon=\"ri:image-off-line\"\n class=\"w-48 h-48 object-contain rounded-lg shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <!-- Free text from the merchant: it was colour-coded by\n substring, which only ever matched English and\n Italian. It reads as the note it is. -->\n <span\n v-if=\"product.availability\"\n class=\"text-10 text-word-3\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAOI,IAAMkD,IAAQC,GAIRC,IAAWrB,QACAmB,EAAM,IAatB,GAIKG,IAAYhB,EAAiB;;;GAKzB,OAAAe,EAAA,OAAU,OAAO,UAAU,UADrCnD,EAAA,GAAAC,EA6DK,MA7DLuC,GA6DK,EA1DDxC,EAAA,EAAA,GAAAC,EAyDKC,GAAA,MAAAC,EAxD0BgD,EAAA,MAAS,MAAM,WAAlC,GAAS,OADrBnD,EAAA,GAAAC,EAyDK,MAAA;IAvDA,KAAKqD;IACN,OAAKlD,EAAA,CAAC,WAAS,EAAA,kBAAA,CACcmD,EAAQ,IAAG,CAAA,CAAA;GAExCvD,GAAAA,EAAAA,EAAA,GAAAK,EAkDYC,EAjDHiD,EAAQ,MAAG,MAAA,KAAA,GAAA;IACf,MAAMA,EAAQ;IACd,QAAQA,EAAQ,MAAG,WAAc,KAAA;IACjC,KAAKA,EAAQ,MAAG,wBAA2B,KAAA;IAC5C,OAAM;;IAGN,SAAAhD,QAIkD,CAHxCgD,EAAQ,SAAK,CAAK/C,EAAA4C,CAAA,CAAS,CAAC,QAAQG,EAAQ,KAAK,KAD3DvD,EAAA,GAAAK,EAIkDI,GAAA;;KAF7C,MAAMD,EAAA4C,CAAA,CAAS,CAAC,OAAOG,EAAQ,KAAK;KACrC,OAAM;KACL,YAAO,MAAE/C,EAAA4C,CAAA,CAAS,CAAC,QAAQG,EAAQ,KAAK;IAE9B,GAAA,MAAA,GAAA,CAAA,QAAA,WAAA,CAAA,KAAAA,EAAQ,SADvBvD,EAAA,GAAAK,EAK8FK,GAAA;;KAHzF,KAAK6C,EAAQ;KACb,KAAKA,EAAQ;KACd,iBAAc;KACd,OAAM;IACV3C,GAAAA,MAAAA,GAAAA,CAAAA,OAAAA,KAAAA,CAAAA,KAAAA,EAAAA,IAAAA,EAAAA,GAAAA,EA8BM,OA9BN6B,GA8BM;KA7BF7B,EAES,UAFT8B,GAES7B,EADF0C,EAAQ,IAAI,GAAA,CAAA;KAGTA,EAAQ,OADlBvD,EAAA,GAAAC,EAKO,QALP0C,GAKO,CAFH7B,EAAkDuC,GAAA;MAA1C,MAAK;MAAU,OAAM;KAC7BvC,CAAAA,GAAAA,EAA4BC,GAAA,EAApB,KAAKwC,EAAQ,IAAA,GAAA,MAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA;KAEzBb,EAcM,OAdNgC,GAcM,CAZQW,EAAQ,SADlBvD,EAAA,GAAAC,EAIO,QAJP4C,GAIOhC,EADA0C,EAAQ,KAAK,GAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA,GAMV8B,EAAQ,gBADlBvD,EAAA,GAAAC,EAIO,QAJP6C,GAIOjC,EADA0C,EAAQ,YAAY,GAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA,CAAA,CAAA;KAIrB8B,EAAQ,eADlBvD,EAAA,GAAAC,EAII,KAJJ8C,GAIIlC,EADG0C,EAAQ,WAAW,GAAA,CAAA,KAAA9B,EAAA,IAAA,EAAA"}
@@ -1,6 +1,7 @@
1
1
  import { $ as e, C as t, Ct as n, Dt as r, F as i, L as a, O as o, St as s, _ as c, h as l, it as u, m as d, mt as f, v as p, x as m } from "./vue.runtime.esm-bundler-DKVd2gci.js";
2
2
  import { i as h } from "./dist-DxtbpUdI.js";
3
- import { a as g, r as _, t as v } from "./index.es-dTcgyeM4.js";
3
+ import { a as g, t as _ } from "./index.es-dTcgyeM4.js";
4
+ import { t as v } from "./VvButtonLocalized-DV-zbH9b.js";
4
5
  //#region ../../packages/components/src/chat/PkToolShowQrCode.vue?vue&type=script&setup=true&lang.ts
5
6
  o(), n(), u();
6
7
  var y = {
@@ -33,7 +34,7 @@ var y = {
33
34
  }, o.src = r;
34
35
  };
35
36
  return (t, n) => {
36
- let i = v, d = _, f = g;
37
+ let i = _, d = v, f = g;
37
38
  return T.value?.input ? (a(), p("div", y, [l("div", b, [
38
39
  m(i, {
39
40
  name: "ri:qr-code-line",
@@ -69,4 +70,4 @@ var y = {
69
70
  //#endregion
70
71
  export { T as default };
71
72
 
72
- //# sourceMappingURL=PkToolShowQrCode-B70jPHDw.js.map
73
+ //# sourceMappingURL=PkToolShowQrCode-BhcAUXSZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PkToolShowQrCode-BhcAUXSZ.js","names":["$t","__unplugin_components_0","__unplugin_components_1","__unplugin_components_2","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_toDisplayString","_withCtx","_unref","_createCommentVNode","_sfc_main","withCtx","defineComponent","init_shared_esm_bundler","toDisplayString","onMounted","openBlock","init_runtime_core_esm_bundler","unref","createCommentVNode","createBaseVNode","init_reactivity_esm_bundler","computed","ref","createElementBlock","createVNode","useClipboard","Qi","Ae","VvButtonLocalized","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","PkToolShowQrCode_default","props","__props","toolPart","svgContent","qrContainerRef","content","QRCode","downloadQr","svgEl","svgData","svgBlob","svgUrl","canvas","ctx","img","a","_component_VvIcon","_component_VvButton","_component_VvButtonGroup","_ctx","copied","_cache","copy"],"sources":["../../../../packages/components/src/chat/PkToolShowQrCode.vue","../../../../packages/components/src/chat/PkToolShowQrCode.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n content: string\n label?: string\n }\n }\n return part\n })\n\n const svgContent = ref('')\n const qrContainerRef = ref<HTMLElement>()\n\n onMounted(async () => {\n const content = toolPart.value.input?.content\n if (!content) {\n return\n }\n const { default: QRCode } = await import('qrcode')\n svgContent.value = await QRCode.toString(content, { type: 'svg' })\n })\n\n const downloadQr = async () => {\n const svgEl = qrContainerRef.value?.querySelector('svg')\n if (!svgEl) {\n return\n }\n const svgData = new XMLSerializer().serializeToString(svgEl)\n const svgBlob = new Blob([svgData], {\n type: 'image/svg+xml;charset=utf-8',\n })\n const svgUrl = URL.createObjectURL(svgBlob)\n\n const canvas = document.createElement('canvas')\n canvas.width = 512\n canvas.height = 512\n const ctx = canvas.getContext('2d')\n const img = new Image()\n img.onload = () => {\n ctx?.drawImage(img, 0, 0, 512, 512)\n URL.revokeObjectURL(svgUrl)\n const a = document.createElement('a')\n a.href = canvas.toDataURL('image/png')\n a.download = 'qrcode.png'\n a.click()\n }\n img.src = svgUrl\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden bg-surface\">\n <div\n class=\"px-sm py-6 bg-surface-1 min-h-40 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:qr-code-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.qrCode') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.content ?? '')\" />\n <VvButton\n modifiers=\"action-quiet-small\"\n icon=\"ri:download-line\"\n :label=\"$t('action.download')\"\n @click=\"downloadQr\" />\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex flex-col items-center\">\n <div ref=\"qrContainerRef\" class=\"w-144 h-144\" v-html=\"svgContent\" />\n <p\n v-if=\"toolPart.input.label\"\n class=\"text-12 text-word-3 text-center\">\n {{ toolPart.input.label }}\n </p>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n content: string\n label?: string\n }\n }\n return part\n })\n\n const svgContent = ref('')\n const qrContainerRef = ref<HTMLElement>()\n\n onMounted(async () => {\n const content = toolPart.value.input?.content\n if (!content) {\n return\n }\n const { default: QRCode } = await import('qrcode')\n svgContent.value = await QRCode.toString(content, { type: 'svg' })\n })\n\n const downloadQr = async () => {\n const svgEl = qrContainerRef.value?.querySelector('svg')\n if (!svgEl) {\n return\n }\n const svgData = new XMLSerializer().serializeToString(svgEl)\n const svgBlob = new Blob([svgData], {\n type: 'image/svg+xml;charset=utf-8',\n })\n const svgUrl = URL.createObjectURL(svgBlob)\n\n const canvas = document.createElement('canvas')\n canvas.width = 512\n canvas.height = 512\n const ctx = canvas.getContext('2d')\n const img = new Image()\n img.onload = () => {\n ctx?.drawImage(img, 0, 0, 512, 512)\n URL.revokeObjectURL(svgUrl)\n const a = document.createElement('a')\n a.href = canvas.toDataURL('image/png')\n a.download = 'qrcode.png'\n a.click()\n }\n img.src = svgUrl\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden bg-surface\">\n <div\n class=\"px-sm py-6 bg-surface-1 min-h-40 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:qr-code-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.qrCode') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.content ?? '')\" />\n <VvButton\n modifiers=\"action-quiet-small\"\n icon=\"ri:download-line\"\n :label=\"$t('action.download')\"\n @click=\"downloadQr\" />\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex flex-col items-center\">\n <div ref=\"qrContainerRef\" class=\"w-144 h-144\" v-html=\"svgContent\" />\n <p\n v-if=\"toolPart.input.label\"\n class=\"text-12 text-word-3 text-center\">\n {{ toolPart.input.label }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAII,IAAMuC,IAAQC,GAIR,EAAE,SAAM,cAAWZ,EAAa,GAEhCa,IAAWjB,QACAe,EAAM,IAOtB,GAEKG,IAAajB,EAAI,EAAE,GACnBkB,IAAiBlB,EAAiB;EAExC,EAAU,YAAY;GAClB,IAAMmB,IAAUH,EAAS,MAAM,OAAO;GACtC,IAAI,CAACG,GACD;GAEJ,IAAM,EAAE,SAASC,MAAW,MAAM,OAAO;GACzC,EAAW,QAAQ,MAAMA,EAAO,SAASD,GAAS,EAAE,MAAM,MAAM,CAAC;EACrE,CAAC;EAED,IAAME,IAAa,YAAY;GAC3B,IAAMC,IAAQJ,EAAe,OAAO,cAAc,KAAK;GACvD,IAAI,CAACI,GACD;GAEJ,IAAMC,IAAU,IAAI,cAAc,CAAC,CAAC,kBAAkBD,CAAK,GACrDE,IAAU,IAAI,KAAK,CAACD,CAAO,GAAG,EAChC,MAAM,8BACV,CAAC,GACKE,IAAS,IAAI,gBAAgBD,CAAO,GAEpCE,IAAS,SAAS,cAAc,QAAQ;GAE9C,AADA,EAAO,QAAQ,KACf,EAAO,SAAS;GAChB,IAAMC,IAAMD,EAAO,WAAW,IAAI,GAC5BE,IAAM,IAAI,MAAM;GAStB,AARA,EAAI,eAAe;IAEf,AADAD,GAAK,UAAUC,GAAK,GAAG,GAAG,KAAK,GAAG,GAClC,IAAI,gBAAgBH,CAAM;IAC1B,IAAMI,IAAI,SAAS,cAAc,GAAG;IAGpC,AAFA,EAAE,OAAOH,EAAO,UAAU,WAAW,GACrC,EAAE,WAAW,cACbG,EAAE,MAAM;GACZ,GACA,EAAI,MAAMJ;EACd;;;GAKU,OAAAT,EAAA,OAAU,SADpBrC,EAAA,GAAAC,EA4BM,OA5BN2B,GA4BM,CAzBF1B,EAgBM,OAhBN2B,GAgBM;IAdF1B,EAAiDgD,GAAA;KAAzC,MAAK;KAAkB,OAAM;;IACrCjD,EAA2D,UAA3D4B,GAA2D1B,EAA9BR,EAAAA,GAAE,cAAA,CAAA,GAAA,CAAA;IAC/BO,EAWgBkD,GAAA;KAXD,WAAU;KAAU,OAAM;;KACrC,SAAAhD,QAIoD,CAJpDF,EAIoDiD,GAAA;MAHhD,WAAU;MACT,MAAM9C,EAAAiD,CAAA,IAAM,kBAAA;MACZ,OAAOjD,EAAAiD,CAAA,IAAS3D,EAAAA,GAAE,eAAA,IAAoBA,EAAAA,GAAE,aAAA;MACxC,SAAK,AAAA4D,EAAA,QAAA,MAAElD,EAAAmD,CAAA,CAAI,CAACpB,EAAA,OAAU,OAAO,WAAO,EAAA;KACzClC,GAAAA,MAAAA,GAAAA,CAAAA,QAAAA,OAAAA,CAAAA,GAAAA,EAI0BiD,GAAA;MAHtB,WAAU;MACV,MAAK;MACJ,OAAOxD,EAAAA,GAAE,iBAAA;MACT,SAAO8C;;;;GAGpBxC,CAAAA,GAAAA,EAOM,OAPN6B,GAOM,CANF7B,EAAoE,OAAA;IAA3D,SAAA;IAAJ,KAAIqC;IAAiB,OAAM;IAAc,WAAQD,EAAA;GAE5C,GAAA,MAAA,GAAAN,CAAA,GAAAK,EAAA,MAAS,MAAM,SADzBrC,EAAA,GAAAC,EAII,KAJJgC,GAII7B,EADGiC,EAAA,MAAS,MAAM,KAAK,GAAA,CAAA,KAAApB,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAAA,EAAA,IAAA,EAAA"}
@@ -1,8 +1,9 @@
1
- import { $ as e, C as t, Ct as n, Dt as r, L as i, O as a, St as o, _ as s, b as c, d as l, ft as u, g as d, h as f, it as p, m, mt as h, r as g, t as _, v, wt as y, x as b, z as x } from "./vue.runtime.esm-bundler-DKVd2gci.js";
2
- import { t as S } from "./PkStreamingMarkdown-Bry3y6Ru.js";
3
- import { r as C, t as w } from "./markdown-DpoAzJSk.js";
1
+ import { $ as e, C as t, Ct as n, Dt as r, L as i, O as a, St as o, _ as s, b as c, d as l, ft as u, g as d, h as f, it as p, m, mt as ee, r as h, t as g, v as _, wt as v, x as y, z as b } from "./vue.runtime.esm-bundler-DKVd2gci.js";
2
+ import { t as x } from "./PkStreamingMarkdown-BK9O_NLx.js";
3
+ import { r as S, t as C } from "./markdown-BbaLt57-.js";
4
4
  import "./src-Dt4rhhPN.js";
5
- import { r as ee, t as T } from "./index.es-dTcgyeM4.js";
5
+ import { t as w } from "./index.es-dTcgyeM4.js";
6
+ import { t as T } from "./VvButtonLocalized-DV-zbH9b.js";
6
7
  import { t as E } from "./PkUrl-DlAc3R_j.js";
7
8
  //#region ../../packages/components/src/chat/PkChunkPreview.vue?vue&type=script&setup=true&lang.ts
8
9
  a(), p(), n();
@@ -24,18 +25,18 @@ var D = ["title"], O = {
24
25
  return Math.round(t.similarity / e * 100);
25
26
  });
26
27
  return (t, a) => {
27
- let c = T;
28
- return i(), v(l, null, [
29
- b(c, {
28
+ let c = w;
29
+ return i(), _(l, null, [
30
+ y(c, {
30
31
  name: "ri:text-snippet",
31
32
  class: "shrink-0 text-12 text-word-4"
32
33
  }),
33
34
  f("span", {
34
35
  class: "text-10 text-word-2 truncate flex-1",
35
36
  title: e.content
36
- }, r(o(w)(e.content)), 9, D),
37
- n.value == null ? s("", !0) : (i(), v("span", O, r(n.value) + "% ", 1)),
38
- b(c, {
37
+ }, r(o(C)(e.content)), 9, D),
38
+ n.value == null ? s("", !0) : (i(), _("span", O, r(n.value) + "% ", 1)),
39
+ y(c, {
39
40
  name: e.expanded ? "ri:arrow-up-s-line" : "ri:arrow-down-s-line",
40
41
  class: "text-14 text-word-4 shrink-0"
41
42
  }, null, 8, ["name"])
@@ -63,17 +64,17 @@ var A = { class: "flex flex-col gap-2 min-w-0 flex-1" }, j = { class: "font-bold
63
64
  },
64
65
  setup(e) {
65
66
  return (t, n) => {
66
- let a = T;
67
- return i(), v(l, null, [b(a, {
68
- name: o(C)(e.type),
67
+ let a = w;
68
+ return i(), _(l, null, [y(a, {
69
+ name: o(S)(e.type),
69
70
  class: "shrink-0 text-14 text-word-3"
70
71
  }, null, 8, ["name"]), f("div", A, [
71
72
  f("strong", j, r(e.name), 1),
72
- e.filename ? (i(), v("span", M, r(e.filename), 1)) : s("", !0),
73
- e.url ? (i(), v("span", N, [b(a, {
73
+ e.filename ? (i(), _("span", M, r(e.filename), 1)) : s("", !0),
74
+ e.url ? (i(), _("span", N, [y(a, {
74
75
  name: "ri:link",
75
76
  class: "shrink-0 text-10"
76
- }), b(E, {
77
+ }), y(E, {
77
78
  url: e.url,
78
79
  muted: e.mutedUrl
79
80
  }, null, 8, ["url", "muted"])])) : s("", !0)
@@ -83,7 +84,7 @@ var A = { class: "flex flex-col gap-2 min-w-0 flex-1" }, j = { class: "font-bold
83
84
  });
84
85
  //#endregion
85
86
  //#region ../../packages/components/src/chat/PkToolShowSources.vue?vue&type=script&setup=true&lang.ts
86
- a(), n(), g(), p();
87
+ a(), n(), h(), p();
87
88
  var F = {
88
89
  key: 0,
89
90
  class: "flex flex-col gap-xs w-full"
@@ -114,10 +115,10 @@ var F = {
114
115
  });
115
116
  }
116
117
  return [...e.values()];
117
- }), g = m(() => Math.max(...o.value.map((e) => e.similarity ?? 0), 0)), C = u(/* @__PURE__ */ new Set()), w = u(/* @__PURE__ */ new Set()), E = u(/* @__PURE__ */ new Map()), D = u(/* @__PURE__ */ new Set()), O = (e) => {
118
- C.has(e) ? C.delete(e) : C.add(e);
118
+ }), h = m(() => Math.max(...o.value.map((e) => e.similarity ?? 0), 0)), S = u(/* @__PURE__ */ new Set()), C = u(/* @__PURE__ */ new Set()), E = u(/* @__PURE__ */ new Map()), D = u(/* @__PURE__ */ new Set()), O = (e) => {
119
+ S.has(e) ? S.delete(e) : S.add(e);
119
120
  }, A = (e) => {
120
- w.has(e) ? w.delete(e) : w.add(e);
121
+ C.has(e) ? C.delete(e) : C.add(e);
121
122
  }, j = async (e) => {
122
123
  if (e.chunkIndex != null && n.onExpandContext) {
123
124
  D.add(e.chunkId);
@@ -133,27 +134,27 @@ var F = {
133
134
  }
134
135
  }, M = (e) => {
135
136
  E.delete(e);
136
- }, N = h(!1), $ = m(() => N.value ? p.value : p.value.slice(0, 3)), te = m(() => p.value.length > 3);
137
+ }, N = ee(!1), $ = m(() => N.value ? p.value : p.value.slice(0, 3)), te = m(() => p.value.length > 3);
137
138
  return (n, a) => {
138
- let u = T, m = ee;
139
- return o.value.length ? (i(), v("div", F, [
139
+ let u = w, m = T;
140
+ return o.value.length ? (i(), _("div", F, [
140
141
  f("div", I, [
141
- b(u, {
142
+ y(u, {
142
143
  name: "ri:article-line",
143
144
  class: "text-14"
144
145
  }),
145
146
  c(" " + r(n.$t("label.sources")) + " ", 1),
146
147
  f("span", L, " (" + r(p.value.length) + ") ", 1)
147
148
  ]),
148
- f("ul", R, [(i(!0), v(l, null, x($.value, (a) => (i(), v("li", {
149
+ f("ul", R, [(i(!0), _(l, null, b($.value, (a) => (i(), _("li", {
149
150
  key: a.document.documentId,
150
151
  class: "border border-surface-3 rounded-xl overflow-hidden"
151
152
  }, [f("div", z, [f("button", {
152
153
  type: "button",
153
154
  class: "flex items-center gap-8 p-8 flex-1 min-w-0 text-left cursor-pointer",
154
- "aria-expanded": C.has(a.document.documentId),
155
+ "aria-expanded": S.has(a.document.documentId),
155
156
  onClick: (e) => O(a.document.documentId)
156
- }, [b(P, {
157
+ }, [y(P, {
157
158
  type: a.document.documentType,
158
159
  name: a.document.documentName,
159
160
  url: a.document.sourceUrl,
@@ -165,10 +166,10 @@ var F = {
165
166
  "url",
166
167
  "filename"
167
168
  ]), f("div", V, [
168
- a.chunks.length > 1 ? (i(), v("span", H, r(a.chunks.length), 1)) : s("", !0),
169
+ a.chunks.length > 1 ? (i(), _("span", H, r(a.chunks.length), 1)) : s("", !0),
169
170
  f("span", U, r(a.document.language), 1),
170
- b(u, {
171
- name: C.has(a.document.documentId) ? "ri:arrow-up-s-line" : "ri:arrow-down-s-line",
171
+ y(u, {
172
+ name: S.has(a.document.documentId) ? "ri:arrow-up-s-line" : "ri:arrow-down-s-line",
172
173
  class: "text-16 text-word-3"
173
174
  }, null, 8, ["name"])
174
175
  ])], 8, B), a.document.sourceUrl ? (i(), d(m, {
@@ -185,78 +186,78 @@ var F = {
185
186
  "href",
186
187
  "title",
187
188
  "aria-label"
188
- ])) : s("", !0)]), C.has(a.document.documentId) ? (i(), v("div", W, [a.document.sourceDescription ? (i(), d(S, {
189
+ ])) : s("", !0)]), S.has(a.document.documentId) ? (i(), _("div", W, [a.document.sourceDescription ? (i(), d(x, {
189
190
  key: 0,
190
191
  markdown: a.document.sourceDescription,
191
192
  class: "px-8 py-4 text-10 text-word-3 bg-surface-1 border-b border-surface-3"
192
- }, null, 8, ["markdown"])) : s("", !0), (i(!0), v(l, null, x(a.chunks, (a) => (i(), v("div", {
193
+ }, null, 8, ["markdown"])) : s("", !0), (i(!0), _(l, null, b(a.chunks, (a) => (i(), _("div", {
193
194
  key: a.chunkId,
194
195
  class: "border-b border-surface-3 last:border-b-0"
195
196
  }, [f("button", {
196
197
  class: "flex items-center gap-8 px-8 py-6 w-full text-left hover:bg-surface-1 transition-colors cursor-pointer",
197
198
  onClick: (e) => A(a.chunkId)
198
- }, [b(k, {
199
+ }, [y(k, {
199
200
  content: a.content,
200
201
  similarity: a.similarity,
201
- "max-similarity": g.value,
202
- expanded: w.has(a.chunkId)
202
+ "max-similarity": h.value,
203
+ expanded: C.has(a.chunkId)
203
204
  }, null, 8, [
204
205
  "content",
205
206
  "similarity",
206
207
  "max-similarity",
207
208
  "expanded"
208
- ])], 8, G), w.has(a.chunkId) ? (i(), v("div", K, [f("div", q, [b(_, { mode: "out-in" }, {
209
- default: e(() => [E.has(a.chunkId) ? (i(), d(S, {
209
+ ])], 8, G), C.has(a.chunkId) ? (i(), _("div", K, [f("div", q, [y(g, { mode: "out-in" }, {
210
+ default: e(() => [E.has(a.chunkId) ? (i(), d(x, {
210
211
  key: 0,
211
212
  markdown: E.get(a.chunkId),
212
213
  class: "wysiwyg"
213
- }, null, 8, ["markdown"])) : (i(), d(S, {
214
+ }, null, 8, ["markdown"])) : (i(), d(x, {
214
215
  key: 1,
215
216
  markdown: a.content,
216
217
  class: "wysiwyg"
217
218
  }, null, 8, ["markdown"]))]),
218
219
  _: 2
219
220
  }, 1024)]), f("div", J, [
220
- t.onExpandContext && a.chunkIndex != null && !E.has(a.chunkId) ? (i(), v("button", {
221
+ t.onExpandContext && a.chunkIndex != null && !E.has(a.chunkId) ? (i(), _("button", {
221
222
  key: 0,
222
223
  class: "text-10 text-word-3 hover:text-word flex items-center gap-4 cursor-pointer",
223
224
  disabled: D.has(a.chunkId),
224
225
  onClick: (e) => j(a)
225
- }, [b(u, {
226
+ }, [y(u, {
226
227
  name: D.has(a.chunkId) ? "loading-loop" : "ri:expand-up-down-line",
227
228
  class: "text-12"
228
- }, null, 8, ["name"]), c(" " + r(n.$t("label.expandContext")), 1)], 8, Y)) : E.has(a.chunkId) ? (i(), v("button", {
229
+ }, null, 8, ["name"]), c(" " + r(n.$t("label.expandContext")), 1)], 8, Y)) : E.has(a.chunkId) ? (i(), _("button", {
229
230
  key: 1,
230
231
  class: "text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer",
231
232
  onClick: (e) => M(a.chunkId)
232
- }, [b(u, {
233
+ }, [y(u, {
233
234
  name: "ri:collapse-vertical-line",
234
235
  class: "text-12"
235
236
  }), c(" " + r(n.$t("label.collapseContext")), 1)], 8, X)) : s("", !0),
236
- a.sourceUrl ? (i(), v("a", {
237
+ a.sourceUrl ? (i(), _("a", {
237
238
  key: 2,
238
239
  href: a.sourceUrl,
239
240
  target: "_blank",
240
241
  rel: "noopener noreferrer",
241
242
  class: "text-10 text-word-3 hover:text-word-1 flex items-center gap-4 ml-auto"
242
- }, [b(u, {
243
+ }, [y(u, {
243
244
  name: "ri:external-link-line",
244
245
  class: "text-12"
245
246
  }), c(" " + r(n.$t("label.openSource")), 1)], 8, Z)) : s("", !0),
246
- t.onDownload && a.documentType === "file" ? (i(), v("button", {
247
+ t.onDownload && a.documentType === "file" ? (i(), _("button", {
247
248
  key: 3,
248
- class: y(["text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer", { "ml-auto": !a.sourceUrl }]),
249
+ class: v(["text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer", { "ml-auto": !a.sourceUrl }]),
249
250
  onClick: (e) => t.onDownload(a.documentId)
250
- }, [b(u, {
251
+ }, [y(u, {
251
252
  name: "ri:download-line",
252
253
  class: "text-12"
253
254
  }), c(" " + r(n.$t("label.downloadFile")), 1)], 10, Q)) : s("", !0)
254
255
  ])])) : s("", !0)]))), 128))])) : s("", !0)]))), 128))]),
255
- te.value ? (i(), v("button", {
256
+ te.value ? (i(), _("button", {
256
257
  key: 0,
257
258
  class: "text-12 text-word-3 cursor-pointer hover:underline flex items-center gap-4 mx-auto",
258
259
  onClick: a[0] ||= (e) => N.value = !N.value
259
- }, [b(u, {
260
+ }, [y(u, {
260
261
  name: N.value ? "ri:arrow-up-s-line" : "ri:arrow-down-s-line",
261
262
  class: "text-16"
262
263
  }, null, 8, ["name"]), c(" " + r(N.value ? n.$t("action.showLess") : n.$t("action.showMore", { count: p.value.length - 3 })), 1)])) : s("", !0)
@@ -267,4 +268,4 @@ var F = {
267
268
  //#endregion
268
269
  export { $ as default };
269
270
 
270
- //# sourceMappingURL=PkToolShowSources-BJ-XFrLD.js.map
271
+ //# sourceMappingURL=PkToolShowSources-q4XBOwJl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PkToolShowSources-q4XBOwJl.js","names":["_hoisted_1","_hoisted_2","__unplugin_components_0","_openBlock","_createElementBlock","_Fragment","_createVNode","_createElementVNode","_toDisplayString","_unref","_createCommentVNode","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","__unplugin_components_0","_openBlock","_createElementBlock","_Fragment","_createVNode","_unref","_createElementVNode","_toDisplayString","_createCommentVNode","PkUrl","_sfc_main","$t","__unplugin_components_0","__unplugin_components_1","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_createTextVNode","_toDisplayString","_Fragment","_renderList","PkDocumentHeader","_createCommentVNode","_createBlock","PkStreamingMarkdown","PkChunkPreview","_Transition","_withCtx","_normalizeClass","_sfc_main","withCtx","defineComponent","init_shared_esm_bundler","toDisplayString","openBlock","init_runtime_core_esm_bundler","unref","createCommentVNode","createTextVNode","Fragment","reactive","createBlock","createBaseVNode","init_reactivity_esm_bundler","ref","init_runtime_dom_esm_bundler","Transition","createElementBlock","normalizeClass","createVNode","renderList","PkStreamingMarkdown_default","getTypeIcon","stripMarkdown","Ae","VvButtonLocalized","PkUrl_default","_hoisted_1$2","_hoisted_2$2","PkChunkPreview_default","props","__props","similarityPercent","computed","max","_component_VvIcon","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","PkDocumentHeader_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","PkToolShowSources_default","toolPart","sources","groupedSources","groups","source","existing","maxSimilarity","s","expandedDocuments","expandedChunks","contextData","loadingContext","toggleDocument","documentId","toggleChunk","chunkId","handleExpandContext","content","clearContext","showMore","visibleGroups","hasMore","_component_VvButton","_ctx","group","chunk","_cache"],"sources":["../../../../packages/components/src/chat/PkChunkPreview.vue","../../../../packages/components/src/chat/PkChunkPreview.vue","../../../../packages/components/src/chat/PkDocumentHeader.vue","../../../../packages/components/src/chat/PkDocumentHeader.vue","../../../../packages/components/src/chat/PkToolShowSources.vue","../../../../packages/components/src/chat/PkToolShowSources.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { stripMarkdown } from 'utils'\n\n const props = defineProps<{\n content: string\n similarity?: number\n maxSimilarity?: number\n expanded: boolean\n }>()\n\n const similarityPercent = computed(() => {\n if (props.similarity == null) {\n return null\n }\n const max =\n props.maxSimilarity && props.maxSimilarity > 0\n ? props.maxSimilarity\n : 1\n return Math.round((props.similarity / max) * 100)\n })\n</script>\n\n<template>\n <VvIcon name=\"ri:text-snippet\" class=\"shrink-0 text-12 text-word-4\" />\n <span class=\"text-10 text-word-2 truncate flex-1\" :title=\"content\">\n {{ stripMarkdown(content) }}\n </span>\n <span v-if=\"similarityPercent != null\" class=\"text-10 text-word-4 shrink-0\">\n {{ similarityPercent }}%\n </span>\n <VvIcon\n :name=\"expanded ? 'ri:arrow-up-s-line' : 'ri:arrow-down-s-line'\"\n class=\"text-14 text-word-4 shrink-0\" />\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { stripMarkdown } from 'utils'\n\n const props = defineProps<{\n content: string\n similarity?: number\n maxSimilarity?: number\n expanded: boolean\n }>()\n\n const similarityPercent = computed(() => {\n if (props.similarity == null) {\n return null\n }\n const max =\n props.maxSimilarity && props.maxSimilarity > 0\n ? props.maxSimilarity\n : 1\n return Math.round((props.similarity / max) * 100)\n })\n</script>\n\n<template>\n <VvIcon name=\"ri:text-snippet\" class=\"shrink-0 text-12 text-word-4\" />\n <span class=\"text-10 text-word-2 truncate flex-1\" :title=\"content\">\n {{ stripMarkdown(content) }}\n </span>\n <span v-if=\"similarityPercent != null\" class=\"text-10 text-word-4 shrink-0\">\n {{ similarityPercent }}%\n </span>\n <VvIcon\n :name=\"expanded ? 'ri:arrow-up-s-line' : 'ri:arrow-down-s-line'\"\n class=\"text-14 text-word-4 shrink-0\" />\n</template>\n","<script setup lang=\"ts\">\n import type { DocumentType } from 'models'\n import { getTypeIcon } from 'models'\n import PkUrl from '../PkUrl.vue'\n\n defineProps<{\n type: string\n name: string\n url?: string\n filename?: string\n /**\n * The address as text, not a link: for a header drawn inside a button,\n * where a link is invalid HTML and its click also toggles the row\n */\n mutedUrl?: boolean\n }>()\n</script>\n\n<template>\n <VvIcon\n :name=\"getTypeIcon(type as DocumentType)\"\n class=\"shrink-0 text-14 text-word-3\" />\n <div class=\"flex flex-col gap-2 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate block\">\n {{ name }}\n </strong>\n <span v-if=\"filename\" class=\"text-10 text-word-4 truncate\">\n {{ filename }}\n </span>\n <span\n v-if=\"url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-10\" />\n <PkUrl :url=\"url\" :muted=\"mutedUrl\" />\n </span>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import type { DocumentType } from 'models'\n import { getTypeIcon } from 'models'\n import PkUrl from '../PkUrl.vue'\n\n defineProps<{\n type: string\n name: string\n url?: string\n filename?: string\n /**\n * The address as text, not a link: for a header drawn inside a button,\n * where a link is invalid HTML and its click also toggles the row\n */\n mutedUrl?: boolean\n }>()\n</script>\n\n<template>\n <VvIcon\n :name=\"getTypeIcon(type as DocumentType)\"\n class=\"shrink-0 text-14 text-word-3\" />\n <div class=\"flex flex-col gap-2 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate block\">\n {{ name }}\n </strong>\n <span v-if=\"filename\" class=\"text-10 text-word-4 truncate\">\n {{ filename }}\n </span>\n <span\n v-if=\"url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-10\" />\n <PkUrl :url=\"url\" :muted=\"mutedUrl\" />\n </span>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, reactive } from 'vue'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n import PkChunkPreview from './PkChunkPreview.vue'\n import PkDocumentHeader from './PkDocumentHeader.vue'\n\n interface SourceItem {\n chunkId: string\n documentId: string\n documentName: string\n documentType: string\n language: string\n content: string\n chunkIndex?: number | null\n similarity?: number\n sourceUrl?: string\n sourceFilename?: string\n sourceDescription?: string\n sourceImageUrl?: string\n }\n\n const props = defineProps<{\n part: unknown\n onExpandContext?: (payload: {\n documentId: string\n chunkIndex: number\n }) => Promise<string>\n onDownload?: (documentId: string) => void\n }>()\n\n const toolPart = computed(() => {\n return props.part as {\n input?: {\n sources: SourceItem[]\n }\n }\n })\n\n const sources = computed(() => toolPart.value.input?.sources || [])\n\n const groupedSources = computed(() => {\n const groups = new Map<\n string,\n { document: SourceItem; chunks: SourceItem[] }\n >()\n for (const source of sources.value) {\n const existing = groups.get(source.documentId)\n if (existing) {\n existing.chunks.push(source)\n } else {\n groups.set(source.documentId, {\n document: source,\n chunks: [source],\n })\n }\n }\n return [...groups.values()]\n })\n\n const maxSimilarity = computed(() => {\n return Math.max(...sources.value.map((s) => s.similarity ?? 0), 0)\n })\n\n const expandedDocuments = reactive(new Set<string>())\n const expandedChunks = reactive(new Set<string>())\n const contextData = reactive(new Map<string, string>())\n const loadingContext = reactive(new Set<string>())\n\n const toggleDocument = (documentId: string) => {\n if (expandedDocuments.has(documentId)) {\n expandedDocuments.delete(documentId)\n } else {\n expandedDocuments.add(documentId)\n }\n }\n\n const toggleChunk = (chunkId: string) => {\n if (expandedChunks.has(chunkId)) {\n expandedChunks.delete(chunkId)\n } else {\n expandedChunks.add(chunkId)\n }\n }\n\n const handleExpandContext = async (source: SourceItem) => {\n if (source.chunkIndex == null || !props.onExpandContext) {\n return\n }\n loadingContext.add(source.chunkId)\n try {\n const content = await props.onExpandContext({\n documentId: source.documentId,\n chunkIndex: source.chunkIndex,\n })\n contextData.set(source.chunkId, content)\n } finally {\n loadingContext.delete(source.chunkId)\n }\n }\n\n const clearContext = (chunkId: string) => {\n contextData.delete(chunkId)\n }\n\n const showMore = ref(false)\n const visibleGroups = computed(() => {\n if (showMore.value) {\n return groupedSources.value\n }\n return groupedSources.value.slice(0, 3)\n })\n const hasMore = computed(() => groupedSources.value.length > 3)\n</script>\n\n<template>\n <div v-if=\"sources.length\" class=\"flex flex-col gap-xs w-full\">\n <div class=\"flex items-center gap-4 text-12 text-word-3 font-semibold\">\n <VvIcon name=\"ri:article-line\" class=\"text-14\" />\n {{ $t('label.sources') }}\n <span class=\"text-word-4 font-normal\">\n ({{ groupedSources.length }})\n </span>\n </div>\n\n <ul class=\"flex flex-col gap-xs\">\n <li\n v-for=\"group in visibleGroups\"\n :key=\"group.document.documentId\"\n class=\"border border-surface-3 rounded-xl overflow-hidden\">\n <!-- Document header: the toggle, and beside it the link to\n the source, because a link inside a button is invalid\n HTML and its click also toggled the row -->\n <div\n class=\"flex items-center hover:bg-surface-1 transition-colors\">\n <button\n type=\"button\"\n class=\"flex items-center gap-8 p-8 flex-1 min-w-0 text-left cursor-pointer\"\n :aria-expanded=\"\n expandedDocuments.has(group.document.documentId)\n \"\n @click=\"toggleDocument(group.document.documentId)\">\n <PkDocumentHeader\n :type=\"group.document.documentType\"\n :name=\"group.document.documentName\"\n :url=\"group.document.sourceUrl\"\n :filename=\"group.document.sourceFilename\"\n muted-url />\n <div class=\"flex items-center gap-4 shrink-0\">\n <span\n v-if=\"group.chunks.length > 1\"\n class=\"text-10 text-word-4 bg-surface-2 rounded px-4 py-2\">\n {{ group.chunks.length }}\n </span>\n <span\n class=\"text-10 text-word-4 bg-surface-2 rounded px-4 py-2 uppercase\">\n {{ group.document.language }}\n </span>\n <VvIcon\n :name=\"\n expandedDocuments.has(\n group.document.documentId,\n )\n ? 'ri:arrow-up-s-line'\n : 'ri:arrow-down-s-line'\n \"\n class=\"text-16 text-word-3\" />\n </div>\n </button>\n <VvButton\n v-if=\"group.document.sourceUrl\"\n modifiers=\"action-quiet-small\"\n icon=\"ri:external-link-line\"\n class=\"text-10 shrink-0 mr-8\"\n :href=\"group.document.sourceUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n :title=\"$t('action.open')\"\n :aria-label=\"$t('action.open')\" />\n </div>\n\n <!-- Expanded content -->\n <div\n v-if=\"expandedDocuments.has(group.document.documentId)\"\n class=\"border-t border-surface-3\">\n <PkStreamingMarkdown\n v-if=\"group.document.sourceDescription\"\n :markdown=\"group.document.sourceDescription\"\n class=\"px-8 py-4 text-10 text-word-3 bg-surface-1 border-b border-surface-3\" />\n\n <!-- Chunk excerpts -->\n <div\n v-for=\"chunk in group.chunks\"\n :key=\"chunk.chunkId\"\n class=\"border-b border-surface-3 last:border-b-0\">\n <button\n class=\"flex items-center gap-8 px-8 py-6 w-full text-left hover:bg-surface-1 transition-colors cursor-pointer\"\n @click=\"toggleChunk(chunk.chunkId)\">\n <PkChunkPreview\n :content=\"chunk.content\"\n :similarity=\"chunk.similarity\"\n :max-similarity=\"maxSimilarity\"\n :expanded=\"expandedChunks.has(chunk.chunkId)\" />\n </button>\n\n <!-- Expanded chunk content -->\n <div\n v-if=\"expandedChunks.has(chunk.chunkId)\"\n class=\"bg-surface-1 border-t border-surface-3\">\n <div class=\"p-8 text-10 text-word-3\">\n <transition mode=\"out-in\">\n <!-- Context expansion -->\n <PkStreamingMarkdown\n v-if=\"contextData.has(chunk.chunkId)\"\n :markdown=\"\n contextData.get(chunk.chunkId)!\n \"\n class=\"wysiwyg\" />\n\n <!-- Chunk content -->\n <PkStreamingMarkdown\n v-else\n :markdown=\"chunk.content\"\n class=\"wysiwyg\" />\n </transition>\n </div>\n\n <!-- Actions bar -->\n <div\n class=\"flex items-center gap-8 px-8 py-6 border-t border-surface-3 bg-surface\">\n <!-- Expand / collapse context -->\n <button\n v-if=\"\n onExpandContext &&\n chunk.chunkIndex != null &&\n !contextData.has(chunk.chunkId)\n \"\n class=\"text-10 text-word-3 hover:text-word flex items-center gap-4 cursor-pointer\"\n :disabled=\"\n loadingContext.has(chunk.chunkId)\n \"\n @click=\"handleExpandContext(chunk)\">\n <VvIcon\n :name=\"\n loadingContext.has(chunk.chunkId)\n ? 'loading-loop'\n : 'ri:expand-up-down-line'\n \"\n class=\"text-12\" />\n {{ $t('label.expandContext') }}\n </button>\n <button\n v-else-if=\"contextData.has(chunk.chunkId)\"\n class=\"text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer\"\n @click=\"clearContext(chunk.chunkId)\">\n <VvIcon\n name=\"ri:collapse-vertical-line\"\n class=\"text-12\" />\n {{ $t('label.collapseContext') }}\n </button>\n\n <!-- Open source URL -->\n <a\n v-if=\"chunk.sourceUrl\"\n :href=\"chunk.sourceUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"text-10 text-word-3 hover:text-word-1 flex items-center gap-4 ml-auto\">\n <VvIcon\n name=\"ri:external-link-line\"\n class=\"text-12\" />\n {{ $t('label.openSource') }}\n </a>\n\n <!-- Download file -->\n <button\n v-if=\"\n onDownload &&\n chunk.documentType === 'file'\n \"\n class=\"text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer\"\n :class=\"{\n 'ml-auto': !chunk.sourceUrl,\n }\"\n @click=\"onDownload(chunk.documentId)\">\n <VvIcon\n name=\"ri:download-line\"\n class=\"text-12\" />\n {{ $t('label.downloadFile') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </li>\n </ul>\n\n <!-- Show more -->\n <button\n v-if=\"hasMore\"\n class=\"text-12 text-word-3 cursor-pointer hover:underline flex items-center gap-4 mx-auto\"\n @click=\"showMore = !showMore\">\n <VvIcon\n :name=\"showMore ? 'ri:arrow-up-s-line' : 'ri:arrow-down-s-line'\"\n class=\"text-16\" />\n {{\n showMore\n ? $t('action.showLess')\n : $t('action.showMore', {\n count: groupedSources.length - 3,\n })\n }}\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, reactive } from 'vue'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n import PkChunkPreview from './PkChunkPreview.vue'\n import PkDocumentHeader from './PkDocumentHeader.vue'\n\n interface SourceItem {\n chunkId: string\n documentId: string\n documentName: string\n documentType: string\n language: string\n content: string\n chunkIndex?: number | null\n similarity?: number\n sourceUrl?: string\n sourceFilename?: string\n sourceDescription?: string\n sourceImageUrl?: string\n }\n\n const props = defineProps<{\n part: unknown\n onExpandContext?: (payload: {\n documentId: string\n chunkIndex: number\n }) => Promise<string>\n onDownload?: (documentId: string) => void\n }>()\n\n const toolPart = computed(() => {\n return props.part as {\n input?: {\n sources: SourceItem[]\n }\n }\n })\n\n const sources = computed(() => toolPart.value.input?.sources || [])\n\n const groupedSources = computed(() => {\n const groups = new Map<\n string,\n { document: SourceItem; chunks: SourceItem[] }\n >()\n for (const source of sources.value) {\n const existing = groups.get(source.documentId)\n if (existing) {\n existing.chunks.push(source)\n } else {\n groups.set(source.documentId, {\n document: source,\n chunks: [source],\n })\n }\n }\n return [...groups.values()]\n })\n\n const maxSimilarity = computed(() => {\n return Math.max(...sources.value.map((s) => s.similarity ?? 0), 0)\n })\n\n const expandedDocuments = reactive(new Set<string>())\n const expandedChunks = reactive(new Set<string>())\n const contextData = reactive(new Map<string, string>())\n const loadingContext = reactive(new Set<string>())\n\n const toggleDocument = (documentId: string) => {\n if (expandedDocuments.has(documentId)) {\n expandedDocuments.delete(documentId)\n } else {\n expandedDocuments.add(documentId)\n }\n }\n\n const toggleChunk = (chunkId: string) => {\n if (expandedChunks.has(chunkId)) {\n expandedChunks.delete(chunkId)\n } else {\n expandedChunks.add(chunkId)\n }\n }\n\n const handleExpandContext = async (source: SourceItem) => {\n if (source.chunkIndex == null || !props.onExpandContext) {\n return\n }\n loadingContext.add(source.chunkId)\n try {\n const content = await props.onExpandContext({\n documentId: source.documentId,\n chunkIndex: source.chunkIndex,\n })\n contextData.set(source.chunkId, content)\n } finally {\n loadingContext.delete(source.chunkId)\n }\n }\n\n const clearContext = (chunkId: string) => {\n contextData.delete(chunkId)\n }\n\n const showMore = ref(false)\n const visibleGroups = computed(() => {\n if (showMore.value) {\n return groupedSources.value\n }\n return groupedSources.value.slice(0, 3)\n })\n const hasMore = computed(() => groupedSources.value.length > 3)\n</script>\n\n<template>\n <div v-if=\"sources.length\" class=\"flex flex-col gap-xs w-full\">\n <div class=\"flex items-center gap-4 text-12 text-word-3 font-semibold\">\n <VvIcon name=\"ri:article-line\" class=\"text-14\" />\n {{ $t('label.sources') }}\n <span class=\"text-word-4 font-normal\">\n ({{ groupedSources.length }})\n </span>\n </div>\n\n <ul class=\"flex flex-col gap-xs\">\n <li\n v-for=\"group in visibleGroups\"\n :key=\"group.document.documentId\"\n class=\"border border-surface-3 rounded-xl overflow-hidden\">\n <!-- Document header: the toggle, and beside it the link to\n the source, because a link inside a button is invalid\n HTML and its click also toggled the row -->\n <div\n class=\"flex items-center hover:bg-surface-1 transition-colors\">\n <button\n type=\"button\"\n class=\"flex items-center gap-8 p-8 flex-1 min-w-0 text-left cursor-pointer\"\n :aria-expanded=\"\n expandedDocuments.has(group.document.documentId)\n \"\n @click=\"toggleDocument(group.document.documentId)\">\n <PkDocumentHeader\n :type=\"group.document.documentType\"\n :name=\"group.document.documentName\"\n :url=\"group.document.sourceUrl\"\n :filename=\"group.document.sourceFilename\"\n muted-url />\n <div class=\"flex items-center gap-4 shrink-0\">\n <span\n v-if=\"group.chunks.length > 1\"\n class=\"text-10 text-word-4 bg-surface-2 rounded px-4 py-2\">\n {{ group.chunks.length }}\n </span>\n <span\n class=\"text-10 text-word-4 bg-surface-2 rounded px-4 py-2 uppercase\">\n {{ group.document.language }}\n </span>\n <VvIcon\n :name=\"\n expandedDocuments.has(\n group.document.documentId,\n )\n ? 'ri:arrow-up-s-line'\n : 'ri:arrow-down-s-line'\n \"\n class=\"text-16 text-word-3\" />\n </div>\n </button>\n <VvButton\n v-if=\"group.document.sourceUrl\"\n modifiers=\"action-quiet-small\"\n icon=\"ri:external-link-line\"\n class=\"text-10 shrink-0 mr-8\"\n :href=\"group.document.sourceUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n :title=\"$t('action.open')\"\n :aria-label=\"$t('action.open')\" />\n </div>\n\n <!-- Expanded content -->\n <div\n v-if=\"expandedDocuments.has(group.document.documentId)\"\n class=\"border-t border-surface-3\">\n <PkStreamingMarkdown\n v-if=\"group.document.sourceDescription\"\n :markdown=\"group.document.sourceDescription\"\n class=\"px-8 py-4 text-10 text-word-3 bg-surface-1 border-b border-surface-3\" />\n\n <!-- Chunk excerpts -->\n <div\n v-for=\"chunk in group.chunks\"\n :key=\"chunk.chunkId\"\n class=\"border-b border-surface-3 last:border-b-0\">\n <button\n class=\"flex items-center gap-8 px-8 py-6 w-full text-left hover:bg-surface-1 transition-colors cursor-pointer\"\n @click=\"toggleChunk(chunk.chunkId)\">\n <PkChunkPreview\n :content=\"chunk.content\"\n :similarity=\"chunk.similarity\"\n :max-similarity=\"maxSimilarity\"\n :expanded=\"expandedChunks.has(chunk.chunkId)\" />\n </button>\n\n <!-- Expanded chunk content -->\n <div\n v-if=\"expandedChunks.has(chunk.chunkId)\"\n class=\"bg-surface-1 border-t border-surface-3\">\n <div class=\"p-8 text-10 text-word-3\">\n <transition mode=\"out-in\">\n <!-- Context expansion -->\n <PkStreamingMarkdown\n v-if=\"contextData.has(chunk.chunkId)\"\n :markdown=\"\n contextData.get(chunk.chunkId)!\n \"\n class=\"wysiwyg\" />\n\n <!-- Chunk content -->\n <PkStreamingMarkdown\n v-else\n :markdown=\"chunk.content\"\n class=\"wysiwyg\" />\n </transition>\n </div>\n\n <!-- Actions bar -->\n <div\n class=\"flex items-center gap-8 px-8 py-6 border-t border-surface-3 bg-surface\">\n <!-- Expand / collapse context -->\n <button\n v-if=\"\n onExpandContext &&\n chunk.chunkIndex != null &&\n !contextData.has(chunk.chunkId)\n \"\n class=\"text-10 text-word-3 hover:text-word flex items-center gap-4 cursor-pointer\"\n :disabled=\"\n loadingContext.has(chunk.chunkId)\n \"\n @click=\"handleExpandContext(chunk)\">\n <VvIcon\n :name=\"\n loadingContext.has(chunk.chunkId)\n ? 'loading-loop'\n : 'ri:expand-up-down-line'\n \"\n class=\"text-12\" />\n {{ $t('label.expandContext') }}\n </button>\n <button\n v-else-if=\"contextData.has(chunk.chunkId)\"\n class=\"text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer\"\n @click=\"clearContext(chunk.chunkId)\">\n <VvIcon\n name=\"ri:collapse-vertical-line\"\n class=\"text-12\" />\n {{ $t('label.collapseContext') }}\n </button>\n\n <!-- Open source URL -->\n <a\n v-if=\"chunk.sourceUrl\"\n :href=\"chunk.sourceUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"text-10 text-word-3 hover:text-word-1 flex items-center gap-4 ml-auto\">\n <VvIcon\n name=\"ri:external-link-line\"\n class=\"text-12\" />\n {{ $t('label.openSource') }}\n </a>\n\n <!-- Download file -->\n <button\n v-if=\"\n onDownload &&\n chunk.documentType === 'file'\n \"\n class=\"text-10 text-word-3 hover:text-word-1 flex items-center gap-4 cursor-pointer\"\n :class=\"{\n 'ml-auto': !chunk.sourceUrl,\n }\"\n @click=\"onDownload(chunk.documentId)\">\n <VvIcon\n name=\"ri:download-line\"\n class=\"text-12\" />\n {{ $t('label.downloadFile') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </li>\n </ul>\n\n <!-- Show more -->\n <button\n v-if=\"hasMore\"\n class=\"text-12 text-word-3 cursor-pointer hover:underline flex items-center gap-4 mx-auto\"\n @click=\"showMore = !showMore\">\n <VvIcon\n :name=\"showMore ? 'ri:arrow-up-s-line' : 'ri:arrow-down-s-line'\"\n class=\"text-16\" />\n {{\n showMore\n ? $t('action.showLess')\n : $t('action.showMore', {\n count: groupedSources.length - 3,\n })\n }}\n </button>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { C as e, Ct as t, Dt as n, L as r, O as i, _ as a, d as o, h as s, it as c, m as l, mt as u, r as d, u as f, v as p, wt as m, x as h, z as g } from "./vue.runtime.esm-bundler-DKVd2gci.js";
2
- import { p as _ } from "./Agent-D8YrsP52.js";
2
+ import { g as _ } from "./Agent-Gdgpd3LA.js";
3
3
  import { t as v } from "./index.es-dTcgyeM4.js";
4
4
  import { t as y } from "./_plugin-vue_export-helper-B3ysoDQm.js";
5
5
  //#region ../../packages/components/src/chat/PkToolShowSuggestedReply.vue?vue&type=script&setup=true&lang.ts
@@ -46,4 +46,4 @@ var b = {
46
46
  //#endregion
47
47
  export { S as default };
48
48
 
49
- //# sourceMappingURL=PkToolShowSuggestedReply-0KahUIlw.js.map
49
+ //# sourceMappingURL=PkToolShowSuggestedReply-BISQY1ce.js.map