@vellumai/web 0.11.5-staging.1 → 0.11.5

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 (289) hide show
  1. package/dist/assets/{Trans-Ayy2zoN6.js → Trans-CM5UUgDt.js} +1 -1
  2. package/dist/assets/{a2a-invite-BnytH07i.js → a2a-invite-CduLLtki.js} +1 -1
  3. package/dist/assets/{account-page-fksftFTI.js → account-page-CSJOSKzD.js} +1 -1
  4. package/dist/assets/{account-shell-Cm4mAmQ1.js → account-shell-WRaiE1O8.js} +1 -1
  5. package/dist/assets/{acp-run-detail-panel-DpY-2IUp.js → acp-run-detail-panel-gR77X6Xm.js} +1 -1
  6. package/dist/assets/{activity-steps-panel-D9L-wNUS.js → activity-steps-panel-BglLu7wx.js} +1 -1
  7. package/dist/assets/{add-credential-modal-D2dFz_aq.js → add-credential-modal-DgoBqgwB.js} +1 -1
  8. package/dist/assets/{add-credits-modal-CmRWmR5E.js → add-credits-modal-BNab_7H9.js} +1 -1
  9. package/dist/assets/{ai-page-DSvzyRcE.js → ai-page-CLAFnWl5.js} +1 -1
  10. package/dist/assets/{api-key-screen-8g2vhXCU.js → api-key-screen-CS0KZgP6.js} +1 -1
  11. package/dist/assets/{app-card-Cz7zkQT3.js → app-card-C7c3c4l4.js} +1 -1
  12. package/dist/assets/{archive-redirect-page-ClPbJzqu.js → archive-redirect-page-DZkHnLmA.js} +1 -1
  13. package/dist/assets/{assistant-feature-flag-store-DPde0AIx.js → assistant-feature-flag-store-CdXRp9pV.js} +1 -1
  14. package/dist/assets/{assistant-status-panel-uGuW1yZK.js → assistant-status-panel-BogBdYLj.js} +1 -1
  15. package/dist/assets/auth-store-iNnDaLgR.js +2 -0
  16. package/dist/assets/{auth-welcome-screen-Da31gKxW.js → auth-welcome-screen-BoiE47Sg.js} +1 -1
  17. package/dist/assets/{avatar-random-BL7Gu5qp.js → avatar-random-C7t2cN3Y.js} +1 -1
  18. package/dist/assets/{background-task-detail-panel-CxmesGo1.js → background-task-detail-panel-BeXbhHLZ.js} +1 -1
  19. package/dist/assets/{billing-page-EthbxOpl.js → billing-page-PuFxEptl.js} +3 -3
  20. package/dist/assets/{billing-redirect-page-DbvbLo7I.js → billing-redirect-page-BFDitQeE.js} +1 -1
  21. package/dist/assets/bookmarks-page-DY_CJ4I3.js +1 -0
  22. package/dist/assets/{browser-DH4V-FME.js → browser--x9YKXWo.js} +2 -2
  23. package/dist/assets/{build-state-DjZj1PEB.js → build-state-Dtia1Hnq.js} +1 -1
  24. package/dist/assets/{button-VkxVX0DM.js → button-C8CGr0T0.js} +1 -1
  25. package/dist/assets/{channels-page-route-DzS1In-E.js → channels-page-route-WZWPUfRo.js} +1 -1
  26. package/dist/assets/{chat-markdown-message-FJAu4s2A.js → chat-markdown-message-JeYI9m3i.js} +1 -1
  27. package/dist/assets/{checkbox-BkYoVUtf.js → checkbox-BWX_Dnge.js} +1 -1
  28. package/dist/assets/checkout-continuation-B-A9SoHt.js +1 -0
  29. package/dist/assets/{checkout-page-WkiUwe7y.js → checkout-page-BYHPD7UJ.js} +1 -1
  30. package/dist/assets/checkout-return-target-DnT91-Y_.js +1 -0
  31. package/dist/assets/{client-feature-flag-store-o8FXKc-R.js → client-feature-flag-store-DuVzcD-V.js} +1 -1
  32. package/dist/assets/{client-perf-EM-2B6Ha.js → client-perf-Bg-CBIVj.js} +1 -1
  33. package/dist/assets/{command-palette-Tz8bW1Zb.js → command-palette-C8JWMyiC.js} +1 -1
  34. package/dist/assets/{command-palette-window-page-CICaRPRP.js → command-palette-window-page-C8vw0yIO.js} +1 -1
  35. package/dist/assets/common-gaw6OefS.js +1 -0
  36. package/dist/assets/{community-page-CuJypGVc.js → community-page-DvR4X6k9.js} +1 -1
  37. package/dist/assets/companion-surface-page-iknPQRTu.js +1 -0
  38. package/dist/assets/{composer-settings-xBD4cVBI.js → composer-settings-B84-FOM1.js} +1 -1
  39. package/dist/assets/{confirm-dialog--7V28331.js → confirm-dialog-DYmL6FRe.js} +1 -1
  40. package/dist/assets/{connect-page-Dkitufkv.js → connect-page-CKAizrWr.js} +1 -1
  41. package/dist/assets/consent-DgQeejGe.js +1 -0
  42. package/dist/assets/{consent-controls-D7wjMU4g.js → consent-controls-V9Wca6TV.js} +1 -1
  43. package/dist/assets/{contacts-page-route-Dsb5c0ov.js → contacts-page-route-BceswcoE.js} +1 -1
  44. package/dist/assets/{conversation-cache-DJbtcDiW.js → conversation-cache-CuEQRyqi.js} +1 -1
  45. package/dist/assets/{conversation-navigation-Cg1rXwwx.js → conversation-navigation-CfOyMc6W.js} +1 -1
  46. package/dist/assets/{conversation-queries-YVB1UbYl.js → conversation-queries-CtAFZgFP.js} +1 -1
  47. package/dist/assets/{conversation-selection-CRqFjCDm.js → conversation-selection-ZuF7NVBR.js} +1 -1
  48. package/dist/assets/{copy-to-clipboard-wnEkIu5M.js → copy-to-clipboard-yufQqRBL.js} +1 -1
  49. package/dist/assets/{credential-entry-page-DvSQvCah.js → credential-entry-page-B0NYTomQ.js} +1 -1
  50. package/dist/assets/{credentials-page-qE6ZVx_g.js → credentials-page-DfOet7SI.js} +1 -1
  51. package/dist/assets/{csv-preview-CmccW-uE.js → csv-preview-QUU-h2MX.js} +1 -1
  52. package/dist/assets/{danger-zone-redirect-page-D9ysYxNl.js → danger-zone-redirect-page-B_ZMX7ns.js} +1 -1
  53. package/dist/assets/{debug-page-BUP88wEB.js → debug-page-DXvFlnqh.js} +1 -1
  54. package/dist/assets/{deploy-dialogs-DB5LzYcq.js → deploy-dialogs-ilUtMpvf.js} +1 -1
  55. package/dist/assets/{deploy-store-wUa1-kTk.js → deploy-store-C_y0BvwK.js} +1 -1
  56. package/dist/assets/{detail-card-DBxsIpmu.js → detail-card-DwBporBs.js} +1 -1
  57. package/dist/assets/{detail-drawer-PnkAA_sr.js → detail-drawer-Di5V_iLf.js} +1 -1
  58. package/dist/assets/{detail-shell-BpJzTGvM.js → detail-shell-CcrQic9y.js} +1 -1
  59. package/dist/assets/developer-page-B_LQmpH7.js +1 -0
  60. package/dist/assets/{devices-redirect-page-B1K9-KDL.js → devices-redirect-page-BD0VY17t.js} +1 -1
  61. package/dist/assets/{diagnostics-D82Xy5aG.js → diagnostics-BcQgahbk.js} +1 -1
  62. package/dist/assets/dist-BFOJNO7w.js +1 -0
  63. package/dist/assets/{dist-D94ZMew1.js → dist-BsGO-mS7.js} +1 -1
  64. package/dist/assets/{dist-CzN28mbE.js → dist-DN2Wju98.js} +1 -1
  65. package/dist/assets/{dist--4Bbb2u3.js → dist-eCSUXDGk.js} +1 -1
  66. package/dist/assets/{doctor-handoff-store-DsMgYJHu.js → doctor-handoff-store-B_RlFFKC.js} +1 -1
  67. package/dist/assets/{document-viewer-container-RskGQW6t.js → document-viewer-container-D3aPjnj8.js} +2 -2
  68. package/dist/assets/{document-viewer-page-CbpsmQWC.js → document-viewer-page-CvQXX7Mp.js} +1 -1
  69. package/dist/assets/{emails-page-_5YOJc7e.js → emails-page-DbAVQ_jC.js} +1 -1
  70. package/dist/assets/esm-4Bnaz5rU.js +2 -0
  71. package/dist/assets/{esm-BNARxlDM.js → esm-C4VoH46A.js} +1 -1
  72. package/dist/assets/{esm-D5OjXPP0.js → esm-CrXbhSov.js} +2 -2
  73. package/dist/assets/{esm-BRNK_0Y3.js → esm-Cz8_Dotd.js} +1 -1
  74. package/dist/assets/esm-DBGqhIh5.js +1 -0
  75. package/dist/assets/esm-DXPZZih3.js +2 -0
  76. package/dist/assets/esm-DcJxSeV0.js +2 -0
  77. package/dist/assets/{esm-8NN8IH0k.js → esm-Ddv_MyHw.js} +2 -2
  78. package/dist/assets/esm-Do2zrCWJ.js +2 -0
  79. package/dist/assets/esm-DrXV9mo-.js +2 -0
  80. package/dist/assets/{external-anchor-BQjaNMxT.js → external-anchor-owoORewf.js} +1 -1
  81. package/dist/assets/feature-flag-catalog-C1y2RUth.js +1 -0
  82. package/dist/assets/feed-item-status-actions-C3JfFvZc.js +1 -0
  83. package/dist/assets/{file-editor-DQtez5BN.js → file-editor-CeYfWNBz.js} +1 -1
  84. package/dist/assets/{file-markdown-CFQG2IW9.js → file-markdown-B9G_TXX-.js} +1 -1
  85. package/dist/assets/{first-run-scope-Cs-NWmVG.js → first-run-scope-MD-rEgje.js} +1 -1
  86. package/dist/assets/{format-usd-Dv-VJP5v.js → format-usd-BYzA1eMJ.js} +1 -1
  87. package/dist/assets/{funnel-events-DEzFt9ac.js → funnel-events-ClGpFDNM.js} +1 -1
  88. package/dist/assets/general-page-CzDlVoNx.js +1 -0
  89. package/dist/assets/{haptics-BR_zMLz2.js → haptics-F-nvqKYf.js} +2 -2
  90. package/dist/assets/{hatching-screen-BKmwq_y2.js → hatching-screen-FgNbjXOt.js} +1 -1
  91. package/dist/assets/{home-page-route-BWF6O6BN.js → home-page-route-C7Aeo-Mg.js} +1 -1
  92. package/dist/assets/{hosting-screen-BI8jdpYg.js → hosting-screen-CLVRdDiX.js} +1 -1
  93. package/dist/assets/{i18n-7Z5ghN39.js → i18n-C3bX3mTs.js} +1 -1
  94. package/dist/assets/{identity-page-route-pCMyDEEU.js → identity-page-route-CHncFua2.js} +1 -1
  95. package/dist/assets/index-C7hCfQpd.css +2 -0
  96. package/dist/assets/{index-CffZ8_I1.js → index-DS0PEdhO.js} +5 -5
  97. package/dist/assets/{ingest-BubkTA7j.js → ingest-C1wiUm1l.js} +1 -1
  98. package/dist/assets/{input-DkgpMeG9.js → input-DlkBtbxm.js} +1 -1
  99. package/dist/assets/{inspect-page-2b2xMjZ-.js → inspect-page-CNLiZXRt.js} +3 -3
  100. package/dist/assets/{installed-plugins-query-CmlpXeFG.js → installed-plugins-query-DQKwv-Iz.js} +1 -1
  101. package/dist/assets/{integrations-page-C6SEZlRH.js → integrations-page-B9SHiomg.js} +1 -1
  102. package/dist/assets/{intelligence-layout-BltAdOWl.js → intelligence-layout-BoW8JbDc.js} +1 -1
  103. package/dist/assets/internal-thread-actions-C0S_b7cx.js +1 -0
  104. package/dist/assets/{invalidate-memory-queries-C_LpIe-7.js → invalidate-memory-queries-uk2gV1m0.js} +1 -1
  105. package/dist/assets/{invalidate-plugin-queries-DpWKL6e1.js → invalidate-plugin-queries-CI1Cseau.js} +1 -1
  106. package/dist/assets/{keyboard-shortcuts-redirect-page-BZAeBBT5.js → keyboard-shortcuts-redirect-page-BY3Va4w9.js} +1 -1
  107. package/dist/assets/{latest-assistant-text-C8nmvw4v.js → latest-assistant-text-fXT5Jkt8.js} +1 -1
  108. package/dist/assets/{library-detail-page-BTDRSSKy.js → library-detail-page-CX92FKAK.js} +1 -1
  109. package/dist/assets/{library-page-GoqUkn2E.js → library-page-D2v2j-WU.js} +1 -1
  110. package/dist/assets/{list-row-D1odQOMJ.js → list-row-6uedKE84.js} +1 -1
  111. package/dist/assets/{local-runtime-upgrade-BTtW-R95.js → local-runtime-upgrade-BpvLk3HN.js} +1 -1
  112. package/dist/assets/{login-flow-DIQYXP6A.js → login-flow-BYBqjDap.js} +1 -1
  113. package/dist/assets/{login-page-hY9FaC1m.js → login-page-fl8rgXFq.js} +1 -1
  114. package/dist/assets/{logout-page-mVYiyZFE.js → logout-page-DLjLy7Hp.js} +1 -1
  115. package/dist/assets/{logs-layout-_ycf1xan.js → logs-layout-Du4o-HeH.js} +1 -1
  116. package/dist/assets/{markdown-preview-CzYn25XC.js → markdown-preview-ukYPAksc.js} +1 -1
  117. package/dist/assets/{memory-page-route-CA8ygLKs.js → memory-page-route-CvKjQ2FE.js} +1 -1
  118. package/dist/assets/{memory-router-playground-page-B8rj0dNA.js → memory-router-playground-page-Dh8zVze9.js} +1 -1
  119. package/dist/assets/{menu-noj9Ohcf.js → menu-Ci8JeI2H.js} +1 -1
  120. package/dist/assets/{message-files-panel-COyAxMPi.js → message-files-panel-DEAC2iCY.js} +1 -1
  121. package/dist/assets/{messages-BhT6U312.js → messages-D5oI1yRV.js} +1 -1
  122. package/dist/assets/{metric-card-BQ-q7_9N.js → metric-card-YqtdN5uX.js} +1 -1
  123. package/dist/assets/{modal-UYNawsIu.js → modal-DN_Uwwkg.js} +1 -1
  124. package/dist/assets/native-anchor-C13W_dF5.js +1 -0
  125. package/dist/assets/{native-biometric-Dk_rOSjU.js → native-biometric-DzQYY-Z2.js} +1 -1
  126. package/dist/assets/{native-file-Dt4IC5xP.js → native-file-qM32rSz7.js} +2 -2
  127. package/dist/assets/{navigation-resolver-Cb4Lilq5.js → navigation-resolver-B6QxHAa5.js} +1 -1
  128. package/dist/assets/{not-found-CV2fs1T6.js → not-found-DXwfp4Yf.js} +1 -1
  129. package/dist/assets/{notifications-DZCtGip1.js → notifications-DMNpr3pt.js} +1 -1
  130. package/dist/assets/{notifications-page-BZmovm97.js → notifications-page-DD-175gq.js} +1 -1
  131. package/dist/assets/{oauth-complete-page-BTWKsjld.js → oauth-complete-page-DBDWL3aD.js} +1 -1
  132. package/dist/assets/{oauth-connection-utils-9aKLpLet.js → oauth-connection-utils-dPIUOXze.js} +1 -1
  133. package/dist/assets/{oauth-popup-complete-page-Dn7v4THp.js → oauth-popup-complete-page-Dv0482xp.js} +1 -1
  134. package/dist/assets/{onboarding-layout-81jlZ1Nr.js → onboarding-layout-CYgAi-S1.js} +1 -1
  135. package/dist/assets/{open-workspace-file-CINDRVEK.js → open-workspace-file-Ca9gUjoQ.js} +2 -2
  136. package/dist/assets/{operational-status-D9ExUyuP.js → operational-status-DVK3_kD_.js} +1 -1
  137. package/dist/assets/{page-shell-DEN0SqaR.js → page-shell-nVp2ogSk.js} +1 -1
  138. package/dist/assets/{pairing-page-CUdrYuE6.js → pairing-page-CLNSXQ7A.js} +1 -1
  139. package/dist/assets/{password-reset-page-BkX1L0-o.js → password-reset-page-BNw-K6vZ.js} +1 -1
  140. package/dist/assets/{personality-page-C6Fs2NDZ.js → personality-page-axIG9Tu_.js} +1 -1
  141. package/dist/assets/{plans-page-CtUDk34m.js → plans-page-DQu9C86N.js} +1 -1
  142. package/dist/assets/{platform-detection-CuBj2s81.js → platform-detection-C-a_Mru0.js} +1 -1
  143. package/dist/assets/{platform-login-notice-V5xsGsbM.js → platform-login-notice-Dmq_2Akt.js} +1 -1
  144. package/dist/assets/{platform-loopback-page-07jf3mNj.js → platform-loopback-page-B0UOR3ct.js} +1 -1
  145. package/dist/assets/{plugin-detail-page-hHTbKbVT.js → plugin-detail-page-2ySPND3h.js} +1 -1
  146. package/dist/assets/{plugins-page-Cg5tKwHZ.js → plugins-page-D7jLWtXv.js} +1 -1
  147. package/dist/assets/popover-B_nY8VYI.js +1 -0
  148. package/dist/assets/{prefs-D-MNCWeN.js → prefs-BFDWWNwd.js} +1 -1
  149. package/dist/assets/{preview-error-UT2_K5co.js → preview-error-B7qHC1Y4.js} +1 -1
  150. package/dist/assets/{privacy-page-CN-sgiHL.js → privacy-page-B-FaZv9p.js} +1 -1
  151. package/dist/assets/{privacy-screen-WnmVno78.js → privacy-screen-Ng4c4whW.js} +1 -1
  152. package/dist/assets/{provider-callback-page-CZfGxI4n.js → provider-callback-page-CwYFxjk3.js} +1 -1
  153. package/dist/assets/{provider-signup-page-By9jDuQZ.js → provider-signup-page-BORU3SZe.js} +1 -1
  154. package/dist/assets/{push-registration-CHsDMNLd.js → push-registration-CyLSsbG5.js} +2 -2
  155. package/dist/assets/{remove-from-device-dialog-C0oKQcpu.js → remove-from-device-dialog-Bpy0yOG4.js} +1 -1
  156. package/dist/assets/{research-facts-CVSPPobz.js → research-facts-DzELMLzK.js} +1 -1
  157. package/dist/assets/{research-mock-page-Du5tkfLD.js → research-mock-page-BkcbRMpS.js} +1 -1
  158. package/dist/assets/{research-onboarding-route-1Gr9h1zU.js → research-onboarding-route-BlBSSOiI.js} +1 -1
  159. package/dist/assets/{research-results-view-D300rmPl.js → research-results-view-D1hOhfTP.js} +1 -1
  160. package/dist/assets/{retire-confirm-dialog-Dj9Jz__k.js → retire-confirm-dialog-Zwo-Sjrc.js} +1 -1
  161. package/dist/assets/{review-terms-screen-CgaEflP1.js → review-terms-screen-DmNdg_zJ.js} +1 -1
  162. package/dist/assets/routes-BaPyKuTq.js +24 -0
  163. package/dist/assets/{runtime-upgrade-banner-DeZvRYKI.js → runtime-upgrade-banner-bHSGkzwB.js} +2 -2
  164. package/dist/assets/{sandbox-bridge-DJb4AAAd.js → sandbox-bridge-BcJiBmUR.js} +1 -1
  165. package/dist/assets/{schedules-D1Qj_LW9.js → schedules-CgwiGq3x.js} +1 -1
  166. package/dist/assets/{schedules-page-yQdICdi-.js → schedules-page-Ca_u2KkZ.js} +1 -1
  167. package/dist/assets/{section-membership-BLXUZceV.js → section-membership-CJlFrKoM.js} +1 -1
  168. package/dist/assets/{security-redirect-page-C1UvbW-C.js → security-redirect-page-eZ_C_Wf0.js} +1 -1
  169. package/dist/assets/{select-D133FK9g.js → select-DJDG9pwU.js} +1 -1
  170. package/dist/assets/select-assistant-screen-DSLQRer8.js +1 -0
  171. package/dist/assets/{self-hosted-servers-DbufWkqP.js → self-hosted-servers-DJIKPu90.js} +1 -1
  172. package/dist/assets/settings-BY8t4asx.js +1 -0
  173. package/dist/assets/{settings-divider-Cps8oOmA.js → settings-divider-BCyO1zmM.js} +1 -1
  174. package/dist/assets/{settings-layout-BIJoqFh0.js → settings-layout-Cv8u2dv7.js} +1 -1
  175. package/dist/assets/{settings-navigation-CBm-xDCe.js → settings-navigation-R6E3Weed.js} +1 -1
  176. package/dist/assets/{share-feedback-modal-CNyAJFsA.js → share-feedback-modal-COH8zwku.js} +2 -2
  177. package/dist/assets/{sidebar-tree-D2xvxqPq.js → sidebar-tree-Bfvk_uAR.js} +1 -1
  178. package/dist/assets/{signup-page-CTjLMOgF.js → signup-page-BsMK6h9P.js} +1 -1
  179. package/dist/assets/{site-favicon-MMcieZs1.js → site-favicon-Bu9L02gb.js} +1 -1
  180. package/dist/assets/{skill-detail-page-33xPKTfo.js → skill-detail-page-D9WBRKuf.js} +1 -1
  181. package/dist/assets/{skill-detail-panel-DicPuAYf.js → skill-detail-panel-kCMadngl.js} +1 -1
  182. package/dist/assets/{skills-CAW10RD_.js → skills-C3-ibGUo.js} +1 -1
  183. package/dist/assets/{skills-page-DtcZVUgk.js → skills-page-BMYP4Xi0.js} +1 -1
  184. package/dist/assets/{sounds-page-B1xgQyur.js → sounds-page-Du1t_S8A.js} +1 -1
  185. package/dist/assets/{src-Ch3HTlFm.js → src-DMnnfLrU.js} +2 -2
  186. package/dist/assets/{start-screen-1HZMKOoC.js → start-screen-I5HBKHT6.js} +1 -1
  187. package/dist/assets/{status-badge-pill-C8kQPvkY.js → status-badge-pill-w-ULYfRy.js} +1 -1
  188. package/dist/assets/{stt-language-picker-modal-0Y0jfxfK.js → stt-language-picker-modal-Cq76JJex.js} +1 -1
  189. package/dist/assets/{subagent-detail-panel-cG6QAznG.js → subagent-detail-panel-DP4dB-Dz.js} +1 -1
  190. package/dist/assets/{subagent-store-Bho3BXWd.js → subagent-store-Bn8k7JMr.js} +1 -1
  191. package/dist/assets/{superpowers-page-CMB1OtM0.js → superpowers-page-COTkr31c.js} +1 -1
  192. package/dist/assets/{swipe-action-reveal-Dj3B2k-t.js → swipe-action-reveal-CQY9DSup.js} +1 -1
  193. package/dist/assets/{system-events-page-XOi-gc2G.js → system-events-page-CvoSQs7q.js} +1 -1
  194. package/dist/assets/{system-events-redirect-page-BrQ1djZt.js → system-events-redirect-page-BjnwAn9h.js} +1 -1
  195. package/dist/assets/{tag-Ddzwz3ij.js → tag-D2QYCm1p.js} +1 -1
  196. package/dist/assets/{telegram-setup-wizard-D0bxOb5-.js → telegram-setup-wizard-6UP2MTrh.js} +1 -1
  197. package/dist/assets/{text-preview-D78CT11A.js → text-preview-BG__pDe7.js} +1 -1
  198. package/dist/assets/{theme-stage-page-DPIaeTEy.js → theme-stage-page-YfsM529J.js} +1 -1
  199. package/dist/assets/{tiptap-document-editor-DjSqTI1f.js → tiptap-document-editor-BM6zL6R7.js} +2 -2
  200. package/dist/assets/{toast-ZCXyBjoj.js → toast-CHtrY-GO.js} +1 -1
  201. package/dist/assets/{tool-detail-panel-D8Zr9tQz.js → tool-detail-panel-_LC-zFuo.js} +1 -1
  202. package/dist/assets/{transcript-message-body-shared-DKncF4vA.js → transcript-message-body-shared-D8cmJP1C.js} +1 -1
  203. package/dist/assets/{trust-rules-api-JydQ2uwR.js → trust-rules-api-CE_KJOp2.js} +1 -1
  204. package/dist/assets/{upgrade-cancel-page-gyvvmc_X.js → upgrade-cancel-page-DyLSvLsm.js} +1 -1
  205. package/dist/assets/{upgrade-success-page-_86uG48f.js → upgrade-success-page-BRPyFCq4.js} +1 -1
  206. package/dist/assets/{usage-redirect-page-DheTMqmF.js → usage-redirect-page-C4O5a5QM.js} +1 -1
  207. package/dist/assets/use-app-theme-BMyUWfBR.js +1 -0
  208. package/dist/assets/{use-assistant-identity-details-DUPitZAF.js → use-assistant-identity-details-C3sH1daz.js} +1 -1
  209. package/dist/assets/{use-attachment-preview-Y4kLa4bZ.js → use-attachment-preview-BUJ9CHqr.js} +2 -2
  210. package/dist/assets/{use-attachment-squares-C8jwl-uP.js → use-attachment-squares-CFAezuph.js} +1 -1
  211. package/dist/assets/{use-bookmarks-D-YUJTtH.js → use-bookmarks--Hn0Ty3s.js} +1 -1
  212. package/dist/assets/{use-checkout-dismiss-refresh-DVs2FMHj.js → use-checkout-dismiss-refresh-CTdb-p9h.js} +1 -1
  213. package/dist/assets/{use-command-palette-sections-BBglPqI8.js → use-command-palette-sections-_F3pQkoi.js} +1 -1
  214. package/dist/assets/{use-copy-to-clipboard-CBJ6pmkd.js → use-copy-to-clipboard-BPX7B4SE.js} +1 -1
  215. package/dist/assets/{use-edge-swipe-C-5S-Uf_.js → use-edge-swipe-CJYjm94h.js} +1 -1
  216. package/dist/assets/{use-edge-swipe-back-BO5FNCGw.js → use-edge-swipe-back-L6kJ84LI.js} +2 -2
  217. package/dist/assets/{use-edit-app-Mv9eDXyB.js → use-edit-app-C0wNLJT8.js} +1 -1
  218. package/dist/assets/{use-invite-link-dialog-Dn0_apkq.js → use-invite-link-dialog-B1oz9iwD.js} +1 -1
  219. package/dist/assets/{use-is-org-ready-CXChKRKk.js → use-is-org-ready-CEB5IRpO.js} +1 -1
  220. package/dist/assets/{use-onboarding-login-LxAfxxq4.js → use-onboarding-login-DSP8WCFe.js} +1 -1
  221. package/dist/assets/{use-platform-assistant-id-DGkEazpv.js → use-platform-assistant-id-n0Yl5uUG.js} +1 -1
  222. package/dist/assets/{use-platform-gate-dRg4Iaxg.js → use-platform-gate-DNfLk9Xd.js} +1 -1
  223. package/dist/assets/{use-return-to-short-circuit-BxcUEcT0.js → use-return-to-short-circuit-CY3AuCF9.js} +1 -1
  224. package/dist/assets/{use-save-twilio-credentials-cvialhOy.js → use-save-twilio-credentials-BWaLXE4J.js} +1 -1
  225. package/dist/assets/{use-side-list-room-B4aMMgSM.js → use-side-list-room-CO7nxluQ.js} +1 -1
  226. package/dist/assets/{use-skill-actions-BJnqKPy2.js → use-skill-actions-D7CK9Jhy.js} +1 -1
  227. package/dist/assets/{use-skill-detail-files-Dr4hogsT.js → use-skill-detail-files-Cop9LnVd.js} +1 -1
  228. package/dist/assets/{use-sticky-profiles-BzJCyWjh.js → use-sticky-profiles-D3ybBRfX.js} +1 -1
  229. package/dist/assets/{use-stt-language-selection-CqvYwuRJ.js → use-stt-language-selection-Dkm4Uq69.js} +1 -1
  230. package/dist/assets/{use-subagent-card-data-Ck-rTbqy.js → use-subagent-card-data-DbKFX1Jc.js} +1 -1
  231. package/dist/assets/{use-swipe-horizontal-DqSSUt1N.js → use-swipe-horizontal-BwZ0yvoM.js} +1 -1
  232. package/dist/assets/use-touch-mobile-CaIiM-us.js +1 -0
  233. package/dist/assets/use-transcript-message-by-id-BbJqGOYZ.js +1 -0
  234. package/dist/assets/{use-transcript-messages-D2DbIxRi.js → use-transcript-messages-Bp4Jsfks.js} +1 -1
  235. package/dist/assets/{use-voice-sample-preview-DgOqv2M7.js → use-voice-sample-preview-4vpwPGNW.js} +1 -1
  236. package/dist/assets/{useTranslation-CJMg4EBF.js → useTranslation-CCDbxnME.js} +1 -1
  237. package/dist/assets/{voice-page-Cle_chtc.js → voice-page--99ik4mV.js} +1 -1
  238. package/dist/assets/{voice-providers-note-CtAmFnWb.js → voice-providers-note-7m0LvxmN.js} +1 -1
  239. package/dist/assets/{web-B3W2e_Vh.js → web-0-rqi4je.js} +1 -1
  240. package/dist/assets/{web-Dc65176I.js → web-8fcyoNsL.js} +1 -1
  241. package/dist/assets/{web-CY247JIt.js → web-DCamMnI1.js} +1 -1
  242. package/dist/assets/{web-67Khnm-P.js → web-DIlEhBsT.js} +1 -1
  243. package/dist/assets/{web-B1q1ICxT.js → web-Do_X9zWq.js} +1 -1
  244. package/dist/assets/{web-BTPJ9E5m.js → web-DsVO-tkH.js} +1 -1
  245. package/dist/assets/{web-BCijmPgJ.js → web-UN0kX9ic.js} +1 -1
  246. package/dist/assets/{web-DRglVskM.js → web-aW1scjmM.js} +1 -1
  247. package/dist/assets/{web-BLn6q1jU.js → web-eVpCzMlE.js} +1 -1
  248. package/dist/assets/{welcome-screen-BLOCzpJp.js → welcome-screen-Drdb1oS6.js} +1 -1
  249. package/dist/assets/{workflow-detail-panel-C2uCVk6h.js → workflow-detail-panel-DS9_MRNg.js} +1 -1
  250. package/dist/assets/{workspace-page-DDLacEWd.js → workspace-page-CPDwYVlW.js} +1 -1
  251. package/dist/assets/{workspace-tree-query-yJYR72mM.js → workspace-tree-query-DzYz0-QE.js} +1 -1
  252. package/dist/index.html +118 -118
  253. package/package.json +1 -1
  254. package/dist/assets/auth-store-DHZaL7sV.js +0 -2
  255. package/dist/assets/bookmarks-page-d8nnNDbX.js +0 -1
  256. package/dist/assets/checkout-continuation-Dy6JhKe2.js +0 -1
  257. package/dist/assets/checkout-return-target-DL3gHGhi.js +0 -1
  258. package/dist/assets/common-p0vxUnEQ.js +0 -1
  259. package/dist/assets/companion-surface-page-mFuAra3C.js +0 -1
  260. package/dist/assets/consent-B28ImHdT.js +0 -1
  261. package/dist/assets/developer-page-EXPzzlyV.js +0 -1
  262. package/dist/assets/dist-DMYOKN8y.js +0 -1
  263. package/dist/assets/esm-0I5Dlpfv.js +0 -2
  264. package/dist/assets/esm-3UB7kHQk.js +0 -1
  265. package/dist/assets/esm-ByRflon4.js +0 -2
  266. package/dist/assets/esm-CQSb4ucv.js +0 -2
  267. package/dist/assets/esm-Cg0JWVKA.js +0 -2
  268. package/dist/assets/esm-DRm8O1kL.js +0 -2
  269. package/dist/assets/feature-flag-catalog-BE_ZpOEG.js +0 -1
  270. package/dist/assets/feed-item-status-actions-Cz3H5a6L.js +0 -1
  271. package/dist/assets/general-page-B9DgYoMz.js +0 -1
  272. package/dist/assets/index-ClaG_N2S.css +0 -2
  273. package/dist/assets/internal-thread-actions-DNd3HO_g.js +0 -1
  274. package/dist/assets/native-anchor-BrkS1YE6.js +0 -1
  275. package/dist/assets/popover-D3A6cIyW.js +0 -1
  276. package/dist/assets/routes-DyzEBtxt.js +0 -24
  277. package/dist/assets/select-assistant-screen-Bo3KgcFM.js +0 -1
  278. package/dist/assets/settings-CNNFT1Oh.js +0 -1
  279. package/dist/assets/use-app-theme-CMwGeP40.js +0 -1
  280. package/dist/assets/use-touch-mobile-Dr8DcEJC.js +0 -1
  281. package/dist/assets/use-transcript-message-by-id-NAxAU6wP.js +0 -1
  282. /package/dist/assets/{dist-RzxQVwj7.js → dist-D7UWVopK.js} +0 -0
  283. /package/dist/assets/{native-deep-link-D1B4PPZo.js → native-deep-link-IwasVyFQ.js} +0 -0
  284. /package/dist/assets/{onboarding-store-CXXioE_U.js → onboarding-store-9CMrOvS2.js} +0 -0
  285. /package/dist/assets/{react-query.gen-OpeDEMIm.js → react-query.gen-CYP-Tn4K.js} +0 -0
  286. /package/dist/assets/{routes-Bj1LYNBZ.js → routes-yNhBxUSb.js} +0 -0
  287. /package/dist/assets/{theme-preferences-DYqPKXf4.js → theme-preferences-CAlH0BJX.js} +0 -0
  288. /package/dist/assets/{typed-storage-CMa-TZhF.js → typed-storage-BNw603jr.js} +0 -0
  289. /package/dist/assets/{use-assistant-avatar-By4FjR0h.js → use-assistant-avatar-adekIS8v.js} +0 -0
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r,h as i,n as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-EuRl-wrW.js";import{t as s}from"./useQuery-CTSuec5b.js";import{t as c}from"./useMutation-D2YPyfEH.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{t as u}from"./typography-DekrYXvs.js";import{t as d}from"./card-DUsAeHUS.js";import{n as f}from"./list-row-D1odQOMJ.js";import{t as p}from"./createLucideIcon-B-ZPaMbU.js";import{t as m}from"./arrow-left-Ciai6BHG.js";import{t as h}from"./arrow-right-BH9GyonN.js";import{D as g,E as _,O as v,a as y,c as ee,h as b,p as x,u as S}from"./use-save-twilio-credentials-cvialhOy.js";import{t as C}from"./circle-check-big-C9sLhbGa.js";import{t as w}from"./ellipsis-vertical-D3SJdQ4P.js";import{t as te}from"./link-2-CTrfUFQw.js";import{t as T}from"./loader-circle-C9QjVTuc.js";import{t as E}from"./mail-BFnJM9hP.js";import{t as ne}from"./message-square-CENNR7tf.js";import{t as D}from"./pencil-RFB2IyLT.js";import{t as O}from"./plus-BDSluxb4.js";import{t as k}from"./search-FGnzWjRX.js";import{t as A}from"./send-CnqSHaqf.js";import{t as j}from"./user-plus-BsoY_aiQ.js";import{t as M}from"./tag-Ddzwz3ij.js";import{t as N}from"./input-DkgpMeG9.js";import{t as P}from"./modal-UYNawsIu.js";import{n as re}from"./toast-ZCXyBjoj.js";import{t as F}from"./confirm-dialog--7V28331.js";import{t as ie}from"./assistant-identity-store-DrQJhZh3.js";import{s as I}from"./i18n-7Z5ghN39.js";import{t as L}from"./Trans-Ayy2zoN6.js";import{t as R}from"./useTranslation-CJMg4EBF.js";import{C as ae}from"./sdk.gen-hZs6YBR0.js";import{d as oe}from"./routes-Bj1LYNBZ.js";import{C as se,T as z,en as ce,s as le,tn as ue,w as de}from"./react-query.gen-OpeDEMIm.js";import{r as fe}from"./conversation-navigation-Cg1rXwwx.js";import{t as pe}from"./assistant-feature-flag-store-DPde0AIx.js";import{t as B}from"./use-active-assistant-id-BFE4r9Rp.js";import{t as V}from"./detail-card-DBxsIpmu.js";import{n as me,r as he,t as ge}from"./use-side-list-room-B4aMMgSM.js";import{c as H,i as _e,n as ve,r as U,t as ye}from"./use-invite-link-dialog-Dn0_apkq.js";import{a as be,i as xe,n as W,t as Se}from"./contacts-gateway-CoPOXTzi.js";var G=p(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ce=p(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),K=e(t(),1),we=new Set([`slack`]);function Te(e){return e.status===`verified`||e.status===`active`&&e.verifiedAt!=null}function Ee(e){switch(e){case`slack`:return`channelType.slack`;case`telegram`:return`channelType.telegram`;case`whatsapp`:return`channelType.whatsapp`;case`a2a`:return`channelType.a2a`;case`phone`:return`channelType.phone`;case`email`:return`channelType.email`;default:return null}}function q(e){let t=Ee(e.toLowerCase());return t?I(t,{ns:`contacts`}):e}var De=`New Contact`;function Oe(e){return e===De}var J=l();function ke({channels:e,pendingChannelKey:t=null,onConnect:n,onDisconnect:r}){let{t:i}=R(`contacts`),[a,o]=(0,K.useState)(null);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:e.map((e,i)=>(0,J.jsxs)(`div`,{children:[i>0?(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,J.jsx)(Ae,{channel:e,pending:t===e.key,onConnect:n?()=>n(e.key):void 0,onDisconnect:r?()=>o(e.key):void 0})]},e.key))}),(0,J.jsx)(F,{open:a!==null,title:i(`assistantContactChannels.disconnectConfirmTitle`,{channel:a?x(a):``}),message:i(`assistantContactChannels.disconnectConfirmMessage`),confirmLabel:i(`actions.disconnect`),destructive:!0,onConfirm:()=>{a&&r&&r(a),o(null)},onCancel:()=>o(null)})]})}function Ae({channel:e,pending:t,onConnect:r,onDisconnect:i}){let{t:a}=R(`contacts`),o=e.status===`ready`;return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(S,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:x(e.key)}),o&&e.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:o?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),a(`channelStatus.connected`)]}),(0,J.jsx)(n,{variant:`danger`,onClick:i,disabled:!i||t,children:a(t?`actions.disconnecting`:`actions.disconnect`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:r,disabled:!r||t,children:a(`actions.connect`)})})]})}function Y({role:e,contactType:t}){let{label:n,tone:r}=X(e,t);return(0,J.jsx)(M,{tone:r,children:n})}function X(e,t){switch(e){case`guardian`:return{label:`Guardian`,tone:`positive`};case`assistant`:return{label:`Assistant`,tone:`negative`};default:return t===`assistant`?{label:`Assistant`,tone:`negative`}:{label:`Human`,tone:`warning`}}}function je({assistantName:e,...t}){let{t:n}=R(`contacts`),r=b(e);return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:n(`assistantChannelsDetail.title`,{name:r}),accessory:(0,J.jsx)(Y,{role:`assistant`}),compactAccessory:!0}),(0,J.jsx)(V,{title:n(`assistantChannelsDetail.channelsTitle`),subtitle:n(`assistantChannelsDetail.channelsSubtitle`,{name:r}),children:(0,J.jsx)(ke,{...t})})]})}var Me=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Z(e){return Me.has(e)}function Q(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t!=null&&Te(t)?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function Ne(e,t,n){let r=[],i=new Set;if(e)for(let t of e)t.id===`a2a`&&!n||(r.push(t),i.add(t.id));for(let e of t)e.status===`revoked`||i.has(e.type)||e.type===`a2a`&&!n||Z(e.type)&&(r.push({id:e.type,source:`default`,label:e.type.charAt(0).toUpperCase()+e.type.slice(1),subtitle:``,icon:`help-circle`,supportsVerification:!1,setupMessages:{guardian:``,contact:``}}),i.add(e.type));return r}function Pe({name:e,className:t,style:n}){switch(e){case`bot`:return(0,J.jsx)(v,{className:t,style:n});case`hash`:return(0,J.jsx)(g,{className:t,style:n});case`send`:return(0,J.jsx)(A,{className:t,style:n});case`phone`:return(0,J.jsx)(_,{className:t,style:n});case`mail`:return(0,J.jsx)(E,{className:t,style:n});case`message-square`:return(0,J.jsx)(ne,{className:t,style:n});default:return(0,J.jsx)(G,{className:t,style:n})}}function Fe({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r,verifyLoading:i,verifySubject:a=`self`,onSetupChannel:o,onVerifyChannel:s,onRevokeChannel:c,onLinkAccount:l}){let{t:u}=R(`contacts`),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(null),h=new Map;for(let t of e)t.status!==`revoked`&&(h.has(t.type)||h.set(t.type,t));return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:Ne(t,e,n).map((e,t)=>{let n=h.get(e.id);return(0,J.jsxs)(`div`,{children:[t>0&&(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,J.jsx)($,{info:e,existing:n,setupLabel:r??u(`contactChannelsSection.setupDefault`),verifyLoading:i,onSetup:o?()=>o(e.id):void 0,onVerify:s&&e.supportsVerification?()=>f(e):void 0,onRevoke:c&&n?()=>m({channelId:n.id,channel:e}):void 0,onLinkAccount:l&&we.has(e.id)?()=>l(e.id):void 0})]},e.id)})}),d&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.verifyConfirmTitle`,{channel:d.label}),message:u(a===`contact`?`contactChannelsSection.verifyConfirmMessageContact`:`contactChannelsSection.verifyConfirmMessageGuardian`,{channel:d.label}),confirmLabel:u(`actions.verify`),onConfirm:()=>{d&&(s?.(d.id),f(null))},onCancel:()=>f(null)}),p&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.revokeConfirmTitle`,{channel:p.channel.label}),message:u(`contactChannelsSection.revokeConfirmMessage`),confirmLabel:u(`actions.revoke`),destructive:!0,onConfirm:()=>{c?.(p.channelId,p.channel.id),m(null)},onCancel:()=>m(null)})]})}function $({info:e,existing:t,setupLabel:r,verifyLoading:i,onSetup:a,onVerify:o,onRevoke:s,onLinkAccount:c}){let{t:l}=R(`contacts`),u=Q(e,t);return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(Pe,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:u.kind===`connected`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.connected`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`verified`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.verified`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`unverified`?(0,J.jsx)(n,{variant:`outlined`,onClick:o,disabled:!o||i,children:l(i?`actions.verifying`:`actions.verify`)}):u.kind===`setup`?e.id===`a2a`?null:(0,J.jsxs)(J.Fragment,{children:[c?(0,J.jsxs)(n,{onClick:c,children:[(0,J.jsx)(te,{className:`h-3.5 w-3.5`}),l(`contactChannelsSection.linkAccount`)]}):null,(0,J.jsx)(n,{variant:`outlined`,onClick:a,disabled:!a,children:r})]}):null})]})}function Ie(e){return(0,J.jsx)(Le,{...e},e.contact.id)}function Le({contact:e,savePending:t,deletePending:r,verifyPending:i,mergePending:a=!1,canMerge:o=!1,availableChannels:s,a2aEnabled:c,onSave:l,onDelete:u,onMerge:d,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h}){let{t:g}=R(`contacts`),_=Oe(e.displayName),[v,y]=(0,K.useState)(_?``:e.displayName),[ee,b]=(0,K.useState)(e.notes??``),[x,S]=(0,K.useState)(!1),C=v.trim(),w=ee.trim(),te=_?``:e.displayName,T=e.notes??``,E=C!==te||w!==T,ne=C.length>0&&E&&!t&&!r,D=_&&e.channels.length===0&&e.interactionCount===0,O=C||(_?g(`contact.draftName`):e.displayName),k=g(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:O,accessory:(0,J.jsx)(Y,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:k,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:g(`contact.nameLabel`),type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:g(`contactDetailView.namePlaceholder`),autoFocus:_,disabled:t||r,fullWidth:!0}),(0,J.jsx)(N,{label:g(`contact.notesLabel`),type:`text`,value:ee,onChange:e=>b(e.target.value),placeholder:g(`contactDetailView.notesPlaceholder`),disabled:t||r,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{type:`button`,onClick:()=>l({displayName:C,notes:w}),disabled:!ne,children:g(t?`actions.saving`:`actions.save`)}),d?(0,J.jsx)(n,{type:`button`,variant:`outlined`,onClick:d,disabled:!o||D||E||a||t||r,title:o?D?g(`contactDetailView.mergeBlockedUnsavedDraft`):E?g(`contact.mergeBlockedUnsaved`):void 0:g(`contact.mergeBlockedNoCandidates`),children:g(a?`actions.merging`:`actions.merge`)}):null,(0,J.jsx)(n,{type:`button`,variant:`danger`,onClick:()=>{D?u():S(!0)},disabled:r,children:g(r?`actions.deleting`:`contactDetailView.delete`)})]})]})}),(0,J.jsx)(V,{title:g(`contactDetailView.linkedAccountsTitle`),subtitle:g(`contactDetailView.linkedAccountsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:s,a2aEnabled:c,verifyLoading:i,verifySubject:`contact`,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h})}),(0,J.jsx)(F,{open:x,title:g(`contactDetailView.deleteConfirmTitle`,{name:O}),message:g(`contactDetailView.deleteConfirmMessage`),confirmLabel:g(`actions.delete`),destructive:!0,onConfirm:()=>{S(!1),u()},onCancel:()=>S(!1)})]})}function Re(e){return(0,J.jsx)(ze,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function ze({open:e,survivor:t,candidates:r,pending:i,errorMessage:a,onMerge:o,onClose:s}){let{t:c}=R(`contacts`),[l,d]=(0,K.useState)(``),[f,p]=(0,K.useState)(null);(0,K.useEffect)(()=>{f&&!r.some(e=>e.id===f)&&p(null)},[r,f]);let h=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();return e?r.filter(t=>t.displayName.toLowerCase().includes(e)):r},[r,l]),g=f?r.find(e=>e.id===f)??null:null,_=We(t);return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>{!e&&!i&&s()},children:(0,J.jsxs)(P.Content,{size:`md`,children:[(0,J.jsxs)(P.Header,{icon:Ce,children:[(0,J.jsx)(P.Title,{children:g?c(`contactMergeDialog.titlePicked`,{donor:g.displayName,survivor:_}):c(`contactMergeDialog.titlePicking`,{survivor:_})}),(0,J.jsx)(P.Description,{children:c(g?`contactMergeDialog.descriptionPicked`:`contactMergeDialog.descriptionPicking`)})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[g?(0,J.jsx)(He,{survivor:t,donor:g}):r.length===0?(0,J.jsx)(Ue,{}):(0,J.jsx)(Be,{search:l,onSearch:d,candidates:h,onPick:p}),a?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:a}):null]}),(0,J.jsx)(P.Footer,{children:g?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(n,{variant:`outlined`,onClick:()=>p(null),disabled:i,leftIcon:(0,J.jsx)(m,{"aria-hidden":!0}),children:c(`actions.back`)}),(0,J.jsx)(n,{variant:`danger`,onClick:()=>o(g.id),disabled:i,children:c(i?`actions.merging`:`contactMergeDialog.confirm`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:s,disabled:i,children:c(`actions.cancel`)})})]})})}function Be({search:e,onSearch:t,candidates:n,onPick:r}){let{t:i}=R(`contacts`);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(N,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i(`contactMergeDialog.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,J.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":i(`contactMergeDialog.listAriaLabel`),children:n.length===0?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:i(`contactsList.noMatches`)}):n.map(e=>(0,J.jsx)(Ve,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Ve({contact:e,onPick:t}){let n=Ke(e).join(` | `)||void 0;return(0,J.jsx)(f,{asChild:!0,children:(0,J.jsx)(`button`,{type:`button`,onClick:t,role:`option`,"aria-selected":`false`,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,J.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function He({survivor:e,donor:t}){let{t:n}=R(`contacts`),r=We(e),{moved:i,duplicates:a}=Ge(e,t);return(0,J.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,J.jsx)(`li`,{children:(0,J.jsx)(L,{i18nKey:`contactMergeDialog.donorDeleted`,ns:`contacts`,values:{donor:t.displayName},components:{donor:(0,J.jsx)(`span`,{className:`text-(--content-default)`})}})}),(0,J.jsx)(`li`,{children:n(`contactMergeDialog.channelsMoved`,{count:i.length,survivor:r,channels:i.map(e=>q(e.type)).join(`, `)})}),a.length>0?(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.duplicatesSkipped`,{count:a.length,survivor:r})}):null,t.notes?(0,J.jsx)(`li`,{children:n(`contactMergeDialog.notesAppended`)}):null,(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.irreversible`)})]})}function Ue(){let{t:e}=R(`contacts`);return(0,J.jsx)(u,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:e(`contactMergeDialog.empty`)})}function We(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?I(`survivorName.you`,{ns:`contacts`}):I(`survivorName.youNamed`,{ns:`contacts`,name:e.displayName}):e.displayName||I(`survivorName.thisContact`,{ns:`contacts`})}function Ge(e,t){let n=[],r=[];for(let i of t.channels)i.status!==`revoked`&&(e.channels.some(e=>e.type===i.type&&e.address.toLowerCase()===i.address.toLowerCase())?r.push(i):n.push(i));return{moved:n,duplicates:r}}function Ke(e){let t=new Set,n=[];for(let r of e.channels){if(r.status===`revoked`)continue;let e=r.type.toLowerCase();t.has(e)||(t.add(e),n.push(q(e)))}return n}function qe({loading:e,guardian:t,assistantName:r,regularContacts:i,selection:a,onSelect:o,onAddContact:s,addingContact:c=!1,search:l,onSearchChange:u}){let{t:f}=R(`contacts`),p=l.trim()?i.filter(e=>e.displayName.toLowerCase().includes(l.trim().toLowerCase())):i;return(0,J.jsx)(d.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,J.jsxs)(d.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:f(`contactsList.heading`)}),(0,J.jsx)(n,{type:`button`,variant:`ghost`,iconOnly:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(O,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":f(`contactsList.addAriaLabel`),tintColor:`var(--content-secondary)`})]}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,J.jsx)(Je,{name:t.displayName?f(`contactsList.youNamed`,{name:t.displayName}):f(`contactsList.you`),role:t.role,channelTypes:t.channelTypes,selected:a?.kind===`contact`&&a.contactId===t.id,onClick:()=>o({kind:`contact`,contactId:t.id}),trailingIcon:`pencil`}):null,(0,J.jsx)(Je,{name:r?.trim()||f(`contactsList.assistantFallback`),role:`assistant`,selected:a?.kind===`assistant`,onClick:()=>o({kind:`assistant`}),trailingIcon:`more`})]}),(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),i.length>0?(0,J.jsx)(N,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:f(`contactsList.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,i.length>0?(0,J.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto flex flex-col gap-1`,children:[p.map(e=>(0,J.jsx)(Je,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,verified:e.verified,selected:a?.kind===`contact`&&a.contactId===e.id,onClick:()=>o({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),p.length===0?(0,J.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:f(`contactsList.noMatches`)}):null]}):e?null:(0,J.jsx)(n,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(j,{"aria-hidden":!0}),children:f(`contactsList.add`)})]})})}function Je({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o,verified:s}){let{t:c}=R(`contacts`),l=r&&r.length>0?r.join(` | `):void 0,u=o===`pencil`?(0,J.jsx)(D,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):o===`more`?(0,J.jsx)(w,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):void 0;return(0,J.jsx)(f,{asChild:!0,active:i,children:(0,J.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),l?(0,J.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:l}):null]}),(0,J.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1`,children:[s===void 0?null:(0,J.jsx)(M,{tone:s?`positive`:`neutral`,children:c(s?`contactsList.verified`:`contactsList.unverified`)}),(0,J.jsx)(Y,{role:t,contactType:n}),u]})]})})}function Ye(e){return(0,J.jsx)(Xe,{...e},e.contact.id)}function Xe({contact:e,savePending:t,verifyPending:r,mergePending:i=!1,canMerge:a=!1,availableChannels:o,a2aEnabled:s,onSave:c,onMerge:l,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f,onGenerateInviteLink:p}){let{t:m}=R(`contacts`),h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,K.useState)(g),[y,ee]=(0,K.useState)(e.notes??``),b=_.trim(),x=y.trim(),S=b!==g.trim()||x!==(e.notes??``).trim(),C=S&&!t,w=m(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:h?m(`contactsList.you`):m(`contactsList.youNamed`,{name:e.displayName}),accessory:(0,J.jsx)(Y,{role:`guardian`}),compactAccessory:!0,subtitle:w,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:m(`contact.nameLabel`),type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:m(`guardianDetailView.namePlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsx)(N,{label:m(`contact.notesLabel`),type:`text`,value:y,onChange:e=>ee(e.target.value),placeholder:m(`guardianDetailView.notesPlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{variant:`primary`,onClick:()=>c({displayName:b||e.displayName,notes:x}),disabled:!C,children:m(t?`actions.saving`:`actions.save`)}),l?(0,J.jsx)(n,{variant:`outlined`,onClick:l,disabled:!a||S||i||t,title:a?S?m(`contact.mergeBlockedUnsaved`):void 0:m(`contact.mergeBlockedNoCandidates`),children:m(i?`actions.merging`:`actions.merge`)}):null]})]})}),(0,J.jsx)(V,{title:m(`guardianDetailView.channelsTitle`),subtitle:m(`guardianDetailView.channelsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:o,a2aEnabled:s,setupLabel:m(`guardianDetailView.setupLabel`),verifyLoading:r,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),p?(0,J.jsx)(U,{onClick:p}):null]})}function Ze(e,t){let n=t.trim().toLowerCase().replace(/^@/,``);return n===``?e:e.filter(e=>e.displayName.toLowerCase().includes(n)||e.username.toLowerCase().includes(n))}function Qe(e){let t=e.trim().split(/\s+/).filter(Boolean);return`${t[0]?.[0]??`?`}${t.length>1?t[t.length-1]?.[0]??``:``}`.toUpperCase()}function $e({open:e,channelLabel:t,contactName:r,accounts:i,loading:a,errorMessage:o,pendingAccountId:s,onPick:c,onClose:l,onInviteInstead:u}){let{t:d}=R(`contacts`),[f,p]=(0,K.useState)(``);(0,K.useEffect)(()=>{e&&p(``)},[e]);let m=(0,K.useMemo)(()=>Ze(i??[],f),[i,f]),g=s!=null;return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>!e&&l(),children:(0,J.jsxs)(P.Content,{size:`sm`,children:[(0,J.jsxs)(P.Header,{children:[(0,J.jsx)(P.Title,{children:d(`linkAccountDialog.title`,{channel:t})}),(0,J.jsx)(P.Description,{children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.description`,ns:`contacts`,values:{channel:t,name:r},components:{contact:(0,J.jsx)(`span`,{className:`text-[color:var(--content-default)]`})}})})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[(0,J.jsx)(N,{type:`search`,value:f,onChange:e=>p(e.target.value),placeholder:d(`linkAccountDialog.searchPlaceholder`),"aria-label":d(`linkAccountDialog.searchAriaLabel`,{channel:t}),leftIcon:(0,J.jsx)(k,{className:`h-4 w-4`}),fullWidth:!0}),o?(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-negative)]`,children:o}):null,(0,J.jsx)(`div`,{className:`max-h-80 overflow-y-auto`,children:a?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.loading`)}):m.length===0?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:(i?.length??0)===0?d(`linkAccountDialog.noMembers`):d(`linkAccountDialog.noMatches`)}):(0,J.jsx)(`ul`,{className:`flex flex-col`,children:m.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>c(e),disabled:g,className:`flex w-full cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-[var(--surface-overlay)] disabled:cursor-not-allowed disabled:opacity-60`,children:[e.imageUrl?(0,J.jsx)(`img`,{src:e.imageUrl,alt:``,className:`h-8 w-8 shrink-0 rounded-full`}):(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--tag-bg-neutral)] text-body-small-emphasised text-[color:var(--content-secondary)]`,children:Qe(e.displayName)}),(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default text-[color:var(--content-default)]`,children:e.displayName}),(0,J.jsxs)(`span`,{className:`truncate text-body-small-default text-[color:var(--content-tertiary)]`,children:[`@`,e.username]})]}),s===e.id?(0,J.jsx)(`span`,{className:`ml-auto shrink-0 text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.linking`)}):null]})},e.id))})})]}),(0,J.jsxs)(P.Footer,{className:`items-center justify-between gap-3 border-t border-[var(--border-base)]`,children:[(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.guardianLinkNote`,ns:`contacts`,components:{emphasis:(0,J.jsx)(`span`,{className:`text-[color:var(--content-secondary)]`})}})}),u?(0,J.jsxs)(n,{variant:`link`,className:`shrink-0`,onClick:u,disabled:g,children:[d(`linkAccountDialog.inviteInstead`),(0,J.jsx)(h,{className:`h-3.5 w-3.5`})]}):null]})]})})}function et({assistantId:e,channelType:t,contact:n,onLinked:r}){let[i,a]=(0,K.useState)(!1),o=c({mutationFn:n=>W(e,n.contact,{type:t,address:n.account.id}),onSuccess:(e,t)=>{a(!1),re.success(I(`accountLink.linked`,{ns:`contacts`,username:t.account.username})),r()}}),s=(0,K.useCallback)(()=>{o.reset(),a(!0)},[o]),l=(0,K.useCallback)(()=>{o.isPending||(o.reset(),a(!1))},[o]),u=(0,K.useCallback)(e=>{!n||o.isPending||o.mutate({contact:n,account:e})},[n,o]);return{channelType:t,dialogOpen:i,open:s,close:l,linkErrorMessage:o.error instanceof Error?o.error.message:o.error?I(`accountLink.linkFailed`,{ns:`contacts`}):null,pendingAccountId:o.isPending?o.variables.account.id:null,pick:u}}var tt=[{id:`slack`,source:`default`,label:`Slack`,subtitle:`Message your assistant from Slack`,icon:`hash`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Slack. Can you help me set that up?`,contact:`I'd like to verify a contact's Slack identity. Can you walk me through it?`}},{id:`telegram`,source:`default`,label:`Telegram`,subtitle:`Message your assistant from Telegram`,icon:`send`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Telegram. Can you help me set that up?`,contact:`I'd like to verify a contact's Telegram identity. Can you walk me through it?`}},{id:`phone`,source:`default`,label:`Phone Calling`,subtitle:`Call or text your assistant via phone`,icon:`phone`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian for phone calls. Can you help me set that up?`,contact:`I'd like to verify a contact's phone number. Can you help me set that up?`}}],nt=[];function rt({assistantId:e,onStartSetupConversation:t}){let{t:n}=R(`contacts`),r=pe.use.a2aChannel(),l=ie.use.name(),u=o(),[d]=i(),f=d.get(`setup`),p=f&&ee(f)?f:null,[m,h]=(0,K.useState)({kind:`assistant`}),g=ye(e),{paneRef:_,hasRoomForList:v,drawerOpen:x,openDrawer:S,closeDrawer:C}=ge(),[w,te]=(0,K.useState)(``),[T,E]=(0,K.useState)(!1),ne=b(l),D=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),O=de(D),k=s({...se(D),enabled:!!e,select:e=>e.contacts}),A=ve({assistantId:e,onStartSetupConversation:t}),j=s({...le({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await ae({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:tt};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??nt,M=k.data,N=(0,K.useMemo)(()=>M?.find(e=>e.role===`guardian`)??null,[M]),P=(0,K.useMemo)(()=>M?.filter(e=>e.role!==`guardian`)??[],[M]),F=(0,K.useMemo)(()=>m.kind===`contact`?M?.find(e=>e.id===m.contactId)??null:null,[M,m]),I=(0,K.useMemo)(()=>!M||!F?[]:M.filter(e=>e.id!==F.id&&e.role!==`guardian`),[M,F]),L=I.length>0,fe=(0,K.useRef)(!!p);(0,K.useEffect)(()=>{fe.current||N&&(fe.current=!0,h({kind:`contact`,contactId:N.id}))},[N]);let B=(0,K.useCallback)(()=>u.invalidateQueries({queryKey:O}),[u,O]),V=c({mutationFn:()=>xe(e,{displayName:De}),onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:e=>{z(u,D,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),h({kind:`contact`,contactId:e.id})},onError:H(n(`contactsPage.createFailed`)),onSettled:()=>B()}),U=c({mutationFn:t=>Se(e,t),onSuccess:(e,t)=>{z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),h({kind:`assistant`})},onError:H(n(`contactsPage.deleteFailed`)),onSettled:()=>B()}),W=c({mutationFn:({contactId:t,patch:n})=>xe(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{z(u,D,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onError:H(n(`contactsPage.saveFailed`)),onSettled:()=>B()}),G=ue({onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:(e,t)=>{let r=e.contact,i=t.body.mergeId;r&&(z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==i).map(e=>e.id===r.id?r:e)}:void 0),h({kind:`contact`,contactId:r.id})),E(!1),re.success(n(`contactsPage.mergeSucceeded`))},onSettled:()=>B()}),Ce=(0,K.useCallback)(e=>{h(e),C(),E(!1),G.reset()},[C,G]),we=(0,K.useCallback)(()=>{G.reset(),E(!0)},[G]),Te=(0,K.useCallback)(()=>{G.isPending||(E(!1),G.reset())},[G]),Ee=ce({onSuccess:()=>B()}),Oe=(0,K.useCallback)((t,n)=>{Ee.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[Ee,e]),ke=(0,K.useCallback)(()=>{V.isPending||V.mutate()},[V]),Ae=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[j,t]),Y=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[j,t]),X=c({mutationFn:t=>be(e,t.channelId),onSuccess:()=>B(),onError:H(n(`contactsPage.verifyFailed`))}),Me=(0,K.useCallback)(e=>{if(!F)return;let t=F.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&X.mutate({channelId:t.id})},[F,X]),Z=et({assistantId:e,channelType:`slack`,contact:F?{id:F.id,displayName:F.displayName}:null,onLinked:B}),Q=s({...y(e),enabled:!!e&&Z.dialogOpen,select:e=>e.users}),Ne=A.channels.some(e=>e.key===`slack`&&e.status===`ready`),Pe=(0,K.useCallback)(e=>{e===Z.channelType&&Z.open()},[Z]),Fe=U.isPending?U.variables:null,$=(0,K.useMemo)(()=>F?W.isPending&&W.variables?.contactId===F.id?{...F,displayName:W.variables.patch.displayName,notes:W.variables.patch.notes}:F:null,[F,W.isPending,W.variables]);if(p)return(0,J.jsx)(a,{to:`${oe.channels}?setup=${p}`,replace:!0});let Le={loading:k.isLoading,assistantName:ne,guardian:N?{id:N.id,displayName:N.displayName.startsWith(`vellum-principal-`)?``:N.displayName,role:N.role,channelTypes:ot(N.channels,r)}:null,regularContacts:P.filter(e=>e.id!==Fe).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:ot(e.channels,r),verified:at(e.channels)})),selection:m,onAddContact:ke,addingContact:V.isPending,search:w,onSearchChange:te};return(0,J.jsxs)(`div`,{ref:_,className:`flex min-h-0 flex-1 overflow-hidden ${v?`flex-row gap-6`:`flex-col gap-4`}`,children:[v?(0,J.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,J.jsx)(qe,{...Le,onSelect:Ce})}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex items-center`,children:(0,J.jsx)(he,{onClick:S})}),(0,J.jsx)(me,{open:x,onClose:C,title:n(`contactsPage.title`),children:(0,J.jsx)(qe,{...Le,onSelect:Ce})})]}),(0,J.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:m.kind===`assistant`||m.kind===`contact`&&m.contactId===Fe?(0,J.jsx)(je,{assistantName:ne,channels:A.channels,pendingChannelKey:A.pendingChannelKey,onConnect:A.onSetup,onDisconnect:A.onDisconnect}):$?$.role===`guardian`?(0,J.jsx)(Ye,{contact:$,savePending:W.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onMerge:we,onSetupChannel:t?Y:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onGenerateInviteLink:r?g.open:void 0}):(0,J.jsx)(Ie,{contact:$,savePending:W.isPending,deletePending:U.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onDelete:()=>{U.mutate($.id)},onMerge:we,onSetupChannel:t?Ae:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onLinkAccount:Ne?Pe:void 0}):(0,J.jsx)(it,{})}),F?(0,J.jsx)(Re,{open:T,survivor:F,candidates:I,pending:G.isPending,errorMessage:G.error instanceof Error?G.error.message:G.error?n(`contactsPage.mergeFailed`):null,onMerge:t=>G.mutate({path:{assistant_id:e},body:{keepId:F.id,mergeId:t}}),onClose:Te}):null,(0,J.jsx)($e,{open:Z.dialogOpen,channelLabel:q(`slack`),contactName:F?.displayName??``,accounts:Q.data,loading:Q.isLoading,errorMessage:Q.isError?n(`contactsPage.rosterLoadFailed`):Z.linkErrorMessage,pendingAccountId:Z.pendingAccountId,onPick:Z.pick,onClose:Z.close,onInviteInstead:t?()=>{Z.close(),Ae(Z.channelType)}:void 0}),(0,J.jsx)(_e,{open:g.isOpen,assistantId:e,onClose:g.close})]})}function it(){let{t:e}=R(`contacts`);return(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e(`contactsPage.emptyBody`)})})}function at(e){return e.some(e=>e.status!==`revoked`&&(e.type===`a2a`||Te(e)))}function ot(e,t){let n=new Set,r=[];for(let i of e){if(i.status===`revoked`)continue;let e=i.type.toLowerCase();n.has(e)||e===`a2a`&&!t||(n.add(e),r.push(q(e)))}return r}function st(){let e=r(),t=B();return(0,J.jsx)(rt,{assistantId:t,onStartSetupConversation:t=>{fe(e,{prompt:t})}},t)}export{st as ContactsPageRoute};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-C8CGr0T0.js";import{d as r,h as i,n as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-EuRl-wrW.js";import{t as s}from"./useQuery-CTSuec5b.js";import{t as c}from"./useMutation-D2YPyfEH.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{t as u}from"./typography-DekrYXvs.js";import{t as d}from"./card-DUsAeHUS.js";import{n as f}from"./list-row-6uedKE84.js";import{t as p}from"./createLucideIcon-B-ZPaMbU.js";import{t as m}from"./arrow-left-Ciai6BHG.js";import{t as h}from"./arrow-right-BH9GyonN.js";import{D as g,E as _,O as v,a as y,c as ee,h as b,p as x,u as S}from"./use-save-twilio-credentials-BWaLXE4J.js";import{t as C}from"./circle-check-big-C9sLhbGa.js";import{t as w}from"./ellipsis-vertical-D3SJdQ4P.js";import{t as te}from"./link-2-CTrfUFQw.js";import{t as T}from"./loader-circle-C9QjVTuc.js";import{t as E}from"./mail-BFnJM9hP.js";import{t as ne}from"./message-square-CENNR7tf.js";import{t as D}from"./pencil-RFB2IyLT.js";import{t as O}from"./plus-BDSluxb4.js";import{t as k}from"./search-FGnzWjRX.js";import{t as A}from"./send-CnqSHaqf.js";import{t as j}from"./user-plus-BsoY_aiQ.js";import{t as M}from"./tag-D2QYCm1p.js";import{t as N}from"./input-DlkBtbxm.js";import{t as P}from"./modal-DN_Uwwkg.js";import{n as re}from"./toast-CHtrY-GO.js";import{t as F}from"./confirm-dialog-DYmL6FRe.js";import{t as ie}from"./assistant-identity-store-DrQJhZh3.js";import{s as I}from"./i18n-C3bX3mTs.js";import{t as L}from"./Trans-CM5UUgDt.js";import{t as R}from"./useTranslation-CCDbxnME.js";import{C as ae}from"./sdk.gen-hZs6YBR0.js";import{d as oe}from"./routes-yNhBxUSb.js";import{C as se,T as z,en as ce,s as le,tn as ue,w as de}from"./react-query.gen-CYP-Tn4K.js";import{r as fe}from"./conversation-navigation-CfOyMc6W.js";import{t as pe}from"./assistant-feature-flag-store-CdXRp9pV.js";import{t as B}from"./use-active-assistant-id-BFE4r9Rp.js";import{t as V}from"./detail-card-DwBporBs.js";import{n as me,r as he,t as ge}from"./use-side-list-room-CO7nxluQ.js";import{c as H,i as _e,n as ve,r as U,t as ye}from"./use-invite-link-dialog-B1oz9iwD.js";import{a as be,i as xe,n as W,t as Se}from"./contacts-gateway-CoPOXTzi.js";var G=p(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ce=p(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),K=e(t(),1),we=new Set([`slack`]);function Te(e){return e.status===`verified`||e.status===`active`&&e.verifiedAt!=null}function Ee(e){switch(e){case`slack`:return`channelType.slack`;case`telegram`:return`channelType.telegram`;case`whatsapp`:return`channelType.whatsapp`;case`a2a`:return`channelType.a2a`;case`phone`:return`channelType.phone`;case`email`:return`channelType.email`;default:return null}}function q(e){let t=Ee(e.toLowerCase());return t?I(t,{ns:`contacts`}):e}var De=`New Contact`;function Oe(e){return e===De}var J=l();function ke({channels:e,pendingChannelKey:t=null,onConnect:n,onDisconnect:r}){let{t:i}=R(`contacts`),[a,o]=(0,K.useState)(null);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:e.map((e,i)=>(0,J.jsxs)(`div`,{children:[i>0?(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,J.jsx)(Ae,{channel:e,pending:t===e.key,onConnect:n?()=>n(e.key):void 0,onDisconnect:r?()=>o(e.key):void 0})]},e.key))}),(0,J.jsx)(F,{open:a!==null,title:i(`assistantContactChannels.disconnectConfirmTitle`,{channel:a?x(a):``}),message:i(`assistantContactChannels.disconnectConfirmMessage`),confirmLabel:i(`actions.disconnect`),destructive:!0,onConfirm:()=>{a&&r&&r(a),o(null)},onCancel:()=>o(null)})]})}function Ae({channel:e,pending:t,onConnect:r,onDisconnect:i}){let{t:a}=R(`contacts`),o=e.status===`ready`;return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(S,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:x(e.key)}),o&&e.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:o?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),a(`channelStatus.connected`)]}),(0,J.jsx)(n,{variant:`danger`,onClick:i,disabled:!i||t,children:a(t?`actions.disconnecting`:`actions.disconnect`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:r,disabled:!r||t,children:a(`actions.connect`)})})]})}function Y({role:e,contactType:t}){let{label:n,tone:r}=X(e,t);return(0,J.jsx)(M,{tone:r,children:n})}function X(e,t){switch(e){case`guardian`:return{label:`Guardian`,tone:`positive`};case`assistant`:return{label:`Assistant`,tone:`negative`};default:return t===`assistant`?{label:`Assistant`,tone:`negative`}:{label:`Human`,tone:`warning`}}}function je({assistantName:e,...t}){let{t:n}=R(`contacts`),r=b(e);return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:n(`assistantChannelsDetail.title`,{name:r}),accessory:(0,J.jsx)(Y,{role:`assistant`}),compactAccessory:!0}),(0,J.jsx)(V,{title:n(`assistantChannelsDetail.channelsTitle`),subtitle:n(`assistantChannelsDetail.channelsSubtitle`,{name:r}),children:(0,J.jsx)(ke,{...t})})]})}var Me=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Z(e){return Me.has(e)}function Q(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t!=null&&Te(t)?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function Ne(e,t,n){let r=[],i=new Set;if(e)for(let t of e)t.id===`a2a`&&!n||(r.push(t),i.add(t.id));for(let e of t)e.status===`revoked`||i.has(e.type)||e.type===`a2a`&&!n||Z(e.type)&&(r.push({id:e.type,source:`default`,label:e.type.charAt(0).toUpperCase()+e.type.slice(1),subtitle:``,icon:`help-circle`,supportsVerification:!1,setupMessages:{guardian:``,contact:``}}),i.add(e.type));return r}function Pe({name:e,className:t,style:n}){switch(e){case`bot`:return(0,J.jsx)(v,{className:t,style:n});case`hash`:return(0,J.jsx)(g,{className:t,style:n});case`send`:return(0,J.jsx)(A,{className:t,style:n});case`phone`:return(0,J.jsx)(_,{className:t,style:n});case`mail`:return(0,J.jsx)(E,{className:t,style:n});case`message-square`:return(0,J.jsx)(ne,{className:t,style:n});default:return(0,J.jsx)(G,{className:t,style:n})}}function Fe({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r,verifyLoading:i,verifySubject:a=`self`,onSetupChannel:o,onVerifyChannel:s,onRevokeChannel:c,onLinkAccount:l}){let{t:u}=R(`contacts`),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(null),h=new Map;for(let t of e)t.status!==`revoked`&&(h.has(t.type)||h.set(t.type,t));return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:Ne(t,e,n).map((e,t)=>{let n=h.get(e.id);return(0,J.jsxs)(`div`,{children:[t>0&&(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,J.jsx)($,{info:e,existing:n,setupLabel:r??u(`contactChannelsSection.setupDefault`),verifyLoading:i,onSetup:o?()=>o(e.id):void 0,onVerify:s&&e.supportsVerification?()=>f(e):void 0,onRevoke:c&&n?()=>m({channelId:n.id,channel:e}):void 0,onLinkAccount:l&&we.has(e.id)?()=>l(e.id):void 0})]},e.id)})}),d&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.verifyConfirmTitle`,{channel:d.label}),message:u(a===`contact`?`contactChannelsSection.verifyConfirmMessageContact`:`contactChannelsSection.verifyConfirmMessageGuardian`,{channel:d.label}),confirmLabel:u(`actions.verify`),onConfirm:()=>{d&&(s?.(d.id),f(null))},onCancel:()=>f(null)}),p&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.revokeConfirmTitle`,{channel:p.channel.label}),message:u(`contactChannelsSection.revokeConfirmMessage`),confirmLabel:u(`actions.revoke`),destructive:!0,onConfirm:()=>{c?.(p.channelId,p.channel.id),m(null)},onCancel:()=>m(null)})]})}function $({info:e,existing:t,setupLabel:r,verifyLoading:i,onSetup:a,onVerify:o,onRevoke:s,onLinkAccount:c}){let{t:l}=R(`contacts`),u=Q(e,t);return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(Pe,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:u.kind===`connected`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.connected`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`verified`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.verified`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`unverified`?(0,J.jsx)(n,{variant:`outlined`,onClick:o,disabled:!o||i,children:l(i?`actions.verifying`:`actions.verify`)}):u.kind===`setup`?e.id===`a2a`?null:(0,J.jsxs)(J.Fragment,{children:[c?(0,J.jsxs)(n,{onClick:c,children:[(0,J.jsx)(te,{className:`h-3.5 w-3.5`}),l(`contactChannelsSection.linkAccount`)]}):null,(0,J.jsx)(n,{variant:`outlined`,onClick:a,disabled:!a,children:r})]}):null})]})}function Ie(e){return(0,J.jsx)(Le,{...e},e.contact.id)}function Le({contact:e,savePending:t,deletePending:r,verifyPending:i,mergePending:a=!1,canMerge:o=!1,availableChannels:s,a2aEnabled:c,onSave:l,onDelete:u,onMerge:d,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h}){let{t:g}=R(`contacts`),_=Oe(e.displayName),[v,y]=(0,K.useState)(_?``:e.displayName),[ee,b]=(0,K.useState)(e.notes??``),[x,S]=(0,K.useState)(!1),C=v.trim(),w=ee.trim(),te=_?``:e.displayName,T=e.notes??``,E=C!==te||w!==T,ne=C.length>0&&E&&!t&&!r,D=_&&e.channels.length===0&&e.interactionCount===0,O=C||(_?g(`contact.draftName`):e.displayName),k=g(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:O,accessory:(0,J.jsx)(Y,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:k,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:g(`contact.nameLabel`),type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:g(`contactDetailView.namePlaceholder`),autoFocus:_,disabled:t||r,fullWidth:!0}),(0,J.jsx)(N,{label:g(`contact.notesLabel`),type:`text`,value:ee,onChange:e=>b(e.target.value),placeholder:g(`contactDetailView.notesPlaceholder`),disabled:t||r,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{type:`button`,onClick:()=>l({displayName:C,notes:w}),disabled:!ne,children:g(t?`actions.saving`:`actions.save`)}),d?(0,J.jsx)(n,{type:`button`,variant:`outlined`,onClick:d,disabled:!o||D||E||a||t||r,title:o?D?g(`contactDetailView.mergeBlockedUnsavedDraft`):E?g(`contact.mergeBlockedUnsaved`):void 0:g(`contact.mergeBlockedNoCandidates`),children:g(a?`actions.merging`:`actions.merge`)}):null,(0,J.jsx)(n,{type:`button`,variant:`danger`,onClick:()=>{D?u():S(!0)},disabled:r,children:g(r?`actions.deleting`:`contactDetailView.delete`)})]})]})}),(0,J.jsx)(V,{title:g(`contactDetailView.linkedAccountsTitle`),subtitle:g(`contactDetailView.linkedAccountsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:s,a2aEnabled:c,verifyLoading:i,verifySubject:`contact`,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h})}),(0,J.jsx)(F,{open:x,title:g(`contactDetailView.deleteConfirmTitle`,{name:O}),message:g(`contactDetailView.deleteConfirmMessage`),confirmLabel:g(`actions.delete`),destructive:!0,onConfirm:()=>{S(!1),u()},onCancel:()=>S(!1)})]})}function Re(e){return(0,J.jsx)(ze,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function ze({open:e,survivor:t,candidates:r,pending:i,errorMessage:a,onMerge:o,onClose:s}){let{t:c}=R(`contacts`),[l,d]=(0,K.useState)(``),[f,p]=(0,K.useState)(null);(0,K.useEffect)(()=>{f&&!r.some(e=>e.id===f)&&p(null)},[r,f]);let h=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();return e?r.filter(t=>t.displayName.toLowerCase().includes(e)):r},[r,l]),g=f?r.find(e=>e.id===f)??null:null,_=We(t);return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>{!e&&!i&&s()},children:(0,J.jsxs)(P.Content,{size:`md`,children:[(0,J.jsxs)(P.Header,{icon:Ce,children:[(0,J.jsx)(P.Title,{children:g?c(`contactMergeDialog.titlePicked`,{donor:g.displayName,survivor:_}):c(`contactMergeDialog.titlePicking`,{survivor:_})}),(0,J.jsx)(P.Description,{children:c(g?`contactMergeDialog.descriptionPicked`:`contactMergeDialog.descriptionPicking`)})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[g?(0,J.jsx)(He,{survivor:t,donor:g}):r.length===0?(0,J.jsx)(Ue,{}):(0,J.jsx)(Be,{search:l,onSearch:d,candidates:h,onPick:p}),a?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:a}):null]}),(0,J.jsx)(P.Footer,{children:g?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(n,{variant:`outlined`,onClick:()=>p(null),disabled:i,leftIcon:(0,J.jsx)(m,{"aria-hidden":!0}),children:c(`actions.back`)}),(0,J.jsx)(n,{variant:`danger`,onClick:()=>o(g.id),disabled:i,children:c(i?`actions.merging`:`contactMergeDialog.confirm`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:s,disabled:i,children:c(`actions.cancel`)})})]})})}function Be({search:e,onSearch:t,candidates:n,onPick:r}){let{t:i}=R(`contacts`);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(N,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i(`contactMergeDialog.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,J.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":i(`contactMergeDialog.listAriaLabel`),children:n.length===0?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:i(`contactsList.noMatches`)}):n.map(e=>(0,J.jsx)(Ve,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Ve({contact:e,onPick:t}){let n=Ke(e).join(` | `)||void 0;return(0,J.jsx)(f,{asChild:!0,children:(0,J.jsx)(`button`,{type:`button`,onClick:t,role:`option`,"aria-selected":`false`,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,J.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function He({survivor:e,donor:t}){let{t:n}=R(`contacts`),r=We(e),{moved:i,duplicates:a}=Ge(e,t);return(0,J.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,J.jsx)(`li`,{children:(0,J.jsx)(L,{i18nKey:`contactMergeDialog.donorDeleted`,ns:`contacts`,values:{donor:t.displayName},components:{donor:(0,J.jsx)(`span`,{className:`text-(--content-default)`})}})}),(0,J.jsx)(`li`,{children:n(`contactMergeDialog.channelsMoved`,{count:i.length,survivor:r,channels:i.map(e=>q(e.type)).join(`, `)})}),a.length>0?(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.duplicatesSkipped`,{count:a.length,survivor:r})}):null,t.notes?(0,J.jsx)(`li`,{children:n(`contactMergeDialog.notesAppended`)}):null,(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.irreversible`)})]})}function Ue(){let{t:e}=R(`contacts`);return(0,J.jsx)(u,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:e(`contactMergeDialog.empty`)})}function We(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?I(`survivorName.you`,{ns:`contacts`}):I(`survivorName.youNamed`,{ns:`contacts`,name:e.displayName}):e.displayName||I(`survivorName.thisContact`,{ns:`contacts`})}function Ge(e,t){let n=[],r=[];for(let i of t.channels)i.status!==`revoked`&&(e.channels.some(e=>e.type===i.type&&e.address.toLowerCase()===i.address.toLowerCase())?r.push(i):n.push(i));return{moved:n,duplicates:r}}function Ke(e){let t=new Set,n=[];for(let r of e.channels){if(r.status===`revoked`)continue;let e=r.type.toLowerCase();t.has(e)||(t.add(e),n.push(q(e)))}return n}function qe({loading:e,guardian:t,assistantName:r,regularContacts:i,selection:a,onSelect:o,onAddContact:s,addingContact:c=!1,search:l,onSearchChange:u}){let{t:f}=R(`contacts`),p=l.trim()?i.filter(e=>e.displayName.toLowerCase().includes(l.trim().toLowerCase())):i;return(0,J.jsx)(d.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,J.jsxs)(d.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:f(`contactsList.heading`)}),(0,J.jsx)(n,{type:`button`,variant:`ghost`,iconOnly:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(O,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":f(`contactsList.addAriaLabel`),tintColor:`var(--content-secondary)`})]}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,J.jsx)(Je,{name:t.displayName?f(`contactsList.youNamed`,{name:t.displayName}):f(`contactsList.you`),role:t.role,channelTypes:t.channelTypes,selected:a?.kind===`contact`&&a.contactId===t.id,onClick:()=>o({kind:`contact`,contactId:t.id}),trailingIcon:`pencil`}):null,(0,J.jsx)(Je,{name:r?.trim()||f(`contactsList.assistantFallback`),role:`assistant`,selected:a?.kind===`assistant`,onClick:()=>o({kind:`assistant`}),trailingIcon:`more`})]}),(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),i.length>0?(0,J.jsx)(N,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:f(`contactsList.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,i.length>0?(0,J.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto flex flex-col gap-1`,children:[p.map(e=>(0,J.jsx)(Je,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,verified:e.verified,selected:a?.kind===`contact`&&a.contactId===e.id,onClick:()=>o({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),p.length===0?(0,J.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:f(`contactsList.noMatches`)}):null]}):e?null:(0,J.jsx)(n,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(j,{"aria-hidden":!0}),children:f(`contactsList.add`)})]})})}function Je({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o,verified:s}){let{t:c}=R(`contacts`),l=r&&r.length>0?r.join(` | `):void 0,u=o===`pencil`?(0,J.jsx)(D,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):o===`more`?(0,J.jsx)(w,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):void 0;return(0,J.jsx)(f,{asChild:!0,active:i,children:(0,J.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),l?(0,J.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:l}):null]}),(0,J.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1`,children:[s===void 0?null:(0,J.jsx)(M,{tone:s?`positive`:`neutral`,children:c(s?`contactsList.verified`:`contactsList.unverified`)}),(0,J.jsx)(Y,{role:t,contactType:n}),u]})]})})}function Ye(e){return(0,J.jsx)(Xe,{...e},e.contact.id)}function Xe({contact:e,savePending:t,verifyPending:r,mergePending:i=!1,canMerge:a=!1,availableChannels:o,a2aEnabled:s,onSave:c,onMerge:l,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f,onGenerateInviteLink:p}){let{t:m}=R(`contacts`),h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,K.useState)(g),[y,ee]=(0,K.useState)(e.notes??``),b=_.trim(),x=y.trim(),S=b!==g.trim()||x!==(e.notes??``).trim(),C=S&&!t,w=m(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:h?m(`contactsList.you`):m(`contactsList.youNamed`,{name:e.displayName}),accessory:(0,J.jsx)(Y,{role:`guardian`}),compactAccessory:!0,subtitle:w,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:m(`contact.nameLabel`),type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:m(`guardianDetailView.namePlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsx)(N,{label:m(`contact.notesLabel`),type:`text`,value:y,onChange:e=>ee(e.target.value),placeholder:m(`guardianDetailView.notesPlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{variant:`primary`,onClick:()=>c({displayName:b||e.displayName,notes:x}),disabled:!C,children:m(t?`actions.saving`:`actions.save`)}),l?(0,J.jsx)(n,{variant:`outlined`,onClick:l,disabled:!a||S||i||t,title:a?S?m(`contact.mergeBlockedUnsaved`):void 0:m(`contact.mergeBlockedNoCandidates`),children:m(i?`actions.merging`:`actions.merge`)}):null]})]})}),(0,J.jsx)(V,{title:m(`guardianDetailView.channelsTitle`),subtitle:m(`guardianDetailView.channelsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:o,a2aEnabled:s,setupLabel:m(`guardianDetailView.setupLabel`),verifyLoading:r,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),p?(0,J.jsx)(U,{onClick:p}):null]})}function Ze(e,t){let n=t.trim().toLowerCase().replace(/^@/,``);return n===``?e:e.filter(e=>e.displayName.toLowerCase().includes(n)||e.username.toLowerCase().includes(n))}function Qe(e){let t=e.trim().split(/\s+/).filter(Boolean);return`${t[0]?.[0]??`?`}${t.length>1?t[t.length-1]?.[0]??``:``}`.toUpperCase()}function $e({open:e,channelLabel:t,contactName:r,accounts:i,loading:a,errorMessage:o,pendingAccountId:s,onPick:c,onClose:l,onInviteInstead:u}){let{t:d}=R(`contacts`),[f,p]=(0,K.useState)(``);(0,K.useEffect)(()=>{e&&p(``)},[e]);let m=(0,K.useMemo)(()=>Ze(i??[],f),[i,f]),g=s!=null;return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>!e&&l(),children:(0,J.jsxs)(P.Content,{size:`sm`,children:[(0,J.jsxs)(P.Header,{children:[(0,J.jsx)(P.Title,{children:d(`linkAccountDialog.title`,{channel:t})}),(0,J.jsx)(P.Description,{children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.description`,ns:`contacts`,values:{channel:t,name:r},components:{contact:(0,J.jsx)(`span`,{className:`text-[color:var(--content-default)]`})}})})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[(0,J.jsx)(N,{type:`search`,value:f,onChange:e=>p(e.target.value),placeholder:d(`linkAccountDialog.searchPlaceholder`),"aria-label":d(`linkAccountDialog.searchAriaLabel`,{channel:t}),leftIcon:(0,J.jsx)(k,{className:`h-4 w-4`}),fullWidth:!0}),o?(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-negative)]`,children:o}):null,(0,J.jsx)(`div`,{className:`max-h-80 overflow-y-auto`,children:a?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.loading`)}):m.length===0?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:(i?.length??0)===0?d(`linkAccountDialog.noMembers`):d(`linkAccountDialog.noMatches`)}):(0,J.jsx)(`ul`,{className:`flex flex-col`,children:m.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>c(e),disabled:g,className:`flex w-full cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-[var(--surface-overlay)] disabled:cursor-not-allowed disabled:opacity-60`,children:[e.imageUrl?(0,J.jsx)(`img`,{src:e.imageUrl,alt:``,className:`h-8 w-8 shrink-0 rounded-full`}):(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--tag-bg-neutral)] text-body-small-emphasised text-[color:var(--content-secondary)]`,children:Qe(e.displayName)}),(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default text-[color:var(--content-default)]`,children:e.displayName}),(0,J.jsxs)(`span`,{className:`truncate text-body-small-default text-[color:var(--content-tertiary)]`,children:[`@`,e.username]})]}),s===e.id?(0,J.jsx)(`span`,{className:`ml-auto shrink-0 text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.linking`)}):null]})},e.id))})})]}),(0,J.jsxs)(P.Footer,{className:`items-center justify-between gap-3 border-t border-[var(--border-base)]`,children:[(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.guardianLinkNote`,ns:`contacts`,components:{emphasis:(0,J.jsx)(`span`,{className:`text-[color:var(--content-secondary)]`})}})}),u?(0,J.jsxs)(n,{variant:`link`,className:`shrink-0`,onClick:u,disabled:g,children:[d(`linkAccountDialog.inviteInstead`),(0,J.jsx)(h,{className:`h-3.5 w-3.5`})]}):null]})]})})}function et({assistantId:e,channelType:t,contact:n,onLinked:r}){let[i,a]=(0,K.useState)(!1),o=c({mutationFn:n=>W(e,n.contact,{type:t,address:n.account.id}),onSuccess:(e,t)=>{a(!1),re.success(I(`accountLink.linked`,{ns:`contacts`,username:t.account.username})),r()}}),s=(0,K.useCallback)(()=>{o.reset(),a(!0)},[o]),l=(0,K.useCallback)(()=>{o.isPending||(o.reset(),a(!1))},[o]),u=(0,K.useCallback)(e=>{!n||o.isPending||o.mutate({contact:n,account:e})},[n,o]);return{channelType:t,dialogOpen:i,open:s,close:l,linkErrorMessage:o.error instanceof Error?o.error.message:o.error?I(`accountLink.linkFailed`,{ns:`contacts`}):null,pendingAccountId:o.isPending?o.variables.account.id:null,pick:u}}var tt=[{id:`slack`,source:`default`,label:`Slack`,subtitle:`Message your assistant from Slack`,icon:`hash`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Slack. Can you help me set that up?`,contact:`I'd like to verify a contact's Slack identity. Can you walk me through it?`}},{id:`telegram`,source:`default`,label:`Telegram`,subtitle:`Message your assistant from Telegram`,icon:`send`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Telegram. Can you help me set that up?`,contact:`I'd like to verify a contact's Telegram identity. Can you walk me through it?`}},{id:`phone`,source:`default`,label:`Phone Calling`,subtitle:`Call or text your assistant via phone`,icon:`phone`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian for phone calls. Can you help me set that up?`,contact:`I'd like to verify a contact's phone number. Can you help me set that up?`}}],nt=[];function rt({assistantId:e,onStartSetupConversation:t}){let{t:n}=R(`contacts`),r=pe.use.a2aChannel(),l=ie.use.name(),u=o(),[d]=i(),f=d.get(`setup`),p=f&&ee(f)?f:null,[m,h]=(0,K.useState)({kind:`assistant`}),g=ye(e),{paneRef:_,hasRoomForList:v,drawerOpen:x,openDrawer:S,closeDrawer:C}=ge(),[w,te]=(0,K.useState)(``),[T,E]=(0,K.useState)(!1),ne=b(l),D=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),O=de(D),k=s({...se(D),enabled:!!e,select:e=>e.contacts}),A=ve({assistantId:e,onStartSetupConversation:t}),j=s({...le({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await ae({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:tt};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??nt,M=k.data,N=(0,K.useMemo)(()=>M?.find(e=>e.role===`guardian`)??null,[M]),P=(0,K.useMemo)(()=>M?.filter(e=>e.role!==`guardian`)??[],[M]),F=(0,K.useMemo)(()=>m.kind===`contact`?M?.find(e=>e.id===m.contactId)??null:null,[M,m]),I=(0,K.useMemo)(()=>!M||!F?[]:M.filter(e=>e.id!==F.id&&e.role!==`guardian`),[M,F]),L=I.length>0,fe=(0,K.useRef)(!!p);(0,K.useEffect)(()=>{fe.current||N&&(fe.current=!0,h({kind:`contact`,contactId:N.id}))},[N]);let B=(0,K.useCallback)(()=>u.invalidateQueries({queryKey:O}),[u,O]),V=c({mutationFn:()=>xe(e,{displayName:De}),onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:e=>{z(u,D,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),h({kind:`contact`,contactId:e.id})},onError:H(n(`contactsPage.createFailed`)),onSettled:()=>B()}),U=c({mutationFn:t=>Se(e,t),onSuccess:(e,t)=>{z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),h({kind:`assistant`})},onError:H(n(`contactsPage.deleteFailed`)),onSettled:()=>B()}),W=c({mutationFn:({contactId:t,patch:n})=>xe(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{z(u,D,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onError:H(n(`contactsPage.saveFailed`)),onSettled:()=>B()}),G=ue({onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:(e,t)=>{let r=e.contact,i=t.body.mergeId;r&&(z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==i).map(e=>e.id===r.id?r:e)}:void 0),h({kind:`contact`,contactId:r.id})),E(!1),re.success(n(`contactsPage.mergeSucceeded`))},onSettled:()=>B()}),Ce=(0,K.useCallback)(e=>{h(e),C(),E(!1),G.reset()},[C,G]),we=(0,K.useCallback)(()=>{G.reset(),E(!0)},[G]),Te=(0,K.useCallback)(()=>{G.isPending||(E(!1),G.reset())},[G]),Ee=ce({onSuccess:()=>B()}),Oe=(0,K.useCallback)((t,n)=>{Ee.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[Ee,e]),ke=(0,K.useCallback)(()=>{V.isPending||V.mutate()},[V]),Ae=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[j,t]),Y=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[j,t]),X=c({mutationFn:t=>be(e,t.channelId),onSuccess:()=>B(),onError:H(n(`contactsPage.verifyFailed`))}),Me=(0,K.useCallback)(e=>{if(!F)return;let t=F.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&X.mutate({channelId:t.id})},[F,X]),Z=et({assistantId:e,channelType:`slack`,contact:F?{id:F.id,displayName:F.displayName}:null,onLinked:B}),Q=s({...y(e),enabled:!!e&&Z.dialogOpen,select:e=>e.users}),Ne=A.channels.some(e=>e.key===`slack`&&e.status===`ready`),Pe=(0,K.useCallback)(e=>{e===Z.channelType&&Z.open()},[Z]),Fe=U.isPending?U.variables:null,$=(0,K.useMemo)(()=>F?W.isPending&&W.variables?.contactId===F.id?{...F,displayName:W.variables.patch.displayName,notes:W.variables.patch.notes}:F:null,[F,W.isPending,W.variables]);if(p)return(0,J.jsx)(a,{to:`${oe.channels}?setup=${p}`,replace:!0});let Le={loading:k.isLoading,assistantName:ne,guardian:N?{id:N.id,displayName:N.displayName.startsWith(`vellum-principal-`)?``:N.displayName,role:N.role,channelTypes:ot(N.channels,r)}:null,regularContacts:P.filter(e=>e.id!==Fe).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:ot(e.channels,r),verified:at(e.channels)})),selection:m,onAddContact:ke,addingContact:V.isPending,search:w,onSearchChange:te};return(0,J.jsxs)(`div`,{ref:_,className:`flex min-h-0 flex-1 overflow-hidden ${v?`flex-row gap-6`:`flex-col gap-4`}`,children:[v?(0,J.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,J.jsx)(qe,{...Le,onSelect:Ce})}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex items-center`,children:(0,J.jsx)(he,{onClick:S})}),(0,J.jsx)(me,{open:x,onClose:C,title:n(`contactsPage.title`),children:(0,J.jsx)(qe,{...Le,onSelect:Ce})})]}),(0,J.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:m.kind===`assistant`||m.kind===`contact`&&m.contactId===Fe?(0,J.jsx)(je,{assistantName:ne,channels:A.channels,pendingChannelKey:A.pendingChannelKey,onConnect:A.onSetup,onDisconnect:A.onDisconnect}):$?$.role===`guardian`?(0,J.jsx)(Ye,{contact:$,savePending:W.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onMerge:we,onSetupChannel:t?Y:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onGenerateInviteLink:r?g.open:void 0}):(0,J.jsx)(Ie,{contact:$,savePending:W.isPending,deletePending:U.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onDelete:()=>{U.mutate($.id)},onMerge:we,onSetupChannel:t?Ae:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onLinkAccount:Ne?Pe:void 0}):(0,J.jsx)(it,{})}),F?(0,J.jsx)(Re,{open:T,survivor:F,candidates:I,pending:G.isPending,errorMessage:G.error instanceof Error?G.error.message:G.error?n(`contactsPage.mergeFailed`):null,onMerge:t=>G.mutate({path:{assistant_id:e},body:{keepId:F.id,mergeId:t}}),onClose:Te}):null,(0,J.jsx)($e,{open:Z.dialogOpen,channelLabel:q(`slack`),contactName:F?.displayName??``,accounts:Q.data,loading:Q.isLoading,errorMessage:Q.isError?n(`contactsPage.rosterLoadFailed`):Z.linkErrorMessage,pendingAccountId:Z.pendingAccountId,onPick:Z.pick,onClose:Z.close,onInviteInstead:t?()=>{Z.close(),Ae(Z.channelType)}:void 0}),(0,J.jsx)(_e,{open:g.isOpen,assistantId:e,onClose:g.close})]})}function it(){let{t:e}=R(`contacts`);return(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e(`contactsPage.emptyBody`)})})}function at(e){return e.some(e=>e.status!==`revoked`&&(e.type===`a2a`||Te(e)))}function ot(e,t){let n=new Set,r=[];for(let i of e){if(i.status===`revoked`)continue;let e=i.type.toLowerCase();n.has(e)||e===`a2a`&&!t||(n.add(e),r.push(q(e)))}return r}function st(){let e=r(),t=B();return(0,J.jsx)(rt,{assistantId:t,onStartSetupConversation:t=>{fe(e,{prompt:t})}},t)}export{st as ContactsPageRoute};
@@ -1 +1 @@
1
- import{A as e,M as t,a as n,g as r,i,t as a,v as o}from"./section-membership-BLXUZceV.js";var s={conversations:[],hasMore:!1};async function c(t,n){await Promise.all([t.cancelQueries({queryKey:e(n)}),t.cancelQueries({queryKey:o(n)})])}function l(t,n){return t.getQueriesData({queryKey:e(n)}).map(([e,t])=>[e,t])}function u(e,t){for(let[n,r]of t)e.setQueryData(n,r)}async function d(t,n){await Promise.all([t.invalidateQueries({queryKey:e(n)}),t.invalidateQueries({queryKey:o(n)}),t.invalidateQueries({queryKey:r(n)})])}function f(e,t){let n=t(e.conversations);return n===e.conversations?e:{conversations:n,hasMore:e.hasMore}}function p(e,t,n){e.setQueryData(t,e=>{let t=e??s,r=f(t,n);return r===t?e:r})}function m(e,n,r,i){p(e,t(n,r),i)}function h(t,n,r){if(!n)return;let i=t.getQueriesData({queryKey:e(n)});for(let[e,n]of i){if(!n)continue;let i=f(n,r);i!==n&&t.setQueryData(e,i)}}function g(t,n,r){if(!n)return;let i=t.getQueriesData({queryKey:e(n)});for(let[,e]of i){let t=e?.conversations.find(e=>e.conversationId===r);if(t)return t}}function _(...e){let[t=[],...n]=e;if(n.every(e=>e.length===0))return t;let r=new Set(t.map(e=>e.conversationId)),i=[...t];for(let e of n)for(let t of e)r.has(t.conversationId)||(r.add(t.conversationId),i.push(t));return i}function v(e,t,r,o){let s;return h(e,t,e=>{let t=!1,n=e.map(e=>e.conversationId===r?(t=!0,s??={...e,...o},s):e);return t?n:e}),!s||!i(o)?[]:(a(e,t,s),n(e,t,s))}export{v as a,h as c,_ as i,m as l,g as n,u as o,d as r,l as s,c as t};
1
+ import{A as e,M as t,a as n,g as r,i,t as a,v as o}from"./section-membership-CJlFrKoM.js";var s={conversations:[],hasMore:!1};async function c(t,n){await Promise.all([t.cancelQueries({queryKey:e(n)}),t.cancelQueries({queryKey:o(n)})])}function l(t,n){return t.getQueriesData({queryKey:e(n)}).map(([e,t])=>[e,t])}function u(e,t){for(let[n,r]of t)e.setQueryData(n,r)}async function d(t,n){await Promise.all([t.invalidateQueries({queryKey:e(n)}),t.invalidateQueries({queryKey:o(n)}),t.invalidateQueries({queryKey:r(n)})])}function f(e,t){let n=t(e.conversations);return n===e.conversations?e:{conversations:n,hasMore:e.hasMore}}function p(e,t,n){e.setQueryData(t,e=>{let t=e??s,r=f(t,n);return r===t?e:r})}function m(e,n,r,i){p(e,t(n,r),i)}function h(t,n,r){if(!n)return;let i=t.getQueriesData({queryKey:e(n)});for(let[e,n]of i){if(!n)continue;let i=f(n,r);i!==n&&t.setQueryData(e,i)}}function g(t,n,r){if(!n)return;let i=t.getQueriesData({queryKey:e(n)});for(let[,e]of i){let t=e?.conversations.find(e=>e.conversationId===r);if(t)return t}}function _(...e){let[t=[],...n]=e;if(n.every(e=>e.length===0))return t;let r=new Set(t.map(e=>e.conversationId)),i=[...t];for(let e of n)for(let t of e)r.has(t.conversationId)||(r.add(t.conversationId),i.push(t));return i}function v(e,t,r,o){let s;return h(e,t,e=>{let t=!1,n=e.map(e=>e.conversationId===r?(t=!0,s??={...e,...o},s):e);return t?n:e}),!s||!i(o)?[]:(a(e,t,s),n(e,t,s))}export{v as a,h as c,_ as i,m as l,g as n,u as o,d as r,l as s,c as t};
@@ -1 +1 @@
1
- import{d as e}from"./routes-Bj1LYNBZ.js";import{t}from"./conversation-store-DdBAApt6.js";import{t as n}from"./haptics-BR_zMLz2.js";import{r}from"./subagent-store-Bho3BXWd.js";import{t as i}from"./workflow-store-BYbfirJj.js";import{i as a,u as o}from"./viewer-store-BbaMH35y.js";import{t as s}from"./conversation-selection-CRqFjCDm.js";import{t as c}from"./sound-manager-CCbiDOQN.js";import{t as l}from"./use-is-mobile-BwSS15lq.js";var u=`vellum:focus-composer`,d=!1;function f(){d=!0,typeof window<`u`&&window.dispatchEvent(new Event(u))}function p(){let e=d;return d=!1,e}var m=[`input`,`textarea`,`select`,`[contenteditable=""]`,`[contenteditable="true"]`,`[role="textbox"]`].join(`,`);function h(e){return!!e?.closest(m)}function g(){return typeof document>`u`?!1:h(document.activeElement)}function _(e){return!!e?.closest(`a[href], button, summary`)}function v(e,t){return!(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing||e.keyCode===229||typeof e.key!=`string`||e.key.length!==1||h(t)||e.key===` `&&_(t))}function y({value:e,text:t,selectionStart:n,selectionEnd:r}){let i=Math.max(0,Math.min(n??e.length,e.length)),a=Math.max(i,Math.min(r??i,e.length));return{value:e.slice(0,i)+t+e.slice(a),cursor:i+t.length}}function b(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(l).matches}function x(e){if(b())return!1;let n=a.getState();return!o(n.mainView)||!n.activeAppId&&!n.openedAppState?!1:(t.getState().setEditingConversationId(e),n.enterAppEditing(),!0)}function S(e){x(e)||a.getState().setMainView(`chat`)}function C(o,s,c){c?.silent||n.light(),S(s),s!==t.getState().activeConversationId&&(r.getState().reset(),i.getState().reset(),a.getState().clearTranscriptPanelPayloads()),t.getState().setActiveConversationId(s),o(c?.messageId?e.conversationAtMessage(s,c.messageId):e.conversation(s))}function w(o,l){l?.silent||(n.light(),c().play(`new_conversation`)),r.getState().reset(),i.getState().reset(),a.getState().clearTranscriptPanelPayloads();let u=s();S(u),t.getState().setActiveConversationId(u);let d=e.conversation(u);if(l?.prompt){let e=new URLSearchParams({prompt:l.prompt});d=`${d}?${e.toString()}`}o(d),f()}export{u as a,h as c,v as d,S as i,g as l,C as n,p as o,w as r,y as s,x as t,f as u};
1
+ import{d as e}from"./routes-yNhBxUSb.js";import{t}from"./conversation-store-DdBAApt6.js";import{t as n}from"./haptics-F-nvqKYf.js";import{r}from"./subagent-store-Bn8k7JMr.js";import{t as i}from"./workflow-store-BYbfirJj.js";import{i as a,u as o}from"./viewer-store-BbaMH35y.js";import{t as s}from"./conversation-selection-ZuF7NVBR.js";import{t as c}from"./sound-manager-CCbiDOQN.js";import{t as l}from"./use-is-mobile-BwSS15lq.js";var u=`vellum:focus-composer`,d=!1;function f(){d=!0,typeof window<`u`&&window.dispatchEvent(new Event(u))}function p(){let e=d;return d=!1,e}var m=[`input`,`textarea`,`select`,`[contenteditable=""]`,`[contenteditable="true"]`,`[role="textbox"]`].join(`,`);function h(e){return!!e?.closest(m)}function g(){return typeof document>`u`?!1:h(document.activeElement)}function _(e){return!!e?.closest(`a[href], button, summary`)}function v(e,t){return!(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing||e.keyCode===229||typeof e.key!=`string`||e.key.length!==1||h(t)||e.key===` `&&_(t))}function y({value:e,text:t,selectionStart:n,selectionEnd:r}){let i=Math.max(0,Math.min(n??e.length,e.length)),a=Math.max(i,Math.min(r??i,e.length));return{value:e.slice(0,i)+t+e.slice(a),cursor:i+t.length}}function b(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(l).matches}function x(e){if(b())return!1;let n=a.getState();return!o(n.mainView)||!n.activeAppId&&!n.openedAppState?!1:(t.getState().setEditingConversationId(e),n.enterAppEditing(),!0)}function S(e){x(e)||a.getState().setMainView(`chat`)}function C(o,s,c){c?.silent||n.light(),S(s),s!==t.getState().activeConversationId&&(r.getState().reset(),i.getState().reset(),a.getState().clearTranscriptPanelPayloads()),t.getState().setActiveConversationId(s),o(c?.messageId?e.conversationAtMessage(s,c.messageId):e.conversation(s))}function w(o,l){l?.silent||(n.light(),c().play(`new_conversation`)),r.getState().reset(),i.getState().reset(),a.getState().clearTranscriptPanelPayloads();let u=s();S(u),t.getState().setActiveConversationId(u);let d=e.conversation(u);if(l?.prompt){let e=new URLSearchParams({prompt:l.prompt});d=`${d}?${e.toString()}`}o(d),f()}export{u as a,h as c,v as d,S as i,g as l,C as n,p as o,w as r,y as s,x as t,f as u};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./useQuery-CTSuec5b.js";import{t as r}from"./useQueries-Bimdc7uA.js";import{t as i}from"./queryOptions-DbnOXI51.js";import{r as a}from"./use-is-org-ready-CXChKRKk.js";import{F as o,O as s}from"./react-query.gen-OpeDEMIm.js";import{n as c}from"./operational-status-D9ExUyuP.js";import{B as l,C as u,D as d,E as f,F as p,O as m,P as h,T as g,_,b as v,h as y,p as b,u as x,w as S}from"./section-membership-BLXUZceV.js";import{i as C}from"./conversation-cache-DJbtcDiW.js";var w=e(t(),1),T=3e4;function E(e,t=d){let n=s({path:{assistant_id:e},query:t}).queryKey;return p(t)?i({queryKey:n,queryFn:async({client:r})=>{let i=await b(e,t),a=r.getQueryData(n);return a?u(a,i,{pinnedInjected:h(t)}):i},staleTime:T}):i({queryKey:n,queryFn:async()=>({conversations:await x(e,t),hasMore:!1}),staleTime:T})}var D=[],O=[];function k(e){let t=a(),n=c(e);return t&&n}var A={conversations:D,isLoading:!1,isPending:!0,isError:!1,error:null,hasData:!1,hasMore:!1,refetch:()=>{}};function j(e,t,n){let i=k(e),a=r({queries:t===null?[]:[{...E(e??``,t),enabled:n&&!!e&&i}]})[0];return a===void 0?A:{conversations:a.data?.conversations??D,isLoading:a.isLoading,isPending:a.isPending,isError:a.isError,error:a.error,hasData:a.data!==void 0,hasMore:a.data?.hasMore??!1,refetch:()=>{a.refetch()}}}function M(e,t=!0){return j(e,d,t)}function N(e,t=!0){return j(e,f,t)}function P(e,t=!0){return j(e,m,t)}function F(e,t,n=!0){return j(e,t,n)}function I(e,t=!0){let n=j(e,g,t),r=j(e,S,t);return{conversations:(0,w.useMemo)(()=>{let e=C(n.conversations,r.conversations);return e===n.conversations?e:[...e].sort(v(`archivedAt`))},[n.conversations,r.conversations]),isLoading:n.isLoading||r.isLoading,isPending:n.isPending||r.isPending,isError:n.isError||r.isError,error:n.error??r.error,hasData:n.hasData&&r.hasData,hasMore:!1,refetch:()=>{n.refetch(),r.refetch()}}}function L(e,t=!0){let r=a();return n({...y(e),enabled:t&&!!e&&r}).data??null}function R(e,t=!0){let r=k(e);return n({..._(e),enabled:t&&!!e&&r}).data??null}function z(e,t,n=!0){let r=R(e,n),i=(0,w.useMemo)(()=>l(t),[t]);return Math.max(0,r??i)}function B(e,t=!0){let r=k(e),i=n({...o({path:{assistant_id:e??``}}),select:e=>e.groups,enabled:t&&!!e&&r,staleTime:3e4});return{conversationGroups:i.data??O,isLoading:i.isLoading}}export{M as a,L as c,B as i,z as l,N as n,P as o,k as r,F as s,I as t};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./useQuery-CTSuec5b.js";import{t as r}from"./useQueries-Bimdc7uA.js";import{t as i}from"./queryOptions-DbnOXI51.js";import{r as a}from"./use-is-org-ready-CEB5IRpO.js";import{F as o,O as s}from"./react-query.gen-CYP-Tn4K.js";import{n as c}from"./operational-status-DVK3_kD_.js";import{B as l,C as u,D as d,E as f,F as p,O as m,P as h,T as g,_,b as v,h as y,p as b,u as x,w as S}from"./section-membership-CJlFrKoM.js";import{i as C}from"./conversation-cache-CuEQRyqi.js";var w=e(t(),1),T=3e4;function E(e,t=d){let n=s({path:{assistant_id:e},query:t}).queryKey;return p(t)?i({queryKey:n,queryFn:async({client:r})=>{let i=await b(e,t),a=r.getQueryData(n);return a?u(a,i,{pinnedInjected:h(t)}):i},staleTime:T}):i({queryKey:n,queryFn:async()=>({conversations:await x(e,t),hasMore:!1}),staleTime:T})}var D=[],O=[];function k(e){let t=a(),n=c(e);return t&&n}var A={conversations:D,isLoading:!1,isPending:!0,isError:!1,error:null,hasData:!1,hasMore:!1,refetch:()=>{}};function j(e,t,n){let i=k(e),a=r({queries:t===null?[]:[{...E(e??``,t),enabled:n&&!!e&&i}]})[0];return a===void 0?A:{conversations:a.data?.conversations??D,isLoading:a.isLoading,isPending:a.isPending,isError:a.isError,error:a.error,hasData:a.data!==void 0,hasMore:a.data?.hasMore??!1,refetch:()=>{a.refetch()}}}function M(e,t=!0){return j(e,d,t)}function N(e,t=!0){return j(e,f,t)}function P(e,t=!0){return j(e,m,t)}function F(e,t,n=!0){return j(e,t,n)}function I(e,t=!0){let n=j(e,g,t),r=j(e,S,t);return{conversations:(0,w.useMemo)(()=>{let e=C(n.conversations,r.conversations);return e===n.conversations?e:[...e].sort(v(`archivedAt`))},[n.conversations,r.conversations]),isLoading:n.isLoading||r.isLoading,isPending:n.isPending||r.isPending,isError:n.isError||r.isError,error:n.error??r.error,hasData:n.hasData&&r.hasData,hasMore:!1,refetch:()=>{n.refetch(),r.refetch()}}}function L(e,t=!0){let r=a();return n({...y(e),enabled:t&&!!e&&r}).data??null}function R(e,t=!0){let r=k(e);return n({..._(e),enabled:t&&!!e&&r}).data??null}function z(e,t,n=!0){let r=R(e,n),i=(0,w.useMemo)(()=>l(t),[t]);return Math.max(0,r??i)}function B(e,t=!0){let r=k(e),i=n({...o({path:{assistant_id:e??``}}),select:e=>e.groups,enabled:t&&!!e&&r,staleTime:3e4});return{conversationGroups:i.data??O,isLoading:i.isLoading}}export{M as a,L as c,B as i,z as l,N as n,P as o,k as r,F as s,I as t};
@@ -1 +1 @@
1
- import{t as e}from"./conversation-store-DdBAApt6.js";import{V as t,n}from"./section-membership-BLXUZceV.js";function r(){let t=typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`draft-${Date.now()}-${Math.random().toString(16).slice(2)}`;return e.getState().registerDraftConversationId(t),t}function i({platformStartsInNewChat:e,urlConversationId:t,currentConversationId:n}){return e&&t==null&&n==null}function a(e){return n(e)&&!t(e)}function o({storedConversation:e,defaultConversationId:t,...n}){return s(n)||(e&&a(e)?e.conversationId:t)}function s({queryParamKey:e,onboardingDraftConversationId:t,newChatDraftConversationId:n,currentConversationId:r,currentAssistantId:i,nextAssistantId:a}){return e||t||(i===a&&r?r:n||null)}export{i as a,s as i,a as n,o as r,r as t};
1
+ import{t as e}from"./conversation-store-DdBAApt6.js";import{V as t,n}from"./section-membership-CJlFrKoM.js";function r(){let t=typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`draft-${Date.now()}-${Math.random().toString(16).slice(2)}`;return e.getState().registerDraftConversationId(t),t}function i({platformStartsInNewChat:e,urlConversationId:t,currentConversationId:n}){return e&&t==null&&n==null}function a(e){return n(e)&&!t(e)}function o({storedConversation:e,defaultConversationId:t,...n}){return s(n)||(e&&a(e)?e.conversationId:t)}function s({queryParamKey:e,onboardingDraftConversationId:t,newChatDraftConversationId:n,currentConversationId:r,currentAssistantId:i,nextAssistantId:a}){return e||t||(i===a&&r?r:n||null)}export{i as a,s as i,a as n,o as r,r as t};
@@ -1 +1 @@
1
- import{t as e}from"./capture-error-VBsIaC5d.js";import{n as t}from"./toast-ZCXyBjoj.js";function n(n,r){if(!navigator.clipboard?.writeText){e(Error(`Clipboard API unavailable`),{context:`copyToClipboard`}),t.error(r.errorMessage);return}navigator.clipboard.writeText(n).then(()=>{r.onCopied?.(),r.successMessage&&t.success(r.successMessage)},n=>{e(n,{context:`copyToClipboard`}),t.error(r.errorMessage)})}export{n as t};
1
+ import{t as e}from"./capture-error-VBsIaC5d.js";import{n as t}from"./toast-CHtrY-GO.js";function n(n,r){if(!navigator.clipboard?.writeText){e(Error(`Clipboard API unavailable`),{context:`copyToClipboard`}),t.error(r.errorMessage);return}navigator.clipboard.writeText(n).then(()=>{r.onCopied?.(),r.successMessage&&t.success(r.successMessage)},n=>{e(n,{context:`copyToClipboard`}),t.error(r.errorMessage)})}export{n as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import{t as i}from"./card-DUsAeHUS.js";import{t as a}from"./circle-alert-B-Zu9T9V.js";import{t as o}from"./circle-check-BQyrCkaB.js";import{t as s}from"./key-round-DcfNNfNG.js";import{t as c}from"./loader-circle-C9QjVTuc.js";import{t as l}from"./input-DkgpMeG9.js";import"./i18n-7Z5ghN39.js";import{t as u}from"./useTranslation-CJMg4EBF.js";import{s as d}from"./remote-gateway-session-B4C6b4Sx.js";var f=e(t(),1),p=`/v1/credential-requests/peek`,m=`/v1/credential-requests/submit`;function h(e){return e>0xe8d4a51000?e:e*1e3}function g(e){let t=e?.error?.code;return t===`INVALID`?`invalid`:t===`EXPIRED`?`expired`:t===`USED`?`used`:null}function _(e){let t=e;return typeof t?.service==`string`&&typeof t.field==`string`&&(t.label===null||typeof t.label==`string`)&&typeof t.expiresAt==`number`}async function v(e,t){let n=await fetch(d(p),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e}),signal:t}),r=await n.json().catch(()=>null);return n.ok&&_(r)?{status:`ok`,request:r}:n.status===404?{status:g(r)??`invalid`}:{status:`error`}}async function y(e,t,n){let r=await fetch(d(m),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,value:t}),signal:n});if(r.ok)return{status:`ok`};let i=await r.json().catch(()=>null);return r.status===404?{status:g(i)??`invalid`}:r.status===502?{status:`store-failed`}:{status:`error`}}var b=r();function x(e){let[t,n]=(0,f.useState)(()=>Date.now());return(0,f.useEffect)(()=>{let t=setInterval(()=>n(Date.now()),e);return()=>clearInterval(t)},[e]),t}function S(e){let t=Math.max(0,Math.ceil(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function C({icon:e,title:t,children:n}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e,(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:t})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:n})]})}function w(){let{t:e}=u(`credential-requests`),[t]=(0,f.useState)(()=>new URLSearchParams(window.location.hash.replace(/^#/,``)).get(`token`)?.trim()||new URLSearchParams(window.location.search).get(`token`)?.trim()||null),[r,d]=(0,f.useState)({kind:`loading`}),[p,m]=(0,f.useState)(``),[g,_]=(0,f.useState)(!1),[w,T]=(0,f.useState)(null),E=x(1e3);(0,f.useEffect)(()=>{let e=new URL(window.location.href),t=new URLSearchParams(e.hash.replace(/^#/,``));if(!t.has(`token`)&&!e.searchParams.has(`token`))return;e.searchParams.delete(`token`),t.delete(`token`);let n=t.toString();window.history.replaceState(window.history.state,``,`${e.pathname}${e.search}${n?`#${n}`:``}`)},[]),(0,f.useEffect)(()=>{if(!t){d({kind:`invalid`});return}let e=new AbortController;return(async()=>{let n=await v(t,e.signal).catch(()=>({status:`error`}));e.signal.aborted||(n.status===`ok`?d({kind:`form`,request:n.request}):d({kind:n.status}))})(),()=>{e.abort()}},[t]);let D=async e=>{if(e.preventDefault(),!t||r.kind!==`form`||!p.trim()||g)return;_(!0),T(null);let n=await y(t,p).catch(()=>({status:`error`}));switch(_(!1),n.status){case`ok`:m(``),d({kind:`success`});break;case`invalid`:case`expired`:case`used`:d({kind:n.status});break;case`store-failed`:m(``),d({kind:`store-failed`});break;case`error`:T(`Something went wrong while submitting. Check your connection and try again.`);break}},O=r.kind===`form`?h(r.request.expiresAt):null,k=r.kind===`form`&&O!==null&&O>E,A;if(r.kind===`loading`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(c,{className:`h-5 w-5 animate-spin text-blue-600`,"aria-hidden":!0}),title:e(`credentialEntry.checkingTitle`),children:e(`credentialEntry.checkingBody`)});else if(r.kind===`success`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(o,{className:`h-5 w-5 text-green-600`,"aria-hidden":!0}),title:e(`credentialEntry.savedTitle`),children:e(`credentialEntry.savedBody`)});else if(r.kind===`invalid`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.invalidTitle`),children:e(`credentialEntry.invalidBody`)});else if(r.kind===`expired`||r.kind===`form`&&!k)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.expiredTitle`),children:e(`credentialEntry.expiredBody`)});else if(r.kind===`used`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.usedTitle`),children:e(`credentialEntry.usedBody`)});else if(r.kind===`store-failed`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.storeFailedTitle`),children:e(`credentialEntry.storeFailedBody`)});else if(r.kind===`error`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.errorTitle`),children:e(`credentialEntry.errorBody`)});else{let{request:t}=r,i=`${t.service}:${t.field}`,a=(O??0)-E;A=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(s,{className:`h-5 w-5 text-blue-600`,"aria-hidden":!0}),(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`credentialEntry.heading`)})]}),(0,b.jsxs)(`div`,{className:`rounded-md border border-[var(--border-subtle)] bg-[var(--background-muted)] p-4`,children:[(0,b.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:t.label||i}),(0,b.jsxs)(`p`,{className:`mt-1 font-mono text-body-small-default text-[var(--content-tertiary)]`,children:[t.label?`${i} · `:``,e(`credentialEntry.oneTimeEntry`)]})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:e(`credentialEntry.instructions`)}),(0,b.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>void D(e),children:[(0,b.jsx)(l,{label:e(`credentialEntry.valueLabel`),type:`password`,value:p,onChange:e=>m(e.target.value),placeholder:e(`credentialEntry.valuePlaceholder`),autoComplete:`off`,autoFocus:!0,fullWidth:!0,errorText:w??void 0}),(0,b.jsx)(n,{type:`submit`,disabled:g||!p.trim(),leftIcon:g?(0,b.jsx)(c,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:e(`credentialEntry.submit`)})]}),(0,b.jsx)(`p`,{className:`text-xs text-[var(--content-tertiary)]`,children:e(`credentialEntry.expiresIn`,{remaining:S(a),time:new Date(O??0).toLocaleTimeString()})})]})}return(0,b.jsx)(`main`,{className:`flex min-h-svh items-center justify-center bg-[var(--background-default)] px-6 py-10 text-[var(--content-primary)]`,children:(0,b.jsx)(`div`,{className:`w-full max-w-md`,children:(0,b.jsx)(i.Root,{bordered:!0,elevated:!0,padding:`lg`,children:(0,b.jsx)(`div`,{className:`flex flex-col gap-4`,children:A})})})})}export{w as CredentialEntryPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-C8CGr0T0.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import{t as i}from"./card-DUsAeHUS.js";import{t as a}from"./circle-alert-B-Zu9T9V.js";import{t as o}from"./circle-check-BQyrCkaB.js";import{t as s}from"./key-round-DcfNNfNG.js";import{t as c}from"./loader-circle-C9QjVTuc.js";import{t as l}from"./input-DlkBtbxm.js";import"./i18n-C3bX3mTs.js";import{t as u}from"./useTranslation-CCDbxnME.js";import{s as d}from"./remote-gateway-session-B4C6b4Sx.js";var f=e(t(),1),p=`/v1/credential-requests/peek`,m=`/v1/credential-requests/submit`;function h(e){return e>0xe8d4a51000?e:e*1e3}function g(e){let t=e?.error?.code;return t===`INVALID`?`invalid`:t===`EXPIRED`?`expired`:t===`USED`?`used`:null}function _(e){let t=e;return typeof t?.service==`string`&&typeof t.field==`string`&&(t.label===null||typeof t.label==`string`)&&typeof t.expiresAt==`number`}async function v(e,t){let n=await fetch(d(p),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e}),signal:t}),r=await n.json().catch(()=>null);return n.ok&&_(r)?{status:`ok`,request:r}:n.status===404?{status:g(r)??`invalid`}:{status:`error`}}async function y(e,t,n){let r=await fetch(d(m),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,value:t}),signal:n});if(r.ok)return{status:`ok`};let i=await r.json().catch(()=>null);return r.status===404?{status:g(i)??`invalid`}:r.status===502?{status:`store-failed`}:{status:`error`}}var b=r();function x(e){let[t,n]=(0,f.useState)(()=>Date.now());return(0,f.useEffect)(()=>{let t=setInterval(()=>n(Date.now()),e);return()=>clearInterval(t)},[e]),t}function S(e){let t=Math.max(0,Math.ceil(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function C({icon:e,title:t,children:n}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e,(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:t})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:n})]})}function w(){let{t:e}=u(`credential-requests`),[t]=(0,f.useState)(()=>new URLSearchParams(window.location.hash.replace(/^#/,``)).get(`token`)?.trim()||new URLSearchParams(window.location.search).get(`token`)?.trim()||null),[r,d]=(0,f.useState)({kind:`loading`}),[p,m]=(0,f.useState)(``),[g,_]=(0,f.useState)(!1),[w,T]=(0,f.useState)(null),E=x(1e3);(0,f.useEffect)(()=>{let e=new URL(window.location.href),t=new URLSearchParams(e.hash.replace(/^#/,``));if(!t.has(`token`)&&!e.searchParams.has(`token`))return;e.searchParams.delete(`token`),t.delete(`token`);let n=t.toString();window.history.replaceState(window.history.state,``,`${e.pathname}${e.search}${n?`#${n}`:``}`)},[]),(0,f.useEffect)(()=>{if(!t){d({kind:`invalid`});return}let e=new AbortController;return(async()=>{let n=await v(t,e.signal).catch(()=>({status:`error`}));e.signal.aborted||(n.status===`ok`?d({kind:`form`,request:n.request}):d({kind:n.status}))})(),()=>{e.abort()}},[t]);let D=async e=>{if(e.preventDefault(),!t||r.kind!==`form`||!p.trim()||g)return;_(!0),T(null);let n=await y(t,p).catch(()=>({status:`error`}));switch(_(!1),n.status){case`ok`:m(``),d({kind:`success`});break;case`invalid`:case`expired`:case`used`:d({kind:n.status});break;case`store-failed`:m(``),d({kind:`store-failed`});break;case`error`:T(`Something went wrong while submitting. Check your connection and try again.`);break}},O=r.kind===`form`?h(r.request.expiresAt):null,k=r.kind===`form`&&O!==null&&O>E,A;if(r.kind===`loading`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(c,{className:`h-5 w-5 animate-spin text-blue-600`,"aria-hidden":!0}),title:e(`credentialEntry.checkingTitle`),children:e(`credentialEntry.checkingBody`)});else if(r.kind===`success`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(o,{className:`h-5 w-5 text-green-600`,"aria-hidden":!0}),title:e(`credentialEntry.savedTitle`),children:e(`credentialEntry.savedBody`)});else if(r.kind===`invalid`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.invalidTitle`),children:e(`credentialEntry.invalidBody`)});else if(r.kind===`expired`||r.kind===`form`&&!k)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.expiredTitle`),children:e(`credentialEntry.expiredBody`)});else if(r.kind===`used`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.usedTitle`),children:e(`credentialEntry.usedBody`)});else if(r.kind===`store-failed`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.storeFailedTitle`),children:e(`credentialEntry.storeFailedBody`)});else if(r.kind===`error`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.errorTitle`),children:e(`credentialEntry.errorBody`)});else{let{request:t}=r,i=`${t.service}:${t.field}`,a=(O??0)-E;A=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(s,{className:`h-5 w-5 text-blue-600`,"aria-hidden":!0}),(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`credentialEntry.heading`)})]}),(0,b.jsxs)(`div`,{className:`rounded-md border border-[var(--border-subtle)] bg-[var(--background-muted)] p-4`,children:[(0,b.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:t.label||i}),(0,b.jsxs)(`p`,{className:`mt-1 font-mono text-body-small-default text-[var(--content-tertiary)]`,children:[t.label?`${i} · `:``,e(`credentialEntry.oneTimeEntry`)]})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:e(`credentialEntry.instructions`)}),(0,b.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>void D(e),children:[(0,b.jsx)(l,{label:e(`credentialEntry.valueLabel`),type:`password`,value:p,onChange:e=>m(e.target.value),placeholder:e(`credentialEntry.valuePlaceholder`),autoComplete:`off`,autoFocus:!0,fullWidth:!0,errorText:w??void 0}),(0,b.jsx)(n,{type:`submit`,disabled:g||!p.trim(),leftIcon:g?(0,b.jsx)(c,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:e(`credentialEntry.submit`)})]}),(0,b.jsx)(`p`,{className:`text-xs text-[var(--content-tertiary)]`,children:e(`credentialEntry.expiresIn`,{remaining:S(a),time:new Date(O??0).toLocaleTimeString()})})]})}return(0,b.jsx)(`main`,{className:`flex min-h-svh items-center justify-center bg-[var(--background-default)] px-6 py-10 text-[var(--content-primary)]`,children:(0,b.jsx)(`div`,{className:`w-full max-w-md`,children:(0,b.jsx)(i.Root,{bordered:!0,elevated:!0,padding:`lg`,children:(0,b.jsx)(`div`,{className:`flex flex-col gap-4`,children:A})})})})}export{w as CredentialEntryPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{r as t,t as n}from"./capture-error-VBsIaC5d.js";import{t as r}from"./react-BFJW0bSv.js";import{t as i}from"./button-VkxVX0DM.js";import{n as a}from"./QueryClientProvider-EuRl-wrW.js";import{t as o}from"./useQuery-CTSuec5b.js";import{t as s}from"./jsx-runtime-BJ8jcmzB.js";import{t as c}from"./card-DUsAeHUS.js";import{a as l,d as u,n as d,o as f}from"./list-row-D1odQOMJ.js";import{t as p}from"./check-NGUguBHp.js";import{t as m}from"./chevron-down-D1ho6wFA.js";import{t as h}from"./eye-off-8cYeidA6.js";import{t as g}from"./eye-C5DUd2Vd.js";import{t as _}from"./key-round-DcfNNfNG.js";import{t as v}from"./link-2-CTrfUFQw.js";import{t as y}from"./loader-circle-C9QjVTuc.js";import{t as b}from"./plus-BDSluxb4.js";import{t as ee}from"./search-FGnzWjRX.js";import{t as x}from"./trash-2-DnajdgJS.js";import{t as te}from"./tag-Ddzwz3ij.js";import{t as S}from"./popover-D3A6cIyW.js";import{t as C}from"./input-DkgpMeG9.js";import{t as w}from"./modal-UYNawsIu.js";import{n as T}from"./toast-ZCXyBjoj.js";import{t as E}from"./confirm-dialog--7V28331.js";import{t as D}from"./assistant-identity-store-DrQJhZh3.js";import{t as O}from"./i18n-7Z5ghN39.js";import{t as ne}from"./useTranslation-CJMg4EBF.js";import{t as k}from"./api-errors-DYGVb-Sh.js";import{$r as A,ft as j,pt as M}from"./sdk.gen-hZs6YBR0.js";import{r as N}from"./use-is-org-ready-CXChKRKk.js";import{nn as re}from"./react-query.gen-OpeDEMIm.js";import{t as ie}from"./assistant-feature-flag-store-DPde0AIx.js";import{t as P}from"./use-touch-mobile-Dr8DcEJC.js";import{t as F}from"./copy-to-clipboard-wnEkIu5M.js";import{t as I}from"./use-active-assistant-id-BFE4r9Rp.js";import{n as ae,t as L}from"./add-credential-modal-D2dFz_aq.js";import{t as R}from"./not-found-CV2fs1T6.js";import{t as oe}from"./detail-card-DBxsIpmu.js";import{t as z}from"./use-supports-credentials-settings-DK8TsliJ.js";var B=e(r(),1),V=`CREDENTIAL_IN_USE`;function se(e){if(!(e instanceof k)||e.code!==V)return null;let t=e.details;if(!t||typeof t!=`object`||!(`connections`in t))return null;let{connections:n}=t;return!Array.isArray(n)||!n.every(e=>typeof e==`string`)?null:n}function ce(e){return new Intl.ListFormat(O(),{style:`long`,type:`conjunction`}).format(e)}var H=s(),U=1500;function W(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function le({credential:e,assistantId:t,generatingLink:n,deleting:r,onGenerateLink:i,onDelete:a}){let o=`${e.service}:${e.field}`,[s,l]=(0,B.useState)(!1),u=[e.alias?o:null,e.createdAt?`added ${W(e.createdAt)}`:null].filter(e=>!!e);return(0,H.jsx)(c.Root,{children:(0,H.jsxs)(c.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,H.jsx)(_,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||o}),(0,H.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,H.jsx)(G,{assistantId:t,credential:e})}),u.length>0&&(0,H.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:u.join(` · `)})]}),(0,H.jsx)(`div`,{className:`shrink-0`,children:(0,H.jsx)(K,{name:o,open:s,onOpenChange:l,generatingLink:n,deleting:r,onGenerateLink:()=>{l(!1),i()},onDelete:()=>{l(!1),a()}})})]})})}function G({assistantId:e,credential:t}){let[n,r]=(0,B.useState)(null),[i,a]=(0,B.useState)(!1),[o,s]=(0,B.useState)(!1),c=(0,B.useRef)(null),l=(0,B.useRef)(0),d=`${t.service}:${t.field}`,f=(0,B.useCallback)(()=>{l.current++,r(null),a(!1),s(!1),c.current&&=(clearTimeout(c.current),null)},[]);(0,B.useEffect)(()=>{f()},[t.updatedAt,f]);let m=(0,B.useCallback)(async()=>{let n=++l.current;a(!0);try{let{data:i}=await M({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});l.current===n&&r(i.value)}catch{l.current===n&&T.error(`Couldn't reveal ${d}.`)}finally{l.current===n&&a(!1)}},[e,t.service,t.field,d]),_=(0,B.useCallback)(()=>{n!=null&&F(n,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{s(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>s(!1),U)}})},[n]),v=n!==null;return t.hasSecret?(0,H.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>v?f():void m(),disabled:i,"aria-label":v?`Hide value for ${d}`:`Reveal value for ${d}`,title:v?`Hide value`:`Click to reveal`,"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${v?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:v?n:t.scrubbedValue}),i?(0,H.jsx)(y,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):v?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:_,"aria-label":`Copy value for ${d}`,title:`Copy value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:o?(0,H.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,H.jsx)(u,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,H.jsx)(`button`,{type:`button`,onClick:f,"aria-label":`Hide value for ${d}`,title:`Hide value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,H.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,H.jsx)(`button`,{type:`button`,onClick:()=>void m(),"aria-label":`Reveal value for ${d}`,title:`Click to reveal`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,H.jsx)(g,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,H.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function K({name:e,open:t,onOpenChange:n,generatingLink:r,deleting:a,onGenerateLink:o,onDelete:s}){let c=P(),u=r||a,f=(0,H.jsx)(i,{variant:`outlined`,rightIcon:(0,H.jsx)(m,{}),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Configure ${e}`,leftIcon:u?(0,H.jsx)(y,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:`Configure`});return c?(0,H.jsxs)(l.Root,{open:t,onOpenChange:n,children:[(0,H.jsx)(l.Trigger,{asChild:!0,children:f}),(0,H.jsxs)(l.Content,{children:[(0,H.jsx)(l.Header,{children:(0,H.jsx)(l.Title,{children:e})}),(0,H.jsxs)(l.Body,{children:[(0,H.jsx)(d,{icon:r?y:v,label:`Generate link`,onSelect:()=>{u||o()}}),(0,H.jsx)(d,{icon:a?y:x,label:`Delete`,onSelect:()=>{u||s()}})]})]})]}):(0,H.jsxs)(S.Root,{open:t,onOpenChange:n,children:[(0,H.jsx)(S.Trigger,{asChild:!0,children:f}),(0,H.jsxs)(S.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,H.jsx)(i,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:o,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:r?(0,H.jsx)(y,{className:`animate-spin`,"aria-hidden":!0}):(0,H.jsx)(v,{"aria-hidden":!0}),children:`Generate link`}),(0,H.jsx)(i,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:s,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:a?(0,H.jsx)(y,{className:`animate-spin`,"aria-hidden":!0}):(0,H.jsx)(x,{"aria-hidden":!0}),children:`Delete`})]})]})}function ue(e){return e>0xe8d4a51000?e:e*1e3}async function de(e,t){let{data:n,response:r}=await A.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var q=6;function J(){let e=I(),t=z(e),n=D.use.assistantId();return D.use.version()!==null&&n===e&&!t?(0,H.jsx)(R,{}):t?(0,H.jsx)(Y,{}):null}function Y(){let e=I(),r=a(),s=N(),{t:l}=ne(`settings`),d=ae(e),p=o({queryKey:d,queryFn:async()=>{let{data:t}=await j({path:{assistant_id:e},body:{},throwOnError:!0});return{credentials:t.credentials,managedCredentials:t.managedCredentials}},enabled:s,retry:t}),m=(0,B.useMemo)(()=>p.data?.credentials??[],[p.data]),h=ie.use.settingsDeveloperNav(),g=(0,B.useMemo)(()=>h?p.data?.managedCredentials??[]:[],[h,p.data]),x=re({onSuccess:(e,t)=>{r.invalidateQueries({queryKey:d}),T.success(l(`credentialsPage.deleteSuccessToast`,{name:`${t.body.service}:${t.body.field}`}))},onError:(e,t)=>{let r=se(e),i=m.find(e=>e.service===t.body.service&&e.field===t.body.field);if(r&&i){V({credential:i,connections:r});return}n(e,{context:`credentials-delete`}),T.error(e.message||l(`credentialsPage.deleteErrorToast`))}}),[S,D]=(0,B.useState)(!1),[O,k]=(0,B.useState)(`own`),[A,M]=(0,B.useState)(``),[P,R]=(0,B.useState)(null),[z,V]=(0,B.useState)(null),[U,W]=(0,B.useState)(null),[G,K]=(0,B.useState)(null),J=x.isPending?`${x.variables?.body?.service}:${x.variables?.body?.field}`:null,Y=(0,B.useMemo)(()=>{let e=A.trim().toLowerCase();return e?m.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):m},[m,A]);(0,B.useEffect)(()=>{m.length<=q&&M(``)},[m.length]),(0,B.useEffect)(()=>{m.length===0&&g.length>0&&k(`managed`)},[m.length,g.length]);let X=(t,n)=>{x.mutate({path:{assistant_id:e},body:{service:t.service,field:t.field,...n?{force:!0}:{}}})},fe=()=>{let e=P;R(null),e&&X(e,!1)},pe=()=>{let e=z;V(null),e&&X(e.credential,!0)},me=async t=>{let n=`${t.service}:${t.field}`;K(n);try{let r=await de(e,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?W({name:n,url:r.url,expiresAt:r.expiresAt??null}):T.error(r.error||`Failed to generate a one-time link`)}catch(e){T.error(e instanceof Error?e.message:`Failed to generate a one-time link`)}finally{K(null)}},he=()=>{let e=U?.url;e&&F(e,{successMessage:`Link copied to clipboard.`,errorMessage:`Couldn't copy the link. Select it and copy manually.`})};if(p.isLoading)return(0,H.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,H.jsx)(y,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=m.length>0,Q=g.length>0,ge=m.length>q,$=O===`managed`&&Q;return(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsx)(oe,{title:`Credentials`,subtitle:$?`Provided through your Vellum-managed integrations. These are read-only here.`:`Stored encrypted in your assistant's credential vault. Reveal a value on demand, or replace or delete it at any time.`,accessory:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,H.jsx)(f,{items:[{value:`own`,label:`Your own`},{value:`managed`,label:`Managed`}],value:O,onChange:k,ariaLabel:`Credential source`}):null,!$&&Z?(0,H.jsx)(i,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>D(!0),leftIcon:(0,H.jsx)(b,{"aria-hidden":!0}),children:`Add`}):null]}),children:$?(0,H.jsx)(`div`,{className:`space-y-2`,children:g.map(e=>(0,H.jsx)(c.Root,{children:(0,H.jsxs)(c.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,H.jsx)(_,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.provider}),(0,H.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[e.accountInfo??e.handle,` · `,e.status]})]}),(0,H.jsx)(te,{tone:`neutral`,children:`Managed`})]})},e.handle))}):(0,H.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,H.jsxs)(`div`,{className:`space-y-3`,children:[ge?(0,H.jsx)(C,{type:`text`,value:A,onChange:e=>M(e.target.value),placeholder:`Search credentials`,"aria-label":`Search credentials`,leftIcon:(0,H.jsx)(ee,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,H.jsxs)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No credentials matched “`,A.trim(),`”.`]}):(0,H.jsx)(`div`,{className:`space-y-2`,children:Y.map(t=>{let n=`${t.service}:${t.field}`;return(0,H.jsx)(le,{credential:t,assistantId:e,generatingLink:G===n,deleting:J===n,onGenerateLink:()=>void me(t),onDelete:()=>R(t)},t.credentialId??n)})})]}):(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,H.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,H.jsx)(_,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,H.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No credentials yet`}),(0,H.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Add an API key or token to let tools and integrations use it.`})]}),Z?null:(0,H.jsx)(i,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>D(!0),className:`w-full border-dashed`,leftIcon:(0,H.jsx)(b,{"aria-hidden":!0}),children:`Add Credential`})]})}),(0,H.jsx)(E,{open:P!==null,title:l(`credentialsPage.deleteConfirmTitle`),message:P?l(`credentialsPage.deleteConfirmMessage`,{name:`${P.service}:${P.field}`}):``,confirmLabel:l(`credentialsPage.deleteConfirmLabel`),destructive:!0,onConfirm:fe,onCancel:()=>R(null)}),(0,H.jsx)(E,{open:z!==null,title:l(`credentialsPage.inUseTitle`),message:z?l(`credentialsPage.inUseMessage`,{count:z.connections.length,name:`${z.credential.service}:${z.credential.field}`,connections:ce(z.connections)}):``,confirmLabel:l(`credentialsPage.inUseConfirmLabel`),destructive:!0,onConfirm:pe,onCancel:()=>V(null)}),(0,H.jsx)(L,{open:S,onClose:()=>D(!1)}),(0,H.jsx)(w.Root,{open:U!==null,onOpenChange:e=>{e||W(null)},children:(0,H.jsxs)(w.Content,{size:`sm`,children:[(0,H.jsxs)(w.Header,{icon:v,children:[(0,H.jsx)(w.Title,{children:`One-time credential link`}),(0,H.jsx)(w.Description,{children:U?`Send this link to whoever should provide ${U.name}. It works exactly once${U.expiresAt===null?``:` and expires ${new Date(ue(U.expiresAt)).toLocaleString()}`}. Anyone with the link can set this credential, so share it over a trusted channel.`:``})]}),(0,H.jsx)(w.Body,{children:(0,H.jsx)(C,{label:`Link`,type:`text`,readOnly:!0,value:U?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,H.jsx)(w.Footer,{children:(0,H.jsx)(i,{type:`button`,size:`compact`,onClick:he,leftIcon:(0,H.jsx)(u,{"aria-hidden":!0}),children:`Copy link`})})]})})]})}export{J as CredentialsPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{r as t,t as n}from"./capture-error-VBsIaC5d.js";import{t as r}from"./react-BFJW0bSv.js";import{t as i}from"./button-C8CGr0T0.js";import{n as a}from"./QueryClientProvider-EuRl-wrW.js";import{t as o}from"./useQuery-CTSuec5b.js";import{t as s}from"./jsx-runtime-BJ8jcmzB.js";import{t as c}from"./card-DUsAeHUS.js";import{a as l,d as u,n as d,o as f}from"./list-row-6uedKE84.js";import{t as p}from"./check-NGUguBHp.js";import{t as m}from"./chevron-down-D1ho6wFA.js";import{t as h}from"./eye-off-8cYeidA6.js";import{t as g}from"./eye-C5DUd2Vd.js";import{t as _}from"./key-round-DcfNNfNG.js";import{t as v}from"./link-2-CTrfUFQw.js";import{t as y}from"./loader-circle-C9QjVTuc.js";import{t as b}from"./plus-BDSluxb4.js";import{t as ee}from"./search-FGnzWjRX.js";import{t as x}from"./trash-2-DnajdgJS.js";import{t as te}from"./tag-D2QYCm1p.js";import{t as S}from"./popover-B_nY8VYI.js";import{t as C}from"./input-DlkBtbxm.js";import{t as w}from"./modal-DN_Uwwkg.js";import{n as T}from"./toast-CHtrY-GO.js";import{t as E}from"./confirm-dialog-DYmL6FRe.js";import{t as D}from"./assistant-identity-store-DrQJhZh3.js";import{t as O}from"./i18n-C3bX3mTs.js";import{t as ne}from"./useTranslation-CCDbxnME.js";import{t as k}from"./api-errors-DYGVb-Sh.js";import{$r as A,ft as j,pt as M}from"./sdk.gen-hZs6YBR0.js";import{r as N}from"./use-is-org-ready-CEB5IRpO.js";import{nn as re}from"./react-query.gen-CYP-Tn4K.js";import{t as ie}from"./assistant-feature-flag-store-CdXRp9pV.js";import{t as P}from"./use-touch-mobile-CaIiM-us.js";import{t as F}from"./copy-to-clipboard-yufQqRBL.js";import{t as I}from"./use-active-assistant-id-BFE4r9Rp.js";import{n as ae,t as L}from"./add-credential-modal-DgoBqgwB.js";import{t as R}from"./not-found-DXwfp4Yf.js";import{t as oe}from"./detail-card-DwBporBs.js";import{t as z}from"./use-supports-credentials-settings-DK8TsliJ.js";var B=e(r(),1),V=`CREDENTIAL_IN_USE`;function se(e){if(!(e instanceof k)||e.code!==V)return null;let t=e.details;if(!t||typeof t!=`object`||!(`connections`in t))return null;let{connections:n}=t;return!Array.isArray(n)||!n.every(e=>typeof e==`string`)?null:n}function ce(e){return new Intl.ListFormat(O(),{style:`long`,type:`conjunction`}).format(e)}var H=s(),U=1500;function W(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function le({credential:e,assistantId:t,generatingLink:n,deleting:r,onGenerateLink:i,onDelete:a}){let o=`${e.service}:${e.field}`,[s,l]=(0,B.useState)(!1),u=[e.alias?o:null,e.createdAt?`added ${W(e.createdAt)}`:null].filter(e=>!!e);return(0,H.jsx)(c.Root,{children:(0,H.jsxs)(c.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,H.jsx)(_,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||o}),(0,H.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,H.jsx)(G,{assistantId:t,credential:e})}),u.length>0&&(0,H.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:u.join(` · `)})]}),(0,H.jsx)(`div`,{className:`shrink-0`,children:(0,H.jsx)(K,{name:o,open:s,onOpenChange:l,generatingLink:n,deleting:r,onGenerateLink:()=>{l(!1),i()},onDelete:()=>{l(!1),a()}})})]})})}function G({assistantId:e,credential:t}){let[n,r]=(0,B.useState)(null),[i,a]=(0,B.useState)(!1),[o,s]=(0,B.useState)(!1),c=(0,B.useRef)(null),l=(0,B.useRef)(0),d=`${t.service}:${t.field}`,f=(0,B.useCallback)(()=>{l.current++,r(null),a(!1),s(!1),c.current&&=(clearTimeout(c.current),null)},[]);(0,B.useEffect)(()=>{f()},[t.updatedAt,f]);let m=(0,B.useCallback)(async()=>{let n=++l.current;a(!0);try{let{data:i}=await M({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});l.current===n&&r(i.value)}catch{l.current===n&&T.error(`Couldn't reveal ${d}.`)}finally{l.current===n&&a(!1)}},[e,t.service,t.field,d]),_=(0,B.useCallback)(()=>{n!=null&&F(n,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{s(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>s(!1),U)}})},[n]),v=n!==null;return t.hasSecret?(0,H.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>v?f():void m(),disabled:i,"aria-label":v?`Hide value for ${d}`:`Reveal value for ${d}`,title:v?`Hide value`:`Click to reveal`,"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${v?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:v?n:t.scrubbedValue}),i?(0,H.jsx)(y,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):v?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:_,"aria-label":`Copy value for ${d}`,title:`Copy value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:o?(0,H.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,H.jsx)(u,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,H.jsx)(`button`,{type:`button`,onClick:f,"aria-label":`Hide value for ${d}`,title:`Hide value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,H.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,H.jsx)(`button`,{type:`button`,onClick:()=>void m(),"aria-label":`Reveal value for ${d}`,title:`Click to reveal`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,H.jsx)(g,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,H.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function K({name:e,open:t,onOpenChange:n,generatingLink:r,deleting:a,onGenerateLink:o,onDelete:s}){let c=P(),u=r||a,f=(0,H.jsx)(i,{variant:`outlined`,rightIcon:(0,H.jsx)(m,{}),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Configure ${e}`,leftIcon:u?(0,H.jsx)(y,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:`Configure`});return c?(0,H.jsxs)(l.Root,{open:t,onOpenChange:n,children:[(0,H.jsx)(l.Trigger,{asChild:!0,children:f}),(0,H.jsxs)(l.Content,{children:[(0,H.jsx)(l.Header,{children:(0,H.jsx)(l.Title,{children:e})}),(0,H.jsxs)(l.Body,{children:[(0,H.jsx)(d,{icon:r?y:v,label:`Generate link`,onSelect:()=>{u||o()}}),(0,H.jsx)(d,{icon:a?y:x,label:`Delete`,onSelect:()=>{u||s()}})]})]})]}):(0,H.jsxs)(S.Root,{open:t,onOpenChange:n,children:[(0,H.jsx)(S.Trigger,{asChild:!0,children:f}),(0,H.jsxs)(S.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,H.jsx)(i,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:o,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:r?(0,H.jsx)(y,{className:`animate-spin`,"aria-hidden":!0}):(0,H.jsx)(v,{"aria-hidden":!0}),children:`Generate link`}),(0,H.jsx)(i,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:s,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:a?(0,H.jsx)(y,{className:`animate-spin`,"aria-hidden":!0}):(0,H.jsx)(x,{"aria-hidden":!0}),children:`Delete`})]})]})}function ue(e){return e>0xe8d4a51000?e:e*1e3}async function de(e,t){let{data:n,response:r}=await A.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var q=6;function J(){let e=I(),t=z(e),n=D.use.assistantId();return D.use.version()!==null&&n===e&&!t?(0,H.jsx)(R,{}):t?(0,H.jsx)(Y,{}):null}function Y(){let e=I(),r=a(),s=N(),{t:l}=ne(`settings`),d=ae(e),p=o({queryKey:d,queryFn:async()=>{let{data:t}=await j({path:{assistant_id:e},body:{},throwOnError:!0});return{credentials:t.credentials,managedCredentials:t.managedCredentials}},enabled:s,retry:t}),m=(0,B.useMemo)(()=>p.data?.credentials??[],[p.data]),h=ie.use.settingsDeveloperNav(),g=(0,B.useMemo)(()=>h?p.data?.managedCredentials??[]:[],[h,p.data]),x=re({onSuccess:(e,t)=>{r.invalidateQueries({queryKey:d}),T.success(l(`credentialsPage.deleteSuccessToast`,{name:`${t.body.service}:${t.body.field}`}))},onError:(e,t)=>{let r=se(e),i=m.find(e=>e.service===t.body.service&&e.field===t.body.field);if(r&&i){V({credential:i,connections:r});return}n(e,{context:`credentials-delete`}),T.error(e.message||l(`credentialsPage.deleteErrorToast`))}}),[S,D]=(0,B.useState)(!1),[O,k]=(0,B.useState)(`own`),[A,M]=(0,B.useState)(``),[P,R]=(0,B.useState)(null),[z,V]=(0,B.useState)(null),[U,W]=(0,B.useState)(null),[G,K]=(0,B.useState)(null),J=x.isPending?`${x.variables?.body?.service}:${x.variables?.body?.field}`:null,Y=(0,B.useMemo)(()=>{let e=A.trim().toLowerCase();return e?m.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):m},[m,A]);(0,B.useEffect)(()=>{m.length<=q&&M(``)},[m.length]),(0,B.useEffect)(()=>{m.length===0&&g.length>0&&k(`managed`)},[m.length,g.length]);let X=(t,n)=>{x.mutate({path:{assistant_id:e},body:{service:t.service,field:t.field,...n?{force:!0}:{}}})},fe=()=>{let e=P;R(null),e&&X(e,!1)},pe=()=>{let e=z;V(null),e&&X(e.credential,!0)},me=async t=>{let n=`${t.service}:${t.field}`;K(n);try{let r=await de(e,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?W({name:n,url:r.url,expiresAt:r.expiresAt??null}):T.error(r.error||`Failed to generate a one-time link`)}catch(e){T.error(e instanceof Error?e.message:`Failed to generate a one-time link`)}finally{K(null)}},he=()=>{let e=U?.url;e&&F(e,{successMessage:`Link copied to clipboard.`,errorMessage:`Couldn't copy the link. Select it and copy manually.`})};if(p.isLoading)return(0,H.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,H.jsx)(y,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=m.length>0,Q=g.length>0,ge=m.length>q,$=O===`managed`&&Q;return(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsx)(oe,{title:`Credentials`,subtitle:$?`Provided through your Vellum-managed integrations. These are read-only here.`:`Stored encrypted in your assistant's credential vault. Reveal a value on demand, or replace or delete it at any time.`,accessory:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,H.jsx)(f,{items:[{value:`own`,label:`Your own`},{value:`managed`,label:`Managed`}],value:O,onChange:k,ariaLabel:`Credential source`}):null,!$&&Z?(0,H.jsx)(i,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>D(!0),leftIcon:(0,H.jsx)(b,{"aria-hidden":!0}),children:`Add`}):null]}),children:$?(0,H.jsx)(`div`,{className:`space-y-2`,children:g.map(e=>(0,H.jsx)(c.Root,{children:(0,H.jsxs)(c.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,H.jsx)(_,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.provider}),(0,H.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[e.accountInfo??e.handle,` · `,e.status]})]}),(0,H.jsx)(te,{tone:`neutral`,children:`Managed`})]})},e.handle))}):(0,H.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,H.jsxs)(`div`,{className:`space-y-3`,children:[ge?(0,H.jsx)(C,{type:`text`,value:A,onChange:e=>M(e.target.value),placeholder:`Search credentials`,"aria-label":`Search credentials`,leftIcon:(0,H.jsx)(ee,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,H.jsxs)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No credentials matched “`,A.trim(),`”.`]}):(0,H.jsx)(`div`,{className:`space-y-2`,children:Y.map(t=>{let n=`${t.service}:${t.field}`;return(0,H.jsx)(le,{credential:t,assistantId:e,generatingLink:G===n,deleting:J===n,onGenerateLink:()=>void me(t),onDelete:()=>R(t)},t.credentialId??n)})})]}):(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,H.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,H.jsx)(_,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,H.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No credentials yet`}),(0,H.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Add an API key or token to let tools and integrations use it.`})]}),Z?null:(0,H.jsx)(i,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>D(!0),className:`w-full border-dashed`,leftIcon:(0,H.jsx)(b,{"aria-hidden":!0}),children:`Add Credential`})]})}),(0,H.jsx)(E,{open:P!==null,title:l(`credentialsPage.deleteConfirmTitle`),message:P?l(`credentialsPage.deleteConfirmMessage`,{name:`${P.service}:${P.field}`}):``,confirmLabel:l(`credentialsPage.deleteConfirmLabel`),destructive:!0,onConfirm:fe,onCancel:()=>R(null)}),(0,H.jsx)(E,{open:z!==null,title:l(`credentialsPage.inUseTitle`),message:z?l(`credentialsPage.inUseMessage`,{count:z.connections.length,name:`${z.credential.service}:${z.credential.field}`,connections:ce(z.connections)}):``,confirmLabel:l(`credentialsPage.inUseConfirmLabel`),destructive:!0,onConfirm:pe,onCancel:()=>V(null)}),(0,H.jsx)(L,{open:S,onClose:()=>D(!1)}),(0,H.jsx)(w.Root,{open:U!==null,onOpenChange:e=>{e||W(null)},children:(0,H.jsxs)(w.Content,{size:`sm`,children:[(0,H.jsxs)(w.Header,{icon:v,children:[(0,H.jsx)(w.Title,{children:`One-time credential link`}),(0,H.jsx)(w.Description,{children:U?`Send this link to whoever should provide ${U.name}. It works exactly once${U.expiresAt===null?``:` and expires ${new Date(ue(U.expiresAt)).toLocaleString()}`}. Anyone with the link can set this credential, so share it over a trusted channel.`:``})]}),(0,H.jsx)(w.Body,{children:(0,H.jsx)(C,{label:`Link`,type:`text`,readOnly:!0,value:U?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,H.jsx)(w.Footer,{children:(0,H.jsx)(i,{type:`button`,size:`compact`,onClick:he,leftIcon:(0,H.jsx)(u,{"aria-hidden":!0}),children:`Copy link`})})]})})]})}export{J as CredentialsPage};
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{t as r}from"./typography-DekrYXvs.js";import{t as i}from"./preview-error-UT2_K5co.js";import{l as a}from"./src-Ch3HTlFm.js";import{t as o}from"./preview-skeleton-BStSegQN.js";var s=e(t(),1),c=[`,`,`;`,` `];function l(e){let t=e.trim();return t===``?!1:/^[+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$/.test(t)}function u(e,t){let n=0,r=!1,i=!1;for(let a=0;a<e.length;a+=1){let o=e[a];if(r){o===`"`&&(e[a+1]===`"`?a+=1:r=!1),i=!0;continue}if(o===`"`){r=!0,i=!0;continue}if(o===`
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{t as r}from"./typography-DekrYXvs.js";import{t as i}from"./preview-error-B7qHC1Y4.js";import{l as a}from"./src-DMnnfLrU.js";import{t as o}from"./preview-skeleton-BStSegQN.js";var s=e(t(),1),c=[`,`,`;`,` `];function l(e){let t=e.trim();return t===``?!1:/^[+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$/.test(t)}function u(e,t){let n=0,r=!1,i=!1;for(let a=0;a<e.length;a+=1){let o=e[a];if(r){o===`"`&&(e[a+1]===`"`?a+=1:r=!1),i=!0;continue}if(o===`"`){r=!0,i=!0;continue}if(o===`
2
2
  `||o===`\r`){if(i)break;continue}o===t&&(n+=1),i=!0}return n}function d(e){let t=c[0],n=0;for(let r of c){let i=u(e,r);i>n&&(t=r,n=i)}return t}function f(e,t){let n=[],r=[],i=``,a=!1,o=!1,s=()=>{r.push(i),i=``,r.length===1&&r[0]===``||n.push(r),r=[]};for(let c=0;c<e.length;c+=1){let l=e[c];if(a){l===`"`?e[c+1]===`"`?(i+=`"`,c+=1):a=!1:i+=l;continue}if(l===`"`&&i===``){a=!0;continue}if(l===t){r.push(i),i=``;continue}if(l===`\r`||l===`
3
3
  `){if(l===`\r`&&e[c+1]===`
4
4
  `&&(c+=1),s(),n.length>=5e3)return o=e.slice(c+1).trim()!==``,{records:n,truncated:o};continue}i+=l}return(i!==``||r.length>0)&&s(),{records:n,truncated:o}}function p(e){let t=e[0];return!t||e.length<2||t.some(e=>e.trim()===``||l(e))?!1:e.slice(1).some(e=>e.some(e=>l(e)))}function m(e){let t=e.charCodeAt(0)===65279?e.slice(1):e;if(t.trim()===``)return{headers:null,rows:[],truncated:!1};let{records:n,truncated:r}=f(t,d(t));if(n.length===0)return{headers:null,rows:[],truncated:r};let i=n.reduce((e,t)=>Math.max(e,t.length),0),a=Math.min(i,200),o=i>200,s=n.map(e=>{let t=e.slice(0,a);for(;t.length<a;)t.push(``);return t}),c=p(s);return{headers:c?s[0]:null,rows:c?s.slice(1):s,truncated:r||o}}var h=n(),g=30,_=`border-b border-r border-[var(--border-element)] px-2 py-1 align-top last:border-r-0`,v={Table:({style:e,...t})=>(0,h.jsx)(`table`,{...t,className:`w-full min-w-max border-collapse text-body-small-default text-[var(--content-default)]`,style:e}),TableRow:({item:e,...t})=>(0,h.jsx)(`tr`,{...t})};function y({blob:e,filename:t}){let[n,c]=(0,s.useState)(null),[l,u]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let t=!1;return c(null),u(!1),e.text().then(e=>{t||c(e)},()=>{t||u(!0)}),()=>{t=!0}},[e]);let d=(0,s.useMemo)(()=>n===null?null:m(n),[n]),f=d?.headers??null,p=(0,s.useCallback)(()=>f===null?null:(0,h.jsx)(`tr`,{children:f.map((e,t)=>(0,h.jsx)(`th`,{scope:`col`,title:e,className:`${_} bg-[var(--surface-sunken)] text-left text-body-small-emphasised`,children:(0,h.jsx)(`span`,{className:`block max-w-[20rem] truncate`,children:e})},t))}),[f]);if(l)return(0,h.jsx)(i,{filename:t});if(d===null)return(0,h.jsx)(o,{});let y=f?.length??d.rows[0]?.length??0;return y===0?(0,h.jsx)(`div`,{role:`status`,className:`flex h-full items-center justify-center p-4`,children:(0,h.jsx)(r,{as:`span`,variant:`body-small-default`,className:`text-[var(--content-tertiary)]`,children:`This file is empty`})}):(0,h.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,h.jsx)(a,{data:d.rows,initialItemCount:Math.min(d.rows.length,g),components:v,fixedHeaderContent:f===null?void 0:p,itemContent:(e,t)=>t.map((e,t)=>(0,h.jsx)(`td`,{title:e,className:_,children:(0,h.jsx)(`span`,{className:`block max-w-[20rem] truncate`,children:e})},t)),className:`min-h-0 flex-1`}),(0,h.jsxs)(r,{as:`p`,variant:`label-small-default`,className:`shrink-0 border-t border-[var(--border-element)] px-3 py-1.5 text-[var(--content-tertiary)]`,children:[`${d.rows.length} rows x ${y} columns`,d.truncated?` (truncated)`:``]})]})}export{y as CsvPreview};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{d as n}from"./chunk-5KNZJZUH-BUqIilZr.js";import{d as r}from"./routes-Bj1LYNBZ.js";var i=e(t(),1);function a(){let e=n();return(0,i.useEffect)(()=>{e(r.settings.general,{replace:!0})},[e]),null}export{a as DangerZoneRedirectPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{d as n}from"./chunk-5KNZJZUH-BUqIilZr.js";import{d as r}from"./routes-yNhBxUSb.js";var i=e(t(),1);function a(){let e=n();return(0,i.useEffect)(()=>{e(r.settings.general,{replace:!0})},[e]),null}export{a as DangerZoneRedirectPage};