@baique/pi-web-sky 0.1.22 → 0.1.23
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +6 -6
- package/.next/build-manifest.json +4 -4
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.js +6 -6
- package/.next/required-server-files.json +6 -6
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/route.js +1 -1
- package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/todos/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/[id]/events/route.js +2 -2
- package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/[id]/route.js +2 -2
- package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/route.js +1 -1
- package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +5 -5
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +8 -8
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +6 -6
- package/.next/server/chunks/2430.js +4 -4
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/3266.5b76f9f71c8cef44.js +1 -0
- package/.next/static/chunks/4406-5d47a3d34a956b3f.js +7 -0
- package/.next/static/chunks/app/_not-found/{page-af4fe23994cb3d66.js → page-8cea8d8de35f4da4.js} +1 -1
- package/.next/static/chunks/app/{layout-2d6062b4d60dd1c3.js → layout-a87bd7726a9b934b.js} +1 -1
- package/.next/static/chunks/app/page-1b3cab0efb7e465e.js +89 -0
- package/.next/static/chunks/{main-app-b3e8a8d15d83e1f0.js → main-app-dd2385a1a5a588df.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-be943dcb89867ab9.js +1 -0
- package/.next/static/chunks/{webpack-053051d7a3c7b828.js → webpack-943c1769a851c233.js} +1 -1
- package/.next/static/css/6e90300026a8f1d5.css +1 -0
- package/.next/trace +41 -7
- package/.next/trace-build +1 -1
- package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
- package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
- package/.next/types/app/api/agent/[id]/route.ts +1 -1
- package/.next/types/app/api/agent/new/route.ts +1 -1
- package/.next/types/app/api/agent/running/events/route.ts +1 -1
- package/.next/types/app/api/agent/running/route.ts +1 -1
- package/.next/types/app/api/app-update/route.ts +1 -1
- package/.next/types/app/api/auth/all-providers/route.ts +1 -1
- package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/providers/route.ts +1 -1
- package/.next/types/app/api/cwd/browse/route.ts +1 -1
- package/.next/types/app/api/cwd/validate/route.ts +1 -1
- package/.next/types/app/api/default-cwd/route.ts +1 -1
- package/.next/types/app/api/file-index/route.ts +1 -1
- package/.next/types/app/api/files/[...path]/route.ts +1 -1
- package/.next/types/app/api/git/diff/route.ts +1 -1
- package/.next/types/app/api/git/status/route.ts +1 -1
- package/.next/types/app/api/home/route.ts +1 -1
- package/.next/types/app/api/mcp/route.ts +1 -1
- package/.next/types/app/api/models/route.ts +1 -1
- package/.next/types/app/api/models-config/catalog/route.ts +1 -1
- package/.next/types/app/api/models-config/discover/route.ts +1 -1
- package/.next/types/app/api/models-config/route.ts +1 -1
- package/.next/types/app/api/models-config/test/route.ts +1 -1
- package/.next/types/app/api/plugins/route.ts +1 -1
- package/.next/types/app/api/project-trust/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/todos/route.ts +1 -1
- package/.next/types/app/api/sessions/route.ts +1 -1
- package/.next/types/app/api/skills/check/route.ts +1 -1
- package/.next/types/app/api/skills/install/route.ts +1 -1
- package/.next/types/app/api/skills/route.ts +1 -1
- package/.next/types/app/api/skills/search/route.ts +1 -1
- package/.next/types/app/api/skills/update/route.ts +1 -1
- package/.next/types/app/api/terminal/[id]/events/route.ts +1 -1
- package/.next/types/app/api/terminal/[id]/route.ts +1 -1
- package/.next/types/app/api/terminal/route.ts +1 -1
- package/.next/types/app/api/worktrees/route.ts +1 -1
- package/.next/types/app/layout.ts +1 -1
- package/.next/types/app/page.ts +1 -1
- package/package.json +2 -1
- package/.next/static/chunks/1074-6cfca65ac411b2b8.js +0 -7
- package/.next/static/chunks/3266.326b3add50989a80.js +0 -1
- package/.next/static/chunks/app/page-92d0d95f72a5d97d.js +0 -89
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-00a4badaccb388e6.js +0 -1
- package/.next/static/css/40cb1c7aeb554298.css +0 -1
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- /package/.next/static/{A7L3-CYh2X502BUR-cjfb → W05wbsgovoISs6oOyAq_0}/_buildManifest.js +0 -0
- /package/.next/static/{A7L3-CYh2X502BUR-cjfb → W05wbsgovoISs6oOyAq_0}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3266],{82407:()=>{},83266:(e,t,r)=>{"use strict";r.r(t),r.d(t,{TerminalPanel:()=>m});var n=r(95155),i=r(12115),l=r(47650),a=r(8422);r(82407);var s=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;let t=0===this._terminal.options.scrollback?0:this._terminal.options.overviewRuler?.width||14,r=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(r.getPropertyValue("height")),i=Math.max(0,parseInt(r.getPropertyValue("width"))),l=window.getComputedStyle(this._terminal.element),a={top:parseInt(l.getPropertyValue("padding-top")),bottom:parseInt(l.getPropertyValue("padding-bottom")),right:parseInt(l.getPropertyValue("padding-right")),left:parseInt(l.getPropertyValue("padding-left"))},s=a.top+a.bottom;return{cols:Math.max(2,Math.floor((i-(a.right+a.left)-t)/e.css.cell.width)),rows:Math.max(1,Math.floor((n-s)/e.css.cell.height))}}},o=r(39247),c=r(31590);let d={black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#ffffff"},u={black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#949800",blue:"#0451a5",magenta:"#bc05bc",cyan:"#0598bc",white:"#555555",brightBlack:"#666666",brightRed:"#cd3131",brightGreen:"#14ce14",brightYellow:"#b5ba00",brightBlue:"#0451a5",brightMagenta:"#bc05bc",brightCyan:"#0598bc",brightWhite:"#a5a5a5"};function m({origin:e,anchorRect:t,activeCwd:r,activeProjectLabel:h,hidden:f,onClose:p}){let b,g,w=(0,c.a)(),{t:y}=(0,o.s)(),[v,x]=(0,i.useState)([]),[k,T]=(0,i.useState)(null),[j,E]=(0,i.useState)(!1),[C,S]=(0,i.useState)(null),[M,N]=(0,i.useState)(new Set),$=(0,i.useRef)(!0),L=(0,i.useRef)(0),[_,R]=(0,i.useState)(0),B=(0,i.useRef)(new Set),P=(0,i.useRef)(null),I=(0,i.useRef)(null),W=(0,i.useRef)(null),V=(0,i.useRef)(new Map),O=(0,i.useRef)(new Map),z=(0,i.useRef)(null);z.current=k;let D=(0,i.useRef)(f);D.current=f;let F=(0,i.useRef)(new Set),A=(0,i.useMemo)(()=>h?v.filter(e=>e.projectLabel===h):[],[v,h]),J=(0,i.useMemo)(()=>{let e=new Map;for(let t of v){let r=e.get(t.projectLabel)??[];r.push(t),e.set(t.projectLabel,r)}return[...e.entries()]},[v]),H=(0,i.useMemo)(()=>{if(!k||!A.some(e=>e.id===k)){let e=k?v.find(e=>e.id===k):void 0;return e?[e,...A]:A}return A},[A,v,k]),Q=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/terminal"),t=await e.json();if(Array.isArray(t.terminals)){let e=F.current;x(t.terminals.filter(t=>!e.has(t.id))),$.current=!1,L.current+=1,R(e=>e+1)}}catch{}},[]),G=(0,i.useMemo)(()=>()=>{let e=getComputedStyle(document.documentElement),t=(t,r)=>e.getPropertyValue(t).trim()||r,r=document.documentElement.classList.contains("dark");return{background:`rgba(${t("--assistant-bg-rgb",r?"36, 36, 39":"252, 252, 253")}, ${t("--bubble-alpha",r?"0.55":"0.44")})`,foreground:t("--text",r?"#d4d4d4":"#1f2328"),cursor:t("--accent","#3b82f6"),cursorAccent:t("--bg",r?"#1e1e1e":"#ffffff"),selectionBackground:r?"rgba(128, 128, 128, 0.35)":"rgba(0, 0, 0, 0.15)",...r?d:u}},[]);(0,i.useEffect)(()=>{let e=new MutationObserver(()=>{let e=G();for(let[,t]of O.current)t.term&&(t.term.options.theme=e)});return e.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style"]}),()=>e.disconnect()},[G]);let Y=(0,i.useCallback)(e=>{let t=O.current.get(e);if(t?.es)return;if(!t){let r=new a.B({convertEol:!1,fontSize:12.5,fontFamily:getComputedStyle(document.documentElement).getPropertyValue("--font-mono").trim()||"'JetBrains Mono', Consolas, monospace",cursorBlink:!0,scrollback:5e3,theme:G()}),n=new s;r.loadAddon(n),r.onData(r=>{let n=t;n.inputQueue=n.inputQueue.catch(()=>{}).then(async()=>{await fetch(`/api/terminal/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"input",data:r})})}).catch(()=>{})}),t={term:r,fit:n,es:null,offset:null,reconnectTimer:null,fitTimer:null,inputQueue:Promise.resolve(),disposed:!1},O.current.set(e,t)}let r=null!==t.offset?`?since=${t.offset}`:"",n=new EventSource(`/api/terminal/${e}/events${r}`);t.es=n,n.onopen=()=>{N(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),r})},n.addEventListener("output",e=>{let{d:r,o:n}=JSON.parse(e.data);t.offset=n,t.term.write(r)}),n.addEventListener("gone",()=>{n.close(),t.es=null,Q()}),n.onerror=()=>{n.close(),t&&!t.disposed&&(t.es=null,t.reconnectTimer&&clearTimeout(t.reconnectTimer),t.reconnectTimer=setTimeout(()=>{fetch(`/api/terminal/${e}`).then(t=>{t.ok?Y(e):Q()}).catch(()=>{N(t=>t.has(e)?t:new Set(t).add(e))})},1500))}},[G,Q]),q=(0,i.useCallback)(e=>{let t=O.current.get(e);t&&fetch(`/api/terminal/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"resize",cols:t.term.cols,rows:t.term.rows})})},[]),K=(0,i.useCallback)((e,t=0)=>{let r,n=O.current.get(e),i=W.current;if(n&&i&&!D.current&&!n.disposed){try{r=n.fit.proposeDimensions()}catch{}if(r&&r.cols>2&&r.rows>1){n.fitTimer&&(clearTimeout(n.fitTimer),n.fitTimer=null);try{n.fit.fit()}catch{}q(e),n.term.element?.classList.remove("terminal-attaching"),n.term.focus(),requestAnimationFrame(()=>{if(!n.disposed&&!D.current)try{n.fit.fit()}catch{}});return}if(t>=300){n.fitTimer&&(clearTimeout(n.fitTimer),n.fitTimer=null),n.term.element?.classList.remove("terminal-attaching"),console.warn(`[terminal] fit did not settle for ${e} after ~9s; showing as-is`);return}n.fitTimer&&clearTimeout(n.fitTimer),n.fitTimer=setTimeout(()=>K(e,t+1),30)}},[q]);(0,i.useEffect)(()=>{let e=W.current,t=k?V.current.get(k):void 0;if(!e||!t||!k)return;Y(k);let r=O.current.get(k);if(!r||f)return;r.term.element?r.term.element.parentElement!==t&&t.appendChild(r.term.element):r.term.open(t),r.term.element?.classList.add("terminal-attaching"),K(k);let n=new ResizeObserver(()=>{D.current||z.current!==k||K(k)});return n.observe(t),()=>{n.disconnect()}},[k,Y,f,K]),(0,i.useEffect)(()=>{I.current=null,P.current=null,$.current=!0,f||Q()},[f,h,Q]),(0,i.useEffect)(()=>{if(f)return;let e=setInterval(()=>void Q(),5e3);return()=>clearInterval(e)},[Q,f]),(0,i.useEffect)(()=>{let e=new Set(v.map(e=>e.id));for(let[t,r]of O.current)e.has(t)||(r.disposed=!0,r.reconnectTimer&&clearTimeout(r.reconnectTimer),r.fitTimer&&clearTimeout(r.fitTimer),r.es?.close(),r.term.dispose(),O.current.delete(t),N(e=>{if(!e.has(t))return e;let r=new Set(e);return r.delete(t),r}),z.current===t&&T(v.find(e=>e.id!==t)?.id??null))},[v]),(0,i.useEffect)(()=>()=>{for(let[,e]of O.current)e.disposed=!0,e.reconnectTimer&&clearTimeout(e.reconnectTimer),e.fitTimer&&clearTimeout(e.fitTimer),e.es?.close(),e.term.dispose();O.current.clear()},[]);let U=(0,i.useCallback)(async()=>{E(!0),S(null),h&&B.current.delete(h);try{let e=await fetch("/api/terminal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r||"~"})}),t=await e.json();if(!e.ok||!t.terminal)throw Error(t.error??`HTTP ${e.status}`);await Q(),T(t.terminal.id)}catch(e){S(String(e instanceof Error?e.message:e))}finally{E(!1)}},[r,h,Q]);(0,i.useEffect)(()=>{if(!$.current&&!j){if(!h){!z.current&&v.length>0&&T(v[v.length-1].id);return}if(!f&&I.current!==h){if(I.current=h,A.length>0){z.current&&A.some(e=>e.id===z.current)||T(A[A.length-1].id);return}B.current.has(h)||P.current!==h&&(P.current=h,U())}}},[j,h,A,v,f,_,U]);let X=(0,i.useCallback)(async(e,t)=>{B.current.add(t),F.current.add(e),x(t=>t.filter(t=>t.id!==e));try{(await fetch(`/api/terminal/${e}`,{method:"DELETE"})).ok||(F.current.delete(e),Q())}catch{F.current.delete(e),Q()}},[Q]),Z=(0,i.useCallback)(async()=>{let e=[...M];if(0!==e.length){for(let t of e)F.current.add(t),fetch(`/api/terminal/${t}`,{method:"DELETE"}).finally(()=>{F.current.delete(t)});N(new Set),x(t=>t.filter(t=>!e.includes(t.id))),Q()}},[M,Q]),ee=(0,i.useRef)(null),et=(0,i.useRef)(null);(0,i.useEffect)(()=>{et.current=document.getElementById("terminal-bottombar-btn");let e=e=>{let t=e.target;ee.current?.contains(t)||et.current?.contains(t)||document.getElementById("terminal-topbar-btn")?.contains(t)||p()},t=e=>{"Escape"===e.key&&p()};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[p]);let er=w?{position:"fixed",inset:10,zIndex:1050}:"top"===e?(b=Math.min(780,window.innerWidth-48),g=t?Math.max(24,Math.min(t.left,window.innerWidth-b-24)):window.innerWidth-b-24,{position:"fixed",top:t?.bottom??t?.top??46,left:g,width:b,height:465,zIndex:1040}):{position:"fixed",right:t?Math.max(24,window.innerWidth-t.right):24,bottom:t?window.innerHeight-t.top:35,width:Math.min(780,window.innerWidth-48),height:Math.min(465,window.innerHeight-120),zIndex:1040},en=(0,n.jsxs)("div",{ref:ee,className:`terminal-panel terminal-panel-${e}${w?" terminal-panel-mobile":""}${f?" terminal-panel-hidden":""}`,style:{...er,background:"var(--panel-glass)",backdropFilter:"blur(var(--glass-blur-panel)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--glass-blur-panel)) saturate(var(--glass-saturate))"},role:"region","aria-label":y("terminal.title"),children:[(0,n.jsxs)("div",{className:"terminal-tabs",children:[(0,n.jsx)("div",{className:"terminal-tab-scroll",children:H.map(e=>(0,n.jsxs)("div",{className:`terminal-chip${e.id===k?" is-active":""}${!e.running?" is-dead":""}${M.has(e.id)?" is-disconnected":""}`,onClick:()=>T(e.id),role:"tab","aria-selected":e.id===k,title:`${e.projectLabel} — ${e.cwd}`,children:[(0,n.jsx)("span",{className:`terminal-dot${!e.running?" is-dead":M.has(e.id)?" is-disconnected":""}`}),(0,n.jsx)("span",{className:"terminal-chip-cwd",title:e.cwd,children:e.name||e.cwd.split(/[\\/]/).filter(Boolean).pop()||e.cwd}),(0,n.jsx)("button",{type:"button",className:"terminal-chip-close",title:y("terminal.close"),"aria-label":y("terminal.close"),onClick:t=>{t.stopPropagation(),X(e.id,e.projectLabel)},children:"\xd7"})]},e.id))}),(0,n.jsx)("button",{type:"button",className:"terminal-new",onClick:()=>void U(),disabled:j,title:y("terminal.new"),"aria-label":y("terminal.new"),children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})}),M.size>0&&(0,n.jsx)("button",{type:"button",className:"terminal-cleanup",onClick:()=>void Z(),title:y("terminal.cleanupDisconnected"),"aria-label":y("terminal.cleanupDisconnected"),children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M3 6h18"}),(0,n.jsx)("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}),(0,n.jsx)("path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})}),!w&&(0,n.jsx)("button",{type:"button",className:"terminal-close",onClick:p,title:y("common.close"),"aria-label":y("common.close"),children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"5",x2:"19",y2:"19"}),(0,n.jsx)("line",{x1:"19",y1:"5",x2:"5",y2:"19"})]})}),(0,n.jsxs)("select",{className:"terminal-all-select",value:k??"",onChange:e=>{let t=e.target.value;t&&T(t)},title:y("terminal.all"),"aria-label":y("terminal.all"),children:[(0,n.jsx)("option",{value:"",disabled:!0,children:y("terminal.all")}),J.map(([e,t])=>(0,n.jsx)("optgroup",{label:e,children:t.map(e=>(0,n.jsxs)("option",{value:e.id,title:`${e.projectLabel} — ${e.cwd}`,children:[e.name||e.cwd.split(/[\\/]/).filter(Boolean).pop()||e.cwd,e.running?"":` \xb7 ${y("terminal.exited")}`]},e.id))},e))]})]}),C&&(0,n.jsx)("div",{className:"terminal-error",children:C}),(0,n.jsxs)("div",{className:"terminal-body",ref:W,children:[v.map(e=>(0,n.jsx)("div",{ref:t=>{t?V.current.set(e.id,t):V.current.delete(e.id)},"data-terminal-view":e.id,style:{display:e.id===k?"block":"none",height:"100%"}},e.id)),!k&&(0,n.jsx)("div",{className:"terminal-placeholder",children:(0,n.jsx)("button",{type:"button",onClick:()=>void U(),disabled:j,children:j?"…":y("terminal.createFirst")})})]})]});return(0,l.createPortal)(en,document.body)}}}]);
|