const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["https://assets-proxy.anthropic.com/claude-ai/v2/assets/v1/vendor-ant-cds-G1fENYYx.css","https://assets-proxy.anthropic.com/claude-ai/v2/assets/v1/c818056db-BjS1Z-Ak.css"])))=>i.map(i=>d[i]);
import{si as e,h as t,a3 as r,ae as s,jb as n,y as a,m as o,ad as i,sj as c,dj as d,sk as u,gc as l,sl as p,sm as m,sn as h,g2 as f,nB as g,nC as y,so as v,sp as _,dH as b,sq as C,kJ as x,g4 as I,a9 as S,an as A,w as E,x as k,sr as w,b3 as M,hY as j,B as N,V as T,ss as U,mz as O,st as L,su as R,sv as D,sw as P,sx as F,q as z,k as G,sy as K,sz as B,sA as H,sB as V,sC as q,g6 as $,sD as W,i7 as Y,h1 as Z,se as Q,cO as J,hD as X,sE as ee,kK as te,kM as re,sF as se,sG as ne,s as ae,jC as oe,aC as ie,a0 as ce,sH as de,sI as ue,sJ as le,L as pe,et as me,h2 as he,gW as fe,cX as ge,sK as ye,u as ve,gY as _e,sL as be,sM as Ce,v as xe,sN as Ie,i0 as Se,sO as Ae,g7 as Ee,sP as ke,b9 as we,f as Me}from"./c818056db-BBpc4u6S.js";import{r as je,j as Ne,_ as Te}from"./vendor-react-RSDKEZ60.js";import{M as Ue,u as Oe}from"./vendor-intl-BNW8a19h.js";import{w as Le,u as Re,E as De,b as Pe,F as Fe,a as ze}from"./cbf215181-BtpZx0Q9.js";import{u as Ge,a as Ke}from"./vendor-query-AdjnXGiH.js";import{o as Be,a as He,s as Ve,p as qe}from"./vendor-zod-D1-NLVm9.js";import{H as $e,D as We,B as Ye,o as Ze,t as Qe,I as Je,S as Xe,f as et,T as tt,l as rt}from"./vendor-ant-cds-CBh5POw1.js";import{ag as st}from"./vendor-icons-CjJMeNuY.js";import{c as nt}from"./vendor-zustand-IIUY2Tf-.js";const at=({state:t,...r})=>Ne.jsx(e,{...r}),ot=je.lazy(()=>Te(()=>import("./cad8c092d-BtUkKIQ-.js"),__vite__mapDeps([0,1]),import.meta.url).then(e=>({default:e?.SparkAnimated??at}))),it=({state:t,...r})=>void 0===t||"idle"===t?Ne.jsx(e,{...r}):Ne.jsx(je.Suspense,{fallback:Ne.jsx(e,{...r}),children:Ne.jsx(ot,{state:t,...r})});it.displayName="Spark";const ct=je.memo(it),dt=[".claude.com",".fedstart.com"];function ut(e){return!!e&&(!!dt.some(t=>e.hostname.endsWith(t))&&(e.hostname.startsWith("microsoft365.mcp.")||e.pathname.includes("/m365/")))}function lt(e){if(!e?.url||e.custom_oauth_client_id)return!1;try{return ut(new URL(e.url))}catch{return!1}}const pt=[{label:"Microsoft 365",item:{name:"m365",url:"https://microsoft365.mcp.claude.com/mcp",transport:"http",oauth:{scope:"api://07c030f6-5743-41b7-ba00-0a6e85f37c17/access_as_user offline_access"}}},{label:"Box",item:{name:"box",url:"https://mcp.box.com",transport:"http",oauth:{authorizationServer:["https://api.box.com"]}}},{label:"Microsoft 365",kind:"builtin",betaFeatureKey:"microsoft365LocalConnector",item:{name:"Microsoft 365",server:"microsoft365"}},{label:"Web search",kind:"builtin",item:{name:"Web search",server:"websearch",provider:"brave"}}];function mt(){return"private-api"}const ht="This application requires one of these plans",ft="This application is not authorized",gt="Your subscription payment is past due",yt="subscription_past_due",vt="session_stale_relogin",_t={"user:profile":{messageId:"oauth.scope.user.profile",description:Ne.jsx(Ue,{defaultMessage:"Access your Anthropic profile information",id:"EvXAQK/bGO"})},"user:inference":{messageId:"oauth.scope.user.inference",description:Ne.jsx(Ue,{defaultMessage:"Contribute to your Claude subscription usage",id:"Srbd8zdRfZ"})},"user:data_export":{messageId:"oauth.scope.user.data_export",description:Ne.jsx(Ue,{defaultMessage:"Export a copy of your conversations, projects, and files",id:"7JP298iIRC"})},"user:developer":{messageId:"oauth.scope.user.developer",description:Ne.jsx(Ue,{defaultMessage:"Access the Claude Developer Platform on your behalf",id:"xP4LRsHGdQ"})},"workspace:developer":{messageId:"oauth.scope.workspace.developer",description:Ne.jsx(Ue,{defaultMessage:"Access the Claude Developer Platform within a workspace",id:"i2UE+509BT"})},"user:chat:read":{messageId:"oauth.scope.user.chat.read",description:Ne.jsx(Ue,{defaultMessage:"Read your conversations",id:"tP+tU2ijW1"})},"user:chat":{messageId:"oauth.scope.chat",description:Ne.jsx(Ue,{defaultMessage:"Create, continue, and delete your conversations",id:"ABf9wj7LhM"})},"user:file_upload":{messageId:"oauth.scope.user.file_upload",description:Ne.jsx(Ue,{defaultMessage:"Upload files on your behalf",id:"JIdIkswZw2"})},"user:sessions:claude_code":{messageId:"oauth.scope.user.sessions.claude_code",description:Ne.jsx(Ue,{defaultMessage:"Access your Claude Code sessions",id:"39jWfLQ2ze"})},"user:sessions:viboard":{messageId:"oauth.scope.user.sessions.viboard",description:Ne.jsx(Ue,{defaultMessage:"Create and run agent sessions on your behalf",id:"m2k1yZD6Ay"})},"user:mcp_servers":{messageId:"oauth.scope.user.mcp_servers",description:Ne.jsx(Ue,{defaultMessage:"Use and manage your connectors",id:"XUNFVA5Hbv"})},"org:profile":{messageId:"oauth.scope.org.profile",description:Ne.jsx(Ue,{defaultMessage:"Access profile information for all members in your organization",id:"5CqC2vx+3K"})},"org:inference":{messageId:"oauth.scope.org.inference",description:Ne.jsx(Ue,{defaultMessage:"Make API calls on behalf of your organization",id:"l/AJQVR0UT"})},"org:create_api_key":{messageId:"oauth.scope.org.create_api_key",description:Ne.jsx(Ue,{defaultMessage:"Generate API keys on your behalf",id:"Li8bwfrwx/"})},"org:service_key_inference":{messageId:"oauth.scope.org.service_key_inference",description:Ne.jsx(Ue,{defaultMessage:"Work on your behalf using Claude",id:"n6ivLt5Hkz"})},"org:admin":{messageId:"oauth.scope.org.admin",description:Ne.jsx(Ue,{defaultMessage:"Manage your organization: members, workspaces, API keys, and settings",id:"A/14O6Lff2"})},"user:office":{messageId:"oauth.scope.user.office",description:Ne.jsx(Ue,{defaultMessage:"Access your profile for Office add-in authentication",id:"/YkWN+yU13"})},"user:voice":{messageId:"oauth.scope.user.voice",description:Ne.jsx(Ue,{defaultMessage:"Use speech-to-text for voice input",id:"FwfnnX911W"})},"user:plugins":{messageId:"oauth.scope.user.plugins",description:Ne.jsx(Ue,{defaultMessage:"Read your installed plugins",id:"HzDQcZyyKm"})},"user:design:read":{messageId:"oauth.scope.user.design.read",description:Ne.jsx(Ue,{defaultMessage:"View your Claude Design projects",id:"H8Gxfl3nyg"})},"user:design:write":{messageId:"oauth.scope.user.design.write",description:Ne.jsx(Ue,{defaultMessage:"Create and modify your Claude Design projects",id:"7syyPo6BcF"})},"user:projects:read":{messageId:"oauth.scope.user.projects.read",description:Ne.jsx(Ue,{defaultMessage:"View your projects",id:"mwl+de7sHv"})},"user:projects:write":{messageId:"oauth.scope.user.projects.write",description:Ne.jsx(Ue,{defaultMessage:"Create and modify your projects",id:"h2fPnHzxR/"})},"user:claude_security":{messageId:"oauth.scope.user.claude_security",description:Ne.jsx(Ue,{defaultMessage:"Access your Claude security scan results",id:"3y6EVd0Lvq"})}};function bt(e,t=_t){return e.split(" ").find(e=>e&&!Object.hasOwn(t,e))}function Ct({enabled:e=!0}={}){const{activeOrganization:s}=t();return r(`/api/console/organizations/${s?.uuid}/member-workspaces`,{enabled:e&&!!s?.uuid,queryKey:["member-workspace-list",{orgId:s?.uuid}],meta:{noToast:!0}})}function xt(e){const{activeOrganization:s}=t();return r(`/v1/oauth/${s?.uuid}/authorize?client_id=${e}`,{enabled:!!e})}function It(e,t){return new Promise((r,s)=>{"undefined"!=typeof chrome&&chrome.runtime?chrome.runtime.sendMessage(e,{type:"oauth_redirect",redirect_uri:t},()=>{chrome.runtime.lastError?s(new Error(chrome.runtime.lastError.message)):r()}):s(new Error("Chrome extension API not available"))})}function St(e,r){const{activeOrganization:c}=t(),{claudeBrowserExtensionClientId:d,claudeBrowserExtensionId:u,antOnlyClaudeBrowserExtensionId:l}=n(),{track:p}=a(),m=o("crochet_eligible_for_ant_only_build");return s(`/v1/oauth/${c?.uuid}/authorize`,"POST",{meta:{noToast:!0},onSuccess:async(t,r)=>{if(p({event_key:"oauth.authorize.success",client_id:r.client_id,client_name:e}),t.redirect_uri){const e=(()=>{if(!r.redirect_uri)return!1;try{const e=new URL(r.redirect_uri);return"https:"===e.protocol&&/^[a-p]{32}\.chromiumapp\.org$/.test(e.hostname)}catch{return!1}})();if(r.client_id!==d||e)window.location.assign(t.redirect_uri);else{if("undefined"==typeof chrome||!chrome.runtime)throw new Error("Chrome extension API not available. Ensure there is an installed extension connectable from this domain.");if(m&&l)try{await It(l,t.redirect_uri)}catch{await It(u,t.redirect_uri)}else await It(u,t.redirect_uri)}}},onError:(t,s)=>{let n="unknown";t instanceof i&&(n=t.type),p({event_key:"oauth.authorize.failure",client_id:s.client_id,client_name:e,error_type:n}),r&&r(t)}})}function At(e){const{activeOrganization:s}=t(),n=s?.uuid;return r(`/v1/oauth/device/lookup?organization_uuid=${n}`,{method:"POST",body:{user_code:e},enabled:!!e&&!!n,retry:!1,meta:{noToast:!0}})}function Et(){const{activeOrganization:e}=t(),r=e?.uuid;return s(`/v1/oauth/device/approve?organization_uuid=${r}`,"POST",{meta:{noToast:!0}})}function kt(){const{activeOrganization:e}=t(),r=e?.uuid;return s(`/v1/oauth/device/reject?organization_uuid=${r}`,"POST",{meta:{noToast:!0}})}function wt(e){const{activeOrganization:s}=t(),n=s?.uuid;let a=`/api/oauth/organizations/${n}/oauth_tokens`;if(e){a=`${a}?${new URLSearchParams({application_slug:e}).toString()}`}return r(a,{enabled:!!n})}function Mt(){const{activeOrganization:e}=t(),r=e?.uuid;return s(e=>`/api/oauth/organizations/${r}/oauth_tokens/${e}/revoke`,"POST",{enabled:!!r})}function jt(){const{activeOrganization:e}=t(),r=e?.uuid,{data:s,refetch:n}=wt("xcode"),a=Ge(),o=Mt(),i=Ke({mutationFn:async()=>{if(!s||0===s.length)return;const e=[];for(const r of s)try{await o.mutateAsync(r.id)}catch(t){e.push(t)}if(e.length===s.length)throw new Error("Failed to revoke any Cuttlefish tokens")},onSuccess:()=>{a.invalidateQueries({queryKey:[`/api/oauth/organizations/${r}/oauth_tokens`]}),n()}});return{mutate:i.mutate,isPending:i.isPending||o.isPending}}const Nt=()=>{const{activeOrganization:e,account:s}=t(),n=e?.uuid,a=c(s,e,d.OrganizationManage),i=o("claude_ai_velvet_accordion");return r(`/api/organizations/${n}/lti/platforms`,{queryKey:["lti_platforms",{orgUuid:n}],enabled:!!e&&!!n&&a&&i})},Tt=()=>o("fiddlehead"),Ut=()=>{const{activeOrganization:e}=t(),s=e?.uuid,n=Tt(),a=u(),{data:o,isFetched:i}=r(`/api/oauth/organizations/${s}/oauth_tokens`,{enabled:Boolean(s&&n),staleTime:3e5}),c=l().get("debug_fiddlehead_auth_override"),d=a[p],h=d&&o?.some(e=>e.application_name===d);return{isAuthenticated:null!==c?"1"===c:h,isFetched:i,initAuth:()=>{window.open(a[m],"_blank")}}},Ot=(e={})=>{const{activeOrganization:r}=t(),n=r?.uuid,a=Tt(),o=Ge();return s(`/api/organizations/${n}/fiddlehead/disconnect_and_delete_all`,"POST",{enabled:Boolean(r&&a),...e,onSuccess:(...t)=>{o.invalidateQueries({queryKey:[`/api/oauth/organizations/${n}/oauth_tokens`]}),e.onSuccess?.(...t)}})},Lt=({uri:e})=>{const{data:s,isLoading:n}=(({documentId:e})=>{const{account:s,activeOrganization:n}=t(),a=s?.uuid,o=n?.uuid,i=Rt();return r(`/api/organizations/${o}/sync/mcp/outline/document/${e}`,{queryKey:[h,{accountUUID:a,orgUuid:o,documentId:e}],enabled:i})})({documentId:e});return{title:s?.title,isLoading:n}},Rt=()=>{const{data:e}=f();return!1},Dt=(e={})=>{const{activeOrganization:n}=t(),a=g(),o=y(),i=Rt(),{data:c,refetch:d}=r(`/api/organizations/${o}/sync/mcp/outline/auth`,{queryKey:[v,{accountUUID:a,orgUuid:o}],enabled:Boolean(n&&i),staleTime:5e3}),{mutate:u,isPending:l}=s(`/api/organizations/${o}/sync/mcp/outline/auth/start`,"POST",{enabled:Boolean(n&&i),...e,onSuccess:(...t)=>{e.onSuccess?.(...t)}});return{isOutlineAuthenticated:Boolean(c?.is_authenticated),refetch:d,initOutlineAuth:u,isLoadingOutlineAuthInit:l}},Pt=e=>{const t=window.location.href;window.location.href=`${e}?${new URLSearchParams({redirect_url:t,open_outline_auth:"true"})}`};var Ft=(e=>(e[e.DISCONNECT=0]="DISCONNECT",e[e.REMOVE=1]="REMOVE",e[e.DISABLE=2]="DISABLE",e[e.EDIT_CANVAS=3]="EDIT_CANVAS",e[e.DISABLE_CANVAS=4]="DISABLE_CANVAS",e[e.ENABLE_CANVAS=5]="ENABLE_CANVAS",e[e.CLEAR_CACHE=6]="CLEAR_CACHE",e[e.VIEW_DETAILS=7]="VIEW_DETAILS",e))(Ft||{});function zt(){const e=o("kingfisher_enabled"),t=Le(),{isDriveAuthenticated:r}=Re(),s=_(),n=b(),a=C(I.GMAIL),{isAuthenticated:i}=x(I.GMAIL),c=C(I.GCAL),{isAuthenticated:d}=x(I.GCAL),u=C(I.SLACK),{isAuthenticated:l}=x(I.SLACK),p=!s,m=!s,h=e&&!n;return je.useMemo(()=>({[I.GDRIVE]:{type:I.GDRIVE,available:h,enabledForOrg:t,connected:r},[I.GMAIL]:{type:I.GMAIL,available:p,enabledForOrg:a,connected:i},[I.GCAL]:{type:I.GCAL,available:m,enabledForOrg:c,connected:d},[I.SLACK]:{type:I.SLACK,available:u,enabledForOrg:u,connected:l}}),[h,t,r,p,a,i,m,c,d,u,l])}function Gt(){const e=zt(),t=De(),r=Pe(),s=Fe(),{isGithubAuthenticated:n}=ze({fetchImmediately:!0}),{data:a}=wt("xcode"),i=a&&a.length>0,c=o("spider_enabled_2"),d=Rt(),{isOutlineAuthenticated:u}=Dt(),l=o("cinnabon_enabled"),p=C(I.SALESFORCE),{isAuthenticated:m}=x(I.SALESFORCE),h=C(I.ASANA),{isAuthenticated:f}=x(I.ASANA),g=o("claude_ai_ember"),y=o("claude_ai_velvet_accordion"),{data:v}=Nt(),_=(v?.filter(e=>e.is_active)||[]).length>0,b=Tt(),{isAuthenticated:S}=Ut();return je.useMemo(()=>[...Object.values(e),...i?[{type:I.CUTTLEFISH,available:!0,enabledForOrg:!0,connected:!0}]:[],{type:I.GITHUB,available:t,enabledForOrg:r,connected:n,blockedByOrgAdmin:s},{type:I.OUTLINE,available:!1,enabledForOrg:d,connected:u},{type:I.SALESFORCE,available:l,enabledForOrg:p,connected:m},{type:I.ASANA,available:l,enabledForOrg:h,connected:f},{type:I.FIDDLEHEAD,available:!1,enabledForOrg:b,connected:S},{type:I.CANVAS,available:g&&y&&!0,enabledForOrg:_,connected:_,connectedActions:_?[Ft.EDIT_CANVAS,Ft.DISABLE_CANVAS]:[],disconnectedActions:[]}].filter(e=>e.available),[e,t,r,s,n,i,c,d,u,l,p,m,h,f,b,S,g,y,_])}function Kt(){const{account:e}=t();return je.useMemo(()=>(e?.memberships??[]).some(e=>(e.organization.capabilities??[]).includes("taint:cmek")),[e?.memberships])}function Bt(e,t){return o("cowork_snapshot_sync")&&!!e&&!!t}const Ht=nt(e=>({enabledMcpToolsBySession:{},setSessionEnabledMcpTools:(t,r)=>e(e=>({enabledMcpToolsBySession:{...e.enabledMcpToolsBySession,[t]:r}})),updateSessionEnabledMcpTools:(t,r,s)=>e(e=>{const n={...e.enabledMcpToolsBySession[t]??{}};for(const t of r)n[t]=s;return{enabledMcpToolsBySession:{...e.enabledMcpToolsBySession,[t]:n}}})}));function Vt({className:e}){const t=je.useId();return Ne.jsxs("svg",{"aria-hidden":"true",className:e,height:"10",width:"100%",preserveAspectRatio:"none",children:[Ne.jsx("defs",{children:Ne.jsx("pattern",{id:t,width:"20",height:"10",patternUnits:"userSpaceOnUse",patternContentUnits:"userSpaceOnUse",children:Ne.jsx("path",{d:"M 0 5 Q 5 0, 10 5 T 20 5",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round"})})}),Ne.jsx("rect",{width:"100%",height:"10",fill:`url(#${t})`})]})}function qt({label:e}){return Ne.jsxs("div",{className:"flex items-center gap-4 text-border-300",children:[Ne.jsx(Vt,{className:"min-w-0 flex-1"}),Ne.jsx("span",{className:"font-small shrink-0 text-text-400",children:e}),Ne.jsx(Vt,{className:"min-w-0 flex-1"})]})}const $t=()=>o("sensitive_mcps_per_call_consent");function Wt(e={}){return s("/api/accounts/me/consents","PUT",e)}function Yt(){return"4f011d10856bb1fc41f8404645a16b6d9dc54991bfbd02027f09c75721893872"}const Zt=Be({url:Ve().optional(),sensitiveDataTypes:He(Ve()),directoryServerUuid:Ve().optional()}).refine(e=>!!e.url||!!e.directoryServerUuid,{message:"entry needs url or directoryServerUuid"}),Qt=Be({servers:He(Zt.nullable().catch(null)).transform(e=>e.filter(e=>null!==e)).optional()}),Jt={};function Xt(e){return e.replace(/\/$/,"")}function er(e){try{const t=new URL(e);t.hostname=t.hostname.replace(/\.$/,"");let r=t.pathname;try{r=decodeURIComponent(r)}catch{}return r=r.split("/").map(e=>e.split(";")[0]??e).join("/").replace(/\/+/g,"/"),r=function(e){const t=[];for(const s of e.split("/"))"."!==s&&(".."!==s?t.push(s):t.pop());const r=t.join("/");return r.startsWith("/")?r:`/${r}`}(r),r=r.replace(/\/$/,"")||"/",{origin:t.origin,path:r}}catch{return null}}function tr(e,t,r,s){return s?!(!e.directoryServerUuid||!r||e.directoryServerUuid!==r)||!!t&&!!e.url&&function(e,t){const r=er(e),s=er(t);return r&&s?r.origin===s.origin&&(r.path===s.path||"/"!==s.path&&r.path.startsWith(s.path+"/")||"/"===s.path):e.replace(/\/$/,"")===t.replace(/\/$/,"")}(t,e.url):!!t&&!!e.url&&Xt(e.url)===Xt(t)}function rr(){const e=Oe(),{addError:t}=S(),r=$t(),n=je.useRef(!1),{mutateAsync:a}=Wt(),{mutateAsync:i}=function(e={}){return s("/api/accounts/me/consents/check","POST",e)}(),{mutate:c}=function(e={}){return s("/api/accounts/me/consents/revoke","POST",e)}({onError:e=>{E.error(k.MCP,"Failed to revoke consent when removing server",e)}}),d=A("sensitive_mcp_tools",Jt,Qt),u=o("mcp_server_spec_directory");return{requiresHealthConsent:je.useCallback((e,t)=>!!r&&(d.servers??[]).some(r=>r.sensitiveDataTypes.includes("phi")&&tr(r,e,t,u)),[u,r,d.servers]),confirmHealthConsent:je.useCallback(()=>{n.current=!0},[]),recordConsent:je.useCallback(async s=>{if(n.current&&(n.current=!1,r))try{await a({consent_type:"consumer_health",consent_hash:"4f011d10856bb1fc41f8404645a16b6d9dc54991bfbd02027f09c75721893872",entity_type:"mcp_remote_server",entity_id:s})}catch(o){t(e.formatMessage({defaultMessage:"Failed to record consent.",id:"E+Qn+ZSx6Z"}),{error:o,errorContext:{tags:{source:"health_consent_recording"}},messageForLogging:"Failed to record consent."})}},[r,a,t,e]),revokeConsentIfNeeded:je.useCallback(e=>{if(!r||!e.uuid)return;const t=e.uuid;i({consent_type:"consumer_health",entity_type:"mcp_remote_server",entity_id:t}).then(({has_consent:e})=>{e&&c({consent_type:"consumer_health",entity_type:"mcp_remote_server",entity_id:t})}).catch(e=>{E.warn(k.MCP,"Failed to check consent when removing server",e)})},[r,i,c])}}const sr="https://support.claude.com/en/articles/11725091-when-to-use-desktop-and-web-connectors",nr=`You understand that:\n- By adding this connector, the developer or other third parties may have access to the data submitted to or made available through the connector.\n- You are responsible for ensuring your organization has appropriate agreements to share data and have trained your workforce on how to use these features in accordance with applicable laws, legal requirements, and your internal compliance policies and procedures.\n- Anthropic is not responsible for third-party data handling.\n- Anthropic reviews connectors in its directory in accordance with its [MCP Directory Policy](https://support.claude.com/en/articles/11697096-anthropic-mcp-directory-policy) and does not enter into BAAs with MCP Providers.\n\n[Learn more about pre-built connectors](https://support.claude.com/en/articles/11176164-pre-built-web-connectors-using-remote-mcp) and [when to use desktop and web connectors.](${sr})`,ar=`You understand that:\n- By adding this connector, your users, the developer, or other third parties may have access to the data submitted to or made available through the connector.\n- You are responsible for ensuring your organization has appropriate access controls, agreements to share data (if applicable), and have trained your workforce on how to use these features in accordance with applicable laws, legal requirements, and your internal compliance policies and procedures.\n- If you are connecting to internal tools and information, make sure these systems are in scope for your internal HIPAA compliance program.\n- Anthropic is not responsible for your or third-party data handling and does not evaluate these connectors or enter into Business Associate Agreements with MCP Providers.\n- Anthropic will not be liable for your use or any loss, damage, or liability arising from your workforce's use of connectors.\n\n[Learn more about custom connectors](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp) and [when to use desktop and web connectors.](${sr})`;function or(e){return e.replace("By adding this connector","By enabling this connector")}const ir=or(ar),cr={directory:nr,directoryReenable:or(nr),custom:ar,customReenable:ir},dr={directory:"026c416dc671602e7f2c70f3915f1b907d8bb1bf17d39abfac5db8a41cb8d118",directoryReenable:"c9884739817c442c765c14665841a0747a0a4453b97fffa336614ccfecfc49ef",custom:"46d945e590f9903a485ea154b2e883af7d1bf4614c8d502c3a25c4069f3e9254",customReenable:"7c315997825519b27b4af2e4495e6b7c1eda7d0d9b7aced864a1acf89788ad5f"};function ur(e){return dr[e]}function lr(){const e=w(),t=je.useCallback(t=>e?[{type:"safe_for_phi",content_hash:ur(t)}]:[],[e]);return{isHipaaRegulated:e,createAttestation:t}}function pr(e){const t=e?.trim();if(!t)return null;let r;try{r=new URL(t)}catch{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?`mailto:${t.replace(/[?#%]/g,encodeURIComponent)}`:null}return"http:"===r.protocol||"https:"===r.protocol||"mailto:"===r.protocol?r.href:null}function mr(e,t){if(t.display?.label)return t.display.label;switch(t.name){case"client_id":return e.formatMessage({defaultMessage:"OAuth Client ID",id:"hyI5ppedvi"});case"client_secret":return e.formatMessage({defaultMessage:"OAuth Client Secret",id:"bDGyh6+piN"});case"private_key":return e.formatMessage({defaultMessage:"Private key (JWT signing)",id:"p4HosqD3kb"});case"client_certificate":return e.formatMessage({defaultMessage:"Client certificate (PEM)",id:"tLNmODKok8"});case"client_private_key":return e.formatMessage({defaultMessage:"Client private key (PEM)",id:"5yMDA83YA1"});default:return t.name.split(/[-_]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}}function hr(e){return`${e.type}:${e.name}`}function fr(e,t){return(t[hr(e)]??"").trim()}function gr({inputs:e,values:t,onChange:r,isEditing:s=!1,disabled:n=!1}){const a=je.useCallback((e,s)=>{r({...t,[hr(e)]:s})},[r,t]);return 0===e.length?Ne.jsx("p",{className:"text-secondary text-body",children:Ne.jsx(Ue,{defaultMessage:"No additional details are needed for this connector.",id:"4zrmdy4x65"})}):Ne.jsx("div",{className:"flex flex-col gap-md",children:e.map(e=>Ne.jsx(yr,{input:e,value:t[hr(e)]??"",onChange:t=>a(e,t),isEditing:s,disabled:n},hr(e)))})}const yr=je.memo(function({input:e,value:t,onChange:r,isEditing:s,disabled:n}){const a=Oe(),o=mr(a,e),i=e.display?.description,c=e.display?.format?.placeholder??o,d=e.display?.format?.maxLength,u=s&&e.isSecret&&!!e.isSet&&!t;return Ne.jsx($e,{type:e.isSecret?"password":"text",label:Ne.jsxs(Ne.Fragment,{children:[o,!e.required&&Ne.jsxs("span",{className:"text-muted font-normal",children:[" ",Ne.jsx(Ue,{defaultMessage:"(optional)",id:"d1OgEDiJnJ"})]})]}),placeholder:u?a.formatMessage({defaultMessage:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)",id:"4HEXemED4V"}):c,value:t,onChange:e=>r(e.target.value),onBlur:()=>r(t.trim()),disabled:n,maxLength:d,"data-1p-ignore":!0,hint:u?Ne.jsx(Ue,{defaultMessage:"A value is already saved. Enter a new one to replace it.",id:"tSYisYSlsV"}):i})});function vr(){const{track:e}=a(),t=M(),r=je.useRef(!1),s=je.useRef(!1),n=je.useRef(!1);return{trackViewed:je.useCallback(()=>{r.current||(r.current=!0,e({event_key:"claudeai.mcp.m365_setup_modal.viewed",paid_account_tier:t}))},[t,e]),trackContinued:je.useCallback(()=>{s.current||(s.current=!0,e({event_key:"claudeai.mcp.m365_setup_modal.continued",paid_account_tier:t}))},[t,e]),trackCancelled:je.useCallback(()=>{s.current||n.current||(n.current=!0,e({event_key:"claudeai.mcp.m365_setup_modal.cancelled",paid_account_tier:t}))},[t,e]),hasViewed:je.useCallback(()=>r.current,[]),reset:je.useCallback(()=>{r.current=!1,s.current=!1,n.current=!1},[])}}const _r=je.memo(function({documentationUrl:e,isIndividualAccount:r,onViewed:s}){const{account:n}=t();je.useEffect(()=>{s?.()},[s]);const a=je.useMemo(()=>{const e=n?.email_address;return"personal"===j(e)?e?.split("@")[1]?.toLowerCase():void 0},[n?.email_address]),o=pr(e),i=e=>o?Ne.jsx(T,{href:o,target:"_blank",rel:"noopener noreferrer",children:e}):e;return Ne.jsxs(Ne.Fragment,{children:[r&&a&&Ne.jsx(N,{variant:"warning",className:"w-full",children:Ne.jsx(Ue,{defaultMessage:"<b>Heads up</b>\u2014your Claude account uses a personal email ({domain}). Make sure you have a Microsoft <b>work or school</b> account before continuing.",id:"lxfuVpHgcq",values:{domain:a,b:e=>Ne.jsx("span",{className:"font-medium",children:e})}})}),r?Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("p",{children:Ne.jsx(Ue,{defaultMessage:"Sign in with your work or school Microsoft 365 email (like you@company.com). Personal Microsoft accounts (outlook.com, hotmail.com, and live.com) aren't supported.",id:"nUa5mMvwpA"})}),Ne.jsx("p",{children:Ne.jsx(Ue,{defaultMessage:"<b>If you're the Microsoft Entra admin</b>, you'll approve access during sign-in. <b>If not</b>, your admin may need to approve it first. If you get stuck, see the <link>setup guide</link>.",id:"BLJ0k1yZbv",values:{b:e=>Ne.jsx("span",{className:"font-medium",children:e}),link:i}})})]}):Ne.jsxs(Ne.Fragment,{children:[Ne.jsx("p",{children:Ne.jsx(Ue,{defaultMessage:"Your Microsoft Entra Admin must complete setup steps before team members can connect their Microsoft 365 accounts. <link>View the full setup guide</link> for step-by-step instructions.",id:"hoyRntdXbn",values:{link:i}})}),Ne.jsxs("div",{className:"flex flex-col gap-sm",children:[Ne.jsx("p",{className:"font-medium",children:Ne.jsx(Ue,{defaultMessage:"Your admin will need to:",id:"WchWKsbyUZ"})}),Ne.jsxs("ul",{className:"list-disc pl-6",children:[Ne.jsx("li",{children:Ne.jsx(Ue,{defaultMessage:"Add two service principals in Microsoft Graph Explorer",id:"heZXOt2Bzq"})}),Ne.jsx("li",{children:Ne.jsx(Ue,{defaultMessage:"Grant admin pre-consent for your organization",id:"+Ya/mx2wNT"})}),Ne.jsx("li",{children:Ne.jsx(Ue,{defaultMessage:"Enable the connector in Claude Organization Settings",id:"4JfWi4I87y"})})]})]}),Ne.jsx("p",{children:Ne.jsx(Ue,{defaultMessage:"After your admin completes these steps, you and your team members will be able to connect individual Microsoft 365 accounts.",id:"wymvQ+bakC"})})]})]})}),br=({isOpen:e,onClose:t,onContinue:r,documentationUrl:s,isIndividualAccount:n=!1})=>{const a=Oe(),{trackViewed:o,trackCancelled:i,trackContinued:c,reset:d}=vr();je.useLayoutEffect(()=>{e&&d()},[e,d]);return Ne.jsx(We.Root,{open:e,onOpenChange:e=>!e&&t(),children:Ne.jsxs(We.Popup,{size:"md",children:[Ne.jsx(We.Header,{showClose:!0,children:n?a.formatMessage({defaultMessage:"Sign in with your work account",id:"t5z0N+MUOZ"}):a.formatMessage({defaultMessage:"Microsoft Entra Admin setup required",id:"oN2+w/4jXX"})}),Ne.jsx("div",{className:"mt-5 space-y-4",children:Ne.jsx(_r,{documentationUrl:s,isIndividualAccount:n,onViewed:e?o:void 0})}),Ne.jsxs(We.Footer,{children:[Ne.jsx(Ye,{variant:"secondary",onClick:()=>{i(),t()},children:Ne.jsx(Ue,{defaultMessage:"Cancel",id:"47FYwba+bI"})}),Ne.jsx(Ye,{variant:"primary",onClick:()=>{c(),r()},children:Ne.jsx(Ue,{defaultMessage:"Continue",id:"acrOozm08x"})})]})]})})},Cr={attestations:[],hipaaAccepted:!1,healthConsentConfirmed:!1,ms365Acknowledged:!1,selectedUrl:void 0,enteredUrl:"",enteredUrlTouched:!1,enteredUrlPatternRejected:!1,enteredUrlCatalogMatch:null,selectedMethodType:void 0,values:{},emaEnabled:!1,emaTestOk:null,emaConfirmAddAnyway:!1};function xr(e){const t={spec:{status:"loading"},formInput:Cr,currentStepId:null,phase:"steps",confirmingCancel:!1,createErrorMessage:null,createdServer:null,pending:[]},r=Ur(e,t)??null,s=[{kind:"track",signal:{kind:"opened"}}];return null!==r&&s.push({kind:"track",signal:{kind:"step-shown",stepId:r}}),"ms365"===r&&s.push({kind:"track",signal:{kind:"ms365-viewed"}}),{...t,currentStepId:r,pending:s}}function Ir(e){return void 0!==e.urlOptions}function Sr(e){return!!e.urlRegex}function Ar(e,t){if(t){const r=e.methods.find(e=>e.type===t);if(r)return r}return e.methods.find(e=>"oauth"===e.type)??e.methods[0]}function Er(e,t){return!(!e.emaAvailable||"ready"!==t.spec.status)&&"oauth"===Ar(t.spec.form,t.formInput.selectedMethodType)?.type}function kr(e,t,r){if(!Sr(e.server))return;const s=Or(e.server,t);s&&e.isSensitiveUrl(s)&&!r.includes("health-consent")&&r.push("health-consent")}function wr(e,t){const{formInput:r,spec:s}=t,n=[];return e.gates.hipaa&&n.push("hipaa"),e.isSensitiveUrl(e.server.url)&&n.push("health-consent"),e.gates.ms365&&n.push("ms365"),Ir(e.server)&&(n.push("url-pick"),r.selectedUrl&&e.isSensitiveUrl(r.selectedUrl)&&!n.includes("health-consent")&&n.push("health-consent")),"loading"===s.status||"error"===s.status?(n.push("configure-loading"),n):"absent"===s.status?(Sr(e.server)&&(n.push("form"),kr(e,r,n)),n):(s.form.methods.length>1&&n.push("method-pick"),function(e,t){if(Sr(e.server))return!0;if(Er(e,t))return!0;if("ready"!==t.spec.status)return!1;const r=Ar(t.spec.form,t.formInput.selectedMethodType);return(r?.inputs.length??0)>0}(e,t)&&(n.push("form"),kr(e,r,n)),n)}function Mr(e,t){if(!e.urlRegex)return!0;if(t.length>2048)return!1;try{return new RegExp(e.urlRegex).test(t)}catch{return!1}}function jr(e){if(!e)return!1;let t;try{t=new URL(e)}catch{return!1}return"https:"===t.protocol}function Nr(e,t,r){switch(e){case"hipaa":return r.formInput.hipaaAccepted;case"health-consent":return r.formInput.healthConsentConfirmed;case"ms365":return r.formInput.ms365Acknowledged;case"url-pick":return!!r.formInput.selectedUrl;case"configure-loading":return!1;case"method-pick":return"ready"===r.spec.status&&!!Ar(r.spec.form,r.formInput.selectedMethodType);case"form":return!!function(e,t){for(const r of e){const e=fr(r,t);if(r.required)if(r.isSecret){if(!e&&!r.isSet)return!1}else if(!e)return!1}return!0}("ready"===r.spec.status?Ar(r.spec.form,r.formInput.selectedMethodType)?.inputs??[]:[],r.formInput.values)&&(!Sr(t.server)||jr(Or(t.server,r.formInput)??""))}}function Tr(e,t,r=wr(e,t)){return r.find(r=>!function(e,t,r){switch(e){case"hipaa":return r.formInput.attestations.length>0;case"health-consent":return r.formInput.healthConsentConfirmed;case"ms365":return r.formInput.ms365Acknowledged;case"configure-loading":return!1;case"url-pick":case"method-pick":case"form":return Nr(e,t,r)}}(r,e,t))}function Ur(e,t){const r=wr(e,t);return t.currentStepId&&r.includes(t.currentStepId)?t.currentStepId:Tr(e,t,r)??r[r.length-1]}function Or(e,t){return e.url?e.url:Ir(e)?t.selectedUrl:Sr(e)&&t.enteredUrl.trim()||void 0}function Lr(e,t){return t.formInput.healthConsentConfirmed&&e.isSensitiveUrl(Or(e.server,t.formInput))}function Rr(e,t){return void 0!==t.installed?{kind:"reauth",installed:t.installed}:!0===e.requiresInstallForm||void 0!==e.urlOptions||e.urlRegex||(e.requiredFields?.length??0)>0?{kind:"needs-flow"}:e.url?t.isHipaaRegulated||t.isSensitiveUrl(e.url)||t.isMs365Connector?{kind:"needs-flow"}:{kind:"direct-create",params:{name:e.name,url:e.url,custom_oauth_client_id:null,custom_oauth_client_secret:null,attestations:[],mcp_directory_server_uuid:e.uuid},needsOAuth:!t.isAddingForOthers&&!0!==e.isAuthless}:{kind:"needs-flow"}}function Dr(e){const t=new Set;return r=>{const s=r??"\0entry";if(t.has(s))return!0;const n=e(r);return n&&t.add(s),n}}function Pr(e,t){return{serverName:e.server.name,pane:Fr(e,t),footer:zr(e,t),isConfirmDiscardModalOpen:t.confirmingCancel}}function Fr(e,t){if("creating"===t.phase)return{pane:"creating"};if("create-error"===t.phase)return{pane:"create-error",message:t.createErrorMessage??void 0};if("oauth"===t.phase)return{pane:"oauth",iconUrl:e.server.iconUrl,url:Or(e.server,t.formInput)};switch(Ur(e,t)){case void 0:return{pane:"loading"};case"configure-loading":return"error"===t.spec.status?{pane:"spec-error"}:{pane:"loading"};case"hipaa":return{pane:"hipaa",accepted:t.formInput.hipaaAccepted};case"health-consent":return{pane:"health-consent",acknowledged:t.formInput.healthConsentConfirmed};case"ms365":return{pane:"ms365",documentationUrl:pr(e.server.documentation)??void 0,isIndividualAccount:e.ms365IsIndividualAccount,acknowledged:t.formInput.ms365Acknowledged};case"url-pick":return{pane:"url-pick",options:(e.server.urlOptions??[]).map(e=>({url:e.url,label:e.label,description:e.description})),selectedUrl:t.formInput.selectedUrl};case"method-pick":{if("ready"!==t.spec.status)return{pane:"loading"};const e=Ar(t.spec.form,t.formInput.selectedMethodType);return{pane:"method-pick",methods:t.spec.form.methods.map(t=>({type:t.type,fieldCount:t.inputs.length,requiresInteractiveAuth:t.requiresInteractiveAuth,selected:t.type===e?.type}))}}case"form":{const r=Or(e.server,t.formInput);return{pane:"form",urlField:Sr(e.server)?{value:t.formInput.enteredUrl,wellFormed:jr(r??""),invalidReason:Kr(t,r),docsSourceUrl:pr(e.server.requiredFields?.find(e=>"url"===e.field)?.sourceUrl)??void 0}:void 0,inputs:Gr(e,t),values:t.formInput.values,ema:Er(e,t)?{enabled:t.formInput.emaEnabled,testOk:t.formInput.emaTestOk,confirmAddAnyway:t.formInput.emaConfirmAddAnyway,resolvedUrl:r,resolvedUrlMatchesCatalog:!Sr(e.server)||!0===t.formInput.enteredUrlCatalogMatch}:void 0}}}}function zr(e,t){if("creating"===t.phase)return{kind:"creating"};if("create-error"===t.phase)return{kind:"create-error"};if("oauth"===t.phase)return{kind:"oauth"};const r=Ur(e,t);if("configure-loading"===r&&"error"===t.spec.status)return{kind:"spec-retry"};const s=wr(e,t);return{kind:"steps",next:{label:void 0!==r&&s.indexOf(r)===s.length-1&&"health-consent"!==r?"connect":"continue",disabled:"form"===r&&Er(e,t)&&t.formInput.emaEnabled&&!0!==t.formInput.emaTestOk&&t.formInput.emaConfirmAddAnyway||void 0===r||!Nr(r,e,t),event:void 0!==r?Vr(r):void 0}}}function Gr(e,t){return"ready"!==t.spec.status?[]:Ar(t.spec.form,t.formInput.selectedMethodType)?.inputs??[]}function Kr(e,t){if(!e.formInput.enteredUrlTouched)return null;if(!t)return null;let r;try{r=new URL(t)}catch{return"format"}return"https:"===r.protocol||R()?e.formInput.enteredUrlPatternRejected?"pattern":null:"scheme"}function Br(e,t,r){const s=Hr(e,t,r);if(s===t)return t;const n=function(e,t){if("steps"!==t.phase)return t;const r=Ur(e,t)??null;return r===t.currentStepId?t:{...t,currentStepId:r}}(e,s),a=function(e,t,r,s){const n=[];if("steps"===s.phase&&null!==s.currentStepId&&s.currentStepId!==t.currentStepId&&n.push({kind:"step-shown",stepId:s.currentStepId}),"done"!==t.phase&&"done"===s.phase){const e="configure-loading"===t.currentStepId&&"error"===t.spec.status,a="CREATING_FAILED"===r.type&&r.conflict,o="create-error"===t.phase?"create":a?"conflict":e?"spec":void 0,i=null!==s.createdServer?"completed":void 0!==o?"error":"cancelled";n.push({kind:"closed",outcome:i,lastStepId:t.currentStepId,errorKind:o})}return"ms365"!==t.currentStepId&&"ms365"===s.currentStepId&&n.push({kind:"ms365-viewed"}),"STEP_MS365_WARNING_CONTINUE_CLICK"===r.type&&"ms365"===t.currentStepId&&n.push({kind:"ms365-continued"}),"done"===t.phase||"done"!==s.phase||"CREATING_SUCCEEDED"===r.type||!t.formInput.ms365Acknowledged&&"ms365"!==Ur(e,t)||n.push({kind:"ms365-cancelled"}),n}(e,t,r,n);return 0===a.length?n:{...n,pending:[...n.pending,...a.map(e=>({kind:"track",signal:e}))]}}function Hr(e,t,r){switch(r.type){case"BACK_CLICKED":{if("done"===t.phase||"creating"===t.phase)return t;if("oauth"===t.phase)return Hr(e,t,{type:"CANCEL_CLICKED"});if("create-error"===t.phase)return function(e,t){const r=wr(e,t);if(0===r.length)return Hr(e,t,{type:"CANCEL_CLICKED"});const s=r.includes("form")?"form":r[r.length-1];return{...t,phase:"steps",currentStepId:s??null,confirmingCancel:!1}}(e,t);const r=wr(e,t),s=Ur(e,t),n=s?r.indexOf(s):-1;return n<=0?Hr(e,t,{type:"CANCEL_CLICKED"}):{...t,currentStepId:r[n-1],confirmingCancel:!1}}case"CANCEL_CLICKED":return"creating"===t.phase?t:"oauth"===t.phase||"done"===t.phase?{...t,phase:"done",confirmingCancel:!1}:(s=t.formInput).selectedUrl||s.enteredUrl||s.selectedMethodType||Object.values(s.values).some(e=>e.length>0)||s.emaEnabled?{...t,confirmingCancel:!0}:{...t,phase:"done"};case"CLOSED":return"steps"===t.phase||"create-error"===t.phase?{...t,phase:"done",pending:[]}:t;case"CREATE_ERROR_RETRY_CLICKED":return"create-error"===t.phase?$r(e,{...t,phase:"steps",pending:[]}):t;case"CREATING_FAILED":return"creating"!==t.phase?t:r.conflict?{...t,phase:"done",pending:[]}:{...t,phase:"create-error",createErrorMessage:r.message??null,pending:[]};case"CREATING_SUCCEEDED":{if("creating"!==t.phase)return t;const s={uuid:r.created.uuid,url:r.created.url||Or(e.server,t.formInput)||""},n=function(e,t){if(e.isAddingForOthers())return!1;if(t.formInput.emaEnabled&&Er(e,t))return!1;if("ready"===t.spec.status){const e=Ar(t.spec.form,t.formInput.selectedMethodType);return e?.requiresInteractiveAuth??!1}return!e.server.isAuthless}(e,t),a=[...Lr(e,t)?[{kind:"record-health-consent",serverUuid:s.uuid}]:[],{kind:"notify-created",created:r.created,needsOAuth:n}];return n?{...t,phase:"oauth",createdServer:s,pending:[...a,{kind:"init-oauth",serverUuid:s.uuid,url:s.url}]}:{...t,phase:"done",createdServer:s,pending:a}}case"DISCARD_CLICKED":return"creating"===t.phase?{...t,confirmingCancel:!1}:{...t,phase:"done",confirmingCancel:!1};case"KEEP_EDITING_CLICKED":return{...t,confirmingCancel:!1};case"OAUTH_RELAUNCH_CLICKED":return"oauth"!==t.phase||null===t.createdServer?t:{...t,pending:[{kind:"init-oauth",serverUuid:t.createdServer.uuid,url:t.createdServer.url}]};case"SPEC_QUERY_CHANGED":{if("loading"!==t.spec.status)return t;if(r.isError)return r.isFetching?t:{...t,spec:{status:"error"},pending:[]};if(void 0===r.form)return t;if(r.isFetching)return t;if(null===r.form){const r={...t,spec:{status:"absent"},pending:[]};return"steps"===t.phase&&0===wr(e,r).length&&void 0===Ur(e,r)?$r(e,r):r}if(0===r.form.methods.length&&"no_auth"!==r.form.posture)return{...t,spec:{status:"error"},pending:[]};const s={...t,spec:{status:"ready",form:r.form},pending:[]};return"steps"===t.phase&&0===wr(e,s).length?$r(e,s):s}case"STEP_ENTER_CREDENTIALS_CONTINUE_CLICK":return qr(e,t,"form");case"STEP_HEALTH_CONSENT_CONTINUE_CLICK":return qr(e,t,"health-consent");case"STEP_HIPAA_ATTEST_CONTINUE_CLICK":return qr(e,t,"hipaa");case"STEP_MS365_WARNING_CONTINUE_CLICK":return qr(e,t,"ms365");case"STEP_PICK_METHOD_CONTINUE_CLICK":return qr(e,t,"method-pick");case"STEP_PICK_REGION_CONTINUE_CLICK":return qr(e,t,"url-pick");case"STEPS_ADD_ANYWAY_CLICKED":return"steps"===t.phase&&t.formInput.emaConfirmAddAnyway&&!0!==t.formInput.emaTestOk?$r(e,t):t;case"STEPS_EMA_PREFLIGHT_RESOLVED":return"steps"!==t.phase?t:{...t,formInput:{...t.formInput,emaTestOk:r.ok,emaConfirmAddAnyway:!1}};case"STEPS_EMA_TOGGLED":return"steps"!==t.phase?t:{...t,formInput:{...t.formInput,emaEnabled:r.enabled,emaTestOk:r.enabled?t.formInput.emaTestOk:null,emaConfirmAddAnyway:!1,enteredUrlCatalogMatch:r.enabled&&Sr(e.server)?Mr(e.server,Or(e.server,t.formInput)??""):t.formInput.enteredUrlCatalogMatch}};case"STEPS_FIELD_VALUES_CHANGED":{if("steps"!==t.phase)return t;const e=Object.keys(t.formInput.values),s=Object.keys(r.values);if(e.length===s.length&&e.every(e=>t.formInput.values[e]===r.values[e]))return t;const n=[...e,...s].filter(e=>e.endsWith(":client_id")||e.endsWith(":client_secret")).some(e=>t.formInput.values[e]!==r.values[e]);return{...t,formInput:{...t.formInput,values:r.values,emaTestOk:n?null:t.formInput.emaTestOk,emaConfirmAddAnyway:!n&&t.formInput.emaConfirmAddAnyway}}}case"STEPS_HEALTH_CONSENT_ACKNOWLEDGED":return"steps"!==t.phase?t:{...t,formInput:{...t.formInput,healthConsentConfirmed:r.acknowledged}};case"STEPS_HIPAA_ACCEPTANCE_CHANGED":return"steps"!==t.phase?t:{...t,formInput:{...t.formInput,hipaaAccepted:r.accepted}};case"STEPS_METHOD_SELECTED":{if("steps"!==t.phase)return t;const e="ready"===t.spec.status?Ar(t.spec.form,t.formInput.selectedMethodType)?.type:t.formInput.selectedMethodType;if(r.methodType===e)return t;const s="ready"===t.spec.status?Ar(t.spec.form,void 0)?.type:void 0;return{...t,formInput:{...t.formInput,selectedMethodType:r.methodType===s?void 0:r.methodType,values:{},emaEnabled:!1,emaTestOk:null,emaConfirmAddAnyway:!1}}}case"STEPS_MS365_ACKNOWLEDGED":return"steps"!==t.phase?t:{...t,formInput:{...t.formInput,ms365Acknowledged:r.acknowledged}};case"STEPS_SERVER_URL_BLURRED":{if("steps"!==t.phase)return t;const r=function(e,t){if(!t.emaEnabled||!Sr(e.server))return t;const r=Mr(e.server,Or(e.server,t)??"");return r===t.enteredUrlCatalogMatch?t:{...t,enteredUrlCatalogMatch:r}}(e,t.formInput.enteredUrlTouched?t.formInput:{...t.formInput,enteredUrlTouched:!0});return r===t.formInput?t:{...t,formInput:r}}case"STEPS_SERVER_URL_CHANGED":return"steps"!==t.phase||r.url===t.formInput.enteredUrl?t:{...t,formInput:Wr(e,{...t.formInput,enteredUrl:r.url})};case"STEPS_SPEC_RETRY_CLICKED":return"steps"!==t.phase||"error"!==t.spec.status?t:{...t,spec:{status:"loading"},pending:[{kind:"refetch-spec"}]};case"STEPS_URL_OPTION_SELECTED":return"steps"!==t.phase||r.url===t.formInput.selectedUrl?t:{...t,formInput:Wr(e,{...t.formInput,selectedUrl:r.url})}}var s}function Vr(e){switch(e){case"hipaa":return{type:"STEP_HIPAA_ATTEST_CONTINUE_CLICK"};case"health-consent":return{type:"STEP_HEALTH_CONSENT_CONTINUE_CLICK"};case"ms365":return{type:"STEP_MS365_WARNING_CONTINUE_CLICK"};case"url-pick":return{type:"STEP_PICK_REGION_CONTINUE_CLICK"};case"method-pick":return{type:"STEP_PICK_METHOD_CONTINUE_CLICK"};case"form":return{type:"STEP_ENTER_CREDENTIALS_CONTINUE_CLICK"};case"configure-loading":return}}function qr(e,t,r){if("steps"!==t.phase)return t;const s=Ur(e,t);if(s!==r)return t;if("form"===s&&t.formInput.emaConfirmAddAnyway&&!0!==t.formInput.emaTestOk)return t;if(!Nr(s,e,t))return t;const n="form"===s&&Sr(e.server)?Mr(e.server,Or(e.server,t.formInput)??""):null;if(!1===n)return{...t,formInput:{...t.formInput,enteredUrlTouched:!0,enteredUrlPatternRejected:!0,enteredUrlCatalogMatch:!1}};const a="hipaa"===s?{...t.formInput,attestations:e.hipaaAttestations}:!0===n?{...t.formInput,enteredUrlCatalogMatch:!0}:t.formInput,o={...t,formInput:a},i=wr(e,o),c=i.indexOf(s),d=i[c+1];return void 0!==d?{...o,currentStepId:d}:$r(e,o)}function $r(e,t){const r=Tr(e,t);if(r)return{...t,currentStepId:r};if(Er(e,t)&&((s=t.formInput).emaEnabled&&!0!==s.emaTestOk&&!s.emaConfirmAddAnyway))return{...t,currentStepId:"form",formInput:{...t.formInput,emaConfirmAddAnyway:!0}};var s;const n=function(e,t){const r=Or(e.server,t.formInput);if(!r)return;if(Sr(e.server)&&!Mr(e.server,r))return;const s={name:e.server.name,url:r,attestations:t.formInput.attestations};if("absent"===t.spec.status)return{...s,mcp_directory_server_uuid:e.server.uuid};if("ready"!==t.spec.status)return;const n=Ar(t.spec.form,t.formInput.selectedMethodType);return{...s,install:{type:"directory",mcp_directory_server_uuid:e.server.uuid,selected_method_type:n?.type??null,grant:t.formInput.emaEnabled&&Er(e,t)?{grant_type:"id_jag",config:{mode:"sso",auth_ceilings:D}}:void 0,inputs:(a=n?.inputs??[],o=t.formInput.values,a.flatMap(e=>{const t=fr(e,o);return t?[{type:e.type,name:e.name,value:t}]:[]}))}};var a,o}(e,t);return n?{...t,phase:"creating",confirmingCancel:!1,createErrorMessage:null,pending:[{kind:"create",params:n}]}:t}function Wr(e,t){return{...t,healthConsentConfirmed:!!e.isSensitiveUrl(void 0)&&t.healthConsentConfirmed,emaTestOk:null,emaConfirmAddAnyway:!1,enteredUrlPatternRejected:!1,enteredUrlCatalogMatch:null}}function Yr(e,{initMcpAuth:r,onCreated:s,onClose:n}){const[o,c]=je.useReducer((t,r)=>Br(e,t,r),e,xr),{activeOrganization:d}=t(),u=U(d?.uuid,e.server.uuid);return je.useEffect(()=>{c({type:"SPEC_QUERY_CHANGED",form:u.data,isError:u.isError,isFetching:u.isFetching})},[u.data,u.isError,u.isFetching]),function(e,r,s,{initMcpAuth:n,onCreated:o,refetchInstallForm:c}){const d=Oe(),{addError:u}=S(),l=Ge(),{activeOrganization:p}=t(),{track:m}=a(),{trackViewed:h,trackContinued:f,trackCancelled:g,hasViewed:y}=vr(),v=e.server.slug??e.server.uuid,{mutate:_}=Wt({onError:e=>{u(d.formatMessage({defaultMessage:"Failed to record consent.",id:"E+Qn+ZSx6Z"}),{error:e,errorContext:{tags:{source:"health_consent_recording"}},messageForLogging:"Failed to record consent."})}}),{mutate:b}=O(p?.uuid||"",{onSuccess:async e=>{await l.refetchQueries({queryKey:[L,p?.uuid]}),s({type:"CREATING_SUCCEEDED",created:e})},onError:e=>{const t=e instanceof i&&409===e.statusCode;t&&(l.refetchQueries({queryKey:[L,p?.uuid]}),u(d.formatMessage({defaultMessage:"That connector is already installed.",id:"3ZLA4oxZdD"}),{error:e,messageForLogging:"mcp_add_connector_409_conflict"})),s({type:"CREATING_FAILED",conflict:t,message:Zr(e)})}},{source:"directory"}),C=je.useRef(new WeakSet);je.useEffect(()=>{for(const t of r.pending)if(!C.current.has(t))switch(C.current.add(t),t.kind){case"create":b(t.params);break;case"init-oauth":n({uuid:t.serverUuid,url:t.url});break;case"notify-created":o(t.created,e.server,{needsOAuth:t.needsOAuth});break;case"record-health-consent":_({consent_type:"consumer_health",consent_hash:Yt(),entity_type:"mcp_remote_server",entity_id:t.serverUuid});break;case"refetch-spec":c();break;case"track":switch(t.signal.kind){case"opened":m({event_key:"claudeai.mcp.connect_flow.opened",connector_slug:v});break;case"step-shown":m({event_key:"claudeai.mcp.connect_flow.step_shown",connector_slug:v,step_id:t.signal.stepId});break;case"closed":m({event_key:"claudeai.mcp.connect_flow.closed",connector_slug:v,outcome:t.signal.outcome,last_step_id:t.signal.lastStepId,error_kind:t.signal.errorKind});break;case"ms365-viewed":h();break;case"ms365-continued":f();break;case"ms365-cancelled":y()&&g()}}},[r.pending,e.server,v,b,n,o,_,c,m,h,f,g,y])}(e,o,c,{initMcpAuth:r,onCreated:s,refetchInstallForm:u.refetch}),je.useEffect(()=>{"done"===o.phase&&n()},[o.phase,n]),[o,c]}function Zr(e){return e instanceof i&&e.hasBodyMessage&&e.statusCode<500?e.message:void 0}function Qr(){const e=o("mcp_connector_directory_cxdir_v2"),{location:t,push:r,close:s}=F({enabled:e}),{target:n,navigate:a}=function({enabled:e}){const t=z(),r=G(),s=l(),[n,a]=je.useState(!1),o=je.useMemo(()=>{if(!e)return null;const t=K(r,new URLSearchParams(s));return null===t||n?t:B(t)},[e,r,s,n]);je.useEffect(()=>{if(!e||n)return;const o=K(r,new URLSearchParams(s));!0!==o?.connect?a(!0):t.replace(H(B(o),r,new URLSearchParams(s)))},[e,r,s,n,t]);const i=je.useCallback(e=>{t.push(H(e,r,new URLSearchParams(s)))},[r,t,s]);return{target:o,navigate:i}}({enabled:!e});return{target:e?t:n,navigate:je.useCallback((t,n)=>{e?null!==t?r(t):s(n):a(t)},[e,r,s,a])}}function Jr(){const e=o("mcp_connector_directory_cxdir_v2"),t=z(),r=G(),s=l();return je.useCallback(n=>{const a=new URLSearchParams(s);if(e){const e=V(n,a);return void P("push",r,e.hash,e.search)}t.push(H(n,r,a))},[e,r,t,s])}function Xr({server:e,source:r,installed:s,isAddingForOthers:n=!1,oauthReturnPath:a,variant:c="primary",size:d,label:u,"aria-label":p,onConnected:m,onCancelled:h}){const f=o("mcp_connector_directory_cxdir_v2"),g=z(),y=G(),v=l(),_=Oe(),b=Ge(),{activeOrganization:C}=t(),{addError:x}=S(),{isHipaaRegulated:I}=lr(),{requiresHealthConsent:A}=rr(),E=Z({source:r,pathname:a}),{arm:k,isPending:w}=function({directoryServerUuid:e,onConnected:t,onCancelled:r}){const s=o("mcp_connector_directory_cxdir_v2"),n=q(),a=G(),i=l(),[c,d]=je.useState("idle"),u=$(e=>"idle"===c?null:e.remoteServers),p=s?W(n,new URLSearchParams(i)):K(a,new URLSearchParams(i)),m="idle"!==c&&!0===p?.connect;return je.useEffect(()=>{if("idle"===c)return;const s=Y(e);if(s)return d("idle"),void t?.({uuid:s.uuid,name:s.name});"pushed"!==c?m||(d("idle"),r?.()):m&&d("open")},[c,m,u,e,t,r]),{arm:je.useCallback(()=>d("pushed"),[]),isPending:"idle"!==c}}({directoryServerUuid:e.uuid,onConnected:m,onCancelled:h}),M=C?.uuid,{mutate:j,isPending:N}=O(M??"",{onSuccess:async t=>{t&&(e.isAuthless||n||(await b.refetchQueries({queryKey:[L,M]}),E({uuid:t.uuid,url:t.url})),m?.(t))},onError:e=>{if(e instanceof i&&409===e.statusCode)return b.refetchQueries({queryKey:[L,M]}),void x(_.formatMessage({defaultMessage:"That connector is already installed.",id:"3ZLA4oxZdD"}),{error:e,messageForLogging:"mcp_add_connector_409_conflict"});x(_.formatMessage({defaultMessage:"Failed to add connector",id:"1lkTOnWfrw"}),{error:e,messageForLogging:"Failed to add connector"})}},{source:"directory"}),T=je.useCallback(()=>{if(void 0===M||N)return;const t=s??(()=>{const t=Y(e.uuid);return t?{uuid:t.uuid,url:t.url}:void 0})(),r=Rr(e,{installed:t,isHipaaRegulated:I,isSensitiveUrl:t=>A(t,e.uuid),isMs365Connector:lt(e),isAddingForOthers:n});switch(r.kind){case"direct-create":return void j(r.params);case"needs-flow":{k();const t={section:"connectors",slug:e.slug??e.uuid,connect:!0},r=new URLSearchParams(v);return void(f?function(e,t,r){P(e,t,r.hash,r.search)}("push",y,V(t,r)):g.push(H(t,y,r)))}case"reauth":return n?void m?.({uuid:r.installed.uuid,name:e.name}):void E({uuid:r.installed.uuid,url:r.installed.url})}},[k,j,f,E,s,n,I,N,m,M,y,A,g,v,e]);return Ne.jsx(Ye,{variant:c,size:d,"aria-label":p,onClick:T,busy:N||w,disabled:void 0===M||N,children:u??Ne.jsx(Ue,{defaultMessage:"Connect",id:"+vVZ/G11Zg"})})}function es(){const e=o("mcp_server_spec_directory"),t=o("mcp_connector_directory_cxdir_v2");return e||t}function ts({modal:e,onClose:t,server:r,createServer:s,initMcpAuth:n,attestations:a}){const o=r?.urlRegex,i=!!e&&["ADDL_DETAILS","AUTH"].includes(e),[c,d]=je.useState(""),[u,l]=je.useState(""),[p,m]=je.useState(""),h=Oe(),f=r?.requiredFields?.find(({field:e})=>"custom_oauth_client_id"===e),g=r?.requiredFields?.find(({field:e})=>"custom_oauth_client_secret"===e),y=r?.requiredFields?.find(({field:e})=>"url"===e),v=je.useMemo(()=>{if(p){try{new URL(p)}catch(e){return h.formatMessage({defaultMessage:"Not a valid URL",id:"1q4BO/rQBR"})}return o&&!new RegExp(o).test(p)?h.formatMessage({defaultMessage:"Server URL doesn\u2019t match expected format",id:"1KFuv4Zo5S"}):void 0}},[h,p,o]),_=!r||f&&!c||g&&!u||y&&!p||!!v,b=()=>{t(),d(""),l(""),m("")};if(!r||!i)return null;const{iconType:C,iconSrc:x}=Q(r.iconUrl,r.url);return Ne.jsx(We.Root,{open:i,onOpenChange:e=>!e&&b(),children:Ne.jsxs(We.Popup,{size:"md",children:[Ne.jsx(We.Header,{showClose:!1,description:"ADDL_DETAILS"===e?Ne.jsx(Ue,{defaultMessage:"To install {server} you\u2019ll need some additional information from their site",id:"u1bC6CGiVJ",values:{server:r.name}}):void 0,children:"ADDL_DETAILS"===e?Ne.jsxs(Ne.Fragment,{children:[Ne.jsx(Ue,{defaultMessage:"Install",id:"ubmFc8rrea"})," ",Ne.jsx("span",{className:"font-normal",children:r.name})]}):Ne.jsx(Ue,{defaultMessage:"Grant access to {server}",id:"FJY3dfhgw2",values:{server:r.name}})}),"ADDL_DETAILS"===e?Ne.jsxs("form",{onSubmit:e=>e.preventDefault(),className:"mt-5 flex flex-col gap-6",children:[(()=>{let e=0;return Ne.jsxs(Ne.Fragment,{children:[!!y&&Ne.jsx(rs,{fieldNumber:++e,serverName:r.name,sourceUrl:y.sourceUrl,fieldName:h.formatMessage({defaultMessage:"Server URL",id:"C9POHlEjKc"}),value:p,onValueChange:m,error:v}),!!f&&Ne.jsx(rs,{fieldNumber:++e,serverName:r.name,sourceUrl:f.sourceUrl,fieldName:h.formatMessage({defaultMessage:"OAuth Client ID",id:"hyI5ppedvi"}),value:c,onValueChange:d}),!!g&&Ne.jsx(rs,{fieldNumber:++e,serverName:r.name,sourceUrl:g.sourceUrl,fieldName:h.formatMessage({defaultMessage:"OAuth Client Secret",id:"bDGyh6+piN"}),value:u,onValueChange:l})]})})(),Ne.jsxs(We.Footer,{children:[Ne.jsx(Ye,{variant:"secondary",onClick:b,children:Ne.jsx(Ue,{defaultMessage:"Cancel",id:"47FYwba+bI"})}),Ne.jsx(Ye,{disabled:_,variant:"primary",onClick:()=>{_||(s({name:r.name,url:r.url||p,custom_oauth_client_id:c||void 0,custom_oauth_client_secret:u||void 0,attestations:a,mcp_directory_server_uuid:r.uuid}),b())},children:Ne.jsx(Ue,{defaultMessage:"Continue",id:"acrOozm08x"})})]})]}):Ne.jsx("div",{className:"flex flex-col",children:Ne.jsxs("div",{className:"flex flex-col items-center gap-2 pt-8 pb-[3rem]",children:[Ne.jsxs("div",{className:"flex flex-row items-center",children:[Ne.jsx(J,{size:54,imageSize:30,type:C,src:x,name:r.name}),Ne.jsx("div",{className:"h-[1px] w-[3rem] bg-text-000 opacity-20"}),Ne.jsx(X,{size:54,children:Ne.jsx(ct,{size:30})})]}),Ne.jsx("p",{className:"text-center text-text-300 text-sm",children:Ne.jsx(Ue,{defaultMessage:"Complete the sign-in steps in the new browser tab.",id:"4LttHd6rY7"})}),Ne.jsx("p",{className:"text-center text-text-300 text-sm",children:Ne.jsx(Ue,{defaultMessage:"Didn\u2019t work? <a>Relaunch the tab.</a>",id:"qGHt/1Zswe",values:{a:e=>Ne.jsx(T,{onClick:n,children:e})}})})]})})]})})}function rs({fieldNumber:e,serverName:t,fieldName:r,sourceUrl:s,value:n,onValueChange:a,error:o}){const i=Oe(),c=pr(s),d=c?.startsWith("http")?c:null;return Ne.jsxs(Ne.Fragment,{children:[Ne.jsx(ss,{stepNumber:2*e-1,instruction:i.formatMessage({defaultMessage:"Get a {fieldName} from {serverName}",id:"avmvjXYtv/"},{fieldName:r,serverName:t}),children:d&&Ne.jsx(Ye,{variant:"secondary",size:"sm",render:Ne.jsx("a",{href:d,target:"_blank",rel:"noreferrer"}),icon:Ne.jsx(st,{size:12}),iconPosition:"end",className:"self-start",children:ee(d)??t})}),Ne.jsxs(ss,{stepNumber:2*e,instruction:i.formatMessage({defaultMessage:"Paste the {fieldName} here",id:"BLPEZUCG54"},{fieldName:r}),children:[Ne.jsx(Ze,{"aria-label":r,placeholder:r,value:n,onChange:e=>a(e.target.value.trim()),"aria-invalid":!!o||void 0,"data-invalid":!!o||void 0}),!!o&&Ne.jsx("p",{className:"text-danger-000 text-xs",children:o})]})]})}function ss({stepNumber:e,instruction:t,children:r}){return Ne.jsxs("div",{className:"flex flex-row gap-3",children:[Ne.jsx("div",{className:"shrink-0 text-xs h-5 w-5 flex items-center justify-center rounded-full bg-bg-500",children:e}),Ne.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[Ne.jsx("p",{className:"text-text-300 text-sm",children:t}),r]})]})}function ns(e){if("local"===e.type)return{type:"external",src:e.iconUrl};if("firstParty"===e.type)return{type:"syncSource",src:e.syncSourceType};const t=e.url?ne[e.url]:void 0;if(t)return{type:"syncSource",src:t};const r=Q(e.iconUrl,e.url);return{type:r.iconType,src:r.iconSrc}}function as({isOpen:e,selectedServerUuid:t}){const r=je.useRef(!1),{track:s}=a();je.useEffect(()=>{!e||r.current&&!t||(r.current=!0,s({event_key:"claudeai.mcp.directory.page_view",directory_server_id:t}))},[e,t,s])}function os(){const e=l(),t=e.get("directory-open"),r=e.get("directory-uuid"),s=e.get("directory-category"),n=ae(),a=je.useRef(!1);je.useEffect(()=>{if(t&&!a.current){a.current=!0;try{const e=new URL(window.location.href);e.searchParams.delete("directory-open"),e.searchParams.delete("directory-uuid"),e.searchParams.delete("directory-category"),window.history.replaceState(window.history.state,"",e.pathname+e.search+e.hash)}catch(e){window.history.replaceState(window.history.state,"",window.location.pathname+window.location.hash)}r?n({section:"connectors",slug:r}):n({section:"connectors"},s?{connectorCategoryFilter:[s]}:void 0)}},[t,r,s,n])}function is(){const e=_(),t=b(),r=te(),s=zt();return je.useMemo(()=>function(e,t,r,s){const n=new Set;return e[I.GMAIL]?.available&&!t||n.add(I.GMAIL),e[I.GCAL]?.available&&!t||n.add(I.GCAL),e[I.GDRIVE]?.available&&!r||n.add(I.GDRIVE),re.filter(e=>!n.has(e.syncSourceType)).map(e=>s&&e.syncSourceType===I.GDRIVE?{...e,toolNames:se}:e)}(s,e,t,r),[s,e,t,r])}function cs(e,t){return e.filter(e=>e.manifest).map(e=>{const r=e.manifest;return{type:"local",uuid:e.id,name:r.display_name||r.name,oneLiner:r.description,description:r.long_description||r.description,iconUrl:e.icon_url||"",toolNames:r.tools?.map(e=>e.name)||[],promptNames:r.prompts?.map(e=>e.name)||[],license:r.license,version:r.version,author:{name:r.author?.name,url:r.author?.url},documentation:r.documentation,support:r.support,manifest:r,downloadCount:e.download_count,lifetimeDownloadCount:e.lifetime_download_count,popularityScore:e.popularity_score,isBlocklisted:e.is_blocklisted,isInternal:e.is_internal,isAllowlisted:e.is_allowlisted,isHidden:t?.has(e.id)}}).sort((e,t)=>{const r=e.lifetimeDownloadCount??-1;return(t.lifetimeDownloadCount??-1)-r})}const ds=qe(e=>e??{},Be({ids:He(Ve()).default([])})),us={ids:[]};function ls(){const e=A("dxt_hidden_extensions",us,ds);return je.useMemo(()=>new Set(e.ids),[e])}function ps(e){return`/api/organizations/${e}/dxt/extensions?limit=500`}function ms(e){return`/api/organizations/${e}/dxt/installable_extensions?limit=500`}function hs(e){return e.total>e.entries.length&&E.error(k.MCP,"DXT extension list truncated at limit",{fetched:e.entries.length,total:e.total}),e}function fs(e=!0){const{activeOrganization:s}=t(),n=ls(),a=r(ps(s?.uuid),{headers:{"x-mcpb-manifest-version":"0.2"}},hs);if("success"!==a.status)return{status:a.status,servers:[],refetch:a.refetch};const o=(e?a.data.entries:a.data.entries.filter(e=>!0!==e.is_blocklisted)).filter(e=>!gs.has(e.id));return{status:a.status,refetch:a.refetch,servers:cs(o,n)}}const gs=new Set(["ant.dir.gh.hautpsachenet.clickup-mcp","ant.dir.gh.openbnb-org.mcp-server-airbnb","ant.dir.gh.tariqalagha.brave-browser-control","browser-control-firefox","ant.dir.gh.mbmccormick.things","ant.dir.gh.commercelayer.mcp-server-metrics","ant.dir.gh.karanb192.reddit-mcp-buddy","ant.dir.gh.herosizy.cucumberstudio-mcp"]);function ys(){const{activeOrganization:e}=t(),s=ls(),n=r(ms(e?.uuid),{headers:{"x-mcpb-manifest-version":"0.2"},refetchOnMount:!0},hs);if("success"!==n.status)return{status:n.status,servers:[],refetch:n.refetch};const a=n.data.entries.filter(e=>!gs.has(e.id)&&!s.has(e.id));return{status:n.status,refetch:n.refetch,servers:cs(a)}}const vs=je.memo(function({connectorType:e,accepted:t,onAcceptedChange:r}){const s=function(e){return cr[e]}(e);return Ne.jsxs(Ne.Fragment,{children:[Ne.jsx(oe,{components:{p:({children:e})=>Ne.jsx("p",{className:"text-body text-secondary",children:e}),ul:({children:e})=>Ne.jsx("ul",{className:"list-disc pl-5 flex flex-col gap-sm text-body text-secondary",children:e}),li:({children:e})=>Ne.jsx("li",{children:e}),a:({href:e,children:t})=>Ne.jsx(T,{href:e,target:"_blank",rel:"noopener noreferrer",children:t})},children:s}),Ne.jsx("div",{className:"rounded bg-surface-1 p-md",children:Ne.jsx(Qe,{checked:t,onCheckedChange:r,label:Ne.jsx("span",{className:"text-body text-secondary",children:Ne.jsx(Ue,{defaultMessage:"I have reviewed and accept these terms",id:"Z6yCsHDbzB"})})})})]})}),_s=je.memo(({isOpen:e,onClose:t,onContinue:r,serverName:s,connectorType:n,loading:a=!1})=>{const o=Oe(),[i,c]=je.useState(!1);je.useEffect(()=>{e&&c(!1)},[e,s]);const d=()=>{a||(t(),c(!1))},u={custom:o.formatMessage({defaultMessage:"Grant Access to a Custom Connector",id:"WXWiETvvr+"}),customReenable:o.formatMessage({defaultMessage:"Enable a Custom Connector",id:"5yFg0M6lM9"}),directory:o.formatMessage({defaultMessage:"Grant Access to {serverName}",id:"QaZmSeioGe"},{serverName:s}),directoryReenable:o.formatMessage({defaultMessage:"Enable {serverName}",id:"Xa5cW9Xu73"},{serverName:s})}[n];return Ne.jsx(ie,{modalSize:"lg",isOpen:e,onClose:d,hasCloseButton:!0,className:"!p-8",title:u,children:Ne.jsxs("div",{className:"mt-5 flex flex-col gap-md",children:[Ne.jsx(vs,{connectorType:n,accepted:i,onAcceptedChange:c}),Ne.jsxs("div",{className:"flex justify-end mt-6 gap-3",children:[Ne.jsx(ce,{variant:"secondary",size:"lg",onClick:d,disabled:a,children:Ne.jsx(Ue,{defaultMessage:"Cancel",id:"47FYwba+bI"})}),Ne.jsx(ce,{variant:"primary",size:"lg",onClick:()=>{r()},disabled:!i,loading:a,children:Ne.jsx(Ue,{defaultMessage:"Continue",id:"acrOozm08x"})})]})]})})});function bs({sessionId:e,server:t,toolKeys:r,enabled:s,setMcpServers:n,coworkSnapshotSync:a}){if(a)return;const o={uuid:t.uuid,name:t.name,enabled:s,type:t.type,tools:t.tools.map(e=>({name:e.name,description:e.description??"",inputSchema:e.inputSchema})),toolKeys:r};n(e,[o]).then(()=>{Ht.getState().updateSessionEnabledMcpTools(e,r,s)}).catch(e=>{E.error(k.DESKTOP_API,"Failed to update MCP servers:",e)})}function Cs(){const e=de(),t="local_session"===e?.type,r="local_session"===e?.type?e.sessionId:null,s=ue(),n=le(),a=t?r:n?s:void 0,o=t?pe?.setMcpServers:n?me?.setMcpServers:void 0,i=t?pe?.replaceRemoteMcpServers:n?me?.replaceRemoteMcpServers:void 0,c=t?pe?.replaceEnabledMcpTools:n?me?.replaceEnabledMcpTools:void 0,d=Ht(e=>a?e.enabledMcpToolsBySession[a]:void 0);return a?{sessionId:a,storeEnabledMcpTools:d,setMcpServers:o,replaceRemoteMcpServers:i,replaceEnabledMcpTools:c}:{sessionId:void 0,storeEnabledMcpTools:void 0,setMcpServers:void 0,replaceRemoteMcpServers:void 0,replaceEnabledMcpTools:void 0}}_s.displayName="HipaaAttestationModal";function xs(e){return!e.connectUrl||!e.catalogChecked||!!e.requiresInstallForm}const Is=je.memo(({toolResult:e,isStreaming:r,source:s="suggest_connectors",bare:n=!1})=>{const{activeOrganization:i}=t(),{track:c}=a(),{addSuccess:d,addError:u}=S(),l=Z({source:he.ConnectorSuggestion}),[p,m]=je.useState(null),[h,f]=je.useState(null),g=Oe(),y=Ee,v=fe(y),_=je.useRef(!1),b=je.useRef(void 0),{isHipaaRegulated:C,createAttestation:A}=lr(),E=es(),[k,w]=je.useState(null),[M,j]=je.useState([]),N=ge(),U="private-api",L=ye(),R=o("cai_cos_mcp_registry_search"),{sendTransparentMessage:D}=ve(),P=_e("enabled_mcp_tools"),{toggleMcpToolEnabled:F}=be({source:"connector_suggestion"}),{sessionId:z,storeEnabledMcpTools:G,setMcpServers:K,replaceRemoteMcpServers:B,replaceEnabledMcpTools:H}=Cs(),V=!z&&R,q=Bt(B,H),$=je.useMemo(()=>z?G:P,[z,G,P]),W=zt(),Q=is(),{mutate:X}=Ce(),{initDriveAuth:ee}=Re({callerIdentifier:"connector_suggestion",pathname:"/new"}),{startAuth:te}=x(I.GMAIL,{callerIdentifier:"connector_suggestion",pathname:"/new"}),{startAuth:re}=x(I.GCAL,{callerIdentifier:"connector_suggestion",pathname:"/new"}),se=je.useCallback(e=>{e===I.GDRIVE?ee():e===I.GMAIL?te():e===I.GCAL&&re()},[ee,te,re]),{mutate:ne,isPending:ae}=O(i?.uuid??"",{onSuccess:e=>{b.current||l({uuid:e.uuid,url:e.url}),b.current=void 0,m(null)},onError:()=>{b.current=void 0,m(null)}},{source:"directory"}),oe=je.useMemo(()=>{try{const t=JSON.parse(e);return Array.isArray(t)?{connectors:t}:{...t,connectors:t.connectors??t.results??[]}}catch{return null}},[e]),ie=oe?._authErrorOverride,ce=je.useMemo(()=>!!oe?.connectors?.some(e=>e.directoryUuid&&!e.iconUrl&&!e.url),[oe?.connectors]),{servers:de}=xe(),ue=je.useMemo(()=>ce?new Map(de.map(e=>[e.uuid,{iconUrl:e.iconUrl,url:e.url}])):null,[ce,de]),le=je.useMemo(()=>oe?.connectors?oe.connectors.map(e=>{const t=e.directoryUuid?ue?.get(e.directoryUuid):void 0,r={...e,iconUrl:e.iconUrl??t?.iconUrl,url:e.url??t?.url},s=r.directoryUuid?Q.find(e=>e.uuid===r.directoryUuid):void 0;if(s){const{syncSourceType:e}=s,t=e in W?W[e]:void 0;return{...r,isFirstParty:!0,syncSourceType:e,isInstalled:t?.enabledForOrg??!1,isConnected:t?.connected??!1,installedUuid:void 0,installedUrl:void 0,installedIsAuthless:void 0,authStatus:void 0,authErrorSubtype:void 0,hasAuthError:!1,isToolsDisabled:!1}}const n=r.directoryUuid?Y(r.directoryUuid):void 0,a=N.find(e=>e.uuid===r.directoryUuid),o=N.find(e=>e.name.toLowerCase()===r.name.toLowerCase()),i=n??a??o,c=!!i&&!0===i.isConnected&&!!$&&i.tools.length>0&&i.tools.every(e=>!1===$[e.enabledKey]),d=L&&!!ie&&ie.isLive&&!!i&&ie.serverUuid===i.uuid,u=d?Ie(ie.errorCode):i?.authStatus,l=!!d||!!i&&!i.isConnected&&Se(i.authStatus);return{...r,isFirstParty:!1,syncSourceType:void 0,isInstalled:!!i,isConnected:R?!0===i?.isConnected:r.connected||!0===i?.isConnected||!1,installedUuid:i?.uuid,installedUrl:i?.url,installedIsAuthless:i?.directoryMetadata?.isAuthless,authStatus:u,authErrorSubtype:d?void 0:i?.authErrorSubtype,hasAuthError:l,isToolsDisabled:c}}):[],[oe?.connectors,ue,N,W,Q,$,ie,L,R,U]);je.useEffect(()=>{"suggest_connectors"!==s||_.current||r||0===le.length||(_.current=!0,c({event_key:"claudeai.mcp.registry.suggestion.viewed",connector_count:le.length,connector_uuids:le.map(e=>e.directoryUuid),connector_names:le.map(e=>e.name),was_connected:le.map(e=>e.isConnected),had_auth_error:le.map(e=>e.hasAuthError),session_id:z,origin:ie?"synthetic_reconnect":"model"}),z&&c({event_key:"claudeai.setup_cowork.step_reached",step:"connector",session_id:z}))},[s,r,le,c,z,ie]);const[pe,me]=je.useState(!1),Te=je.useCallback(async e=>{if(!i?.uuid)return;if(c({event_key:"claudeai.mcp.registry.suggestion.connect_clicked",connector_uuid:e.directoryUuid,installed_uuid:e.installedUuid,connector_name:e.name,was_installed:e.isInstalled,was_connected:e.isConnected,had_auth_error:e.hasAuthError,auth_status:e.authStatus,session_id:z}),m(e.directoryUuid??e.name),e.isFirstParty&&e.syncSourceType)return void(e.isInstalled?(se(e.syncSourceType),m(null)):X({type:e.syncSourceType,enabled:!0},{onSuccess:()=>{se(e.syncSourceType),m(null)},onError:()=>{m(null)}}));if(e.isInstalled&&e.installedUuid&&e.installedUrl)return(e.installedIsAuthless??e.isAuthless)||l({uuid:e.installedUuid,url:e.installedUrl}),void m(null);let t,r,s=!e.directoryUuid;if(e.directoryUuid)try{const r=await Ae();s=!0,t=r.find(t=>t.uuid===e.directoryUuid)}catch(o){r=o}if(t?.requiredFields?.length&&!t.requiresInstallForm)return C?void w({connectorName:e.name,connectorUrl:e.url||"",directoryServer:t,catalogChecked:!0,isAuthless:t.isAuthless}):void f({server:t,modal:"ADDL_DETAILS"});const n=e.url??t?.url;if(!n||xs({connectUrl:n,catalogChecked:s,requiresInstallForm:t?.requiresInstallForm}))return!s&&e.directoryUuid&&u(g.formatMessage({defaultMessage:"Couldn\u2019t load connector details. Please try again.",id:"u+9+KRWuYJ"}),{error:r,messageForLogging:"connector suggestion catalog fetch failed"}),void m(null);const a=t?.isAuthless??e.isAuthless;C?w({connectorName:e.name,connectorUrl:n,directoryServer:t,catalogChecked:s,isAuthless:a}):(b.current=a,ne({name:e.name,url:n,attestations:[],mcp_directory_server_uuid:t?.uuid}))},[i?.uuid,u,U,ne,l,g,C,z,se,c,X]),Le=je.useCallback(e=>{if(c({event_key:"claudeai.mcp.registry.suggestion.enable_clicked",connector_uuid:e.directoryUuid,connector_name:e.name,was_connected:e.isConnected,had_auth_error:e.hasAuthError,session_id:z}),!e.installedUuid)return;const t=N.find(t=>t.uuid===e.installedUuid);if(!t)return;const r=t.tools.map(e=>e.enabledKey);F(r,!0,t.url),z&&K&&bs({sessionId:z,server:t,toolKeys:r,enabled:!0,setMcpServers:K,coworkSnapshotSync:q}),d(g.formatMessage({defaultMessage:"Got it \u2014 {name} is on for this chat.",id:"AU0g3O96D3"},{name:e.name}))},[N,F,c,z,K,q,d,g]),De=je.useCallback(e=>{c({event_key:"claudeai.mcp.registry.suggestion.use_clicked",connector_uuid:e.directoryUuid,installed_uuid:e.installedUuid,connector_name:e.name,session_id:z}),D?.(`Use ${e.name} for this`),me(!0)},[c,z,D]),Pe=je.useCallback(()=>{c({event_key:"claudeai.mcp.registry.suggestion.decline_clicked",connector_count:le.length,connector_uuids:le.map(e=>e.directoryUuid),connector_names:le.map(e=>e.name),was_connected:le.map(e=>e.isConnected),had_auth_error:le.map(e=>e.hasAuthError),session_id:z,origin:ie?"synthetic_reconnect":"model"}),D?.("Don't use a connector"),me(!0)},[c,le,z,ie,D]),Fe=je.useCallback(()=>{if(!k)return;const e=A("directory");j(e),k.directoryServer?.requiredFields?.length&&!k.directoryServer.requiresInstallForm?f({server:k.directoryServer,modal:"ADDL_DETAILS"}):xs({connectUrl:k.connectorUrl,catalogChecked:k.catalogChecked??!1,requiresInstallForm:k.directoryServer?.requiresInstallForm})?m(null):(b.current=k.isAuthless,ne({name:k.connectorName,url:k.connectorUrl,attestations:e,mcp_directory_server_uuid:k.directoryServer?.uuid})),w(null)},[k,A,ne]),ze=le.length,Ge=le.length>0&&le.every(e=>!0===e.isConnected),Ke=r||!oe&&"{}"===e;return pe||"list_connectors"===s&&!Ke&&0===ze?null:Ne.jsxs("div",{className:Me("font-ui overflow-hidden",n?void 0:"my-3 rounded-2xl border border-border-300 bg-bg-000 shadow-sm"),children:[!n&&Ne.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b-0.5 border-border-300",children:[Ne.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[Ne.jsx(Je,{name:"Connectors",size:"md",className:"text-text-300 flex-shrink-0"}),Ne.jsx("div",{className:"text-sm text-text-100 truncate",children:Ke?Ne.jsx(Xe,{height:16,width:160,className:"rounded-md"}):Ge?Ne.jsx(Ue,{defaultMessage:"Your connectors",id:"4kNppIYdpt"}):oe?.keywords?.[0]&&le.length>0?Ne.jsx(Ue,{defaultMessage:"For your {keyword}",id:"J0BhE6nw3C",values:{keyword:oe.keywords[0]}}):Ne.jsx(Ue,{defaultMessage:"Connectors that could help",id:"ARK21BOYhV"})})]}),!z&&Ne.jsx(et,{variant:"neutral",children:Ne.jsx(Ue,{defaultMessage:"Beta",id:"riw/yc06Nq"})})]}),Ke?Ne.jsx("div",{children:[1,2].map(e=>Ne.jsxs("div",{className:"flex items-center gap-3 p-4",children:[Ne.jsx(Xe,{height:36,width:36,className:"rounded-md"}),Ne.jsxs("div",{className:"flex-1 space-y-1",children:[Ne.jsx(Xe,{height:16,width:96,className:"rounded-md"}),Ne.jsx(Xe,{height:12,width:160,className:"rounded-md"})]}),Ne.jsx(Xe,{height:36,width:80,className:"rounded-md"})]},e))}):0===ze?Ne.jsx("div",{className:"px-4 py-3 text-sm text-text-400",children:Ne.jsx(Ue,{defaultMessage:"I didn't find a matching connector, but you can <link>browse all connectors</link>.",id:"OBvNfVIt7i",values:{link:e=>Ne.jsx(T,{href:y,onClick:v,children:e})}})}):Ne.jsx("div",{className:n?"grid grid-cols-1 gap-3 sm:grid-cols-2":"max-h-96 overflow-y-auto",children:le.map(e=>{const t=p===(e.directoryUuid??e.name),r=t||ae,s=L&&e.hasAuthError,a=s?ke(g,e.name,e.authErrorSubtype):null,o=!s&&e.isInstalled&&e.isConnected&&!e.isToolsDisabled,i=V&&!n&&!e.isFirstParty&&e.isInstalled&&e.isConnected,c=void 0!==e.directoryUuid?de.find(t=>t.uuid===e.directoryUuid):void 0;return Ne.jsxs("div",{className:Me("flex gap-3 p-4",n?"items-start rounded-2xl border-0.5 border-border-200 bg-bg-000 shadow-sm":"items-center hover:bg-bg-200 transition-colors duration-150",s&&"bg-warning-200/5"),children:[Ne.jsxs("div",{className:"flex-shrink-0 relative",children:[e.isFirstParty&&e.syncSourceType?Ne.jsx(J,{size:36,imageSize:26,name:e.name,type:"syncSource",src:e.syncSourceType}):Ne.jsx(J,{size:36,imageSize:26,name:e.name,type:"favicon",src:e.iconUrl||e.url||e.installedUrl,fallbackToGlobe:!0}),s&&Ne.jsx("div",{className:"absolute flex items-center justify-center rounded-full border-2 border-bg-000 bg-warning-100",style:{bottom:-2,right:-2,width:16,height:16},"aria-hidden":!0,"data-testid":"connector-auth-error-badge",children:Ne.jsx("span",{className:"text-always-white font-bold leading-none",style:{fontSize:9},children:"!"})}),o&&Ne.jsx("div",{className:"absolute flex items-center justify-center rounded-full border-2 border-bg-000 bg-success-000",style:{bottom:-2,right:-2,width:16,height:16},"aria-hidden":!0,"data-testid":"connector-installed-badge",children:Ne.jsx(we,{vectorSizeOverride:10,className:"text-always-white stroke-current stroke-[1.5] [stroke-linejoin:round]"})})]}),Ne.jsxs("div",{className:"flex-1 min-w-0",children:[Ne.jsx("div",{className:"font-semibold text-sm text-text-100",children:e.name}),a?Ne.jsx("div",{className:"text-xs text-warning-100",children:a.description}):o?Ne.jsx("div",{className:"text-xs text-success-000",children:Ne.jsx(Ue,{defaultMessage:"Connected",id:"IvjoDSPGEQ"})}):e.isToolsDisabled?Ne.jsx("div",{className:"text-xs text-text-300",children:Ne.jsx(Ue,{defaultMessage:"I could use {name} here, but it's turned off for this chat.",id:"IS3eClMI4S",values:{name:e.name}})}):e.description&&Ne.jsx("div",{className:"text-xs text-text-400 "+(n?"":"truncate"),children:e.description})]}),n?E&&void 0!==c&&!o?Ne.jsx(Xr,{server:c,source:he.ConnectorSuggestion,size:"sm",variant:"secondary",label:Ne.jsx(Je,{name:"Add",customSize:14}),"aria-label":g.formatMessage({defaultMessage:"Connect {name}",id:"6g5cOVBsLQ"},{name:e.name})}):Ne.jsx("button",{type:"button",onClick:()=>{Te(e)},disabled:r||o,"aria-label":o?g.formatMessage({defaultMessage:"{name} connected",id:"CCB7HOX+Qa"},{name:e.name}):g.formatMessage({defaultMessage:"Connect {name}",id:"6g5cOVBsLQ"},{name:e.name}),className:Me("shrink-0 rounded-full border p-1.5 transition-colors",o?"border-transparent bg-text-000 text-bg-000":"border-border-300 text-text-300 hover:bg-bg-200 hover:text-text-100",t&&"animate-pulse"),children:o?Ne.jsx(Je,{name:"Check",customSize:14}):Ne.jsx(Je,{name:"Add",customSize:14})}):Ne.jsx("div",{className:"flex-shrink-0 flex items-center gap-2",children:s&&a?Ne.jsx(Ye,{variant:"primary",className:"!px-3 !min-w-0 text-sm",onClick:()=>{Te(e)},disabled:r,children:t?Ne.jsx(Ue,{defaultMessage:"Connecting...",id:"5y2qWOlFVf"}):a.ctaLabel}):e.isToolsDisabled?Ne.jsx(tt,{content:g.formatMessage({defaultMessage:"Use in chat",id:"NYzfvOBttP"}),children:Ne.jsx("label",{children:Ne.jsx(rt,{size:"sm","aria-label":g.formatMessage({defaultMessage:"Use in chat",id:"NYzfvOBttP"}),checked:!1,onCheckedChange:()=>Le(e)})})}):i?Ne.jsx(Ye,{variant:"primary",className:"!px-3 !min-w-0 text-sm",onClick:()=>De(e),children:Ne.jsx(Ue,{defaultMessage:"Use",id:"yqpcOa0Un0"})}):o?Ne.jsx(tt,{multiline:!0,content:g.formatMessage({defaultMessage:"Not working as expected? Reconnecting can help.",id:"VZCTBRDMHT"}),children:Ne.jsx(Ye,{variant:"secondary",className:"!px-3 !min-w-0 text-sm",onClick:()=>{Te(e)},disabled:r,children:t?Ne.jsx(Ue,{defaultMessage:"Connecting...",id:"5y2qWOlFVf"}):Ne.jsx(Ue,{defaultMessage:"Reconnect",id:"Eg11ZYmdyO"})})}):E&&void 0!==c?Ne.jsx(Xr,{server:c,source:he.ConnectorSuggestion,variant:"primary"}):Ne.jsx(Ye,{variant:"primary",className:"!px-3 !min-w-0 text-sm",onClick:()=>{Te(e)},disabled:r,children:t?Ne.jsx(Ue,{defaultMessage:"Connecting...",id:"5y2qWOlFVf"}):Ne.jsx(Ue,{defaultMessage:"Connect",id:"+vVZ/G11Zg"})})})]},e.directoryUuid??e.name)})}),!n&&!Ke&&ze>0&&Ne.jsxs("div",{className:"px-4 py-3 border-t-0.5 border-border-300 flex items-center justify-between gap-3",children:[Ne.jsx("div",{className:"text-xs text-text-400",children:Ne.jsx(Ue,{defaultMessage:"Looking for something else? <link>Browse all connectors</link>",id:"csFwPf3mbj",values:{link:e=>Ne.jsx(T,{href:y,onClick:v,children:e})}})}),V&&Ne.jsx(Ye,{variant:"secondary",className:"!px-3 !min-w-0 text-sm",onClick:Pe,"data-testid":"connector-suggestion-none-of-these",children:Ne.jsx(Ue,{defaultMessage:"None of these",id:"hqA0RV81K9"})})]}),Ne.jsx(ts,{modal:h?.modal,onClose:()=>{f(null),m(null),j([])},server:h?.server,createServer:ne,initMcpAuth:()=>{if(!h?.server)return;if(h.server.isAuthless)return;const e=Y(h.server.uuid);e&&l({uuid:e.uuid,url:e.url})},attestations:M.length>0?M:[]}),Ne.jsx(_s,{isOpen:!!k,onClose:()=>{w(null),m(null)},onContinue:Fe,serverName:k?.connectorName||"",connectorType:"directory"})]})});function Ss(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-")}Is.displayName="ConnectorSuggestionToolResultCell";export{Ct as $,Ft as A,_r as B,Is as C,Xr as D,Yr as E,Pr as F,Dr as G,_s as H,gr as I,jt as J,Ot as K,mt as L,pt as M,Rr as N,ts as O,ls as P,gs as Q,ps as R,Vt as S,ms as T,$t as U,ys as V,as as W,br as X,Qr as Y,os as Z,xt as _,Kt as a,St as a0,bt as a1,vt as a2,yt as a3,ht as a4,ft as a5,gt as a6,At as a7,Et as a8,kt as a9,Pt as aa,Lt as ab,Dt as ac,Rt as ad,qt as ae,Cs as af,Jr as b,ct as c,Ut as d,lr as e,rr as f,wt as g,Mt as h,ut as i,_t as j,fs as k,zt as l,ns as m,lt as n,Ht as o,bs as p,Gt as q,es as r,pr as s,Ss as t,is as u,Bt as v,Qt as w,Jt as x,tr as y,vs as z};
