pi-kot 0.1.19 → 0.1.20
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/README.md +1 -1
- package/dist/client/assets/{index-B6Hxrz4s.js → index-C5quN7Km.js} +2 -2
- package/dist/client/assets/{index-B6Hxrz4s.js.map → index-C5quN7Km.js.map} +1 -1
- package/dist/client/assets/index-CuQOwQs1.css +1 -0
- package/dist/client/index.html +2 -2
- package/package.json +1 -1
- package/dist/client/assets/index-BPImbgFg.css +0 -1
package/README.md
CHANGED
|
@@ -444,5 +444,5 @@ ${s.join(`
|
|
|
444
444
|
font-weight: bold;
|
|
445
445
|
}
|
|
446
446
|
`}),(0,M.jsx)(`button`,{className:`terminal-quick-key ${f?`active`:``}`,onPointerDown:e=>{e.preventDefault(),p(e=>!e)},children:`CTRL`}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(``)},children:`^C`}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B`)},children:`ESC`}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(` `)},children:`TAB`}),(0,M.jsx)(`div`,{style:{width:1,height:20,background:`var(--border-color, #313244)`,margin:`0 4px`}}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[A`)},children:`↑`}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[B`)},children:`↓`}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[D`)},children:`←`}),(0,M.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[C`)},children:`→`})]})]})}function iae({tab:e,visible:t,ctrlActive:n,setCtrlActive:r}){let i=(0,b.useRef)(null),a=(0,b.useRef)(n);return(0,b.useEffect)(()=>{a.current=n},[n]),(0,b.useEffect)(()=>{if(i.current===null)return;let t=i.current,n=z9.get(e.id);if(n!==void 0){try{let e=n.term.element;e!==void 0&&e.parentNode!==t?t.appendChild(e):n.term.open(t),B9(t),V9(n,!0)}catch{}let e=new ResizeObserver(()=>{try{V9(n)}catch{}});e.observe(t);try{n.observer.disconnect()}catch{}return n.observer=e,requestAnimationFrame(()=>{try{V9(n),n.term.focus()}catch{}}),()=>{try{e.disconnect()}catch{}}}let o=window.innerWidth<=600,s=new qie({theme:{background:U9(`--bg-solid`,`#1e1e2e`),foreground:U9(`--text-primary`,`#cdd6f4`),cursor:U9(`--accent-text`,`#89b4fa`),selectionBackground:U9(`--accent`,`#89b4fa`),black:U9(`--ansi-black`,`#45475a`),red:U9(`--ansi-red`,`#f38ba8`),green:U9(`--ansi-green`,`#a6e3a1`),yellow:U9(`--ansi-yellow`,`#f9e2af`),blue:U9(`--ansi-blue`,`#89b4fa`),magenta:U9(`--ansi-magenta`,`#f5c2e7`),cyan:U9(`--ansi-cyan`,`#94e2d5`),white:U9(`--ansi-white`,`#bac2de`),brightBlack:U9(`--ansi-bright-black`,`#585b70`),brightRed:U9(`--ansi-bright-red`,`#f38ba8`),brightGreen:U9(`--ansi-bright-green`,`#a6e3a1`),brightYellow:U9(`--ansi-bright-yellow`,`#f9e2af`),brightBlue:U9(`--ansi-bright-blue`,`#89b4fa`),brightMagenta:U9(`--ansi-bright-magenta`,`#f5c2e7`),brightCyan:U9(`--ansi-bright-cyan`,`#94e2d5`),brightWhite:U9(`--ansi-bright-white`,`#a6adc8`)},fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace`,fontSize:o?12:13,cursorBlink:!0,scrollback:5e3,allowTransparency:!0}),c=new Xie;s.loadAddon(c),s.open(t),B9(t),c.fit();let l={cols:s.cols,rows:s.rows},u=H9(e.id,e.projectId,s,l,!1);s.onData(t=>{let n=z9.get(e.id)?.ws;if(n?.readyState===WebSocket.OPEN)if(a.current&&t.length===1){let e=t.charCodeAt(0),i=t;e>=97&&e<=122?i=String.fromCharCode(e-96):e>=65&&e<=90&&(i=String.fromCharCode(e-64)),n.send(JSON.stringify({type:`input`,data:i})),r(!1)}else n.send(JSON.stringify({type:`input`,data:t}))});let d=new ResizeObserver(()=>{try{let t=z9.get(e.id);if(t===void 0)return;V9(t)}catch{}});d.observe(t);let f=null,p=null,m=null,h=0,g,_=!1,v,y=0,b=0,x=``,S=-1,C=0,w=[{minDist:0,interval:150},{minDist:100,interval:80},{minDist:200,interval:40}];function ee(e){for(let t=w.length-1;t>=0;t--)if(e>=w[t].minDist)return t;return 0}function T(){v!==void 0&&(clearInterval(v),v=void 0),_=!1,x=``,S=-1,t.style.userSelect=``}function te(t,n){let r=t-y,i=n-b,a=Math.sqrt(r*r+i*i);if(a<15)return;let o=Math.abs(r)>Math.abs(i)?r>0?`right`:`left`:i>0?`down`:`up`,s=ee(a);if(o!==x||s!==S){x=o,S=s,v!==void 0&&clearInterval(v);let t=o===`right`?`\x1B[C`:o===`left`?`\x1B[D`:o===`down`?`\x1B[B`:`\x1B[A`,n=z9.get(e.id)?.ws;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`input`,data:t})),v=setInterval(()=>{let n=z9.get(e.id)?.ws;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`input`,data:t}))},w[s].interval)}}let E=e=>{e.touches.length===1?(f=e.touches[0].clientX,p=e.touches[0].clientY,g!==void 0&&clearTimeout(g),g=setTimeout(()=>{y=f,b=p,_=!0,t.style.userSelect=`none`},150)):e.touches.length===2&&(g!==void 0&&(clearTimeout(g),g=void 0),m=(e.touches[0].clientY+e.touches[1].clientY)/2,h=0)},D=e=>{if(e.touches.length===2&&m!==null){g!==void 0&&(clearTimeout(g),g=void 0);let t=(e.touches[0].clientY+e.touches[1].clientY)/2,n=m-t;if(m=t,Math.abs(n)<1)return;e.preventDefault(),e.stopPropagation();let r=h+n,i=Math.trunc(r/16);h=r-i*16,i!==0&&s.scrollLines(i);return}if(e.touches.length===1&&_){e.preventDefault(),e.stopPropagation(),te(e.touches[0].clientX,e.touches[0].clientY);return}if(e.touches.length===1&&!_&&f!==null&&p!==null&&g!==void 0){let t=e.touches[0].clientX-f,n=e.touches[0].clientY-p;Math.max(Math.abs(t),Math.abs(n))>20&&(clearTimeout(g),g=void 0)}},ne=t=>{if(t.changedTouches.length===3){T(),g!==void 0&&(clearTimeout(g),g=void 0),navigator.clipboard.readText().then(t=>{let n=z9.get(e.id)?.ws;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`input`,data:t}))}).catch(()=>{}),f=null,p=null,m=null;return}if(_){T(),f=null,p=null,m=null;return}if(g!==void 0){clearTimeout(g),g=void 0;let t=Date.now();if(f!==null&&p!==null)if(t-C<300){let t=z9.get(e.id)?.ws;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`input`,data:` `})),C=0}else C=t}s.focus(),f=null,p=null,m=null},O=()=>{T(),g!==void 0&&(clearTimeout(g),g=void 0),f=null,p=null,m=null};t.addEventListener(`touchstart`,E,{passive:!1}),t.addEventListener(`touchmove`,D,{passive:!1}),t.addEventListener(`touchend`,ne),t.addEventListener(`touchcancel`,O);let re=e=>{e.preventDefault()},k=e=>{e.preventDefault()};return t.addEventListener(`contextmenu`,re),t.addEventListener(`selectstart`,k),t.style.setProperty(`-webkit-touch-callout`,`none`),z9.set(e.id,{term:s,fit:c,ws:u,observer:d,lastSize:l,reconnectAttempt:0,reconnectTimer:void 0,disposed:!1,ctrlActive:!1}),()=>{try{d.disconnect(),t.removeEventListener(`touchstart`,E),t.removeEventListener(`touchmove`,D),t.removeEventListener(`touchend`,ne),t.removeEventListener(`touchcancel`,O),t.removeEventListener(`contextmenu`,re),t.removeEventListener(`selectstart`,k),t.style.setProperty(`-webkit-touch-callout`,``)}catch{}}},[e.id]),(0,b.useEffect)(()=>{if(!t)return;let n=z9.get(e.id);n!==void 0&&requestAnimationFrame(()=>{try{V9(n),n.term.focus()}catch{}})},[t,e.id]),(0,M.jsx)(`div`,{ref:i,onClick:()=>{z9.get(e.id)?.term.focus()},className:`terminal-host`,style:{position:`absolute`,inset:0,visibility:t?`visible`:`hidden`,pointerEvents:t?`auto`:`none`,zIndex:+!!t,padding:`2px 4px 8px 4px`,touchAction:`none`,userSelect:`none`,WebkitUserSelect:`none`}})}function H9(e,t,n,r,i){let a=window.location.protocol===`https:`?`wss`:`ws`,o=ie(),s=o===void 0?``:`&token=${encodeURIComponent(o)}`,c=`${a}://${window.location.host}/api/v1/terminal?projectId=${encodeURIComponent(t)}&tabId=${encodeURIComponent(e)}${s}`,l=new WebSocket(c);return l.binaryType=`arraybuffer`,l.onopen=()=>{let t=z9.get(e),n=t===void 0?r:{cols:t.term.cols,rows:t.term.rows};l.send(JSON.stringify({type:`resize`,cols:n.cols,rows:n.rows})),t!==void 0&&(t.lastSize=n,t.reconnectAttempt=0)},l.onmessage=e=>{if(typeof e.data==`string`)try{let t=JSON.parse(e.data);if(t.type===`open`){n.writeln(`\r\n\x1b[32mTerminal opened at ${t.cwd}\x1b[0m`);return}if(t.type===`exit`){n.writeln(`\r\n\x1b[31mProcess exited with code ${t.code}\x1b[0m`);return}if(t.type===`error`){n.writeln(`\r\n\x1b[31mError: ${t.message}\x1b[0m`);return}}catch{n.write(e.data)}else e.data instanceof ArrayBuffer&&n.write(new Uint8Array(e.data))},l.onclose=r=>{let i=z9.get(e);if(i===void 0||i.disposed)return;if(nae(r.code)){let e=`[connection closed: ${String(r.code)}]`;r.code===4401?e=`[connection closed (4401): session expired — refresh the page after logging back in]`:r.code===4404&&(e=`[connection closed (4404): project no longer exists]`),n.write(`\r\n${e}\r\n`);return}let a=i.reconnectAttempt+1;i.reconnectAttempt=a;let o=tae(a);n.write(`\r\n[connection lost (${String(r.code)}) — reconnecting in ${String(o/1e3)}s, attempt ${String(a)}]\r\n`),i.reconnectTimer=setTimeout(()=>{let r=z9.get(e);r===void 0||r.disposed||(r.reconnectTimer=void 0,r.ws=H9(e,t,n,r.lastSize,!0))},o)},l}function aae(e){let t=z9.get(e);if(t!==void 0){t.disposed=!0,t.reconnectTimer!==void 0&&clearTimeout(t.reconnectTimer),z9.delete(e);try{t.observer.disconnect()}catch{}try{(t.ws.readyState===WebSocket.OPEN||t.ws.readyState===WebSocket.CONNECTING)&&t.ws.close(1e3,`tab_closed`)}catch{}try{t.term.dispose()}catch{}}}function U9(e,t){return typeof document>`u`?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}function oae({sessionId:e}){let t=nn(e=>e.activeInteraction);nn(e=>e.clearInteraction);let n=nn(e=>e.cancelCommand),r=nn(e=>e.commandRunning),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(0),c=(0,b.useCallback)(()=>{let t=nn.getState().activeInteraction;if(t&&`requestId`in t){let n=t.requestId;Dt(e,n,``).catch(()=>{})}n()},[e,n]);if((0,b.useEffect)(()=>{a(``),s(0)},[t?.type]),t===void 0&&!r||!r&&t===void 0)return null;let l=t?.type??``;if(l===`extension_ui_select`){let n=t;return(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:520,maxWidth:`92vw`,height:`auto`,maxHeight:`80vh`,display:`flex`,flexDirection:`column`},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,M.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,M.jsx)(`div`,{className:`settings-body`,style:{padding:`12px 16px`,overflowY:`auto`,flex:1},children:(0,M.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:3},children:n.options.map((t,r)=>{let i=t.split(`
|
|
447
|
-
`).filter(Boolean),a=i[0]??t,c=i.slice(1).join(` `).trim().replace(/\u001b\[[0-9;]*m/g,``);return(0,M.jsxs)(`button`,{onClick:async r=>{r.stopPropagation();try{await Dt(e,n.requestId,t)}catch(e){console.error(`Extension UI respond failed:`,e)}},onMouseEnter:()=>s(r),style:{display:`flex`,width:`100%`,alignItems:`flex-start`,gap:10,padding:`8px 10px`,borderRadius:6,border:r===o?`1px solid var(--accent-border)`:`1px solid transparent`,background:r===o?`var(--accent-subtle)`:`none`,cursor:`pointer`,textAlign:`left`,fontSize:11,fontFamily:`inherit`,color:`var(--text-primary)`,transition:`background 0.15s`},children:[(0,M.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:`50%`,background:`var(--bg-glass-hover)`,color:`var(--text-dim)`,fontSize:10,fontWeight:700,flexShrink:0,marginTop:1},children:r+1}),(0,M.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,M.jsx)(`div`,{style:{fontSize:11,fontWeight:500,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:a}),c&&(0,M.jsx)(`div`,{style:{fontSize:10,color:`var(--text-dim)`,marginTop:2,fontFamily:`monospace`},children:c})]})]},r)})})}),(0,M.jsx)(`div`,{style:{padding:`8px 16px`,borderTop:`1px solid var(--border-color)`,fontSize:10,color:`var(--text-dim)`,textAlign:`center`},children:`Select an option above`})]})})}if(l===`extension_ui_confirm`){let n=t;return(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`92vw`,height:`auto`,minHeight:0},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,M.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,M.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,M.jsx)(`p`,{style:{fontSize:13,color:`var(--text-secondary)`,marginBottom:20,lineHeight:1.5},children:n.message}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,M.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await Dt(e,n.requestId,!1)}catch(e){console.error(e)}},className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`No`}),(0,M.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await Dt(e,n.requestId,!0)}catch(e){console.error(e)}},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12},children:`Yes`})]})]})]})})}if(l===`extension_ui_input`){let n=t;return(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`92vw`,height:`auto`,minHeight:0},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,M.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,M.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,M.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:n.placeholder,autoFocus:!0,style:{width:`100%`,padding:`8px 10px`,fontSize:12,borderRadius:6,border:`1px solid var(--border-color)`,background:`var(--bg-glass)`,color:`var(--text-primary)`,outline:`none`,fontFamily:`inherit`,boxSizing:`border-box`,marginBottom:12},onKeyDown:async t=>{if(t.key===`Enter`){t.stopPropagation();try{await Dt(e,n.requestId,i)}catch(e){console.error(e)}}t.key===`Escape`&&c()}}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,M.jsx)(`button`,{onClick:c,className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`Cancel`}),(0,M.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await Dt(e,n.requestId,i)}catch(e){console.error(e)}},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12},children:`OK`})]})]})]})})}return r&&t===void 0?(0,M.jsx)(`div`,{className:`settings-overlay`,children:(0,M.jsx)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:300,maxWidth:`92vw`,height:`auto`,minHeight:0,textAlign:`center`},children:(0,M.jsx)(`div`,{className:`settings-body`,style:{padding:`20px`},children:(0,M.jsx)(`div`,{style:{fontSize:12,color:`var(--text-dim)`},children:`Extension command running…`})})})}):null}function sae(){let e=nn(e=>e.notifications),t=nn(e=>e.dismissNotification),[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(`info`),[c,l]=(0,b.useState)(!1),u=e[e.length-1];(0,b.useEffect)(()=>{if(u&&u.id!==n){r(u.id),a(u.message),s(u.type),l(!0);let e=setTimeout(()=>{l(!1),setTimeout(()=>t(u.id),300)},15e3);return()=>clearTimeout(e)}},[u,n,t]);let d=()=>{n&&(l(!1),setTimeout(()=>{t(n),r(null)},250))};return!n||!i?null:(0,M.jsx)(`div`,{className:`toast-overlay`,onClick:d,children:(0,M.jsxs)(`div`,{className:`toast-card ${c?`toast-card-enter`:`toast-card-exit`}`,onClick:e=>e.stopPropagation(),role:`alert`,children:[(0,M.jsxs)(`header`,{className:`toast-card-header`,children:[(0,M.jsxs)(`span`,{className:`toast-card-title`,children:[o===`info`&&`ℹ️`,o===`warning`&&`⚠️`,o===`error`&&`❌`,(0,M.jsxs)(`span`,{style:{marginLeft:6},children:[o===`info`&&`Context Mode`,o===`warning`&&`Warning`,o===`error`&&`Error`]})]}),(0,M.jsx)(`button`,{className:`toast-card-close`,onClick:d,"aria-label":`Dismiss`,children:`✕`})]}),(0,M.jsx)(`div`,{className:`toast-card-body`,children:(0,M.jsx)(`pre`,{className:`toast-card-content`,children:i})})]})})}var W9=`pi-kot/favorite-sessions`;function cae(){try{let e=localStorage.getItem(W9);return e?JSON.parse(e):[]}catch{return[]}}function lae(e){try{localStorage.setItem(W9,JSON.stringify(e))}catch{}}var uae=w((e,t)=>({favorites:cae(),toggle:n=>{let r=t().favorites,i=r.includes(n)?r.filter(e=>e!==n):[...r,n];lae(i),e({favorites:i})}})),G9=8,dae=10;function fae({projectId:e,sessions:t,activeSessionId:n,isStreaming:r,renamingSessionId:i,renameValue:a,renameInputRef:o,expandedWorkerGroups:s,onSelect:c,onRenameStart:l,onRenameChange:u,onRenameCommit:d,onRenameCancel:f,onToggleWorkerGroup:p,onNewSession:m}){let[h,g]=(0,b.useState)(``),[_,v]=(0,b.useState)(!1),y=(0,b.useMemo)(()=>t.filter(e=>!e.supervisorId),[t]),x=(0,b.useMemo)(()=>t.filter(e=>e.supervisorId),[t]),S=(0,b.useMemo)(()=>x.filter(e=>!y.some(t=>t.sessionId===e.supervisorId)),[x,y]),C=h.trim().toLowerCase(),w=(0,b.useMemo)(()=>C?y.filter(e=>(e.name??`Session ${e.sessionId.slice(0,8)}`).toLowerCase().includes(C)):y,[y,C]),ee=!_&&!C&&w.length>G9,T=ee?w.slice(0,G9).includes(w.find(e=>e.sessionId===n)??w[0])?w.slice(0,G9):[...w.slice(0,G9-1),w.find(e=>e.sessionId===n)??w[G9-1]].filter(Boolean):w,te=w.length-T.length,{favorites:E,toggle:D}=uae(),{favSessions:ne,normalSessions:O}=(0,b.useMemo)(()=>{let e=[],t=[];for(let n of T)E.includes(n.sessionId)?e.push(n):t.push(n);return{favSessions:e,normalSessions:t}},[T,E]),re=t.length>=dae,k=e=>{let t=x.filter(t=>t.supervisorId===e.sessionId),m=s.has(e.sessionId),h=n===e.sessionId,g=e.name??`Session ${e.sessionId.slice(0,8)}`,_=E.includes(e.sessionId);return(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{onClick:t=>{i!==e.sessionId&&(t.stopPropagation(),c(e.sessionId))},className:`session-item${h?` active`:``}`,onDoubleClick:t=>{t.stopPropagation(),l(e.sessionId,g)},children:[t.length>0&&(0,M.jsx)(`span`,{className:`project-chevron`,onClick:t=>{t.stopPropagation(),p(e.sessionId)},style:{cursor:`pointer`,marginRight:`4px`},children:m?`▾`:`▶`}),i===e.sessionId?(0,M.jsx)(`input`,{ref:o,className:`session-rename-input`,value:a,onChange:e=>u(e.target.value),onBlur:()=>d(e.sessionId,g),onKeyDown:e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&f()},onClick:e=>e.stopPropagation()}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:`session-fav-btn${_?` favorited`:``}`,onClick:t=>{t.stopPropagation(),D(e.sessionId)},title:_?`Remove from favorites`:`Add to favorites`,children:_?`★`:`☆`}),(0,M.jsx)(`span`,{className:`session-name`,children:g}),(0,M.jsx)(`button`,{className:`session-archive-btn`,title:`Archive session`,onClick:t=>{t.stopPropagation(),confirm(`Archive "${g}"?`)&&pn.getState().archiveSession(e.sessionId)},children:`✕`})]})]}),t.length>0&&m&&(0,M.jsx)(`div`,{className:`session-children`,children:t.map(e=>(0,M.jsx)(K9,{worker:e,isActive:n===e.sessionId,isStreaming:r&&n===e.sessionId,onSelect:c},e.sessionId))})]},e.sessionId)};return(0,M.jsxs)(`div`,{className:`session-list project-sublist`,children:[re&&(0,M.jsx)(`div`,{style:{padding:`4px 8px 6px`},children:(0,M.jsx)(`input`,{value:h,onChange:e=>{g(e.target.value),v(!1)},placeholder:`Search sessions…`,className:`session-search-input`,type:`search`})}),y.length===0&&x.length===0&&(0,M.jsx)(`div`,{style:{padding:`6px 12px 2px`,fontSize:`11px`,color:`var(--text-dim)`,fontStyle:`italic`},children:`No sessions yet`}),C&&w.length===0&&(0,M.jsxs)(`div`,{style:{padding:`6px 12px 2px`,fontSize:`11px`,color:`var(--text-dim)`,fontStyle:`italic`},children:[`No matches for "`,h,`"`]}),ne.length>0&&!C&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{className:`favorites-section-header`,children:`★ Favorites`}),ne.map(k),O.length>0&&(0,M.jsx)(`div`,{className:`favorites-section-divider`})]}),C?T.map(k):O.map(k),ee&&te>0&&(0,M.jsxs)(`button`,{className:`session-show-more-btn`,onClick:()=>v(!0),type:`button`,children:[`↓ `,te,` more session`,te===1?``:`s`]}),_&&w.length>G9&&(0,M.jsx)(`button`,{className:`session-show-more-btn`,onClick:()=>v(!1),type:`button`,children:`↑ Show less`}),S.map(e=>(0,M.jsx)(K9,{worker:e,isActive:n===e.sessionId,isStreaming:r&&n===e.sessionId,onSelect:c},e.sessionId)),(0,M.jsxs)(`button`,{className:`new-session-row`,onClick:e=>{e.stopPropagation(),m()},type:`button`,children:[(0,M.jsx)(`span`,{style:{fontSize:`14px`,lineHeight:1},children:`+`}),`New session`]})]})}function K9({worker:e,isActive:t,isStreaming:n,onSelect:r}){return(0,M.jsxs)(`div`,{onClick:t=>{t.stopPropagation(),r(e.sessionId)},className:`session-item session-worker-item${t?` active`:``}`,children:[(0,M.jsx)(`span`,{className:`session-worker-dot${n?` active`:``}`,style:{background:e.isLive&&!n?`#98c379`:e.isLive?void 0:`#56b6c2`}}),(0,M.jsx)(`span`,{className:`session-worker-name`,children:e.name??`Session ${e.sessionId.slice(0,8)}`})]})}function q9(e,t){return e===`~`?t:e.startsWith(`~/`)?t+e.slice(1):e}function J9(e){if(e.endsWith(`/`))return e;let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1):e}function pae(e){if(e.endsWith(`/`))return``;let t=e.lastIndexOf(`/`);return t>=0?e.slice(t+1):e}function mae(e){try{let t=e.replace(/\.git$/,``).split(`/`).filter(Boolean).pop()||``;return t.split(`:`).filter(Boolean).pop()||t}catch{return``}}function hae({open:e,onClose:t}){let[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)(`~/`),[o,s]=(0,b.useState)([]),[c,l]=(0,b.useState)(!1),[u,d]=(0,b.useState)(),[f,p]=(0,b.useState)(0),[m,h]=(0,b.useState)(!1),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(``),[x,S]=(0,b.useState)(!1),[C,w]=(0,b.useState)(!1),[ee,T]=(0,b.useState)(!1),te=(0,b.useRef)(null),E=pn(e=>e.loadProjects),D=pn(e=>e.setActiveProject);(0,b.useEffect)(()=>{if(!e)return;let t=!1;return a(`~/`),y(``),_(!1),h(!1),p(0),d(void 0),T(!1),w(!1),Se().then(e=>{t||(r(e),requestAnimationFrame(()=>te.current?.focus()))}).catch(()=>{t||(r(`/`),requestAnimationFrame(()=>te.current?.focus()))}),()=>{t=!0}},[e]);let ne=(0,b.useMemo)(()=>n?q9(J9(i),n):``,[i,n]);(0,b.useEffect)(()=>{if(!e||!ne){s([]);return}let t=!1;return l(!0),d(void 0),Ce(ne).then(e=>{t||s(e)}).catch(e=>{t||(s([]),d(e instanceof Error?e.message:`Failed to load directory`))}).finally(()=>{t||l(!1)}),()=>{t=!0}},[e,ne]);let O=pae(i),re=(0,b.useMemo)(()=>{let e=O.toLowerCase(),t=m||O.startsWith(`.`);return o.filter(n=>n.isDirectory&&(t||!n.name.startsWith(`.`))&&n.name.toLowerCase().startsWith(e))},[o,O,m]);(0,b.useEffect)(()=>{p(0)},[re.length]);let k=i!==`~/`&&i!==`/`,ie=(0,b.useMemo)(()=>n?q9(i.replace(/\/+$/,``),n):``,[i,n]),ae=(0,b.useCallback)(e=>{let t=e.startsWith(n)?`~`+e.slice(n.length):e;a(t+`/`)},[n]),oe=(0,b.useCallback)(()=>{let e=J9(i.replace(/\/+$/,``)).replace(/\/+$/,``);if(e===`~`||e===``){let e=n&&n.split(`/`).slice(0,-1).join(`/`)||`/`,t=e===`/`?`/`:`~`+e.slice(n.lastIndexOf(`/`));a(t.endsWith(`/`)?t:t+`/`);return}let t=e.lastIndexOf(`/`),r=t>=0?e.slice(0,t+1):`/`;a(r)},[i,n]),se=(0,b.useCallback)(async e=>{try{await be(e.split(`/`).filter(Boolean).pop()||`unnamed`,e),await E();let n=pn.getState(),r=n.projects[n.projects.length-1];r&&D(r.id),t()}catch(e){d(e instanceof Error?e.message:`Failed to add project`)}},[E,D,t]),ce=(0,b.useCallback)(async()=>{if(!(!ie||ee)){T(!0),d(void 0);try{await be(ie.split(`/`).filter(Boolean).pop()||`unnamed`,ie),await E();let e=pn.getState(),n=e.projects[e.projects.length-1];n&&D(n.id),t()}catch(e){d(e instanceof Error?e.message:`Failed to add project`)}finally{T(!1)}}},[ie,ee,E,D,t]),le=(0,b.useCallback)(()=>{if(!v.trim()||!ie||C)return;w(!0),d(void 0);let e=mae(v.trim())||`repo`,n={url:v.trim(),folderName:e,projectName:e};x&&(n.targetPath=ie.replace(/\/+$/,``)+`/`+e),Pe(n,e=>{switch(e.type){case`done`:E().then(()=>{let e=pn.getState(),n=e.projects[e.projects.length-1];n&&D(n.id),t()}),w(!1);break;case`error`:d(e.message),w(!1);break}},e=>{d(e.message),w(!1)})},[v,ie,x,C,E,D,t]),ue=(0,b.useCallback)(e=>{if(e.key===`ArrowDown`)e.preventDefault(),p(e=>Math.min(re.length-1,e+1));else if(e.key===`ArrowUp`)e.preventDefault(),p(e=>Math.max(0,e-1));else if(e.key===`Enter`){if(e.preventDefault(),re.length>0&&f>=0){let e=re[f];O&&!e.name.startsWith(O)?a(J9(i)+e.name+`/`):ae(e.path)}}else e.key===`Backspace`&&!i&&(e.preventDefault(),t())},[re,f,O,i,ae,t]);return e?(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:t,children:(0,M.jsxs)(`div`,{className:`settings-panel add-project-settings-panel`,onClick:e=>e.stopPropagation(),children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:`14px`,fontWeight:700,color:`var(--accent-text)`},children:`Add Project`}),(0,M.jsx)(`button`,{className:`settings-close`,onClick:t,title:`Close`,children:(0,M.jsx)(Kn,{size:16})})]}),(0,M.jsxs)(`div`,{className:`add-project-dialog-body`,children:[(0,M.jsxs)(`div`,{className:`add-project-dialog-bar`,children:[(0,M.jsxs)(`button`,{className:`add-project-dialog-tab`+(g?``:` active`),onClick:()=>_(!1),children:[(0,M.jsx)(Fn,{size:14}),`Browse`]}),(0,M.jsxs)(`button`,{className:`add-project-dialog-tab`+(g?` active`:``),onClick:()=>_(!0),children:[(0,M.jsx)(In,{size:14}),`Clone`]})]}),g&&(0,M.jsxs)(`div`,{className:`add-project-dialog-clone-row`,children:[(0,M.jsx)(Ln,{size:14,className:`add-project-dialog-icon`}),(0,M.jsx)(`input`,{type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:`https://github.com/user/repo.git`,className:`add-project-dialog-input`,style:{paddingLeft:`30px`},spellCheck:!1})]}),g&&(0,M.jsx)(`div`,{className:`add-project-dialog-clone-dest`,children:(0,M.jsxs)(`label`,{className:`add-project-dialog-toggle`,children:[(0,M.jsx)(`input`,{type:`checkbox`,checked:x,onChange:e=>S(e.target.checked)}),(0,M.jsx)(`span`,{className:`add-project-dialog-toggle-track`,children:(0,M.jsx)(`span`,{className:`add-project-dialog-toggle-knob`})}),(0,M.jsx)(`span`,{className:`add-project-dialog-toggle-label`,children:x?`Clone to custom path`:`Clone to workspace`})]})}),(0,M.jsxs)(`div`,{className:`add-project-dialog-path-row`,children:[(0,M.jsx)(Fn,{size:14,className:`add-project-dialog-icon`}),(0,M.jsx)(`input`,{ref:te,type:`text`,value:i,onChange:e=>a(e.target.value.replace(/\\/g,`/`)),onKeyDown:ue,placeholder:`~/`,className:`add-project-dialog-input`,spellCheck:!1}),(0,M.jsx)(`button`,{className:`add-project-dialog-btn`,disabled:g?!v.trim()||!ie||C:!ie||ee,onClick:g?le:ce,children:g?C?`Cloning…`:`Clone & Add`:ee?`Adding…`:`Add`})]}),(0,M.jsxs)(`div`,{className:`add-project-dialog-tools`,children:[(0,M.jsxs)(`button`,{className:`add-project-dialog-tool`,onClick:oe,disabled:!k,title:`Go up`,children:[(0,M.jsx)(wn,{size:14}),(0,M.jsx)(`span`,{children:`..`})]}),(0,M.jsxs)(`button`,{className:`add-project-dialog-tool`,onClick:()=>h(e=>!e),title:m?`Hide hidden files`:`Show hidden files`,children:[m?(0,M.jsx)(Nn,{size:14}):(0,M.jsx)(Pn,{size:14}),(0,M.jsx)(`span`,{children:m?`Hide hidden`:`Show hidden`})]}),(0,M.jsx)(`span`,{className:`add-project-dialog-path-display`,children:ie})]}),u&&(0,M.jsx)(`div`,{className:`add-project-dialog-error`,children:u}),(0,M.jsx)(`div`,{className:`add-project-dialog-list`,children:c?(0,M.jsx)(`div`,{className:`add-project-dialog-empty`,children:`Loading…`}):re.length===0?(0,M.jsx)(`div`,{className:`add-project-dialog-empty`,children:O?`No matching directories`:`Empty directory`}):re.map((e,t)=>(0,M.jsxs)(`div`,{className:`add-project-dialog-entry`+(t===f?` highlighted`:``),onMouseEnter:()=>p(t),onClick:()=>ae(e.path),children:[(0,M.jsx)(Dn,{size:14,className:`add-project-dialog-entry-arrow`}),(0,M.jsx)(Fn,{size:14,className:`add-project-dialog-entry-folder`}),(0,M.jsx)(`span`,{className:`add-project-dialog-entry-name`,children:e.name}),(0,M.jsx)(`button`,{className:`add-project-dialog-entry-add`,onClick:t=>{t.stopPropagation(),se(e.path)},title:`Add as project`,children:(0,M.jsx)(Hn,{size:14})})]},e.path))})]}),(0,M.jsx)(`div`,{className:`add-project-dialog-footer`,children:`↑↓ Navigate · Enter browse · + quick-add`})]})}):null}var Y9=class extends b.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[ErrorBoundary${this.props.label?`:${this.props.label}`:``}]`,e,t.componentStack)}handleRetry=()=>{this.setState({error:null})};render(){if(this.state.error===null)return this.props.children;let{error:e}=this.state,{compact:t}=this.props;return t?(0,M.jsxs)(`div`,{style:{padding:`12px`,margin:`8px`,borderRadius:`6px`,background:`var(--bg-glass, rgba(220,80,80,0.08))`,border:`1px solid var(--accent-red, #e06c75)`,fontSize:`12px`,color:`var(--text-secondary, #999)`,lineHeight:1.4},children:[(0,M.jsxs)(`div`,{style:{fontWeight:600,color:`var(--accent-red, #e06c75)`,marginBottom:4},children:[`⚠️ `,e.name??`Error`]}),(0,M.jsx)(`div`,{style:{marginBottom:8,wordBreak:`break-word`},children:e.message}),(0,M.jsx)(`button`,{onClick:this.handleRetry,style:{padding:`4px 10px`,fontSize:`11px`,borderRadius:`4px`,border:`1px solid var(--border, #444)`,background:`var(--bg-surface, #1e1e1e)`,color:`var(--text-primary, #ddd)`,cursor:`pointer`},children:`Retry`})]}):(0,M.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,padding:`40px 24px`,height:`100%`,boxSizing:`border-box`},children:(0,M.jsxs)(`div`,{style:{maxWidth:480,width:`100%`,padding:`24px`,borderRadius:`8px`,background:`var(--bg-surface, #1e1e1e)`,border:`1px solid var(--border, #444)`},children:[(0,M.jsx)(`div`,{style:{fontSize:14,fontWeight:600,color:`var(--accent-red, #e06c75)`,marginBottom:8},children:`Something went wrong`}),(0,M.jsx)(`div`,{style:{fontSize:12,color:`var(--text-secondary, #999)`,marginBottom:4,fontFamily:`monospace`},children:e.name}),(0,M.jsx)(`div`,{style:{fontSize:13,color:`var(--text-primary, #ddd)`,marginBottom:20,lineHeight:1.5,wordBreak:`break-word`},children:e.message}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,M.jsx)(`button`,{onClick:this.handleRetry,style:{padding:`6px 16px`,fontSize:12,borderRadius:`6px`,border:`none`,background:`var(--accent-primary, #569cd6)`,color:`#fff`,cursor:`pointer`},children:`Retry`}),(0,M.jsx)(`button`,{onClick:()=>{this.setState({error:null}),window.location.reload()},style:{padding:`6px 16px`,fontSize:12,borderRadius:`6px`,border:`1px solid var(--border, #444)`,background:`transparent`,color:`var(--text-secondary, #999)`,cursor:`pointer`},children:`Reload page`})]})]})})}};function gae(e){let t=(0,b.useRef)(null),n=e.threshold||50;(0,b.useEffect)(()=>{let r=e=>{t.current={x:e.touches[0].clientX,y:e.touches[0].clientY}},i=r=>{if(!t.current)return;let i=t.current.x-r.changedTouches[0].clientX,a=t.current.y-r.changedTouches[0].clientY;Math.abs(i)>Math.abs(a)&&Math.abs(i)>n&&(i>0&&e.onSwipeLeft?e.onSwipeLeft():i<0&&e.onSwipeRight&&e.onSwipeRight()),t.current=null};return window.addEventListener(`touchstart`,r,{passive:!0}),window.addEventListener(`touchend`,i,{passive:!0}),()=>{window.removeEventListener(`touchstart`,r),window.removeEventListener(`touchend`,i)}},[e.onSwipeLeft,e.onSwipeRight,n])}var _ae=w((e,t)=>({sidebarCollapsed:!1,showTreePanel:!1,showSettings:!1,showOrch:!1,showMCP:!1,showTerminal:!1,showAddProjectDialog:!1,explorerTab:void 0,isMobile:typeof window<`u`?window.innerWidth<=600:!1,toggleSidebar:()=>{let{sidebarCollapsed:n,setExplorerTab:r}=t();n&&r(void 0),e({sidebarCollapsed:!n})},setSidebarCollapsed:t=>e({sidebarCollapsed:t}),closeSidebarOnMobile:()=>{window.innerWidth<=600&&e({sidebarCollapsed:!0})},setShowTreePanel:t=>e({showTreePanel:t}),setShowSettings:t=>e({showSettings:t}),setShowOrch:t=>e({showOrch:t}),setShowMCP:t=>e({showMCP:t}),setShowTerminal:t=>e({showTerminal:t}),setShowAddProjectDialog:t=>e({showAddProjectDialog:t}),setExplorerTab:t=>e({explorerTab:t}),toggleExplorerTab:n=>{let{explorerTab:r}=t();e(r===n?{explorerTab:void 0}:{explorerTab:n,sidebarCollapsed:!0})},closeAllPanels:()=>e({showTreePanel:!1,showSettings:!1,showOrch:!1,showMCP:!1,showTerminal:!1,showAddProjectDialog:!1,explorerTab:void 0}),setIsMobile:t=>e({isMobile:t})})),X9=new Set,Z9=!1,Q9=[`var(--accent)`,`#d19a66`,`#56b6c2`,`#c678dd`,`#e5c07b`,`#98c379`,`#e06c75`,`#61afef`];function vae(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Q9[Math.abs(t)%Q9.length]}function yae(){let e=pn(e=>e.activeSessionId),t=pn(e=>e.activeProjectId);pn(e=>e.sessions);let n=pn(e=>e.projects),r=pn(e=>e.projectSessions),i=pn(e=>e.loadProjects),a=pn(e=>e.setActiveProject),o=pn(e=>e.createAndActivate),s=pn(e=>e.setActiveSession);pn(e=>e.refreshSessions);let c=pn(e=>e.streamState.isStreaming),l=pn(e=>e.connectionState),[u,d]=(0,b.useState)(!1),[f,p]=(0,b.useState)(``),[m,h]=(0,b.useState)(),[g,_]=(0,b.useState)(!0),[v,y]=(0,b.useState)(``),[x,S]=(0,b.useState)(``),[C,w]=(0,b.useState)([]),[ee,T]=(0,b.useState)(),[te,E]=(0,b.useState)(new Set),[ne,O]=(0,b.useState)(),[re,k]=(0,b.useState)(``),[ie,ce]=(0,b.useState)(),[le,ue]=(0,b.useState)(),[de,fe]=(0,b.useState)(void 0),[pe,me]=(0,b.useState)(new Set),he=(0,b.useRef)(null),ge=GS(e),{sidebarCollapsed:_e,showTreePanel:ve,showSettings:ye,showOrch:be,showMCP:xe,showTerminal:Se,showAddProjectDialog:Ce,explorerTab:we,isMobile:Te,toggleSidebar:Ee,setSidebarCollapsed:De,closeSidebarOnMobile:Oe,setShowTreePanel:ke,setShowSettings:Ae,setShowOrch:je,setShowMCP:Me,setShowTerminal:Ne,setShowAddProjectDialog:Pe,setExplorerTab:Ie,toggleExplorerTab:Le,setIsMobile:Re}=_ae();(0,b.useEffect)(()=>{let e=()=>Re(window.innerWidth<=600);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),gae({onSwipeLeft:()=>De(!0),onSwipeRight:()=>De(!1),threshold:60}),(0,b.useEffect)(()=>{(async()=>{try{let{authEnabled:e}=await oe();if(e&&(typeof localStorage<`u`?localStorage.getItem(`pi-kot/auth-token`):null)===null){d(!0),_(!1);return}await i()}catch{}try{let e=await Fe();w(e.providers);let t=e.providers.flatMap(e=>e.models),n=!1;try{let e=localStorage.getItem(`pi-kot-model`);if(e){let r=JSON.parse(e),i=t.find(e=>e.id===r.modelId&&e.hasAuth);i&&(y(i.id),S(r.provider),n=!0)}}catch{}if(!n){let n=t.find(e=>e.hasAuth);n?(y(n.id),S(e.providers.find(e=>e.models.some(e=>e.id===n.id))?.provider??``)):t.length>0&&(y(t[0].id),S(e.providers[0]?.provider??``))}}catch{}_(!1)})()},[]),(0,b.useEffect)(()=>{t!==void 0&&E(e=>new Set(e).add(t))},[t]),(0,b.useEffect)(()=>{if(g||u||n.length===0||t===void 0)return;let i=r[t];if(i!==void 0&&!Z9){if(Z9=!0,e!==void 0){if(!i.some(t=>t.sessionId===e)){try{localStorage.removeItem(`pi-kot/active-session-id`)}catch{}pn.setState({activeSessionId:void 0});return}pn.getState().sseClient===void 0&&s(e);return}i.length>0?s(i[0].sessionId):X9.has(t)||(X9.add(t),o(t))}},[g,u,t,r,e]),(0,b.useEffect)(()=>{e&&(async()=>{try{let t=await Ye(e);if(t.provider&&t.modelId){y(t.modelId),S(t.provider);try{localStorage.setItem(`pi-kot-model`,JSON.stringify({modelId:t.modelId,provider:t.provider}))}catch{}}}catch{}})()},[e]),(0,b.useEffect)(()=>{let n=t,r=e,i;i=n&&r?`#/project/${n}/session/${r}`:n?`#/project/${n}`:`#`,window.location.hash!==i&&history.replaceState(null,``,i)},[t,e]),(0,b.useEffect)(()=>{let e=()=>{let e=window.location.hash.match(/^#\/project\/([^/]+)(?:\/session\/([^/]+))?$/);if(!e)return;let t=e[1],n=e[2]??void 0,r=pn.getState();n&&n!==r.activeSessionId&&Object.values(r.projectSessions).some(e=>e.some(e=>e.sessionId===n))&&(t===r.activeProjectId?r.setActiveSession(n):r.setActiveProject(t).then(()=>{r.setActiveSession(n)}))};return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,b.useEffect)(()=>D(()=>{p(``),h(void 0),d(!0)}),[]);let ze=(0,b.useCallback)(()=>{ae(),p(``),h(void 0),d(!0)},[]);(0,b.useEffect)(()=>{let e=Object.values(r).flat(),t=new Set(pe);e.filter(e=>e.supervisorId&&e.isLive).forEach(e=>t.add(e.supervisorId)),me(t)},[r]);let Be=async()=>{try{await se(f),h(void 0),d(!1),await i()}catch{h(`Invalid password`)}},Ve=(0,b.useCallback)((e,t)=>{y(e),S(t),T(void 0);try{localStorage.setItem(`pi-kot-model`,JSON.stringify({modelId:e,provider:t}))}catch{}},[]),He=(0,b.useCallback)(e=>{T(e)},[]),Ue=e=>{E(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return g?(0,M.jsx)(`div`,{className:`centered`,children:(0,M.jsxs)(`div`,{style:{width:`100%`,maxWidth:400,display:`flex`,flexDirection:`column`,gap:24},children:[(0,M.jsx)(US,{variant:`card`,count:2}),(0,M.jsx)(US,{variant:`list`,count:4})]})}):u?(0,M.jsx)(`div`,{className:`centered`,children:(0,M.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),Be()},className:`login-form`,children:[(0,M.jsx)(`h2`,{className:`login-title`,children:`pi-kot`}),(0,M.jsx)(`input`,{type:`password`,value:f,onChange:e=>{p(e.target.value),h(void 0)},placeholder:`Enter password`,autoFocus:!0,autoComplete:`new-password`,className:`login-input${m?` login-input-error`:``}`}),m&&(0,M.jsx)(`div`,{className:`login-error`,children:m}),(0,M.jsx)(`button`,{type:`submit`,className:`login-btn`,children:`Login`}),(0,M.jsx)(`button`,{type:`button`,onClick:ze,className:`login-btn`,style:{background:`none`,border:`1px solid var(--border-color, #444)`,color:`var(--text-dim, #888)`,fontSize:`11px`,marginTop:`4px`},children:`Clear stored token`})]})}):(0,M.jsxs)(`div`,{className:`app-layout`,children:[!_e&&(0,M.jsx)(`div`,{className:`sidebar-backdrop`,onClick:()=>De(!0),"aria-hidden":`true`}),(0,M.jsxs)(`div`,{className:`sidebar${_e?` collapsed`:``}`,children:[(0,M.jsxs)(`div`,{className:`sidebar-header`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,M.jsxs)(`span`,{style:{fontSize:`14px`,fontWeight:700,color:`var(--accent-text)`,display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,M.jsx)(`span`,{title:l===`connected`?`Connected`:l===`connecting`?`Connecting…`:l===`error`?`Connection error`:`Disconnected`,style:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,background:l===`connected`?`#4caf50`:l===`connecting`?`#f0c040`:l===`error`?`#e06c75`:`#666`,boxShadow:l===`connected`?`0 0 5px rgba(76, 175, 80, 0.6)`:`none`,transition:`all 0.3s`,animation:l===`connecting`?`connection-pulse 1.2s ease-in-out infinite`:`none`}}),`pi-kot`]}),(0,M.jsx)(`button`,{onClick:()=>Pe(!0),title:`Add a new project`,style:{background:`transparent`,border:`1px solid var(--border)`,color:`var(--text-secondary)`,fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,cursor:`pointer`,lineHeight:1,padding:`4px 8px`,borderRadius:`var(--radius-sm)`,transition:`all var(--duration) var(--ease)`},onMouseOver:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-glass-hover)`},onMouseOut:e=>{e.currentTarget.style.color=`var(--text-secondary)`,e.currentTarget.style.background=`transparent`},children:`Add Project`})]}),(0,M.jsx)(`div`,{className:`project-list`,children:n.map(n=>{let i=n.id===t,l=te.has(n.id),u=r[n.id]??[];return(0,M.jsxs)(`div`,{className:`project-group${i?` active`:``}`,children:[(0,M.jsxs)(`div`,{className:`project-row${i?` active`:``}`,onClick:()=>{i?Ue(n.id):a(n.id)},role:`button`,tabIndex:0,children:[(0,M.jsxs)(`span`,{className:`project-icon`,children:[(0,M.jsx)(`svg`,{className:`project-icon-folder`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{color:vae(n.id)},children:(0,M.jsx)(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`})}),(0,M.jsx)(`svg`,{className:`project-icon-arrow`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,M.jsx)(`path`,{d:`M9 18l6-6-6-6`})})]}),(0,M.jsx)(`span`,{className:`project-name`,children:n.name.toLowerCase()}),(0,M.jsx)(`div`,{className:`project-actions-left`,children:n.name!==`Default`&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),ue(n.id)},className:`project-action-btn`,title:`Remove from sidebar`,children:(0,M.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`polygon`,{points:`5 14 12 5 19 14`}),(0,M.jsx)(`line`,{x1:`4`,y1:`19`,x2:`20`,y2:`19`})]})})}),(0,M.jsx)(`div`,{className:`project-actions-right`,children:(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),o(n.id)},className:`project-action-btn`,title:`New draft session`,children:(0,M.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,M.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]})})})]}),l&&(0,M.jsx)(fae,{projectId:n.id,sessions:u,activeSessionId:e,isStreaming:c,renamingSessionId:ne,renameValue:re,renameInputRef:he,expandedWorkerGroups:pe,onSelect:e=>{s(e),Oe()},onRenameStart:(e,t)=>{O(e),k(t),setTimeout(()=>he.current?.focus(),50)},onRenameChange:k,onRenameCommit:(e,t)=>{let n=re.trim();n.length>0&&n!==t&&pn.getState().renameSession(e,n),O(void 0)},onRenameCancel:()=>O(void 0),onToggleWorkerGroup:e=>{me(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},onNewSession:()=>{o(n.id),Oe()}})]},n.id)})}),t!==void 0&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{className:`archived-toggle`,onClick:()=>{let e=ie===t?void 0:t;e!==void 0&&pn.getState().loadArchivedSessions(t),ce(e)},children:[(0,M.jsx)(`span`,{className:`project-chevron`,children:ie===t?`▾`:`▸`}),(0,M.jsx)(`span`,{className:`project-name`,style:{fontSize:`12px`},children:`Archived`})]}),ie===t&&(()=>{let e=pn.getState().archivedSessions[t];return e===void 0?(0,M.jsx)(`div`,{className:`archived-status`,children:(0,M.jsx)(US,{variant:`list`,count:2})}):e.length===0?(0,M.jsx)(`div`,{className:`archived-status`,children:`No archived sessions`}):(0,M.jsx)(`div`,{className:`session-list project-sublist archived-list`,children:e.map(e=>(0,M.jsxs)(`div`,{className:`session-item archived`,children:[(0,M.jsx)(`span`,{className:`session-name`,children:e.name??`Session ${e.sessionId.slice(0,8)}`}),(0,M.jsx)(`button`,{className:`session-restore-btn`,title:`Restore session`,onClick:n=>{n.stopPropagation(),pn.getState().unarchiveSession(e.sessionId,t)},children:`↻`})]},e.sessionId))})})()]}),(0,M.jsx)(`div`,{className:`sidebar-footer`,children:(0,M.jsxs)(`div`,{className:`mobile-only`,style:{display:`flex`,flexDirection:`column`,gap:`4px`},children:[(0,M.jsxs)(`button`,{type:`button`,onClick:()=>{Me(!0),De(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,M.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),(0,M.jsx)(`path`,{d:`M2 17l10 5 10-5`}),(0,M.jsx)(`path`,{d:`M2 12l10 5 10-5`})]}),`MCP Settings`]}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>{Ae(!0),De(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:`⚙ Settings`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>{ze(),De(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`,color:`var(--text-secondary)`},children:`Sign out`})]})})]}),(0,M.jsxs)(`div`,{className:`main-area`,children:[(0,M.jsxs)(`div`,{className:`header`,children:[(0,M.jsxs)(`div`,{className:`header-left`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:Ee,className:`sidebar-toggle`,title:_e?`Show sidebar`:`Hide sidebar`,children:_e?`☰`:`✕`}),e!==void 0&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`span`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-secondary)`,marginLeft:`8px`},children:[`Session `,e.slice(0,8)]}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>ke(!0),title:`Session tree (branching history)`,style:{background:`none`,border:`none`,color:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`🌿`})]})]}),(0,M.jsxs)(`div`,{className:`header-right`,children:[(0,M.jsx)(KS,{data:ge,onInspect:e=>fe(e)}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>Le(`files`),title:`File explorer`,style:{background:`none`,border:`none`,color:we===`files`?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`📂`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>{Ne(!0),De(!0)},title:`Terminal`,style:{background:`none`,border:`none`,color:Se?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`>_`}),(0,M.jsxs)(`div`,{className:`header-overflow desktop-only`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:()=>Me(!0),title:`MCP Settings`,style:{background:`none`,border:`none`,color:xe?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:(0,M.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),(0,M.jsx)(`path`,{d:`M2 17l10 5 10-5`}),(0,M.jsx)(`path`,{d:`M2 12l10 5 10-5`})]})}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>Ae(!0),title:`Settings`,style:{background:`none`,border:`none`,color:ye?`var(--accent-text)`:`var(--text-dim)`,fontSize:`14px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`⚙`}),(0,M.jsx)(`button`,{type:`button`,onClick:ze,title:`Sign out (clear stored token)`,style:{background:`none`,border:`none`,color:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`Sign out`})]})]})]}),ee!==void 0&&(0,M.jsxs)(`div`,{onClick:()=>T(void 0),className:`error-banner`,style:{position:`absolute`,top:`52px`,left:`16px`,right:`16px`,zIndex:9,cursor:`pointer`},children:[ee,` — click to dismiss`]}),e===void 0?(0,M.jsx)(`div`,{className:`centered`,style:{height:`100%`},children:(0,M.jsxs)(`div`,{className:`welcome`,children:[(0,M.jsx)(`div`,{className:`welcome-icon`,children:`⌨️`}),(0,M.jsx)(`div`,{className:`welcome-text`,children:`Select or create a session`}),(0,M.jsx)(`div`,{className:`welcome-hint`,children:`to start chatting with the coding agent`})]})}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(Y9,{label:`ChatView`,compact:!0,children:(0,M.jsx)(NS,{sessionId:e,modelName:v||void 0,providerName:x||void 0})}),(0,M.jsx)(Y9,{label:`OrchestrationPanel`,compact:!0,children:(0,M.jsx)(WS,{sessionId:e,open:be,onClose:()=>je(!1)})}),(0,M.jsx)(RS,{sessionId:e}),(0,M.jsx)(LS,{sessionId:e,showOrch:be,setShowOrch:je,selectedModel:v,onModelSelect:Ve,onModelError:He})]})]}),e!==void 0&&t!==void 0&&(0,M.jsx)(Y9,{label:`SessionTreePanel`,compact:!0,children:(0,M.jsx)(fC,{sessionId:e,projectId:t,open:ve,onClose:()=>ke(!1)})}),t!==void 0&&(0,M.jsx)(Y9,{label:`FileExplorer`,compact:!0,children:(0,M.jsx)(g4,{projectId:t,open:we!==void 0,onClose:()=>Ie(void 0),initialTab:we})}),le!==void 0&&(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:()=>ue(void 0),children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`90vw`,height:`auto`,minHeight:0},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:`Remove project?`}),(0,M.jsx)(`button`,{onClick:()=>ue(void 0),className:`settings-close`,title:`Close`,children:`✕`})]}),(0,M.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,M.jsxs)(`p`,{style:{fontSize:13,color:`var(--text-secondary)`,marginBottom:20,lineHeight:1.5},children:[`This removes `,(0,M.jsx)(`strong`,{children:n.find(e=>e.id===le)?.name??le}),` from the sidebar — all sessions stay safely on disk. You can add it back anytime.`]}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,M.jsx)(`button`,{onClick:()=>ue(void 0),className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`Cancel`}),(0,M.jsx)(`button`,{onClick:()=>{pn.getState().deleteProject(le),ue(void 0)},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12,background:`var(--accent-red, #e06c75)`,color:`#fff`,border:`none`},children:`Remove`})]})]})]})}),ye&&(0,M.jsx)(Y9,{label:`SettingsPanel`,compact:!0,children:(0,M.jsx)(XC,{onClose:()=>Ae(!1)})}),de!==void 0&&(0,M.jsx)(JS,{data:de,onClose:()=>fe(void 0),sessionId:e}),(0,M.jsx)(Y9,{label:`TerminalPanel`,compact:!0,children:(0,M.jsx)(rae,{open:Se,onClose:()=>Ne(!1)})}),xe&&(0,M.jsx)(Y9,{label:`MCPPanel`,compact:!0,children:(0,M.jsx)(iC,{onClose:()=>Me(!1)})}),e!==void 0&&(0,M.jsx)(oae,{sessionId:e}),(0,M.jsx)(sae,{}),Ce&&(0,M.jsx)(hae,{open:Ce,onClose:()=>Pe(!1)})]})}FC(PC());var $9=document.getElementById(`root`);if($9===null)throw Error(`root element not found`);(0,ee.createRoot)($9).render((0,M.jsx)(b.StrictMode,{children:(0,M.jsx)(yae,{})}));
|
|
448
|
-
//# sourceMappingURL=index-
|
|
447
|
+
`).filter(Boolean),a=i[0]??t,c=i.slice(1).join(` `).trim().replace(/\u001b\[[0-9;]*m/g,``);return(0,M.jsxs)(`button`,{onClick:async r=>{r.stopPropagation();try{await Dt(e,n.requestId,t)}catch(e){console.error(`Extension UI respond failed:`,e)}},onMouseEnter:()=>s(r),style:{display:`flex`,width:`100%`,alignItems:`flex-start`,gap:10,padding:`8px 10px`,borderRadius:6,border:r===o?`1px solid var(--accent-border)`:`1px solid transparent`,background:r===o?`var(--accent-subtle)`:`none`,cursor:`pointer`,textAlign:`left`,fontSize:11,fontFamily:`inherit`,color:`var(--text-primary)`,transition:`background 0.15s`},children:[(0,M.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:`50%`,background:`var(--bg-glass-hover)`,color:`var(--text-dim)`,fontSize:10,fontWeight:700,flexShrink:0,marginTop:1},children:r+1}),(0,M.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,M.jsx)(`div`,{style:{fontSize:11,fontWeight:500,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:a}),c&&(0,M.jsx)(`div`,{style:{fontSize:10,color:`var(--text-dim)`,marginTop:2,fontFamily:`monospace`},children:c})]})]},r)})})}),(0,M.jsx)(`div`,{style:{padding:`8px 16px`,borderTop:`1px solid var(--border-color)`,fontSize:10,color:`var(--text-dim)`,textAlign:`center`},children:`Select an option above`})]})})}if(l===`extension_ui_confirm`){let n=t;return(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`92vw`,height:`auto`,minHeight:0},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,M.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,M.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,M.jsx)(`p`,{style:{fontSize:13,color:`var(--text-secondary)`,marginBottom:20,lineHeight:1.5},children:n.message}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,M.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await Dt(e,n.requestId,!1)}catch(e){console.error(e)}},className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`No`}),(0,M.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await Dt(e,n.requestId,!0)}catch(e){console.error(e)}},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12},children:`Yes`})]})]})]})})}if(l===`extension_ui_input`){let n=t;return(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`92vw`,height:`auto`,minHeight:0},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,M.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,M.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,M.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:n.placeholder,autoFocus:!0,style:{width:`100%`,padding:`8px 10px`,fontSize:12,borderRadius:6,border:`1px solid var(--border-color)`,background:`var(--bg-glass)`,color:`var(--text-primary)`,outline:`none`,fontFamily:`inherit`,boxSizing:`border-box`,marginBottom:12},onKeyDown:async t=>{if(t.key===`Enter`){t.stopPropagation();try{await Dt(e,n.requestId,i)}catch(e){console.error(e)}}t.key===`Escape`&&c()}}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,M.jsx)(`button`,{onClick:c,className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`Cancel`}),(0,M.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await Dt(e,n.requestId,i)}catch(e){console.error(e)}},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12},children:`OK`})]})]})]})})}return r&&t===void 0?(0,M.jsx)(`div`,{className:`settings-overlay`,children:(0,M.jsx)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:300,maxWidth:`92vw`,height:`auto`,minHeight:0,textAlign:`center`},children:(0,M.jsx)(`div`,{className:`settings-body`,style:{padding:`20px`},children:(0,M.jsx)(`div`,{style:{fontSize:12,color:`var(--text-dim)`},children:`Extension command running…`})})})}):null}function sae(){let e=nn(e=>e.notifications),t=nn(e=>e.dismissNotification),[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(`info`),[c,l]=(0,b.useState)(!1),u=e[e.length-1];(0,b.useEffect)(()=>{if(u&&u.id!==n){r(u.id),a(u.message),s(u.type),l(!0);let e=setTimeout(()=>{l(!1),setTimeout(()=>t(u.id),300)},15e3);return()=>clearTimeout(e)}},[u,n,t]);let d=()=>{n&&(l(!1),setTimeout(()=>{t(n),r(null)},250))};return!n||!i?null:(0,M.jsx)(`div`,{className:`toast-overlay`,onClick:d,children:(0,M.jsxs)(`div`,{className:`toast-card ${c?`toast-card-enter`:`toast-card-exit`}`,onClick:e=>e.stopPropagation(),role:`alert`,children:[(0,M.jsxs)(`header`,{className:`toast-card-header`,children:[(0,M.jsxs)(`span`,{className:`toast-card-title`,children:[o===`info`&&`ℹ️`,o===`warning`&&`⚠️`,o===`error`&&`❌`,(0,M.jsxs)(`span`,{style:{marginLeft:6},children:[o===`info`&&`Context Mode`,o===`warning`&&`Warning`,o===`error`&&`Error`]})]}),(0,M.jsx)(`button`,{className:`toast-card-close`,onClick:d,"aria-label":`Dismiss`,children:`✕`})]}),(0,M.jsx)(`div`,{className:`toast-card-body`,children:(0,M.jsx)(`pre`,{className:`toast-card-content`,children:i})})]})})}var W9=`pi-kot/favorite-sessions`;function cae(){try{let e=localStorage.getItem(W9);return e?JSON.parse(e):[]}catch{return[]}}function lae(e){try{localStorage.setItem(W9,JSON.stringify(e))}catch{}}var uae=w((e,t)=>({favorites:cae(),toggle:n=>{let r=t().favorites,i=r.includes(n)?r.filter(e=>e!==n):[...r,n];lae(i),e({favorites:i})}})),G9=8,dae=10;function fae({projectId:e,sessions:t,activeSessionId:n,isStreaming:r,renamingSessionId:i,renameValue:a,renameInputRef:o,expandedWorkerGroups:s,onSelect:c,onRenameStart:l,onRenameChange:u,onRenameCommit:d,onRenameCancel:f,onToggleWorkerGroup:p,onNewSession:m}){let[h,g]=(0,b.useState)(``),[_,v]=(0,b.useState)(!1),y=(0,b.useMemo)(()=>t.filter(e=>!e.supervisorId),[t]),x=(0,b.useMemo)(()=>t.filter(e=>e.supervisorId),[t]),S=(0,b.useMemo)(()=>x.filter(e=>!y.some(t=>t.sessionId===e.supervisorId)),[x,y]),C=h.trim().toLowerCase(),w=(0,b.useMemo)(()=>C?y.filter(e=>(e.name??`Session ${e.sessionId.slice(0,8)}`).toLowerCase().includes(C)):y,[y,C]),ee=!_&&!C&&w.length>G9,T=ee?w.slice(0,G9).includes(w.find(e=>e.sessionId===n)??w[0])?w.slice(0,G9):[...w.slice(0,G9-1),w.find(e=>e.sessionId===n)??w[G9-1]].filter(Boolean):w,te=w.length-T.length,{favorites:E,toggle:D}=uae(),{favSessions:ne,normalSessions:O}=(0,b.useMemo)(()=>{let e=[],t=[];for(let n of T)E.includes(n.sessionId)?e.push(n):t.push(n);return{favSessions:e,normalSessions:t}},[T,E]),re=t.length>=dae,k=e=>{let t=x.filter(t=>t.supervisorId===e.sessionId),m=s.has(e.sessionId),h=n===e.sessionId,g=e.name??`Session ${e.sessionId.slice(0,8)}`,_=E.includes(e.sessionId);return(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{onClick:t=>{i!==e.sessionId&&(t.stopPropagation(),c(e.sessionId))},className:`session-item${h?` active`:``}`,onDoubleClick:t=>{t.stopPropagation(),l(e.sessionId,g)},children:[t.length>0&&(0,M.jsx)(`span`,{className:`project-chevron`,onClick:t=>{t.stopPropagation(),p(e.sessionId)},style:{cursor:`pointer`,marginRight:`4px`},children:m?`▾`:`▶`}),i===e.sessionId?(0,M.jsx)(`input`,{ref:o,className:`session-rename-input`,value:a,onChange:e=>u(e.target.value),onBlur:()=>d(e.sessionId,g),onKeyDown:e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&f()},onClick:e=>e.stopPropagation()}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:`session-fav-btn${_?` favorited`:``}`,onClick:t=>{t.stopPropagation(),D(e.sessionId)},title:_?`Remove from favorites`:`Add to favorites`,children:_?`★`:`☆`}),(0,M.jsx)(`span`,{className:`session-name`,children:g}),(0,M.jsx)(`button`,{className:`session-archive-btn`,title:`Archive session`,onClick:t=>{t.stopPropagation(),confirm(`Archive "${g}"?`)&&pn.getState().archiveSession(e.sessionId)},children:`✕`})]})]}),t.length>0&&m&&(0,M.jsx)(`div`,{className:`session-children`,children:t.map(e=>(0,M.jsx)(K9,{worker:e,isActive:n===e.sessionId,isStreaming:r&&n===e.sessionId,onSelect:c},e.sessionId))})]},e.sessionId)};return(0,M.jsxs)(`div`,{className:`session-list project-sublist`,children:[re&&(0,M.jsx)(`div`,{style:{padding:`2px 8px 3px`},children:(0,M.jsx)(`input`,{value:h,onChange:e=>{g(e.target.value),v(!1)},placeholder:`Search sessions…`,className:`session-search-input`,type:`search`})}),y.length===0&&x.length===0&&(0,M.jsx)(`div`,{style:{padding:`6px 12px 2px`,fontSize:`11px`,color:`var(--text-dim)`,fontStyle:`italic`},children:`No sessions yet`}),C&&w.length===0&&(0,M.jsxs)(`div`,{style:{padding:`6px 12px 2px`,fontSize:`11px`,color:`var(--text-dim)`,fontStyle:`italic`},children:[`No matches for "`,h,`"`]}),ne.length>0&&!C&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{className:`favorites-section-header`,children:`★ Favorites`}),ne.map(k),O.length>0&&(0,M.jsx)(`div`,{className:`favorites-section-divider`})]}),C?T.map(k):O.map(k),ee&&te>0&&(0,M.jsxs)(`button`,{className:`session-show-more-btn`,onClick:()=>v(!0),type:`button`,children:[`↓ `,te,` more session`,te===1?``:`s`]}),_&&w.length>G9&&(0,M.jsx)(`button`,{className:`session-show-more-btn`,onClick:()=>v(!1),type:`button`,children:`↑ Show less`}),S.map(e=>(0,M.jsx)(K9,{worker:e,isActive:n===e.sessionId,isStreaming:r&&n===e.sessionId,onSelect:c},e.sessionId)),(0,M.jsxs)(`button`,{className:`new-session-row`,onClick:e=>{e.stopPropagation(),m()},type:`button`,children:[(0,M.jsx)(`span`,{style:{fontSize:`14px`,lineHeight:1},children:`+`}),`New session`]})]})}function K9({worker:e,isActive:t,isStreaming:n,onSelect:r}){return(0,M.jsxs)(`div`,{onClick:t=>{t.stopPropagation(),r(e.sessionId)},className:`session-item session-worker-item${t?` active`:``}`,children:[(0,M.jsx)(`span`,{className:`session-worker-dot${n?` active`:``}`,style:{background:e.isLive&&!n?`#98c379`:e.isLive?void 0:`#56b6c2`}}),(0,M.jsx)(`span`,{className:`session-worker-name`,children:e.name??`Session ${e.sessionId.slice(0,8)}`})]})}function q9(e,t){return e===`~`?t:e.startsWith(`~/`)?t+e.slice(1):e}function J9(e){if(e.endsWith(`/`))return e;let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1):e}function pae(e){if(e.endsWith(`/`))return``;let t=e.lastIndexOf(`/`);return t>=0?e.slice(t+1):e}function mae(e){try{let t=e.replace(/\.git$/,``).split(`/`).filter(Boolean).pop()||``;return t.split(`:`).filter(Boolean).pop()||t}catch{return``}}function hae({open:e,onClose:t}){let[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)(`~/`),[o,s]=(0,b.useState)([]),[c,l]=(0,b.useState)(!1),[u,d]=(0,b.useState)(),[f,p]=(0,b.useState)(0),[m,h]=(0,b.useState)(!1),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(``),[x,S]=(0,b.useState)(!1),[C,w]=(0,b.useState)(!1),[ee,T]=(0,b.useState)(!1),te=(0,b.useRef)(null),E=pn(e=>e.loadProjects),D=pn(e=>e.setActiveProject);(0,b.useEffect)(()=>{if(!e)return;let t=!1;return a(`~/`),y(``),_(!1),h(!1),p(0),d(void 0),T(!1),w(!1),Se().then(e=>{t||(r(e),requestAnimationFrame(()=>te.current?.focus()))}).catch(()=>{t||(r(`/`),requestAnimationFrame(()=>te.current?.focus()))}),()=>{t=!0}},[e]);let ne=(0,b.useMemo)(()=>n?q9(J9(i),n):``,[i,n]);(0,b.useEffect)(()=>{if(!e||!ne){s([]);return}let t=!1;return l(!0),d(void 0),Ce(ne).then(e=>{t||s(e)}).catch(e=>{t||(s([]),d(e instanceof Error?e.message:`Failed to load directory`))}).finally(()=>{t||l(!1)}),()=>{t=!0}},[e,ne]);let O=pae(i),re=(0,b.useMemo)(()=>{let e=O.toLowerCase(),t=m||O.startsWith(`.`);return o.filter(n=>n.isDirectory&&(t||!n.name.startsWith(`.`))&&n.name.toLowerCase().startsWith(e))},[o,O,m]);(0,b.useEffect)(()=>{p(0)},[re.length]);let k=i!==`~/`&&i!==`/`,ie=(0,b.useMemo)(()=>n?q9(i.replace(/\/+$/,``),n):``,[i,n]),ae=(0,b.useCallback)(e=>{let t=e.startsWith(n)?`~`+e.slice(n.length):e;a(t+`/`)},[n]),oe=(0,b.useCallback)(()=>{let e=J9(i.replace(/\/+$/,``)).replace(/\/+$/,``);if(e===`~`||e===``){let e=n&&n.split(`/`).slice(0,-1).join(`/`)||`/`,t=e===`/`?`/`:`~`+e.slice(n.lastIndexOf(`/`));a(t.endsWith(`/`)?t:t+`/`);return}let t=e.lastIndexOf(`/`),r=t>=0?e.slice(0,t+1):`/`;a(r)},[i,n]),se=(0,b.useCallback)(async e=>{try{await be(e.split(`/`).filter(Boolean).pop()||`unnamed`,e),await E();let n=pn.getState(),r=n.projects[n.projects.length-1];r&&D(r.id),t()}catch(e){d(e instanceof Error?e.message:`Failed to add project`)}},[E,D,t]),ce=(0,b.useCallback)(async()=>{if(!(!ie||ee)){T(!0),d(void 0);try{await be(ie.split(`/`).filter(Boolean).pop()||`unnamed`,ie),await E();let e=pn.getState(),n=e.projects[e.projects.length-1];n&&D(n.id),t()}catch(e){d(e instanceof Error?e.message:`Failed to add project`)}finally{T(!1)}}},[ie,ee,E,D,t]),le=(0,b.useCallback)(()=>{if(!v.trim()||!ie||C)return;w(!0),d(void 0);let e=mae(v.trim())||`repo`,n={url:v.trim(),folderName:e,projectName:e};x&&(n.targetPath=ie.replace(/\/+$/,``)+`/`+e),Pe(n,e=>{switch(e.type){case`done`:E().then(()=>{let e=pn.getState(),n=e.projects[e.projects.length-1];n&&D(n.id),t()}),w(!1);break;case`error`:d(e.message),w(!1);break}},e=>{d(e.message),w(!1)})},[v,ie,x,C,E,D,t]),ue=(0,b.useCallback)(e=>{if(e.key===`ArrowDown`)e.preventDefault(),p(e=>Math.min(re.length-1,e+1));else if(e.key===`ArrowUp`)e.preventDefault(),p(e=>Math.max(0,e-1));else if(e.key===`Enter`){if(e.preventDefault(),re.length>0&&f>=0){let e=re[f];O&&!e.name.startsWith(O)?a(J9(i)+e.name+`/`):ae(e.path)}}else e.key===`Backspace`&&!i&&(e.preventDefault(),t())},[re,f,O,i,ae,t]);return e?(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:t,children:(0,M.jsxs)(`div`,{className:`settings-panel add-project-settings-panel`,onClick:e=>e.stopPropagation(),children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:`14px`,fontWeight:700,color:`var(--accent-text)`},children:`Add Project`}),(0,M.jsx)(`button`,{className:`settings-close`,onClick:t,title:`Close`,children:(0,M.jsx)(Kn,{size:16})})]}),(0,M.jsxs)(`div`,{className:`add-project-dialog-body`,children:[(0,M.jsxs)(`div`,{className:`add-project-dialog-bar`,children:[(0,M.jsxs)(`button`,{className:`add-project-dialog-tab`+(g?``:` active`),onClick:()=>_(!1),children:[(0,M.jsx)(Fn,{size:14}),`Browse`]}),(0,M.jsxs)(`button`,{className:`add-project-dialog-tab`+(g?` active`:``),onClick:()=>_(!0),children:[(0,M.jsx)(In,{size:14}),`Clone`]})]}),g&&(0,M.jsxs)(`div`,{className:`add-project-dialog-clone-row`,children:[(0,M.jsx)(Ln,{size:14,className:`add-project-dialog-icon`}),(0,M.jsx)(`input`,{type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:`https://github.com/user/repo.git`,className:`add-project-dialog-input`,style:{paddingLeft:`30px`},spellCheck:!1})]}),g&&(0,M.jsx)(`div`,{className:`add-project-dialog-clone-dest`,children:(0,M.jsxs)(`label`,{className:`add-project-dialog-toggle`,children:[(0,M.jsx)(`input`,{type:`checkbox`,checked:x,onChange:e=>S(e.target.checked)}),(0,M.jsx)(`span`,{className:`add-project-dialog-toggle-track`,children:(0,M.jsx)(`span`,{className:`add-project-dialog-toggle-knob`})}),(0,M.jsx)(`span`,{className:`add-project-dialog-toggle-label`,children:x?`Clone to custom path`:`Clone to workspace`})]})}),(0,M.jsxs)(`div`,{className:`add-project-dialog-path-row`,children:[(0,M.jsx)(Fn,{size:14,className:`add-project-dialog-icon`}),(0,M.jsx)(`input`,{ref:te,type:`text`,value:i,onChange:e=>a(e.target.value.replace(/\\/g,`/`)),onKeyDown:ue,placeholder:`~/`,className:`add-project-dialog-input`,spellCheck:!1}),(0,M.jsx)(`button`,{className:`add-project-dialog-btn`,disabled:g?!v.trim()||!ie||C:!ie||ee,onClick:g?le:ce,children:g?C?`Cloning…`:`Clone & Add`:ee?`Adding…`:`Add`})]}),(0,M.jsxs)(`div`,{className:`add-project-dialog-tools`,children:[(0,M.jsxs)(`button`,{className:`add-project-dialog-tool`,onClick:oe,disabled:!k,title:`Go up`,children:[(0,M.jsx)(wn,{size:14}),(0,M.jsx)(`span`,{children:`..`})]}),(0,M.jsxs)(`button`,{className:`add-project-dialog-tool`,onClick:()=>h(e=>!e),title:m?`Hide hidden files`:`Show hidden files`,children:[m?(0,M.jsx)(Nn,{size:14}):(0,M.jsx)(Pn,{size:14}),(0,M.jsx)(`span`,{children:m?`Hide hidden`:`Show hidden`})]}),(0,M.jsx)(`span`,{className:`add-project-dialog-path-display`,children:ie})]}),u&&(0,M.jsx)(`div`,{className:`add-project-dialog-error`,children:u}),(0,M.jsx)(`div`,{className:`add-project-dialog-list`,children:c?(0,M.jsx)(`div`,{className:`add-project-dialog-empty`,children:`Loading…`}):re.length===0?(0,M.jsx)(`div`,{className:`add-project-dialog-empty`,children:O?`No matching directories`:`Empty directory`}):re.map((e,t)=>(0,M.jsxs)(`div`,{className:`add-project-dialog-entry`+(t===f?` highlighted`:``),onMouseEnter:()=>p(t),onClick:()=>ae(e.path),children:[(0,M.jsx)(Dn,{size:14,className:`add-project-dialog-entry-arrow`}),(0,M.jsx)(Fn,{size:14,className:`add-project-dialog-entry-folder`}),(0,M.jsx)(`span`,{className:`add-project-dialog-entry-name`,children:e.name}),(0,M.jsx)(`button`,{className:`add-project-dialog-entry-add`,onClick:t=>{t.stopPropagation(),se(e.path)},title:`Add as project`,children:(0,M.jsx)(Hn,{size:14})})]},e.path))})]}),(0,M.jsx)(`div`,{className:`add-project-dialog-footer`,children:`↑↓ Navigate · Enter browse · + quick-add`})]})}):null}var Y9=class extends b.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[ErrorBoundary${this.props.label?`:${this.props.label}`:``}]`,e,t.componentStack)}handleRetry=()=>{this.setState({error:null})};render(){if(this.state.error===null)return this.props.children;let{error:e}=this.state,{compact:t}=this.props;return t?(0,M.jsxs)(`div`,{style:{padding:`12px`,margin:`8px`,borderRadius:`6px`,background:`var(--bg-glass, rgba(220,80,80,0.08))`,border:`1px solid var(--accent-red, #e06c75)`,fontSize:`12px`,color:`var(--text-secondary, #999)`,lineHeight:1.4},children:[(0,M.jsxs)(`div`,{style:{fontWeight:600,color:`var(--accent-red, #e06c75)`,marginBottom:4},children:[`⚠️ `,e.name??`Error`]}),(0,M.jsx)(`div`,{style:{marginBottom:8,wordBreak:`break-word`},children:e.message}),(0,M.jsx)(`button`,{onClick:this.handleRetry,style:{padding:`4px 10px`,fontSize:`11px`,borderRadius:`4px`,border:`1px solid var(--border, #444)`,background:`var(--bg-surface, #1e1e1e)`,color:`var(--text-primary, #ddd)`,cursor:`pointer`},children:`Retry`})]}):(0,M.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,padding:`40px 24px`,height:`100%`,boxSizing:`border-box`},children:(0,M.jsxs)(`div`,{style:{maxWidth:480,width:`100%`,padding:`24px`,borderRadius:`8px`,background:`var(--bg-surface, #1e1e1e)`,border:`1px solid var(--border, #444)`},children:[(0,M.jsx)(`div`,{style:{fontSize:14,fontWeight:600,color:`var(--accent-red, #e06c75)`,marginBottom:8},children:`Something went wrong`}),(0,M.jsx)(`div`,{style:{fontSize:12,color:`var(--text-secondary, #999)`,marginBottom:4,fontFamily:`monospace`},children:e.name}),(0,M.jsx)(`div`,{style:{fontSize:13,color:`var(--text-primary, #ddd)`,marginBottom:20,lineHeight:1.5,wordBreak:`break-word`},children:e.message}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,M.jsx)(`button`,{onClick:this.handleRetry,style:{padding:`6px 16px`,fontSize:12,borderRadius:`6px`,border:`none`,background:`var(--accent-primary, #569cd6)`,color:`#fff`,cursor:`pointer`},children:`Retry`}),(0,M.jsx)(`button`,{onClick:()=>{this.setState({error:null}),window.location.reload()},style:{padding:`6px 16px`,fontSize:12,borderRadius:`6px`,border:`1px solid var(--border, #444)`,background:`transparent`,color:`var(--text-secondary, #999)`,cursor:`pointer`},children:`Reload page`})]})]})})}};function gae(e){let t=(0,b.useRef)(null),n=e.threshold||50;(0,b.useEffect)(()=>{let r=e=>{t.current={x:e.touches[0].clientX,y:e.touches[0].clientY}},i=r=>{if(!t.current)return;let i=t.current.x-r.changedTouches[0].clientX,a=t.current.y-r.changedTouches[0].clientY;Math.abs(i)>Math.abs(a)&&Math.abs(i)>n&&(i>0&&e.onSwipeLeft?e.onSwipeLeft():i<0&&e.onSwipeRight&&e.onSwipeRight()),t.current=null};return window.addEventListener(`touchstart`,r,{passive:!0}),window.addEventListener(`touchend`,i,{passive:!0}),()=>{window.removeEventListener(`touchstart`,r),window.removeEventListener(`touchend`,i)}},[e.onSwipeLeft,e.onSwipeRight,n])}var _ae=w((e,t)=>({sidebarCollapsed:!1,showTreePanel:!1,showSettings:!1,showOrch:!1,showMCP:!1,showTerminal:!1,showAddProjectDialog:!1,explorerTab:void 0,isMobile:typeof window<`u`?window.innerWidth<=600:!1,toggleSidebar:()=>{let{sidebarCollapsed:n,setExplorerTab:r}=t();n&&r(void 0),e({sidebarCollapsed:!n})},setSidebarCollapsed:t=>e({sidebarCollapsed:t}),closeSidebarOnMobile:()=>{window.innerWidth<=600&&e({sidebarCollapsed:!0})},setShowTreePanel:t=>e({showTreePanel:t}),setShowSettings:t=>e({showSettings:t}),setShowOrch:t=>e({showOrch:t}),setShowMCP:t=>e({showMCP:t}),setShowTerminal:t=>e({showTerminal:t}),setShowAddProjectDialog:t=>e({showAddProjectDialog:t}),setExplorerTab:t=>e({explorerTab:t}),toggleExplorerTab:n=>{let{explorerTab:r}=t();e(r===n?{explorerTab:void 0}:{explorerTab:n,sidebarCollapsed:!0})},closeAllPanels:()=>e({showTreePanel:!1,showSettings:!1,showOrch:!1,showMCP:!1,showTerminal:!1,showAddProjectDialog:!1,explorerTab:void 0}),setIsMobile:t=>e({isMobile:t})})),X9=new Set,Z9=!1,Q9=[`var(--accent)`,`#d19a66`,`#56b6c2`,`#c678dd`,`#e5c07b`,`#98c379`,`#e06c75`,`#61afef`];function vae(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Q9[Math.abs(t)%Q9.length]}function yae(){let e=pn(e=>e.activeSessionId),t=pn(e=>e.activeProjectId);pn(e=>e.sessions);let n=pn(e=>e.projects),r=pn(e=>e.projectSessions),i=pn(e=>e.loadProjects),a=pn(e=>e.setActiveProject),o=pn(e=>e.createAndActivate),s=pn(e=>e.setActiveSession);pn(e=>e.refreshSessions);let c=pn(e=>e.streamState.isStreaming),l=pn(e=>e.connectionState),[u,d]=(0,b.useState)(!1),[f,p]=(0,b.useState)(``),[m,h]=(0,b.useState)(),[g,_]=(0,b.useState)(!0),[v,y]=(0,b.useState)(``),[x,S]=(0,b.useState)(``),[C,w]=(0,b.useState)([]),[ee,T]=(0,b.useState)(),[te,E]=(0,b.useState)(new Set),[ne,O]=(0,b.useState)(),[re,k]=(0,b.useState)(``),[ie,ce]=(0,b.useState)(),[le,ue]=(0,b.useState)(),[de,fe]=(0,b.useState)(void 0),[pe,me]=(0,b.useState)(new Set),he=(0,b.useRef)(null),ge=GS(e),{sidebarCollapsed:_e,showTreePanel:ve,showSettings:ye,showOrch:be,showMCP:xe,showTerminal:Se,showAddProjectDialog:Ce,explorerTab:we,isMobile:Te,toggleSidebar:Ee,setSidebarCollapsed:De,closeSidebarOnMobile:Oe,setShowTreePanel:ke,setShowSettings:Ae,setShowOrch:je,setShowMCP:Me,setShowTerminal:Ne,setShowAddProjectDialog:Pe,setExplorerTab:Ie,toggleExplorerTab:Le,setIsMobile:Re}=_ae();(0,b.useEffect)(()=>{let e=()=>Re(window.innerWidth<=600);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),gae({onSwipeLeft:()=>De(!0),onSwipeRight:()=>De(!1),threshold:60}),(0,b.useEffect)(()=>{(async()=>{try{let{authEnabled:e}=await oe();if(e&&(typeof localStorage<`u`?localStorage.getItem(`pi-kot/auth-token`):null)===null){d(!0),_(!1);return}await i()}catch{}try{let e=await Fe();w(e.providers);let t=e.providers.flatMap(e=>e.models),n=!1;try{let e=localStorage.getItem(`pi-kot-model`);if(e){let r=JSON.parse(e),i=t.find(e=>e.id===r.modelId&&e.hasAuth);i&&(y(i.id),S(r.provider),n=!0)}}catch{}if(!n){let n=t.find(e=>e.hasAuth);n?(y(n.id),S(e.providers.find(e=>e.models.some(e=>e.id===n.id))?.provider??``)):t.length>0&&(y(t[0].id),S(e.providers[0]?.provider??``))}}catch{}_(!1)})()},[]),(0,b.useEffect)(()=>{t!==void 0&&E(e=>new Set(e).add(t))},[t]),(0,b.useEffect)(()=>{if(g||u||n.length===0||t===void 0)return;let i=r[t];if(i!==void 0&&!Z9){if(Z9=!0,e!==void 0){if(!i.some(t=>t.sessionId===e)){try{localStorage.removeItem(`pi-kot/active-session-id`)}catch{}pn.setState({activeSessionId:void 0});return}pn.getState().sseClient===void 0&&s(e);return}i.length>0?s(i[0].sessionId):X9.has(t)||(X9.add(t),o(t))}},[g,u,t,r,e]),(0,b.useEffect)(()=>{e&&(async()=>{try{let t=await Ye(e);if(t.provider&&t.modelId){y(t.modelId),S(t.provider);try{localStorage.setItem(`pi-kot-model`,JSON.stringify({modelId:t.modelId,provider:t.provider}))}catch{}}}catch{}})()},[e]),(0,b.useEffect)(()=>{let n=t,r=e,i;i=n&&r?`#/project/${n}/session/${r}`:n?`#/project/${n}`:`#`,window.location.hash!==i&&history.replaceState(null,``,i)},[t,e]),(0,b.useEffect)(()=>{let e=()=>{let e=window.location.hash.match(/^#\/project\/([^/]+)(?:\/session\/([^/]+))?$/);if(!e)return;let t=e[1],n=e[2]??void 0,r=pn.getState();n&&n!==r.activeSessionId&&Object.values(r.projectSessions).some(e=>e.some(e=>e.sessionId===n))&&(t===r.activeProjectId?r.setActiveSession(n):r.setActiveProject(t).then(()=>{r.setActiveSession(n)}))};return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,b.useEffect)(()=>D(()=>{p(``),h(void 0),d(!0)}),[]);let ze=(0,b.useCallback)(()=>{ae(),p(``),h(void 0),d(!0)},[]);(0,b.useEffect)(()=>{let e=Object.values(r).flat(),t=new Set(pe);e.filter(e=>e.supervisorId&&e.isLive).forEach(e=>t.add(e.supervisorId)),me(t)},[r]);let Be=async()=>{try{await se(f),h(void 0),d(!1),await i()}catch{h(`Invalid password`)}},Ve=(0,b.useCallback)((e,t)=>{y(e),S(t),T(void 0);try{localStorage.setItem(`pi-kot-model`,JSON.stringify({modelId:e,provider:t}))}catch{}},[]),He=(0,b.useCallback)(e=>{T(e)},[]),Ue=e=>{E(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return g?(0,M.jsx)(`div`,{className:`centered`,children:(0,M.jsxs)(`div`,{style:{width:`100%`,maxWidth:400,display:`flex`,flexDirection:`column`,gap:24},children:[(0,M.jsx)(US,{variant:`card`,count:2}),(0,M.jsx)(US,{variant:`list`,count:4})]})}):u?(0,M.jsx)(`div`,{className:`centered`,children:(0,M.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),Be()},className:`login-form`,children:[(0,M.jsx)(`h2`,{className:`login-title`,children:`pi-kot`}),(0,M.jsx)(`input`,{type:`password`,value:f,onChange:e=>{p(e.target.value),h(void 0)},placeholder:`Enter password`,autoFocus:!0,autoComplete:`new-password`,className:`login-input${m?` login-input-error`:``}`}),m&&(0,M.jsx)(`div`,{className:`login-error`,children:m}),(0,M.jsx)(`button`,{type:`submit`,className:`login-btn`,children:`Login`}),(0,M.jsx)(`button`,{type:`button`,onClick:ze,className:`login-btn`,style:{background:`none`,border:`1px solid var(--border-color, #444)`,color:`var(--text-dim, #888)`,fontSize:`11px`,marginTop:`4px`},children:`Clear stored token`})]})}):(0,M.jsxs)(`div`,{className:`app-layout`,children:[!_e&&(0,M.jsx)(`div`,{className:`sidebar-backdrop`,onClick:()=>De(!0),"aria-hidden":`true`}),(0,M.jsxs)(`div`,{className:`sidebar${_e?` collapsed`:``}`,children:[(0,M.jsxs)(`div`,{className:`sidebar-header`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,M.jsxs)(`span`,{style:{fontSize:`14px`,fontWeight:700,color:`var(--accent-text)`,display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,M.jsx)(`span`,{title:l===`connected`?`Connected`:l===`connecting`?`Connecting…`:l===`error`?`Connection error`:`Disconnected`,style:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,background:l===`connected`?`#4caf50`:l===`connecting`?`#f0c040`:l===`error`?`#e06c75`:`#666`,boxShadow:l===`connected`?`0 0 5px rgba(76, 175, 80, 0.6)`:`none`,transition:`all 0.3s`,animation:l===`connecting`?`connection-pulse 1.2s ease-in-out infinite`:`none`}}),`pi-kot`]}),(0,M.jsx)(`button`,{onClick:()=>Pe(!0),title:`Add a new project`,style:{background:`transparent`,border:`1px solid var(--border)`,color:`var(--text-secondary)`,fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,cursor:`pointer`,lineHeight:1,padding:`4px 8px`,borderRadius:`var(--radius-sm)`,transition:`all var(--duration) var(--ease)`},onMouseOver:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-glass-hover)`},onMouseOut:e=>{e.currentTarget.style.color=`var(--text-secondary)`,e.currentTarget.style.background=`transparent`},children:`Add Project`})]}),(0,M.jsx)(`div`,{className:`project-list`,children:n.map(n=>{let i=n.id===t,l=te.has(n.id),u=r[n.id]??[];return(0,M.jsxs)(`div`,{className:`project-group${i?` active`:``}`,children:[(0,M.jsxs)(`div`,{className:`project-row${i?` active`:``}`,onClick:()=>{i?Ue(n.id):a(n.id)},role:`button`,tabIndex:0,children:[(0,M.jsxs)(`span`,{className:`project-icon`,children:[(0,M.jsx)(`svg`,{className:`project-icon-folder`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{color:vae(n.id)},children:(0,M.jsx)(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`})}),(0,M.jsx)(`svg`,{className:`project-icon-arrow`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,M.jsx)(`path`,{d:`M9 18l6-6-6-6`})})]}),(0,M.jsx)(`span`,{className:`project-name`,children:n.name.toLowerCase()}),(0,M.jsx)(`div`,{className:`project-actions-left`,children:n.name!==`Default`&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),ue(n.id)},className:`project-action-btn`,title:`Remove from sidebar`,children:(0,M.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`polygon`,{points:`5 14 12 5 19 14`}),(0,M.jsx)(`line`,{x1:`4`,y1:`19`,x2:`20`,y2:`19`})]})})}),(0,M.jsx)(`div`,{className:`project-actions-right`,children:(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),o(n.id)},className:`project-action-btn`,title:`New draft session`,children:(0,M.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,M.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]})})})]}),l&&(0,M.jsx)(fae,{projectId:n.id,sessions:u,activeSessionId:e,isStreaming:c,renamingSessionId:ne,renameValue:re,renameInputRef:he,expandedWorkerGroups:pe,onSelect:e=>{s(e),Oe()},onRenameStart:(e,t)=>{O(e),k(t),setTimeout(()=>he.current?.focus(),50)},onRenameChange:k,onRenameCommit:(e,t)=>{let n=re.trim();n.length>0&&n!==t&&pn.getState().renameSession(e,n),O(void 0)},onRenameCancel:()=>O(void 0),onToggleWorkerGroup:e=>{me(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},onNewSession:()=>{o(n.id),Oe()}})]},n.id)})}),t!==void 0&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{className:`archived-toggle`,onClick:()=>{let e=ie===t?void 0:t;e!==void 0&&pn.getState().loadArchivedSessions(t),ce(e)},children:[(0,M.jsx)(`span`,{className:`project-chevron`,children:ie===t?`▾`:`▸`}),(0,M.jsx)(`span`,{className:`project-name`,style:{fontSize:`12px`},children:`Archived`})]}),ie===t&&(()=>{let e=pn.getState().archivedSessions[t];return e===void 0?(0,M.jsx)(`div`,{className:`archived-status`,children:(0,M.jsx)(US,{variant:`list`,count:2})}):e.length===0?(0,M.jsx)(`div`,{className:`archived-status`,children:`No archived sessions`}):(0,M.jsx)(`div`,{className:`session-list project-sublist archived-list`,children:e.map(e=>(0,M.jsxs)(`div`,{className:`session-item archived`,children:[(0,M.jsx)(`span`,{className:`session-name`,children:e.name??`Session ${e.sessionId.slice(0,8)}`}),(0,M.jsx)(`button`,{className:`session-restore-btn`,title:`Restore session`,onClick:n=>{n.stopPropagation(),pn.getState().unarchiveSession(e.sessionId,t)},children:`↻`})]},e.sessionId))})})()]}),(0,M.jsx)(`div`,{className:`sidebar-footer`,children:(0,M.jsxs)(`div`,{className:`mobile-only`,style:{display:`flex`,flexDirection:`column`,gap:`4px`},children:[(0,M.jsxs)(`button`,{type:`button`,onClick:()=>{Me(!0),De(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,M.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),(0,M.jsx)(`path`,{d:`M2 17l10 5 10-5`}),(0,M.jsx)(`path`,{d:`M2 12l10 5 10-5`})]}),`MCP Settings`]}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>{Ae(!0),De(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:`⚙ Settings`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>{ze(),De(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`,color:`var(--text-secondary)`},children:`Sign out`})]})})]}),(0,M.jsxs)(`div`,{className:`main-area`,children:[(0,M.jsxs)(`div`,{className:`header`,children:[(0,M.jsxs)(`div`,{className:`header-left`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:Ee,className:`sidebar-toggle`,title:_e?`Show sidebar`:`Hide sidebar`,children:_e?`☰`:`✕`}),e!==void 0&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`span`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-secondary)`,marginLeft:`8px`},children:[`Session `,e.slice(0,8)]}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>ke(!0),title:`Session tree (branching history)`,style:{background:`none`,border:`none`,color:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`🌿`})]})]}),(0,M.jsxs)(`div`,{className:`header-right`,children:[(0,M.jsx)(KS,{data:ge,onInspect:e=>fe(e)}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>Le(`files`),title:`File explorer`,style:{background:`none`,border:`none`,color:we===`files`?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`📂`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>{Ne(!0),De(!0)},title:`Terminal`,style:{background:`none`,border:`none`,color:Se?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`>_`}),(0,M.jsxs)(`div`,{className:`header-overflow desktop-only`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:()=>Me(!0),title:`MCP Settings`,style:{background:`none`,border:`none`,color:xe?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:(0,M.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),(0,M.jsx)(`path`,{d:`M2 17l10 5 10-5`}),(0,M.jsx)(`path`,{d:`M2 12l10 5 10-5`})]})}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>Ae(!0),title:`Settings`,style:{background:`none`,border:`none`,color:ye?`var(--accent-text)`:`var(--text-dim)`,fontSize:`14px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`⚙`}),(0,M.jsx)(`button`,{type:`button`,onClick:ze,title:`Sign out (clear stored token)`,style:{background:`none`,border:`none`,color:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`Sign out`})]})]})]}),ee!==void 0&&(0,M.jsxs)(`div`,{onClick:()=>T(void 0),className:`error-banner`,style:{position:`absolute`,top:`52px`,left:`16px`,right:`16px`,zIndex:9,cursor:`pointer`},children:[ee,` — click to dismiss`]}),e===void 0?(0,M.jsx)(`div`,{className:`centered`,style:{height:`100%`},children:(0,M.jsxs)(`div`,{className:`welcome`,children:[(0,M.jsx)(`div`,{className:`welcome-icon`,children:`⌨️`}),(0,M.jsx)(`div`,{className:`welcome-text`,children:`Select or create a session`}),(0,M.jsx)(`div`,{className:`welcome-hint`,children:`to start chatting with the coding agent`})]})}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(Y9,{label:`ChatView`,compact:!0,children:(0,M.jsx)(NS,{sessionId:e,modelName:v||void 0,providerName:x||void 0})}),(0,M.jsx)(Y9,{label:`OrchestrationPanel`,compact:!0,children:(0,M.jsx)(WS,{sessionId:e,open:be,onClose:()=>je(!1)})}),(0,M.jsx)(RS,{sessionId:e}),(0,M.jsx)(LS,{sessionId:e,showOrch:be,setShowOrch:je,selectedModel:v,onModelSelect:Ve,onModelError:He})]})]}),e!==void 0&&t!==void 0&&(0,M.jsx)(Y9,{label:`SessionTreePanel`,compact:!0,children:(0,M.jsx)(fC,{sessionId:e,projectId:t,open:ve,onClose:()=>ke(!1)})}),t!==void 0&&(0,M.jsx)(Y9,{label:`FileExplorer`,compact:!0,children:(0,M.jsx)(g4,{projectId:t,open:we!==void 0,onClose:()=>Ie(void 0),initialTab:we})}),le!==void 0&&(0,M.jsx)(`div`,{className:`settings-overlay`,onClick:()=>ue(void 0),children:(0,M.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`90vw`,height:`auto`,minHeight:0},children:[(0,M.jsxs)(`header`,{className:`settings-header`,children:[(0,M.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:`Remove project?`}),(0,M.jsx)(`button`,{onClick:()=>ue(void 0),className:`settings-close`,title:`Close`,children:`✕`})]}),(0,M.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,M.jsxs)(`p`,{style:{fontSize:13,color:`var(--text-secondary)`,marginBottom:20,lineHeight:1.5},children:[`This removes `,(0,M.jsx)(`strong`,{children:n.find(e=>e.id===le)?.name??le}),` from the sidebar — all sessions stay safely on disk. You can add it back anytime.`]}),(0,M.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,M.jsx)(`button`,{onClick:()=>ue(void 0),className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`Cancel`}),(0,M.jsx)(`button`,{onClick:()=>{pn.getState().deleteProject(le),ue(void 0)},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12,background:`var(--accent-red, #e06c75)`,color:`#fff`,border:`none`},children:`Remove`})]})]})]})}),ye&&(0,M.jsx)(Y9,{label:`SettingsPanel`,compact:!0,children:(0,M.jsx)(XC,{onClose:()=>Ae(!1)})}),de!==void 0&&(0,M.jsx)(JS,{data:de,onClose:()=>fe(void 0),sessionId:e}),(0,M.jsx)(Y9,{label:`TerminalPanel`,compact:!0,children:(0,M.jsx)(rae,{open:Se,onClose:()=>Ne(!1)})}),xe&&(0,M.jsx)(Y9,{label:`MCPPanel`,compact:!0,children:(0,M.jsx)(iC,{onClose:()=>Me(!1)})}),e!==void 0&&(0,M.jsx)(oae,{sessionId:e}),(0,M.jsx)(sae,{}),Ce&&(0,M.jsx)(hae,{open:Ce,onClose:()=>Pe(!1)})]})}FC(PC());var $9=document.getElementById(`root`);if($9===null)throw Error(`root element not found`);(0,ee.createRoot)($9).render((0,M.jsx)(b.StrictMode,{children:(0,M.jsx)(yae,{})}));
|
|
448
|
+
//# sourceMappingURL=index-C5quN7Km.js.map
|