ompgui 0.5.6 → 0.5.10
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 +3 -3
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +6 -6
- package/.next/react-loadable-manifest.json +16 -10
- package/.next/required-server-files.js +2 -3
- package/.next/required-server-files.json +2 -3
- 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 +2 -2
- package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
- 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 +7 -7
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/models-config/test/route.js.nft.json +1 -1
- package/.next/server/app/api/omp-settings/route.js +1 -1
- package/.next/server/app/api/omp-update/route.js +1 -1
- package/.next/server/app/api/omp-version/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/providers/enable/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -7
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +7 -6
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +3 -3
- package/.next/server/chunks/1448.js +1 -0
- package/.next/server/chunks/3100.js +1 -1
- package/.next/server/chunks/3798.js +1 -1
- package/.next/server/chunks/6209.js +2 -2
- package/.next/server/chunks/6465.js +1 -1
- package/.next/server/chunks/714.js +1 -1
- package/.next/server/chunks/8005.js +18 -0
- package/.next/server/chunks/8501.js +1 -1
- package/.next/server/chunks/933.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +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/1133.c52cb85df8434dfe.js +1 -0
- package/.next/static/chunks/1441.83552e2540b12edf.js +1 -0
- package/.next/static/chunks/2041.17ffd4146285d582.js +17 -0
- package/.next/static/chunks/2201.46326eb058826eb2.js +1 -0
- package/.next/static/chunks/3274.90e0bf3b4004e4d8.js +1 -0
- package/.next/static/chunks/4315-003248443d68d4df.js +1 -0
- package/.next/static/chunks/7488.1403755f69bda581.js +1 -0
- package/.next/static/chunks/8486.304d239e5e097b1b.js +1 -0
- package/.next/static/chunks/9668.b217cc6e8f550236.js +1 -0
- package/.next/static/chunks/9981.ba92f0b30bbf53e4.js +1 -0
- package/.next/static/chunks/app/page-c650f2d9ae8d199b.js +59 -0
- package/.next/static/chunks/webpack-c01e953327d82b66.js +1 -0
- package/.next/static/css/{c6eda91f31526945.css → 45214e1537eb75a6.css} +1 -1
- package/README.ja.md +6 -5
- package/README.ko.md +2 -0
- package/README.md +3 -1
- package/README.zh-CN.md +6 -5
- package/bin/ompgui-options.js +7 -3
- package/bin/ompgui-update.js +108 -0
- package/bin/ompgui.js +15 -3
- package/next.config.ts +0 -1
- package/package.json +9 -6
- package/.next/server/chunks/9577.js +0 -18
- package/.next/static/chunks/1133.bacd2a00ac07e041.js +0 -1
- package/.next/static/chunks/2124.a08e97448f6509af.js +0 -17
- package/.next/static/chunks/2201.b0b6e40a6fc1628a.js +0 -1
- package/.next/static/chunks/3274.2faf978d45b29a27.js +0 -1
- package/.next/static/chunks/4315-e505812d4c93f5ca.js +0 -1
- package/.next/static/chunks/5199.9ec1359b9aa220ab.js +0 -1
- package/.next/static/chunks/9182.b3f6afd537f9c3fe.js +0 -1
- package/.next/static/chunks/9668.b606b2dc0af7c335.js +0 -1
- package/.next/static/chunks/9981.90f200903b3d454f.js +0 -1
- package/.next/static/chunks/app/page-411ca086f30ad190.js +0 -59
- package/.next/static/chunks/webpack-fd539a603cf2ea92.js +0 -1
- package/bin/omp-web-security.test.mjs +0 -12
- package/bin/ompgui-security.test.mjs +0 -8
- package/bin/process-lifecycle.test.mjs +0 -83
- /package/.next/static/{o-eXlQ3KD1-OgZu1FqtEN → NYtVaQy909o9b9LqcM3T6}/_buildManifest.js +0 -0
- /package/.next/static/{o-eXlQ3KD1-OgZu1FqtEN → NYtVaQy909o9b9LqcM3T6}/_ssgManifest.js +0 -0
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{1697:(e,t,r)=>{"use strict";r.d(t,{Z:()=>s});var n=r(12115);let a=[];function s({onClose:e,active:t=!0}){let r=(0,n.useRef)(null),i=(0,n.useRef)(e);return i.current=e,(0,n.useEffect)(()=>{if(!t)return;let e=r.current;if(!e)return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;a.push(e),e.contains(document.activeElement)||e.focus();let s=t=>{if(a[a.length-1]!==e)return;if("Escape"===t.key){if(t.isComposing||229===t.keyCode)return;t.preventDefault(),i.current();return}if("Tab"!==t.key)return;let r=Array.from(e.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(e=>e.getClientRects().length>0||e===document.activeElement);if(0===r.length){t.preventDefault(),e.focus();return}let n=document.activeElement,s=n instanceof Node&&e.contains(n);t.shiftKey?s&&n!==r[0]&&n!==e||(t.preventDefault(),r[r.length-1].focus()):s&&n!==r[r.length-1]||(t.preventDefault(),r[0].focus())};return document.addEventListener("keydown",s,!0),()=>{document.removeEventListener("keydown",s,!0);let t=a.indexOf(e);-1!==t&&a.splice(t,1),n&&n.isConnected&&n.focus()}},[t]),r}},3099:(e,t,r)=>{"use strict";function n(e){let t=/(?:^|\s)@"([^"\n]*)$/.exec(e);if(t)return{start:e.length-(t[1].length+2),query:t[1],quoted:!0};let r=/(?:^|\s)@([^\s"]*)$/.exec(e);return r?{start:e.length-(r[1].length+1),query:r[1],quoted:!1}:null}function a(e){let t=0;for(let r=0;r<e.length;r++)"/"===e[r]&&t++;return t}function s(e){let t=new Set;for(let r of e){let e=r.indexOf("/");for(;-1!==e;)t.add(r.slice(0,e)),e=r.indexOf("/",e+1)}let r=[];for(let e of t)r.push({path:e,isDir:!0});for(let t of e)t&&r.push({path:t,isDir:!1});return r.sort((e,t)=>a(e.path)-a(t.path)||e.path.localeCompare(t.path)),r}function i(e,t){if(!e)return!0;let r=0;for(let n=0;n<t.length&&r<e.length;n++)t[n]===e[r]&&r++;return r===e.length}function o(e,t,r=20){let n=t.toLowerCase();if(!n)return e.slice(0,r);let s=[];for(let t of e){let e=function(e,t){let r=e.path.toLowerCase(),n=0;if(t.includes("/"))r===t?n=100:r.startsWith(t)?n=80:r.includes(t)?n=50:i(t,r)&&(n=10);else{let e=r.lastIndexOf("/"),a=-1===e?r:r.slice(e+1);a===t?n=100:a.startsWith(t)?n=80:a.includes(t)?n=50:r.includes(t)?n=30:i(t,r)&&(n=10)}return e.isDir&&n>0&&(n+=10),n}(t,n);e>0&&s.push({entry:t,score:e})}return s.sort((e,t)=>t.score-e.score||a(e.entry.path)-a(t.entry.path)||e.entry.path.localeCompare(t.entry.path)),s.slice(0,r).map(e=>e.entry)}function l(e,t,r=!1){let n=t?`${e}/`:e,a=r||n.includes(" ");if(t){let e=a?`@"${n}"`:`@${n}`;return{text:e,cursorOffset:a?e.length-1:e.length}}let s=a?`@"${n}" `:`@${n} `;return{text:s,cursorOffset:s.length}}function d(e,t){let r=t?`${e}/`:e;return r.includes(" ")?`@"${r}" `:`@${r} `}function c(e,t,r){let n=Math.max(1,Math.min(t,r)),a=Math.max(1,Math.max(t,r)),s=e.includes(" ")?`@"${e}"`:`@${e}`,i=n===a?`:${n}`:`:${n}-${a}`;return`${s}${i} `}function u(e){return e.map(e=>d(e,!1)).join("")}r.d(t,{$C:()=>d,R7:()=>o,RO:()=>n,SO:()=>u,W:()=>l,Yh:()=>s,sn:()=>c})},5456:(e,t,r)=>{Promise.resolve().then(r.bind(r,57958))},7834:(e,t,r)=>{"use strict";function n(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);try{let t=document.createElement("textarea");return t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}catch{return Promise.reject()}}r.d(t,{D:()=>n})},18136:(e,t,r)=>{"use strict";r.d(t,{K:()=>a});var n=r(4315);function a(e,t="errors.generic"){if("string"==typeof e)return e;let r=e?.code;if(r){let e=`errors.${r}`,t=(0,n.Tl)(e);if(t!==e)return t}if(e?.error)return e.error;let s=(0,n.Tl)(t);return s===t?"Request failed":s}},28999:(e,t,r)=>{"use strict";function n(e){return/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\")?e.replace(/\\/g,"/"):e}function a(e){let t=n(e),r=t.startsWith("//"),a=t.split("/").filter(Boolean);return r&&a.length>0&&(a[0]=`//${a[0]}`),a.map(encodeURIComponent).join("/")}function s(e){let t=n(e).replace(/\/+$/,"");return t.split("/").pop()??t}function i(e){let t=n(e).replace(/\/+$/,""),r=t.lastIndexOf("/");return r<0?"":0===r?"/":2===r&&/^[a-zA-Z]:\//.test(t)?t.slice(0,3):t.slice(0,r)}function o(e,t){if(!t)return e;let r=n(e),a=n(t).replace(/\/$/,""),s=/^[a-zA-Z]:\//.test(r)||r.startsWith("//")||/^[a-zA-Z]:\//.test(a)||a.startsWith("//"),i=s?r.toLowerCase():r,o=s?a.toLowerCase():a;return i.startsWith(o+"/")?r.slice(a.length+1):e}function l(e,t){return`${n(e).replace(/\/$/,"")}/${t}`}r.d(t,{A0:()=>n,HG:()=>a,WP:()=>s,e_:()=>l,gX:()=>i,qP:()=>o})},30527:(e,t,r)=>{"use strict";r.d(t,{I3:()=>L,sj:()=>s});var n=r(95155);let a="var(--text-dim)";function s({size:e=14,open:t=!1}){return t?(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M1 4.5A1 1 0 0 1 2 3.5H5.5L7 5h7.5v1H1V4.5Z",fill:a}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:a,strokeWidth:"1",fill:a,fillOpacity:"0.12"})]}):(0,n.jsx)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M1 4.5A1 1 0 0 1 2 3.5H5.5L7 5H14a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5Z",stroke:a,strokeWidth:"1",fill:a,fillOpacity:"0.1"})})}function i({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M3 2h7l3 3v9H3V2Z",stroke:a,strokeWidth:"1",fill:a,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:a,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function o({label:e,size:t=14}){let r=t/14;return(0,n.jsxs)("svg",{width:t,height:t,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("text",{x:"7",y:"9.5",textAnchor:"middle",fontSize:3.4*r,fontFamily:"var(--font-mono), monospace",fontWeight:"600",fill:a,letterSpacing:"0",children:e})]})}function l({size:e=14}){return(0,n.jsx)(o,{label:"TS",size:e})}function d({size:e=14}){return(0,n.jsx)(o,{label:"TSX",size:e})}function c({size:e=14}){return(0,n.jsx)(o,{label:"JS",size:e})}function u({size:e=14}){return(0,n.jsx)(o,{label:"JSX",size:e})}function h({size:e=14}){return(0,n.jsx)(o,{label:"PY",size:e})}function p({size:e=14}){return(0,n.jsx)(o,{label:"{}",size:e})}function f({size:e=14}){return(0,n.jsx)(o,{label:"CSS",size:e})}function m({size:e=14}){return(0,n.jsx)(o,{label:"SC",size:e})}function x({size:e=14}){return(0,n.jsx)(o,{label:"HTM",size:e})}function v({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:a,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:a,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function g({size:e=14}){return(0,n.jsx)(o,{label:"YML",size:e})}function b({size:e=14}){return(0,n.jsx)(o,{label:"TOM",size:e})}function y({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:a,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:a,strokeWidth:"0.95",strokeLinecap:"round"})]})}function k({size:e=14}){return(0,n.jsx)(o,{label:"RS",size:e})}function w({size:e=14}){return(0,n.jsx)(o,{label:"GO",size:e})}function j({size:e=14}){return(0,n.jsx)(o,{label:"SQL",size:e})}function S({size:e=14}){return(0,n.jsx)(o,{label:"GQL",size:e})}function C({size:e=14}){return(0,n.jsx)(o,{label:"TF",size:e})}function E({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("rect",{x:"3.5",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:a,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:a,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:a,strokeWidth:"0.8"})]})}function T({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:a,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:a,strokeWidth:"0.9",strokeLinecap:"round"})]})}function N({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:a,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:a,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:a,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:a,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:a,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function R({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("rect",{x:"4.5",y:"8.5",width:"5",height:"3",rx:"0.6",stroke:a,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:a,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function z({size:e=14}){return(0,n.jsx)(o,{label:"DOC",size:e})}function W({size:e=14}){return(0,n.jsx)(o,{label:"PDF",size:e})}function I({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:a,strokeWidth:"0.9",fill:a,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:a,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:a,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 6.5v.7M7 10.3v.7M5 8.5h.7M8.3 8.5H9M5.5 6.9l.5.5M8.5 9.6l-.5-.5M5.5 10.1l.5-.5M8.5 7.4l-.5.5",stroke:a,strokeWidth:"0.8",strokeLinecap:"round"})]})}function L(e,t=14){let r=e.toLowerCase(),a=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(E,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(T,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(N,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(R,{size:t});if(r.endsWith(".config.ts")||r.endsWith(".config.js")||r.endsWith(".config.mjs")||r.endsWith(".config.cjs")||[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml","eslint.config.mjs","eslint.config.js"].includes(r))return(0,n.jsx)(I,{size:t});switch(a){case"ts":return(0,n.jsx)(l,{size:t});case"tsx":return(0,n.jsx)(d,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(c,{size:t});case"jsx":return(0,n.jsx)(u,{size:t});case"py":return(0,n.jsx)(h,{size:t});case"json":case"jsonl":return(0,n.jsx)(p,{size:t});case"css":case"less":return(0,n.jsx)(f,{size:t});case"scss":return(0,n.jsx)(m,{size:t});case"html":case"htm":return(0,n.jsx)(x,{size:t});case"md":case"mdx":return(0,n.jsx)(v,{size:t});case"yaml":case"yml":return(0,n.jsx)(g,{size:t});case"toml":return(0,n.jsx)(b,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(y,{size:t});case"rs":return(0,n.jsx)(k,{size:t});case"go":return(0,n.jsx)(w,{size:t});case"sql":return(0,n.jsx)(j,{size:t});case"graphql":case"gql":return(0,n.jsx)(S,{size:t});case"tf":case"hcl":return(0,n.jsx)(C,{size:t});case"docx":return(0,n.jsx)(z,{size:t});case"pdf":return(0,n.jsx)(W,{size:t});case"lock":return(0,n.jsx)(R,{size:t});default:return(0,n.jsx)(i,{size:t})}}},30808:(e,t,r)=>{"use strict";r.d(t,{Cf:()=>y,HM:()=>w,L3:()=>k,Nt:()=>S,R6:()=>C,je:()=>E,lG:()=>b,m_:()=>j});var n=r(95155),a=r(53474),s=r(72222),i=r(45477),o=r(59567),l=r(11975),d=r(52579),c=r(3683),u=r(11412),h=r(80403),p=r(15383),f=r(96238),m=r(27443),x=r(98197),v=r(11827),g=r(977);function b({open:e,onOpenChange:t,children:r}){return(0,n.jsx)(a.D,{open:e,onOpenChange:t,children:r})}function y({children:e,className:t,style:r,ariaLabel:a}){return(0,n.jsxs)(s.Z,{children:[(0,n.jsx)(i.X,{style:{position:"fixed",inset:0,background:"var(--overlay-backdrop)",backdropFilter:"blur(2px)",zIndex:"var(--z-dialog-backdrop)"}}),(0,n.jsx)(o.h,{"aria-label":a,className:t,style:{position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",animation:"dialog-pop-in var(--dur-med) var(--ease-out-warm) both",zIndex:"var(--z-dialog)",background:"var(--bg)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)",padding:"calc(var(--space-6) + var(--space-2))",maxWidth:"min(92vw, 560px)",maxHeight:"85dvh",overflow:"auto",...r},children:e})]})}function k({children:e,style:t}){return(0,n.jsx)(l.L,{className:"display-serif",style:{fontSize:"calc(var(--text-xl) + var(--space-3) / 2)",margin:"0 0 var(--space-5)",...t},children:e})}let w=d.H;function j({content:e,children:t,side:r="top"}){return(0,n.jsx)(c.B,{delay:350,closeDelay:0,children:(0,n.jsxs)(u.s,{children:[(0,n.jsx)(h.k,{render:t}),(0,n.jsx)(p.K,{children:(0,n.jsx)(f.o,{side:r,sideOffset:6,style:{zIndex:"var(--z-tooltip)"},children:(0,n.jsx)(m.o,{style:{background:"var(--bg-panel)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",boxShadow:"var(--shadow-pop)",padding:"var(--space-2) calc(var(--space-4) + var(--space-1) / 2)",fontSize:"var(--text-md)",lineHeight:1.4,maxWidth:260},children:e})})})]})})}function S({open:e,onOpenChange:t,defaultOpen:r,children:a}){return(0,n.jsx)(x.N,{open:e,onOpenChange:t,defaultOpen:r,children:a})}let C=v.R;function E({children:e,style:t}){return(0,n.jsx)(g.j,{style:t,children:e})}},31590:(e,t,r)=>{"use strict";r.d(t,{a:()=>l});var n=r(12115);let a="(max-width: 640px)";function s(e){if(!window.matchMedia)return()=>{};let t=window.matchMedia(a);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function i(){return!!window.matchMedia&&window.matchMedia(a).matches}function o(){return!1}function l(){return(0,n.useSyncExternalStore)(s,i,o)}},51087:(e,t,r)=>{"use strict";r.d(t,{oR:()=>w,tE:()=>T});var n=r(95155),a=r(66101),s=r(33208),i=r(23083),o=r(97787),l=r(48262),d=r(99777),c=r(32031),u=r(56395),h=r(40323),p=r(25818),f=r(64577),m=r(35484),x=r(14577),v=r(9005),g=r(12115),b=r(31590);let y=a.V();function k(e,t,r,n){return y.add({title:t,description:r,type:e,data:{kind:e,clamp:n?.clamp}})}let w={success:(e,t,r)=>k("success",e,t,r),error:(e,t,r)=>k("error",e,t,r),info:(e,t,r)=>k("info",e,t,r),close:e=>y.close(e)};function j({kind:e}){let t={size:13,strokeWidth:2,style:{flexShrink:0,marginTop:"var(--space-1)"}};return"success"===e?(0,n.jsx)(f.A,{...t,style:{...t.style,color:"var(--accent)"},"aria-hidden":!0}):"error"===e?(0,n.jsx)(m.A,{...t,style:{...t.style,color:"var(--accent-strong)"},"aria-hidden":!0}):(0,n.jsx)(x.A,{...t,style:{...t.style,color:"var(--text-muted)"},"aria-hidden":!0})}let S={fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5,marginTop:"var(--space-1)"};function C({children:e}){let[t,r]=(0,g.useState)(!1);return(0,n.jsx)("span",{onClick:()=>r(e=>!e),"aria-expanded":t,title:t?void 0:"Click to expand",style:{...S,cursor:t?"default":"pointer",whiteSpace:"pre-wrap",wordBreak:"break-word",...t?{}:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},children:e})}function E(){let{toasts:e}=s.I(),t=(0,b.a)();return(0,n.jsx)(i.S,{children:(0,n.jsx)(o.U,{style:{position:"fixed",top:t?88:80,right:"var(--space-6)",zIndex:"var(--z-toast)",display:"flex",flexDirection:"column",gap:"var(--space-4)",width:"min(92vw, 360px)",pointerEvents:"none"},children:e.map(e=>(0,n.jsxs)(l.m,{toast:e,className:"toast-card",style:{pointerEvents:"auto",display:"flex",alignItems:"flex-start",gap:"var(--space-4)",background:"var(--bg)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"var(--radius-card)",boxShadow:"var(--shadow-pop)",padding:"calc(var(--space-5) - var(--space-1)) var(--space-5)"},children:[(0,n.jsx)(j,{kind:e.type}),(0,n.jsxs)(d.p,{style:{flex:1,minWidth:0},children:[(0,n.jsx)(c.S,{className:"display-serif",style:{fontSize:"var(--text-base)",lineHeight:1.4}}),e.data?.clamp?(0,n.jsx)(u.a,{render:(0,n.jsx)("div",{}),style:S,children:(0,n.jsx)(C,{children:e.description})}):(0,n.jsx)(u.a,{render:(0,n.jsx)("div",{}),style:S})]}),(0,n.jsx)(h.e,{"aria-label":"Dismiss",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"calc(var(--control-height-sm) - var(--space-4))",height:"calc(var(--control-height-sm) - var(--space-4))",padding:0,border:0,borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text-dim)",cursor:"pointer",flexShrink:0},children:(0,n.jsx)(v.A,{size:12,strokeWidth:2,"aria-hidden":!0})})]},e.id))})})}function T({children:e}){return(0,n.jsxs)(p.t,{toastManager:y,timeout:4e3,limit:4,children:[e,(0,n.jsx)(E,{})]})}},57958:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>tr});var n=r(95155),a=r(12115),s=r(37206),i=r(73321),o=r(83588),l=r(47650),d=r(4315),c=r(18136),u=r(1697);async function h(e){let t=e?`?path=${encodeURIComponent(e)}`:"",r=await fetch(`/api/cwd/browse${t}`),n=await r.json();if(!r.ok||n.error)throw Error((0,c.K)({...n,error:n.error??`HTTP ${r.status}`}));return n}function p(){return(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.3","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M1.5 3h4l1.5 2h7.5v7.5h-13z"})})}function f(){return(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,n.jsx)("path",{d:"M2 9h12"}),(0,n.jsx)("circle",{cx:"11.5",cy:"11",r:"0.6",fill:"currentColor",stroke:"none"})]})}function m({onCancel:e,onSelect:t,busy:r=!1,error:s}){let{t:i}=(0,d.s9)(),[o,c]=(0,a.useState)(null),[x,v]=(0,a.useState)(""),[g,b]=(0,a.useState)(null),[y,k]=(0,a.useState)(""),[w,j]=(0,a.useState)([]),[S,C]=(0,a.useState)(null),[E,T]=(0,a.useState)(null),[N,R]=(0,a.useState)(!0),z=(0,u.Z)({onClose:()=>{r||e()},active:null!==o}),W=(0,a.useCallback)(async e=>{R(!0),T(null);try{let t=await h(e),r=t.path??e??"/";v(r),b(t.parentPath??null),k(r),j(t.directories??[]),C(t.drives??null)}catch(e){T(e instanceof Error?e.message:String(e))}finally{R(!1)}},[]);(0,a.useEffect)(()=>{c(document.body),W()},[W]);let I=y.trim()!==x,L=!!x&&!I&&!r,M=!!g||/^[a-zA-Z]:[\\/]?$/.test(x);return o?(0,l.createPortal)((0,n.jsx)("div",{className:"directory-picker-backdrop animate-fade-in",onClick:t=>{t.target!==t.currentTarget||r||e()},style:{position:"fixed",inset:0,zIndex:"var(--z-directory-picker)",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--overlay-backdrop)"},children:(0,n.jsxs)("div",{className:"directory-picker-panel animate-scale-in",ref:z,role:"dialog","aria-modal":"true","aria-label":i("directoryPicker.selectDirectory"),tabIndex:-1,style:{width:520,maxWidth:"calc(100vw - 16px)",height:"min(620px, calc(100dvh - 16px))",maxHeight:"calc(100dvh - 16px)",display:"flex",flexDirection:"column",overflow:"hidden",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)",outline:"none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0,padding:"12px 18px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("div",{style:{minWidth:0,flex:1},children:(0,n.jsx)("div",{style:{color:"var(--text)",fontWeight:700,fontSize:15},children:i("directoryPicker.selectDirectory")})}),(0,n.jsx)("button",{type:"button",onClick:e,disabled:r,title:i("directoryPicker.close"),"aria-label":i("directoryPicker.close"),style:{padding:"2px 6px",border:0,background:"none",color:"var(--text-muted)",fontSize:20,lineHeight:1,cursor:r?"default":"pointer",opacity:r?.5:1,transition:"color var(--dur-fast) var(--ease-out-warm), opacity var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{r||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)"},children:"\xd7"})]}),(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault();let t=y.trim();t&&W(t)},style:{display:"flex",alignItems:"center",gap:"var(--space-4)",flexShrink:0,padding:"10px 14px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("button",{className:"directory-picker-back",type:"button",onClick:()=>void W(g??void 0),disabled:N||!M,title:i("directoryPicker.goToParent"),"aria-label":i("directoryPicker.goToParent"),style:{width:"var(--control-height-lg)",height:"var(--control-height-lg)",padding:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-hover)",color:"var(--text-muted)",cursor:M?"pointer":"default",opacity:M?1:.45,transition:"background-color var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{M&&!N&&(e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"m18 15-6-6-6 6"})})}),(0,n.jsx)("label",{htmlFor:"directory-path",style:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},children:i("directoryPicker.directoryPath")}),(0,n.jsx)("input",{className:"directory-picker-path",id:"directory-path",type:"text",value:y,"aria-label":i("directoryPicker.pathPlaceholder")||"Directory path",placeholder:i("directoryPicker.pathPlaceholder"),autoFocus:!0,autoComplete:"off",spellCheck:!1,onChange:e=>{k(e.target.value),T(null)},style:{minWidth:0,flex:1,height:"var(--control-height-lg)",padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,outline:"none",background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:"var(--text-md)",transition:"border-color var(--dur-fast) var(--ease-out-warm)"}}),(0,n.jsx)("button",{className:"directory-picker-action",type:"submit",disabled:N||!y.trim(),title:i("directoryPicker.goToDirectory"),style:{minWidth:58,height:"var(--control-height-lg)",padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-hover)",color:"var(--text-muted)",cursor:N||!y.trim()?"default":"pointer",opacity:N||!y.trim()?.6:1,transition:"background-color var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm), opacity var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{!N&&y.trim()&&(e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)"},children:i("directoryPicker.go")})]}),(0,n.jsxs)("div",{className:"directory-picker-list",style:{flex:1,minHeight:0,overflow:"auto",padding:"var(--space-4) 10px"},children:[N?(0,n.jsx)("div",{style:{display:"grid",gap:"var(--space-3)",padding:"var(--space-4)"},"aria-busy":"true","aria-label":i("directoryPicker.loadingDirectories"),children:Array.from({length:7}).map((e,t)=>(0,n.jsx)("div",{className:"skeleton",style:{height:22,width:`${55+37*t%40}%`}},t))}):null!==S?S.length>0?S.map(e=>(0,n.jsxs)("button",{className:"directory-picker-entry",type:"button",onClick:()=>void W(e.path),title:e.path,style:{width:"100%",minHeight:30,display:"flex",alignItems:"center",gap:7,padding:"5px var(--space-4)",border:0,borderRadius:5,background:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)"},children:[(0,n.jsx)(f,{}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.path)):(0,n.jsx)("div",{style:{padding:"var(--space-4)",color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:i("directoryPicker.noDrives")}):w.length>0?w.map(e=>(0,n.jsxs)("button",{className:"directory-picker-entry",type:"button",onClick:()=>void W(e.path),title:e.path,style:{width:"100%",minHeight:30,display:"flex",alignItems:"center",gap:7,padding:"5px var(--space-4)",border:0,borderRadius:5,background:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",transition:"background-color var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsx)(p,{}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.path)):(0,n.jsx)("div",{style:{padding:"var(--space-4)",color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:i("directoryPicker.noSubdirectories")}),(E||s)&&(0,n.jsx)("div",{style:{padding:"var(--space-4)",color:"var(--status-error)",fontSize:"var(--text-sm)"},children:E??s})]}),(0,n.jsxs)("div",{className:"directory-picker-footer",style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:10,flexShrink:0,padding:"10px 18px",borderTop:"1px solid var(--border)"},children:[(0,n.jsx)("button",{className:"directory-picker-action",type:"button",onClick:e,disabled:r,style:{padding:"6px 14px",border:"1px solid var(--border)",borderRadius:6,background:"none",color:"var(--text-muted)",cursor:r?"default":"pointer",fontSize:"var(--text-base)"},children:i("directoryPicker.cancel")}),(0,n.jsx)("button",{className:"directory-picker-action",type:"button",onClick:()=>t(x),disabled:!L,title:i(I?"directoryPicker.openPathBeforeSelecting":"directoryPicker.selectCurrentDirectory"),style:{padding:"6px 16px",border:0,borderRadius:6,background:"var(--accent)",color:"var(--on-accent)",fontSize:"var(--text-base)",fontWeight:600,opacity:L?1:.6,cursor:L?"pointer":"default"},children:i(r?"directoryPicker.checking":"directoryPicker.selectThisFolder")})]})]})}),o):null}var x=r(9005),v=r(76721),g=r(95660),b=r(14225),y=r(92571),k=r(83254),w=r(50825),j=r(68562),S=r(64577),C=r(79530),E=r(11012),T=r(35484),N=r(30527),R=r(30808),z=r(28999);async function W(e){let t=(0,z.HG)(e),r=await fetch(`/api/files/${t}?type=list`);if(!r.ok){let e=(0,d.Tl)("fileExplorer.loadFailed",{status:r.status});try{let t=await r.json();t.error&&(e=t.error)}catch{}throw Error(e)}return((await r.json()).entries??[]).map(t=>({name:t.name,fullPath:(0,z.e_)(e,t.name),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir}))}async function I(e){let t=new URLSearchParams({cwd:e}),r=await fetch(`/api/git/status?${t.toString()}`);if(!r.ok)throw Error((0,d.Tl)("fileExplorer.gitStatusFailed",{status:r.status}));return r.json()}let L={modified:"fileExplorer.gitModified",added:"fileExplorer.gitAdded",deleted:"fileExplorer.gitDeleted",renamed:"fileExplorer.gitRenamed",untracked:"fileExplorer.gitUntracked",conflict:"fileExplorer.gitConflict"},M={modified:"var(--status-modified)",added:"var(--status-success)",deleted:"var(--status-error)",renamed:"var(--status-renamed)",untracked:"var(--status-success)",conflict:"var(--status-error)"};function A({onClick:e,title:t}){return(0,n.jsx)("button",{type:"button",onClick:e,title:t,"aria-label":t,style:{width:24,height:24,padding:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,border:"none",borderRadius:"var(--radius-control)",background:"none",color:"var(--text-dim)",cursor:"pointer",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="none"},children:(0,n.jsx)(x.A,{size:13,strokeWidth:2.2,"aria-hidden":"true"})})}function P({node:e,depth:t,cwd:r,onOpenFile:s,onAtMention:i,expandedPaths:o,onToggleExpanded:l,refreshToken:c,highlightedPaths:u,gitStatusByPath:h,changedDirectoryPaths:p}){let{t:f}=(0,d.s9)(),m=o.has(e.fullPath),x=u.has(e.fullPath),j=(0,z.A0)(e.fullPath),S=h.get(j),C=e.isDir&&(void 0!==S||p.has(j)),[E,T]=(0,a.useState)(e.children??[]),[I,A]=(0,a.useState)(e.loaded??!1),[D,F]=(0,a.useState)(!1),[$,O]=(0,a.useState)(!1),[B,H]=(0,a.useState)(!1),U=(0,a.useCallback)(async(t=!1)=>{if(!I||t){F(!0);try{let t=await W(e.fullPath);T(t),A(!0)}catch{}finally{F(!1)}}},[I,e.fullPath]);(0,a.useEffect)(()=>{m?I&&U(!0):A(!1)},[c]);let K=(0,a.useCallback)(()=>{if(e.isDir){let t=!m;l(e.fullPath,t),t&&!I&&U()}else s(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,I,m,U,s,l]),q=(0,a.useCallback)(t=>{if(t.target===t.currentTarget){if("Enter"===t.key||" "===t.key)t.preventDefault(),K();else if("ArrowRight"===t.key){if(e.isDir)if(t.preventDefault(),m){let e=t.currentTarget.parentElement?.querySelector('[role="group"] [role="treeitem"]');e?.focus()}else l(e.fullPath,!0),I||U()}else if("ArrowLeft"===t.key)if(e.isDir&&m)t.preventDefault(),l(e.fullPath,!1);else{let e=t.currentTarget.closest('[role="group"]')?.parentElement?.querySelector(':scope > [role="treeitem"]');e?.focus()}else if("ArrowDown"===t.key||"ArrowUp"===t.key){t.preventDefault();let e=t.currentTarget.closest('[role="tree"]');if(!e)return;let r=Array.from(e.querySelectorAll('[role="treeitem"]')).filter(e=>!e.closest("[inert]")),n=r.indexOf(t.currentTarget);if(-1!==n){let e="ArrowDown"===t.key?Math.min(r.length-1,n+1):Math.max(0,n-1);r[e]?.focus()}}}},[e.isDir,e.fullPath,m,I,U,l,K]),Z=f("fileExplorer.insertPathIntoChat"),V=f("fileExplorer.downloadFile");return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{onClick:K,onKeyDown:q,onMouseEnter:()=>O(!0),onMouseLeave:()=>O(!1),onFocus:e=>{e.target===e.currentTarget&&H(!0)},onBlur:()=>H(!1),role:"treeitem",tabIndex:0,"aria-selected":x,"aria-expanded":e.isDir?m:void 0,"aria-label":e.isDir?e.name+" (folder"+(m?", expanded":", collapsed")+")":e.name+" (file)",style:{position:"relative",display:"flex",alignItems:"center",gap:"var(--space-2)",paddingLeft:8+14*t,paddingRight:"var(--space-4)",height:24,cursor:"pointer",background:$?"var(--bg-hover)":"transparent",borderRadius:"var(--radius-control)",userSelect:"none",boxShadow:B?"inset 0 0 0 1px color-mix(in srgb, var(--accent) 70%, transparent)":"none",outline:"none",transition:"background var(--dur-fast) var(--ease-out-warm)"},children:[e.isDir&&(0,n.jsx)(v.A,{size:10,strokeWidth:2,color:"var(--text-dim)",style:{flexShrink:0,transform:m?"rotate(90deg)":"none",transition:"transform var(--dur-med) var(--ease-out-warm)"},"aria-hidden":"true"}),!e.isDir&&(0,n.jsx)("span",{style:{width:10,flexShrink:0}}),(0,n.jsx)("span",{style:{flexShrink:0,display:"flex",alignItems:"center",color:e.isDir?"var(--text-muted)":"var(--text-dim)"},children:e.isDir?m?(0,n.jsx)(g.A,{size:14,strokeWidth:1.8,"aria-hidden":"true"}):(0,n.jsx)(b.A,{size:14,strokeWidth:1.8,"aria-hidden":"true"}):(0,N.I3)(e.name,14)}),(0,n.jsx)("span",{style:{fontSize:"var(--text-md)",color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},title:e.fullPath,children:e.name}),x&&(0,n.jsx)("span",{title:f("fileExplorer.newlyUploaded"),"aria-label":f("fileExplorer.newlyUploaded"),style:{width:6,height:6,flexShrink:0,borderRadius:"50%",background:"var(--accent)"}}),!$&&!e.isDir&&S&&(0,n.jsx)("span",{title:f(L[S.status]),"aria-label":f(L[S.status]),style:{width:14,flexShrink:0,color:M[S.status],fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",fontWeight:600,textAlign:"center"},children:S.code}),!$&&C&&(0,n.jsx)("span",{title:f("fileExplorer.containsChangedFiles"),"aria-label":f("fileExplorer.containsChangedFiles"),style:{width:6,height:6,flexShrink:0,borderRadius:"50%",background:"var(--status-modified)"}}),D&&(0,n.jsx)(y.A,{size:10,strokeWidth:2,color:"var(--text-dim)",style:{animation:"spin var(--dur-spin) linear infinite",flexShrink:0},"aria-hidden":"true"}),i&&$&&(0,n.jsx)(R.m_,{content:Z,children:(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),i((0,z.qP)(e.fullPath,r),e.isDir)},"aria-label":Z,style:{position:"absolute",right:e.isDir?4:28,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-2)",padding:"0 var(--space-4)",height:20,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--accent)",cursor:"pointer",fontSize:"var(--text-sm)",fontWeight:600,whiteSpace:"nowrap",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},children:[(0,n.jsx)(k.A,{size:11,strokeWidth:2.2,"aria-hidden":"true"}),f("fileExplorer.mention")]})}),$&&!e.isDir&&(0,n.jsx)(R.m_,{content:V,children:(0,n.jsx)("a",{href:`/api/files/${(0,z.HG)(e.fullPath)}?type=download`,download:!0,onClick:e=>e.stopPropagation(),"aria-label":V,style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-2)",padding:"0 5px",height:20,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-sm)",fontWeight:600,whiteSpace:"nowrap",textDecoration:"none",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},children:(0,n.jsx)(w.A,{size:11,strokeWidth:2.2,"aria-hidden":"true"})})})]}),e.isDir&&(0,n.jsx)("div",{role:"group",inert:!m||void 0,className:"accordion-flow "+(m?"is-open":""),children:(0,n.jsxs)("div",{className:"accordion-flow-inner",children:[E.map(e=>(0,n.jsx)(P,{node:e,depth:t+1,cwd:r,onOpenFile:s,onAtMention:i,expandedPaths:o,onToggleExpanded:l,refreshToken:c,highlightedPaths:u,gitStatusByPath:h,changedDirectoryPaths:p},e.fullPath)),0===E.length&&I&&(0,n.jsx)("div",{style:{paddingLeft:8+(t+1)*14,fontSize:"var(--text-sm)",color:"var(--text-dim)",height:22,display:"flex",alignItems:"center"},children:f("fileExplorer.emptyDir")})]})})]})}let D=(0,a.forwardRef)(function({cwd:e,onOpenFile:t,refreshKey:r,onAtMention:s,onAtMentions:i,onUploadBusyChange:o,onRefreshDone:l},c){let{t:u,tn:h}=(0,d.s9)(),[p,f]=(0,a.useState)([]),[m,x]=(0,a.useState)(!0),[v,g]=(0,a.useState)(null),[b,w]=(0,a.useState)(new Set),[N,L]=(0,a.useState)(0),[M,D]=(0,a.useState)(new Set),[F,$]=(0,a.useState)([]),[O,B]=(0,a.useState)("idle"),[H,U]=(0,a.useState)(0),[K,q]=(0,a.useState)(null),[Z,V]=(0,a.useState)(null),[G,J]=(0,a.useState)(null),X=(0,a.useRef)(null),Y=(0,a.useRef)(null),_=`${r??0}:${N}`,Q="idle"!==O,ee=(0,a.useMemo)(()=>new Map(F.map(e=>[(0,z.A0)(e.filePath),e])),[F]),et=(0,a.useMemo)(()=>{let t=new Set,r=(0,z.A0)(e).replace(/\/$/,"");for(let e of F){let n=(0,z.gX)((0,z.A0)(e.filePath));for(;(n===r||n.startsWith(`${r}/`))&&(t.add(n),n!==r);){let e=(0,z.gX)(n);if(e===n)break;n=e}}return t},[e,F]),er=(0,a.useCallback)((e,t)=>{w(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]),en=(0,a.useCallback)(t=>{let r=t.uploaded??[];V({uploaded:r,skipped:t.skipped??[],errors:t.errors??[]}),r.length>0&&(D(new Set(r.map(t=>(0,z.e_)(e,t)))),L(e=>e+1))},[e]),ea=(0,a.useCallback)(async(t,r)=>{J(null),q(null),U(0),B("uploading");try{let{status:n,data:a}=await new Promise((n,a)=>{let s=new FormData;t.forEach(e=>s.append("files",e,e.name));let i=new XMLHttpRequest;i.open("POST",`/api/files/${(0,z.HG)(e)}?type=upload&conflict=${r}`),i.upload.onprogress=e=>{e.lengthComputable&&e.total>0&&U(Math.round(e.loaded/e.total*100))},i.onerror=()=>a(Error((0,d.Tl)("fileExplorer.uploadNetworkError"))),i.onabort=()=>a(Error((0,d.Tl)("fileExplorer.uploadCancelled"))),i.onload=()=>{let e={};try{e=JSON.parse(i.responseText)}catch{i.responseText&&(e.error=i.responseText)}n({status:i.status,data:e})},i.send(s)});if(409===n&&a.conflicts?.length)return void J({files:t,conflicts:a.conflicts,nonReplaceable:a.nonReplaceable??[]});if(n<200||n>=300)throw Error(a.error??(0,d.Tl)("fileExplorer.uploadFailed",{status:n}));U(100),en(a)}catch(e){q(e instanceof Error?e.message:String(e))}finally{B("idle")}},[en,e]),es=(0,a.useCallback)(async t=>{if(0!==t.length&&!Q){V(null),D(new Set),J(null),q(null),U(0),B("checking");try{let r=await fetch(`/api/files/${(0,z.HG)(e)}?type=upload-check`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileNames:t.map(e=>e.name)})}),n=await r.json().catch(()=>({}));if(!r.ok)throw Error(n.error??(0,d.Tl)("fileExplorer.uploadCheckFailed",{status:r.status}));if(n.conflicts?.length)return void J({files:t,conflicts:n.conflicts,nonReplaceable:n.nonReplaceable??[]});await ea(t,"error")}catch(e){q(e instanceof Error?e.message:String(e))}finally{B("idle")}}},[e,ea,Q]),ei=(0,a.useCallback)(e=>{let t=Array.from(e.target.files??[]);e.target.value="",es(t)},[es]);(0,a.useImperativeHandle)(c,()=>({openUploadPicker(){Q||Y.current?.click()}}),[Q]),(0,a.useEffect)(()=>{o?.(Q)},[o,Q]),(0,a.useEffect)(()=>()=>o?.(!1),[o]);let eo=(0,a.useRef)(l);eo.current=l,(0,a.useEffect)(()=>{let t=X.current!==e;X.current=e,t&&(w(new Set),D(new Set),V(null),J(null),q(null)),x(t),g(null);let r=!1;return W(e).then(e=>{r||f(e)}).catch(e=>{r||g(e instanceof Error?e.message:String(e))}).finally(()=>{r||x(!1),eo.current?.()}),()=>{r=!0}},[e,r,N]),(0,a.useEffect)(()=>{let t=!1;return I(e).then(e=>{t||$(e.isGitRepository?e.files:[])}).catch(()=>{t||$([])}),()=>{t=!0}},[e,r,N]);let el=Q||null!==G||null!==K||null!==Z,ed=(0,a.useCallback)(()=>{Z&&0!==Z.uploaded.length&&i?.(Z.uploaded.map(t=>(0,z.qP)((0,z.e_)(e,t),e)))},[e,i,Z]);return(0,n.jsxs)("div",{style:{minHeight:"100%"},children:[(0,n.jsx)("input",{ref:Y,type:"file",multiple:!0,hidden:!0,onChange:ei}),el&&(0,n.jsxs)("div",{style:{padding:"var(--space-3) var(--space-4)",borderBottom:"1px solid var(--border)"},children:[Q&&(0,n.jsxs)("div",{role:"status","aria-live":"polite","aria-label":"checking"===O?u("fileExplorer.checkingFiles"):u("fileExplorer.uploadingPercent",{percent:H}),children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"var(--space-4)",minHeight:14,color:"var(--text-muted)"},children:["checking"===O?(0,n.jsx)(y.A,{size:13,strokeWidth:2.2,style:{animation:"spin var(--dur-spin) linear infinite"},"aria-hidden":"true"}):(0,n.jsx)(j.A,{size:13,strokeWidth:2,"aria-hidden":"true"}),"uploading"===O&&(0,n.jsxs)("span",{style:{fontSize:"var(--text-xs)"},children:[H,"%"]})]}),"uploading"===O&&(0,n.jsx)("div",{style:{height:3,marginTop:"var(--space-2)",overflow:"hidden",borderRadius:2,background:"var(--border)"},children:(0,n.jsx)("div",{style:{width:`${H}%`,height:"100%",background:"var(--accent)",transition:"width var(--dur-fast) var(--ease-out-warm)"}})})]}),G&&(0,n.jsxs)("div",{role:"alert",style:{padding:7,border:"1px solid color-mix(in srgb, var(--status-warning) 55%, var(--border))",borderRadius:4,background:"color-mix(in srgb, var(--status-warning) 9%, var(--bg-panel))"},children:[(0,n.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text)",lineHeight:1.35,overflowWrap:"anywhere"},children:h("fileExplorer.filesAlreadyExist",G.conflicts.length,{files:G.conflicts.join(", ")})}),G.nonReplaceable.length>0&&(0,n.jsx)("div",{style:{marginTop:3,fontSize:"var(--text-xs)",color:"var(--status-warning)",lineHeight:1.35,overflowWrap:"anywhere"},children:u("fileExplorer.cannotReplace",{files:G.nonReplaceable.join(", ")})}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,marginTop:7},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void ea(G.files,"overwrite"),style:{height:24,minHeight:24,padding:"0 var(--space-4)",border:"1px solid var(--status-error)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--status-error)",cursor:"pointer",fontSize:"var(--text-sm)"},children:u("fileExplorer.replace")}),(0,n.jsx)("button",{type:"button",onClick:()=>void ea(G.files,"skip"),style:{height:24,minHeight:24,padding:"0 var(--space-4)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-sm)"},children:u("fileExplorer.skipExisting")}),(0,n.jsx)("button",{type:"button",onClick:()=>J(null),style:{height:24,minHeight:24,padding:"0 var(--space-4)",border:"none",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-sm)"},children:u("fileExplorer.cancel")})]})]}),K&&(0,n.jsxs)("div",{role:"alert",style:{display:"flex",alignItems:"flex-start",gap:"var(--space-3)",fontSize:"var(--text-sm)",lineHeight:1.35,color:"var(--status-error)"},children:[(0,n.jsx)("span",{style:{minWidth:0,flex:1,overflowWrap:"anywhere"},children:K}),(0,n.jsx)(A,{onClick:()=>q(null),title:u("fileExplorer.dismissError")})]}),Z&&(0,n.jsxs)("div",{"aria-live":"polite",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",minHeight:22,fontSize:"var(--text-sm)"},children:[(0,n.jsxs)("div",{style:{minWidth:0,flex:1,display:"flex",alignItems:"center",gap:"var(--space-4)"},children:[Z.uploaded.length>0&&(0,n.jsxs)("span",{title:u("fileExplorer.uploadedCount",{count:Z.uploaded.length}),"aria-label":u("fileExplorer.uploadedCount",{count:Z.uploaded.length}),style:{display:"flex",alignItems:"center",gap:3,color:"var(--status-success)"},children:[(0,n.jsx)(S.A,{size:13,strokeWidth:2.4,"aria-hidden":"true"}),(0,n.jsx)("span",{children:Z.uploaded.length})]}),Z.skipped.length>0&&(0,n.jsxs)("span",{title:u("fileExplorer.skippedCount",{count:Z.skipped.length}),"aria-label":u("fileExplorer.skippedCount",{count:Z.skipped.length}),style:{display:"flex",alignItems:"center",gap:3,color:"var(--text-dim)"},children:[(0,n.jsx)(C.A,{size:13,strokeWidth:2,"aria-hidden":"true"}),(0,n.jsx)("span",{children:Z.skipped.length})]}),Z.errors.length>0&&(0,n.jsxs)("span",{title:u("fileExplorer.failedCount",{count:Z.errors.length}),"aria-label":u("fileExplorer.failedCount",{count:Z.errors.length}),style:{display:"flex",alignItems:"center",gap:3,color:"var(--status-error)"},children:[(0,n.jsx)(E.A,{size:13,strokeWidth:2,"aria-hidden":"true"}),(0,n.jsx)("span",{children:Z.errors.length})]})]}),Z.uploaded.length>0&&i&&(0,n.jsx)(R.m_,{content:u(1===Z.uploaded.length?"fileExplorer.addUploadedFile":"fileExplorer.addAllUploadedFiles"),children:(0,n.jsxs)("button",{type:"button",onClick:ed,"aria-label":u(1===Z.uploaded.length?"fileExplorer.addUploadedFile":"fileExplorer.addAllUploadedFiles"),style:{height:22,padding:"0 7px",display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-2)",flexShrink:0,border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-panel)",color:"var(--accent)",cursor:"pointer",fontSize:"var(--text-sm)",fontWeight:600,whiteSpace:"nowrap",transition:"background var(--dur-fast) var(--ease-out-warm), border-color var(--dur-fast) var(--ease-out-warm)"},children:[(0,n.jsx)(k.A,{size:11,strokeWidth:2.2,"aria-hidden":"true"}),u("fileExplorer.mention")]})}),(0,n.jsx)(A,{onClick:()=>V(null),title:u("fileExplorer.dismissUploadResults")})]}),Z.errors.map(e=>(0,n.jsxs)("div",{title:e.error,style:{display:"flex",alignItems:"center",gap:"var(--space-2)",marginTop:3,minWidth:0,fontSize:"var(--text-xs)",color:"var(--status-error)"},children:[(0,n.jsx)(T.A,{size:11,strokeWidth:2,style:{flexShrink:0},"aria-hidden":"true"}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.name))]})]}),(0,n.jsxs)("div",{role:"tree","aria-label":u("sessionSidebar.explorer"),style:{padding:"var(--space-1) var(--space-2)"},children:[m?(0,n.jsx)("div",{style:{padding:"var(--space-4) var(--space-5)",fontSize:"var(--text-sm)",color:"var(--text-dim)"},children:u("fileExplorer.loadingFiles")}):v?(0,n.jsx)("div",{style:{padding:"var(--space-4) var(--space-5)",fontSize:"var(--text-sm)",color:"var(--status-error)"},children:v}):p.map(r=>(0,n.jsx)(P,{node:r,depth:0,cwd:e,onOpenFile:t,onAtMention:s,expandedPaths:b,onToggleExpanded:er,refreshToken:_,highlightedPaths:M,gitStatusByPath:ee,changedDirectoryPaths:et},r.fullPath)),!m&&!v&&0===p.length&&(0,n.jsx)("div",{style:{padding:"var(--space-4) var(--space-5)",fontSize:"var(--text-sm)",color:"var(--text-dim)"},children:u("fileExplorer.noFilesFound")})]})]})});var F=r(32159),$=r(65377),O=r(92298);function B(e){return e.name||e.id||e.key}function H({onClose:e,onRestored:t}){let{t:r}=(0,d.s9)(),[s,i]=(0,a.useState)([]),[o,l]=(0,a.useState)(""),[c,h]=(0,a.useState)(!0),[p,f]=(0,a.useState)(null),[m,v]=(0,a.useState)(null),g=(0,u.Z)({onClose:e,active:!0});(0,a.useEffect)(()=>{let e=new AbortController;return h(!0),f(null),fetch("/api/sessions/archive",{signal:e.signal}).then(async e=>{let t=await e.json();if(!e.ok)throw Error(t.error||`HTTP ${e.status}`);i(t.archives??[])}).catch(e=>{e?.name!=="AbortError"&&f(e instanceof Error?e.message:String(e))}).finally(()=>{e.signal.aborted||h(!1)}),()=>e.abort()},[]);let b=(0,a.useMemo)(()=>{let e=o.trim().toLocaleLowerCase();return e?s.filter(t=>[B(t),t.id,t.key,t.cwd].filter(Boolean).some(t=>t.toLocaleLowerCase().includes(e))):s},[s,o]),y=async n=>{if(!m){v(n.key),f(null);try{let a=await fetch("/api/sessions/archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:n.key})}),s=await a.json();if(!a.ok)throw Error(s.error||`HTTP ${a.status}`);if(!s.session)throw Error(r("sessionSidebar.archiveRestoreMissing"));t(s.session),e()}catch(e){f(e instanceof Error?e.message:String(e))}finally{v(null)}}};return(0,n.jsx)("div",{className:"animate-fade-in",onMouseDown:t=>{t.target===t.currentTarget&&e()},style:{position:"fixed",inset:0,zIndex:"var(--z-dialog)",display:"flex",alignItems:"center",justifyContent:"center",padding:"var(--space-5)",background:"var(--overlay-backdrop)"},children:(0,n.jsxs)("div",{ref:g,role:"dialog","aria-modal":"true","aria-label":r("sessionSidebar.archivedSessions"),tabIndex:-1,className:"animate-scale-in",style:{width:"min(620px, 100%)",maxHeight:"min(640px, 90vh)",display:"flex",flexDirection:"column",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",background:"var(--bg)",boxShadow:"var(--shadow-modal)",outline:"none",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:9,padding:"12px 14px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)(F.A,{size:16,strokeWidth:1.9,"aria-hidden":"true"}),(0,n.jsx)("strong",{style:{flex:1,fontSize:"var(--text-base)"},children:r("sessionSidebar.archivedSessions")}),(0,n.jsx)("button",{type:"button",className:"sidebar-icon-button ui-focus-ring",onClick:e,"aria-label":r("sessionSidebar.closeArchive"),title:r("sessionSidebar.closeArchive"),children:(0,n.jsx)(x.A,{size:15,strokeWidth:1.9,"aria-hidden":"true"})})]}),(0,n.jsx)("div",{style:{padding:"10px 14px",borderBottom:"1px solid var(--border)"},children:(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:[(0,n.jsx)($.A,{size:14,strokeWidth:1.9,"aria-hidden":"true"}),(0,n.jsx)("input",{autoFocus:!0,value:o,onChange:e=>l(e.target.value),placeholder:r("sessionSidebar.archiveSearchPlaceholder"),"aria-label":r("sessionSidebar.archiveSearch"),style:{minWidth:0,flex:1,border:0,outline:"none",background:"transparent",color:"var(--text)",fontSize:"var(--text-sm)"}})]})}),(0,n.jsxs)("div",{style:{minHeight:160,overflowY:"auto",padding:"6px 8px"},children:[c&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-muted",children:r("sessionSidebar.archiveLoading")}),!c&&p&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-error",children:p}),!c&&!p&&0===b.length&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-muted",children:o.trim()?r("sessionSidebar.archiveNoMatches"):r("sessionSidebar.archiveEmpty")}),!c&&!p&&b.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"9px 8px",borderRadius:7},children:[(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)",fontSize:"var(--text-sm)",fontWeight:600},title:B(e),children:B(e)}),(0,n.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:"var(--text-xs)"},title:e.cwd||e.key,children:e.cwd||e.key})]}),(0,n.jsxs)("button",{type:"button",className:"sidebar-menu-item",disabled:null!==m,onClick:()=>void y(e),title:r("sessionSidebar.restoreArchive"),children:[(0,n.jsx)(O.A,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),(0,n.jsx)("span",{children:m===e.key?r("sessionSidebar.restoringArchive"):r("sessionSidebar.restoreArchive")})]})]},e.key))]}),(0,n.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",padding:"9px 14px",borderTop:"1px solid var(--border)",background:"var(--bg-panel)"},children:(0,n.jsx)("button",{type:"button",className:"sidebar-session-cancel-button",onClick:e,children:r("sessionSidebar.cancel")})})]})})}var U=r(51087),K=r(61937);let q="omp-web:last-open-by-project";function Z(){try{return window.localStorage}catch{return null}}function V(e){try{let t=e.getItem(q);if(!t)return{};let r=JSON.parse(t);if(!r||"object"!=typeof r||Array.isArray(r))return{};return Object.fromEntries(Object.entries(r).filter(([,e])=>"string"==typeof e&&e.length>0))}catch{return{}}}function G(e){return e.projectKey??e.projectRoot??e.cwd}let J=/^[a-zA-Z]:[\\/]/,X=/^\/\//;function Y(e){let t=e.replace(/\\/g,"/"),r=J.test(t)||X.test(t);return t=t.replace(/\/{2,}/g,"/").replace(/\/+$/,""),r?t.toLowerCase():t}var _=r(83444),Q=r(23637),ee=r(82749),et=r(2125),er=r(80846),en=r(66763),ea=r(44236),es=r(59680),ei=r(12363),eo=r(65738),el=r(15480);function ed(e){let t=/^[a-zA-Z]:/.test(e)||e.includes("\\"),r=e.replace(/[\/]+$/,"").replace(/\\/g,"/");return t?r.toLowerCase():r}let ec="omp-web:unread-session-ids",eu="ompgui:expanded-projects",eh=new Set;function ep(e,t){return t&&e.startsWith(t)?"~"+e.slice(t.length):e}function ef(e){let t=e.replace(/[\\/]+$/,""),r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return r>=0?t.slice(r+1):t}function em({text:e}){return(0,n.jsx)("span",{className:"sidebar-path-label",children:(0,n.jsx)("span",{className:"sidebar-path-label-text",children:e})})}function ex({label:e,title:t,onClick:r,active:a=!1,disabled:s=!1,children:i}){return(0,n.jsx)("button",{type:"button","aria-label":e,title:t??e,onClick:r,disabled:s,"aria-pressed":a,className:"sidebar-icon-button",children:i})}function ev({anchor:e,open:t,onClose:r,placement:s="below",align:i="end",minWidth:o=136,className:d,style:c,children:u}){let h=(0,a.useRef)(null),[p,f]=(0,a.useState)(null),m=(0,a.useCallback)((e,t)=>{let r;if(!e||!t)return;let n=e.getBoundingClientRect(),a=t.offsetWidth,o=t.offsetHeight;"above"===s?(r=n.top-o-5)<8&&(r=Math.min(n.bottom+5,window.innerHeight-o-8)):(r=n.bottom+5)+o>window.innerHeight-8&&(r=n.top-o-5),r<8&&(r=8),f({top:r,left:"start"===i?Math.max(8,Math.min(n.left,window.innerWidth-a-8)):Math.max(8,Math.min(n.right-a,window.innerWidth-a-8))})},[s,i]);return((0,a.useLayoutEffect)(()=>{t&&m(e.current,h.current)},[t,m,e]),(0,a.useEffect)(()=>{if(!t)return;let r=()=>m(e.current,h.current);return window.addEventListener("scroll",r,!0),window.addEventListener("resize",r),()=>{window.removeEventListener("scroll",r,!0),window.removeEventListener("resize",r)}},[t,m,e]),(0,a.useEffect)(()=>{if(!t)return;let n=setTimeout(()=>{let e=h.current?.querySelector("button:not([disabled])");e?.focus()},0),a=t=>{let n=t.target;e.current?.contains(n)||h.current?.contains(n)||r()},s=t=>{if("Escape"===t.key)t.stopPropagation(),t.preventDefault(),r(),e.current?.focus();else if("ArrowDown"===t.key||"ArrowUp"===t.key){t.preventDefault();let e=Array.from(h.current?.querySelectorAll("button:not([disabled])")??[]);if(0===e.length)return;let r=e.indexOf(document.activeElement),n="ArrowDown"===t.key?(r+1)%e.length:(r-1+e.length)%e.length;e[n]?.focus()}};return document.addEventListener("mousedown",a),document.addEventListener("touchstart",a),document.addEventListener("keydown",s),()=>{clearTimeout(n),document.removeEventListener("mousedown",a),document.removeEventListener("touchstart",a),document.removeEventListener("keydown",s)}},[t,r,e]),!t||"u"<typeof document)?null:(0,l.createPortal)((0,n.jsx)("div",{ref:h,role:"menu",className:`sidebar-portal-menu${d?` ${d}`:""}`,style:{top:p?p.top:-9999,left:p?p.left:-9999,visibility:p?"visible":"hidden",minWidth:o,...c},children:u}),document.body)}function eg(e){let t=new Map;for(let r of e)t.set(r.id,{session:r,children:[]});let r=new Map;for(let t of e)t.parentSessionId&&r.set(t.id,t.parentSessionId);let n=[];for(let e of t.values()){let a=function(e){let n=r.get(e),a=new Set;for(;n&&!a.has(n);){if(a.add(n),t.has(n))return n;n=r.get(n)}return null}(e.session.id);a?t.get(a).children.push(e):n.push(e)}let a=e=>{e.sort((e,t)=>t.session.modified.localeCompare(e.session.modified)),e.forEach(e=>a(e.children))};return a(n),n}let eb="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function ey(){let[e,t]=(0,a.useState)(!1),[r,s]=(0,a.useState)(!1),i=(0,a.useRef)(null),o=(0,a.useRef)(null),l=(0,K.j)(),d=function(e,t,r){let[n,s]=(0,a.useState)(e),i=(0,a.useRef)(null),o=(0,a.useRef)(0);return(0,a.useEffect)(()=>{if(!t||r)return void s(e);o.current=0;let n=4*e.length,a=()=>{o.current+=1;let t=Math.floor(o.current/n*e.length);s(e.split("").map((e,r)=>" "===e?" ":r<t?e:eb[Math.floor(Math.random()*eb.length)]).join("")),o.current<n?i.current=requestAnimationFrame(a):s(e)};return i.current=requestAnimationFrame(a),()=>{i.current&&cancelAnimationFrame(i.current)}},[e,t,r]),n}(e?"v0.5.6":"ompgui",r,l),c=(0,a.useCallback)(e=>{t(e),i.current&&clearTimeout(i.current),l||(s(!0),i.current=setTimeout(()=>s(!1),(e?6:8)*4*(1e3/60)+100))},[l]),u=(0,a.useCallback)(()=>{o.current&&clearTimeout(o.current);let t=!e;c(t),t&&(o.current=setTimeout(()=>c(!1),3e3))},[e,c]);return(0,a.useEffect)(()=>()=>{o.current&&clearTimeout(o.current),i.current&&clearTimeout(i.current)},[]),(0,n.jsx)("button",{onClick:u,className:"sidebar-brand",title:e?"Show ompgui name":"Show ompgui version",children:r||e?(0,n.jsx)("span",{className:"sidebar-brand-dynamic","data-version":e?"true":"false",children:d}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"sidebar-brand-accent",children:"omp"}),(0,n.jsx)("span",{className:"sidebar-brand-name",children:"gui"})]})})}function ek({selectedSessionId:e,optimisticSession:t,onSelectSession:r,onSessionIntent:s,onNewSession:i,initialSessionId:o,skipInitialProjectSelection:l,onInitialRestoreDone:u,refreshKey:h,onSessionDeleted:p,onSessionRestored:f,selectedCwd:x,sidebarVisible:g=!0,onCwdChange:b,onOpenFile:y,explorerRefreshKey:k,onExplorerRefresh:w,explorerRefreshing:C,onExplorerRefreshDone:E,onAtMention:T,onAtMentions:N,onOpenSettings:z,onOpenUsage:W,updateAvailable:I}){let{t:L}=(0,d.s9)(),[M,A]=(0,a.useState)([]),[P,O]=(0,a.useState)(!0),[B,K]=(0,a.useState)(null),[J,X]=(0,a.useState)(null),[es,ei]=(0,a.useState)(""),[eo,el]=(0,a.useState)([]),[em,ev]=(0,a.useState)(null),[eb,eC]=(0,a.useState)(!1),[eE,eT]=(0,a.useState)(!1),[eN,eR]=(0,a.useState)(!1),[ez,eW]=(0,a.useState)(null),[eI,eL]=(0,a.useState)(()=>(function(){try{let e=window.localStorage.getItem(eu)||window.localStorage.getItem("omp-web:expanded-projects");if(!e)return null;let t=JSON.parse(e);if(Array.isArray(t))return new Set(t.filter(e=>"string"==typeof e&&e.length>0));return null}catch{return null}})()),[eM,eA]=(0,a.useState)(null),[eP,eD]=(0,a.useState)({}),[eF,e$]=(0,a.useState)(!1),[eO,eB]=(0,a.useState)(!1),[eH,eU]=(0,a.useState)(""),[eK,eq]=(0,a.useState)(null),[eZ,eV]=(0,a.useState)(!1),[eG,eJ]=(0,a.useState)(null),eX=(0,a.useRef)(null),eY=(0,a.useRef)(null),[e_,eQ]=(0,a.useState)(!0),e0=(0,a.useRef)(!1);(0,a.useEffect)(()=>{g&&e_&&(e0.current=!0)},[g,e_]);let[e1,e2]=(0,a.useState)(0),[e5,e4]=(0,a.useState)(!1),[e3,e6]=(0,a.useState)(!1),[e9,e8]=(0,a.useState)(()=>new Set),[e7,te]=(0,a.useState)(()=>(function(){try{let e=window.localStorage.getItem(ec);if(!e)return new Set;let t=JSON.parse(e);if(Array.isArray(t))return new Set(t.filter(e=>"string"==typeof e));return new Set}catch{return new Set}})()),tt=(0,a.useRef)(new Set),[tr,tn]=(0,a.useState)(()=>Date.now()),[ta,ts]=(0,a.useState)(!1),[ti,to]=(0,a.useState)(""),[tl,td]=(0,a.useState)(!1),tc=(0,a.useRef)(null),tu=(0,a.useRef)(!1),th=(0,a.useRef)(null),tp=(0,a.useRef)(null),tf=(0,a.useRef)(!1),tm=(0,a.useRef)(!1),tx=(0,a.useRef)(null),tv=(0,a.useRef)(null),tg=(0,a.useRef)(null),tb=(0,a.useRef)(0),ty=(0,a.useRef)(!0),tk=(0,a.useRef)(!1);(0,a.useEffect)(()=>{let e=tb.current+1;return tb.current=e,ty.current=!1,()=>{tb.current===e&&(ty.current=!0,tk.current=!1,tf.current=!1,tm.current=!1,tx.current&&(clearTimeout(tx.current),tx.current=null),th.current&&(clearTimeout(th.current),th.current=null),tg.current?.abort(),tg.current=null)}},[]);let tw=(0,a.useCallback)(async(e=!1)=>{let t=tb.current,r=()=>!ty.current&&tb.current===t;if(!r())return;e?tf.current=!0:tf.current&&(tf.current=!1,tm.current=!1),tg.current?.abort();let n=new AbortController;tg.current=n;try{e&&O(!0);let t={};tv.current&&(t["If-None-Match"]=tv.current);let a=await fetch("/api/sessions",{headers:t,signal:n.signal});if(!r()||304===a.status)return;if(!a.ok)throw Error(`HTTP ${a.status}`);let s=a.headers.get("ETag");s&&(tv.current=s);let i=await a.json();if(!r())return;A(i.sessions),tu.current||e8(new Set(i.runningSessionIds??[]));let o=new Set(i.sessions.map(e=>e.id));if(te(e=>{if(0===e.size)return e;let t=new Set([...e].filter(e=>o.has(e)));return t.size===e.size?e:t}),K(null),!e){e6(!0),th.current&&clearTimeout(th.current),th.current=null;let e=setTimeout(()=>{th.current===e&&(th.current=null),r()&&e6(!1)},2e3);th.current=e}}catch(e){if(e?.name==="AbortError"||!r())return;K((0,d.Tl)("sessionSidebar.loadFailed",{detail:e instanceof Error?e.message:String(e)}))}finally{if(!r())return;if(e&&(O(!1),tg.current===n&&(tf.current=!1,tm.current))&&(tm.current=!1,!tx.current)){let e=setTimeout(()=>{tx.current===e&&(tx.current=null),r()&&tw(!1)},300);tx.current=e}}},[]);(0,a.useEffect)(()=>{let e=!tk.current;tk.current=!0,tw(e)},[tw,h]);let tj=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/projects");if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();el(t.projects??[]),ev(null),tE.current=!0}catch(e){ev((0,d.Tl)("projects.loadFailed",{detail:e instanceof Error?e.message:String(e)}))}},[]);(0,a.useEffect)(()=>{tj()},[tj,h]),(0,a.useEffect)(()=>{let e=setInterval(()=>tn(Date.now()),6e4);return()=>clearInterval(e)},[]),(0,a.useEffect)(()=>{if(null!==eI)try{window.localStorage.setItem(eu,JSON.stringify([...eI]))}catch{}},[eI]),(0,a.useEffect)(()=>{try{0===e7.size?window.localStorage.removeItem(ec):window.localStorage.setItem(ec,JSON.stringify([...e7]))}catch{}},[e7]);let tS=(0,a.useCallback)(()=>{let e=tb.current,t=()=>!ty.current&&tb.current===e;if(!t())return;if(tf.current){tm.current=!0;return}if(tx.current)return;let r=setTimeout(()=>{tx.current===r&&(tx.current=null),t()&&tw(!1)},300);tx.current=r},[tw]);(0,a.useEffect)(()=>{let e=tb.current,t=new EventSource("/api/agent/running/events");return t.onmessage=t=>{if(!ty.current&&tb.current===e)try{let e=JSON.parse(t.data);if("sessions-changed"===e.type){let t=Array.isArray(e.sessionIds)?e.sessionIds.filter(e=>"string"==typeof e):[];!0===e.refreshSessionList&&((0,_.s)({type:"sessions-changed",sessionIds:t,refreshSessionList:!0}),tS());return}if("running"===e.type){tu.current=!0;let t=Array.isArray(e.runningSessionIds)?e.runningSessionIds.filter(e=>"string"==typeof e):[];e8(new Set(t)),!0===e.refreshSessionList&&tS()}}catch{}},()=>{tx.current&&(clearTimeout(tx.current),tx.current=null),t.close()}},[tw,tS]),(0,a.useEffect)(()=>{let t=tt.current,r=[...t].filter(t=>!e9.has(t)&&t!==e),n=[...e9].filter(e=>!t.has(e));(r.length>0||n.length>0)&&te(e=>{let t=new Set(e);return n.forEach(e=>t.delete(e)),r.forEach(e=>t.add(e)),t}),(r.length>0||n.length>0)&&tS(),tt.current=e9},[e9,e,tS]),(0,a.useEffect)(()=>{e&&te(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),r})},[e]),(0,a.useEffect)(()=>{void 0!==k&&e2(e=>e+1)},[k]),(0,a.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&ei(e.home)}).catch(()=>{})},[]);let tC=(0,a.useRef)(!1),tE=(0,a.useRef)(!1),tT=(0,a.useCallback)(e=>{if(!e)return null;for(let t of Object.values(eP))if(t.worktrees.some(t=>ed(t.path)===ed(e)))return t.projectRoot;let t=eo.find(t=>Y(t.path)===Y(e));if(t)return t.path;let r=Y(e),n=M.find(e=>Y(e.cwd)===r);return n?.projectRoot??e},[eP,M,eo]),tN=(0,a.useCallback)(e=>{eL(t=>{if(t?.has(e))return t;let r=new Set(t??[]);return r.add(e),r})},[]),tR=(0,a.useCallback)(e=>{eL(t=>{if(!t?.has(e))return t;let r=new Set(t);return r.delete(e),r})},[]),tz=(0,a.useCallback)(e=>{eL(t=>{let r=new Set(t??[]);return r.has(e)?r.delete(e):r.add(e),r})},[]),tW=(0,a.useCallback)(e=>{tY.current=!1,X(e),tN(e)},[tN]),tI=(0,a.useRef)(null);(0,a.useEffect)(()=>{tI.current!==J&&(tI.current=J,b?.(J,tT(J)))},[J,b,tT]);let tL=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(x&&x!==tL.current){tL.current=x,X(x);let e=tT(x);e&&tN(e)}},[x,tT,tN]);let[tM,tA]=(0,a.useState)(0);(0,a.useLayoutEffect)(()=>{if(!J)return;let e=!1;return fetch(`/api/worktrees?cwd=${encodeURIComponent(J)}`).then(e=>e.json()).then(t=>{if(e||t.error||!t.projectRoot)return;let r=t.projectRoot,n={forCwd:J,projectRoot:r,isGit:t.isGit??!1,isTopLevel:t.isTopLevel??!1,worktrees:t.worktrees??[]};eD(e=>{let t=ed(r),a=e[t];if(a&&ed(a.projectRoot)!==t){let r={...e};return delete r[ed(a.projectRoot)],r[t]=n,r}return{...e,[t]:n}})}).catch(()=>{}),()=>{e=!0}},[J,tM,h]);let tP=(()=>{if(!t)return null;if(t.projectRoot)return t.projectRoot;if(t.projectKey)return t.projectKey;let e=t.cwd??"";if(!e)return null;let r=eo.find(t=>Y(t.path)===Y(e));return r?r.path:e})(),tD=(0,a.useRef)(new Map),tF=(0,a.useMemo)(()=>{let e=M;if(t&&!e.some(e=>e.id===t.id)){let r=tP??t.cwd,n=r?Y(r):void 0;e=[...e,{...t,projectRoot:r??t.cwd,...n?{projectKey:n}:{}}]}let r=new Set(e.map(e=>e.id)),n=[];for(let e of e9){if(r.has(e))continue;let t=tD.current.get(e);t||(t=new Date().toISOString(),tD.current.set(e,t));let a=tP??J??"",s=a?Y(a):void 0;n.push({id:e,path:"",cwd:J??"",name:void 0,created:t,modified:t,messageCount:1,firstMessage:"",projectRoot:a,...s?{projectKey:s}:{}})}if(tD.current.size>n.length)for(let e of[...tD.current.keys()])(!e9.has(e)||r.has(e))&&tD.current.delete(e);return n.length?[...e,...n]:e},[M,t,tP,e9,J]),t$=(0,a.useMemo)(()=>{let e=eo,t=!!tP&&e.some(e=>Y(e.path)===Y(tP));tP&&!t&&(e=[...e,{path:tP}]);let r=new Set(e.map(e=>Y(e.path)));for(let t of e9){if(M.some(e=>e.id===t))continue;let n=tP??J??"";n&&!r.has(Y(n))&&(e=[...e,{path:n}],r.add(Y(n)))}return e},[tP,eo,e9,M,J]),tO=(0,a.useMemo)(()=>tT(J),[tT,J]),tB=!!(t||[...e9].some(e=>!M.some(t=>t.id===e))),tH=(0,a.useMemo)(()=>[...t$].sort((e,t)=>{let r=void 0!==e.addedAt,n=void 0!==t.addedAt;if(r!==n)return r?-1:1;if(r&&n){let r=t.addedAt.localeCompare(e.addedAt);if(0!==r)return r}return e.path.localeCompare(t.path)}),[t$]),tU=(0,a.useRef)(null),tK=(0,a.useMemo)(()=>{if(tB&&tU.current){let e=tU.current,t=new Set(e.map(e=>Y(e.path))),r=[...e];for(let e of tH)t.has(Y(e.path))||r.push(e);return r}return tU.current=tH,tH},[tH,tB]),tq=(0,a.useMemo)(()=>(function(e,t){let r=new Map,n=new Map;for(let t of e){let e=[];r.set(t.path,e),n.set(Y(t.path),e)}for(let e of t){let t=G(e);if(!t)continue;let a=n.get(Y(e.projectKey??t))??r.get(t);a&&a.push(e)}return r})(tK,tF),[tK,tF]),tZ=(0,a.useMemo)(()=>(function(e,t,r){let n=new Set(t),a=new Set(r),s=new Map;for(let t of e){let e=G(t);if(!e)continue;let r=Y(t.projectKey??e),i=s.get(r)??{running:0,unread:0};n.has(t.id)&&(i.running+=1),a.has(t.id)&&(i.unread+=1),s.set(r,i)}return s})(tF,e9,e7),[tF,e9,e7]),tV=(0,a.useDeferredValue)(ti),tG=ta||tl||tV.trim().length>0,tJ=(0,a.useMemo)(()=>{let e=tV.trim().toLowerCase(),t=[];for(let r of tK){let n=tq.get(r.path)??[];if(tl&&(n=n.filter(e=>e9.has(e.id))),e){let t=ef(r.path).toLowerCase();if(0===(n=n.filter(t=>(t.name??"").toLowerCase().includes(e)||t.firstMessage.toLowerCase().includes(e))).length&&!t.includes(e))continue}0===n.length&&(tl||e)||t.push({project:r,sessions:n})}return t},[tK,tq,tl,tV,e9]),tX=(0,a.useMemo)(()=>{let e=new Map;for(let{project:t,sessions:r}of tJ)e.set(t.path,eg(r));return e},[tJ]);(0,a.useEffect)(()=>{if(null===eI||!tE.current)return;let e=new Set(tK.map(e=>e.path)),t=[...eI].filter(t=>!e.has(t));0!==t.length&&eL(e=>{if(!e)return e;let r=new Set(e);return t.forEach(e=>r.delete(e)),r})},[eI,tK]);let tY=(0,a.useRef)(!1),t_=(0,a.useRef)(0),tQ=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{tQ.current&&(clearTimeout(tQ.current),tQ.current=null)},[]),(0,a.useEffect)(()=>{if(l)return;if(o&&!tC.current){if(0===M.length)return;let e=M.find(e=>e.id===o);if(e){t_.current=0,tC.current=!0,X(e.cwd),tN(G(e)),r(e,!0);return}if(t_.current<8){t_.current+=1,tQ.current&&(clearTimeout(tQ.current),tQ.current=null),tQ.current=setTimeout(()=>{tQ.current=null,tw(!1)},1e3);return}t_.current=0,tC.current=!0,u?.()}if(null!==J&&!tY.current)return;let e=tK[0];e&&(X(e.path),tN(e.path),tY.current=0===M.length)},[M,J,o,l,r,u,tK,tN,tw]);let t0=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t0.current||tO&&(t0.current=!0,null===eI&&tN(tO))},[tO,eI,tN]);let t1=(0,a.useCallback)(async e=>{let t=(e??"").trim();if(t&&!eN){eR(!0),eW(null);try{let e=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:t})}),r=await e.json().catch(()=>({}));if(!e.ok||r.error||!r.project)return void eW((0,c.K)({...r,error:r.error??`HTTP ${e.status}`}));await tj(),X(r.project.path),tN(r.project.path),eC(!1)}catch(e){eW(e instanceof Error?e.message:String(e))}finally{eR(!1)}}},[eN,tj,tN]),t2=(0,a.useCallback)(async e=>{if(!eM){eA(e);try{let t=await fetch("/api/projects",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),r=await t.json().catch(()=>({}));if(!t.ok||!r.success)return void U.oR.error((0,c.K)({...r,error:r.error??`HTTP ${t.status}`}));if(null!==tO&&Y(tO)===Y(e)){let t=tK.find(t=>t.path!==e);X(t?t.path:null)}tR(e),await tj()}finally{eA(null)}}},[eM,tO,tK,tR,tj]),t5=(0,a.useCallback)(async()=>{let e=eH.trim(),t=tO?eP[ed(tO)]:void 0;if(!e||eZ||!t)return;let r=t.projectRoot;eV(!0),eq(null);try{let t=await fetch("/api/worktrees",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r,branch:e})}),n=await t.json().catch(()=>({}));if(!t.ok||n.error||!n.path)return void eq((0,c.K)({...n,error:n.error??`HTTP ${t.status}`}));let a=n.path;eB(!1),eU(""),e$(!1),eD(t=>{let n=ed(r),s=t[n];return s?{...t,[n]:{...s,forCwd:a,worktrees:[...s.worktrees,{path:a,branch:e,isMain:!1}]}}:t}),X(a),tA(e=>e+1)}catch(e){eq(e instanceof Error?e.message:String(e))}finally{eV(!1)}},[eH,eZ,tO,eP]),t4=(0,a.useCallback)(async(e,t)=>{let r=tO?eP[ed(tO)]:void 0;if(!r||eZ)return;let n=r.projectRoot;eV(!0),eq(null);try{let r=await fetch("/api/worktrees",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,path:e,force:t})}),a=await r.json().catch(()=>({}));if(!r.ok){if(a.dirty&&!t)return void eJ(e);eq((0,c.K)({...a,error:a.error??`HTTP ${r.status}`}));return}eJ(null),null!==J&&Y(J)===Y(e)&&X(n),tA(e=>e+1)}catch(e){eq(e instanceof Error?e.message:String(e))}finally{eV(!1)}},[tO,eP,eZ,J]),t3=(0,a.useCallback)(()=>{e$(!1),eB(!1),eU(""),eq(null),eJ(null)},[]),t6=(0,a.useCallback)(e=>{tY.current=!1,e.cwd&&X(e.cwd),tN(G(e)),r(e)},[r,tN]),t9=(0,a.useCallback)(()=>{if(!J)return;let e="function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;i?.(e,J)},[J,i]),[t8,t7]=(0,a.useState)(!1),re=(0,a.useRef)(null),rt=(0,a.useCallback)(async e=>{if(e&&!t8){t7(!0);try{let t=await e.text(),r=await fetch("/api/sessions/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileName:e.name,content:t})}),n=await r.json().catch(()=>({}));if(!r.ok||!n.success)return void U.oR.error(n.error??`HTTP ${r.status}`);U.oR.success(L("sessionSidebar.imported")),tw(!1),tj()}catch(e){U.oR.error(e instanceof Error?e.message:String(e))}finally{t7(!1)}}},[t8,tw,tj,L]),rr=eI??eh,rn=tO?eP[ed(tO)]:void 0,ra=(0,a.useCallback)(e=>{let t=eP[ed(e)];if(!t||!t.isGit||!t.isTopLevel)return null;let r=t.worktrees.find(e=>ed(e.path)===ed(J??""))??t.worktrees.find(e=>e.isMain);return r?r.branch??ep(r.path,es):null},[eP,J,es]),rs=!!(rn?.isGit&&rn.isTopLevel&&J&&null!==tO&&Y(tO)===Y(rn.projectRoot)),ri=(0,a.useCallback)(()=>{e$(e=>!e)},[]),ro=(0,a.useCallback)(e=>{let t=M.find(t=>t.id===e);t&&function(e,t=Z()){if(t)try{let r=V(t);if(!(e in r))return;delete r[e],0===Object.keys(r).length?t.removeItem(q):t.setItem(q,JSON.stringify(r))}catch{}}(G(t)),p?.(e),tw()},[M,p,tw]);(0,a.useEffect)(()=>{let t=M.find(t=>t.id===e);t&&function(e,t,r=Z()){if(r)try{let n=V(r);n[e]=t,r.setItem(q,JSON.stringify(n))}catch{}}(G(t),t.id)},[M,e]);let rl=rs&&rn?(0,n.jsx)(eS,{worktreeState:rn,selectedCwd:J,homeDir:es,wtDropdownOpen:eF,wtNewOpen:eO,setWtNewOpen:eB,wtNewBranch:eH,setWtNewBranch:eU,wtError:eK,setWtError:eq,wtBusy:eZ,wtConfirmRemove:eG,setWtConfirmRemove:eJ,onSelectWorktree:e=>{X(e),e$(!1),eq(null)},onCreateWorktree:t5,onRemoveWorktree:(e,t)=>void t4(e,t),anchorRef:eX,newInputRef:eY,onClose:t3}):null,rd=(0,a.useCallback)(()=>{eQ(e=>{let t=!e;return t&&(e0.current=!0),t})},[]);return(0,n.jsxs)("div",{className:"sidebar-shell",children:[eE&&(0,n.jsx)(H,{onClose:()=>eT(!1),onRestored:e=>{f?.(e),tw(!1),tj()}}),eb&&(0,n.jsx)(m,{busy:eN,error:ez,onCancel:()=>{eC(!1),eW(null)},onSelect:e=>void t1(e)}),(0,n.jsxs)("div",{className:"sidebar-header",children:[(0,n.jsxs)("div",{className:"sidebar-header-row",children:[(0,n.jsx)(ey,{}),(0,n.jsxs)("div",{className:"sidebar-header-actions",children:[(0,n.jsx)(R.m_,{content:L("sessionSidebar.archivedSessions"),side:"bottom",children:(0,n.jsx)(ex,{label:L("sessionSidebar.archivedSessions"),onClick:()=>eT(!0),children:(0,n.jsx)(F.A,{size:14,strokeWidth:1.9,"aria-hidden":"true"})})}),(0,n.jsx)(R.m_,{content:L("sessionSidebar.importTitle"),side:"bottom",children:(0,n.jsx)(ex,{label:L("sessionSidebar.import"),onClick:()=>re.current?.click(),disabled:t8,children:(0,n.jsx)(Q.A,{size:14,strokeWidth:1.9,"aria-hidden":"true"})})}),(0,n.jsx)(R.m_,{content:L("sessionSidebar.refresh"),side:"bottom",children:(0,n.jsx)(ex,{label:L("sessionSidebar.refresh"),active:e3,onClick:()=>{tw(!1),tj()},children:e3?(0,n.jsx)(S.A,{size:14,strokeWidth:2.2,"aria-hidden":"true"}):(0,n.jsx)(ee.A,{size:14,strokeWidth:1.9,"aria-hidden":"true"})})})]})]}),(0,n.jsx)("input",{ref:re,type:"file",accept:".jsonl,.json,application/json,application/jsonl",className:"sidebar-import-input",onChange:e=>{let t=e.target.files?.[0]??null;e.target.value="",rt(t)}}),(0,n.jsxs)("button",{onClick:t9,disabled:!J,className:"sidebar-new-session",title:J?L("sessionSidebar.newSessionIn",{cwd:J}):L("sessionSidebar.selectProjectFirst"),children:[(0,n.jsx)(et.A,{size:15,strokeWidth:2.2,className:"sidebar-new-session-icon","aria-hidden":"true"}),(0,n.jsx)("span",{children:L("sessionSidebar.new")})]})]}),(0,n.jsxs)("div",{className:"sidebar-workspaces-header",children:[(0,n.jsx)("span",{className:"sidebar-section-label",children:L("projects.heading")}),(0,n.jsx)(ex,{label:L("sessionSidebar.search"),title:L("sessionSidebar.searchTitle"),active:ta,onClick:()=>{let e=!ta;ts(e),e?setTimeout(()=>tc.current?.focus(),0):to("")},children:(0,n.jsx)($.A,{size:15,strokeWidth:1.9,"aria-hidden":"true"})}),(0,n.jsx)(ex,{label:L("sessionSidebar.filterRunning"),title:L("sessionSidebar.filterRunningTitle"),active:tl,onClick:()=>td(e=>!e),children:(0,n.jsx)(er.A,{size:15,strokeWidth:1.9,"aria-hidden":"true"})}),(0,n.jsx)(ex,{label:L("projects.add"),title:L("projects.addTitle"),onClick:()=>{eC(!0),eW(null)},children:(0,n.jsx)(et.A,{size:15,strokeWidth:1.9,"aria-hidden":"true"})})]}),ta&&(0,n.jsx)("div",{className:"sidebar-search-wrap",children:(0,n.jsx)("input",{ref:tc,value:ti,onChange:e=>to(e.target.value),onKeyDown:e=>{"Escape"===e.key&&(e.preventDefault(),ts(!1),to(""))},placeholder:L("sessionSidebar.searchPlaceholder"),"aria-label":L("sessionSidebar.search"),className:"sidebar-search-input"})}),(0,n.jsxs)("div",{className:"sidebar-workspaces-list",style:{flex:e_&&(x||J)?"1 1 0":"1 1 auto"},children:[P&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-muted",children:L("sessionSidebar.loading")}),em&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-error",children:em}),B&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-error",children:B}),!P&&!em&&!B&&0===tK.length&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-muted sidebar-state-message-empty",children:L("projects.noProjects")}),!P&&!em&&!B&&tK.length>0&&0===tJ.length&&(0,n.jsx)("div",{className:"sidebar-state-message sidebar-state-message-dim sidebar-state-message-no-matches",children:L("sessionSidebar.noMatches")}),tJ.map(({project:t,sessions:r})=>{let a=tX.get(t.path)??eg(r),i=null!==tO&&Y(tO)===Y(t.path),o=ra(t.path);return(0,n.jsx)(ej,{project:t,isActive:i,isExpanded:rr.has(t.path),activity:tZ.get(Y(t.path)),tree:a,hiddenCount:tG?0:Math.max(0,a.length-ew),selectedSessionId:e,runningSessionIds:e9,unreadSessionIds:e7,relativeTimeNow:tr,onActivate:tW,onToggleExpand:tz,onRemoveProject:t2,removeBusy:eM===t.path,onSelectSession:t6,onSessionIntent:s,onRenamed:tw,onSessionDeleted:ro,activeWorktreeSwitcher:i?rl:null,worktreeBranch:o,worktreeToggleRef:i&&o?eX:void 0,worktreeOpen:!!i&&eF,onToggleWorktrees:i?ri:void 0,homeDir:es},t.path)})]}),(x||J)&&(0,n.jsxs)("div",{className:"sidebar-explorer",style:{flex:e_?"1 1 0":"0 0 auto"},children:[(0,n.jsxs)("div",{className:"sidebar-explorer-header",children:[(0,n.jsxs)("button",{onClick:rd,className:"sidebar-explorer-toggle","aria-expanded":e_,children:[(0,n.jsx)(v.A,{size:12,strokeWidth:1.8,className:"sidebar-explorer-chevron","data-open":e_?"true":"false","aria-hidden":"true"}),L("sessionSidebar.explorer")]}),(0,n.jsx)("div",{className:"sidebar-explorer-actions",inert:!e_||void 0,"data-open":e_?"true":"false",children:(0,n.jsx)(R.m_,{content:L("sessionSidebar.uploadFilesTitle"),side:"top",children:(0,n.jsx)("button",{onClick:()=>tp.current?.openUploadPicker(),disabled:e5,title:L("sessionSidebar.uploadFilesTitle"),"aria-label":L("sessionSidebar.uploadFiles"),className:"sidebar-explorer-icon-button sidebar-explorer-upload",children:(0,n.jsx)(j.A,{size:13,strokeWidth:2,"aria-hidden":"true"})})})}),(0,n.jsx)(R.m_,{content:L("sessionSidebar.refreshExplorer"),side:"top",children:(0,n.jsx)("button",{"aria-label":L("sessionSidebar.refreshExplorer"),onClick:()=>{w?w():e2(e=>e+1)},title:L("sessionSidebar.refreshExplorer"),className:"sidebar-explorer-icon-button sidebar-explorer-refresh","data-refreshing":C?"true":"false",children:C?(0,n.jsx)(ee.A,{size:13,strokeWidth:2,"aria-hidden":"true",className:"icon-spin"}):(0,n.jsx)(ee.A,{size:13,strokeWidth:2,"aria-hidden":"true"})})})]}),(0,n.jsx)("div",{className:"accordion-flow sidebar-explorer-flow "+(e_?"is-open":""),inert:!e_||void 0,style:{flex:e_?"1 1 auto":"0 0 0px"},children:(0,n.jsx)("div",{className:"accordion-flow-inner sidebar-explorer-flow-inner",children:(e0.current||g&&e_)&&(0,n.jsx)(D,{ref:tp,cwd:J??x,onOpenFile:y??(()=>{}),refreshKey:e1,onAtMention:T,onAtMentions:N,onUploadBusyChange:e4,onRefreshDone:E})})})]}),(0,n.jsxs)("div",{className:"sidebar-footer",children:[(0,n.jsxs)("button",{className:"sidebar-settings-row",onClick:z,title:L("settingsConfig.title"),"aria-label":L("settingsConfig.title"),children:[(0,n.jsxs)("span",{className:"sidebar-footer-icon",children:[(0,n.jsx)(en.A,{size:14,strokeWidth:2,"aria-hidden":"true"}),I&&(0,n.jsx)("span",{"aria-label":"Update available",role:"status",className:"sidebar-update-dot"})]}),(0,n.jsx)("span",{className:"sidebar-footer-label",children:L("settingsConfig.title")}),(0,n.jsx)(v.A,{size:13,strokeWidth:2,className:"sidebar-footer-chevron","aria-hidden":"true"})]}),(0,n.jsx)("span",{className:"sidebar-footer-divider","aria-hidden":"true"}),(0,n.jsxs)("button",{className:"sidebar-settings-row",onClick:W,title:L("usageConfig.title"),"aria-label":L("usageConfig.title"),children:[(0,n.jsx)("span",{className:"sidebar-footer-icon",children:(0,n.jsx)(ea.A,{size:14,strokeWidth:2,"aria-hidden":"true"})}),(0,n.jsx)("span",{className:"sidebar-footer-label",children:L("usageConfig.title")}),(0,n.jsx)(v.A,{size:13,strokeWidth:2,className:"sidebar-footer-chevron","aria-hidden":"true"})]})]})]})}let ew=5;function ej({project:e,isActive:t,isExpanded:r,activity:s,tree:i,hiddenCount:o,selectedSessionId:l,runningSessionIds:c,unreadSessionIds:u,relativeTimeNow:h,onActivate:p,onToggleExpand:f,onRemoveProject:m,removeBusy:x,onSelectSession:g,onSessionIntent:y,onRenamed:k,onSessionDeleted:w,activeWorktreeSwitcher:j,worktreeBranch:S,worktreeToggleRef:C,worktreeOpen:E,onToggleWorktrees:T}){let{t:N}=(0,d.s9)(),[R,z]=(0,a.useState)(!1),[W,I]=(0,a.useState)(!1),[L,M]=(0,a.useState)(!1),[A,P]=(0,a.useState)(!1),D=(0,a.useRef)(null),F=ef(e.path),$=!!(s&&(s.running>0||s.unread>0)),O=o>0&&!L?i.slice(0,ew):i,B=R||W||A;return(0,n.jsxs)("section",{className:"sidebar-project","data-active":t?"true":"false",children:[(0,n.jsxs)("div",{className:"sidebar-project-header",onMouseEnter:()=>z(!0),onMouseLeave:()=>z(!1),onFocus:()=>I(!0),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||I(!1)},onKeyDown:e=>{"Escape"===e.key&&A&&(e.stopPropagation(),P(!1))},children:[(0,n.jsxs)("button",{className:"sidebar-project-identity",onClick:()=>p(e.path),"aria-current":t?"true":void 0,title:e.path,"data-active":t?"true":"false",children:[(0,n.jsx)(b.A,{size:15,strokeWidth:1.8,className:"sidebar-project-folder-icon","aria-hidden":"true"}),(0,n.jsx)("span",{className:"sidebar-project-label",children:F})]}),S&&C&&(0,n.jsxs)("button",{type:"button",ref:C,onClick:T,"aria-expanded":E,"aria-haspopup":"menu",title:N("sessionSidebar.switchWorktreeTo",{path:S}),className:"sidebar-project-worktree-toggle","data-open":E?"true":"false",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"sidebar-project-worktree-dot",children:"\xb7"}),(0,n.jsx)("span",{className:"sidebar-project-worktree-label",children:S})]}),(0,n.jsx)("div",{className:"sidebar-project-spacer"}),$&&(0,n.jsx)("span",{"aria-label":N("projects.activity",{running:s?.running??0,unread:s?.unread??0}),title:N("projects.activity",{running:s?.running??0,unread:s?.unread??0}),className:"sidebar-project-activity",role:"status","aria-live":"polite","data-running":(s?.running??0)>0?"true":"false",children:(0,n.jsx)("span",{"aria-hidden":"true",className:"sidebar-project-activity-dot"})}),(0,n.jsxs)("div",{className:"sidebar-project-action-slot",style:{visibility:B?"visible":"hidden"},children:[(0,n.jsx)("button",{type:"button",ref:D,className:"sidebar-project-action",onClick:()=>P(e=>!e),disabled:x,"aria-label":N("commandPalette.actions"),title:N("commandPalette.actions"),"aria-expanded":A,"aria-haspopup":"menu","data-open":A?"true":"false",children:(0,n.jsx)(es.A,{size:13,strokeWidth:2,"aria-hidden":"true"})}),(0,n.jsx)(ev,{anchor:D,open:A,onClose:()=>P(!1),placement:"below",minWidth:136,children:(0,n.jsx)("button",{type:"button",role:"menuitem",className:"sidebar-menu-item sidebar-menu-item-danger sidebar-project-remove-item",disabled:x,onClick:()=>{P(!1),m(e.path)},children:N("projects.remove",{name:F})})})]}),(0,n.jsx)("button",{className:"sidebar-project-toggle",onClick:()=>f(e.path),"aria-label":N(r?"projects.collapseProject":"projects.expandProject",{name:F}),"aria-expanded":r,title:N(r?"projects.collapseProjectTitle":"projects.expandProjectTitle",{path:e.path}),"data-expanded":r?"true":"false",children:(0,n.jsx)(v.A,{size:13,strokeWidth:1.8,className:"sidebar-project-toggle-icon","aria-hidden":"true"})})]}),t&&j,r&&(0,n.jsx)("div",{className:"sidebar-project-sessions",children:0===O.length?(0,n.jsx)("div",{className:"sidebar-project-empty",children:N("projects.emptyProject")}):(0,n.jsxs)(n.Fragment,{children:[O.map(e=>(0,n.jsx)(eC,{node:e,selectedSessionId:l,runningSessionIds:c,unreadSessionIds:u,relativeTimeNow:h,onSelectSession:g,onSessionIntent:y,onRenamed:k,onSessionDeleted:w,depth:0},e.session.id)),o>0&&(0,n.jsxs)("button",{onClick:()=>M(e=>!e),"aria-expanded":L,className:"sidebar-show-more",children:[(0,n.jsx)(ei.A,{size:11,strokeWidth:1.8,className:"sidebar-show-more-icon","data-expanded":L?"true":"false","aria-hidden":"true"}),L?N("projects.showLess"):N("projects.showMoreSessions",{count:o})]})]})})]})}function eS({worktreeState:e,selectedCwd:t,homeDir:r,wtDropdownOpen:a,wtNewOpen:s,setWtNewOpen:i,wtNewBranch:o,setWtNewBranch:l,wtError:c,setWtError:u,wtBusy:h,wtConfirmRemove:p,setWtConfirmRemove:f,onSelectWorktree:m,onCreateWorktree:x,onRemoveWorktree:v,anchorRef:g,newInputRef:b,onClose:y}){let{t:k}=(0,d.s9)();return(0,n.jsxs)(ev,{anchor:g,open:a,onClose:y,placement:"below",align:"start",minWidth:240,className:"sidebar-worktree-menu",children:[(0,n.jsx)("div",{className:"sidebar-worktree-list",children:e.worktrees.map(a=>{let s=a.path===t||a.isMain&&!e.worktrees.some(e=>e.path===t);return p===a.path?(0,n.jsxs)("div",{className:"sidebar-worktree-confirm-row",children:[(0,n.jsx)("span",{className:"sidebar-worktree-confirm-text",children:k("sessionSidebar.uncommittedForceRemove")}),(0,n.jsx)("button",{onClick:()=>v(a.path,!0),disabled:h,className:"sidebar-worktree-force-button",children:k("sessionSidebar.force")}),(0,n.jsx)("button",{onClick:()=>f(null),className:"sidebar-worktree-cancel-button",children:k("sessionSidebar.cancel")})]},a.path):(0,n.jsxs)("div",{className:"wt-row sidebar-worktree-row",children:[(0,n.jsxs)("button",{onClick:()=>m(a.path),"aria-pressed":s,title:a.path,className:"sidebar-worktree-select",children:[s?(0,n.jsx)(S.A,{size:10,strokeWidth:2,className:"sidebar-worktree-check","aria-hidden":"true"}):(0,n.jsx)("span",{className:"sidebar-worktree-check-spacer"}),(0,n.jsx)(em,{text:a.branch??ep(a.path,r)}),a.isMain&&(0,n.jsx)("span",{className:"sidebar-worktree-main-badge",children:k("sessionSidebar.mainBadge")})]}),!a.isMain&&(0,n.jsx)("button",{onClick:()=>v(a.path,!1),disabled:h,title:k("sessionSidebar.removeWorktreeTitle",{path:a.path}),className:"sidebar-worktree-remove",children:(0,n.jsx)(eo.A,{size:12,strokeWidth:2,"aria-hidden":"true"})})]},a.path)})}),s?(0,n.jsxs)("div",{className:"sidebar-worktree-form",children:[(0,n.jsx)("input",{ref:b,value:o,onChange:e=>{l(e.target.value),u(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),x()),"Escape"===e.key&&(i(!1),l(""),u(null))},placeholder:k("sessionSidebar.branchNamePlaceholder"),className:"sidebar-worktree-input"}),(0,n.jsxs)("div",{className:"sidebar-worktree-form-actions",children:[(0,n.jsx)("button",{onClick:x,disabled:h||!o.trim(),className:"sidebar-worktree-create",children:h?k("sessionSidebar.creating"):k("sessionSidebar.create")}),(0,n.jsx)("button",{onClick:()=>{i(!1),l(""),u(null)},className:"sidebar-worktree-form-cancel",children:k("sessionSidebar.cancel")})]})]}):(0,n.jsxs)("button",{onClick:e=>{e.stopPropagation(),i(!0),u(null),setTimeout(()=>b.current?.focus(),0)},title:k("sessionSidebar.newWorktreeTitle"),className:"sidebar-worktree-new",children:[(0,n.jsx)(et.A,{size:12,strokeWidth:1.8,className:"sidebar-worktree-new-icon","aria-hidden":"true"}),(0,n.jsx)("span",{children:k("sessionSidebar.newWorktree")})]}),c&&(0,n.jsx)("div",{className:"sidebar-worktree-error",children:c})]})}let eC=(0,a.memo)(function e({node:t,selectedSessionId:r,runningSessionIds:s,unreadSessionIds:i,relativeTimeNow:o,onSelectSession:l,onSessionIntent:d,onRenamed:c,onSessionDeleted:u,depth:h}){let[p,f]=(0,a.useState)(!1),m=t.children.length>0,x=t.session.id,v=x===r,g=s.has(x),b=i.has(x),y=(0,a.useCallback)(()=>{l(t.session)},[l,t.session]),k=(0,a.useCallback)(e=>{u?.(e)},[u]),w=(0,a.useCallback)(()=>{f(e=>!e)},[]);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"sidebar-session-tree-row",children:[h>0&&(0,n.jsx)("div",{className:"sidebar-session-indent-line",style:{left:14*h+22}}),(0,n.jsx)(eN,{session:t.session,isSelected:v,isRunning:g,isUnread:b,relativeTimeNow:o,onClick:y,onSessionIntent:d,onRenamed:c,onDeleted:k,depth:h,hasChildren:m,collapsed:p,onToggleCollapse:w})]}),m&&!p&&(0,n.jsx)("div",{children:t.children.map(t=>(0,n.jsx)(e,{node:t,selectedSessionId:r,runningSessionIds:s,unreadSessionIds:i,relativeTimeNow:o,onSelectSession:l,onSessionIntent:d,onRenamed:c,onSessionDeleted:u,depth:h+1},t.session.id))})]})},(e,t)=>{if(e.node!==t.node)return!1;if(e.selectedSessionId!==t.selectedSessionId){let r=e.node.session.id;if(r===e.selectedSessionId!=(r===t.selectedSessionId))return!1}if(e.runningSessionIds!==t.runningSessionIds){let r=e.node.session.id;if(e.runningSessionIds.has(r)!==t.runningSessionIds.has(r))return!1}if(e.unreadSessionIds!==t.unreadSessionIds){let r=e.node.session.id;if(e.unreadSessionIds.has(r)!==t.unreadSessionIds.has(r))return!1}return e.relativeTimeNow===t.relativeTimeNow&&e.onSelectSession===t.onSelectSession&&e.onSessionIntent===t.onSessionIntent&&e.onRenamed===t.onRenamed&&e.onSessionDeleted===t.onSessionDeleted});function eE({size:e=14}){let{t}=(0,d.s9)(),r=(0,K.j)();return(0,n.jsx)("span",{title:t("sessionSidebar.agentRunning"),"aria-label":t("sessionSidebar.agentRunningAria"),className:"sidebar-session-indicator",style:{width:e,height:e},children:(0,n.jsx)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",className:"sidebar-session-indicator-svg",children:(0,n.jsxs)("g",{children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 1 1-3.8-7.4",stroke:"currentColor",strokeWidth:"2.8",strokeLinecap:"round"}),!r&&(0,n.jsx)("animateTransform",{attributeName:"transform",type:"rotate",from:"0 12 12",to:"360 12 12",dur:"0.9s",repeatCount:"indefinite"})]})})})}function eT({size:e=14}){let{t}=(0,d.s9)(),r=(0,K.j)();return(0,n.jsx)("span",{title:t("sessionSidebar.newActivity"),"aria-label":t("sessionSidebar.newSessionActivity"),className:"sidebar-session-indicator",style:{width:e,height:e},children:(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none","aria-hidden":"true",className:"sidebar-session-indicator-svg",children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"2.5",fill:"currentColor"}),!r&&(0,n.jsxs)("circle",{cx:"7",cy:"7",r:"3",stroke:"currentColor",strokeWidth:"1.4",opacity:"0.32",children:[(0,n.jsx)("animate",{attributeName:"r",values:"3;6;3",dur:"1.6s",repeatCount:"indefinite"}),(0,n.jsx)("animate",{attributeName:"opacity",values:"0.32;0;0.32",dur:"1.6s",repeatCount:"indefinite"})]})]})})}let eN=(0,a.memo)(function({session:e,isSelected:t,isRunning:r,isUnread:s,onClick:i,onSessionIntent:o,onRenamed:l,onDeleted:c,depth:u=0,hasChildren:h=!1,collapsed:p=!1,relativeTimeNow:f,onToggleCollapse:m}){let{t:x,locale:v}=(0,d.s9)(),[g,b]=(0,a.useState)(!1),[y,k]=(0,a.useState)(!1),[w,j]=(0,a.useState)(!1),[S,C]=(0,a.useState)(""),E=(0,a.useRef)(!1),[T,N]=(0,a.useState)(!1),[R,z]=(0,a.useState)(!1),[W,I]=(0,a.useState)(!1),[L,M]=(0,a.useState)(!1),A=(0,a.useRef)(null),P=(0,a.useRef)(null),D=(0,a.useRef)(null),F=e.name||e.firstMessage.slice(0,50)||e.id.slice(0,12),$=function(e,t,r){let n=new Date(e).getTime();if(!Number.isFinite(n))return null;let a=Math.max(0,Math.floor((r-n)/6e4)),s=new Intl.RelativeTimeFormat(t,{numeric:"auto",style:"narrow"});if(a<1)return s.format(0,"minute");if(a<60)return s.format(-a,"minute");let i=Math.floor(a/60);return i<24?s.format(-i,"hour"):s.format(-Math.floor(i/24),"day")}(e.modified,v,f),O=T||R,B=(0,a.useCallback)(()=>{o?.()},[o]),H=(0,a.useCallback)(t=>{t.stopPropagation(),C(e.name??""),j(!0),setTimeout(()=>A.current?.select(),0)},[e.name]),K=(0,a.useCallback)(async()=>{if(E.current){E.current=!1;return}let t=S.trim();if(j(!1),t!==(e.name??""))try{if(!(await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})).ok)throw Error("Session rename failed");l?.()}catch{}},[S,e.id,e.name,l]),q=(0,a.useCallback)(async()=>{N(!1),M(!0);try{if(!(await fetch(`/api/sessions/${encodeURIComponent(e.id)}/archive`,{method:"POST"})).ok)throw Error("Session archive failed");c?.(e.id)}catch{M(!1),U.oR.error((0,d.Tl)("sessionSidebar.archiveFailed"))}},[e.id,c]),Z=(0,a.useCallback)(async()=>{z(!1),M(!0);try{if(!(await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"DELETE"})).ok)throw Error("Session deletion failed");c?.(e.id)}catch{M(!1),U.oR.error((0,d.Tl)("sessionSidebar.deleteFailed"))}},[e.id,c]),V=(0,a.useCallback)(()=>{N(!1),z(!1),I(!1),requestAnimationFrame(()=>P.current?.focus())},[]);return(0,n.jsxs)("div",{onClick:T||R||w?void 0:i,onPointerDown:B,onTouchStart:B,onMouseEnter:()=>b(!0),onMouseLeave:()=>b(!1),onFocus:()=>{B(),k(!0)},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||k(!1)},onKeyDown:e=>{(T||R||W)&&"Escape"===e.key&&(e.stopPropagation(),V())},className:"sidebar-session-row","data-selected":t?"true":"false","data-confirming":O?"true":"false","data-deleting":L?"true":"false","data-interactive":O||w?"false":"true",style:{height:O?34:30,paddingLeft:30+14*u},children:[(t||O)&&(0,n.jsx)("span",{"aria-hidden":"true",className:"sidebar-session-selection-indicator",style:{left:20+14*u}}),O?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"sidebar-session-confirm-text",children:x(T?"sessionSidebar.archiveConfirm":"sessionSidebar.deleteConfirm",{title:F.length>22?`${F.slice(0,22)}…`:F})}),(0,n.jsx)("button",{className:"sidebar-session-confirm-button",onClick:e=>{e.stopPropagation(),T?q():Z()},children:x(T?"sessionSidebar.archive":"sessionSidebar.delete")}),(0,n.jsx)("button",{className:"sidebar-session-cancel-button",onClick:e=>{e.stopPropagation(),V()},autoFocus:!0,children:x("sessionSidebar.cancel")})]}):w?(0,n.jsx)("input",{ref:A,autoFocus:!0,"aria-label":x("sessionSidebar.rename"),value:S,onChange:e=>C(e.target.value),onBlur:K,onKeyDown:e=>{"Enter"===e.key&&K(),"Escape"===e.key&&(e.preventDefault(),E.current=!0,j(!1))},className:"sidebar-session-rename-input"}):(0,n.jsxs)(n.Fragment,{children:[u>0&&(0,n.jsx)(el.A,{size:11,strokeWidth:2,className:"sidebar-session-branch-icon","aria-hidden":"true"}),(0,n.jsx)("button",{ref:P,type:"button",className:"session-item-button sidebar-session-content","aria-current":t?"true":void 0,onKeyDown:e=>{"Delete"===e.key&&(e.preventDefault(),z(!0))},children:(0,n.jsx)("span",{title:F,className:"sidebar-session-title",children:F})}),e.worktreeBranch&&(0,n.jsxs)("span",{title:x("sessionSidebar.worktreeTitle",{path:e.cwd}),className:"sidebar-session-worktree",children:[(0,n.jsx)(el.A,{size:10,strokeWidth:2.4,"aria-hidden":"true"}),(0,n.jsx)("span",{className:"sidebar-session-worktree-label",children:e.worktreeBranch})]}),r&&(0,n.jsx)(eE,{size:12}),!r&&s&&(0,n.jsx)(eT,{size:11}),$&&(0,n.jsx)("span",{title:new Date(e.modified).toLocaleString(v),className:"sidebar-session-time","data-selected":t?"true":"false",children:$}),h&&(0,n.jsx)("button",{className:"session-item-icon-button sidebar-session-collapse",onClick:e=>{e.stopPropagation(),m?.()},title:x(p?"sessionSidebar.expandForks":"sessionSidebar.collapseForks"),"aria-label":x(p?"sessionSidebar.expandForks":"sessionSidebar.collapseForks"),"aria-expanded":!p,"data-collapsed":p?"true":"false",children:(0,n.jsx)(ei.A,{size:12,strokeWidth:1.8,"aria-hidden":"true"})}),(0,n.jsxs)("div",{className:"sidebar-session-action-slot",style:{visibility:g||y||W?"visible":"hidden"},children:[(0,n.jsx)("button",{type:"button",ref:D,className:"session-item-icon-button sidebar-session-action",onClick:e=>{e.stopPropagation(),I(e=>!e)},title:"Session actions","aria-label":"Session actions","aria-expanded":W,"aria-haspopup":"menu","data-open":W?"true":"false",children:(0,n.jsx)(es.A,{size:14,strokeWidth:2,"aria-hidden":"true"})}),(0,n.jsxs)(ev,{anchor:D,open:W,onClose:()=>I(!1),placement:"above",minWidth:128,children:[(0,n.jsx)("button",{type:"button",role:"menuitem",className:"sidebar-menu-item",onClick:e=>{e.stopPropagation(),I(!1),N(!0)},disabled:h,title:x(h?"sessionSidebar.archiveLeafOnly":"sessionSidebar.archive"),children:x("sessionSidebar.archive")}),(0,n.jsx)("button",{type:"button",role:"menuitem",className:"sidebar-menu-item",onClick:e=>{H(e),I(!1)},children:x("sessionSidebar.rename")}),(0,n.jsx)("button",{type:"button",role:"menuitem",className:"sidebar-menu-item sidebar-menu-item-danger",onClick:e=>{e.stopPropagation(),I(!1),z(!0)},children:x("sessionSidebar.delete")})]})]})]})]})});function eR({tabs:e,activeTabId:t,onSelectTab:r,onCloseTab:s}){let{t:i}=(0,d.s9)(),[o,l]=(0,a.useState)(null),c=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let e=c.current;if(!e)return;let r=e.querySelector(`[data-tab-id="${CSS.escape(t)}"]`);if(!r)return;let n=e.getBoundingClientRect(),a=r.getBoundingClientRect();a.left<n.left?e.scrollLeft-=n.left-a.left:a.right>n.right&&(e.scrollLeft+=a.right-n.right)},[t,e]),(0,n.jsx)("div",{ref:c,role:"tablist","aria-label":"Open files",className:"tabbar-scroll",style:{display:"flex",alignItems:"flex-end",background:"var(--bg-panel)",overflowX:"auto",flexShrink:0,height:"var(--control-height-lg)"},children:e.map(a=>{let d=a.id===t;return(0,n.jsxs)("div",{"data-tab-id":a.id,className:"tabbar-tab ui-focus-ring",onClick:()=>r(a.id),role:"tab",tabIndex:d?0:-1,"aria-selected":d,"aria-label":a.filePath,onKeyDown:t=>{if(("Enter"===t.key||" "===t.key)&&(t.preventDefault(),r(a.id)),("Delete"===t.key||"Backspace"===t.key)&&(t.preventDefault(),s(a.id)),"ArrowRight"===t.key||"ArrowLeft"===t.key){t.preventDefault();let n=e.findIndex(e=>e.id===a.id),s=e[(n+("ArrowRight"===t.key?1:-1)+e.length)%e.length];if(s){r(s.id);let e=c.current?.querySelector(`[data-tab-id="${CSS.escape(s.id)}"]`);e?.focus()}}},onMouseDown:e=>{1===e.button&&e.preventDefault()},onAuxClick:e=>{1===e.button&&(e.preventDefault(),e.stopPropagation(),s(a.id))},style:{display:"flex",alignItems:"center",gap:"var(--space-3)",height:"var(--control-height-lg)",paddingLeft:"var(--space-5)",paddingRight:"var(--space-3)",borderRight:"1px solid var(--border)",background:d?"var(--bg)":"var(--bg-panel)",cursor:"pointer",fontSize:"var(--text-md)",color:d?"var(--text)":"var(--text-muted)",whiteSpace:"nowrap",maxWidth:180,minWidth:80,flexShrink:0,userSelect:"none",position:"relative",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},children:[d&&(0,n.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",left:0,right:0,bottom:0,height:2,background:"var(--accent)",borderTopLeftRadius:"var(--radius-control)",borderTopRightRadius:"var(--radius-control)"}}),(0,n.jsx)("span",{style:{flexShrink:0,opacity:d?1:.7,display:"flex",alignItems:"center"},children:(0,N.I3)(a.label,13)}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",flex:1,fontWeight:d?500:400},title:a.filePath,children:a.label}),(0,n.jsx)("button",{onClick:e=>{e.stopPropagation(),s(a.id)},tabIndex:-1,className:"tabbar-close ui-focus-ring",onMouseEnter:()=>l(a.id),onMouseLeave:()=>l(null),style:{display:"flex",alignItems:"center",justifyContent:"center",width:"var(--space-8)",height:"var(--space-8)",background:o===a.id?"var(--bg-hover)":"transparent",border:"none",borderRadius:"var(--radius-control)",color:o===a.id?"var(--text)":"var(--text-dim)",cursor:"pointer",padding:0,flexShrink:0,transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},title:i("tabBar.close"),"aria-label":i("tabBar.closeTab",{label:a.label}),children:(0,n.jsx)(x.A,{size:11,strokeWidth:2,"aria-hidden":"true"})})]},a.id)})})}function ez(e){return"message"===e.type&&"message"in e}function eW(e){if(!ez(e))return;let t=e.message.content,r="string"==typeof t?t:Array.isArray(t)?t.filter(e=>"object"==typeof e&&null!==e&&"text"===e.type&&"string"==typeof e.text).map(e=>e.text).join(" "):"";(r=r.replace(/\s+/g," ").trim()).length>40&&(r=`${r.slice(0,40)}…`),r||(r="assistant"===e.message.role?(0,d.Tl)("branchNavigator.assistantLabel"):"message");let n="user"===e.message.role||"assistant"===e.message.role?e.message.role:void 0;return{...n?{role:n}:{},text:r}}function eI(e){let t=e,r=t.branchPreview,n=t.entry;ez(t.entry)&&(r??=eW(t.entry),n=t.entry);let a=t.compressedEntryIds?.length??0;for(;1===t.children.length;)t=t.children[0],r??=t.branchPreview??eW(t.entry),!ez(n)&&ez(t.entry)&&(n=t.entry),a+=1+(t.compressedEntryIds?.length??0);return{node:t,skipped:a,branchPreview:r,labelEntry:n}}let eL=(0,a.memo)(function e({node:t,activePathIds:r,depth:s,isLast:i,parentLines:o,onSelect:l,disabled:c}){let{t:u}=(0,d.s9)(),{node:h,skipped:p,branchPreview:f,labelEntry:m}=(0,a.useMemo)(()=>eI(t),[t]),x=h.entry.id,v=t.entry.id,g=r.has(x),b=r.has(v)||r.has(x),y=(0,a.useMemo)(()=>f?.text??eW(m)?.text??m.type,[f,m]),k=(0,a.useMemo)(()=>f?.role??("message"===m.type&&"message"in m?m.message.role:null),[f,m]);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{role:"button",tabIndex:c?-1:0,"aria-disabled":c,"aria-label":y,style:{display:"flex",alignItems:"center",height:24,cursor:c?"not-allowed":"pointer",opacity:c?.6:void 0},onClick:()=>{c||l(h.entry.id)},onKeyDown:e=>{c||("Enter"===e.key||" "===e.key)&&(e.preventDefault(),l(h.entry.id))},children:[o.map((e,t)=>(0,n.jsx)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:e&&(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:0,width:1,background:"var(--border)"}})},t)),(0,n.jsxs)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:i?"50%":0,width:1,background:"var(--border)"}}),(0,n.jsx)("div",{style:{position:"absolute",left:7,top:"50%",width:9,height:1,background:"var(--border)"}})]}),(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",flexShrink:0,background:g?"var(--accent)":b?"var(--text-muted)":"var(--border)",border:g?"none":"1px solid var(--text-dim)",marginRight:6,transition:"background var(--dur-fast) var(--ease-out-warm)"}}),k&&(0,n.jsx)("span",{style:{fontSize:9,fontFamily:"var(--font-mono)",color:"user"===k?"var(--accent)":"var(--text-dim)",background:"user"===k?"color-mix(in srgb, var(--accent) 8%, transparent)":"var(--bg-hover)",border:`1px solid ${"user"===k?"color-mix(in srgb, var(--accent) 20%, transparent)":"var(--border)"}`,borderRadius:3,padding:"0 4px",marginRight:5,flexShrink:0,lineHeight:"16px"},children:u("user"===k?"branchNavigator.roleUser":"branchNavigator.roleAssistant")}),p>0&&(0,n.jsxs)("span",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginRight:5,flexShrink:0},children:["+",p]}),(0,n.jsx)("span",{style:{fontSize:"var(--text-sm)",color:g?"var(--text)":b?"var(--text-muted)":"var(--text-dim)",fontWeight:g?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:y})]}),h.children.map((t,a)=>(0,n.jsx)(e,{node:t,activePathIds:r,depth:s+1,isLast:a===h.children.length-1,parentLines:[...o,!i],onSelect:l,disabled:c},t.entry.id))]})},(e,t)=>{if(e.node!==t.node||e.onSelect!==t.onSelect||e.disabled!==t.disabled)return!1;if(e.activePathIds===t.activePathIds)return!0;let r=t.node.entry.id,n=eI(t.node).node.entry.id;return e.activePathIds.has(n)===t.activePathIds.has(n)&&e.activePathIds.has(r)===t.activePathIds.has(r)});function eM({tree:e,activeLeafId:t,onLeafChange:r,inline:s,containerRef:i,open:o,onToggle:l,hasSession:c,runtimeReady:u,disabled:h}){let p=h??(void 0!==u&&!u),{t:f}=(0,d.s9)(),[m,x]=(0,a.useState)(!1),v=!p&&(void 0!==o?o:m),g=(0,a.useRef)(null),[b,y]=(0,a.useState)(null);(0,a.useEffect)(()=>{if(!v||!s)return;let e=i?.current??g.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),r=t.width,n=Math.min(260,window.innerHeight-t.bottom-8);y({top:t.bottom,left:Math.max(0,Math.min(t.left,window.innerWidth-r)),width:r,height:Math.max(60,n)})};t();let r=new ResizeObserver(t);return r.observe(e),window.addEventListener("scroll",t,!0),window.addEventListener("resize",t),()=>{r.disconnect(),window.removeEventListener("scroll",t,!0),window.removeEventListener("resize",t)}},[v,s,i]),(0,a.useEffect)(()=>{if(!v||!s)return;let e=()=>{l?l():x(!1)},t=t=>{let r=g.current;r&&r.contains(t.target)||t.target instanceof Element&&t.target.closest("[data-branch-panel]")||e()},r=t=>{"Escape"===t.key&&(t.stopPropagation(),e())};return document.addEventListener("mousedown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("keydown",r)}},[v,s,i,l]);let k=(0,a.useMemo)(()=>t?new Set(function e(r,n){for(let a of r){let r=[...n,a.entry.id];if(a.entry.id===t||a.compressedEntryIds?.includes(t))return r;let s=e(a.children,r);if(s)return s}return null}(e,[])??[]):new Set,[e,t]),w=(0,a.useCallback)(e=>{p||(r(e),void 0===o&&x(!1))},[p,r,o]),j=(0,a.useMemo)(()=>c?!function e(t){if(t.length>1)return!0;for(let r of t)if(r.children.length>1||e(r.children))return!0;return!1}(e)?f("branchNavigator.noBranches"):null:f("branchNavigator.noActiveSession"),[c,e,f]),S=(0,a.useMemo)(()=>{let t=e.length>0?eI(e[0]):null;return t?.node??null},[e]),C=(0,a.useMemo)(()=>e.length>1?e:S&&S.children.length>1?S.children:[],[S,e]),E=!j&&C.length>0,T=(0,n.jsx)(el.A,{size:16,strokeWidth:1.8,"aria-hidden":"true",style:{color:E?"var(--accent)":void 0,flexShrink:0}}),N=(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:2,transform:v?"rotate(180deg)":"none",transition:"transform var(--dur-fast) var(--ease-out-warm)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})});return s?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center"},children:[(0,n.jsx)("button",{ref:g,disabled:p,"aria-disabled":p,onClick:()=>{p||(l?l():x(e=>!e))},className:"shell-toolbar-btn ui-focus-ring",style:{background:v?"var(--bg-selected)":void 0,color:v?"var(--text)":void 0,opacity:p?.5:void 0,cursor:p?"not-allowed":void 0},title:f("branchNavigator.branches"),"aria-label":f("branchNavigator.branches"),"aria-haspopup":"menu","aria-expanded":v,children:T}),v&&b&&(0,n.jsx)("div",{"data-branch-panel":!0,className:"dropdown-surface",style:{position:"fixed",top:b.top,left:b.left,width:b.width,maxHeight:b.height,overflowY:"auto",zIndex:"var(--z-branch-popover)"},children:E?(0,n.jsx)("div",{style:{padding:"var(--space-2) var(--space-5) var(--space-4) var(--space-5)",maxHeight:260,overflowY:"auto"},children:C.map((e,t)=>(0,n.jsx)(eL,{node:e,activePathIds:k,depth:0,isLast:t===C.length-1,parentLines:[],onSelect:w,disabled:p},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px var(--space-6)",fontSize:"var(--text-md)",color:"var(--text-muted)",fontStyle:"italic"},children:j})})]}):(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,position:"relative"},children:[(0,n.jsxs)("button",{disabled:p,"aria-disabled":p,onClick:()=>{p||x(e=>!e)},style:{display:"flex",alignItems:"center",gap:"var(--space-3)",width:"100%",padding:"5px var(--space-5)",background:"none",border:"none",cursor:p?"not-allowed":"pointer",opacity:p?.5:void 0,color:"var(--text-muted)",fontSize:"var(--text-sm)",textAlign:"left"},children:[T,(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:f("branchNavigator.branches")}),N]}),v&&(0,n.jsx)("div",{style:{position:"absolute",top:"100%",left:0,right:0,background:"var(--bg)",borderBottom:"1px solid var(--border)",boxShadow:"var(--shadow-pop)",zIndex:100},children:E?(0,n.jsx)("div",{style:{padding:"var(--space-2) var(--space-5) var(--space-4) var(--space-5)",maxHeight:260,overflowY:"auto"},children:C.map((e,t)=>(0,n.jsx)(eL,{node:e,activePathIds:k,depth:0,isLast:t===C.length-1,parentLines:[],onSelect:w,disabled:p},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px var(--space-6)",fontSize:"var(--text-md)",color:"var(--text-muted)",fontStyle:"italic"},children:j??f("branchNavigator.noBranches")})})]})}var eA=r(31590);function eP(){let{locale:e,setLocale:t,t:r}=(0,d.s9)(),s=(0,eA.a)(),[i,o]=(0,a.useState)(!1),[l,c]=(0,a.useState)(0),u=(0,a.useRef)(null),h=(0,a.useRef)([]),p=(0,a.useId)(),f=`${p}-listbox`,m=Math.max(0,d.YZ.findIndex(t=>t.value===e)),x=d.YZ[m];(0,a.useEffect)(()=>{i||c(m)},[m,i]),(0,a.useEffect)(()=>{i&&h.current[l]?.focus()},[i,l]);let v=(e=!0)=>{o(!1),e&&u.current?.focus()},g=e=>{t(e),v(!0)};return(0,n.jsxs)("div",{style:{position:"relative",flexShrink:0},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||o(!1)},children:[(0,n.jsxs)("button",{ref:u,type:"button",onClick:()=>o(e=>!e),onKeyDown:e=>{("ArrowDown"===e.key||"Enter"===e.key||" "===e.key||"ArrowUp"===e.key)&&(e.preventDefault(),o(!0),c("ArrowUp"===e.key?d.YZ.length-1:m))},title:r("languageSwitcher.switchTo",{language:x.label}),"aria-haspopup":"menu","aria-expanded":i,"aria-controls":i?f:void 0,className:"shell-toolbar-btn ui-focus-ring",style:{width:"auto",minWidth:s?"var(--control-touch)":"var(--control-height-lg)",padding:"0 var(--space-4)",gap:"var(--space-2)",background:i?"var(--bg-selected)":void 0,color:i?"var(--text)":void 0,fontSize:"var(--text-sm)",whiteSpace:"nowrap"},children:[x.label,(0,n.jsx)(ei.A,{size:10,strokeWidth:2,"aria-hidden":"true",style:{flexShrink:0,transform:i?"rotate(180deg)":"none",transition:"transform var(--dur-fast) var(--ease-out-warm)"}})]}),i&&(0,n.jsx)("ul",{id:f,role:"menu",className:"dropdown-surface animate-slide-down",style:{position:"absolute",top:"calc(100% + var(--space-2))",right:0,zIndex:"var(--z-dropdown)",minWidth:120,margin:0,padding:"var(--space-2)",listStyle:"none",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",boxShadow:"var(--shadow-pop)"},children:d.YZ.map((t,r)=>{let a=t.value===e;return(0,n.jsx)("li",{role:"none",children:(0,n.jsxs)("button",{className:"dropdown-item",ref:e=>{h.current[r]=e},type:"button",role:"menuitem",tabIndex:-1,"aria-current":a||void 0,onClick:()=>g(t.value),onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background=a?"var(--bg-selected)":"transparent"},onKeyDown:e=>((e,t)=>{switch(e.key){case"ArrowDown":e.preventDefault(),c((t+1)%d.YZ.length);break;case"ArrowUp":e.preventDefault(),c((t-1+d.YZ.length)%d.YZ.length);break;case"Home":e.preventDefault(),c(0);break;case"End":e.preventDefault(),c(d.YZ.length-1);break;case"Enter":case" ":e.preventDefault(),g(d.YZ[t].value);break;case"Escape":e.preventDefault(),e.stopPropagation(),v(!0);break;case"Tab":v(!1)}})(e,r),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"var(--space-4)",padding:"7px 10px",border:0,borderRadius:5,background:a?"var(--bg-selected)":"transparent",color:a?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)",textAlign:"left",transition:"background-color var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},children:[(0,n.jsx)("span",{children:t.label}),a&&(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"m3 8 3.5 3.5L13 5"})})]})},t.value)})})]})}var eD=r(91669),eF=r(96304),e$=r(47603),eO=r(78890),eB=r(61663),eH=r(61491),eU=r(16449),eK=r(14577),eq=r(45486),eZ=r(96793),eV=r(84111),eG=r(7834),eJ=r(3099);function eX(){return Promise.all([r.e(3688),r.e(9448),r.e(2124)]).then(r.bind(r,72124)).then(e=>e.ChatWindow)}function eY(){eX().catch(()=>{})}let e_=(0,s.default)(()=>Promise.all([r.e(3688),r.e(4854),r.e(9754),r.e(9448),r.e(5658)]).then(r.bind(r,65658)).then(e=>e.FileViewer),{loadableGenerated:{webpack:()=>[65658]},ssr:!1,loading:()=>(0,n.jsx)(e8,{})}),eQ="ompgui:sidebar-width",e0="ompgui:tool-calls-collapsed",e1="ompgui:right-panel-width";function e2(e){return Math.min(520,Math.max(200,Math.round(e)))}function e5(e){return Math.min(960,Math.max(300,Math.round(e)))}function e4(){return e5(.42*window.innerWidth)}let e3=(0,s.default)(()=>r.e(9182).then(r.bind(r,9182)).then(e=>e.SettingsConfig),{loadableGenerated:{webpack:()=>[9182]},ssr:!1,loading:()=>(0,n.jsx)(tt,{})}),e6=(0,s.default)(()=>r.e(6604).then(r.bind(r,96604)).then(e=>e.UsageConfig),{loadableGenerated:{webpack:()=>[96604]},ssr:!1,loading:()=>(0,n.jsx)(tt,{})}),e9=(0,s.default)(()=>Promise.all([r.e(8717),r.e(1133)]).then(r.bind(r,11133)).then(e=>e.CommandPalette),{loadableGenerated:{webpack:()=>[11133]},ssr:!1});function e8(){let{t:e}=(0,d.s9)();return(0,n.jsx)("div",{role:"status",style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:"var(--text-md)"},children:e("appShell.loading")})}let e7=(0,s.default)(eX,{loading:()=>(0,n.jsx)(e8,{})});function te(e){let t=!1,r=()=>{t||e()};if("function"==typeof window.requestIdleCallback){let e=window.requestIdleCallback(r,{timeout:2e3});return()=>{t=!0,"function"==typeof window.cancelIdleCallback&&window.cancelIdleCallback(e)}}if("function"==typeof window.requestAnimationFrame){let e=window.requestAnimationFrame(()=>{e=window.requestAnimationFrame(r)});return()=>{t=!0,window.cancelAnimationFrame(e)}}let n=window.setTimeout(r,0);return()=>{t=!0,window.clearTimeout(n)}}function tt(){let{t:e}=(0,d.s9)();return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:"var(--z-dialog-backdrop)",background:"var(--overlay-backdrop)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:"var(--text-md)"},children:e("appShell.loading")})}function tr(){let e,t,r,s,l,u,h,p,f,m,x,v,g,b,y=(0,i.useRouter)(),k=(0,i.useSearchParams)(),[w]=(0,a.useState)(()=>{let e;return{requestedCwd:e=k.get("cwd")?.trim()||null,sessionId:e?null:k.get("session")}}),j=(0,a.useCallback)(()=>{eY()},[]);(0,a.useEffect)(()=>{(w.sessionId||w.requestedCwd)&&eY()},[w]);let{isDark:C,preference:E,toggleTheme:T}=(0,eZ.DP)(),{t:N,locale:R}=(0,d.s9)(),W=(0,eA.a)(),[I,L]=(0,a.useState)(null),[M,A]=(0,a.useState)(null),[P,D]=(0,a.useState)(()=>w.requestedCwd?"validating":"idle"),[F,$]=(0,a.useState)(null),[O,B]=(0,a.useState)(0),[H,K]=(0,a.useState)(0),[q,Z]=(0,a.useState)(0),[V,G]=(0,a.useState)(!1),[J,X]=(0,a.useState)(null),[_,Q]=(0,a.useState)(!1),[ee,et]=(0,a.useState)(0),[er,en]=(0,a.useState)(!1),[ea,es]=(0,a.useState)(!0),[ei,eo]=(0,a.useState)(!1),[el,ed]=(0,a.useState)(260),[ec,eu]=(0,a.useState)(!0),[eh,ep]=(0,a.useState)(!1),ef=(0,a.useRef)(null),em=(0,a.useRef)(null),ex=(0,a.useRef)(260);(0,a.useEffect)(()=>{ed(function(){try{let e=window.localStorage.getItem(eQ),t=e?Number(e):NaN;return Number.isFinite(t)?e2(t):260}catch{return 260}}());try{eu("false"!==window.localStorage.getItem(e0))}catch{}},[]);let ev=(0,a.useCallback)(e=>{eu(e);try{window.localStorage.setItem(e0,String(e))}catch{}},[]),eg=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(!eg.current){eg.current=!0;return}if(!eh)try{window.localStorage.setItem(eQ,String(el))}catch{}},[el,eh]);let[eb,ey]=(0,a.useState)(!1),[ew,ej]=(0,a.useState)(!1);(0,a.useEffect)(()=>{W&&es(!1)},[W]),(0,a.useEffect)(()=>{eo(!0)},[]),(0,a.useEffect)(()=>{en("true"===localStorage.getItem("omp-advisor-enabled"))},[]);let eS=(0,a.useCallback)(e=>{en(e),localStorage.setItem("omp-advisor-enabled",String(e))},[]);(0,a.useEffect)(()=>{let e=new AbortController,t=te(()=>{fetch("/api/omp-update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check"}),signal:e.signal}).then(e=>e.ok?e.json():null).then(e=>{if(ej(!!e?.updateAvailable),!e?.updateAvailable||!e.availableVersion)return;let t=e.updateCommand||"omp update";U.oR.info((0,d.Tl)("appShell.ompUpdateAvailable"),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-3)",marginTop:"var(--space-2)"},children:[(0,n.jsx)("div",{children:(0,d.Tl)("appShell.updateVersion",{current:e.currentVersion??"?",available:e.availableVersion})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,n.jsx)("code",{style:{background:"var(--bg-panel)",padding:"3px 7px",borderRadius:"var(--radius-control)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)"},children:t}),(0,n.jsx)("button",{type:"button",onClick:()=>{(0,eG.D)(t).then(()=>U.oR.success((0,d.Tl)("appShell.commandCopied"))).catch(()=>U.oR.error((0,d.Tl)("appShell.commandCopyFailed")))},style:{padding:"3px 7px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-sm)"},children:(0,d.Tl)("appShell.copyCommand")})]})]}))}).catch(()=>{})});return()=>{t(),e.abort()}},[]),(0,a.useEffect)(()=>{let e=new AbortController,t=te(()=>{fetch("/api/app-update",{signal:e.signal}).then(e=>e.ok?e.json():null).then(e=>{if(ey(!!e?.updateAvailable),!e?.updateAvailable||!e.availableVersion)return;let t=e.updateCommand||"npm install -g ompgui";U.oR.info((0,d.Tl)("appShell.appUpdateAvailable"),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-3)",marginTop:"var(--space-2)"},children:[(0,n.jsx)("div",{children:(0,d.Tl)("appShell.updateVersion",{current:e.currentVersion??"?",available:e.availableVersion})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,n.jsx)("code",{style:{background:"var(--bg-panel)",padding:"3px 7px",borderRadius:"var(--radius-control)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)"},children:t}),(0,n.jsx)("button",{type:"button",onClick:()=>{(0,eG.D)(t).then(()=>U.oR.success((0,d.Tl)("appShell.commandCopied"))).catch(()=>U.oR.error((0,d.Tl)("appShell.commandCopyFailed")))},style:{padding:"3px 7px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-sm)"},children:(0,d.Tl)("appShell.copyCommand")})]})]}))}).catch(()=>{})});return()=>{t(),e.abort()}},[]);let eC=(0,a.useRef)(null),eE=(0,a.useRef)(null),[eT,eN]=(0,a.useState)([]),[ez,eW]=(0,a.useState)(null),eI=(0,a.useRef)(null),[eL,eX]=(0,a.useState)(!1),tt=(0,a.useCallback)(e=>{eX(e)},[]),tr=(0,a.useCallback)((e,t,r)=>{eN(e),eW(t),eI.current=r},[]),tn=(0,a.useCallback)(e=>{(!I||eL)&&eI.current?.(e)},[I,eL]),[ta,ts]=(0,a.useState)(null),[ti,to]=(0,a.useState)(!1),tl=(0,a.useRef)(null),td=(0,a.useRef)(0),tc=(0,a.useRef)(null),tu=(0,a.useCallback)(e=>{ts(e),to(!1)},[]),th=(0,a.useCallback)(e=>{td.current+=1,tl.current=e,to(!1)},[]),[tp,tf]=(0,a.useState)(null),[tm,tx]=(0,a.useState)({kind:"idle"}),tv=(0,a.useRef)(null),tg=(0,a.useRef)(I?.id??null);tg.current=I?.id??null;let tb=(0,a.useCallback)(e=>{tf(e)},[]),[ty,tk]=(0,a.useState)(null),tw=(0,a.useRef)(null),tj=(0,a.useCallback)((e,t)=>{(0,eG.D)(t).then(()=>{tw.current&&clearTimeout(tw.current),tk(e),tw.current=setTimeout(()=>tk(null),1400)})},[]);(0,a.useEffect)(()=>()=>{tw.current&&clearTimeout(tw.current),tv.current&&clearTimeout(tv.current)},[]);let[tS,tC]=(0,a.useState)(null),tE=(0,a.useCallback)(e=>{tC(e)},[]),[tT,tN]=(0,a.useState)(null),[tR,tz]=(0,a.useState)(null),tW=(0,a.useCallback)(e=>{W&&es(!1),tN(t=>t===e?null:e)},[W]),tI=(0,a.useCallback)(()=>{if(ti)return;let e=tl.current;if(!e)return;let t=++td.current;to(!0),e().catch(e=>{console.error("Failed to load system prompt:",e)}).finally(()=>{td.current===t&&to(!1)})},[ti]),tL=(0,a.useCallback)(()=>{W&&es(!1),tN("session")},[W]),tM=(0,a.useCallback)(()=>{W&&tN(null),es(e=>!e)},[W]),tA=(0,a.useCallback)(()=>{ed(260)},[]),tP=(0,a.useCallback)(e=>{ed(t=>e2(t+e))},[]),tD=(0,a.useCallback)(e=>{"ArrowLeft"===e.key?(e.preventDefault(),tP(-10)):"ArrowRight"===e.key?(e.preventDefault(),tP(10)):("Enter"===e.key||" "===e.key)&&(e.preventDefault(),tA())},[tP,tA]),tF=(0,a.useCallback)(e=>{if(W)return;e.preventDefault();let t=e.clientX;ep(!0);let r=e=>{let r=e2(el+(e.clientX-t));em.current?.style.setProperty("--sidebar-width",`${r}px`),ex.current=r},n=()=>{window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",n),ef.current=null,ep(!1),ed(ex.current),document.body.style.cursor="",document.body.style.userSelect=""};document.body.style.cursor="col-resize",document.body.style.userSelect="none",ex.current=el,ef.current={onMove:r,onUp:n},window.addEventListener("mousemove",r),window.addEventListener("mouseup",n)},[W,el]);(0,a.useEffect)(()=>()=>{let e=ef.current;e&&(window.removeEventListener("mousemove",e.onMove),window.removeEventListener("mouseup",e.onUp),ef.current=null,document.body.style.cursor="",document.body.style.userSelect="")},[]),(0,a.useEffect)(()=>{if("session"!==tT||!eE.current)return;let e=()=>{let e=eE.current.getBoundingClientRect();tz({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe(eE.current),()=>t.disconnect()},[tT]),(0,a.useEffect)(()=>{if("session"!==tT)return;let e=e=>{e.target instanceof Element&&e.target.closest("[data-top-panel]")||tc.current?.contains(e.target)||tN(null)},t=e=>{"Escape"===e.key&&(e.stopPropagation(),tN(null))};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[tT]);let[t$,tO]=(0,a.useState)([]),[tB,tH]=(0,a.useState)(null),[tU,tK]=(0,a.useState)(!1),[tq,tZ]=(0,a.useState)(520),[tV,tG]=(0,a.useState)(!1),tJ=(0,a.useRef)(null),tX=(0,a.useRef)(520),tY=(0,a.useRef)(null),t_=(0,a.useRef)(!1);(0,a.useEffect)(()=>{tZ(function(){try{let e=window.localStorage.getItem(e1),t=e?Number(e):NaN;return Number.isFinite(t)?e5(t):e4()}catch{return e4()}}())},[]),(0,a.useEffect)(()=>{if(!t_.current){t_.current=!0;return}if(!tV)try{window.localStorage.setItem(e1,String(tq))}catch{}},[tV,tq]);let tQ=(0,a.useCallback)(()=>{tZ(e4())},[]),t0=(0,a.useCallback)(e=>{tZ(t=>e5(t+e))},[]),t1=(0,a.useCallback)(e=>{"ArrowLeft"===e.key?(e.preventDefault(),t0(16)):"ArrowRight"===e.key?(e.preventDefault(),t0(-16)):("Enter"===e.key||" "===e.key)&&(e.preventDefault(),tQ())},[t0,tQ]),t2=(0,a.useCallback)(e=>{if(W)return;e.preventDefault();let t=e.clientX;tG(!0);let r=e=>{let r=e5(tq+(t-e.clientX));tJ.current?.style.setProperty("--right-panel-width",`${r}px`),tX.current=r},n=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",n),tY.current=null,tG(!1),tZ(tX.current),document.body.style.cursor="",document.body.style.userSelect=""};document.body.style.cursor="col-resize",document.body.style.userSelect="none",tX.current=tq,tY.current={onMove:r,onUp:n},window.addEventListener("pointermove",r),window.addEventListener("pointerup",n)},[W,tq]);(0,a.useEffect)(()=>()=>{let e=tY.current;e&&(window.removeEventListener("pointermove",e.onMove),window.removeEventListener("pointerup",e.onUp),tY.current=null,document.body.style.cursor="",document.body.style.userSelect="")},[]);let t5=(0,a.useCallback)((e,t)=>{eC.current?.insertText((0,eJ.$C)(e,t))},[]),t4=(0,a.useCallback)(e=>{let t=(0,eJ.SO)(e);t&&eC.current?.insertText(t)},[]),t3=(0,a.useCallback)((e,t,r)=>{eC.current?.insertText((0,eJ.sn)(e,t,r))},[]),t6=w.sessionId,[t9,t8]=(0,a.useState)(null),[t7,re]=(0,a.useState)(()=>!t6),rt=(0,a.useRef)(!1);(0,a.useEffect)(()=>{let e=w.requestedCwd;if(!e)return;let t=new AbortController;return D("validating"),$(null),fetch("/api/cwd/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e}),signal:t.signal}).then(async e=>{let t=await e.json().catch(()=>({}));if(!e.ok||!t.cwd)throw Error(t.error||t.code?(0,c.K)(t):`HTTP ${e.status}`);rt.current=!0,A(t.cwd),D("ready")}).catch(e=>{t.signal.aborted||($(e instanceof Error?e.message:String(e)),D("error"))}),()=>t.abort()},[w]);let rr=(0,a.useCallback)((e,t)=>{if(e&&j(),t8(e),!e)return;if(rt.current){rt.current=!1;return}let r=t??e,n=I?I.projectRoot??I.cwd:null;n&&Y(n)===Y(r)||(L(null),A(t=>t&&t!==e?null:t),K(e=>e+1),eX(!1),eN([]),eW(null),ts(null),to(!1),tN(null),y.replace("/",{scroll:!1}))},[j,y,I]),rn=(0,a.useCallback)((e,t=!1)=>{j(),A(null),L(e),K(e=>e+1),eX(!1),ts(null),to(!1),re(!0),W&&!t&&es(!1),t&&(rt.current=!0),t||y.replace(`?session=${encodeURIComponent(e.id)}`,{scroll:!1})},[j,y,W]),ra=(0,a.useCallback)((e,t)=>{j(),L(null),A(t),K(e=>e+1),eX(!1),eN([]),eW(null),ts(null),to(!1),tN(null),W&&es(!1),y.replace("/",{scroll:!1})},[j,y,W]);(0,o.n)({onNewSession:e=>ra(`kb-${Date.now()}`,e),activeCwd:t9});let rs=(0,a.useCallback)(e=>{fetch("/api/sessions").then(e=>e.ok?e.json():null).then(t=>{let r=t?.sessions.find(t=>t.id===e);r&&L(t=>t&&t.id===e&&!t.projectRoot?r:t)}).catch(()=>{})},[]),ri=(0,a.useCallback)(e=>{A(null),L(e),B(e=>e+1),rs(e.id),y.replace(`?session=${encodeURIComponent(e.id)}`,{scroll:!1})},[y,rs]),ro=(0,a.useCallback)(e=>{B(e=>e+1),rn(e)},[rn]),rl=(0,a.useCallback)(()=>{if(B(e=>e+1),Z(e=>e+1),"hidden"!==document.visibilityState||!("Notification"in window))return;let e=()=>{!function(e,t,r,n={createNotification:(e,t)=>new Notification(e,t)}){try{let a=n.createNotification(e,{body:t});a.onclick=()=>{a.close(),r()}}catch{return!1}}(I?.name??(0,d.Tl)("appShell.sessionComplete"),(0,d.Tl)("appShell.taskFinished"),()=>{window.focus(),I&&rn(I)})};"granted"===Notification.permission?e():"default"===Notification.permission&&Notification.requestPermission().then(t=>{"granted"===t&&e()})},[rn,I]),rd=(0,a.useCallback)(async()=>{let e=I?.id;if(e&&"naming"!==tm.kind){tv.current&&clearTimeout(tv.current),tN(null),tx({kind:"naming"});try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/auto-name`,{method:"POST"}),r=await t.json().catch(()=>({}));if(!t.ok||!r.title)throw Error(r.error||r.code?(0,c.K)(r):`HTTP ${t.status}`);let n=r.title.trim();if(B(e=>e+1),tg.current!==e)return;L(t=>t?.id===e?{...t,name:n}:t),tf(t=>t?.sessionId===e?{...t,sessionName:n}:t),tx({kind:"success"}),tv.current=setTimeout(()=>tx({kind:"idle"}),1800)}catch(t){if(tg.current!==e)return;tx({kind:"error",message:t instanceof Error?t.message:String(t)}),tv.current=setTimeout(()=>tx({kind:"idle"}),5e3)}}},[tm.kind,I?.id]);(0,a.useEffect)(()=>{tv.current&&clearTimeout(tv.current),tx({kind:"idle"})},[I?.id]);let rc=(0,a.useCallback)(()=>{G(!0),Z(e=>e+1)},[]),ru=(0,a.useCallback)(()=>{G(!1)},[]),rh=(0,a.useCallback)(e=>{B(e=>e+1),K(e=>e+1),A(null),L(t=>({...t??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:e})),rs(e),y.replace(`?session=${encodeURIComponent(e)}`,{scroll:!1})},[y,rs]),rp=(0,a.useCallback)(()=>{re(!0)},[]),rf=(0,a.useCallback)(e=>{if(B(e=>e+1),I?.id===e){let e=I.cwd;L(null),A(e??null),K(e=>e+1),eX(!1),eN([]),eW(null),ts(null),tN(null),y.replace("/",{scroll:!1})}},[I,y]),rm=(0,a.useCallback)((e,t,r)=>{let n=`file:${e}`;tO(a=>{let s=a.find(e=>e.id===n);return s?r&&s.sourceSessionId!==r?a.map(e=>e.id===n?{...e,sourceSessionId:r}:e):a:[...a,{id:n,label:t,filePath:e,sourceSessionId:r}]}),tH(n),tK(!0),W&&es(!1)},[W]),rx=(0,a.useCallback)(e=>{rm(e,(0,z.WP)(e),I?.id??null)},[rm,I?.id]),rv=(0,a.useCallback)(e=>{let t=t$.filter(t=>t.id!==e);tO(t),0===t.length&&tK(!1),tH(r=>r!==e?r:t.length>0?t[t.length-1].id:null)},[t$]),rg=(0,a.useCallback)(()=>{I&&window.open(`/api/sessions/${encodeURIComponent(I.id)}/export?inline=1`,"_blank","noopener,noreferrer")},[I]),rb=M??(null===I&&t9?t9:null),ry=null!==I||null!==rb,rk=t7&&!ry,rw=t9?(0,z.WP)(t9)||t9:null,rj=rw?`${rw} - ompgui`:"ompgui";(0,a.useEffect)(()=>{let e=()=>{document.title!==rj&&(document.title=rj)};e();let t=new MutationObserver(e);return t.observe(document.head,{childList:!0,subtree:!0,characterData:!0}),()=>t.disconnect()},[rj]);let rS=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e9,{onSelectSession:rn,onNewSession:()=>ra(`palette-${Date.now()}`,t9??""),currentModel:null}),(0,n.jsx)(ek,{selectedSessionId:I?.id??null,optimisticSession:I?.path===""?I:null,onSelectSession:rn,onNewSession:ra,onSessionIntent:j,initialSessionId:t6,skipInitialProjectSelection:null!==w.requestedCwd,onInitialRestoreDone:rp,refreshKey:O,onSessionDeleted:rf,onSessionRestored:ro,selectedCwd:I?.cwd??M??null,sidebarVisible:ea&&ei,onCwdChange:rr,onOpenFile:rm,explorerRefreshKey:q,onExplorerRefresh:rc,explorerRefreshing:V,onExplorerRefreshDone:ru,onAtMention:t5,onAtMentions:t4,onOpenSettings:()=>X("general"),onOpenUsage:()=>Q(!0),updateAvailable:eb||ew})]});return(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)(U.tE,{children:[(0,n.jsx)("style",{children:`
|
|
2
|
-
@keyframes session-info-pop {
|
|
3
|
-
0% {
|
|
4
|
-
opacity: 0;
|
|
5
|
-
transform: translateY(-24px);
|
|
6
|
-
}
|
|
7
|
-
100% {
|
|
8
|
-
opacity: 1;
|
|
9
|
-
transform: translateY(0);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
@keyframes session-info-light-wash {
|
|
13
|
-
0% {
|
|
14
|
-
opacity: 0;
|
|
15
|
-
transform: translateX(-110%) skewX(-16deg);
|
|
16
|
-
}
|
|
17
|
-
24% {
|
|
18
|
-
opacity: 0.42;
|
|
19
|
-
}
|
|
20
|
-
100% {
|
|
21
|
-
opacity: 0;
|
|
22
|
-
transform: translateX(115%) skewX(-16deg);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
.session-info-popover {
|
|
26
|
-
position: relative;
|
|
27
|
-
overflow: hidden;
|
|
28
|
-
transform-origin: top right;
|
|
29
|
-
animation: session-info-pop var(--dur-slow) var(--ease-out-warm) both;
|
|
30
|
-
will-change: transform, opacity;
|
|
31
|
-
}
|
|
32
|
-
.session-info-popover::after {
|
|
33
|
-
content: "";
|
|
34
|
-
position: absolute;
|
|
35
|
-
top: 0;
|
|
36
|
-
bottom: 0;
|
|
37
|
-
left: 0;
|
|
38
|
-
width: 44%;
|
|
39
|
-
pointer-events: none;
|
|
40
|
-
background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent) 24%, transparent), transparent);
|
|
41
|
-
animation: session-info-light-wash var(--dur-slow) var(--ease-out-warm) both;
|
|
42
|
-
}
|
|
43
|
-
@media (prefers-reduced-motion: reduce) {
|
|
44
|
-
.session-info-popover,
|
|
45
|
-
.session-info-popover::after {
|
|
46
|
-
animation: none;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
@media (max-width: 640px) {
|
|
50
|
-
.sidebar-overlay-backdrop.sidebar-mobile-pending {
|
|
51
|
-
opacity: 0 !important;
|
|
52
|
-
pointer-events: none !important;
|
|
53
|
-
}
|
|
54
|
-
.sidebar-container.sidebar-mobile-pending.sidebar-open {
|
|
55
|
-
transform: translateX(-100%);
|
|
56
|
-
box-shadow: none;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
`}),(0,n.jsxs)("div",{style:{display:"flex",height:"100dvh",overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("div",{className:`sidebar-overlay-backdrop${ei?"":" sidebar-mobile-pending"}`,onClick:()=>es(!1),style:{position:"fixed",inset:0,zIndex:"var(--z-sidebar-backdrop)",background:"color-mix(in srgb, var(--text) 28%, transparent)",opacity:+!!ea,pointerEvents:ea?"auto":"none",transition:"opacity var(--dur-slow) var(--ease-out-warm)"}}),(0,n.jsx)("div",{ref:em,className:`sidebar-container${ea?" sidebar-open":" sidebar-closed"}${ei?"":" sidebar-mobile-pending"}${eh?" sidebar-resizing":""}`,"aria-hidden":!!ei&&!ea||void 0,inert:!!ei&&!ea||void 0,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:"var(--z-sidebar)",...!W?{"--sidebar-width":`${el}px`}:{}},children:rS}),!W&&ea&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":N("appShell.resizeSidebar"),tabIndex:0,onMouseDown:tF,onDoubleClick:tA,onKeyDown:tD,title:N("appShell.resizeSidebarTitle"),style:{width:5,flexShrink:0,marginLeft:-5,cursor:"col-resize",background:"transparent",zIndex:"var(--z-resize-handle)",outline:"none",transition:"background var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{e.currentTarget.style.background="color-mix(in srgb, var(--accent) 35%, transparent)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},onFocus:e=>{e.currentTarget.style.background="color-mix(in srgb, var(--accent) 35%, transparent)"},onBlur:e=>{e.currentTarget.style.background="transparent"}}),(0,n.jsxs)("main",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:eE,className:"shell-topbar",children:[(0,n.jsxs)("div",{className:"shell-toolbar-utility",style:{paddingLeft:W?"var(--space-2)":"var(--space-4)"},children:[(0,n.jsx)("button",{onClick:tM,title:ea?N("appShell.hideSidebar"):N("appShell.showSidebar"),"aria-label":ea?N("appShell.hideSidebar"):N("appShell.showSidebar"),className:"shell-toolbar-btn ui-focus-ring",children:ea?(0,n.jsx)(eD.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"}):(0,n.jsx)(eF.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"})}),(0,n.jsx)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();T({x:t.left+t.width/2,y:t.top+t.height/2})},title:"system"===E?N("appShell.systemTheme"):C?N("appShell.switchToSystemTheme"):N("appShell.switchToDarkMode"),"aria-label":"system"===E?N("appShell.systemTheme"):C?N("appShell.switchToSystemTheme"):N("appShell.switchToDarkMode"),"aria-pressed":C,className:"shell-toolbar-btn ui-focus-ring",children:C?(0,n.jsx)(e$.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"}):(0,n.jsx)(eO.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"})}),(0,n.jsx)(eP,{})]}),ry&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"shell-toolbar-divider","aria-hidden":"true"}),(0,n.jsxs)("div",{className:"shell-session-actions",children:[(0,n.jsx)("button",{onClick:rg,disabled:!I,title:I?N("appShell.fullHistory"):N("appShell.fullHistoryUnavailable"),"aria-label":N("appShell.fullHistory"),className:"shell-toolbar-btn ui-focus-ring",children:(0,n.jsx)(eB.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"})}),(e=!!(I&&(tp?.userMessages??I.messageCount)>0),t=!I||!e||"naming"===tm.kind,r="success"===tm.kind,s="error"===tm.kind,l="naming"===tm.kind?N("appShell.generating"):r?N("appShell.titleUpdated"):s?N("appShell.generationFailed"):N("appShell.generateTitle"),u=I?e?s?tm.message:N("appShell.generateSessionTitle"):N("appShell.titleGenNeedsMessage"):N("appShell.titleGenUnavailable"),(0,n.jsx)("button",{type:"button",onClick:()=>void rd(),disabled:t,title:u,"aria-label":l,className:"shell-toolbar-btn ui-focus-ring",style:{opacity:"naming"===tm.kind?1:void 0},children:"naming"===tm.kind?(0,n.jsxs)("svg",{className:"animate-spin",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2",opacity:"0.25"}),(0,n.jsx)("path",{d:"M21 12a9 9 0 0 0-9-9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):r?(0,n.jsx)(S.A,{size:16,strokeWidth:1.8,"aria-hidden":"true",style:{color:"var(--accent)"}}):s?(0,n.jsx)(eH.A,{size:16,strokeWidth:1.8,"aria-hidden":"true",style:{color:"var(--status-error)"}}):(0,n.jsx)(eH.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"})})),(0,n.jsx)(eM,{tree:eT,activeLeafId:ez,onLeafChange:tn,inline:!0,containerRef:eE,open:"branches"===tT,onToggle:()=>tW("branches"),hasSession:!!I,runtimeReady:null===I||eL,disabled:null!==I&&!eL}),!W&&(0,n.jsx)("button",{type:"button",onClick:()=>X("system"),title:N("appShell.system"),"aria-label":N("appShell.system"),className:"shell-toolbar-btn ui-focus-ring",children:(0,n.jsx)(eU.A,{size:16,strokeWidth:1.8,"aria-hidden":"true",style:{color:ta?"var(--accent)":void 0}})})]})]}),ry&&(()=>{let e=tp?.tokens,t=tp?.cost??0,r=t>0?t>=.01?`$${t.toFixed(2)}`:"<$0.01":null,a="var(--text-muted)",s=null;if(tS?.contextWindow){let e=tS.percent;null!==e&&e>90?a="var(--status-error)":null!==e&&e>70&&(a="var(--status-warning)"),s=null!==e?`${(0,eV.l9)(e)} / ${(0,eV.wk)(tS.contextWindow)}`:`? / ${(0,eV.wk)(tS.contextWindow)}`}let i=!!(!W&&(e&&(e.input>0||e.output>0||e.cacheRead>0)||r||s)),o=[];if(e&&(o.push(N("appShell.tooltipInput",{value:e.input.toLocaleString(R)})),o.push(N("appShell.tooltipOutput",{value:e.output.toLocaleString(R)})),o.push(N("appShell.tooltipCacheRead",{value:e.cacheRead.toLocaleString(R)})),o.push(N("appShell.tooltipCacheWrite",{value:e.cacheWrite.toLocaleString(R)})),t>0&&o.push(N("appShell.tooltipCost",{value:t.toFixed(4)}))),tS?.contextWindow){let e=tS.percent;o.push(N("appShell.tooltipContext",{percent:null!==e?e.toFixed(1)+"%":N("appShell.unknown"),tokens:tS.contextWindow.toLocaleString(R)}))}let l=o.join(" | ");return(0,n.jsxs)("button",{ref:tc,type:"button",onClick:()=>tW("session"),title:l||N("appShell.sessionInfo"),"aria-label":N("appShell.sessionInfo"),"aria-pressed":"session"===tT,className:"shell-stats-btn ui-focus-ring",children:[!i&&(0,n.jsx)(eK.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"}),!W&&e&&e.input>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"8.5",x2:"5",y2:"1.5"}),(0,n.jsx)("polyline",{points:"2 4 5 1.5 8 4"})]}),(0,eV.wk)(e.input)]}),!W&&e&&e.output>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"1.5",x2:"5",y2:"8.5"}),(0,n.jsx)("polyline",{points:"2 6 5 8.5 8 6"})]}),(0,eV.wk)(e.output)]}),!W&&e&&e.cacheRead>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M8.5 5a3.5 3.5 0 1 1-1-2.45"}),(0,n.jsx)("polyline",{points:"6.5 1.5 8.5 2.5 7.5 4.5"})]}),(0,eV.wk)(e.cacheRead)]}),!W&&r&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500},children:r}),!W&&s&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",color:a,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),s]})]})})(),"session"===tT&&tR&&(0,n.jsx)("div",{"data-top-panel":!0,className:"dropdown-surface",style:{position:"fixed",top:tR.top,left:tR.left,width:tR.width,maxHeight:`calc(100dvh - ${tR.top}px)`,overflow:"auto",zIndex:"var(--z-dropdown)"},children:"session"===tT&&(0,n.jsx)("div",{className:"session-info-popover",style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",boxShadow:"var(--shadow-pop)",padding:"var(--space-5) var(--space-6)"},children:tp?(h=[...tp.sessionName?[{label:N("appShell.statName"),value:tp.sessionName,copyField:null}]:[],{label:N("appShell.statFile"),value:tp.sessionFile??N("appShell.inMemory"),copyField:"file"},{label:N("appShell.statId"),value:tp.sessionId,copyField:"id"}],p=[[N("appShell.statUser"),tp.userMessages.toLocaleString(R)],[N("appShell.statAssistant"),tp.assistantMessages.toLocaleString(R)],[N("appShell.statToolCalls"),tp.toolCalls.toLocaleString(R)],[N("appShell.statToolResults"),tp.toolResults.toLocaleString(R)],[N("appShell.statTotal"),tp.totalMessages.toLocaleString(R)]],f=[[N("appShell.statInput"),tp.tokens.input.toLocaleString(R)],[N("appShell.statOutput"),tp.tokens.output.toLocaleString(R)],...tp.tokens.cacheRead>0?[[N("appShell.statCacheRead"),tp.tokens.cacheRead.toLocaleString(R)]]:[],...tp.tokens.cacheWrite>0?[[N("appShell.statCacheWrite"),tp.tokens.cacheWrite.toLocaleString(R)]]:[],[N("appShell.statTotal"),tp.tokens.total.toLocaleString(R)]],m=tS??tp.contextUsage,v=[...null!==(x=(0,eV.uX)(tp.tokens.input,tp.tokens.cacheRead))?[[N("appShell.statCacheRate"),(0,eV.l9)(x)]]:[],...tp.cost>0?[[N("appShell.statCost"),`$${tp.cost.toFixed(4)}`]]:[],...m?.contextWindow?[[N("appShell.statContext"),`${null!==m.percent?(0,eV.l9)(m.percent):"?"} / ${(0,eV.wk)(m.contextWindow)}`]]:[]],g=(e,t,r="left",a=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:"var(--text-sm)",fontWeight:700,color:"var(--text)",marginBottom:"var(--space-3)"},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:a?"max-content max-content":"auto minmax(0, 1fr)",columnGap:a?14:12,rowGap:"var(--space-2)",justifyContent:a?"start":void 0},children:t.map(([t,s])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:a?"normal":"anywhere",textAlign:r,whiteSpace:"right"===r?"nowrap":"normal"},children:s})]},`${e}:${t}`))})]}),b=(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:"var(--text-sm)",fontWeight:700,color:"var(--text)",marginBottom:"var(--space-3)"},children:N("appShell.sectionSessionInfo")}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",columnGap:"var(--space-5)",rowGap:"var(--space-4)",alignItems:"start"},children:h.map(e=>{var t,r;let a;return(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-dim)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value}),(0,n.jsx)("div",{children:e.copyField?(t=e.copyField,r=e.value,a=ty===t,(0,n.jsx)("button",{type:"button",title:a?N("appShell.copied"):"file"===t?N("appShell.copyFilePath"):N("appShell.copySessionId"),onClick:()=>tj(t,r),style:{alignSelf:"start",display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,marginTop:-2,color:a?"var(--accent)":"var(--text-dim)",background:"transparent",border:"1px solid var(--border)",borderRadius:4,cursor:"pointer",flex:"0 0 auto",transition:"color var(--dur-fast) var(--ease-out-warm), border-color var(--dur-fast) var(--ease-out-warm), background var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=a?"var(--accent)":"var(--text-dim)",e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="transparent"},children:a?(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})):null})]},`session-info:${e.label}`)})})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:W?"1fr":"minmax(300px, 1.7fr) minmax(120px, 0.55fr) minmax(160px, 0.75fr)",gap:W?"var(--space-6)":"var(--space-8)",fontSize:"var(--text-md)",lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[b,g(N("appShell.sectionMessages"),p),g(N("appShell.sectionTokens"),[...f,...v],"right",!0)]})):(0,n.jsx)("div",{style:{fontSize:"var(--text-md)",color:"var(--text-muted)",fontStyle:"italic"},children:N("appShell.sessionInfoLoadHint")})})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:ry?(0,n.jsx)(e7,{session:I,newSessionCwd:rb,onAgentEnd:rl,onSessionCreated:ri,onSessionForked:rh,modelsRefreshKey:ee,chatInputRef:eC,onBranchDataChange:tr,onSystemPromptChange:tu,onSystemPromptLoaderChange:th,onSessionStatsChange:tb,onSessionStatsPanelOpen:tL,onOpenSettingsTab:e=>X(e),onContextUsageChange:tE,onOpenFile:rx,onRuntimeReadyChange:tt,advisorEnabled:er,toolCallsDefaultCollapsed:ec},H):"validating"===P?(0,n.jsxs)("div",{role:"status",style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"var(--space-4)",padding:"var(--space-8)",color:"var(--text-muted)",textAlign:"center"},children:[(0,n.jsx)("div",{style:{fontSize:"var(--text-lg)",color:"var(--text)"},children:N("appShell.openingWorkspace")}),(0,n.jsx)("div",{style:{maxWidth:"min(720px, 100%)",overflowWrap:"anywhere",fontFamily:"var(--font-mono)",fontSize:"var(--text-md)"},children:w.requestedCwd})]}):"error"===P?(0,n.jsxs)("div",{role:"alert",style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"var(--space-4)",padding:"var(--space-8)",color:"var(--text-muted)",textAlign:"center"},children:[(0,n.jsx)("div",{style:{fontSize:"var(--text-lg)",color:"var(--status-error)"},children:N("appShell.unableToOpenWorkspace")}),(0,n.jsx)("div",{style:{maxWidth:"min(720px, 100%)",overflowWrap:"anywhere",fontFamily:"var(--font-mono)",fontSize:"var(--text-md)"},children:w.requestedCwd}),(0,n.jsx)("div",{style:{maxWidth:720,fontSize:"var(--text-md)"},children:F})]}):rk?t9?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:16},children:(0,n.jsx)("span",{className:"display-serif",children:N("appShell.selectSessionHint")})}):(0,n.jsxs)("div",{style:{position:"absolute",top:"var(--space-5)",left:"var(--space-5)",display:"flex",alignItems:"flex-start",gap:"var(--space-4)",userSelect:"none",pointerEvents:"none"},children:[(0,n.jsxs)("svg",{width:"44",height:"44",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{opacity:.7,flexShrink:0},children:[(0,n.jsx)("line",{x1:"20",y1:"12",x2:"4",y2:"12"}),(0,n.jsx)("polyline",{points:"10 6 4 12 10 18"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"display-serif",style:{fontSize:20,color:"var(--text)",marginBottom:"var(--space-4)"},children:N("appShell.getStarted")}),(0,n.jsxs)("div",{style:{fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.8},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:"var(--space-3)"},children:"1."}),N("appShell.getStartedStep1"),(0,n.jsx)("br",{}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:"var(--space-3)"},children:"2."}),(()=>{let[e,t]=N("appShell.getStartedStep2").split("{models}");return(0,n.jsxs)(n.Fragment,{children:[e,(0,n.jsx)("strong",{style:{color:"var(--text)"},children:N("appShell.models")}),t]})})()]})]})]}):(0,n.jsx)(e8,{})})]}),!W&&tU&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":N("appShell.resizeFilePanel"),"aria-valuemin":300,"aria-valuemax":960,"aria-valuenow":tq,tabIndex:0,onPointerDown:t2,onDoubleClick:tQ,onKeyDown:t1,title:N("appShell.resizeFilePanelTitle"),style:{width:5,flexShrink:0,marginRight:-5,cursor:"col-resize",background:"transparent",zIndex:"var(--z-resize-handle)",outline:"none",transition:"background var(--dur-fast) var(--ease-out-warm)"},onMouseEnter:e=>{e.currentTarget.style.background="color-mix(in srgb, var(--accent) 35%, transparent)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},onFocus:e=>{e.currentTarget.style.background="color-mix(in srgb, var(--accent) 35%, transparent)"},onBlur:e=>{e.currentTarget.style.background="transparent"}}),(0,n.jsxs)("div",{ref:tJ,className:`right-panel-container${tU?" right-panel-open":" right-panel-closed"}${tV?" right-panel-resizing":""}`,style:{display:"flex",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)",...!W?{"--right-panel-width":`${tq}px`}:{}},children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",flexShrink:0,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",height:"var(--control-height-lg)"},children:(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(eR,{tabs:t$,activeTabId:tB??"",onSelectTab:tH,onCloseTab:rv})})}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:t$.length>0?t$.map(e=>(0,n.jsx)("div",{style:{display:e.id===tB?"block":"none",height:"100%"},children:(0,n.jsx)(e_,{filePath:e.filePath,cwd:t9??void 0,sourceSessionId:e.sourceSessionId,gitRefreshKey:q,onMentionLines:e.id===tB&&tU?t3:void 0,onOpenFile:t=>rm(t,(0,z.WP)(t),e.sourceSessionId)})},e.id)):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:"var(--text-md)"},children:N("appShell.noFileOpen")})})]})]}),(0,n.jsx)("button",{onClick:()=>tK(e=>!e),title:tU?N("appShell.hideFilePanel"):N("appShell.showFilePanel"),"aria-label":tU?N("appShell.hideFilePanel"):N("appShell.showFilePanel"),"aria-pressed":tU,className:"shell-file-toggle ui-focus-ring",children:(0,n.jsx)(eq.A,{size:16,strokeWidth:1.8,"aria-hidden":"true"})}),J&&(0,n.jsx)(e3,{activeTab:J,advisorEnabled:er,onAdvisorChange:eS,toolCallsDefaultCollapsed:ec,onToolCallsDefaultCollapsedChange:ev,cwd:t9??I?.cwd??M,sessionId:I?.id??null,systemPrompt:ta,systemPromptLoading:ti,onLoadSystemPrompt:tI,onModelsSaved:()=>et(e=>e+1),onPluginsReloaded:()=>K(e=>e+1),onOmpUpdateAvailabilityChange:ej,onSelectTab:X,onClose:()=>X(null),runtimeReady:null===I||eL}),_&&(0,n.jsx)(e6,{onClose:()=>Q(!1)})]})})}},61937:(e,t,r)=>{"use strict";r.d(t,{j:()=>a});var n=r(12115);function a(){let[e,t]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(prefers-reduced-motion: reduce)");t(e.matches);let r=e=>t(e.matches);return e.addEventListener("change",r),()=>e.removeEventListener("change",r)},[]),e}},83444:(e,t,r)=>{"use strict";r.d(t,{_:()=>a,s:()=>s});let n=new Set;function a(e){return n.add(e),()=>{n.delete(e)}}function s(e){for(let t of[...n])try{t(e)}catch{}}},83588:(e,t,r)=>{"use strict";r.d(t,{G:()=>s,n:()=>i});var n=r(12115);let a=null;function s(e){a=e}function i(e){let{onNewSession:t,activeCwd:r}=e;(0,n.useEffect)(()=>{let e=e=>{if("Escape"===e.key){if(!a)return;let t=e.target?.tagName;if("TEXTAREA"===t||"INPUT"===t)return;e.preventDefault(),a();return}if("n"===e.key&&e.ctrlKey&&e.altKey){if(!r||!t)return;e.preventDefault(),t(r)}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[r,t])}},84111:(e,t,r)=>{"use strict";function n(e,t){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}k`:t?e.toLocaleString(t):String(e)}function a(e){return`${e.toFixed(1)}%`}function s(e,t){let r=e+t;return r>0?t/r*100:null}r.d(t,{l9:()=>a,uX:()=>s,wk:()=>n})},96793:(e,t,r)=>{"use strict";r.d(t,{DP:()=>p});var n=r(12115);let a="ompgui-theme",s="ompgui-palette",i=new Set;function o(e){return i.add(e),()=>i.delete(e)}function l(){try{let e=localStorage.getItem(a)||localStorage.getItem("omp-theme");return"light"===e||"dark"===e||"system"===e?e:"system"}catch{return"system"}}function d(){try{var e;return e=localStorage.getItem(s),"omp"===e?"omp":"warm"}catch{return"warm"}}function c(e,t=!1){return"system"===e?t?"dark":"light":e}function u(){return"system"}function h(){return"warm"}function p(){let e=(0,n.useSyncExternalStore)(o,l,u),t=(0,n.useSyncExternalStore)(o,d,h),[r,p]=(0,n.useState)(!1);(0,n.useEffect)(()=>{p(!0)},[]);let f=c(e,r&&window.matchMedia("(prefers-color-scheme: dark)").matches);(0,n.useEffect)(()=>{document.documentElement.dataset.palette=t},[t]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{document.documentElement.classList.toggle("dark",t.matches),i.forEach(e=>e())};return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e]);let m=(0,n.useCallback)((e,t)=>{let r=()=>(function(e){let t=c(e,window.matchMedia?.("(prefers-color-scheme: dark)").matches);document.documentElement.classList.toggle("dark","dark"===t);try{localStorage.setItem(a,e)}catch{}i.forEach(e=>e())})(e),n=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||n)return void r();let s=t?.x??window.innerWidth/2,o=t?.y??window.innerHeight/2,l=Math.hypot(Math.max(s,window.innerWidth-s),Math.max(o,window.innerHeight-o)),d=document.startViewTransition(r);d.ready.then(()=>{let e=getComputedStyle(document.documentElement);document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${o}px)`,`circle(${l}px at ${s}px ${o}px)`]},{duration:function(e){let t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();if(t.endsWith("ms")){let e=Number.parseFloat(t);return Number.isFinite(e)?e:450}if(t.endsWith("s")){let e=Number.parseFloat(t);return Number.isFinite(e)?1e3*e:450}return 450}("--dur-theme"),easing:e.getPropertyValue("--ease-out-warm").trim()||"ease-out",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{}),d.finished?.catch(()=>{})},[]),x=(0,n.useCallback)(t=>m("light"===e?"dark":"dark"===e?"system":"light",t),[e,m]);return{theme:f,preference:e,palette:t,isDark:"dark"===f,setTheme:m,setPalette:(0,n.useCallback)(e=>(function(e){document.documentElement.dataset.palette=e;try{localStorage.setItem(s,e)}catch{}i.forEach(e=>e())})(e),[]),toggleTheme:x}}}},e=>{e.O(0,[8920,4315,8441,3794,7358],()=>e(e.s=5456)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";var e,t,a,d,r,c,f,o,n,b={},i={};function l(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={exports:{}},d=!0;try{b[e].call(a.exports,a,a.exports,l),d=!1}finally{d&&delete i[e]}return a.exports}l.m=b,e=[],l.O=(t,a,d,r)=>{if(a){r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[a,d,r];return}for(var f=1/0,c=0;c<e.length;c++){for(var[a,d,r]=e[c],o=!0,n=0;n<a.length;n++)(!1&r||f>=r)&&Object.keys(l.O).every(e=>l.O[e](a[n]))?a.splice(n--,1):(o=!1,r<f&&(f=r));if(o){e.splice(c--,1);var b=d();void 0!==b&&(t=b)}}return t},l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,d){if(1&d&&(e=this(e)),8&d||"object"==typeof e&&e&&(4&d&&e.__esModule||16&d&&"function"==typeof e.then))return e;var r=Object.create(null);l.r(r);var c={};t=t||[null,a({}),a([]),a(a)];for(var f=2&d&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach(t=>c[t]=()=>e[t]);return c.default=()=>e,l.d(r,c),r},l.d=(e,t)=>{for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,a)=>(l.f[a](e,t),t),[])),l.u=e=>"static/chunks/"+(({988:"993e5495",1048:"db9d41be",7330:"d3ac728e",8133:"1ba63609",8747:"90542734",8924:"da12927c",9425:"bf2ff291"})[e]||e)+"."+({103:"23142a67b02246a8",268:"ec500965c1761e26",370:"8e8f3cf8eb0e29dd",398:"ffa02af9062a3950",484:"b4abadb8cdd9c97f",869:"7152372b662e31af",918:"6a9bbe564e4a2d0f",934:"9006461bd0548660",973:"9efc01efd9d768a5",988:"598a97aa1337298f",1032:"d9a9179233599785",1048:"27ee8fcc7bf00d70",1063:"775c442bdbeef08b",1133:"bacd2a00ac07e041",1327:"09252bb80616cc3a",1708:"c3a1896e4cc9f8d9",1781:"9072b4c9586df549",2081:"47b6e9391094055f",2124:"a08e97448f6509af",2181:"ba21239d3ac39f81",2201:"b0b6e40a6fc1628a",2258:"4defa30121ef44a5",2325:"23caf22075e51aa5",2356:"523277bb8c6bf72a",2418:"b5d9e177e10a686e",2480:"cf27ca02e5b19761",2539:"c5a4f2fd8e421c70",2619:"9431a3f48da8eef4",2695:"b732ef1965253b3f",2703:"495a65ed14b2f094",2821:"934bcf60fbdc28c6",3251:"408c817adb161919",3274:"2faf978d45b29a27",3308:"8e27b5c43a478f0d",3336:"a76f9485fe7cb762",3688:"77dd9e68a61af45e",3716:"72bf4c9d7325debd",3995:"eca0f5bef1fc3ae5",4004:"74b9bcf5478b1663",4202:"8440832386f023c7",4238:"6f102dcbcf2ae339",4405:"7a19458960a1058e",4424:"fd0c93a807a333e1",4473:"c9bdafcdd251e4db",4559:"2e7ed39ea2757280",4854:"b64a1daa15899219",4866:"d1060b4faf2ae1e2",4970:"8a63b4953b0e4946",5020:"9ac8d0dc8390bb6e",5137:"f163e94c74a94d01",5199:"9ec1359b9aa220ab",5242:"7b643c6b3394cac1",5361:"afc00ab2626bacbf",5521:"cfdf2cfc6db31407",5526:"ff46471041fdcb79",5658:"00ec4620fb11878f",5681:"dd0e66b0de16e54b",6121:"eb9023b1cbc78ee2",6161:"4836cd7d031026bf",6195:"8710aa41b2319dff",6202:"f4317cf0a48876f9",6294:"24f510c0c3e3714c",6604:"226e5eae7c573e65",6654:"41440ef667144967",6794:"57bf1aff78682f3a",7256:"e07cf52d87d40252",7268:"2f59c671f26160f3",7330:"7964f816a1ca64e5",7331:"2add3c4e125a2dba",7543:"89f7b805ed0f2901",8133:"b2ae90f43319a29e",8200:"a36b9f8c983c6b9e",8717:"4e20eedf9544e286",8747:"ae439f2382f58c51",8863:"fa0320ea586efb3b",8885:"d9308c756376780b",8901:"e117d206a917bda0",8924:"476aa688a637649c",9182:"b3f6afd537f9c3fe",9365:"a3e0e5ac101ccd02",9425:"244c8a7c1c14966a",9448:"a3d481d9e75112d4",9522:"c7c6e9c330f9ba6b",9614:"3221013d7f0af27f",9668:"b606b2dc0af7c335",9698:"4d09a99b9d99f3e5",9705:"40a82b97f214e28b",9754:"d67dec946fc871d4",9764:"2669775c6e107a01",9793:"4567af813117ad25",9974:"9a0f79beca65e8c4",9981:"90f200903b3d454f"})[e]+".js",l.miniCssF=e=>"static/css/2f46e0db0d4a3aed.css",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),d={},l.l=(e,t,a,r)=>{if(d[e])return void d[e].push(t);if(void 0!==a)for(var c,f,o=document.getElementsByTagName("script"),n=0;n<o.length;n++){var b=o[n];if(b.getAttribute("src")==e||b.getAttribute("data-webpack")=="_N_E:"+a){c=b;break}}c||(f=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,l.nc&&c.setAttribute("nonce",l.nc),c.setAttribute("data-webpack","_N_E:"+a),c.src=l.tu(e)),d[e]=[t];var i=(t,a)=>{c.onerror=c.onload=null,clearTimeout(u);var r=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach(e=>e(a)),t)return t(a)},u=setTimeout(i.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=i.bind(null,c.onerror),c.onload=i.bind(null,c.onload),f&&document.head.appendChild(c)},l.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.tt=()=>(void 0===r&&(r={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(r=trustedTypes.createPolicy("nextjs#bundler",r))),r),l.tu=e=>l.tt().createScriptURL(e),l.p="/_next/",c={8068:0},l.f.miniCss=(e,t)=>{if(c[e])t.push(c[e]);else 0!==c[e]&&({5846:1})[e]&&t.push(c[e]=new Promise((t,a)=>{var d=l.miniCssF(e),r=l.p+d;if(((e,t)=>{for(var a=document.getElementsByTagName("link"),d=0;d<a.length;d++){var r=a[d],c=r.getAttribute("data-href")||r.getAttribute("href");if("stylesheet"===r.rel&&(c===e||c===t))return r}for(var f=document.getElementsByTagName("style"),d=0;d<f.length;d++){var r=f[d],c=r.getAttribute("data-href");if(c===e||c===t)return r}})(d,r))return t();((e,t,a,d)=>{var r=document.createElement("link");r.rel="stylesheet",r.type="text/css",r.onerror=r.onload=c=>{if(r.onerror=r.onload=null,"load"===c.type)a();else{var f=c&&("load"===c.type?"missing":c.type),o=c&&c.target&&c.target.href||t,n=Error("Loading CSS chunk "+e+" failed.\n("+o+")");n.code="CSS_CHUNK_LOAD_FAILED",n.type=f,n.request=o,r.parentNode.removeChild(r),d(n)}},r.href=t;if("function"==typeof _N_E_STYLE_LOAD){var c=r.href,f=r.onload,o=r.onerror;_N_E_STYLE_LOAD(0===c.indexOf(window.location.origin)?new URL(c).pathname:c).then(function(){f&&f.call(r,{type:"load"})},function(){o&&o.call(r,{})})}else document.head.appendChild(r)})(e,r,t,a)}).then(()=>{c[e]=0},t=>{throw delete c[e],t}))},f={8068:0,6577:0},l.f.j=(e,t)=>{var a=l.o(f,e)?f[e]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(5846|6577|8068)$/.test(e))f[e]=0;else{var d=new Promise((t,d)=>a=f[e]=[t,d]);t.push(a[2]=d);var r=l.p+l.u(e),c=Error();l.l(r,t=>{if(l.o(f,e)&&(0!==(a=f[e])&&(f[e]=void 0),a)){var d=t&&("load"===t.type?"missing":t.type),r=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+d+": "+r+")",c.name="ChunkLoadError",c.type=d,c.request=r,a[1](c)}},"chunk-"+e,e)}},l.O.j=e=>0===f[e],o=(e,t)=>{var a,d,[r,c,o]=t,n=0;if(r.some(e=>0!==f[e])){for(a in c)l.o(c,a)&&(l.m[a]=c[a]);if(o)var b=o(l)}for(e&&e(t);n<r.length;n++)d=r[n],l.o(f,d)&&f[d]&&f[d][0](),f[d]=0;return l.O(b)},(n=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(o.bind(null,0)),n.push=o.bind(null,n.push.bind(n)),l.nc=void 0})();
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import { readFile } from "node:fs/promises";
|
|
3
|
-
import test from "node:test";
|
|
4
|
-
|
|
5
|
-
test("launcher refuses unauthenticated non-loopback binds", async () => {
|
|
6
|
-
const launcherSource = await readFile(new URL("./ompgui.js", import.meta.url), "utf8");
|
|
7
|
-
assert.match(launcherSource, /Refusing to listen on/);
|
|
8
|
-
assert.match(launcherSource, /password/);
|
|
9
|
-
|
|
10
|
-
const compatSource = await readFile(new URL("./omp-web.js", import.meta.url), "utf8");
|
|
11
|
-
assert.match(compatSource, /ompgui\.js/);
|
|
12
|
-
});
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import test from "node:test";
|
|
2
|
-
import assert from "node:assert/strict";
|
|
3
|
-
import { spawnSync } from "node:child_process";
|
|
4
|
-
test("ompgui refuses unauthenticated non-loopback binds", () => {
|
|
5
|
-
const result = spawnSync(process.execPath, ["bin/ompgui.js", "--hostname", "0.0.0.0", "--no-open"], { encoding:"utf8", env:{ ...process.env, OMPGUI_PASSWORD:"", OMP_WEB_PASSWORD:"", OMPGUI_HOSTNAME:undefined, OMP_WEB_HOSTNAME:undefined } });
|
|
6
|
-
assert.equal(result.status, 1);
|
|
7
|
-
assert.match(result.stderr, /Refusing to listen/);
|
|
8
|
-
});
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import { EventEmitter } from "node:events";
|
|
3
|
-
import test from "node:test";
|
|
4
|
-
import { setTimeout as delay } from "node:timers/promises";
|
|
5
|
-
|
|
6
|
-
import { wireChildProcessLifecycle } from "./process-lifecycle.js";
|
|
7
|
-
|
|
8
|
-
function createProcesses() {
|
|
9
|
-
const parent = new EventEmitter();
|
|
10
|
-
const child = new EventEmitter();
|
|
11
|
-
const forwardedSignals = [];
|
|
12
|
-
const exitCodes = [];
|
|
13
|
-
|
|
14
|
-
child.kill = (signal) => {
|
|
15
|
-
forwardedSignals.push(signal);
|
|
16
|
-
return true;
|
|
17
|
-
};
|
|
18
|
-
parent.exit = (code) => {
|
|
19
|
-
exitCodes.push(code);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
return { parent, child, forwardedSignals, exitCodes };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
test("forwards the first shutdown signal and force-kills on repeated signals", () => {
|
|
26
|
-
const { parent, child, forwardedSignals } = createProcesses();
|
|
27
|
-
|
|
28
|
-
wireChildProcessLifecycle(child, parent);
|
|
29
|
-
parent.emit("SIGTERM");
|
|
30
|
-
parent.emit("SIGTERM");
|
|
31
|
-
parent.emit("SIGINT");
|
|
32
|
-
|
|
33
|
-
assert.deepEqual(forwardedSignals, ["SIGTERM", "SIGKILL", "SIGKILL"]);
|
|
34
|
-
child.emit("exit", null, "SIGKILL");
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test("propagates a child exit code and clears its shutdown wiring", async () => {
|
|
38
|
-
const { parent, child, forwardedSignals, exitCodes } = createProcesses();
|
|
39
|
-
const existingSigtermListener = () => {};
|
|
40
|
-
parent.on("SIGTERM", existingSigtermListener);
|
|
41
|
-
|
|
42
|
-
wireChildProcessLifecycle(child, parent, 10);
|
|
43
|
-
assert.equal(parent.listenerCount("SIGINT"), 1);
|
|
44
|
-
assert.equal(parent.listenerCount("SIGTERM"), 2);
|
|
45
|
-
|
|
46
|
-
parent.emit("SIGTERM");
|
|
47
|
-
child.emit("exit", 23, null);
|
|
48
|
-
await delay(20);
|
|
49
|
-
|
|
50
|
-
assert.deepEqual(exitCodes, [23]);
|
|
51
|
-
assert.equal(parent.listenerCount("SIGINT"), 0);
|
|
52
|
-
assert.deepEqual(parent.listeners("SIGTERM"), [existingSigtermListener]);
|
|
53
|
-
|
|
54
|
-
parent.emit("SIGTERM");
|
|
55
|
-
assert.deepEqual(forwardedSignals, ["SIGTERM"]);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
test("force-kills the child when graceful shutdown times out", async () => {
|
|
59
|
-
const { parent, child, forwardedSignals } = createProcesses();
|
|
60
|
-
|
|
61
|
-
wireChildProcessLifecycle(child, parent, 10);
|
|
62
|
-
parent.emit("SIGINT");
|
|
63
|
-
assert.deepEqual(forwardedSignals, ["SIGINT"]);
|
|
64
|
-
|
|
65
|
-
await delay(20);
|
|
66
|
-
|
|
67
|
-
assert.deepEqual(forwardedSignals, ["SIGINT", "SIGKILL"]);
|
|
68
|
-
child.emit("exit", null, "SIGKILL");
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test("uses conventional exit statuses for known child signals", () => {
|
|
72
|
-
for (const [signal, expectedExitCode] of [
|
|
73
|
-
["SIGTERM", 143],
|
|
74
|
-
["SIGKILL", 137],
|
|
75
|
-
]) {
|
|
76
|
-
const { parent, child, exitCodes } = createProcesses();
|
|
77
|
-
|
|
78
|
-
wireChildProcessLifecycle(child, parent);
|
|
79
|
-
child.emit("exit", null, signal);
|
|
80
|
-
|
|
81
|
-
assert.deepEqual(exitCodes, [expectedExitCode]);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
File without changes
|