@vellumai/web 0.10.0-staging.1 → 0.10.0-staging.2

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 (170) hide show
  1. package/dist/assets/{BundleConfirmPage-DJIGg7bK.js → BundleConfirmPage-CkXUMWg6.js} +1 -1
  2. package/dist/assets/account-page-D5qDx37o.js +1 -0
  3. package/dist/assets/{add-credits-modal-DvrQcX_K.js → add-credits-modal-DpHTkxV2.js} +1 -1
  4. package/dist/assets/{advanced-page-yAmIJ0-O.js → advanced-page-DWX9qbxa.js} +1 -1
  5. package/dist/assets/ai-page-Cp6X0S2W.js +1 -0
  6. package/dist/assets/{api-CGh7zC7Z.js → api-BSHLYsxJ.js} +1 -1
  7. package/dist/assets/{api-key-screen-CSIU6tlW.js → api-key-screen-DvV4RiY0.js} +1 -1
  8. package/dist/assets/{archive-page-C2M9DCgh.js → archive-page-B7i9-bc2.js} +1 -1
  9. package/dist/assets/{assistant-api-ClCDtfaz.js → assistant-api-D7r6RWoh.js} +1 -1
  10. package/dist/assets/{assistant-feature-flag-store-BMVR2Dx7.js → assistant-feature-flag-store-D2CUHsmL.js} +1 -1
  11. package/dist/assets/{assistant-identity-store-BIu8LXuD.js → assistant-identity-store-BFaMpt_3.js} +1 -1
  12. package/dist/assets/{assistant-status-panel-CqM_xxPL.js → assistant-status-panel-CMdqv7mF.js} +1 -1
  13. package/dist/assets/auth-store-CrTf0uWL.js +7 -0
  14. package/dist/assets/{billing-page-BFPsW1V-.js → billing-page-CMhUfBBf.js} +3 -3
  15. package/dist/assets/{bookmarks-page-Cuqjyd6n.js → bookmarks-page-BBlx8L6h.js} +1 -1
  16. package/dist/assets/{build-state-CI5r3DCj.js → build-state-DqzVxR37.js} +1 -1
  17. package/dist/assets/{client-feature-flag-store-C1ws4QpG.js → client-feature-flag-store-ivPVcKfH.js} +1 -1
  18. package/dist/assets/{command-palette-window-page-DmXX3g9_.js → command-palette-window-page-CHu_bF8J.js} +1 -1
  19. package/dist/assets/{command-palette-c-GkLSgn.js → command-palette-yIWk_niH.js} +1 -1
  20. package/dist/assets/{community-page-fRxEWvml.js → community-page-CiartSQX.js} +1 -1
  21. package/dist/assets/{connect-page-fCkHk4FB.js → connect-page-Bvs0EgCJ.js} +1 -1
  22. package/dist/assets/{consent-controls-C1u7ZVkJ.js → consent-controls-cNdj_gb8.js} +1 -1
  23. package/dist/assets/{contacts-page-route-DWj-5GZ2.js → contacts-page-route-C9IaBKKe.js} +1 -1
  24. package/dist/assets/{conversation-queries-C5J_wBFK.js → conversation-queries-Dt4RoWIo.js} +1 -1
  25. package/dist/assets/{debug-page-NtJJIUeZ.js → debug-page-DGQMqihK.js} +2 -2
  26. package/dist/assets/{deploy-dialogs-ZukSD1Ok.js → deploy-dialogs-DWIqIDdv.js} +1 -1
  27. package/dist/assets/{developer-page-uTOD0kmX.js → developer-page-ClPMK7n8.js} +1 -1
  28. package/dist/assets/{devices-page-t38uJ_Rj.js → devices-page-N9s-okC5.js} +1 -1
  29. package/dist/assets/{dictation-overlay-page-bgPMse-0.js → dictation-overlay-page-D_eJHI6R.js} +1 -1
  30. package/dist/assets/{document-viewer-page-4J5Pxy_g.js → document-viewer-page-CmSYAtEc.js} +1 -1
  31. package/dist/assets/{earn-credits-modal-Dw8Q142A.js → earn-credits-modal-OFm9gF2_.js} +1 -1
  32. package/dist/assets/{emails-page-DtWzs4ko.js → emails-page-psWdsGCD.js} +1 -1
  33. package/dist/assets/esm--X8IY1ec.js +1 -0
  34. package/dist/assets/{esm-BhnwM79d.js → esm-Cs-ixW_a.js} +2 -2
  35. package/dist/assets/{esm-CiJceiot.js → esm-DkmmS1Rg.js} +2 -2
  36. package/dist/assets/{esm-D18RlLzi.js → esm-DxJBeF-2.js} +2 -2
  37. package/dist/assets/{esm-Fz1t-KBM.js → esm-JmlvYCir.js} +2 -2
  38. package/dist/assets/{esm-RSkzRC1V.js → esm-LyzWW9Z1.js} +2 -2
  39. package/dist/assets/{feature-flag-catalog-zKzlKAIS.js → feature-flag-catalog-DEr38CMM.js} +1 -1
  40. package/dist/assets/{file-editor-Dsmrsieh.js → file-editor-CKotrZYQ.js} +1 -1
  41. package/dist/assets/{general-page-BmuGD9t1.js → general-page-CaAos_hp.js} +1 -1
  42. package/dist/assets/hatching-screen-CtgkoJwM.js +1 -0
  43. package/dist/assets/{home-page-route-B9TWPA_Z.js → home-page-route-syOFwCBN.js} +1 -1
  44. package/dist/assets/hosting-screen-Duoz3ECF.js +1 -0
  45. package/dist/assets/{identity-page-route-C_hcLi9A.js → identity-page-route-gCgQUpAC.js} +1 -1
  46. package/dist/assets/{index-DjBiif5r.js → index-LP2PV_QY.js} +31 -31
  47. package/dist/assets/{inspect-page-Ds4ete37.js → inspect-page-CYszP4kv.js} +3 -3
  48. package/dist/assets/{install-BTdfOS56.js → install-BK1MtTfb.js} +1 -1
  49. package/dist/assets/{integrations-page-BcINhzsa.js → integrations-page-8RrTqdmS.js} +1 -1
  50. package/dist/assets/{intelligence-layout-D4ZCqIzW.js → intelligence-layout-DMxSxRZX.js} +1 -1
  51. package/dist/assets/{keyboard-shortcuts-page-0nrN6XlU.js → keyboard-shortcuts-page-q_QkRUkC.js} +1 -1
  52. package/dist/assets/{library-detail-page-DRWl6nzT.js → library-detail-page-_lrynJRj.js} +1 -1
  53. package/dist/assets/{library-page-tkcbXp1r.js → library-page-CKh1x82Q.js} +1 -1
  54. package/dist/assets/{login-flow-B745Do-L.js → login-flow-BMwbZfKA.js} +1 -1
  55. package/dist/assets/{login-page-mv9EfrL5.js → login-page-CDtyRiaq.js} +1 -1
  56. package/dist/assets/{logout-page-orHUxw4u.js → logout-page-vdgRWyPg.js} +1 -1
  57. package/dist/assets/{logs-layout-DRmlEOMI.js → logs-layout-btcFTD4i.js} +1 -1
  58. package/dist/assets/{mcp-page-D3WCeVhI.js → mcp-page-DdG8hp_Z.js} +1 -1
  59. package/dist/assets/{memory-router-playground-page-1HTpZRzo.js → memory-router-playground-page-Bt_KJsxN.js} +1 -1
  60. package/dist/assets/{metric-card-CXCuWhNG.js → metric-card-B3EBP9m4.js} +1 -1
  61. package/dist/assets/{mobile-sidebar-drawer-Bx5YTlNy.js → mobile-sidebar-drawer-Cd68jgRD.js} +1 -1
  62. package/dist/assets/{native-file-Cd0uSBuG.js → native-file-CbhjzPxL.js} +2 -2
  63. package/dist/assets/{notifications-page-Z4rBfcim.js → notifications-page-BilkBeoP.js} +1 -1
  64. package/dist/assets/{oauth-complete-page-dL5TWauu.js → oauth-complete-page-BC7UElNs.js} +1 -1
  65. package/dist/assets/{oauth-popup-complete-page-ygMAHToC.js → oauth-popup-complete-page-CiTNEvfk.js} +1 -1
  66. package/dist/assets/{pairing-page-B_goGm8F.js → pairing-page-Dc-5wQmY.js} +1 -1
  67. package/dist/assets/{platform-loopback-page-40umE5Nz.js → platform-loopback-page-Wie5xEwr.js} +1 -1
  68. package/dist/assets/{plugin-detail-page-BnQ2kf7Y.js → plugin-detail-page-CtWtIYBW.js} +1 -1
  69. package/dist/assets/{plugins-page-pcTOnJpU.js → plugins-page-1vkkdBfG.js} +1 -1
  70. package/dist/assets/{prechat-route-Cbk86DeT.js → prechat-route-CG8Qo2Tq.js} +1 -1
  71. package/dist/assets/{prefs-DjG8e7dK.js → prefs-Mrqh1A7Y.js} +1 -1
  72. package/dist/assets/{privacy-page-ChgL1FV8.js → privacy-page-rNHkqHfs.js} +1 -1
  73. package/dist/assets/{privacy-screen-CND_dL-J.js → privacy-screen-Cck6z5wu.js} +1 -1
  74. package/dist/assets/{provider-callback-page-BB-waTRl.js → provider-callback-page-CrZXFWM7.js} +1 -1
  75. package/dist/assets/{provider-signup-page-DKG8Ow1Y.js → provider-signup-page-Beuafn_s.js} +1 -1
  76. package/dist/assets/{proxy-BaYss8LN.js → proxy-CQsxT9tJ.js} +1 -1
  77. package/dist/assets/{quick-input-page-rj5DDrdc.js → quick-input-page-0PEcj6WT.js} +1 -1
  78. package/dist/assets/{research-mock-page-Crn0z5z6.js → research-mock-page-D7-VpSBh.js} +1 -1
  79. package/dist/assets/{research-onboarding-route-BtoNZ0do.js → research-onboarding-route-DAPVTFHs.js} +2 -2
  80. package/dist/assets/{review-terms-screen-BvG3xAnz.js → review-terms-screen-C8XTIUYc.js} +1 -1
  81. package/dist/assets/sdk.gen-DRL3oRwz.js +1 -0
  82. package/dist/assets/{select-assistant-screen-EaSNw87g.js → select-assistant-screen-PZqDGbI2.js} +1 -1
  83. package/dist/assets/{settings-layout-0KMmprEe.js → settings-layout-ByZKbs5J.js} +1 -1
  84. package/dist/assets/{share-feedback-modal-DDiWBGt6.js → share-feedback-modal-CuxFlSR6.js} +1 -1
  85. package/dist/assets/{sidebar-tree-SP7fohd6.js → sidebar-tree-BZUv9ggX.js} +1 -1
  86. package/dist/assets/{signup-page-mHalxyN4.js → signup-page-BWnAp0Bw.js} +1 -1
  87. package/dist/assets/{signup-shell-CIXfwueV.js → signup-shell-D6LXKfGy.js} +1 -1
  88. package/dist/assets/{skills-page-D_3kRG_-.js → skills-page-BAodqgt1.js} +1 -1
  89. package/dist/assets/{sounds-page-DWJKkT-Q.js → sounds-page-hDPPoEEQ.js} +1 -1
  90. package/dist/assets/{step-indicator-dots-CxPpUjj-.js → step-indicator-dots-CwbobrxS.js} +1 -1
  91. package/dist/assets/{subagent-detail-panel-CO8xcBkY.js → subagent-detail-panel-Db9feY1I.js} +1 -1
  92. package/dist/assets/{system-events-page-BT7c7g29.js → system-events-page-DYi0jI1g.js} +1 -1
  93. package/dist/assets/{tiptap-document-editor-CH0hLQg8.js → tiptap-document-editor-DD5B0bf0.js} +1 -1
  94. package/dist/assets/{tool-detail-panel-DjQRk3C4.js → tool-detail-panel-DZf8WIS6.js} +1 -1
  95. package/dist/assets/{trace-page-DXoNPNF2.js → trace-page-DSDi-YYp.js} +1 -1
  96. package/dist/assets/typed-storage-SkUUNYR1.js +1 -0
  97. package/dist/assets/{upgrade-cancel-page-D3ClLquH.js → upgrade-cancel-page-DHzkb9An.js} +1 -1
  98. package/dist/assets/{upgrade-success-page-D8M_sxa0.js → upgrade-success-page-CIooZvxn.js} +1 -1
  99. package/dist/assets/{usage-page-CdTcaS_i.js → usage-page-XWL-WFaq.js} +1 -1
  100. package/dist/assets/use-is-org-ready-BoWiaeMc.js +1 -0
  101. package/dist/assets/{use-onboarding-login-CrYY0jua.js → use-onboarding-login-CxXV3Iue.js} +1 -1
  102. package/dist/assets/{use-reduced-motion-C9zjvTsb.js → use-reduced-motion-CXbk4fYO.js} +1 -1
  103. package/dist/assets/{utils-BjpQXgRD.js → utils-B5-aBe5u.js} +1 -1
  104. package/dist/assets/{voice-page-DYQ_Bjkg.js → voice-page-BwA-ETwe.js} +1 -1
  105. package/dist/assets/{weather-forecast-display-PvQnLjFm.js → weather-forecast-display-tzc5l6oR.js} +1 -1
  106. package/dist/assets/{web-CUsG7AaW.js → web-DKvxfNu_.js} +1 -1
  107. package/dist/assets/{welcome-screen-Csr3Xjbb.js → welcome-screen-BkL_1qYq.js} +1 -1
  108. package/dist/assets/{workflow-detail-panel-C1hoa9n4.js → workflow-detail-panel-DYQvTG3m.js} +1 -1
  109. package/dist/assets/{workspace-page-D2jf__1O.js → workspace-page-t_8JOOXv.js} +1 -1
  110. package/dist/index.html +39 -38
  111. package/package.json +1 -1
  112. package/dist/assets/account-page-B-pFQ4QZ.js +0 -1
  113. package/dist/assets/ai-page-CSwTzhul.js +0 -1
  114. package/dist/assets/auth-store-CyAWX99c.js +0 -6
  115. package/dist/assets/hatching-screen-D9XPAXWn.js +0 -1
  116. package/dist/assets/hosting-screen-BFr_zyC4.js +0 -1
  117. package/dist/assets/sdk.gen-D7k-QjYl.js +0 -1
  118. package/dist/assets/use-is-org-ready-CMpj-2ts.js +0 -1
  119. /package/dist/assets/{about-page-CVV-MCho.js → about-page-Bue2vNnY.js} +0 -0
  120. /package/dist/assets/{account-shell-e28XT1Gw.js → account-shell-oWV1wIYb.js} +0 -0
  121. /package/dist/assets/{avatar-bundled-components-D6zRL_dw.js → avatar-bundled-components-UfXe4Pfu.js} +0 -0
  122. /package/dist/assets/{avatar-svg-compositor-BDV_OAev.js → avatar-svg-compositor-Bbqkq_FE.js} +0 -0
  123. /package/dist/assets/{build.umd-BrMpqUXB.js → build.umd-TjHHwLRY.js} +0 -0
  124. /package/dist/assets/{composer-focus-zRjwsXmH.js → composer-focus-DP3jFn8K.js} +0 -0
  125. /package/dist/assets/{contacts-gateway-AXbkzYpn.js → contacts-gateway-Cf32jSYa.js} +0 -0
  126. /package/dist/assets/{conversation-selection-DCYDhK6e.js → conversation-selection-BMndnV1U.js} +0 -0
  127. /package/dist/assets/{conversation-store-CBtnzP2n.js → conversation-store-BSxi0r0X.js} +0 -0
  128. /package/dist/assets/{danger-zone-redirect-page-BiH15rFW.js → danger-zone-redirect-page-5H-AuIvi.js} +0 -0
  129. /package/dist/assets/{definitions-DhIUJp4x.js → definitions-BqAtozTh.js} +0 -0
  130. /package/dist/assets/{detail-card-DeCfFKxN.js → detail-card-CLwQ17AA.js} +0 -0
  131. /package/dist/assets/{edit-chat-session-BUoLTWlo.js → edit-chat-session-B1tanC3Z.js} +0 -0
  132. /package/dist/assets/{effective-timezone-DKIHYiQs.js → effective-timezone-wo2Bhl1P.js} +0 -0
  133. /package/dist/assets/{emoji-catalog-data-BRNanslS.js → emoji-catalog-data-B6Q5tPZJ.js} +0 -0
  134. /package/dist/assets/{environment-store-BPyWfH08.js → environment-store-Ck7wXCrL.js} +0 -0
  135. /package/dist/assets/{format-2xr96iXO.js → format-B12w_G9l.js} +0 -0
  136. /package/dist/assets/{format-date-CVdOzfYM.js → format-date-B6hTwbOM.js} +0 -0
  137. /package/dist/assets/{format-file-size-HIBUjVRS.js → format-file-size-DxhjMSDx.js} +0 -0
  138. /package/dist/assets/{haptics-1zSZHQps.js → haptics-BtSYrQNK.js} +0 -0
  139. /package/dist/assets/{impersonate-version-flag-BBe6qZWh.js → impersonate-version-flag-ZdQOgpO3.js} +0 -0
  140. /package/dist/assets/{lib-CLT_iFkF.js → lib-CQbq3OZw.js} +0 -0
  141. /package/dist/assets/{llm-dimension-Czl_J9gg.js → llm-dimension-Cs4q1Ovq.js} +0 -0
  142. /package/dist/assets/{misc-BurDhv2T.js → misc-Bo3spjOe.js} +0 -0
  143. /package/dist/assets/{native-deep-link-CFFM1NaG.js → native-deep-link-_WT_7c80.js} +0 -0
  144. /package/dist/assets/{page-shell-CTmljSuy.js → page-shell-C0oiLAoY.js} +0 -0
  145. /package/dist/assets/{password-reset-page-DJQASQbj.js → password-reset-page-Cf5SQHDV.js} +0 -0
  146. /package/dist/assets/{pdf-DDcCO6Ea.js → pdf-CMJp1GoR.js} +0 -0
  147. /package/dist/assets/{prechat-names-Dl1bWxyY.js → prechat-names-BZIP2Y-H.js} +0 -0
  148. /package/dist/assets/{provider-key-AiDfAj3X.js → provider-key-DH6JmPXt.js} +0 -0
  149. /package/dist/assets/{public-asset-DSNbX6CW.js → public-asset-Dp-i4xhW.js} +0 -0
  150. /package/dist/assets/{reduced-motion-C-oXOoz4.js → reduced-motion-Do7LyjE6.js} +0 -0
  151. /package/dist/assets/{schedules-BfL_KgUR.js → schedules-DqkGi2Lm.js} +0 -0
  152. /package/dist/assets/{semver-CWB8BPhv.js → semver-DmouQEQK.js} +0 -0
  153. /package/dist/assets/{setting-row-Bke-X9s7.js → setting-row-IILQu7AE.js} +0 -0
  154. /package/dist/assets/{sound-manager-Cuz_K65T.js → sound-manager-CC2af7bI.js} +0 -0
  155. /package/dist/assets/{subagent-status-BZXtYoyE.js → subagent-status-CaVVlphf.js} +0 -0
  156. /package/dist/assets/{system-events-redirect-page-BhFhVZX3.js → system-events-redirect-page-CmooXfba.js} +0 -0
  157. /package/dist/assets/{usage-window-DOM_y3PN.js → usage-window-BO_9IIjX.js} +0 -0
  158. /package/dist/assets/{use-active-assistant-id-BtGthKQp.js → use-active-assistant-id-512RohBL.js} +0 -0
  159. /package/dist/assets/{use-bus-subscription-DSrmmjvt.js → use-bus-subscription-RUbeQDfy.js} +0 -0
  160. /package/dist/assets/{use-is-mobile-C0ubX5Es.js → use-is-mobile-CvT53Qs1.js} +0 -0
  161. /package/dist/assets/{use-plugin-drift-DyjoyDBs.js → use-plugin-drift-BUHRYq2W.js} +0 -0
  162. /package/dist/assets/{viewer-store-Cfso5FNU.js → viewer-store-CInCucV8.js} +0 -0
  163. /package/dist/assets/{web-D5xtOjGa.js → web-4XHemeeJ.js} +0 -0
  164. /package/dist/assets/{web-D9FZSZCN.js → web-BEsXuN9d.js} +0 -0
  165. /package/dist/assets/{web-DgFXqVj3.js → web-BcNl6r2T.js} +0 -0
  166. /package/dist/assets/{web-liDG2TJr.js → web-BorhjBfF.js} +0 -0
  167. /package/dist/assets/{web-1_PP1DD_.js → web-CVJTgRoJ.js} +0 -0
  168. /package/dist/assets/{web-Ci20mxIU.js → web-DALQZUJ4.js} +0 -0
  169. /package/dist/assets/{xterm-DDh2F3IU.js → xterm-BJ2bbKsF.js} +0 -0
  170. /package/dist/assets/{xterm-addon-fit-CyzlQnJv.js → xterm-addon-fit-BJTajn72.js} +0 -0
@@ -1 +1 @@
1
- import{t as e}from"./button-D7s2Q_uG.js";import{t}from"./jsx-runtime-CVSDxk6A.js";import{t as n}from"./card-BibIM9x3.js";import{t as r}from"./tag-BadGF3FB.js";import{t as i}from"./createLucideIcon-DIlBzeWM.js";import{t as a}from"./bug-BIPj7Nbx.js";import{t as o}from"./external-link-B3skagqt.js";import{t as s}from"./globe-BV8ouh66.js";import{t as c}from"./sparkles-B9QIWdq0.js";import{G as l,Hi as u,Yi as d,a as f,ha as p,i as m,n as h,o as g,yo as _,za as v}from"./index-DjBiif5r.js";var y=i(`git-pull-request`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`line`,{x1:`6`,x2:`6`,y1:`9`,y2:`21`,key:`rroup`}]]),b=t();function x({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`})})}function S({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})})}function C({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814ZM9.545 15.568V8.432L15.818 12l-6.273 3.568Z`})})}function w(){return(0,b.jsx)(n,{padding:`lg`,className:`bg-[var(--surface-lift)]`,children:(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-16 h-64 w-64 rounded-full opacity-30 blur-3xl`,style:{background:`radial-gradient(circle, var(--system-mid-weak) 0%, transparent 70%)`},"aria-hidden":!0}),(0,b.jsxs)(`div`,{className:`relative flex flex-col items-start gap-3`,children:[(0,b.jsxs)(r,{tone:`neutral`,children:[(0,b.jsx)(p,{className:`h-3.5 w-3.5`}),`Community`]}),(0,b.jsx)(`h1`,{className:`text-[28px] font-semibold leading-tight tracking-tight text-[var(--content-emphasised)]`,children:`Build with us, in the open.`}),(0,b.jsx)(`p`,{className:`max-w-xl text-body-medium-default text-[color:var(--content-tertiary)]`,children:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`})]})]})})}function T({icon:e,text:t}){return(0,b.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md bg-[var(--surface-base)]`,children:(0,b.jsx)(e,{size:14,className:`text-[var(--content-secondary)]`,"aria-hidden":!0})}),(0,b.jsx)(`span`,{className:`text-body-medium-lighter text-[color:var(--content-secondary)]`,children:t})]})}function E({accentColor:t,iconColor:r=`var(--aux-white)`,label:i,icon:a,title:o,subtitle:s,benefits:c,primaryAction:l,secondaryAction:u}){return(0,b.jsx)(n,{padding:`lg`,className:`flex-1`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:r},children:a}),(0,b.jsx)(`span`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:i})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,b.jsx)(`h2`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:o}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:s})]}),(0,b.jsx)(`ul`,{className:`flex flex-col gap-3`,children:c.map(({icon:e,text:t})=>(0,b.jsx)(T,{icon:e,text:t},t))}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(e,{onClick:l.onClick,children:[l.icon,l.label]}),u&&(0,b.jsxs)(e,{variant:`ghost`,onClick:()=>window.open(u.href,`_blank`,`noopener,noreferrer`),children:[u.label,(0,b.jsx)(_,{className:`h-3.5 w-3.5`})]})]})]})})}function D({icon:e,iconBg:t,iconColor:r=`white`,title:i,description:a,href:s}){return(0,b.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,className:`flex flex-1 cursor-pointer`,children:(0,b.jsx)(n,{className:`flex-1 transition-shadow hover:shadow-md`,padding:`lg`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:r},children:e}),(0,b.jsx)(o,{size:14,className:`text-[var(--content-tertiary)]`,"aria-hidden":!0})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,b.jsx)(`span`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:i}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:a})]})]})})})}function O(){let{handleStar:e}=g();return(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsx)(w,{}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2`,children:[(0,b.jsx)(E,{accentColor:`var(--content-emphasised)`,iconColor:`var(--surface-base)`,label:`Open Source`,icon:(0,b.jsx)(x,{size:20}),title:`Vellum is open source`,subtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,benefits:[{icon:d,text:`Star the repo to follow updates`},{icon:a,text:`Open issues and report bugs`},{icon:y,text:`Contribute fixes and new features`}],primaryAction:{label:`Star on GitHub`,icon:(0,b.jsx)(d,{size:16}),onClick:e},secondaryAction:{label:`View source`,href:f}}),(0,b.jsx)(E,{accentColor:`#5865F2`,label:`Discord`,icon:(0,b.jsx)(l,{size:20}),title:`Join our community`,subtitle:`Talk to the team, share feedback, request features, and get answers faster.`,benefits:[{icon:v,text:`Talk directly with the team`},{icon:c,text:`Share feedback and request features`},{icon:u,text:`Get answers faster from the community`}],primaryAction:{label:`Join Discord`,icon:(0,b.jsx)(l,{size:16,style:{color:`currentColor`}}),onClick:m}})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:`More from Vellum`}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,b.jsx)(D,{icon:(0,b.jsx)(s,{size:20}),iconBg:`#22c55e`,title:`Community Hub`,description:`Showcases, guides, and projects shared by the community.`,href:h}),(0,b.jsx)(D,{icon:(0,b.jsx)(S,{size:20}),iconBg:`var(--content-default)`,iconColor:`var(--surface-base)`,title:`Follow on X`,description:`Product updates, releases, and behind-the-scenes.`,href:`https://x.com/vellum_ai`}),(0,b.jsx)(D,{icon:(0,b.jsx)(C,{size:20}),iconBg:`#ef4444`,title:`YouTube channel`,description:`Walkthroughs, tutorials, and product deep-dives.`,href:`https://www.youtube.com/@Vellum_AI`})]})]})]})}export{O as CommunityPage};
1
+ import{t as e}from"./button-D7s2Q_uG.js";import{t}from"./jsx-runtime-CVSDxk6A.js";import{t as n}from"./card-BibIM9x3.js";import{t as r}from"./tag-BadGF3FB.js";import{t as i}from"./createLucideIcon-DIlBzeWM.js";import{t as a}from"./bug-BIPj7Nbx.js";import{t as o}from"./external-link-B3skagqt.js";import{t as s}from"./globe-BV8ouh66.js";import{t as c}from"./sparkles-B9QIWdq0.js";import{G as l,Hi as u,Yi as d,a as f,ha as p,i as m,n as h,o as g,yo as _,za as v}from"./index-LP2PV_QY.js";var y=i(`git-pull-request`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`line`,{x1:`6`,x2:`6`,y1:`9`,y2:`21`,key:`rroup`}]]),b=t();function x({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`})})}function S({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})})}function C({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814ZM9.545 15.568V8.432L15.818 12l-6.273 3.568Z`})})}function w(){return(0,b.jsx)(n,{padding:`lg`,className:`bg-[var(--surface-lift)]`,children:(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-16 h-64 w-64 rounded-full opacity-30 blur-3xl`,style:{background:`radial-gradient(circle, var(--system-mid-weak) 0%, transparent 70%)`},"aria-hidden":!0}),(0,b.jsxs)(`div`,{className:`relative flex flex-col items-start gap-3`,children:[(0,b.jsxs)(r,{tone:`neutral`,children:[(0,b.jsx)(p,{className:`h-3.5 w-3.5`}),`Community`]}),(0,b.jsx)(`h1`,{className:`text-[28px] font-semibold leading-tight tracking-tight text-[var(--content-emphasised)]`,children:`Build with us, in the open.`}),(0,b.jsx)(`p`,{className:`max-w-xl text-body-medium-default text-[color:var(--content-tertiary)]`,children:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`})]})]})})}function T({icon:e,text:t}){return(0,b.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md bg-[var(--surface-base)]`,children:(0,b.jsx)(e,{size:14,className:`text-[var(--content-secondary)]`,"aria-hidden":!0})}),(0,b.jsx)(`span`,{className:`text-body-medium-lighter text-[color:var(--content-secondary)]`,children:t})]})}function E({accentColor:t,iconColor:r=`var(--aux-white)`,label:i,icon:a,title:o,subtitle:s,benefits:c,primaryAction:l,secondaryAction:u}){return(0,b.jsx)(n,{padding:`lg`,className:`flex-1`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:r},children:a}),(0,b.jsx)(`span`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:i})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,b.jsx)(`h2`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:o}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:s})]}),(0,b.jsx)(`ul`,{className:`flex flex-col gap-3`,children:c.map(({icon:e,text:t})=>(0,b.jsx)(T,{icon:e,text:t},t))}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(e,{onClick:l.onClick,children:[l.icon,l.label]}),u&&(0,b.jsxs)(e,{variant:`ghost`,onClick:()=>window.open(u.href,`_blank`,`noopener,noreferrer`),children:[u.label,(0,b.jsx)(_,{className:`h-3.5 w-3.5`})]})]})]})})}function D({icon:e,iconBg:t,iconColor:r=`white`,title:i,description:a,href:s}){return(0,b.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,className:`flex flex-1 cursor-pointer`,children:(0,b.jsx)(n,{className:`flex-1 transition-shadow hover:shadow-md`,padding:`lg`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:r},children:e}),(0,b.jsx)(o,{size:14,className:`text-[var(--content-tertiary)]`,"aria-hidden":!0})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,b.jsx)(`span`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:i}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:a})]})]})})})}function O(){let{handleStar:e}=g();return(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsx)(w,{}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2`,children:[(0,b.jsx)(E,{accentColor:`var(--content-emphasised)`,iconColor:`var(--surface-base)`,label:`Open Source`,icon:(0,b.jsx)(x,{size:20}),title:`Vellum is open source`,subtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,benefits:[{icon:d,text:`Star the repo to follow updates`},{icon:a,text:`Open issues and report bugs`},{icon:y,text:`Contribute fixes and new features`}],primaryAction:{label:`Star on GitHub`,icon:(0,b.jsx)(d,{size:16}),onClick:e},secondaryAction:{label:`View source`,href:f}}),(0,b.jsx)(E,{accentColor:`#5865F2`,label:`Discord`,icon:(0,b.jsx)(l,{size:20}),title:`Join our community`,subtitle:`Talk to the team, share feedback, request features, and get answers faster.`,benefits:[{icon:v,text:`Talk directly with the team`},{icon:c,text:`Share feedback and request features`},{icon:u,text:`Get answers faster from the community`}],primaryAction:{label:`Join Discord`,icon:(0,b.jsx)(l,{size:16,style:{color:`currentColor`}}),onClick:m}})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:`More from Vellum`}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,b.jsx)(D,{icon:(0,b.jsx)(s,{size:20}),iconBg:`#22c55e`,title:`Community Hub`,description:`Showcases, guides, and projects shared by the community.`,href:h}),(0,b.jsx)(D,{icon:(0,b.jsx)(S,{size:20}),iconBg:`var(--content-default)`,iconColor:`var(--surface-base)`,title:`Follow on X`,description:`Product updates, releases, and behind-the-scenes.`,href:`https://x.com/vellum_ai`}),(0,b.jsx)(D,{icon:(0,b.jsx)(C,{size:20}),iconBg:`#ef4444`,title:`YouTube channel`,description:`Walkthroughs, tutorials, and product deep-dives.`,href:`https://www.youtube.com/@Vellum_AI`})]})]})]})}export{O as CommunityPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as a}from"./QueryClientProvider-DKhXIxGb.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./typography-BscuIPxA.js";import{t as l}from"./card-BibIM9x3.js";import{n as u}from"./toast-DLWkiWW6.js";import{t as d}from"./link-2-BedDg97D.js";import{t as f}from"./loader-circle-CTs38Ovl.js";import{t as p}from"./triangle-alert-M_S_Pe8C.js";import{a as m}from"./routes-BKwsRssF.js";import{t as h}from"./use-active-assistant-id-BtGthKQp.js";import{n as g,o as _}from"./contacts-gateway-AXbkzYpn.js";var v=e(t(),1),y=s();function b(e){let t=e[0];return typeof t==`object`&&!!t&&t._id===`contactsGet`}function x(e,t){switch(e){case`expired`:case`not_found`:return`This invite link has expired or already been used.`;case`already_redeemed_by_other`:return`This invite has already been claimed by someone else.`;case`sender_not_found`:return`The sender's assistant could not be found.`;case`not_platform_managed`:return`A2A invite links are only supported for platform-hosted assistants.`;default:return t||`Something went wrong. Please try again.`}}function S(){return(0,y.jsx)(C,{assistantId:h()})}function C({assistantId:e}){let t=r(),s=a(),[h]=i(),S=(0,v.useMemo)(()=>_(h),[h]),C=o({mutationFn:()=>{if(!S)throw Error(`Invalid invite link`);return g(e,{senderAssistantId:S.senderAssistantId,token:S.token})},onSuccess:e=>{e.success&&(s.invalidateQueries({predicate:e=>b(e.queryKey)}),e.alreadyConnected?u(`Already connected`):u(`Connected!`),t(m.contacts.root))}}),w=(0,v.useCallback)(()=>{t(m.contacts.root)},[t]),T=(0,v.useCallback)(()=>{C.mutate()},[C]),E=(0,v.useMemo)(()=>C.isError?C.error instanceof Error?C.error.message:`Something went wrong. Please try again.`:C.data&&!C.data.success?x(C.data.errorCode,C.data.error):null,[C.isError,C.error,C.data]);return S?(0,y.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,y.jsx)(l,{className:`w-full max-w-md`,children:(0,y.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,y.jsx)(d,{className:`h-6 w-6`,style:{color:`var(--content-secondary)`}}),(0,y.jsx)(c,{variant:`title-small`,children:`Connect assistants`})]}),(0,y.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Accepting this link will create a trusted A2A connection between your assistant and the sender's.`}),E&&(0,y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md p-3`,style:{backgroundColor:`var(--surface-negative-subtle)`,color:`var(--system-negative-strong)`},children:[(0,y.jsx)(p,{className:`h-4 w-4 shrink-0`}),(0,y.jsx)(c,{variant:`body-small-default`,children:E})]}),(0,y.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,y.jsx)(n,{variant:`primary`,onClick:T,disabled:C.isPending,children:C.isPending?(0,y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(f,{className:`h-4 w-4 animate-spin`}),`Connecting…`]}):`Connect`}),(0,y.jsx)(n,{variant:`outlined`,onClick:w,disabled:C.isPending,children:`Cancel`})]})]})})}):(0,y.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,y.jsx)(l,{className:`w-full max-w-md`,children:(0,y.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,y.jsx)(p,{className:`h-6 w-6`,style:{color:`var(--system-negative-strong)`}}),(0,y.jsx)(c,{variant:`title-small`,children:`Invalid invite link`})]}),(0,y.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`The link you followed is missing required parameters and cannot be used.`}),(0,y.jsx)(`div`,{className:`flex gap-2 pt-2`,children:(0,y.jsx)(n,{variant:`primary`,onClick:w,children:`Go to Contacts`})})]})})})}export{S as ConnectPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as a}from"./QueryClientProvider-DKhXIxGb.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./typography-BscuIPxA.js";import{t as l}from"./card-BibIM9x3.js";import{n as u}from"./toast-DLWkiWW6.js";import{t as d}from"./link-2-BedDg97D.js";import{t as f}from"./loader-circle-CTs38Ovl.js";import{t as p}from"./triangle-alert-M_S_Pe8C.js";import{a as m}from"./routes-BKwsRssF.js";import{t as h}from"./use-active-assistant-id-512RohBL.js";import{n as g,o as _}from"./contacts-gateway-Cf32jSYa.js";var v=e(t(),1),y=s();function b(e){let t=e[0];return typeof t==`object`&&!!t&&t._id===`contactsGet`}function x(e,t){switch(e){case`expired`:case`not_found`:return`This invite link has expired or already been used.`;case`already_redeemed_by_other`:return`This invite has already been claimed by someone else.`;case`sender_not_found`:return`The sender's assistant could not be found.`;case`not_platform_managed`:return`A2A invite links are only supported for platform-hosted assistants.`;default:return t||`Something went wrong. Please try again.`}}function S(){return(0,y.jsx)(C,{assistantId:h()})}function C({assistantId:e}){let t=r(),s=a(),[h]=i(),S=(0,v.useMemo)(()=>_(h),[h]),C=o({mutationFn:()=>{if(!S)throw Error(`Invalid invite link`);return g(e,{senderAssistantId:S.senderAssistantId,token:S.token})},onSuccess:e=>{e.success&&(s.invalidateQueries({predicate:e=>b(e.queryKey)}),e.alreadyConnected?u(`Already connected`):u(`Connected!`),t(m.contacts.root))}}),w=(0,v.useCallback)(()=>{t(m.contacts.root)},[t]),T=(0,v.useCallback)(()=>{C.mutate()},[C]),E=(0,v.useMemo)(()=>C.isError?C.error instanceof Error?C.error.message:`Something went wrong. Please try again.`:C.data&&!C.data.success?x(C.data.errorCode,C.data.error):null,[C.isError,C.error,C.data]);return S?(0,y.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,y.jsx)(l,{className:`w-full max-w-md`,children:(0,y.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,y.jsx)(d,{className:`h-6 w-6`,style:{color:`var(--content-secondary)`}}),(0,y.jsx)(c,{variant:`title-small`,children:`Connect assistants`})]}),(0,y.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Accepting this link will create a trusted A2A connection between your assistant and the sender's.`}),E&&(0,y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md p-3`,style:{backgroundColor:`var(--surface-negative-subtle)`,color:`var(--system-negative-strong)`},children:[(0,y.jsx)(p,{className:`h-4 w-4 shrink-0`}),(0,y.jsx)(c,{variant:`body-small-default`,children:E})]}),(0,y.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,y.jsx)(n,{variant:`primary`,onClick:T,disabled:C.isPending,children:C.isPending?(0,y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(f,{className:`h-4 w-4 animate-spin`}),`Connecting…`]}):`Connect`}),(0,y.jsx)(n,{variant:`outlined`,onClick:w,disabled:C.isPending,children:`Cancel`})]})]})})}):(0,y.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,y.jsx)(l,{className:`w-full max-w-md`,children:(0,y.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,y.jsx)(p,{className:`h-6 w-6`,style:{color:`var(--system-negative-strong)`}}),(0,y.jsx)(c,{variant:`title-small`,children:`Invalid invite link`})]}),(0,y.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`The link you followed is missing required parameters and cannot be used.`}),(0,y.jsx)(`div`,{className:`flex gap-2 pt-2`,children:(0,y.jsx)(n,{variant:`primary`,onClick:w,children:`Go to Contacts`})})]})})})}export{S as ConnectPage};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CVSDxk6A.js";import{t}from"./card-BibIM9x3.js";import{t as n}from"./checkbox-Dc9gjmAy.js";import{a as r,i}from"./routes-BKwsRssF.js";import{t as a}from"./setting-row-Bke-X9s7.js";var o=e(),s=[`[&_button[data-state=checked]]:bg-[var(--primary-base)]`,`[&_svg]:text-[var(--content-inset)]`,`[&_button[data-state=unchecked]]:bg-[var(--surface-base)]`,`[&_button[data-state=unchecked]]:border-[var(--border-element)]`].join(` `),c=`mb-2.5 ml-1 text-body-small-default font-medium uppercase tracking-wider text-[var(--content-tertiary)]`,l={privacy:{href:r.docs.legal.privacyPolicy,text:`Privacy and AI Data Sharing Policy`,aria:`I agree to the Privacy and AI Data Sharing Policy`},tos:{href:r.docs.legal.termsOfUse,text:`Terms of Service`,aria:`I agree to the Terms of Service`}};function u({kind:e,checked:t,onChange:r}){let a=l[e];return(0,o.jsx)(n,{checked:t,onCheckedChange:e=>r(e===!0),label:(0,o.jsxs)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:[`I agree to the`,` `,(0,o.jsx)(`a`,{href:i(a.href),target:`_blank`,rel:`noreferrer`,className:`underline`,children:a.text})]}),"aria-label":a.aria,className:s})}function d(){return(0,o.jsx)(`div`,{className:`h-px bg-[var(--surface-active)] dark:bg-[var(--surface-lift)]`})}function f({electron:e,showAnalytics:n=!0,showDiagnostics:r=!0,shareAnalytics:i,shareDiagnostics:s,onShareAnalyticsChange:l,onShareDiagnosticsChange:u,className:f,style:p}){return(0,o.jsxs)(`section`,{className:f,style:p,children:[(0,o.jsx)(`p`,{className:c,children:`Privacy preferences`}),(0,o.jsx)(t,{padding:e?`sm`:`md`,className:`w-full`,children:(0,o.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3`:`gap-4`}`,children:[n&&(0,o.jsx)(a,{label:`Share Analytics`,helperText:`Send aggregated product usage data`,checked:i,onChange:l}),n&&r&&(0,o.jsx)(d,{}),r&&(0,o.jsx)(a,{label:`Share Diagnostics`,helperText:`Send crash reports, conversation traces, and session replay data`,checked:s,onChange:u})]})})]})}function p({electron:e,showPrivacy:n=!0,showTos:r=!0,privacyConsent:i,tosAccepted:a,onPrivacyChange:s,onTosChange:l,className:d,style:f}){return(0,o.jsxs)(`section`,{className:d,style:f,children:[(0,o.jsx)(`p`,{className:c,children:`Agreements`}),(0,o.jsx)(t,{padding:e?`sm`:`md`,className:`w-full`,children:(0,o.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3.5`:`gap-4`}`,children:[n&&(0,o.jsx)(u,{kind:`privacy`,checked:i,onChange:s}),r&&(0,o.jsx)(u,{kind:`tos`,checked:a,onChange:l})]})})]})}export{f as n,p as t};
1
+ import{t as e}from"./jsx-runtime-CVSDxk6A.js";import{t}from"./card-BibIM9x3.js";import{t as n}from"./checkbox-Dc9gjmAy.js";import{a as r,i}from"./routes-BKwsRssF.js";import{t as a}from"./setting-row-IILQu7AE.js";var o=e(),s=[`[&_button[data-state=checked]]:bg-[var(--primary-base)]`,`[&_svg]:text-[var(--content-inset)]`,`[&_button[data-state=unchecked]]:bg-[var(--surface-base)]`,`[&_button[data-state=unchecked]]:border-[var(--border-element)]`].join(` `),c=`mb-2.5 ml-1 text-body-small-default font-medium uppercase tracking-wider text-[var(--content-tertiary)]`,l={privacy:{href:r.docs.legal.privacyPolicy,text:`Privacy and AI Data Sharing Policy`,aria:`I agree to the Privacy and AI Data Sharing Policy`},tos:{href:r.docs.legal.termsOfUse,text:`Terms of Service`,aria:`I agree to the Terms of Service`}};function u({kind:e,checked:t,onChange:r}){let a=l[e];return(0,o.jsx)(n,{checked:t,onCheckedChange:e=>r(e===!0),label:(0,o.jsxs)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:[`I agree to the`,` `,(0,o.jsx)(`a`,{href:i(a.href),target:`_blank`,rel:`noreferrer`,className:`underline`,children:a.text})]}),"aria-label":a.aria,className:s})}function d(){return(0,o.jsx)(`div`,{className:`h-px bg-[var(--surface-active)] dark:bg-[var(--surface-lift)]`})}function f({electron:e,showAnalytics:n=!0,showDiagnostics:r=!0,shareAnalytics:i,shareDiagnostics:s,onShareAnalyticsChange:l,onShareDiagnosticsChange:u,className:f,style:p}){return(0,o.jsxs)(`section`,{className:f,style:p,children:[(0,o.jsx)(`p`,{className:c,children:`Privacy preferences`}),(0,o.jsx)(t,{padding:e?`sm`:`md`,className:`w-full`,children:(0,o.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3`:`gap-4`}`,children:[n&&(0,o.jsx)(a,{label:`Share Analytics`,helperText:`Send aggregated product usage data`,checked:i,onChange:l}),n&&r&&(0,o.jsx)(d,{}),r&&(0,o.jsx)(a,{label:`Share Diagnostics`,helperText:`Send crash reports, conversation traces, and session replay data`,checked:s,onChange:u})]})})]})}function p({electron:e,showPrivacy:n=!0,showTos:r=!0,privacyConsent:i,tosAccepted:a,onPrivacyChange:s,onTosChange:l,className:d,style:f}){return(0,o.jsxs)(`section`,{className:d,style:f,children:[(0,o.jsx)(`p`,{className:c,children:`Agreements`}),(0,o.jsx)(t,{padding:e?`sm`:`md`,className:`w-full`,children:(0,o.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3.5`:`gap-4`}`,children:[n&&(0,o.jsx)(u,{kind:`privacy`,checked:i,onChange:s}),r&&(0,o.jsx)(u,{kind:`tos`,checked:a,onChange:l})]})})]})}export{f as n,p as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./typography-BscuIPxA.js";import{t as l}from"./card-BibIM9x3.js";import{c as u,l as d}from"./src-D6Nu2Lol.js";import{t as f}from"./confirm-dialog-DbNUkFt6.js";import{t as p}from"./tag-BadGF3FB.js";import{t as m}from"./input-CwdmSRlD.js";import{t as h}from"./modal-DX6UN7b0.js";import{t as g}from"./panel-item-BFOUNXY1.js";import{n as _}from"./toast-DLWkiWW6.js";import{t as v}from"./createLucideIcon-DIlBzeWM.js";import{t as y}from"./arrow-left-DpZuwfUr.js";import{t as b}from"./chevron-right-HpmykQ8I.js";import{t as x}from"./link-2-BedDg97D.js";import{t as S}from"./loader-circle-CTs38Ovl.js";import{t as C}from"./pencil-lwgMCqyH.js";import{Bt as w,Ht as T,It as ee,Ut as te,Vt as E,x as ne,zt as D}from"./sdk.gen-Bew9wO5C.js";import{B as O,H as re,Mt as ie,U as ae,V as oe,_ as se,a as ce,jt as le,o as ue,s as de,v as fe,y as k}from"./react-query.gen-DdB0sQgj.js";import{a as A}from"./routes-BKwsRssF.js";import{t as pe}from"./assistant-identity-store-BIu8LXuD.js";import{n as j}from"./viewer-store-Cfso5FNU.js";import{t as me}from"./conversation-store-CBtnzP2n.js";import{t as he}from"./assistant-feature-flag-store-BMVR2Dx7.js";import{t as M}from"./conversation-selection-DCYDhK6e.js";import{$a as N,Ba as P,Oa as F,Wi as I,aa as L,fo as R,ho as ge,ia as _e,mo as z,pa as B,va as V,wa as H}from"./index-DjBiif5r.js";import{t as U}from"./use-active-assistant-id-BtGthKQp.js";import{n as ve,t as ye}from"./mobile-sidebar-drawer-Bx5YTlNy.js";import{t as W}from"./detail-card-DeCfFKxN.js";import{a as be,i as xe,r as Se,t as Ce}from"./contacts-gateway-AXbkzYpn.js";var we=v(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),Te=v(`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`}]]),G=v(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),Ee=v(`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),q=s();function J({role:e,contactType:t}){let{label:n,tone:r}=De(e,t);return(0,q.jsx)(p,{tone:r,children:n})}function De(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 Y({onClick:e}){return(0,q.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:(0,q.jsx)(x,{className:`h-3.5 w-3.5`}),onClick:e,children:`Share Connection Link`})}var X={slack:{label:`Slack`,Icon:P,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`},telegram:{label:`Telegram`,Icon:_e,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`},phone:{label:`Phone Calling`,Icon:V,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`}};function Oe({assistantName:e,channels:t,pendingChannelKey:n=null,slackThreadMode:r,slackThreadModePending:i=!1,onSetup:a,onDisconnect:o,onSaveTelegramToken:s,onSaveSlackConfig:c,onSlackThreadModeChange:l,onSaveTwilioCredentials:u,onGenerateInviteLink:d}){let p=e.trim()||`your assistant`,[m,h]=(0,K.useState)(null),[g,_]=(0,K.useState)(new Set),v=m?X[m]:null,y=e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,q.jsx)(W,{title:`${p} (Your Assistant)`,accessory:(0,q.jsx)(J,{role:`assistant`}),compactAccessory:!0}),(0,q.jsx)(W,{title:`Channels`,subtitle:`Manage where ${p} can be reached.`,children:(0,q.jsx)(`div`,{className:`flex flex-col`,children:t.map((e,t)=>(0,q.jsxs)(`div`,{children:[t>0?(0,q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,q.jsx)(ke,{channel:e,pending:n===e.key,expanded:g.has(e.key),onToggleExpand:()=>y(e.key),onSetup:a?()=>a(e.key):void 0,onDisconnect:o?()=>h(e.key):void 0,onSaveTelegramToken:s,onSaveSlackConfig:c,slackThreadMode:r,slackThreadModePending:i,onSlackThreadModeChange:l,onSaveTwilioCredentials:u})]},e.key))})}),d?(0,q.jsx)(Y,{onClick:d}):null,(0,q.jsx)(f,{open:m!==null,title:`Disconnect ${v?.label??``}?`,message:v?.disconnectMessage??``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{m&&o&&o(m),h(null)},onCancel:()=>h(null)})]})}function ke({channel:e,pending:t,expanded:r,onToggleExpand:i,onSetup:a,onDisconnect:o,onSaveTelegramToken:s,onSaveSlackConfig:c,slackThreadMode:l,slackThreadModePending:u=!1,onSlackThreadModeChange:d,onSaveTwilioCredentials:f}){let p=X[e.key],m=e.status===`ready`;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 py-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`button`,{type:`button`,className:`flex shrink-0 items-center justify-center`,onClick:i,style:{color:`var(--content-secondary)`},children:r?(0,q.jsx)(z,{className:`h-4 w-4`}):(0,q.jsx)(b,{className:`h-4 w-4`})}),(0,q.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:p.label}),e.address?(0,q.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,q.jsx)(`div`,{className:`ml-auto flex items-center gap-2`,children:m?(0,q.jsxs)(q.Fragment,{children:[(0,q.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,q.jsx)(R,{className:`h-3 w-3`}),`Connected`]}),(0,q.jsx)(n,{type:`button`,variant:`danger`,onClick:o,disabled:!o||t,children:t?`Disconnecting…`:`Disconnect`})]}):(0,q.jsx)(n,{type:`button`,variant:`outlined`,onClick:a,disabled:!a||t,children:t?`Opening…`:`Set up`})})]}),!m&&e.key===`telegram`&&r?(0,q.jsx)(Ae,{onSave:s}):null,!m&&e.key===`slack`&&r?(0,q.jsx)(je,{onSave:c}):null,!m&&e.key===`phone`&&r?(0,q.jsx)(Ne,{onSave:f}):null,m&&e.key===`telegram`&&r?(0,q.jsx)(Ae,{onSave:s}):null,m&&e.key===`slack`&&r?(0,q.jsx)(Me,{threadMode:l,pending:u,onThreadModeChange:d}):null,m&&e.key===`phone`&&r?(0,q.jsx)(Ne,{onSave:f}):null]})}function Ae({onSave:e}){let[t,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(!1),[o,s]=(0,K.useState)(null),c=t.trim().length>0&&!i;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(m,{label:`Bot Token`,type:`password`,value:t,onChange:e=>r(e.target.value),placeholder:`Paste your Telegram bot token`,disabled:i,fullWidth:!0}),o?(0,q.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:o}):null,(0,q.jsx)(`div`,{children:(0,q.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!c)){a(!0),s(null);try{await e(t.trim()),r(``)}catch(e){s(e instanceof Error?e.message:`Failed to save`)}finally{a(!1)}}},disabled:!c,children:i?`Saving…`:`Save`})})]})}function je({onSave:e}){let[t,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(m,{label:`Bot Token`,type:`password`,value:t,onChange:e=>r(e.target.value),placeholder:`xoxb-...`,disabled:o,fullWidth:!0}),(0,q.jsx)(m,{label:`App Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`xapp-...`,disabled:o,fullWidth:!0}),c?(0,q.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,q.jsx)(`div`,{children:(0,q.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(t.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:o?`Saving…`:`Save`})})]})}function Me({threadMode:e,pending:t=!1,onThreadModeChange:n}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(c,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:`Thread Behavior`}),(0,q.jsxs)(d,{value:e??`mention_only`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":`Slack thread behavior`,children:[(0,q.jsx)(u,{value:`mention_only`,label:`Mentions only`,helperText:`Bot only responds when @mentioned.`}),(0,q.jsx)(u,{value:`mention_then_thread`,label:`Follow threads after first mention`,helperText:`After an @mention in a thread, bot listens to all subsequent replies.`})]})]})}function Ne({onSave:e}){let[t,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(m,{label:`Account SID`,type:`text`,value:t,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,q.jsx)(m,{label:`Auth Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`Twilio auth token`,disabled:o,fullWidth:!0}),c?(0,q.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,q.jsx)(`div`,{children:(0,q.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(t.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:o?`Saving…`:`Save`})})]})}var Pe=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Fe(e){return Pe.has(e)}function Ie(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t?.status===`verified`||t?.status===`active`&&t?.verifiedAt!=null?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function Le(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||Fe(e.type)&&(r.push({id:e.type,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 Re({name:e,className:t,style:n}){switch(e){case`bot`:return(0,q.jsx)(we,{className:t,style:n});case`hash`:return(0,q.jsx)(P,{className:t,style:n});case`send`:return(0,q.jsx)(_e,{className:t,style:n});case`phone`:return(0,q.jsx)(V,{className:t,style:n});case`mail`:return(0,q.jsx)(F,{className:t,style:n});case`message-square`:return(0,q.jsx)(H,{className:t,style:n});default:return(0,q.jsx)(Te,{className:t,style:n})}}function ze({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r=`Invite`,verifyLoading:i,verifySubject:a=`self`,onSetupChannel:o,onVerifyChannel:s,onRevokeChannel:c}){let[l,u]=(0,K.useState)(null),[d,p]=(0,K.useState)(null),m=new Map;for(let t of e)t.status!==`revoked`&&(m.has(t.type)||m.set(t.type,t));return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`flex flex-col`,children:Le(t,e,n).map((e,t)=>{let n=m.get(e.id);return(0,q.jsxs)(`div`,{children:[t>0&&(0,q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,q.jsx)(Be,{info:e,existing:n,setupLabel:r,verifyLoading:i,onSetup:o?()=>o(e.id):void 0,onVerify:s&&e.supportsVerification?()=>u(e):void 0,onRevoke:c&&n?()=>p({channelId:n.id,channel:e}):void 0})]},e.id)})}),l&&(0,q.jsx)(f,{open:!0,title:`Verify ${l.label}`,message:a===`contact`?`This will mark this contact's ${l.label} channel as verified. Your assistant will recognize them when they reach out from it.`:`This will mark your ${l.label} channel as verified. Your assistant will recognize you when you reach out from it.`,confirmLabel:`Verify`,onConfirm:()=>{l&&(s?.(l.id),u(null))},onCancel:()=>u(null)}),d&&(0,q.jsx)(f,{open:!0,title:`Revoke ${d.channel.label}`,message:`This will disconnect the verified channel. The contact will need to re-verify to use this channel again.`,confirmLabel:`Revoke`,destructive:!0,onConfirm:()=>{c?.(d.channelId,d.channel.id),p(null)},onCancel:()=>p(null)})]})}function Be({info:e,existing:t,setupLabel:r,verifyLoading:i,onSetup:a,onVerify:o,onRevoke:s}){let c=Ie(e,t);return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,q.jsx)(Re,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,q.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,q.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,q.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:c.kind===`connected`?(0,q.jsxs)(q.Fragment,{children:[(0,q.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,q.jsx)(R,{className:`h-3 w-3`}),`Connected`]}),s?(0,q.jsx)(n,{variant:`danger`,onClick:s,children:`Revoke`}):null]}):c.kind===`verified`?(0,q.jsxs)(q.Fragment,{children:[(0,q.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,q.jsx)(R,{className:`h-3 w-3`}),`Verified`]}),s?(0,q.jsx)(n,{variant:`danger`,onClick:s,children:`Revoke`}):null]}):c.kind===`unverified`?(0,q.jsx)(n,{variant:`outlined`,onClick:o,disabled:!o||i,children:i?`Verifying…`:`Verify`}):c.kind===`setup`?e.id===`a2a`?null:(0,q.jsx)(n,{variant:`outlined`,onClick:a,disabled:!a,children:r}):null})]})}function Ve(e){return(0,q.jsx)(Z,{...e},e.contact.id)}function Z({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:p,onVerifyChannel:h,onRevokeChannel:g}){let _=e.displayName===`New Contact`,[v,y]=(0,K.useState)(_?``:e.displayName),[b,x]=(0,K.useState)(e.notes??``),[S,C]=(0,K.useState)(!1),w=v.trim(),T=b.trim(),ee=_?``:e.displayName,te=e.notes??``,E=w!==ee||T!==te,ne=w.length>0&&E&&!t&&!r,D=_&&e.channels.length===0&&e.interactionCount===0,O=w||e.displayName,re=`${e.interactionCount} interaction${e.interactionCount===1?``:`s`}`;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,q.jsx)(W,{title:O,accessory:(0,q.jsx)(J,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:re,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,q.jsx)(m,{label:`Name`,type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:`Give this human a name`,autoFocus:_,disabled:t||r,fullWidth:!0}),(0,q.jsx)(m,{label:`Notes`,type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:`Optional notes about the human which AI will take into account`,disabled:t||r,fullWidth:!0}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(n,{type:`button`,onClick:()=>l({displayName:w,notes:T}),disabled:!ne,children:t?`Saving…`:`Save`}),d?(0,q.jsx)(n,{type:`button`,variant:`outlined`,onClick:d,disabled:!o||D||E||a||t||r,title:o?D?`Save this contact before merging`:E?`Save your changes before merging`:void 0:`No other contacts available to merge`,children:a?`Merging…`:`Merge…`}):null,(0,q.jsx)(n,{type:`button`,variant:`danger`,onClick:()=>{D?u():C(!0)},disabled:r,children:r?`Deleting…`:`Delete Contact`})]})]})}),(0,q.jsx)(W,{title:`Channels`,subtitle:`Once verified, your assistant will recognize this contact when they message from these channels.`,children:(0,q.jsx)(ze,{contactChannels:e.channels,availableChannels:s,a2aEnabled:c,verifyLoading:i,verifySubject:`contact`,onSetupChannel:p,onVerifyChannel:h,onRevokeChannel:g})}),(0,q.jsx)(f,{open:S,title:`Delete ${e.displayName}?`,message:`This will permanently delete this contact and all their channels. This action cannot be undone.`,confirmLabel:`Delete`,destructive:!0,onConfirm:async()=>{C(!1),await u()},onCancel:()=>C(!1)})]})}function He(e){return(0,q.jsx)(Ue,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function Ue({open:e,survivor:t,candidates:r,pending:i,errorMessage:a,onMerge:o,onClose:s}){let[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(null);(0,K.useEffect)(()=>{d&&!r.some(e=>e.id===d)&&f(null)},[r,d]);let p=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();return e?r.filter(t=>t.displayName.toLowerCase().includes(e)):r},[r,l]),m=d?r.find(e=>e.id===d)??null:null,g=qe(t);return(0,q.jsx)(h.Root,{open:e,onOpenChange:e=>{!e&&!i&&s()},children:(0,q.jsxs)(h.Content,{size:`md`,children:[(0,q.jsxs)(h.Header,{children:[(0,q.jsx)(h.Title,{icon:Ee,children:m?`Merge "${m.displayName}" into ${g}?`:`Merge another contact into ${g}`}),(0,q.jsx)(h.Description,{children:m?`Channels and notes from the merged contact will move over. The merged contact will be deleted.`:`The contact you pick will be deleted. Its channels and notes will be added to this one.`})]}),(0,q.jsxs)(h.Body,{className:`flex flex-col gap-3`,children:[m?(0,q.jsx)(Ge,{survivor:t,donor:m}):r.length===0?(0,q.jsx)(Ke,{}):(0,q.jsx)(We,{search:l,onSearch:u,candidates:p,onPick:f}),a?(0,q.jsx)(c,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:a}):null]}),(0,q.jsx)(h.Footer,{children:m?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(n,{variant:`outlined`,onClick:()=>f(null),disabled:i,leftIcon:(0,q.jsx)(y,{"aria-hidden":!0}),children:`Back`}),(0,q.jsx)(n,{variant:`danger`,onClick:()=>o(m.id),disabled:i,children:i?`Merging…`:`Merge`})]}):(0,q.jsx)(n,{variant:`outlined`,onClick:s,disabled:i,children:`Cancel`})})]})})}function We({search:e,onSearch:t,candidates:n,onPick:r}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(m,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Search contacts`,leftIcon:(0,q.jsx)(L,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,q.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":`Select a contact to merge`,children:n.length===0?(0,q.jsx)(c,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:`No matching contacts`}):n.map(e=>(0,q.jsx)(Q,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Q({contact:e,onPick:t}){let n=Ze(e).join(` | `)||void 0;return(0,q.jsx)(g,{asChild:!0,label:``,children:(0,q.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,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,q.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function Ge({survivor:e,donor:t}){let n=qe(e),{moved:r,duplicates:i}=Xe(e,t);return(0,q.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsxs)(`span`,{className:`text-(--content-default)`,children:[`“`,t.displayName,`”`]}),` `,`will be deleted.`]}),(0,q.jsx)(`li`,{children:r.length===0?`No new channels will move to ${n}.`:`${r.length} channel${r.length===1?``:`s`} will move to ${n}: ${r.map(e=>Ye(e.type)).join(`, `)}.`}),i.length>0?(0,q.jsxs)(`li`,{className:`text-(--content-tertiary)`,children:[i.length,` duplicate channel`,i.length===1?``:`s`,` already on `,n,` `,`(skipped).`]}):null,t.notes?(0,q.jsx)(`li`,{children:`Notes from the merged contact will be appended.`}):null,(0,q.jsx)(`li`,{className:`text-(--content-tertiary)`,children:`This cannot be undone.`})]})}function Ke(){return(0,q.jsx)(c,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:`No other contacts available to merge.`})}function qe(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?`you`:`${e.displayName} (you)`:e.displayName||`this contact`}var Je={slack:`Slack`,telegram:`Telegram`,phone:`Phone`,email:`Email`,whatsapp:`WhatsApp`};function Ye(e){return Je[e.toLowerCase()]??e}function Xe(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 Ze(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(Je[e]??r.type))}return n}function Qe({loading:e,guardian:t,assistantName:r,regularContacts:i,selection:a,onSelect:o,onAddContact:s,addingContact:c=!1}){let[u,d]=(0,K.useState)(``),f=u.trim()?i.filter(e=>e.displayName.toLowerCase().includes(u.trim().toLowerCase())):i;return(0,q.jsx)(l,{className:`h-full`,children:(0,q.jsxs)(`div`,{className:`flex h-full min-w-0 flex-col gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:`Entries`}),(0,q.jsx)(n,{type:`button`,variant:`ghost`,iconOnly:c?(0,q.jsx)(S,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(B,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":`Add contact`,tintColor:`var(--content-secondary)`})]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,q.jsx)($,{name:t.displayName?`${t.displayName} (You)`:`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,q.jsx)($,{name:r?.trim()||`Your Assistant`,role:`assistant`,selected:a?.kind===`assistant`,onClick:()=>o({kind:`assistant`}),trailingIcon:`more`})]}),(0,q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),i.length>0?(0,q.jsx)(m,{type:`text`,value:u,onChange:e=>d(e.target.value),placeholder:`Search Contacts`,leftIcon:(0,q.jsx)(L,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,i.length>0?(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f.map(e=>(0,q.jsx)($,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,selected:a?.kind===`contact`&&a.contactId===e.id,onClick:()=>o({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),f.length===0?(0,q.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`No matching contacts`}):null]}):e?null:(0,q.jsx)(n,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,q.jsx)(S,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(I,{"aria-hidden":!0}),children:`Add Contact`})]})})}function $({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o}){let s=r&&r.length>0?r.join(` | `):void 0;return(0,q.jsx)(g,{asChild:!0,active:i,label:``,trailingAction:o===`pencil`?(0,q.jsx)(C,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):o===`more`?(0,q.jsx)(G,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):void 0,children:(0,q.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,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),s?(0,q.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:s}):null]}),(0,q.jsx)(`span`,{className:`shrink-0`,children:(0,q.jsx)(J,{role:t,contactType:n})})]})})}function $e(e){let t=e-Date.now();if(t<=0)return`Expired`;let n=Math.ceil(t/(1e3*60*60*24));return n===1?`Expires in 1 day`:`Expires in ${n} days`}function et({open:e,assistantId:t,onClose:r}){let[i,a]=(0,K.useState)(!1),s=(0,K.useRef)(null),l=(0,K.useRef)(!1),u=o({...O({path:{assistant_id:t}})}),d=(0,K.useRef)(u.mutate);(0,K.useLayoutEffect)(()=>{d.current=u.mutate});let f=(0,K.useRef)(u.reset);(0,K.useLayoutEffect)(()=>{f.current=u.reset}),(0,K.useEffect)(()=>{e&&!l.current&&d.current({path:{assistant_id:t}}),l.current=e},[e,t]),(0,K.useEffect)(()=>()=>{s.current&&clearTimeout(s.current)},[]);let p=(0,K.useCallback)(()=>{f.current(),a(!1),s.current&&=(clearTimeout(s.current),null),r()},[r]),g=(0,K.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{a(!0),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>a(!1),2e3)})},[]),_=u.isSuccess&&u.data.token?be({senderAssistantId:t,token:u.data.token}):``;return(0,q.jsx)(h.Root,{open:e,onOpenChange:e=>{e||p()},children:(0,q.jsxs)(h.Content,{size:`sm`,children:[(0,q.jsx)(h.Header,{children:(0,q.jsx)(h.Title,{children:`Share Connection Link`})}),(0,q.jsx)(h.Body,{children:u.isPending?(0,q.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:[(0,q.jsx)(S,{className:`h-4 w-4 animate-spin`}),`Creating invite link…`]}):u.isError?(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(`p`,{role:`alert`,className:`!m-0 text-body-medium-lighter`,style:{color:`var(--system-negative-strong)`},children:`Failed to create invite link. Make sure A2A is enabled for your assistant.`}),(0,q.jsx)(n,{variant:`outlined`,onClick:()=>u.mutate({path:{assistant_id:t}}),children:`Try Again`})]}):u.isSuccess?(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,q.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Share this link with another assistant owner to establish a connection.`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(m,{type:`text`,readOnly:!0,value:_,fullWidth:!0,wrapperClassName:`flex-1`,className:`font-mono`,onFocus:e=>e.currentTarget.select()}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>g(_),"aria-label":`Copy invite link`,className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-[var(--border-base)] hover:bg-[var(--surface-hover)]`,children:i?(0,q.jsx)(ge,{className:`h-4 w-4`}):(0,q.jsx)(N,{className:`h-4 w-4`})})]}),u.data.expiresAt!=null&&(0,q.jsx)(c,{variant:`body-small-default`,style:{color:`var(--content-tertiary)`},children:$e(u.data.expiresAt)})]}):null}),(0,q.jsx)(h.Footer,{children:(0,q.jsx)(n,{variant:`outlined`,onClick:p,children:`Done`})})]})})}function tt(e){return(0,q.jsx)(nt,{...e},e.contact.id)}function nt({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 h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,K.useState)(g),[y,b]=(0,K.useState)(e.notes??``),x=_.trim(),S=y.trim(),C=x!==g.trim()||S!==(e.notes??``).trim(),w=C&&!t,T=`${e.interactionCount} interaction${e.interactionCount===1?``:`s`}`;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,q.jsx)(W,{title:h?`You`:`${e.displayName} (You)`,accessory:(0,q.jsx)(J,{role:`guardian`}),compactAccessory:!0,subtitle:T,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,q.jsx)(m,{label:`Name`,type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Your name`,disabled:t,fullWidth:!0}),(0,q.jsx)(m,{label:`Notes`,type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`Notes about yourself which AI will take into account`,disabled:t,fullWidth:!0}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(n,{variant:`primary`,onClick:()=>c({displayName:x||e.displayName,notes:S}),disabled:!w,children:t?`Saving…`:`Save`}),l?(0,q.jsx)(n,{variant:`outlined`,onClick:l,disabled:!a||C||i||t,title:a?C?`Save your changes before merging`:void 0:`No other contacts available to merge`,children:i?`Merging…`:`Merge…`}):null]})]})}),(0,q.jsx)(W,{title:`Channels`,subtitle:`Once verified, your assistant will recognize you when you message from these channels.`,children:(0,q.jsx)(ze,{contactChannels:e.channels,availableChannels:o,a2aEnabled:s,setupLabel:`Enable`,verifyLoading:r,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),p?(0,q.jsx)(Y,{onClick:p}):null]})}var rt=[{id:`slack`,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`,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`,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?`}}],it={slack:`I want to reach you on Slack. Let's set it up.`,telegram:`I want to reach you on Telegram. Let's set it up.`,phone:`I want to be able to call you. Let's set you up with a phone number.`},at=15e3,ot=[];function st({assistantId:e,onStartSetupConversation:t}){let n=he.use.a2aChannel(),r=pe.use.name(),s=i(),[c,l]=(0,K.useState)({kind:`assistant`}),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(!1),[m,h]=(0,K.useState)(!1),g=r??`your assistant`,v=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),y=fe(v),b=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),x=de(b),S=a({...se(v),enabled:!!e,select:e=>e.contacts}),C=a({...ue(b),enabled:!!e,refetchInterval:at,select:e=>e.snapshots}),O=a({...ce({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await ne({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:rt};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??ot,A=S.data,j=(0,K.useMemo)(()=>A?.find(e=>e.role===`guardian`)??null,[A]),me=(0,K.useMemo)(()=>A?.filter(e=>e.role!==`guardian`)??[],[A]),M=(0,K.useMemo)(()=>c.kind===`contact`?A?.find(e=>e.id===c.contactId)??null:null,[A,c]),N=C.data??[],P=(0,K.useMemo)(()=>!A||!M?[]:A.filter(e=>e.id!==M.id&&e.role!==`guardian`),[A,M]),F=P.length>0,I=(0,K.useRef)(!1);(0,K.useEffect)(()=>{I.current||j&&(I.current=!0,l({kind:`contact`,contactId:j.id}))},[j]);let L=(0,K.useMemo)(()=>lt(N),[N]),R=L.some(e=>e.key===`slack`&&e.status===`ready`),ge=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),_e=a({...oe(ge),enabled:R,select:e=>e.threadMode}).data,z=(0,K.useCallback)(()=>s.invalidateQueries({queryKey:y}),[s,y]),B=(0,K.useCallback)(()=>s.invalidateQueries({queryKey:x}),[s,x]),V=o({mutationFn:()=>Se(e,{displayName:`New Contact`}),onMutate:async()=>{await s.cancelQueries({queryKey:y})},onSuccess:e=>{k(s,v,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),l({kind:`contact`,contactId:e.id})},onSettled:()=>z()}),H=o({mutationFn:t=>Ce(e,t),onSuccess:(e,t)=>{k(s,v,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),l({kind:`assistant`})},onSettled:()=>z()}),U=o({mutationFn:({contactId:t,patch:n})=>Se(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{k(s,v,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onSettled:()=>z()}),W=ie({onMutate:async()=>{await s.cancelQueries({queryKey:y})},onSuccess:(e,t)=>{let n=e.contact,r=t.body.mergeId;n&&(k(s,v,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==r).map(e=>e.id===n.id?n:e)}:void 0),l({kind:`contact`,contactId:n.id})),h(!1),_.success(`Contacts merged`)},onSettled:()=>z()}),be=(0,K.useCallback)(e=>{l(e),p(!1),h(!1),W.reset()},[W]),we=(0,K.useCallback)(()=>{W.reset(),h(!0)},[W]),Te=(0,K.useCallback)(()=>{W.isPending||(h(!1),W.reset())},[W]),G=o({mutationFn:async t=>{let n={path:{assistant_id:e},throwOnError:!0};t===`slack`?await ee(n):t===`telegram`?await w(n):t===`phone`&&await T(n)},onSettled:()=>B()}),Ee=le({onSuccess:()=>z()}),J=(0,K.useCallback)((t,n)=>{Ee.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[Ee,e]),De=o({mutationFn:t=>E({path:{assistant_id:e},body:{botToken:t},throwOnError:!0}),onSettled:()=>B()}),Y=o({mutationFn:({botToken:t,appToken:n})=>D({path:{assistant_id:e},body:{botToken:t,appToken:n},throwOnError:!0}),onSettled:()=>B()}),X=o({...ae(),onSuccess:()=>{s.invalidateQueries({queryKey:re(ge)})}}),ke=o({mutationFn:({accountSid:t,authToken:n})=>te({path:{assistant_id:e},body:{accountSid:t,authToken:n},throwOnError:!0}),onSettled:()=>B()}),Ae=(0,K.useCallback)(async e=>{await De.mutateAsync(e)},[De]),je=(0,K.useCallback)(async(e,t)=>{await Y.mutateAsync({botToken:e,appToken:t})},[Y]),Me=(0,K.useCallback)(t=>{X.mutate({path:{assistant_id:e},body:{threadMode:t}})},[X,e]),Ne=(0,K.useCallback)(async(e,t)=>{await ke.mutateAsync({accountSid:e,authToken:t})},[ke]),Pe=(0,K.useCallback)(()=>{V.isPending||V.mutate()},[V]),Fe=(0,K.useCallback)(()=>{d(!0)},[]),Ie=(0,K.useCallback)(()=>{d(!1),z()},[z]),Le=(0,K.useCallback)(e=>{t&&t(it[e])},[t]),Re=(0,K.useCallback)(e=>{G.mutate(e)},[G]),ze=(0,K.useCallback)(e=>{if(!t)return;let n=O.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[O,t]),Be=(0,K.useCallback)(e=>{if(!t)return;let n=O.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[O,t]),Z=o({mutationFn:t=>xe(e,t.channelId),onSuccess:()=>z(),onError:e=>{let t=e instanceof Error?e.message:`Failed to verify channel`;_.error(t)}}),Ue=(0,K.useCallback)(e=>{if(!M)return;let t=M.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&Z.mutate({channelId:t.id})},[M,Z]),We=H.isPending?H.variables:null,Q=(0,K.useMemo)(()=>M?U.isPending&&U.variables?.contactId===M.id?{...M,displayName:U.variables.patch.displayName,notes:U.variables.patch.notes}:M:null,[M,U.isPending,U.variables]),Ge={loading:S.isLoading,assistantName:g,guardian:j?{id:j.id,displayName:j.displayName.startsWith(`vellum-principal-`)?``:j.displayName,role:j.role,channelTypes:ft(j.channels,n)}:null,regularContacts:me.filter(e=>e.id!==We).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:ft(e.channels,n)})),selection:c,onAddContact:Pe,addingContact:V.isPending};return(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-hidden sm:flex-row sm:gap-6`,children:[(0,q.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,q.jsx)(ve,{onClick:()=>p(!0)})}),(0,q.jsx)(ye,{open:f,onClose:()=>p(!1),title:`Contacts`,children:(0,q.jsx)(Qe,{...Ge,onSelect:be})}),(0,q.jsx)(`aside`,{className:`hidden min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch sm:block`,children:(0,q.jsx)(Qe,{...Ge,onSelect:be})}),(0,q.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:c.kind===`assistant`||c.kind===`contact`&&c.contactId===We?(0,q.jsx)(Oe,{assistantName:g,channels:L,pendingChannelKey:G.isPending?G.variables??null:null,slackThreadMode:_e,slackThreadModePending:X.isPending,onSetup:t?Le:void 0,onDisconnect:Re,onSaveTelegramToken:Ae,onSaveSlackConfig:je,onSlackThreadModeChange:Me,onSaveTwilioCredentials:Ne,onGenerateInviteLink:n?Fe:void 0}):Q?Q.role===`guardian`?(0,q.jsx)(tt,{contact:Q,savePending:U.isPending,verifyPending:Z.isPending,mergePending:W.isPending,canMerge:F,availableChannels:O,a2aEnabled:n,onSave:async e=>{await U.mutateAsync({contactId:Q.id,patch:e})},onMerge:we,onSetupChannel:t?Be:void 0,onVerifyChannel:Ue,onRevokeChannel:J,onGenerateInviteLink:n?Fe:void 0}):(0,q.jsx)(Ve,{contact:Q,savePending:U.isPending,deletePending:H.isPending,verifyPending:Z.isPending,mergePending:W.isPending,canMerge:F,availableChannels:O,a2aEnabled:n,onSave:async e=>{await U.mutateAsync({contactId:Q.id,patch:e})},onDelete:async()=>{await H.mutateAsync(Q.id)},onMerge:we,onSetupChannel:t?ze:void 0,onVerifyChannel:Ue,onRevokeChannel:J}):(0,q.jsx)(ct,{})}),M?(0,q.jsx)(He,{open:m,survivor:M,candidates:P,pending:W.isPending,errorMessage:W.error instanceof Error?W.error.message:W.error?`Failed to merge contacts`:null,onMerge:t=>W.mutate({path:{assistant_id:e},body:{keepId:M.id,mergeId:t}}),onClose:Te}):null,(0,q.jsx)(et,{open:u,assistantId:e,onClose:Ie})]})}function ct(){return(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a contact`})})}function lt(e){let t=new Map;for(let n of e)t.set(n.channel,n);return[`slack`,`telegram`,`phone`].map(e=>{let n=t.get(e);return{key:e,status:ut(n),address:n?.channelHandle??void 0}})}function ut(e){return e?e.ready||e.setupStatus===`ready`?`ready`:e.setupStatus===`incomplete`?`incomplete`:`not_configured`:`not_configured`}var dt={slack:`Slack`,telegram:`Telegram`,phone:`Phone`,email:`Email`,whatsapp:`WhatsApp`,a2a:`A2A`};function ft(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(dt[e]??i.type))}return r}function pt(){let e=r(),t=U();return(0,q.jsx)(st,{assistantId:t,onStartSetupConversation:t=>{j.getState().setMainView(`chat`);let n=M();me.getState().setActiveConversationId(n),e(`${A.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},t)}export{pt as ContactsPageRoute};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./typography-BscuIPxA.js";import{t as l}from"./card-BibIM9x3.js";import{c as u,l as d}from"./src-D6Nu2Lol.js";import{t as f}from"./confirm-dialog-DbNUkFt6.js";import{t as p}from"./tag-BadGF3FB.js";import{t as m}from"./input-CwdmSRlD.js";import{t as h}from"./modal-DX6UN7b0.js";import{t as g}from"./panel-item-BFOUNXY1.js";import{n as _}from"./toast-DLWkiWW6.js";import{t as v}from"./createLucideIcon-DIlBzeWM.js";import{t as y}from"./arrow-left-DpZuwfUr.js";import{t as b}from"./chevron-right-HpmykQ8I.js";import{t as x}from"./link-2-BedDg97D.js";import{t as S}from"./loader-circle-CTs38Ovl.js";import{t as C}from"./pencil-lwgMCqyH.js";import{Bt as w,Ht as T,It as ee,Ut as te,Vt as E,x as ne,zt as D}from"./sdk.gen-Bew9wO5C.js";import{B as O,H as re,Mt as ie,U as ae,V as oe,_ as se,a as ce,jt as le,o as ue,s as de,v as fe,y as k}from"./react-query.gen-DdB0sQgj.js";import{a as A}from"./routes-BKwsRssF.js";import{t as pe}from"./assistant-identity-store-BFaMpt_3.js";import{n as j}from"./viewer-store-CInCucV8.js";import{t as me}from"./conversation-store-BSxi0r0X.js";import{t as he}from"./assistant-feature-flag-store-D2CUHsmL.js";import{t as M}from"./conversation-selection-BMndnV1U.js";import{$a as N,Ba as P,Oa as F,Wi as I,aa as L,fo as R,ho as ge,ia as _e,mo as z,pa as B,va as V,wa as H}from"./index-LP2PV_QY.js";import{t as U}from"./use-active-assistant-id-512RohBL.js";import{n as ve,t as ye}from"./mobile-sidebar-drawer-Cd68jgRD.js";import{t as W}from"./detail-card-CLwQ17AA.js";import{a as be,i as xe,r as Se,t as Ce}from"./contacts-gateway-Cf32jSYa.js";var we=v(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),Te=v(`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`}]]),G=v(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),Ee=v(`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),q=s();function J({role:e,contactType:t}){let{label:n,tone:r}=De(e,t);return(0,q.jsx)(p,{tone:r,children:n})}function De(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 Y({onClick:e}){return(0,q.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:(0,q.jsx)(x,{className:`h-3.5 w-3.5`}),onClick:e,children:`Share Connection Link`})}var X={slack:{label:`Slack`,Icon:P,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`},telegram:{label:`Telegram`,Icon:_e,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`},phone:{label:`Phone Calling`,Icon:V,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`}};function Oe({assistantName:e,channels:t,pendingChannelKey:n=null,slackThreadMode:r,slackThreadModePending:i=!1,onSetup:a,onDisconnect:o,onSaveTelegramToken:s,onSaveSlackConfig:c,onSlackThreadModeChange:l,onSaveTwilioCredentials:u,onGenerateInviteLink:d}){let p=e.trim()||`your assistant`,[m,h]=(0,K.useState)(null),[g,_]=(0,K.useState)(new Set),v=m?X[m]:null,y=e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,q.jsx)(W,{title:`${p} (Your Assistant)`,accessory:(0,q.jsx)(J,{role:`assistant`}),compactAccessory:!0}),(0,q.jsx)(W,{title:`Channels`,subtitle:`Manage where ${p} can be reached.`,children:(0,q.jsx)(`div`,{className:`flex flex-col`,children:t.map((e,t)=>(0,q.jsxs)(`div`,{children:[t>0?(0,q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,q.jsx)(ke,{channel:e,pending:n===e.key,expanded:g.has(e.key),onToggleExpand:()=>y(e.key),onSetup:a?()=>a(e.key):void 0,onDisconnect:o?()=>h(e.key):void 0,onSaveTelegramToken:s,onSaveSlackConfig:c,slackThreadMode:r,slackThreadModePending:i,onSlackThreadModeChange:l,onSaveTwilioCredentials:u})]},e.key))})}),d?(0,q.jsx)(Y,{onClick:d}):null,(0,q.jsx)(f,{open:m!==null,title:`Disconnect ${v?.label??``}?`,message:v?.disconnectMessage??``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{m&&o&&o(m),h(null)},onCancel:()=>h(null)})]})}function ke({channel:e,pending:t,expanded:r,onToggleExpand:i,onSetup:a,onDisconnect:o,onSaveTelegramToken:s,onSaveSlackConfig:c,slackThreadMode:l,slackThreadModePending:u=!1,onSlackThreadModeChange:d,onSaveTwilioCredentials:f}){let p=X[e.key],m=e.status===`ready`;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 py-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`button`,{type:`button`,className:`flex shrink-0 items-center justify-center`,onClick:i,style:{color:`var(--content-secondary)`},children:r?(0,q.jsx)(z,{className:`h-4 w-4`}):(0,q.jsx)(b,{className:`h-4 w-4`})}),(0,q.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:p.label}),e.address?(0,q.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,q.jsx)(`div`,{className:`ml-auto flex items-center gap-2`,children:m?(0,q.jsxs)(q.Fragment,{children:[(0,q.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,q.jsx)(R,{className:`h-3 w-3`}),`Connected`]}),(0,q.jsx)(n,{type:`button`,variant:`danger`,onClick:o,disabled:!o||t,children:t?`Disconnecting…`:`Disconnect`})]}):(0,q.jsx)(n,{type:`button`,variant:`outlined`,onClick:a,disabled:!a||t,children:t?`Opening…`:`Set up`})})]}),!m&&e.key===`telegram`&&r?(0,q.jsx)(Ae,{onSave:s}):null,!m&&e.key===`slack`&&r?(0,q.jsx)(je,{onSave:c}):null,!m&&e.key===`phone`&&r?(0,q.jsx)(Ne,{onSave:f}):null,m&&e.key===`telegram`&&r?(0,q.jsx)(Ae,{onSave:s}):null,m&&e.key===`slack`&&r?(0,q.jsx)(Me,{threadMode:l,pending:u,onThreadModeChange:d}):null,m&&e.key===`phone`&&r?(0,q.jsx)(Ne,{onSave:f}):null]})}function Ae({onSave:e}){let[t,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(!1),[o,s]=(0,K.useState)(null),c=t.trim().length>0&&!i;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(m,{label:`Bot Token`,type:`password`,value:t,onChange:e=>r(e.target.value),placeholder:`Paste your Telegram bot token`,disabled:i,fullWidth:!0}),o?(0,q.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:o}):null,(0,q.jsx)(`div`,{children:(0,q.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!c)){a(!0),s(null);try{await e(t.trim()),r(``)}catch(e){s(e instanceof Error?e.message:`Failed to save`)}finally{a(!1)}}},disabled:!c,children:i?`Saving…`:`Save`})})]})}function je({onSave:e}){let[t,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(m,{label:`Bot Token`,type:`password`,value:t,onChange:e=>r(e.target.value),placeholder:`xoxb-...`,disabled:o,fullWidth:!0}),(0,q.jsx)(m,{label:`App Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`xapp-...`,disabled:o,fullWidth:!0}),c?(0,q.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,q.jsx)(`div`,{children:(0,q.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(t.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:o?`Saving…`:`Save`})})]})}function Me({threadMode:e,pending:t=!1,onThreadModeChange:n}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(c,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:`Thread Behavior`}),(0,q.jsxs)(d,{value:e??`mention_only`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":`Slack thread behavior`,children:[(0,q.jsx)(u,{value:`mention_only`,label:`Mentions only`,helperText:`Bot only responds when @mentioned.`}),(0,q.jsx)(u,{value:`mention_then_thread`,label:`Follow threads after first mention`,helperText:`After an @mention in a thread, bot listens to all subsequent replies.`})]})]})}function Ne({onSave:e}){let[t,r]=(0,K.useState)(``),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,q.jsx)(m,{label:`Account SID`,type:`text`,value:t,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,q.jsx)(m,{label:`Auth Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`Twilio auth token`,disabled:o,fullWidth:!0}),c?(0,q.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,q.jsx)(`div`,{children:(0,q.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(t.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:o?`Saving…`:`Save`})})]})}var Pe=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Fe(e){return Pe.has(e)}function Ie(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t?.status===`verified`||t?.status===`active`&&t?.verifiedAt!=null?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function Le(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||Fe(e.type)&&(r.push({id:e.type,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 Re({name:e,className:t,style:n}){switch(e){case`bot`:return(0,q.jsx)(we,{className:t,style:n});case`hash`:return(0,q.jsx)(P,{className:t,style:n});case`send`:return(0,q.jsx)(_e,{className:t,style:n});case`phone`:return(0,q.jsx)(V,{className:t,style:n});case`mail`:return(0,q.jsx)(F,{className:t,style:n});case`message-square`:return(0,q.jsx)(H,{className:t,style:n});default:return(0,q.jsx)(Te,{className:t,style:n})}}function ze({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r=`Invite`,verifyLoading:i,verifySubject:a=`self`,onSetupChannel:o,onVerifyChannel:s,onRevokeChannel:c}){let[l,u]=(0,K.useState)(null),[d,p]=(0,K.useState)(null),m=new Map;for(let t of e)t.status!==`revoked`&&(m.has(t.type)||m.set(t.type,t));return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`flex flex-col`,children:Le(t,e,n).map((e,t)=>{let n=m.get(e.id);return(0,q.jsxs)(`div`,{children:[t>0&&(0,q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,q.jsx)(Be,{info:e,existing:n,setupLabel:r,verifyLoading:i,onSetup:o?()=>o(e.id):void 0,onVerify:s&&e.supportsVerification?()=>u(e):void 0,onRevoke:c&&n?()=>p({channelId:n.id,channel:e}):void 0})]},e.id)})}),l&&(0,q.jsx)(f,{open:!0,title:`Verify ${l.label}`,message:a===`contact`?`This will mark this contact's ${l.label} channel as verified. Your assistant will recognize them when they reach out from it.`:`This will mark your ${l.label} channel as verified. Your assistant will recognize you when you reach out from it.`,confirmLabel:`Verify`,onConfirm:()=>{l&&(s?.(l.id),u(null))},onCancel:()=>u(null)}),d&&(0,q.jsx)(f,{open:!0,title:`Revoke ${d.channel.label}`,message:`This will disconnect the verified channel. The contact will need to re-verify to use this channel again.`,confirmLabel:`Revoke`,destructive:!0,onConfirm:()=>{c?.(d.channelId,d.channel.id),p(null)},onCancel:()=>p(null)})]})}function Be({info:e,existing:t,setupLabel:r,verifyLoading:i,onSetup:a,onVerify:o,onRevoke:s}){let c=Ie(e,t);return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,q.jsx)(Re,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,q.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,q.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,q.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:c.kind===`connected`?(0,q.jsxs)(q.Fragment,{children:[(0,q.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,q.jsx)(R,{className:`h-3 w-3`}),`Connected`]}),s?(0,q.jsx)(n,{variant:`danger`,onClick:s,children:`Revoke`}):null]}):c.kind===`verified`?(0,q.jsxs)(q.Fragment,{children:[(0,q.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,q.jsx)(R,{className:`h-3 w-3`}),`Verified`]}),s?(0,q.jsx)(n,{variant:`danger`,onClick:s,children:`Revoke`}):null]}):c.kind===`unverified`?(0,q.jsx)(n,{variant:`outlined`,onClick:o,disabled:!o||i,children:i?`Verifying…`:`Verify`}):c.kind===`setup`?e.id===`a2a`?null:(0,q.jsx)(n,{variant:`outlined`,onClick:a,disabled:!a,children:r}):null})]})}function Ve(e){return(0,q.jsx)(Z,{...e},e.contact.id)}function Z({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:p,onVerifyChannel:h,onRevokeChannel:g}){let _=e.displayName===`New Contact`,[v,y]=(0,K.useState)(_?``:e.displayName),[b,x]=(0,K.useState)(e.notes??``),[S,C]=(0,K.useState)(!1),w=v.trim(),T=b.trim(),ee=_?``:e.displayName,te=e.notes??``,E=w!==ee||T!==te,ne=w.length>0&&E&&!t&&!r,D=_&&e.channels.length===0&&e.interactionCount===0,O=w||e.displayName,re=`${e.interactionCount} interaction${e.interactionCount===1?``:`s`}`;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,q.jsx)(W,{title:O,accessory:(0,q.jsx)(J,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:re,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,q.jsx)(m,{label:`Name`,type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:`Give this human a name`,autoFocus:_,disabled:t||r,fullWidth:!0}),(0,q.jsx)(m,{label:`Notes`,type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:`Optional notes about the human which AI will take into account`,disabled:t||r,fullWidth:!0}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(n,{type:`button`,onClick:()=>l({displayName:w,notes:T}),disabled:!ne,children:t?`Saving…`:`Save`}),d?(0,q.jsx)(n,{type:`button`,variant:`outlined`,onClick:d,disabled:!o||D||E||a||t||r,title:o?D?`Save this contact before merging`:E?`Save your changes before merging`:void 0:`No other contacts available to merge`,children:a?`Merging…`:`Merge…`}):null,(0,q.jsx)(n,{type:`button`,variant:`danger`,onClick:()=>{D?u():C(!0)},disabled:r,children:r?`Deleting…`:`Delete Contact`})]})]})}),(0,q.jsx)(W,{title:`Channels`,subtitle:`Once verified, your assistant will recognize this contact when they message from these channels.`,children:(0,q.jsx)(ze,{contactChannels:e.channels,availableChannels:s,a2aEnabled:c,verifyLoading:i,verifySubject:`contact`,onSetupChannel:p,onVerifyChannel:h,onRevokeChannel:g})}),(0,q.jsx)(f,{open:S,title:`Delete ${e.displayName}?`,message:`This will permanently delete this contact and all their channels. This action cannot be undone.`,confirmLabel:`Delete`,destructive:!0,onConfirm:async()=>{C(!1),await u()},onCancel:()=>C(!1)})]})}function He(e){return(0,q.jsx)(Ue,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function Ue({open:e,survivor:t,candidates:r,pending:i,errorMessage:a,onMerge:o,onClose:s}){let[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(null);(0,K.useEffect)(()=>{d&&!r.some(e=>e.id===d)&&f(null)},[r,d]);let p=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();return e?r.filter(t=>t.displayName.toLowerCase().includes(e)):r},[r,l]),m=d?r.find(e=>e.id===d)??null:null,g=qe(t);return(0,q.jsx)(h.Root,{open:e,onOpenChange:e=>{!e&&!i&&s()},children:(0,q.jsxs)(h.Content,{size:`md`,children:[(0,q.jsxs)(h.Header,{children:[(0,q.jsx)(h.Title,{icon:Ee,children:m?`Merge "${m.displayName}" into ${g}?`:`Merge another contact into ${g}`}),(0,q.jsx)(h.Description,{children:m?`Channels and notes from the merged contact will move over. The merged contact will be deleted.`:`The contact you pick will be deleted. Its channels and notes will be added to this one.`})]}),(0,q.jsxs)(h.Body,{className:`flex flex-col gap-3`,children:[m?(0,q.jsx)(Ge,{survivor:t,donor:m}):r.length===0?(0,q.jsx)(Ke,{}):(0,q.jsx)(We,{search:l,onSearch:u,candidates:p,onPick:f}),a?(0,q.jsx)(c,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:a}):null]}),(0,q.jsx)(h.Footer,{children:m?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(n,{variant:`outlined`,onClick:()=>f(null),disabled:i,leftIcon:(0,q.jsx)(y,{"aria-hidden":!0}),children:`Back`}),(0,q.jsx)(n,{variant:`danger`,onClick:()=>o(m.id),disabled:i,children:i?`Merging…`:`Merge`})]}):(0,q.jsx)(n,{variant:`outlined`,onClick:s,disabled:i,children:`Cancel`})})]})})}function We({search:e,onSearch:t,candidates:n,onPick:r}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(m,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Search contacts`,leftIcon:(0,q.jsx)(L,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,q.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":`Select a contact to merge`,children:n.length===0?(0,q.jsx)(c,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:`No matching contacts`}):n.map(e=>(0,q.jsx)(Q,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Q({contact:e,onPick:t}){let n=Ze(e).join(` | `)||void 0;return(0,q.jsx)(g,{asChild:!0,label:``,children:(0,q.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,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,q.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function Ge({survivor:e,donor:t}){let n=qe(e),{moved:r,duplicates:i}=Xe(e,t);return(0,q.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsxs)(`span`,{className:`text-(--content-default)`,children:[`“`,t.displayName,`”`]}),` `,`will be deleted.`]}),(0,q.jsx)(`li`,{children:r.length===0?`No new channels will move to ${n}.`:`${r.length} channel${r.length===1?``:`s`} will move to ${n}: ${r.map(e=>Ye(e.type)).join(`, `)}.`}),i.length>0?(0,q.jsxs)(`li`,{className:`text-(--content-tertiary)`,children:[i.length,` duplicate channel`,i.length===1?``:`s`,` already on `,n,` `,`(skipped).`]}):null,t.notes?(0,q.jsx)(`li`,{children:`Notes from the merged contact will be appended.`}):null,(0,q.jsx)(`li`,{className:`text-(--content-tertiary)`,children:`This cannot be undone.`})]})}function Ke(){return(0,q.jsx)(c,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:`No other contacts available to merge.`})}function qe(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?`you`:`${e.displayName} (you)`:e.displayName||`this contact`}var Je={slack:`Slack`,telegram:`Telegram`,phone:`Phone`,email:`Email`,whatsapp:`WhatsApp`};function Ye(e){return Je[e.toLowerCase()]??e}function Xe(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 Ze(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(Je[e]??r.type))}return n}function Qe({loading:e,guardian:t,assistantName:r,regularContacts:i,selection:a,onSelect:o,onAddContact:s,addingContact:c=!1}){let[u,d]=(0,K.useState)(``),f=u.trim()?i.filter(e=>e.displayName.toLowerCase().includes(u.trim().toLowerCase())):i;return(0,q.jsx)(l,{className:`h-full`,children:(0,q.jsxs)(`div`,{className:`flex h-full min-w-0 flex-col gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:`Entries`}),(0,q.jsx)(n,{type:`button`,variant:`ghost`,iconOnly:c?(0,q.jsx)(S,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(B,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":`Add contact`,tintColor:`var(--content-secondary)`})]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,q.jsx)($,{name:t.displayName?`${t.displayName} (You)`:`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,q.jsx)($,{name:r?.trim()||`Your Assistant`,role:`assistant`,selected:a?.kind===`assistant`,onClick:()=>o({kind:`assistant`}),trailingIcon:`more`})]}),(0,q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),i.length>0?(0,q.jsx)(m,{type:`text`,value:u,onChange:e=>d(e.target.value),placeholder:`Search Contacts`,leftIcon:(0,q.jsx)(L,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,i.length>0?(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f.map(e=>(0,q.jsx)($,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,selected:a?.kind===`contact`&&a.contactId===e.id,onClick:()=>o({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),f.length===0?(0,q.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`No matching contacts`}):null]}):e?null:(0,q.jsx)(n,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,q.jsx)(S,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(I,{"aria-hidden":!0}),children:`Add Contact`})]})})}function $({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o}){let s=r&&r.length>0?r.join(` | `):void 0;return(0,q.jsx)(g,{asChild:!0,active:i,label:``,trailingAction:o===`pencil`?(0,q.jsx)(C,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):o===`more`?(0,q.jsx)(G,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):void 0,children:(0,q.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,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),s?(0,q.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:s}):null]}),(0,q.jsx)(`span`,{className:`shrink-0`,children:(0,q.jsx)(J,{role:t,contactType:n})})]})})}function $e(e){let t=e-Date.now();if(t<=0)return`Expired`;let n=Math.ceil(t/(1e3*60*60*24));return n===1?`Expires in 1 day`:`Expires in ${n} days`}function et({open:e,assistantId:t,onClose:r}){let[i,a]=(0,K.useState)(!1),s=(0,K.useRef)(null),l=(0,K.useRef)(!1),u=o({...O({path:{assistant_id:t}})}),d=(0,K.useRef)(u.mutate);(0,K.useLayoutEffect)(()=>{d.current=u.mutate});let f=(0,K.useRef)(u.reset);(0,K.useLayoutEffect)(()=>{f.current=u.reset}),(0,K.useEffect)(()=>{e&&!l.current&&d.current({path:{assistant_id:t}}),l.current=e},[e,t]),(0,K.useEffect)(()=>()=>{s.current&&clearTimeout(s.current)},[]);let p=(0,K.useCallback)(()=>{f.current(),a(!1),s.current&&=(clearTimeout(s.current),null),r()},[r]),g=(0,K.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{a(!0),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>a(!1),2e3)})},[]),_=u.isSuccess&&u.data.token?be({senderAssistantId:t,token:u.data.token}):``;return(0,q.jsx)(h.Root,{open:e,onOpenChange:e=>{e||p()},children:(0,q.jsxs)(h.Content,{size:`sm`,children:[(0,q.jsx)(h.Header,{children:(0,q.jsx)(h.Title,{children:`Share Connection Link`})}),(0,q.jsx)(h.Body,{children:u.isPending?(0,q.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:[(0,q.jsx)(S,{className:`h-4 w-4 animate-spin`}),`Creating invite link…`]}):u.isError?(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(`p`,{role:`alert`,className:`!m-0 text-body-medium-lighter`,style:{color:`var(--system-negative-strong)`},children:`Failed to create invite link. Make sure A2A is enabled for your assistant.`}),(0,q.jsx)(n,{variant:`outlined`,onClick:()=>u.mutate({path:{assistant_id:t}}),children:`Try Again`})]}):u.isSuccess?(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,q.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Share this link with another assistant owner to establish a connection.`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(m,{type:`text`,readOnly:!0,value:_,fullWidth:!0,wrapperClassName:`flex-1`,className:`font-mono`,onFocus:e=>e.currentTarget.select()}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>g(_),"aria-label":`Copy invite link`,className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-[var(--border-base)] hover:bg-[var(--surface-hover)]`,children:i?(0,q.jsx)(ge,{className:`h-4 w-4`}):(0,q.jsx)(N,{className:`h-4 w-4`})})]}),u.data.expiresAt!=null&&(0,q.jsx)(c,{variant:`body-small-default`,style:{color:`var(--content-tertiary)`},children:$e(u.data.expiresAt)})]}):null}),(0,q.jsx)(h.Footer,{children:(0,q.jsx)(n,{variant:`outlined`,onClick:p,children:`Done`})})]})})}function tt(e){return(0,q.jsx)(nt,{...e},e.contact.id)}function nt({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 h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,K.useState)(g),[y,b]=(0,K.useState)(e.notes??``),x=_.trim(),S=y.trim(),C=x!==g.trim()||S!==(e.notes??``).trim(),w=C&&!t,T=`${e.interactionCount} interaction${e.interactionCount===1?``:`s`}`;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,q.jsx)(W,{title:h?`You`:`${e.displayName} (You)`,accessory:(0,q.jsx)(J,{role:`guardian`}),compactAccessory:!0,subtitle:T,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,q.jsx)(m,{label:`Name`,type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Your name`,disabled:t,fullWidth:!0}),(0,q.jsx)(m,{label:`Notes`,type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`Notes about yourself which AI will take into account`,disabled:t,fullWidth:!0}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(n,{variant:`primary`,onClick:()=>c({displayName:x||e.displayName,notes:S}),disabled:!w,children:t?`Saving…`:`Save`}),l?(0,q.jsx)(n,{variant:`outlined`,onClick:l,disabled:!a||C||i||t,title:a?C?`Save your changes before merging`:void 0:`No other contacts available to merge`,children:i?`Merging…`:`Merge…`}):null]})]})}),(0,q.jsx)(W,{title:`Channels`,subtitle:`Once verified, your assistant will recognize you when you message from these channels.`,children:(0,q.jsx)(ze,{contactChannels:e.channels,availableChannels:o,a2aEnabled:s,setupLabel:`Enable`,verifyLoading:r,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),p?(0,q.jsx)(Y,{onClick:p}):null]})}var rt=[{id:`slack`,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`,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`,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?`}}],it={slack:`I want to reach you on Slack. Let's set it up.`,telegram:`I want to reach you on Telegram. Let's set it up.`,phone:`I want to be able to call you. Let's set you up with a phone number.`},at=15e3,ot=[];function st({assistantId:e,onStartSetupConversation:t}){let n=he.use.a2aChannel(),r=pe.use.name(),s=i(),[c,l]=(0,K.useState)({kind:`assistant`}),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(!1),[m,h]=(0,K.useState)(!1),g=r??`your assistant`,v=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),y=fe(v),b=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),x=de(b),S=a({...se(v),enabled:!!e,select:e=>e.contacts}),C=a({...ue(b),enabled:!!e,refetchInterval:at,select:e=>e.snapshots}),O=a({...ce({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await ne({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:rt};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??ot,A=S.data,j=(0,K.useMemo)(()=>A?.find(e=>e.role===`guardian`)??null,[A]),me=(0,K.useMemo)(()=>A?.filter(e=>e.role!==`guardian`)??[],[A]),M=(0,K.useMemo)(()=>c.kind===`contact`?A?.find(e=>e.id===c.contactId)??null:null,[A,c]),N=C.data??[],P=(0,K.useMemo)(()=>!A||!M?[]:A.filter(e=>e.id!==M.id&&e.role!==`guardian`),[A,M]),F=P.length>0,I=(0,K.useRef)(!1);(0,K.useEffect)(()=>{I.current||j&&(I.current=!0,l({kind:`contact`,contactId:j.id}))},[j]);let L=(0,K.useMemo)(()=>lt(N),[N]),R=L.some(e=>e.key===`slack`&&e.status===`ready`),ge=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),_e=a({...oe(ge),enabled:R,select:e=>e.threadMode}).data,z=(0,K.useCallback)(()=>s.invalidateQueries({queryKey:y}),[s,y]),B=(0,K.useCallback)(()=>s.invalidateQueries({queryKey:x}),[s,x]),V=o({mutationFn:()=>Se(e,{displayName:`New Contact`}),onMutate:async()=>{await s.cancelQueries({queryKey:y})},onSuccess:e=>{k(s,v,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),l({kind:`contact`,contactId:e.id})},onSettled:()=>z()}),H=o({mutationFn:t=>Ce(e,t),onSuccess:(e,t)=>{k(s,v,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),l({kind:`assistant`})},onSettled:()=>z()}),U=o({mutationFn:({contactId:t,patch:n})=>Se(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{k(s,v,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onSettled:()=>z()}),W=ie({onMutate:async()=>{await s.cancelQueries({queryKey:y})},onSuccess:(e,t)=>{let n=e.contact,r=t.body.mergeId;n&&(k(s,v,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==r).map(e=>e.id===n.id?n:e)}:void 0),l({kind:`contact`,contactId:n.id})),h(!1),_.success(`Contacts merged`)},onSettled:()=>z()}),be=(0,K.useCallback)(e=>{l(e),p(!1),h(!1),W.reset()},[W]),we=(0,K.useCallback)(()=>{W.reset(),h(!0)},[W]),Te=(0,K.useCallback)(()=>{W.isPending||(h(!1),W.reset())},[W]),G=o({mutationFn:async t=>{let n={path:{assistant_id:e},throwOnError:!0};t===`slack`?await ee(n):t===`telegram`?await w(n):t===`phone`&&await T(n)},onSettled:()=>B()}),Ee=le({onSuccess:()=>z()}),J=(0,K.useCallback)((t,n)=>{Ee.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[Ee,e]),De=o({mutationFn:t=>E({path:{assistant_id:e},body:{botToken:t},throwOnError:!0}),onSettled:()=>B()}),Y=o({mutationFn:({botToken:t,appToken:n})=>D({path:{assistant_id:e},body:{botToken:t,appToken:n},throwOnError:!0}),onSettled:()=>B()}),X=o({...ae(),onSuccess:()=>{s.invalidateQueries({queryKey:re(ge)})}}),ke=o({mutationFn:({accountSid:t,authToken:n})=>te({path:{assistant_id:e},body:{accountSid:t,authToken:n},throwOnError:!0}),onSettled:()=>B()}),Ae=(0,K.useCallback)(async e=>{await De.mutateAsync(e)},[De]),je=(0,K.useCallback)(async(e,t)=>{await Y.mutateAsync({botToken:e,appToken:t})},[Y]),Me=(0,K.useCallback)(t=>{X.mutate({path:{assistant_id:e},body:{threadMode:t}})},[X,e]),Ne=(0,K.useCallback)(async(e,t)=>{await ke.mutateAsync({accountSid:e,authToken:t})},[ke]),Pe=(0,K.useCallback)(()=>{V.isPending||V.mutate()},[V]),Fe=(0,K.useCallback)(()=>{d(!0)},[]),Ie=(0,K.useCallback)(()=>{d(!1),z()},[z]),Le=(0,K.useCallback)(e=>{t&&t(it[e])},[t]),Re=(0,K.useCallback)(e=>{G.mutate(e)},[G]),ze=(0,K.useCallback)(e=>{if(!t)return;let n=O.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[O,t]),Be=(0,K.useCallback)(e=>{if(!t)return;let n=O.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[O,t]),Z=o({mutationFn:t=>xe(e,t.channelId),onSuccess:()=>z(),onError:e=>{let t=e instanceof Error?e.message:`Failed to verify channel`;_.error(t)}}),Ue=(0,K.useCallback)(e=>{if(!M)return;let t=M.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&Z.mutate({channelId:t.id})},[M,Z]),We=H.isPending?H.variables:null,Q=(0,K.useMemo)(()=>M?U.isPending&&U.variables?.contactId===M.id?{...M,displayName:U.variables.patch.displayName,notes:U.variables.patch.notes}:M:null,[M,U.isPending,U.variables]),Ge={loading:S.isLoading,assistantName:g,guardian:j?{id:j.id,displayName:j.displayName.startsWith(`vellum-principal-`)?``:j.displayName,role:j.role,channelTypes:ft(j.channels,n)}:null,regularContacts:me.filter(e=>e.id!==We).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:ft(e.channels,n)})),selection:c,onAddContact:Pe,addingContact:V.isPending};return(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-hidden sm:flex-row sm:gap-6`,children:[(0,q.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,q.jsx)(ve,{onClick:()=>p(!0)})}),(0,q.jsx)(ye,{open:f,onClose:()=>p(!1),title:`Contacts`,children:(0,q.jsx)(Qe,{...Ge,onSelect:be})}),(0,q.jsx)(`aside`,{className:`hidden min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch sm:block`,children:(0,q.jsx)(Qe,{...Ge,onSelect:be})}),(0,q.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:c.kind===`assistant`||c.kind===`contact`&&c.contactId===We?(0,q.jsx)(Oe,{assistantName:g,channels:L,pendingChannelKey:G.isPending?G.variables??null:null,slackThreadMode:_e,slackThreadModePending:X.isPending,onSetup:t?Le:void 0,onDisconnect:Re,onSaveTelegramToken:Ae,onSaveSlackConfig:je,onSlackThreadModeChange:Me,onSaveTwilioCredentials:Ne,onGenerateInviteLink:n?Fe:void 0}):Q?Q.role===`guardian`?(0,q.jsx)(tt,{contact:Q,savePending:U.isPending,verifyPending:Z.isPending,mergePending:W.isPending,canMerge:F,availableChannels:O,a2aEnabled:n,onSave:async e=>{await U.mutateAsync({contactId:Q.id,patch:e})},onMerge:we,onSetupChannel:t?Be:void 0,onVerifyChannel:Ue,onRevokeChannel:J,onGenerateInviteLink:n?Fe:void 0}):(0,q.jsx)(Ve,{contact:Q,savePending:U.isPending,deletePending:H.isPending,verifyPending:Z.isPending,mergePending:W.isPending,canMerge:F,availableChannels:O,a2aEnabled:n,onSave:async e=>{await U.mutateAsync({contactId:Q.id,patch:e})},onDelete:async()=>{await H.mutateAsync(Q.id)},onMerge:we,onSetupChannel:t?ze:void 0,onVerifyChannel:Ue,onRevokeChannel:J}):(0,q.jsx)(ct,{})}),M?(0,q.jsx)(He,{open:m,survivor:M,candidates:P,pending:W.isPending,errorMessage:W.error instanceof Error?W.error.message:W.error?`Failed to merge contacts`:null,onMerge:t=>W.mutate({path:{assistant_id:e},body:{keepId:M.id,mergeId:t}}),onClose:Te}):null,(0,q.jsx)(et,{open:u,assistantId:e,onClose:Ie})]})}function ct(){return(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a contact`})})}function lt(e){let t=new Map;for(let n of e)t.set(n.channel,n);return[`slack`,`telegram`,`phone`].map(e=>{let n=t.get(e);return{key:e,status:ut(n),address:n?.channelHandle??void 0}})}function ut(e){return e?e.ready||e.setupStatus===`ready`?`ready`:e.setupStatus===`incomplete`?`incomplete`:`not_configured`:`not_configured`}var dt={slack:`Slack`,telegram:`Telegram`,phone:`Phone`,email:`Email`,whatsapp:`WhatsApp`,a2a:`A2A`};function ft(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(dt[e]??i.type))}return r}function pt(){let e=r(),t=U();return(0,q.jsx)(st,{assistantId:t,onStartSetupConversation:t=>{j.getState().setMainView(`chat`);let n=M();me.getState().setActiveConversationId(n),e(`${A.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},t)}export{pt as ContactsPageRoute};
@@ -1 +1 @@
1
- import{t as e}from"./capture-error-B0wqOYKY.js";import{t}from"./useQuery-B45lW1Kk.js";import{t as n}from"./queryOptions-BtNi-_9H.js";import{J as r}from"./sdk.gen-Bew9wO5C.js";import{T as i}from"./react-query.gen-DdB0sQgj.js";import{n as a,r as o,t as s}from"./api-errors-CwAGZ-xJ.js";import{t as c}from"./use-is-org-ready-CMpj-2ts.js";function l(e){return e.surfacedAt==null?e.conversationType===`background`||e.conversationType===`scheduled`||e.groupId===`system:background`||e.groupId===`system:scheduled`:!1}function u(e){return e.conversationType===`scheduled`||e.groupId===`system:scheduled`}function d(e){return!e.hasUnseenLatestAssistantMessage&&!l(e)&&e.conversationId!=null&&e.latestAssistantMessageAt!=null}function f(e){return e.hasUnseenLatestAssistantMessage===!0&&!l(e)&&e.conversationId!=null}function p(e){return e.hasUnseenLatestAssistantMessage===!0&&!l(e)&&e.archivedAt==null}function m(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function h(e){return typeof e==`string`?e:void 0}function g(e){if(e)return{sourceChannel:e.sourceChannel,externalChatId:e.externalChatId,externalThreadId:e.externalThreadId,externalChatName:e.externalChatName,externalUserId:h(e.externalUserId),displayName:h(e.displayName),username:h(e.username),slackChannel:e.slackChannel?{channelId:e.slackChannel.channelId,name:e.slackChannel.name,link:e.slackChannel.link?.webUrl?{webUrl:e.slackChannel.link.webUrl}:void 0}:void 0,slackThread:e.slackThread?{channelId:e.slackThread.channelId,threadTs:e.slackThread.threadTs,link:e.slackThread.link?.appUrl||e.slackThread.link?.webUrl?{appUrl:e.slackThread.link.appUrl,webUrl:e.slackThread.link.webUrl}:void 0}:void 0}}function _(e){let t=e.assistantAttention,n=e.channelBinding?.sourceChannel??h(e.conversationOriginChannel);return{conversationId:e.id,title:e.title,createdAt:m(e.createdAt),lastMessageAt:m(e.lastMessageAt??e.updatedAt),hasUnseenLatestAssistantMessage:t?.hasUnseenLatestAssistantMessage,latestAssistantMessageAt:m(t?.latestAssistantMessageAt),lastSeenAssistantMessageAt:m(t?.lastSeenAssistantMessageAt),archivedAt:e.archivedAt,surfacedAt:m(e.surfacedAt),groupId:h(e.groupId),source:e.source,isPinned:e.isPinned,conversationType:e.conversationType,scheduleJobId:e.scheduleJobId,displayOrder:m(e.displayOrder),channelBinding:g(e.channelBinding),originChannel:n,isProcessing:e.isProcessing}}function v(e){return _(e)}var y=`conversation-list`;function b(e){return[y,e??``]}function x(e){return[y,e??``,`foreground`]}function S(e){return[y,e??``,`archived`]}function C(e){return[y,e??``,`background`]}function w(e){return[y,e??``,`scheduled`]}function T(e){return[y,e??``,`channel`]}function E(e){return(t,n)=>(n[e]??0)-(t[e]??0)}var D=50,O=200;async function k(e,t,n={}){let{conversationType:i,archiveStatus:c,originChannel:l}=n,{data:u,error:d,response:f}=await r({path:{assistant_id:e},query:{limit:D,offset:t,...i?{conversationType:i}:{},...c?{archiveStatus:c}:{},...l?{originChannel:l}:{}},throwOnError:!1});if(a(f,d,`Failed to list conversations.`),!f.ok){let e=o(d,f,`Failed to list conversations.`);throw new s(f.status,e)}return{conversations:(u?.conversations??[]).map(_),hasMore:u?.hasMore??!1}}async function A(e,t={}){let n=[],r=new Set;for(let i=0;i<O;i++){let{conversations:a,hasMore:o}=await k(e,i*D,t);for(let e of a)r.has(e.conversationId)||(r.add(e.conversationId),n.push(e));if(!o||a.length===0)break}return n}async function j(t,n=`active`,r=`lastMessageAt`){let i=n===`active`?{}:{archiveStatus:n},a={...i,conversationType:`background`},[o,s]=await Promise.allSettled([A(t,i),A(t,a)]);if(o.status===`rejected`)throw o.reason;let c=o.value,l=[];s.status===`fulfilled`?l=s.value:e(s.reason,{context:`fetchMergedConversationList.background(${n})`,level:`warning`,extra:{assistantId:t}});let u=new Set,d=[];for(let e of[...c,...l])u.has(e.conversationId)||(u.add(e.conversationId),d.push(e));return d.sort(E(r)),d}async function M(e){return[...await A(e)].sort(E(`lastMessageAt`))}async function N(e){return(await A(e,{conversationType:`background`})).filter(e=>!u(e)).sort(E(`lastMessageAt`))}async function P(e){return[...await A(e,{conversationType:`scheduled`})].sort(E(`lastMessageAt`))}async function F(e){return j(e,`archived`,`archivedAt`)}async function I(e){let t=await k(e,0);return{...t,conversations:[...t.conversations].sort(E(`lastMessageAt`))}}async function L(e){let t=await k(e,0,{conversationType:`background`});return{...t,conversations:t.conversations.filter(e=>!u(e)).sort(E(`lastMessageAt`))}}async function R(e){let t=await k(e,0,{conversationType:`scheduled`});return{...t,conversations:[...t.conversations].sort(E(`lastMessageAt`))}}var z=3e4;function B(e){return n({queryKey:x(e),queryFn:()=>M(e),staleTime:z})}function V(e){return n({queryKey:C(e),queryFn:()=>N(e),staleTime:z})}function H(e){return n({queryKey:w(e),queryFn:()=>P(e),staleTime:z})}function U(e){return n({queryKey:S(e),queryFn:()=>F(e),staleTime:z})}var W=[],G=[];function K(e,n=!0){let r=c(),i=t({...B(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending,isError:i.isError,error:i.error,refetch:()=>{i.refetch()}}}function q(e,n=!0){let r=c(),i=t({...V(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending}}function J(e,n=!0){let r=c(),i=t({...H(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending}}function Y(e,n=!0){let r=c(),i=t({...U(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending,isError:i.isError,error:i.error,refetch:()=>{i.refetch()}}}function X(e,n=!0){let r=c(),a=t({...i({path:{assistant_id:e??``}}),select:e=>e.groups,enabled:n&&!!e&&r,staleTime:3e4});return{conversationGroups:a.data??G,isLoading:a.isLoading}}export{d as _,J as a,u as b,b as c,I as d,R as f,f as g,v as h,K as i,x as l,w as m,q as n,S as o,T as p,X as r,C as s,Y as t,L as u,p as v,l as y};
1
+ import{t as e}from"./capture-error-B0wqOYKY.js";import{t}from"./useQuery-B45lW1Kk.js";import{t as n}from"./queryOptions-BtNi-_9H.js";import{J as r}from"./sdk.gen-Bew9wO5C.js";import{T as i}from"./react-query.gen-DdB0sQgj.js";import{n as a,r as o,t as s}from"./api-errors-CwAGZ-xJ.js";import{t as c}from"./use-is-org-ready-BoWiaeMc.js";function l(e){return e.surfacedAt==null?e.conversationType===`background`||e.conversationType===`scheduled`||e.groupId===`system:background`||e.groupId===`system:scheduled`:!1}function u(e){return e.conversationType===`scheduled`||e.groupId===`system:scheduled`}function d(e){return!e.hasUnseenLatestAssistantMessage&&!l(e)&&e.conversationId!=null&&e.latestAssistantMessageAt!=null}function f(e){return e.hasUnseenLatestAssistantMessage===!0&&!l(e)&&e.conversationId!=null}function p(e){return e.hasUnseenLatestAssistantMessage===!0&&!l(e)&&e.archivedAt==null}function m(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function h(e){return typeof e==`string`?e:void 0}function g(e){if(e)return{sourceChannel:e.sourceChannel,externalChatId:e.externalChatId,externalThreadId:e.externalThreadId,externalChatName:e.externalChatName,externalUserId:h(e.externalUserId),displayName:h(e.displayName),username:h(e.username),slackChannel:e.slackChannel?{channelId:e.slackChannel.channelId,name:e.slackChannel.name,link:e.slackChannel.link?.webUrl?{webUrl:e.slackChannel.link.webUrl}:void 0}:void 0,slackThread:e.slackThread?{channelId:e.slackThread.channelId,threadTs:e.slackThread.threadTs,link:e.slackThread.link?.appUrl||e.slackThread.link?.webUrl?{appUrl:e.slackThread.link.appUrl,webUrl:e.slackThread.link.webUrl}:void 0}:void 0}}function _(e){let t=e.assistantAttention,n=e.channelBinding?.sourceChannel??h(e.conversationOriginChannel);return{conversationId:e.id,title:e.title,createdAt:m(e.createdAt),lastMessageAt:m(e.lastMessageAt??e.updatedAt),hasUnseenLatestAssistantMessage:t?.hasUnseenLatestAssistantMessage,latestAssistantMessageAt:m(t?.latestAssistantMessageAt),lastSeenAssistantMessageAt:m(t?.lastSeenAssistantMessageAt),archivedAt:e.archivedAt,surfacedAt:m(e.surfacedAt),groupId:h(e.groupId),source:e.source,isPinned:e.isPinned,conversationType:e.conversationType,scheduleJobId:e.scheduleJobId,displayOrder:m(e.displayOrder),channelBinding:g(e.channelBinding),originChannel:n,isProcessing:e.isProcessing}}function v(e){return _(e)}var y=`conversation-list`;function b(e){return[y,e??``]}function x(e){return[y,e??``,`foreground`]}function S(e){return[y,e??``,`archived`]}function C(e){return[y,e??``,`background`]}function w(e){return[y,e??``,`scheduled`]}function T(e){return[y,e??``,`channel`]}function E(e){return(t,n)=>(n[e]??0)-(t[e]??0)}var D=50,O=200;async function k(e,t,n={}){let{conversationType:i,archiveStatus:c,originChannel:l}=n,{data:u,error:d,response:f}=await r({path:{assistant_id:e},query:{limit:D,offset:t,...i?{conversationType:i}:{},...c?{archiveStatus:c}:{},...l?{originChannel:l}:{}},throwOnError:!1});if(a(f,d,`Failed to list conversations.`),!f.ok){let e=o(d,f,`Failed to list conversations.`);throw new s(f.status,e)}return{conversations:(u?.conversations??[]).map(_),hasMore:u?.hasMore??!1}}async function A(e,t={}){let n=[],r=new Set;for(let i=0;i<O;i++){let{conversations:a,hasMore:o}=await k(e,i*D,t);for(let e of a)r.has(e.conversationId)||(r.add(e.conversationId),n.push(e));if(!o||a.length===0)break}return n}async function j(t,n=`active`,r=`lastMessageAt`){let i=n===`active`?{}:{archiveStatus:n},a={...i,conversationType:`background`},[o,s]=await Promise.allSettled([A(t,i),A(t,a)]);if(o.status===`rejected`)throw o.reason;let c=o.value,l=[];s.status===`fulfilled`?l=s.value:e(s.reason,{context:`fetchMergedConversationList.background(${n})`,level:`warning`,extra:{assistantId:t}});let u=new Set,d=[];for(let e of[...c,...l])u.has(e.conversationId)||(u.add(e.conversationId),d.push(e));return d.sort(E(r)),d}async function M(e){return[...await A(e)].sort(E(`lastMessageAt`))}async function N(e){return(await A(e,{conversationType:`background`})).filter(e=>!u(e)).sort(E(`lastMessageAt`))}async function P(e){return[...await A(e,{conversationType:`scheduled`})].sort(E(`lastMessageAt`))}async function F(e){return j(e,`archived`,`archivedAt`)}async function I(e){let t=await k(e,0);return{...t,conversations:[...t.conversations].sort(E(`lastMessageAt`))}}async function L(e){let t=await k(e,0,{conversationType:`background`});return{...t,conversations:t.conversations.filter(e=>!u(e)).sort(E(`lastMessageAt`))}}async function R(e){let t=await k(e,0,{conversationType:`scheduled`});return{...t,conversations:[...t.conversations].sort(E(`lastMessageAt`))}}var z=3e4;function B(e){return n({queryKey:x(e),queryFn:()=>M(e),staleTime:z})}function V(e){return n({queryKey:C(e),queryFn:()=>N(e),staleTime:z})}function H(e){return n({queryKey:w(e),queryFn:()=>P(e),staleTime:z})}function U(e){return n({queryKey:S(e),queryFn:()=>F(e),staleTime:z})}var W=[],G=[];function K(e,n=!0){let r=c(),i=t({...B(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending,isError:i.isError,error:i.error,refetch:()=>{i.refetch()}}}function q(e,n=!0){let r=c(),i=t({...V(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending}}function J(e,n=!0){let r=c(),i=t({...H(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending}}function Y(e,n=!0){let r=c(),i=t({...U(e),enabled:n&&!!e&&r});return{conversations:i.data??W,isLoading:i.isLoading,isPending:i.isPending,isError:i.isError,error:i.error,refetch:()=>{i.refetch()}}}function X(e,n=!0){let r=c(),a=t({...i({path:{assistant_id:e??``}}),select:e=>e.groups,enabled:n&&!!e&&r,staleTime:3e4});return{conversationGroups:a.data??G,isLoading:a.isLoading}}export{d as _,J as a,u as b,b as c,I as d,R as f,f as g,v as h,K as i,x as l,w as m,q as n,S as o,T as p,X as r,C as s,Y as t,L as u,p as v,l as y};