@gbasin/agentboard-darwin-x64 0.4.27 → 0.4.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/agentboard
CHANGED
|
Binary file
|
|
@@ -207,7 +207,7 @@ ${s.join(`
|
|
|
207
207
|
pointer-events: none;
|
|
208
208
|
max-width: 400px;
|
|
209
209
|
word-break: break-all;
|
|
210
|
-
`,x=document.createElement(`div`),m.appendChild(x),D=document.createElement(`div`),D.style.color=`var(--text-muted)`,D.style.marginTop=`2px`,D.style.fontSize=`11px`,m.appendChild(D),C.current=m);let k=(e,t)=>{if(!r.element||!m||!x||!D)return;let n=uH(t);if(!n)return;let i=r.element.getBoundingClientRect(),a=n.length>60?n.slice(0,57)+`...`:n;x.textContent=a,D.textContent=`${dH()?`⌘`:`Ctrl`}+click to open`,m.style.left=`${e.clientX-i.left+10}px`,m.style.top=`${e.clientY-i.top+10}px`,m.style.display=`block`},M=()=>{m&&(m.style.display=`none`)},N=null,F=!1,L=null,ee={activate:(e,t)=>{if(!F&&(e.metaKey||e.ctrlKey)){let e=uH(t);if(!e)return;window.open(e,`_blank`,`noopener`)}},hover:(e,t)=>{N=uH(t)||null,k(e,t)},leave:()=>{N=null,M()}},R=e=>{N&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.stopPropagation(),F=!0,window.open(N,`_blank`,`noopener`),L&&clearTimeout(L),L=setTimeout(()=>{F=!1},100))};t.addEventListener(`mousedown`,R,!0),r.options.linkHandler=ee;let B=new yz((e,t)=>ee.activate(e,t),{urlRegex:oH,hover:(e,t)=>ee.hover(e,t),leave:()=>ee.leave()});r.loadAddon(B),S.current=B;let te=null,V=null,re=dH()?`metaKey`:`ctrlKey`,ie=(e,t)=>{t&&H.current===e&&ne.current===e&&se.current({type:`terminal-input`,sessionId:e,data:t})};r.attachCustomKeyEventHandler(e=>{if(e.type===`keydown`&&/^Digit[1-9]$/.test(e.code)&&Xe(e,qe(U.getState().shortcutModifier)))return!1;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`c`&&r.hasSelection()){let e=r.getSelection();return e?.trim()&&navigator.clipboard&&navigator.clipboard.writeText(e),!1}if(dH()&&!h&&e.ctrlKey&&!e.metaKey&&e.key.toLowerCase()===`v`&&e.type===`keydown`){let e=ne.current;return e&&(j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:e}),Ce(!1)),(async()=>{ie(e,await vH(ce.current,{}))})()),!e}if(e[re]&&e.key.toLowerCase()===`v`&&e.type===`keydown`){V!==null&&(clearTimeout(V),V=null),te=null;let e=new Promise(e=>{V=setTimeout(()=>{V=null,te=null,e(null)},100),te=t=>{V!==null&&(clearTimeout(V),V=null),e(t)}});return(async()=>{try{let t=ne.current;if(!t)return;let n=await e,r=n?.text??null;if(r===null)try{r=await navigator.clipboard.readText()}catch{r=``}if(n?.hasImage&&dH()&&!h){ie(t,await vH(ce.current,{blob:n.imageBlob}));return}if(!r&&dH()&&!h)try{let e=await fetch(`/api/clipboard-file-path`);if(e.ok){let{path:n,isImage:r}=await e.json();if(n){if(r){ie(t,await vH(ce.current,{path:n}));return}ie(t,n);return}}}catch{}if(r&&!bH(r)){H.current===t&&ne.current===t&&(j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:t}),Ce(!1)),se.current({type:`terminal-paste`,sessionId:t,data:r}));return}dH()&&!h&&ie(t,await vH(ce.current,{}))}finally{te=null}})(),!1}if(e.ctrlKey&&e.key===`Backspace`&&e.type===`keydown`){let e=ne.current;return e&&se.current({type:`terminal-input`,sessionId:e,data:``}),!1}return!0});let ae=e=>{if(!te)return;e.preventDefault(),e.stopPropagation();let t=e.clipboardData?.getData(`text/plain`)??``,n=SH(e.clipboardData),r=n!==null||xH(e.clipboardData),i=te;te=null,i({text:t,hasImage:r,imageBlob:n})};return t.addEventListener(`paste`,ae,{capture:!0}),r.onData(e=>{let t=ne.current;if(t){let n=/^\x1b\[(<[\d;]+[Mm]|[\d;]+M|M[\x20-\xff]{3})$/.test(e);if(j.current&&n)return;j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:t}),Ce(!1)),se.current({type:`terminal-input`,sessionId:t,data:e})}}),r.attachCustomWheelEventHandler(e=>{let t=ne.current;if(!t||e.target?.closest(`input, textarea, [contenteditable="true"], .xterm-hover`)||r.hasSelection()||e.shiftKey)return!0;A.current+=e.deltaY;let n=r.cols,i=r.rows,a=Math.floor(n/2),o=Math.floor(i/2),s=!1,c=!1;for(;Math.abs(A.current)>=30;){c=!0;let e=A.current>0;A.current+=e?-30:30;let n=e?65:64;e||(s=!0),se.current({type:`terminal-input`,sessionId:t,data:`\x1b[<${n};${a};${o}M`})}return s&&!P.current&&Ce(!0),c&&!P.current&&we(),!1}),_.current=r,y.current=i,()=>{if(n=!0,L&&clearTimeout(L),N=null,t.removeEventListener(`mousedown`,R,!0),t.removeEventListener(`paste`,ae,!0),V!==null&&(clearTimeout(V),V=null),te=null,C.current&&=(C.current.remove(),null),S.current){try{S.current.dispose()}catch{}S.current=null}if(b.current){try{b.current.dispose()}catch{}b.current=null}try{r.dispose()}catch{}t&&(t.innerHTML=``),_.current=null,y.current=null,w.current=null,T.current=null,E.current=null,O.current&&window.clearTimeout(O.current),I.current!==null&&window.clearTimeout(I.current)}},[Te]),(0,x.useEffect)(()=>{_.current&&(_.current.options.theme=c)},[c]),(0,x.useEffect)(()=>{let e=_.current,t=y.current;if(e&&t){e.options.fontFamily=f,e.options.fontSize=l,e.options.lineHeight=Math.round(l*u)/l,e.options.letterSpacing=d,t.fit();let n=H.current;n&&se.current({type:`terminal-resize`,sessionId:n,cols:e.cols,rows:e.rows})}},[l,u,d,f]),(0,x.useEffect)(()=>{let e=_.current;if(!e)return;let t=ue.current;if(ue.current=p,t!==p){if(p){if(!b.current)try{let t=new pz;t.onContextLoss(()=>{try{t.dispose()}catch{}b.current=null}),e.loadAddon(t),b.current=t}catch{}}else if(b.current){try{b.current.dispose()}catch{}b.current=null}}},[p]),(0,x.useLayoutEffect)(()=>{(ne.current!==e||!r||i!==`connected`||ie.current>=0&&ie.current!==a)&&(ne.current=null,e&&r&&i===`connected`&&ge(!0))},[e,r,i,a]),(0,x.useEffect)(()=>{let n=_.current;if(!n)return;let o=H.current,s=re.current;if(!r){ne.current=null,k.current!==null&&(window.clearTimeout(k.current),k.current=null),o&&(se.current({type:`terminal-detach`,sessionId:o}),H.current=null,re.current=null,ie.current=-1,ae.current=null,Ce(!1)),n.reset(),me.current=!1,ge(!1);return}if(i!==`connected`){ne.current=null,k.current!==null&&(window.clearTimeout(k.current),k.current=null),o&&(QT(`terminal_detach_on_disconnect`,{connectionStatus:i,prevAttached:o}),H.current=null,re.current=null,ie.current=-1,ae.current=null,Ce(!1)),aH(),me.current=!1,ge(!1);return}if(o&&o!==e){ne.current=null;try{let e=T.current?.serialize();if(e&&(nH.set(o,e),nH.size>rH)){let e=nH.keys().next().value;e&&nH.delete(e)}}catch{}se.current({type:`terminal-detach`,sessionId:o}),H.current=null,re.current=null,ie.current=-1,ae.current=null,Ce(!1)}let c=ie.current,l=a!==c;if(e&&(e!==o||t!==s||l)){QT(`terminal_attach`,{sessionId:e,tmuxTarget:t,prevAttached:o,prevTarget:s,connectionStatus:i,connectionEpoch:a,attachedEpoch:c});let r=performance.now();de.current=[],fe.current!==null&&(window.clearTimeout(fe.current),fe.current=null),pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null),me.current=!0,ge(!0),o!==null&&(ne.current=null);let l=nH.get(e);l&&(n.reset(),n.write(l));let u=y.current;u&&u.fit();let d=performance.now();H.current=e,re.current=t??null,ie.current=a,ae.current=e,oe.current=r,k.current!==null&&(window.clearTimeout(k.current),k.current=null);let f={type:`terminal-attach`,sessionId:e,tmuxTarget:t??void 0,cols:n.cols,rows:n.rows},p=o!==null&&o!==e;if(p){let t=e;queueMicrotask(()=>{H.current===t&&(se.current(f),se.current({type:`tmux-check-copy-mode`,sessionId:e}))})}else k.current=window.setTimeout(()=>{k.current=null,se.current(f),se.current({type:`tmux-check-copy-mode`,sessionId:e})},50);QT(`switch_attach_sent`,{sessionId:e,fitMs:Math.round(d-r),totalMs:Math.round(performance.now()-r),from:o??null,immediate:p})}return e&&e===o&&t===s&&!l&&QT(`terminal_attach_skip`,{sessionId:e,prevAttached:o,connectionStatus:i,connectionEpoch:a,attachedEpoch:c}),!e&&o&&(k.current!==null&&(window.clearTimeout(k.current),k.current=null),H.current=null,re.current=null,ie.current=-1,ae.current=null,ne.current=null),()=>{k.current!==null&&(QT(`attach_debounce_cancelled`,{sessionId:e,attachedSession:H.current},`info`),window.clearTimeout(k.current),k.current=null)}},[e,t,r,i,a,Se,Ce]),(0,x.useEffect)(()=>{if(V.current!==null&&(globalThis.clearInterval(V.current),V.current=null),!(!e||!r||i!==`connected`))return V.current=globalThis.setInterval(()=>{H.current===e&&se.current({type:`tmux-check-copy-mode`,sessionId:e})},750),()=>{V.current!==null&&(globalThis.clearInterval(V.current),V.current=null)}},[e,r,i]),(0,x.useEffect)(()=>{let e=()=>{fe.current!==null&&(window.clearTimeout(fe.current),fe.current=null),pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null);let e=_.current,t=de.current;if(!e||t.length===0)return;de.current=[];let n=t.join(``);me.current&&=(e.reset(),!1);let r=performance.now(),i=n.length;e.write(n,()=>{let e=Math.round(performance.now()-r);e>50&&QT(`switch_write_slow`,{sessionId:H.current,writeMs:e,bytes:i}),h&&e>50&&QT(`ios_write_slow`,{sessionId:H.current,writeMs:e,bytes:i}),Se()})},t=()=>{fe.current!==null&&window.clearTimeout(fe.current),fe.current=window.setTimeout(e,2),pe.current===null&&(pe.current=window.setTimeout(e,16))},n=s(n=>{let r=H.current;if(n.type===`terminal-output`&&(!r||n.sessionId!==r)&&QT(`terminal_output_dropped`,{messageSessionId:n.sessionId,attachedSession:r,bytes:n.data.length,hasSwitchStart:oe.current!==null},`info`),n.type===`terminal-output`&&r&&n.sessionId===r){let e=oe.current;e&&(QT(`switch_first_output`,{sessionId:n.sessionId,serverRoundtripMs:Math.round(performance.now()-e),bytes:n.data.length,parseMs:n._parseMs??-1,rawLength:n._rawLength??-1}),oe.current=null),de.current.push(h?DH(n.data):n.data),t()}if(n.type===`terminal-ready`&&r&&n.sessionId===r){ne.current=n.sessionId,me.current&&de.current.length>0?e():me.current&&=(_.current?.reset(),!1),ge(!1);let t=oe.current;t&&(QT(`switch_ready`,{sessionId:n.sessionId,totalMs:Math.round(performance.now()-t)}),oe.current=null),ae.current===n.sessionId&&(_.current?.focus(),ae.current=null),h&&(e(),xe(50,`terminal-ready`))}if(n.type===`terminal-error`&&r&&(!n.sessionId||n.sessionId===r)&&(ne.current=null,me.current=!1,ge(!1)),n.type===`clipboard-offer`&&r&&n.sessionId===r){let e=n.text;if(!e?.trim())return;if(!h&&navigator.clipboard?.writeText){let t=performance.now();navigator.clipboard.writeText(e).then(()=>{QT(`clipboard_write_success`,{source:n.source,chars:e.length,durationMs:Math.round(performance.now()-t)})}).catch(t=>{QT(`clipboard_write_failed`,{source:n.source,chars:e.length,error:t instanceof Error?t.message:String(t)},`warn`),z(e,n.source)})}else z(e,n.source)}if(n.type===`tmux-copy-mode-status`&&r&&n.sessionId===r){let e=n.appMouse===!0&&!n.inCopyMode,t=P.current;P.current=e,F.current=n.altScreen===!0,!t&&e&&_.current?.write(mH),Ce(n.inCopyMode)}});return()=>{n(),e(),be()}},[s,Se,Ce,z]),(0,x.useEffect)(()=>{let e=g.current,t=_.current,n=y.current;if(!e||!t||!n)return;let r=()=>{D.current&&window.clearTimeout(D.current),D.current=window.setTimeout(()=>{Te()},150)},i=new ResizeObserver(r);return i.observe(e),r(),()=>{i.disconnect(),D.current&&window.clearTimeout(D.current)}},[]),(0,x.useEffect)(()=>{if(typeof document>`u`||typeof document.addEventListener!=`function`)return;let e=()=>{document.visibilityState!==`hidden`&&QT(`terminal_visibility_resume`,{isiOS:h,hasWebGL:!!b.current,useWebGL:ue.current,hasTerminal:!!_.current,bufferLines:_.current?.buffer.active.length??0,sessionId:H.current},`info`)};if(document.addEventListener(`visibilitychange`,e),!h)return()=>{document.removeEventListener(`visibilitychange`,e)};let t=e=>{let t=_.current;if(t&&b.current&&ue.current){try{b.current.dispose()}catch{}b.current=null;try{let n=new pz;n.onContextLoss(()=>{QT(`webgl_context_loss`,{sessionId:H.current},`info`);try{n.dispose()}catch{}b.current=null}),t.loadAddon(n),b.current=n,QT(`ios_webgl_recreated`,{trigger:e},`info`)}catch{QT(`ios_webgl_recreate_failed`,{trigger:e},`info`)}}},n=()=>{document.visibilityState!==`hidden`&&(t(`visibilitychange`),xe(200,`visibilitychange`))},r=e=>{e.persisted&&(t(`pageshow`),xe(200,`pageshow`))},i=()=>{t(`focus`),xe(200,`focus`)};return document.addEventListener(`visibilitychange`,n),window.addEventListener(`pageshow`,r),window.addEventListener(`focus`,i),()=>{document.removeEventListener(`visibilitychange`,e),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`pageshow`,r),window.removeEventListener(`focus`,i),be()}},[]),{containerRef:g,terminalRef:_,searchAddonRef:w,serializeAddonRef:T,progressAddonRef:E,inTmuxCopyModeRef:j,isTmuxCopyMode:M,appMouseRef:P,setTmuxCopyMode:Ce,isSwitching:he,isInputReady:!!e&&r&&i===`connected`&&ne.current===e,pendingClipboardOffer:ee,copyPendingClipboardOffer:B,dismissPendingClipboardOffer:te}}function kH(e=`(max-width: 767px)`){let[t,n]=(0,x.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(e).matches);return(0,x.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let t=window.matchMedia(e),r=()=>n(t.matches);return r(),typeof t.addEventListener==`function`?(t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)):(t.addListener(r),()=>t.removeListener(r))},[e]),t}function AH(e,t,n){(0,x.useEffect)(()=>{if(!t)return;let r=t=>{e.current&&!e.current.contains(t.target)&&n()};return document.addEventListener(`mousedown`,r),document.addEventListener(`touchstart`,r),()=>{document.removeEventListener(`mousedown`,r),document.removeEventListener(`touchstart`,r)}},[e,t,n])}function jH(e,t){(0,x.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&(e.preventDefault(),t())};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e,t])}function MH({enabled:e,isOpen:t,onOpen:n,edgeThresholdPx:r=30,swipeDistancePx:i=50,swipeRatio:a=1.5}){let o=(0,x.useRef)(!1);return(0,x.useEffect)(()=>{if(!e)return;let s=0,c=0,l=!1,u=e=>{if(t)return;let n=e.touches[0];n.clientX<=r?(s=n.clientX,c=n.clientY,l=!0,o.current=!0):l=!1},d=e=>{if(o.current=!1,!l||t)return;let r=e.changedTouches[0],u=r.clientX-s,d=Math.abs(r.clientY-c);u>=i&&u>d*a&&n(),l=!1};return document.addEventListener(`touchstart`,u,{passive:!0}),document.addEventListener(`touchend`,d,{passive:!0}),()=>{o.current=!1,document.removeEventListener(`touchstart`,u),document.removeEventListener(`touchend`,d)}},[e,t,n,r,i,a]),o}var NH=T()(k(e=>({theme:`dark`,setTheme:t=>e({theme:t}),toggleTheme:()=>e(e=>({theme:e.theme===`dark`?`light`:`dark`}))}),{name:`agentboard-theme`,storage:D(()=>M)})),PH={dark:{background:`#2d2d2d`,foreground:`#d4d4d4`,cursor:`#3b82f6`,cursorAccent:`#2d2d2d`,selectionBackground:`rgba(59, 130, 246, 0.35)`,selectionForeground:`#ffffff`,black:`#808080`,red:`#f87171`,green:`#4ade80`,yellow:`#fbbf24`,blue:`#60a5fa`,magenta:`#c084fc`,cyan:`#22d3ee`,white:`#d4d4d4`,brightBlack:`#a0a0a0`,brightRed:`#fca5a5`,brightGreen:`#86efac`,brightYellow:`#fde047`,brightBlue:`#93c5fd`,brightMagenta:`#d8b4fe`,brightCyan:`#67e8f9`,brightWhite:`#ffffff`},light:{background:`#fafafa`,foreground:`#171717`,cursor:`#2563eb`,cursorAccent:`#fafafa`,selectionBackground:`rgba(37, 99, 235, 0.2)`,selectionForeground:`#000000`,black:`#171717`,red:`#dc2626`,green:`#16a34a`,yellow:`#ca8a04`,blue:`#2563eb`,magenta:`#9333ea`,cyan:`#0891b2`,white:`#f5f5f5`,brightBlack:`#737373`,brightRed:`#ef4444`,brightGreen:`#22c55e`,brightYellow:`#eab308`,brightBlue:`#3b82f6`,brightMagenta:`#a855f7`,brightCyan:`#06b6d4`,brightWhite:`#ffffff`}},FH=new WeakSet;function IH(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return!n?.get||!n.set?null:{get:n.get,set:n.set,enumerable:n.enumerable??!0,configurable:n.configurable??!0}}var LH=!1,RH=null,zH=null;function BH(){LH||(LH=!0,!(typeof Node>`u`||typeof HTMLElement>`u`)&&(RH=IH(Node.prototype,`textContent`),zH=IH(HTMLElement.prototype,`innerText`)))}function VH(e){if(FH.has(e))return;FH.add(e);let t=RH?.get;if(t)for(let[n,r]of[[`textContent`,RH],[`innerText`,zH]])r&&Object.defineProperty(e,n,{configurable:r.configurable,enumerable:r.enumerable,get(){return r.get.call(this)},set(e){t.call(this)!==e&&r.set.call(this,e)}})}function HH(e){BH();let t=()=>{for(let t of Array.from(e.children))t instanceof HTMLElement&&VH(t)};t();let n=new MutationObserver(t);return n.observe(e,{childList:!0}),()=>n.disconnect()}var UH={up:`\x1B[A`,down:`\x1B[B`,left:`\x1B[D`,right:`\x1B[C`},WH=44,GH=6,KH=8,qH=10,JH=8,YH=700;3*WH+2*GH+2*KH,2*WH+GH+2*KH;var XH={up:`↑`,down:`↓`,left:`←`,right:`→`},ZH={up:`1 / 2 / 2 / 3`,left:`2 / 1 / 3 / 2`,down:`2 / 2 / 3 / 3`,right:`2 / 3 / 3 / 4`};function QH(e=10){typeof navigator<`u`&&`vibrate`in navigator&&navigator.vibrate(e)}function $H(e,t){let n=e.left-t.left+e.width/2,r=JH+160/2,i=t.width-JH-160/2;return r>i?t.width/2:Math.max(r,Math.min(i,n))}function eU({onSendKey:e,disabled:t=!1,onRefocus:n,isKeyboardVisible:r,sessionKey:i=null}){let[a,o]=(0,x.useState)(!1),[s,c]=(0,x.useState)(0),[l,u]=(0,x.useState)(null),d=(0,x.useId)(),f=(0,x.useRef)(null),p=(0,x.useRef)(!1),m=(0,x.useRef)(null),h=(0,x.useRef)(null),g=(0,x.useRef)(null),_=(0,x.useRef)(null),v=(0,x.useRef)(0),y=(0,x.useRef)(e),b=(0,x.useRef)(t);y.current=e,b.current=t;let S=(0,x.useCallback)(()=>{m.current&&=(clearTimeout(m.current),null),h.current&&=(clearInterval(h.current),null),g.current=null,_.current=null},[]),C=(0,x.useCallback)(()=>{S(),u(null)},[S]),w=(0,x.useCallback)(()=>{C(),o(!1),p.current&&n?.()},[C,n]),T=(0,x.useCallback)(()=>{let e=f.current,t=e?.getBoundingClientRect?.(),n=e?.closest?.(`.terminal-controls`)?.getBoundingClientRect?.();if(!t||!n){c(160/2+JH);return}c($H(t,n))},[]),E=(0,x.useCallback)(()=>{p.current=r?.()??!1,T(),o(!0)},[r,T]),D=(0,x.useCallback)(()=>{t||(QH(),a?w():E())},[t,a,w,E]),O=(0,x.useCallback)(e=>{e.preventDefault(),v.current=Date.now(),D()},[D]),k=(0,x.useCallback)(()=>Date.now()-v.current<YH,[]),A=(0,x.useCallback)(e=>{k()||D()},[k,D]),j=(0,x.useCallback)(e=>{b.current||y.current(UH[e])},[]),M=(0,x.useCallback)(e=>{S(),g.current=e,u(e),QH(8),j(e),m.current=setTimeout(()=>{h.current=setInterval(()=>{g.current===e&&(QH(5),j(e))},100)},400)},[S,j]),N=(0,x.useCallback)(e=>n=>{t||(n.preventDefault(),_.current===null&&(n.currentTarget.setPointerCapture?.(n.pointerId),v.current=Date.now(),M(e),_.current=n.pointerId))},[t,M]),P=(0,x.useCallback)(e=>{e.preventDefault(),!(_.current!==null&&e.pointerId!==_.current)&&C()},[C]),F=(0,x.useCallback)(e=>n=>{t||k()||(QH(8),j(e))},[t,k,j]),I=(0,x.useCallback)(e=>{e.preventDefault(),w()},[w]);(0,x.useEffect)(()=>{t&&a&&w()},[t,a,w]);let L=(0,x.useRef)(i);return(0,x.useEffect)(()=>{L.current!==i&&(L.current=i,C())},[i,C]),(0,x.useEffect)(()=>{if(!a)return;let e=f.current?.parentElement;if(e?.addEventListener)return e.addEventListener(`scroll`,T,{passive:!0}),()=>e.removeEventListener(`scroll`,T)},[a,T]),(0,x.useEffect)(()=>S,[S]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{ref:f,type:`button`,"aria-label":`Arrow keys`,"aria-haspopup":`true`,"aria-expanded":a,"aria-controls":a?d:void 0,className:`
|
|
210
|
+
`,x=document.createElement(`div`),m.appendChild(x),D=document.createElement(`div`),D.style.color=`var(--text-muted)`,D.style.marginTop=`2px`,D.style.fontSize=`11px`,m.appendChild(D),C.current=m);let k=(e,t)=>{if(!r.element||!m||!x||!D)return;let n=uH(t);if(!n)return;let i=r.element.getBoundingClientRect(),a=n.length>60?n.slice(0,57)+`...`:n;x.textContent=a,D.textContent=`${dH()?`⌘`:`Ctrl`}+click to open`,m.style.left=`${e.clientX-i.left+10}px`,m.style.top=`${e.clientY-i.top+10}px`,m.style.display=`block`},M=()=>{m&&(m.style.display=`none`)},N=null,F=!1,L=null,ee={activate:(e,t)=>{if(!F&&(e.metaKey||e.ctrlKey)){let e=uH(t);if(!e)return;window.open(e,`_blank`,`noopener`)}},hover:(e,t)=>{N=uH(t)||null,k(e,t)},leave:()=>{N=null,M()}},R=e=>{N&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.stopPropagation(),F=!0,window.open(N,`_blank`,`noopener`),L&&clearTimeout(L),L=setTimeout(()=>{F=!1},100))};t.addEventListener(`mousedown`,R,!0),r.options.linkHandler=ee;let B=new yz((e,t)=>ee.activate(e,t),{urlRegex:oH,hover:(e,t)=>ee.hover(e,t),leave:()=>ee.leave()});r.loadAddon(B),S.current=B;let te=null,V=null,re=dH()?`metaKey`:`ctrlKey`,ie=(e,t)=>{t&&H.current===e&&ne.current===e&&(j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:e}),Ce(!1)),se.current({type:`terminal-input`,sessionId:e,data:t}))};r.attachCustomKeyEventHandler(e=>{if(e.type===`keydown`&&/^Digit[1-9]$/.test(e.code)&&Xe(e,qe(U.getState().shortcutModifier)))return!1;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`c`&&r.hasSelection()){let e=r.getSelection();return e?.trim()&&navigator.clipboard&&navigator.clipboard.writeText(e),!1}if(dH()&&!h&&e.ctrlKey&&!e.metaKey&&e.key.toLowerCase()===`v`&&e.type===`keydown`){let e=ne.current;return e&&(j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:e}),Ce(!1)),(async()=>{ie(e,await vH(ce.current,{}))})()),!e}if(e[re]&&e.key.toLowerCase()===`v`&&e.type===`keydown`){V!==null&&(clearTimeout(V),V=null),te=null;let e=new Promise(e=>{V=setTimeout(()=>{V=null,te=null,e(null)},100),te=t=>{V!==null&&(clearTimeout(V),V=null),e(t)}});return(async()=>{try{let t=ne.current;if(!t)return;let n=await e,r=n?.text??null;if(r===null)try{r=await navigator.clipboard.readText()}catch{r=``}if(n?.hasImage&&dH()&&!h){ie(t,await vH(ce.current,{blob:n.imageBlob}));return}if((!r||n?.hasFiles)&&dH()&&!h)try{let e=await fetch(`/api/clipboard-file-path`);if(e.ok){let{path:n,isImage:r}=await e.json();if(n){if(r){ie(t,await vH(ce.current,{path:n}));return}ie(t,eH(n));return}}}catch{}if(r&&!bH(r)){H.current===t&&ne.current===t&&(j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:t}),Ce(!1)),se.current({type:`terminal-paste`,sessionId:t,data:r}));return}dH()&&!h&&ie(t,await vH(ce.current,{}))}finally{te=null}})(),!1}if(e.ctrlKey&&e.key===`Backspace`&&e.type===`keydown`){let e=ne.current;return e&&se.current({type:`terminal-input`,sessionId:e,data:``}),!1}return!0});let ae=e=>{if(!te)return;e.preventDefault(),e.stopPropagation();let t=e.clipboardData?.getData(`text/plain`)??``,n=SH(e.clipboardData),r=n!==null||xH(e.clipboardData),i=te;te=null,i({text:t,hasImage:r,hasFiles:(e.clipboardData?.files?.length??0)>0||Array.from(e.clipboardData?.items??[]).some(e=>e.kind===`file`)||Array.from(e.clipboardData?.types??[]).includes(`Files`),imageBlob:n})};return t.addEventListener(`paste`,ae,{capture:!0}),r.onData(e=>{let t=ne.current;if(t){let n=/^\x1b\[(<[\d;]+[Mm]|[\d;]+M|M[\x20-\xff]{3})$/.test(e);if(j.current&&n)return;j.current&&(se.current({type:`tmux-cancel-copy-mode`,sessionId:t}),Ce(!1)),se.current({type:`terminal-input`,sessionId:t,data:e})}}),r.attachCustomWheelEventHandler(e=>{let t=ne.current;if(!t||e.target?.closest(`input, textarea, [contenteditable="true"], .xterm-hover`)||r.hasSelection()||e.shiftKey)return!0;A.current+=e.deltaY;let n=r.cols,i=r.rows,a=Math.floor(n/2),o=Math.floor(i/2),s=!1,c=!1;for(;Math.abs(A.current)>=30;){c=!0;let e=A.current>0;A.current+=e?-30:30;let n=e?65:64;e||(s=!0),se.current({type:`terminal-input`,sessionId:t,data:`\x1b[<${n};${a};${o}M`})}return s&&!P.current&&Ce(!0),c&&!P.current&&we(),!1}),_.current=r,y.current=i,()=>{if(n=!0,L&&clearTimeout(L),N=null,t.removeEventListener(`mousedown`,R,!0),t.removeEventListener(`paste`,ae,!0),V!==null&&(clearTimeout(V),V=null),te=null,C.current&&=(C.current.remove(),null),S.current){try{S.current.dispose()}catch{}S.current=null}if(b.current){try{b.current.dispose()}catch{}b.current=null}try{r.dispose()}catch{}t&&(t.innerHTML=``),_.current=null,y.current=null,w.current=null,T.current=null,E.current=null,O.current&&window.clearTimeout(O.current),I.current!==null&&window.clearTimeout(I.current)}},[Te]),(0,x.useEffect)(()=>{_.current&&(_.current.options.theme=c)},[c]),(0,x.useEffect)(()=>{let e=_.current,t=y.current;if(e&&t){e.options.fontFamily=f,e.options.fontSize=l,e.options.lineHeight=Math.round(l*u)/l,e.options.letterSpacing=d,t.fit();let n=H.current;n&&se.current({type:`terminal-resize`,sessionId:n,cols:e.cols,rows:e.rows})}},[l,u,d,f]),(0,x.useEffect)(()=>{let e=_.current;if(!e)return;let t=ue.current;if(ue.current=p,t!==p){if(p){if(!b.current)try{let t=new pz;t.onContextLoss(()=>{try{t.dispose()}catch{}b.current=null}),e.loadAddon(t),b.current=t}catch{}}else if(b.current){try{b.current.dispose()}catch{}b.current=null}}},[p]),(0,x.useLayoutEffect)(()=>{(ne.current!==e||!r||i!==`connected`||ie.current>=0&&ie.current!==a)&&(ne.current=null,e&&r&&i===`connected`&&ge(!0))},[e,r,i,a]),(0,x.useEffect)(()=>{let n=_.current;if(!n)return;let o=H.current,s=re.current;if(!r){ne.current=null,k.current!==null&&(window.clearTimeout(k.current),k.current=null),o&&(se.current({type:`terminal-detach`,sessionId:o}),H.current=null,re.current=null,ie.current=-1,ae.current=null,Ce(!1)),n.reset(),me.current=!1,ge(!1);return}if(i!==`connected`){ne.current=null,k.current!==null&&(window.clearTimeout(k.current),k.current=null),o&&(QT(`terminal_detach_on_disconnect`,{connectionStatus:i,prevAttached:o}),H.current=null,re.current=null,ie.current=-1,ae.current=null,Ce(!1)),aH(),me.current=!1,ge(!1);return}if(o&&o!==e){ne.current=null;try{let e=T.current?.serialize();if(e&&(nH.set(o,e),nH.size>rH)){let e=nH.keys().next().value;e&&nH.delete(e)}}catch{}se.current({type:`terminal-detach`,sessionId:o}),H.current=null,re.current=null,ie.current=-1,ae.current=null,Ce(!1)}let c=ie.current,l=a!==c;if(e&&(e!==o||t!==s||l)){QT(`terminal_attach`,{sessionId:e,tmuxTarget:t,prevAttached:o,prevTarget:s,connectionStatus:i,connectionEpoch:a,attachedEpoch:c});let r=performance.now();de.current=[],fe.current!==null&&(window.clearTimeout(fe.current),fe.current=null),pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null),me.current=!0,ge(!0),o!==null&&(ne.current=null);let l=nH.get(e);l&&(n.reset(),n.write(l));let u=y.current;u&&u.fit();let d=performance.now();H.current=e,re.current=t??null,ie.current=a,ae.current=e,oe.current=r,k.current!==null&&(window.clearTimeout(k.current),k.current=null);let f={type:`terminal-attach`,sessionId:e,tmuxTarget:t??void 0,cols:n.cols,rows:n.rows},p=o!==null&&o!==e;if(p){let t=e;queueMicrotask(()=>{H.current===t&&(se.current(f),se.current({type:`tmux-check-copy-mode`,sessionId:e}))})}else k.current=window.setTimeout(()=>{k.current=null,se.current(f),se.current({type:`tmux-check-copy-mode`,sessionId:e})},50);QT(`switch_attach_sent`,{sessionId:e,fitMs:Math.round(d-r),totalMs:Math.round(performance.now()-r),from:o??null,immediate:p})}return e&&e===o&&t===s&&!l&&QT(`terminal_attach_skip`,{sessionId:e,prevAttached:o,connectionStatus:i,connectionEpoch:a,attachedEpoch:c}),!e&&o&&(k.current!==null&&(window.clearTimeout(k.current),k.current=null),H.current=null,re.current=null,ie.current=-1,ae.current=null,ne.current=null),()=>{k.current!==null&&(QT(`attach_debounce_cancelled`,{sessionId:e,attachedSession:H.current},`info`),window.clearTimeout(k.current),k.current=null)}},[e,t,r,i,a,Se,Ce]),(0,x.useEffect)(()=>{if(V.current!==null&&(globalThis.clearInterval(V.current),V.current=null),!(!e||!r||i!==`connected`))return V.current=globalThis.setInterval(()=>{H.current===e&&se.current({type:`tmux-check-copy-mode`,sessionId:e})},750),()=>{V.current!==null&&(globalThis.clearInterval(V.current),V.current=null)}},[e,r,i]),(0,x.useEffect)(()=>{let e=()=>{fe.current!==null&&(window.clearTimeout(fe.current),fe.current=null),pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null);let e=_.current,t=de.current;if(!e||t.length===0)return;de.current=[];let n=t.join(``);me.current&&=(e.reset(),!1);let r=performance.now(),i=n.length;e.write(n,()=>{let e=Math.round(performance.now()-r);e>50&&QT(`switch_write_slow`,{sessionId:H.current,writeMs:e,bytes:i}),h&&e>50&&QT(`ios_write_slow`,{sessionId:H.current,writeMs:e,bytes:i}),Se()})},t=()=>{fe.current!==null&&window.clearTimeout(fe.current),fe.current=window.setTimeout(e,2),pe.current===null&&(pe.current=window.setTimeout(e,16))},n=s(n=>{let r=H.current;if(n.type===`terminal-output`&&(!r||n.sessionId!==r)&&QT(`terminal_output_dropped`,{messageSessionId:n.sessionId,attachedSession:r,bytes:n.data.length,hasSwitchStart:oe.current!==null},`info`),n.type===`terminal-output`&&r&&n.sessionId===r){let e=oe.current;e&&(QT(`switch_first_output`,{sessionId:n.sessionId,serverRoundtripMs:Math.round(performance.now()-e),bytes:n.data.length,parseMs:n._parseMs??-1,rawLength:n._rawLength??-1}),oe.current=null),de.current.push(h?DH(n.data):n.data),t()}if(n.type===`terminal-ready`&&r&&n.sessionId===r){ne.current=n.sessionId,me.current&&de.current.length>0?e():me.current&&=(_.current?.reset(),!1),ge(!1);let t=oe.current;t&&(QT(`switch_ready`,{sessionId:n.sessionId,totalMs:Math.round(performance.now()-t)}),oe.current=null),ae.current===n.sessionId&&(_.current?.focus(),ae.current=null),h&&(e(),xe(50,`terminal-ready`))}if(n.type===`terminal-error`&&r&&(!n.sessionId||n.sessionId===r)&&(ne.current=null,me.current=!1,ge(!1)),n.type===`clipboard-offer`&&r&&n.sessionId===r){let e=n.text;if(!e?.trim())return;if(!h&&navigator.clipboard?.writeText){let t=performance.now();navigator.clipboard.writeText(e).then(()=>{QT(`clipboard_write_success`,{source:n.source,chars:e.length,durationMs:Math.round(performance.now()-t)})}).catch(t=>{QT(`clipboard_write_failed`,{source:n.source,chars:e.length,error:t instanceof Error?t.message:String(t)},`warn`),z(e,n.source)})}else z(e,n.source)}if(n.type===`tmux-copy-mode-status`&&r&&n.sessionId===r){let e=n.appMouse===!0&&!n.inCopyMode,t=P.current;P.current=e,F.current=n.altScreen===!0,!t&&e&&_.current?.write(mH),Ce(n.inCopyMode)}});return()=>{n(),e(),be()}},[s,Se,Ce,z]),(0,x.useEffect)(()=>{let e=g.current,t=_.current,n=y.current;if(!e||!t||!n)return;let r=()=>{D.current&&window.clearTimeout(D.current),D.current=window.setTimeout(()=>{Te()},150)},i=new ResizeObserver(r);return i.observe(e),r(),()=>{i.disconnect(),D.current&&window.clearTimeout(D.current)}},[]),(0,x.useEffect)(()=>{if(typeof document>`u`||typeof document.addEventListener!=`function`)return;let e=()=>{document.visibilityState!==`hidden`&&QT(`terminal_visibility_resume`,{isiOS:h,hasWebGL:!!b.current,useWebGL:ue.current,hasTerminal:!!_.current,bufferLines:_.current?.buffer.active.length??0,sessionId:H.current},`info`)};if(document.addEventListener(`visibilitychange`,e),!h)return()=>{document.removeEventListener(`visibilitychange`,e)};let t=e=>{let t=_.current;if(t&&b.current&&ue.current){try{b.current.dispose()}catch{}b.current=null;try{let n=new pz;n.onContextLoss(()=>{QT(`webgl_context_loss`,{sessionId:H.current},`info`);try{n.dispose()}catch{}b.current=null}),t.loadAddon(n),b.current=n,QT(`ios_webgl_recreated`,{trigger:e},`info`)}catch{QT(`ios_webgl_recreate_failed`,{trigger:e},`info`)}}},n=()=>{document.visibilityState!==`hidden`&&(t(`visibilitychange`),xe(200,`visibilitychange`))},r=e=>{e.persisted&&(t(`pageshow`),xe(200,`pageshow`))},i=()=>{t(`focus`),xe(200,`focus`)};return document.addEventListener(`visibilitychange`,n),window.addEventListener(`pageshow`,r),window.addEventListener(`focus`,i),()=>{document.removeEventListener(`visibilitychange`,e),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`pageshow`,r),window.removeEventListener(`focus`,i),be()}},[]),{containerRef:g,terminalRef:_,searchAddonRef:w,serializeAddonRef:T,progressAddonRef:E,inTmuxCopyModeRef:j,isTmuxCopyMode:M,appMouseRef:P,setTmuxCopyMode:Ce,isSwitching:he,isInputReady:!!e&&r&&i===`connected`&&ne.current===e,pendingClipboardOffer:ee,copyPendingClipboardOffer:B,dismissPendingClipboardOffer:te}}function kH(e=`(max-width: 767px)`){let[t,n]=(0,x.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(e).matches);return(0,x.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let t=window.matchMedia(e),r=()=>n(t.matches);return r(),typeof t.addEventListener==`function`?(t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)):(t.addListener(r),()=>t.removeListener(r))},[e]),t}function AH(e,t,n){(0,x.useEffect)(()=>{if(!t)return;let r=t=>{e.current&&!e.current.contains(t.target)&&n()};return document.addEventListener(`mousedown`,r),document.addEventListener(`touchstart`,r),()=>{document.removeEventListener(`mousedown`,r),document.removeEventListener(`touchstart`,r)}},[e,t,n])}function jH(e,t){(0,x.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&(e.preventDefault(),t())};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e,t])}function MH({enabled:e,isOpen:t,onOpen:n,edgeThresholdPx:r=30,swipeDistancePx:i=50,swipeRatio:a=1.5}){let o=(0,x.useRef)(!1);return(0,x.useEffect)(()=>{if(!e)return;let s=0,c=0,l=!1,u=e=>{if(t)return;let n=e.touches[0];n.clientX<=r?(s=n.clientX,c=n.clientY,l=!0,o.current=!0):l=!1},d=e=>{if(o.current=!1,!l||t)return;let r=e.changedTouches[0],u=r.clientX-s,d=Math.abs(r.clientY-c);u>=i&&u>d*a&&n(),l=!1};return document.addEventListener(`touchstart`,u,{passive:!0}),document.addEventListener(`touchend`,d,{passive:!0}),()=>{o.current=!1,document.removeEventListener(`touchstart`,u),document.removeEventListener(`touchend`,d)}},[e,t,n,r,i,a]),o}var NH=T()(k(e=>({theme:`dark`,setTheme:t=>e({theme:t}),toggleTheme:()=>e(e=>({theme:e.theme===`dark`?`light`:`dark`}))}),{name:`agentboard-theme`,storage:D(()=>M)})),PH={dark:{background:`#2d2d2d`,foreground:`#d4d4d4`,cursor:`#3b82f6`,cursorAccent:`#2d2d2d`,selectionBackground:`rgba(59, 130, 246, 0.35)`,selectionForeground:`#ffffff`,black:`#808080`,red:`#f87171`,green:`#4ade80`,yellow:`#fbbf24`,blue:`#60a5fa`,magenta:`#c084fc`,cyan:`#22d3ee`,white:`#d4d4d4`,brightBlack:`#a0a0a0`,brightRed:`#fca5a5`,brightGreen:`#86efac`,brightYellow:`#fde047`,brightBlue:`#93c5fd`,brightMagenta:`#d8b4fe`,brightCyan:`#67e8f9`,brightWhite:`#ffffff`},light:{background:`#fafafa`,foreground:`#171717`,cursor:`#2563eb`,cursorAccent:`#fafafa`,selectionBackground:`rgba(37, 99, 235, 0.2)`,selectionForeground:`#000000`,black:`#171717`,red:`#dc2626`,green:`#16a34a`,yellow:`#ca8a04`,blue:`#2563eb`,magenta:`#9333ea`,cyan:`#0891b2`,white:`#f5f5f5`,brightBlack:`#737373`,brightRed:`#ef4444`,brightGreen:`#22c55e`,brightYellow:`#eab308`,brightBlue:`#3b82f6`,brightMagenta:`#a855f7`,brightCyan:`#06b6d4`,brightWhite:`#ffffff`}},FH=new WeakSet;function IH(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return!n?.get||!n.set?null:{get:n.get,set:n.set,enumerable:n.enumerable??!0,configurable:n.configurable??!0}}var LH=!1,RH=null,zH=null;function BH(){LH||(LH=!0,!(typeof Node>`u`||typeof HTMLElement>`u`)&&(RH=IH(Node.prototype,`textContent`),zH=IH(HTMLElement.prototype,`innerText`)))}function VH(e){if(FH.has(e))return;FH.add(e);let t=RH?.get;if(t)for(let[n,r]of[[`textContent`,RH],[`innerText`,zH]])r&&Object.defineProperty(e,n,{configurable:r.configurable,enumerable:r.enumerable,get(){return r.get.call(this)},set(e){t.call(this)!==e&&r.set.call(this,e)}})}function HH(e){BH();let t=()=>{for(let t of Array.from(e.children))t instanceof HTMLElement&&VH(t)};t();let n=new MutationObserver(t);return n.observe(e,{childList:!0}),()=>n.disconnect()}var UH={up:`\x1B[A`,down:`\x1B[B`,left:`\x1B[D`,right:`\x1B[C`},WH=44,GH=6,KH=8,qH=10,JH=8,YH=700;3*WH+2*GH+2*KH,2*WH+GH+2*KH;var XH={up:`↑`,down:`↓`,left:`←`,right:`→`},ZH={up:`1 / 2 / 2 / 3`,left:`2 / 1 / 3 / 2`,down:`2 / 2 / 3 / 3`,right:`2 / 3 / 3 / 4`};function QH(e=10){typeof navigator<`u`&&`vibrate`in navigator&&navigator.vibrate(e)}function $H(e,t){let n=e.left-t.left+e.width/2,r=JH+160/2,i=t.width-JH-160/2;return r>i?t.width/2:Math.max(r,Math.min(i,n))}function eU({onSendKey:e,disabled:t=!1,onRefocus:n,isKeyboardVisible:r,sessionKey:i=null}){let[a,o]=(0,x.useState)(!1),[s,c]=(0,x.useState)(0),[l,u]=(0,x.useState)(null),d=(0,x.useId)(),f=(0,x.useRef)(null),p=(0,x.useRef)(!1),m=(0,x.useRef)(null),h=(0,x.useRef)(null),g=(0,x.useRef)(null),_=(0,x.useRef)(null),v=(0,x.useRef)(0),y=(0,x.useRef)(e),b=(0,x.useRef)(t);y.current=e,b.current=t;let S=(0,x.useCallback)(()=>{m.current&&=(clearTimeout(m.current),null),h.current&&=(clearInterval(h.current),null),g.current=null,_.current=null},[]),C=(0,x.useCallback)(()=>{S(),u(null)},[S]),w=(0,x.useCallback)(()=>{C(),o(!1),p.current&&n?.()},[C,n]),T=(0,x.useCallback)(()=>{let e=f.current,t=e?.getBoundingClientRect?.(),n=e?.closest?.(`.terminal-controls`)?.getBoundingClientRect?.();if(!t||!n){c(160/2+JH);return}c($H(t,n))},[]),E=(0,x.useCallback)(()=>{p.current=r?.()??!1,T(),o(!0)},[r,T]),D=(0,x.useCallback)(()=>{t||(QH(),a?w():E())},[t,a,w,E]),O=(0,x.useCallback)(e=>{e.preventDefault(),v.current=Date.now(),D()},[D]),k=(0,x.useCallback)(()=>Date.now()-v.current<YH,[]),A=(0,x.useCallback)(e=>{k()||D()},[k,D]),j=(0,x.useCallback)(e=>{b.current||y.current(UH[e])},[]),M=(0,x.useCallback)(e=>{S(),g.current=e,u(e),QH(8),j(e),m.current=setTimeout(()=>{h.current=setInterval(()=>{g.current===e&&(QH(5),j(e))},100)},400)},[S,j]),N=(0,x.useCallback)(e=>n=>{t||(n.preventDefault(),_.current===null&&(n.currentTarget.setPointerCapture?.(n.pointerId),v.current=Date.now(),M(e),_.current=n.pointerId))},[t,M]),P=(0,x.useCallback)(e=>{e.preventDefault(),!(_.current!==null&&e.pointerId!==_.current)&&C()},[C]),F=(0,x.useCallback)(e=>n=>{t||k()||(QH(8),j(e))},[t,k,j]),I=(0,x.useCallback)(e=>{e.preventDefault(),w()},[w]);(0,x.useEffect)(()=>{t&&a&&w()},[t,a,w]);let L=(0,x.useRef)(i);return(0,x.useEffect)(()=>{L.current!==i&&(L.current=i,C())},[i,C]),(0,x.useEffect)(()=>{if(!a)return;let e=f.current?.parentElement;if(e?.addEventListener)return e.addEventListener(`scroll`,T,{passive:!0}),()=>e.removeEventListener(`scroll`,T)},[a,T]),(0,x.useEffect)(()=>S,[S]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{ref:f,type:`button`,"aria-label":`Arrow keys`,"aria-haspopup":`true`,"aria-expanded":a,"aria-controls":a?d:void 0,className:`
|
|
211
211
|
terminal-key
|
|
212
212
|
flex items-center justify-center
|
|
213
213
|
size-[44px] p-0
|
package/dist/client/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Agentboard</title>
|
|
9
9
|
<link rel="apple-touch-icon" href="/icons/pwa-192x192.png" />
|
|
10
10
|
<meta name="theme-color" content="#0f172a" />
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-D76vEFI0.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-BnqwJ4ov.css">
|
|
13
13
|
<link rel="manifest" href="/manifest.webmanifest"></head>
|
|
14
14
|
<body>
|
package/dist/client/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,n={};const i=(i,o)=>(i=new URL(i+".js",o).href,n[i]||new Promise(n=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=n,document.head.appendChild(e)}else e=i,importScripts(i),n()}).then(()=>{let e=n[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(o,s)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(n[r])return;let
|
|
1
|
+
if(!self.define){let e,n={};const i=(i,o)=>(i=new URL(i+".js",o).href,n[i]||new Promise(n=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=n,document.head.appendChild(e)}else e=i,importScripts(i),n()}).then(()=>{let e=n[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(o,s)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(n[r])return;let d={};const t=e=>i(e,r),f={module:{uri:r},exports:d,require:t};n[r]=Promise.all(o.map(e=>f[e]||t(e))).then(e=>(s(...e),d))}}define(["./workbox-8c29f6e4"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"290dbad3448371d55f9e4b01658de255"},{url:"favicon.svg",revision:"12048a608dedfc53518ddc59c07e41b6"},{url:"icons/pwa-512x512.png",revision:"eb82042b3e4ed505f3efe1b79622d998"},{url:"icons/pwa-192x192.png",revision:"affb57c15619ee7223d1adea372ad514"},{url:"fonts/jetbrains-mono-vietnamese-wght-normal.woff2",revision:"ddf99e6e35c6ee9f00a41d2567b0e77f"},{url:"fonts/jetbrains-mono-latin-wght-normal.woff2",revision:"b058178d7f309414f8f856b99fd80d9b"},{url:"fonts/jetbrains-mono-latin-ext-wght-normal.woff2",revision:"e36841ed93d5bfe6b1d487d18ad7e90b"},{url:"fonts/jetbrains-mono-greek-wght-normal.woff2",revision:"51671ed9eb64e29390d4791ab0023c8e"},{url:"fonts/jetbrains-mono-cyrillic-wght-normal.woff2",revision:"615bf869ebeb5998734d81fc8958116c"},{url:"fonts/jetbrains-mono-cyrillic-ext-wght-normal.woff2",revision:"742dd0628e0118d32dccf0437900670b"},{url:"assets/workbox-window.prod.es5-Bq4GJJid.js",revision:null},{url:"assets/index-D76vEFI0.js",revision:null},{url:"assets/index-BnqwJ4ov.css",revision:null},{url:"icons/pwa-192x192.png",revision:"affb57c15619ee7223d1adea372ad514"},{url:"icons/pwa-512x512.png",revision:"eb82042b3e4ed505f3efe1b79622d998"},{url:"manifest.webmanifest",revision:"b6d4b3666a548fa0f0c6919d31ec2eee"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api(?:\/|$)/,/^\/ws(?:\/|$)/]}))});
|