@vellumai/web 0.11.1-dev.202608032034.aebd2da → 0.11.1-dev.202608032226.351a4e2

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 (94) hide show
  1. package/dist/assets/{access-C1I5oond.js → access-yGcxATuu.js} +1 -1
  2. package/dist/assets/{account-page-e83ZZGt_.js → account-page-CKW2SSp9.js} +1 -1
  3. package/dist/assets/{acp-run-detail-panel-BP6MJVSE.js → acp-run-detail-panel-BCjFtA_f.js} +1 -1
  4. package/dist/assets/{activity-steps-panel-Dx07LouI.js → activity-steps-panel-Cz33jeyV.js} +1 -1
  5. package/dist/assets/{add-credits-modal-BaVh9z2u.js → add-credits-modal-B_MFASQE.js} +1 -1
  6. package/dist/assets/{ai-page-DX4POmeH.js → ai-page-ClE_nCMR.js} +1 -1
  7. package/dist/assets/{api-BtgSRGvM.js → api-C0nyw19F.js} +1 -1
  8. package/dist/assets/{assistant-status-panel-BHDN8PNU.js → assistant-status-panel-DeVTQvDz.js} +1 -1
  9. package/dist/assets/auth-store-D55YOXDj.js +2 -0
  10. package/dist/assets/{avatar-random-CqEafXlj.js → avatar-random-484pJyF3.js} +1 -1
  11. package/dist/assets/{background-task-actions-qqLh6rZn.js → background-task-actions-DwqH9oM6.js} +1 -1
  12. package/dist/assets/{background-task-detail-panel-DayPRasX.js → background-task-detail-panel-BeUtlnT5.js} +1 -1
  13. package/dist/assets/{billing-page-CFkU6BaX.js → billing-page-DzjIHoDX.js} +1 -1
  14. package/dist/assets/{build-state-B8Rq7nj1.js → build-state-qwijhEiY.js} +1 -1
  15. package/dist/assets/{channels-page-route-BTEfE4t7.js → channels-page-route-D4DLyfWJ.js} +1 -1
  16. package/dist/assets/{chat-markdown-message-COWyU40r.js → chat-markdown-message-CKi-NHzb.js} +1 -1
  17. package/dist/assets/{checkout-page-CYLWMWPt.js → checkout-page-kQVpLpf-.js} +1 -1
  18. package/dist/assets/{command-palette-window-page-C2HXDbfT.js → command-palette-window-page-DhSWYXbd.js} +1 -1
  19. package/dist/assets/{conversation-queries-Bd0Kbom7.js → conversation-queries-B31vm-Y1.js} +1 -1
  20. package/dist/assets/{credentials-page-DKSR_Zam.js → credentials-page-Cd9pgN5h.js} +1 -1
  21. package/dist/assets/debug-page-gflEI_1_.js +4 -0
  22. package/dist/assets/{developer-page-DrMRgzkc.js → developer-page-BJr5yx1q.js} +1 -1
  23. package/dist/assets/{emails-page-Cdc-tPPa.js → emails-page-D54SJ9Qn.js} +1 -1
  24. package/dist/assets/{first-run-scope-0nXVxenk.js → first-run-scope-BqaKW0iq.js} +1 -1
  25. package/dist/assets/{funnel-events-ZI_dMO-E.js → funnel-events-BhLPs4C-.js} +1 -1
  26. package/dist/assets/{general-page-CqU0mukt.js → general-page-DMmGkDTG.js} +1 -1
  27. package/dist/assets/{hatching-screen-5Ns-LED6.js → hatching-screen-CiBLq47u.js} +1 -1
  28. package/dist/assets/home-page-route-DVUNu3Ap.js +1 -0
  29. package/dist/assets/{hosting-screen-CoI_0LLl.js → hosting-screen-BooqGYaC.js} +1 -1
  30. package/dist/assets/{identity-page-route-cGL9xM0w.js → identity-page-route-XzcTS26G.js} +1 -1
  31. package/dist/assets/{index-Blkf3bPi.js → index-BfyUfISv.js} +1 -1
  32. package/dist/assets/{ingest-BsJxxXyc.js → ingest-cbIUCyYd.js} +1 -1
  33. package/dist/assets/{inspect-page-z3aYx0qD.js → inspect-page-Cnw7GS7E.js} +1 -1
  34. package/dist/assets/{integrations-page-DOXZuQr6.js → integrations-page-0cfyvYmp.js} +1 -1
  35. package/dist/assets/{local-runtime-upgrade-CZ4WOe4f.js → local-runtime-upgrade-omsL-NDw.js} +1 -1
  36. package/dist/assets/{login-flow-Dtp-3tNV.js → login-flow-DnBrnY_F.js} +1 -1
  37. package/dist/assets/{login-page-DDBFbAzk.js → login-page-Cehskc-T.js} +1 -1
  38. package/dist/assets/{logout-page-z3XOk2wX.js → logout-page-BR4VqeQ5.js} +1 -1
  39. package/dist/assets/{logs-layout-pcP2Ef6M.js → logs-layout-zl-EjgzZ.js} +1 -1
  40. package/dist/assets/{memory-page-route-DKgiS6HJ.js → memory-page-route-CNkRqdAT.js} +1 -1
  41. package/dist/assets/{memory-router-playground-page-DrUP3MCp.js → memory-router-playground-page-DYi59gfo.js} +1 -1
  42. package/dist/assets/{notifications-page-F6miCJy6.js → notifications-page-APw4Crk-.js} +1 -1
  43. package/dist/assets/{open-workspace-file-C05Tcrol.js → open-workspace-file-DYQnenip.js} +2 -2
  44. package/dist/assets/{personality-page-F2kfjY46.js → personality-page-DhANpmbS.js} +1 -1
  45. package/dist/assets/{plans-page-BzzAj_zc.js → plans-page-rcodAUMC.js} +1 -1
  46. package/dist/assets/{platform-login-notice-W6sDytqC.js → platform-login-notice-D3MegklO.js} +1 -1
  47. package/dist/assets/{platform-loopback-page-e78IsQAa.js → platform-loopback-page-C6FzXoWP.js} +1 -1
  48. package/dist/assets/{privacy-page-KgkmGZnk.js → privacy-page-CfrjCpeD.js} +1 -1
  49. package/dist/assets/{privacy-screen-DrOm_twh.js → privacy-screen-CeHf0PDN.js} +1 -1
  50. package/dist/assets/{provider-callback-page-D_BfdwXM.js → provider-callback-page-Dg3HfDxW.js} +1 -1
  51. package/dist/assets/{provider-signup-page-fnuIn644.js → provider-signup-page-CpLDQery.js} +1 -1
  52. package/dist/assets/{react-query.gen-BVTEjHsw.js → react-query.gen-BGUTzcTG.js} +1 -1
  53. package/dist/assets/{research-onboarding-route-CxJ2rZd3.js → research-onboarding-route-DVSAMyqq.js} +1 -1
  54. package/dist/assets/{retire-confirm-dialog-Dvr5YkiM.js → retire-confirm-dialog-DHhjDO0L.js} +1 -1
  55. package/dist/assets/{review-terms-screen-BKXTyNfJ.js → review-terms-screen-faC2X3qN.js} +1 -1
  56. package/dist/assets/{risk-DowO3Nts.js → risk-BuFJ18u_.js} +1 -1
  57. package/dist/assets/{routes-BA96rRl2.js → routes-CgzDcsx-.js} +5 -5
  58. package/dist/assets/{runtime-upgrade-banner-xb6RIZD3.js → runtime-upgrade-banner-Cbbxoksm.js} +1 -1
  59. package/dist/assets/{schedules-page-D8RM5kA8.js → schedules-page-DPX0uLzP.js} +1 -1
  60. package/dist/assets/{sdk.gen-DVW3wpbx.js → sdk.gen-DwcktL4E.js} +1 -1
  61. package/dist/assets/{select-assistant-screen-CybWc17g.js → select-assistant-screen-D4cryjd8.js} +1 -1
  62. package/dist/assets/{settings-layout-Brq3xFKP.js → settings-layout-P118CCPr.js} +1 -1
  63. package/dist/assets/{settings-navigation-SBGsJnnx.js → settings-navigation-BE7_pkHk.js} +1 -1
  64. package/dist/assets/{share-feedback-modal-C3UWQjP0.js → share-feedback-modal-CjeHBN-v.js} +1 -1
  65. package/dist/assets/{sidebar-tree-BzMiVAfn.js → sidebar-tree-BvzA_BiU.js} +1 -1
  66. package/dist/assets/{signup-page-0i-u2BC6.js → signup-page-CXdcmTsL.js} +1 -1
  67. package/dist/assets/{site-favicon-E6OyQgue.js → site-favicon-DQHtqmLO.js} +1 -1
  68. package/dist/assets/{skill-detail-page-BllApnzv.js → skill-detail-page-kBFir--k.js} +1 -1
  69. package/dist/assets/{subagent-detail-panel-LGjnuFoZ.js → subagent-detail-panel-7lkLfaL6.js} +1 -1
  70. package/dist/assets/{system-events-page-BPDpf3uE.js → system-events-page-BouGQKlX.js} +1 -1
  71. package/dist/assets/{tool-detail-panel-DYV838ez.js → tool-detail-panel-DzQts863.js} +1 -1
  72. package/dist/assets/{transcript-message-body-shared-C8IYfmO9.js → transcript-message-body-shared-BhvjN5HF.js} +1 -1
  73. package/dist/assets/{upgrade-cancel-page-DhTF9dJB.js → upgrade-cancel-page-BsarXnAm.js} +1 -1
  74. package/dist/assets/{upgrade-success-page-qO1uYGMN.js → upgrade-success-page-NS1EWjo2.js} +1 -1
  75. package/dist/assets/{use-assistant-capability-q3Hh4XrX.js → use-assistant-capability-CVGwRhaR.js} +1 -1
  76. package/dist/assets/{use-assistant-identity-details-Ca7AVxgW.js → use-assistant-identity-details-DwU_hccl.js} +1 -1
  77. package/dist/assets/{use-checkout-dismiss-refresh-zcJMFA3R.js → use-checkout-dismiss-refresh-DqjPrcE0.js} +1 -1
  78. package/dist/assets/{use-command-palette-sections-BSC2Wkt_.js → use-command-palette-sections-DF0iyH53.js} +1 -1
  79. package/dist/assets/{use-ios-app-nudge-CFV2lx5J.js → use-ios-app-nudge-rHuzm_cD.js} +1 -1
  80. package/dist/assets/{use-is-org-ready-B4ouZE2v.js → use-is-org-ready-_bcxY9zb.js} +1 -1
  81. package/dist/assets/{use-onboarding-login-HdAfPFX8.js → use-onboarding-login-DmZA-Mb2.js} +1 -1
  82. package/dist/assets/{use-platform-assistant-id-CIOuueCO.js → use-platform-assistant-id-DhMrx-n9.js} +1 -1
  83. package/dist/assets/{use-platform-gate-DEPyUO3c.js → use-platform-gate-Oc-w11de.js} +1 -1
  84. package/dist/assets/{use-return-to-short-circuit-BuTYXevi.js → use-return-to-short-circuit-2pD4HsK8.js} +1 -1
  85. package/dist/assets/{use-sticky-profiles-DKVJgOVG.js → use-sticky-profiles-B63YDPxX.js} +1 -1
  86. package/dist/assets/{use-subagent-card-data-BYZzHmRL.js → use-subagent-card-data-ByOqIUh5.js} +1 -1
  87. package/dist/assets/{voice-list-eMYmbFH9.js → voice-list-wJgVqrRh.js} +1 -1
  88. package/dist/assets/{voice-page-CADyxYSv.js → voice-page-_rmgVE3p.js} +1 -1
  89. package/dist/assets/{welcome-screen-BdAhfgTc.js → welcome-screen-Cq_y2fgM.js} +1 -1
  90. package/dist/index.html +33 -33
  91. package/package.json +1 -1
  92. package/dist/assets/auth-store-QpgWmI2t.js +0 -2
  93. package/dist/assets/debug-page-KfqBnSCL.js +0 -4
  94. package/dist/assets/home-page-route-Dzq2b7PG.js +0 -1
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r,t as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useQuery-Bz-fbQ-m.js";import{t as c}from"./useMutation-CXGTrp4W.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{t as u}from"./cn-CJf7MmLX.js";import{t as d}from"./typography-DEI9Ra9z.js";import{t as f}from"./card-DRIctGVs.js";import{_ as p,c as m,f as h,g,l as _,o as v,u as y,x as b}from"./use-save-twilio-credentials-C8A9E6P0.js";import{t as x}from"./chevron-down-B5A-0g8A.js";import{t as S}from"./circle-check-big-DSsDH5_6.js";import{t as C}from"./list-row-BYrmPIC4.js";import{o as w,r as T,t as E,u as D}from"./threshold-presets-B-gOdjC4.js";import{t as O}from"./message-square-zCNXaHYX.js";import{t as k}from"./search-DA3TmTuR.js";import{t as A}from"./notice-DCp7WO3L.js";import{N as j,P as M,a as N,i as P}from"./src-BAS7a2RG.js";import{t as F}from"./tag-D8NAGb0r.js";import{t as I}from"./input-C-GkeWCw.js";import{t as ee}from"./panel-item-DGs4s9r-.js";import{t as L}from"./confirm-dialog-DZX6LhLy.js";import{t as R}from"./dropdown-DswWMJhz.js";import{n as te,t as ne}from"./create-selectors-B-P03-8K.js";import{t as re}from"./assistant-identity-store-Dnh8WRHU.js";import{i as ie}from"./utils-CLGxXkUG.js";import{d as ae}from"./routes-Dwx_Ibh9.js";import{n as oe}from"./conversation-navigation-CYonSeT9.js";import{i as se,o as ce,r as z}from"./sdk.gen-DEFA-6EJ.js";import{t as le}from"./assistant-feature-flag-store-Ci_346FY.js";import{t as B}from"./public-asset-CD3ouSWU.js";import{t as ue}from"./use-active-assistant-id-AtGy8p_R.js";import{t as de}from"./slack-setup-wizard-dVkbEE6P.js";import{t as fe}from"./index-Blkf3bPi.js";import{t as pe}from"./detail-card-D-5EWmAS.js";import{n as me,t as he}from"./mobile-sidebar-drawer-DfeoKq1T.js";import{c as ge,i as _e,n as ve,o as ye,r as be,s as xe,t as Se}from"./use-invite-link-dialog-DGWKEId1.js";import{t as V}from"./mutation-error-CXV1BKlB.js";var H=e(t(),1),U=ne(te()(e=>({selectedAdapter:`slack`,selectAdapter:t=>e({selectedAdapter:t})}))),W={slack:{label:`Slack`,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`,hasTrustFloorControl:!1},telegram:{label:`Telegram`,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`,hasTrustFloorControl:!0,disconnectedPitch:e=>`Connect a Telegram bot so ${e} can send and receive messages on Telegram.`},phone:{label:`Phone Calling`,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`,hasTrustFloorControl:!0,disconnectedPitch:e=>`Connect your Twilio account so ${e} can make and answer phone calls.`}},G=l();function K({channels:e,selectedKey:t,onSelect:n}){return(0,G.jsx)(f.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,G.jsxs)(f.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,G.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:`Channels`}),(0,G.jsx)(`div`,{className:`flex flex-col gap-1`,children:e.map(e=>(0,G.jsx)(Ce,{channel:e,selected:e.key===t,onClick:()=>n(e.key)},e.key))})]})})}function Ce({channel:e,selected:t,onClick:n}){let r=e.status===`ready`,i=h(e.key),a=r?`Connected`:`Not connected`;return(0,G.jsx)(ee,{asChild:!0,active:t,label:`${i}, ${a}`,children:(0,G.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,G.jsx)(y,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:i}),(0,G.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,G.jsx)(F,{tone:r?`positive`:`neutral`,children:a})})]})})}function we({icon:e,title:t,description:n,action:r,className:i}){return(0,G.jsxs)(`div`,{className:u(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,G.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--surface-sunken)] text-[var(--content-tertiary)]`,children:e}):null,(0,G.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,G.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,G.jsx)(`div`,{className:`mt-1`,children:r}):null]})}function Te({assistantDisplayName:e,policy:t,saving:n=!1,loading:r=!1,error:i=!1,onChange:a}){let o=t??`trusted_contacts`,s=ge(e),c=ye.map(e=>({value:e,label:xe[e],tooltip:s[e]}));return(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsxs)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:[`Who can message `,e]}),r?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):i?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load this setting. Try reopening this page.`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{style:{maxWidth:280},children:(0,G.jsx)(R,{value:o,onChange:a,options:c,disabled:n,"aria-label":`Who can message ${e}`})}),(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:s[o]}),o===`trusted_contacts`?(0,G.jsxs)(A,{tone:`info`,className:`max-w-lg`,children:[`People you haven’t verified yet (even teammates in the same channel) can’t get through: `,e,` lets them know they need to be verified and notifies you. You can verify people ahead of time in Contacts.`]}):null]})]})}function Ee({address:e,pending:t,onDisconnect:r}){return(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(F,{tone:`positive`,leftIcon:(0,G.jsx)(S,{}),children:`Connected`}),e?(0,G.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,G.jsx)(`div`,{className:`ml-auto`,children:(0,G.jsx)(n,{type:`button`,variant:`danger`,onClick:r,disabled:!r||t,children:t?`Disconnecting…`:`Disconnect`})})]})}function De({children:e}){return(0,G.jsxs)(f.Root,{children:[(0,G.jsx)(f.Header,{children:(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`img`,{src:B(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,G.jsx)(d,{as:`span`,variant:`body-medium-default`,children:`Slack setup`})]})}),(0,G.jsx)(f.Body,{children:e})]})}E.map(e=>e.riskThreshold);var Oe=[`none`,`low`];function q(e){if(e!==void 0)return e===`none`?`none`:`low`}var J={none:{label:T(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:T(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:T(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:T(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},Y=[`trusted_contact`,`unverified_contact`,`unknown`];function ke(e,t){let n={};for(let r of e){if(r.selector.scope!==`channel`||r.selector.adapter!==t)continue;let e=r.selector.channelExternalId;e&&(r.contactType===`trusted_contact`||!(e in n))&&(n[e]=r.threshold)}return n}function X(e,t,n){return n===`channels`?e.selector.scope===`adapter`&&e.selector.adapter===t:e.selector.scope===`channel_type`&&e.selector.adapter===t&&e.selector.channelType===`dm`}function Ae(e,t,n){let r;for(let i of e)X(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var je=`__default__`;function Z({color:e}){return(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function Me({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let o=q(e??t??void 0),s=q(t??void 0)??null,c=Oe.map(e=>({value:e,label:J[e].label,icon:(0,G.jsx)(Z,{color:J[e].dotColor}),suffix:e===s?(0,G.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:`default`}):void 0,tooltip:J[e].sublabel}));return s===null&&c.unshift({value:je,label:`Default`,icon:(0,G.jsx)(Z,{color:`transparent`}),tooltip:`follows the default level`}),(0,G.jsx)(R,{value:o??``,onChange:e=>{e===je||e===s?i():r(e)},options:c,placeholder:`Default`,disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function Q(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function Ne(e){return e.filter(e=>Q(e)!==`dm`)}function Pe(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||Q(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function Fe(e){let t={public:0,private:0,dm:0};for(let n of e)t[Q(n)]+=1;return t}function Ie(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Le=[{value:null,label:`All`},{value:`public`,label:`Public`},{value:`private`,label:`Private`}],Re={public:b,private:D},ze=100,Be=new Set;function Ve({assistantDisplayName:e,slackHandle:t,channels:n,loading:r=!1,error:i=!1,tierOverrides:a,defaultTier:o=null,accessControlsSupported:s=!0,tierOverridesLoading:c=!1,tierOverridesError:l=!1,pendingChannelIds:f=Be,onTierChange:p,onTierReset:m}){let[h,g]=(0,H.useState)(``),[_,v]=(0,H.useState)(null),y=(0,H.useMemo)(()=>Ne(n??[]),[n]),x=(0,H.useMemo)(()=>Pe(y,h,_),[y,h,_]),S=(0,H.useMemo)(()=>Fe(y),[y]),C=t??`@${e}`;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,G.jsx)(d,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,G.jsxs)(G.Fragment,{children:[`Add with`,` `,(0,G.jsxs)(`code`,{className:`text-[color:var(--content-secondary)]`,children:[`/invite `,C]}),` `,`or remove with`,` `,(0,G.jsxs)(`code`,{className:`text-[color:var(--content-secondary)]`,children:[`/remove `,C]}),` `,`in that Slack channel. Only channels `,e,` is in appear here.`]})}),r?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):i?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load channels. Try reopening this page.`}):y.length===0?(0,G.jsx)(we,{icon:(0,G.jsx)(b,{className:`h-6 w-6`}),title:`No channels yet`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,G.jsx)(I,{type:`search`,value:h,onChange:e=>g(e.target.value),placeholder:`Search channels`,"aria-label":`Search channels`,leftIcon:(0,G.jsx)(k,{className:`h-4 w-4`}),fullWidth:!0})}),(0,G.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":`Filter channels by type`,children:Le.map(({value:e,label:t})=>{let n=_===e,r=e===null?y.length:S[e];return(0,G.jsxs)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>v(e),className:u(`inline-flex h-6 items-center rounded-full px-2.5 text-body-small-emphasised leading-none transition-colors`,n?`bg-[var(--content-default)] text-[var(--surface-base)]`:`bg-[var(--tag-bg-neutral)] text-[color:var(--content-secondary)] hover:text-[color:var(--content-default)]`),children:[t,` `,r]},e??`all`)})})]}),x.length===0?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:`No channels match.`}):x.length>ze?(0,G.jsx)(`div`,{className:`h-96`,children:(0,G.jsx)(N,{items:x,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,G.jsx)(He,{channel:t,pending:f.has(t.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[t.id],onTierChange:e=>p?.(t.id,e),onReset:()=>m?.(t.id)}),className:`h-full`})}):(0,G.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:x.map(e=>(0,G.jsx)(He,{channel:e,pending:f.has(e.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[e.id],onTierChange:t=>p?.(e.id,t),onReset:()=>m?.(e.id)},e.id))})]})]})}function He({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let l=Q(e);if(l===`dm`)return null;let u=Re[l],d=Ie(e),f=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,G.jsx)(C,{className:f,leading:(0,G.jsx)(u,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:d??void 0,trailing:(0,G.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,G.jsx)(Me,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":`Assistant Access in ${e.name}`})})}):(0,G.jsx)(C,{className:f,leading:(0,G.jsx)(u,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:d==null?void 0:(0,G.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:d})})}function Ue(e){return e===`none`?`Asks before every action, even a web search.`:`Asks before anything beyond looking things up and saving files in its own workspace.`}function We({defaultTier:e}){let t=q(e??void 0)??null;return(0,G.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,G.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...Oe].reverse().map(e=>{let n=J[e];return(0,G.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,G.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(Z,{color:n.dotColor}),(0,G.jsx)(d,{as:`span`,variant:`body-small-emphasised`,children:n.label}),e===t?(0,G.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:`· default`}):null]}),(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:Ue(e)})]},e)})})})}var Ge=[{bucket:`channels`,icon:b,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:O,title:`Direct messages`,description:`One-on-one DMs`}];function Ke({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:a,pendingBuckets:o,onBucketChange:s,onBucketReset:c}){return(0,G.jsxs)(f.Root,{children:[(0,G.jsx)(f.Header,{children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[`Default access`,(0,G.jsxs)(d,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:[`How much `,e,` does on its own, by conversation type. Individual channels can override this below, and`,` `,(0,G.jsx)(i,{to:ae.settings.privacy,className:`text-[var(--content-link)] underline hover:text-[var(--content-link-hover)]`,children:`Trust Rules`}),` `,`fine-tune when it asks.`]})]})}),(0,G.jsx)(f.Body,{className:`py-1`,children:Ge.map(({bucket:e,icon:i,title:l,description:u})=>{let d=e===`dm`?n?.channels??t:t;return(0,G.jsx)(C,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,G.jsx)(i,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:l,subtitle:u,trailing:(0,G.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,G.jsx)(Me,{tier:n?.[e],defaultTier:d,disabled:r||a||o.has(e),onTierChange:t=>s(e,t),onReset:()=>c(e),"aria-label":`Default Assistant Access for ${l}`})})},e)})}),(0,G.jsx)(f.Footer,{className:`p-0`,children:(0,G.jsx)(We,{defaultTier:t})})]})}var qe=`0.11.0`;function Je(){return ie(qe)}var Ye=new Set([404,501]);function Xe(e){let t=fe(e);return t!==void 0&&Ye.has(t)}function Ze(e,t,n){return Y.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function Qe(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function $e(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function et(e,t,n){let r=$e(e,t);return Y.map(e=>({selector:r,contactType:e,threshold:n}))}function tt({assistantId:e,adapter:t}){let n=o(),r=Je()&&!!e,i=(0,H.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,H.useMemo)(()=>p(i),[i]),l=(0,H.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),u=s({...g(i),enabled:r}),d=u.data?.cells,f=(0,H.useMemo)(()=>d?ke(d,t):void 0,[d,t]),m=(0,H.useMemo)(()=>d?{channels:Ae(d,t,`channels`),dm:Ae(d,t,`dm`)}:void 0,[d,t]),h=s({queryKey:l,queryFn:async()=>{let{data:e}=await ce({...i,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:r,retry:!1,staleTime:3e4}),_=(e,t)=>{let r=n.getQueryData(a),i=Date.now();return n.setQueryData(a,n=>({cells:[...(n?.cells??[]).filter(t=>!e(t)),...t.map(e=>({...e,updatedAt:i}))]})),{previous:r}},v=c({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all(Ze(t,e,n).map(e=>se({...i,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>_(n=>Qe(n,t,e),Ze(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),y=c({mutationFn:async({channelExternalId:e})=>{await Promise.all(Y.map(n=>z({...i,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>_(n=>Qe(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),b=c({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(et(t,e,n).map(e=>se({...i,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>_(n=>X(n,t,e),et(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to save the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:l})}}),x=c({mutationFn:async({bucket:e})=>{let n=$e(t,e);await Promise.all(Y.map(e=>z({...i,body:{selector:n,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>_(n=>X(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:l})}}),S=(0,H.useMemo)(()=>{let e=new Set;return v.isPending&&v.variables&&e.add(v.variables.channelExternalId),y.isPending&&y.variables&&e.add(y.variables.channelExternalId),e},[v.isPending,v.variables,y.isPending,y.variables]),C=(0,H.useMemo)(()=>{let e=new Set;return b.isPending&&b.variables&&e.add(b.variables.bucket),x.isPending&&x.variables&&e.add(x.variables.bucket),e},[b.isPending,b.variables,x.isPending,x.variables]);return!r||u.isError&&Xe(u.error)?{supported:!1,tierOverrides:void 0,defaultCellTier:void 0,bucketTiers:void 0,pendingChannelIds:new Set,pendingBuckets:new Set,isLoading:!1,isError:!1,onTierChange:void 0,onTierReset:void 0,onBucketChange:void 0,onBucketReset:void 0}:{supported:!0,tierOverrides:f,defaultCellTier:h.data,bucketTiers:m,pendingChannelIds:S,pendingBuckets:C,isLoading:u.isPending,isError:u.isError,onTierChange:(e,t)=>v.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{f?.[e]!==void 0&&y.mutate({channelExternalId:e})},onBucketChange:(e,t)=>b.mutate({bucket:e,tier:t}),onBucketReset:e=>{m?.[e]!==void 0&&x.mutate({bucket:e})}}}function nt({assistantId:e,assistantDisplayName:t,slackHandle:n}){let r=s({...v(e),enabled:!!e,select:e=>e.channels}),i=tt({assistantId:e,adapter:`slack`}),a=s({queryKey:[`thresholds`,e],queryFn:()=>w(e),enabled:i.supported&&!!e,staleTime:3e4}).data?.interactive??null,o=i.defaultCellTier===void 0?null:i.defaultCellTier??a,c=(0,G.jsx)(Ve,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:i.supported,defaultTier:o,channels:r.data,loading:r.isPending,error:r.isError,tierOverrides:i.tierOverrides,tierOverridesLoading:i.isLoading,tierOverridesError:i.isError,pendingChannelIds:i.pendingChannelIds,onTierChange:i.onTierChange,onTierReset:i.onTierReset});return!i.supported||!i.onBucketChange||!i.onBucketReset?(0,G.jsx)(f.Root,{noPadding:!0,clipContents:!0,children:c}):(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[i.isError?(0,G.jsx)(A,{tone:`error`,children:`Couldn’t load access settings. These controls stay disabled until they load. Try reopening this page.`}):null,(0,G.jsx)(Ke,{assistantName:t,globalDefaultTier:a,bucketTiers:i.bucketTiers,loading:i.isLoading,error:i.isError,pendingBuckets:i.pendingBuckets,onBucketChange:i.onBucketChange,onBucketReset:i.onBucketReset}),(0,G.jsx)(f.Root,{noPadding:!0,clipContents:!0,children:(0,G.jsx)(P.Root,{type:`single`,collapsible:!0,children:(0,G.jsxs)(P.Item,{value:`per-channel-overrides`,children:[(0,G.jsxs)(P.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,G.jsx)(d,{as:`span`,variant:`body-small-emphasised`,children:`Per-channel overrides`}),(0,G.jsx)(x,{"aria-hidden":`true`,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]}),(0,G.jsx)(P.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:c})]})})})]})}function rt({slackHandle:e,disconnectPending:t=!1,onDisconnect:r,children:i}){return(0,G.jsxs)(f.Root,{children:[(0,G.jsx)(f.Header,{children:(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`img`,{src:B(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,G.jsx)(d,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,G.jsx)(F,{tone:`positive`,leftIcon:(0,G.jsx)(S,{}),children:`Connected`}),(0,G.jsx)(`div`,{className:`ml-auto`,children:(0,G.jsx)(n,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||t,children:t?`Disconnecting…`:`Disconnect`})})]})}),(0,G.jsx)(f.Body,{children:i})]})}function it({threadMode:e,threadModePending:t=!1,onThreadModeChange:n}){return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsx)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:`Thread Behavior`}),(0,G.jsxs)(M,{value:e??`mention_then_thread`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":`Slack thread behavior`,children:[(0,G.jsx)(j,{value:`mention_only`,label:`Mentions only`,helperText:`Bot only responds when @mentioned.`}),(0,G.jsx)(j,{value:`mention_then_thread`,label:`Follow threads after first mention`,helperText:`After an @mention in a thread, bot listens to all subsequent replies.`})]})]})}function at({onSave:e}){let[t,r]=(0,H.useState)(``),[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(null),c=t.trim().length>0&&!i;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsx)(I,{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,G.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:o}):null,(0,G.jsx)(`div`,{children:(0,G.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 ot({onSave:e}){let[t,r]=(0,H.useState)(``),[i,a]=(0,H.useState)(``),[o,s]=(0,H.useState)(!1),[c,l]=(0,H.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsx)(I,{label:`Account SID`,type:`text`,value:t,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,G.jsx)(I,{label:`Auth Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`Twilio auth token`,disabled:o,fullWidth:!0}),c?(0,G.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,G.jsx)(`div`,{children:(0,G.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 st({channel:e,assistantId:t,assistantName:r,assistantDisplayName:i,pending:a,initialManualEntry:o=!1,onSetup:s,onDisconnect:c,onSaveTelegramToken:l,onSaveSlackConfig:u,slackSaveStatus:d,slackSaveError:f,slackThreadMode:p,slackThreadModePending:m=!1,onSlackThreadModeChange:g,onSaveTwilioCredentials:_,policy:v,policySaving:b=!1,policyLoading:x=!1,policyError:S=!1,onPolicyChange:C}){let w=e.status===`ready`,[T,E]=(0,H.useState)(o);if(e.key===`slack`)return(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[w?(0,G.jsx)(rt,{slackHandle:e.address,disconnectPending:a,onDisconnect:c,children:(0,G.jsx)(it,{threadMode:p,threadModePending:m,onThreadModeChange:g})}):(0,G.jsx)(De,{children:(0,G.jsx)(de,{assistantName:r,onSave:u,saveStatus:d,saveError:f})}),w?(0,G.jsx)(nt,{assistantId:t,assistantDisplayName:i,slackHandle:e.address}):null]});let D=W[e.key];return(0,G.jsx)(`div`,{className:`flex flex-col gap-4`,children:w?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ee,{address:e.address,pending:a,onDisconnect:c}),D.hasTrustFloorControl&&C?(0,G.jsx)(Te,{assistantDisplayName:i,policy:v,saving:b,loading:x,error:S,onChange:C}):null]}):T?e.key===`telegram`?(0,G.jsx)(at,{onSave:l}):(0,G.jsx)(ot,{onSave:_}):(0,G.jsx)(we,{icon:(0,G.jsx)(y,{channelId:e.key,className:`h-6 w-6`}),title:`${h(e.key)} isn't connected`,description:D.disconnectedPitch?.(i),action:(0,G.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,G.jsx)(n,{type:`button`,variant:`outlined`,onClick:s,disabled:!s||a,children:a?`Opening…`:`Set up`}),(0,G.jsx)(n,{type:`button`,variant:`link`,onClick:()=>E(!0),children:`or connect manually`})]})})})}var $={no_one:{title:`Block all messages?`,message:`Setting this channel to “No one” hard-denies every inbound message, including messages from you.
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r,t as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useQuery-Bz-fbQ-m.js";import{t as c}from"./useMutation-CXGTrp4W.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{t as u}from"./cn-CJf7MmLX.js";import{t as d}from"./typography-DEI9Ra9z.js";import{t as f}from"./card-DRIctGVs.js";import{_ as p,c as m,f as h,g,l as _,o as v,u as y,x as b}from"./use-save-twilio-credentials-C8A9E6P0.js";import{t as x}from"./chevron-down-B5A-0g8A.js";import{t as S}from"./circle-check-big-DSsDH5_6.js";import{t as C}from"./list-row-BYrmPIC4.js";import{o as w,r as T,t as E,u as D}from"./threshold-presets-B-gOdjC4.js";import{t as O}from"./message-square-zCNXaHYX.js";import{t as k}from"./search-DA3TmTuR.js";import{t as A}from"./notice-DCp7WO3L.js";import{N as j,P as M,a as N,i as P}from"./src-BAS7a2RG.js";import{t as F}from"./tag-D8NAGb0r.js";import{t as I}from"./input-C-GkeWCw.js";import{t as ee}from"./panel-item-DGs4s9r-.js";import{t as L}from"./confirm-dialog-DZX6LhLy.js";import{t as R}from"./dropdown-DswWMJhz.js";import{n as te,t as ne}from"./create-selectors-B-P03-8K.js";import{t as re}from"./assistant-identity-store-Dnh8WRHU.js";import{i as ie}from"./utils-CLGxXkUG.js";import{d as ae}from"./routes-Dwx_Ibh9.js";import{n as oe}from"./conversation-navigation-CYonSeT9.js";import{i as se,o as ce,r as z}from"./sdk.gen-DEFA-6EJ.js";import{t as le}from"./assistant-feature-flag-store-Ci_346FY.js";import{t as B}from"./public-asset-CD3ouSWU.js";import{t as ue}from"./use-active-assistant-id-AtGy8p_R.js";import{t as de}from"./slack-setup-wizard-dVkbEE6P.js";import{t as fe}from"./index-BfyUfISv.js";import{t as pe}from"./detail-card-D-5EWmAS.js";import{n as me,t as he}from"./mobile-sidebar-drawer-DfeoKq1T.js";import{c as ge,i as _e,n as ve,o as ye,r as be,s as xe,t as Se}from"./use-invite-link-dialog-DGWKEId1.js";import{t as V}from"./mutation-error-CXV1BKlB.js";var H=e(t(),1),U=ne(te()(e=>({selectedAdapter:`slack`,selectAdapter:t=>e({selectedAdapter:t})}))),W={slack:{label:`Slack`,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`,hasTrustFloorControl:!1},telegram:{label:`Telegram`,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`,hasTrustFloorControl:!0,disconnectedPitch:e=>`Connect a Telegram bot so ${e} can send and receive messages on Telegram.`},phone:{label:`Phone Calling`,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`,hasTrustFloorControl:!0,disconnectedPitch:e=>`Connect your Twilio account so ${e} can make and answer phone calls.`}},G=l();function K({channels:e,selectedKey:t,onSelect:n}){return(0,G.jsx)(f.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,G.jsxs)(f.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,G.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:`Channels`}),(0,G.jsx)(`div`,{className:`flex flex-col gap-1`,children:e.map(e=>(0,G.jsx)(Ce,{channel:e,selected:e.key===t,onClick:()=>n(e.key)},e.key))})]})})}function Ce({channel:e,selected:t,onClick:n}){let r=e.status===`ready`,i=h(e.key),a=r?`Connected`:`Not connected`;return(0,G.jsx)(ee,{asChild:!0,active:t,label:`${i}, ${a}`,children:(0,G.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,G.jsx)(y,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:i}),(0,G.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,G.jsx)(F,{tone:r?`positive`:`neutral`,children:a})})]})})}function we({icon:e,title:t,description:n,action:r,className:i}){return(0,G.jsxs)(`div`,{className:u(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,G.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--surface-sunken)] text-[var(--content-tertiary)]`,children:e}):null,(0,G.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,G.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,G.jsx)(`div`,{className:`mt-1`,children:r}):null]})}function Te({assistantDisplayName:e,policy:t,saving:n=!1,loading:r=!1,error:i=!1,onChange:a}){let o=t??`trusted_contacts`,s=ge(e),c=ye.map(e=>({value:e,label:xe[e],tooltip:s[e]}));return(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsxs)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:[`Who can message `,e]}),r?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):i?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load this setting. Try reopening this page.`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{style:{maxWidth:280},children:(0,G.jsx)(R,{value:o,onChange:a,options:c,disabled:n,"aria-label":`Who can message ${e}`})}),(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:s[o]}),o===`trusted_contacts`?(0,G.jsxs)(A,{tone:`info`,className:`max-w-lg`,children:[`People you haven’t verified yet (even teammates in the same channel) can’t get through: `,e,` lets them know they need to be verified and notifies you. You can verify people ahead of time in Contacts.`]}):null]})]})}function Ee({address:e,pending:t,onDisconnect:r}){return(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(F,{tone:`positive`,leftIcon:(0,G.jsx)(S,{}),children:`Connected`}),e?(0,G.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,G.jsx)(`div`,{className:`ml-auto`,children:(0,G.jsx)(n,{type:`button`,variant:`danger`,onClick:r,disabled:!r||t,children:t?`Disconnecting…`:`Disconnect`})})]})}function De({children:e}){return(0,G.jsxs)(f.Root,{children:[(0,G.jsx)(f.Header,{children:(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`img`,{src:B(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,G.jsx)(d,{as:`span`,variant:`body-medium-default`,children:`Slack setup`})]})}),(0,G.jsx)(f.Body,{children:e})]})}E.map(e=>e.riskThreshold);var Oe=[`none`,`low`];function q(e){if(e!==void 0)return e===`none`?`none`:`low`}var J={none:{label:T(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:T(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:T(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:T(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},Y=[`trusted_contact`,`unverified_contact`,`unknown`];function ke(e,t){let n={};for(let r of e){if(r.selector.scope!==`channel`||r.selector.adapter!==t)continue;let e=r.selector.channelExternalId;e&&(r.contactType===`trusted_contact`||!(e in n))&&(n[e]=r.threshold)}return n}function X(e,t,n){return n===`channels`?e.selector.scope===`adapter`&&e.selector.adapter===t:e.selector.scope===`channel_type`&&e.selector.adapter===t&&e.selector.channelType===`dm`}function Ae(e,t,n){let r;for(let i of e)X(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var je=`__default__`;function Z({color:e}){return(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function Me({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let o=q(e??t??void 0),s=q(t??void 0)??null,c=Oe.map(e=>({value:e,label:J[e].label,icon:(0,G.jsx)(Z,{color:J[e].dotColor}),suffix:e===s?(0,G.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:`default`}):void 0,tooltip:J[e].sublabel}));return s===null&&c.unshift({value:je,label:`Default`,icon:(0,G.jsx)(Z,{color:`transparent`}),tooltip:`follows the default level`}),(0,G.jsx)(R,{value:o??``,onChange:e=>{e===je||e===s?i():r(e)},options:c,placeholder:`Default`,disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function Q(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function Ne(e){return e.filter(e=>Q(e)!==`dm`)}function Pe(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||Q(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function Fe(e){let t={public:0,private:0,dm:0};for(let n of e)t[Q(n)]+=1;return t}function Ie(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Le=[{value:null,label:`All`},{value:`public`,label:`Public`},{value:`private`,label:`Private`}],Re={public:b,private:D},ze=100,Be=new Set;function Ve({assistantDisplayName:e,slackHandle:t,channels:n,loading:r=!1,error:i=!1,tierOverrides:a,defaultTier:o=null,accessControlsSupported:s=!0,tierOverridesLoading:c=!1,tierOverridesError:l=!1,pendingChannelIds:f=Be,onTierChange:p,onTierReset:m}){let[h,g]=(0,H.useState)(``),[_,v]=(0,H.useState)(null),y=(0,H.useMemo)(()=>Ne(n??[]),[n]),x=(0,H.useMemo)(()=>Pe(y,h,_),[y,h,_]),S=(0,H.useMemo)(()=>Fe(y),[y]),C=t??`@${e}`;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,G.jsx)(d,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,G.jsxs)(G.Fragment,{children:[`Add with`,` `,(0,G.jsxs)(`code`,{className:`text-[color:var(--content-secondary)]`,children:[`/invite `,C]}),` `,`or remove with`,` `,(0,G.jsxs)(`code`,{className:`text-[color:var(--content-secondary)]`,children:[`/remove `,C]}),` `,`in that Slack channel. Only channels `,e,` is in appear here.`]})}),r?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):i?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load channels. Try reopening this page.`}):y.length===0?(0,G.jsx)(we,{icon:(0,G.jsx)(b,{className:`h-6 w-6`}),title:`No channels yet`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,G.jsx)(I,{type:`search`,value:h,onChange:e=>g(e.target.value),placeholder:`Search channels`,"aria-label":`Search channels`,leftIcon:(0,G.jsx)(k,{className:`h-4 w-4`}),fullWidth:!0})}),(0,G.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":`Filter channels by type`,children:Le.map(({value:e,label:t})=>{let n=_===e,r=e===null?y.length:S[e];return(0,G.jsxs)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>v(e),className:u(`inline-flex h-6 items-center rounded-full px-2.5 text-body-small-emphasised leading-none transition-colors`,n?`bg-[var(--content-default)] text-[var(--surface-base)]`:`bg-[var(--tag-bg-neutral)] text-[color:var(--content-secondary)] hover:text-[color:var(--content-default)]`),children:[t,` `,r]},e??`all`)})})]}),x.length===0?(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:`No channels match.`}):x.length>ze?(0,G.jsx)(`div`,{className:`h-96`,children:(0,G.jsx)(N,{items:x,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,G.jsx)(He,{channel:t,pending:f.has(t.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[t.id],onTierChange:e=>p?.(t.id,e),onReset:()=>m?.(t.id)}),className:`h-full`})}):(0,G.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:x.map(e=>(0,G.jsx)(He,{channel:e,pending:f.has(e.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[e.id],onTierChange:t=>p?.(e.id,t),onReset:()=>m?.(e.id)},e.id))})]})]})}function He({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let l=Q(e);if(l===`dm`)return null;let u=Re[l],d=Ie(e),f=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,G.jsx)(C,{className:f,leading:(0,G.jsx)(u,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:d??void 0,trailing:(0,G.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,G.jsx)(Me,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":`Assistant Access in ${e.name}`})})}):(0,G.jsx)(C,{className:f,leading:(0,G.jsx)(u,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:d==null?void 0:(0,G.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:d})})}function Ue(e){return e===`none`?`Asks before every action, even a web search.`:`Asks before anything beyond looking things up and saving files in its own workspace.`}function We({defaultTier:e}){let t=q(e??void 0)??null;return(0,G.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,G.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...Oe].reverse().map(e=>{let n=J[e];return(0,G.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,G.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(Z,{color:n.dotColor}),(0,G.jsx)(d,{as:`span`,variant:`body-small-emphasised`,children:n.label}),e===t?(0,G.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:`· default`}):null]}),(0,G.jsx)(d,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:Ue(e)})]},e)})})})}var Ge=[{bucket:`channels`,icon:b,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:O,title:`Direct messages`,description:`One-on-one DMs`}];function Ke({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:a,pendingBuckets:o,onBucketChange:s,onBucketReset:c}){return(0,G.jsxs)(f.Root,{children:[(0,G.jsx)(f.Header,{children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[`Default access`,(0,G.jsxs)(d,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:[`How much `,e,` does on its own, by conversation type. Individual channels can override this below, and`,` `,(0,G.jsx)(i,{to:ae.settings.privacy,className:`text-[var(--content-link)] underline hover:text-[var(--content-link-hover)]`,children:`Trust Rules`}),` `,`fine-tune when it asks.`]})]})}),(0,G.jsx)(f.Body,{className:`py-1`,children:Ge.map(({bucket:e,icon:i,title:l,description:u})=>{let d=e===`dm`?n?.channels??t:t;return(0,G.jsx)(C,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,G.jsx)(i,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:l,subtitle:u,trailing:(0,G.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,G.jsx)(Me,{tier:n?.[e],defaultTier:d,disabled:r||a||o.has(e),onTierChange:t=>s(e,t),onReset:()=>c(e),"aria-label":`Default Assistant Access for ${l}`})})},e)})}),(0,G.jsx)(f.Footer,{className:`p-0`,children:(0,G.jsx)(We,{defaultTier:t})})]})}var qe=`0.11.0`;function Je(){return ie(qe)}var Ye=new Set([404,501]);function Xe(e){let t=fe(e);return t!==void 0&&Ye.has(t)}function Ze(e,t,n){return Y.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function Qe(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function $e(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function et(e,t,n){let r=$e(e,t);return Y.map(e=>({selector:r,contactType:e,threshold:n}))}function tt({assistantId:e,adapter:t}){let n=o(),r=Je()&&!!e,i=(0,H.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,H.useMemo)(()=>p(i),[i]),l=(0,H.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),u=s({...g(i),enabled:r}),d=u.data?.cells,f=(0,H.useMemo)(()=>d?ke(d,t):void 0,[d,t]),m=(0,H.useMemo)(()=>d?{channels:Ae(d,t,`channels`),dm:Ae(d,t,`dm`)}:void 0,[d,t]),h=s({queryKey:l,queryFn:async()=>{let{data:e}=await ce({...i,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:r,retry:!1,staleTime:3e4}),_=(e,t)=>{let r=n.getQueryData(a),i=Date.now();return n.setQueryData(a,n=>({cells:[...(n?.cells??[]).filter(t=>!e(t)),...t.map(e=>({...e,updatedAt:i}))]})),{previous:r}},v=c({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all(Ze(t,e,n).map(e=>se({...i,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>_(n=>Qe(n,t,e),Ze(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),y=c({mutationFn:async({channelExternalId:e})=>{await Promise.all(Y.map(n=>z({...i,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>_(n=>Qe(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),b=c({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(et(t,e,n).map(e=>se({...i,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>_(n=>X(n,t,e),et(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to save the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:l})}}),x=c({mutationFn:async({bucket:e})=>{let n=$e(t,e);await Promise.all(Y.map(e=>z({...i,body:{selector:n,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>_(n=>X(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),V(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:l})}}),S=(0,H.useMemo)(()=>{let e=new Set;return v.isPending&&v.variables&&e.add(v.variables.channelExternalId),y.isPending&&y.variables&&e.add(y.variables.channelExternalId),e},[v.isPending,v.variables,y.isPending,y.variables]),C=(0,H.useMemo)(()=>{let e=new Set;return b.isPending&&b.variables&&e.add(b.variables.bucket),x.isPending&&x.variables&&e.add(x.variables.bucket),e},[b.isPending,b.variables,x.isPending,x.variables]);return!r||u.isError&&Xe(u.error)?{supported:!1,tierOverrides:void 0,defaultCellTier:void 0,bucketTiers:void 0,pendingChannelIds:new Set,pendingBuckets:new Set,isLoading:!1,isError:!1,onTierChange:void 0,onTierReset:void 0,onBucketChange:void 0,onBucketReset:void 0}:{supported:!0,tierOverrides:f,defaultCellTier:h.data,bucketTiers:m,pendingChannelIds:S,pendingBuckets:C,isLoading:u.isPending,isError:u.isError,onTierChange:(e,t)=>v.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{f?.[e]!==void 0&&y.mutate({channelExternalId:e})},onBucketChange:(e,t)=>b.mutate({bucket:e,tier:t}),onBucketReset:e=>{m?.[e]!==void 0&&x.mutate({bucket:e})}}}function nt({assistantId:e,assistantDisplayName:t,slackHandle:n}){let r=s({...v(e),enabled:!!e,select:e=>e.channels}),i=tt({assistantId:e,adapter:`slack`}),a=s({queryKey:[`thresholds`,e],queryFn:()=>w(e),enabled:i.supported&&!!e,staleTime:3e4}).data?.interactive??null,o=i.defaultCellTier===void 0?null:i.defaultCellTier??a,c=(0,G.jsx)(Ve,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:i.supported,defaultTier:o,channels:r.data,loading:r.isPending,error:r.isError,tierOverrides:i.tierOverrides,tierOverridesLoading:i.isLoading,tierOverridesError:i.isError,pendingChannelIds:i.pendingChannelIds,onTierChange:i.onTierChange,onTierReset:i.onTierReset});return!i.supported||!i.onBucketChange||!i.onBucketReset?(0,G.jsx)(f.Root,{noPadding:!0,clipContents:!0,children:c}):(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[i.isError?(0,G.jsx)(A,{tone:`error`,children:`Couldn’t load access settings. These controls stay disabled until they load. Try reopening this page.`}):null,(0,G.jsx)(Ke,{assistantName:t,globalDefaultTier:a,bucketTiers:i.bucketTiers,loading:i.isLoading,error:i.isError,pendingBuckets:i.pendingBuckets,onBucketChange:i.onBucketChange,onBucketReset:i.onBucketReset}),(0,G.jsx)(f.Root,{noPadding:!0,clipContents:!0,children:(0,G.jsx)(P.Root,{type:`single`,collapsible:!0,children:(0,G.jsxs)(P.Item,{value:`per-channel-overrides`,children:[(0,G.jsxs)(P.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,G.jsx)(d,{as:`span`,variant:`body-small-emphasised`,children:`Per-channel overrides`}),(0,G.jsx)(x,{"aria-hidden":`true`,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]}),(0,G.jsx)(P.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:c})]})})})]})}function rt({slackHandle:e,disconnectPending:t=!1,onDisconnect:r,children:i}){return(0,G.jsxs)(f.Root,{children:[(0,G.jsx)(f.Header,{children:(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`img`,{src:B(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,G.jsx)(d,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,G.jsx)(F,{tone:`positive`,leftIcon:(0,G.jsx)(S,{}),children:`Connected`}),(0,G.jsx)(`div`,{className:`ml-auto`,children:(0,G.jsx)(n,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||t,children:t?`Disconnecting…`:`Disconnect`})})]})}),(0,G.jsx)(f.Body,{children:i})]})}function it({threadMode:e,threadModePending:t=!1,onThreadModeChange:n}){return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsx)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:`Thread Behavior`}),(0,G.jsxs)(M,{value:e??`mention_then_thread`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":`Slack thread behavior`,children:[(0,G.jsx)(j,{value:`mention_only`,label:`Mentions only`,helperText:`Bot only responds when @mentioned.`}),(0,G.jsx)(j,{value:`mention_then_thread`,label:`Follow threads after first mention`,helperText:`After an @mention in a thread, bot listens to all subsequent replies.`})]})]})}function at({onSave:e}){let[t,r]=(0,H.useState)(``),[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(null),c=t.trim().length>0&&!i;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsx)(I,{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,G.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:o}):null,(0,G.jsx)(`div`,{children:(0,G.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 ot({onSave:e}){let[t,r]=(0,H.useState)(``),[i,a]=(0,H.useState)(``),[o,s]=(0,H.useState)(!1),[c,l]=(0,H.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsx)(I,{label:`Account SID`,type:`text`,value:t,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,G.jsx)(I,{label:`Auth Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`Twilio auth token`,disabled:o,fullWidth:!0}),c?(0,G.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,G.jsx)(`div`,{children:(0,G.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 st({channel:e,assistantId:t,assistantName:r,assistantDisplayName:i,pending:a,initialManualEntry:o=!1,onSetup:s,onDisconnect:c,onSaveTelegramToken:l,onSaveSlackConfig:u,slackSaveStatus:d,slackSaveError:f,slackThreadMode:p,slackThreadModePending:m=!1,onSlackThreadModeChange:g,onSaveTwilioCredentials:_,policy:v,policySaving:b=!1,policyLoading:x=!1,policyError:S=!1,onPolicyChange:C}){let w=e.status===`ready`,[T,E]=(0,H.useState)(o);if(e.key===`slack`)return(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[w?(0,G.jsx)(rt,{slackHandle:e.address,disconnectPending:a,onDisconnect:c,children:(0,G.jsx)(it,{threadMode:p,threadModePending:m,onThreadModeChange:g})}):(0,G.jsx)(De,{children:(0,G.jsx)(de,{assistantName:r,onSave:u,saveStatus:d,saveError:f})}),w?(0,G.jsx)(nt,{assistantId:t,assistantDisplayName:i,slackHandle:e.address}):null]});let D=W[e.key];return(0,G.jsx)(`div`,{className:`flex flex-col gap-4`,children:w?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ee,{address:e.address,pending:a,onDisconnect:c}),D.hasTrustFloorControl&&C?(0,G.jsx)(Te,{assistantDisplayName:i,policy:v,saving:b,loading:x,error:S,onChange:C}):null]}):T?e.key===`telegram`?(0,G.jsx)(at,{onSave:l}):(0,G.jsx)(ot,{onSave:_}):(0,G.jsx)(we,{icon:(0,G.jsx)(y,{channelId:e.key,className:`h-6 w-6`}),title:`${h(e.key)} isn't connected`,description:D.disconnectedPitch?.(i),action:(0,G.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,G.jsx)(n,{type:`button`,variant:`outlined`,onClick:s,disabled:!s||a,children:a?`Opening…`:`Set up`}),(0,G.jsx)(n,{type:`button`,variant:`link`,onClick:()=>E(!0),children:`or connect manually`})]})})})}var $={no_one:{title:`Block all messages?`,message:`Setting this channel to “No one” hard-denies every inbound message, including messages from you.
2
2
 
3
3
  You can reverse this at any time.`,confirmLabel:`Block all`,destructive:!0},any_contact:{title:`Allow any contact?`,message:`“Any contact” admits every matched contact in this channel (including pending, unverified ones), not just your verified contacts.
4
4
 
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-file-BV4pxj6M.js","assets/chunk-jRWAZmH_.js","assets/preload-helper-Cv2QeVDK.js","assets/is-electron-7N7iyz1y.js","assets/dist-D3eaKkac2.js","assets/pdf-8fO1Wz7e.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-FWzaVb8P.js";import{t as n}from"./react-BFJW0bSv.js";import{F as r,t as i}from"./button-Dy5001j6.js";import{t as a}from"./preload-helper-Cv2QeVDK.js";import{t as o}from"./useQuery-Bz-fbQ-m.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./typography-DEI9Ra9z.js";import{t as l}from"./check-sC49_hjU.js";import{t as u}from"./chevron-left-CytMddTB.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{o as f}from"./list-row-BYrmPIC4.js";import{t as p}from"./download-CywcQLB2.js";import{t as m}from"./eye-off-fuOP4Lij.js";import{t as h}from"./eye-DTyDWiqu.js";import{n as g,r as _}from"./workspace-tree-query-CqcOBNKw.js";import{t as v}from"./key-round-CSc3w5ka.js";import{t as y}from"./loader-circle-BzJ2kz3F.js";import{t as b}from"./x-DuBvjmAE.js";import{_ as x,c as S,s as C}from"./src-BAS7a2RG.js";import{n as w}from"./toast-DR7D7Uma.js";import{n as T,t as E}from"./file-markdown-DBLxtb0M.js";import{n as D}from"./resolved-assistants-store-BhBxUDAA.js";import{dt as ee,l as O}from"./sdk.gen-BySz4QYj.js";import{t as k}from"./dist-D3eaKkac2.js";import{r as A}from"./use-is-org-ready-B4ouZE2v.js";import{n as j}from"./browser-BaaiMPkj.js";import{t as M}from"./haptics-BX7G67rP.js";import{t as te}from"./edge-swipe-arbiter-store-D9XJTxJJ.js";import{t as N}from"./copy-to-clipboard-DaTa8Tbi.js";import{t as ne}from"./native-anchor-DFzPWn3s.js";var P=e(n(),1),re=e(r(),1),F=s(),ie=`width=500,height=600`;function I(e){if(!e)return null;let t;try{let n=typeof window>`u`?`http://localhost`:window.location.origin;t=new URL(e,n)}catch{return null}return t.protocol!==`https:`&&t.protocol!==`http:`?null:t}function L(e){let t=I(e);if(!t)return!1;let n=t.pathname.toLowerCase();return t.searchParams.get(`response_type`)===`code`&&t.searchParams.has(`client_id`)&&t.searchParams.has(`redirect_uri`)||t.searchParams.has(`client_id`)&&t.searchParams.has(`redirect_uri`)&&/oauth|authorize|auth/.test(n)}function ae(e){if(typeof window>`u`)return null;let t=I(e);return!t||t.origin!==window.location.origin?null:`${t.pathname}${t.search}${t.hash}`}function R(e){return I(e)?.href??null}function z(e){if(!L(e))return!1;if(k.isNativePlatform()){let t=R(e);return t?(j(t),!0):!1}let t=window.open(e,`_blank`,ie);return t===null?!1:(t.focus(),!0)}function B(e){return z(e)}function V(e){if(z(e))return!0;let t=window.open(e,`_blank`);return t===null?!1:(t.focus(),!0)}function oe(e,t){let n=ae(e);if(n)return t.push(n),{kind:`routed`};let r=R(e);return r?t.isNative?(j(r),{kind:`opened`}):V(r)?{kind:`opened`}:{kind:`blocked`,url:r}:{kind:`invalid`}}async function H(e,t){if(!t||t.startsWith(`rehydrated:`))return null;try{let{data:n,error:r}=await O({path:{assistant_id:e,id:t},parseAs:`blob`,throwOnError:!1});return!r&&n instanceof Blob?n:null}catch{return null}}async function se(e,t){let{saveFile:n}=await a(async()=>{let{saveFile:e}=await import(`./native-file-BV4pxj6M.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3,4]));if(t){let r=await H(t,e.id);if(r){await n(r,e.filename);return}}e.previewUrl&&await n(e.previewUrl,e.filename)}function U(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n>=10||r===0?Math.round(n).toString():n.toFixed(1)} ${t[r]}`}function ce(e,t){let n=(e||``).toLowerCase(),r=t.split(`.`).pop()?.toLowerCase()??``;return n.startsWith(`image/`)?`image`:n.startsWith(`video/`)?`video`:n.startsWith(`audio/`)?`audio`:n===`application/pdf`||r===`pdf`?`pdf`:n===`application/zip`||n===`application/x-tar`||n===`application/gzip`||[`zip`,`tar`,`gz`,`tgz`,`rar`,`7z`].includes(r)?`archive`:n===`text/csv`||n===`application/vnd.ms-excel`||n===`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`||[`csv`,`xlsx`,`xls`,`numbers`].includes(r)?`spreadsheet`:`ts.tsx.js.jsx.py.rb.go.rs.java.kt.swift.c.cc.cpp.h.hpp.sh.bash.zsh.html.css.scss.json.yaml.yml.toml.xml`.split(`.`).includes(r)?`code`:n===`application/msword`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`||[`doc`,`docx`,`pages`].includes(r)?`document`:n.startsWith(`text/`)||[`txt`,`md`,`rtf`].includes(r)?`text`:`file`}function W(e){let t=e.replace(/\s/g,``),n=t.endsWith(`==`)?2:+!!t.endsWith(`=`);return Math.max(0,Math.floor(t.length*3/4)-n)}function G(e){let t=e.match(/;base64,(.*)$/);if(!t?.[1])return null;let n=atob(t[1]),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function le(e,t=28){if(e.length<=t)return e;let n=Math.max(4,Math.floor((t-1)/2));return`${e.slice(0,n)}…${e.slice(e.length-n)}`}var ue=1.5,de=20,fe=!1;async function pe(){let e=await a(()=>import(`./pdf-8fO1Wz7e.js`),__vite__mapDeps([5,2]));return fe||=(e.GlobalWorkerOptions.workerSrc=`https://cdn.jsdelivr.net/npm/pdfjs-dist@${e.version}/legacy/build/pdf.worker.min.mjs`,!0),e}function me({url:e,className:t}){let n=(0,P.useRef)(null),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(0),[s,c]=(0,P.useState)(!0),[l,u]=(0,P.useState)(null),d=(0,P.useRef)(new Map),f=(0,P.useRef)(new Set);(0,P.useEffect)(()=>{let t=!1;async function n(){c(!0),u(null),i(null),o(0),f.current.clear();try{let n=await pe(),r;if(e.startsWith(`data:`)){let t=G(e);r=t?{data:t}:e}else r=e;let a=await n.getDocument(r).promise;if(t){a.destroy();return}i(a),o(Math.min(a.numPages,de))}catch{t||u(`Failed to load PDF.`)}finally{t||c(!1)}}return n(),()=>{t=!0}},[e]),(0,P.useEffect)(()=>()=>{r&&r.destroy()},[r]);let p=(0,P.useCallback)(async e=>{if(!r||f.current.has(e))return;let t=d.current.get(e);if(t){f.current.add(e);try{let n=await r.getPage(e),i=n.getViewport({scale:ue});t.width=i.width,t.height=i.height,await n.render({canvas:t,viewport:i}).promise}catch{f.current.delete(e)}}},[r]);(0,P.useEffect)(()=>{if(!r||a===0)return;let e=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.page);e&&p(e)}},{root:n.current,rootMargin:`200px`});return d.current.forEach(t=>e.observe(t)),()=>e.disconnect()},[r,a,p]);let m=(0,P.useCallback)(e=>t=>{t?d.current.set(e,t):d.current.delete(e)},[]);return s?(0,F.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,F.jsx)(y,{className:`h-8 w-8 animate-spin text-white/70`})}):l?(0,F.jsx)(`div`,{className:`w-full max-w-sm rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:(0,F.jsx)(`p`,{className:`text-body-medium-lighter text-white/80`,children:l})}):(0,F.jsx)(`div`,{ref:n,className:`flex max-h-[80vh] flex-col items-center gap-2 overflow-y-auto rounded ${t??``}`,children:Array.from({length:a},(e,t)=>(0,F.jsx)(`canvas`,{ref:m(t+1),"data-page":t+1,className:`w-[90vw] max-w-[800px]`,style:{height:`auto`}},t+1))})}function K({message:e,filename:t,onDownload:n,downloadDisabled:r=!1}){return(0,F.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:[(0,F.jsx)(`p`,{className:`text-body-medium-lighter text-white/80`,children:e}),(0,F.jsx)(i,{variant:`ghost`,leftIcon:(0,F.jsx)(p,{}),onClick:n,disabled:r,"aria-label":`Download ${t}`,className:`mt-4 text-white/70 hover:bg-white/10 hover:text-white max-md:bg-transparent`,tintColor:`currentColor`,children:`Download`})]})}var q=class extends Error{};async function he(e,t,n){if(t>204800)throw new q;if(e.startsWith(`data:`)){let t=G(e);if(!t)throw Error(`Malformed data URI`);return new TextDecoder().decode(t)}let r=await fetch(e,{signal:n});if(!r.ok)throw Error(`Failed to load file: ${r.status}`);let i=await r.blob();if(i.size>204800)throw new q;return i.text()}function ge({url:e,filename:n,mimeType:r,sizeBytes:i}){let[o,s]=(0,P.useState)({status:`loading`});return(0,P.useEffect)(()=>{let n=new AbortController;return s({status:`loading`}),he(e,i,n.signal).then(e=>{n.signal.aborted||s({status:`ready`,text:e})}).catch(e=>{if(n.signal.aborted)return;let r=e instanceof q;r||t(e,{context:`attachment-text-preview`,bestEffort:!0}),s({status:`error`,tooLarge:r})}),()=>n.abort()},[e,i]),o.status===`loading`?(0,F.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,F.jsx)(y,{className:`h-8 w-8 animate-spin text-white/70`})}):o.status===`error`?(0,F.jsx)(K,{message:o.tooLarge?`File too large to preview inline.`:`Failed to load preview.`,filename:n,onDownload:async()=>{let{saveFile:t}=await a(async()=>{let{saveFile:e}=await import(`./native-file-BV4pxj6M.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3,4]));await t(e,n)}}):(0,F.jsx)(`div`,{className:`max-h-[80vh] w-[min(90vw,800px)] overflow-auto rounded-lg p-6`,style:{backgroundColor:`var(--surface-overlay)`,color:`var(--content-default)`},children:(0,F.jsx)(_e,{text:o.text,filename:n,mimeType:r})})}function _e({text:e,filename:t,mimeType:n}){return T(t,n)?(0,F.jsx)(E,{content:e}):(0,F.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-body-small-default`,children:e})}var J=60,ve=.8,ye=8,be=.35;function xe({enabled:e,onPrev:t,onNext:n}){let[r,i]=(0,P.useState)(0),[a,o]=(0,P.useState)(!1),s=(0,P.useRef)(null),c=(0,P.useCallback)(()=>{s.current=null,i(0),o(!1)},[]);return{dragOffset:r,isDragging:a,onTouchStart:(0,P.useCallback)(t=>{if(!e)return;if(t.touches.length!==1){c();return}let n=t.touches[0];s.current={touchId:n.identifier,startX:n.clientX,startY:n.clientY,axis:`undecided`,lastDx:0}},[e,c]),onTouchMove:(0,P.useCallback)(e=>{let t=s.current;if(!t)return;if(e.touches.length!==1){c();return}let n=e.touches[0];if(n.identifier!==t.touchId)return;let r=n.clientX-t.startX,a=n.clientY-t.startY;if(t.lastDx=r,t.axis===`undecided`){if(Math.abs(r)<ye&&Math.abs(a)<ye)return;if(Math.abs(a)>Math.abs(r)*ve){s.current=null;return}t.axis=`horizontal`,o(!0)}if(t.axis!==`horizontal`)return;if(Math.abs(r)<J&&Math.abs(a)>Math.abs(r)*ve){c();return}let l=Math.sign(r),u=Math.abs(r);i(l*(u<=J?u:J+(u-J)*be))},[c]),onTouchEnd:(0,P.useCallback)(e=>{let r=s.current;if(!r||r.axis!==`horizontal`){c();return}if(e.touches.length>0){c();return}let i=Array.from(e.changedTouches).find(e=>e.identifier===r.touchId),a=i?i.clientX-r.startX:r.lastDx;a<=-J?(M.light(),n()):a>=J&&(M.light(),t()),c()},[n,t,c]),onTouchCancel:c}}var Se=new Set([`ts`,`tsx`,`js`,`jsx`,`py`,`json`,`md`,`sh`,`bash`,`html`,`css`,`yaml`,`yml`,`txt`]),Ce=new Set([`application/json`,`application/javascript`,`application/xml`]),we=e=>{let t=e.lastIndexOf(`.`);return t===-1||t===e.length-1?``:e.slice(t+1).toLowerCase()},Y=({open:e,onClose:t,attachment:n,assistantId:r,siblingAttachments:s,onNavigate:l})=>{let f=(0,P.useRef)(null);(0,P.useEffect)(()=>{e&&f.current?.focus()},[e]);let m=te.use.registerBackOwner(),h=te.use.unregisterBackOwner();(0,P.useEffect)(()=>{if(e)return m(),()=>h()},[e,m,h]);let g=!n.previewUrl&&n.id.startsWith(`rehydrated:`),v=e&&!n.previewUrl&&!!r&&!!n.id&&!g,{data:x,isError:S}=o({queryKey:[`attachmentContent`,r,n.id],queryFn:async()=>{let e=await H(r,n.id);if(!e)throw Error(`Failed to load file`);return e},enabled:v,staleTime:1/0,retry:!1}),[C,w]=(0,P.useState)(null);(0,P.useEffect)(()=>{if(!x){w(null);return}let e=URL.createObjectURL(x);return w(e),()=>{URL.revokeObjectURL(e),w(null)}},[x]);let T=n.previewUrl??C,[E,D]=(0,P.useState)(null),ee=v&&!C&&!S,O=g?`Preview unavailable — file content was not preserved in chat history.`:S?`Failed to load preview.`:null,k=(0,P.useMemo)(()=>!s||s.length<=1?-1:s.findIndex(e=>e.id===n.id),[s,n.id]),A=k!==-1&&s!=null&&s.length>1,j=(0,P.useCallback)(()=>{!A||!s||!l||l(s[(k-1+s.length)%s.length])},[A,s,k,l]),M=(0,P.useCallback)(()=>{!A||!s||!l||l(s[(k+1)%s.length])},[A,s,k,l]),{dragOffset:N,isDragging:ne,onTouchStart:ie,onTouchMove:I,onTouchEnd:L,onTouchCancel:ae}=xe({enabled:A,onPrev:j,onNext:M}),R=(0,P.useCallback)(e=>{e.key===`Escape`?(e.preventDefault(),t()):e.key===`ArrowLeft`&&A?(e.preventDefault(),j()):e.key===`ArrowRight`&&A&&(e.preventDefault(),M())},[t,j,M,A]),z=(0,P.useCallback)(e=>{e.target===f.current&&t()},[t]),B=(0,P.useCallback)(async()=>{if(!T)return;let{saveFile:e}=await a(async()=>{let{saveFile:e}=await import(`./native-file-BV4pxj6M.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3,4]));await e(T,n.filename)},[T,n.filename]);if(!e)return null;let V=n.mimeType.toLowerCase(),oe=V.startsWith(`image/`),se=V.startsWith(`video/`),ce=V===`application/pdf`||V===`application/octet-stream`&&n.filename.toLowerCase().endsWith(`.pdf`),W=we(n.filename),G=V.startsWith(`text/`)||Ce.has(V)||Se.has(W);return(0,re.createPortal)((0,F.jsxs)(`div`,{ref:f,role:`dialog`,"aria-modal":`true`,"aria-label":`Preview of ${n.filename}`,tabIndex:-1,className:`fixed inset-0 z-50 flex flex-col items-center justify-center bg-black/80 outline-none [-webkit-app-region:no-drag]`,style:{paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`,paddingLeft:`var(--safe-area-inset-left, env(safe-area-inset-left, 0px))`,paddingRight:`var(--safe-area-inset-right, env(safe-area-inset-right, 0px))`},onKeyDown:R,onClick:z,children:[(0,F.jsxs)(`div`,{className:`absolute inset-x-0 top-0 z-10 flex items-center gap-3 px-4`,style:{paddingTop:`calc(var(--safe-area-inset-top, env(safe-area-inset-top, 0px)) + 1rem)`},children:[(0,F.jsx)(c,{variant:`body-small-default`,className:`w-11 shrink-0 truncate text-white/50`,children:U(n.sizeBytes)}),(0,F.jsx)(c,{as:`div`,variant:`body-medium-lighter`,className:`min-w-0 flex-1 truncate text-center text-white/90`,children:n.filename}),(0,F.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(p,{}),expandOnMobile:!1,onClick:B,disabled:!T,"aria-label":`Download ${n.filename}`,className:`h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`}),(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(b,{}),expandOnMobile:!1,onClick:t,"aria-label":`Close preview`,className:`h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`})]})]}),A&&(0,F.jsxs)(`div`,{className:`pointer-events-none absolute inset-x-0 top-1/2 z-10 flex -translate-y-1/2 items-center justify-between px-4`,children:[(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(u,{}),expandOnMobile:!1,onClick:j,"aria-label":`Previous attachment`,className:`pointer-events-auto h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`}),(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(d,{}),expandOnMobile:!1,onClick:M,"aria-label":`Next attachment`,className:`pointer-events-auto h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`})]}),(0,F.jsx)(`div`,{className:`flex items-center justify-center`,style:{transform:`translateX(${N}px)`,transition:ne?`none`:`transform 200ms ease-out`,touchAction:`pan-y`},onClick:e=>e.stopPropagation(),onTouchStart:ie,onTouchMove:I,onTouchEnd:L,onTouchCancel:ae,children:ee?(0,F.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,F.jsx)(y,{className:`h-8 w-8 animate-spin text-white/70`})}):O?(0,F.jsx)(K,{message:O,filename:n.filename,onDownload:B,downloadDisabled:!T}):ce&&T?(0,F.jsx)(me,{url:T}):oe&&T&&E!==T?(0,F.jsx)(`img`,{src:T,alt:n.filename,onError:()=>D(T),className:`max-h-[80vh] max-w-[90vw] rounded object-contain`}):se&&T?(0,F.jsx)(`video`,{"data-testid":`video-preview`,src:T,poster:n.thumbnailUrl??void 0,controls:!0,className:`max-h-[80vh] max-w-[90vw] rounded`}):G&&T?(0,F.jsx)(ge,{url:T,filename:n.filename,mimeType:n.mimeType,sizeBytes:n.sizeBytes}):(0,F.jsxs)(`div`,{className:`flex w-full max-w-sm flex-col items-center rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:[(0,F.jsx)(_,{className:`h-16 w-16 text-white/60`}),(0,F.jsx)(`p`,{className:`mt-4 text-body-medium-default text-white/90`,children:n.filename}),(0,F.jsx)(`p`,{className:`mt-1 text-body-small-default text-white/60`,children:U(n.sizeBytes)}),(0,F.jsx)(i,{variant:`ghost`,leftIcon:(0,F.jsx)(p,{}),onClick:B,disabled:!T,"aria-label":`Download ${n.filename}`,className:`mt-4 text-white/70 hover:bg-white/10 hover:text-white max-md:bg-transparent`,tintColor:`currentColor`,children:`Download`})]})}),A&&(0,F.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 z-10 flex justify-center`,style:{paddingBottom:`calc(var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)) + 2rem)`},onClick:e=>e.stopPropagation(),children:(0,F.jsxs)(c,{variant:`body-small-default`,className:`text-white/50`,children:[k+1,` / `,s.length]})})]}),document.body)};function Te(e,t){let[n,r]=(0,P.useState)(null),i=(0,P.useCallback)(e=>r(e),[]),a=(0,P.useCallback)(()=>r(null),[]),o=(0,P.useCallback)(e=>r(e),[]);return{openPreview:i,previewModal:n?(0,F.jsx)(Y,{open:!0,onClose:a,attachment:n,assistantId:e,siblingAttachments:t,onNavigate:o}):null}}var Ee=1500,X=`inline-flex max-w-full min-w-0 items-center gap-1.5 rounded-lg bg-[var(--surface-overlay)] px-2 py-1 align-middle text-[0.85em] leading-tight text-[var(--content-secondary)]`,Z=`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`;function De({type:e,service:t,field:n,assistantId:r,neutralized:i}){let a=D.use.activeAssistantId(),o=r===void 0?a:r,[s,c]=(0,P.useState)(null),[u,d]=(0,P.useState)(!1),[p,g]=(0,P.useState)(!1),_=(0,P.useRef)(null),b=(0,P.useRef)(0),x=e??`Secret`,S=t!==void 0&&n!==void 0&&o!=null,C=S?`${t}:${n}`:x,T=(0,P.useCallback)(()=>{b.current++,c(null),d(!1),g(!1),_.current&&=(clearTimeout(_.current),null)},[]),E=(0,P.useCallback)(async()=>{if(!S)return;let e=++b.current;d(!0);try{let{data:r}=await ee({path:{assistant_id:o},body:{service:t,field:n},throwOnError:!0});b.current===e&&c(r.value)}catch{b.current===e&&w.error(`Couldn't reveal ${C}.`)}finally{b.current===e&&d(!1)}},[S,o,t,n,C]),O=(0,P.useCallback)(()=>{s!=null&&N(s,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{g(!0),_.current&&clearTimeout(_.current),_.current=setTimeout(()=>g(!1),Ee)}})},[s]);if(i)return(0,F.jsxs)(`span`,{className:X,title:`Redaction marker — not verified by the assistant`,children:[(0,F.jsx)(v,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,F.jsx)(`span`,{className:`truncate`,children:`Redacted`})]});if(!S)return(0,F.jsxs)(`span`,{className:X,title:`Redacted — this value is not linked to a stored credential`,children:[(0,F.jsx)(v,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,F.jsx)(`span`,{className:`truncate`,children:x})]});let k=s!==null;return(0,F.jsxs)(`span`,{className:X,children:[(0,F.jsx)(v,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),k?(0,F.jsx)(`span`,{className:`min-w-0 truncate font-mono text-[var(--content-default)]`,children:s}):(0,F.jsx)(`button`,{type:`button`,onClick:()=>void E(),disabled:u,"aria-label":`Reveal value for ${C}`,title:`${x} · click to reveal`,className:`min-w-0 select-none truncate rounded-sm text-left blur-[3px] transition-[filter] hover:blur-[2px] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:C}),u?(0,F.jsx)(y,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):k?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`button`,{type:`button`,onClick:O,"aria-label":`Copy value for ${C}`,title:`Copy value`,className:Z,children:p?(0,F.jsx)(l,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,F.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,F.jsx)(`button`,{type:`button`,onClick:T,"aria-label":`Hide value for ${C}`,title:`Hide value`,className:Z,children:(0,F.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,F.jsx)(`button`,{type:`button`,onClick:()=>void E(),disabled:u,"aria-label":`Reveal value for ${C}`,title:`Click to reveal`,className:Z,children:(0,F.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]})}var Oe=`redacted`;function ke(e){try{return decodeURIComponent(e)}catch{return}}function Ae(){return RegExp(`〔${Oe}:([^:\u3014\u3015]+?)(?::([A-Za-z0-9_.%-]+):([A-Za-z0-9_.%-]+))?〕`,`g`)}function je(){return RegExp(`〔\\u2060${Oe}:([^:\\u3014\\u3015]+?)(?::([A-Za-z0-9_.%-]+):([A-Za-z0-9_.%-]+))?〕`,`g`)}function Me(e){let[,t,n,r]=e;if(n!==void 0&&r!==void 0){let e=ke(n),i=ke(r);if(e!==void 0&&i!==void 0)return{type:t,service:e,field:i}}return{type:t}}var Q=`redacted-credential`,Ne=new Set([`pre`,`code`,`style`,`script`,`a`]);function Pe(e){return e.type===`element`}function Fe(e){let t=[],n=Ae(),r;for(;(r=n.exec(e))!==null;){let e=Me(r);t.push({index:r.index,length:r[0].length,element:{type:`element`,tagName:Q,properties:{type:e.type,...e.service!==void 0&&e.field!==void 0?{service:e.service,field:e.field}:{}},children:[]}})}let i=je();for(;(r=i.exec(e))!==null;)t.push({index:r.index,length:r[0].length,element:{type:`element`,tagName:Q,properties:{neutralized:!0},children:[]}});if(t.length===0)return;t.sort((e,t)=>e.index-t.index);let a=[],o=0;for(let n of t)n.index>o&&a.push({type:`text`,value:e.slice(o,n.index)}),a.push(n.element),o=n.index+n.length;return o<e.length&&a.push({type:`text`,value:e.slice(o)}),a}function Ie(e){if(Pe(e)&&Ne.has(e.tagName))return;let t=e.children;if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.type!==`text`){Ie(n);continue}let r=n.value;if(!r.includes(`〔`))continue;let i=Fe(r);i&&t.splice(e,1,...i)}}function Le(){return e=>{Ie(e)}}var Re=new Set([`pre`,`code`,`style`,`script`]),ze=5,Be=.4,Ve=`stream-word-fade`;function He(e){return e.type===`element`}function Ue(e){if(He(e)&&Re.has(e.tagName))return;let t=e.children;if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.type!==`text`){Ue(n);continue}let r=n.value.match(/\S+|\s+/g);if(!r||r.length===1&&/^\s+$/.test(r[0]))continue;let i=r.map(e=>/^\s+$/.test(e)?{type:`text`,value:e}:{type:`element`,tagName:`span`,properties:{className:[Ve]},children:[{type:`text`,value:e}]});t.splice(e,1,...i)}}function We(e,t){if(He(e)){let n=e.properties?.className;if(Array.isArray(n)&&n.includes(Ve)){t.push(e);return}}if(e.children)for(let n of e.children)We(n,t)}function Ge(e){let t=e?.caughtUp??!1;return e=>{if(Ue(e),t)return;let n=[];We(e,n);let r=Math.min(ze,n.length);for(let e=0;e<r;e++){let t=n[n.length-1-e],r=(Be+(1-Be)*((e+1)/(ze+1))).toFixed(3);t.properties={...t.properties,style:`opacity:${r}`}}}}var Ke=`workspace-path`,qe=`/workspace/`,Je=512,Ye=/[\s`"'<>|&;:,=$*?[\]{}()\\!#]/;function Xe(e){let t=e.trim();if(t.length===0||t.length>Je||Ye.test(t)||t.endsWith(`/`)||t.startsWith(`~`))return null;let n;if(t.startsWith(`/`)){let e=t.lastIndexOf(qe);if(e===-1)return null;n=t.slice(e+11)}else if(n=t.startsWith(`./`)?t.slice(2):t,!n.includes(`/`))return null;return n.length===0||n.split(`/`).some(e=>e.length===0||e.startsWith(`.`))?null:n}function Ze(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function Qe(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function $e(e){return`vellum://workspace/${e.split(`/`).map(encodeURIComponent).join(`/`)}`}var et=new Set([`pre`,`a`,`style`,`script`]);function tt(e){return e.type===`element`}function nt(e){if(e.children.length!==1)return;let t=e.children[0];return t.type===`text`?t.value:void 0}function rt(e){let t=e.children;if(t){for(let e of t)if(tt(e)&&!et.has(e.tagName)){if(e.tagName===`code`){let t=nt(e),n=t===void 0?null:Xe(t);n!==null&&t!==void 0&&(e.tagName=Ke,e.properties={...e.properties,path:n,raw:t},e.children=[]);continue}rt(e)}}}function it(){return e=>{rt(e)}}var at=15e3,ot=1e4,st=9e4;function ct({path:e,raw:t,assistantId:n,onOpen:r}){let i=t??e??``,a=A(),s=!!(e&&n&&r&&a),[c]=(0,P.useState)(()=>Date.now()+st),{data:l}=o({...g({assistantId:n??``,path:e?Ze(e):``}),enabled:s,staleTime:at,retry:!1,refetchInterval:t=>Date.now()>=c||(t.state.data?.entries.some(t=>t.type===`file`&&t.path===e)??!1)?!1:ot});return!(0,P.useMemo)(()=>e!=null&&(l?.entries.some(t=>t.type===`file`&&t.path===e)??!1),[l,e])||!e||!r?(0,F.jsx)(`code`,{className:C,children:i}):(0,F.jsx)(`button`,{type:`button`,onClick:()=>r($e(e),Qe(e)),className:`${C} cursor-pointer text-[var(--system-positive-strong)] underline decoration-dotted underline-offset-2 hover:opacity-80`,title:`Open ${e}`,children:i})}function $(e){return e!=null&&(e.startsWith(`vellum://workspace/`)||e.startsWith(`vellum://host/`))}function lt(e){return $(e)?e:x(e)}function ut({href:e,children:t}){return(0,F.jsx)(`a`,{href:e,target:`_blank`,rel:L(e)?void 0:`noopener noreferrer`,onClick:t=>{if(B(e)){t.preventDefault();return}ne(t,e)},className:`text-[var(--system-positive-strong)] underline hover:opacity-80`,children:t})}var dt=`my-2 max-w-full max-h-[400px] rounded-lg border border-[var(--border-default)] object-contain`;function ft({alt:e}){return(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-[var(--surface-sunken)] px-1.5 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Image failed to load`,e?` (${e})`:``]})}function pt({src:e,alt:t}){let[n,r]=(0,P.useState)(!1);return n?(0,F.jsx)(ft,{alt:t}):(0,F.jsx)(`img`,{src:e,alt:t,onError:()=>r(!0),className:dt})}function mt(e){try{return decodeURIComponent(e)}catch{return e}}function ht({src:e,alt:n,attachments:r,assistantId:i,onOpenPreview:a}){let[o,s]=(0,P.useState)(null),[c,l]=(0,P.useState)(!1),u=mt(e.split(`/`).pop()??``),d=r?.find(e=>e.filename===u);if((0,P.useEffect)(()=>{if(!d||!i||d.id.startsWith(`rehydrated:`))return;let e=!1;return(async()=>{try{let{data:t,error:n}=await O({path:{assistant_id:i,id:d.id},parseAs:`blob`,throwOnError:!1});if(e)return;if(n||!(t instanceof Blob)){l(!0);return}s(URL.createObjectURL(t))}catch(n){e||(l(!0),t(n,{context:`WorkspaceInlineImage`,bestEffort:!0}))}})(),()=>{e=!0,s(e=>(e&&URL.revokeObjectURL(e),null))}},[d,i]),c||!d&&!o)return(0,F.jsx)(ft,{alt:n||u});if(!o)return(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-[var(--surface-sunken)] px-1.5 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Loading image…`,n?` (${n})`:``]});let f=(0,F.jsx)(`img`,{src:o,alt:n,className:dt});return!d||!a?f:(0,F.jsx)(`button`,{type:`button`,onClick:()=>a(d),className:`cursor-zoom-in appearance-none border-0 bg-transparent p-0`,"aria-label":n?`Expand image: ${n}`:`Expand image`,children:f})}var gt=(0,P.memo)(function({content:e,className:t,hardLineBreaks:n,onVellumLinkClick:r,attachments:i,assistantId:a,streamWordFade:o,redactedCredentialChips:s,workspacePathLinks:c}){let{openPreview:l,previewModal:u}=Te(a,i),d=(0,P.useCallback)(({href:e,children:t})=>r&&$(e)?(0,F.jsx)(`a`,{href:e,onClick:t=>{t.preventDefault(),e&&r(e,t.currentTarget.textContent??``)},className:`text-[var(--system-positive-strong)] underline hover:opacity-80 cursor-pointer`,children:t}):(0,F.jsx)(ut,{href:e,children:t}),[r]),f=(0,P.useMemo)(()=>[...s?[Le]:[],...c&&r?[it]:[],...o?[[Ge,{caughtUp:o===`caughtUp`}]]:[]],[s,o,c,r]),p=(0,P.useMemo)(()=>({src:e,alt:t})=>$(e)?(0,F.jsx)(ht,{src:e,alt:t,attachments:i,assistantId:a,onOpenPreview:l}):(0,F.jsx)(pt,{src:e,alt:t}),[i,a,l]),m=(0,P.useMemo)(()=>({[Q]:e=>(0,F.jsx)(De,{...e,assistantId:a},`${a??``}\u0000${e.service??``}\u0000${e.field??``}`),[Ke]:e=>(0,F.jsx)(ct,{...e,assistantId:a,onOpen:r})}),[a,r]);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(S,{content:e,className:t,hardLineBreaks:n,linkComponent:d,imageComponent:p,urlTransform:lt,extraRehypePlugins:f,extraComponents:s||c&&r?m:void 0}),u]})});export{W as a,se as c,V as d,ce as i,H as l,Te as n,U as o,Y as r,le as s,gt as t,oe as u};
2
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-FWzaVb8P.js";import{t as n}from"./react-BFJW0bSv.js";import{F as r,t as i}from"./button-Dy5001j6.js";import{t as a}from"./preload-helper-Cv2QeVDK.js";import{t as o}from"./useQuery-Bz-fbQ-m.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./typography-DEI9Ra9z.js";import{t as l}from"./check-sC49_hjU.js";import{t as u}from"./chevron-left-CytMddTB.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{o as f}from"./list-row-BYrmPIC4.js";import{t as p}from"./download-CywcQLB2.js";import{t as m}from"./eye-off-fuOP4Lij.js";import{t as h}from"./eye-DTyDWiqu.js";import{n as g,r as _}from"./workspace-tree-query-CqcOBNKw.js";import{t as v}from"./key-round-CSc3w5ka.js";import{t as y}from"./loader-circle-BzJ2kz3F.js";import{t as b}from"./x-DuBvjmAE.js";import{_ as x,c as S,s as C}from"./src-BAS7a2RG.js";import{n as w}from"./toast-DR7D7Uma.js";import{n as T,t as E}from"./file-markdown-DBLxtb0M.js";import{n as D}from"./resolved-assistants-store-BhBxUDAA.js";import{dt as ee,l as O}from"./sdk.gen-BySz4QYj.js";import{t as k}from"./dist-D3eaKkac2.js";import{r as A}from"./use-is-org-ready-_bcxY9zb.js";import{n as j}from"./browser-BaaiMPkj.js";import{t as M}from"./haptics-BX7G67rP.js";import{t as te}from"./edge-swipe-arbiter-store-D9XJTxJJ.js";import{t as N}from"./copy-to-clipboard-DaTa8Tbi.js";import{t as ne}from"./native-anchor-DFzPWn3s.js";var P=e(n(),1),re=e(r(),1),F=s(),ie=`width=500,height=600`;function I(e){if(!e)return null;let t;try{let n=typeof window>`u`?`http://localhost`:window.location.origin;t=new URL(e,n)}catch{return null}return t.protocol!==`https:`&&t.protocol!==`http:`?null:t}function L(e){let t=I(e);if(!t)return!1;let n=t.pathname.toLowerCase();return t.searchParams.get(`response_type`)===`code`&&t.searchParams.has(`client_id`)&&t.searchParams.has(`redirect_uri`)||t.searchParams.has(`client_id`)&&t.searchParams.has(`redirect_uri`)&&/oauth|authorize|auth/.test(n)}function ae(e){if(typeof window>`u`)return null;let t=I(e);return!t||t.origin!==window.location.origin?null:`${t.pathname}${t.search}${t.hash}`}function R(e){return I(e)?.href??null}function z(e){if(!L(e))return!1;if(k.isNativePlatform()){let t=R(e);return t?(j(t),!0):!1}let t=window.open(e,`_blank`,ie);return t===null?!1:(t.focus(),!0)}function B(e){return z(e)}function V(e){if(z(e))return!0;let t=window.open(e,`_blank`);return t===null?!1:(t.focus(),!0)}function oe(e,t){let n=ae(e);if(n)return t.push(n),{kind:`routed`};let r=R(e);return r?t.isNative?(j(r),{kind:`opened`}):V(r)?{kind:`opened`}:{kind:`blocked`,url:r}:{kind:`invalid`}}async function H(e,t){if(!t||t.startsWith(`rehydrated:`))return null;try{let{data:n,error:r}=await O({path:{assistant_id:e,id:t},parseAs:`blob`,throwOnError:!1});return!r&&n instanceof Blob?n:null}catch{return null}}async function se(e,t){let{saveFile:n}=await a(async()=>{let{saveFile:e}=await import(`./native-file-BV4pxj6M.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3,4]));if(t){let r=await H(t,e.id);if(r){await n(r,e.filename);return}}e.previewUrl&&await n(e.previewUrl,e.filename)}function U(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n>=10||r===0?Math.round(n).toString():n.toFixed(1)} ${t[r]}`}function ce(e,t){let n=(e||``).toLowerCase(),r=t.split(`.`).pop()?.toLowerCase()??``;return n.startsWith(`image/`)?`image`:n.startsWith(`video/`)?`video`:n.startsWith(`audio/`)?`audio`:n===`application/pdf`||r===`pdf`?`pdf`:n===`application/zip`||n===`application/x-tar`||n===`application/gzip`||[`zip`,`tar`,`gz`,`tgz`,`rar`,`7z`].includes(r)?`archive`:n===`text/csv`||n===`application/vnd.ms-excel`||n===`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`||[`csv`,`xlsx`,`xls`,`numbers`].includes(r)?`spreadsheet`:`ts.tsx.js.jsx.py.rb.go.rs.java.kt.swift.c.cc.cpp.h.hpp.sh.bash.zsh.html.css.scss.json.yaml.yml.toml.xml`.split(`.`).includes(r)?`code`:n===`application/msword`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`||[`doc`,`docx`,`pages`].includes(r)?`document`:n.startsWith(`text/`)||[`txt`,`md`,`rtf`].includes(r)?`text`:`file`}function W(e){let t=e.replace(/\s/g,``),n=t.endsWith(`==`)?2:+!!t.endsWith(`=`);return Math.max(0,Math.floor(t.length*3/4)-n)}function G(e){let t=e.match(/;base64,(.*)$/);if(!t?.[1])return null;let n=atob(t[1]),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function le(e,t=28){if(e.length<=t)return e;let n=Math.max(4,Math.floor((t-1)/2));return`${e.slice(0,n)}…${e.slice(e.length-n)}`}var ue=1.5,de=20,fe=!1;async function pe(){let e=await a(()=>import(`./pdf-8fO1Wz7e.js`),__vite__mapDeps([5,2]));return fe||=(e.GlobalWorkerOptions.workerSrc=`https://cdn.jsdelivr.net/npm/pdfjs-dist@${e.version}/legacy/build/pdf.worker.min.mjs`,!0),e}function me({url:e,className:t}){let n=(0,P.useRef)(null),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(0),[s,c]=(0,P.useState)(!0),[l,u]=(0,P.useState)(null),d=(0,P.useRef)(new Map),f=(0,P.useRef)(new Set);(0,P.useEffect)(()=>{let t=!1;async function n(){c(!0),u(null),i(null),o(0),f.current.clear();try{let n=await pe(),r;if(e.startsWith(`data:`)){let t=G(e);r=t?{data:t}:e}else r=e;let a=await n.getDocument(r).promise;if(t){a.destroy();return}i(a),o(Math.min(a.numPages,de))}catch{t||u(`Failed to load PDF.`)}finally{t||c(!1)}}return n(),()=>{t=!0}},[e]),(0,P.useEffect)(()=>()=>{r&&r.destroy()},[r]);let p=(0,P.useCallback)(async e=>{if(!r||f.current.has(e))return;let t=d.current.get(e);if(t){f.current.add(e);try{let n=await r.getPage(e),i=n.getViewport({scale:ue});t.width=i.width,t.height=i.height,await n.render({canvas:t,viewport:i}).promise}catch{f.current.delete(e)}}},[r]);(0,P.useEffect)(()=>{if(!r||a===0)return;let e=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.page);e&&p(e)}},{root:n.current,rootMargin:`200px`});return d.current.forEach(t=>e.observe(t)),()=>e.disconnect()},[r,a,p]);let m=(0,P.useCallback)(e=>t=>{t?d.current.set(e,t):d.current.delete(e)},[]);return s?(0,F.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,F.jsx)(y,{className:`h-8 w-8 animate-spin text-white/70`})}):l?(0,F.jsx)(`div`,{className:`w-full max-w-sm rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:(0,F.jsx)(`p`,{className:`text-body-medium-lighter text-white/80`,children:l})}):(0,F.jsx)(`div`,{ref:n,className:`flex max-h-[80vh] flex-col items-center gap-2 overflow-y-auto rounded ${t??``}`,children:Array.from({length:a},(e,t)=>(0,F.jsx)(`canvas`,{ref:m(t+1),"data-page":t+1,className:`w-[90vw] max-w-[800px]`,style:{height:`auto`}},t+1))})}function K({message:e,filename:t,onDownload:n,downloadDisabled:r=!1}){return(0,F.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:[(0,F.jsx)(`p`,{className:`text-body-medium-lighter text-white/80`,children:e}),(0,F.jsx)(i,{variant:`ghost`,leftIcon:(0,F.jsx)(p,{}),onClick:n,disabled:r,"aria-label":`Download ${t}`,className:`mt-4 text-white/70 hover:bg-white/10 hover:text-white max-md:bg-transparent`,tintColor:`currentColor`,children:`Download`})]})}var q=class extends Error{};async function he(e,t,n){if(t>204800)throw new q;if(e.startsWith(`data:`)){let t=G(e);if(!t)throw Error(`Malformed data URI`);return new TextDecoder().decode(t)}let r=await fetch(e,{signal:n});if(!r.ok)throw Error(`Failed to load file: ${r.status}`);let i=await r.blob();if(i.size>204800)throw new q;return i.text()}function ge({url:e,filename:n,mimeType:r,sizeBytes:i}){let[o,s]=(0,P.useState)({status:`loading`});return(0,P.useEffect)(()=>{let n=new AbortController;return s({status:`loading`}),he(e,i,n.signal).then(e=>{n.signal.aborted||s({status:`ready`,text:e})}).catch(e=>{if(n.signal.aborted)return;let r=e instanceof q;r||t(e,{context:`attachment-text-preview`,bestEffort:!0}),s({status:`error`,tooLarge:r})}),()=>n.abort()},[e,i]),o.status===`loading`?(0,F.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,F.jsx)(y,{className:`h-8 w-8 animate-spin text-white/70`})}):o.status===`error`?(0,F.jsx)(K,{message:o.tooLarge?`File too large to preview inline.`:`Failed to load preview.`,filename:n,onDownload:async()=>{let{saveFile:t}=await a(async()=>{let{saveFile:e}=await import(`./native-file-BV4pxj6M.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3,4]));await t(e,n)}}):(0,F.jsx)(`div`,{className:`max-h-[80vh] w-[min(90vw,800px)] overflow-auto rounded-lg p-6`,style:{backgroundColor:`var(--surface-overlay)`,color:`var(--content-default)`},children:(0,F.jsx)(_e,{text:o.text,filename:n,mimeType:r})})}function _e({text:e,filename:t,mimeType:n}){return T(t,n)?(0,F.jsx)(E,{content:e}):(0,F.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-body-small-default`,children:e})}var J=60,ve=.8,ye=8,be=.35;function xe({enabled:e,onPrev:t,onNext:n}){let[r,i]=(0,P.useState)(0),[a,o]=(0,P.useState)(!1),s=(0,P.useRef)(null),c=(0,P.useCallback)(()=>{s.current=null,i(0),o(!1)},[]);return{dragOffset:r,isDragging:a,onTouchStart:(0,P.useCallback)(t=>{if(!e)return;if(t.touches.length!==1){c();return}let n=t.touches[0];s.current={touchId:n.identifier,startX:n.clientX,startY:n.clientY,axis:`undecided`,lastDx:0}},[e,c]),onTouchMove:(0,P.useCallback)(e=>{let t=s.current;if(!t)return;if(e.touches.length!==1){c();return}let n=e.touches[0];if(n.identifier!==t.touchId)return;let r=n.clientX-t.startX,a=n.clientY-t.startY;if(t.lastDx=r,t.axis===`undecided`){if(Math.abs(r)<ye&&Math.abs(a)<ye)return;if(Math.abs(a)>Math.abs(r)*ve){s.current=null;return}t.axis=`horizontal`,o(!0)}if(t.axis!==`horizontal`)return;if(Math.abs(r)<J&&Math.abs(a)>Math.abs(r)*ve){c();return}let l=Math.sign(r),u=Math.abs(r);i(l*(u<=J?u:J+(u-J)*be))},[c]),onTouchEnd:(0,P.useCallback)(e=>{let r=s.current;if(!r||r.axis!==`horizontal`){c();return}if(e.touches.length>0){c();return}let i=Array.from(e.changedTouches).find(e=>e.identifier===r.touchId),a=i?i.clientX-r.startX:r.lastDx;a<=-J?(M.light(),n()):a>=J&&(M.light(),t()),c()},[n,t,c]),onTouchCancel:c}}var Se=new Set([`ts`,`tsx`,`js`,`jsx`,`py`,`json`,`md`,`sh`,`bash`,`html`,`css`,`yaml`,`yml`,`txt`]),Ce=new Set([`application/json`,`application/javascript`,`application/xml`]),we=e=>{let t=e.lastIndexOf(`.`);return t===-1||t===e.length-1?``:e.slice(t+1).toLowerCase()},Y=({open:e,onClose:t,attachment:n,assistantId:r,siblingAttachments:s,onNavigate:l})=>{let f=(0,P.useRef)(null);(0,P.useEffect)(()=>{e&&f.current?.focus()},[e]);let m=te.use.registerBackOwner(),h=te.use.unregisterBackOwner();(0,P.useEffect)(()=>{if(e)return m(),()=>h()},[e,m,h]);let g=!n.previewUrl&&n.id.startsWith(`rehydrated:`),v=e&&!n.previewUrl&&!!r&&!!n.id&&!g,{data:x,isError:S}=o({queryKey:[`attachmentContent`,r,n.id],queryFn:async()=>{let e=await H(r,n.id);if(!e)throw Error(`Failed to load file`);return e},enabled:v,staleTime:1/0,retry:!1}),[C,w]=(0,P.useState)(null);(0,P.useEffect)(()=>{if(!x){w(null);return}let e=URL.createObjectURL(x);return w(e),()=>{URL.revokeObjectURL(e),w(null)}},[x]);let T=n.previewUrl??C,[E,D]=(0,P.useState)(null),ee=v&&!C&&!S,O=g?`Preview unavailable — file content was not preserved in chat history.`:S?`Failed to load preview.`:null,k=(0,P.useMemo)(()=>!s||s.length<=1?-1:s.findIndex(e=>e.id===n.id),[s,n.id]),A=k!==-1&&s!=null&&s.length>1,j=(0,P.useCallback)(()=>{!A||!s||!l||l(s[(k-1+s.length)%s.length])},[A,s,k,l]),M=(0,P.useCallback)(()=>{!A||!s||!l||l(s[(k+1)%s.length])},[A,s,k,l]),{dragOffset:N,isDragging:ne,onTouchStart:ie,onTouchMove:I,onTouchEnd:L,onTouchCancel:ae}=xe({enabled:A,onPrev:j,onNext:M}),R=(0,P.useCallback)(e=>{e.key===`Escape`?(e.preventDefault(),t()):e.key===`ArrowLeft`&&A?(e.preventDefault(),j()):e.key===`ArrowRight`&&A&&(e.preventDefault(),M())},[t,j,M,A]),z=(0,P.useCallback)(e=>{e.target===f.current&&t()},[t]),B=(0,P.useCallback)(async()=>{if(!T)return;let{saveFile:e}=await a(async()=>{let{saveFile:e}=await import(`./native-file-BV4pxj6M.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3,4]));await e(T,n.filename)},[T,n.filename]);if(!e)return null;let V=n.mimeType.toLowerCase(),oe=V.startsWith(`image/`),se=V.startsWith(`video/`),ce=V===`application/pdf`||V===`application/octet-stream`&&n.filename.toLowerCase().endsWith(`.pdf`),W=we(n.filename),G=V.startsWith(`text/`)||Ce.has(V)||Se.has(W);return(0,re.createPortal)((0,F.jsxs)(`div`,{ref:f,role:`dialog`,"aria-modal":`true`,"aria-label":`Preview of ${n.filename}`,tabIndex:-1,className:`fixed inset-0 z-50 flex flex-col items-center justify-center bg-black/80 outline-none [-webkit-app-region:no-drag]`,style:{paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`,paddingLeft:`var(--safe-area-inset-left, env(safe-area-inset-left, 0px))`,paddingRight:`var(--safe-area-inset-right, env(safe-area-inset-right, 0px))`},onKeyDown:R,onClick:z,children:[(0,F.jsxs)(`div`,{className:`absolute inset-x-0 top-0 z-10 flex items-center gap-3 px-4`,style:{paddingTop:`calc(var(--safe-area-inset-top, env(safe-area-inset-top, 0px)) + 1rem)`},children:[(0,F.jsx)(c,{variant:`body-small-default`,className:`w-11 shrink-0 truncate text-white/50`,children:U(n.sizeBytes)}),(0,F.jsx)(c,{as:`div`,variant:`body-medium-lighter`,className:`min-w-0 flex-1 truncate text-center text-white/90`,children:n.filename}),(0,F.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(p,{}),expandOnMobile:!1,onClick:B,disabled:!T,"aria-label":`Download ${n.filename}`,className:`h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`}),(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(b,{}),expandOnMobile:!1,onClick:t,"aria-label":`Close preview`,className:`h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`})]})]}),A&&(0,F.jsxs)(`div`,{className:`pointer-events-none absolute inset-x-0 top-1/2 z-10 flex -translate-y-1/2 items-center justify-between px-4`,children:[(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(u,{}),expandOnMobile:!1,onClick:j,"aria-label":`Previous attachment`,className:`pointer-events-auto h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`}),(0,F.jsx)(i,{variant:`ghost`,iconOnly:(0,F.jsx)(d,{}),expandOnMobile:!1,onClick:M,"aria-label":`Next attachment`,className:`pointer-events-auto h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`})]}),(0,F.jsx)(`div`,{className:`flex items-center justify-center`,style:{transform:`translateX(${N}px)`,transition:ne?`none`:`transform 200ms ease-out`,touchAction:`pan-y`},onClick:e=>e.stopPropagation(),onTouchStart:ie,onTouchMove:I,onTouchEnd:L,onTouchCancel:ae,children:ee?(0,F.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,F.jsx)(y,{className:`h-8 w-8 animate-spin text-white/70`})}):O?(0,F.jsx)(K,{message:O,filename:n.filename,onDownload:B,downloadDisabled:!T}):ce&&T?(0,F.jsx)(me,{url:T}):oe&&T&&E!==T?(0,F.jsx)(`img`,{src:T,alt:n.filename,onError:()=>D(T),className:`max-h-[80vh] max-w-[90vw] rounded object-contain`}):se&&T?(0,F.jsx)(`video`,{"data-testid":`video-preview`,src:T,poster:n.thumbnailUrl??void 0,controls:!0,className:`max-h-[80vh] max-w-[90vw] rounded`}):G&&T?(0,F.jsx)(ge,{url:T,filename:n.filename,mimeType:n.mimeType,sizeBytes:n.sizeBytes}):(0,F.jsxs)(`div`,{className:`flex w-full max-w-sm flex-col items-center rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:[(0,F.jsx)(_,{className:`h-16 w-16 text-white/60`}),(0,F.jsx)(`p`,{className:`mt-4 text-body-medium-default text-white/90`,children:n.filename}),(0,F.jsx)(`p`,{className:`mt-1 text-body-small-default text-white/60`,children:U(n.sizeBytes)}),(0,F.jsx)(i,{variant:`ghost`,leftIcon:(0,F.jsx)(p,{}),onClick:B,disabled:!T,"aria-label":`Download ${n.filename}`,className:`mt-4 text-white/70 hover:bg-white/10 hover:text-white max-md:bg-transparent`,tintColor:`currentColor`,children:`Download`})]})}),A&&(0,F.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 z-10 flex justify-center`,style:{paddingBottom:`calc(var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)) + 2rem)`},onClick:e=>e.stopPropagation(),children:(0,F.jsxs)(c,{variant:`body-small-default`,className:`text-white/50`,children:[k+1,` / `,s.length]})})]}),document.body)};function Te(e,t){let[n,r]=(0,P.useState)(null),i=(0,P.useCallback)(e=>r(e),[]),a=(0,P.useCallback)(()=>r(null),[]),o=(0,P.useCallback)(e=>r(e),[]);return{openPreview:i,previewModal:n?(0,F.jsx)(Y,{open:!0,onClose:a,attachment:n,assistantId:e,siblingAttachments:t,onNavigate:o}):null}}var Ee=1500,X=`inline-flex max-w-full min-w-0 items-center gap-1.5 rounded-lg bg-[var(--surface-overlay)] px-2 py-1 align-middle text-[0.85em] leading-tight text-[var(--content-secondary)]`,Z=`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`;function De({type:e,service:t,field:n,assistantId:r,neutralized:i}){let a=D.use.activeAssistantId(),o=r===void 0?a:r,[s,c]=(0,P.useState)(null),[u,d]=(0,P.useState)(!1),[p,g]=(0,P.useState)(!1),_=(0,P.useRef)(null),b=(0,P.useRef)(0),x=e??`Secret`,S=t!==void 0&&n!==void 0&&o!=null,C=S?`${t}:${n}`:x,T=(0,P.useCallback)(()=>{b.current++,c(null),d(!1),g(!1),_.current&&=(clearTimeout(_.current),null)},[]),E=(0,P.useCallback)(async()=>{if(!S)return;let e=++b.current;d(!0);try{let{data:r}=await ee({path:{assistant_id:o},body:{service:t,field:n},throwOnError:!0});b.current===e&&c(r.value)}catch{b.current===e&&w.error(`Couldn't reveal ${C}.`)}finally{b.current===e&&d(!1)}},[S,o,t,n,C]),O=(0,P.useCallback)(()=>{s!=null&&N(s,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{g(!0),_.current&&clearTimeout(_.current),_.current=setTimeout(()=>g(!1),Ee)}})},[s]);if(i)return(0,F.jsxs)(`span`,{className:X,title:`Redaction marker — not verified by the assistant`,children:[(0,F.jsx)(v,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,F.jsx)(`span`,{className:`truncate`,children:`Redacted`})]});if(!S)return(0,F.jsxs)(`span`,{className:X,title:`Redacted — this value is not linked to a stored credential`,children:[(0,F.jsx)(v,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,F.jsx)(`span`,{className:`truncate`,children:x})]});let k=s!==null;return(0,F.jsxs)(`span`,{className:X,children:[(0,F.jsx)(v,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),k?(0,F.jsx)(`span`,{className:`min-w-0 truncate font-mono text-[var(--content-default)]`,children:s}):(0,F.jsx)(`button`,{type:`button`,onClick:()=>void E(),disabled:u,"aria-label":`Reveal value for ${C}`,title:`${x} · click to reveal`,className:`min-w-0 select-none truncate rounded-sm text-left blur-[3px] transition-[filter] hover:blur-[2px] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:C}),u?(0,F.jsx)(y,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):k?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`button`,{type:`button`,onClick:O,"aria-label":`Copy value for ${C}`,title:`Copy value`,className:Z,children:p?(0,F.jsx)(l,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,F.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,F.jsx)(`button`,{type:`button`,onClick:T,"aria-label":`Hide value for ${C}`,title:`Hide value`,className:Z,children:(0,F.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,F.jsx)(`button`,{type:`button`,onClick:()=>void E(),disabled:u,"aria-label":`Reveal value for ${C}`,title:`Click to reveal`,className:Z,children:(0,F.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]})}var Oe=`redacted`;function ke(e){try{return decodeURIComponent(e)}catch{return}}function Ae(){return RegExp(`〔${Oe}:([^:\u3014\u3015]+?)(?::([A-Za-z0-9_.%-]+):([A-Za-z0-9_.%-]+))?〕`,`g`)}function je(){return RegExp(`〔\\u2060${Oe}:([^:\\u3014\\u3015]+?)(?::([A-Za-z0-9_.%-]+):([A-Za-z0-9_.%-]+))?〕`,`g`)}function Me(e){let[,t,n,r]=e;if(n!==void 0&&r!==void 0){let e=ke(n),i=ke(r);if(e!==void 0&&i!==void 0)return{type:t,service:e,field:i}}return{type:t}}var Q=`redacted-credential`,Ne=new Set([`pre`,`code`,`style`,`script`,`a`]);function Pe(e){return e.type===`element`}function Fe(e){let t=[],n=Ae(),r;for(;(r=n.exec(e))!==null;){let e=Me(r);t.push({index:r.index,length:r[0].length,element:{type:`element`,tagName:Q,properties:{type:e.type,...e.service!==void 0&&e.field!==void 0?{service:e.service,field:e.field}:{}},children:[]}})}let i=je();for(;(r=i.exec(e))!==null;)t.push({index:r.index,length:r[0].length,element:{type:`element`,tagName:Q,properties:{neutralized:!0},children:[]}});if(t.length===0)return;t.sort((e,t)=>e.index-t.index);let a=[],o=0;for(let n of t)n.index>o&&a.push({type:`text`,value:e.slice(o,n.index)}),a.push(n.element),o=n.index+n.length;return o<e.length&&a.push({type:`text`,value:e.slice(o)}),a}function Ie(e){if(Pe(e)&&Ne.has(e.tagName))return;let t=e.children;if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.type!==`text`){Ie(n);continue}let r=n.value;if(!r.includes(`〔`))continue;let i=Fe(r);i&&t.splice(e,1,...i)}}function Le(){return e=>{Ie(e)}}var Re=new Set([`pre`,`code`,`style`,`script`]),ze=5,Be=.4,Ve=`stream-word-fade`;function He(e){return e.type===`element`}function Ue(e){if(He(e)&&Re.has(e.tagName))return;let t=e.children;if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.type!==`text`){Ue(n);continue}let r=n.value.match(/\S+|\s+/g);if(!r||r.length===1&&/^\s+$/.test(r[0]))continue;let i=r.map(e=>/^\s+$/.test(e)?{type:`text`,value:e}:{type:`element`,tagName:`span`,properties:{className:[Ve]},children:[{type:`text`,value:e}]});t.splice(e,1,...i)}}function We(e,t){if(He(e)){let n=e.properties?.className;if(Array.isArray(n)&&n.includes(Ve)){t.push(e);return}}if(e.children)for(let n of e.children)We(n,t)}function Ge(e){let t=e?.caughtUp??!1;return e=>{if(Ue(e),t)return;let n=[];We(e,n);let r=Math.min(ze,n.length);for(let e=0;e<r;e++){let t=n[n.length-1-e],r=(Be+(1-Be)*((e+1)/(ze+1))).toFixed(3);t.properties={...t.properties,style:`opacity:${r}`}}}}var Ke=`workspace-path`,qe=`/workspace/`,Je=512,Ye=/[\s`"'<>|&;:,=$*?[\]{}()\\!#]/;function Xe(e){let t=e.trim();if(t.length===0||t.length>Je||Ye.test(t)||t.endsWith(`/`)||t.startsWith(`~`))return null;let n;if(t.startsWith(`/`)){let e=t.lastIndexOf(qe);if(e===-1)return null;n=t.slice(e+11)}else if(n=t.startsWith(`./`)?t.slice(2):t,!n.includes(`/`))return null;return n.length===0||n.split(`/`).some(e=>e.length===0||e.startsWith(`.`))?null:n}function Ze(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function Qe(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function $e(e){return`vellum://workspace/${e.split(`/`).map(encodeURIComponent).join(`/`)}`}var et=new Set([`pre`,`a`,`style`,`script`]);function tt(e){return e.type===`element`}function nt(e){if(e.children.length!==1)return;let t=e.children[0];return t.type===`text`?t.value:void 0}function rt(e){let t=e.children;if(t){for(let e of t)if(tt(e)&&!et.has(e.tagName)){if(e.tagName===`code`){let t=nt(e),n=t===void 0?null:Xe(t);n!==null&&t!==void 0&&(e.tagName=Ke,e.properties={...e.properties,path:n,raw:t},e.children=[]);continue}rt(e)}}}function it(){return e=>{rt(e)}}var at=15e3,ot=1e4,st=9e4;function ct({path:e,raw:t,assistantId:n,onOpen:r}){let i=t??e??``,a=A(),s=!!(e&&n&&r&&a),[c]=(0,P.useState)(()=>Date.now()+st),{data:l}=o({...g({assistantId:n??``,path:e?Ze(e):``}),enabled:s,staleTime:at,retry:!1,refetchInterval:t=>Date.now()>=c||(t.state.data?.entries.some(t=>t.type===`file`&&t.path===e)??!1)?!1:ot});return!(0,P.useMemo)(()=>e!=null&&(l?.entries.some(t=>t.type===`file`&&t.path===e)??!1),[l,e])||!e||!r?(0,F.jsx)(`code`,{className:C,children:i}):(0,F.jsx)(`button`,{type:`button`,onClick:()=>r($e(e),Qe(e)),className:`${C} cursor-pointer text-[var(--system-positive-strong)] underline decoration-dotted underline-offset-2 hover:opacity-80`,title:`Open ${e}`,children:i})}function $(e){return e!=null&&(e.startsWith(`vellum://workspace/`)||e.startsWith(`vellum://host/`))}function lt(e){return $(e)?e:x(e)}function ut({href:e,children:t}){return(0,F.jsx)(`a`,{href:e,target:`_blank`,rel:L(e)?void 0:`noopener noreferrer`,onClick:t=>{if(B(e)){t.preventDefault();return}ne(t,e)},className:`text-[var(--system-positive-strong)] underline hover:opacity-80`,children:t})}var dt=`my-2 max-w-full max-h-[400px] rounded-lg border border-[var(--border-default)] object-contain`;function ft({alt:e}){return(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-[var(--surface-sunken)] px-1.5 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Image failed to load`,e?` (${e})`:``]})}function pt({src:e,alt:t}){let[n,r]=(0,P.useState)(!1);return n?(0,F.jsx)(ft,{alt:t}):(0,F.jsx)(`img`,{src:e,alt:t,onError:()=>r(!0),className:dt})}function mt(e){try{return decodeURIComponent(e)}catch{return e}}function ht({src:e,alt:n,attachments:r,assistantId:i,onOpenPreview:a}){let[o,s]=(0,P.useState)(null),[c,l]=(0,P.useState)(!1),u=mt(e.split(`/`).pop()??``),d=r?.find(e=>e.filename===u);if((0,P.useEffect)(()=>{if(!d||!i||d.id.startsWith(`rehydrated:`))return;let e=!1;return(async()=>{try{let{data:t,error:n}=await O({path:{assistant_id:i,id:d.id},parseAs:`blob`,throwOnError:!1});if(e)return;if(n||!(t instanceof Blob)){l(!0);return}s(URL.createObjectURL(t))}catch(n){e||(l(!0),t(n,{context:`WorkspaceInlineImage`,bestEffort:!0}))}})(),()=>{e=!0,s(e=>(e&&URL.revokeObjectURL(e),null))}},[d,i]),c||!d&&!o)return(0,F.jsx)(ft,{alt:n||u});if(!o)return(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-[var(--surface-sunken)] px-1.5 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Loading image…`,n?` (${n})`:``]});let f=(0,F.jsx)(`img`,{src:o,alt:n,className:dt});return!d||!a?f:(0,F.jsx)(`button`,{type:`button`,onClick:()=>a(d),className:`cursor-zoom-in appearance-none border-0 bg-transparent p-0`,"aria-label":n?`Expand image: ${n}`:`Expand image`,children:f})}var gt=(0,P.memo)(function({content:e,className:t,hardLineBreaks:n,onVellumLinkClick:r,attachments:i,assistantId:a,streamWordFade:o,redactedCredentialChips:s,workspacePathLinks:c}){let{openPreview:l,previewModal:u}=Te(a,i),d=(0,P.useCallback)(({href:e,children:t})=>r&&$(e)?(0,F.jsx)(`a`,{href:e,onClick:t=>{t.preventDefault(),e&&r(e,t.currentTarget.textContent??``)},className:`text-[var(--system-positive-strong)] underline hover:opacity-80 cursor-pointer`,children:t}):(0,F.jsx)(ut,{href:e,children:t}),[r]),f=(0,P.useMemo)(()=>[...s?[Le]:[],...c&&r?[it]:[],...o?[[Ge,{caughtUp:o===`caughtUp`}]]:[]],[s,o,c,r]),p=(0,P.useMemo)(()=>({src:e,alt:t})=>$(e)?(0,F.jsx)(ht,{src:e,alt:t,attachments:i,assistantId:a,onOpenPreview:l}):(0,F.jsx)(pt,{src:e,alt:t}),[i,a,l]),m=(0,P.useMemo)(()=>({[Q]:e=>(0,F.jsx)(De,{...e,assistantId:a},`${a??``}\u0000${e.service??``}\u0000${e.field??``}`),[Ke]:e=>(0,F.jsx)(ct,{...e,assistantId:a,onOpen:r})}),[a,r]);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(S,{content:e,className:t,hardLineBreaks:n,linkComponent:d,imageComponent:p,urlTransform:lt,extraRehypePlugins:f,extraComponents:s||c&&r?m:void 0}),u]})});export{W as a,se as c,V as d,ce as i,H as l,Te as n,U as o,Y as r,le as s,gt as t,oe as u};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r,t as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useMutation-CXGTrp4W.js";import{t as c}from"./jsx-runtime-D3ZM-ToX.js";import{t as l}from"./loader-circle-BzJ2kz3F.js";import{c as u,l as d,tt as f}from"./auth-store-QpgWmI2t.js";import{C as p,b as m,y as h}from"./native-biometric-K90ZnTI1.js";import{d as g}from"./routes-Dwx_Ibh9.js";import{a as _}from"./use-platform-gate-DEPyUO3c.js";import{i as v}from"./use-is-org-ready-B4ouZE2v.js";import{d as y}from"./platform-detection-DyR9CV0q.js";import{n as b}from"./browser-BaaiMPkj.js";import{dt as x}from"./react-query.gen-BVTEjHsw.js";import{n as S,r as C}from"./checkout-continuation-D_v04HPX.js";import{t as w}from"./checkout-return-target-CCfHmNHP.js";var T=e(t(),1),E=c();function D(){m(),d()}function O(){let e=a(),[t]=r(),c=t.get(`package`)??``,d=(0,T.useMemo)(()=>c?null:h(t),[c,t]),m=_(),y=v(),O=C(),k=S(t,g.plans),A=k===g.plans?`View plans`:`Continue setup`,j=o(),{mutateAsync:M}=s(x()),[N,P]=(0,T.useState)(!1),[F,I]=(0,T.useState)(!1),L=(0,T.useRef)(`idle`),R=(0,T.useCallback)(async()=>{L.current=`running`,P(!1),I(!1);let t=w();try{let n=await M({body:d?{target_plan_id:`pro`,confirm:!0,machine_tier:d.machineTier,storage_tier:d.storageTier,credit_tier:d.creditTier,return_target:t}:{target_plan_id:`pro`,package:c,confirm:!0,return_target:t}});if(L.current!==`running`)return;if(n.status===`redirect`&&n.checkout_url){L.current=`handed_off`,p(d?{kind:`custom`,machineTier:d.machineTier,storageTier:d.storageTier,creditTier:d.creditTier}:{kind:`package`,packageKey:c}),u(j),I(t===`native`),b(n.checkout_url);return}L.current=`settled`,D(),e(k===g.plans&&c?g.plansForPackage(c):k,{replace:!0})}catch{if(L.current!==`running`)return;L.current=`settled`,P(!0)}},[k,d,M,e,c,j]),z=(0,T.useCallback)(()=>{if(y===`ready`){R();return}L.current=`idle`,P(!1),I(!1),y===`unavailable`&&f.getState().fetchOrganizations()},[y,R]);return(0,T.useEffect)(()=>{if(!c&&!d||m===`disabled`||m===`gated`||O===`disabled`){if(L.current===`handed_off`)return;L.current=`settled`,D(),e(k,{replace:!0});return}if(!(O!==`enabled`||m!==`full`||L.current!==`idle`)&&y!==`resolving`){if(y===`unavailable`){L.current=`settled`,P(!0);return}R()}},[k,d,m,e,y,c,R,O]),N?(0,E.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,E.jsx)(`p`,{className:`text-[var(--content-default)]`,children:`We couldn’t start your checkout. Please try again.`}),(0,E.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,E.jsx)(n,{onClick:z,children:`Try again`}),(0,E.jsx)(i,{to:k,onClick:D,className:`text-sm text-[var(--content-tertiary)] underline`,children:A})]})]}):F?(0,E.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,E.jsx)(`p`,{className:`text-[var(--content-default)]`,children:`Checkout opened in your browser. Finish there to complete your upgrade.`}),(0,E.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,E.jsx)(n,{onClick:z,children:`Reopen checkout`}),(0,E.jsx)(i,{to:k,className:`text-sm text-[var(--content-tertiary)] underline`,children:A})]})]}):(0,E.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3`,children:[(0,E.jsx)(l,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`,"aria-label":`Preparing checkout`}),(0,E.jsx)(`p`,{className:`text-sm text-[var(--content-tertiary)]`,children:`Preparing checkout…`})]})}function k(){let e=a(),[t]=r(),n=S(t,g.settings.usageBilling);return(0,T.useEffect)(()=>{D(),e(n,{replace:!0})},[e,n]),null}function A(){return y()?(0,E.jsx)(k,{}):(0,E.jsx)(O,{})}export{A as CheckoutPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r,t as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useMutation-CXGTrp4W.js";import{t as c}from"./jsx-runtime-D3ZM-ToX.js";import{t as l}from"./loader-circle-BzJ2kz3F.js";import{c as u,l as d,tt as f}from"./auth-store-D55YOXDj.js";import{C as p,b as m,y as h}from"./native-biometric-K90ZnTI1.js";import{d as g}from"./routes-Dwx_Ibh9.js";import{a as _}from"./use-platform-gate-Oc-w11de.js";import{i as v}from"./use-is-org-ready-_bcxY9zb.js";import{d as y}from"./platform-detection-DyR9CV0q.js";import{n as b}from"./browser-BaaiMPkj.js";import{dt as x}from"./react-query.gen-BGUTzcTG.js";import{n as S,r as C}from"./checkout-continuation-D_v04HPX.js";import{t as w}from"./checkout-return-target-CCfHmNHP.js";var T=e(t(),1),E=c();function D(){m(),d()}function O(){let e=a(),[t]=r(),c=t.get(`package`)??``,d=(0,T.useMemo)(()=>c?null:h(t),[c,t]),m=_(),y=v(),O=C(),k=S(t,g.plans),A=k===g.plans?`View plans`:`Continue setup`,j=o(),{mutateAsync:M}=s(x()),[N,P]=(0,T.useState)(!1),[F,I]=(0,T.useState)(!1),L=(0,T.useRef)(`idle`),R=(0,T.useCallback)(async()=>{L.current=`running`,P(!1),I(!1);let t=w();try{let n=await M({body:d?{target_plan_id:`pro`,confirm:!0,machine_tier:d.machineTier,storage_tier:d.storageTier,credit_tier:d.creditTier,return_target:t}:{target_plan_id:`pro`,package:c,confirm:!0,return_target:t}});if(L.current!==`running`)return;if(n.status===`redirect`&&n.checkout_url){L.current=`handed_off`,p(d?{kind:`custom`,machineTier:d.machineTier,storageTier:d.storageTier,creditTier:d.creditTier}:{kind:`package`,packageKey:c}),u(j),I(t===`native`),b(n.checkout_url);return}L.current=`settled`,D(),e(k===g.plans&&c?g.plansForPackage(c):k,{replace:!0})}catch{if(L.current!==`running`)return;L.current=`settled`,P(!0)}},[k,d,M,e,c,j]),z=(0,T.useCallback)(()=>{if(y===`ready`){R();return}L.current=`idle`,P(!1),I(!1),y===`unavailable`&&f.getState().fetchOrganizations()},[y,R]);return(0,T.useEffect)(()=>{if(!c&&!d||m===`disabled`||m===`gated`||O===`disabled`){if(L.current===`handed_off`)return;L.current=`settled`,D(),e(k,{replace:!0});return}if(!(O!==`enabled`||m!==`full`||L.current!==`idle`)&&y!==`resolving`){if(y===`unavailable`){L.current=`settled`,P(!0);return}R()}},[k,d,m,e,y,c,R,O]),N?(0,E.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,E.jsx)(`p`,{className:`text-[var(--content-default)]`,children:`We couldn’t start your checkout. Please try again.`}),(0,E.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,E.jsx)(n,{onClick:z,children:`Try again`}),(0,E.jsx)(i,{to:k,onClick:D,className:`text-sm text-[var(--content-tertiary)] underline`,children:A})]})]}):F?(0,E.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,E.jsx)(`p`,{className:`text-[var(--content-default)]`,children:`Checkout opened in your browser. Finish there to complete your upgrade.`}),(0,E.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,E.jsx)(n,{onClick:z,children:`Reopen checkout`}),(0,E.jsx)(i,{to:k,className:`text-sm text-[var(--content-tertiary)] underline`,children:A})]})]}):(0,E.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3`,children:[(0,E.jsx)(l,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`,"aria-label":`Preparing checkout`}),(0,E.jsx)(`p`,{className:`text-sm text-[var(--content-tertiary)]`,children:`Preparing checkout…`})]})}function k(){let e=a(),[t]=r(),n=S(t,g.settings.usageBilling);return(0,T.useEffect)(()=>{D(),e(n,{replace:!0})},[e,n]),null}function A(){return y()?(0,E.jsx)(k,{}):(0,E.jsx)(O,{})}export{A as CheckoutPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{c as r,i,n as a,o,t as s}from"./use-command-palette-sections-BSC2Wkt_.js";import{n as c}from"./resolved-assistants-store-BhBxUDAA.js";import{Q as l,i as u,n as d,s as f}from"./auth-store-QpgWmI2t.js";import{t as p}from"./use-app-theme-zRTnLVcX.js";import{i as m}from"./conversation-queries-Bd0Kbom7.js";import{CommandPalette as h}from"./command-palette-BBRFAg9g.js";var g=e(t(),1),_=n(),v=()=>void 0,y=e=>void 0,b=e=>{switch(e.id){case`action-new-conversation`:return{kind:`newConversation`};case`action-current-conversation`:return{kind:`currentConversation`};case`action-settings`:return{kind:`openSettings`};case`action-library`:return{kind:`openLibrary`};case`action-intelligence`:return{kind:`openIdentity`};default:return e.id.startsWith(`conv-`)?{kind:`openConversation`,conversationId:e.id.slice(5)}:e.id.startsWith(`search-conv-`)?{kind:`openConversation`,conversationId:e.id.slice(12)}:e.id.startsWith(`search-schedule-`)||e.id.startsWith(`search-contact-`)?{kind:`openIdentity`}:null}};function x(){let e=d.use.sessionStatus(),t=f(),n=u();p(),o(!t),r({sessionStatus:e,hasPlatformSession:n});let x=c.use.assistants(),S=c.use.activeAssistantId(),C=l(),w=(0,g.useMemo)(()=>{let e=C??S;if(!e)return null;let t=x.find(t=>t.id===e);return t?{id:t.id,name:t.name}:null},[C,S,x]),T=w?.id??null,{conversations:E}=m(T,!0),D=(0,g.useCallback)(e=>{let t=b(e);t&&i(t)},[]),{commandPalette:O,mergedSections:k,handleItemSelect:A}=s({assistantId:T,assistantName:w?.name,conversations:E,activeConversationId:void 0,startNewConversation:v,switchConversation:v,navigate:y,navigateToSettings:v,isOpen:!0,onClose:()=>{a()},onItemSelect:D});return(0,_.jsx)(`div`,{className:`h-screen w-screen bg-transparent`,children:(0,_.jsx)(h,{isOpen:!0,surface:`window`,onClose:O.close,query:O.query,onQueryChange:O.setQuery,highlightTokens:O.searchTokens,selectedIndex:O.selectedIndex,sections:k,isSearching:O.isSearching,onItemSelect:A,onKeyDown:O.handleKeyDown})})}export{x as CommandPaletteWindowPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{c as r,i,n as a,o,t as s}from"./use-command-palette-sections-DF0iyH53.js";import{n as c}from"./resolved-assistants-store-BhBxUDAA.js";import{Q as l,i as u,n as d,s as f}from"./auth-store-D55YOXDj.js";import{t as p}from"./use-app-theme-zRTnLVcX.js";import{i as m}from"./conversation-queries-B31vm-Y1.js";import{CommandPalette as h}from"./command-palette-BBRFAg9g.js";var g=e(t(),1),_=n(),v=()=>void 0,y=e=>void 0,b=e=>{switch(e.id){case`action-new-conversation`:return{kind:`newConversation`};case`action-current-conversation`:return{kind:`currentConversation`};case`action-settings`:return{kind:`openSettings`};case`action-library`:return{kind:`openLibrary`};case`action-intelligence`:return{kind:`openIdentity`};default:return e.id.startsWith(`conv-`)?{kind:`openConversation`,conversationId:e.id.slice(5)}:e.id.startsWith(`search-conv-`)?{kind:`openConversation`,conversationId:e.id.slice(12)}:e.id.startsWith(`search-schedule-`)||e.id.startsWith(`search-contact-`)?{kind:`openIdentity`}:null}};function x(){let e=d.use.sessionStatus(),t=f(),n=u();p(),o(!t),r({sessionStatus:e,hasPlatformSession:n});let x=c.use.assistants(),S=c.use.activeAssistantId(),C=l(),w=(0,g.useMemo)(()=>{let e=C??S;if(!e)return null;let t=x.find(t=>t.id===e);return t?{id:t.id,name:t.name}:null},[C,S,x]),T=w?.id??null,{conversations:E}=m(T,!0),D=(0,g.useCallback)(e=>{let t=b(e);t&&i(t)},[]),{commandPalette:O,mergedSections:k,handleItemSelect:A}=s({assistantId:T,assistantName:w?.name,conversations:E,activeConversationId:void 0,startNewConversation:v,switchConversation:v,navigate:y,navigateToSettings:v,isOpen:!0,onClose:()=>{a()},onItemSelect:D});return(0,_.jsx)(`div`,{className:`h-screen w-screen bg-transparent`,children:(0,_.jsx)(h,{isOpen:!0,surface:`window`,onClose:O.close,query:O.query,onQueryChange:O.setQuery,highlightTokens:O.searchTokens,selectedIndex:O.selectedIndex,sections:k,isSearching:O.isSearching,onItemSelect:A,onKeyDown:O.handleKeyDown})})}export{x as CommandPaletteWindowPage};
@@ -1 +1 @@
1
- import{t as e}from"./useQuery-Bz-fbQ-m.js";import{r as t}from"./use-is-org-ready-B4ouZE2v.js";import{O as n}from"./react-query.gen-Cnk5tcFs.js";import{a as r,p as i,r as a,t as o}from"./conversation-list-fetchers-BZnx9EMN.js";var s=[],c=[];function l(n,i=!0){let a=t(),o=e({...r(n),enabled:i&&!!n&&a});return{conversations:o.data??s,isLoading:o.isLoading,isPending:o.isPending,isError:o.isError,error:o.error,refetch:()=>{o.refetch()}}}function u(n,r=!0){let i=t(),o=e({...a(n),enabled:r&&!!n&&i});return{conversations:o.data??s,isLoading:o.isLoading,isPending:o.isPending,isError:o.isError,refetch:()=>{o.refetch()}}}function d(n,r=!0){let a=t(),o=e({...i(n),enabled:r&&!!n&&a});return{conversations:o.data??s,isLoading:o.isLoading,isPending:o.isPending,isError:o.isError,refetch:()=>{o.refetch()}}}function f(n,r=!0){let i=t(),a=e({...o(n),enabled:r&&!!n&&i});return{conversations:a.data??s,isLoading:a.isLoading,isPending:a.isPending,isError:a.isError,error:a.error,refetch:()=>{a.refetch()}}}function p(r,i=!0){let a=t(),o=e({...n({path:{assistant_id:r??``}}),select:e=>e.groups,enabled:i&&!!r&&a,staleTime:3e4});return{conversationGroups:o.data??c,isLoading:o.isLoading}}export{d as a,l as i,u as n,p as r,f as t};
1
+ import{t as e}from"./useQuery-Bz-fbQ-m.js";import{r as t}from"./use-is-org-ready-_bcxY9zb.js";import{O as n}from"./react-query.gen-Cnk5tcFs.js";import{a as r,p as i,r as a,t as o}from"./conversation-list-fetchers-BZnx9EMN.js";var s=[],c=[];function l(n,i=!0){let a=t(),o=e({...r(n),enabled:i&&!!n&&a});return{conversations:o.data??s,isLoading:o.isLoading,isPending:o.isPending,isError:o.isError,error:o.error,refetch:()=>{o.refetch()}}}function u(n,r=!0){let i=t(),o=e({...a(n),enabled:r&&!!n&&i});return{conversations:o.data??s,isLoading:o.isLoading,isPending:o.isPending,isError:o.isError,refetch:()=>{o.refetch()}}}function d(n,r=!0){let a=t(),o=e({...i(n),enabled:r&&!!n&&a});return{conversations:o.data??s,isLoading:o.isLoading,isPending:o.isPending,isError:o.isError,refetch:()=>{o.refetch()}}}function f(n,r=!0){let i=t(),a=e({...o(n),enabled:r&&!!n&&i});return{conversations:a.data??s,isLoading:a.isLoading,isPending:a.isPending,isError:a.isError,error:a.error,refetch:()=>{a.refetch()}}}function p(r,i=!0){let a=t(),o=e({...n({path:{assistant_id:r??``}}),select:e=>e.groups,enabled:i&&!!r&&a,staleTime:3e4});return{conversationGroups:o.data??c,isLoading:o.isLoading}}export{d as a,l as i,u as n,p as r,f as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{r as t}from"./capture-error-FWzaVb8P.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-Dy5001j6.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./card-DRIctGVs.js";import{t as c}from"./check-sC49_hjU.js";import{t as l}from"./chevron-down-B5A-0g8A.js";import{o as u}from"./list-row-BYrmPIC4.js";import{t as d}from"./eye-off-fuOP4Lij.js";import{t as f}from"./eye-DTyDWiqu.js";import{t as p}from"./key-round-CSc3w5ka.js";import{t as m}from"./link-2-BMNZFfWH.js";import{t as h}from"./loader-circle-BzJ2kz3F.js";import{t as g}from"./plus-JG7kWjHA.js";import{t as _}from"./search-DA3TmTuR.js";import{t as v}from"./trash-2-De6X8YiM.js";import{M as y}from"./src-BAS7a2RG.js";import{t as b}from"./tag-D8NAGb0r.js";import{t as x}from"./popover-BFL-uOLh.js";import{t as S}from"./input-C-GkeWCw.js";import{t as C}from"./modal-DwsThLGg.js";import{n as w,t as T}from"./panel-item-DGs4s9r-.js";import{n as E}from"./toast-DR7D7Uma.js";import{t as D}from"./confirm-dialog-DZX6LhLy.js";import{t as O}from"./assistant-identity-store-Dnh8WRHU.js";import{Kr as k,dt as A,ut as j}from"./sdk.gen-BySz4QYj.js";import{r as M}from"./use-is-org-ready-B4ouZE2v.js";import{qt as N}from"./react-query.gen-Cnk5tcFs.js";import{n as P}from"./use-is-mobile-Cx2xnNUx.js";import{t as F}from"./copy-to-clipboard-DaTa8Tbi.js";import{t as I}from"./use-active-assistant-id-AtGy8p_R.js";import{n as L,t as R}from"./add-credential-modal-3ITDo6US.js";import{t as z}from"./not-found-DnD6OHOk.js";import{t as B}from"./detail-card-D-5EWmAS.js";import{t as V}from"./use-supports-credentials-settings-Buo2Yw66.js";var H=e(n(),1),U=o(),W=1500;function G(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function ee({credential:e,assistantId:t,generatingLink:n,deleting:r,onGenerateLink:i,onDelete:a}){let o=`${e.service}:${e.field}`,[c,l]=(0,H.useState)(!1),u=[e.alias?o:null,e.createdAt?`added ${G(e.createdAt)}`:null].filter(e=>!!e);return(0,U.jsx)(s.Root,{children:(0,U.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,U.jsx)(p,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||o}),(0,U.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,U.jsx)(K,{assistantId:t,credential:e})}),u.length>0&&(0,U.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:u.join(` · `)})]}),(0,U.jsx)(`div`,{className:`shrink-0`,children:(0,U.jsx)(q,{name:o,open:c,onOpenChange:l,generatingLink:n,deleting:r,onGenerateLink:()=>{l(!1),i()},onDelete:()=>{l(!1),a()}})})]})})}function K({assistantId:e,credential:t}){let[n,r]=(0,H.useState)(null),[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(!1),l=(0,H.useRef)(null),p=(0,H.useRef)(0),m=`${t.service}:${t.field}`,g=(0,H.useCallback)(()=>{p.current++,r(null),a(!1),s(!1),l.current&&=(clearTimeout(l.current),null)},[]);(0,H.useEffect)(()=>{g()},[t.updatedAt,g]);let _=(0,H.useCallback)(async()=>{let n=++p.current;a(!0);try{let{data:i}=await A({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});p.current===n&&r(i.value)}catch{p.current===n&&E.error(`Couldn't reveal ${m}.`)}finally{p.current===n&&a(!1)}},[e,t.service,t.field,m]),v=(0,H.useCallback)(()=>{n!=null&&F(n,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{s(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>s(!1),W)}})},[n]),y=n!==null;return t.hasSecret?(0,U.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>y?g():void _(),disabled:i,"aria-label":y?`Hide value for ${m}`:`Reveal value for ${m}`,title:y?`Hide value`:`Click to reveal`,"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${y?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:y?n:t.scrubbedValue}),i?(0,U.jsx)(h,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):y?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`button`,{type:`button`,onClick:v,"aria-label":`Copy value for ${m}`,title:`Copy value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:o?(0,U.jsx)(c,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,U.jsx)(u,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,U.jsx)(`button`,{type:`button`,onClick:g,"aria-label":`Hide value for ${m}`,title:`Hide value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,U.jsx)(d,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,U.jsx)(`button`,{type:`button`,onClick:()=>void _(),"aria-label":`Reveal value for ${m}`,title:`Click to reveal`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,U.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,U.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function q({name:e,open:t,onOpenChange:n,generatingLink:i,deleting:a,onGenerateLink:o,onDelete:s}){let c=P(),u=i||a,d=(0,U.jsx)(r,{variant:`outlined`,rightIcon:(0,U.jsx)(l,{}),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Configure ${e}`,leftIcon:u?(0,U.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:`Configure`});return c?(0,U.jsxs)(w.Root,{open:t,onOpenChange:n,children:[(0,U.jsx)(w.Trigger,{asChild:!0,children:d}),(0,U.jsxs)(w.Content,{children:[(0,U.jsx)(w.Header,{children:(0,U.jsx)(w.Title,{children:e})}),(0,U.jsxs)(w.Body,{children:[(0,U.jsx)(T,{icon:i?h:m,label:`Generate link`,onSelect:()=>{u||o()}}),(0,U.jsx)(T,{icon:a?h:v,label:`Delete`,onSelect:()=>{u||s()}})]})]})]}):(0,U.jsxs)(x.Root,{open:t,onOpenChange:n,children:[(0,U.jsx)(x.Trigger,{asChild:!0,children:d}),(0,U.jsxs)(x.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,U.jsx)(r,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:o,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:i?(0,U.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,U.jsx)(m,{"aria-hidden":!0}),children:`Generate link`}),(0,U.jsx)(r,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:s,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:a?(0,U.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,U.jsx)(v,{"aria-hidden":!0}),children:`Delete`})]})]})}function te(e){return e>0xe8d4a51000?e:e*1e3}async function ne(e,t){let{data:n,response:r}=await k.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var J=6;function Y(){let e=I(),t=V(e),n=O.use.assistantId();return O.use.version()!==null&&n===e&&!t?(0,U.jsx)(z,{}):t?(0,U.jsx)(X,{}):null}function X(){let e=I(),n=i(),o=M(),c=L(e),l=a({queryKey:c,queryFn:async()=>{let{data:t}=await j({path:{assistant_id:e},body:{},throwOnError:!0});return{credentials:t.credentials,managedCredentials:t.managedCredentials}},enabled:o,retry:t}),d=(0,H.useMemo)(()=>l.data?.credentials??[],[l.data]),f=(0,H.useMemo)(()=>l.data?.managedCredentials??[],[l.data]),v=N({onError:e=>{E.error(e.message||`Failed to delete credential`)}}),[x,w]=(0,H.useState)(!1),[T,O]=(0,H.useState)(`own`),[k,A]=(0,H.useState)(``),[P,z]=(0,H.useState)(null),[V,W]=(0,H.useState)(null),[G,K]=(0,H.useState)(null),q=v.isPending?`${v.variables?.body?.service}:${v.variables?.body?.field}`:null,Y=(0,H.useMemo)(()=>{let e=k.trim().toLowerCase();return e?d.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):d},[d,k]);(0,H.useEffect)(()=>{d.length<=J&&A(``)},[d.length]),(0,H.useEffect)(()=>{d.length===0&&f.length>0&&O(`managed`)},[d.length,f.length]);let X=()=>{let t=P;z(null),t&&v.mutate({path:{assistant_id:e},body:{service:t.service,field:t.field}},{onSuccess:()=>{n.invalidateQueries({queryKey:c}),E.success(`Deleted ${t.service}:${t.field}.`)}})},re=async t=>{let n=`${t.service}:${t.field}`;K(n);try{let r=await ne(e,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?W({name:n,url:r.url,expiresAt:r.expiresAt??null}):E.error(r.error||`Failed to generate a one-time link`)}catch(e){E.error(e instanceof Error?e.message:`Failed to generate a one-time link`)}finally{K(null)}},ie=()=>{let e=V?.url;e&&F(e,{successMessage:`Link copied to clipboard.`,errorMessage:`Couldn't copy the link. Select it and copy manually.`})};if(l.isLoading)return(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(h,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=d.length>0,Q=f.length>0,ae=d.length>J,$=T===`managed`&&Q;return(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsx)(B,{title:`Credentials`,subtitle:$?`Provided through your Vellum-managed integrations. These are read-only here.`:`Stored encrypted in your assistant's credential vault. Reveal a value on demand, or replace or delete it at any time.`,accessory:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,U.jsx)(y,{items:[{value:`own`,label:`Your own`},{value:`managed`,label:`Managed`}],value:T,onChange:O,ariaLabel:`Credential source`}):null,!$&&Z?(0,U.jsx)(r,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>w(!0),leftIcon:(0,U.jsx)(g,{"aria-hidden":!0}),children:`Add`}):null]}),children:$?(0,U.jsx)(`div`,{className:`space-y-2`,children:f.map(e=>(0,U.jsx)(s.Root,{children:(0,U.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,U.jsx)(p,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.provider}),(0,U.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[e.accountInfo??e.handle,` · `,e.status]})]}),(0,U.jsx)(b,{tone:`neutral`,children:`Managed`})]})},e.handle))}):(0,U.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,U.jsxs)(`div`,{className:`space-y-3`,children:[ae?(0,U.jsx)(S,{type:`text`,value:k,onChange:e=>A(e.target.value),placeholder:`Search credentials`,"aria-label":`Search credentials`,leftIcon:(0,U.jsx)(_,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,U.jsxs)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No credentials matched “`,k.trim(),`”.`]}):(0,U.jsx)(`div`,{className:`space-y-2`,children:Y.map(t=>{let n=`${t.service}:${t.field}`;return(0,U.jsx)(ee,{credential:t,assistantId:e,generatingLink:G===n,deleting:q===n,onGenerateLink:()=>void re(t),onDelete:()=>z(t)},t.credentialId??n)})})]}):(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,U.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,U.jsx)(p,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,U.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No credentials yet`}),(0,U.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Add an API key or token to let tools and integrations use it.`})]}),Z?null:(0,U.jsx)(r,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>w(!0),className:`w-full border-dashed`,leftIcon:(0,U.jsx)(g,{"aria-hidden":!0}),children:`Add Credential`})]})}),(0,U.jsx)(D,{open:P!==null,title:`Delete credential`,message:P?`Delete ${P.service}:${P.field}? Tools and integrations using it will lose access.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:X,onCancel:()=>z(null)}),(0,U.jsx)(R,{open:x,onClose:()=>w(!1)}),(0,U.jsx)(C.Root,{open:V!==null,onOpenChange:e=>{e||W(null)},children:(0,U.jsxs)(C.Content,{size:`sm`,children:[(0,U.jsxs)(C.Header,{children:[(0,U.jsx)(C.Title,{icon:m,children:`One-time credential link`}),(0,U.jsx)(C.Description,{children:V?`Send this link to whoever should provide ${V.name}. It works exactly once${V.expiresAt===null?``:` and expires ${new Date(te(V.expiresAt)).toLocaleString()}`}. Anyone with the link can set this credential, so share it over a trusted channel.`:``})]}),(0,U.jsx)(C.Body,{children:(0,U.jsx)(S,{label:`Link`,type:`text`,readOnly:!0,value:V?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,U.jsx)(C.Footer,{children:(0,U.jsx)(r,{type:`button`,size:`compact`,onClick:ie,leftIcon:(0,U.jsx)(u,{"aria-hidden":!0}),children:`Copy link`})})]})})]})}export{Y as CredentialsPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{r as t}from"./capture-error-FWzaVb8P.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-Dy5001j6.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./card-DRIctGVs.js";import{t as c}from"./check-sC49_hjU.js";import{t as l}from"./chevron-down-B5A-0g8A.js";import{o as u}from"./list-row-BYrmPIC4.js";import{t as d}from"./eye-off-fuOP4Lij.js";import{t as f}from"./eye-DTyDWiqu.js";import{t as p}from"./key-round-CSc3w5ka.js";import{t as m}from"./link-2-BMNZFfWH.js";import{t as h}from"./loader-circle-BzJ2kz3F.js";import{t as g}from"./plus-JG7kWjHA.js";import{t as _}from"./search-DA3TmTuR.js";import{t as v}from"./trash-2-De6X8YiM.js";import{M as y}from"./src-BAS7a2RG.js";import{t as b}from"./tag-D8NAGb0r.js";import{t as x}from"./popover-BFL-uOLh.js";import{t as S}from"./input-C-GkeWCw.js";import{t as C}from"./modal-DwsThLGg.js";import{n as w,t as T}from"./panel-item-DGs4s9r-.js";import{n as E}from"./toast-DR7D7Uma.js";import{t as D}from"./confirm-dialog-DZX6LhLy.js";import{t as O}from"./assistant-identity-store-Dnh8WRHU.js";import{Kr as k,dt as A,ut as j}from"./sdk.gen-BySz4QYj.js";import{r as M}from"./use-is-org-ready-_bcxY9zb.js";import{qt as N}from"./react-query.gen-Cnk5tcFs.js";import{n as P}from"./use-is-mobile-Cx2xnNUx.js";import{t as F}from"./copy-to-clipboard-DaTa8Tbi.js";import{t as I}from"./use-active-assistant-id-AtGy8p_R.js";import{n as L,t as R}from"./add-credential-modal-3ITDo6US.js";import{t as z}from"./not-found-DnD6OHOk.js";import{t as B}from"./detail-card-D-5EWmAS.js";import{t as V}from"./use-supports-credentials-settings-Buo2Yw66.js";var H=e(n(),1),U=o(),W=1500;function G(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function ee({credential:e,assistantId:t,generatingLink:n,deleting:r,onGenerateLink:i,onDelete:a}){let o=`${e.service}:${e.field}`,[c,l]=(0,H.useState)(!1),u=[e.alias?o:null,e.createdAt?`added ${G(e.createdAt)}`:null].filter(e=>!!e);return(0,U.jsx)(s.Root,{children:(0,U.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,U.jsx)(p,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||o}),(0,U.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,U.jsx)(K,{assistantId:t,credential:e})}),u.length>0&&(0,U.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:u.join(` · `)})]}),(0,U.jsx)(`div`,{className:`shrink-0`,children:(0,U.jsx)(q,{name:o,open:c,onOpenChange:l,generatingLink:n,deleting:r,onGenerateLink:()=>{l(!1),i()},onDelete:()=>{l(!1),a()}})})]})})}function K({assistantId:e,credential:t}){let[n,r]=(0,H.useState)(null),[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(!1),l=(0,H.useRef)(null),p=(0,H.useRef)(0),m=`${t.service}:${t.field}`,g=(0,H.useCallback)(()=>{p.current++,r(null),a(!1),s(!1),l.current&&=(clearTimeout(l.current),null)},[]);(0,H.useEffect)(()=>{g()},[t.updatedAt,g]);let _=(0,H.useCallback)(async()=>{let n=++p.current;a(!0);try{let{data:i}=await A({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});p.current===n&&r(i.value)}catch{p.current===n&&E.error(`Couldn't reveal ${m}.`)}finally{p.current===n&&a(!1)}},[e,t.service,t.field,m]),v=(0,H.useCallback)(()=>{n!=null&&F(n,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{s(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>s(!1),W)}})},[n]),y=n!==null;return t.hasSecret?(0,U.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>y?g():void _(),disabled:i,"aria-label":y?`Hide value for ${m}`:`Reveal value for ${m}`,title:y?`Hide value`:`Click to reveal`,"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${y?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:y?n:t.scrubbedValue}),i?(0,U.jsx)(h,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):y?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`button`,{type:`button`,onClick:v,"aria-label":`Copy value for ${m}`,title:`Copy value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:o?(0,U.jsx)(c,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,U.jsx)(u,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,U.jsx)(`button`,{type:`button`,onClick:g,"aria-label":`Hide value for ${m}`,title:`Hide value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,U.jsx)(d,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,U.jsx)(`button`,{type:`button`,onClick:()=>void _(),"aria-label":`Reveal value for ${m}`,title:`Click to reveal`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,U.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,U.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function q({name:e,open:t,onOpenChange:n,generatingLink:i,deleting:a,onGenerateLink:o,onDelete:s}){let c=P(),u=i||a,d=(0,U.jsx)(r,{variant:`outlined`,rightIcon:(0,U.jsx)(l,{}),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Configure ${e}`,leftIcon:u?(0,U.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:`Configure`});return c?(0,U.jsxs)(w.Root,{open:t,onOpenChange:n,children:[(0,U.jsx)(w.Trigger,{asChild:!0,children:d}),(0,U.jsxs)(w.Content,{children:[(0,U.jsx)(w.Header,{children:(0,U.jsx)(w.Title,{children:e})}),(0,U.jsxs)(w.Body,{children:[(0,U.jsx)(T,{icon:i?h:m,label:`Generate link`,onSelect:()=>{u||o()}}),(0,U.jsx)(T,{icon:a?h:v,label:`Delete`,onSelect:()=>{u||s()}})]})]})]}):(0,U.jsxs)(x.Root,{open:t,onOpenChange:n,children:[(0,U.jsx)(x.Trigger,{asChild:!0,children:d}),(0,U.jsxs)(x.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,U.jsx)(r,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:o,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:i?(0,U.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,U.jsx)(m,{"aria-hidden":!0}),children:`Generate link`}),(0,U.jsx)(r,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:s,disabled:u,className:`w-full justify-start rounded-none`,leftIcon:a?(0,U.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,U.jsx)(v,{"aria-hidden":!0}),children:`Delete`})]})]})}function te(e){return e>0xe8d4a51000?e:e*1e3}async function ne(e,t){let{data:n,response:r}=await k.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var J=6;function Y(){let e=I(),t=V(e),n=O.use.assistantId();return O.use.version()!==null&&n===e&&!t?(0,U.jsx)(z,{}):t?(0,U.jsx)(X,{}):null}function X(){let e=I(),n=i(),o=M(),c=L(e),l=a({queryKey:c,queryFn:async()=>{let{data:t}=await j({path:{assistant_id:e},body:{},throwOnError:!0});return{credentials:t.credentials,managedCredentials:t.managedCredentials}},enabled:o,retry:t}),d=(0,H.useMemo)(()=>l.data?.credentials??[],[l.data]),f=(0,H.useMemo)(()=>l.data?.managedCredentials??[],[l.data]),v=N({onError:e=>{E.error(e.message||`Failed to delete credential`)}}),[x,w]=(0,H.useState)(!1),[T,O]=(0,H.useState)(`own`),[k,A]=(0,H.useState)(``),[P,z]=(0,H.useState)(null),[V,W]=(0,H.useState)(null),[G,K]=(0,H.useState)(null),q=v.isPending?`${v.variables?.body?.service}:${v.variables?.body?.field}`:null,Y=(0,H.useMemo)(()=>{let e=k.trim().toLowerCase();return e?d.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):d},[d,k]);(0,H.useEffect)(()=>{d.length<=J&&A(``)},[d.length]),(0,H.useEffect)(()=>{d.length===0&&f.length>0&&O(`managed`)},[d.length,f.length]);let X=()=>{let t=P;z(null),t&&v.mutate({path:{assistant_id:e},body:{service:t.service,field:t.field}},{onSuccess:()=>{n.invalidateQueries({queryKey:c}),E.success(`Deleted ${t.service}:${t.field}.`)}})},re=async t=>{let n=`${t.service}:${t.field}`;K(n);try{let r=await ne(e,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?W({name:n,url:r.url,expiresAt:r.expiresAt??null}):E.error(r.error||`Failed to generate a one-time link`)}catch(e){E.error(e instanceof Error?e.message:`Failed to generate a one-time link`)}finally{K(null)}},ie=()=>{let e=V?.url;e&&F(e,{successMessage:`Link copied to clipboard.`,errorMessage:`Couldn't copy the link. Select it and copy manually.`})};if(l.isLoading)return(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(h,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=d.length>0,Q=f.length>0,ae=d.length>J,$=T===`managed`&&Q;return(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsx)(B,{title:`Credentials`,subtitle:$?`Provided through your Vellum-managed integrations. These are read-only here.`:`Stored encrypted in your assistant's credential vault. Reveal a value on demand, or replace or delete it at any time.`,accessory:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,U.jsx)(y,{items:[{value:`own`,label:`Your own`},{value:`managed`,label:`Managed`}],value:T,onChange:O,ariaLabel:`Credential source`}):null,!$&&Z?(0,U.jsx)(r,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>w(!0),leftIcon:(0,U.jsx)(g,{"aria-hidden":!0}),children:`Add`}):null]}),children:$?(0,U.jsx)(`div`,{className:`space-y-2`,children:f.map(e=>(0,U.jsx)(s.Root,{children:(0,U.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,U.jsx)(p,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.provider}),(0,U.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[e.accountInfo??e.handle,` · `,e.status]})]}),(0,U.jsx)(b,{tone:`neutral`,children:`Managed`})]})},e.handle))}):(0,U.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,U.jsxs)(`div`,{className:`space-y-3`,children:[ae?(0,U.jsx)(S,{type:`text`,value:k,onChange:e=>A(e.target.value),placeholder:`Search credentials`,"aria-label":`Search credentials`,leftIcon:(0,U.jsx)(_,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,U.jsxs)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No credentials matched “`,k.trim(),`”.`]}):(0,U.jsx)(`div`,{className:`space-y-2`,children:Y.map(t=>{let n=`${t.service}:${t.field}`;return(0,U.jsx)(ee,{credential:t,assistantId:e,generatingLink:G===n,deleting:q===n,onGenerateLink:()=>void re(t),onDelete:()=>z(t)},t.credentialId??n)})})]}):(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,U.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,U.jsx)(p,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,U.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No credentials yet`}),(0,U.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Add an API key or token to let tools and integrations use it.`})]}),Z?null:(0,U.jsx)(r,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>w(!0),className:`w-full border-dashed`,leftIcon:(0,U.jsx)(g,{"aria-hidden":!0}),children:`Add Credential`})]})}),(0,U.jsx)(D,{open:P!==null,title:`Delete credential`,message:P?`Delete ${P.service}:${P.field}? Tools and integrations using it will lose access.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:X,onCancel:()=>z(null)}),(0,U.jsx)(R,{open:x,onClose:()=>w(!1)}),(0,U.jsx)(C.Root,{open:V!==null,onOpenChange:e=>{e||W(null)},children:(0,U.jsxs)(C.Content,{size:`sm`,children:[(0,U.jsxs)(C.Header,{children:[(0,U.jsx)(C.Title,{icon:m,children:`One-time credential link`}),(0,U.jsx)(C.Description,{children:V?`Send this link to whoever should provide ${V.name}. It works exactly once${V.expiresAt===null?``:` and expires ${new Date(te(V.expiresAt)).toLocaleString()}`}. Anyone with the link can set this credential, so share it over a trusted channel.`:``})]}),(0,U.jsx)(C.Body,{children:(0,U.jsx)(S,{label:`Link`,type:`text`,readOnly:!0,value:V?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,U.jsx)(C.Footer,{children:(0,U.jsx)(r,{type:`button`,size:`compact`,onClick:ie,leftIcon:(0,U.jsx)(u,{"aria-hidden":!0}),children:`Copy link`})})]})})]})}export{Y as CredentialsPage};