1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1592],{8542:(e,t,r)=>{r.d(t,{bL:()=>S,q7:()=>_});var s=r(55729),a=r(99829),n=r(27454),l=r(64132),i=r(44704),o=r(16697),d=r(71979),c=r(6029),p="ToggleGroup",[m,u]=(0,a.A)(p,[l.RG]),f=(0,l.RG)(),g=s.forwardRef((e,t)=>{let{type:r,...s}=e;if("single"===r)return(0,c.jsx)(x,{...s,ref:t});if("multiple"===r)return(0,c.jsx)(b,{...s,ref:t});throw Error(`Missing prop \`type\` expected on \`${p}\``)});g.displayName=p;var[y,h]=m(p),x=s.forwardRef((e,t)=>{let{value:r,defaultValue:a,onValueChange:n=()=>{},...l}=e,[i,d]=(0,o.i)({prop:r,defaultProp:a??"",onChange:n,caller:p});return(0,c.jsx)(y,{scope:e.__scopeToggleGroup,type:"single",value:s.useMemo(()=>i?[i]:[],[i]),onItemActivate:d,onItemDeactivate:s.useCallback(()=>d(""),[d]),children:(0,c.jsx)(j,{...l,ref:t})})}),b=s.forwardRef((e,t)=>{let{value:r,defaultValue:a,onValueChange:n=()=>{},...l}=e,[i,d]=(0,o.i)({prop:r,defaultProp:a??[],onChange:n,caller:p}),m=s.useCallback(e=>d((t=[])=>[...t,e]),[d]),u=s.useCallback(e=>d((t=[])=>t.filter(t=>t!==e)),[d]);return(0,c.jsx)(y,{scope:e.__scopeToggleGroup,type:"multiple",value:i,onItemActivate:m,onItemDeactivate:u,children:(0,c.jsx)(j,{...l,ref:t})})});g.displayName=p;var[v,w]=m(p),j=s.forwardRef((e,t)=>{let{__scopeToggleGroup:r,disabled:s=!1,rovingFocus:a=!0,orientation:i,dir:o,loop:p=!0,...m}=e,u=f(r),g=(0,d.jH)(o),y={role:"group",dir:g,...m};return(0,c.jsx)(v,{scope:r,rovingFocus:a,disabled:s,children:a?(0,c.jsx)(l.bL,{asChild:!0,...u,orientation:i,dir:g,loop:p,children:(0,c.jsx)(n.sG.div,{...y,ref:t})}):(0,c.jsx)(n.sG.div,{...y,ref:t})})}),N="ToggleGroupItem",C=s.forwardRef((e,t)=>{let r=h(N,e.__scopeToggleGroup),a=w(N,e.__scopeToggleGroup),n=f(e.__scopeToggleGroup),i=r.value.includes(e.value),o=a.disabled||e.disabled,d={...e,pressed:i,disabled:o},p=s.useRef(null);return a.rovingFocus?(0,c.jsx)(l.q7,{asChild:!0,...n,focusable:!o,active:i,ref:p,children:(0,c.jsx)(k,{...d,ref:t})}):(0,c.jsx)(k,{...d,ref:t})});C.displayName=N;var k=s.forwardRef((e,t)=>{let{__scopeToggleGroup:r,value:s,...a}=e,n=h(N,r),l={role:"radio","aria-checked":e.pressed,"aria-pressed":void 0},o="single"===n.type?l:void 0;return(0,c.jsx)(i.l,{...o,...a,ref:t,onPressedChange:e=>{e?n.onItemActivate(s):n.onItemDeactivate(s)}})}),S=g,_=C},31592:(e,t,r)=>{r.r(t),r.d(t,{__N_SSG:()=>R,default:()=>E});var s=r(6029),a=r(99368),n=r(66380),l=r(80234),i=r(70510),o=r(45222),d=r(62062),c=r(76391),p=r(43012),m=r(11006),u=r(20191),f=r(8588),g=r.n(f),y=r(55729);let h="tiro:mcp-consent-token",x=e=>400===e||404===e||410===e,b=()=>{try{return window.sessionStorage.getItem(h)}catch(e){return null}},v=e=>{try{window.sessionStorage.setItem(h,e)}catch(e){return}},w=e=>{try{b()===e&&window.sessionStorage.removeItem(h)}catch(e){return}},j={"mcp:notes:read":["note:read","note_summary:read","note_document:read","note_document_template:read","wiki:read"],"mcp:folders:read":["folder:read"],"mcp:notes:write":["note:write"],"mcp:folders:write":["folder:write"]},N=e=>{var t;return null!=(t=j[e])?t:[e.replace(/^mcp:/,"")]},C={"note_summary:read":"mcpConsent.entities.aiDocuments.scopes.summary","note_document:read":"mcpConsent.entities.aiDocuments.scopes.document","note_document_template:read":"mcpConsent.entities.aiDocuments.scopes.template"},k=[{key:"notes",readScopes:["note:read"],writeScopes:["note:write"]},{key:"aiDocuments",readScopes:["note_summary:read","note_document:read","note_document_template:read"],writeScopes:[]},{key:"folders",readScopes:["folder:read"],writeScopes:["folder:write"]},{key:"wiki",readScopes:["wiki:read"],writeScopes:[]}],S=e=>"string"==typeof e&&e.trim().length>0,_=e=>{if(null==e)return{valid:!0,descriptor:null};if("object"!=typeof e||Array.isArray(e))return{valid:!1};let{type:t,version:r,displayName:s,description:a}=e;return"refresh_token"===t&&S(r)&&!(r.length>32)&&S(s)&&S(a)?{valid:!0,descriptor:{version:r,displayName:s,description:a}}:{valid:!1}},A=(e,t)=>{if(!Array.isArray(e)||!e.every(S)||!Array.isArray(t))return null;let r=new Set(e);if(r.size!==e.length)return null;let s=new Set,a=new Map;for(let e of t){if("object"!=typeof e||null===e)return null;let{scope:t,resource:n,displayName:l,access:i,description:o}=e;if(!S(t)||!S(n)||!S(l)||"read"!==i&&"write"!==i||!S(o)||t!=="".concat(n,":").concat(i)||!r.has(t)||s.has(t))return null;let d=a.get(n);if(d&&(d.displayName!==l||d.scopes[i]))return null;
1let c=null!=d?d:{key:n,displayName:l,descriptions:{},scopes:{}};c.descriptions[i]=[o],c.scopes[i]=[t],a.set(n,c),s.add(t)}return s.size===r.size?Array.from(a.values()):null},T=e=>{if(!Array.isArray(e)||!e.every(S))return null;let t=new Set(e.flatMap(N)),r=new Set(k.flatMap(e=>[...e.readScopes,...e.writeScopes]));return Array.from(t).some(e=>!r.has(e))?null:k.flatMap(e=>{let r=e.readScopes.filter(e=>t.has(e)),s=e.writeScopes.filter(e=>t.has(e));if(0===r.length&&0===s.length)return[];let a="aiDocuments"===e.key&&r.length>0?r.map(e=>C[e]):["mcpConsent.entities.".concat(e.key,".description")];return[{key:e.key,displayName:"mcpConsent.entities.".concat(e.key,".title"),descriptions:{...r.length>0?{read:a}:{},...s.length>0?{write:a}:{}},scopes:{...r.length>0?{read:r}:{},...s.length>0?{write:s}:{}},translateCopy:!0}]})};var R=!0;let E=()=>{let{t:e}=(0,u.Bd)(),t=(0,c.X)(),{logAction:r,logError:f}=(0,d.w)("McpConsentPage"),[h,j]=(0,y.useState)(null),[N,C]=(0,y.useState)(null),[k,S]=(0,y.useState)(null),[R,E]=(0,y.useState)([]),[I,M]=(0,y.useState)({}),[P,D]=(0,y.useState)(null),[G,q]=(0,y.useState)(!1),[z,L]=(0,y.useState)("loadingClientInfo"),[U,F]=(0,y.useState)(null),O=(0,y.useRef)(!1),W=(0,y.useRef)(f);(0,y.useEffect)(()=>{W.current=f},[f]);let $=(0,y.useMemo)(()=>(0,p.y)({baseURL:"".concat("https://api.tiro.ooo","/v1"),headers:{}}),[]);(0,y.useEffect)(()=>{if(!t.isReady||O.current)return;O.current=!0;let e=t.query.consentToken,r=null!=e?e:b();if(!r)return void L("invalidToken");e&&v(e),j(r),e&&t.replace(t.pathname,void 0,{shallow:!0})},[t]),(0,y.useEffect)(()=>{h&&$.get("/oauth/consent/client-name?consentToken=".concat(encodeURIComponent(h))).then(e=>{var t;let{data:r}=e;if(!(null==(t=r.redirectUri)?void 0:t.trim())){W.current(Error("MCP consent client info missing redirect URI")),L("clientInfoError");return}let s=void 0===r.requestedScopeDescriptors?T(r.requestedScopes):A(r.requestedScopes,r.requestedScopeDescriptors);if(!s){W.current(Error("MCP consent client info has invalid scope descriptors")),L("clientInfoError");return}let a=_(r.longLivedAccess);if(!a.valid){W.current(Error("MCP consent client info has invalid long-lived access")),L("clientInfoError");return}C(r.clientName),S(r.redirectUri),E(s),D(a.descriptor),q(!1),M(Object.fromEntries(s.map(e=>[e.key,e.scopes.read?"read":"none"]))),L("choosing")}).catch(e=>{let t=x(e.status);if(t)w(h);else{let t=e.status?"HTTP ".concat(e.status):"network";W.current(Error("MCP consent client info request failed: ".concat(t)))}L(t?"invalidToken":"clientInfoError")})},[$,h]);let V=e=>["none",...e.scopes.read?["read"]:[],...e.scopes.write?["write"]:[]],B=e=>{var t;let r=null!=(t=I[e.key])?t:"none";return V(e).includes(r)?r:"none"},H=R.some(e=>"write"===B(e)),K=Array.from(new Set(R.flatMap(e=>{var t,r,s;let a=B(e);return"read"===a?null!=(t=e.scopes.read)?t:[]:"write"===a?[...null!=(r=e.scopes.read)?r:[],...null!=(s=e.scopes.write)?s:[]]:[]}))),X=async e=>{if(h&&!U&&(!e||(null==k?void 0:k.trim()))&&(!e||!P||G)){r(e?"ApproveConsent - scopes=".concat(K.join(",")):"DenyConsent - User denied MCP access"),F(e?"approve":"deny");try{let{data:t}=await $.post("/oauth/consent",e?{consentToken:h,approved:e,allowWrite:H,grantedScopes:K,...P&&G?{longLivedAccessApproved:!0,longLivedAccessDisclosureVersion:P.version}:{}}:{consentToken:h,approved:e,allowWrite:!1});w(h),L("redirecting"),window.location.href=t.redirectUrl}catch(t){F(null);let e=x(t.status);e&&w(h),L(e?"invalidToken":"retryableError")}}},Z=(e,t)=>{r("SelectPermissionLevel - ".concat(e,"=").concat(t)),M(r=>({...r,[e]:t}))},J=null!==U,Q=J||!(null==k?void 0:k.trim());return(0,s.jsxs)("div",{className:"flex min-h-screen w-full flex-col bg-tds-bg-baseWarm",children:[(0,s.jsx)("main",{className:"flex flex-1 items-center justify-center px-4 py-6 sm:px-6 sm:py-10",children:(0,s.jsxs)(l.Zp,{className:"grid w-full max-w-[920px] grid-cols-1 gap-0 overflow-hidden rounded-3xl p-0 py-0 lg:min-h-[620px] lg:grid-cols-[320px_minmax(0,1fr)]",children:[(0,s.jsxs)("aside",{className:"flex min-w-0 flex-col bg-tds-bg-primaryMuted p-7 sm:p-9",children:[(0,s.jsx)(g(),{src:a.A,alt:"Tiro",className:"h-auto w-24 object-contain"}),(0,s.jsxs)("div",{className:"my-10 lg:my-auto",children:[(0,s.jsxs)("div",{className:"mb-7 flex items-center gap-3","aria-hidden":"true",children:[(0,s.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl border border-tds-bd-base bg-tds-bg-raised typography-h4 text-tds-fg-primary",children:"T"}),(0,s.jsx)(m.A,{className:"h-4 w-4 text-tds-fg-muted",strokeWidth:1.75,"aria-hidden":"true"}),(0,s.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl border border-tds-bd-base bg-tds-bg-raised typography-h4 text-tds-fg-primary",children:(null==N?void 0:N.trim().charAt(0).toUpperCase())||"â¦"})]}),(0,s.jsx)("h1",{className:"break-keep text-balance typography-h1 text-tds-fg-primary",children:e("mcpConsent.title")}),k&&"invalidToken"!==z&&(0,s.jsxs)("div",{className:"mt-5",children:[(null==N?void 0:N.trim())&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("p",{className:"typography-cmp-xs-plus text-tds-fg-primarySubtle",children:e("mcpConsent.requestedBy")}),(0,s.jsx)("p",{className:"mt-1 break-words font-semibold typography-cmp-sm text-tds-fg-primary",children:N})]}),(0,s.jsx)("p",{className:"mt-3 typography-cmp-xs-plus text-tds-fg-primarySubtle",children:e("mcpConsent.redirectUri")}),(0,s.jsx)("code",{dir:"ltr",className:"mt-1 block break-all rounded-xl border border-tds-bd-base bg-tds-bg-raised px-3 py-2 font-mono typography-cmp-xs text-tds-fg-primary",children:k})]}),(0,s.jsx)("p",{className:"mt-2 break-keep text-pretty typography-cmp-sm text-tds-fg-primarySubtle",children:e("mcpConsent.description")})]})]}),(0,s.jsx)("section",{className:"flex min-w-0 flex-col justify-center p-5 sm:p-8",children:"loadingClientInfo"===z?(0,s.jsx)("p",{role:"status",className:"text-center typography-cmp-md text-tds-fg-primarySubtle",children:e("mcpConsent.loadingClientInfo")}):"invalidToken"===z?(0,s.jsx)("p",{className:"text-center typography-cmp-md text-tds-fg-primarySubtle",children:e("mcpConsent.invali
1dToken")}):"redirecting"===z?(0,s.jsx)("p",{className:"text-center typography-h3 text-tds-fg-primarySubtle",children:e("mcpConsent.redirectMessage")}):k?(0,s.jsxs)(s.Fragment,{children:[R.length>0&&(0,s.jsxs)("header",{className:"mb-5",children:[(0,s.jsx)("h2",{className:"typography-h3 text-tds-fg-primary",children:e("mcpConsent.permissionsTitle")}),(0,s.jsx)("p",{className:"mt-1 break-keep typography-cmp-sm text-tds-fg-subtle",children:e("mcpConsent.permissionsDescription")})]}),"retryableError"===z&&(0,s.jsx)("p",{role:"alert",className:"mb-4 rounded-xl bg-tds-bg-errorSubtle px-4 py-3 typography-cmp-sm text-tds-fg-error",children:e("mcpConsent.retryError")}),0===R.length&&(0,s.jsx)("p",{role:"status",className:"rounded-xl bg-tds-bg-subtle px-4 py-3 typography-cmp-sm text-tds-fg-base",children:e("mcpConsent.noPermissions")}),R.length>0&&(0,s.jsx)("div",{className:"overflow-hidden rounded-xl border border-tds-bd-base",children:(0,s.jsx)("div",{className:"divide-y divide-tds-bd-base",children:R.map(t=>{var r,a,n;let l=V(t),i=B(t),d=t.translateCopy?e(t.displayName):t.displayName,c=(null!=(n=null!=(a=null!=(r=t.descriptions["none"===i?"read":i])?r:t.descriptions.read)?a:t.descriptions.write)?n:[]).map(r=>t.translateCopy?e(r):r).join(", ");return(0,s.jsxs)("div",{className:"flex min-h-[88px] flex-col gap-3 px-4 py-4 sm:flex-row sm:items-center sm:justify-between sm:gap-5",children:[(0,s.jsxs)("div",{className:"min-w-0 sm:max-w-[230px]",children:[(0,s.jsx)("span",{className:"typography-cmp-md-plus text-tds-fg-primary",children:d}),(0,s.jsx)("p",{className:"mt-0.5 break-keep typography-cmp-xs text-tds-fg-subtle",children:c})]}),(0,s.jsx)(o.O,{type:"single",value:i,role:"radiogroup","aria-label":d,disabled:Q,onValueChange:e=>{("none"===e||"read"===e||"write"===e)&&Z(t.key,e)},className:"w-full justify-stretch rounded-xl bg-tds-bg-muted p-1 sm:w-[260px]",children:l.map(t=>(0,s.jsx)(o.d,{value:t,className:"h-9 flex-1 whitespace-nowrap px-2 typography-cmp-md-plus text-tds-fg-subtle hover:bg-tds-bg-base hover:text-tds-fg-base data-[state=on]:bg-tds-bg-baseWarm data-[state=on]:text-tds-fg-primary data-[state=on]:shadow-tds-hairline",children:e("mcpConsent.levels.".concat(t))},t))})]},t.key)})})}),P&&(0,s.jsxs)("label",{className:"mt-4 flex cursor-pointer items-start gap-3 rounded-xl border border-tds-bd-base px-4 py-4",children:[(0,s.jsx)(i.S,{checked:G,disabled:Q,"aria-labelledby":"long-lived-access-title","aria-describedby":"long-lived-access-description","aria-required":"true",onCheckedChange:e=>{let t=!0===e;r("ToggleLongLivedAccess - approved=".concat(t)),q(t)}}),(0,s.jsxs)("span",{className:"min-w-0",children:[(0,s.jsx)("span",{id:"long-lived-access-title",className:"block typography-cmp-md-plus text-tds-fg-primary",children:P.displayName}),(0,s.jsx)("span",{id:"long-lived-access-description",className:"mt-0.5 block break-keep typography-cmp-xs text-tds-fg-subtle",children:P.description})]})]}),(0,s.jsxs)("div",{className:"mt-6 grid grid-cols-1 gap-2.5 ".concat(R.length>0?"sm:grid-cols-[1fr_1.4fr]":""),children:[(0,s.jsx)(n.$,{type:"button",variant:"secondary",size:"lg",onClick:()=>X(!1),disabled:!h||J,"aria-busy":"deny"===U,className:"w-full active:scale-[0.98]",children:"deny"===U?e("mcpConsent.denying"):e("mcpConsent.deny")}),R.length>0&&(0,s.jsx)(n.$,{type:"button",size:"lg",onClick:()=>X(!0),disabled:!h||Q||0===K.length||!!(P&&!G),"aria-busy":"approve"===U,className:"w-full active:scale-[0.98]",children:"approve"===U?e("mcpConsent.approving"):0===K.length?e("mcpConsent.selectAtLeastOne"):e("mcpConsent.approve")})]})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{role:"alert",className:"whitespace-pre-line rounded-xl bg-tds-bg-errorSubtle px-4 py-3 typography-cmp-sm text-tds-fg-error",children:e("retryableError"===z?"mcpConsent.retryError":"mcpConsent.clientInfoError")}),(0,s.jsx)(n.$,{type:"button",variant:"secondary",size:"lg",onClick:()=>X(!1),disabled:!h||J,"aria-busy":"deny"===U,className:"mt-6 w-full active:scale-[0.98]",children:"deny"===U?e("mcpConsent.denying"):e("mcpConsent.deny")})]})})]})}),(0,s.jsxs)("div",{className:"pb-6 text-center typography-cmp-xs text-tds-fg-muted",children:["\xa9 2026"," ",(0,s.jsx)("a",{href:"https://tiro.ooo",className:"hover:underline",children:"ThePlato Inc."})," ",e("landing.allRightsReserved")]})]})}},44704:(e,t,r)=>{r.d(t,{b:()=>c,l:()=>d});
1var s=r(55729),a=r(25269),n=r(16697),l=r(27454),i=r(6029),o="Toggle",d=s.forwardRef((e,t)=>{let{pressed:r,defaultPressed:s,onPressedChange:d,...c}=e,[p,m]=(0,n.i)({prop:r,onChange:d,defaultProp:s??!1,caller:o});return(0,i.jsx)(l.sG.button,{type:"button","aria-pressed":p,"data-state":p?"on":"off","data-disabled":e.disabled?"":void 0,...c,ref:t,onClick:(0,a.mK)(e.onClick,()=>{e.disabled||m(!p)})})});d.displayName=o;var c=d},45222:(e,t,r)=>{r.d(t,{O:()=>d,d:()=>c});var s=r(6029),a=r(55729),n=r(8542),l=r(25981),i=r(46516);let o=a.createContext({size:"default",variant:"default"}),d=a.forwardRef((e,t)=>{let{className:r,variant:a,size:i,children:d,...c}=e;return(0,s.jsx)(n.bL,{ref:t,className:(0,l.cn)("flex items-center justify-center gap-1",r),...c,children:(0,s.jsx)(o.Provider,{value:{variant:a,size:i},children:d})})});d.displayName=n.bL.displayName;let c=a.forwardRef((e,t)=>{let{className:r,children:d,variant:c,size:p,...m}=e,u=a.useContext(o);return(0,s.jsx)(n.q7,{ref:t,className:(0,l.cn)((0,i.v)({variant:u.variant||c,size:u.size||p}),r),...m,children:d})});c.displayName=n.q7.displayName},46516:(e,t,r)=>{r.d(t,{l:()=>d,v:()=>o});var s=r(6029),a=r(55729),n=r(44704),l=r(72262),i=r(25981);let o=(0,l.F)("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-white transition-colors hover:bg-tds-bg-subtle hover:text-tds-fg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-tds-bd-focusRing focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-tds-bg-subtle data-[state=on]:text-tds-fg-base [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 gap-2 ",{variants:{variant:{default:"bg-transparent",outline:"border border-tds-bd-base bg-transparent hover:bg-tds-bg-subtle hover:text-tds-fg-base "},size:{default:"h-10 px-3 min-w-10",sm:"h-7 min-w-8",lg:"h-11 px-5 min-w-11"}},defaultVariants:{variant:"default",size:"default"}}),d=a.forwardRef((e,t)=>{let{className:r,variant:a,size:l,...d}=e;return(0,s.jsx)(n.b,{ref:t,className:(0,i.cn)(o({variant:a,size:l,className:r})),...d})});d.displayName=n.b.displayName}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.