Preview is limited to 10,000 cells, the first 1,000 rows, and the first 100 columns. Download the original to inspect omitted cells.
`),hn=o(``),gn=o(`
Raw cached values; number and date formatting omitted
`,1),_n=o(`
`),vn=o(`
`),yn=o(`
`),bn=o(`
Some slide content was omitted by preview limits.
`),xn=o(`
Text outline only. Visuals, layout, animations, and speaker notes are omitted.
`,1),Sn=o(``),Cn=o(``),wn=o(`
`),Tn=o(`
`),En=o(`
`,1);function Dn(e,r){x(r,!0);let o=F(null),s=A(()=>$e(r.upload)),f=F(`preview`),p=F(`idle`),m=F(``),h=F(``),g=F(``),v=F(!1),y=F(``),b=F(null),S=F(1),E=F(1),O=F(!1),k=F(``),j=null,te=!1,I=F(null),re=F(0),L=F(null),z=F(0),ie=1e4,V=65536,oe=5e3;class se extends Error{}let ce=A(()=>X(_(s))),U=A(()=>Ie(r.upload)),le=A(()=>(_(s)===`markdown`||_(s)===`html`)&&_(p)===`ready`&&_(v));function de(e){return`This ${_(ce).toLowerCase()} is ${Ge(r.upload.byte_size)}. Preview is limited to ${Ge(e)}.`}function fe(e){pe(e);let t=document.createElement(`template`);t.innerHTML=e;let n=et.sanitize(t.content,{RETURN_DOM_FRAGMENT:!0,USE_PROFILES:{html:!0},FORBID_TAGS:[`base`,`embed`,`form`,`iframe`,`link`,`meta`,`object`,`script`,`style`],FORBID_ATTR:[`action`,`formaction`,`srcset`,`style`,`xlink:href`]});for(let e of n.querySelectorAll(`*`))for(let t of Array.from(e.attributes))e.removeAttribute(t.name);let r=document.createElement(`div`);r.append(n);let i=r.innerHTML;return me(i),`${i}`}function W(e){pe(e);let t=Q(e);return me(t),et.sanitize(t,{ALLOWED_TAGS:[`blockquote`,`br`,`code`,`del`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],ALLOWED_ATTR:[]})}function pe(e){if(e.length>65536)throw new se(`Structured preview exceeded the safe source limit.`);let t=0;for(let n of e)if("<[]>*_`-+.!#>|~".includes(n)&&(t+=1,t>ie))throw new se(`Structured preview exceeded the safe complexity limit.`)}function me(e){if(e.length>4194304)throw new se(`Rendered preview exceeded the safe output limit.`);let t=0;for(let n of e)if(n===`<`&&++t>ie*2)throw new se(`Rendered preview exceeded the safe element limit.`)}function he(e){return`Preview data exceeded the ${Ge(e)} safety limit.`}async function ge(e,t){let n=await fetch(_(U),{credentials:`include`,signal:e});if(!n.ok)throw n.status===401||n.status===403?Error(`You no longer have access to this artifact.`):n.status===404?Error(`This artifact is no longer available.`):Error(`Could not load this artifact (${n.status}).`);let r=Number(n.headers.get(`Content-Length`));if(Number.isFinite(r)&&r>t)throw Error(he(t));if(!n.body){let e=new Uint8Array(await n.arrayBuffer());if(e.byteLength>t)throw Error(he(t));return e}let i=n.body.getReader(),a=[],o=0;try{for(;;){let{done:e,value:n}=await i.read();if(e)break;if(o+=n.byteLength,o>t)throw await i.cancel(),Error(he(t));a.push(n)}}finally{i.releaseLock()}let s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.byteLength;return s}async function _e(e,t){return new TextDecoder(`utf-8`,{fatal:!1}).decode(await ge(e,t))}async function ve(e){j?.(),j=null,D(b,null),D(h,``),D(g,``),D(v,!1),D(y,``),D(S,1),D(E,1),D(k,``),te=!1,D(I,null),D(re,0),D(L,null),D(z,0),D(f,`preview`),D(m,``);let t=J(_(s));if(t!==void 0&&r.upload.byte_size>t){D(p,`error`),D(m,de(t),!0);return}if(_(s)===`unsupported`){D(p,`ready`);return}D(p,`loading`);try{if(_(s)===`pdf`){let n=await ue(()=>import(`./BB6meo0l.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=rn;let r=new AbortController,i=()=>r.abort();e.addEventListener(`abort`,i,{once:!0});let a=null,o=0,s=new Promise((e,t)=>{o=window.setTimeout(()=>{r.abort(),a?.destroy(),t(Error(`PDF preview took too long and was stopped.`))},$t)}),c;try{if(c=await Promise.race([ge(r.signal,t),s]),e.aborted)throw new DOMException(`Aborted`,`AbortError`);a=new n.PDFWorker,await Promise.race([a.promise,s])}catch(t){throw clearTimeout(o),e.removeEventListener(`abort`,i),t}if(e.aborted||!a){clearTimeout(o),e.removeEventListener(`abort`,i),a?.destroy();return}let l=a.port,u=e=>{let t=e.data;typeof t==`object`&&t&&`reason`in t&&typeof t.reason==`object`&&t.reason!==null&&`message`in t.reason&&t.reason.message===`Image exceeded maximum allowed size and was removed.`&&(te=!0,j?.(),D(p,`error`),D(m,`PDF page content could not be rendered completely within safety limits.`))};l.addEventListener(`message`,u);let d=null,f=!1;j=()=>{f||(f=!0,l.removeEventListener(`message`,u),d&&d.destroy(),a.destroy(),D(b,null))};let h=n.getDocument({data:c,maxImageSize:Qt,canvasMaxAreaInBytes:Qt*4,stopAtErrors:!0,worker:a});d=h;try{D(b,await Promise.race([h.promise,s]),!0)}finally{clearTimeout(o),e.removeEventListener(`abort`,i)}}else if(_(s)===`spreadsheet`||_(s)===`presentation`){let n=await ge(e,t);if(e.aborted)return;if(_(s)===`spreadsheet`){let t=await Zt(_(s),n,e);if(e.aborted)return;D(I,t,!0)}else{let t=await Zt(_(s),n,e);if(e.aborted)return;D(L,t,!0)}}else{if(D(h,await _e(e,t),!0),e.aborted)return;_(s)===`code`&&D(y,await Yt(_(h),Y(r.upload),e),!0);try{_(s)===`markdown`&&(D(g,W(_(h)),!0),D(v,!0)),_(s)===`html`&&(D(g,fe(_(h)),!0),D(v,!0))}catch(e){if(!(e instanceof se))throw e;D(g,``),D(f,`source`)}}e.aborted||D(p,`ready`)}catch(t){if(e.aborted||t instanceof Error&&t.name===`AbortError`)return;j?.(),j=null,D(p,`error`),D(m,t instanceof Error?t.message:`Could not preview this artifact.`,!0)}}t(()=>{let e=new AbortController;return ve(e.signal),()=>e.abort()}),t(()=>{if(_(s)!==`pdf`||!_(b)||!_(o)||_(p)!==`ready`)return;let e=_(b),t=_(S),n=_(E),r=!1,i=null,a=null,c=null,l=0;return D(O,!0),D(k,``),(async()=>{try{if(l=window.setTimeout(()=>{r||(i?.cancel(),c?.cancel(),j?.(),D(p,`error`),D(m,`PDF page rendering took too long and was stopped.`))},en),a=await e.getPage(t),r||!_(o))return;let s=``,u=0;c=a.streamTextContent().getReader();try{for(;!r;){let{done:e,value:t}=await c.read();if(e)break;for(let e of t.items){if(u+=1,u>oe){await c.cancel(),s=`${s}…`;break}if(!(`str`in e)||!e.str)continue;let t=`${s}${s?` `:``}${e.str}`;if(t.length>V){await c.cancel(),s=`${t.slice(0,V)}…`;break}s=t}if(u>oe||s.endsWith(`…`))break}}finally{c.releaseLock(),c=null}if(r)return;D(k,s||`This page has no extractable text.`,!0);let d=a.getViewport({scale:n}),f=Math.min(window.devicePixelRatio||1,2),h=Math.max(1,Math.floor(d.width*f)),g=Math.max(1,Math.floor(d.height*f));nn(h,g);let v=_(o).getContext(`2d`);if(!v)throw Error(`PDF canvas is unavailable.`);if(_(o).width=h,_(o).height=g,_(o).style.width=`${d.width}px`,_(o).style.height=`${d.height}px`,v.setTransform(f,0,0,f,0,0),i=a.render({canvasContext:v,viewport:d}),await i.promise,te)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(j?.(),D(p,`error`),D(m,e instanceof Error?e.message:`Could not render this PDF page.`,!0))}finally{clearTimeout(l),a?.cleanup(),a=null,r||D(O,!1)}})(),()=>{r=!0,clearTimeout(l),i?.cancel(),c?.cancel()}}),ne(()=>j?.());function ye(e){let t=e.match(/^[A-Z]+/i)?.[0]?.toUpperCase()||`A`,n=0;for(let e of t)n=n*26+e.charCodeAt(0)-64;return n}function be(e){return Number(e.match(/\d+$/)?.[0]||1)}function xe(e){let t=``;for(let n=e;n>0;n=Math.floor((n-1)/26))t=String.fromCharCode(65+(n-1)%26)+t;return t}let Se=A(()=>{let e=_(I)?.sheets[_(re)];if(!e)return{columns:[],rows:[],clipped:!1};let t=Math.max(1,...e.cells.map(e=>ye(e.reference))),n=Math.max(1,...e.cells.map(e=>be(e.reference))),r=Math.min(100,t),i=Math.min(1e3,Math.floor(1e4/r),n),a=new Map(e.cells.map(e=>[e.reference.toUpperCase(),e.value])),o=Array.from({length:r},(e,t)=>xe(t+1));return{columns:o,rows:Array.from({length:i},(e,t)=>({number:t+1,values:o.map(e=>a.get(`${e}${t+1}`)||``)})),clipped:t>r||n>i}});var Ce=En(),we=M(Ce),Te=B(we),Ee=B(Te),De=B(Ee,!0);H(Ee);var Oe=C(Ee,2),ke=B(Oe,!0);H(Oe);var Ae=C(Oe,2),je=B(Ae,!0);H(Ae),H(Te);var Me=C(Te,2),G=B(Me),Ne=e=>{var t=an(),r=B(t);let i;var a=C(r,2);let o;H(t),d(()=>{R(t,`aria-label`,`${_(ce)} view`),R(r,`aria-pressed`,_(f)===`preview`),i=w(r,1,``,null,i,{active:_(f)===`preview`}),R(a,`aria-pressed`,_(f)===`source`),o=w(a,1,``,null,o,{active:_(f)===`source`})}),n(`click`,r,()=>D(f,`preview`)),n(`click`,a,()=>D(f,`source`)),u(e,t)};N(G,e=>{_(le)&&e(Ne)});var Pe=C(G,2),Fe=C(Pe,2);H(Me),H(we);var Le=C(we,2);let Re;var ze=B(Le),K=e=>{var t=on(),n=C(B(t),2),r=B(n);H(n),T(2),H(t),d(e=>c(r,`Opening ${e??``}`),[()=>_(ce).toLowerCase()]),u(e,t)},Be=e=>{var t=sn(),n=C(B(t),4),i=B(n,!0);H(n);var a=C(n,2);H(t),d(()=>{c(i,_(m)),R(a,`href`,_(U)),R(a,`download`,r.upload.filename)}),u(e,t)},Ve=e=>{var t=cn(),n=C(B(t),6);H(t),d(()=>{R(n,`href`,_(U)),R(n,`download`,r.upload.filename)}),u(e,t)},He=e=>{var t=ln(),r=M(t),i=B(r),a=C(i,2),s=B(a);H(a);var l=C(a,2),f=C(l,4),p=C(f,2),m=B(p);H(p);var h=C(p,2);H(r);var g=C(r,2);let v;var y=B(g);ae(y,e=>D(o,e),()=>_(o));var x=C(y,2),T=B(x,!0);H(x),H(g),d(e=>{i.disabled=_(S)<=1||_(O),c(s,`Page ${_(S)??``} of ${_(b).numPages??``}`),l.disabled=_(S)>=_(b).numPages||_(O),f.disabled=_(E)<=.6||_(O),c(m,`${e??``}%`),h.disabled=_(E)>=2||_(O),v=w(g,1,`artifact-viewer__pdf-stage`,null,v,{"is-rendering":_(O)}),R(g,`aria-label`,`PDF page ${_(S)} visual preview`),R(x,`aria-label`,`PDF page ${_(S)} text`),c(T,_(k))},[()=>Math.round(_(E)*100)]),n(`click`,i,()=>D(S,_(S)-1)),n(`click`,l,()=>D(S,_(S)+1)),n(`click`,f,()=>D(E,Math.max(.6,_(E)-.2),!0)),n(`click`,h,()=>D(E,Math.min(2,_(E)+.2),!0)),u(e,t)},Ue=e=>{var t=gn(),r=M(t),i=B(r),a=B(i);H(i);var o=C(i,4),s=e=>{var t=un(),n=B(t);H(t),d(()=>c(n,`${_(I).hiddenSheets??``} hidden ${_(I).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};N(o,e=>{_(I).hiddenSheets>0&&e(s)});var f=C(o,2),p=e=>{var t=un(),n=B(t);H(t),d(()=>c(n,`${_(I).unsupportedSheets??``} non-worksheet ${_(I).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};N(f,e=>{_(I).unsupportedSheets>0&&e(p)}),H(r);var m=C(r,2),h=B(m),g=B(h),v=B(g),y=C(B(v));l(y,17,()=>_(Se).columns,P,(e,t)=>{var n=dn(),r=B(n,!0);H(n),d(()=>c(r,_(t))),u(e,n)}),H(v),H(g);var b=C(g);l(b,21,()=>_(Se).rows,P,(e,t)=>{var n=pn(),r=B(n),i=B(r,!0);H(r);var a=C(r);l(a,17,()=>_(t).values,P,(e,t)=>{var n=fn(),r=B(n,!0);H(n),d(()=>c(r,_(t))),u(e,n)}),H(n),d(()=>c(i,_(t).number)),u(e,n)}),H(b),H(h);var x=C(h,2),S=e=>{var t=mn();u(e,t)};N(x,e=>{(_(Se).clipped||_(I).sheets[_(re)].truncated)&&e(S)}),H(m);var T=C(m,2);l(T,21,()=>_(I).sheets,P,(e,t,r)=>{var i=hn();let a;var o=B(i,!0);H(i),d(()=>{R(i,`aria-selected`,_(re)===r),a=w(i,1,``,null,a,{active:_(re)===r}),c(o,_(t).name)}),n(`click`,i,()=>D(re,r,!0)),u(e,i)}),H(T),d(()=>{c(a,`${_(I).sheets.length??``} ${_(I).sheets.length===1?`sheet`:`sheets`}`),R(m,`aria-label`,`${_(I).sheets[_(re)].name} worksheet`)}),u(e,t)},We=e=>{var t=xn(),r=M(t),i=B(r),o=C(i,2),s=B(o);H(o);var f=C(o,2);H(r);var p=C(r,2),m=B(p);l(m,21,()=>_(L).slides[_(z)].paragraphs,P,(e,t,n)=>{var r=a(),i=M(r),o=e=>{var n=_n(),r=B(n,!0);H(n),d(()=>c(r,_(t))),u(e,n)},s=e=>{var n=vn(),r=B(n,!0);H(n),d(()=>c(r,_(t))),u(e,n)};N(i,e=>{n===0?e(o):e(s,-1)}),u(e,r)}),H(m);var h=C(m,4),g=e=>{var t=yn(),n=B(t);H(t),d(()=>c(n,`${_(L).hiddenSlides??``} hidden ${_(L).hiddenSlides===1?`slide`:`slides`} omitted.`)),u(e,t)};N(h,e=>{_(L).hiddenSlides>0&&e(g)});var v=C(h,2),y=e=>{var t=bn();u(e,t)};N(v,e=>{_(L).truncated&&e(y)}),H(p),d(()=>{i.disabled=_(z)===0,c(s,`Slide ${_(z)+1} of ${_(L).slides.length??``}`),f.disabled=_(z)>=_(L).slides.length-1,R(m,`aria-label`,`Slide ${_(z)+1}: ${_(L).slides[_(z)].title}`)}),n(`click`,i,()=>D(z,_(z)-1)),n(`click`,f,()=>D(z,_(z)+1)),u(e,t)},q=e=>{var t=Sn();i(t,()=>_(g),!0),H(t),u(e,t)},Ke=e=>{var t=Cn();i(t,()=>_(g),!0),H(t),u(e,t)},qe=e=>{var t=wn(),n=B(t);i(n,()=>_(y),!0),H(n),H(t),u(e,t)},Je=e=>{var t=Tn(),n=B(t),r=B(n,!0);H(n),H(t),d(()=>c(r,_(h))),u(e,t)};N(ze,e=>{_(p)===`loading`?e(K):_(p)===`error`?e(Be,1):_(s)===`unsupported`?e(Ve,2):_(s)===`pdf`&&_(b)?e(He,3):_(s)===`spreadsheet`&&_(I)?e(Ue,4):_(s)===`presentation`&&_(L)?e(We,5):_(s)===`html`&&_(f)===`preview`&&_(g)?e(q,6):_(s)===`markdown`&&_(f)===`preview`?e(Ke,7):_(s)===`code`?e(qe,8):e(Je,-1)}),H(Le),d(e=>{c(De,_(ce)),R(Oe,`title`,r.upload.filename),c(ke,r.upload.filename),c(je,e),R(Pe,`href`,_(U)),R(Pe,`download`,r.upload.filename),R(Pe,`aria-label`,`Download ${r.upload.filename}`),Re=w(Le,1,`artifact-viewer__body`,null,Re,{"is-pdf":_(s)===`pdf`,"is-office":_(s)===`spreadsheet`||_(s)===`presentation`})},[()=>Ge(r.upload.byte_size)]),n(`click`,Fe,function(...e){r.onClose?.apply(this,e)}),u(e,Ce),ee()}U([`click`]);var On=o(`
`),kn=o(`
Delete message
Are you sure you want to delete this message? This cannot be undone.
`);function Nn(e,t){x(t,!0);let n=A(()=>t.entries.filter(e=>e.userID!==t.currentUserID));function r(e,t=`Someone`){return e?.display_name?.trim()||(e?.handle?`@${e.handle}`:t)}let i=A(()=>_(n).length===0?``:_(n).length===1?`${r(_(n)[0].user)} is typing…`:_(n).length===2?`${r(_(n)[0].user)} and ${r(_(n)[1].user)} are typing…`:_(n).length===3?`${r(_(n)[0].user)}, ${r(_(n)[1].user)}, and ${r(_(n)[2].user)} are typing…`:`Several people are typing…`);var a=Mn();let o;var s=C(B(a),2),l=B(s,!0);H(s),H(a),d(()=>{o=w(a,1,`typing-indicator`,null,o,{visible:_(n).length>0}),c(l,_(i))}),u(e,a),ee()}var Pn=45e3,Fn=o(`
`),ar=o(`Drag with a pointer, use Arrow Up and Arrow Down while focused, or open the move menu. Moves stay within the current channel section. `,1),or=o(`
Archived channels move to the Archived section and keep their full message history.
`);function hi(e,t){x(t,!0);let r=S(t,`saving`,3,!1),i=S(t,`error`,3,``),a=F(!1),o=A(()=>!!t.channel.archived_at),s=A(()=>`#${rt(t.channel)}`);function l(){r()||t.onClose()}var f=mi(),p=B(f),m=C(p,2),h=B(m),g=C(B(h),2);H(h);var v=C(h,2),y=B(v),b=B(y),w=B(b,!0);H(b),T(2),H(y);var E=C(y,2),O=e=>{var t=ui(),n=B(t,!0);H(t),d(()=>c(n,i())),u(e,t)};N(E,e=>{i()&&e(O)});var k=C(E,2),j=e=>{var i=di(),a=B(i),o=C(a,2),s=B(o,!0);H(o),H(i),d(()=>{a.disabled=r(),o.disabled=r(),c(s,r()?`Restoring...`:`Restore channel`)}),n(`click`,a,l),n(`click`,o,()=>t.onArchivedChange(!1)),u(e,i)},P=e=>{var i=fi(),o=M(i),l=B(o);H(o);var f=C(o,2),p=B(f),m=C(p,2),h=B(m,!0);H(m),H(f),d(()=>{c(l,`Archive ${_(s)??``}? The channel will remain available to workspace members under Archived.`),p.disabled=r(),m.disabled=r(),c(h,r()?`Archiving...`:`Archive channel`)}),n(`click`,p,()=>D(a,!1)),n(`click`,m,()=>t.onArchivedChange(!0)),u(e,i)},te=e=>{var t=pi(),i=B(t),o=C(i,2);H(t),d(()=>{i.disabled=r(),o.disabled=r()}),n(`click`,i,l),n(`click`,o,()=>D(a,!0)),u(e,t)};N(k,e=>{_(o)?e(j):_(a)?e(P,1):e(te,-1)}),H(v),H(m),H(f),d(()=>{p.disabled=r(),g.disabled=r(),c(w,_(s))}),n(`click`,p,l),n(`click`,g,l),u(e,f),ee()}U([`click`]);var gi=`clickclack:browser-notifications-enabled:v1:`;function _i(e){return`${gi}${e}`}function vi(e){if(!e)return!1;try{return window.localStorage.getItem(_i(e))===`enabled`}catch{return!1}}function yi(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(_i(e),`enabled`):window.localStorage.removeItem(_i(e)),!0}catch{return!1}}var bi=o(`
Browser notifications are not supported on this device.
`),xi=o(`
Browser notifications are blocked by this browser.
`),Si=o(`
`),Ci=o(`
Show alerts when ClickClack is in the background.
`);function wi(e,r){x(r,!0);let i=S(r,`isDesktop`,3,!1),a=F(!1),o=F(!1),s=F(`default`),l=F(``),f=F(!1);t(()=>{p(r.user.id,i())});function p(e,t){if(t){D(a,!0),D(s,`granted`),D(o,vi(e),!0),r.onChanged?.(_(o));return}D(a,typeof Notification<`u`),D(s,_(a)?Notification.permission:`unsupported`,!0);let n=vi(e);D(o,_(s)===`granted`&&n,!0),n&&_(s)!==`granted`&&yi(e,!1),r.onChanged?.(_(o))}async function m(e){if(D(l,``),D(f,!1),!e){yi(r.user.id,!1),D(o,!1),r.onChanged?.(!1),D(l,i()?`Desktop notifications disabled`:`Browser notifications disabled`,!0);return}if(i()){D(o,yi(r.user.id,!0),!0),r.onChanged?.(_(o)),D(l,_(o)?`Desktop notifications enabled`:`Desktop notification preference could not be saved`,!0),D(f,!_(o));return}if(typeof Notification>`u`){D(a,!1),D(s,`unsupported`),D(o,!1),r.onChanged?.(!1),D(l,`Browser notifications are not supported`),D(f,!0);return}if(D(s,Notification.permission==="default"?await Notification.requestPermission():Notification.permission,!0),D(a,!0),_(s)===`granted`){D(o,yi(r.user.id,!0),!0),r.onChanged?.(_(o)),D(l,_(o)?`Browser notifications enabled`:`Browser notification preference could not be saved`,!0),D(f,!_(o));return}yi(r.user.id,!1),D(o,!1),r.onChanged?.(!1),D(l,_(s)===`denied`?`Browser notifications are blocked by this browser`:`Browser notifications were not enabled`,!0),D(f,!0)}var h=Ci(),g=B(h),v=B(g),y=B(v,!0);H(v);var b=C(v,4),T=e=>{var t=bi();u(e,t)},E=e=>{var t=xi();u(e,t)};N(b,e=>{!i()&&!_(a)?e(T):!i()&&_(s)===`denied`&&e(E,1)});var O=C(b,2),A=e=>{var t=Si();let n;var r=B(t,!0);H(t),d(()=>{n=w(t,1,`settings-row2__hint`,null,n,{"is-error":_(f)}),c(r,_(l))}),u(e,t)};N(O,e=>{_(l)&&e(A)}),H(g);var j=C(g,2),M=B(j);k(M),H(j),H(h),d(()=>{c(y,i()?`Desktop notifications`:`Browser notifications`),R(M,`aria-label`,i()?`Desktop notifications`:`Browser notifications`),M.disabled=!_(a)||_(s)===`denied`,te(M,_(o))}),n(`change`,M,e=>void m(e.currentTarget.checked)),u(e,h),ee()}U([`change`]);var Ti=o(``),Ei=o(`
`),ji=o(``),Mi=o(``);function Ni(e,n){x(n,!0);let r=S(n,`isDesktop`,3,!1),i=F(null),a=A(()=>_(i)??n.user),o=F(!1),s=F(``),l=F(``),f=F(!1),p=F(!1);t(()=>{D(o,_(a).notification_settings?.pushover_enabled??!1,!0),D(s,_(a).notification_settings?.pushover_user_key??``,!0)});async function m(){if(!_(p)){D(p,!0),D(l,``),D(f,!1);try{let e=await _e({method:`PATCH`,body:JSON.stringify({display_name:_(a).display_name,handle:_(a).handle?`@${_(a).handle}`:``,avatar_url:_(a).avatar_url,notification_settings:{pushover_enabled:_(o),pushover_user_key:_(s)}})});D(i,e.user,!0),n.onUserUpdated?.(e.user),D(l,`Saved`)}catch(e){D(l,e instanceof Error?e.message:`Could not save notifications`,!0),D(f,!0)}finally{D(p,!1)}}}var h=Mi(),v=B(h),y=C(B(v),2);wi(y,{get user(){return _(a)},get isDesktop(){return r()},get onChanged(){return n.onBrowserNotificationsChanged}});var b=C(y,4),T=C(B(b),2),O=B(T);k(O),H(T),H(b);var j=C(b,2),M=C(B(j),2),P=B(M);k(P),H(M),H(j),H(v);var te=C(v,2),ne=B(te),I=e=>{var t=Ai();let n;var r=B(t,!0);H(t),d(()=>{n=w(t,1,`settings-status`,null,n,{"is-error":_(f)}),c(r,_(l))}),u(e,t)},re=e=>{var t=ji();u(e,t)};N(ne,e=>{_(l)?e(I):e(re,-1)});var L=C(ne,2),R=B(L,!0);H(L),H(te),H(h),d(()=>{L.disabled=_(p),c(R,_(p)?`Saving...`:`Save notifications`)}),g(`submit`,h,e=>{e.preventDefault(),m()}),E(O,()=>_(o),e=>D(o,e)),oe(P,()=>_(s),e=>D(s,e)),u(e,h),ee()}var Pi=o(`
Loading…
`),Fi=o(`
`),Ii=o(`
You don't own any bots yet. Open a workspace's Bots & agents page to mint one.
`),Li=o(``),Ri=o(`
·
`),zi=o(`
`),Bi=o(``),Vi=o(`
Account
My bots
Bots you own across your workspaces. Tokens live with the workspace where the bot was created.
`,1);function Hi(e,t){x(t,!0);let r=F(L([])),i=F(`loading`),a=F(``);ie(()=>{o()});async function o(){D(i,`loading`);try{D(r,await ct(),!0),D(i,`ready`)}catch(e){D(i,`error`),D(a,lt(e),!0)}}function s(e){t.onClose(),le(ke(e.workspace.route_id||e.workspace.id,`bots`))}function p(e){return e.startsWith(`@`)?e:`@${e}`}function m(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let h=A(()=>{let e=new Map;for(let t of _(r)){let n=t.workspace.id,r=e.get(n);r?r.entries.push(t):e.set(n,{workspace:t.workspace,entries:[t]})}return[...e.values()].sort((e,t)=>e.workspace.name.localeCompare(t.workspace.name))});var g=Vi(),v=C(M(g),2),y=e=>{var t=Pi();u(e,t)},b=e=>{var t=Fi(),n=B(t,!0);H(t),d(()=>c(n,_(a))),u(e,t)},S=e=>{var t=Ii();u(e,t)},w=e=>{var t=Bi();l(t,21,()=>_(h),e=>e.workspace.id,(e,t)=>{var r=zi(),i=B(r),a=B(i),o=B(a,!0);H(a);var h=C(a,2);H(i);var g=C(i,2);l(g,21,()=>_(t).entries,e=>e.bot.id,(e,t)=>{var r=Ri(),i=B(r),a=B(i),o=e=>{var n=Li();d(()=>R(n,`src`,_(t).bot.avatar_url)),u(e,n)},l=e=>{var n=f();d(e=>c(n,e),[()=>m(_(t).bot.display_name||_(t).bot.handle||`?`)]),u(e,n)};N(a,e=>{_(t).bot.avatar_url?e(o):e(l,-1)}),H(i);var h=C(i,2),g=B(h),v=B(g,!0);H(g);var y=C(g,2),b=B(y),x=B(b,!0);H(b);var S=C(b,4),w=B(S);H(S),H(y),H(h);var T=C(h,2);H(r),d(e=>{c(v,_(t).bot.display_name||_(t).bot.handle),c(x,e),c(w,`${_(t).active_token_count??``}
- active ${_(t).active_token_count===1?`token`:`tokens`}`)},[()=>p(_(t).bot.handle)]),n(`click`,T,()=>s(_(t))),u(e,r)}),H(g),H(r),d(()=>c(o,_(t).workspace.name)),n(`click`,h,()=>s(_(t).entries[0])),u(e,r)}),H(t),u(e,t)};N(v,e=>{_(i)===`loading`?e(y):_(i)===`error`?e(b,1):_(r).length===0?e(S,2):e(w,-1)}),u(e,g),ee()}U([`click`]);var Ui=o(``),Wi=o(``),Gi=o(`
Account
Appearance
Changes apply instantly and follow your account on every device.
#deploysRelease pipeline chatter
2:14 PMPipeline's green again — can we ship v0.2.2 to staging?
CClawbot2:15 PMRan make test && make deploy staging · 34 passed · 12sDone — staging is live on v0.2.2. Smoke checks passed; dashboards look clean.🚀 2✅ 1
2:16 PMPerfect. Promoting to prod after lunch 🌮
Live preview — updates as you pick
Color modeSystem follows your OS setting
Board themePalette for boards, accents, and highlights
Message layoutHow agent activity attaches to replies
`,1);function eo(e,t){x(t,!1);let i=V(),o=V(),p=V(),m=V(),T=V(),E=V(),k=V(),A=V(),j=V(),P=V(),F=V(),te=V(),L=V(),oe=V(),ce=V(),U=V(),ue=V(),ge=V(),ve=V(),ye=V(),be=V(),xe=V(),Se=V(),Ce=V(),we=`clickclack:hide-commentary:v1`,Te=`clickclack:hide-tool-calls:v1`,Ee=`clickclack:user-align:v1`,De=`clickclack:other-align:v1`,Oe=Date.now(),Ae=dt?.integratedTitleBar===!0,je=S(t,`routeWorkspaceID`,8,``),Me=S(t,`routeTargetID`,8,``),G=V(null),Ne=new Fe(()=>_(G)?.id||``),Ie=new Xe(Do),ze=V([]),K=V([]),Ve=V([]),Ue=V(null),We=new Map,Ge=V(!1),q=V([]),J=V([]),qe=V([]),Y=V(``),X=V(``),Z=V(``),Q=V(null),Ze=V(``),Qe=V(``),$e=0,et=``,tt=!1,nt=new Map,it=V(null),ct=V(null),lt=V(!1),pt=!1,mt=V([]),gt=V(!1),_t=V(``),vt=V(new Set),yt=0,bt=V([]),xt=V([]),St=V([]),Ct=V([]),wt=V(null),Tt=V([]),Dt=V(``),Ot=V(null),kt=V(null),jt=V(``),Mt=V(null),Nt=null,Pt=V(null),Ft=V(null),Lt=new Set,Rt=V(``),zt=V(``),Bt=V(``),Vt=V(``),Ht=V(``),Wt=V(``),Kt=V(null),qt=V(!1),Jt=0,Yt=0,Xt=V(null),Zt=V(!1),Qt=V(!1),$t=V(`profile`),en=V(!1),tn=V(!1),nn=V(``),rn=V(!1),an=V(!1),on=V(``),sn=V(!1),cn=V(!1),ln=V(!1),un=V(`left`),dn=V(`left`),fn=V(`loading`),pn=V(!1),mn=V(``),hn=V(!1),gn=``,_n=``,vn=``,yn=null,bn=Promise.resolve(),xn=V(null),Sn=new Map,Cn=V(new Map),wn=new Set,Tn=V(`idle`),En=`idle`,On=!1,kn=!1,Mn=V(!1),Fn=V(!1),In=V(!1),Ln=V(!1),zn=new Map,Bn=0,Hn=V(``),Un=V(void 0),Wn=V(``),Kn=V(!0),qn=V(!1),Jn=V(!1),Yn=V(!1),Xn=V(!1),Qn=V(null),$n=V(null),er=V(null),tr=V(null),nr=V(`message`),rr=V([]),ir,ar=V([]),or,sr=V(Date.now()),cr,lr=V(``),ur=0,dr=0,fr=0,pr=0,mr=0,hr=0,gr=0,_r=0,vr=0,yr=0,br=0,xr=0,Sr=0,wr=V(null),Tr,Er=V(new Set),Dr=V(null),Or=V(``);function kr(e){e!==et&&(et=e,tt=!1,D(Ze,``),Ar(``))}function Ar(e){e!==_(Qe)&&(D(Qe,e),$e+=1)}function jr(){return`${_(Y)}:${$()}:${_(Qe)}:${$e}`}function Mr(e,t){return t?e.filter(e=>!e.archived_at&&(!e.channel_id||e.channel_id===t)):[]}ie(()=>{Fr(),cr=window.setInterval(()=>{D(sr,Date.now())},3e4),Yr(),Hr();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{D(Yn,!1),D(Xn,e.matches)};t();let n=dt?.onNavigate(e=>{le(e,{keepFocus:!0,noScroll:!0})}),r=dt?.onQuickCompose(()=>Nr());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Nr(){s().then(()=>{(_(nr)===`thread`?_(tr):_(er))?.focus()})}async function Pr(e){if(dt){e.preventDefault(),D(mn,`Opening GitHub in your browser…`);try{await dt.signInWithGitHub(),D(mn,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{D(mn,`Could not open your browser. Try again.`)}}}function Fr(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;D(cn,window.localStorage.getItem(we)===`1`||e),D(ln,window.localStorage.getItem(Te)===`1`||e),D(un,window.localStorage.getItem(Ee)===`right`?`right`:`left`),D(dn,window.localStorage.getItem(De)===`right`?`right`:`left`)}catch{D(cn,!1),D(ln,!1),D(un,`left`),D(dn,`left`)}Lr()}function Lr(){try{document.documentElement.setAttribute(`data-user-align`,_(un)),document.documentElement.setAttribute(`data-other-align`,_(dn))}catch{}}function Rr(e){D(un,e),Lr();try{window.localStorage.setItem(Ee,e)}catch{}}function zr(e){D(dn,e),Lr();try{window.localStorage.setItem(De,e)}catch{}}function Br(e){D(cn,e);try{window.localStorage.setItem(we,e?`1`:`0`)}catch{}}function Vr(e){D(ln,e);try{window.localStorage.setItem(Te,e?`1`:`0`)}catch{}}ne(()=>{yn?.close(),yn=null,D(hn,!1),Gt(),ir&&window.clearInterval(ir),or&&window.clearInterval(or),cr&&window.clearInterval(cr),Tr&&clearTimeout(Tr),Os(!1,null)});async function Hr(){try{let e=await _e();if(D(G,e.user),Yr(),await $r(),_(ze).length===0){D(fn,`create a workspace`);return}await _i(je(),Me()),D(fn,`ready`)}catch(e){if(e instanceof he&&(e.status===401||e.status===403)){D(pn,!0),D(fn,`auth`);return}D(fn,e instanceof Error?e.message:`Could not load ClickClack`)}}function Ur(){_(G)&&(D($t,`profile`),D(Qt,!0))}function Wr(){let e=_(i)?.route_id||_(Y)||je();e&&le(ke(e))}function Gr(){_(E)&&(D(nn,``),D(en,!0))}async function qr(e){let t=_(T);if(!(!t||!_(E)||_(tn))){D(tn,!0),D(nn,``);try{let n=await W(`/api/channels/${t.id}`,{method:`PATCH`,body:JSON.stringify({archived:e})});D(K,_(K).map(e=>e.id===n.channel.id?n.channel:e)),D(en,!1)}catch(t){D(nn,me(t,e?`Could not archive channel`:`Could not restore channel`))}finally{D(tn,!1)}}}function Jr(e){D(G,e),oo(_(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),D(qe,_(qe).map(t=>t.author?.id===e.id?{...t,author:e}:t)),_(Q)?.author?.id===e.id&&D(Q,{..._(Q),author:e})}function Yr(){if(dt){D(sn,Zr());return}let e=Zr();D(sn,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!_(sn)&&Qr(!1)}function Xr(){return _(G)?.id?`clickclack:browser-notifications-enabled:v1:${_(G).id}`:``}function Zr(){let e=Xr();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function Qr(e){let t=Xr();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function $r(){let e=++fr,t=await W(`/api/workspaces`);e===fr&&D(ze,t.workspaces)}function ei(e=``,t=``){return`${e||``}/${t||``}`}function ti(e=_(Y),t=``){let n=ii(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=ai(t);return i?`${r}/${encodeURIComponent(i)}`:r}async function ni(e){if(!e.channel_id||e.parent_message_id)throw Error(`Only channel roots have links`);let t=await W(`/api/messages/${e.id}/route`,{method:`POST`});if(!t.message.route_id)throw Error(`Message route was not allocated`);Oo(t.message);let n=ii(t.message.workspace_id);if(!n)throw Error(`Workspace route is unavailable`);let r=`/app/${encodeURIComponent(n)}/${encodeURIComponent(t.message.route_id)}`;return new URL(r,`${pe()}/`).toString()}function ri(e){let t=_(K).find(t=>t.id===e)?.route_id||_(q).find(t=>t.id===e)?.route_id;return t?ti(_(Y),t):!_(Y)||!e?`/app`:`/app/${encodeURIComponent(_(Y))}/${encodeURIComponent(e)}`}function ii(e=_(Y)){return e?_(ze).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function ai(e=``){return e?_(K).find(t=>t.id===e||t.route_id===e)?.route_id||_(q).find(t=>t.id===e||t.route_id===e)?.route_id||_(Q)?.id===e&&_(Q).route_id||_(J).find(t=>t.id===e)?.route_id||e:``}async function oi(e=_(Y),t=``,n=!1){let r=ti(e,t);window.location.pathname!==r&&await le(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function si(){_(qt)&&qo(),D(Q,null),D(it,null),D(ct,null),D(lt,!1),D(nr,`message`),D(qe,[]),D(Yn,!1)}function ci(e=_(Y)){return pi(e)||_(K).find(e=>e.name.toLowerCase()===`guest`)?.id||_(K)[0]?.id||_(q)[0]?.id||``}function ui(e=_(Y)){return _(ze).find(t=>t.id===e||t.route_id===e)}function di(e=_(Y)){let t=ui(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function fi(e){try{let t=JSON.parse(e);return{id:typeof t.id==`string`?t.id:``,routeID:typeof t.routeID==`string`?t.routeID:``}}catch{return{id:e}}}function pi(e=_(Y)){let t=di(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=fi(e)}catch{return``}let r=_(K).find(e=>e.id===n.id||e.route_id===n.routeID);if(r)return r.id;try{window.localStorage.removeItem(t)}catch{}return``}function mi(e,t){if(!e||!t)return;let n=_(K).find(e=>e.id===t);if(!n)return;let r=di(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function gi(e){vn===e&&(vn=``,ls())}async function _i(e=``,t=``){let n=++ur;Ne.clear();let r=ei(e,t),i=t.trim()?await yi(e,t):null;if(n!==ur)return;let a=i?_(ze).find(e=>e.id===i.workspace_id):_(ze).find(t=>t.id===e||t.route_id===e)||_(ze)[0];if(!a){Wi(``,Ui({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),D(lr,r);return}let o=i?ei(i.workspace_route_id,i.target_route_id):ei(a.route_id,``),s=_(Y)!==a.id;if(s&&(io(),Ie.clear(),D(Y,a.id),mr+=1,vr+=1,yr+=1,_r+=1,D(St,[]),D(Ct,[]),D(Ve,[]),D(xt,[]),D(X,``),D(Z,``),D(Q,null),D(it,null),D(ct,null),D(nr,`message`),D(qe,[]),qo(),Zi(),D(Kn,!0),vn=a.id),(s||_(K).length===0)&&await Ci(!1,!1),n!==ur||((s||_(q).length===0)&&await es(),s&&(await Promise.all([Ei(),Oi(a.id),ki(a.id),wi(a.id)]),Di(a.id)),n!==ur))return;if(i){let e=await vi(i,n);if(n!==ur)return;if(!e){si(),await oi(a.id,ci(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(D(lr,o),await le(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==ur))return;if(i?.target_type===`channel`&&_(K).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&_(X)===e&&!_(Z)&&_(Hn)===e;D(X,e),D(Z,``),mi(a.id,e),si();let r=pt;if(pt=!1,t){D(lt,r),D(lr,o),Ji(e),gi(a.id);return}if(kr(e),await Promise.all([Li(),Is(e,``)]),n!==ur)return;D(lt,r),D(lr,o),gi(a.id);return}if(i?.target_type===`direct`&&_(q).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&_(Z)===e&&!_(X)&&_(Hn)===e;if(D(Z,e),D(X,``),si(),t){D(lr,o),Ji(e),gi(a.id);return}if(kr(e),await Li(),n!==ur)return;D(lr,o),gi(a.id);return}if(i?.target_type===`thread`){let e=await bi(i);if(n!==ur)return;if(e){D(lr,o),gi(a.id);return}}let c=ci();if(si(),!c){D(X,``),D(Z,``),kr(``),await Li(),D(lr,r),(e!==a.route_id||t)&&await oi(a.id,``,!0),gi(a.id);return}await oi(a.id,c,!0)}async function vi(e,t){return e.target_type===`channel`?(_(K).some(t=>t.id===e.target_id)||await Ci(!1,!1,!1),t===ur&&_(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(_(q).some(t=>t.id===e.target_id)||(await es(),_(q).some(t=>t.id===e.target_id)||ts((await W(`/api/dms/${e.target_id}`)).conversation)),t===ur&&_(q).some(t=>t.id===e.target_id)):e.parent_type===`channel`&&e.parent_id?(_(K).some(t=>t.id===e.parent_id)||await Ci(!1,!1,!1),t===ur&&_(K).some(t=>t.id===e.parent_id)):e.parent_type===`direct`&&e.parent_id?(_(q).some(t=>t.id===e.parent_id)||(await es(),_(q).some(t=>t.id===e.parent_id)||ts((await W(`/api/dms/${e.parent_id}`)).conversation)),t===ur&&_(q).some(t=>t.id===e.parent_id)):!0}async function yi(e,t){try{return(await W(`/api/routes/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).route}catch(e){if(e instanceof he&&(e.status===403||e.status===404))return null;throw e}}async function bi(e){if(e.workspace_id!==_(Y))return!1;let t=e.parent_type===`channel`&&e.parent_id||``,n=e.parent_type===`direct`&&e.parent_id||``;if(t){if(!_(K).some(e=>e.id===t))return!1;D(X,t),D(Z,``),mi(e.workspace_id,t)}else if(n){if(!_(q).some(e=>e.id===n))return!1;D(Z,n),D(X,``)}else return!1;let r=_(Q)?.id===e.target_id&&_(Hn)===$();if(D(ct,null),D(lt,!1),D(nr,`thread`),D(Yn,!1),await Mo(e.target_id),t&&await Is(t,``),!r&&t&&_(Q)&&(_(Q).thread_state?.reply_count??0)===0){let e=_(Q);return D(Q,null),D(it,null),D(qe,[]),D(nr,`message`),await Zo(e),!0}return!r&&_(Q)&&await Zo(_(Q)),!0}async function xi(){if(!_(Bt).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:_(Bt)})});D(Bt,``),D(qn,!1),D(ze,[..._(ze),e.workspace]),D(Yn,!1),await _i(e.workspace.route_id||e.workspace.id,``),await oi(e.workspace.id),D(fn,`ready`)}async function Si(e){D(Yn,!1),await oi(e)}async function Ci(e=!0,t=!0,n=!0){let r=_(Y);if(!r)return;let i=++pr,a=await W(`/api/workspaces/${r}/channels`);i===pr&&r===_(Y)&&(D(K,a.channels),t?D(X,_(K).find(e=>e.id===_(X))?.id||_(K).find(e=>!e.archived_at)?.id||_(K)[0]?.id||``):_(X)&&!_(K).some(e=>e.id===_(X))&&D(X,``),n&&(_(qt)&&qo(),D(Q,null),D(ct,null),D(nr,`message`),D(qe,[])),e&&await Li())}async function wi(e=_(Y)){let t=++mr,n=$(),r=_(X),i=!1;if(!e){D(Ve,[]);return}try{let a=await W(`/api/workspaces/${e}/topics`);if(t!==mr||e!==_(Y)||(D(Ve,a.topics),$()!==n||_(X)!==r))return;let o=new Set(Mr(a.topics,r).map(e=>e.id));_(Ze)&&!o.has(_(Ze))&&D(Ze,``),_(Qe)&&!o.has(_(Qe))&&(Ar(``),Sn.delete($()),_(Cn).delete($()),i=!0)}catch{return}if(!(!i||$()!==n))try{await Ri()}catch(e){if($()!==n||_(Qe))return;oo(bo(n)),D(wt,{kind:`error`,text:e instanceof Error?`Topic changed, but messages could not reload: ${e.message}`:`Topic changed, but messages could not reload`})}}function Ti(){D(nr,`message`),_(X)&&wi()}async function Ei(e=_(Y)){let t=++gr;if(!e||e!==_(Y)||_(o)!==`owner`&&_(o)!==`moderator`){t===gr&&D(bt,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==gr||e!==_(Y))return;D(bt,n.members)}catch{t===gr&&e===_(Y)&&D(bt,[])}}async function Di(e=_(Y)){let t=++_r;if(!e){D(xt,[]);return}try{let n=[],r;do{let t=await ut({workspaceID:e,cursor:r,limit:100});n.push(...t.members.map(e=>e.user)),r=t.has_more?t.next_cursor:void 0}while(r);if(t!==_r||e!==_(Y))return;D(xt,n)}catch{t===_r&&e===_(Y)&&D(xt,[])}}async function Oi(e=_(Y)){let t=++vr;if(!e){D(St,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==vr||e!==_(Y))return;D(St,n.slash_commands)}catch{t===vr&&e===_(Y)&&D(St,[])}}async function ki(e=_(Y),t=!1){let n=++yr;if(!e){D(Ct,[]);return}try{let t=await Ia(e);if(n!==yr||e!==_(Y))return;D(Ct,t)}catch(r){let i=n===yr&&e===_(Y);if(i&&D(Ct,[]),t&&i)throw r}}function Ai(e){Sr+=1,D(wt,null)}async function ji(e,t){if(!_(Y))return;let n=await W(`/api/workspaces/${_(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});D(bt,[..._(bt).filter(t=>t.user.id!==e),n.member]),await Ci(!1,!1,!1),D(fn,`ready`)}async function Mi(){if(!_(Y)||!_(Vt).trim())return;let e=await W(`/api/workspaces/${_(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:_(Vt),kind:`public`})});D(Vt,``),D(K,[..._(K),e.channel]),D(rn,!1),await oi(_(Y),e.channel.id)}async function Ni(e){D(Yn,!1),mi(_(Y),e);let t=ti(_(Y),e);e===_(X)&&!_(Z)&&window.location.pathname===t||await oi(_(Y),e)}async function Pi(e,t){let n=++br;if(D(Ue,null),!(!e||t))try{let t=await W(`/api/channels/${e}/notification-settings`);if(n!==br||e!==_(X)||_(Z))return;Aa(e,t.preference),D(Ue,t.preference)}catch{if(n===br&&e===_(X)&&!_(Z)){let t=ka(e)||`all`;Aa(e,t),D(Ue,t)}}}async function Fi(){let e=_(X);if(!e||_(Z)||_(Ge)||!_(Ue))return;let t=++br,n=[`all`,`mentions`,`muted`],r=_(Ue),i=n[(n.indexOf(r)+1)%n.length];D(Ue,i),Aa(e,i),D(Ge,!0);try{await W(`/api/channels/${e}/notification-settings`,{method:`PATCH`,body:JSON.stringify({preference:i})})}catch{We.get(e)===i&&Aa(e,r),t===br&&e===_(X)&&!_(Z)&&D(Ue,r)}finally{D(Ge,!1)}}function Ii(e,t){return e===dr&&$()===t}async function Li(e=!0){e&&io();let t=$(),n=++dr,r=t!==_(Hn);Zi(),r&&D(Kn,!0);try{if(!_(Z)&&!_(X)){Wi(``,Ui({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await W(Vi(zi()));if(!Ii(n,t))return;Wi(t,Ui(e),`replace`)}finally{Ii(n,t)&&D(Kn,!1)}}async function Ri(){let e=$();if(!e)return;let t=++dr;Zi(),D(Kn,!0),Sn.set(e,{atBottom:!0});try{let n=await W(Vi(`limit=100`));if(!Ii(t,e))return;Wi(e,Ui(n),`replace`)}finally{Ii(t,e)&&D(Kn,!1)}}function zi(){let e=Bi(),t=e.unread_count||0,n=e.last_read_seq||0;return t>0?`around_seq=${encodeURIComponent(String(n+1))}&limit=100`:`limit=100`}function Bi(){return _(Z)?_(q).find(e=>e.id===_(Z))||{}:_(X)&&_(K).find(e=>e.id===_(X))||{}}function Vi(e){let t=_(Z)?`/api/dms/${_(Z)}/messages`:`/api/channels/${_(X)}/messages`,n=new URLSearchParams(e);!_(Z)&&_(Qe)&&n.set(`topic_id`,_(Qe));let r=n.toString();return r?`${t}?${r}`:t}async function Hi(e){if(!_(X)||e===_(Qe)||tt)return;let t=$(),n=_(Qe),r=_(Ze),i=_(Cn).get(t),a=Sn.get(t);tt=!0,Ar(e);let o=$e;e&&D(Ze,e),Sn.delete(t),_(Cn).delete(t);try{if(await Ri(),$()!==t||$e!==o)return}catch(s){if($()!==t||$e!==o)return;Ar(n),_(Ze)===e&&D(Ze,r),_(Cn).delete(t);let c=$e;try{if(await Ri(),$()!==t||$e!==c)return;a&&(Sn.set(t,a),D(Un,a))}catch{if($()!==t||$e!==c)return;i?(Gi(t,i),ao(t,i.messages),Ji(t,i)):oo(bo(t)),a&&(Sn.set(t,a),D(Un,a))}D(wt,{kind:`error`,text:s instanceof Error?`Topic could not change: ${s.message}`:`Topic could not change`})}finally{tt=!1}}function Ui(e){return{messages:e.messages,oldest_seq:e.oldest_seq,newest_seq:e.newest_seq,has_older:e.has_older,has_newer:e.has_newer}}function Wi(e,t,n){let r=ea(e,t.messages,n),i=r[0]?.channel_seq||0,a=r[r.length-1]?.channel_seq||0,o=i>(t.messages[0]?.channel_seq||i),s=a<(t.messages[t.messages.length-1]?.channel_seq||a),c={messages:r,oldest_seq:i,newest_seq:a,has_older:t.has_older||o,has_newer:t.has_newer||s};Gi(e,c),Ji(e,c),ao(e,r)}function Gi(e,t){e&&(_(Cn).delete(e),_(Cn).set(e,t),Ki(e),qi(e),D(Cn,new Map(_(Cn))))}function Ki(e){let t=_(Cn).size+1;for(;_(Cn).size>8&&t>0;){t--;let n=_(Cn).keys().next().value;if(!n)return;if(n===e){let e=_(Cn).get(n);_(Cn).delete(n),e&&_(Cn).set(n,e);continue}_(Cn).delete(n)}}function qi(e){let t=Sn.size+1;for(;Sn.size>16&&t>0;){t--;let n=Sn.keys().next().value;if(!n)return;if(n===e){let e=Sn.get(n);Sn.delete(n),e&&Sn.set(n,e);continue}Sn.delete(n)}}function Ji(e,t=_(Cn).get(e)){e===$()&&(D(Mn,t?.has_older||!1),D(Fn,t?.has_newer||!1))}function Yi(e){let t=_(Cn).get(e);!e||!t||(Gi(e,{...t,has_newer:!0}),Ji(e))}function Xi(e,t){e===`older`?(D(Tn,t),D(In,t===`loading`)):(En=t,D(Ln,t===`loading`))}function Zi(){wn=new Set,D(Tn,`idle`),En=`idle`,On=!1,kn=!1,D(In,!1),D(Ln,!1)}function Qi(e,t){let n=new Map;for(let r of[...e,...t])n.set(r.id,r);return[...n.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function $i(e){let t=new Set,n=ba(e);if(n>=0){let r=xa(e,_(J),n);r&&t.add(r.id)}let r=Sn.get(e)?.anchorMessageID;r&&t.add(r);let i=Ie.session(e);i&&t.add(i.messageID),_(Q)&&co(_(Q),e)&&t.add(_(Q).id),_(Qn)&&co(_(Qn),e)&&t.add(_(Qn).id);for(let n of _(J))(n.status===`pending`||n.status===`failed`)&&co(n,e)&&t.add(n.id);return t}function ea(e,t,n){return Pe(t,n,$i(e))}function ta(){if(_(Tn)!==`idle`){On=!0;return}ra()}function na(e=!1){if(En!==`idle`){e&&(kn=!0);return}ia()}async function ra(){let e=$(),t=jr(),n=_(Cn).get(e),r=`${t}:older`;if(_(Tn)!==`idle`){On=!0;return}if(!e||!n?.has_older||n.oldest_seq<=0||wn.has(r))return;wn.add(r),On=!1,Xi(`older`,`loading`),io();let i=!1;try{let r=await W(Vi(`before_seq=${encodeURIComponent(String(n.oldest_seq))}&limit=50`));if(jr()!==t)return;Wi(e,{messages:Qi(r.messages,_(J)),oldest_seq:r.oldest_seq||n.oldest_seq,newest_seq:n.newest_seq,has_older:r.has_older,has_newer:n.has_newer},`prepend`),i=!0,Xi(`older`,`settling`)}catch(e){jr()===t&&D(fn,e instanceof Error?e.message:`Could not load older messages`)}finally{wn.delete(r),jr()===t&&!i&&Xi(`older`,`idle`)}}async function ia(){let e=$(),t=jr(),n=_(Cn).get(e),r=`${t}:newer`;if(En!==`idle`){kn=!0;return}if(!e||wn.has(r))return;if(!n||n.newest_seq<=0){await Li();return}wn.add(r),kn=!1,Xi(`newer`,`loading`);let i=!1;try{let r=await W(Vi(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(jr()!==t)return;if(r.messages.length===0){Wi(e,{...n,has_newer:r.has_newer},`append`),i=!0,Xi(`newer`,`settling`);return}Wi(e,{messages:Qi(_(J),r.messages),oldest_seq:n.oldest_seq,newest_seq:r.newest_seq||n.newest_seq,has_older:n.has_older,has_newer:r.has_newer},`append`),i=!0,Xi(`newer`,`settling`)}catch(e){jr()===t&&D(fn,e instanceof Error?e.message:`Could not load newer messages`)}finally{wn.delete(r),jr()===t&&!i&&Xi(`newer`,`idle`)}}function oa(){let e=_(Y),t=$(),n=jr();if(!e||!t)return Promise.resolve();let r=bn.catch(()=>void 0).then(async()=>{if(_(Y)!==e||$()!==t||jr()!==n)return;let r=_(Cn).get(t);if(!r||r.newest_seq<=0){await Li();return}let i=await W(Vi(`after_seq=${encodeURIComponent(String(r.newest_seq))}&limit=50`));if(_(Y)!==e||$()!==t||jr()!==n)return;let a=_(Cn).get(t);if(!a)return;let o=i.newest_seq||r.newest_seq,s=o>a.newest_seq?i.has_newer:on&&(n=r.channel_seq));return n}function ua(e,t=_(J)){let n=0;for(let r of t)r.direct_conversation_id===e&&typeof r.channel_seq==`number`&&r.channel_seq>n&&(n=r.channel_seq);return n}function da(e,t){return e&&t.unread_count||0}async function fa(e,t){let n=_(K).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){D(K,_(K).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/channels/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}async function pa(e,t){let n=_(q).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){D(q,_(q).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/dms/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}function ma(e){let t=_(Cn).get(e)?.newest_seq||0,n=_(K).find(t=>t.id===e);if(n)return Math.max(n.last_seq||0,(n.last_read_seq||0)+(n.unread_count||0),la(e),t);let r=_(q).find(t=>t.id===e);return r?Math.max(r.last_seq||0,(r.last_read_seq||0)+(r.unread_count||0),ua(e),t):0}function ha(e){let t=_(Cn).get(e);return!t||t.has_newer?0:_(K).find(t=>t.id===e)?la(e):_(q).find(t=>t.id===e)?ua(e):0}function ga(e={}){if(!e.all&&Date.now()e.id===t))return;if(!e.all&&!e.seq){let e=ba(t);if(e>=0&&!to(t,e))return}let n=e.all?Math.max(e.seq||0,ma(t)):e.seq||ha(t);if(!(n<=0)){if(_(q).some(e=>e.id===t)){pa(t,n),e.all&&_a(t,n);return}_(K).some(e=>e.id===t)&&(fa(t,n),e.all&&_a(t,n))}}function _a(e,t){zn.delete(e),zn=new Map(zn),D(K,_(K).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n)),D(q,_(q).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n))}function va(e){let t=_(K).find(t=>t.id===e);return t?t.last_read_seq||0:_(q).find(t=>t.id===e)?.last_read_seq||0}function ba(e){let t=_(K).find(t=>t.id===e);if(t)return da(e,t)>0?t.last_read_seq||0:-1;let n=_(q).find(t=>t.id===e);return n&&da(e,n)>0?n.last_read_seq||0:-1}function xa(e,t,n){for(let r of t){if(!co(r,e)||r.parent_message_id||r.author?.id===_(G)?.id||r.author_id===_(G)?.id)continue;let t=r.channel_seq;if(typeof t==`number`&&t>n)return r}return null}function Sa(e,t){if(!e)return;let n=eo(e);if(da(e,n)<=0){zn.delete(e),zn=new Map(zn);return}let r=n.last_read_seq||0,i=zn.get(e);if(i?.boundarySeq===r&&i.since||!to(e,r))return;let a=xa(e,t,r);a&&(zn=new Map(zn).set(e,{boundarySeq:r,since:ro(a.created_at)}))}function Ca(e,t,n){if(!e||!n)return;let r=zn.get(e);r?.boundarySeq===t&&r.since||(zn=new Map(zn).set(e,{boundarySeq:t,since:ro(n)}))}function wa(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function Ta(e){let t=e.payload;return{channelID:e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),dmID:typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``}}async function Ea(e){try{let t=await W(`/api/channels/${e}/notification-settings`);return Aa(e,t.preference),e===_(X)&&!_(Z)&&!_(Ge)&&D(Ue,t.preference),t.preference}catch{return ka(e)||`all`}}function Da(e){return _(G)?.id&&e?`clickclack:channel-notification:v1:${_(G).id}:${e}`:``}function Oa(e){let t=Da(e);if(!t)return null;try{let e=window.localStorage.getItem(t);return e===`all`||e===`mentions`||e===`muted`?e:null}catch{return null}}function ka(e){return We.get(e)||Oa(e)}function Aa(e,t){We=new Map(We).set(e,t);let n=Da(e);if(n)try{window.localStorage.setItem(n,t)}catch{}}async function ja(e,t){if(e.type!==`message.created`&&e.type!==`thread.reply_created`)return;let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`||!_(sn)||document.visibilityState===`visible`&&t)return;let{channelID:i,dmID:a}=Ta(e);if(i){let t=await Ea(i);if(!t||!_(sn))return;let n=i===_(X)&&!_(Z);if(document.visibilityState===`visible`&&n||t===`muted`||t===`mentions`&&!e.mentioned_user_ids?.includes(_(G)?.id||``))return}let o=typeof n.message_id==`string`?n.message_id:`${e.channel_id||``}:${e.seq||Date.now()}`,s=typeof n.author_id==`string`?n.author_id:``,c=typeof n.body==`string`?n.body:`New message`;if(e.type===`thread.reply_created`&&typeof n.message_id==`string`)try{let e=await W(`/api/messages/${n.message_id}`);s=e.message.author_id,c=e.message.body}catch{}if(s&&s===_(G)?.id||!_(sn)||document.visibilityState===`visible`&&(i&&i===_(X)||a&&a===_(Z)))return;let l=_(K).find(e=>e.id===i),u=ys(s)?.display_name||`ClickClack`,d=l?`#${rt(l)}`:`Direct message`;if(dt){dt.notify({body:Pa(c),route:ri(i||a),tag:`clickclack:${o}`,title:`${u} in ${d}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${u} in ${d}`,{body:Pa(c),tag:`clickclack:${o}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),i?Ni(i):a&&rs(a)}}catch{}}function Pa(e){let t=e.replace(/!\[[^\]]*]\([^)]+\)/g,`[image]`).replace(/\[[^\]]+]\(([^)]+)\)/g,`$1`).replace(/[`*_>#|]/g,``).replace(/\s+/g,` `).trim();return t?t.length>180?`${t.slice(0,177)}...`:t:`New message`}function La(e){if(e.type!==`message.created`)return!1;let t=wa(e);if(t<=0)return!1;let{channelID:n,dmID:r}=Ta(e);return n?t<=(_(K).find(e=>e.id===n)?.last_seq||0):r?t<=(_(q).find(e=>e.id===r)?.last_seq||0):!1}async function Va(e){let t=e.payload,n=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;return!n||_(q).some(e=>e.id===n)?!1:(await es(),_(q).some(e=>e.id===n))}function eo(e){return _(K).find(t=>t.id===e)||_(q).find(t=>t.id===e)||{}}function to(e,t,n=_(Cn)){if(!e||t<0)return!1;let r=n.get(e);if(!r||r.messages.length===0)return!1;let i=t+1;return r.oldest_seq<=i&&r.newest_seq>=i}function no(e,t,n=_(Cn)){let r=zn.get(e);if(r?.boundarySeq===t)return r.since;if(!to(e,t,n))return``;let i=xa(e,_(J),t);return i?ro(i.created_at):``}function ro(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function io(){if(!_(Hn)||!_(xn))return;let e=_(xn).captureState();e&&Sn.set(_(Hn),e)}function ao(e,t){let n=e!==_(Hn);D(Un,Sn.get(e));let r=bo(e),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));Ne.seedMessages(t);let o=t.map(e=>{let t=i.get(e.id)||(e.nonce?a.get(e.nonce):void 0);return t?e.nonce&&mo.has(e.nonce)?{...e,nonce:t.nonce,status:t.status,attachments:t.attachments?.length?t.attachments:e.attachments}:{...e,nonce:t.nonce,attachments:t.attachments?.length?t.attachments:e.attachments}:e}),s=new Set(o.map(e=>e.id)),c=new Set(o.map(e=>e.nonce).filter(Boolean)),l=r.filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&co(t,e)&&(!_(Qe)||t.topic_id===_(Qe)));D(J,l.length>0?[...o,...l]:o),Ie.reconcile(e,_(J)),D(Hn,e),Sa(e,_(J)),n&&(D(rr,[]),D(ar,[]),Gt())}function oo(e,t=`append`){let n=$(),r=n?_(Cn).get(n):void 0;if(!n||!r){D(J,e);return}let i=e.filter(e=>co(e,n)),a=ea(n,i,t),o=a.filter(e=>(e.channel_seq||0)>0),s=o[0]?.channel_seq||r.oldest_seq,c=o[o.length-1]?.channel_seq||r.newest_seq,l=so(a[0])>so(i[0]),u=so(a[a.length-1])0)&&await Ri(),await lo(),ga({all:!0}),await lo()}catch(e){D(fn,e instanceof Error?e.message:`Could not jump to latest messages`)}}let mo=new Map;function ho(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function go(e,t,n=`tmp_${e}`){let r=new Date().toISOString();return{id:n,workspace_id:t.workspaceID,channel_id:t.channelID,direct_conversation_id:t.directConversationID,topic_id:t.topicID,author_id:_(G)?.id||``,thread_root_id:n,body:t.body,body_format:`markdown`,created_at:r,author:_(G)||void 0,attachments:t.upload?[t.upload]:[],quoted_message_id:t.quotedMessageID,nonce:e,status:`pending`}}async function _o(){let e=_(Rt).trim();if(!e)return;if(_(j)&&!_(P)){D(fn,`This conversation has no active recipient`);return}if(!_(X)&&!_(Z)){D(fn,`pick or create a channel`);return}Gt(),D(wt,null);let t=++Sr,n=$(),r=_(Z)?`dm`:`channel`,i=_(Qn)&&_($n)===r?_(Qn):null;if(_(X)&&!_(Z)&&!_(Xt)&&!i){let r=Ra(e),i=r?za(_(St),r.command):void 0;if(r&&i){D(Rt,``),await vo(_(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:_(Xt)||void 0,workspaceID:_(Y),channelID:_(X)||void 0,directConversationID:_(Z)||void 0,topicID:_(X)&&_(Ze)||void 0,topicFilterID:_(Qe),topicFilterGeneration:$e,viewKey:$()};D(Rt,``),i&&zo(),D(Xt,null),await wo(a)}async function vo(e,t,n,r,i,a){try{let r=await Ba(e,t,n);if(a!==Sr||$()!==i)return;r.text&&r.response_type!==`in_channel`&&D(wt,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==Sr||$()!==i)return;D(wt,{kind:`error`,text:e instanceof he&&e.message?yo(e):`${t} failed`}),_(Rt).trim()||D(Rt,r)}}function yo(e){try{let t=JSON.parse(e.message);if(t&&typeof t.error==`string`&&t.error)return t.error}catch{}return e.message}function bo(e){let t=[..._(J),...nt.get(e)||[]].filter(t=>(t.status===`pending`||t.status===`failed`)&&co(t,e)&&(!_(Qe)||t.topic_id===_(Qe))),n=new Map;for(let e of t){let t=e.nonce?`nonce:${e.nonce}`:`id:${e.id}`;n.set(t,e)}return[...n.values()]}function xo(e,t){let n=(nt.get(e)||[]).filter(e=>e.id!==t.id&&!(t.nonce&&e.nonce===t.nonce));nt=new Map(nt).set(e,[...n,t])}function So(e,t,n){let r=nt.get(e);if(!r)return;let i=r.filter(e=>e.id!==t&&!(n&&e.nonce===n)),a=new Map(nt);i.length>0?a.set(e,i):a.delete(e),nt=a}async function Co(e,t,n){if(xo(e.viewKey,t),$()!==e.viewKey)return;let r=!1;if(_(Qe)===e.topicFilterID&&$e===e.topicFilterGeneration&&_(Qe)&&e.topicID!==_(Qe)){Ar(``),Sn.delete(e.viewKey),_(Cn).delete(e.viewKey);try{await Ri()}catch{r=!0}}if($()!==e.viewKey)return;if(_(Qe)&&e.topicID!==_(Qe)){_(Rt).trim()||D(Rt,e.body),D(wt,{kind:`error`,text:`${n} Clear the active topic filter to recover the draft.`});return}r&&oo(bo(e.viewKey));let i=t.id,a=t.nonce,o=_(J).findIndex(e=>e.id===i||a&&e.nonce===a);oo(o>=0?_(J).map((e,n)=>n===o?t:e):[..._(J),t]),D(wt,{kind:`error`,text:r?`${n} The unfiltered timeline could not reload.`:n}),await fo()}async function wo(e,t,n){let r=t??ho(),i=`tmp_${r}`,a=n??i,o=!_(Qe)||e.topicID===_(Qe),s=!t&&$()===e.viewKey&&o,c=s&&_(Fn);mo.set(r,e);let l=go(r,e,a);t&&xo(e.viewKey,l),t?oo(_(J).map(e=>e.id===a?l:e)):$()===e.viewKey&&o&&(oo([..._(J),l]),fo());let u=e.directConversationID?`/api/dms/${e.directConversationID}/messages`:`/api/channels/${e.channelID}/messages`,d={body:e.body,nonce:r};e.quotedMessageID&&(d.quoted_message_id=e.quotedMessageID),e.topicID&&(d.topic_id=e.topicID);try{let t=(await W(u,{method:`POST`,body:JSON.stringify(d)})).message;if(e.upload)try{await W(`/api/messages/${t.id}/attachments`,{method:`POST`,body:JSON.stringify({upload_id:e.upload.id})}),t={...t,attachments:[...t.attachments||[],e.upload]}}catch(n){console.warn(`attachment failed`,n),await Co(e,{...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments},`The message was sent, but its attachment failed. Retry or discard it below.`);return}So(e.viewKey,t.id,r),mo.delete(r),_(J).findIndex(e=>e.id===a)>=0?oo(_(J).map(e=>e.id===a?t:e)):_(J).some(e=>e.id===t.id)?oo(_(J).map(e=>e.id===t.id?t:e)):co(t,$())&&(!_(Qe)||t.topic_id===_(Qe))&&!_(J).some(e=>e.id===t.id)&&oo([..._(J),t]),$()===e.viewKey&&s&&(c&&await Ri(),await fo(),ga({all:!0,seq:t.channel_seq||0}))}catch(t){console.warn(`send failed`,t),await Co(e,{...l,status:`failed`},`The message failed to send. Retry or discard it below.`)}}function To(e){if(!e.nonce)return;let t=mo.get(e.nonce);if(!t){Eo(e);return}wo({...t,viewKey:t.viewKey},e.nonce,e.id)}function Eo(e){if(e.nonce){let t=mo.get(e.nonce);t&&So(t.viewKey,e.id,e.nonce),mo.delete(e.nonce)}oo(_(J).filter(t=>t.id!==e.id))}async function Do(e,t){if(e!==_(Wn))return;t.surface===`timeline`&&_(xn)?.scrollToMessage(t.messageID);let n=document.querySelector(t.surface===`timeline`?`main.timeline`:`[aria-label="Thread pane"]`);for(let e=0;e<16;e+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=n?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}function Oo(e){oo(_(J).map(t=>t.id===e.id?{...t,...e}:t)),D(qe,_(qe).map(t=>t.id===e.id?{...t,...e}:t)),D(mt,_(mt).map(t=>t.id===e.id?{...t,...e}:t)),_(Q)?.id===e.id&&D(Q,{..._(Q),...e})}function ko(e){!e.id||e.deleted_at||_(Er).has(e.id)||(D(Dr,e),D(Or,``))}async function Ao(){let e=_(Dr);if(!(!e||_(Er).has(e.id))){D(Er,new Set([..._(Er),e.id])),D(Or,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ie.cancelMessage($(),t.id),oo(_(J).map(e=>e.id===t.id?{...e,...t}:e)),D(qe,_(qe).map(e=>e.id===t.id?{...e,...t}:e)),D(mt,_(mt).filter(e=>e.id!==t.id)),_(Q)?.id===t.id&&D(Q,{..._(Q),...t}),_(Qn)?.id===t.id&&zo(),D(fn,``),D(Dr,null)}catch(e){D(Or,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(_(Er));t.delete(e.id),D(Er,t)}}}async function jo(e){qo(),D(lt,!1),await Mo(e.id,e),_(Y)&&_(Q)?.route_id&&window.location.pathname!==ti(_(Y),_(Q).id)&&await oi(_(Y),_(Q).id)}async function Mo(e,t,n=()=>!0){D(kt,null),D(jt,``),D(ct,null),t&&(D(Q,t),D(nr,`thread`));let r=await W(`/api/messages/${e}/thread`);if(!n())return!1;let[i,...a]=[{...r.root,thread_state:r.thread_state},...r.replies];return Ne.seedMessages([i,...a]),Ie.reconcile($(),[i,...a]),D(Q,i),D(nr,`thread`),oo(_(J).map(e=>e.id===i.id?i:e)),D(qe,a),D(it,r.thread_state),!0}async function No(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Ne.seedMessages([n]),oo(_(J).map(e=>e.id===n.id?n:e))}function Po(e,t){let n=_(J).find(t=>t.id===e);if(!n)return!1;let r=new Date(t.created_at).getTime();if(Number.isFinite(r)&&ra}async function Fo(){let e=_(zt).trim();if(!e||!_(Q))return;if(_(j)&&!_(P)){D(fn,`This direct message has no active recipient`);return}let t=_(Qn)&&_($n)===`thread`?_(Qn):null;D(zt,``);let n={body:e,nonce:ho()};t&&(n.quoted_message_id=t.id);let r=await W(`/api/messages/${_(Q).id}/thread/replies`,{method:`POST`,body:JSON.stringify(n)});t&&zo(),_(qe).some(e=>e.id===r.message.id)||D(qe,[..._(qe),r.message]),D(it,r.thread_state)}function Io(e,t){D(Qn,e),D($n,t),D(nr,t===`thread`?`thread`:`message`)}function Lo(){return _(Dr)!==null||_(Ot)!==null||_(Qt)||_(en)||_(rn)||_(an)}function Ro(){return _(nr)===`thread`&&_(Q)&&_(tr)?_(tr):_(er)}function zo(){D(Qn,null),D($n,null)}async function Bo(e){let t=e.quoted_message_id;if(!t)return;if(_(xn)?.scrollToMessage(t)??!1){await Uo(t);return}let n=await W(`/api/messages/${t}`);co(n.message,$())&&await Zo(n.message)}async function Vo(){Bn=Date.now()+1200,!(_(U)&&_(xn)?.scrollToDivider(!1))&&await Ho()}async function Ho(){let e=$();if(!e)return;Bn=Date.now()+1200;let t=va(e),n=zn.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await Qo(r),await s(),_(xn)?.scrollToDivider(!1))}async function Uo(e){for(let t=0;t<16;t+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let t=document.querySelector(`[data-message-id="${CSS.escape(e)}"]`);if(t){t.classList.add(`highlight`),window.setTimeout(()=>t.classList.remove(`highlight`),1500);return}}}async function Wo(){if(!_(Y)||!_(Wt).trim()){qo();return}let e=_(Wt).trim();_(kt)&&Ds(),(_(Q)||_(ct))&&Ps();let t=++Yt,n=_(Z)&&_(j)?{workspaceID:_(Y),channelID:``,directConversationID:_(Z),label:`@${Le(_(j),_(G)?.id)}`}:_(X)&&_(T)?{workspaceID:_(Y),channelID:_(X),directConversationID:``,label:`#${rt(_(T))}`}:{workspaceID:_(Y),channelID:``,directConversationID:``,label:``};D(qt,!1),Jt=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};D(Kt,r);try{let e=await W(`/api/search?${Go(r).toString()}`);if(t!==Yt)return;D(Kt,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==Yt)return;D(Kt,{...r,state:`error`,error:e instanceof he?e.message:`Search is unavailable right now.`})}}function Go(e,t=``){let n=new URLSearchParams({workspace_id:e.scope.workspaceID,q:e.query});return e.scope.directConversationID?n.set(`direct_conversation_id`,e.scope.directConversationID):e.scope.channelID&&n.set(`channel_id`,e.scope.channelID),t&&n.set(`cursor`,t),n}async function Ko(){let e=_(Kt);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=Yt;D(Kt,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${Go(e,e.nextCursor).toString()}`);if(t!==Yt||!_(Kt))return;let r=new Set(_(Kt).results.map(e=>e.id));D(Kt,{..._(Kt),results:[..._(Kt).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==Yt||!_(Kt))return;D(Kt,{..._(Kt),loadingMore:!1,moreError:e instanceof he?e.message:`Couldn’t load more results.`})}}function qo(){Yt+=1,D(Wt,``),D(Kt,null),D(qt,!1),Jt=0}function Jo(e){if(e.channel_name)return`#${e.channel_name}`;if(e.direct_conversation_id){let t=_(q).find(t=>t.id===e.direct_conversation_id);return t?`@${Le(t,_(G)?.id)}`:`Direct message`}return``}async function Yo(e){let t=_(Kt),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!_(Y)||!n)&&(D(Kt,{...t,activeResultID:e.id}),$()!==n&&(await oi(_(Y),n),await _i(_(Y),n)),$()===n)){if(e.parent_message_id){Jt=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=Yt;D(qt,!0);try{if(!await Mo(e.thread_root_id,void 0,()=>t===Yt&&_(qt)&&_(Kt)?.activeResultID===e.id))return}catch(e){throw D(qt,!1),await s(),e}_(Q)?.route_id&&await oi(_(Y),_(Q).id),await s(),document.querySelector(`.thread [data-message-id="${CSS.escape(e.id)}"]`)?.scrollIntoView({block:`center`}),document.querySelector(`.thread .thread-back`)?.focus(),await Uo(e.id);return}if(e.channel_seq&&e.channel_seq>0){await Qo(e.channel_seq,e.id);return}await Li()}}async function Xo(){if(!_(Kt)||!_(qt))return;let e=$();_($n)===`thread`&&zo(),D(Q,null),D(ct,null),D(nr,`message`),D(qe,[]),D(qt,!1),_(Y)&&e&&await oi(_(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=Jt),(_(Kt).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(_(Kt).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Zo(e){let t=e.channel_seq||0;if(t<=0){await Li();return}await Qo(t,e.id)}async function Qo(e,t=``){let n=$();if(!n)return;_(Qe)&&(Ar(``),_(Cn).delete(n),D(Kn,!0));let r=jr();t&&Sn.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let i=n!==_(Hn);Zi(),i&&D(Kn,!0);try{let i=await W(Vi(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n||jr()!==r)return;Wi(n,Ui(i),`around`),await s(),t&&(_(xn)?.scrollToMessage(t),await Uo(t))}finally{$()===n&&D(Kn,!1)}}async function $o(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!_(Y))return;let r=await ft(n),i=new FormData;i.set(`workspace_id`,_(Y)),i.set(`file`,n),r.width>0&&i.set(`width`,String(r.width)),r.height>0&&i.set(`height`,String(r.height)),r.durationMS>0&&i.set(`duration_ms`,String(r.durationMS));let a=await W(`/api/uploads`,{method:`POST`,body:i});D(Xt,a.upload),t.value=``}async function es(e=_(Y)){let t=++hr;if(!e){D(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t===hr&&e===_(Y)&&(D(q,n.conversations),_(Z)&&!_(q).some(e=>e.id===_(Z))&&D(Z,``))}function ts(e){D(q,_(q).some(t=>t.id===e.id)?_(q).map(t=>t.id===e.id?e:t):[..._(q),e])}async function ns(e){let t=e.trim();t&&(await is(t),D(Ht,``),D(an,!1))}async function rs(e){D(Yn,!1);let t=ti(_(Y),e);e===_(Z)&&!_(X)&&window.location.pathname===t||await oi(_(Y),e)}async function is(e){let t=e.trim();if(!_(Y)||!t)return;let n=_(q).find(e=>e.members.some(e=>e.id===t));if(n){D(Yn,!1),await oi(_(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:_(Y),member_ids:[t]})});ts(r.conversation),D(Yn,!1),await oi(_(Y),r.conversation.id)}function as(){Tr&&clearTimeout(Tr),Tr=void 0,D(wr,null)}function os(e,t){as(),D(wr,{conversation:e,restoreRoute:t,title:Le(e,_(G)?.id)}),Tr=setTimeout(()=>{D(wr,null),Tr=void 0},8e3)}async function ss(){let e=_(wr);if(e){as();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});ts(t.conversation),e.restoreRoute&&await oi(e.conversation.workspace_id,t.conversation.id),D(fn,`direct message restored`)}catch(e){D(fn,e instanceof Error?e.message:`Could not restore direct message`)}}}async function cs(e){if(!e)return;let t=_(q).find(t=>t.id===e),n=_(Z)===e;if(await W(`/api/dms/${e}`,{method:`DELETE`}),D(q,_(q).filter(t=>t.id!==e)),t&&os(t,n),n){si();let e=_(K)[0]?.id||``;D(Z,``),D(X,e),e&&mi(_(Y),e),await oi(_(Y),e),await Li()}}function ls(){if(xr+=1,yn?.close(),yn=null,D(hn,!1),!_(Y))return;let e=_(Y);yn=He({workspaceID:e,onEvent:ds,onOpen:async(t,n)=>{await us(e,t,_n===e,n),t()&&(_n=e,e===_(Y)&&_(fn)===gn&&D(fn,`ready`),gn=``)},onError:t=>{e===_(Y)&&(gn=t instanceof Error?t.message:`Could not process realtime event`,D(fn,gn))},onStatusChange:e=>{D(hn,e)}})}async function us(e,t=()=>!0,n=!0,r=!0){let i=++xr;if(!e||e!==_(Y)||!t())return;let a=_(Q)?.id||``,o=_(ct)?.kind===`bot`?_(ct).id:``;if(D(rr,[]),D(ar,[]),!r){await Promise.all([Oi(e),ki(e,!0)]);return}if(Ne.clear(),await Promise.all([$r(),Ci(!1,!1,!1),es(e),Ei(e),Oi(e),ki(e,!0),wi(e)]),!(i!==xr||e!==_(Y)||!t())){if(_(X)&&!_(K).some(e=>e.id===_(X))&&D(X,``),_(Z)&&!_(q).some(e=>e.id===_(Z))&&D(Z,``),!_(X)&&!_(Z)){let t=ci(e);if(t){let n=_(q).some(e=>e.id===t);D(Z,n?t:``),D(X,n?``:t),n||mi(e,t),await oi(e,t,!0)}}if(!(i!==xr||e!==_(Y)||!t())&&(await Li(n),!(i!==xr||e!==_(Y)||!t())&&(await Is(),!(i!==xr||e!==_(Y)||!t())&&(a&&_(Q)?.id===a&&await Mo(a,_(Q)),o&&_(ct)?.id===o)))){let e=ys(o);D(ct,e&&!e.deleted_at?e:null)}}}async function ds(e){if((e.type===`pin.added`||e.type===`pin.removed`)&&e.channel_id===_(X)&&!_(Z)){await Is();return}if(e.type===`typing.started`||e.type===`typing.stopped`){gs(e);return}if(e.type===`agent.progress`){_s(e);return}if(e.type===`channel.read`||e.type===`dm.read`){ms(e);return}if(e.type===`bot_command.updated`){e.workspace_id===_(Y)&&ki(e.workspace_id,!0).catch(t=>{e.workspace_id===_(Y)&&(D(fn,t instanceof Error?t.message:`Could not refresh bot commands`),ls())});return}if(e.type===`bot.deleted`){e.workspace_id===_(Y)&&await fs(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===_(Y)&&await ps(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===_(Y)){await Ci(!1,!1,!1);return}if(e.type===`member.moderation_updated`&&e.workspace_id===_(Y)){let t=_(Z),n=e.payload.user_id===_(G)?.id;if(await $r(),await Ei(),await Ci(!1,n,n),n){if(await es(),t&&(_(q).some(e=>e.id===t)?(D(Z,t),D(X,``)):D(Z,``)),!_(X)&&!_(Z)){Wi(``,Ui({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await Li()}return}if(e.workspace_id===_(Y)&&e.payload.topic_id&&!_(Ve).some(t=>t.id===e.payload.topic_id)&&await wi(e.workspace_id),La(e))return;(e.type===`message.updated`||e.type===`message.deleted`)&&_(vt).has(e.payload.message_id||``)&&await Is();let t=(e.channel_id===_(X)||e.payload.direct_conversation_id===_(Z))&&!(e.type===`message.created`&&_(Qe)&&e.payload.topic_id!==_(Qe));if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){Ne.applyEvent(e);return}if(ja(e,t),e.type===`message.created`&&!t&&(await Va(e)||hs(e)),t&&(e.type===`message.created`||e.type===`message.updated`||e.type===`message.deleted`)){let t=e.payload.nonce;if(e.type===`message.created`&&t&&mo.has(t))return;let n=uo();e.type===`message.created`&&!n?(Bn=Date.now()+1200,Yi($())):e.type===`message.created`?await oa():await Li(),e.type===`message.created`&&hs(e,n),e.type===`message.created`&&n&&(await lo(),ga({all:!0,seq:wa(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Po(n,e)?_(Q)?.id===n?await Mo(n,_(Q)):await No(n):e.type!==`thread.reply_created`&&_(Q)&&n===_(Q).id&&await Mo(_(Q).id,_(Q))}async function fs(e){let t=e.payload.bot_user_id||``;if(!t)return;let n=e.payload.deleted_at||e.created_at,r=e.payload.former_handle||``,i=e=>e.id===t?{...e,handle:``,former_handle:r,deleted_at:n}:e;D(q,_(q).map(e=>({...e,members:e.members.map(i)}))),D(bt,_(bt).filter(e=>e.user.id!==t)),D(St,_(St).filter(e=>e.bot_user_id!==t)),D(Ct,_(Ct).filter(e=>e.bot.id!==t)),D(rr,_(rr).filter(e=>e.userID!==t)),_(Kt)&&D(Kt,{..._(Kt),results:_(Kt).results.map(e=>({...e,author:i(e.author)}))}),_(ct)?.id===t&&D(ct,null);let a=_(Q)?.id||``;await Promise.all([es(),Ei(),Oi(),ki()]),Di(),await Li(),a&&await Mo(a)}async function ps(e){let t=e.payload.bot_user_id||``;t&&(D(bt,_(bt).filter(e=>e.user.id!==t)),D(St,_(St).filter(e=>e.bot_user_id!==t)),D(Ct,_(Ct).filter(e=>e.bot.id!==t)),_(ct)?.id===t&&D(ct,null),await Promise.all([es(e.workspace_id),Ei(e.workspace_id),Oi(e.workspace_id),ki(e.workspace_id)]),Di(e.workspace_id))}function ms(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n!==_(G)?.id)return;let r=e.seq??t.last_read_seq??t.seq,i=typeof r==`number`?r:Number(r)||0;if(e.type===`channel.read`){let n=typeof t.channel_id==`string`?t.channel_id:e.channel_id||``;if(!n)return;D(K,_(K).map(e=>{if(e.id!==n)return e;let t=Math.max(e.last_read_seq||0,i);return{...e,last_read_seq:t,unread_count:t>=(e.last_seq||0)?0:e.unread_count||0}}))}else{let e=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!e)return;D(q,_(q).map(t=>{if(t.id!==e)return t;let n=Math.max(t.last_read_seq||0,i);return{...t,last_read_seq:n,unread_count:n>=(t.last_seq||0)?0:t.unread_count||0}}))}}function hs(e,t){let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===_(G)?.id||n.parent_message_id)return;let a=wa(e),{channelID:o,dmID:s}=Ta(e);if(o){let n=o===_(X)&&!_(Z),r=n&&!_(Qe)?t??uo():!1,i=_(K).find(e=>e.id===o),s=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&Ca(o,i?.last_read_seq||0,e.created_at),D(K,_(K).map(e=>{if(e.id!==o)return e;let t=Math.max(e.last_seq||0,s),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,s-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}else if(s){let n=s===_(Z),r=n?t??uo():!1,i=_(q).find(e=>e.id===s),o=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&Ca(s,i?.last_read_seq||0,e.created_at),D(q,_(q).map(e=>{if(e.id!==s)return e;let t=Math.max(e.last_seq||0,o),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,o-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}}function gs(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n===_(G)?.id)return;let r=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),i=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(_(X)&&r===_(X)||_(Z)&&i===_(Z)))return;if(e.type===`typing.stopped`){D(rr,_(rr).filter(e=>e.userID!==n));return}let a=ys(n),o=_(rr).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+jn}),D(rr,o),bs()}function _s(e){let t=e.payload,n=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),r=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(_(X)&&n===_(X)||_(Z)&&r===_(Z)))return;let i=typeof t.turn_id==`string`?t.turn_id:``,a=typeof t.op==`string`?t.op:``;if(!i||!a)return;let o=typeof t.user_id==`string`?t.user_id:``,s=Na(o,i);if(a===`clear`){D(ar,_(ar).filter(e=>e.turnId===i?o&&e.userId?e.key!==s:!1:!0));return}let c=t.line,l=c&&typeof c.id==`string`?c.id:``;if(!l)return;let u=c&&typeof c.text==`string`?c.text:``,d=c&&typeof c.title==`string`?c.title:``,f=u||d,p=c&&typeof c.tool_name==`string`?c.tool_name:typeof c?.toolName==`string`?c.toolName:void 0,m=c&&typeof c.status==`string`?c.status:void 0,h=c&&typeof c.kind==`string`?c.kind:void 0,g=_(ar).find(e=>e.key===s),v=g?.lines.find(e=>e.id===l),y={id:l,kind:h??v?.kind??`lifecycle`,text:f||v?.text||``,toolName:p??v?.toolName,status:m??v?.status,finalized:a===`finalize`||(v?.finalized??!1)};if(!v&&!y.text&&!y.toolName)return;let b=Date.now()+Pn;if(!g)D(ar,[..._(ar),{key:s,turnId:i,userId:o,lines:[y],expiresAt:b}]);else{let e=g.lines.some(e=>e.id===l)?g.lines.map(e=>e.id===l?y:e):[...g.lines,y];D(ar,_(ar).map(t=>t.key===s?{...t,lines:e,expiresAt:b}:t))}vs()}function vs(){or||=window.setInterval(()=>{let e=Date.now(),t=_(ar).filter(t=>t.expiresAt>e);t.length!==_(ar).length&&D(ar,t),t.length===0&&or&&(window.clearInterval(or),or=void 0)},1e3)}function ys(e){if(_(G)?.id===e)return _(G);let t=_(xt).find(t=>t.id===e);if(t)return t;let n=_(J).find(t=>t.author?.id===e)?.author;if(n)return n;let r=_(qe).find(t=>t.author?.id===e)?.author;if(r)return r;if(_(Q)?.author?.id===e)return _(Q).author;let i=_(bt).find(t=>t.user.id===e)?.user;if(i)return i;for(let t of _(q)){let n=t.members.find(t=>t.id===e);if(n)return n}}function bs(){ir||=window.setInterval(()=>{let e=Date.now(),t=_(rr).filter(t=>t.expiresAt>e);t.length!==_(rr).length&&D(rr,t),t.length===0&&ir&&(window.clearInterval(ir),ir=void 0)},1e3)}function xs(){_(Y)&&(!_(X)&&!_(Z)||Ut({workspaceID:_(Y),channelID:_(X)||void 0,directConversationID:_(Z)||void 0}))}function Ss(e){!e||e.deleted_at||(qo(),D(kt,null),D(jt,``),D(Q,null),D(lt,!1),D(ct,e),(_(o)===`owner`||_(o)===`moderator`)&&!_(bt).some(t=>t.user.id===e.id)&&Ei())}function Cs(e){if(e.key===`Escape`&&_(Qn)&&_($n)!==`thread`){e.preventDefault(),zo();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),_o())}function ws(e){if(e.key===`Escape`&&_(Qn)&&_($n)===`thread`){e.preventDefault(),zo();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Fo())}function Ts(e,t){Lo()||D(Ot,{url:e,title:t})}function Es(e){D(Mt,document.activeElement instanceof HTMLElement?document.activeElement:null),Nt=_(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,D(jt,_(Wn)),D(kt,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Ds(){let e=_(Mt),t=_(kt)?.id||``;D(kt,null),D(jt,``),D(Mt,null),s().then(()=>{if(Nt!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=Nt)}if(Nt=null,e?.isConnected){e.focus({preventScroll:!0});return}(_(Q)?document.querySelector(`.thread`):document)?.querySelector(`[data-artifact-upload-id="${CSS.escape(t)}"]`)?.focus({preventScroll:!0})})}function Os(e,t){for(let e of Lt)e.inert=!1;if(Lt.clear(),!(!e||!_(Ft)||!t))for(let e of _(Ft).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,Lt.add(e))}function ks(e){if(!_(kt)||!_(Xn)||e.key!==`Tab`||!_(Pt))return;let t=Array.from(_(Pt).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),_(Pt).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!_(Pt).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!_(Pt).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function As(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),Ts(Re(t),t.alt||`Image`))}function js(e){let t=_(Rt)&&!_(Rt).endsWith(`
+ active ${_(t).active_token_count===1?`token`:`tokens`}`)},[()=>p(_(t).bot.handle)]),n(`click`,T,()=>s(_(t))),u(e,r)}),H(g),H(r),d(()=>c(o,_(t).workspace.name)),n(`click`,h,()=>s(_(t).entries[0])),u(e,r)}),H(t),u(e,t)};N(v,e=>{_(i)===`loading`?e(y):_(i)===`error`?e(b,1):_(r).length===0?e(S,2):e(w,-1)}),u(e,g),ee()}U([`click`]);var Ui=o(``),Wi=o(``),Gi=o(`
Account
Appearance
Changes apply instantly and follow your account on every device.
#deploysRelease pipeline chatter
2:14 PMPipeline's green again — can we ship v0.2.2 to staging?
CClawbot2:15 PMRan make test && make deploy staging · 34 passed · 12sDone — staging is live on v0.2.2. Smoke checks passed; dashboards look clean.🚀 2✅ 1
2:16 PMPerfect. Promoting to prod after lunch 🌮
Live preview — updates as you pick
Color modeSystem follows your OS setting
Board themePalette for boards, accents, and highlights
Message layoutHow agent activity attaches to replies
`,1);function to(e,t){x(t,!1);let i=V(),o=V(),p=V(),m=V(),T=V(),E=V(),k=V(),A=V(),j=V(),P=V(),F=V(),te=V(),L=V(),oe=V(),ce=V(),U=V(),ue=V(),ge=V(),ve=V(),ye=V(),be=V(),xe=V(),Se=V(),Ce=V(),we=`clickclack:hide-commentary:v1`,Te=`clickclack:hide-tool-calls:v1`,Ee=`clickclack:user-align:v1`,De=`clickclack:other-align:v1`,Oe=Date.now(),Ae=dt?.integratedTitleBar===!0,je=S(t,`routeWorkspaceID`,8,``),Me=S(t,`routeTargetID`,8,``),G=V(null),Ne=new Fe(()=>_(G)?.id||``),Ie=new Xe(Oo),ze=V([]),K=V([]),Ve=V([]),Ue=V(null),We=new Map,Ge=V(!1),q=V([]),J=V([]),qe=V([]),Y=V(``),X=V(``),Z=V(``),Q=V(null),Ze=V(``),Qe=V(``),$e=0,et=``,tt=!1,nt=new Map,it=V(null),ct=V(null),lt=V(!1),pt=!1,mt=V([]),gt=V(!1),_t=V(``),vt=V(new Set),yt=0,bt=V([]),xt=V([]),St=V([]),Ct=V([]),wt=V(null),Tt=V([]),Dt=V(``),Ot=V(null),kt=V(null),jt=V(``),Mt=V(null),Nt=null,Pt=V(null),Ft=V(null),Lt=new Set,Rt=V(``),zt=V(``),Bt=V(``),Vt=V(``),Ht=V(``),Wt=V(``),Kt=V(null),qt=V(!1),Jt=0,Yt=0,Xt=V(null),Zt=V(!1),Qt=V(!1),$t=V(`profile`),en=V(!1),tn=V(!1),nn=V(``),rn=V(!1),an=V(!1),on=V(``),sn=V(!1),cn=V(!1),ln=V(!1),un=V(`left`),dn=V(`left`),fn=V(`loading`),pn=V(!1),mn=V(``),hn=V(!1),gn=``,_n=``,vn=``,yn=null,bn=Promise.resolve(),xn=V(null),Sn=new Map,Cn=V(new Map),wn=new Set,Tn=V(`idle`),En=`idle`,On=!1,kn=!1,Mn=V(!1),Fn=V(!1),In=V(!1),Ln=V(!1),zn=new Map,Bn=0,Hn=V(``),Un=V(void 0),Wn=V(``),Kn=V(!0),qn=V(!1),Jn=V(!1),Yn=V(!1),Xn=V(!1),Qn=V(null),$n=V(null),er=V(null),tr=V(null),nr=V(`message`),rr=V([]),ir,ar=V([]),or,sr=V(Date.now()),cr,lr=V(``),ur=0,dr=0,fr=0,pr=0,mr=0,hr=0,gr=0,_r=0,vr=0,yr=0,br=0,xr=0,Sr=0,wr=V(null),Tr,Er=V(new Set),Dr=V(null),Or=V(``);function kr(e){e!==et&&(et=e,tt=!1,D(Ze,``),Ar(``))}function Ar(e){e!==_(Qe)&&(D(Qe,e),$e+=1)}function jr(){return`${_(Y)}:${$()}:${_(Qe)}:${$e}`}function Mr(e,t){return t?e.filter(e=>!e.archived_at&&(!e.channel_id||e.channel_id===t)):[]}ie(()=>{Fr(),cr=window.setInterval(()=>{D(sr,Date.now())},3e4),Yr(),Hr();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{D(Yn,!1),D(Xn,e.matches)};t();let n=dt?.onNavigate(e=>{le(e,{keepFocus:!0,noScroll:!0})}),r=dt?.onQuickCompose(()=>Nr());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Nr(){s().then(()=>{(_(nr)===`thread`?_(tr):_(er))?.focus()})}async function Pr(e){if(dt){e.preventDefault(),D(mn,`Opening GitHub in your browser…`);try{await dt.signInWithGitHub(),D(mn,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{D(mn,`Could not open your browser. Try again.`)}}}function Fr(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;D(cn,window.localStorage.getItem(we)===`1`||e),D(ln,window.localStorage.getItem(Te)===`1`||e),D(un,window.localStorage.getItem(Ee)===`right`?`right`:`left`),D(dn,window.localStorage.getItem(De)===`right`?`right`:`left`)}catch{D(cn,!1),D(ln,!1),D(un,`left`),D(dn,`left`)}Lr()}function Lr(){try{document.documentElement.setAttribute(`data-user-align`,_(un)),document.documentElement.setAttribute(`data-other-align`,_(dn))}catch{}}function Rr(e){D(un,e),Lr();try{window.localStorage.setItem(Ee,e)}catch{}}function zr(e){D(dn,e),Lr();try{window.localStorage.setItem(De,e)}catch{}}function Br(e){D(cn,e);try{window.localStorage.setItem(we,e?`1`:`0`)}catch{}}function Vr(e){D(ln,e);try{window.localStorage.setItem(Te,e?`1`:`0`)}catch{}}ne(()=>{yn?.close(),yn=null,D(hn,!1),Gt(),ir&&window.clearInterval(ir),or&&window.clearInterval(or),cr&&window.clearInterval(cr),Tr&&clearTimeout(Tr),ks(!1,null)});async function Hr(){try{let e=await _e();if(D(G,e.user),Yr(),await $r(),_(ze).length===0){D(fn,`create a workspace`);return}await _i(je(),Me()),D(fn,`ready`)}catch(e){if(e instanceof he&&(e.status===401||e.status===403)){D(pn,!0),D(fn,`auth`);return}D(fn,e instanceof Error?e.message:`Could not load ClickClack`)}}function Ur(){_(G)&&(D($t,`profile`),D(Qt,!0))}function Wr(){let e=_(i)?.route_id||_(Y)||je();e&&le(ke(e))}function Gr(){_(E)&&(D(nn,``),D(en,!0))}async function qr(e){let t=_(T);if(!(!t||!_(E)||_(tn))){D(tn,!0),D(nn,``);try{let n=await W(`/api/channels/${t.id}`,{method:`PATCH`,body:JSON.stringify({archived:e})});D(K,_(K).map(e=>e.id===n.channel.id?n.channel:e)),D(en,!1)}catch(t){D(nn,me(t,e?`Could not archive channel`:`Could not restore channel`))}finally{D(tn,!1)}}}function Jr(e){D(G,e),so(_(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),D(qe,_(qe).map(t=>t.author?.id===e.id?{...t,author:e}:t)),_(Q)?.author?.id===e.id&&D(Q,{..._(Q),author:e})}function Yr(){if(dt){D(sn,Zr());return}let e=Zr();D(sn,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!_(sn)&&Qr(!1)}function Xr(){return _(G)?.id?`clickclack:browser-notifications-enabled:v1:${_(G).id}`:``}function Zr(){let e=Xr();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function Qr(e){let t=Xr();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function $r(){let e=++fr,t=await W(`/api/workspaces`);e===fr&&D(ze,t.workspaces)}function ei(e=``,t=``){return`${e||``}/${t||``}`}function ti(e=_(Y),t=``){let n=ii(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=ai(t);return i?`${r}/${encodeURIComponent(i)}`:r}async function ni(e){if(!e.channel_id||e.parent_message_id)throw Error(`Only channel roots have links`);let t=await W(`/api/messages/${e.id}/route`,{method:`POST`});if(!t.message.route_id)throw Error(`Message route was not allocated`);ko(t.message);let n=ii(t.message.workspace_id);if(!n)throw Error(`Workspace route is unavailable`);let r=`/app/${encodeURIComponent(n)}/${encodeURIComponent(t.message.route_id)}`;return new URL(r,`${pe()}/`).toString()}function ri(e){let t=_(K).find(t=>t.id===e)?.route_id||_(q).find(t=>t.id===e)?.route_id;return t?ti(_(Y),t):!_(Y)||!e?`/app`:`/app/${encodeURIComponent(_(Y))}/${encodeURIComponent(e)}`}function ii(e=_(Y)){return e?_(ze).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function ai(e=``){return e?_(K).find(t=>t.id===e||t.route_id===e)?.route_id||_(q).find(t=>t.id===e||t.route_id===e)?.route_id||_(Q)?.id===e&&_(Q).route_id||_(J).find(t=>t.id===e)?.route_id||e:``}async function oi(e=_(Y),t=``,n=!1){let r=ti(e,t);window.location.pathname!==r&&await le(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function si(){_(qt)&&Jo(),D(Q,null),D(it,null),D(ct,null),D(lt,!1),D(nr,`message`),D(qe,[]),D(Yn,!1)}function ci(e=_(Y)){return pi(e)||_(K).find(e=>e.name.toLowerCase()===`guest`)?.id||_(K)[0]?.id||_(q)[0]?.id||``}function ui(e=_(Y)){return _(ze).find(t=>t.id===e||t.route_id===e)}function di(e=_(Y)){let t=ui(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function fi(e){try{let t=JSON.parse(e);return{id:typeof t.id==`string`?t.id:``,routeID:typeof t.routeID==`string`?t.routeID:``}}catch{return{id:e}}}function pi(e=_(Y)){let t=di(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=fi(e)}catch{return``}let r=_(K).find(e=>e.id===n.id||e.route_id===n.routeID);if(r)return r.id;try{window.localStorage.removeItem(t)}catch{}return``}function mi(e,t){if(!e||!t)return;let n=_(K).find(e=>e.id===t);if(!n)return;let r=di(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function gi(e){vn===e&&(vn=``,us())}async function _i(e=``,t=``){let n=++ur;Ne.clear();let r=ei(e,t),i=t.trim()?await yi(e,t):null;if(n!==ur)return;let a=i?_(ze).find(e=>e.id===i.workspace_id):_(ze).find(t=>t.id===e||t.route_id===e)||_(ze)[0];if(!a){Wi(``,Ui({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),D(lr,r);return}let o=i?ei(i.workspace_route_id,i.target_route_id):ei(a.route_id,``),s=_(Y)!==a.id;if(s&&(ao(),Ie.clear(),D(Y,a.id),mr+=1,vr+=1,yr+=1,_r+=1,D(St,[]),D(Ct,[]),D(Ve,[]),D(xt,[]),D(X,``),D(Z,``),D(Q,null),D(it,null),D(ct,null),D(nr,`message`),D(qe,[]),Jo(),Zi(),D(Kn,!0),vn=a.id),(s||_(K).length===0)&&await Ci(!1,!1),n!==ur||((s||_(q).length===0)&&await ts(),s&&(await Promise.all([Ei(),Oi(a.id),ki(a.id),wi(a.id)]),Di(a.id)),n!==ur))return;if(i){let e=await vi(i,n);if(n!==ur)return;if(!e){si(),await oi(a.id,ci(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(D(lr,o),await le(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==ur))return;if(i?.target_type===`channel`&&_(K).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&_(X)===e&&!_(Z)&&_(Hn)===e;D(X,e),D(Z,``),mi(a.id,e),si();let r=pt;if(pt=!1,t){D(lt,r),D(lr,o),Ji(e),gi(a.id);return}if(kr(e),await Promise.all([Li(),Ls(e,``)]),n!==ur)return;D(lt,r),D(lr,o),gi(a.id);return}if(i?.target_type===`direct`&&_(q).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&_(Z)===e&&!_(X)&&_(Hn)===e;if(D(Z,e),D(X,``),si(),t){D(lr,o),Ji(e),gi(a.id);return}if(kr(e),await Li(),n!==ur)return;D(lr,o),gi(a.id);return}if(i?.target_type===`thread`){let e=await bi(i);if(n!==ur)return;if(e){D(lr,o),gi(a.id);return}}let c=ci();if(si(),!c){D(X,``),D(Z,``),kr(``),await Li(),D(lr,r),(e!==a.route_id||t)&&await oi(a.id,``,!0),gi(a.id);return}await oi(a.id,c,!0)}async function vi(e,t){return e.target_type===`channel`?(_(K).some(t=>t.id===e.target_id)||await Ci(!1,!1,!1),t===ur&&_(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(_(q).some(t=>t.id===e.target_id)||(await ts(),_(q).some(t=>t.id===e.target_id)||ns((await W(`/api/dms/${e.target_id}`)).conversation)),t===ur&&_(q).some(t=>t.id===e.target_id)):e.parent_type===`channel`&&e.parent_id?(_(K).some(t=>t.id===e.parent_id)||await Ci(!1,!1,!1),t===ur&&_(K).some(t=>t.id===e.parent_id)):e.parent_type===`direct`&&e.parent_id?(_(q).some(t=>t.id===e.parent_id)||(await ts(),_(q).some(t=>t.id===e.parent_id)||ns((await W(`/api/dms/${e.parent_id}`)).conversation)),t===ur&&_(q).some(t=>t.id===e.parent_id)):!0}async function yi(e,t){try{return(await W(`/api/routes/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).route}catch(e){if(e instanceof he&&(e.status===403||e.status===404))return null;throw e}}async function bi(e){if(e.workspace_id!==_(Y))return!1;let t=e.parent_type===`channel`&&e.parent_id||``,n=e.parent_type===`direct`&&e.parent_id||``;if(t){if(!_(K).some(e=>e.id===t))return!1;D(X,t),D(Z,``),mi(e.workspace_id,t)}else if(n){if(!_(q).some(e=>e.id===n))return!1;D(Z,n),D(X,``)}else return!1;let r=_(Q)?.id===e.target_id&&_(Hn)===$();if(D(ct,null),D(lt,!1),D(nr,`thread`),D(Yn,!1),await No(e.target_id),t&&await Ls(t,``),!r&&t&&_(Q)&&(_(Q).thread_state?.reply_count??0)===0){let e=_(Q);return D(Q,null),D(it,null),D(qe,[]),D(nr,`message`),await Qo(e),!0}return!r&&_(Q)&&await Qo(_(Q)),!0}async function xi(){if(!_(Bt).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:_(Bt)})});D(Bt,``),D(qn,!1),D(ze,[..._(ze),e.workspace]),D(Yn,!1),await _i(e.workspace.route_id||e.workspace.id,``),await oi(e.workspace.id),D(fn,`ready`)}async function Si(e){D(Yn,!1),await oi(e)}async function Ci(e=!0,t=!0,n=!0){let r=_(Y);if(!r)return;let i=++pr,a=await W(`/api/workspaces/${r}/channels`);i===pr&&r===_(Y)&&(D(K,a.channels),t?D(X,_(K).find(e=>e.id===_(X))?.id||_(K).find(e=>!e.archived_at)?.id||_(K)[0]?.id||``):_(X)&&!_(K).some(e=>e.id===_(X))&&D(X,``),n&&(_(qt)&&Jo(),D(Q,null),D(ct,null),D(nr,`message`),D(qe,[])),e&&await Li())}async function wi(e=_(Y)){let t=++mr,n=$(),r=_(X),i=!1;if(!e){D(Ve,[]);return}try{let a=await W(`/api/workspaces/${e}/topics`);if(t!==mr||e!==_(Y)||(D(Ve,a.topics),$()!==n||_(X)!==r))return;let o=new Set(Mr(a.topics,r).map(e=>e.id));_(Ze)&&!o.has(_(Ze))&&D(Ze,``),_(Qe)&&!o.has(_(Qe))&&(Ar(``),Sn.delete($()),_(Cn).delete($()),i=!0)}catch{return}if(!(!i||$()!==n))try{await Ri()}catch(e){if($()!==n||_(Qe))return;so(xo(n)),D(wt,{kind:`error`,text:e instanceof Error?`Topic changed, but messages could not reload: ${e.message}`:`Topic changed, but messages could not reload`})}}function Ti(){D(nr,`message`),_(X)&&wi()}async function Ei(e=_(Y)){let t=++gr;if(!e||e!==_(Y)||_(o)!==`owner`&&_(o)!==`moderator`){t===gr&&D(bt,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==gr||e!==_(Y))return;D(bt,n.members)}catch{t===gr&&e===_(Y)&&D(bt,[])}}async function Di(e=_(Y)){let t=++_r;if(!e){D(xt,[]);return}try{let n=[],r;do{let t=await ut({workspaceID:e,cursor:r,limit:100});n.push(...t.members.map(e=>e.user)),r=t.has_more?t.next_cursor:void 0}while(r);if(t!==_r||e!==_(Y))return;D(xt,n)}catch{t===_r&&e===_(Y)&&D(xt,[])}}async function Oi(e=_(Y)){let t=++vr;if(!e){D(St,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==vr||e!==_(Y))return;D(St,n.slash_commands)}catch{t===vr&&e===_(Y)&&D(St,[])}}async function ki(e=_(Y),t=!1){let n=++yr;if(!e){D(Ct,[]);return}try{let t=await Ia(e);if(n!==yr||e!==_(Y))return;D(Ct,t)}catch(r){let i=n===yr&&e===_(Y);if(i&&D(Ct,[]),t&&i)throw r}}function Ai(e){Sr+=1,D(wt,null)}async function ji(e,t){if(!_(Y))return;let n=await W(`/api/workspaces/${_(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});D(bt,[..._(bt).filter(t=>t.user.id!==e),n.member]),await Ci(!1,!1,!1),D(fn,`ready`)}async function Mi(){if(!_(Y)||!_(Vt).trim())return;let e=await W(`/api/workspaces/${_(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:_(Vt),kind:`public`})});D(Vt,``),D(K,[..._(K),e.channel]),D(rn,!1),await oi(_(Y),e.channel.id)}async function Ni(e){D(Yn,!1),mi(_(Y),e);let t=ti(_(Y),e);e===_(X)&&!_(Z)&&window.location.pathname===t||await oi(_(Y),e)}async function Pi(e,t){let n=++br;if(D(Ue,null),!(!e||t))try{let t=await W(`/api/channels/${e}/notification-settings`);if(n!==br||e!==_(X)||_(Z))return;Aa(e,t.preference),D(Ue,t.preference)}catch{if(n===br&&e===_(X)&&!_(Z)){let t=ka(e)||`all`;Aa(e,t),D(Ue,t)}}}async function Fi(){let e=_(X);if(!e||_(Z)||_(Ge)||!_(Ue))return;let t=++br,n=[`all`,`mentions`,`muted`],r=_(Ue),i=n[(n.indexOf(r)+1)%n.length];D(Ue,i),Aa(e,i),D(Ge,!0);try{await W(`/api/channels/${e}/notification-settings`,{method:`PATCH`,body:JSON.stringify({preference:i})})}catch{We.get(e)===i&&Aa(e,r),t===br&&e===_(X)&&!_(Z)&&D(Ue,r)}finally{D(Ge,!1)}}function Ii(e,t){return e===dr&&$()===t}async function Li(e=!0){e&&ao();let t=$(),n=++dr,r=t!==_(Hn);Zi(),r&&D(Kn,!0);try{if(!_(Z)&&!_(X)){Wi(``,Ui({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await W(Vi(zi()));if(!Ii(n,t))return;Wi(t,Ui(e),`replace`)}finally{Ii(n,t)&&D(Kn,!1)}}async function Ri(){let e=$();if(!e)return;let t=++dr;Zi(),D(Kn,!0),Sn.set(e,{atBottom:!0});try{let n=await W(Vi(`limit=100`));if(!Ii(t,e))return;Wi(e,Ui(n),`replace`)}finally{Ii(t,e)&&D(Kn,!1)}}function zi(){let e=Bi(),t=e.unread_count||0,n=e.last_read_seq||0;return t>0?`around_seq=${encodeURIComponent(String(n+1))}&limit=100`:`limit=100`}function Bi(){return _(Z)?_(q).find(e=>e.id===_(Z))||{}:_(X)&&_(K).find(e=>e.id===_(X))||{}}function Vi(e){let t=_(Z)?`/api/dms/${_(Z)}/messages`:`/api/channels/${_(X)}/messages`,n=new URLSearchParams(e);!_(Z)&&_(Qe)&&n.set(`topic_id`,_(Qe));let r=n.toString();return r?`${t}?${r}`:t}async function Hi(e){if(!_(X)||e===_(Qe)||tt)return;let t=$(),n=_(Qe),r=_(Ze),i=_(Cn).get(t),a=Sn.get(t);tt=!0,Ar(e);let o=$e;e&&D(Ze,e),Sn.delete(t),_(Cn).delete(t);try{if(await Ri(),$()!==t||$e!==o)return}catch(s){if($()!==t||$e!==o)return;Ar(n),_(Ze)===e&&D(Ze,r),_(Cn).delete(t);let c=$e;try{if(await Ri(),$()!==t||$e!==c)return;a&&(Sn.set(t,a),D(Un,a))}catch{if($()!==t||$e!==c)return;i?(Gi(t,i),oo(t,i.messages),Ji(t,i)):so(xo(t)),a&&(Sn.set(t,a),D(Un,a))}D(wt,{kind:`error`,text:s instanceof Error?`Topic could not change: ${s.message}`:`Topic could not change`})}finally{tt=!1}}function Ui(e){return{messages:e.messages,oldest_seq:e.oldest_seq,newest_seq:e.newest_seq,has_older:e.has_older,has_newer:e.has_newer}}function Wi(e,t,n){let r=ea(e,t.messages,n),i=r[0]?.channel_seq||0,a=r[r.length-1]?.channel_seq||0,o=i>(t.messages[0]?.channel_seq||i),s=a<(t.messages[t.messages.length-1]?.channel_seq||a),c={messages:r,oldest_seq:i,newest_seq:a,has_older:t.has_older||o,has_newer:t.has_newer||s};Gi(e,c),Ji(e,c),oo(e,r)}function Gi(e,t){e&&(_(Cn).delete(e),_(Cn).set(e,t),Ki(e),qi(e),D(Cn,new Map(_(Cn))))}function Ki(e){let t=_(Cn).size+1;for(;_(Cn).size>8&&t>0;){t--;let n=_(Cn).keys().next().value;if(!n)return;if(n===e){let e=_(Cn).get(n);_(Cn).delete(n),e&&_(Cn).set(n,e);continue}_(Cn).delete(n)}}function qi(e){let t=Sn.size+1;for(;Sn.size>16&&t>0;){t--;let n=Sn.keys().next().value;if(!n)return;if(n===e){let e=Sn.get(n);Sn.delete(n),e&&Sn.set(n,e);continue}Sn.delete(n)}}function Ji(e,t=_(Cn).get(e)){e===$()&&(D(Mn,t?.has_older||!1),D(Fn,t?.has_newer||!1))}function Yi(e){let t=_(Cn).get(e);!e||!t||(Gi(e,{...t,has_newer:!0}),Ji(e))}function Xi(e,t){e===`older`?(D(Tn,t),D(In,t===`loading`)):(En=t,D(Ln,t===`loading`))}function Zi(){wn=new Set,D(Tn,`idle`),En=`idle`,On=!1,kn=!1,D(In,!1),D(Ln,!1)}function Qi(e,t){let n=new Map;for(let r of[...e,...t])n.set(r.id,r);return[...n.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function $i(e){let t=new Set,n=ba(e);if(n>=0){let r=xa(e,_(J),n);r&&t.add(r.id)}let r=Sn.get(e)?.anchorMessageID;r&&t.add(r);let i=Ie.session(e);i&&t.add(i.messageID),_(Q)&&lo(_(Q),e)&&t.add(_(Q).id),_(Qn)&&lo(_(Qn),e)&&t.add(_(Qn).id);for(let n of _(J))(n.status===`pending`||n.status===`failed`)&&lo(n,e)&&t.add(n.id);return t}function ea(e,t,n){return Pe(t,n,$i(e))}function ta(){if(_(Tn)!==`idle`){On=!0;return}ra()}function na(e=!1){if(En!==`idle`){e&&(kn=!0);return}ia()}async function ra(){let e=$(),t=jr(),n=_(Cn).get(e),r=`${t}:older`;if(_(Tn)!==`idle`){On=!0;return}if(!e||!n?.has_older||n.oldest_seq<=0||wn.has(r))return;wn.add(r),On=!1,Xi(`older`,`loading`),ao();let i=!1;try{let r=await W(Vi(`before_seq=${encodeURIComponent(String(n.oldest_seq))}&limit=50`));if(jr()!==t)return;Wi(e,{messages:Qi(r.messages,_(J)),oldest_seq:r.oldest_seq||n.oldest_seq,newest_seq:n.newest_seq,has_older:r.has_older,has_newer:n.has_newer},`prepend`),i=!0,Xi(`older`,`settling`)}catch(e){jr()===t&&D(fn,e instanceof Error?e.message:`Could not load older messages`)}finally{wn.delete(r),jr()===t&&!i&&Xi(`older`,`idle`)}}async function ia(){let e=$(),t=jr(),n=_(Cn).get(e),r=`${t}:newer`;if(En!==`idle`){kn=!0;return}if(!e||wn.has(r))return;if(!n||n.newest_seq<=0){await Li();return}wn.add(r),kn=!1,Xi(`newer`,`loading`);let i=!1;try{let r=await W(Vi(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(jr()!==t)return;if(r.messages.length===0){Wi(e,{...n,has_newer:r.has_newer},`append`),i=!0,Xi(`newer`,`settling`);return}Wi(e,{messages:Qi(_(J),r.messages),oldest_seq:n.oldest_seq,newest_seq:r.newest_seq||n.newest_seq,has_older:n.has_older,has_newer:r.has_newer},`append`),i=!0,Xi(`newer`,`settling`)}catch(e){jr()===t&&D(fn,e instanceof Error?e.message:`Could not load newer messages`)}finally{wn.delete(r),jr()===t&&!i&&Xi(`newer`,`idle`)}}function oa(){let e=_(Y),t=$(),n=jr();if(!e||!t)return Promise.resolve();let r=bn.catch(()=>void 0).then(async()=>{if(_(Y)!==e||$()!==t||jr()!==n)return;let r=_(Cn).get(t);if(!r||r.newest_seq<=0){await Li();return}let i=await W(Vi(`after_seq=${encodeURIComponent(String(r.newest_seq))}&limit=50`));if(_(Y)!==e||$()!==t||jr()!==n)return;let a=_(Cn).get(t);if(!a)return;let o=i.newest_seq||r.newest_seq,s=o>a.newest_seq?i.has_newer:on&&(n=r.channel_seq));return n}function ua(e,t=_(J)){let n=0;for(let r of t)r.direct_conversation_id===e&&typeof r.channel_seq==`number`&&r.channel_seq>n&&(n=r.channel_seq);return n}function da(e,t){return e&&t.unread_count||0}async function fa(e,t){let n=_(K).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){D(K,_(K).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/channels/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}async function pa(e,t){let n=_(q).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){D(q,_(q).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/dms/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}function ma(e){let t=_(Cn).get(e)?.newest_seq||0,n=_(K).find(t=>t.id===e);if(n)return Math.max(n.last_seq||0,(n.last_read_seq||0)+(n.unread_count||0),la(e),t);let r=_(q).find(t=>t.id===e);return r?Math.max(r.last_seq||0,(r.last_read_seq||0)+(r.unread_count||0),ua(e),t):0}function ha(e){let t=_(Cn).get(e);return!t||t.has_newer?0:_(K).find(t=>t.id===e)?la(e):_(q).find(t=>t.id===e)?ua(e):0}function ga(e={}){if(!e.all&&Date.now()e.id===t))return;if(!e.all&&!e.seq){let e=ba(t);if(e>=0&&!no(t,e))return}let n=e.all?Math.max(e.seq||0,ma(t)):e.seq||ha(t);if(!(n<=0)){if(_(q).some(e=>e.id===t)){pa(t,n),e.all&&_a(t,n);return}_(K).some(e=>e.id===t)&&(fa(t,n),e.all&&_a(t,n))}}function _a(e,t){zn.delete(e),zn=new Map(zn),D(K,_(K).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n)),D(q,_(q).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n))}function va(e){let t=_(K).find(t=>t.id===e);return t?t.last_read_seq||0:_(q).find(t=>t.id===e)?.last_read_seq||0}function ba(e){let t=_(K).find(t=>t.id===e);if(t)return da(e,t)>0?t.last_read_seq||0:-1;let n=_(q).find(t=>t.id===e);return n&&da(e,n)>0?n.last_read_seq||0:-1}function xa(e,t,n){for(let r of t){if(!lo(r,e)||r.parent_message_id||r.author?.id===_(G)?.id||r.author_id===_(G)?.id)continue;let t=r.channel_seq;if(typeof t==`number`&&t>n)return r}return null}function Sa(e,t){if(!e)return;let n=to(e);if(da(e,n)<=0){zn.delete(e),zn=new Map(zn);return}let r=n.last_read_seq||0,i=zn.get(e);if(i?.boundarySeq===r&&i.since||!no(e,r))return;let a=xa(e,t,r);a&&(zn=new Map(zn).set(e,{boundarySeq:r,since:io(a.created_at)}))}function Ca(e,t,n){if(!e||!n)return;let r=zn.get(e);r?.boundarySeq===t&&r.since||(zn=new Map(zn).set(e,{boundarySeq:t,since:io(n)}))}function wa(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function Ta(e){let t=e.payload;return{channelID:e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),dmID:typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``}}async function Ea(e){try{let t=await W(`/api/channels/${e}/notification-settings`);return Aa(e,t.preference),e===_(X)&&!_(Z)&&!_(Ge)&&D(Ue,t.preference),t.preference}catch{return ka(e)||`all`}}function Da(e){return _(G)?.id&&e?`clickclack:channel-notification:v1:${_(G).id}:${e}`:``}function Oa(e){let t=Da(e);if(!t)return null;try{let e=window.localStorage.getItem(t);return e===`all`||e===`mentions`||e===`muted`?e:null}catch{return null}}function ka(e){return We.get(e)||Oa(e)}function Aa(e,t){We=new Map(We).set(e,t);let n=Da(e);if(n)try{window.localStorage.setItem(n,t)}catch{}}async function ja(e,t){if(e.type!==`message.created`&&e.type!==`thread.reply_created`)return;let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`||!_(sn)||document.visibilityState===`visible`&&t)return;let{channelID:i,dmID:a}=Ta(e);if(i){let t=await Ea(i);if(!t||!_(sn))return;let n=i===_(X)&&!_(Z);if(document.visibilityState===`visible`&&n||t===`muted`||t===`mentions`&&!e.mentioned_user_ids?.includes(_(G)?.id||``))return}let o=typeof n.message_id==`string`?n.message_id:`${e.channel_id||``}:${e.seq||Date.now()}`,s=typeof n.author_id==`string`?n.author_id:``,c=typeof n.body==`string`?n.body:`New message`;if(e.type===`thread.reply_created`&&typeof n.message_id==`string`)try{let e=await W(`/api/messages/${n.message_id}`);s=e.message.author_id,c=e.message.body}catch{}if(s&&s===_(G)?.id||!_(sn)||document.visibilityState===`visible`&&(i&&i===_(X)||a&&a===_(Z)))return;let l=_(K).find(e=>e.id===i),u=bs(s)?.display_name||`ClickClack`,d=l?`#${rt(l)}`:`Direct message`;if(dt){dt.notify({body:Pa(c),route:ri(i||a),tag:`clickclack:${o}`,title:`${u} in ${d}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${u} in ${d}`,{body:Pa(c),tag:`clickclack:${o}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),i?Ni(i):a&&is(a)}}catch{}}function Pa(e){let t=e.replace(/!\[[^\]]*]\([^)]+\)/g,`[image]`).replace(/\[[^\]]+]\(([^)]+)\)/g,`$1`).replace(/[`*_>#|]/g,``).replace(/\s+/g,` `).trim();return t?t.length>180?`${t.slice(0,177)}...`:t:`New message`}function La(e){if(e.type!==`message.created`)return!1;let t=wa(e);if(t<=0)return!1;let{channelID:n,dmID:r}=Ta(e);return n?t<=(_(K).find(e=>e.id===n)?.last_seq||0):r?t<=(_(q).find(e=>e.id===r)?.last_seq||0):!1}async function Va(e){let t=e.payload,n=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;return!n||_(q).some(e=>e.id===n)?!1:(await ts(),_(q).some(e=>e.id===n))}function to(e){return _(K).find(t=>t.id===e)||_(q).find(t=>t.id===e)||{}}function no(e,t,n=_(Cn)){if(!e||t<0)return!1;let r=n.get(e);if(!r||r.messages.length===0)return!1;let i=t+1;return r.oldest_seq<=i&&r.newest_seq>=i}function ro(e,t,n=_(Cn)){let r=zn.get(e);if(r?.boundarySeq===t)return r.since;if(!no(e,t,n))return``;let i=xa(e,_(J),t);return i?io(i.created_at):``}function io(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function ao(){if(!_(Hn)||!_(xn))return;let e=_(xn).captureState();e&&Sn.set(_(Hn),e)}function oo(e,t){let n=e!==_(Hn);D(Un,Sn.get(e));let r=xo(e),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));Ne.seedMessages(t);let o=t.map(e=>{let t=i.get(e.id)||(e.nonce?a.get(e.nonce):void 0);return t?e.nonce&&ho.has(e.nonce)?{...e,nonce:t.nonce,status:t.status,attachments:t.attachments?.length?t.attachments:e.attachments}:{...e,nonce:t.nonce,attachments:t.attachments?.length?t.attachments:e.attachments}:e}),s=new Set(o.map(e=>e.id)),c=new Set(o.map(e=>e.nonce).filter(Boolean)),l=r.filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&lo(t,e)&&(!_(Qe)||t.topic_id===_(Qe)));D(J,l.length>0?[...o,...l]:o),Ie.reconcile(e,_(J)),D(Hn,e),Sa(e,_(J)),n&&(D(rr,[]),D(ar,[]),Gt())}function so(e,t=`append`){let n=$(),r=n?_(Cn).get(n):void 0;if(!n||!r){D(J,e);return}let i=e.filter(e=>lo(e,n)),a=ea(n,i,t),o=a.filter(e=>(e.channel_seq||0)>0),s=o[0]?.channel_seq||r.oldest_seq,c=o[o.length-1]?.channel_seq||r.newest_seq,l=co(a[0])>co(i[0]),u=co(a[a.length-1])0)&&await Ri(),await uo(),ga({all:!0}),await uo()}catch(e){D(fn,e instanceof Error?e.message:`Could not jump to latest messages`)}}let ho=new Map;function go(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function _o(e,t,n=`tmp_${e}`){let r=new Date().toISOString();return{id:n,workspace_id:t.workspaceID,channel_id:t.channelID,direct_conversation_id:t.directConversationID,topic_id:t.topicID,author_id:_(G)?.id||``,thread_root_id:n,body:t.body,body_format:`markdown`,created_at:r,author:_(G)||void 0,attachments:t.upload?[t.upload]:[],quoted_message_id:t.quotedMessageID,nonce:e,status:`pending`}}async function vo(){let e=_(Rt).trim();if(!e)return;if(_(j)&&!_(P)){D(fn,`This conversation has no active recipient`);return}if(!_(X)&&!_(Z)){D(fn,`pick or create a channel`);return}Gt(),D(wt,null);let t=++Sr,n=$(),r=_(Z)?`dm`:`channel`,i=_(Qn)&&_($n)===r?_(Qn):null;if(_(X)&&!_(Z)&&!_(Xt)&&!i){let r=Ra(e),i=r?za(_(St),r.command):void 0;if(r&&i){D(Rt,``),await yo(_(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:_(Xt)||void 0,workspaceID:_(Y),channelID:_(X)||void 0,directConversationID:_(Z)||void 0,topicID:_(X)&&_(Ze)||void 0,topicFilterID:_(Qe),topicFilterGeneration:$e,viewKey:$()};D(Rt,``),i&&Bo(),D(Xt,null),await To(a)}async function yo(e,t,n,r,i,a){try{let r=await Ba(e,t,n);if(a!==Sr||$()!==i)return;r.text&&r.response_type!==`in_channel`&&D(wt,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==Sr||$()!==i)return;D(wt,{kind:`error`,text:e instanceof he&&e.message?bo(e):`${t} failed`}),_(Rt).trim()||D(Rt,r)}}function bo(e){try{let t=JSON.parse(e.message);if(t&&typeof t.error==`string`&&t.error)return t.error}catch{}return e.message}function xo(e){let t=[..._(J),...nt.get(e)||[]].filter(t=>(t.status===`pending`||t.status===`failed`)&&lo(t,e)&&(!_(Qe)||t.topic_id===_(Qe))),n=new Map;for(let e of t){let t=e.nonce?`nonce:${e.nonce}`:`id:${e.id}`;n.set(t,e)}return[...n.values()]}function So(e,t){let n=(nt.get(e)||[]).filter(e=>e.id!==t.id&&!(t.nonce&&e.nonce===t.nonce));nt=new Map(nt).set(e,[...n,t])}function Co(e,t,n){let r=nt.get(e);if(!r)return;let i=r.filter(e=>e.id!==t&&!(n&&e.nonce===n)),a=new Map(nt);i.length>0?a.set(e,i):a.delete(e),nt=a}async function wo(e,t,n){if(So(e.viewKey,t),$()!==e.viewKey)return;let r=!1;if(_(Qe)===e.topicFilterID&&$e===e.topicFilterGeneration&&_(Qe)&&e.topicID!==_(Qe)){Ar(``),Sn.delete(e.viewKey),_(Cn).delete(e.viewKey);try{await Ri()}catch{r=!0}}if($()!==e.viewKey)return;if(_(Qe)&&e.topicID!==_(Qe)){_(Rt).trim()||D(Rt,e.body),D(wt,{kind:`error`,text:`${n} Clear the active topic filter to recover the draft.`});return}r&&so(xo(e.viewKey));let i=t.id,a=t.nonce,o=_(J).findIndex(e=>e.id===i||a&&e.nonce===a);so(o>=0?_(J).map((e,n)=>n===o?t:e):[..._(J),t]),D(wt,{kind:`error`,text:r?`${n} The unfiltered timeline could not reload.`:n}),await po()}async function To(e,t,n){let r=t??go(),i=`tmp_${r}`,a=n??i,o=!_(Qe)||e.topicID===_(Qe),s=!t&&$()===e.viewKey&&o,c=s&&_(Fn);ho.set(r,e);let l=_o(r,e,a);t&&So(e.viewKey,l),t?so(_(J).map(e=>e.id===a?l:e)):$()===e.viewKey&&o&&(so([..._(J),l]),po());let u=e.directConversationID?`/api/dms/${e.directConversationID}/messages`:`/api/channels/${e.channelID}/messages`,d={body:e.body,nonce:r};e.quotedMessageID&&(d.quoted_message_id=e.quotedMessageID),e.topicID&&(d.topic_id=e.topicID);try{let t=(await W(u,{method:`POST`,body:JSON.stringify(d)})).message;if(e.upload)try{await W(`/api/messages/${t.id}/attachments`,{method:`POST`,body:JSON.stringify({upload_id:e.upload.id})}),t={...t,attachments:[...t.attachments||[],e.upload]}}catch(n){console.warn(`attachment failed`,n),await wo(e,{...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments},`The message was sent, but its attachment failed. Retry or discard it below.`);return}Co(e.viewKey,t.id,r),ho.delete(r),_(J).findIndex(e=>e.id===a)>=0?so(_(J).map(e=>e.id===a?t:e)):_(J).some(e=>e.id===t.id)?so(_(J).map(e=>e.id===t.id?t:e)):lo(t,$())&&(!_(Qe)||t.topic_id===_(Qe))&&!_(J).some(e=>e.id===t.id)&&so([..._(J),t]),$()===e.viewKey&&s&&(c&&await Ri(),await po(),ga({all:!0,seq:t.channel_seq||0}))}catch(t){console.warn(`send failed`,t),await wo(e,{...l,status:`failed`},`The message failed to send. Retry or discard it below.`)}}function Eo(e){if(!e.nonce)return;let t=ho.get(e.nonce);if(!t){Do(e);return}To({...t,viewKey:t.viewKey},e.nonce,e.id)}function Do(e){if(e.nonce){let t=ho.get(e.nonce);t&&Co(t.viewKey,e.id,e.nonce),ho.delete(e.nonce)}so(_(J).filter(t=>t.id!==e.id))}async function Oo(e,t){if(e!==_(Wn))return;t.surface===`timeline`&&_(xn)?.scrollToMessage(t.messageID);let n=document.querySelector(t.surface===`timeline`?`main.timeline`:`[aria-label="Thread pane"]`);for(let e=0;e<16;e+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=n?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}function ko(e){so(_(J).map(t=>t.id===e.id?{...t,...e}:t)),D(qe,_(qe).map(t=>t.id===e.id?{...t,...e}:t)),D(mt,_(mt).map(t=>t.id===e.id?{...t,...e}:t)),_(Q)?.id===e.id&&D(Q,{..._(Q),...e})}function Ao(e){!e.id||e.deleted_at||_(Er).has(e.id)||(D(Dr,e),D(Or,``))}async function jo(){let e=_(Dr);if(!(!e||_(Er).has(e.id))){D(Er,new Set([..._(Er),e.id])),D(Or,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ie.cancelMessage($(),t.id),so(_(J).map(e=>e.id===t.id?{...e,...t}:e)),D(qe,_(qe).map(e=>e.id===t.id?{...e,...t}:e)),D(mt,_(mt).filter(e=>e.id!==t.id)),_(Q)?.id===t.id&&D(Q,{..._(Q),...t}),_(Qn)?.id===t.id&&Bo(),D(fn,``),D(Dr,null)}catch(e){D(Or,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(_(Er));t.delete(e.id),D(Er,t)}}}async function Mo(e){Jo(),D(lt,!1),await No(e.id,e),_(Y)&&_(Q)?.route_id&&window.location.pathname!==ti(_(Y),_(Q).id)&&await oi(_(Y),_(Q).id)}async function No(e,t,n=()=>!0){D(kt,null),D(jt,``),D(ct,null),t&&(D(Q,t),D(nr,`thread`));let r=await W(`/api/messages/${e}/thread`);if(!n())return!1;let[i,...a]=[{...r.root,thread_state:r.thread_state},...r.replies];return Ne.seedMessages([i,...a]),Ie.reconcile($(),[i,...a]),D(Q,i),D(nr,`thread`),so(_(J).map(e=>e.id===i.id?i:e)),D(qe,a),D(it,r.thread_state),!0}async function Po(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Ne.seedMessages([n]),so(_(J).map(e=>e.id===n.id?n:e))}function Fo(e,t){let n=_(J).find(t=>t.id===e);if(!n)return!1;let r=new Date(t.created_at).getTime();if(Number.isFinite(r)&&ra}async function Io(){let e=_(zt).trim();if(!e||!_(Q))return;if(_(j)&&!_(P)){D(fn,`This direct message has no active recipient`);return}let t=_(Qn)&&_($n)===`thread`?_(Qn):null;D(zt,``);let n={body:e,nonce:go()};t&&(n.quoted_message_id=t.id);let r=await W(`/api/messages/${_(Q).id}/thread/replies`,{method:`POST`,body:JSON.stringify(n)});t&&Bo(),_(qe).some(e=>e.id===r.message.id)||D(qe,[..._(qe),r.message]),D(it,r.thread_state)}function Lo(e,t){D(Qn,e),D($n,t),D(nr,t===`thread`?`thread`:`message`)}function Ro(){return _(Dr)!==null||_(Ot)!==null||_(Qt)||_(en)||_(rn)||_(an)}function zo(){return _(nr)===`thread`&&_(Q)&&_(tr)?_(tr):_(er)}function Bo(){D(Qn,null),D($n,null)}async function Vo(e){let t=e.quoted_message_id;if(!t)return;if(_(xn)?.scrollToMessage(t)??!1){await Wo(t);return}let n=await W(`/api/messages/${t}`);lo(n.message,$())&&await Qo(n.message)}async function Ho(){Bn=Date.now()+1200,!(_(U)&&_(xn)?.scrollToDivider(!1))&&await Uo()}async function Uo(){let e=$();if(!e)return;Bn=Date.now()+1200;let t=va(e),n=zn.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await $o(r),await s(),_(xn)?.scrollToDivider(!1))}async function Wo(e){for(let t=0;t<16;t+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let t=document.querySelector(`[data-message-id="${CSS.escape(e)}"]`);if(t){t.classList.add(`highlight`),window.setTimeout(()=>t.classList.remove(`highlight`),1500);return}}}async function Go(){if(!_(Y)||!_(Wt).trim()){Jo();return}let e=_(Wt).trim();_(kt)&&Os(),(_(Q)||_(ct))&&Fs();let t=++Yt,n=_(Z)&&_(j)?{workspaceID:_(Y),channelID:``,directConversationID:_(Z),label:`@${Le(_(j),_(G)?.id)}`}:_(X)&&_(T)?{workspaceID:_(Y),channelID:_(X),directConversationID:``,label:`#${rt(_(T))}`}:{workspaceID:_(Y),channelID:``,directConversationID:``,label:``};D(qt,!1),Jt=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};D(Kt,r);try{let e=await W(`/api/search?${Ko(r).toString()}`);if(t!==Yt)return;D(Kt,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==Yt)return;D(Kt,{...r,state:`error`,error:e instanceof he?e.message:`Search is unavailable right now.`})}}function Ko(e,t=``){let n=new URLSearchParams({workspace_id:e.scope.workspaceID,q:e.query});return e.scope.directConversationID?n.set(`direct_conversation_id`,e.scope.directConversationID):e.scope.channelID&&n.set(`channel_id`,e.scope.channelID),t&&n.set(`cursor`,t),n}async function qo(){let e=_(Kt);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=Yt;D(Kt,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${Ko(e,e.nextCursor).toString()}`);if(t!==Yt||!_(Kt))return;let r=new Set(_(Kt).results.map(e=>e.id));D(Kt,{..._(Kt),results:[..._(Kt).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==Yt||!_(Kt))return;D(Kt,{..._(Kt),loadingMore:!1,moreError:e instanceof he?e.message:`Couldn’t load more results.`})}}function Jo(){Yt+=1,D(Wt,``),D(Kt,null),D(qt,!1),Jt=0}function Yo(e){if(e.channel_name)return`#${e.channel_name}`;if(e.direct_conversation_id){let t=_(q).find(t=>t.id===e.direct_conversation_id);return t?`@${Le(t,_(G)?.id)}`:`Direct message`}return``}async function Xo(e){let t=_(Kt),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!_(Y)||!n)&&(D(Kt,{...t,activeResultID:e.id}),$()!==n&&(await oi(_(Y),n),await _i(_(Y),n)),$()===n)){if(e.parent_message_id){Jt=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=Yt;D(qt,!0);try{if(!await No(e.thread_root_id,void 0,()=>t===Yt&&_(qt)&&_(Kt)?.activeResultID===e.id))return}catch(e){throw D(qt,!1),await s(),e}_(Q)?.route_id&&await oi(_(Y),_(Q).id),await s(),document.querySelector(`.thread [data-message-id="${CSS.escape(e.id)}"]`)?.scrollIntoView({block:`center`}),document.querySelector(`.thread .thread-back`)?.focus(),await Wo(e.id);return}if(e.channel_seq&&e.channel_seq>0){await $o(e.channel_seq,e.id);return}await Li()}}async function Zo(){if(!_(Kt)||!_(qt))return;let e=$();_($n)===`thread`&&Bo(),D(Q,null),D(ct,null),D(nr,`message`),D(qe,[]),D(qt,!1),_(Y)&&e&&await oi(_(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=Jt),(_(Kt).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(_(Kt).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Qo(e){let t=e.channel_seq||0;if(t<=0){await Li();return}await $o(t,e.id)}async function $o(e,t=``){let n=$();if(!n)return;_(Qe)&&(Ar(``),_(Cn).delete(n),D(Kn,!0));let r=jr();t&&Sn.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let i=n!==_(Hn);Zi(),i&&D(Kn,!0);try{let i=await W(Vi(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n||jr()!==r)return;Wi(n,Ui(i),`around`),await s(),t&&(_(xn)?.scrollToMessage(t),await Wo(t))}finally{$()===n&&D(Kn,!1)}}async function es(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!_(Y))return;let r=await ft(n),i=new FormData;i.set(`workspace_id`,_(Y)),i.set(`file`,n),r.width>0&&i.set(`width`,String(r.width)),r.height>0&&i.set(`height`,String(r.height)),r.durationMS>0&&i.set(`duration_ms`,String(r.durationMS));let a=await W(`/api/uploads`,{method:`POST`,body:i});D(Xt,a.upload),t.value=``}async function ts(e=_(Y)){let t=++hr;if(!e){D(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t===hr&&e===_(Y)&&(D(q,n.conversations),_(Z)&&!_(q).some(e=>e.id===_(Z))&&D(Z,``))}function ns(e){D(q,_(q).some(t=>t.id===e.id)?_(q).map(t=>t.id===e.id?e:t):[..._(q),e])}async function rs(e){let t=e.trim();t&&(await as(t),D(Ht,``),D(an,!1))}async function is(e){D(Yn,!1);let t=ti(_(Y),e);e===_(Z)&&!_(X)&&window.location.pathname===t||await oi(_(Y),e)}async function as(e){let t=e.trim();if(!_(Y)||!t)return;let n=_(q).find(e=>e.members.some(e=>e.id===t));if(n){D(Yn,!1),await oi(_(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:_(Y),member_ids:[t]})});ns(r.conversation),D(Yn,!1),await oi(_(Y),r.conversation.id)}function os(){Tr&&clearTimeout(Tr),Tr=void 0,D(wr,null)}function ss(e,t){os(),D(wr,{conversation:e,restoreRoute:t,title:Le(e,_(G)?.id)}),Tr=setTimeout(()=>{D(wr,null),Tr=void 0},8e3)}async function cs(){let e=_(wr);if(e){os();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});ns(t.conversation),e.restoreRoute&&await oi(e.conversation.workspace_id,t.conversation.id),D(fn,`direct message restored`)}catch(e){D(fn,e instanceof Error?e.message:`Could not restore direct message`)}}}async function ls(e){if(!e)return;let t=_(q).find(t=>t.id===e),n=_(Z)===e;if(await W(`/api/dms/${e}`,{method:`DELETE`}),D(q,_(q).filter(t=>t.id!==e)),t&&ss(t,n),n){si();let e=_(K)[0]?.id||``;D(Z,``),D(X,e),e&&mi(_(Y),e),await oi(_(Y),e),await Li()}}function us(){if(xr+=1,yn?.close(),yn=null,D(hn,!1),!_(Y))return;let e=_(Y);yn=He({workspaceID:e,onEvent:fs,onOpen:async(t,n)=>{await ds(e,t,_n===e,n),t()&&(_n=e,e===_(Y)&&_(fn)===gn&&D(fn,`ready`),gn=``)},onError:t=>{e===_(Y)&&(gn=t instanceof Error?t.message:`Could not process realtime event`,D(fn,gn))},onStatusChange:e=>{D(hn,e)}})}async function ds(e,t=()=>!0,n=!0,r=!0){let i=++xr;if(!e||e!==_(Y)||!t())return;let a=_(Q)?.id||``,o=_(ct)?.kind===`bot`?_(ct).id:``;if(D(rr,[]),D(ar,[]),!r){await Promise.all([Oi(e),ki(e,!0)]);return}if(Ne.clear(),await Promise.all([$r(),Ci(!1,!1,!1),ts(e),Ei(e),Oi(e),ki(e,!0),wi(e)]),!(i!==xr||e!==_(Y)||!t())){if(_(X)&&!_(K).some(e=>e.id===_(X))&&D(X,``),_(Z)&&!_(q).some(e=>e.id===_(Z))&&D(Z,``),!_(X)&&!_(Z)){let t=ci(e);if(t){let n=_(q).some(e=>e.id===t);D(Z,n?t:``),D(X,n?``:t),n||mi(e,t),await oi(e,t,!0)}}if(!(i!==xr||e!==_(Y)||!t())&&(await Li(n),!(i!==xr||e!==_(Y)||!t())&&(await Ls(),!(i!==xr||e!==_(Y)||!t())&&(a&&_(Q)?.id===a&&await No(a,_(Q)),o&&_(ct)?.id===o)))){let e=bs(o);D(ct,e&&!e.deleted_at?e:null)}}}async function fs(e){if((e.type===`pin.added`||e.type===`pin.removed`)&&e.channel_id===_(X)&&!_(Z)){await Ls();return}if(e.type===`typing.started`||e.type===`typing.stopped`){_s(e);return}if(e.type===`agent.progress`){vs(e);return}if(e.type===`channel.read`||e.type===`dm.read`){hs(e);return}if(e.type===`bot_command.updated`){e.workspace_id===_(Y)&&ki(e.workspace_id,!0).catch(t=>{e.workspace_id===_(Y)&&(D(fn,t instanceof Error?t.message:`Could not refresh bot commands`),us())});return}if(e.type===`bot.deleted`){e.workspace_id===_(Y)&&await ps(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===_(Y)&&await ms(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===_(Y)){await Ci(!1,!1,!1);return}if(e.type===`member.moderation_updated`&&e.workspace_id===_(Y)){let t=_(Z),n=e.payload.user_id===_(G)?.id;if(await $r(),await Ei(),await Ci(!1,n,n),n){if(await ts(),t&&(_(q).some(e=>e.id===t)?(D(Z,t),D(X,``)):D(Z,``)),!_(X)&&!_(Z)){Wi(``,Ui({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await Li()}return}if(e.workspace_id===_(Y)&&e.payload.topic_id&&!_(Ve).some(t=>t.id===e.payload.topic_id)&&await wi(e.workspace_id),La(e))return;(e.type===`message.updated`||e.type===`message.deleted`)&&_(vt).has(e.payload.message_id||``)&&await Ls();let t=(e.channel_id===_(X)||e.payload.direct_conversation_id===_(Z))&&!(e.type===`message.created`&&_(Qe)&&e.payload.topic_id!==_(Qe));if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){Ne.applyEvent(e);return}if(ja(e,t),e.type===`message.created`&&!t&&(await Va(e)||gs(e)),t&&(e.type===`message.created`||e.type===`message.updated`||e.type===`message.deleted`)){let t=e.payload.nonce;if(e.type===`message.created`&&t&&ho.has(t))return;let n=fo();e.type===`message.created`&&!n?(Bn=Date.now()+1200,Yi($())):e.type===`message.created`?await oa():await Li(),e.type===`message.created`&&gs(e,n),e.type===`message.created`&&n&&(await uo(),ga({all:!0,seq:wa(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Fo(n,e)?_(Q)?.id===n?await No(n,_(Q)):await Po(n):e.type!==`thread.reply_created`&&_(Q)&&n===_(Q).id&&await No(_(Q).id,_(Q))}async function ps(e){let t=e.payload.bot_user_id||``;if(!t)return;let n=e.payload.deleted_at||e.created_at,r=e.payload.former_handle||``,i=e=>e.id===t?{...e,handle:``,former_handle:r,deleted_at:n}:e;D(q,_(q).map(e=>({...e,members:e.members.map(i)}))),D(bt,_(bt).filter(e=>e.user.id!==t)),D(St,_(St).filter(e=>e.bot_user_id!==t)),D(Ct,_(Ct).filter(e=>e.bot.id!==t)),D(rr,_(rr).filter(e=>e.userID!==t)),_(Kt)&&D(Kt,{..._(Kt),results:_(Kt).results.map(e=>({...e,author:i(e.author)}))}),_(ct)?.id===t&&D(ct,null);let a=_(Q)?.id||``;await Promise.all([ts(),Ei(),Oi(),ki()]),Di(),await Li(),a&&await No(a)}async function ms(e){let t=e.payload.bot_user_id||``;t&&(D(bt,_(bt).filter(e=>e.user.id!==t)),D(St,_(St).filter(e=>e.bot_user_id!==t)),D(Ct,_(Ct).filter(e=>e.bot.id!==t)),_(ct)?.id===t&&D(ct,null),await Promise.all([ts(e.workspace_id),Ei(e.workspace_id),Oi(e.workspace_id),ki(e.workspace_id)]),Di(e.workspace_id))}function hs(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n!==_(G)?.id)return;let r=e.seq??t.last_read_seq??t.seq,i=typeof r==`number`?r:Number(r)||0;if(e.type===`channel.read`){let n=typeof t.channel_id==`string`?t.channel_id:e.channel_id||``;if(!n)return;D(K,_(K).map(e=>{if(e.id!==n)return e;let t=Math.max(e.last_read_seq||0,i);return{...e,last_read_seq:t,unread_count:t>=(e.last_seq||0)?0:e.unread_count||0}}))}else{let e=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!e)return;D(q,_(q).map(t=>{if(t.id!==e)return t;let n=Math.max(t.last_read_seq||0,i);return{...t,last_read_seq:n,unread_count:n>=(t.last_seq||0)?0:t.unread_count||0}}))}}function gs(e,t){let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===_(G)?.id||n.parent_message_id)return;let a=wa(e),{channelID:o,dmID:s}=Ta(e);if(o){let n=o===_(X)&&!_(Z),r=n&&!_(Qe)?t??fo():!1,i=_(K).find(e=>e.id===o),s=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&Ca(o,i?.last_read_seq||0,e.created_at),D(K,_(K).map(e=>{if(e.id!==o)return e;let t=Math.max(e.last_seq||0,s),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,s-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}else if(s){let n=s===_(Z),r=n?t??fo():!1,i=_(q).find(e=>e.id===s),o=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&Ca(s,i?.last_read_seq||0,e.created_at),D(q,_(q).map(e=>{if(e.id!==s)return e;let t=Math.max(e.last_seq||0,o),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,o-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}}function _s(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n===_(G)?.id)return;let r=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),i=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(_(X)&&r===_(X)||_(Z)&&i===_(Z)))return;if(e.type===`typing.stopped`){D(rr,_(rr).filter(e=>e.userID!==n));return}let a=bs(n),o=_(rr).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+jn}),D(rr,o),xs()}function vs(e){let t=e.payload,n=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),r=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(_(X)&&n===_(X)||_(Z)&&r===_(Z)))return;let i=typeof t.turn_id==`string`?t.turn_id:``,a=typeof t.op==`string`?t.op:``;if(!i||!a)return;let o=typeof t.user_id==`string`?t.user_id:``,s=Na(o,i);if(a===`clear`){D(ar,_(ar).filter(e=>e.turnId===i?o&&e.userId?e.key!==s:!1:!0));return}let c=t.line,l=c&&typeof c.id==`string`?c.id:``;if(!l)return;let u=c&&typeof c.text==`string`?c.text:``,d=c&&typeof c.title==`string`?c.title:``,f=u||d,p=c&&typeof c.tool_name==`string`?c.tool_name:typeof c?.toolName==`string`?c.toolName:void 0,m=c&&typeof c.status==`string`?c.status:void 0,h=c&&typeof c.kind==`string`?c.kind:void 0,g=_(ar).find(e=>e.key===s),v=g?.lines.find(e=>e.id===l),y={id:l,kind:h??v?.kind??`lifecycle`,text:f||v?.text||``,toolName:p??v?.toolName,status:m??v?.status,finalized:a===`finalize`||(v?.finalized??!1)};if(!v&&!y.text&&!y.toolName)return;let b=Date.now()+Pn;if(!g)D(ar,[..._(ar),{key:s,turnId:i,userId:o,lines:[y],expiresAt:b}]);else{let e=g.lines.some(e=>e.id===l)?g.lines.map(e=>e.id===l?y:e):[...g.lines,y];D(ar,_(ar).map(t=>t.key===s?{...t,lines:e,expiresAt:b}:t))}ys()}function ys(){or||=window.setInterval(()=>{let e=Date.now(),t=_(ar).filter(t=>t.expiresAt>e);t.length!==_(ar).length&&D(ar,t),t.length===0&&or&&(window.clearInterval(or),or=void 0)},1e3)}function bs(e){if(_(G)?.id===e)return _(G);let t=_(xt).find(t=>t.id===e);if(t)return t;let n=_(J).find(t=>t.author?.id===e)?.author;if(n)return n;let r=_(qe).find(t=>t.author?.id===e)?.author;if(r)return r;if(_(Q)?.author?.id===e)return _(Q).author;let i=_(bt).find(t=>t.user.id===e)?.user;if(i)return i;for(let t of _(q)){let n=t.members.find(t=>t.id===e);if(n)return n}}function xs(){ir||=window.setInterval(()=>{let e=Date.now(),t=_(rr).filter(t=>t.expiresAt>e);t.length!==_(rr).length&&D(rr,t),t.length===0&&ir&&(window.clearInterval(ir),ir=void 0)},1e3)}function Ss(){_(Y)&&(!_(X)&&!_(Z)||Ut({workspaceID:_(Y),channelID:_(X)||void 0,directConversationID:_(Z)||void 0}))}function Cs(e){!e||e.deleted_at||(Jo(),D(kt,null),D(jt,``),D(Q,null),D(lt,!1),D(ct,e),(_(o)===`owner`||_(o)===`moderator`)&&!_(bt).some(t=>t.user.id===e.id)&&Ei())}function ws(e){if(e.key===`Escape`&&_(Qn)&&_($n)!==`thread`){e.preventDefault(),Bo();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),vo())}function Ts(e){if(e.key===`Escape`&&_(Qn)&&_($n)===`thread`){e.preventDefault(),Bo();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Io())}function Es(e,t){Ro()||D(Ot,{url:e,title:t})}function Ds(e){D(Mt,document.activeElement instanceof HTMLElement?document.activeElement:null),Nt=_(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,D(jt,_(Wn)),D(kt,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Os(){let e=_(Mt),t=_(kt)?.id||``;D(kt,null),D(jt,``),D(Mt,null),s().then(()=>{if(Nt!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=Nt)}if(Nt=null,e?.isConnected){e.focus({preventScroll:!0});return}(_(Q)?document.querySelector(`.thread`):document)?.querySelector(`[data-artifact-upload-id="${CSS.escape(t)}"]`)?.focus({preventScroll:!0})})}function ks(e,t){for(let e of Lt)e.inert=!1;if(Lt.clear(),!(!e||!_(Ft)||!t))for(let e of _(Ft).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,Lt.add(e))}function As(e){if(!_(kt)||!_(Xn)||e.key!==`Tab`||!_(Pt))return;let t=Array.from(_(Pt).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),_(Pt).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!_(Pt).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!_(Pt).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function js(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),Es(Re(t),t.alt||`Image`))}function Ms(e){let t=_(Rt)&&!_(Rt).endsWith(`
`)?`
-`:``;D(Rt,`${_(Rt)}${t}${e}`)}function Ms(e,t=e){js(`${e}${e==="```"?`
+`:``;D(Rt,`${_(Rt)}${t}${e}`)}function Ns(e,t=e){Ms(`${e}${e==="```"?`
code
-`:`text`}${t}`)}function Ns(e,t){js(``),D(Zt,!1),D(on,``)}function Ps(){if(_(kt)){Ds();return}if(_(lt)){D(lt,!1);return}let e=_(Q)!==null,t=_(qt),n=$();Ie.cancel(n,`thread`),_($n)===`thread`&&zo(),D(Q,null),D(ct,null),D(nr,`message`),D(qe,[]),t&&qo(),(e||t)&&_(Y)&&n&&oi(_(Y),n)}function Fs(){if(_(Q)){Ps();return}_(be)&&Ps(),D(fn,`pick a message to open its thread`)}async function Is(e=_(X),t=_(Z)){let n=++yt;if(!e||t){D(mt,[]),D(_t,``),D(gt,!1);return}D(gt,!0),D(_t,``);try{let t=await W(`/api/channels/${e}/pins?limit=100`);if(n!==yt||e!==_(X)||_(Z))return;D(mt,t.messages)}catch(e){if(n!==yt)return;D(_t,e instanceof Error?e.message:`Could not load pinned messages`)}finally{n===yt&&D(gt,!1)}}async function Ls(e,t){let n=_(X);if(!n||_(Z))throw Error(`Pins are available in channels only`);t?await W(`/api/channels/${n}/pins/${e.id}`,{method:`DELETE`}):await W(`/api/channels/${n}/pins`,{method:`POST`,body:JSON.stringify({message_id:e.id})}),await Is(n,``)}async function Rs(){if(_(lt)){D(lt,!1);return}if(!_(X)||_(Z))return;let e=_(Q)!==null,t=_(qt),n=$();if(qo(),D(Q,null),D(it,null),D(ct,null),D(qe,[]),(e||t)&&_(Y)&&n){pt=!0,await oi(_(Y),n);return}D(lt,!0),Is()}async function zs(e){D(lt,!1),await Mo(e.thread_root_id,e.parent_message_id?void 0:e),_(Y)&&_(Q)?.route_id&&window.location.pathname!==ti(_(Y),_(Q).id)&&await oi(_(Y),_(Q).id)}function Bs(e){if(ks(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||_(Ot))return;if(Lo())Vs();else if(_(Yn)){e.preventDefault(),Hs();return}else if(_(kt)){e.preventDefault(),Ps();return}else if(_(qt)){e.preventDefault(),Ps();return}else if(_(xe)){e.preventDefault(),qo();return}else if(_(Qn)){e.preventDefault(),zo();return}else{e.preventDefault(),po();return}}if(_(Yn)&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.isComposing){let t=document.activeElement;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement)&&!(t instanceof HTMLSelectElement)&&!(t instanceof HTMLElement&&t.isContentEditable)){e.preventDefault();return}}It(e,{authRequired:_(pn),isModalOpen:()=>Lo()||_(Yn),messageInput:_(er),replyInput:_(tr),target:Ro})}}function Vs(){_(Dr)&&_(Er).has(_(Dr).id)||_(tn)||(D(Dr,null),D(Or,``),D(Ot,null),D(Qt,!1),D(en,!1),D(nn,``),D(rn,!1),D(an,!1))}function Hs(){D(Yn,!1)}function Us(){if(_(Xn)){D(Yn,!_(Yn));return}D(Jn,!_(Jn))}v(()=>(_(ze),_(Y)),()=>{D(i,_(ze).find(e=>e.id===_(Y)))}),v(()=>_(i),()=>{D(o,_(i)?.role||``)}),v(()=>_(o),()=>{D(p,_(o)===`owner`)}),v(()=>(_(ct),_(bt)),()=>{D(m,_(ct)?_(bt).find(e=>e.user.id===_(ct)?.id):void 0)}),v(()=>(_(K),_(X)),()=>{D(T,_(K).find(e=>e.id===_(X)))}),v(()=>(_(T),_(o)),()=>{D(E,!!_(T)&&(_(o)===`owner`||_(o)===`moderator`))}),v(()=>(_(Ve),_(X)),()=>{D(k,Mr(_(Ve),_(X)))}),v(()=>(_(k),_(Qe)),()=>{D(A,_(k).find(e=>e.id===_(Qe)))}),v(()=>(_(X),_(Z)),()=>{Pi(_(X),_(Z))}),v(()=>(_(q),_(Z)),()=>{D(j,_(q).find(e=>e.id===_(Z)))}),v(()=>_(j),()=>{D(P,_(j)?.can_send??!0)}),v(()=>(_(Z),_(X)),()=>{D(Wn,_(Z)||_(X)||``)}),v(()=>_(Wn),()=>{kr(_(Wn))}),v(()=>_(Wn),()=>{Ai(_(Wn))}),v(()=>(_(X),_(Ct),_(j)),()=>{D(F,_(X)?_(Ct):_(j)?_(Ct).filter(e=>_(j)?.members?.some(t=>t.id===e.bot.id)):[])}),v(()=>(_(Z),_(q),_(X),_(K)),()=>{D(te,_(Z)?_(q).find(e=>e.id===_(Z))||{}:_(X)&&_(K).find(e=>e.id===_(X))||{})}),v(()=>(_(Wn),_(te)),()=>{D(L,da(_(Wn),_(te)))}),v(()=>(_(fn),_(K),_(q)),()=>{D(oe,_(fn)===`ready`?_(K).reduce((e,t)=>e+(t.unread_count||0),0)+_(q).reduce((e,t)=>e+(t.unread_count||0),0):0)}),v(()=>_(oe),()=>{dt?.setUnreadCount(_(oe))}),v(()=>_(lr),()=>{dt&&_(lr)&&typeof window<`u`&&dt.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),v(()=>(_(L),_(te)),()=>{D(ce,_(L)>0&&_(te).last_read_seq||0)}),v(()=>(_(L),_(Wn),_(ce),_(Cn)),()=>{D(U,_(L)>0&&to(_(Wn),_(ce),_(Cn)))}),v(()=>(_(L),_(Wn),_(ce),_(Cn)),()=>{D(ue,_(L)>0?no(_(Wn),_(ce),_(Cn)):``)}),v(()=>(_(J),_(cn),_(ln),_(sr)),()=>{D(ge,Et(_(J),{hideCommentary:_(cn),hideToolCalls:_(ln)},_(sr)))}),v(()=>_(ar),()=>{D(ve,_(ar).some(e=>e.lines.some(e=>!e.finalized)))}),v(()=>_(mt),()=>{D(vt,new Set(_(mt).map(e=>e.id)))}),v(()=>(_(ar),_(Ct)),()=>{D(ye,Fa(_(ar),_(Ct),ys))}),v(()=>(_(kt),_(jt),_(Wn)),()=>{_(kt)&&_(jt)&&_(jt)!==_(Wn)&&(D(kt,null),D(jt,``),D(Mt,null))}),v(()=>(_(lt),_(Q),_(ct),_(kt)),()=>{D(be,_(lt)||_(Q)!==null||_(ct)!==null||_(kt)!==null)}),v(()=>(_(Kt),_(qt)),()=>{D(xe,_(Kt)!==null&&!_(qt))}),v(()=>(_(Xn),_(kt),_(Pt)),()=>{Os(_(Xn)&&_(kt)!==null,_(Pt))}),v(()=>(_(J),_(q),_(G)),()=>{D(Se,Be(_(J),_(q),_(G)?.id||``))}),v(()=>(_(G),_(Se),_(xt),_(j)),()=>{D(Tt,Ye(_(G),_(Se),_(xt),_(j)))}),v(()=>(_(G),_(Z),_(X),_(Ue)),()=>{D(Dt,_(G)?.id&&(_(Z)||_(X)&&_(Ue)!==null&&_(Ue)!==`muted`)?_(G).id:``)}),v(()=>(_($n),_(Qn),_(J)),()=>{_($n)===`channel`&&_(Qn)&&!_(J).some(e=>e.id===_(Qn)?.id)&&zo()}),v(()=>(_($n),_(Qn),_(J)),()=>{_($n)===`dm`&&_(Qn)&&!_(J).some(e=>e.id===_(Qn)?.id)&&zo()}),v(()=>(_($n),_(Qn),_(Q),_(qe)),()=>{_($n)===`thread`&&_(Qn)&&_(Q)&&_(Qn).id!==_(Q).id&&!_(qe).some(e=>e.id===_(Qn)?.id)&&zo()}),v(()=>(_(fn),_(G),h(je()),h(Me()),_(lr)),()=>{_(fn)===`ready`&&_(G)&&ei(je(),Me())!==_(lr)&&_i(je(),Me())}),v(()=>(_(Zt),_(on)),()=>{D(Ce,_(Zt)?ht.filter(e=>{let t=_(on).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),y(),re();var Ws=a();r(`1oa2eo8`,e=>{var t=Ha();u(e,t)}),g(`keydown`,I,Bs,!0),g(`pointerdown`,I,function(...e){At?.apply(this,e)},!0);var Gs=M(Ws),Ks=e=>{var t=Wa(),r=M(t),i=e=>{var t=Ua();d(()=>R(t,`data-platform`,(h(dt),z(()=>dt.platform)))),u(e,t)};N(r,e=>{Ae&&dt&&e(i)});var a=C(r,2),o=B(a),s=C(B(o),4),l=C(s,2),f=B(l,!0);H(l),H(o),H(a),d(e=>{R(s,`href`,e),c(f,_(mn)||`Any GitHub account can join.`)},[()=>(h(de),z(()=>de(`/api/auth/github/start`)))]),n(`click`,s,Pr),u(e,t)},qs=e=>{var t=$a(),r=M(t);let a;var s=B(r),g=e=>{{let t=O(()=>_(T)?_(Ue):null),n=O(()=>(_(j),h(Le),_(G),_(T),h(rt),z(()=>_(j)?`@${Le(_(j),_(G)?.id)}`:_(T)?`#${rt(_(T))}`:void 0))),r=O(()=>(_(j),_(T),z(()=>_(j)?void 0:_(T)?.external_url))),a=O(()=>(_(T),z(()=>!!_(T)))),o=O(()=>(_(i),z(()=>_(i)?.name)));ya(e,{get channelNotifPreference(){return _(t)},get channelNotifSaving(){return _(Ge)},get pinnedOpen(){return _(lt)},get channelTitle(){return _(n)},get externalURL(){return _(r)},get pinsAvailable(){return _(a)},get channelSettingsAvailable(){return _(E)},get connected(){return _(hn)},get platform(){return h(dt),z(()=>dt.platform)},get searchQuery(){return _(Wt)},get sidebarCollapsed(){return _(Jn)},get mobileNavOpen(){return _(Yn)},get mobileNavigation(){return _(Xn)},get workspaceName(){return _(o)},onOpenChannelSettings:Gr,onOpenWorkspaceSettings:Wr,onResetSearch:qo,onSearch:()=>void Wo(),onSearchQuery:e=>D(Wt,e),onToggleSidebar:Us,onToggleChannelNotifications:()=>void Fi(),onPinnedItems:Rs})}};N(s,e=>{Ae&&dt&&e(g)});var v=C(s,2),y=B(v),x=e=>{var t=f(`×`);u(e,t)},S=e=>{var t=Ga();u(e,t)};N(y,e=>{_(Yn)?e(x):e(S,-1)}),H(v);var ee=C(v,2),te=e=>{var t=Ka();n(`click`,t,Hs),u(e,t)};N(ee,e=>{_(Yn)&&e(te)});var ne=C(ee,2);{let e=O(()=>Ae?`/app`:`/`);Zn(ne,{get workspaces(){return _(ze)},get homeHref(){return _(e)},get selectedWorkspaceID(){return _(Y)},get workspaceName(){return _(Bt)},get showWorkspaceCreate(){return _(qn)},hrefForWorkspace:e=>ti(e),onSelectWorkspace:e=>void Si(e),onToggleWorkspaceCreate:()=>D(qn,!_(qn)),onWorkspaceName:e=>D(Bt,e),onCreateWorkspace:()=>void xi()})}var I=C(ne,2);{let e=O(()=>(_(i),z(()=>_(i)?.name))),t=O(()=>(_(i),h(fe),z(()=>_(i)?.icon_url?fe(_(i).icon_url):``))),n=O(()=>!Ae),r=O(()=>(_(wr),z(()=>_(wr)?.title)));Cr(I,{get workspaceID(){return _(Y)},get workspaceName(){return _(e)},get workspaceIconURL(){return _(t)},get connected(){return _(hn)},get sidebarCollapsed(){return _(Jn)},get showHeader(){return _(n)},get channels(){return _(K)},get directConversations(){return _(q)},get recentPeople(){return _(Se)},get currentUser(){return _(G)},get selectedChannelID(){return _(X)},get selectedDirectID(){return _(Z)},get selectedProfile(){return _(ct)},onToggleCollapse:Us,hrefForChannel:e=>ti(_(Y),e),hrefForDirect:e=>ti(_(Y),e),onSelectChannel:e=>void Ni(e),onCreateChannel:()=>D(rn,!0),onSelectDirect:e=>void rs(e),onCreateDirect:()=>D(an,!0),onHideDirect:e=>void cs(e),get hiddenDirectTitle(){return _(r)},onUndoHideDirect:()=>void ss(),onOpenProfile:Ss,onOpenSettings:Ur,onOpenWorkspaceSettings:Wr})}var re=C(I,2),ie=B(re),V=e=>{{let t=O(()=>(_(i),z(()=>_(i)?.name))),n=O(()=>(_(G),z(()=>_(G)?.id))),r=O(()=>_(Q)!==null);Ma(e,{get selectedDirect(){return _(j)},get selectedChannel(){return _(T)},get workspaceName(){return _(t)},get currentUserID(){return _(n)},get searchQuery(){return _(Wt)},get threadOpen(){return _(r)},get pinnedOpen(){return _(lt)},get channelNotifPreference(){return _(Ue)},get channelNotifSaving(){return _(Ge)},get channelSettingsAvailable(){return _(E)},onSearchQuery:e=>D(Wt,e),onSearch:()=>void Wo(),onResetSearch:qo,onToggleThread:Fs,onToggleChannelNotifications:()=>void Fi(),onPinnedItems:Rs,onOpenChannelSettings:Gr})}};N(ie,e=>{Ae||e(V)});var oe=C(ie,2),le=e=>{var t=qa(),r=B(t),i=C(B(r)),a=B(i,!0);H(i),H(r);var o=C(r,2);H(t),d(()=>c(a,(_(A),z(()=>_(A).name)))),n(`click`,o,()=>void Hi(``)),u(e,t)};N(oe,e=>{_(A)&&e(le)});var de=C(oe,2);{let e=O(()=>_(Tn)!==`idle`),t=O(()=>(_(Q),z(()=>_(Q)?.id))),n=O(()=>(_(G),z(()=>_(G)?.id))),r=O(()=>(_(j),_(P),z(()=>!!(_(j)&&!_(P))))),i=O(()=>_(p)&&!_(Z));at(de,{get channelID(){return _(X)},get pinnedMessageIDs(){return _(vt)},onTogglePin:Ls,onCopyLink:ni,get messages(){return _(ge)},get selectedDirect(){return _(j)},get selectedChannel(){return _(T)},get mentionPeople(){return _(Tt)},get mentionAttentionUserID(){return _(Dt)},get restoreState(){return _(Un)},get viewKey(){return _(Hn)},get loading(){return _(Kn)},get unreadCount(){return _(L)},get unreadBoundarySeq(){return _(ce)},get unreadBoundaryLoaded(){return _(U)},get unreadSince(){return _(ue)},get hasOlder(){return _(Mn)},get hasNewer(){return _(Fn)},get loadingOlder(){return _(In)},get loadingNewer(){return _(Ln)},get prepending(){return _(e)},get selectedThreadID(){return _(t)},get currentUserID(){return _(n)},get reactionController(){return Ne},get reactionsDisabled(){return _(r)},get canDeleteAnyMessage(){return _(i)},get deletingMessageIDs(){return _(Er)},onListRef:e=>D(xn,e),onActivateMessageComposer:Ti,onInlineImagePointerUp:As,onOpenProfile:Ss,onReply:Io,onOpenThread:jo,onJumpToQuote:e=>void Bo(e),onOpenImage:Ts,onOpenArtifact:Es,onLoadOlder:ta,onLoadNewer:e=>na(e===`wheel`),onJumpToUnread:()=>void Vo(),onHistorySettled:ca,onReachedBottom:ga,onMarkRead:e=>{ga({all:!0,seq:e})},onRetry:To,onDiscard:Eo,onDeleteMessage:ko,get editController(){return Ie},get editScope(){return _(Wn)},onMessageEdited:Oo,get topics(){return _(Ve)},onSelectTopic:e=>void Hi(e)})}var W=C(de,2);Rn(W,{get turns(){return _(ar)}});var pe=C(W,2);{let e=O(()=>(_(G),z(()=>_(G)?.id)));Nn(pe,{get entries(){return _(rr)},get currentUserID(){return _(e)}})}var me=C(pe,2),he=B(me);{let e=O(()=>_(ve)&&_(Q)===null);ot(he,{get active(){return _(e)},get agentNames(){return _(ye)}})}var _e=C(he,2),we=e=>{var t=Ja();let r;var i=B(t),a=B(i,!0);H(i);var o=C(i,2),s=B(o,!0);H(o);var l=C(o,2);H(t),d(()=>{r=w(t,1,`composer-notice`,null,r,{"composer-notice--error":_(wt).kind===`error`}),c(a,(_(wt),z(()=>_(wt).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(_(wt),z(()=>_(wt).text)))}),n(`click`,l,()=>D(wt,null)),u(e,t)};N(_e,e=>{_(wt)&&e(we)});var Te=C(_e,2),Ee=e=>{var t=Xa(),r=C(B(t),2),i=B(r);i.value=i.__value=``;var a=C(i);l(a,1,()=>_(k),e=>e.id,(e,t)=>{var n=Ya(),r=B(n,!0);H(n);var i={};d(()=>{c(r,(_(t),z(()=>_(t).name))),i!==(i=(_(t),z(()=>_(t).id)))&&(n.value=(n.__value=(_(t),z(()=>_(t).id)))??``)}),u(e,n)}),H(r);var o;b(r),H(t),d(()=>{o!==(o=_(Ze))&&(r.value=(r.__value=_(Ze))??``,se(r,_(Ze)))}),n(`change`,r,e=>D(Ze,e.currentTarget.value)),u(e,t)};N(Te,e=>{_(X),_(k),z(()=>_(X)&&_(k).length>0)&&e(Ee)});var De=C(Te,2);{let e=O(()=>(_(j),_(P),h(Le),_(G),_(T),h(rt),z(()=>_(j)&&!_(P)?`No active recipient`:_(j)?`Message ${Le(_(j),_(G)?.id)}`:_(T)?`Message #${rt(_(T))}`:`Pick a channel to start`))),t=O(()=>!!_(j)&&!_(P)),n=O(()=>_(Qn)&&_($n)===(_(Z)?`dm`:`channel`)?_(Qn):null),r=O(()=>_(X)?_(St):[]);Ke(De,{get value(){return _(Rt)},get placeholder(){return _(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return _(t)},get pendingUpload(){return _(Xt)},get replyTarget(){return _(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return _(Zt)},get gifQuery(){return _(on)},get filteredGifs(){return _(Ce)},get slashCommands(){return _(r)},get botCommands(){return _(F)},get mentionPeople(){return _(Tt)},onValue:e=>{let t=_(Rt);D(Rt,e),e.trim()&&e!==t?xs():e.trim()||Gt()},onSubmit:()=>void _o(),onKeydown:Cs,onFocus:Ti,onInputRef:e=>D(er,e),onUploadFile:$o,onRemoveUpload:()=>D(Xt,null),onClearReply:zo,onApplyMarkdownWrap:Ms,onAppendToComposer:js,onToggleGif:()=>D(Zt,!_(Zt)),onGifQuery:e=>D(on,e),onPickGif:Ns})}H(me),H(re);var Oe=C(re,2),ke=e=>{var t=Za();Dn(B(t),{get upload(){return _(kt)},onClose:Ds}),H(t),ae(t,e=>D(Pt,e),()=>_(Pt)),d(()=>{t.inert=_(Yn),R(t,`role`,_(Xn)?`dialog`:`complementary`),R(t,`aria-modal`,_(Xn)?`true`:void 0)}),u(e,t)};N(Oe,e=>{_(kt)&&e(ke)});var je=C(Oe,2),Me=e=>{{let t=O(()=>_(kt)!==null),n=O(()=>_(Yn)||_(kt)!==null);li(e,{get session(){return _(Kt)},get covered(){return _(t)},get inert(){return _(n)},contextFor:Jo,onClose:qo,onOpenResult:e=>void Yo(e),onLoadMore:()=>void Ko()})}},Pe=e=>{var t=Qa();let n;var r=B(t),a=e=>{Kr(e,{get messages(){return _(mt)},get loading(){return _(gt)},get error(){return _(_t)},get topics(){return _(Ve)},get mentionPeople(){return _(Tt)},get mentionAttentionUserID(){return _(Dt)},onClose:Ps,onOpenThread:e=>void zs(e),onOpenImage:Ts,onOpenArtifact:Es,onUnpin:e=>Ls(e,!0),onSelectTopic:e=>{D(lt,!1),Hi(e)}})},s=e=>{{let t=O(()=>_(Qn)&&_($n)===`thread`?_(Qn):null),n=O(()=>(_(j),_(P),z(()=>!!(_(j)&&!_(P))))),r=O(()=>_(qt)&&_(Kt)?()=>void Xo():void 0),i=O(()=>(_(G),z(()=>_(G)?.id))),a=O(()=>(_(j),_(P),z(()=>!!(_(j)&&!_(P))))),o=O(()=>_(p)&&!_(Z));st(e,{get root(){return _(Q)},get replies(){return _(qe)},get threadState(){return _(it)},get replyBody(){return _(zt)},get replyTarget(){return _(t)},get mentionPeople(){return _(Tt)},get mentionAttentionUserID(){return _(Dt)},get agentResponding(){return _(ve)},get respondingAgentNames(){return _(ye)},get replyDisabled(){return _(n)},onClose:Ps,get onBack(){return _(r)},onReplyBody:e=>D(zt,e),onSubmitReply:()=>void Fo(),onReplyKeydown:ws,onReplyFocus:()=>D(nr,`thread`),onReplyInputRef:e=>D(tr,e),get currentUserID(){return _(i)},get reactionController(){return Ne},get reactionsDisabled(){return _(a)},onSetReplyTarget:Io,onClearReply:zo,get canDeleteAnyMessage(){return _(o)},get deletingMessageIDs(){return _(Er)},onDeleteMessage:ko,get channelID(){return _(X)},get pinnedMessageIDs(){return _(vt)},onTogglePin:Ls,onCopyLink:ni,get editController(){return Ie},get editScope(){return _(Wn)},onMessageEdited:Oo,onActivateThreadComposer:()=>D(nr,`thread`),onInlineImagePointerUp:As,onJumpToQuote:e=>void Bo(e),onOpenImage:Ts,onOpenArtifact:Es})}},c=e=>{{let t=O(()=>(_(i),z(()=>_(i)?.name)));Ir(e,{get profile(){return _(ct)},get currentUser(){return _(G)},get workspaceName(){return _(t)},get currentUserRole(){return _(o)},get moderation(){return _(m)},onClose:Ps,onEdit:Ur,onMessage:e=>void is(e),onApprove:e=>void ji(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void ji(e,{timeout_minutes:60}),onBlock:e=>void ji(e,{blocked:!0}),onUnblock:e=>void ji(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>D(fn,`status messages are coming soon`)})}},l=e=>{sa(e,{})};N(r,e=>{_(lt)?e(a):_(Q)?e(s,1):_(ct)?e(c,2):e(l,-1)}),H(t),d(()=>{n=w(t,1,`thread`,null,n,{open:_(be),covered:_(kt)!==null}),t.inert=_(Yn)||_(kt)!==null,R(t,`aria-hidden`,_(kt)?`true`:void 0),R(t,`aria-label`,_(lt)?`Pinned messages pane`:_(ct)?`Profile pane`:`Thread pane`)}),u(e,t)};N(je,e=>{_(xe)&&_(Kt)?e(Me):e(Pe,-1)}),H(r),ae(r,e=>D(Ft,e),()=>_(Ft));var Fe=C(r,2),Re=e=>{{let t=O(()=>dt!=null);aa(e,{get user(){return _(G)},get workspaces(){return _(ze)},get initialSection(){return _($t)},get hideCommentary(){return _(cn)},get hideToolCalls(){return _(ln)},get userAlign(){return _(un)},get otherAlign(){return _(dn)},get isDesktop(){return _(t)},onUserUpdated:Jr,onHideCommentary:Br,onHideToolCalls:Vr,onUserAlign:Rr,onOtherAlign:zr,onBrowserNotificationsChanged:e=>D(sn,e),onClose:Vs})}};N(Fe,e=>{_(Qt)&&_(G)&&e(Re)});var Be=C(Fe,2),He=e=>{hi(e,{get channel(){return _(T)},get saving(){return _(tn)},get error(){return _(nn)},onClose:Vs,onArchivedChange:e=>void qr(e)})};N(Be,e=>{_(en)&&_(T)&&e(He)});var We=C(Be,2),J=e=>{Vn(e,{get channelName(){return _(Vt)},status:``,onChannelName:e=>D(Vt,e),onClose:Vs,onCreate:()=>void Mi()})};N(We,e=>{_(rn)&&e(J)});var Ye=C(We,2),Xe=e=>{{let t=O(()=>(_(G),z(()=>_(G)?.id)));Gn(e,{get people(){return _(Se)},get currentUserID(){return _(t)},get memberID(){return _(Ht)},onMemberID:e=>D(Ht,e),onClose:Vs,onStart:e=>void ns(e)})}};N(Ye,e=>{_(an)&&e(Xe)});var Qe=C(Ye,2),$e=e=>{{let t=O(()=>(_(Er),_(Dr),z(()=>_(Er).has(_(Dr).id))));An(e,{get message(){return _(Dr)},get deleting(){return _(t)},get error(){return _(Or)},onClose:Vs,onConfirm:()=>void Ao()})}};N(Qe,e=>{_(Dr)&&e($e)});var et=C(Qe,2),tt=e=>{Je(e,{get url(){return _(Ot),z(()=>_(Ot).url)},get title(){return _(Ot),z(()=>_(Ot).title)},onClose:Vs})};N(et,e=>{_(Ot)&&e(tt)}),d(()=>{a=w(r,1,`shell`,null,a,{"desktop-shell":Ae,"nav-open":_(Yn),"sidebar-collapsed":_(Jn),"thread-open":_(be)&&!_(xe),"search-open":_(xe),"artifact-open":_(kt)!==null}),R(r,`data-connected`,_(hn)),R(r,`data-app-ready`,_(hn)&&_(fn)===`ready`),R(v,`aria-expanded`,_(Yn)),re.inert=_(Yn)}),n(`click`,v,()=>D(Yn,!_(Yn))),u(e,t)};N(Gs,e=>{_(pn)?e(Ks):e(qs,-1)}),u(e,Ws),ee()}U([`click`,`change`]);export{Va as n,eo as t};
\ No newline at end of file
+`:`text`}${t}`)}function Ps(e,t){Ms(``),D(Zt,!1),D(on,``)}function Fs(){if(_(kt)){Os();return}if(_(lt)){D(lt,!1);return}let e=_(Q)!==null,t=_(qt),n=$();Ie.cancel(n,`thread`),_($n)===`thread`&&Bo(),D(Q,null),D(ct,null),D(nr,`message`),D(qe,[]),t&&Jo(),(e||t)&&_(Y)&&n&&oi(_(Y),n)}function Is(){if(_(Q)){Fs();return}_(be)&&Fs(),D(fn,`pick a message to open its thread`)}async function Ls(e=_(X),t=_(Z)){let n=++yt;if(!e||t){D(mt,[]),D(_t,``),D(gt,!1);return}D(gt,!0),D(_t,``);try{let t=await W(`/api/channels/${e}/pins?limit=100`);if(n!==yt||e!==_(X)||_(Z))return;D(mt,t.messages)}catch(e){if(n!==yt)return;D(_t,e instanceof Error?e.message:`Could not load pinned messages`)}finally{n===yt&&D(gt,!1)}}async function Rs(e,t){let n=_(X);if(!n||_(Z))throw Error(`Pins are available in channels only`);t?await W(`/api/channels/${n}/pins/${e.id}`,{method:`DELETE`}):await W(`/api/channels/${n}/pins`,{method:`POST`,body:JSON.stringify({message_id:e.id})}),await Ls(n,``)}async function zs(){if(_(lt)){D(lt,!1);return}if(!_(X)||_(Z))return;let e=_(Q)!==null,t=_(qt),n=$();if(Jo(),D(Q,null),D(it,null),D(ct,null),D(qe,[]),(e||t)&&_(Y)&&n){pt=!0,await oi(_(Y),n);return}D(lt,!0),Ls()}async function Bs(e){D(lt,!1),await No(e.thread_root_id,e.parent_message_id?void 0:e),_(Y)&&_(Q)?.route_id&&window.location.pathname!==ti(_(Y),_(Q).id)&&await oi(_(Y),_(Q).id)}function Vs(e){if(As(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||_(Ot))return;if(Ro())Hs();else if(_(Yn)){e.preventDefault(),Us();return}else if(_(kt)){e.preventDefault(),Fs();return}else if(_(qt)){e.preventDefault(),Fs();return}else if(_(xe)){e.preventDefault(),Jo();return}else if(_(Qn)){e.preventDefault(),Bo();return}else{e.preventDefault(),mo();return}}if(_(Yn)&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.isComposing){let t=document.activeElement;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement)&&!(t instanceof HTMLSelectElement)&&!(t instanceof HTMLElement&&t.isContentEditable)){e.preventDefault();return}}It(e,{authRequired:_(pn),isModalOpen:()=>Ro()||_(Yn),messageInput:_(er),replyInput:_(tr),target:zo})}}function Hs(){_(Dr)&&_(Er).has(_(Dr).id)||_(tn)||(D(Dr,null),D(Or,``),D(Ot,null),D(Qt,!1),D(en,!1),D(nn,``),D(rn,!1),D(an,!1))}function Us(){D(Yn,!1)}function Ws(){if(_(Xn)){D(Yn,!_(Yn));return}D(Jn,!_(Jn))}v(()=>(_(ze),_(Y)),()=>{D(i,_(ze).find(e=>e.id===_(Y)))}),v(()=>_(i),()=>{D(o,_(i)?.role||``)}),v(()=>_(o),()=>{D(p,_(o)===`owner`)}),v(()=>(_(ct),_(bt)),()=>{D(m,_(ct)?_(bt).find(e=>e.user.id===_(ct)?.id):void 0)}),v(()=>(_(K),_(X)),()=>{D(T,_(K).find(e=>e.id===_(X)))}),v(()=>(_(T),_(o)),()=>{D(E,!!_(T)&&(_(o)===`owner`||_(o)===`moderator`))}),v(()=>(_(Ve),_(X)),()=>{D(k,Mr(_(Ve),_(X)))}),v(()=>(_(k),_(Qe)),()=>{D(A,_(k).find(e=>e.id===_(Qe)))}),v(()=>(_(X),_(Z)),()=>{Pi(_(X),_(Z))}),v(()=>(_(q),_(Z)),()=>{D(j,_(q).find(e=>e.id===_(Z)))}),v(()=>_(j),()=>{D(P,_(j)?.can_send??!0)}),v(()=>(_(Z),_(X)),()=>{D(Wn,_(Z)||_(X)||``)}),v(()=>_(Wn),()=>{kr(_(Wn))}),v(()=>_(Wn),()=>{Ai(_(Wn))}),v(()=>(_(X),_(Ct),_(j)),()=>{D(F,_(X)?_(Ct):_(j)?_(Ct).filter(e=>_(j)?.members?.some(t=>t.id===e.bot.id)):[])}),v(()=>(_(Z),_(q),_(X),_(K)),()=>{D(te,_(Z)?_(q).find(e=>e.id===_(Z))||{}:_(X)&&_(K).find(e=>e.id===_(X))||{})}),v(()=>(_(Wn),_(te)),()=>{D(L,da(_(Wn),_(te)))}),v(()=>(_(fn),_(K),_(q)),()=>{D(oe,_(fn)===`ready`?_(K).reduce((e,t)=>e+(t.unread_count||0),0)+_(q).reduce((e,t)=>e+(t.unread_count||0),0):0)}),v(()=>_(oe),()=>{dt?.setUnreadCount(_(oe))}),v(()=>_(lr),()=>{dt&&_(lr)&&typeof window<`u`&&dt.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),v(()=>(_(L),_(te)),()=>{D(ce,_(L)>0&&_(te).last_read_seq||0)}),v(()=>(_(L),_(Wn),_(ce),_(Cn)),()=>{D(U,_(L)>0&&no(_(Wn),_(ce),_(Cn)))}),v(()=>(_(L),_(Wn),_(ce),_(Cn)),()=>{D(ue,_(L)>0?ro(_(Wn),_(ce),_(Cn)):``)}),v(()=>(_(J),_(cn),_(ln),_(sr)),()=>{D(ge,Et(_(J),{hideCommentary:_(cn),hideToolCalls:_(ln)},_(sr)))}),v(()=>_(ar),()=>{D(ve,_(ar).some(e=>e.lines.some(e=>!e.finalized)))}),v(()=>_(mt),()=>{D(vt,new Set(_(mt).map(e=>e.id)))}),v(()=>(_(ar),_(Ct)),()=>{D(ye,Fa(_(ar),_(Ct),bs))}),v(()=>(_(kt),_(jt),_(Wn)),()=>{_(kt)&&_(jt)&&_(jt)!==_(Wn)&&(D(kt,null),D(jt,``),D(Mt,null))}),v(()=>(_(lt),_(Q),_(ct),_(kt)),()=>{D(be,_(lt)||_(Q)!==null||_(ct)!==null||_(kt)!==null)}),v(()=>(_(Kt),_(qt)),()=>{D(xe,_(Kt)!==null&&!_(qt))}),v(()=>(_(Xn),_(kt),_(Pt)),()=>{ks(_(Xn)&&_(kt)!==null,_(Pt))}),v(()=>(_(J),_(q),_(G)),()=>{D(Se,Be(_(J),_(q),_(G)?.id||``))}),v(()=>(_(G),_(Se),_(xt),_(j)),()=>{D(Tt,Ye(_(G),_(Se),_(xt),_(j)))}),v(()=>(_(G),_(Z),_(X),_(Ue)),()=>{D(Dt,_(G)?.id&&(_(Z)||_(X)&&_(Ue)!==null&&_(Ue)!==`muted`)?_(G).id:``)}),v(()=>(_($n),_(Qn),_(J)),()=>{_($n)===`channel`&&_(Qn)&&!_(J).some(e=>e.id===_(Qn)?.id)&&Bo()}),v(()=>(_($n),_(Qn),_(J)),()=>{_($n)===`dm`&&_(Qn)&&!_(J).some(e=>e.id===_(Qn)?.id)&&Bo()}),v(()=>(_($n),_(Qn),_(Q),_(qe)),()=>{_($n)===`thread`&&_(Qn)&&_(Q)&&_(Qn).id!==_(Q).id&&!_(qe).some(e=>e.id===_(Qn)?.id)&&Bo()}),v(()=>(_(fn),_(G),h(je()),h(Me()),_(lr)),()=>{_(fn)===`ready`&&_(G)&&ei(je(),Me())!==_(lr)&&_i(je(),Me())}),v(()=>(_(Zt),_(on)),()=>{D(Ce,_(Zt)?ht.filter(e=>{let t=_(on).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),y(),re();var Gs=a();r(`1oa2eo8`,e=>{var t=Ha();u(e,t)}),g(`keydown`,I,Vs,!0),g(`pointerdown`,I,function(...e){At?.apply(this,e)},!0);var Ks=M(Gs),qs=e=>{var t=Ga(),r=M(t),i=e=>{var t=Ua();d(()=>R(t,`data-platform`,(h(dt),z(()=>dt.platform)))),u(e,t)};N(r,e=>{Ae&&dt&&e(i)});var a=C(r,2),o=B(a),s=C(B(o),4),l=C(s,2),f=e=>{var t=Wa();d(e=>R(t,`href`,e),[()=>(h(de),z(()=>de(`/api/auth/openclaw/start`)))]),u(e,t)};N(l,e=>{dt||e(f)});var p=C(l,2),m=B(p,!0);H(p),H(o),H(a),d(e=>{R(s,`href`,e),c(m,_(mn)||`Any GitHub account can join.`)},[()=>(h(de),z(()=>de(`/api/auth/github/start`)))]),n(`click`,s,Pr),u(e,t)},Js=e=>{var t=eo(),r=M(t);let a;var s=B(r),g=e=>{{let t=O(()=>_(T)?_(Ue):null),n=O(()=>(_(j),h(Le),_(G),_(T),h(rt),z(()=>_(j)?`@${Le(_(j),_(G)?.id)}`:_(T)?`#${rt(_(T))}`:void 0))),r=O(()=>(_(j),_(T),z(()=>_(j)?void 0:_(T)?.external_url))),a=O(()=>(_(T),z(()=>!!_(T)))),o=O(()=>(_(i),z(()=>_(i)?.name)));ya(e,{get channelNotifPreference(){return _(t)},get channelNotifSaving(){return _(Ge)},get pinnedOpen(){return _(lt)},get channelTitle(){return _(n)},get externalURL(){return _(r)},get pinsAvailable(){return _(a)},get channelSettingsAvailable(){return _(E)},get connected(){return _(hn)},get platform(){return h(dt),z(()=>dt.platform)},get searchQuery(){return _(Wt)},get sidebarCollapsed(){return _(Jn)},get mobileNavOpen(){return _(Yn)},get mobileNavigation(){return _(Xn)},get workspaceName(){return _(o)},onOpenChannelSettings:Gr,onOpenWorkspaceSettings:Wr,onResetSearch:Jo,onSearch:()=>void Go(),onSearchQuery:e=>D(Wt,e),onToggleSidebar:Ws,onToggleChannelNotifications:()=>void Fi(),onPinnedItems:zs})}};N(s,e=>{Ae&&dt&&e(g)});var v=C(s,2),y=B(v),x=e=>{var t=f(`×`);u(e,t)},S=e=>{var t=Ka();u(e,t)};N(y,e=>{_(Yn)?e(x):e(S,-1)}),H(v);var ee=C(v,2),te=e=>{var t=qa();n(`click`,t,Us),u(e,t)};N(ee,e=>{_(Yn)&&e(te)});var ne=C(ee,2);{let e=O(()=>Ae?`/app`:`/`);Zn(ne,{get workspaces(){return _(ze)},get homeHref(){return _(e)},get selectedWorkspaceID(){return _(Y)},get workspaceName(){return _(Bt)},get showWorkspaceCreate(){return _(qn)},hrefForWorkspace:e=>ti(e),onSelectWorkspace:e=>void Si(e),onToggleWorkspaceCreate:()=>D(qn,!_(qn)),onWorkspaceName:e=>D(Bt,e),onCreateWorkspace:()=>void xi()})}var I=C(ne,2);{let e=O(()=>(_(i),z(()=>_(i)?.name))),t=O(()=>(_(i),h(fe),z(()=>_(i)?.icon_url?fe(_(i).icon_url):``))),n=O(()=>!Ae),r=O(()=>(_(wr),z(()=>_(wr)?.title)));Cr(I,{get workspaceID(){return _(Y)},get workspaceName(){return _(e)},get workspaceIconURL(){return _(t)},get connected(){return _(hn)},get sidebarCollapsed(){return _(Jn)},get showHeader(){return _(n)},get channels(){return _(K)},get directConversations(){return _(q)},get recentPeople(){return _(Se)},get currentUser(){return _(G)},get selectedChannelID(){return _(X)},get selectedDirectID(){return _(Z)},get selectedProfile(){return _(ct)},onToggleCollapse:Ws,hrefForChannel:e=>ti(_(Y),e),hrefForDirect:e=>ti(_(Y),e),onSelectChannel:e=>void Ni(e),onCreateChannel:()=>D(rn,!0),onSelectDirect:e=>void is(e),onCreateDirect:()=>D(an,!0),onHideDirect:e=>void ls(e),get hiddenDirectTitle(){return _(r)},onUndoHideDirect:()=>void cs(),onOpenProfile:Cs,onOpenSettings:Ur,onOpenWorkspaceSettings:Wr})}var re=C(I,2),ie=B(re),V=e=>{{let t=O(()=>(_(i),z(()=>_(i)?.name))),n=O(()=>(_(G),z(()=>_(G)?.id))),r=O(()=>_(Q)!==null);Ma(e,{get selectedDirect(){return _(j)},get selectedChannel(){return _(T)},get workspaceName(){return _(t)},get currentUserID(){return _(n)},get searchQuery(){return _(Wt)},get threadOpen(){return _(r)},get pinnedOpen(){return _(lt)},get channelNotifPreference(){return _(Ue)},get channelNotifSaving(){return _(Ge)},get channelSettingsAvailable(){return _(E)},onSearchQuery:e=>D(Wt,e),onSearch:()=>void Go(),onResetSearch:Jo,onToggleThread:Is,onToggleChannelNotifications:()=>void Fi(),onPinnedItems:zs,onOpenChannelSettings:Gr})}};N(ie,e=>{Ae||e(V)});var oe=C(ie,2),le=e=>{var t=Ja(),r=B(t),i=C(B(r)),a=B(i,!0);H(i),H(r);var o=C(r,2);H(t),d(()=>c(a,(_(A),z(()=>_(A).name)))),n(`click`,o,()=>void Hi(``)),u(e,t)};N(oe,e=>{_(A)&&e(le)});var de=C(oe,2);{let e=O(()=>_(Tn)!==`idle`),t=O(()=>(_(Q),z(()=>_(Q)?.id))),n=O(()=>(_(G),z(()=>_(G)?.id))),r=O(()=>(_(j),_(P),z(()=>!!(_(j)&&!_(P))))),i=O(()=>_(p)&&!_(Z));at(de,{get channelID(){return _(X)},get pinnedMessageIDs(){return _(vt)},onTogglePin:Rs,onCopyLink:ni,get messages(){return _(ge)},get selectedDirect(){return _(j)},get selectedChannel(){return _(T)},get mentionPeople(){return _(Tt)},get mentionAttentionUserID(){return _(Dt)},get restoreState(){return _(Un)},get viewKey(){return _(Hn)},get loading(){return _(Kn)},get unreadCount(){return _(L)},get unreadBoundarySeq(){return _(ce)},get unreadBoundaryLoaded(){return _(U)},get unreadSince(){return _(ue)},get hasOlder(){return _(Mn)},get hasNewer(){return _(Fn)},get loadingOlder(){return _(In)},get loadingNewer(){return _(Ln)},get prepending(){return _(e)},get selectedThreadID(){return _(t)},get currentUserID(){return _(n)},get reactionController(){return Ne},get reactionsDisabled(){return _(r)},get canDeleteAnyMessage(){return _(i)},get deletingMessageIDs(){return _(Er)},onListRef:e=>D(xn,e),onActivateMessageComposer:Ti,onInlineImagePointerUp:js,onOpenProfile:Cs,onReply:Lo,onOpenThread:Mo,onJumpToQuote:e=>void Vo(e),onOpenImage:Es,onOpenArtifact:Ds,onLoadOlder:ta,onLoadNewer:e=>na(e===`wheel`),onJumpToUnread:()=>void Ho(),onHistorySettled:ca,onReachedBottom:ga,onMarkRead:e=>{ga({all:!0,seq:e})},onRetry:Eo,onDiscard:Do,onDeleteMessage:Ao,get editController(){return Ie},get editScope(){return _(Wn)},onMessageEdited:ko,get topics(){return _(Ve)},onSelectTopic:e=>void Hi(e)})}var W=C(de,2);Rn(W,{get turns(){return _(ar)}});var pe=C(W,2);{let e=O(()=>(_(G),z(()=>_(G)?.id)));Nn(pe,{get entries(){return _(rr)},get currentUserID(){return _(e)}})}var me=C(pe,2),he=B(me);{let e=O(()=>_(ve)&&_(Q)===null);ot(he,{get active(){return _(e)},get agentNames(){return _(ye)}})}var _e=C(he,2),we=e=>{var t=Ya();let r;var i=B(t),a=B(i,!0);H(i);var o=C(i,2),s=B(o,!0);H(o);var l=C(o,2);H(t),d(()=>{r=w(t,1,`composer-notice`,null,r,{"composer-notice--error":_(wt).kind===`error`}),c(a,(_(wt),z(()=>_(wt).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(_(wt),z(()=>_(wt).text)))}),n(`click`,l,()=>D(wt,null)),u(e,t)};N(_e,e=>{_(wt)&&e(we)});var Te=C(_e,2),Ee=e=>{var t=Za(),r=C(B(t),2),i=B(r);i.value=i.__value=``;var a=C(i);l(a,1,()=>_(k),e=>e.id,(e,t)=>{var n=Xa(),r=B(n,!0);H(n);var i={};d(()=>{c(r,(_(t),z(()=>_(t).name))),i!==(i=(_(t),z(()=>_(t).id)))&&(n.value=(n.__value=(_(t),z(()=>_(t).id)))??``)}),u(e,n)}),H(r);var o;b(r),H(t),d(()=>{o!==(o=_(Ze))&&(r.value=(r.__value=_(Ze))??``,se(r,_(Ze)))}),n(`change`,r,e=>D(Ze,e.currentTarget.value)),u(e,t)};N(Te,e=>{_(X),_(k),z(()=>_(X)&&_(k).length>0)&&e(Ee)});var De=C(Te,2);{let e=O(()=>(_(j),_(P),h(Le),_(G),_(T),h(rt),z(()=>_(j)&&!_(P)?`No active recipient`:_(j)?`Message ${Le(_(j),_(G)?.id)}`:_(T)?`Message #${rt(_(T))}`:`Pick a channel to start`))),t=O(()=>!!_(j)&&!_(P)),n=O(()=>_(Qn)&&_($n)===(_(Z)?`dm`:`channel`)?_(Qn):null),r=O(()=>_(X)?_(St):[]);Ke(De,{get value(){return _(Rt)},get placeholder(){return _(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return _(t)},get pendingUpload(){return _(Xt)},get replyTarget(){return _(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return _(Zt)},get gifQuery(){return _(on)},get filteredGifs(){return _(Ce)},get slashCommands(){return _(r)},get botCommands(){return _(F)},get mentionPeople(){return _(Tt)},onValue:e=>{let t=_(Rt);D(Rt,e),e.trim()&&e!==t?Ss():e.trim()||Gt()},onSubmit:()=>void vo(),onKeydown:ws,onFocus:Ti,onInputRef:e=>D(er,e),onUploadFile:es,onRemoveUpload:()=>D(Xt,null),onClearReply:Bo,onApplyMarkdownWrap:Ns,onAppendToComposer:Ms,onToggleGif:()=>D(Zt,!_(Zt)),onGifQuery:e=>D(on,e),onPickGif:Ps})}H(me),H(re);var Oe=C(re,2),ke=e=>{var t=Qa();Dn(B(t),{get upload(){return _(kt)},onClose:Os}),H(t),ae(t,e=>D(Pt,e),()=>_(Pt)),d(()=>{t.inert=_(Yn),R(t,`role`,_(Xn)?`dialog`:`complementary`),R(t,`aria-modal`,_(Xn)?`true`:void 0)}),u(e,t)};N(Oe,e=>{_(kt)&&e(ke)});var je=C(Oe,2),Me=e=>{{let t=O(()=>_(kt)!==null),n=O(()=>_(Yn)||_(kt)!==null);li(e,{get session(){return _(Kt)},get covered(){return _(t)},get inert(){return _(n)},contextFor:Yo,onClose:Jo,onOpenResult:e=>void Xo(e),onLoadMore:()=>void qo()})}},Pe=e=>{var t=$a();let n;var r=B(t),a=e=>{Kr(e,{get messages(){return _(mt)},get loading(){return _(gt)},get error(){return _(_t)},get topics(){return _(Ve)},get mentionPeople(){return _(Tt)},get mentionAttentionUserID(){return _(Dt)},onClose:Fs,onOpenThread:e=>void Bs(e),onOpenImage:Es,onOpenArtifact:Ds,onUnpin:e=>Rs(e,!0),onSelectTopic:e=>{D(lt,!1),Hi(e)}})},s=e=>{{let t=O(()=>_(Qn)&&_($n)===`thread`?_(Qn):null),n=O(()=>(_(j),_(P),z(()=>!!(_(j)&&!_(P))))),r=O(()=>_(qt)&&_(Kt)?()=>void Zo():void 0),i=O(()=>(_(G),z(()=>_(G)?.id))),a=O(()=>(_(j),_(P),z(()=>!!(_(j)&&!_(P))))),o=O(()=>_(p)&&!_(Z));st(e,{get root(){return _(Q)},get replies(){return _(qe)},get threadState(){return _(it)},get replyBody(){return _(zt)},get replyTarget(){return _(t)},get mentionPeople(){return _(Tt)},get mentionAttentionUserID(){return _(Dt)},get agentResponding(){return _(ve)},get respondingAgentNames(){return _(ye)},get replyDisabled(){return _(n)},onClose:Fs,get onBack(){return _(r)},onReplyBody:e=>D(zt,e),onSubmitReply:()=>void Io(),onReplyKeydown:Ts,onReplyFocus:()=>D(nr,`thread`),onReplyInputRef:e=>D(tr,e),get currentUserID(){return _(i)},get reactionController(){return Ne},get reactionsDisabled(){return _(a)},onSetReplyTarget:Lo,onClearReply:Bo,get canDeleteAnyMessage(){return _(o)},get deletingMessageIDs(){return _(Er)},onDeleteMessage:Ao,get channelID(){return _(X)},get pinnedMessageIDs(){return _(vt)},onTogglePin:Rs,onCopyLink:ni,get editController(){return Ie},get editScope(){return _(Wn)},onMessageEdited:ko,onActivateThreadComposer:()=>D(nr,`thread`),onInlineImagePointerUp:js,onJumpToQuote:e=>void Vo(e),onOpenImage:Es,onOpenArtifact:Ds})}},c=e=>{{let t=O(()=>(_(i),z(()=>_(i)?.name)));Ir(e,{get profile(){return _(ct)},get currentUser(){return _(G)},get workspaceName(){return _(t)},get currentUserRole(){return _(o)},get moderation(){return _(m)},onClose:Fs,onEdit:Ur,onMessage:e=>void as(e),onApprove:e=>void ji(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void ji(e,{timeout_minutes:60}),onBlock:e=>void ji(e,{blocked:!0}),onUnblock:e=>void ji(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>D(fn,`status messages are coming soon`)})}},l=e=>{sa(e,{})};N(r,e=>{_(lt)?e(a):_(Q)?e(s,1):_(ct)?e(c,2):e(l,-1)}),H(t),d(()=>{n=w(t,1,`thread`,null,n,{open:_(be),covered:_(kt)!==null}),t.inert=_(Yn)||_(kt)!==null,R(t,`aria-hidden`,_(kt)?`true`:void 0),R(t,`aria-label`,_(lt)?`Pinned messages pane`:_(ct)?`Profile pane`:`Thread pane`)}),u(e,t)};N(je,e=>{_(xe)&&_(Kt)?e(Me):e(Pe,-1)}),H(r),ae(r,e=>D(Ft,e),()=>_(Ft));var Fe=C(r,2),Re=e=>{{let t=O(()=>dt!=null);aa(e,{get user(){return _(G)},get workspaces(){return _(ze)},get initialSection(){return _($t)},get hideCommentary(){return _(cn)},get hideToolCalls(){return _(ln)},get userAlign(){return _(un)},get otherAlign(){return _(dn)},get isDesktop(){return _(t)},onUserUpdated:Jr,onHideCommentary:Br,onHideToolCalls:Vr,onUserAlign:Rr,onOtherAlign:zr,onBrowserNotificationsChanged:e=>D(sn,e),onClose:Hs})}};N(Fe,e=>{_(Qt)&&_(G)&&e(Re)});var Be=C(Fe,2),He=e=>{hi(e,{get channel(){return _(T)},get saving(){return _(tn)},get error(){return _(nn)},onClose:Hs,onArchivedChange:e=>void qr(e)})};N(Be,e=>{_(en)&&_(T)&&e(He)});var We=C(Be,2),J=e=>{Vn(e,{get channelName(){return _(Vt)},status:``,onChannelName:e=>D(Vt,e),onClose:Hs,onCreate:()=>void Mi()})};N(We,e=>{_(rn)&&e(J)});var Ye=C(We,2),Xe=e=>{{let t=O(()=>(_(G),z(()=>_(G)?.id)));Gn(e,{get people(){return _(Se)},get currentUserID(){return _(t)},get memberID(){return _(Ht)},onMemberID:e=>D(Ht,e),onClose:Hs,onStart:e=>void rs(e)})}};N(Ye,e=>{_(an)&&e(Xe)});var Qe=C(Ye,2),$e=e=>{{let t=O(()=>(_(Er),_(Dr),z(()=>_(Er).has(_(Dr).id))));An(e,{get message(){return _(Dr)},get deleting(){return _(t)},get error(){return _(Or)},onClose:Hs,onConfirm:()=>void jo()})}};N(Qe,e=>{_(Dr)&&e($e)});var et=C(Qe,2),tt=e=>{Je(e,{get url(){return _(Ot),z(()=>_(Ot).url)},get title(){return _(Ot),z(()=>_(Ot).title)},onClose:Hs})};N(et,e=>{_(Ot)&&e(tt)}),d(()=>{a=w(r,1,`shell`,null,a,{"desktop-shell":Ae,"nav-open":_(Yn),"sidebar-collapsed":_(Jn),"thread-open":_(be)&&!_(xe),"search-open":_(xe),"artifact-open":_(kt)!==null}),R(r,`data-connected`,_(hn)),R(r,`data-app-ready`,_(hn)&&_(fn)===`ready`),R(v,`aria-expanded`,_(Yn)),re.inert=_(Yn)}),n(`click`,v,()=>D(Yn,!_(Yn))),u(e,t)};N(Ks,e=>{_(pn)?e(qs):e(Js,-1)}),u(e,Gs),ee()}U([`click`,`change`]);export{Va as n,to as t};
\ No newline at end of file
diff --git a/apps/api/internal/webassets/dist/_app/immutable/entry/app.YP60KM03.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.Bm7pRLHf.js
similarity index 85%
rename from apps/api/internal/webassets/dist/_app/immutable/entry/app.YP60KM03.js
rename to apps/api/internal/webassets/dist/_app/immutable/entry/app.Bm7pRLHf.js
index dd23709e6..c02e6b34a 100644
--- a/apps/api/internal/webassets/dist/_app/immutable/entry/app.YP60KM03.js
+++ b/apps/api/internal/webassets/dist/_app/immutable/entry/app.Bm7pRLHf.js
@@ -1,2 +1,2 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BvTkNKKJ.js","../chunks/DK3Fl9T5.js","../chunks/uCPLfb5l.js","../chunks/Cid4Tjuh.js","../chunks/Dt-HX3Vu.js","../chunks/xihTtKlq.js","../chunks/D_03Opfq.js","../chunks/YwXLQysC.js","../chunks/2Ij-r2c7.js","../assets/0.BPKxG8WH.css","../nodes/1.eRJAyoGR.js","../chunks/Bw4aMcZr.js","../nodes/2.hL2ORrat.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.IJX1qDGG.js","../chunks/HclGiUj8.js","../chunks/BdPWQrN9.js","../nodes/4.DbjehSYy.js","../chunks/ICuO3Jye.js","../chunks/dUztObX2.js","../assets/QuoteBlock.DGJuMNIX.css","../chunks/DlGnnCJo.js","../chunks/D8ODVW2D.js","../chunks/DAgc_K8U.js","../chunks/CSGZ0Ari.js","../assets/ThreadPanel.DFXp9CyT.css","../chunks/DhPJt53a.js","../chunks/CDrSvh7y.js","../assets/ChatApp.D0d8bGTy.css","../nodes/5.M_hYDheF.js","../nodes/6.D1H8DGKr.js","../nodes/7.Cc-p3ifK.js","../chunks/ZNN3wTZr.js","../nodes/8.CBnMfTbg.js","../nodes/9.CArNqBL1.js","../nodes/10.CQAk5lm0.js","../nodes/11.C-h6aeef.js","../nodes/12.BlH9ErfY.js","../assets/12.hzXFZBW8.css","../nodes/13.CXufI_Wt.js","../assets/13.ByCz7Du1.css"])))=>i.map(i=>d[i]);
-import{$ as e,F as t,I as n,K as r,N as i,P as a,Q as o,R as s,T as c,W as l,_t as u,a as d,at as f,ct as p,et as m,ft as h,gt as g,i as _,it as v,j as y,lt as b,r as x,rt as S,s as C,xt as w}from"../chunks/uCPLfb5l.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=n(``),O=n(` `,1);function k(n,_){u(_,!0);let T=d(_,`components`,23,()=>[]),E=d(_,`data_0`,3,null),k=d(_,`data_1`,3,null),A=d(_,`data_2`,3,null);m(()=>_.stores.page.set(_.page)),e(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),A(),_.stores.page.notify()});let j=b(!1),M=b(!1),N=b(null);x(()=>{let e=_.stores.page.subscribe(()=>{l(j)&&(p(M,!0),r().then(()=>{p(N,document.title||`untitled page`,!0)}))});return p(j,!0),e});let P=h(()=>_.constructors[2]);var F=O(),I=v(F),L=e=>{let n=h(()=>_.constructors[0]);var r=t(),i=v(r);c(i,()=>l(n),(e,n)=>{C(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r),o=e=>{let n=h(()=>_.constructors[1]);var r=t(),i=v(r);c(i,()=>l(n),(e,n)=>{C(n(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r);c(i,()=>l(P),(e,t)=>{C(t(e,{get data(){return A()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),a(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)},s=e=>{let n=h(()=>_.constructors[1]);var r=t(),i=v(r);c(i,()=>l(n),(e,t)=>{C(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)};y(i,e=>{_.constructors[2]?e(o):e(s,-1)}),a(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)},R=e=>{let n=h(()=>_.constructors[0]);var r=t(),i=v(r);c(i,()=>l(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)};y(I,e=>{_.constructors[1]?e(L):e(R,-1)});var z=f(I,2),B=e=>{var t=D(),n=S(t),r=e=>{var t=s();o(()=>i(t,l(N))),a(e,t)};y(n,e=>{l(M)&&e(r)}),w(t),a(e,t)};y(z,e=>{l(j)&&e(B)}),a(n,F),g()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.BvTkNKKJ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>T(()=>import(`../nodes/1.eRJAyoGR.js`),__vite__mapDeps([10,2,1,5,11,3,4]),import.meta.url),()=>T(()=>import(`../nodes/2.hL2ORrat.js`),__vite__mapDeps([12,1,2,3,4,5,6,8,11,13,14]),import.meta.url),()=>T(()=>import(`../nodes/3.IJX1qDGG.js`),__vite__mapDeps([15,1,2,16,5,17]),import.meta.url),()=>T(()=>import(`../nodes/4.DbjehSYy.js`),__vite__mapDeps([18,2,1,5,17,19,3,4,16,6,8,7,13,14,20,21,22,23,24,25,26,27,28,29]),import.meta.url),()=>T(()=>import(`../nodes/5.M_hYDheF.js`),__vite__mapDeps([30,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28,29]),import.meta.url),()=>T(()=>import(`../nodes/6.D1H8DGKr.js`),__vite__mapDeps([31,1,4,13]),import.meta.url),()=>T(()=>import(`../nodes/7.Cc-p3ifK.js`),__vite__mapDeps([32,1,2,5,8,7,14,27,33]),import.meta.url),()=>T(()=>import(`../nodes/8.CBnMfTbg.js`),__vite__mapDeps([34,1,2,5,8,7,14,22,24,27,28,33]),import.meta.url),()=>T(()=>import(`../nodes/9.CArNqBL1.js`),__vite__mapDeps([35,1,2,5,24,28,8]),import.meta.url),()=>T(()=>import(`../nodes/10.CQAk5lm0.js`),__vite__mapDeps([36,1,2,3,4,5,6,8,14,28]),import.meta.url),()=>T(()=>import(`../nodes/11.C-h6aeef.js`),__vite__mapDeps([37,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28,29]),import.meta.url),()=>T(()=>import(`../nodes/12.BlH9ErfY.js`),__vite__mapDeps([38,1,2,5,8,7,20,21,22,23,24,28,39]),import.meta.url),()=>T(()=>import(`../nodes/13.CXufI_Wt.js`),__vite__mapDeps([40,1,2,5,8,7,20,21,22,25,26,28,41]),import.meta.url)],M=[],N={"/":[3],"/app":[4],"/app/[workspaceID]":[5],"/app/[workspaceID]/(settings)/settings":[6,[2]],"/app/[workspaceID]/(settings)/settings/bots":[7,[2]],"/app/[workspaceID]/(settings)/settings/integrations":[8,[2]],"/app/[workspaceID]/(settings)/settings/members":[9,[2]],"/app/[workspaceID]/(settings)/settings/overview":[10,[2]],"/app/[workspaceID]/[targetID]":[11],"/embed/channel/[workspaceID]/[channelID]":[12],"/embed/thread/[workspaceID]/[messageID]":[13]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
\ No newline at end of file
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.YhQK-6PD.js","../chunks/DK3Fl9T5.js","../chunks/uCPLfb5l.js","../chunks/Cid4Tjuh.js","../chunks/Dt-HX3Vu.js","../chunks/xihTtKlq.js","../chunks/D_03Opfq.js","../chunks/YwXLQysC.js","../chunks/2Ij-r2c7.js","../assets/0.C0ts6lYR.css","../nodes/1.eRJAyoGR.js","../chunks/Bw4aMcZr.js","../nodes/2.hL2ORrat.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.DyYnkssh.js","../chunks/HclGiUj8.js","../chunks/BdPWQrN9.js","../nodes/4.CND-DbAl.js","../chunks/Du-A4cpj.js","../chunks/dUztObX2.js","../assets/QuoteBlock.DGJuMNIX.css","../chunks/DlGnnCJo.js","../chunks/D8ODVW2D.js","../chunks/DAgc_K8U.js","../chunks/CSGZ0Ari.js","../assets/ThreadPanel.DFXp9CyT.css","../chunks/DhPJt53a.js","../chunks/CDrSvh7y.js","../assets/ChatApp.D0d8bGTy.css","../nodes/5.ay8-jKHZ.js","../nodes/6.D1H8DGKr.js","../nodes/7.Cc-p3ifK.js","../chunks/ZNN3wTZr.js","../nodes/8.CBnMfTbg.js","../nodes/9.CArNqBL1.js","../nodes/10.CQAk5lm0.js","../nodes/11.GnuA6s9k.js","../nodes/12.BlH9ErfY.js","../assets/12.hzXFZBW8.css","../nodes/13.CXufI_Wt.js","../assets/13.ByCz7Du1.css"])))=>i.map(i=>d[i]);
+import{$ as e,F as t,I as n,K as r,N as i,P as a,Q as o,R as s,T as c,W as l,_t as u,a as d,at as f,ct as p,et as m,ft as h,gt as g,i as _,it as v,j as y,lt as b,r as x,rt as S,s as C,xt as w}from"../chunks/uCPLfb5l.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=n(``),O=n(` `,1);function k(n,_){u(_,!0);let T=d(_,`components`,23,()=>[]),E=d(_,`data_0`,3,null),k=d(_,`data_1`,3,null),A=d(_,`data_2`,3,null);m(()=>_.stores.page.set(_.page)),e(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),A(),_.stores.page.notify()});let j=b(!1),M=b(!1),N=b(null);x(()=>{let e=_.stores.page.subscribe(()=>{l(j)&&(p(M,!0),r().then(()=>{p(N,document.title||`untitled page`,!0)}))});return p(j,!0),e});let P=h(()=>_.constructors[2]);var F=O(),I=v(F),L=e=>{let n=h(()=>_.constructors[0]);var r=t(),i=v(r);c(i,()=>l(n),(e,n)=>{C(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r),o=e=>{let n=h(()=>_.constructors[1]);var r=t(),i=v(r);c(i,()=>l(n),(e,n)=>{C(n(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r);c(i,()=>l(P),(e,t)=>{C(t(e,{get data(){return A()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),a(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)},s=e=>{let n=h(()=>_.constructors[1]);var r=t(),i=v(r);c(i,()=>l(n),(e,t)=>{C(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)};y(i,e=>{_.constructors[2]?e(o):e(s,-1)}),a(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)},R=e=>{let n=h(()=>_.constructors[0]);var r=t(),i=v(r);c(i,()=>l(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)};y(I,e=>{_.constructors[1]?e(L):e(R,-1)});var z=f(I,2),B=e=>{var t=D(),n=S(t),r=e=>{var t=s();o(()=>i(t,l(N))),a(e,t)};y(n,e=>{l(M)&&e(r)}),w(t),a(e,t)};y(z,e=>{l(j)&&e(B)}),a(n,F),g()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.YhQK-6PD.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>T(()=>import(`../nodes/1.eRJAyoGR.js`),__vite__mapDeps([10,2,1,5,11,3,4]),import.meta.url),()=>T(()=>import(`../nodes/2.hL2ORrat.js`),__vite__mapDeps([12,1,2,3,4,5,6,8,11,13,14]),import.meta.url),()=>T(()=>import(`../nodes/3.DyYnkssh.js`),__vite__mapDeps([15,1,2,16,5,17]),import.meta.url),()=>T(()=>import(`../nodes/4.CND-DbAl.js`),__vite__mapDeps([18,2,1,5,17,19,3,4,16,6,8,7,13,14,20,21,22,23,24,25,26,27,28,29]),import.meta.url),()=>T(()=>import(`../nodes/5.ay8-jKHZ.js`),__vite__mapDeps([30,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28,29]),import.meta.url),()=>T(()=>import(`../nodes/6.D1H8DGKr.js`),__vite__mapDeps([31,1,4,13]),import.meta.url),()=>T(()=>import(`../nodes/7.Cc-p3ifK.js`),__vite__mapDeps([32,1,2,5,8,7,14,27,33]),import.meta.url),()=>T(()=>import(`../nodes/8.CBnMfTbg.js`),__vite__mapDeps([34,1,2,5,8,7,14,22,24,27,28,33]),import.meta.url),()=>T(()=>import(`../nodes/9.CArNqBL1.js`),__vite__mapDeps([35,1,2,5,24,28,8]),import.meta.url),()=>T(()=>import(`../nodes/10.CQAk5lm0.js`),__vite__mapDeps([36,1,2,3,4,5,6,8,14,28]),import.meta.url),()=>T(()=>import(`../nodes/11.GnuA6s9k.js`),__vite__mapDeps([37,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28,29]),import.meta.url),()=>T(()=>import(`../nodes/12.BlH9ErfY.js`),__vite__mapDeps([38,1,2,5,8,7,20,21,22,23,24,28,39]),import.meta.url),()=>T(()=>import(`../nodes/13.CXufI_Wt.js`),__vite__mapDeps([40,1,2,5,8,7,20,21,22,25,26,28,41]),import.meta.url)],M=[],N={"/":[3],"/app":[4],"/app/[workspaceID]":[5],"/app/[workspaceID]/(settings)/settings":[6,[2]],"/app/[workspaceID]/(settings)/settings/bots":[7,[2]],"/app/[workspaceID]/(settings)/settings/integrations":[8,[2]],"/app/[workspaceID]/(settings)/settings/members":[9,[2]],"/app/[workspaceID]/(settings)/settings/overview":[10,[2]],"/app/[workspaceID]/[targetID]":[11],"/embed/channel/[workspaceID]/[channelID]":[12],"/embed/thread/[workspaceID]/[messageID]":[13]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
\ No newline at end of file
diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/0.BvTkNKKJ.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.YhQK-6PD.js
similarity index 100%
rename from apps/api/internal/webassets/dist/_app/immutable/nodes/0.BvTkNKKJ.js
rename to apps/api/internal/webassets/dist/_app/immutable/nodes/0.YhQK-6PD.js
diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.C-h6aeef.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.GnuA6s9k.js
similarity index 77%
rename from apps/api/internal/webassets/dist/_app/immutable/nodes/11.C-h6aeef.js
rename to apps/api/internal/webassets/dist/_app/immutable/nodes/11.GnuA6s9k.js
index beb1c4c3f..ec17b67ae 100644
--- a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.C-h6aeef.js
+++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.GnuA6s9k.js
@@ -1 +1 @@
-import{_t as e,gt as t}from"../chunks/uCPLfb5l.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/ICuO3Jye.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID},get routeTargetID(){return i.params.targetID}}),t()}export{r as component};
\ No newline at end of file
+import{_t as e,gt as t}from"../chunks/uCPLfb5l.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/Du-A4cpj.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID},get routeTargetID(){return i.params.targetID}}),t()}export{r as component};
\ No newline at end of file
diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.IJX1qDGG.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.DyYnkssh.js
similarity index 90%
rename from apps/api/internal/webassets/dist/_app/immutable/nodes/3.IJX1qDGG.js
rename to apps/api/internal/webassets/dist/_app/immutable/nodes/3.DyYnkssh.js
index 131be1fd3..f7464a7de 100644
--- a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.IJX1qDGG.js
+++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.DyYnkssh.js
@@ -1,2 +1,2 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/ICuO3Jye.js","../chunks/DK3Fl9T5.js","../chunks/uCPLfb5l.js","../chunks/Cid4Tjuh.js","../chunks/Dt-HX3Vu.js","../chunks/HclGiUj8.js","../chunks/xihTtKlq.js","../chunks/D_03Opfq.js","../chunks/2Ij-r2c7.js","../chunks/YwXLQysC.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../chunks/BdPWQrN9.js","../chunks/dUztObX2.js","../assets/QuoteBlock.DGJuMNIX.css","../chunks/DlGnnCJo.js","../chunks/D8ODVW2D.js","../chunks/DAgc_K8U.js","../chunks/CSGZ0Ari.js","../assets/ThreadPanel.DFXp9CyT.css","../chunks/DhPJt53a.js","../chunks/CDrSvh7y.js","../assets/ChatApp.D0d8bGTy.css","../chunks/haqm5EXa.js","../assets/ProductSite.4q0lYJor.css"])))=>i.map(i=>d[i]);
-import{t as e}from"../chunks/DK3Fl9T5.js";import{F as t,M as n,P as r,W as i,dt as a,it as o}from"../chunks/uCPLfb5l.js";import{t as s}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";import"../chunks/BdPWQrN9.js";var c=e({prerender:()=>!0});function l(e){let c=window.location.hostname.startsWith(`app.`)?s(()=>import(`../chunks/ICuO3Jye.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]),import.meta.url):s(()=>import(`../chunks/haqm5EXa.js`),__vite__mapDeps([23,2,1,6,12,24]),import.meta.url);var l=t(),u=o(l);n(u,()=>c,null,(e,t)=>{let n=a(()=>i(t).default);i(n)(e,{})}),r(e,l)}export{l as component,c as universal};
\ No newline at end of file
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/Du-A4cpj.js","../chunks/DK3Fl9T5.js","../chunks/uCPLfb5l.js","../chunks/Cid4Tjuh.js","../chunks/Dt-HX3Vu.js","../chunks/HclGiUj8.js","../chunks/xihTtKlq.js","../chunks/D_03Opfq.js","../chunks/2Ij-r2c7.js","../chunks/YwXLQysC.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../chunks/BdPWQrN9.js","../chunks/dUztObX2.js","../assets/QuoteBlock.DGJuMNIX.css","../chunks/DlGnnCJo.js","../chunks/D8ODVW2D.js","../chunks/DAgc_K8U.js","../chunks/CSGZ0Ari.js","../assets/ThreadPanel.DFXp9CyT.css","../chunks/DhPJt53a.js","../chunks/CDrSvh7y.js","../assets/ChatApp.D0d8bGTy.css","../chunks/haqm5EXa.js","../assets/ProductSite.4q0lYJor.css"])))=>i.map(i=>d[i]);
+import{t as e}from"../chunks/DK3Fl9T5.js";import{F as t,M as n,P as r,W as i,dt as a,it as o}from"../chunks/uCPLfb5l.js";import{t as s}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";import"../chunks/BdPWQrN9.js";var c=e({prerender:()=>!0});function l(e){let c=window.location.hostname.startsWith(`app.`)?s(()=>import(`../chunks/Du-A4cpj.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]),import.meta.url):s(()=>import(`../chunks/haqm5EXa.js`),__vite__mapDeps([23,2,1,6,12,24]),import.meta.url);var l=t(),u=o(l);n(u,()=>c,null,(e,t)=>{let n=a(()=>i(t).default);i(n)(e,{})}),r(e,l)}export{l as component,c as universal};
\ No newline at end of file
diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.DbjehSYy.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CND-DbAl.js
similarity index 63%
rename from apps/api/internal/webassets/dist/_app/immutable/nodes/4.DbjehSYy.js
rename to apps/api/internal/webassets/dist/_app/immutable/nodes/4.CND-DbAl.js
index 74ebc7e42..60cdcc914 100644
--- a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.DbjehSYy.js
+++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CND-DbAl.js
@@ -1 +1 @@
-import"../chunks/uCPLfb5l.js";import"../chunks/xihTtKlq.js";import"../chunks/BdPWQrN9.js";import{t as e}from"../chunks/ICuO3Jye.js";function t(t){e(t,{})}export{t as component};
\ No newline at end of file
+import"../chunks/uCPLfb5l.js";import"../chunks/xihTtKlq.js";import"../chunks/BdPWQrN9.js";import{t as e}from"../chunks/Du-A4cpj.js";function t(t){e(t,{})}export{t as component};
\ No newline at end of file
diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.M_hYDheF.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.ay8-jKHZ.js
similarity index 72%
rename from apps/api/internal/webassets/dist/_app/immutable/nodes/5.M_hYDheF.js
rename to apps/api/internal/webassets/dist/_app/immutable/nodes/5.ay8-jKHZ.js
index d1cfd4fd7..07c301115 100644
--- a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.M_hYDheF.js
+++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.ay8-jKHZ.js
@@ -1 +1 @@
-import{_t as e,gt as t}from"../chunks/uCPLfb5l.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/ICuO3Jye.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID}}),t()}export{r as component};
\ No newline at end of file
+import{_t as e,gt as t}from"../chunks/uCPLfb5l.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/Du-A4cpj.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID}}),t()}export{r as component};
\ No newline at end of file
diff --git a/apps/api/internal/webassets/dist/index.html b/apps/api/internal/webassets/dist/index.html
index c4d334ffc..4f5e454a4 100644
--- a/apps/api/internal/webassets/dist/index.html
+++ b/apps/api/internal/webassets/dist/index.html
@@ -103,17 +103,17 @@
-
+
-
+
-
+
-
+
@@ -128,7 +128,7 @@
Promise.all([
import("./_app/immutable/entry/start.CRNCrUAM.js"),
- import("./_app/immutable/entry/app.YP60KM03.js")
+ import("./_app/immutable/entry/app.Bm7pRLHf.js")
]).then(([kit, app]) => {
kit.start(app, element);
});
diff --git a/apps/web/src/ChatApp.svelte b/apps/web/src/ChatApp.svelte
index d4a8c20d0..e36eaa90b 100644
--- a/apps/web/src/ChatApp.svelte
+++ b/apps/web/src/ChatApp.svelte
@@ -4090,6 +4090,17 @@
Continue with GitHub
+ {#if !desktop}
+
+
+ Sign in with OpenClaw ID
+
+ {/if}
{desktopAuthStatus || "Any GitHub account can join."}
diff --git a/apps/web/src/styles/layout.css b/apps/web/src/styles/layout.css
index 9a5bb3fc3..c0687f38b 100644
--- a/apps/web/src/styles/layout.css
+++ b/apps/web/src/styles/layout.css
@@ -112,6 +112,30 @@
transform: translateY(-1px);
}
+.openclaw-login {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 10px;
+ min-height: 46px;
+ border-radius: 12px;
+ background: transparent;
+ color: var(--text-strong);
+ font-weight: 600;
+ text-decoration: none;
+ border: 1px solid var(--muted-2);
+ transition:
+ transform 80ms ease,
+ background 120ms ease,
+ border-color 120ms ease;
+}
+
+.openclaw-login:hover {
+ background: color-mix(in srgb, var(--text-strong) 6%, transparent);
+ border-color: var(--muted);
+ transform: translateY(-1px);
+}
+
.auth-foot {
margin: 0;
color: var(--muted-2);
diff --git a/docs/deployment.md b/docs/deployment.md
index 732dd8d05..685ca25bd 100644
--- a/docs/deployment.md
+++ b/docs/deployment.md
@@ -230,6 +230,25 @@ GitHub for `read:org` and only accepts active members of that org. See
[features/auth.md](features/auth.md) and
[features/moderation.md](features/moderation.md).
+## OpenClaw ID sign-in
+
+If you want first-party OpenClaw ID (OIDC) login, set:
+
+```sh
+CLICKCLACK_PUBLIC_URL=https://chat.example.com
+OPENCLAW_ID_CLIENT_ID=...
+OPENCLAW_ID_CLIENT_SECRET=...
+# Optional issuer override (default https://id.openclaw.ai/api/auth):
+# OPENCLAW_ID_ISSUER=https://id.openclaw.ai/api/auth
+```
+
+Register the redirect URI `/api/auth/openclaw/callback` with the
+identity provider. On the hosted Cloudflare deployment, set the credentials as
+Worker secrets (`wrangler secret put OPENCLAW_ID_CLIENT_ID` and
+`wrangler secret put OPENCLAW_ID_CLIENT_SECRET`); the Worker passes them into
+the container when present. See [features/auth.md](features/auth.md) for the
+flow details.
+
`CLICKCLACK_PUBLIC_URL` is startup-validated as an exact origin. Non-loopback
origins must use HTTPS and cannot contain a path, credentials, query, or
fragment. GitHub OAuth credentials are rejected without it.
@@ -285,6 +304,7 @@ If a deployment configures edge rate limiting, cover:
- `GET /api/auth/github/start`
- `GET /api/auth/github/desktop/start`
- `POST /api/auth/github/desktop/consume`
+- `GET /api/auth/openclaw/start`
Use a client identity that is trustworthy for the complete deployment path and
leave enough headroom for legitimate users behind shared networks. The Go
diff --git a/docs/features/auth.md b/docs/features/auth.md
index 106026feb..b8748f0a2 100644
--- a/docs/features/auth.md
+++ b/docs/features/auth.md
@@ -238,6 +238,49 @@ that scope, so team-only hosting should set `CLICKCLACK_GITHUB_ALLOWED_ORG`.
Guest restrictions and moderator controls are documented in
[moderation.md](moderation.md).
+## OpenClaw ID (optional)
+
+OpenClaw ID is the first-party OIDC provider at `https://id.openclaw.ai`
+(issuer `https://id.openclaw.ai/api/auth`). ClickClack is registered as a
+confidential OAuth 2.1 client. Configure the server through the environment:
+
+```sh
+OPENCLAW_ID_CLIENT_ID=...
+OPENCLAW_ID_CLIENT_SECRET=...
+# Optional issuer override for staging or tests:
+# OPENCLAW_ID_ISSUER=https://id.openclaw.ai/api/auth
+```
+
+Without a client ID and client secret, `GET /api/auth/openclaw/start` returns
+`501`. Both credentials must be configured together, and the flow requires
+`CLICKCLACK_PUBLIC_URL`.
+
+Flow:
+
+1. `GET /api/auth/openclaw/start` reuses the GitHub OAuth transaction store: a
+ database-backed, ten-minute transaction, the same HTTP-only browser-binding
+ cookie, and a SHA-256 PKCE challenge, then redirects to
+ `/oauth2/authorize` with `scope=openid profile email`.
+2. OpenClaw ID redirects back to `GET /api/auth/openclaw/callback?code&state`.
+3. The handler atomically consumes the state only when the browser binding
+ matches, exchanges the code at `/oauth2/token` using
+ `client_secret_basic` plus the stored PKCE verifier, and reads the returned
+ `id_token`. The token arrives directly from the issuer over TLS on an
+ authenticated confidential-client exchange, so no local JWKS signature check
+ runs; issuer, audience, expiry, and a verified email claim are enforced.
+4. The handler links or creates the user by lowercased email exactly like the
+ magic-link path (`GetOrCreateUserByEmail`), joins the default workspace,
+ creates a normal session, sets the configured session cookie, and redirects
+ to `/`.
+
+Accounts without a verified email (`email_verified`) are rejected with `403`.
+There is no desktop handoff for OpenClaw ID yet; the web login shows the
+button only in the browser. Register the exact redirect URI
+`/api/auth/openclaw/callback` with the identity provider.
+
+When metrics are enabled, `clickclack_openclaw_id_oauth_events_total` exposes
+the same bounded event categories as the GitHub counter.
+
## Authorization
Every store mutation that touches a workspace runs `requireMembership` (or the
diff --git a/infra/cloudflare/worker.ts b/infra/cloudflare/worker.ts
index d2d09e5cc..28fd57b5a 100644
--- a/infra/cloudflare/worker.ts
+++ b/infra/cloudflare/worker.ts
@@ -31,6 +31,9 @@ export class ClickClackContainer extends Container {
...optionalContainerEnv({
CLICKCLACK_GITHUB_ALLOWED_ORG: env.CLICKCLACK_GITHUB_ALLOWED_ORG,
CLICKCLACK_GITHUB_MODERATOR_ORG: env.CLICKCLACK_GITHUB_MODERATOR_ORG,
+ OPENCLAW_ID_CLIENT_ID: env.OPENCLAW_ID_CLIENT_ID,
+ OPENCLAW_ID_CLIENT_SECRET: env.OPENCLAW_ID_CLIENT_SECRET,
+ OPENCLAW_ID_ISSUER: env.OPENCLAW_ID_ISSUER,
}),
};
}
diff --git a/packages/protocol/openapi.yaml b/packages/protocol/openapi.yaml
index e32831f10..685457d6a 100644
--- a/packages/protocol/openapi.yaml
+++ b/packages/protocol/openapi.yaml
@@ -193,6 +193,47 @@ paths:
description: GitHub provider request failed
"503":
description: Desktop grant capacity exhausted or canonical callback origin unavailable
+ /api/auth/openclaw/start:
+ get:
+ operationId: startOpenClawIDOAuth
+ responses:
+ "302":
+ description: Redirect to OpenClaw ID OIDC authorization
+ "400":
+ description: Ambiguous OAuth browser-binding cookies
+ "429":
+ description: Deployment edge rate limit exceeded, when configured
+ "500":
+ description: OAuth browser binding, state, PKCE generation, or persistence failed
+ "501":
+ description: OpenClaw ID sign-in not configured
+ "503":
+ description: OAuth transaction capacity exhausted or canonical callback origin unavailable
+ /api/auth/openclaw/callback:
+ get:
+ operationId: finishOpenClawIDOAuth
+ parameters:
+ - name: code
+ in: query
+ schema:
+ type: string
+ - name: state
+ in: query
+ schema:
+ type: string
+ responses:
+ "302":
+ description: Browser session created and redirected to the web app
+ "400":
+ description: Invalid OAuth callback
+ "403":
+ description: OpenClaw ID token invalid or account email not verified
+ "500":
+ description: Identity, workspace, or session persistence failed
+ "502":
+ description: OpenClaw ID provider request failed
+ "503":
+ description: Canonical callback origin unavailable
/api/me:
get:
operationId: getMe